(57)【要約】【課題】  クライアントが起点となるウェブ・サーバからセミトラステッド・ウェブ・サーバを介して制限付き情報にアクセスできるようにするための方法および装置を提供すること。【解決手段】  ソフトウェアの侵入は、動的に展開する監査ログを使用して事前に対処することによって検出され、ここでログ・エントリは監査ログ内で生成され、鍵値は以前のログ・エントリおよび以前の鍵の両方に依存する一方向関数に基づいて展開される。生成されたログ・エントリおよび最終鍵値を備えた監査ログは、これらの値を分析することによってソフトウェアの侵入を検出するクリアリングハウスに伝送される。伝送されるログのサイズを縮小する努力により、ログ・エントリには同一の値が割り当てられ、これによって１つのログ・エントリおよび最終鍵値をクリアリングハウスに伝送するだけでよい。
2006511877.tif 000002
【特許請求の範囲】
【請求項１】
動的に展開する監査ログを使用して事前に対処することによってソフトウェアの侵入を検出するための方法であって、
ａ．前記監査ログ内にログ・エントリを生成するステップと、
ｂ．一方向関数に基づいて鍵値を展開するステップであって、前記一方向関数が以前のログ・エントリおよび以前の鍵の両方に依存するステップと、
ｃ．生成された前記ログ・エントリを備えた前記監査ログおよび最終鍵値を、前記ログ・エントリおよび前記最終鍵値を分析することによってソフトウェアの侵入を検出するクリアリングハウスに伝送するステップと、
を有する方法。
【請求項２】
前記ログ・エントリがソフトウェアの実行に基づいた保全性チェックの結果である、請求項１に記載の方法。
【請求項３】
前記保全性チェックがソフトウェア・コードの１セクションでのチェックサムの計算を含む、請求項２に記載の方法。
【請求項４】
前記ログ・エントリは値が同一である、請求項１に記載の方法。
【請求項５】
前記監査ログはサイズが限定されており、それによって前記ログ・エントリはラップ・アラウンドする監査ログの形を取る、請求項１に記載の方法。
【請求項６】
以前の鍵は次の鍵値が作成された後に削除される、請求項１に記載の方法。
【請求項７】
前記鍵の展開ステップは前記クリアリングハウスとは無関係に実行される、請求項１に記載の方法。
【請求項８】
前記クリアリングハウスによる分析が、前記一方向関数を使用して一連の鍵値を再生成するステップと、前記一連の鍵値と前記ログ・エントリに含まれた鍵値とを比較するステップを含む、請求項１に記載の方法。
【請求項９】
前記鍵値の展開が前記生成ステップで生じる、請求項１に記載の方法。
【請求項１０】
前記鍵値の展開が前記伝送ステップで生じる、請求項１に記載の方法。
【請求項１１】
前記鍵値が数学的に独特な特性を有する、請求項１に記載の方法。
【請求項１２】
前記鍵値が不揮発性メモリに格納される、請求項１に記載の方法。
【請求項１３】
前記伝送が定期的に発生する、請求項１に記載の方法。
【請求項１４】
前記伝送がソフトウェア・コードの実行中に第三者を介して発生する、請求項１に記載の方法。
【請求項１５】
前記クリアリングハウスが、ログ・エントリ異常のしきい値を超えた場合にソフトウェアの改ざんを検出する、請求項１に記載の方法。
【請求項１６】
動的に展開する監査ログを使用して事前に対処することによってソフトウェアの侵入を検出するのを支援するために、コンピュータ読取り可能プログラム・コードが具体化されたコンピュータ使用可能媒体に記録されたコンピュータ・プログラムであって、前記媒体が、
ａ．前記監査ログ内にログ・エントリを生成するコンピュータ読取り可能プログラム・コードと、
ｂ．一方向関数に基づいて鍵値を展開するコンピュータ読取り可能プログラム・コードであって、前記一方向関数が以前のログ・エントリおよび以前の鍵の両方に依存するコンピュータ読取り可能プログラム・コードと、
ｃ．生成された前記ログ・エントリを備えた前記監査ログおよび最終鍵値を、前記ログ・エントリおよび前記最終鍵値を分析することによってソフトウェアの侵入を検出するクリアリングハウスに伝送するのを支援するコンピュータ読取り可能プログラム・コードと、
を有するコンピュータ・プログラム。
【請求項１７】
動的に展開する監査ログを使用して事前に対処することによってソフトウェアの侵入を検出するための方法であって、
ａ．保全性チェックをソフトウェア・コードに埋め込むステップと、
ｂ．前記監査ログ内に同一のログ・エントリ値を備えたログ・エントリを生成するステップと、
ｃ．一方向関数に基づいて鍵値を展開するステップであって、前記一方向関数が前記同一のログ・エントリ値および以前の鍵の両方に依存するステップと、
ｄ．前記同一のログ・エントリ値および最終鍵値を、前記同一のログ・エントリ値および最終鍵値を分析することによってソフトウェアの侵入を検出するクリアリングハウスに伝送するステップと、
を有する方法。
【請求項１８】
前記ソフトウェア・コードが、ウェブ・ブラウザ、サウンド・カード・ドライバ、ゲーム・コンソール・プログラム、Ｊａｖａアプレット、他のデジタル・コンテンツに埋め込まれたマクロを含むことができる、請求項１７に記載の方法。
【請求項１９】
前記デジタル・コンテンツが、イメージ、音楽、ビデオ、またはデータベース・ファイルのうちのいずれかを有する、請求項１８に記載の方法。
【請求項２０】
前記方法が検出された改ざんに応答するステップをさらに有し、前記応答ステップは、ソフトウェア・コード・ユーザの切り離し、ソフトウェア・コード・ユーザのデバイス鍵の呼び出し、ソフトウェア・コード・ユーザからの追加コンテンツ要求の拒否、ユーザに送信されるソフトウェア・コードまたはコンテンツにおける保全性チェックの回数およびタイプの増加、前記監査ログおよび最終鍵の定期的伝送の頻度の増加、ならびに前記検出された改ざんに関するシステム管理者へのアドバイスのうちのいずれか、またはこれらの組合せを有する、請求項１７に記載の方法。
【請求項２１】
前記監査ログはサイズが限定されており、それによって前記ログ・エントリはラップ・アラウンドする監査ログの形を取る、請求項１７に記載の方法。
【請求項２２】
前記保全性チェックがソフトウェア・コードの１セクションでのチェックサムの計算を含む、請求項１７に記載の方法。
【請求項２３】
以前の鍵は次の鍵値が作成された後に削除される、請求項１７に記載の方法。
【請求項２４】
前記鍵の展開ステップは前記クリアリングハウスとは無関係に実行される、請求項１７に記載の方法。
【請求項２５】
前記クリアリングハウスによる分析が、前記一方向関数を使用して一連の鍵値を再生成するステップと、前記一連の鍵値と前記ログ・エントリに含まれた鍵値とを比較するステップを含む、請求項１７に記載の方法。
【請求項２６】
前記鍵値の展開が前記生成ステップで生じる、請求項１７に記載の方法。
【請求項２７】
前記鍵値の展開が前記伝送ステップで生じる、請求項１７に記載の方法。
【請求項２８】
前記鍵値が数学的に独特な特性を有する、請求項１７に記載の方法。
【請求項２９】
前記鍵値が不揮発性メモリに格納される、請求項１７に記載の方法。
【請求項３０】
前記伝送が定期的に発生する、請求項１７に記載の方法。
【請求項３１】
前記伝送がソフトウェア・コードの実行中に第三者を介して発生する、請求項１７に記載の方法。
【請求項３２】
前記クリアリングハウスが、ログ・エントリ異常のしきい値を超えた場合にソフトウェアの改ざんを検出する、請求項１７に記載の方法。
【請求項３３】
動的に展開する監査ログを使用して事前に対処することによってソフトウェアの侵入を検出するのを支援するために、コンピュータ読取り可能プログラム・コードが具体化されたコンピュータ使用可能媒体に記録されたコンピュータ・プログラムであって、前記媒体が、
ａ．保全性チェックをソフトウェア・コードに埋め込むコンピュータ読取り可能プログラム・コードと、
ｂ．前記監査ログ内に同一のログ・エントリ値を備えたログ・エントリを生成するコンピュータ読取り可能プログラム・コードと、
ｃ．一方向関数に基づいて鍵値を展開するコンピュータ読取り可能プログラム・コードであって、前記一方向関数が前記同一のログ・エントリ値および以前の鍵の両方に依存するコンピュータ読取り可能プログラム・コードと、
ｄ．前記同一のログ・エントリ値および最終鍵値を、前記同一のログ・エントリ値および最終鍵値を分析することによってソフトウェアの侵入を検出するクリアリングハウスに伝送するのを支援するコンピュータ読取り可能プログラム・コードと、
を有するコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にソフトウェア・セキュリティの分野に関する。より具体的に言えば、本発明はソフトウェア改ざんの検出に関する。
【背景技術】
【０００２】
映画および音楽のデジタル技術の出現により、未許可コピーの問題が深刻になってきた。デジタル・コピーは完全なコピーであり、それらがインターネットを介して広く再配布されるのを防ぐために、多数のコンテンツ保護技術ＤＴＣＰ（Ｄｉｇｉｔａｌ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｅｎｔ  Ｐｒｏｔｅｃｔｉｏｎ）およびＣＰＲＭ（Ｃｏｎｔｅｎｔ  Ｐｒｏｔｅｃｔｉｏｎ  ｆｏｒ  Ｒｅｃｏｒｄａｂｌｅ  Ｍｅｄｉａ）が開発されてきた。これらの技術はそのライセンスに「頑強性条件」を有し、こうしたライセンスの条件は改ざん防止インプリメンテーションを規定している。改ざん防止技術、特にソフトウェア改ざん防止技術の開発は、成長産業となってきた。
【０００３】
ほとんどの侵入検出機構は損傷が生じた後に使用されるものであるため、事後対応型（ｒｅａｃｔｉｖｅ）である。「事前対処型（ｐｒｏａｃｔｉｖｅ）セキュリティ」という用語は、最終的な損傷が生じる前のソフトウェアの実行など、処理中に不具合を検出することを示すものである。従来技術システムは、ソフトウェアのリバース・エンジニアリングに対抗するための事前対処型セキュリティ機構を提供していない。これらの従来技術システムは、リバース・エンジニアリングの試行中にハッカーが残した痕跡を識別することができない。
【０００４】
一般に、従来技術の侵入検出システムは事後対応型であり、既存の知識を使用して異常を監視する。こうした異常の一方向の監視は、「監査ログ」を維持することによるものである。監査ログ使用の一般的な概念は、長い間存在してきた。しかしながら「監査ログ」方式は、特定の「検出」目的に適用された場合により適切かつより実用的に働く。このシナリオでは、検出の目的でログに入力する必要のある情報を識別すること、およびその後に実行しなければならない検証プロセスが必要である。ログ内の情報がある種の特性を満たすようにすることは、時には、この方式を（ログ・サイズを小さくする、およびより効率的な検証を作り出すという点から見て）より効率的にするだけでなく、検証プロセスを保証することおよびターゲットの異常を検出することもできる。
【０００５】
他の関連する概念は、セキュリティに関する文献で確認および記載されてきた正式な特性である、「順方向セキュリティ（forward security）」である。順方向セキュリティには、改ざんが発生した後の過去のコードまたはログの破損を防止する方法が含まれる。将来のアクションは信頼できない可能性があるが、予め存在した信頼できる項目は損なわれずに残る。
【特許文献１】米国特許第６００６３２８号
【特許文献２】米国特許第５６７３３１６号
【特許文献３】欧州特許第ＥＰ１０７６２７９−Ａ１号
【特許文献４】米国特許第４７５７５３３号
【特許文献５】外国特許第ＷＯ２０００７７５９７  Ａ１号
【特許文献６】外国特許第ＷＯ２９９１１４９５３  Ａ１号
【特許文献７】外国特許第ＷＯ２０００７７５９６  Ｂ１号
【特許文献８】外国特許第ＷＯ９９０４５３０  Ａ１号
【非特許文献１】Ｂｅｌｌａｒｅ等執筆の「Ｆｏｒｗａｒｄ  Ｉｎｔｅｇｒｉｔｙ  Ｆｏｒ  Ｓｅｃｕｒｅ  Ａｕｄｉｔ  Ｌｏｇｓ」
【非特許文献２】Ｓｏｎｇ執筆の「Ｐｒａｃｔｉｃａｌ  Ｆｏｒｗａｒｄ  Ｓｅｃｕｒｅ  Ｇｒｏｕｐ  Ｓｉｇｎａｔｕｒｅ  Ｓｃｈｅｍｅｓ」
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ハッカーが改ざんに成功する前、および彼らが秘密鍵などの重要な情報へのアクセス権を取得する前に、事前に対処することにより進行中のリバース・エンジニアリング・プロセスを検出すること（およびそれにより、まだハッキングが初期段階のうちに止めることによって実際の損傷が発生するのを防ぐこと）が求められている。
【課題を解決するための手段】
【０００７】
したがって本発明の一態様は、クライアントが起点となるウェブ・サーバからセミトラステッド（semi-trusted）・ウェブ・サーバを介して制限付き情報にアクセスできるようにするための方法を提供することである。
【０００８】
本発明の他の態様は、クライアントが起点となるウェブ・サーバからセミトラステッド・ウェブ・サーバを介して制限付き情報にアクセスできるようにするための装置を提供することである。
【０００９】
本発明の他の態様は、認証用のクッキーを使用するセキュリティ・リスクを削減することである。
【００１０】
本発明の他の態様は、セミトラステッド・ウェブ・サーバに格納されたデータを保護することである。
【００１１】
本発明の一例では、クライアントは本明細書で開示された方法を使用して、セミトラステッド・ウェブ・サーバの制限付き情報へのアクセス権を取得することになる。
【００１２】
以下の参照文献では、事後対応型侵入検出機構について全般的に記載している。
【００１３】
Ｄｒａｋｅに与えられた米国特許（第６００６３２８号）は、コンピュータ・ソフトウェアの認証、保護、およびセキュリティに関する方法を開示している。この方法には、ぜい弱なコード（たとえば盗聴に対してぜい弱）をハードウェアと直接通信する（ぜい弱性が除去された）等価のコードに置き換えることが含まれ、これによってシステムの割り込みまたは非認識ソフトウェアの盗聴を許可する他の機能が使用禁止になる。改ざん検出技法は、ソフトウェア内で使用されるかまたはソフトウェアによってアクセスされ、改ざんが検出された場合は、以後ＩＤデータがルーチンに入力されないようにするものである。この開示された発明では、ＲＡＭまたは他のイメージのコード・チェックサムの実行、メモリと実行可能コードの他の格納済みコピーとの比較および入力プロセスの復号、またはそのいずれか一方、実行可能環境の検査、実行可能サイズと予測値との比較、第三者またはプロセスへの認証失敗の詳細についての通知および伝送またはそのいずれか一方、ならびに、（入力ルーチンまたはセキュアな入力プロセスの）ユーザの使用および詳細またはそのいずれか一方に関するログの記録を提供している。
【００１４】
Ａｕｅｒｂａｃｈ等に与えられた米国特許（第５６７３３１６号）は、暗号化エンベロープの作成および配布を提供するものである。各部分が部分暗号化鍵および公開鍵によって暗号化される、情報部分の集約を伴うエンベロープ（envelope）が開示されている。その後このリストは、署名を生成するために秘密鍵によって署名され、同じくエンベロープに含められる。
【００１５】
Ｐｅａｒｓｏｎに与えられた欧州特許（第ＥＰ１０７６２７９−Ａ１号）は、署名済みバージョンおよび公開鍵証明書を参照しながら保全性がチェックされる、ライセンス関連コードを備えたコンピュータ・プラットフォームを開示している。コンピュータ・プラットフォームまたは信頼モジュールは、ユーザの予測どおりに動作する信頼環境でライセンシング・チェックが実行可能な、改ざん防止構成要素を形成する。関連するクリアリングハウス（clearinghouse）機構は、データに関する登録および支払いを実行可能にする。このシステムは、ローカル・ユーザまたはリモート・エンティティのいずれかによるプラットフォームの保全性の検証も実行可能にする。
【００１６】
Ａｌｌｅｎ等に与えられた米国特許（第４７５７５３３号）は、ハードウェアとソフトウェアとを組み合わせてユーザおよびファイル・アクセスの改ざん防止保護提供する、パーソナル・マイクロコンピュータ用のセキュリティ・システムを開示している。開示されたチップのうちの１つは監査証跡ログ、保護および暗号化システム・フラグ、ならびにユーザアクセス権を提供し、このチップは正当なユーザのみがアクセス権を得られることを保証する。
【００１７】
外国特許第ＷＯ２０００７７５９７  Ａ１号、第ＷＯ２９９１１４９５３  Ａ１号、および第ＷＯ２０００７７５９６  Ｂ１号は、全体として、変換されたコードの監視可能オペレーションをオリジナルのソフトウェア・コードの意図から切り離すための、コンピュータ・ソフトウェア・コード内のデータ流れの変換を含む、改ざん抵抗方法を開示している。この方法は、コンピュータ・ソフトウェアを改ざんおよびリバース・エンジニアリングに対して強くするためのものである。
【００１８】
Ｓｔａｎｔｏｎ等に与えられた外国特許（第ＷＯ９９０４５３０  Ａ１号）は、改ざんを防止するためにデータ暗号化鍵として使用するためのセッション鍵によるファイル暗号化方法を開示している。この方法は、法的機関によるファイルへの緊急アクセスを事項可能にする、共用秘密鍵または公開秘密鍵暗号化システムに基づく強力な暗号化アルゴリズムを使用している。
【００１９】
Ｂｅｌｌａｒｅ等執筆の「Ｆｏｒｗａｒｄ  Ｉｎｔｅｇｒｉｔｙ  Ｆｏｒ  Ｓｅｃｕｒｅ  Ａｕｄｉｔ  Ｌｏｇｓ（セキュアな監査ログのための順方向保全性）」と題する非特許文献では、監査ログのセキュリティを維持するための方法を提供している。開示された適用分野には、侵入検出または責任能力に関する監査ログ（たとえばｓｙｓｌｏｇｄデータ）の保護、通信セキュリティ、およびモバイル・エージェントに関する計算の部分結果の認証が含まれる。
【００２０】
Ｓｏｎｇ執筆の「Ｐｒａｃｔｉｃａｌ  Ｆｏｒｗａｒｄ  Ｓｅｃｕｒｅ  Ｇｒｏｕｐ  Ｓｉｇｎａｔｕｒｅ  Ｓｃｈｅｍｅｓ（実用的な順方向保護グループ署名方式）」と題する非特許文献は、鍵の暴露によって生じる損害を軽減するための順方向セキュリティ方式を提供している。
【００２１】
上記参照文献の精密な長所、特徴、および利点がどのようなものであっても、決して本発明の目的を達成または満たすものではない。
【００２２】
事前に対処することによりソフトウェアの改ざんを検出するための方式が開示され、この検出は、動的に展開する監査ログおよび鍵値に基づく事前対処型である。鍵値は、以前のログ・エントリおよび以前の鍵の両方に依存する一方向関数に基づいて展開される。監査ログ（生成済みログ・エントリを備える）および最終鍵値はどちらもクリアリングハウスに伝送され、これらの値を分析することによってソフトウェアの侵入を検出する。特定の実施形態では、ログ・エントリ値が同一であるため、伝送されるログのサイズが縮小される。このようにして本発明は、「保全性チェック」をログに記録することにより、保全性チェックを使用してソフトウェア実行中に進行中のハッキング・プロセスを検出する。開示された方法は、「保全性チェック」と「順方向セキュリティ」を１つの作業方式に組み合せ、この方式を適用して、ハッキング・プロセスが検出されずにいることができないような方法でハッカーによるソフトウェアの改ざんを事前に対処することによって検出する。
【００２３】
拡張された実施形態では、さらに本発明の方式は検出された改ざんに応答するステップを有し、この応答は、ソフトウェア・コード・ユーザの切り離し、ソフトウェア・コード・ユーザのデバイス鍵の呼び出し、ソフトウェア・コード・ユーザからの追加コンテンツ要求の拒否、ユーザに送信されるソフトウェア・コードまたはコンテンツにおける保全性チェックの回数およびタイプの増加、前記監査ログおよび最終鍵の定期的伝送の頻度の増加、ならびに前記検出された改ざんに関するシステム管理者へのアドバイスのうちのいずれか、またはこれらの組合せを有する。
【００２４】
他の拡張された実施形態では、ログ・エントリ異常が所定のしきい値を超えているかどうかを判別することによって、改ざんが（クリアリングハウスで）検出される。所定のしきい値を超えた場合、クリアリングハウスは上記応答のうちのいずれかを使用することができる。
【発明を実施するための最良の形態】
【００２５】
本発明について好ましい実施形態で例示および説明するが、本発明は多くの異なる構成、形式、および材料で生成することができる。本発明の好ましい実施形態は、本開示が本発明の原理および関連するその構造に関する機能上の仕様を例示するものとしてみなされるべきであり、本発明が例示された実施形態に限定されることを意図するものでないことを理解した上で、図面に記載され、本明細書で詳細に説明される。当業者であれば、本発明の範囲内で多くの他の可能な変形形態を想起されるであろう。
【００２６】
本明細書全体を通じて使用される「ユーザ」という用語は、ソフトウェア・コード（ウェブ・ブラウザ・プログラム、サウンド・カード・ドライバ、ゲーム・コンソール・プログラム、Ｊａｖａ（登録商標）アプレット、あるいは、イメージ、音楽、またはビデオ・ファイルなどのマルチメディア・コンテンツに埋め込まれたマクロに関する、ソフトウェア・コードなど）およびログを使用して改ざんを試みる可能性のある、信頼できないコンピュータ（たとえばセットトップ・ボックス、ＰＣ、ＰＤＡ、ビデオ・ゲーム・コンソールなど）のオペレータを指すものである。さらに「ログ」という用語は、ソフトウェア・コードの実行に関して発生する内容を記述するエントリの集合を使用する、監査証跡を指すものである。一実施では、エントリは、ソフトウェア・コード（たとえば、コードのブロックに関するチェックサム）に埋め込まれこれによって実行される、保全性チェックの結果を記述する。
【００２７】
本発明は、異常を検出するために監査証跡を利用するシステムおよび方法を提供する。ソフトウェアがクライアント側（たとえば敵対的なユーザのマシン）で実行されているというシナリオが想起されることに留意されたい。この場合、脅威は信頼できないユーザ自身から生じる。単にハッカーがコードを使用したアクセスおよび改ざんが可能なだけでなく、監査証跡を使用した改ざんも可能であるという理由から、この種の脅威には特別な注意が払われる。したがってこのシナリオでは、ハッカーが証跡内の任意の古いエントリを気付かれないように削除する可能性がないように、証跡それ自体を保護する必要がある。しばらく後にはハッカーがログイン機構を完全に理解する可能性があり、それ以降の証跡内の新しいエントリは信用できなくなる。しかしながら本発明に基づき、ハッカーはログ内のエントリをさかのぼって修正することはできない。
【００２８】
本明細書に記載の本発明は、事前に対処することによってソフトウェア改ざんプロセスを検出するために、「順方向セキュリティ」特性をソフトウェア実行中に保全性チェックに適用する方式である。ユーザが新しいコンテンツを取得するために接続した場合、ログの切捨て、ログの削除、または古い有効ログの置換があれば容易に検出される。ハッカーが特定のソフトウェア・プログラムを完全に理解するまでには多くの「保全性チェック」障害を引き起こし、これがログに記録されることが想定される。したがって本発明に基づき、ハッカーが検出されることなくソフトウェアをリバース・エンジニアリングすることは不可能である。
【００２９】
順方向セキュリティは、ログに入ってくる情報を動的に展開することによって達成される。たとえば、実行開始時には乱数が鍵として選択され、その後この鍵を使用してエントリがログに記録される。この鍵は一方向関数を使用して新しい鍵として展開され、その後古い鍵は消去（上書き）される。この次には、新しい鍵を使用してログ内の情報が記録される。この鍵は、情報の生成、記録する情報の決定、記録の暗号化、または任意の他の用途に使用することができる。したがってログに入力されるエントリは、一方向関数を使用して展開される鍵の関数である。たとえばハッカーは、時間ｔで自分の動作がログに記録されていることを発見するが、ログを正しく見せようとしてすでにログに記録された情報を偽造するために、前に戻って以前の鍵（時間ｔ以前）を見つけ出すことはできない。
【００３０】
ログは、定期的にクリアリングハウスに接続されて返送されることになる（クリアリングハウスとは、定期的にログを受信し、ログ・コンテンツを正しいログ・コンテンツと比較することによってログをチェックして改ざんが発生したかどうかを判別するエンティティのことである）。同時に、ソフトウェアがコードの実行に伴って発生した内容を記録する一方で、同じ初期乱数（鍵）はクリアリングハウス内で同期化された方法で展開する。クリアリングハウスは、ログに入力されたはずの正確な情報を知っている。その後クリアリングハウス内で発生する検証／検出プロセスは、戻りログと、クリアリングハウスが接続から接続へと展開を続ける同じ展開鍵を使用して計算した正しい情報との間の、単純な比較とすることができる。信頼できないユーザが古い有効なログを置換すると、鍵は正しくなくなる。ユーザが切り捨てられたログを提出すると、次の時にそのログが伝送され、鍵は正しくなくなる。ログ内で最初に異常が検出されると、クリアリングハウスは管理者に警告を発することができる。管理者は次の時に同じユーザに対してより多くの注意を払うか、またはユーザに警告を与えるよう選択することができる。「十分な」（たとえばしきい値を超える）改ざんの証拠が蓄積された場合、ユーザをネットワークから切り離し、今後新しいコンテンツの配布を受信できないようにすることができる。
【００３１】
方式に関連する基本ステップは、以下のとおりである。
【００３２】
（１）保全性チェックを実行する場所、および必要な保全性チェックのタイプを決定する。すべてのタイプの保全性チェックがこの範囲内にある。たとえば、あるコード・ブロックに関するチェックサムのテストが、保全性チェックの１つである場合がある。
【００３３】
（２）Ｃ２＿Ｇ、ＭＤ５、またはＲＳＡなどの一方向関数を決定する。Ｃ２＿Ｇ（Ｃｒｙｐｔｏｍｅｒｉａ一方向関数）は、ＣＰＲＭと呼ばれるよく知られたコンテンツ保護方式で使用される一方向関数である。ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  ＃５）は、デジタル署名オペレーションで暗号化ハッシュとして一般に使用される一方向関数である。ＲＳＡは、クラス公開鍵暗号化アルゴリズムである。ＲＳＡ暗号化アルゴリズムは、関連する秘密鍵を含まないあらゆる者に対して一方向関数として働く。
【００３４】
（３）ステップ（１）で決定された時点でログ・エントリが生成され、それが実行されるときに一方向関数を使用して鍵が展開されるように、保全性チェック情報をコードに埋め込んで保護する。
【００３５】
（４）ログをクリアリングハウスに返送し、クリアリングハウスがログを検証して、改ざんプロセスを検出するかまたは改ざんが発生していないかどうかを判別する。
【００３６】
図１は、鍵の進行がログ・エントリ値と無関係である、一般的な方法を示す図である。ログのサイズには制限がない。一方向関数ｆ１を使用して、鍵ｆ１（ｋ＿ｉ）−＞ｋ＿ｉ＋１を保全性チェック値ｖ＿ｉとは無関係に展開する。別のｆ２関数は、保全性チェック値ｖ＿ｉで鍵を使用してログ・エントリを生成する。関数ｆ２は、たとえば値ｖ＿ｉを使用した鍵ｋ＿ｉの暗号化の場合があるが、他のｆ２関数に置き換えることもできる。鍵は一方向関数を使用して展開されるため、ハッカーが改ざんに成功して現在の鍵ｋ＿ｉを取得した時点ｔで、ハッカーは依然として前の鍵ｋ＿０．．．ｋ＿（ｉ−１）を知ることはできない。したがってハッカーは、前に戻ってすでに記録されているログ・エントリを偽造することはできない。ログ・エントリがクリアリングハウスに返送されると、クリアリングハウスはｆ２の計算を繰り返し、ログ・エントリが正しく暗号化されていること、および保全性チェック値が改ざんの発生を示していないこと、という両方の意味でログ・エントリが正しいかどうかを検証することができる。何らかの保全性チェック値ｖ＿ｉでハッキング・プロセスが失敗するため、ログ・エントリは誤りとなり、クリアリングハウスによって検出することができる。
【００３７】
本発明の基本的な（前述のような）方法では、ステップ（３）〜（４）に関連付けられた２つの異なる実施形態がある。この２つの実施形態それぞれについて、以下で簡単に説明する。
【００３８】
実施形態Ａ：図２は、鍵の進行がログ・エントリ値を使用する、本発明の方法を示す図である。この方式では、一方向関数は現在の鍵ｋ＿ｉおよび現在の保全性チェック値ｖ＿ｉの両方を使用して、新しい鍵ｋ＿（ｉ＋１）を生成する。ログには、現在の保全性チェック値ｖ＿ｉのみが入力される。ログ・エントリは、取得された最終の鍵ｋ＿ｎと共にクリアリングハウスに返送される。ソフトウェアがハッキングされ、ハッカーが何らかの保全性チェック値ｖ＿ｉを使用して改ざんした場合、この鍵の展開は誤りとなる。したがって、クリアリングハウスはｋ＿０およびログ・エントリ値ｖ＿０．．．ｖ＿ｎを使用して鍵を展開し、改ざんプロセスを検出することができる。第１に、観察されたログ・エントリｖ＿ｉを使用して、戻されたｋ＿ｎが実際に取得可能であるかどうかを検証する。これは、ハッカーがログ内でいずれかのｖ＿ｉ値を使用して改ざんを行っていないかどうかを判別するものである。その後クリアリングハウスは、実際のｖ＿ｉ値をチェックして、ソフトウェアの実行中に何らかの改ざんの証拠がないかどうかを調べる。
【００３９】
その後ハッカーは、格納されているはずの正しい保全性チェック値ｖ＿ｉを習得することができるが、残念ながらこれはハッカーにとって何の役にも立たない。第１に、関数ｆはｋおよびｖの両方に関するものである。ハッカーは保全性チェックに失敗し、誤った保全性チェック値ｖを獲得することで、最初に失敗を犯す。最終的にハッカーがハッキングに成功し、自分のハッキング・プロセス中に正しい保全性チェック値ｖを見つけ出した場合でも、ハッカーは現在の鍵ｋ＿ｎしか知らず、以前の鍵ｋ＿０．．．ｋ＿（ｎ−１）を知ることはできないため、依然として正しいｋ＿ｎ値が何であるかを知ることはできない。したがって、クリアリングハウスは常にハッキング・プロセスを検出することができる。第２に、ハッカーがすべての正しい保全性チェック値ｖ＿ｉをログ内に復元しようとした場合、値ｋ＿ｎが観察されたｖ＿ｉと一致しないため、クリアリングハウスにはハッカーがログを偽造しようとしていることがわかる。
【００４０】
したがって実施形態Ａは、実際のログをクリアな形（現在の保全性チェック値ｖ＿ｉのみが入力されている）にすることができる。この態様は、ある種の適用分野で有利に活用することができる。
【００４１】
実施形態Ｂ：図３は、本発明の単一鍵の実施形態を示す図である。以前の実施形態では、ログ全体をクリアリングハウスに返送する必要がある。長い間には、ログ自体が非常に大きくなる可能性がある。この実施形態Ｂは図１の一般的な方法の変形形態であり、ログのサイズを縮小することが目的である。保全性チェック時にチェックが成功している場合は、必ず保全性チェック値を固定デフォルト値ｖで構成することが可能である。言い換えれば、保全性チェックが失敗した場合に限ってチェック値はｖ以外の値となる。この場合、正しいログは単なる値ｖのＮシーケンスであるため、格納してクリアリングハウスに返送する必要のある値は最終のｋ＿ｎおよびログの長さＮのみである。クリアリングハウスは、関数ｆを使用してｋ＿ｎが正しいかどうかを検証するために鍵を計算することが可能である。ソフトウェアの実行中にすべての保全性チェックが成功すると、最終のｋ＿ｎは正しいはずである。実行中にいずれかの保全性チェックが失敗した場合、保全性チェック値はｖとは異なり、鍵展開プロセスは誤りである（すなわち、ｆは一方向関数であるため、正しい値は二度と生成できない）。
【００４２】
クリアリングハウス内で実行される検証計算プロセスを減らすために、任意の有効鍵値ｋ＿ｉが共通の特性を共用し、無効な鍵値とは異なるように、一方向関数ｆが選択される。その後クリアリングハウスは、その特性を保持しているかどうかのみを検証すればよい。鍵展開プロセスを再度実行する必要はない。たとえば、一方向関数がＲＳＡと同様の計算であり、ｖ＝１である場合、以下のようになる。
ｋｉ＝（ｖ  ｋｉ−１）３  ｍｏｄ  ｐｑ      （ｐおよびｑは大きな素数）
【００４３】
その後クリアリングハウスは、以下のように検証することができる。
ｋｎ＝ｋ０３ｎ  ｍｏｄ  ｐｑ
【００４４】
ハッカーまたは因数ｐおよびｑを知らない者は（３ｎ）乗根のｍｏｄ  ｐｑを取って鍵展開をさかのぼることはできないため、順方向セキュリティ特性が維持される。
【００４５】
ユーザが電源を切ることによってｋの展開がリセットされないように、鍵ｋ＿ｉは不揮発性メモリに格納する必要がある。エンド・ユーザにとって以前の値の復元が困難であることも重要であるため、ファイルにｋ＿ｉを格納するだけでは不十分である。本発明は、コンテンツ鍵および使用カウントを格納するのとまったく同じ問題を有する、コンテンツ保護アプリケーションでの使用が想起されることに留意されたい。
【００４６】
本発明の他の拡張には、ログが固定サイズを有し、この固定サイズを超える状況が発生した場合にラッピングを使用することが含まれる。実施形態Ｂは、この極端な場合である（実施形態Ｂはサイズ１のログと考えることができる）。図１の一般的な方法では、ログが固定長Ｎを有する場合、クリアリングハウスが記録されているログ・エントリの合計数を知っている限り、ラッピングによってたとえ一部が失われてもすべては依然として良好に働く。クリアリングハウスは合計数を使用して鍵の展開を計算し、最後のＮエントリを読み取ることができる。以前のエントリが上書きされることになるが、固定長のログがある場合は不可避であることに留意されたい。しかしながら実施形態Ａでは、さらにわずかな助けが必要である。何らかのログ・エントリが上書されたためにこれを失った場合、クリアリングハウスは鍵の展開を計算して最終のＮ値を読み取ることはできない。
【００４７】
したがって本発明は、「保全性チェック」をログに記録することによって、保全性チェックを使用してソフトウェアの実行中に進行中のハッキング・プロセスを検出する。開示された方法では「保全性チェック」および「順方向セキュリティ」を１つの作業方式に組み合せ、この方式を適用して、ハッキング・プロセスが検出されずにいることができないような方法でハッカーによるソフトウェアの改ざんを事前に対処することによって検出する。
【００４８】
図４は、本発明の前述の実施形態（ＡおよびＢ）を実施するシステム４００の概要を示す図である。ブロック４０２は、埋め込まれた保全性チェックを備えたソフトウェア・コードのブロックを表す。前述のように様々な保全性チェックが想起される。たとえば保全性チェックは、ソフトウェア・コードのブロック４０２でチェックサムをテストすることができる。ブロック４０４および４０６は、それぞれ監査ログおよび展開する鍵値を表す。一方向関数４０８を使用して鍵値４０６が展開され、ここで一方向関数は以前のログ・エントリ（監査ログ４０４内）および以前の鍵の両方に依存する。特定の実施形態では、鍵値は不揮発性メモリ４０５に格納される。監査ログ内の値および最終鍵値はクリアリングハウス４１０に伝送され、そこでソフトウェアの侵入を検出するために（一方向関数を使用して一連の鍵値を再生成すること、およびこの一連の鍵と４０４のログ・エントリに含まれた鍵とを比較することによって）これらの値が分析される。最後に、クリアリングハウスがソフトウェアの侵入を検出した場合、応答４１２がシステム管理者などの該当する担当者４１４に送信される。鍵展開が実行される場所は、本発明の範囲を制限するために使用されるものでないことを理解されたい。たとえば前述の鍵展開方式は、クリアリングハウス４１０で実施することができる。
【００４９】
さらに本発明は、堅固に最適化するための１つまたは複数のモジュールの実施に含まれるコンピュータ読取り可能プログラム・コードを有する製品を提供する。さらに本発明は、本発明に関連付けられた方法のうちのいずれかを実行するようにコンピュータに指示するために使用可能なプログラム・コードを格納している記憶媒体である、コンピュータ・プログラム・コード・ベースの製品を含む。コンピュータ記憶媒体は、ＣＤ−ＲＯＭ、ＤＶＤ、磁気テープ、光ディスク、ハード・ドライブ、フロッピィ・ディスク、強誘電性メモリ、フラッシュ・メモリ、強磁性メモリ、光ストレージ、電荷結合素子、磁気または光カード、スマート・カード、ＥＥＰＲＯＭ、ＥＰＲＯＭ、ＲＡＭ、ＲＯＭ、ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭ、あるいは、任意の他の適切な静的または動的なメモリまたはデータ記憶デバイスのうちのいずれかを含むが、これらに限定されるものではない。
【００５０】
コンピュータ・プログラム・コード・ベースの製品では、（ａ）監査ログ内にログ・エントリを生成するため、（ｂ）以前のログ・エントリおよび以前の鍵の両方に依存した一方向関数に基づいて、鍵値を展開するため、および（ｃ）生成されたログ・エントリを備えた監査ログおよび最終鍵値をクリアリングハウスに伝送し、クリアリングハウスが前記ログ・エントリおよび前記最終鍵値を分析することによってソフトウェアの侵入を検出するのを支援するための、ソフトウェア・モジュールが実施される。
【００５１】
前述の実施形態では、システムおよび方法を効果的に実施して、事前に対処することによってソフトウェアの改ざんを検出するためのシステムおよび方法が示される。様々な好ましい実施形態について図示および説明してきたが、こうした開示によって本発明を制限することを意図するものではなく、むしろ添付の特許請求の範囲に定義されるような本発明の趣旨および範囲内にあるすべての修正および代替の構造をカバーすることを意図するものであることを理解されよう。例えば本発明は、ソフトウェア・コードのタイプ、保全性チェックのタイプ、一方向関数のタイプ、またはコンピューティング環境によって制限されるものではない。
【００５２】
上記の拡張は様々なコンピューティング環境で実施される。たとえば本発明は、従来のＩＢＭ  ＰＣまたはその等価物、マルチノード・システム（たとえばＬＡＮ）、またはネットワーキング・システム（たとえばインターネット、ＷＷＷ、無線ウェブ）で実施可能である。すべてのプログラミングおよびそれらに関連するデータは、静的または動的なコンピュータ・メモリに格納され、従来のコンピュータ・ストレージ、ディスプレイ（すなわちＣＲＴ）、およびハード・コピー（すなわち印刷された）フォーマットまたはそのいずれか、のうちのいずれかで、ユーザが取り出すことができる。本発明のプログラミングは、セキュリティ／暗号化プログラミングの分野の技術者によって実施可能である。
【図面の簡単な説明】
【００５３】
【図１】鍵の進行がログ・エントリ値と無関係である、一般的な方法を示す図である。
【図２】鍵の進行がログ・エントリ値を使用する、本発明の方法の一実施形態を示す図である。
【図３】本発明の単一鍵の実施形態を示す図である。
【図４】図２および３に開示された実施形態を実施するシステムの概要を示す図である。
【図１】
2006511877.tif 000003
【図２】
2006511877.tif 000004
【図３】
2006511877.tif 000005
【図４】
2006511877.tif 000006
【国際調査報告】
2006511877.tif 000007
2006511877.tif 000008