(57)【要約】【課題】少なくとも１つのクライアントのセキュリティを評価するための方法および装置を提供すること。【解決手段】評価対象であるクライアントによって、実行可能プログラムが実行される。実行可能プログラムからの結果が受け取られるが、この結果の評価は、クライアントが破損されているかどうかを示す。実行可能プログラムは、複数の可能なプログラムのうちの１つである。結果は、実行可能プログラムがクライアントに提供された時と、結果が受け取られた時との間の経過時間に基づいて評価することができる。実行可能プログラムは、クライアントのメモリに書き込む少なくとも１つの関数を含むことができる。実行可能プログラムを生成するためのプログラム・ブラインディング技法も開示される。【選択図】図２
2006127521.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのクライアントのセキュリティを評価する方法であって、
前記クライアントによって実行される少なくとも１つの実行可能プログラムを提供することであって、前記少なくとも１つの実行可能プログラムは複数の可能なプログラムのうちの１つであること、
前記少なくとも１つの実行可能プログラムからの結果を受け取ること、および、
前記結果の評価に基づいて、前記クライアントが破損されているかどうか判定することを含む方法。
【請求項２】
前記結果の前記評価は、前記少なくとも１つの実行可能プログラムが前記クライアントに提供された時と、前記結果が受け取られた時との間の経過時間を評価することを含む、請求項１に記載の方法。
【請求項３】
前記少なくとも１つの実行可能プログラムは前記複数の可能なプログラムから選択される、請求項１に記載の方法。
【請求項４】
前記少なくとも１つの実行可能プログラムはランダムに生成される、請求項１に記載の方法。
【請求項５】
前記少なくとも１つの実行可能プログラムは、前記結果の受領に対する時間制約に違反する潜在的な敵によって分析されるための時間複雑性を有する少なくとも１つの関数を含む、請求項１に記載の方法。
【請求項６】
前記少なくとも１つの実行可能プログラムはプログラム・ブラインディング技法を使用して生成される、請求項１に記載の方法。
【請求項７】
前記少なくとも１つの実行可能プログラムは、前記クライアントのメモリに書き込む１つまたは複数の動作を含む、請求項１に記載の方法。
【請求項８】
前記少なくとも１つの実行可能プログラムは、前記クライアントのメモリ位置に書き込む少なくとも１つの関数を使用して、ある時間にわたって通信する複数のプログラムを含む、請求項１に記載の方法。
【請求項９】
少なくとも１つのクライアントのセキュリティを評価するための装置であって、
メモリと、
前記メモリに結合された少なくとも１つのプロセッサとを備え、前記プロセッサは、
前記クライアントによって実行される少なくとも１つの実行可能プログラムを提供するように動作可能であり、前記少なくとも１つの実行可能プログラムは複数の可能なプログラムのうちの１つであり、前記プロセッサはさらに、
前記少なくとも１つの実行可能プログラムからの結果を受け取り、
前記結果の評価に基づいて、前記クライアントが破損されているかどうか判定するように動作可能である装置。
【請求項１０】
前記結果の前記評価は、前記少なくとも１つの実行可能プログラムが前記クライアントに提供された時と、前記結果が受け取られた時との間の経過時間を評価することを含む、請求項９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ・セキュリティ技法に関し、より詳細には、分散環境でコンピュータ・システムの保全性を監視するチャレンジ・レスポンス方式に関する。
【背景技術】
【０００２】
コンピュータ・システム（例えばソフトウェア、ハードウェア、およびこれらの相互接続）が、クリティカルでデリケートなコンピュータ操作において使用されるためには、コンピュータ・システムは高度に信用されなければならない。しかし、ほとんどのコンピューティング・プラットフォームは、悪意ある攻撃、特に、常駐ソフトウェアが修正または再構成される攻撃に対して、相対的に保護がない。ソフトウェア・クライアントは、特別なセキュリティ・ハードウェア（例えば暗号チップ付きのもの）で保護することができるが、また保護すべきだと言ってよいが、通常は、それらが課す材料コストおよび追加の技術的な複雑性のせいで保護されない。さらに、すでに現場に配置済みのシステムの場合、ソフトウェアに基づく保全性方式が唯一の選択肢である。
【０００３】
分散ハードウェア／ソフトウェア環境でソフトウェア・サブシステムの保全性を決定および監視するために、いくつかのチャレンジ・レスポンス方式が提案されてきた。例えば、無線電話ネットワーク中でホストと通信する移動電話機クライアントを保護するためのいくつかのチャレンジ・レスポンス方式が提案されてきた。移動電話機のユーザは、移動電話機のソフトウェアを修正することができる。そのため、電話機が無線ネットワーク内部で対話するとき、電話機クライアントと通信するホスト・コンポーネントは、知らずに悪意のコードと対話することがある。このようなコードは、クライアント情報を取り込むのに使用されるか、あるいは、無効なまたは詐欺的な情報をホストに提示するのに使用される可能性がある。提案されてきたほとんどのチャレンジ・レスポンス方式は、移動コードから発行された要求が、コードを実行している（リモート）ホストによって許可されるべきか拒否されるべきかを判定するためのセキュリティ機構およびポリシーに焦点を合わせたものであった。
【０００４】
別の一連の取組みは、悪意のホストの場合を考慮するものである。例えば、Esparza他、「Limiting the Execution Time in a Host: A Way of Protecting Mobile Agents」、IEEE Sarnoff Symposium on Advances in Wired and Wireless Communications (2003)は、エージェントを悪意のホストからの悪用から保護するために、エージェントの実行時間を用いて、ホストによる起こり得る悪意の挙動を検出することを提案している。具体的には、各ホストは、エージェントの到着時間および出発時間を保存する必要がある。エージェントが元のホストに戻ると、１組のチェックが、予想よりも長い時間をエージェント実行に費やしたホストがないことを検証する。何らかのホストが時間限界を超過した場合は、悪意の挙動の疑いがあると考えられる。
【０００５】
KennelおよびJamieson、「Establishing the Genuinity of Remote Computer Systems」、12th USNIX Security Symposium、295〜310頁 (2003)は、破損していないソフトウェア（具体的にはカーネル）の正しいバージョンをマシンが実行していることを検証するために、チャレンジ問題をマシンに送信することを提案している。「Ｇｅｎｕｉｔｙ」と呼ばれるこのシステムでは、チャレンジ問題は本質的に、擬似ランダム・メモリ・アドレスの内容のチェックサム（すなわち１バイト合計）である。チャレンジはまた、その他のハードウェア特有の値をチェックサムに組み込むこともできる。チャレンジ問題を用意した信用されるホストもまたチェックサムを計算し、テスト対象のホストが、信用されるホストと同じチェックサムを計算してそれを「十分に早く」返した場合、ホストは本物であると考えられる。というのは、高速シミュレーションはないと仮定されるからである。
【非特許文献１】Esparza他、「Limiting the Execution Time in a Host: A Way of Protecting Mobile Agents」、IEEE Sarnoff Symposium on Advances in Wired and Wireless Communications (2003)
【非特許文献２】KennelおよびJamieson、「Establishing the Genuinity of Remote Computer Systems」、12th Security Symposium、295〜310頁 (2003)
【非特許文献３】HopcroftおよびUllman、Introduction to Automata Theory, Languages and Computation (Addison-Wesley, 1979)
【非特許文献４】MuchnickおよびJones、Program Flow Analysis: Theory and Applications (Prentice Hall, 1981)
【発明の開示】
【発明が解決しようとする課題】
【０００６】
既知の関数の実行時間を評価することに基づくこのようなチャレンジ・レスポンス方式は、悪意の挙動を検出するための効果的な基盤を提供するが、いくつかの制限を被る。これらの制限が克服されれば、分散ハードウェア／ソフトウェア環境におけるソフトウェア・サブシステムのセキュリティおよび保全性は、大きく改善されるであろう。例えば、Ｇｅｎｕｉｔｙシステムは、クライアントの保全性を検証するために、１つのタイプの関数だけに依拠する。したがって、敵は、予想すべきこのタイプの関数をより容易に予測することができる。したがって、いくつかの異なる関数を利用し、それにより、エージェントの機能を予測するのをより困難にし、このような保全性保護をより強力にする、チャレンジ・レスポンス方式が必要とされている。
【課題を解決するための手段】
【０００７】
概して、少なくとも１つのクライアントのセキュリティを評価するための方法および装置が提供される。評価対象であるクライアントによって、実行可能プログラムが実行される。実行可能プログラムからの結果が受け取られるが、この結果の評価は、クライアントが破損されているかどうかを示す。本発明の一態様によれば、実行可能プログラムは、複数の可能なプログラムのうちの１つである。例えば、実行可能プログラムは、プログラムのライブラリなど複数の可能なプログラムから選択されてもよく、あるいはランダムに生成されてもよい。
【０００８】
本発明の別の態様によれば、結果の評価は、実行可能プログラムがクライアントに提供された時と、結果が受け取られた時との間の経過時間を評価することを含む。概して、実行可能プログラムは、結果の受領に対する時間制約に違反する潜在的な敵によって分析されるための時間複雑性を有する少なくとも１つの関数を含むべきである。
【０００９】
本発明の別の態様は、クライアントのメモリに書き込む少なくとも１つの関数を含む実行可能プログラムを利用する。このようにして複数のプログラムが、クライアントのメモリ位置に書き込む関数を使用して、ある時間にわたって通信することができる。一実施形態では、実行可能プログラムは複数のプログラムを含み、これらのプログラムは、クライアントのメモリの擬似ランダム置換を行い、メモリの１つまたは複数の位置を評価し、メモリを所望の状態に復元する。
【００１０】
実行可能プログラムは、開示されるプログラム・ブラインディング（ｐｒｏｇｒａｍ  ｂｌｉｎｄｉｎｇ）技法を使用して生成することができる。第１のプログラムを得て、第１のプログラムをランダム・プログラムと組み合わせてターゲット・プログラムを生成することによって、ターゲット・プログラムを生成することができる。ターゲット・プログラムは、第１のプログラムの１つまたは複数のプロパティを継承する。例えば、第１のプログラムとランダム・プログラムは、第１のプログラムとランダム・プログラムとからの１つまたは複数の命令をインタリーブすることによって組み合わせることができる。
【００１１】
本発明のより完全な理解、ならびに本発明の他の特徴および利点は、以下の詳細な記述および図面を参照することによって得られるであろう。
【発明を実施するための最良の形態】
【００１２】
図１に、本発明が動作することのできる例示的なネットワーク環境１００を示す。図１に示すように、ネットワーク環境１００は、ネットワーク１５０（場合によってはこの目的だけのためのネットワーク）中で相互接続されたコンピュータ・ノードの集まりからなる。コンピュータ・ノードのセットは、２つのタイプのエンティティを含む。すなわち、１つまたは複数の安全なホスト１１０−１〜１１０−ｎ（以下、ホスト１１０と総称する）と、１つまたは複数の物理的に安全でないかもしれないクライアント１２０−１〜１２０−ｎ（以下、クライアント１２０と総称する）である。安全でないクライアント１２０は、悪意の攻撃を受けやすいという意味で、安全でない。
【００１３】
後で図２に関してさらに論じる本発明の一態様によれば、少なくとも１つのホスト１１０は、信用されるチャレンジャとして動作し、時限式実行可能エージェント・システム（ＴＥＡＳ、Ｔｉｍｅｄ  Ｅｘｅｃｕｔａｂｌｅ  Ａｇｅｎｔ  Ｓｙｓｔｅｍ）を利用して、１つまたは複数のクライアント１２０（本明細書ではレスポンダとも呼ばれる）のセキュリティを評価する。したがって、信用されるチャレンジャは、破損しているかもしれないレスポンダに、認証されたチャレンジを発行する。本発明の一態様によれば、発行されるチャレンジは、レスポンダ上でどんな関数をも潜在的に計算することのできる実行可能プログラムである。レスポンダは、エージェントによって含意された正しい値を計算しなければならないだけでなく、チャレンジャによって規定された時間限界内にこの計算を完了しなければならない。
【００１４】
本明細書では、時限式実行可能エージェント・システムは、保全性確認の対象であるクライアント１２０上で実行されるように設計されたコンピュータ・コード（すなわちエージェント）である。クライアント１２０は未知のコードを実行するよう求められることになるので、信用されるエンティティからコードが生じたことを示すために、エージェントは送信側ホスト１１０によって署名されなければならない。クライアント１２０は、ＴＥＡＳエージェントを受信すると、すぐにコードを実行して、エージェントが生み出すどんな結果も発行元ホストに返さなければならない。エージェントは、クライアント上でおそらく完全な許可を得て実行される任意のコンピュータ・プログラムなので、すべてのメモリ位置に対して読み書きすることができ、クライアント状態に関する計算を（例えばチェックサムの形で）実施することができる。より複雑なエージェント方式ではおそらく、多くの可能性の中でもとりわけ、前のエージェントの訪問によってなされた状態修正を調停することもできる。
【００１５】
ＴＥＡＳの重要な一面は、クライアント上でのエージェントの実行期間、ならびに伝送時間が計時されることである。エージェントの出力が有効になるためには、出力は固定期間内にホストによって受信されなければならない。本明細書で論じるように、このことは、クライアント上で稼動している敵がエージェントの分析に計算を費やすのを防止するのに役立ち、また、エージェントを動的解釈する際に課されるオーバーヘッドなど、その他のオーバーヘッドを敵が招くのを防止するのに役立つ。ターゲット・システムが密に結合されているほど、エージェントに対するアプリオリな時間限度は精密とすることができる。例えば、通信が密結合バックプレーンを介する無線基地局ボックスでは、通信ならびに実行時間を精密にモデル化することができる。一方、リモート通信、さらにはインターネットを介した通信を含むシステムでは、移動中時間に対する厳しい限界を確認するのはより難しい場合がある。
【００１６】
概して、ＴＥＡＳは、保全性を検証するための確率的な手法と考えることができる。単一のエージェントが、単一のメモリ位置だけをチェックすることができ、あるいは小さいメモリ領域のハッシュを計算することができる。また、時間内に返信が受信されない場合、これはネットワーク遅延だけを意味するのであって必ずしもクリティカルな保全性違反を意味しない場合がある点でも、確率的である。長い期間にわたって動作する多くのＴＥＡＳエージェントの集まりが、クライアント上で実行されているソフトウェアを、意図され予想されたものであると高確率で確定することができる。
【００１７】
本発明の別の態様によれば、計算的エージェントをランダムに（または擬似ランダムに）生成して、有用なエージェントの大きなライブラリを効率的にポピュレートする方法が開示される。手書きのエージェントにランダムな機械生成エージェントが散在し、さらに両方とも不明瞭化されて、セマンティクス的に等価な追加の変形が作成された場合、これは、敵がＴＥＡＳ保護と効果的に戦うために「学習」する必要のある、大きな障害をもたらす。
【００１８】
モデル、定義、システム要件
前に示したように、本発明により、ホスト・ノード１１０は、１つまたは複数のクライアント・システム１２０の保全性を確定することができる。クライアント１２０は、ＲＡＭ計算モデルで指定されるコンピュータ・プログラムを実行するものと仮定する。ＲＡＭモデルは、現代のマイクロプロセッサおよびディジタル信号プロセッサのアーキテクチャとよく対応する。ロードストアおよびメモリベースの命令セット、ならびにスタック・アーキテクチャは、ＲＡＭモデルによって容易に取り込まれる。説明をわかりやすくするために、例示的な実施形態では、ホスト１１０およびクライアント１２０をユニプロセッサとして具体化する。変数Ｃ（｛Ｃ｝＝周期／秒）は、このようなプロセッサのＣＰＵレートを示す。クライアント１２０はまた、どんな改ざん防止ハードウェア（例えば、暗号演算を実施するための安全プロセッサを備えるもの）も保持しないものと仮定する。クライアント１２０のメモリは、基本的に３つの領域、すなわちコード、データ、未使用メモリからなる。当然、データ領域の各部分が、異なる時点で未使用である場合がある。｜Ｍ｜に等しい変数ｍは、ワード数で測定された、クライアントのメモリのサイズを示す。
【００１９】
通信に関してさらに、システム１００中のノード１１０および１２０、特にホスト１１０は、ネットワーク１５０における伝送遅延のかなり正確な推定値を有するものと仮定する。これは例えば、ホスト・ノード１１０をクライアント・ノード１２０に接続するリンクまたはチャネル上の利用可能な帯域幅に関するホストの知識を使用してモデル化することができる。変数Ｂ（｛Ｂ｝＝ビット／秒）は、所与のリンク上の利用可能な帯域幅を示す。計算レートや帯域幅などの測定値の推定は経験的に実施することができることに留意されたい。
【００２０】
敵モデル
本発明のＴＥＡＳは、クライアント・ノード１２０が敵（例えばコンピュータ・ウイルス、敵対者、悪意の部内者）によって破損および／または乗っ取りされることに対する防御を提供する。本発明は、システムを攻撃するどんな敵Ａも強制的に多項式時間計算を実施させられるものとする。言い換えれば、またより正式には、それらの計算力は、確率的な多項式時間チューリング・マシンの計算力である。
【００２１】
攻撃は、敵Ａが単純にクライアントの構成または状態に修正を加えることから、アクティブにクライアントを制御することまでの範囲にわたる可能性がある。これらの攻撃に対する防御戦略は、様々なタスクをクライアントにおいて実施するためのプログラム（「エージェント」）を送信することを含むことになる。敵は、気付かれずに進むためには、正しい出力を適時に提供する必要がある。したがって、敵がこのような入来プログラムに対して実施する分析のタイプに従って、敵のタイプは２クラスに分けられる。
【００２２】
オフラインの敵
クライアントを制御するオフラインの敵は、入来した照会プログラムを、実行することなく分析しようとする。プログラムの静的分析では、プログラムは、入力なしで、およびそれらが実行されることになるマシンの状態なしで、隔離されて分析されることを想起されたい。オフラインの敵も、クライアントの入力および状態へのアクセスを有する場合もあることを除いては、同様のタイプの分析を実施することになる。Ａｏｆｆは、オフラインの敵のクラスを示す。
【００２３】
オンラインの敵
クライアントを制御するオンラインの敵もまた、入来プログラムを実行できることになる。Ａｏｎは、このオンラインの敵のクラスを指す。敵に攻撃されたノード（クライアント）は、破損ノードと呼ばれる。敵は、計算力がわかっているクライアントにおいて実行されると仮定する。したがって、計算ステップは容易に絶対時間に変換することができる。
【００２４】
時限式実行可能エージェント・システム（ＴＥＡＳ）
図２は、本発明の特徴を組み込んだ例示的なホスト１１０を示す概略ブロック図である。図２に示すように、ホスト１１０は媒体２５０と対話する。ホスト１１０は、プロセッサ２２０、ネットワーク・インタフェース２２５、メモリ２３０を備え、任意選択で媒体インタフェース２３５および表示装置２４０を備える。ネットワーク・インタフェース２２５は、ホスト１１０がネットワーク１５０に接続できるようにし、媒体インタフェース２３５は、ホスト１１０がディジタル多用途ディスク（ＤＶＤ）やハード・ドライブなどの媒体２５０と対話できるようにする。任意選択のビデオ表示装置２４０は、装置２００の人間ユーザと対話するのに適した任意のタイプのビデオ表示装置である。一般に、ビデオ表示装置２４０は、コンピュータ・モニタまたはその他の類似のビデオ表示装置である。
【００２５】
図２に示すように、例示的なホスト１１０は、ＴＥＡＳ２６０を備える。ＴＥＡＳ２６０は、図２に示すようにホスト１１０自体によって実装されてもよく、あるいはいくつかのホスト１１０によって共有される何らかの中央サーバによって実装されてもよいことに留意されたい。前に示したように、時限式実行可能エージェント・システムは、ネットワーク１５０中の様々なノード１１０、１２０間で、チャレンジ（すなわちエージェント）を発行する。やはり、チャレンジを発行するノード（通常は安全なホスト１１０）はチャレンジャと呼ばれ、照会を受けるノード（通常はクライアント１２０）はレスポンダと呼ばれる。ターゲット・ノードにおけるエージェント実行からの、チャレンジャによって予想されるアプリオリに予測不可能な結果の他に、重要な定量化可能な副作用は、レスポンダにおいて実行されるエージェントが（正しい）結果を提供するのにかかる時間である。このようなエージェントが実施する場合のあるタスクの例には、レスポンダ状態の任意の点で実行を開始すること、メモリ位置の内容またはレスポンダのスタックの状態を含む何らかの（ランダムな）計算を実施すること、そのメモリ内容のランダムな置換を実施することが含まれる。
【００２６】
図２に示すように、また後で図３および４に関してさらに論じるように、例示的なＴＥＡＳ２６０は、本発明の特徴を組み込んだエージェント生成プロセス３００およびエージェント検証プロセス４００を含む。したがって、チャレンジャとして働くノード１１０上で実行されるエージェント生成プロセス３００およびエージェント検証プロセス４００によって、（ε，Ａ）時限式実行可能エージェント・システム（ＴＥＡＳ）が定義される。
【００２７】
図３は、エージェント生成プロセス（Ｔｇｅｎ）３００の例示的な実装形態を述べたフローチャートである。概して、Ｔｇｅｎは、ステップ３１０の間に、環境パラメータ（リンクの帯域幅ＢおよびレスポンダのＣＰＵレートＣ）とセキュリティ・パラメータｋとを、入力として受け取る。その後、ステップ３２０の間に、ＴＥＡＳインスタンスＴを生成する。Ｔは、レスポンダにおいて実行されることになる１つまたは複数のプログラム（エージェント）Ｐｉからなり、これは｛（Ｐ１，ｏ１，ｔ１，π１），（Ｐ２，ｏ２，ｔ２，π２），．．．（Ｐｋ，ｏｋ，ｔｋ，πｋ）｝に等しい。Ｐｉ，１≦ｉ≦ｋであり、ｏｉはその予想される出力であり、ｔ１はその予想される伝送および実行時間であり、π１はその耐久しきい値である。プログラム（エージェント）Ｐｉが保持すべきプロパティについては、後で「オフラインの敵からの保全性保護」および「オンラインの敵からの保全性保護」と題した章で論じる。例示的なエージェント生成技法の考察については、「自動エージェント生成」と題した章を参照されたい。ステップ３３０の間に、生成したＴＥＡＳインスタンスＴを実行に向けてレスポンダに送信し、その後、プログラム制御は終了する。
【００２８】
図４は、エージェント検証プロセス（Ｔｖｅｒ）４００の例示的な実装形態を述べたフローチャートである。図４に示すように、エージェント検証プロセス（Ｔｖｅｒ）４００はまず、ステップ４１０の間に、ＴＥＡＳインスタンスＴと、ｋ個の対のリスト
【数１】
2006127521.tif 000003
とを、入力として得る。ｏ’ｉは、レスポンダでの実行後にエージェントＰｉから提供された結果である。ｔ’ｉは、エージェントがレスポンダに送信されてから結果が受信されるまでの経過時間であり、それぞれチャレンジャのクロック上で測定される。ステップ４２０の間に、レスポンダが敵によって破損されているかどうかを判定するためのテストを行う。ステップ４２０の間にレスポンダが敵によって破損されていると判定された場合は、ステップ４３０の間に「−ＯＫ」の出力を生成し、そうでない場合はステップ４４０の間に「ＯＫ」の出力を生成し、その後、プログラム制御は終了する。
【００２９】
レスポンダが敵クラスＡの敵によって破損されている場合は、Ｔｖｅｒがステップ４４０の間に「ＯＫ」を出力する確率はε未満である。一方、レスポンダが破損されていない場合は、Ｔｖｅｒは曖昧にせず常に「ＯＫ」を出力すべきである。実際は、環境パラメータ（具体的にはリンクの帯域幅）の変動を考慮に入れて、両面的なエラー定義を提供すべきである。単純にするために、これらのパラメータに対して、決して違反されない何らかのハード限度が想定される。確率は、アルゴリズムによってなされる複数のランダムな選択にわたって取られる。
【００３０】
より具体的には、｜Ｐｉ｜がｉ番目のプログラムのサイズを示し、Ｄ（Ｐｉ）が、Ｐｉの実行中に実行される動的命令の数を示すものとする。この場合、ｔｉは通常、Ｔｇｅｎによって以下のように計算される。
【数２】
2006127521.tif 000004
【００３１】
Ｔｖｅｒに関して、Ｔｖｅｒがその入力に対して実施することになるテストのタイプは、以下の形になる。
【数３】
2006127521.tif 000005
の場合、
【００３２】
プログラム分析の背景および要件
停止性のプログラムは、入力値のセットから出力値のセットまで、有限数の計算ステップで関数を計算する。２つのプログラムは、それらのテキストが同じであれば、すなわちプログラムを表すビット・ストリングが同一であれば、シンタックス的に等価であると考えられる。表現ｔｘｔ（Ｐ）を使用して、プログラムＰのテキストを示す。２つのプログラムは、同じ入出力関係を有していればセマンティクス的に等価である。
【００３３】
オフラインの敵は、プログラム分析のアルゴリズム複雑性、またはほとんどの非自明なプログラム・プロパティの決定不能性を用いる本発明により、挫折させられる。これについては後で「オフラインの敵からの保全性保護」と題した章でさらに論じる。プログラムのテキストを一般に最適化の目的で自動分析することは、よく理解されている。一般に、プログラムの出力値、ならびにプログラムが実施するかもしれないいずれかの副作用の点からみた、プログラムＰの挙動は、プログラムに対する何らかの大域データ・フロー分析を介して部分的には決定することができる。Ｐの命令シーケンスｔｘｔ（Ｐ）が与えられた場合、その動作を静的に演繹するには、以下のタスクのいくらかを実施しなければならない。
１．Ｐの制御フロー・グラフ（ＣＦＧ）ＧＰを抽出する。
２．ＧＰを可約フロー・グラフＧ’Ｐ（以下参照）に変換する。
３．ＧＰ（またはＧ’Ｐ）に対して大域データ・フロー分析を実施する。
【００３４】
最良の場合、ＣＦＧの抽出は時間複雑性Ω（ｎ）を有し、ｎは通常、プログラムが含む命令の数や、プログラムが有する割当ての数など、プログラムＰのサイズに関する何らかの静的測定値である。しかし、いくつかのタイプの分岐の場合、この複雑性は、超一次Ω（ｎ２）さらにはそれ以上に増大する。また、得られるＣＦＧは、この場合もやはりループ中への分岐がないこと（あること）に応じて、可約である場合とそうでない場合がある。
【００３５】
エージェント生成の目標は、分析を困難にすることである。これは例えば、既約フロー構造を導入することによって行うことができる。図５に、既約フロー・グラフにつながる構造化されていない制御フローを含むプログラム部分５００を示すが、既約フロー・グラフは、潜在的な敵による高価な分析時間を生じさせる。図５は、ループ本体への構造化されていないｇｏｔｏステートメント５１０のせいで既約フロー・グラフを生じさせるプログラム部分５００を含む。既約グラフを可約グラフに変換することは、いわゆるノード分割によって可能だが、ノード分割はプログラム・サイズを（したがってそのＣＦＧサイズを）指数関数的に増大させる。反復アルゴリズムによって既約ＣＦＧに対する大域データ・フロー分析を行うことは、複雑性Ω（ｎ２）を有するが、可約ＣＦＧに対しては代替アルゴリズムを使用して線形時間に近づくことができる。
【００３６】
システム要件
図２に示したように、チャレンジャ・ホスト１１０は、ＴＥＡＳシステムと対話するように本明細書で修正された市販のコンピューティング・プラットフォーム（ＰＣやサーバなど）を使用して具体化することができる。チャレンジャは、定期的にチャレンジを発行して、そのクライアント・レスポンダのブックキーピングを実施するだけでよい。一方レスポンダは、ＴＥＡＳシステム中で使用されるためには、そのリソースのアクセスおよび使用に関して特別なシステム要件を満たさなければならない。具体的には、信用されるチャレンジャ１１０によって任意のコードが承認されていようとも、レスポンダ・クライアント１２０はそのコードの実行を許可しなければならない。さらに、レスポンダのオペレーティング・システムは、エージェントの実行の継続時間にわたって、エージェントがマシンに完全にかつ中断されずにアクセスできるようにしなければならない（エージェントは通常は小さく時間複雑性が低いので、これは通常は問題ではない）。これは実際には、レスポンダが割込みをディセーブルにして、ＩＯやオペレーティング・システムのプロセス・スケジューラからのタイムスライシングなどの外部または内部イベントを防止しなければならないことを意味する。レスポンダはまた、エージェントがすべてのメモリにアクセスできるようにもしなければならない。
【００３７】
レスポンダはまた、エージェントを受信して実行するように装備されていなければならない。したがってレスポンダは、エージェントを配置するための（小さい）空きメモリ部分、ならびにこの配置を行ってエージェントの実行を開始するための些細なソフトウェア機械を必要とする。より複雑な方式では、このために使用されるメモリ位置を変動させることもできる。すなわち、エージェントは汎用プログラムなので、エージェントは、所与のレスポンダ上での後続のエージェント呼出しに使用されるソフトウェア、メモリ位置、パラメータを修正することができる。
【００３８】
ＰＣ上でよくみられるものなど既成のオペレーティング・システムは、前述の要件のため、ＴＥＡＳにとって十分である可能性は低いが、移動電話機や、無線基地局のような独自仕様のコンピューティング・アプライアンスなど、多くのデバイスで使用されるカスタマイズ可能なリアルタイム・オペレーティング・システムは、ＴＥＡＳセキュリティ手法を受け入れられるほど十分にカスタマイズ可能であり低レベルである。
【００３９】
プログラム分析によるオフラインの敵からの保全性保護
前に示したように、オフラインの敵は、受信またはインターセプトしたエージェントを精査および分析することができる敵であり、エージェントの実行環境が利用可能な場合とそうでない場合があるが、エージェントを実行することはできない。本発明は、プログラム分析のアルゴリズム複雑性、またはほとんどの非自明なプログラム・プロパティの決定不能性の原理に基づいて生成されたエージェントを使用して、このようなオフラインの敵と戦う。
【００４０】
決定不能性ベースの保護
ライスの定理によってもたらされるような、非自明なプログラム・プロパティの決定不能性は、エージェントのオフライン分析を実行不可能にする。例えば、HopcroftおよびUllman、Introduction to Automata Theory, Languages and Computation (Addison-Wesley, 1979)を参照されたい。すなわち、一般にプログラムが停止するかどうかや、いくつのステップがそれに必要かなどのプロパティは、計算不可能であり、したがってこれらは、（すべてのプログラムについて）オフラインの敵によって決定できない。
【００４１】
ＴＥＡＳエージェントが実行する命令の数を計算することの非自明なプログラム・プロパティを考えてみる。エージェントは、この動的な値を、チャレンジャに返す結果に組み込むことができる。実行される命令の数は、エージェントが実行されているときにエージェントによって自明に計算することはできるが、アプリオリに計算不可能である。どんな量のオフライン分析も、このような決定不能なプロパティを正確に決定することはできない。
【００４２】
複雑性ベースの保護
実際上、オフラインの敵はプログラム分析に基づく敵である。すなわち、エージェントのフローを分析しようとし、この分析を用いてエージェントの結果を演繹しようとする敵である。こうすることにより、敵は、例えばエージェントがどのメモリ位置にアクセスするかを認識したいと望む。敵がいくつかの位置を悪意の目的で使用しているために、敵がこれらの位置を「保護」または「隠蔽」する必要がある場合、このような分析は、エージェントが実行される前にどの位置を一時的にそれらの正しい値に「復元」しなければならないかを正確に特定するのに役立つことができる。アドレス値はエージェント中で動的に計算される場合があり、したがって、すべてのクリティカルな位置を決定するには、非自明な分析が必要であることに留意されたい。さらに、分析はまた、エージェントがその入力について計算する関数も推論しなければならない。前に示したように、プログラム分析は固有の時間複雑性および空間複雑性を有し、これらを用いて、敵に計算を、したがって時間を分析タスクに費やさせることができる。これにより、敵が望ましい値を適時にチャレンジャに返すことはより困難になる。
【００４３】
このようにしてプログラム分析を用いるオフラインの敵と戦うために、エージェントを構成して、分析を実施することの時間複雑性によって敵が応答受信のＴＥＡＳ時間枠に違反するようにすることができる。具体的には、反復データ・フロー分析の場合、プログラム分析を実施することの超一次時間複雑性（例えばΩ（ｎ２））を利用する。
【００４４】
例えば、帯域幅パラメータおよび計算パラメータが、Ｂ＝１０６バイト／秒およびＣ＝１０９周期／秒であり、平均してプロセッサが１周期あたり１つの命令を完了するシステムを考えてみる。何らかのＴＥＡＳエージェントのサイズが１０３命令であり、各命令のサイズが４バイトであるものとする。さらに、このエージェントが線形動的ランタイムを有し、したがって、クライアント上で完了するのに少なくとも１０３／１０９＝０．０００００１秒を要するものとする。エージェントの結果が４バイトにちょうど収まる場合、エージェントをホストからクライアントに通信してクライアントの結果をホストに返すための総時間は、通信および計算の総時間ｔ≧０．００４００５に対して、４×１０３／１０６＋４／１０６＝０．００４００４秒が下限となる。この場合、敵が、含意される定数≧１でΩ（ｎ２）分析の最低値で実施しなければならない場合、敵は、追加の（少なくとも）０．０１秒の完了時間を費やして、時間ｔ’＞０．０１４００５を与えなければならず、それによりＴをほぼ（およそ）３．５倍（容易に検出可能なはずの多くの量）で支配しなければならない。エージェントのサイズをさらに大きくすることにより、この隔たりは任意に大きくすることができる。
【００４５】
第１に、クライアントに送信されるエージェントの混合が、高速な（線形または一定の実行時間の）エージェント、ならびに、より複雑な（おそらくは２次または３次の実行時間の）エージェントを含むことが重要である。これにより、いくつかのエージェントについては、分析はこれらのエージェントのＴＥＡＳ時間耐久しきい値（π）を支配することが保証されることになり、この点は、エージェントを賢明に構築することによって自明に扱うことができる。第２に、多くの非自明なエージェントについては、敵の分析時間がエージェントの実行時間よりも漸近的に大きくなるよう保証することが可能でなければならない。
【００４６】
一般的な分析は、超一次（エージェントのサイズで）Ω（ｎ２）時間を必要とするようにすることができる（これもやはりエージェントを慎重に構築することによって可能である）。ＴＥＡＳに対するオフラインの敵は、エージェントによって精査されるクリティカルな位置と、エージェントが計算する関数とを決定しなければならず、また、エージェントが実施するかもしれない副作用があればそれも決定しなければならない。副作用は、結果の値に直接影響することはないがクライアントまたは将来のエージェントによる後続の計算に影響を及ぼす可能性のある、プログラムの（エージェントの）状態に対する修正である。したがって敵Ａは、これを決定するために、当該のエージェントに対して何らかの大域データ・フロー分析を実施しなければならない。前述のように、エージェント記述者は、少なくともエージェントのいくらかのサブセットについては、分析を実行よりも漸近的に高価にすべきである。例えば以下のようにして、分析を実行よりも漸近的に高価にすることができる。
１．ＣＦＧ抽出を高価にする。
２．抽出されたＣＦＧが既約であること、およびこれを可約の形に変換すると結果的なＣＦＧのサイズが爆発することを保証する。
【００４７】
（１）または（２）あるいは両方を行うことは、ＣＦＧ抽出が２次であること、データ・フロー分析が２次であること、または、何らかのδ＞１で、可約の形Ｐ’に変換された後のエージェントＰのサイズがｎδの形であることを含意する（したがって、Ｐ’に対する線形分析でさえ、もはや｜Ｐ｜において線形ではない）。
【００４８】
敵が実施しなければならない分析の例は、ｄｅｆ−ｕｓｅ（定義−使用）分析および利用可能式分析（ａｖａｉｌａｂｌｅ  ｅｘｐｒｅｓｓｉｏｎｓ  ａｎａｌｙｓｉｓ）である。前者は、変数ｘについての定義ステートメントを、後続の式内におけるｘの使用に束縛するものである。利用可能式分析は、式の最初の計算と現在プログラム・ポイントとの間のすべての変数定義が与えられた場合に、依然として正確な前に計算された式のセットを、あらゆるプログラム・ポイントにつき計算するものである。既約フロー・グラフに対しては、このような分析は、標準的な反復アルゴリズムを使用するとΩ（ｎ２）時間が必要である。しかし、フロー・グラフが可約の場合は、平衡パス圧縮（ｂａｌａｎｃｅｄ  ｐａｔｈ  ｃｏｍｐｒｅｓｓｉｏｎ）などの代替アルゴリズムを使用して、より高速に、例えば時間Ω（ｎ  ｌｏｇ  ｎ）で実施することができる（MuchnickおよびJones、Program Flow Analysis: Theory and Applications (Prentice Hall, 1981)参照）。しかし、この場合もやはり、必要とされる既約化ステップがＣＦＧのサイズを激増させる可能性がある。
【００４９】
図６に、短いサンプル・プログラム６００と、これに対するｄｅｆ−ｕｓｅ分析の結果とを提供する（定義は列６１０、使用は列６２０）。敵Ａが一般にエージェントを十分に分析するには、少なくともｄｅｆ−ｕｓｅ分析（または等価なもの）が必要である。サンプル・プログラム６００中で、敵は、最後のステートメントによって返される値ｃの値を決定しなければならない。そうするためには、敵は、変数の定義と、結果的な式の形成におけるそれらの後続の使用とを調べなければならない（他にも多くのことがあるがとりわけ）。サンプル・プログラム６００では、敵Ａがｗｈｉｌｅループ６０５で変数ｃの定義を暴かなければならないことは明白であり、ｗｈｉｌｅループ６０５は、変数ａおよびｂの値に依存し、変数ａおよびｂは、最初にループの前に初期化され、次いでループ中で繰り返し再割当てされる。さらに、この例がやはり示すように、ｄｅｆ−ｕｓｅ情報を使用しても不十分であることは多い。すなわち、配列は動的な値を使用して索引付けされる（例えば、Ｍ｛ａ｝およびループは複数回実行される）。このようなプログラム構造は、ＴＥＡＳエージェントによって計算される値および副作用を精密に決定するのに必要な分析はもちろん、緩く境界付けるのに必要な分析さえも複雑にする。上に示したように、また要約すると、知られているプログラム分析技法を使用しても、この情報を線形時間およびオフライン方式で得ることはできない。
【００５０】
自動エージェント生成
魅力的なエージェント生成手法の１つは、エージェント・ライブラリを事前計算するかまたはエージェントを必要に応じて進行中に生成することによって、チャレンジ・サーバ上で自動的に生成を行うことである。残念ながら、プログラムの機械生成は現在、人間が生成できるような複雑で特殊なものにいくらかでも近いプログラムを作成するほど十分には進歩していない。しかし、この章で述べるように、単純なプロパティを有する小さい（手書き）プログラムを、意識されることなく生成されたランダムなプログラムと組み合わせることが可能であり、これをプログラム・ブラインディングと呼ぶ。
【００５１】
擬似ランダム・エージェントによるプログラム・ブラインディング
本発明の別の態様によれば、エージェントはプログラム・ブラインディング技法を使用して生成される。シンタックスおよびセマンティクスを有する機械言語Ｌがある場合に、またはより正しくは、その（固定）命令セットおよびそれらに対応するアクションと、オペコードおよびオペランドのセットと、命令をその言語で形成するための規則のセットとを有する機械言語Ｌがある場合に、サイズｎの（擬似）ランダム・プログラムが呼び出され、その結果、ｎ個の有効な命令がＬで（擬似）ランダムに生成される。このようにして生成されたプログラムには、有限でないものもあることに留意されたい。
【００５２】
ブラインディング操作の重要な一面は、遺伝学から取り入れられた乗換え（ｃｒｏｓｓ−ｏｖｅｒ）の概念である。それぞれの入出力関係とプロパティ・セットとを有する２つのプログラムＰ１およびＰ２がある場合に、Ｐ１とＰ２との間の乗換えはプログラムＰ３であり、Ｐ３は何らかの効率的な変換によって得られ、また、入力プログラムのプロパティのいくつかを含むプロパティ・セットを有する。言い換えれば、Ｐ３は、Ｐ１および／またはＰ２が保持するプロパティのいくつかを「継承」する。
【００５３】
例示的な一実装形態では、暗号法における「ブラインディング」の概念と対比させてプログラム・ブラインディングと呼ばれる特定の種類の乗換え操作（「
【数４】
2006127521.tif 000006
」として示す）が利用される。一般に、プログラムＰがある場合に、この考えは、Ｐをランダム・プログラムと組み合わせて、それにより、得られるプログラムがＰのプロパティのいくつかを維持するがその挙動（例えばその出力）は予測困難であるようにするものである。２つのプログラムの並置を生み出す方法にはいくつかあるであろう。我々の場合では、通常はターゲット・プログラムがランダム・プログラムよりもずっと小さいことになるので、
【数５】
2006127521.tif 000007
は、ランダム・プログラム・テキスト中でＰの各命令を一様かつランダムにインタリーブすることとして定義される。ＰＲをランダム・プログラムとすると、
【数６】
2006127521.tif 000008
がブラインディング済みプログラムである。
【００５４】
上に示したように、プログラムＰがランダム・プログラムと組み合わされ、それにより、得られたプログラムはＰのプロパティのいくつかを維持するが、その挙動（例えばその出力）は予測困難である。プログラムＰは、敵Ａ∈Ａｏｆｆでない場合は（ε，Ｎ）−セマンティクス的に不確定であり、ｔｘｔ（Ｐ）および入力インスタンスＩがある場合に、すべてのＩについて、Ｎ個の分析ステップの後に、εよりも高い確率でＯ←Ｐ（Ｉ）を決定することができる。前述のように、ブラインディング済みプログラムは、（εｂ，ｎ）−セマンティクス的に不確定でなければならず、ｎ＝｜Ｐ＊｜である。
【００５５】
最後に、ブラインディング済みプログラムの出力は、元のプログラムの入力に依存する場合とそうでない場合がある。依存性が保存されるブラインディング済みプログラムを、入力センシティブなブラインディング済みプログラムと呼ぶ。
【００５６】
例示的な構造およびセキュリティに関する議論
前述の自動エージェント生成技法に基づいて、オフラインの敵に対する複雑性ベースのＴＥＡＳを考えてみる。説明しやすくするために、前に「複雑性ベースの保護」と題した章で論じた、分析を困難にするプロパティの１つ、すなわち既約ＣＦＧを含むエージェントを生成することのプロパティを利用する。
【００５７】
サイズｎのランダム生成されたエージェントが既約ＣＦＧを含む（したがってΩ（ｎ２）分析時間を含意する）分数確率を、
【数７】
2006127521.tif 000009
で示すものとする。一般に、ＴｇｅｎすなわちＴＥＡＳ生成アルゴリズムは、適したｎに対して、
【数８】
2006127521.tif 000010
の不確かなプログラムを含むインスタンスを生成することになる。特定の生成プロセスに応じて、
【数９】
2006127521.tif 000011
を様々な精度に推定することができる。原則として、この確率は、例えば一様命令サンプリング・プロセスでループ中への逆方向ジャンプが行われるループの発生確率を推定することによって（図５参照）、分析的に推定することができる。別法として（または追加で）、エージェント・ライブラリがオフラインで事前計算される場合、多くの逆方向ジャンプを保持するランダム・エージェントを最初に選択し、次いでさらにプログラム分析（最もよく知られた方法を用いる分析）をそれらに適用することができる。このオフライン「知識ベース」によってまた、進行中生成プロセスを補助することもできる。
【００５８】
ＴｇｅｎすなわちＴＥＡＳ生成アルゴリズムは、（ε，Ａｏｆｆ）ＴＥＡＳインスタンスを生成する。最初に、レスポンダにおいて何らかのチェックを実施することになるターゲット・プログラムを、Ｔｇｅｎに提供する。この章の最初で触れたように、ターゲット・プログラムは、少量の演算からなる単純なプログラムであると仮定する。次いで、レスポンダにおける入力ＣＰＵレートＣと、リンク帯域幅Ｂ（およびその分散統計）とがある場合に、Ｔｇｅｎは、２次分析によって消費される時間が、高速実行の（例えばせいぜい線形の）エージェントによって課される時間を大きい因数で支配することになるように、ｎを選択する。この因数がどれくらい大きいかは、帯域幅の分散統計に依存することになる。例えば、半分の帯域幅の確率を０と仮定した場合、３以上の因数である。これにより、Ｔｇｅｎは、すべてのエージェントについて事前の耐久しきい値を固定することができる（例えばπ＝２）。ただし、Ｔｇｅｎは、次のステップの後で何らかの追加の微調整を実施する場合もある。
【００５９】
Ｔｇｅｎは次に、ターゲット・プログラムを、サイズｎであるｋ個の有限ランダム・プログラムでブラインディングすることに進む。これにより以下のとおりである。
１．あらゆるプログラムは入力センシティブである。
２．（少なくとも）ｋ’＜ｋ個のエージェントの実行時間は長くてもｎであり、ｋ’は、
【数１０】
2006127521.tif 000012
を満たす最小整数である。
【００６０】
Ｔｇｅｎは、ランダム・プログラムの入力センシティブ性を、それらを実行することによって決定する。このとき、Ｔｇｅｎは、各ブラインド・プログラムＰ＊ｉ（１≦ｉ≦ｋ）につきその出力ｏｉを記録することの他に、ｔｉすなわちプログラムの実行時間（または動的命令の数でも等価である）の合計、ならびに予想伝送時間も、式（１）に従って計算して記録する。計算集約的なエージェントの場合、Ｔｇｅｎはまた、それらの耐久しきい値も調整して（低くして）、これらのエージェントの計算時間が支配項となることを反映させることもできる。最後に、Ｔｇｅｎは、このように構築されたＴＥＡＳインスタンス｛Ｐ＊ｉ，ｏｉ，ｔｉ，πｉ｝ｋ１を出力する。
【００６１】
次にチャレンジャは、ＴＥＡＳインスタンス中のエージェントを１つずつレスポンダにサブミットする。Ｔｖｅｒは、ＴＥＡＳインスタンスと、ｋ個の対のリスト｛（ｏ’ｉ，ｔ’ｉ）ｋ１とを取る。ｏ’ｉは、エージェントＰｉ＊から提供された結果である。ｔ’ｉは、エージェントがレスポンダに送信されてから結果が受信されるまでの経過時間であり、それぞれチャレンジャのクロック上で測定される。Ｔｖｅｒは、本明細書で概説するテストを適用して、レスポンダが破損しているか否かを判定する。
【００６２】
オンラインの敵からの保全性保護
説明のために、次の例を考えてみる。敵がメモリ位置ｌを保護しようとしている。具体的な例として、ｌは、セットトップ・ボックスの特性を修正するように変更された構成データを含むものとすることができる。この場合にレスポンダがＴＥＡＳエージェントＰを受信すると、敵は、プログラムＰに分析を適用した後で、このプログラムを実行して、Ｐによってアクセスされたメモリ位置がｌを含むかどうか判定する。Ｐがｌにアクセスすると判定できた場合、敵はｌを適切な値に復元し、Ｐによってアクセスされないと敵が判定した位置ｌ’に、不適切な悪意の値をキャッシュすることができる。Ｐが完了すると、Ｐは正しい値をチャレンジャに返すが（ｌは適切な値を含んでいたので）、次いで敵は、その不適切な構成をｌに再インストールすることができる。
【００６３】
この章では、レスポンダを制御するオンラインの敵は、入来エージェントを実行することができる（言い換えれば、それらに対して「ランタイム分析」を実施することができる）と考える。この場合、前の章からの静的分析の問題の難しさは去り、攻撃を検出するために新しい方法が必要である。
【００６４】
レスポンダの通常の（正当な）メモリ構成は、コード領域およびデータ領域で構成されることになる。前者は、不変であり、通常はフィンガプリンティング可能だが、後者は、レスポンダの実行の状態に応じて、変動し、未使用域を含む。データ域の使用／未使用部分に関する正確な知識がチャレンジャに知られていないと仮定する。そうでない場合は、オンラインの敵に対していくぶんより単純な防御が可能であろう。レスポンダを制御するオンラインの敵は、この領域で、入来エージェントに対するインタープリタ攻撃を仕掛けることができる。本質的に、敵は、保護領域への／保護領域からのロードおよび記憶と、このような領域での各コード部分の実行とが常に回避されるような方式で、このようなコードを使用してエージェント（例として３つの命令を提供する）の実行を制御することができる。
【００６５】
図７に、例示的なエージェントについてのコード部分７１０と、インタープリタ攻撃の間にコード７１０を解釈するためのバーチャル・マシンの内部ループ７２０とを示す。図７に示すように、例としてエージェントのコード７１０の３つの命令を提供する。インタープリタ・コア７２０を使用してエージェントを解釈するためのオーバーヘッドは一定（例えば、シミュレートされる１命令につき５〜１０命令）になることに留意されたい。この場合もやはり、これは常に、敵によって何らかの未使用メモリ域で実施可能となる。
【００６６】
オンライン防御構造およびセキュリティに関する議論
高レベルでは、このタイプのインタープリタ敵を破るための戦略は、完全に実行された場合に敵にレスポンダの制御を放棄させるようなＴＥＡＳインスタンス、あるいはやはり照会／エージェントに適時に応答できないことによって、敵に検出のリスクを冒させるＴＥＡＳインスタンスを生成することであろう。レスポンダのアーキテクチャおよびシステム要件に関する仮定については上述した。
【００６７】
バイト数で測定したレスポンダのメモリのサイズを、ｍ＝｜Ｍ｜で示すものとする。この章では、ｍは規定であってチャレンジャに知られており、敵によって増加されることはないと仮定する。上述の仮定に従って動作するオンラインの敵と戦うために、Ｔｇｅｎは、以下のようなエージェント｛Ｐ１，Ｐ２，Ｐ３｝の基本構造を有するＴＥＡＳインスタンスを生成する。
【００６８】
１．Ｐ１は、レスポンダのメモリの擬似ランダム置換のためのコードを搬送するエージェントである。Ｐ１は、完了時に「準備完了」メッセージを返す。図８に、レスポンダのすべてのメモリのランダム置換を実施するための例示的なコード８００を示す。
２．Ｐ２は、（今やランダムな）メモリ位置とプログラム制御位置（例えばプログラム・スタック）とに関する照会を搬送する。Ｐ２は、それ自体がいくつかのエージェントからなるものとすることができる。
【００６９】
３．Ｐ３は、Ｐ１が搬送した逆の擬似ランダム置換のためのコードを搬送するエージェントである。言い換えれば、Ｐ３は、レスポンダの状態を復元する（すなわちすべてがうまくいった場合に）。
【００７０】
最初に、置換コードを搬送するエージェントであるＰ１がレスポンダにおいて実行されるようになると仮定する。次いで、必然的にレスポンダはこのエージェントの制御下になる。照会を搬送するエージェントであるＰ２は、今や、レスポンダの構成を精査することができる。これが可能なのは、チャレンジャが擬似ランダム置換のシードを知っており、そのためメモリ位置がどのようにマッピングされるかを知っているからである。同じトークンにより、照会の実行は非常に高速なはずである。さらに（そして重要なことに）、照会エージェントはプログラム・コール・スタックを精査することもでき、プログラム・コード・スタックは有効コードの領域をポイントすべきであり、有効コードの領域の内容もまた検証することができる。ＴｖｅｒがＰ１またはＰ２の実行における時間違反を検出した場合、あるいはＰ２から正しくない結果を受信した場合は、Ｔｖｅｒは「−ＯＫ」を出力する。
【００７１】
一方、Ｐ１がレスポンダにおいて実行されない場合は、Ｐ２照会に正しく応答する確率はおよそ１／ｍである。敵はまた、ある位置からその置換位置へのマッピングを含むテーブルを構築することにより、実際のメモリ位置置換を実施せずにメモリ・マッピングを計算することによってレスポンダの制御を維持することもできる。これにより、インタープリタ攻撃が位置照会を解読できるようになり、そのためチャレンジャからのメモリ・ルックアップに応答して正しい値を提供できるようになる。これが可能なのは、敵はＰ１が搬送するシードを知っていることになるからである。レスポンダは有界のメモリ・リソースを有するものと仮定され、この限界はチャレンジャにわかっていることを想起されたい。このようなテーブルに対するメモリ要件はＯ（ｍ）になり、敵はこの場合もまた、ディセーブルにされるリスクに直面することになる。例えば、チャレンジャは限界ですべての位置を置換することができ、これは、レスポンダにその利用可能なメモリよりも大きいテーブルを作成および維持させることになる。この場合もやはり、このようなテーブルを部分的に構築しても、Ｐ２からの照会にうまく答えられる確率は低い。
【００７２】
ＴＥＡＳの応用例
本明細書で開示するＴＥＡＳは汎用であり、システム保全性をテストすべき多くの応用例に適合させることができる。例えば、ＴＥＡＳは以下の例示的な応用例で使用することができる。
１．移動電話機やセットトップ・ボックスなどの端末デバイス
２．無線基地局などのコンピューティング「アプライアンス」
３．センサ・ネットワーク
【００７３】
端末デバイス
第１のＴＥＡＳ応用例として、プロバイダがネットワークと端末デバイスとの両方（例えばケーブル・ネットワークとケーブル・モデムや、衛星テレビジョン・システム）を所有する、セットトップ・ボックス（または移動電話機）のネットワークを考えてみる。端末デバイスが悪用されないようにすること、または悪質なデバイスがサービスを受けないようにすることは、プロバイダにとって非常に関心のあることである。悪意のユーザは、例えば自分に送達される帯域幅を増大させるために、ケーブル・モデムを日常的に「ハッキング」する。同様に、追加の未許可サービスを得るために自分の衛星受信機を再プログラムする人々もいる。ＴＥＡＳを使用すれば、アクティブなケーブル・モデム（または衛星受信機）の状態を精査するためのエージェントを定期的に送信することによって、このような悪用から保護するのに役立てることができる。通常、すべてのインフラストラクチャはプロバイダが保有しているので、デバイス・パラメータおよびタイミング・パラメータは完全にわかっている。さらに、ネットワークのエッジ・ルータからケーブル・モデムまでの伝送時間も非常に決定性とすることができる。端末ハードウェアを修正することは、そのソフトウェアを再プログラミングするよりもずっと困難（プロバイダと悪意のハッカーとの両方にとって）であり、したがってこのようなシステムは、ＴＥＡＳによる保全性保護の理想的な候補になる。
【００７４】
コンピューティング・アプライアンス
コンピューティング・アプライアンスは、共に配置された複数のコンピューティング・デバイスの密結合の集まりとして定義される。この一例は、コントローラ・ボード（コンピュータ）といくつかのチャネル・カード（これらもやはりマイクロコントローラを備える）とを備える無線基地局である。これらのコンポーネントを接続するネットワークは、通常、非常に決定性な移動時間を有する高速バックプレーンである。しばしば基地局チャネル・カードは、カードと共に購入されたライセンスに応じて様々な機能レベルで動作することができる。この動作能力は、単にソフトウェア構成であれば、悪質な操作で変更可能である。ＴＥＡＳは、コントローラ・カードがチャレンジャとして働き、すべてのチャネル・カードがレスポンダとして働くようにすることによって、このようなシステムの保護に役立つことができる。前述の例のように、エージェントが、クリティカルな構成情報を照会することになる。
【００７５】
センサ・ネットワーク
センサ・ネットワークは、第１の例に類似する。というのは、センサ・ネットワークもまた、関連するネットワーク・レイテンシを伴って地理的に広い領域に及ぶ場合があるからである。しかし、異なるのは脅威レベルである。軍事またはクリティカル・ミッションの応用例では、センサによって収集されたデータが本物であることが最高に重要である。この場合、ＴＥＡＳは、チャレンジ（本格的なプログラム）のフレキシビリティにより貢献することができる。例えば、センサが勝手に使用されて悪意のエンティティによって操作されていることが推測された場合、ソフトウェアの未許可修正を探るためのカスタム・チャレンジを設計することができる。さらに、場合によりエージェントは、ハードウェア修正が何らかのソフトウェアの動作を改変する場合に、ハードウェアが改ざんされていないかどうかチェックするのに使用することさえできる。
【００７６】
実際問題
関連する実際問題は、ＴＥＡＳの２つの面に関わる。第１に、エージェントの選択および生成に必要なパラメータを設定することを考えなければならず、次に、クライアント・レスポンダの実装の詳細を考えなければならない。
【００７７】
エージェント・モデルのパラメータは、レスポンダ上の計算レート、ならびにチャレンジャとそのレスポンダとの間の通信レートに関して、かなり精密な指定を必要とする。チャレンジャもレスポンダも両方とも同じエンティティによって操作されると仮定しているので、デバイス特性を試験室で経験的に確立するのは非常に簡単である。例えば、レスポンダ・プロセッサ上の１つのの命令につき必要な時間を精密に測定することができる。同様に、大きなランダム・ストリームを送信して実際のスループットおよびレイテンシを測定することによって、帯域幅およびネットワーク・レイテンシを測定することができる。次いで、経験的な測定値から分散統計を計算して、許容できる動作範囲を出すことができる。
【００７８】
エージェントのＴＥＡＳ実装は、それが実行されることになるクライアント・レスポンダのオペレーティング・システムおよび環境に適合しなければならない。具体的には、プロセス・スケジューリングや割込みなどのシステム問題が、ＴＥＡＳシステムの設計に影響する。しかし、ＴＥＡＳエージェントは、近年のソフトウェア（大きいエージェントは何万バイトにもなる）に対して相対的に小さく、その実行は敏速なので、レスポンダ上の最も時間クリティカルなアプリケーションを除いたすべてのアプリケーションを邪魔しない。例えば、多くの応用例では、エージェントを受信したらすぐに現在のアプリケーションのプロセスをサスペンドして割込みをディセーブルにすれば十分である。エージェントは、受信されると、認証されてその指定するメモリにロードされ、実行されてその結果がチャレンジャに返される。次いで、レスポンダのアプリケーションは再開される。
【００７９】
システムおよび製造品の詳細
当技術分野で知られているように、本明細書で述べる方法および装置は、コンピュータ可読コード手段が組み入れられたコンピュータ可読媒体をそれ自体が備える製造品として配布することができる。コンピュータ可読プログラム・コード手段は、図２に示したコンピュータ・システム１１０などのコンピュータ・システムと共に動作可能であり、本明細書で論じた、１つまたは複数の方法を実施するためまたは装置を作成するためのステップのすべてまたはいくつかを実施する。例えば、コンピュータ可読コードは、エージェント生成プロセス３００およびエージェント検証プロセス４００を実施するように構成される。
【００８０】
コンピュータ可読媒体は、記録可能媒体（例えばフロッピー（登録商標）・ディスク、ハード・ドライブ、ＤＶＤなどの光ディスク、またはメモリ・カード）であってもよく、あるいは伝送媒体（例えば光ファイバを含むネットワーク、ワールドワイド・ウェブ、ケーブル、または、時分割多重アクセスや符号分割多重アクセスやその他の無線周波数チャネルを用いる無線チャネル）であってもよい。コンピュータ・システムと共に使用するのに適した情報を記憶することのできる既知のまたは開発された任意の媒体を使用することができる。コンピュータ可読コード手段は、磁気媒体上の磁気変動や、コンパクト・ディスク表面の高さ変動など、コンピュータが命令およびデータを読み取ることを可能にする任意の機構である。
【００８１】
メモリ２３０は、本明細書で開示した方法、ステップ、機能を実施するようにプロセッサ２２０を構成する。メモリ２３０は、分散型またはローカルとすることができ、プロセッサ２２０は、分散型または単一とすることができる。メモリ２３０は、電気、磁気、または光学のメモリとして実現することができ、あるいは、これらまたは他のタイプの記憶デバイスの任意の組合せとして実現することができる。さらに、用語「メモリ」は、プロセッサ２２０からアクセスされるアドレス指定可能な空間中のアドレスに対して読み書きすることのできるどんな情報も含むように、十分に広く解釈されるべきである。この定義によれば、ネットワーク・インタフェース２２５を介してアクセス可能なネットワーク上の情報は、プロセッサ２２０がネットワークから取り出すことができるので、この情報もなおメモリ２３０内である。プロセッサ２２０を構成する各分散プロセッサは一般に、それ自体のアドレス指定可能メモリ空間を含むことに留意されたい。また、コンピュータ・システム１１０のいくらかまたはすべてを、特定用途向けまたは汎用の集積回路に組み込むこともできることに留意されたい。
【００８２】
本明細書で図示および記述した実施形態および変形は、本発明の原理の例示にすぎず、当業者なら本発明の範囲および趣旨を逸脱することなく様々な修正を実施することができることを理解されたい。
【図面の簡単な説明】
【００８３】
【図１】本発明が動作することのできる例示的なネットワーク環境を示す図である。
【図２】本発明の特徴を組み込んだ図１の例示的なホストを示す概略ブロック図である。
【図３】図２のエージェント生成プロセス（Ｔｇｅｎ）の例示的な実装形態を述べたフローチャートである。
【図４】図２のエージェント検証プロセス（Ｔｖｅｒ）の例示的な実装形態を述べたフローチャートである。
【図５】潜在的な敵による高価な分析時間につながり、したがってエージェントにとって望ましいプロパティである、構造化されていない制御フローを含むプログラム部分を示す図である。
【図６】短いサンプル・プログラムと、コードに対する定義−使用分析の結果とを提供する図である。
【図７】例示的なエージェントについてのコード部分と、インタープリタ攻撃の間にコードを解釈するためのバーチャル・マシンの内部ループとを示す図である。
【図８】本発明によって利用されるあるタイプのエージェントに従ってレスポンダのすべてのメモリのランダム置換を実施するための例示的なコードを示す図である。
【図１】
2006127521.tif 000013
【図２】
2006127521.tif 000014
【図３】
2006127521.tif 000015
【図４】
2006127521.tif 000016
【図５】
2006127521.tif 000017
【図６】
2006127521.tif 000018
【図７】
2006127521.tif 000019
【図８】
2006127521.tif 000020