説明

ソフトウェアの改ざんを事前に対処することによって検出するためのシステムおよび方法

【課題】 クライアントが起点となるウェブ・サーバからセミトラステッド・ウェブ・サーバを介して制限付き情報にアクセスできるようにするための方法および装置を提供すること。
【解決手段】 ソフトウェアの侵入は、動的に展開する監査ログを使用して事前に対処することによって検出され、ここでログ・エントリは監査ログ内で生成され、鍵値は以前のログ・エントリおよび以前の鍵の両方に依存する一方向関数に基づいて展開される。生成されたログ・エントリおよび最終鍵値を備えた監査ログは、これらの値を分析することによってソフトウェアの侵入を検出するクリアリングハウスに伝送される。伝送されるログのサイズを縮小する努力により、ログ・エントリには同一の値が割り当てられ、これによって1つのログ・エントリおよび最終鍵値をクリアリングハウスに伝送するだけでよい。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にソフトウェア・セキュリティの分野に関する。より具体的に言えば、本発明はソフトウェア改ざんの検出に関する。
【背景技術】
【0002】
映画および音楽のデジタル技術の出現により、未許可コピーの問題が深刻になってきた。デジタル・コピーは完全なコピーであり、それらがインターネットを介して広く再配布されるのを防ぐために、多数のコンテンツ保護技術DTCP(Digital Transmission Content Protection)およびCPRM(Content Protection for Recordable Media)が開発されてきた。これらの技術はそのライセンスに「頑強性条件」を有し、こうしたライセンスの条件は改ざん防止インプリメンテーションを規定している。改ざん防止技術、特にソフトウェア改ざん防止技術の開発は、成長産業となってきた。
【0003】
ほとんどの侵入検出機構は損傷が生じた後に使用されるものであるため、事後対応型(reactive)である。「事前対処型(proactive)セキュリティ」という用語は、最終的な損傷が生じる前のソフトウェアの実行など、処理中に不具合を検出することを示すものである。従来技術システムは、ソフトウェアのリバース・エンジニアリングに対抗するための事前対処型セキュリティ機構を提供していない。これらの従来技術システムは、リバース・エンジニアリングの試行中にハッカーが残した痕跡を識別することができない。
【0004】
一般に、従来技術の侵入検出システムは事後対応型であり、既存の知識を使用して異常を監視する。こうした異常の一方向の監視は、「監査ログ」を維持することによるものである。監査ログ使用の一般的な概念は、長い間存在してきた。しかしながら「監査ログ」方式は、特定の「検出」目的に適用された場合により適切かつより実用的に働く。このシナリオでは、検出の目的でログに入力する必要のある情報を識別すること、およびその後に実行しなければならない検証プロセスが必要である。ログ内の情報がある種の特性を満たすようにすることは、時には、この方式を(ログ・サイズを小さくする、およびより効率的な検証を作り出すという点から見て)より効率的にするだけでなく、検証プロセスを保証することおよびターゲットの異常を検出することもできる。
【0005】
他の関連する概念は、セキュリティに関する文献で確認および記載されてきた正式な特性である、「順方向セキュリティ(forward security)」である。順方向セキュリティには、改ざんが発生した後の過去のコードまたはログの破損を防止する方法が含まれる。将来のアクションは信頼できない可能性があるが、予め存在した信頼できる項目は損なわれずに残る。
【特許文献1】米国特許第6006328号
【特許文献2】米国特許第5673316号
【特許文献3】欧州特許第EP1076279−A1号
【特許文献4】米国特許第4757533号
【特許文献5】外国特許第WO200077597 A1号
【特許文献6】外国特許第WO299114953 A1号
【特許文献7】外国特許第WO200077596 B1号
【特許文献8】外国特許第WO9904530 A1号
【非特許文献1】Bellare等執筆の「Forward Integrity For Secure Audit Logs」
【非特許文献2】Song執筆の「Practical Forward Secure Group Signature Schemes」
【発明の開示】
【発明が解決しようとする課題】
【0006】
ハッカーが改ざんに成功する前、および彼らが秘密鍵などの重要な情報へのアクセス権を取得する前に、事前に対処することにより進行中のリバース・エンジニアリング・プロセスを検出すること(およびそれにより、まだハッキングが初期段階のうちに止めることによって実際の損傷が発生するのを防ぐこと)が求められている。
【課題を解決するための手段】
【0007】
したがって本発明の一態様は、クライアントが起点となるウェブ・サーバからセミトラステッド(semi-trusted)・ウェブ・サーバを介して制限付き情報にアクセスできるようにするための方法を提供することである。
【0008】
本発明の他の態様は、クライアントが起点となるウェブ・サーバからセミトラステッド・ウェブ・サーバを介して制限付き情報にアクセスできるようにするための装置を提供することである。
【0009】
本発明の他の態様は、認証用のクッキーを使用するセキュリティ・リスクを削減することである。
【0010】
本発明の他の態様は、セミトラステッド・ウェブ・サーバに格納されたデータを保護することである。
【0011】
本発明の一例では、クライアントは本明細書で開示された方法を使用して、セミトラステッド・ウェブ・サーバの制限付き情報へのアクセス権を取得することになる。
【0012】
以下の参照文献では、事後対応型侵入検出機構について全般的に記載している。
【0013】
Drakeに与えられた米国特許(第6006328号)は、コンピュータ・ソフトウェアの認証、保護、およびセキュリティに関する方法を開示している。この方法には、ぜい弱なコード(たとえば盗聴に対してぜい弱)をハードウェアと直接通信する(ぜい弱性が除去された)等価のコードに置き換えることが含まれ、これによってシステムの割り込みまたは非認識ソフトウェアの盗聴を許可する他の機能が使用禁止になる。改ざん検出技法は、ソフトウェア内で使用されるかまたはソフトウェアによってアクセスされ、改ざんが検出された場合は、以後IDデータがルーチンに入力されないようにするものである。この開示された発明では、RAMまたは他のイメージのコード・チェックサムの実行、メモリと実行可能コードの他の格納済みコピーとの比較および入力プロセスの復号、またはそのいずれか一方、実行可能環境の検査、実行可能サイズと予測値との比較、第三者またはプロセスへの認証失敗の詳細についての通知および伝送またはそのいずれか一方、ならびに、(入力ルーチンまたはセキュアな入力プロセスの)ユーザの使用および詳細またはそのいずれか一方に関するログの記録を提供している。
【0014】
Auerbach等に与えられた米国特許(第5673316号)は、暗号化エンベロープの作成および配布を提供するものである。各部分が部分暗号化鍵および公開鍵によって暗号化される、情報部分の集約を伴うエンベロープ(envelope)が開示されている。その後このリストは、署名を生成するために秘密鍵によって署名され、同じくエンベロープに含められる。
【0015】
Pearsonに与えられた欧州特許(第EP1076279−A1号)は、署名済みバージョンおよび公開鍵証明書を参照しながら保全性がチェックされる、ライセンス関連コードを備えたコンピュータ・プラットフォームを開示している。コンピュータ・プラットフォームまたは信頼モジュールは、ユーザの予測どおりに動作する信頼環境でライセンシング・チェックが実行可能な、改ざん防止構成要素を形成する。関連するクリアリングハウス(clearinghouse)機構は、データに関する登録および支払いを実行可能にする。このシステムは、ローカル・ユーザまたはリモート・エンティティのいずれかによるプラットフォームの保全性の検証も実行可能にする。
【0016】
Allen等に与えられた米国特許(第4757533号)は、ハードウェアとソフトウェアとを組み合わせてユーザおよびファイル・アクセスの改ざん防止保護提供する、パーソナル・マイクロコンピュータ用のセキュリティ・システムを開示している。開示されたチップのうちの1つは監査証跡ログ、保護および暗号化システム・フラグ、ならびにユーザアクセス権を提供し、このチップは正当なユーザのみがアクセス権を得られることを保証する。
【0017】
外国特許第WO200077597 A1号、第WO299114953 A1号、および第WO200077596 B1号は、全体として、変換されたコードの監視可能オペレーションをオリジナルのソフトウェア・コードの意図から切り離すための、コンピュータ・ソフトウェア・コード内のデータ流れの変換を含む、改ざん抵抗方法を開示している。この方法は、コンピュータ・ソフトウェアを改ざんおよびリバース・エンジニアリングに対して強くするためのものである。
【0018】
Stanton等に与えられた外国特許(第WO9904530 A1号)は、改ざんを防止するためにデータ暗号化鍵として使用するためのセッション鍵によるファイル暗号化方法を開示している。この方法は、法的機関によるファイルへの緊急アクセスを事項可能にする、共用秘密鍵または公開秘密鍵暗号化システムに基づく強力な暗号化アルゴリズムを使用している。
【0019】
Bellare等執筆の「Forward Integrity For Secure Audit Logs(セキュアな監査ログのための順方向保全性)」と題する非特許文献では、監査ログのセキュリティを維持するための方法を提供している。開示された適用分野には、侵入検出または責任能力に関する監査ログ(たとえばsyslogdデータ)の保護、通信セキュリティ、およびモバイル・エージェントに関する計算の部分結果の認証が含まれる。
【0020】
Song執筆の「Practical Forward Secure Group Signature Schemes(実用的な順方向保護グループ署名方式)」と題する非特許文献は、鍵の暴露によって生じる損害を軽減するための順方向セキュリティ方式を提供している。
【0021】
上記参照文献の精密な長所、特徴、および利点がどのようなものであっても、決して本発明の目的を達成または満たすものではない。
【0022】
事前に対処することによりソフトウェアの改ざんを検出するための方式が開示され、この検出は、動的に展開する監査ログおよび鍵値に基づく事前対処型である。鍵値は、以前のログ・エントリおよび以前の鍵の両方に依存する一方向関数に基づいて展開される。監査ログ(生成済みログ・エントリを備える)および最終鍵値はどちらもクリアリングハウスに伝送され、これらの値を分析することによってソフトウェアの侵入を検出する。特定の実施形態では、ログ・エントリ値が同一であるため、伝送されるログのサイズが縮小される。このようにして本発明は、「保全性チェック」をログに記録することにより、保全性チェックを使用してソフトウェア実行中に進行中のハッキング・プロセスを検出する。開示された方法は、「保全性チェック」と「順方向セキュリティ」を1つの作業方式に組み合せ、この方式を適用して、ハッキング・プロセスが検出されずにいることができないような方法でハッカーによるソフトウェアの改ざんを事前に対処することによって検出する。
【0023】
拡張された実施形態では、さらに本発明の方式は検出された改ざんに応答するステップを有し、この応答は、ソフトウェア・コード・ユーザの切り離し、ソフトウェア・コード・ユーザのデバイス鍵の呼び出し、ソフトウェア・コード・ユーザからの追加コンテンツ要求の拒否、ユーザに送信されるソフトウェア・コードまたはコンテンツにおける保全性チェックの回数およびタイプの増加、前記監査ログおよび最終鍵の定期的伝送の頻度の増加、ならびに前記検出された改ざんに関するシステム管理者へのアドバイスのうちのいずれか、またはこれらの組合せを有する。
【0024】
他の拡張された実施形態では、ログ・エントリ異常が所定のしきい値を超えているかどうかを判別することによって、改ざんが(クリアリングハウスで)検出される。所定のしきい値を超えた場合、クリアリングハウスは上記応答のうちのいずれかを使用することができる。
【発明を実施するための最良の形態】
【0025】
本発明について好ましい実施形態で例示および説明するが、本発明は多くの異なる構成、形式、および材料で生成することができる。本発明の好ましい実施形態は、本開示が本発明の原理および関連するその構造に関する機能上の仕様を例示するものとしてみなされるべきであり、本発明が例示された実施形態に限定されることを意図するものでないことを理解した上で、図面に記載され、本明細書で詳細に説明される。当業者であれば、本発明の範囲内で多くの他の可能な変形形態を想起されるであろう。
【0026】
本明細書全体を通じて使用される「ユーザ」という用語は、ソフトウェア・コード(ウェブ・ブラウザ・プログラム、サウンド・カード・ドライバ、ゲーム・コンソール・プログラム、Java(登録商標)アプレット、あるいは、イメージ、音楽、またはビデオ・ファイルなどのマルチメディア・コンテンツに埋め込まれたマクロに関する、ソフトウェア・コードなど)およびログを使用して改ざんを試みる可能性のある、信頼できないコンピュータ(たとえばセットトップ・ボックス、PC、PDA、ビデオ・ゲーム・コンソールなど)のオペレータを指すものである。さらに「ログ」という用語は、ソフトウェア・コードの実行に関して発生する内容を記述するエントリの集合を使用する、監査証跡を指すものである。一実施では、エントリは、ソフトウェア・コード(たとえば、コードのブロックに関するチェックサム)に埋め込まれこれによって実行される、保全性チェックの結果を記述する。
【0027】
本発明は、異常を検出するために監査証跡を利用するシステムおよび方法を提供する。ソフトウェアがクライアント側(たとえば敵対的なユーザのマシン)で実行されているというシナリオが想起されることに留意されたい。この場合、脅威は信頼できないユーザ自身から生じる。単にハッカーがコードを使用したアクセスおよび改ざんが可能なだけでなく、監査証跡を使用した改ざんも可能であるという理由から、この種の脅威には特別な注意が払われる。したがってこのシナリオでは、ハッカーが証跡内の任意の古いエントリを気付かれないように削除する可能性がないように、証跡それ自体を保護する必要がある。しばらく後にはハッカーがログイン機構を完全に理解する可能性があり、それ以降の証跡内の新しいエントリは信用できなくなる。しかしながら本発明に基づき、ハッカーはログ内のエントリをさかのぼって修正することはできない。
【0028】
本明細書に記載の本発明は、事前に対処することによってソフトウェア改ざんプロセスを検出するために、「順方向セキュリティ」特性をソフトウェア実行中に保全性チェックに適用する方式である。ユーザが新しいコンテンツを取得するために接続した場合、ログの切捨て、ログの削除、または古い有効ログの置換があれば容易に検出される。ハッカーが特定のソフトウェア・プログラムを完全に理解するまでには多くの「保全性チェック」障害を引き起こし、これがログに記録されることが想定される。したがって本発明に基づき、ハッカーが検出されることなくソフトウェアをリバース・エンジニアリングすることは不可能である。
【0029】
順方向セキュリティは、ログに入ってくる情報を動的に展開することによって達成される。たとえば、実行開始時には乱数が鍵として選択され、その後この鍵を使用してエントリがログに記録される。この鍵は一方向関数を使用して新しい鍵として展開され、その後古い鍵は消去(上書き)される。この次には、新しい鍵を使用してログ内の情報が記録される。この鍵は、情報の生成、記録する情報の決定、記録の暗号化、または任意の他の用途に使用することができる。したがってログに入力されるエントリは、一方向関数を使用して展開される鍵の関数である。たとえばハッカーは、時間tで自分の動作がログに記録されていることを発見するが、ログを正しく見せようとしてすでにログに記録された情報を偽造するために、前に戻って以前の鍵(時間t以前)を見つけ出すことはできない。
【0030】
ログは、定期的にクリアリングハウスに接続されて返送されることになる(クリアリングハウスとは、定期的にログを受信し、ログ・コンテンツを正しいログ・コンテンツと比較することによってログをチェックして改ざんが発生したかどうかを判別するエンティティのことである)。同時に、ソフトウェアがコードの実行に伴って発生した内容を記録する一方で、同じ初期乱数(鍵)はクリアリングハウス内で同期化された方法で展開する。クリアリングハウスは、ログに入力されたはずの正確な情報を知っている。その後クリアリングハウス内で発生する検証/検出プロセスは、戻りログと、クリアリングハウスが接続から接続へと展開を続ける同じ展開鍵を使用して計算した正しい情報との間の、単純な比較とすることができる。信頼できないユーザが古い有効なログを置換すると、鍵は正しくなくなる。ユーザが切り捨てられたログを提出すると、次の時にそのログが伝送され、鍵は正しくなくなる。ログ内で最初に異常が検出されると、クリアリングハウスは管理者に警告を発することができる。管理者は次の時に同じユーザに対してより多くの注意を払うか、またはユーザに警告を与えるよう選択することができる。「十分な」(たとえばしきい値を超える)改ざんの証拠が蓄積された場合、ユーザをネットワークから切り離し、今後新しいコンテンツの配布を受信できないようにすることができる。
【0031】
方式に関連する基本ステップは、以下のとおりである。
【0032】
(1)保全性チェックを実行する場所、および必要な保全性チェックのタイプを決定する。すべてのタイプの保全性チェックがこの範囲内にある。たとえば、あるコード・ブロックに関するチェックサムのテストが、保全性チェックの1つである場合がある。
【0033】
(2)C2_G、MD5、またはRSAなどの一方向関数を決定する。C2_G(Cryptomeria一方向関数)は、CPRMと呼ばれるよく知られたコンテンツ保護方式で使用される一方向関数である。MD5(Message Digest #5)は、デジタル署名オペレーションで暗号化ハッシュとして一般に使用される一方向関数である。RSAは、クラス公開鍵暗号化アルゴリズムである。RSA暗号化アルゴリズムは、関連する秘密鍵を含まないあらゆる者に対して一方向関数として働く。
【0034】
(3)ステップ(1)で決定された時点でログ・エントリが生成され、それが実行されるときに一方向関数を使用して鍵が展開されるように、保全性チェック情報をコードに埋め込んで保護する。
【0035】
(4)ログをクリアリングハウスに返送し、クリアリングハウスがログを検証して、改ざんプロセスを検出するかまたは改ざんが発生していないかどうかを判別する。
【0036】
図1は、鍵の進行がログ・エントリ値と無関係である、一般的な方法を示す図である。ログのサイズには制限がない。一方向関数f1を使用して、鍵f1(k_i)−>k_i+1を保全性チェック値v_iとは無関係に展開する。別のf2関数は、保全性チェック値v_iで鍵を使用してログ・エントリを生成する。関数f2は、たとえば値v_iを使用した鍵k_iの暗号化の場合があるが、他のf2関数に置き換えることもできる。鍵は一方向関数を使用して展開されるため、ハッカーが改ざんに成功して現在の鍵k_iを取得した時点tで、ハッカーは依然として前の鍵k_0...k_(i−1)を知ることはできない。したがってハッカーは、前に戻ってすでに記録されているログ・エントリを偽造することはできない。ログ・エントリがクリアリングハウスに返送されると、クリアリングハウスはf2の計算を繰り返し、ログ・エントリが正しく暗号化されていること、および保全性チェック値が改ざんの発生を示していないこと、という両方の意味でログ・エントリが正しいかどうかを検証することができる。何らかの保全性チェック値v_iでハッキング・プロセスが失敗するため、ログ・エントリは誤りとなり、クリアリングハウスによって検出することができる。
【0037】
本発明の基本的な(前述のような)方法では、ステップ(3)〜(4)に関連付けられた2つの異なる実施形態がある。この2つの実施形態それぞれについて、以下で簡単に説明する。
【0038】
実施形態A:図2は、鍵の進行がログ・エントリ値を使用する、本発明の方法を示す図である。この方式では、一方向関数は現在の鍵k_iおよび現在の保全性チェック値v_iの両方を使用して、新しい鍵k_(i+1)を生成する。ログには、現在の保全性チェック値v_iのみが入力される。ログ・エントリは、取得された最終の鍵k_nと共にクリアリングハウスに返送される。ソフトウェアがハッキングされ、ハッカーが何らかの保全性チェック値v_iを使用して改ざんした場合、この鍵の展開は誤りとなる。したがって、クリアリングハウスはk_0およびログ・エントリ値v_0...v_nを使用して鍵を展開し、改ざんプロセスを検出することができる。第1に、観察されたログ・エントリv_iを使用して、戻されたk_nが実際に取得可能であるかどうかを検証する。これは、ハッカーがログ内でいずれかのv_i値を使用して改ざんを行っていないかどうかを判別するものである。その後クリアリングハウスは、実際のv_i値をチェックして、ソフトウェアの実行中に何らかの改ざんの証拠がないかどうかを調べる。
【0039】
その後ハッカーは、格納されているはずの正しい保全性チェック値v_iを習得することができるが、残念ながらこれはハッカーにとって何の役にも立たない。第1に、関数fはkおよびvの両方に関するものである。ハッカーは保全性チェックに失敗し、誤った保全性チェック値vを獲得することで、最初に失敗を犯す。最終的にハッカーがハッキングに成功し、自分のハッキング・プロセス中に正しい保全性チェック値vを見つけ出した場合でも、ハッカーは現在の鍵k_nしか知らず、以前の鍵k_0...k_(n−1)を知ることはできないため、依然として正しいk_n値が何であるかを知ることはできない。したがって、クリアリングハウスは常にハッキング・プロセスを検出することができる。第2に、ハッカーがすべての正しい保全性チェック値v_iをログ内に復元しようとした場合、値k_nが観察されたv_iと一致しないため、クリアリングハウスにはハッカーがログを偽造しようとしていることがわかる。
【0040】
したがって実施形態Aは、実際のログをクリアな形(現在の保全性チェック値v_iのみが入力されている)にすることができる。この態様は、ある種の適用分野で有利に活用することができる。
【0041】
実施形態B:図3は、本発明の単一鍵の実施形態を示す図である。以前の実施形態では、ログ全体をクリアリングハウスに返送する必要がある。長い間には、ログ自体が非常に大きくなる可能性がある。この実施形態Bは図1の一般的な方法の変形形態であり、ログのサイズを縮小することが目的である。保全性チェック時にチェックが成功している場合は、必ず保全性チェック値を固定デフォルト値vで構成することが可能である。言い換えれば、保全性チェックが失敗した場合に限ってチェック値はv以外の値となる。この場合、正しいログは単なる値vのNシーケンスであるため、格納してクリアリングハウスに返送する必要のある値は最終のk_nおよびログの長さNのみである。クリアリングハウスは、関数fを使用してk_nが正しいかどうかを検証するために鍵を計算することが可能である。ソフトウェアの実行中にすべての保全性チェックが成功すると、最終のk_nは正しいはずである。実行中にいずれかの保全性チェックが失敗した場合、保全性チェック値はvとは異なり、鍵展開プロセスは誤りである(すなわち、fは一方向関数であるため、正しい値は二度と生成できない)。
【0042】
クリアリングハウス内で実行される検証計算プロセスを減らすために、任意の有効鍵値k_iが共通の特性を共用し、無効な鍵値とは異なるように、一方向関数fが選択される。その後クリアリングハウスは、その特性を保持しているかどうかのみを検証すればよい。鍵展開プロセスを再度実行する必要はない。たとえば、一方向関数がRSAと同様の計算であり、v=1である場合、以下のようになる。
=(v ki−1 mod pq (pおよびqは大きな素数)
【0043】
その後クリアリングハウスは、以下のように検証することができる。
=k3n mod pq
【0044】
ハッカーまたは因数pおよびqを知らない者は(3n)乗根のmod pqを取って鍵展開をさかのぼることはできないため、順方向セキュリティ特性が維持される。
【0045】
ユーザが電源を切ることによってkの展開がリセットされないように、鍵k_iは不揮発性メモリに格納する必要がある。エンド・ユーザにとって以前の値の復元が困難であることも重要であるため、ファイルにk_iを格納するだけでは不十分である。本発明は、コンテンツ鍵および使用カウントを格納するのとまったく同じ問題を有する、コンテンツ保護アプリケーションでの使用が想起されることに留意されたい。
【0046】
本発明の他の拡張には、ログが固定サイズを有し、この固定サイズを超える状況が発生した場合にラッピングを使用することが含まれる。実施形態Bは、この極端な場合である(実施形態Bはサイズ1のログと考えることができる)。図1の一般的な方法では、ログが固定長Nを有する場合、クリアリングハウスが記録されているログ・エントリの合計数を知っている限り、ラッピングによってたとえ一部が失われてもすべては依然として良好に働く。クリアリングハウスは合計数を使用して鍵の展開を計算し、最後のNエントリを読み取ることができる。以前のエントリが上書きされることになるが、固定長のログがある場合は不可避であることに留意されたい。しかしながら実施形態Aでは、さらにわずかな助けが必要である。何らかのログ・エントリが上書されたためにこれを失った場合、クリアリングハウスは鍵の展開を計算して最終のN値を読み取ることはできない。
【0047】
したがって本発明は、「保全性チェック」をログに記録することによって、保全性チェックを使用してソフトウェアの実行中に進行中のハッキング・プロセスを検出する。開示された方法では「保全性チェック」および「順方向セキュリティ」を1つの作業方式に組み合せ、この方式を適用して、ハッキング・プロセスが検出されずにいることができないような方法でハッカーによるソフトウェアの改ざんを事前に対処することによって検出する。
【0048】
図4は、本発明の前述の実施形態(AおよびB)を実施するシステム400の概要を示す図である。ブロック402は、埋め込まれた保全性チェックを備えたソフトウェア・コードのブロックを表す。前述のように様々な保全性チェックが想起される。たとえば保全性チェックは、ソフトウェア・コードのブロック402でチェックサムをテストすることができる。ブロック404および406は、それぞれ監査ログおよび展開する鍵値を表す。一方向関数408を使用して鍵値406が展開され、ここで一方向関数は以前のログ・エントリ(監査ログ404内)および以前の鍵の両方に依存する。特定の実施形態では、鍵値は不揮発性メモリ405に格納される。監査ログ内の値および最終鍵値はクリアリングハウス410に伝送され、そこでソフトウェアの侵入を検出するために(一方向関数を使用して一連の鍵値を再生成すること、およびこの一連の鍵と404のログ・エントリに含まれた鍵とを比較することによって)これらの値が分析される。最後に、クリアリングハウスがソフトウェアの侵入を検出した場合、応答412がシステム管理者などの該当する担当者414に送信される。鍵展開が実行される場所は、本発明の範囲を制限するために使用されるものでないことを理解されたい。たとえば前述の鍵展開方式は、クリアリングハウス410で実施することができる。
【0049】
さらに本発明は、堅固に最適化するための1つまたは複数のモジュールの実施に含まれるコンピュータ読取り可能プログラム・コードを有する製品を提供する。さらに本発明は、本発明に関連付けられた方法のうちのいずれかを実行するようにコンピュータに指示するために使用可能なプログラム・コードを格納している記憶媒体である、コンピュータ・プログラム・コード・ベースの製品を含む。コンピュータ記憶媒体は、CD−ROM、DVD、磁気テープ、光ディスク、ハード・ドライブ、フロッピィ・ディスク、強誘電性メモリ、フラッシュ・メモリ、強磁性メモリ、光ストレージ、電荷結合素子、磁気または光カード、スマート・カード、EEPROM、EPROM、RAM、ROM、DRAM、SRAM、SDRAM、あるいは、任意の他の適切な静的または動的なメモリまたはデータ記憶デバイスのうちのいずれかを含むが、これらに限定されるものではない。
【0050】
コンピュータ・プログラム・コード・ベースの製品では、(a)監査ログ内にログ・エントリを生成するため、(b)以前のログ・エントリおよび以前の鍵の両方に依存した一方向関数に基づいて、鍵値を展開するため、および(c)生成されたログ・エントリを備えた監査ログおよび最終鍵値をクリアリングハウスに伝送し、クリアリングハウスが前記ログ・エントリおよび前記最終鍵値を分析することによってソフトウェアの侵入を検出するのを支援するための、ソフトウェア・モジュールが実施される。
【0051】
前述の実施形態では、システムおよび方法を効果的に実施して、事前に対処することによってソフトウェアの改ざんを検出するためのシステムおよび方法が示される。様々な好ましい実施形態について図示および説明してきたが、こうした開示によって本発明を制限することを意図するものではなく、むしろ添付の特許請求の範囲に定義されるような本発明の趣旨および範囲内にあるすべての修正および代替の構造をカバーすることを意図するものであることを理解されよう。例えば本発明は、ソフトウェア・コードのタイプ、保全性チェックのタイプ、一方向関数のタイプ、またはコンピューティング環境によって制限されるものではない。
【0052】
上記の拡張は様々なコンピューティング環境で実施される。たとえば本発明は、従来のIBM PCまたはその等価物、マルチノード・システム(たとえばLAN)、またはネットワーキング・システム(たとえばインターネット、WWW、無線ウェブ)で実施可能である。すべてのプログラミングおよびそれらに関連するデータは、静的または動的なコンピュータ・メモリに格納され、従来のコンピュータ・ストレージ、ディスプレイ(すなわちCRT)、およびハード・コピー(すなわち印刷された)フォーマットまたはそのいずれか、のうちのいずれかで、ユーザが取り出すことができる。本発明のプログラミングは、セキュリティ/暗号化プログラミングの分野の技術者によって実施可能である。
【図面の簡単な説明】
【0053】
【図1】鍵の進行がログ・エントリ値と無関係である、一般的な方法を示す図である。
【図2】鍵の進行がログ・エントリ値を使用する、本発明の方法の一実施形態を示す図である。
【図3】本発明の単一鍵の実施形態を示す図である。
【図4】図2および3に開示された実施形態を実施するシステムの概要を示す図である。

【特許請求の範囲】
【請求項1】
動的に展開する監査ログを使用して事前に対処することによってソフトウェアの侵入を検出するための方法であって、
a.前記監査ログ内にログ・エントリを生成するステップと、
b.一方向関数に基づいて鍵値を展開するステップであって、前記一方向関数が以前のログ・エントリおよび以前の鍵の両方に依存するステップと、
c.生成された前記ログ・エントリを備えた前記監査ログおよび最終鍵値を、前記ログ・エントリおよび前記最終鍵値を分析することによってソフトウェアの侵入を検出するクリアリングハウスに伝送するステップと、
を有する方法。
【請求項2】
前記ログ・エントリがソフトウェアの実行に基づいた保全性チェックの結果である、請求項1に記載の方法。
【請求項3】
前記保全性チェックがソフトウェア・コードの1セクションでのチェックサムの計算を含む、請求項2に記載の方法。
【請求項4】
前記ログ・エントリは値が同一である、請求項1に記載の方法。
【請求項5】
前記監査ログはサイズが限定されており、それによって前記ログ・エントリはラップ・アラウンドする監査ログの形を取る、請求項1に記載の方法。
【請求項6】
以前の鍵は次の鍵値が作成された後に削除される、請求項1に記載の方法。
【請求項7】
前記鍵の展開ステップは前記クリアリングハウスとは無関係に実行される、請求項1に記載の方法。
【請求項8】
前記クリアリングハウスによる分析が、前記一方向関数を使用して一連の鍵値を再生成するステップと、前記一連の鍵値と前記ログ・エントリに含まれた鍵値とを比較するステップを含む、請求項1に記載の方法。
【請求項9】
前記鍵値の展開が前記生成ステップで生じる、請求項1に記載の方法。
【請求項10】
前記鍵値の展開が前記伝送ステップで生じる、請求項1に記載の方法。
【請求項11】
前記鍵値が数学的に独特な特性を有する、請求項1に記載の方法。
【請求項12】
前記鍵値が不揮発性メモリに格納される、請求項1に記載の方法。
【請求項13】
前記伝送が定期的に発生する、請求項1に記載の方法。
【請求項14】
前記伝送がソフトウェア・コードの実行中に第三者を介して発生する、請求項1に記載の方法。
【請求項15】
前記クリアリングハウスが、ログ・エントリ異常のしきい値を超えた場合にソフトウェアの改ざんを検出する、請求項1に記載の方法。
【請求項16】
動的に展開する監査ログを使用して事前に対処することによってソフトウェアの侵入を検出するのを支援するために、コンピュータ読取り可能プログラム・コードが具体化されたコンピュータ使用可能媒体に記録されたコンピュータ・プログラムであって、前記媒体が、
a.前記監査ログ内にログ・エントリを生成するコンピュータ読取り可能プログラム・コードと、
b.一方向関数に基づいて鍵値を展開するコンピュータ読取り可能プログラム・コードであって、前記一方向関数が以前のログ・エントリおよび以前の鍵の両方に依存するコンピュータ読取り可能プログラム・コードと、
c.生成された前記ログ・エントリを備えた前記監査ログおよび最終鍵値を、前記ログ・エントリおよび前記最終鍵値を分析することによってソフトウェアの侵入を検出するクリアリングハウスに伝送するのを支援するコンピュータ読取り可能プログラム・コードと、
を有するコンピュータ・プログラム。
【請求項17】
動的に展開する監査ログを使用して事前に対処することによってソフトウェアの侵入を検出するための方法であって、
a.保全性チェックをソフトウェア・コードに埋め込むステップと、
b.前記監査ログ内に同一のログ・エントリ値を備えたログ・エントリを生成するステップと、
c.一方向関数に基づいて鍵値を展開するステップであって、前記一方向関数が前記同一のログ・エントリ値および以前の鍵の両方に依存するステップと、
d.前記同一のログ・エントリ値および最終鍵値を、前記同一のログ・エントリ値および最終鍵値を分析することによってソフトウェアの侵入を検出するクリアリングハウスに伝送するステップと、
を有する方法。
【請求項18】
前記ソフトウェア・コードが、ウェブ・ブラウザ、サウンド・カード・ドライバ、ゲーム・コンソール・プログラム、Javaアプレット、他のデジタル・コンテンツに埋め込まれたマクロを含むことができる、請求項17に記載の方法。
【請求項19】
前記デジタル・コンテンツが、イメージ、音楽、ビデオ、またはデータベース・ファイルのうちのいずれかを有する、請求項18に記載の方法。
【請求項20】
前記方法が検出された改ざんに応答するステップをさらに有し、前記応答ステップは、ソフトウェア・コード・ユーザの切り離し、ソフトウェア・コード・ユーザのデバイス鍵の呼び出し、ソフトウェア・コード・ユーザからの追加コンテンツ要求の拒否、ユーザに送信されるソフトウェア・コードまたはコンテンツにおける保全性チェックの回数およびタイプの増加、前記監査ログおよび最終鍵の定期的伝送の頻度の増加、ならびに前記検出された改ざんに関するシステム管理者へのアドバイスのうちのいずれか、またはこれらの組合せを有する、請求項17に記載の方法。
【請求項21】
前記監査ログはサイズが限定されており、それによって前記ログ・エントリはラップ・アラウンドする監査ログの形を取る、請求項17に記載の方法。
【請求項22】
前記保全性チェックがソフトウェア・コードの1セクションでのチェックサムの計算を含む、請求項17に記載の方法。
【請求項23】
以前の鍵は次の鍵値が作成された後に削除される、請求項17に記載の方法。
【請求項24】
前記鍵の展開ステップは前記クリアリングハウスとは無関係に実行される、請求項17に記載の方法。
【請求項25】
前記クリアリングハウスによる分析が、前記一方向関数を使用して一連の鍵値を再生成するステップと、前記一連の鍵値と前記ログ・エントリに含まれた鍵値とを比較するステップを含む、請求項17に記載の方法。
【請求項26】
前記鍵値の展開が前記生成ステップで生じる、請求項17に記載の方法。
【請求項27】
前記鍵値の展開が前記伝送ステップで生じる、請求項17に記載の方法。
【請求項28】
前記鍵値が数学的に独特な特性を有する、請求項17に記載の方法。
【請求項29】
前記鍵値が不揮発性メモリに格納される、請求項17に記載の方法。
【請求項30】
前記伝送が定期的に発生する、請求項17に記載の方法。
【請求項31】
前記伝送がソフトウェア・コードの実行中に第三者を介して発生する、請求項17に記載の方法。
【請求項32】
前記クリアリングハウスが、ログ・エントリ異常のしきい値を超えた場合にソフトウェアの改ざんを検出する、請求項17に記載の方法。
【請求項33】
動的に展開する監査ログを使用して事前に対処することによってソフトウェアの侵入を検出するのを支援するために、コンピュータ読取り可能プログラム・コードが具体化されたコンピュータ使用可能媒体に記録されたコンピュータ・プログラムであって、前記媒体が、
a.保全性チェックをソフトウェア・コードに埋め込むコンピュータ読取り可能プログラム・コードと、
b.前記監査ログ内に同一のログ・エントリ値を備えたログ・エントリを生成するコンピュータ読取り可能プログラム・コードと、
c.一方向関数に基づいて鍵値を展開するコンピュータ読取り可能プログラム・コードであって、前記一方向関数が前記同一のログ・エントリ値および以前の鍵の両方に依存するコンピュータ読取り可能プログラム・コードと、
d.前記同一のログ・エントリ値および最終鍵値を、前記同一のログ・エントリ値および最終鍵値を分析することによってソフトウェアの侵入を検出するクリアリングハウスに伝送するのを支援するコンピュータ読取り可能プログラム・コードと、
を有するコンピュータ・プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公表番号】特表2006−511877(P2006−511877A)
【公表日】平成18年4月6日(2006.4.6)
【国際特許分類】
【出願番号】特願2004−564803(P2004−564803)
【出願日】平成15年10月22日(2003.10.22)
【国際出願番号】PCT/US2003/033485
【国際公開番号】WO2004/061667
【国際公開日】平成16年7月22日(2004.7.22)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】