(57)【要約】プロセッサと少なくともプロセッサメモリとを備えているコンピュータ装置上の保護されているソフトウェアの実行を妨害する侵入プログラムの攻撃を検出することによってコンピュータソフトウェアを保護する方法であって、保護されているコンピュータソフトウェアは、保護されているコンピュータソフトウェアの使用と実行のためのライセンスと、少なくとも１つの暗号鍵とを収容しているライセンスコンテナと通信し、ライセンスコンテナは、保護されているソフトウェアの使用と完全性とを保護するための複数のライセンスと複数の暗号鍵とを保護されているソフトウェアに提供し、保護されているコンピュータソフトウェアは、少なくと部分的に暗号化されており、保護されているソフトウェアは、対応している複数の暗号鍵を使用して保護されているソフトウェアを実行のために復号するものであり、保護されているソフトウェアの実行中に、保護されているソフトウェアおよび／またはコンピュータ装置上での保護されているソフトウェアの実行環境を分析して、侵入の複数のパターンまたは侵入プログラムを検索し、保護されているソフトウェアの実行中に、保護されているソフトウェアへの侵入を検出し、侵入プログラムは、不正なアクセスをするために監視コンポーネントを使用し攻撃の検出時に信号を発生する、各ステップと、を有する方法。
2009541825.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと少なくともプロセッサメモリとを備えているコンピュータ装置上の保護されているソフトウェアの実行を妨害する侵入プログラムの攻撃を検出することによって、コンピュータソフトウェアを保護する方法であって、
前記保護されているコンピュータソフトウェアは、前記保護されているコンピュータソフトウェアの使用と実行のためのライセンスと、少なくとも１つの暗号鍵と、を収容しているライセンスコンテナと通信するものであり、
前記ライセンスコンテナは、前記保護されているソフトウェアの使用と完全性とを保護するための複数のライセンスおよび複数の暗号鍵を、前記保護されているコンピュータソフトウェアに提供するものであり、
前記保護されているコンピュータソフトウェアは、少なくとも部分的に暗号化されており、対応している複数の暗号鍵を使用して、前記保護されているソフトウェアを実行のために復号するものであり、
前記保護されているソフトウェアの実行中に、前記保護されているソフトウェアの動作、および／または、前記コンピュータ装置上での前記保護されているソフトウェアの実行環境を分析して、侵入の複数のパターンまたは侵入プログラムを検索し、
前記保護されているソフトウェアの実行中に、前記保護されているソフトウェアへの侵入を検出し、侵入プログラムは、不正なアクセスをするために監視コンポーネントを使用するものであり、
攻撃の検出時に信号を発生する、
各ステップを有する方法。
【請求項２】
前記保護されているソフトウェアは、アプリケーションプログラムの本来のソフトウェアコードと、追加のコードまたは特別な動作コード、セキュリティエンジン、および／または、制御プログラムコードと、を有することを特徴とする、請求項１に記載の方法。
【請求項３】
前記保護されているソフトウェアの前記動作を分析することは、前記保護されているソフトウェア内の特別な動作コードの実行を分析すること、および／または、特別なプログラムの複数の部分または前記保護されているソフトウェアのコードの複数の部分の実行を分析すること、および／または、前記保護されているソフトウェアの実行に使用されるタイミングを計測し、複数の計測結果を評価すること、を有することを特徴とする、請求項２に記載の方法。
【請求項４】
前記保護されているソフトウェア内の任意のコマンドを、あらかじめ定められている特別な値を使用して実行することによって、前記ライセンスコンテナをロックするステップをさらに有する、請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記任意のコマンドは、前記ライセンスコンテナをロックする特別な暗号化動作であることを特徴とする、請求項４に記載の方法。
【請求項６】
前記ライセンスコンテナの前記ロックは、カウンタを所定の値、好ましくはゼロに設定することによって、または、前記ライセンスコンテナ内の必要な複数の暗号鍵を削除することによって、実行されることを特徴とする、請求項４に記載の方法。
【請求項７】
前記保護されているソフトウェアの前記動作を分析することは、複数のアプリケーションプログラムインターフェイス（ＡＰＩ）の実行を分析することと、ヘッダ実行の数をトレーラ実行の数と比較することと、を有することを特徴とする、先行する請求項のいずれか１項に記載の方法。
【請求項８】
前記保護されているソフトウェア内の前記追加のコードは、侵入監視プログラムによって引き起こされる介入モードの場合にだけ実行される餌コードであって、前記餌コードの実行を検出することを特徴とする、請求項２から７のいずれか１項に記載の方法。
【請求項９】
前記餌コードは、前記保護されているソフトウェアのインポートアドレステーブル（ＩＡＴ）の使用されていない複数の部分で参照される、請求項８に記載の方法。
【請求項１０】
前記餌コードは、非介入動作条件下では決して実行されることのない前記保護されているソフトウェアの一部であることを特徴とする、請求項８に記載の方法。
【請求項１１】
前記ライセンスコンテナを有する保護装置が、前記コンピュータ装置のインターフェイスに取り付けられていることを特徴とする、先行する請求項のいずれか１項に記載の方法。
【請求項１２】
前記餌コードは、特別に構成されているＡＰＩ呼び出しを使用して、前記保護装置をロックすることを特徴とする、請求項８と１１とに記載の方法。
【請求項１３】
侵入ソフトウェアの攻撃の検出後、侵入イベントを記憶するための法的データが作られ、好ましくは前記保護装置に保存されることを特徴とする、請求項１１に記載の方法。
【請求項１４】
前記法的データは、前記保護装置内の保護されているメモリ内に保存されることを特徴とする、請求項１３に記載の方法。
【請求項１５】
前記法的データは、暗号化された形式で保存されることを特徴とする、請求項１３または１４に記載の方法。
【請求項１６】
前記法的データは、１度だけ書き込みが可能な前記保護装置のメモリ領域に保存されることを特徴とする、請求項１３から１５のいずれか１項に記載の方法。
【請求項１７】
前記法的データは、複数のグローバルパターンの検出のために集計され評価されることを特徴とする、請求項１３から１６のいずれか１項に記載の方法。
【請求項１８】
前記法的データは、前記複数のライセンスと前記ライセンスコンテナに収容されている前記複数の暗号鍵とを管理している使用許諾者または中央インスタンスに送信され、前記法的データは、後に前記保護装置を最終的にロック解除する目的で、前記使用許諾者または中央インスタンスによって収集されるために送信されることを特徴とする、請求項１３から１７のいずれか１項に記載の方法。
【請求項１９】
前記保護されているソフトウェアの実行に使用される前記タイミングを計測することは、複数のプロセッサ例外のタイミングを評価することを有することを特徴とする、請求項３に記載の方法。
【請求項２０】
前記保護されているソフトウェアの実行に使用される前記タイミングを計測することは、全体のクロックの一貫性を確認することを有することを特徴とする、請求項３に記載の方法。
【請求項２１】
前記保護されているソフトウェアの前記動作を分析することは、複数の実行スレッドを、正常なプログラムの実行によって作られた複数の認証されているスレッド、または、侵入プログラムによって作られた複数の不正なスレッドとして、分類することを有することを特徴とする、請求項２または３に記載の方法。
【請求項２２】
ＴＬＳプロシージャ（スレッドローカルストレージプロシージャ）を使用して、複数の不正なスレッドを発見することを有することを特徴とする、請求項２１に記載の方法。
【請求項２３】
ＡＰＩシステムコールの実行を監視することによって、複数の不正なスレッドを発見することを有することを特徴とする、請求項２１に記載の方法。
【請求項２４】
侵入プログラムを特定するために、前記コンピュータ装置上の前記保護されているコンピュータソフトウェアの前記実行環境を分析することは、複数の所定のパターンを検出するために前記コンピュータ装置上の他の複数のプロセスを調べることを有する、請求項１に記載の方法。
【請求項２５】
複数のウィンドウパラメータとクラスパラメータまたはプロセスおよび複数のファイル名が、複数の侵入プログラムの所定の複数のパターンの検出のために検査されることを特徴とする、請求項２４に記載の方法。
【請求項２６】
前記コンピュータ装置上の前記複数の他のプロセスのプロセスメモリが、部分的にまたは完全に検査されることを特徴とする、請求項２４に記載の方法。
【請求項２７】
前記ライセンスコンテナを有する前記コンピュータ装置のインターフェイスに取り付けられている保護装置は、少なくとも１つの前記ライセンスコンテナを有し、前記保護装置全体がロックされるのではなく、侵入が検出された前記保護されているソフトウェアに割り当てられている前記ライセンスコンテナだけがロックされることを特徴とする、請求項４から６のいずれか１項に記載の方法。
【請求項２８】
前記コンピュータシステムのインターフェイスに取り付けられている保護装置は、少なくとも１つのライセンスコンテナを有し、前記コンピュータ装置は、リモートタイムスタンプサーバと通信するように構成され配置されており、前記保護装置のロックは、前記保護装置の動作の継続に必要な前記コンピュータ装置と前記タイムスタンプサーバとの間の通信時に、実施されることを特徴とする、請求項４から６のいずれか１項または請求項２７に記載の方法。
【請求項２９】
前記法的なデータを、侵入防止サービスのリモートサーバに送信し、前記侵入防止サービスの前記リモートサーバから送信された特別なコマンドまたはコードを使用して、ロックされている前記ライセンスコンテナのロックを解除することを特徴とする、請求項１３に記載の方法。
【請求項３０】
装置構成要素を使用することによって、コンピュータ装置上で、保護されているコンピュータソフトウェアのための侵入検出を行う装置であって、
前記コンピュータ装置上でのプログラムの実行のために、前記保護されているアプリケーションプログラムからの監査情報を収容している複数のメッセージを介して制御プログラムと通信する監視プログラムを有し、
前記制御プログラムは、前記コンピュータ装置に取り付けられている保護装置と通信する複数の機能を有しており、前記保護装置は、リモート侵入防止サービスプロバイダから侵入防止仕様を受信し、
前記侵入防止仕様は、前記監視プログラムによる監視プロセス中に生成された、考え得る対象属性の集合の中から、記録される少なくとも１つの対象属性を指定し、
前記侵入防止仕様は、前記監視プロセス中に前記少なくとも１つの対象属性の記録のきっかけとなる少なくとも１つの監視基準も指定し、
前記監視プログラムは、前記少なくとも１つの監視基準の検出に応答して前記少なくとも１つの対象属性を記録し、前記少なくとも１つの監視基準の検出に応答して前記少なくとも１つの対象属性を記録することによって侵入ログを作るために実行されるように構成されており、
前記侵入ログは、侵入検出を目的とした複数のパターンの検出のために検査される装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサと少なくともプロセッサメモリとを備えているコンピュータ装置上の保護されているコンピュータソフトウェアの実行を妨害する侵入プログラムの攻撃を検出することによって、コンピュータソフトウェアを保護する方法と装置とに関する。
【背景技術】
【０００２】
サーバ装置を外部クライアントからのアクセスから保護するために、サーバ−クライアントネットワーク環境を保護する多くの攻撃防止装置が、記述されている。一般に、サーバ側には、外部クライアントからサーバに向けられているトラフィックによって起動されたアクセスプロシージャと動作とを分析する監視プロセスが、存在している。通常の動作パターンとの比較によって、アクセスが、許可されたり拒否される。Ａｌｃａｔｅｌからの米国特許出願第２００５２７３８５５号は、例えば、出願には詳細には記述されていない（またその出願の特許の一部ではない）専用の攻撃防止装置が、サーバ装置へのアクセスを許可したり拒否したりするためにアクセス制御機能によって使用されるブラックリストを保持している、装置を記述している。攻撃防止装置は、装置へのアクセスのしやすさを管理するために、複数のコマンドを、サーバのアクセス制限機能に送信するのに必要である。
【０００３】
他の従来技術（Ｃｈｏｏ、米国特許明細書第４，９３２，０５４号）は、コンピュータの通信ポートに差し込まれるソフトウェア保護ハードウェア装置に一体化されているフィルタコンポーネントを記述している。この装置は、アプリケーションプログラムの保護に使用される制御ソフトウェアの複数のコマンドに起因して通信ポートから出力される複数のビットまたは複数のビットの組み合わせを選択するものである。複数のフィルタコンポーネントが、参照コードに一致する「偽装所定制御コード」の複数のビットを選択し、それによって、保護装置内の機能を起動するために使用されるフィルタコンポーネントから、出力が行われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２００５／２７３８５５号明細書
【特許文献２】米国特許第４９３２０５４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、コンピュータ装置上のアプリケーションソフトウェアへの侵入を検出する方法を提供することである。本方法は、そのような侵入の試みを、高い信頼性で監視し、非常に効果的になる。
【課題を解決するための手段】
【０００６】
この目的は、請求項１の特徴を備えている方法と、請求項３０の特徴を備えている装置と、によって達成される。請求項１に応じた発明の方法のさらなる展開と特別な実施態様とが、複数の従属項に定められている。
【０００７】
本発明に応じたコンピュータソフトウェアを保護する方法は、プロセッサと少なくともプロセッサメモリとを備えているコンピュータ装置上の保護されているソフトウェアの実行を妨害する侵入プログラムの攻撃を検出するものである。保護されているソフトウェアは、保護されているプログラム、特には、追加コードの埋め込みによって変更されているアプリケーションプログラムを含む。例えば、保護されているソフトウェアは、保護されているソフトウェアに組み込まれている、制御プログラムおよび／またはセキュリティエンジンおよび／または監視プログラムを有することができる。
【０００８】
本発明によれば、保護されるコンピュータソフトウェア（保護されているソフトウェア）は、保護されているコンピュータソフトウェアの使用のためのライセンスと少なくとも１つの暗号鍵とを収容しているライセンスコンテナと、通信する。ライセンスコンテナは、保護されているソフトウェアの使用と完全性とを保護するために、複数のライセンスと複数の暗号鍵とを、保護されているソフトウェアに提供する。
【０００９】
保護されているコンピュータソフトウェアは、少なくとも部分的に暗号化されており、対応している複数の暗号鍵を使用して、保護されているソフトウェアの実行のために復号する。対応している複数のまたは１つの暗号鍵は、ライセンスコンテナに収容されており、そして、ソフトウェアの使用を制限し制御し、かつ、保護されているコンピュータソフトウェアの少なくとも部分的に暗号化されている複数の部分を復号するように、保護されているソフトウェアと共におよび／または保護されているソフトウェアのために生成された鍵である。
【００１０】
本発明に応じた方法は、以下のステップを有する。
【００１１】
保護されているソフトウェアの実行中に、そのソフトウェアの動作および／またはコンピュータ装置上で保護されているソフトウェアの実行環境が、分析される。さらに、この実行中に、侵入プログラムまたは侵入の複数のパターンが、検索される。さらなるステップでは、保護されているソフトウェアの動作の分析に基づいて、または、コンピュータ装置上の実行環境の分析に基づいて、保護されているソフトウェアへの侵入が、検出される。侵入するプログラムは、保護されているソフトウェアへ不正なアクセスをするために、監視コンポーネントまたは監視プログラムを使用する。侵入または侵入の試みを検出したときに、信号が生成される。信号は、保護されているソフトウェア、制御プログラム、監視プログラム、セキュリティセクション、および／または、さらなる処理をするコンピュータ装置によって取り扱われるフラグなどとすることができる。
【００１２】
本発明の範囲において、保護されているソフトウェアの動作は、保護されているソフトウェアの実行中および／または実行後の、保護されているソフトウェアの反応を含む。侵入プログラムが、保護されているソフトウェアに侵入しようとした場合、アプリケーションの反応、コンピュータ装置のコンピュータソフトウェアによるプロセッサ能力の使用、保護されているソフトウェアのプログラム全般または特別なプログラムまたは複数のコード部分の実行の全般のタイミングが、異常になる。さらに、用語「動作」は、プロセッサまたはプロセッサメモリ内の特別な論理アドレスへのリンクも含まれる。
【００１３】
前述のように、コンピュータ装置またはホストコンピュータは、他のセキュリティ機能のうち、同じホストコンピュータ上で実行されているローカル侵入プログラムからの攻撃を検出し特定するための攻撃検出機能を提供する、セキュリティ装置、一般的には、ソフトウェア保護用のドングル、または、ソフトウェア実装ライセンスコンテナを有している。
【００１４】
侵入ソフトウェアは、ローカル手段によって、および／または、ローカルホストコンピュータと通信している遠くにあるネットワークコンピュータまたはサーバからのリモートアクセスによって、導入されることがある。侵入ソフトウェアは、ＷＩＢＩ−Ｐ６の特許であるＥＰＯ１１８４７７Ｂ１号に記載のようなソフトウェア保護装置によって保護されているコンピュータソフトウェアの攻撃と分析とに使用することができる。
【００１５】
保護ハードウェアコンポーネント、取り外し可能なセキュリティドングル、または、ソフトウェアライセンスコンテナ（以降では一般的な用語である「ライセンスコンテナ」と呼ぶ）とすることも可能なライセンスコンテナは、ホストアプリケーションソフトウェアをロック解除するために、シングルステーションコンピュータまたはネットワーク化されている複数のコンピュータに、複数のライセンスアクセスパラメータを提供するが、これには限定されない。ソフトウェアに加えて、メディアコンテンツまたは任意の種類のデータが、そのようなライセンスコンテナによって保護されてもよい。ソフトウェアという用語は、ここでは例に過ぎない。より正確な定義は、以下の「保護の対象」の箇所で説明する。
【００１６】
クライアントプログラムを通して、保護されているアプリケーションプログラムに与えられる、インストールされた保護機構を、迂回する多くの方法が使用され、また知られている。本発明で提案し説明している概念は、一般に、コンピュータホスト装置上で実行されているプロセスを分解し、対象とするアプリケーションプログラムのための保護機構を迂回する、様々な攻撃方法を、検出し防止する対策である。
【００１７】
攻撃の方法が様々なように、検出と防止の機構として、様々な対策が考えられる。本発明の概念は、侵入イベントを検出し分析し、防御手段を組織化するためにそれらを保護装置に報告するための、新しい複数の方法とその組み合わせを提案する。
【００１８】
本発明は、ソフトウェア、マルチメディアコンテンツ、または任意の種類のデータファイルを保護するために、ＥＰＯ１１８４７７Ｂ１号で提案されているようなライセンス装置を強化するために使用される。ライセンスコンテナとして動作する保護装置は、対象とするアプリケーションソフトウェアの使用と完全性を保護するために、ホストコンピュータインターフェイスと一式のメッセージとを通して、制御ソフトウェアと通信する。アプリケーションソフトウェアは、標準で暗号化され、プログラムの実行のためにアプリケーションソフトウェアを復号するためには、ライセンスと、対応している復号鍵と、を必要とする。侵入ソフトウェアは、そのような過程を攻撃し、例えば、アプリケーションプログラムを実行するための保護ハードウェアと制御ソフトウェアとの間の通信リンクに、侵入することがある。不正な使用（偽の目的のためのデバッガツールの使用など）のための監視ソフトウェアコンポーネントが原因のいかなる侵入イベントも、できるだけ早く見つけられることになる。また、保護されているアプリケーションプログラムの実行時における、侵入アプリケーションによるあらゆる実行の妨害時にも、データや命令を改ざんする侵入アプリケーションが検出され、保護されているプログラムコードの完全性または単一プロセスの実行を表すことができる一連の所定のコードセグメントの実行の侵害を防止するために使用されることになる。
【００１９】
複数のアクセス制限コンポーネントの完全性は、ライセンスコンテナと、制御プログラム（または制御プログラムモジュール）とさらに呼ばれる、侵入を監視している制御ソフトウェアコンポーネントと、の間の通信リンクを遮断することによって、保護されることになる。公知の耐侵入スキームの中の１つの方法が、ユーザモードデバッガ、カーネルデバッガ、「ＩＤＥ」デバッガとも呼ばれる統合開発環境デバッガなどの、様々な種類のデバッグプログラムが存在するかについて装置をスキャンする制御プログラム（ＣｏｄｅＭｅｔｅｒ．ｅｘｅ）の性能を示している「ＣｏｄｅＭｅｔｅｒ  Ｄｅｖｅｌｏｐｅｒｓ  Ｇｕｉｄｅ（ＣｏｄｅＭｅｔｅｒ開発者ガイド）（Ｐ８９）」のマニュアルに記述されている。保護されているアプリケーションプログラムの起動前に、例えば、制御プログラムの制御モジュールが、制御装置（ＣｏｄｅＭｅｔｅｒ）に対してメッセージを生成して、ソフトウェア保護制御ソフトウェアとの通信リンクを遮断する。使用カウンタは、ライセンスの使用数を減少させるために使用されると説明されている。単位カウンタを侵入検出に使用すれば、使用制御装置の確立解除前に、２つ以上の侵入検出イベントが発生されてもよい。これは、検出された侵入を無効にするための処置を規定する制御装置のポリシーの設定による。
【００２０】
本発明の目的は、攻撃または侵入時に攻撃防止手段が起動する場所と時間とを隠すために、より複雑な複数の方法を使用することである。これは、攻撃防止プロセスの動作中に、侵入者または侵入ソフトウェアに対して、痕跡や手がかりを何も残さないことである。
【００２１】
ライセンスコンテナと通信をしている制御プログラムモジュールまたは機能は、侵入防止とライセンスアクセス管理とには限定されない多くの機能を備えている保護制御プログラム全体の一部とすることができる。制御プログラムは、オペレーティングシステム（ＯＳ）のいずれかのカーネルドライバの外側部分としたり、アプリケーションプログラムまたは保護されているソフトウェア自体に埋め込むこともできる。
【００２２】
本発明によって記述されている方法は、侵入ソフトウェアを検出する様々な機構を有し、また、ハードウェア装置を制御プログラムとのさらなる通信から保護し、また、アプリケーションプログラムの保護されているソフトウェア内での復号に使用されるステータス情報、暗号鍵または秘密鍵などのあらゆる通信プロトコルパラメータをそれぞれ明らかにする様々な手段とを有している
本発明の方法の好ましい実施態様では、保護されているソフトウェアの動作の分析は、例えば、保護されているソフトウェアに埋め込まれている複数の特別な動作コードの分析と実行、または、複数の特別なプログラム部分または保護されているソフトウェアコード内の複数の部分の分析と実行を有している。さらに、保護されているソフトウェアの動作の分析は、保護されているソフトウェアの実行に使用されるタイミングの計測と、計測された複数の結果の評価と、も含む。例えば、デバッガのような侵入ソフトウェアが、保護されているソフトウェアを実行すると、ソフトウェア全体またはソフトウェアの複数の部分の実行のための時間は、侵入の一切無い非介入の場合の実行よりも長くかかる。
【００２３】
そのような複数の特別な動作コードまたは複数の特別なプログラム部分の実行の分析の例は、餌コードの実行としてもよい。これを以下でより詳細に説明する。
【００２４】
侵入検出を示しているメッセージを受信したときにハードウェア装置内部で取られる対抗策も、通信プロトコルの再構築または再生を防止するために様々な方法を使用することによって様々である。
基礎をなす技術の基本的な記述
保護の対象
本発明は、ライセンス情報をコンピュータ装置上で執行するために使用される。そのようなライセンスは、一方で特定のプログラムの実行の許可であり、他方で特定のコンテンツの表示または使用の許可である。コンテンツの保護自体は、コンテンツを復号できる特別に修正されたビューワ（またはコンテンツを使用する他の手段）によって実施される。他方、保護されているプログラムは、一般的な実行可能文（例えばネーティブウィンドウバイナリ）だけでなく、様々な種類のスクリプトに拡張することもできる。最も明確な例は、現在、プログラムとして承認されているＪａｖａ（登録商標）と「．ＮＥＴ」プログラムであるが、全ての他の種類のスクリプトも含まれる。コンピュータが次第に強力になるにつれて、「ネイティブプログラム」と「ポータブルスクリプト」ととの間の違いが、日に日にわずかになっている。これらの種類の知的財産を保護する場合に採用される機構は、全く同じである。そのため、我々は、保護の対象が狭義のプログラム、スクリプト、またはデジタルコンテンツであるかどうかにかかわらず、保護の対象を「保護されるアプリケーション」または「保護されるソフトウェア」と名付けることになる。
保護の発想
保護は、特別なコードを、保護されるプログラム（または純粋なコンテンツの場合は「ビューワ」）に挿入することによって、実施される。この挿入されたコードは、「セキュリティエンジン（ＳＥ）」と呼ばれ、プログラムに挿入されている所謂「セキュリティセクション」に埋め込まれる（ここでは添付の図面を参照して説明する）。あるセキュリティサービスは、これらのセキュリティサービスの中でもより一般的な部分であるため、（図３ａ、３ｂ、３ｃに示しているように）保護されているアプリケーションから分離され、外部の「制御プログラム」内に存在させることができる。機能性は、異なる部分（セキュリティエンジン−制御プログラム）間で移動できるため、保護されているアプリケーション、セキュリティエンジン、および、制御プログラムは、１つの単位として扱われ、「保護されているソフトウェア」と呼ばれることになる（図３ｂ、３ｃを参照）。
保護技術
一般的なプログラムは、様々な部分からなる。ここでの術語は、公知のＷｉｎｄｏｗｓ（登録商標）システムから得たものであるが、ほとんどの部分は他のシステム（スクリプティングプラットフォームや他のプラットフォーム）でも使用されている。
【００２５】
図２からわかるように、プログラムは、プログラムのロードに使用され様々な部分を特定する何らかのメタ情報を収容しているヘッダからなる。コードセクションは、ほとんどが実行可能コードを収容している。このコードは、必要に応じて、変更したり修正することができる。プラットフォームによって、コードの変更と修正は、多かれ少なかれ困難である。データセクションには、アプリケーションによって使用されるバイナリデータが収容されている。リソースセクションは、ＧＵＩアプリケーションで主に見られる。アクセスは、アプリケーション自体とオペレーティングシステムとから行われる。セキュリティセクションが、保護プロセス内に追加されている。セキュリティセクションは、実行可能コードを復号化し、ライセンスコンテナまたは制御プログラムと通信する複数の重要な部分からなる。実行可能コードとオペレーティングシステムとの間の接続は、インポートアドレステーブル（ＩＡＴ）を通して行われる。保護されているソフトウェアを起動するときに、オペレーティングシステムは、オペレーティングシステムの複数の関数（複数のＡＰＩ）への複数のポインタを、ここに置く（図１ａ、１ｂを参照）。保護機構は、このテーブルを使用して、これらの関数呼び出しを横取りすることができる。呼び出しを横取りするときには、通常、まずヘッダが実行され、それからＡＰＩと少なくともトレーラとが実行される（図２を参照）。
Ａ）侵入（または攻撃）の検出には以下の複数の方法を使用することになる。
【００２６】
本発明の方法の有利な実施態様は、「餌コード」を、保護されるソフトウェアまたは本来のアプリケーションプログラムコードにそれぞれ挿入することである。
【００２７】
「餌コード」は、本発明の用語においては、アプリケーションプログラムコード（または保護デバイスへのアクセスを制御する制御プログラムの一部）である通常のプログラムコードに見えるが、アプリケーションプログラム自体に対しては何ら意味や目的を有しておらず、アプリケーションプログラムの通常の実行中には、実際には実行されない特定のプログラムコードとして理解される。侵入プログラムは、アプリケーション全体の深い知識を有していないので、餌コードと通常のアプリケーションコードとを見分け、餌コードによって示されているそのような「プログラム実行トラップ」を回避するための好ましい戦略を実現するために、十分に分析することはできない。例えば、餌コードのデバッグまたはトレースのイベントが発生したときに限り、餌コードが、例えば、デバッグプロセスによって実行されていることを示すマーカまたはポインタが設定される。そのようなイベントは、侵入検出イベントの発生として解釈して、信号を発生させることができる。餌コードは、様々なプログラムロケーションに分散していてもよく、また、全ての餌コードが、侵入検出イベントを信号で知らせるために使用されなくてもよい。他の場合には、餌コードは復号された実行可能なコードの複数の部分の中で暗号化されたままであってもよい。そのような、暗号化されているコードは、（アプリケーションプログラムの）複数のコア部分で使用されるのが有利であって、そのような部分では餌コードの復号が非常に発生しやすく、イベントの早期発見となる。（餌コードの）復号化プロセスが始まると、図１（ａ）のように、侵入検出が信号で知らせられることになる。
【００２８】
餌コードを使用する他の場合は、ポインタエントリを、インポートアドレステーブル（ＩＡＴ）の複数の未使用領域で生成することである。そのような複数の「死んでいるエントリ」の実行も、図１（ｂ）に示しているように、侵入イベントのきっかけとなる
本発明の方法の他の好ましい実施態様は、複数のＡＰＩについての複数のラッパーを使った部分的なコード実行の検出を有している。
【００２９】
プログラムの実行中に、ラップされたＡＰＩが関数へのアクセスに使用され、プロセスをステップ実行しているときに以下のコードシーケンスが実行される。：１つの可能性は、ヘッダ−ＡＰＩ−トレーラの挿入である。
【００３０】
コードのシーケンスによってＡＰＩ関数呼び出しが実施されている間、プロセスの完全な実行に限って、侵入検出が防止される。
【００３１】
しかし、保護されているアプリケーションプログラムの攻撃時には、ほとんどの場合、ヘッダ部分だけが実行されることになる。トレーラを使用しない場合、プログラムの実行中の異常な動作の検出につながることになり、侵入イベントが信号で知らされる（図２の複数のステップを参照）。
【００３２】
本方法のさらなる好ましい態様は、プロセス監視による異常の検出を有している。
【００３３】
アプリケーションプログラム（または制御プログラム）とは別個であって、別個のプロセスとして実行されている監視プログラム（監視プログラム）は、アプリケーションプログラム実行の通常の過程を追跡するために使用されると仮定する。適用される方法の１つの場合では、アプリケーションプログラムの複数の専用プログラムセグメントの定義されたシーケンスを通した実行のための複数のタイミング条件が、監視プログラムによって記録され、それから、アプリケーションプログラムの「非介入」実行を表しているテンプレートデータとの比較によって、分析される。この方法は、プログラム実行の複数のタイミング条件が、非常に安定した状態を維持しており、プロセス実行のために余裕のないタイミング条件において複数のタイミング条件が再現可能な、リアルタイムオペレーティングシステムでないこともある、標準的なオペレーティングシステム環境に適用可能である。侵入の場合、例えば、餌コードの実行中に、プログラム実行のための複数のタイミング条件が変化し始め、したがって、複数の所定のタイミング条件の複数の拘束の下で異常なプログラムの実行を示すことがある。監視モジュールの一部としての確率論的解析機能が、コードシーケンスの複数の部分用に与えられた複数の最悪のタイミング条件などの検出基準に従って侵入が検出されたことを決定してもよい。そのような複数のタイミングパターンを設けるために、監視モジュールは、プログラムコードの複数の所定の部分の実行によって発生する複数のプロセッサ実行サイクルの複数の計測結果を使用することができる。
【００３４】
監視機能の確立と実行の他の場合では、デバッガ自体のデバッガインターフェイスが、監視モジュールに組み込まれていてもよい。統合デバッガインターフェイスの監視モジュールへの実装によっては、保護装置内の他の場所に実装されている任意の対デバッグ手段を考慮しなければならない（デバッガ検出のための該当する侵入機構に対して）。
【００３５】
本発明の方法のさらに他の好ましい実施態様は、先進的なデバッガ検出を有している。
【００３６】
複数のタイミング条件は、アプリケーションプログラムを監視するためにデバッガが使用される時にも変化する可能性がある。この類似の場合においては、制御プログラムの監視機能は、プログラムシーケンスに対して予期していないタイミングパターンを見つけることができる。監視機能は、ＯＳの特定のカーネルドライバの一部であったり、アプリケーションプログラム自体の一部であっても良い。
【００３７】
本発明のさらなる同じく好ましい実施態様は、以下のように説明することができる、複数のタイミングパターンの認識による複数の先進的なデバッガ検出方法を有している。
【００３８】
例としては、不正な操作やアクセス違反などのプロセッサ例外によるプログラム実行におけるタイミング異常の検出である。他の例は、前述したものと同様に、監視モジュールを使用して、通常のコード実行における複数のタイミング異常を監視することと検出することである。
【００３９】
複数のブレークポイントの設定（つまり、プログラムの実行が割り込まれるプログラムアドレスの複数のロケーション）も、監視プログラムによって検出可能なタイミングに影響する。
【００４０】
決定された重要な複数のコードセクション、つまり保護されているデータとアプリケーションプログラムの完全性の維持に必須のコードセクションにおいて設定されたブレークポイントは、デバッガの存在を通して侵入を検出可能な実行タイミングパターンにつながる。様々なデバッガは、監視モジュールによってそれらのデバッガを特定可能な、典型的な複数のタイミングパターンを有することができる。
【００４１】
他のプログラム機能は、予測されるブレークポイントの設定、例えば、制御プログラムとライセンスコンテナまたは保護装置との間の通信リンクを基にすることができる。デバッガによるブレークポイントの設定は、複数の所定のアドレスロケーションでの定義済みの値の設定によって検出することができる。プログラムコードが、重要なプログラムセグメント内のブレークポイント設定のための予測されているロケーションにおいて実行されるときに、監視機能は、定義済みの値が入力されたことを先んじて探し、従って、さらなるデバッグステップを防止するために重要なプログラムコードのさらなる実行を停止させることになる。
【００４２】
他の方法は、専用デバッガが実行されているときに通常占有するアドレス空間を監視プログラムがスキャンしている時に適用される。そのような監視される複数のメモリパターンは、通常のメモリテンプレートと比較することが可能で、比較時に、監視プロセスは、特定の種類のデバッガの存在を通して、遭遇する脅威のレベルを分析する。これによって、監視プログラムは、ライセンスコンテナまたは保護装置のそれぞれに対して侵入メッセージを生成させたり、生成させなかったりすることができる。複数のデバッガ機能が、例えば制御モジュール内に埋め込まれている場合、このため、遭遇するメモリパターンは、侵入のためではなく、監視を目的としている。そのような場合、監視プログラムは、複数のデバッグ機能を無視する。
【００４３】
本発明の他の好ましい実施態様は、要求していない複数のスレッドの検出を有している
複数のスレッドが、同じ複数のリソースを共有している複数のサブプロセスとして発生している。保護されているプログラムの実行中に定期的に、複数のスレッドは、１つのメインプロセッサ同じ状態情報を使用し、複数のアドレス空間と、ファイルＩ／Ｏなどの他の複数のリソースを共有している。侵入は、要求していない複数のスレッドの検出時に信号で知らされることになる。
【００４４】
これは、様々な手段によって達成することができる。
ａ）有効なスレッドの一覧を得るための複数のスレッドを発生させる複数のＡＰＩの監視
監視モジュールは、通常のＡＰＩ関数呼び出しの下で実行され複数のスレッドを監視する機能を提供し、許可された複数のスレッドの一覧を保持している。要求していない脅威を外部のプロセスが発生させた場合、監視モジュールは、このスレッドを検出し、要求していないスレッドの侵入を信号で知らせることになる。
ｂ）「ＴＬＳ」コードを使用した複数のスレッドの生成の監視
スレッドローカルストレージ（ＴＬＳ）は、複数のスレッドが相互動作とデータ共有のために共通のストレージを使用する、予約されているＯＳ割り当てストレージ領域である。そのため、全てのスレッドが、それらのローカルデータを初期化するために、定義されている「ＴＬＳコード」を実行する。このコードは、全てのスレッドと、本来のプロセスルーム内で生成されておらず、監視によって識別され信号で知らされることになる、要求していないスレッドと、の生成を監視するために使用することができる。
ｃ）「不正な複数のスレッド」によるＡＰＩ呼び出しの検出
プロセスルームの外側からヘッダ、ＡＰＩ、およびトレーラからなるラップされたＡＰＩを使用して作られた不正な複数のスレッドも、監視モジュールによって検出され、監視モジュールに、侵入検出の信号で知らせることを行わせる。
Ｂ）攻撃または侵入の検出時に講じられる手段
侵入検出に関する情報を収容しているメッセージであることができる、侵入検出に関する情報を受信するために（制御プログラムを通して）制御モジュールと共に動作し制御モジュールと通信している保護装置は、実施ポリシーと検出された侵入の種類に依存して、制御プログラムを通したさらなるアクセスから遮断されるか、異なる状態（待ち状態）に置かれることになる。侵入検出機構は、制御プログラム内に埋め込んだり（１）、保護されているソフトウェアまたは保護されているアプリケーションプログラム自体の一部としたり（２）、別個の監視プログラムの一部としたり（３）、ＯＳカーネルドライバの埋め込み関数またはプログラムコードとする（４）ことができる。
【００４５】
さらなるアクセスを拒否することによって、ライセンスコンテナ内に保持されている保護されているライセンス単位カウンタ、機密プログラムまたは暗号鍵またはコンテンツ暗号鍵、および制御プログラムと共有される他の種類の保護されているデータなどの保護されているデータへのアクセスに、影響を与えることができる
例えば、ドングルまたはＵＳＢスティックの形態のハードウェア保護装置の場合、保護装置、例えばライセンスコンテナを有している保護装置のロックは、検出された攻撃の信号の受信に続くフラグの設定によって、実施することができる。保護装置の無効化は、使用カウンタの減算、あるいは反転可能または反転不可能な侵入検出フラグの設定によって実施可能な、また内部に保存されている複数の秘密鍵または暗号鍵の破棄によっても実施可能な、保護装置の通信の無効によっても、さらに実施することができる。
【００４６】
判断された侵入検出メッセージを制御プログラムから受信すると、鍵を削除する機構を起動することができる。保護装置との通信は、依然として継続することができるが、特定の攻撃が検出されているホスト側において復号プロセスを実施するための複数の重要な鍵へのアクセスの要求は、拒否されることになる。
【００４７】
保護装置の無効化は、一般的な複数のＡＰＩを特定のしかし判別不能な複数のパラメータと共に使用する、隠されている複数のロック機構を使用して、実施することができる。
【００４８】
この場合、保護の経路は、普通に使用されているＡＰＩが関数呼び出しに使用されており、呼び出されたパラメータが、暗号化動作の複数の戻り値、特定のテキスト、またはストレージのための動作などのように、通常とは異なることが認識できない場合には、選択可能である。侵入検出パラメータであると示されているような区別できないパラメータの受信時に、保護装置のロックまたは「警報機構」が、起動されることになる。
【００４９】
保護装置の無効化またはロックのさらなる可能性は、復号動作の結果に依存したロックである。
【００５０】
アプリケーションプログラムの様々な箇所と、制御プログラムの複数の箇所とで、複数の鍵またはパラメータの復号のための複数の暗号関数が（つまりラップされたＡＰＩ関数の呼び出しによって）起動されることが可能で、そのような復号化動作の複数の戻り値が、複数の所定の値との比較動作の結果に応じて、侵入検出を信号で知らせることを導くことができる。そのような比較は、そのような暗号値が保護装置に送信された後、保護装置の制御によってのみ実施可能である。
例として：
本来のコードの修正によって、標準の分析方法を無効にすることができる。例えば、ＡＰＩ呼び出しの修正によって、プログラムにセキュリティエンジンを起動させ、暗号化されている入力パラメータの復号時に、暗号化の前に制御プログラムから受信した複数の戻り値を得ることができる。制御プログラムよって保護装置に送信された複数の戻り値は、保護装置内の所定の複数の値との簡単なマッチングと比較など複数の戻り値のさらなる処理を開始させることができる。例として、本来のコードの修正は、「死んでいる」餌コードの実行によって引き起こされることができる。
Ｃ）法的な証拠の収集
攻撃の検出時に、保護装置は、攻撃者に対する以降の法的な処置を可能にする法的な証拠を収集することができる。法的なデータは、以降で攻撃者または少なくとも攻撃者のコンピュータを特定するように構成されている。そのため、法的なデータは、以下のデータを有することができるが、このデータには限定されない。
【００５１】
以下のようなコンピュータのハードウェア識別
○ネットワークカードのハードウェアアドレス
○プロセッサ、マザーボード、ハードディスク、グラフィックカードなどの様々なコンピュータ構成要素のシリアル番号
○様々なコンピュータ構成要素の出荷データと製造データ
以下のようなコンピュータのソフトウェア識別
○ボリュームシリアル番号
○ＯＳライセンス番号
以下のようなユーザ識別
○メールアドレス
○ユーザ名
侵入のさらなる証拠を収集するために、以下の手段や処置を適用することができる。
ａ）さらなる攻撃を脅かし、使用許諾を回復するために使用許諾者に連絡するように本来の被使用許諾者を促すために、ハードウェアを無効化すること
保護装置が無効であることが検出されると、被使用許諾者は、ライセンスとコンテンツとへの失われたアクセス権の回復を申請することになる。これによって、使用許諾者は記録を追跡し、無効化されている保護装置へのライセンスを回復するためのポリシーを確立するために、データを収集することになる。
【００５２】
使用許諾者が決定すると、１つまたは２つ以上のライセンスアクセス機能の回復によって、装置の機能または装置の機能の一部分が再確立可能になる。使用許諾者は、収集されたデータを自身で集計したり、その代わりに、現在の脅威のシナリオの大局的概要を得るために、中央インスタンス（侵入防止サービス）に、データを転送することができる。これらの集計されたデータの評価時に、保護装置をロックするための複数の新しい対応ポリシーを作ることができる。これらのポリシーは、例えば、主に中央時刻サーバまたは使用許諾者によって、ライセンスとソフトウェアとの更新手続き時に配信される。本発明に範囲において、被使用許諾者と使用許諾者とは、法的な実体を指すだけでなく、使用されているコンピュータ、コンピュータ装置、またはサーバが含まれていてもよい。この場合、使用許諾者は、使用許諾を得た、ライセンス鍵または暗号鍵によって保護されているソフトウェアが保存され、実行されるコンピュータから、通常遠方にいる。使用許諾者は、使用許諾されているソフトウェアつまりアプリケーションプログラムに関する情報、ライセンス情報、ライセンス鍵、および／または暗号鍵が保存されているサーバを有している。
ｂ）上書きに対して保護されている「１回のみ書込み」メモリ内の証拠の収集
１回書き込みメモリへ検出された侵入を書き込む、つまり記録することによって、記録されている各侵入に対するタイムスタンプが押されている日時を使用して、そのようなイベントを追跡することができる。
【００５３】
定期的に、使用許諾者は、保護装置を訪れて、法的な証拠のためのデータを収集することができる。使用許諾者は、自身の侵入検出ポリシーに従って、保護装置無効化コマンドを、そのようなコマンドを保護装置自体に渡す制御プログラムに、送信することによって、ライセンスを無効にすることができる。ライセンスコンテナまたは保護装置は、複数のライセンス許諾者用の保護装置として、ライセンス許諾者のそれぞれの保護されているコンピュータソフトウェアまたはアプリケーションプログラムの使用許諾を保護装置の使用者に対して行うように、動作できると仮定している。そのため、２つ以上のアプリケーションプログラムが、同じ保護装置によって保護されることもある。保護装置の下で実行されているアプリケーションプログラムの種類によって、２種類以上の侵入が発生し検出される可能性がある。これは、特定の侵入検出機構を、ある種類のアプリケーションにおいては使用できるが、他の種類のアプリケーションには使用できない場合もあることを意味している。そのため、保護装置を無効化する前の期間の間、使用され、その結果様々な種類の侵入のための攻撃に曝される、様々な種類の保護されているアプリケーションプログラムに従って、保護装置内で法的な追跡のために、複数の侵入イベントを記録し、監査することが求められることがある。
【００５４】
鍵アクセスの取り消し、保存されている機密へのアクセスの拒否、保護装置との通信の遮断などの複数のライセンスの取り消し処理は、使用許諾者が所有しており、被使用許諾者に対して認められた、特定の複数のライセンスの集合だけを対象とし、それらに限定することができる。複数の使用許諾者の複数のライセンスをスティックが保持している場合、特定の（低い）レベルのセキュリティ違反の複数の侵入イベントが、他の複数の使用許諾者に保持されており１人の使用許諾者の管理と責任の下にある複数のライセンスに影響しないように、１人の使用許諾者のポリシーの取り消しが、設定されることになる。侵入が、例えば制御モジュール自体によって制御されている一般的なセキュリティ防止を対象としておらず、全ての保護されているアプリケーションに対して重要ではない限り、他の保護されているアプリケーションは、保護装置と共に動作可能なままであると考えることができる。取り消し機構は、拡張可能とすることができ、１つのアプリケーション取り消しイベントとして分類したり、保護装置全体の取り消しに拡張したりできることが理解できる。
【００５５】
本発明のさらに他の態様は、複数のコンピュータプラットフォーム上での法的な追跡にも対応しており、これは、保護装置が持ち運び可能であって、様々な侵入の脅威と遭遇する複数のコンピュータ上で使用される可能性があるためである。さらに他のシナリオは、様々なオペレーティングシステムを基にしている様々なコンピュータが同じ保護されているアプリケーションに対して使用されることを示していることもある。そのため、遭遇する複数の環境の局面での法的な追跡には、前述の複数の局面において保護装置の内部での侵入の監査が必要になることがある。
【００５６】
複数の侵入イベントの情報の収集は、保護装置に埋め込まれている侵入防止ポリシーの実施を通して保護装置を無効にする前の特定の数のイベントに対して、より適切な場合がある。収集した監査データを保護装置の安全なストレージ箇所に保存する他の利点は、監査データを、使用許諾者のサービス、つまりインターネット内のリモート侵入防止サービスに安全な送信によって提供することである。ライセンスパラメータのバックアップ用の復元ファイルの一部として、送信された監査データを、様々な目的のために、ポリシーサーバ内での以降の評価に使用することができる。一態様においては、データを、例えば、無効にされている保護装置を、侵入防止サービスのポリシーに従って、積極的に再び有効にするために使用することができる。他の態様では、サービスとしては、複数の保護装置から監査されている複数の侵入イベントのコンテンツ内の法的なデータを分析することが有利なことがある。
【００５７】
さらなる態様では、開始時間と終了時間とを設定する複数の時間パラメータが存在して、複数の侵入イベントが、保護装置内で、定められた期間の間、監視されてもよい。少なくとも１つの侵入イベントを報告できる監査データの記録時に、保護装置は、イベントに関連付けるためのタイムスタンプを要求することができる。保護装置は、制御プログラムの支援の下で、法的なデータをリモート侵入防止サービスに送信することができる。
【００５８】
さらに、本発明を図示の典型的な実施形態に基づいてより詳細に以降で説明する。本発明のさらなる複数の特徴、形態、態様、および利点が説明と図面とから明らかになろう。説明と図面とにおいて示している複数の特徴は、本発明の好ましい複数の実施形態を作るために、個別にまたは組み合わせて使用することができる。
【図面の簡単な説明】
【００５９】
【図１ａ】埋め込まれている餌コードに基づいている侵入検出の模式図である。
【図１ｂ】埋め込まれている餌コードに基づいている侵入検出の模式図である。
【図２】埋め込まれているセキュリティセクションを備えている保護されているコンピュータソフトウェアの図である。
【図３ａ】コンピュータ装置のオペレーティングシステムに関して異なる、保護されているソフトウェアの構成の図である。
【図３ｂ】コンピュータ装置のオペレーティングシステムに関して異なる、保護されているソフトウェアの構成の図である。
【図３ｃ】コンピュータ装置のオペレーティングシステムに関して異なる、保護されているソフトウェアの構成の図である。
【発明を実施するための形態】
【００６０】
図１（ａ）の例に従うと、餌コードは、（制御プログラム内の）セキュリティセクションとして定められている領域を含む実行可能な様々なコードセクションに展開することができる。ＩＡＴ（ポインタ）アドレス指定スキームは、餌コードのセキュリティセクションにおける使用とオペレーティングシステムに対するＡＰＩ呼び出しの例を実現している。「ポインタ」コード（餌コードへのリンク）によって、プログラムのセキュリティセクションへのジャンプが発生する。餌コードのセキュリティセクション内の専用の位置での実行を監視して分析することによって、制御プログラムは保護装置への侵入の場合を信号で知らせることができる。
【００６１】
ここでは「０」として示しており、「Ｋｅｒｎｅｌ３２」、「Ｕｓｅｒ３２」などのＯＳの呼び出しのセパレータとして発生する未使用のＩＡＴエントリを、コードセクション内の「死んでいる」餌コードの実行のために指すように使用することができる。制御プログラムまたは監視プログラムは、それから、未使用のＩＡＴエントリロケーションから起動された餌コードの実行を、発生した侵入イベントの証拠として報告することができる。
【００６２】
図２は、保護されていないアプリケーションと保護されているアプリケーションとの間の違いを示すために、保護されているアプリケーション内でのプログラムフローの一般的なスキームを示している。
【００６３】
１．プログラムヘッダ内には、アプリケーションのオリジナルエントリポイント（ＯＥＰ）へのリンクが存在して、これはオペレーティングシステムが実行を開始するポイントである。プログラムを保護する場合、この値が、セキュリティセクション内へのポインタに修正される。
【００６４】
２．ＯＥＰから先へ、コードが実行される。
【００６５】
３．多くのポイントにおいて、オペレーティングシステム関数の「呼び出し」が存在することになる。
【００６６】
４．呼び出された関数へのポインタが、オペレーティングシステムによって所謂インポートアドレステーブル（ＩＡＴ）内に配置される。アプリケーションを保護する場合、これらのポインタの多くが、セキュリティセクションへ、リダイレクトされる。
【００６７】
５．セキュリティセクションにおいては、意図した関数が実行されるのに先立ってヘッダが実行される。このヘッダは、何らかの対デバッガチェックを実施することができる。
【００６８】
６．ヘッダの後で、本来の関数（ＡＰＩ）が起動される。
【００６９】
７．関数の後に、セキュリティセクション内でトレーラが実行され、割り当てられたプログラムスタックをクリーンアップし、場合によっては、さらなる対デバッガチェックを行う。トレーラは、プログラムの実行を、保護されているアプリケーションに直接戻す。
【００７０】
８．保護されていないアプリケーションでは、ＩＡＴは、オペレーティングシステム内を直接指す。各リダイレクトは、全体のパフォーマンスに対して重大な影響があるため、保護されているアプリケーションでは、セキュリティセクションにリダイレクトされないいくつかのポインタがＩＡＴ内に存在することがある。
【００７１】
ラップされたＡＰＩのヘッダのみを実行することによって、さらなるプログラムの実行の過程で、侵入イベントが制御プログラムによって検出される。
【００７２】
本発明のさらなる好ましい実施形態によれば、侵入検出は、複数のハッシュ値を発生させ、それらの値を、侵入検出のための予測されている複数の値と比較することによって実行される。
【００７３】
制御プログラムによって作られ、保護装置に送信される複数のメッセージは、メッセージデータの完全性のために、ＣＲＣ（巡回冗長検査）や他のハッシュアルゴリズムを使用することができる。また、メッセージは、制御プログラムを保護装置によって認証するために、公開／秘密鍵アルゴリズムによって署名されていてもよい。監視プログラムは、制御プログラムと通信するプロセスを自己に含むものとして実装されている場合、制御プログラムとの通信が発生している間、データの完全性とメッセージの正当性とを保証するために、同じ方法を使用することができる。その目的のために、監視プログラムは、セキュリティアルゴリズムを実行するために、セキュリティエンジンへの直接リンクを有していてもよい。
【００７４】
好ましい実施形態においては、セキュリティエンジンは、セキュリティ関連関数呼び出しの実行のためのより高いレベルの耐不正改変を与えるために、ＴＰＭ（トラステッドプラットフォームモジュール）によって制御されている密封されているメモリ領域内の複数のプラットフォーム内で実行されると仮定している。密封されているメモリは、制限されたプログラム実行のために確保されている専用ＲＡＭ領域であり、そのプログラム実行は、その定められた領域で実行される１つのプログラムに対して認められている排他的な権限を伴っている。保護されているプラットフォームに対して埋め込まれているＴＰＭは、密封されているメモリをプログラムに割り当てる標準化されている複数の方法を実現する。
【００７５】
前述の方法で説明しているように、保護装置は、侵入プログラムコードからの攻撃の状態を合図しているメッセージを制御プログラムから受信してもよく、保護装置は、受信時にメッセージを認証して、データの完全性を確認する。さらなるステップにおいて、保護装置は、保護装置内に埋め込まれている侵入実施ポリシーに従って、制御プログラムとの通信を遮断してもよい。
【００７６】
図３ａ、ｂ、ｃに示している模式図においては、好ましい実施形態のいくつかと、侵入防止装置の主な装置構成要素の構成とを、それらのそれぞれの機能によって示すことになる。
アーキテクチャの概要の説明
図３ａは、制御プログラム、保護装置、保護されているアプリケーション、セキュリティエンジン、および監視プログラムを有している侵入検出装置の複数の基本装置機能を示している。
【００７７】
コンピュータ装置のプラットフォームは、電気インターフェイス（つまりＵＳＢインターフェイス）を通して保護装置と通信する。制御プログラムは、制御メッセージによって、コンピュータ装置のオペレーティングシステム（ＯＳ）を通して保護装置と通信する。侵入のメッセージが保護装置によって受信されると、メッセージは、保護装置無効化制御機能内で評価されことになり、侵入が検出されたという一致状態を示している基準に遭遇すると、保護装置は、復号化された、または、アクセス可能なデータの制御プログラムへの提供などの、さらなる通信を、できなくする。
【００７８】
制御プログラム内に埋め込まれている監視プログラムは、保護されているコンピュータソフトウェアの制御外で実行されている外部アプリケーションプログラム用の複数の監視機能を実行していてもよい。監視プログラムは、第１のタスクとして、プログラムの実行の追跡と記録とによる、保護されているアプリケーション用の複数の監視機能を実行するが、侵入防止の見地から他の複数のプログラムのプログラム監視が必要な場合、これらには限定されない。それから、収集されたデータは、監視プログラムに転送され、制御プログラムを介して保護装置に通信される。
【００７９】
保護されているアプリケーションは、保護下にあるアプリケーションのセキュリティセクションと同等のセキュリティエンジンＳＥの複数のＡＰＩを使用する。関数呼び出しは、フィルタを通過し、さらにアプリケーションが必要とする関連しているカーネル関数を有しているＯＳまで進む。他の全ての呼び出しは、保護されているアプリケーションに対するプログラムシールドとしての役割を有している保護層のラップアラウンド解除などのセキュリティエンジン内の特定の複数の関数に関連している。
【００８０】
図３ｂは、セキュリティエンジン環境に埋め込まれている制御プログラムと監視プログラムとを示している。
【００８１】
さらなる実施形態として、制御プログラムと監視プログラムは、セキュリティエンジン環境に埋め込まれることになる。制御プログラムは、ただ１つのプロセスルーム内で実行されている内部の監視プログラムとセキュリティセクションと通信する。本発明の一態様においては、これは保護されているアプリケーションの可搬性と、前述のようにＴＰＭを使用した信頼されている計算環境内でのプログラムの高いレベルの完全性の達成に対して有利である。また、保護されているアプリケーションに対するＡＰＩを、アプリケーションを監視する機能とセキュリティ関数呼び出しとをサポートすると同時に、簡略化することができる
本明細書で説明していない他のシナリオでは、監視プログラムと制御プログラムとは、オペレーティングシステム（ＯＳ）のカーネル関数となり、セキュリティエンジンによって起動することができる。ＯＳが異なれば、サポートされているプラットフォーム内へのシステム関数の好ましい埋め込みの要求も異なることがある。
【００８２】
図３ｃは、複数の機能ブロックと、含まれているリモート侵入防止サービスと、の間の複数の論理リンクを示している。
【００８３】
複数の機能ユニットとリモートサービス機能との間の複数の論理リンクを示している図において、例えば、インターネット通信によって保護装置との接続を設けることを示している。この機能は、保護装置の複数のライセンスコンテナの１つに保存されるライセンスを提供し、保護されているアプリケーションに対する使用の権利を認める、使用許諾者の確立されているサービスの補完的なサービス機能とすることができる。ソフトウェアとコンテンツとのライセンス管理を完全に制御しながら、使用許諾者は、配備されているライセンス装置（本明細書に参照によって援用されるＥＰ１１８４７７Ｂ１号に記載されているＯＤＲＭ装置など）であるか、侵入のための攻撃を受けない状態に維持されている特定の保護されているアプリケーションであるかに関わらず、保護されている装置に対して発生した攻撃を監視し制御したいと考えることがある。
【００８４】
本発明によれば、ホストコンピュータ装置とマスター−スレーブ機能で動作している保護装置は、追加の機能として、移動状況で発生する可能性のある、複数のプラットフォームにわたる集合的なデータとして収集された複数の侵入イベントを自動的に保存し分析することができる。侵入防止実施モジュールは、さらに、脅威のレベルを調べる能力によって、制御プログラムとのさらなる通信を無効にすることが可能で、データのさらなる使用を無効にしたり、セキュリティの侵害を暴露したりできる。記録されているデバッグプロセスの複数の動作パターン（例えば攻撃の方法と頻度とを有する）を、実施モジュールによって分析して、保護装置を無効にするきっかけにすることができる。
【００８５】
例として、さらに、保護装置は、ＴＰＭの存在を認識し、したがって、侵入コードがはるかに実行されやすいオープンな保護されていない装置に比べてより高い基本レベルで、セキュリティを確立し実施することができるので、異なる脅威モデルに、性能がより低くいものを適用することができる。保護装置にダウンロードされた保護ポリシーデータは、侵入防止サービスによって指示されている実施ためのポリシーに従った分析を行うために、侵入防止実施モジュールを管理することができる。法的なデータの分析によってもたらされる侵入イベントの特性を確認にすることによって、証拠によって侵入の種類を特定し、脅威のレベルを分類することができる。したがって、保護装置は、リモート装置による支援とは独立に、１つのアプリケーションを（埋め込まれている実施防止モジュールの侵入防止ポリシーに従って）シャットダウンすることができる。
【００８６】
この機能は、前述のように、中央取り消しサービスによる外部の介入なしに、専用のアプリケーションを終了させる、部分的な保護装置無効化と考えることができる。保護装置は、侵入防止装置の一部として、コンテンツ保護のための公知の複数のＤＲＭ装置で使用されている方法を変更し、それを、該当する複数の鍵の無効化による保護装置やコンテンツの無効化によってシステムの完全性を維持するための中央サービスの要件とすることができる。しかし、複数の保護装置の多くが市販されている場合、法的なデータを中央サービスに集めて、１つまたは２つ以上の保護装置を無効にするにあたって、顧客データと脅威の分析とに基づいて中央ポリシーを決定することが適切なことがある。各保護装置の認証された再起動と無効化には、複数の適切なメッセージが生成され、リモート侵入防止サービスから送信されることになる。
【００８７】
一式のポリシー規則に従って複数の侵入イベントに柔軟な応答が可能な装置。ポリシー規則は、リモート侵入防止サービス（インターネットベース）（図３ｃ参照）によって提供され、ライセンスと時間更新のための定期的接触時に更新可能である。複数のポリシー規則の一部は、ライセンスコンテナの一般的なランタイム装置（監視プログラム、制御プログラム、カーネルドライバ）の一部とすることができる。このランタイム装置の更新によって、ポリシーも更新できる。更新は、新しく発見された脅威のシナリオに対応する。
【００８８】
複数のポリシー規則に従って、（現状のまたは特許請求の範囲で指定されているような）使用可能な侵入検出方法が使用され分類される。ポリシーに従って、攻撃の程度が決定され、対応が決定される。対応は、様々な期間のロックとすることができる：
無し（ロックしない、攻撃を無視）
一時的（例えば５分、自動化されている攻撃を減速させる）
永久
また、装置の様々な部分に影響を与えることができる：
ライセンス
ライセンスコンテナ
保護装置
装置部分への影響は、最終的には保護されているソフトウェアの（実行の）ロックにつながる。法的なデータのローカルな記録と、その後の送信も、ポリシーによって構成されている。
【００８９】
本発明の範囲において、「保護されているソフトウェア」という語は、ライセンスコンテナ（保護装置の一部とすることができる）に保存されているライセンス、または、そのようなアプリケーションソフトウェアのライセンスの条件に従った使用、を提供する、ライセンスコンテナまたは保護装置によって保護されている、保護されているアプリケーションまたはコンピュータソフトウェアアプリケーションプログラムと同義語である。これは、正常に使用許諾されている保護されているソフトウェアの正当な使用とも呼ばれる。保護されているソフトウェアは、保護されていない環境下でのプログラム実行を防止し、侵入プログラムまたはプログラム実行時のデバッガなどの侵入性ソフトウェアによる侵入を防止するために、少なくとも重要な複数の部分が暗号化されている保護されているプログラムコードでもある。
【００９０】
本発明の範囲のおける保護されているソフトウェアは、セキュリティエンジンおよび／または制御プログラムおよび／または監視プログラムを有していてもよい。
【００９１】
セキュリティエンジンは、装置に関わる侵入防止の他の関連するコンポーネントと通信するために、独立した複数のコンポーネントとしてホスト側で動作する暗号化機能を提供するソフトウェアコンポーネントである。これらの他の関連するコンポーネントには、少なくともライセンスコンテナがある。
【００９２】
一方で、セキュリティエンジンは、保護されているアプリケーションを実行できるようにするために、ライセンス条件、鍵、または他の複数のライセンスパラメータにアクセスするために、保護装置またはライセンスコンテナと、コンピュータ装置の所与のハードウェアプラットフォームのＯＳ／カーネルを通して通信する。例えば、これは、アプリケーションプログラムの保護されている複数の部分を復号することによって、または、プログラムの実行のために所謂プログラム保護シールドからカプセル化されているアプリケーションをラップ解除することによって実現することができる。さらなる通信リンクにおいて、セキュリティエンジンは、制御プログラムを通して監視プログラムに提供されている複数のパラメータを交換するために、制御プログラムと通信することができる。他の実施形態では、セキュリティエンジンは、監視プログラム、制御プログラム、およびセキュリティセクションも有することができる。
【００９３】
制御プログラム自体は、ライセンスコンテナまたは保護装置のアクセスを制御するプログラムモジュールである。制御プログラム機能は、汎用保護制御プログラムの一部とすることができる。汎用保護制御プログラムは、ライセンスコンテナと制御ソフトウェアとの間の通信リンクを確立することができる。汎用保護制御プログラムは、侵入防止用の監視機能も提供することができる。
【００９４】
保護機構という語は、保護されているアプリケーションプログラムまたは保護されているソフトウェアを保護しようとする、侵入プログラムを検出する特定の方法または複数の方法の組み合わせである。保護機構は、侵入イベントを監視プログラム、セキュリティエンジン、またはライセンスコンテナあるいは保護装置にそれぞれ信号で知らせる。
【００９５】
本発明に範囲において、監視プログラムは、侵入プログラムによって引き起こされる脅威（例えば攻撃）の監視と登録のために監視機能を提供する。複数の監視機能は、監視モジュールなどの他のプログラムに埋め込むことができる。監視プログラムは、侵入イベントの記述のために所謂侵入検出基準などの対象の特徴を生成できる侵入検出機構を使用する。言い換えると、監視プログラムは、他の複数のプログラムイベントやコンピュータイベントを監視する複数の監視コンポーネントを使用する。
【００９６】
さらに、言い換えると、侵入防止装置は、保護ハードウェア装置やライセンスコンテナなどの保護コンポーネントと、制御プログラム、監視プログラムおよび／またはセキュリティエンジンなどの一連の複数のソフトウェアコンポーネント、および、互いにまた保護装置またはライセンスコンテナと通信するバックエンド装置およびソフトウェア装置とからなる装置である。これらは、アプリケーションプログラムを、侵入プログラムの侵入から、通常保護している。バックエンド装置は、１つの保護装置またはライセンスコンテナの動作に影響する、または動作を制御するリモート侵入防止サービスを提供するリモートポリシーサーバも有することができる。この場合、動作という語には、実行、アクセス、ロック、つまりライセンスコンテナまたは保護装置へのアクセスの制限、および／または、そこに保存されている情報の消去が含まれる。
【００９７】
本発明のさらなる態様は、複数のシステムコンポーネントを使用し、コンピュータ装置に取り付けられるように構成され、配置されている保護装置によって、コンピュータ装置上の保護されているコンピュータソフトウェア用の侵入検出を提供する装置に関する。コンピュータ装置は、少なくとも監視プログラムと、制御プログラムと、保護ソフトウェアとを有している。
【００９８】
監視プログラムは、コンピュータ装置上でのプログラムの実行のために、保護されているソフトウェア（保護されているアプリケーションプログラム）からの監査情報を収容している複数のメッセージを介して制御プログラムと通信する。制御プログラムは、コンピュータ装置に取り付けられている保護装置と通信するための機能を有しており、保護装置は、侵入防止仕様を、インターネット内のリモート侵入防止サービスプロバイダサーバから受信する。侵入防止仕様は、監視プログラムによる監視プロセス中に生成された考え得る対象属性の集合から、記録される少なくとも１つの対象属性を指定する。
【００９９】
侵入防止仕様は、監視プロセス中に少なくとも１つの対象属性の記録のきっかけとなる少なくとも１つの監視基準も指定する。監視プログラムは、少なくとも１つの監視基準の検出に応答して少なくとも１つの対象属性を記録するように構成されており、監視プログラムは、少なくとも１つの監視基準の検出に応答して少なくとも１つの対象属性を記録することによって、侵入ログを作るために実行される（実行されている）。さらに、侵入ログは、保護されているコンピュータソフトウェアまたは保護装置のロックなどの侵入検出目的のために複数のパターンを検出するために調べられる。
【図１ａ】
2009541825.tif 000003
【図１ｂ】
2009541825.tif 000004
【図２】
2009541825.tif 000005
【図３ａ】
2009541825.tif 000006
【図３ｂ】
2009541825.tif 000007
【図３ｃ】
2009541825.tif 000008
【国際調査報告】
2009541825.tif 000009
2009541825.tif 000010
2009541825.tif 000011
2009541825.tif 000012
2009541825.tif 000013