JP2020501239A - 不正なクライアント・アプリケーションからのウェブ・サーバの保護 - Google Patents

不正なクライアント・アプリケーションからのウェブ・サーバの保護 Download PDF

Info

Publication number
JP2020501239A
JP2020501239A JP2019526237A JP2019526237A JP2020501239A JP 2020501239 A JP2020501239 A JP 2020501239A JP 2019526237 A JP2019526237 A JP 2019526237A JP 2019526237 A JP2019526237 A JP 2019526237A JP 2020501239 A JP2020501239 A JP 2020501239A
Authority
JP
Japan
Prior art keywords
function
computer system
server computer
string
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019526237A
Other languages
English (en)
Other versions
JP6967074B2 (ja
Inventor
メリロー、マルコ
ビアンキーニ、パオロ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020501239A publication Critical patent/JP2020501239A/ja
Application granted granted Critical
Publication of JP6967074B2 publication Critical patent/JP6967074B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】 サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護する方法、システム、及びコンピュータ・プログラムを提供する。【解決手段】 サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護するための手法が提供される。クライアント・コンピュータにより実行されているアプリケーションが第1の関数にアクセスするのを可能にしてほしいとの要求に応答して、第1の文字列がクライアントに送られる。第2の関数のパラメータを含む第2の文字列が受け取られる。第2の文字列は、コマンドへの第1の文字列の変換、及びクライアントによるコマンドの実行の結果である。第2の文字列は、第2の関数の呼び出しに変換される。サーバは、呼び出しを用いて第2の関数を実行する。第2の関数の実行の結果に基づいて、ネイティブ・コードの実装を必要とすることなく、サーバは、(i)アプリケーションが第1の関数にアクセスするのを可能にするか、又は(ii)アプリケーションが、第1の関数にアクセスするのを防止するかを判断する。【選択図】 図1

Description

本発明は、クライアントとサーバとの間の通信のセキュア保護に関し、より具体的には、不正なモバイル・デバイス・クライアント・アプリケーションからウェブ・サーバをセキュア保護することに関する。
ハイブリッド・モード・モバイル・アプリケーションは、ネイティブ・コンテナ内部でJavaScript(登録商標)コードを実行することができ、これにより、クロス・プラットフォーム開発が単純化されるが、バックエンド・サーバが不正なアプリケーションに呼び出される恐れがある。JavaScriptは、カリフォルニア州Redwood Shores所在のOracle America Inc.の登録商標である。攻撃者(attacker)が、アプリケーションと共にデプロイされたJavaScript(登録商標)コードを検査し、不正なサーバ呼び出しを実行している攻撃者自身のアプリケーションを書き込むことがある。幾つかの周知のモバイル・アプリケーション開発フレームワークは、ネイティブ実装を用いて、携帯電話上の修正されたコードからサーバを保護することができる(例えば、サーバからアプリケーションに送られるチャレンジ・トークン(challenge token)は、コンパイルされたネイティブ・コードによって処理されるので、サードパーティ攻撃者は処理の論理が分からない)。
サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護する方法、システム、及びコンピュータ・プログラムを提供する。
第1の実施形態において、本発明は、サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護する方法を提供する。方法は、サーバ・コンピュータが、クライアント・コンピュータにより実行されているアプリケーションの真正性(authenticity)をチェックし、アプリケーションが、サーバ・コンピュータにより実行される第1の関数にアクセスするのを可能にしてほしいという、サーバ・コンピュータに対する要求に応答して、第1の文字列をクライアント・コンピュータに送ることを含む。方法は、第1の文字列を送ることに応答して、サーバ・コンピュータが、サーバ・コンピュータの内部関数である第2の関数のパラメータを含む第2の文字列を受け取ることをさらに含む。第2の文字列は、クライアント・コンピュータによるコマンドへの第1の文字列の変換、及びクライアント・コンピュータによるコマンドのローカル実行の結果である。方法は、サーバ・コンピュータが、アプリケーションの真正性をチェックするために、第2の文字列を第2の関数の呼び出しに変換することをさらに含む。方法は、サーバ・コンピュータが、第2の関数の呼び出しを用いて、第2の関数を実行することをさらに含む。方法は、第2の関数の実行の結果に基づいて、アプリケーションの真正性をチェックするネイティブ・コードの実装を必要とすることなく、サーバ・コンピュータが、(i)アプリケーションの真正性を検証し、アプリケーションが、第1の関数にアクセスするのを可能にするか、又は(ii)アプリケーションが、第1の関数にアクセスするのを防止するかを判断することをさらに含む。
第2の実施形態において、本発明は、コンピュータ可読ストレージ媒体と、コンピュータ可読ストレージ媒体内に格納されたコンピュータ可読プログラム・コードとを含むコンピュータ・プログラム製品を提供する。コンピュータ可読プログラム・コードは、サーバ・コンピュータ・システムとクライアント・コンピュータ・システムとの間の通信をセキュア保護する方法を実施するための、サーバ・コンピュータ・システムの中央処理ユニット(CPU)により実行される命令を含む。方法は、サーバ・コンピュータ・システムが、クライアント・コンピュータ・システムにより実行されるアプリケーションの真正性をチェックし、アプリケーションが、サーバ・コンピュータ・システムにより実行される第1の関数にアクセスするのを可能にしてほしいという、サーバ・コンピュータ・システムに対する要求に応答して、第1の文字列をクライアント・コンピュータ・システムに送ることを含む。方法は、第1の文字列を送ることに応答して、サーバ・コンピュータ・システムが、サーバ・コンピュータ・システムの内部関数である第2の関数のパラメータを含む第2の文字列を受け取ることをさらに含む。第2の文字列は、クライアント・コンピュータ・システムによるコマンドへの第1の文字列の変換、及びクライアント・コンピュータによるコマンドのローカル実行の結果である。方法は、サーバ・コンピュータ・システムが、アプリケーションの真正性をチェックするために、第2の文字列を第2の関数の呼び出しに変換することをさらに含む。方法は、サーバ・コンピュータ・システムが、第2の関数の呼び出しを用いて、第2の関数を実行することをさらに含む。方法は、第2の関数の実行の結果に基づいて、アプリケーションの真正性をチェックするネイティブ・コードの実装を必要とすることなく、サーバ・コンピュータ・システムが、(i)アプリケーションの真正性を検証し、アプリケーションが第1の関数にアクセスするのを可能にするか、又は(ii)アプリケーションが、第1の関数にアクセスするのを防止するかを判断することをさらに含む。
第3の実施形態において、本発明は、中央処理ユニット(CPU)と、CPUに結合されたメモリと、CPUに結合されたコンピュータ可読ストレージ・デバイスを含むコンピュータ・システムを提供する。ストレージ・デバイスは、サーバ・コンピュータ・システムとクライアント・コンピュータ・システムとの間の通信をセキュア保護する方法を実施するための、メモリを介してCPUにより実行される命令を含む。方法は、サーバ・コンピュータ・システムが、クライアント・コンピュータ・システムにより実行されているアプリケーションの真正性をチェックし、アプリケーションが、サーバ・コンピュータ・システムにより実行される第1の関数にアクセスするのを可能にしてほしいという、サーバ・コンピュータ・システムに対する要求に応答して、第1の文字列をクライアント・コンピュータ・システムに送ることを含む。方法は、第1の文字列を送ることに応答して、サーバ・コンピュータ・システムが、サーバ・コンピュータ・システムの内部関数である第2の関数のパラメータを含む第2の文字列を受け取ることをさらに含む。第2の文字列は、クライアント・コンピュータ・システムによるコマンドへの第1の文字列の変換、及びクライアント・コンピュータ・システムによるコマンドのローカル実行の結果である。方法は、サーバ・コンピュータ・システムが、アプリケーションの真正性をチェックするために、第2の文字列を第2の関数の呼び出しに変換することをさらに含む。方法は、サーバ・コンピュータ・システムが、第2の関数の呼び出しを用いて、第2の関数を実行することをさらに含む。方法は、第2の関数の実行の結果に基づいて、アプリケーションの真正性をチェックするネイティブ・コードの実装を必要とすることなく、サーバ・コンピュータ・システムが、(i)アプリケーションの真正性を検証し、アプリケーションが、第1の関数にアクセスするのを可能にするか、又は(ii)アプリケーションが、第1の関数にアクセスするのを防止するかを判断することをさらに含む。
本発明の実施形態は、アプリケーションの真正性をチェックするためのネイティブ実装を必要とすることなく、モバイル・アプリケーションの真正性を検証し、不正アプリケーションがサーバを呼び出すのを防止する。本発明の実施形態は、任意のクライアント・サーバ・アーキテクチャにおいて実施することができ、又は認証フレームワークが、クライアントに1つの認証を要求する(例えば、パスワードを尋ねる)ように構成された場合、クライアント・サーバ・アーキテクチャにおいて既に実装されている認証フレームワークに付加することができる。
本発明の実施形態による、サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護するためのシステムのブロック図である。 本発明の実施形態による、サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護する、図1のシステムにおいて実施されるプロセスのフローチャートである。 本発明の実施形態による、図1のシステム内に含まれるサーバ・コンピュータを含み、図2のプロセスを実施するコンピュータのブロック図である。
概要
本発明の実施形態は、クライアント/サーバ環境におけるアプリケーション、又はサーバにアクセスする権限を与えられているようなハイブリッド・モード・モバイル・アプリケーションを検証する。アプリケーションは、セキュリティ・チェックを実施するフレームワークの中で動作するので、クライアントが、サーバによりエクスポーズされる(exposed)関数を呼び出すと、サーバは、チャレンジをクライアントに送り、これにより、クライアントが、保護された方法で自分自身を認証し、サーバの関数を呼び出すように権限付与されることが可能になる。一実施形態において、ハイブリッド・モード・モバイル・アプリケーションのJavaScript(登録商標)ファイルは、コード・エグゼキュータ(code executor)関数を付加することにより、ファイル自体におけるあらゆる利用可能な関数を取得するのに必要なコードで強化される。コード・エグゼキュータ関数は、文字列変数内で実行時に受け取ったコードを実行するので、攻撃者は、コードを保護するために用いられる技術を割り出すことができない。サーバは、遠隔からコードを修正し、実行時にコードの修正を検証することができる。セキュリティ技術は、関数型プログラミング言語(例えば、Lisp、Scheme、Haskell、ML、lambda等)であるか、又はJavaScript(登録商標)ウェブ・スクリプティング言語のような関数型プログラミングをサポートする、インタープリタ型プログラミング言語で書かれたファイルを有するあらゆるクライアント/サーバ・アーキテクチャで使用することができる。プログラミング言語は、(1)関数を文字列に変換すること、(2)実行時に関数を修正すること、及び(3)文字列を関数に変換することが可能でなければならない。
本発明の実施形態は、サーバが、モバイル・デバイス又は他のクライアント・コンピュータ上で実行するためのあらゆるタイプのコードを注入し、関数呼び出しを可能にする前に、関連するセキュリティ及び真正性チェックを実施することを可能にする。こうしたルーチンは、ソース・ファイル(例えば、JavaScript(登録商標)ソース・ファイル)内で利用可能でないが、サーバ自体によって制御された方法でのみ実行される。セキュリティは、セキュリティ実装を、時間の経過と共に修正し、例えば、クライアント・アプリケーションの実行時間及び挙動などの追加チェックを実行することができるサーバにより強化される。
本発明の実施形態は、以下のステップ:すなわち(1)クライアントが、サーバによりエクスポーズされる(exposed)関数を呼び出したとき、クライアント側においてセキュリティ・チャレンジを実行するステップ、(2)サーバが、実行する(例えば、JavaScript(登録商標)ソース・ファイルの特定の部分を取り出し、送る)文字列を送るステップ、(3)クライアントがコードを実行し、結果をサーバに送り、オリジナル関数を文字列として送ることができるステップ、及び(4)サーバが結果を読み取り、クライアントが真正であるかどうかを判断するステップを実行することによって、サーバとクライアントとの間の通信をセキュア保護する。
攻撃者がプロセス全体を理解するのを防ぐために、トランスポート及びコード難読化の際の保護が必要とされる。一実施形態において、クライアントとサーバとの間の通信をセキュア保護するための技術は、JavaScript(登録商標)コードを使用し、ネイティブ実装を使用しない。
サーバとクライアントとの間の通信をセキュア保護するためのシステム
図1は、本発明の実施形態による、サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護するためのシステム100のブロック図である。システム100は、真正性情報104を格納し、ソフトウェアベースのサーバ側認証コンポーネント106を実行するサーバ・コンピュータ102を含む。システム100は、クライアント側認証コンポーネント112及びチャレンジ・ユーティリティ114を含むソフトウェアベースのアプリケーション(例えば、モバイル・アプリケーション)110を実行する、クライアント・コンピュータ108も含む。
アプリケーション110の解放前、ソフトウェアベースapp(アプリケーション)真正性ツール116が、コンピュータ(例えば、サーバ・コンピュータ102又は図示されていない別のコンピュータ)上で実行され、真正性情報104及びチャレンジ・ユーティリティ114を作成する。真正性情報104は、データ・リポジトリ内に格納され、セキュリティ・チャレンジと、セキュリティ・チャレンジへの正しい答えを含む。app真正性ツール116は、アプリケーションがサーバ・コンピュータ102の関数にアクセスしようと試みることに応答して、アプリケーション110、すなわち、セキュリティ・チャレンジによりその真正性を検証する必要があるアプリケーションのソース・ファイルであるappソース・ファイル118を格納するデータ・リポジトリから読み取りを行う。
チャレンジ・ユーティリティ114は、サーバ・コンピュータ102によりクライアント・コンピュータ108に送られるセキュリティ・チャレンジに応答するように実行されるコードである。チャレンジ・ユーティリティ114は、アプリケーション110の内部に書かれないが、もっと正確に言えば、app真正性ツール116によってアプリケーション110に注入される。一実施形態において、チャレンジ・ユーティリティ114は、JavaScript(登録商標)言語で書かれる。本明細書で使用される場合、チャレンジ又はセキュリティ・チャレンジとは、関数と関連したコード情報に応答するように、クライアント・コンピュータ108に送られた、サーバ102からの要求であり、ここで、コード情報は、実行時に関数を修正し、関数のコードの一部を取得し、又は関数のコードを実行することによって取得される。
サーバ側認証コンポーネント106は、真正性情報104内に格納されるセキュリティ・チャレンジから、1つのセキュリティ・チャレンジを選択し、選択されたセキュリティ・チャレンジをクライアント側認証コンポーネント112に送り、アプリケーション110の真正性を検証する。クライアント側認証コンポーネント112は、セキュリティ・チャレンジを受け取り、セキュリティ・チャレンジへの応答をサーバ側認証コンポーネント106に送り、サーバ側認証コンポーネント106は、応答を、真正性情報104内の正しい答えに照らしてチェックする。応答が真正性情報104内の正しい答えと合致する場合、サーバ側認証コンポーネント106は、アプリケーション110の真正性を検証し、アプリケーション110がサーバ・コンピュータ102の関数にアクセスするのを可能にし、他の場合には、サーバ側認証コンポーネント106は、アプリケーション110が、サーバ・コンピュータ102の関数にアクセスするのを防止する。
図1に示されるコンポーネントの機能は、以下に提示される図2及び図3の説明においてより詳細に説明される。
サーバとクライアントとの間の通信をセキュリティ保護するためのプロセス
図2は、本発明の実施形態による、サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護する、図1のシステムにおいて実施されるプロセスのフローチャートである。図2のプロセスは、ステップ200で開始する。ステップ202の前に、クライアント・コンピュータ108(図1参照)は、アプリケーション110(図1参照)を実行し、アプリケーション110(図1参照)は、サーバ・コンピュータ102(図1参照)により実行される第1の関数を実行しようと試み、第1の関数は、セキュリティ・フレームワークによって保護される。一実施形態において、アプリケーション110(図1参照)は、ハイブリッド・モード・モバイル・アプリケーションである。
ステップ202において、サーバ・コンピュータ102(図1参照)は、アプリケーション110(図1参照)の真正性を検証し、それにより、アプリケーション110(図1参照)が、サーバ・コンピュータ102(図1参照)により実行される第1の関数にアクセスするのを可能にしてほしいという、サーバ・コンピュータ102(図1参照)に対する要求を、クライアント・コンピュータ108(図1参照)から受け取る。一実施形態において、サーバ側認証コンポーネント106(図1参照)は、クライアント側認証コンポーネント112(図1参照)から上述の要求を受け取る。代替的に、第1の関数にアクセスしようとするアプリケーション110(図1参照)による試みに応答して、サーバ・コンピュータ102(図1参照)は、アプリケーション110(図1参照)の真正性を検証するよう、サーバ側認証コンポーネント106(図1参照)に指示する。
ステップ202の後及びステップ204の前、ステップ202において受け取った要求に応答して、サーバ側認証コンポーネント106(図1参照)は、真正性情報104(図1参照)内に含まれる複数のセキュリティ・チャレンジから1つのセキュリティ・チャレンジを選択し、セキュリティ・チャレンジへの応答を得るための動作を実行するコマンドのコードを生成する。ステップ204において、(1)ステップ202において受け取った要求、(2)選択されるセキュリティ・チャレンジ、及び(3)生成されるコマンドのコードに応答して、サーバ側認証コンポーネント106(図1参照)は、第1の文字列をクライアント・コンピュータ108(図1参照)に送る。第1の文字列は、選択されたセキュリティ・チャレンジへの応答を得るための動作を実行するコマンドのコードを含む。コマンドは、クライアント・コンピュータ108(図1参照)によって実行される。一実施形態において、コマンドにより実行される動作は、アプリケーション110(図1参照)内に含まれる第2の関数のコードを修正すること、第2の関数のコードの少なくとも一部を読み取って取得すること、又は第2の関数のコードを実行することを含み、ここで、コードは、関数型プログラミング言語であるか、又は関数型プログラミングをサポートし、かつ以下の:すなわち(1)関数を文字列に変換する、(2)実行時に関数を修正する、及び(3)文字列を関数に変換する能力を有するインタープリタ型プログラミング言語で書かれる。
ステップ204の後及びステップ206の前、クライアント側認証コンポーネント112(図1参照)は、第1の文字列を受け取り、それにより、クライアント側セキュリティ・フレームワークが呼び出される。クライアント側認証コンポーネント112(図1参照)は、受け取った第1の文字列をコマンドに変換し、その後、コマンドをチャレンジ・ユーティリティ114(図1参照)に送る。コマンドを受け取ることに応答して、チャレンジ・ユーティリティ114(図1参照)は、コマンドをローカルに実行する。コマンドを実行することによって、チャレンジ・ユーティリティ114(図1参照)は、上述の動作を実行し、動作の実行の結果である第2の文字列を取得し、第2の文字列をサーバ側認証コンポーネント106(図1参照)に送り、ここで、第2の文字列は、サーバ・コンピュータ102(図1参照)によりアクセスされる第2の関数のパラメータを含む。
ステップ206において、ステップ204において第1の文字列を送ること、第1の文字列をコマンドに変換すること、動作を実行するためのコマンドをローカルに実行すること、動作の実行した結果である第2の文字列を取得すること、及び第2の文字列を送ることに応答して、サーバ側認証コンポーネント106(図1参照)は、第2の文字列を受け取る。
ステップ208において、認証コンポーネント106(図1参照)は、第2の文字列を、内部サーバ関数である第2の関数の呼び出し(call to the second function)、及びアプリケーション110(図1参照)の真正性を検証するためのデータに変換する。
ステップ210において、サーバ側認証コンポーネント106(図1参照)は、ステップ208における第2の文字列の変換の結果得られる第2の関数の呼び出しを用いて、第2の関数を実行する。一実施形態において、ステップ210における実行は、第2の関数のリフレクション(reflection)能力を用いて、第2の関数のコードを修正し、第2の関数のコードの少なくとも一部を読み取り、取得し、又は第2の関数のコードを実行する。
ステップ210の後及びステップ212の前、サーバ側認証コンポーネント106(図1参照)は、ステップ210における第2の関数の実行の結果を取得する。
ステップ212の前、サーバ側認証コンポーネント106(図1参照)は、ステップ210における第2の関数の実行の結果が、選択されたセキュリティ・チャレンジへの正しい答え(correct answer)と合致するかどうかを判断し、ここで、正しい答えは、真正性情報104(図1参照)内に格納される。ステップ212において、ステップ210において第2の関数を実行した結果、及び結果が選択されたセキュリティ・チャレンジへの正しい答えと合致するかどうかの判断に基づいて、かつ、アプリケーション110(図1参照)の真正性をチェックするネイティブ・コードの実装を必要とすることなく、サーバ側認証コンポーネント106(図1参照)は、(i)アプリケーション110(図1参照)の真正性を検証し、それにより、アプリケーション110(図1参照)が、サーバ102(図1参照)上で実行される第1の関数にアクセスするのを可能にするか、又は(ii)アプリケーション110(図1参照)が、第1の関数にアクセスするのを防止するかを判断する。
サーバ側認証コンポーネント106(図1参照)が、ステップ210において第2の関数を実行した結果が、選択されたセキュリティ・チャレンジへの正しい答えと合致すると判断する場合、サーバ側認証コンポーネント106(図1参照)は、アプリケーション110(図1参照)の真正性を検証し、アプリケーション110(図1参照)が、第1の関数にアクセスするのを可能にする。第1の関数にアクセスすることが可能になった後、サーバ・コンピュータ102は、第1の関数のオリジナル呼び出しを実行する。サーバ側認証コンポーネント106(図1参照)が、結果が正しい答えと合致しないと判断する場合、サーバ側認証コンポーネント106(図1参照)は、アプリケーション110(図1参照)が、第1の関数にアクセスすることを防止する。一実施形態において、アプリケーション110(図1参照)が第1の関数にアクセスすることを防止することは、サーバ・コンポーネント(図1参照)が、エラー通知を生成し、第1の関数のオリジナル呼び出しを戻さないことを含む。
ステップ212の後、ステップ214において、図2のプロセスは終了する。
代替的な実施形態において、セキュリティ・フレームワークがまだ実装されていないクライアント・サーバ・アーキテクチャにおいて、クライアント・コンピュータ108(図1参照)がサーバ・コンピュータ102(図1参照)上で呼び出し関数f1にアクセスしようと試みることに応答して、以下のステップ:すなわち(1)クライアント・コンピュータ108(図1参照)が、サーバ・コンピュータ102(図1参照)上でCommandGenerator関数を呼び出すステップであって、CommandGenerator関数は、クライアント側で実行されるコマンドを生成する、ステップ;(2)サーバ・コンピュータ102(図1参照)が、コマンドをクライアント・コンピュータ108(図1参照)に送るステップ:(3)クライアント・コンピュータ108(図1参照)が、RunCommand関数を呼び出し、コマンドをローカルに実行するステップ;(4)クライアント・コンピュータ108(図1参照)が、RunCommandを呼び出した結果を文字列slとして取得するステップ;(5)クライアント・コンピュータ108(図1参照)が、サーバ・コンピュータ102(図1参照)上で関数f1を呼び出し、関数f1の呼び出しにおける文字列s1を渡すステップ;及び(6)サーバ・コンピュータ102(図1参照)が、内部サーバ関数であるCheckProtectionを実行し、文字列s1が、真正なアプリケーションからの関数f1の呼び出しから予想される結果であるかどうかを判断するステップが、実行される。文字列s1が、予想される結果である場合、サーバ・コンピュータ102(図1参照)は、関数f1のオリジナル呼び出しを実行する。文字列s1が予想される結果でない場合、サーバ・コンピュータ102(図1参照)は、エラーを引き起こし、オリジナル呼び出しを関数f1に戻さない。
コンピュータ・システム
図3は、本発明の実施形態による、図1のシステム内に含まれるサーバ・コンピュータを含み、かつ図2のプロセスを実施する、コンピュータ300のブロック図である。コンピュータ300は、一般に、中央処理ユニット(CPU)302、メモリ304、入力/出力(I/O)インターフェース306及びバス308を含むコンピュータ・システムである。さらに、コンピュータ300は、I/Oデバイス310及びコンピュータ・データ・ストレージ・ユニット312に結合される。一実施形態において、コンピュータ300は、サーバ・コンピュータ102(図1参照)を含む。CPU302は、サーバ側認証コンポーネント106(図1参照)が、サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護する方法を実行するための、プログラム・コード314内に含まれる命令の実行を含む、コンピュータ300の計算及び制御機能を実行し、ここで、命令は、メモリ304を介してCPU302により実行される。別の実施形態において、コンピュータ300は、クライアント・コンピュータ108(図1参照)を含み、CPU302は、クライアント側認証コンポーネント112(図1参照)が、サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護する方法を実行するための、プログラム・コード314内に含まれる命令の実行を含む、コンピュータ300の計算及び制御機能を実行する。CPU302は、単一の処理ユニットを含むことができ、又は1つ又は複数の位置(例えば、クライアント及びサーバ上)における1つ又は複数の処理ユニットにわたって分散することができる。
メモリ304は、以下に説明される、周知のコンピュータ可読ストレージ媒体を含む。一実施形態において、メモリ304のキャッシュ・メモリ要素は、プログラム・コードの命令が実行される間、バルク・ストレージからコードを取り出さなければならない回数を減らすために、少なくとも幾つかのプログラム・コード(例えば、プログラム・コード314)の一時ストレージを提供する。さらに、CPU302と同様に、メモリ304は、1つ又は複数のタイプのデータ・ストレージを含む、単一の物理的位置にあることもあり、又は複数の物理的システムにわたって種々の形態で分散されることもある。さらに、メモリ304は、例えば、ローカル・エリア・ネットワーク(LAN)又は広域ネットワーク(WAN)などにわたって分散されるデータを含むことができる。
I/Oインターフェース306は、外部ソースとの間で情報を交換するためのあらゆるシステムを含む。I/Oデバイス310は、2層ディスプレイ104(図1参照)、キーボード等を含む、任意の周知のタイプの外部デバイスを含む。バス308は、コンピュータ300内のコンポーネントの各々の間の通信リンクを提供し、電気、光学、無線等を含む、任意のタイプの伝送リンクを含むことができる。
I/Oインターフェース306は、コンピュータ300が、コンピュータ・データ・ストレージ・ユニット312又は別のコンピュータ・データ・ストレージ・ユニット(図示せず)上に情報(例えば、データ又はプログラム・コード314などのプログラム命令)を格納し、これらから情報を取り出すことも可能にする。コンピュータ・データ・ストレージ・ユニット312は、以下に説明される周知のコンピュータ可読ストレージ媒体を含む。一実施形態において、コンピュータ・データ・ストレージ・ユニット312は、磁気ディスク・ドライブ(すなわち、ハードディスク・ドライブ)又は光学ディスク・ドライブ(例えば、CD−ROMディスクを受けるCD−ROMドライブ)のような不揮発性データ・ストレージ・デバイスである。
メモリ304及び/又はストレージ・ユニット312は、サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護するための、メモリ304を介してCPU302により実行される命令を含むコンピュータ・プログラム・コード314を格納することができる。図3はメモリ304を、プログラム・コードを含むものとして示すが、本発明は、メモリ304がコード314の全てを同時に含まないが、代わりに、一度にコード314の一部のみを含む実施形態を考える。
さらに、メモリ304は、オペレーティング・システム(図示せず)を含むことができ、図3に示される他のシステムを含むこともできる。
コンピュータ300に結合されるストレージ・ユニット312及び/又は1つ又は複数の他のコンピュータ・データ・ストレージ・ユニット(図示せず)は、真正性情報104(図1参照)及びappソース・ファイル118(図1参照)のいずれの組み合わせを含むこともできる。
当業者には理解されるように、第1の実施形態において、本発明は方法とすることができ、第2の実施形態において、本発明はシステムとすることができ、第3の実施形態において、本発明はコンピュータ・プログラム製品とすることができる。
本発明の実施形態のコンポーネントのいずれも、サーバ・コンピュータとクライアント・コンピュータとの間の通信のセキュリティ保護に対して、コンピューティング・インフラストラクチャのデプロイ又は統合を提供するサービス・プロバイダによって、デプロイ、管理、サービス等を行うことができる。従って、本発明の実施形態は、コンピュータ・インフラストラクチャをサポートするためのプロセスを開示し、ここで、プロセスは、1つ又は複数のプロセッサ(例えば、CPU302)を含むコンピュータ・システム(例えば、コンピュータ300)において、コンピュータ可読コード(例えば、プログラム・コード314)の統合、ホスト、維持、及びデプロイの少なくとも1つを行うために少なくとも1つのサポート・サービスを提供することを含み、プロセッサは、コンピュータ・システムに、サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護させる、コード内に含まれる命令を実行する。別の実施形態は、コンピュータ・インフラストラクチャをサポートするためのプロセスを開示し、このプロセスは、コンピュータ可読プログラム・コードを、プロセッサを含むコンピュータ・システムに統合することを含む。統合するステップは、プログラム・コードを、プロセッサを用いてコンピュータ・システムのコンピュータ可読ストレージ・デバイス内に格納することを含む。プログラム・コードは、プロセッサによって実行されるとき、サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護する方法を実施する。
サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護するためのプログラム・コード314は、コンピュータ可読ストレージ媒体(例えば、コンピュータ・データ・ストレージ・ユニット312)のロードを介して、クライアント、サーバ、及びプロキシ・コンピュータ(図示せず)内に直接手動でロードすることによってデプロイできることが理解されるが、プログラム・コード314は、プログラム・コード314を中央サーバ又は中央サーバのグループに送ることによって、コンピュータ300内に自動的に又は半自動的にデプロイすることもできる。次に、プログラム・コード314は、プログラム・コード314を実行することになるクライアント・コンピュータ(例えば、コンピュータ300)にダウンロードされる。代替的に、プログラム・コード314は、eメールを介してクライアント・コンピュータに直接送られる。次に、プログラム・コード314は、クライアント・コンピュータ上のディレクトリにデタッチされるか、又はプログラム・コード314をディレクトリにデタッチするプログラムを実行する、eメール上のボタンによって、クライアント・コンピュータ上のディレクトリにロードされる。別の代案は、プログラム・コード314をクライアント・コンピュータのハードドライブ上にディレクトリに直接送ることである。プロキシ・サーバがある場合、プロセスは、プロキシ・サーバ・コードを選択し、どのコンピュータ上にプロキシ・サーバのコードを配置するかを決定し、プロキシ・サーバ・コードを伝送し、次に、プロキシ・サーバ・コードをプロキシ・コンピュータ上にインストールする。プログラム・コード314は、プロキシ・サーバに伝送され、次に、プロキシ・サーバ上に格納される。
本発明の別の実施形態は、加入、広告、及び/又は料金に応じて、プロセス・ステップを実行する方法を提供する。つまり、Solution Integratorのようなサービス・プロバイダは、サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護するプロセスの作成、維持、サポート等を提供することができる。この場合、サービス・プロバイダは、1又は複数の顧客のためにプロセス・ステップを実行するコンピュータ・インフラストラクチャを、作成、維持、サポートすることなどが可能である。その見返りとして、サービス・プロバイダは、加入及び/又は料金契約の下で顧客からの支払いを受けること、及び/又は、1つ又は複数のサードパーティに対する広告コンテンツの販売からの支払いを受けることが可能である。
本発明は、システム、方法、及び/又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサ(例えば、CPU302)に、本発明の態様を実行させるためのコンピュータ可読プログラム命令314をその上に有するコンピュータ可読ストレージ媒体(すなわち、メモリ304及びコンピュータ・データ・ストレージ・ユニット312)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイス(例えば、コンピュータ300)により使用される命令(例えば、プログラム・コード314)を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュメモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカード若しくは命令がそこに記録された溝内の***構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
本明細書で説明されるコンピュータ可読プログラム命令(例えば、プログラム・コード314)は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイス(例えば、コンピュータ300)に、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワーク(図示せず)を介して、外部コンピュータ又は外部ストレージ・デバイス(例えば、コンピュータ・データ・ストレージ・ユニット312)にダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジ・サーバを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納する。
本発明の動作を実行するためのコンピュータ可読プログラム命令(例えば、プログラム・コード314)は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて電子回路を個人化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図(例えば、図2)及び/又はブロック図(例えば、図1及び図3)を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令(例えば、プログラム・コード314)によって実装できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置(例えば、コンピュータ300)のプロセッサ(例えば、CPU302)に与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、及び/又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体(例えば、コンピュータ・データ・ストレージ・ユニット312)内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
コンピュータ・プログラム命令(例えば、プログラム・コード314)を、コンピュータ(例えば、コンピュータ300)、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
本発明の実施形態は、本明細書において、説明のために説明されているが、当業者には、多くの修正及び変更が明らかになるであろう。従って、添付の特許請求の範囲は、本発明の範囲内に入る全てのそうした修正及び変更を含むように意図される。
100:システム
102:サーバ・コンピュータ
104:真正性情報
106:サーバ側認証コンポーネント
108:クライアント・コンピュータ
110:アプリケーション
112:クライアント側認証コンポーネント
114:チャレンジ・ユーティリティ
116:アプリケーション真正性ツール
118:アプリケーション(app)ソース・ファイル
300:コンピュータ
302:中央処理ユニット(CPU)
304:メモリ
306:入力/出力(I/O)インターフェース
308:バス
310:I/Oデバイス
312:コンピュータ・データ・ストレージ・ユニット
314:プログラム・コード

Claims (15)

  1. サーバ・コンピュータとクライアント・コンピュータとの間の通信をセキュア保護する方法であって、前記方法は、
    前記サーバ・コンピュータが、前記クライアント・コンピュータ上で実行されているアプリケーションの真正性をチェックし、前記アプリケーションが、前記サーバ・コンピュータにより実行される第1の関数にアクセスするのを可能にしてほしいという、前記サーバ・コンピュータに対する要求に応答して、第1の文字列を前記クライアント・コンピュータに送るステップと、
    前記第1の文字列を送るステップに応答して、前記サーバ・コンピュータが、前記サーバ・コンピュータの内部関数である第2の関数のパラメータを含む第2の文字列を受け取るステップであって、前記第2の文字列は、前記クライアント・コンピュータによるコマンドへの前記第1の文字列の変換、及び前記クライアント・コンピュータによる前記コマンドのローカル実行の結果である、受け取るステップと、
    前記サーバ・コンピュータが、前記アプリケーションの前記真正性をチェックするために、前記第2の文字列を前記第2の関数の呼び出しに変換するステップと、
    前記サーバ・コンピュータが、前記第2の関数の前記呼び出しを用いて、前記第2の関数を実行するステップと、
    前記第2の関数の前記実行の結果に基づいて、前記アプリケーションの前記真正性をチェックするネイティブ・コードの実装を必要とすることなく、前記サーバ・コンピュータが、(i)前記アプリケーションの前記真正性を検証し、前記アプリケーションが、前記第1の関数にアクセスすることを可能にするか、又は(ii)前記アプリケーションが、前記第1の関数にアクセスするのを防止するかを決定するステップと、
    を含む、方法。
  2. 前記第1の関数は、インタープリタ型プログラミング言語で書かれた関数をそれぞれの文字列に変換し、実行時に前記関数を修正し、前記文字列をインタープリタ型プログラミング言語で書かれたそれぞれの関数に変換するように構成されたインタープリタ型プログラミング言語で書かれる、請求項1に記載の方法。
  3. 前記コマンドの前記クライアント・コンピュータによる前記ローカル実行は、前記第2の関数のコードの一部を読み取るステップ、前記第2の関数の前記コードを実行するステップ、又は前記第2の関数の前記コードを修正するステップを含む、請求項1又は請求項2に記載の方法。
  4. 前記第1の文字列を送るステップ、前記第2の文字列を受け取るステップ、前記第2の文字列を変換するステップ、前記第2の関数を実行するステップ、及び(i)前記クライアント・コンピュータの前記真正性を検証し、前記クライアント・コンピュータが、前記第1の関数にアクセスするのを可能にするか、又は(ii)前記クライアント・コンピュータが、前記第1の関数にアクセスするのを防止するかを決定するステップを、クライアント・サーバ・アーキテクチャにおいて実装される認証フレームワークに付加するステップであって、前記認証フレームワークは、前記クライアント・コンピュータに認証を要求する、付加するステップをさらに含む、請求項1〜請求項3のいずれか一項に記載の方法。
  5. 前記サーバ・コンピュータが、ハイブリッド・アプリケーションの複数のファイルを受け取るステップであって、前記複数のファイルは、関数型プログラミングをサポートし、かつ関数をそれぞれの文字列に変換し、実行時に関数を修正し、文字列をそれぞれの関数に変換することが可能なプログラム言語で書かれる、複数のファイルを受け取るステップと、
    コード・エグゼキュータ・ファイルが、前記複数のファイル内の関数にアクセスすることができ、前記コード・エグゼキュータ・ファイルが、前記コマンドへの前記第1の文字列の前記変換を実行するコードを含むように、前記サーバ・コンピュータが、前記コード・エグゼキュータ・ファイルを生成し、前記コード・エグゼキュータ・ファイルを前記複数のファイルにリンクするステップと、
    前記サーバ・コンピュータが、前記複数のファイルからコード情報を取得し、前記情報を前記サーバ・コンピュータ内に格納するステップであって、(i)前記クライアント・コンピュータの前記真正性を検証し、前記クライアント・コンピュータが、前記第1の関数にアクセスするのを可能にするか、又は(ii)前記クライアント・コンピュータが、前記第1の関数にアクセスするのを防止するかを決定する前記ステップは、前記第2の関数の前記実行の前記結果と前記複数のファイルから取得された前記コード情報との間の合致に基づいている、取得し、格納するステップと、
    をさらに含む、請求項1〜請求項4のいずれか一項に記載の方法。
  6. 前記複数のファイルを受け取るステップは、JavaScriptプログラミング言語で書かれた前記複数のファイルを受け取るステップを含む、請求項5に記載の方法。
  7. 前記サーバ・コンピュータが、前記クライアント・コンピュータ上で実行されている前記ハイブリッド・アプリケーションから、前記第1の関数へのアクセス要求を受け取るステップと、
    前記要求を受け取るステップに応答して、前記サーバ・コンピュータが、前記第1の関数は、前記サーバ・コンピュータ上に実装されるセキュリティ・フレームワークにより保護されていること、及び前記第1の関数へのアクセスには、前記クライアント・コンピュータの前記真正性の検証を必要とすることを判断するステップであって、前記第1の文字列を前記クライアント・コンピュータに送るステップは、前記第1の関数の前記アクセスが前記クライアント・コンピュータの前記真正性の前記検証を必要とすると判断するステップに応答して実行される、判断するステップと、
    をさらに含む、請求項5又は請求項6に記載の方法。
  8. 前記サーバ・コンピュータが、前記第2の関数の前記実行の前記結果を、前記クライアント・コンピュータにより実行されている前記アプリケーションのファイルから取得されたコード情報と照合するステップと、
    前記第2の関数の前記実行の前記結果が前記コード情報と合致することに基づいて、前記サーバ・コンピュータのセキュリティ・フレームワークにより、前記クライアント・コンピュータの前記第1の関数が自動的に実行されるステップと、
    前記サーバ・コンピュータが、前記第1の関数を実行する前記ステップの結果を前記クライアント・コンピュータに送るステップと、
    をさらに含む、請求項1〜請求項7のいずれか一項に記載の方法。
  9. 前記コンピュータ内のコンピュータ可読プログラム・コードの作成、統合、ホスト、維持及びデプロイの少なくとも1つのために少なくとも1つのサポート・サービスを提供するステップであって、前記プログラム・コードは、前記第1の文字列を送るステップ、前記第2の文字列を受け取るステップ、前記文字列を前記第2の関数の呼び出しに変換するステップ、前記第2の関数を実行するステップ、及び(i)前記クライアント・コンピュータの前記真正性を検証し、前記クライアント・コンピュータが、前記第1の関数にアクセスするのを可能にするか、又は(ii)前記クライアント・コンピュータが、前記第1の関数にアクセスするのを防止するかを判断するステップを実施するように、前記コンピュータのプロセッサにより実行される、提供するステップをさらに含む、請求項1〜請求項8のいずれか一項に記載の方法。
  10. コンピュータ・プログラムであって、
    サーバ・コンピュータ・システムとクライアント・コンピュータ・システムとの間の通信をセキュア保護する方法を実施するための、サーバ・コンピュータ・システムの中央処理ユニット(CPU)により実行される命令を含むコンピュータ可読プログラム・コードを含み、前記方法は、
    前記サーバ・コンピュータ・システムが、前記クライアント・コンピュータ・システムにより実行されているアプリケーションの真正性をチェックし、前記アプリケーションが、前記サーバ・コンピュータ・システムにより実行される第1の関数にアクセスするのを可能にしてほしいという、前記サーバ・コンピュータ・システムに対する要求に応答して、第1の文字列を前記クライアント・コンピュータ・システムに送るステップと、
    前記第1の文字列を送るステップに応答して、前記サーバ・コンピュータ・システムが、前記サーバ・コンピュータ・システムの内部関数である第2の関数のパラメータを含む第2の文字列を受け取るステップであって、前記第2の文字列は、前記クライアント・コンピュータ・システムによるコマンドへの前記第1の文字列の変換、及び前記クライアント・コンピュータ・システムによる前記コマンドのローカル実行の結果である、受け取るステップと、
    前記サーバ・コンピュータ・システムが、前記アプリケーションの前記真正性をチェックするために、前記第2の文字列を前記第2の関数の呼び出しに変換するステップと、
    前記サーバ・コンピュータ・システムが、前記第2の関数の前記呼び出しを用いて、前記第2の関数を実行するステップと、
    前記第2の関数の前記実行の結果に基づいて、前記アプリケーションの前記真正性をチェックするネイティブ・コードの実装を必要とすることなく、前記サーバ・コンピュータ・システムが、(i)前記アプリケーションの前記真正性を検証し、前記アプリケーションが、前記第1の関数にアクセスするのを可能にするか、又は(ii)前記アプリケーションが、前記第1の関数にアクセスするのを防止するかを判断するステップと、
    を含む、コンピュータ・プログラム。
  11. 前記コマンドの前記クライアント・コンピュータ・システムによる前記ローカル実行は、前記第2の関数のコードの少なくとも一部を読み取ること、前記第2の関数の前記コードを実行すること、又は前記第2の関数の前記コードを修正することを含む、請求項10に記載のコンピュータ・プログラム。
  12. 前記方法は、
    前記サーバ・コンピュータ・システムが、前記第2の関数の前記実行の前記結果を、前記クライアント・コンピュータ・システムにより実行されている前記アプリケーションのファイルから取得されたコード情報と照合するステップと、
    前記第2の関数の前記実行の前記結果が前記コード情報と合致することに基づいて、前記サーバ・コンピュータ・システムのセキュリティ・フレームワークにより、前記クライアント・コンピュータ・システムのために前記第1の関数が自動的に実行されるステップと、
    前記サーバ・コンピュータ・システムが、前記第1の関数を実行する前記ステップの結果を前記クライアント・コンピュータ・システムに送るステップと、
    をさらに含む、請求項10又は請求項11に記載のコンピュータ・プログラム。
  13. サーバ・コンピュータ・システムであって、
    中央処理ユニット(CPU)と、
    前記CPUに結合されたメモリと、
    前記CPUに結合されたコンピュータ可読ストレージ・デバイスと、
    を含み、前記ストレージ・デバイスは、前記サーバ・コンピュータ・システムとクライアント・コンピュータ・システムとの間の通信をセキュア保護する方法を実施するための、前記メモリを介して前記CPUにより実行される命令を含み、前記方法は、
    前記サーバ・コンピュータ・システムが、前記クライアント・コンピュータ・システムにより実行されているアプリケーションの真正性をチェックし、前記アプリケーションが、前記サーバ・コンピュータ・システムにより実行される第1の関数にアクセスするのを可能にしてほしいという、前記サーバ・コンピュータ・システムに対する要求に応答して、第1の文字列を前記クライアント・コンピュータ・システムに送るステップと、
    前記第1の文字列を送るステップに応答して、前記サーバ・コンピュータ・システムが、前記サーバ・コンピュータ・システムの内部関数である第2の関数のパラメータを含む第2の文字列を受け取るステップであって、前記第2の文字列は、前記クライアント・コンピュータ・システムによるコマンドへの前記第1の文字列の変換、及び前記クライアント・コンピュータ・システムによる前記コマンドのローカル実行の結果である、受け取るステップと、
    前記サーバ・コンピュータ・システムが、前記アプリケーションの前記真正性をチェックするために、前記第2の文字列を前記第2の関数の呼び出しに変換するステップと、
    前記サーバ・コンピュータ・システムが、前記第2の関数の前記呼び出しを用いて、前記第2の関数を実行するステップと、
    前記第2の関数の前記実行の結果に基づいて、前記アプリケーションの前記真正性をチェックするネイティブ・コードの実装を必要とすることなく、前記サーバ・コンピュータ・システムが、(i)前記アプリケーションの前記真正性を検証し、前記アプリケーションが、前記第1の関数にアクセスするのを可能にするか、又は(ii)前記アプリケーションが、前記第1の関数にアクセスするのを防止するかを判断するステップと、
    を含む、サーバ・コンピュータ・システム。
  14. 前記コマンドの前記クライアント・コンピュータ・システムによる前記ローカル実行は、前記第2の関数のコードの少なくとも一部を読み取ること、前記第2の関数の前記コードを実行すること、又は前記第2の関数の前記コードを修正することを含む、請求項13に記載のサーバ・コンピュータ・システム。
  15. 前記方法は、
    前記サーバ・コンピュータ・システムが、前記第2の関数の前記実行の前記結果を、前記クライアント・コンピュータ・システムにより実行されている前記アプリケーションのファイルから取得されたコード情報と照合するステップと、
    前記第2の関数の前記実行の前記結果が前記コード情報と合致することに基づいて、前記サーバ・コンピュータ・システムのセキュリティ・フレームワークにより、前記クライアント・コンピュータ・システムのために前記第1の関数が自動的に実行されるステップと、
    前記サーバ・コンピュータ・システムが、前記第1の関数を実行する前記ステップの結果を前記クライアント・コンピュータ・システムに送るステップと、
    をさらに含む、請求項13〜請求項14のいずれか一項に記載のサーバ・コンピュータ・システム。
JP2019526237A 2016-11-28 2017-11-27 不正なクライアント・アプリケーションからのウェブ・サーバの保護 Active JP6967074B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/361,967 2016-11-28
US15/361,967 US10063533B2 (en) 2016-11-28 2016-11-28 Protecting a web server against an unauthorized client application
PCT/IB2017/057409 WO2018096505A1 (en) 2016-11-28 2017-11-27 Protecting a web server against an unauthorized client application

Publications (2)

Publication Number Publication Date
JP2020501239A true JP2020501239A (ja) 2020-01-16
JP6967074B2 JP6967074B2 (ja) 2021-11-17

Family

ID=62192962

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019526237A Active JP6967074B2 (ja) 2016-11-28 2017-11-27 不正なクライアント・アプリケーションからのウェブ・サーバの保護

Country Status (6)

Country Link
US (2) US10063533B2 (ja)
JP (1) JP6967074B2 (ja)
CN (1) CN109891415B (ja)
DE (1) DE112017004160T5 (ja)
GB (1) GB2573422B (ja)
WO (1) WO2018096505A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10063533B2 (en) 2016-11-28 2018-08-28 International Business Machines Corporation Protecting a web server against an unauthorized client application
US11748460B2 (en) * 2020-04-27 2023-09-05 Imperva, Inc. Procedural code generation for challenge code
CN111651146B (zh) * 2020-04-29 2024-04-16 宁波吉利汽车研究开发有限公司 一种函数生成方法、装置、设备和介质
CN111544893B (zh) * 2020-04-30 2023-09-01 福建天晴在线互动科技有限公司 一种基于游戏中防止代码流程伪造的加固方法及其***
CN112804246B (zh) * 2021-01-27 2023-07-28 上海淇玥信息技术有限公司 一种本地能力权限开放和控制方法、装置和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003108253A (ja) * 2001-09-28 2003-04-11 Hitachi Software Eng Co Ltd アプリケーションの監視方法およびプログラム
JP2004126958A (ja) * 2002-10-02 2004-04-22 Hitachi Software Eng Co Ltd Wwwサーバシステム保護方法
WO2007001046A1 (ja) * 2005-06-29 2007-01-04 Hitachi Software Engineering Co., Ltd. セキュリティ対策アプリケーションの機密ファイル保護方法、及び機密ファイル保護装置
JP2012507778A (ja) * 2008-11-03 2012-03-29 エヌエイチエヌ ビジネス プラットフォーム コーポレーション ブラウザベースの不正行為防止方法およびシステム

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060053080A1 (en) 2003-02-03 2006-03-09 Brad Edmonson Centralized management of digital rights licensing
US20060294390A1 (en) * 2005-06-23 2006-12-28 International Business Machines Corporation Method and apparatus for sequential authentication using one or more error rates characterizing each security challenge
US9191793B2 (en) * 2007-10-19 2015-11-17 Duc Anh Ngo Interactive system and process
EP2115641A4 (en) 2007-01-23 2012-08-01 Ascenna Mobile Inc AUTOMATED AUTHENTICATION PROCESS FOR APPLICATION CLIENTS
CA2697632C (en) * 2007-08-06 2015-05-12 Bernard De Monseignat System and method for authentication, data transfer, and protection against phishing
US8756579B1 (en) 2007-12-03 2014-06-17 Appcelerator, Inc. Client-side and server-side unified validation
WO2009103742A2 (en) * 2008-02-18 2009-08-27 Martin Boesgaard Authenticating a web page with embedded javascript
US20100306076A1 (en) 2009-05-29 2010-12-02 Ebay Inc. Trusted Integrity Manager (TIM)
US8646062B2 (en) * 2010-11-09 2014-02-04 International Business Machines Corporation Remote authentication based on challenge-response using digital certificates
US8868915B2 (en) 2010-12-06 2014-10-21 Verizon Patent And Licensing Inc. Secure authentication for client application access to protected resources
MX2013009915A (es) 2011-02-27 2014-07-28 Redigi Inc Metodos y aparato para compartir, transferir y eliminar medios digitales anteriormente en propiedad.
US9100245B1 (en) 2012-02-08 2015-08-04 Amazon Technologies, Inc. Identifying protected media files
CN103312664B (zh) * 2012-03-08 2017-06-09 阿里巴巴集团控股有限公司 表单验证方法、装置和***
US9154568B2 (en) 2012-03-20 2015-10-06 Facebook, Inc. Proxy bypass login for applications on mobile devices
US9130926B2 (en) 2012-12-27 2015-09-08 Microsoft Technology Licensing, Llc Authorization messaging with integral delegation data
US9465586B2 (en) * 2013-02-27 2016-10-11 Google Inc. Third party application scriptability
US9021248B2 (en) 2013-08-22 2015-04-28 SolidMobile, Inc. Secure access of mobile devices using passwords
JP6033990B2 (ja) * 2013-09-20 2016-11-30 オラクル・インターナショナル・コーポレイション 単一のフレキシブルかつプラガブルOAuthサーバを備える複数のリソースサーバ、OAuth保護したREST式OAuth許諾管理サービス、およびモバイルアプリケーションシングルサインオンするOAuthサービス
US9584515B2 (en) * 2014-04-30 2017-02-28 Citrix Systems, Inc. Enterprise system authentication and authorization via gateway
CN104113552B (zh) 2014-07-28 2017-06-16 百度在线网络技术(北京)有限公司 一种平台授权方法、平台服务端及应用客户端和***
CN105743839A (zh) 2014-12-08 2016-07-06 深圳云之家网络有限公司 一种认证授权的方法、装置及***
CN104850789B (zh) 2015-04-01 2017-10-27 河海大学 一种基于Web浏览器帮助对象的远程代码注入漏洞检测方法
CN106100848B (zh) * 2016-06-14 2019-02-05 东北大学 基于智能手机和用户口令的双因子身份认证***及方法
US10063533B2 (en) 2016-11-28 2018-08-28 International Business Machines Corporation Protecting a web server against an unauthorized client application

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003108253A (ja) * 2001-09-28 2003-04-11 Hitachi Software Eng Co Ltd アプリケーションの監視方法およびプログラム
JP2004126958A (ja) * 2002-10-02 2004-04-22 Hitachi Software Eng Co Ltd Wwwサーバシステム保護方法
WO2007001046A1 (ja) * 2005-06-29 2007-01-04 Hitachi Software Engineering Co., Ltd. セキュリティ対策アプリケーションの機密ファイル保護方法、及び機密ファイル保護装置
JP2012507778A (ja) * 2008-11-03 2012-03-29 エヌエイチエヌ ビジネス プラットフォーム コーポレーション ブラウザベースの不正行為防止方法およびシステム

Also Published As

Publication number Publication date
JP6967074B2 (ja) 2021-11-17
CN109891415B (zh) 2023-03-10
US10063533B2 (en) 2018-08-28
US10574642B2 (en) 2020-02-25
GB2573422A (en) 2019-11-06
DE112017004160T5 (de) 2019-06-19
WO2018096505A1 (en) 2018-05-31
US20180343242A1 (en) 2018-11-29
GB2573422B (en) 2020-04-01
GB201909170D0 (en) 2019-08-07
US20180152427A1 (en) 2018-05-31
CN109891415A (zh) 2019-06-14

Similar Documents

Publication Publication Date Title
US11275839B2 (en) Code package processing
US10574642B2 (en) Protecting a web server against an unauthorized client application
US10218790B2 (en) Providing access to a resource for a computer from within a restricted network
JP5296106B2 (ja) セキュアなブラウザベースのアプリケーション
US11151215B2 (en) Identifying webpages accessible by unauthorized users via URL guessing or network sniffing
CN110555293A (zh) 用于保护数据的方法、装置、电子设备和计算机可读介质
Chell et al. The mobile application hacker's handbook
CN111163095B (zh) 网络攻击分析方法、网络攻击分析装置、计算设备和介质
Vehent Securing DevOps: security in the cloud
Puder et al. Exposing native device APIs to web apps
US9407654B2 (en) Providing multi-level password and phishing protection
US10719456B2 (en) Method and apparatus for accessing private data in physical memory of electronic device
Pecka et al. Privilege escalation attack scenarios on the devops pipeline within a kubernetes environment
Shah Hacking Web Services
US10169018B2 (en) Downloading a package of code
US11520866B2 (en) Controlling processor instruction execution
Shotts PhoneGap for enterprise
US9858423B2 (en) Application modification based on a security vulnerability
JP7491372B2 (ja) 攻撃再現支援装置、攻撃再現支援方法、及びプログラム
JP2018005915A (ja) アプリケーションパッケージを提供する方法およびシステム、アプリケーションを実行する方法およびシステム
Poll et al. Software Supply Chain Security for Banking Websites
Dekoning et al. Final report for secure camera capture system (April 2016)
CN113721947A (zh) 一种区块链合约原地址升级的方法和装置
FR3094515A1 (fr) procédé d’exécution de code sécurisé, dispositifs, système et programmes correspondants
MUHAMMAD An Investigation into the Security and Privacy Issues of Cloud Computing

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190911

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200527

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210518

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210806

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211019

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211022

R150 Certificate of patent or registration of utility model

Ref document number: 6967074

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150