(57)【要約】安全な暗号関数が、すべてのモバイルエージェントと同一である静的なプログラムコードと、各関数に対して異なる動的なプログラムコードとを含むテンプレートから生成される。動的なコードは、関数によって処理されるメッセージを暗号かするために用いられるストリーム暗号アルゴリズムをインプリメントする。動的なコードはまた、各メッセージに添付されるメッセージダイジェストを生成し得る。メッセージダイジェストは、動的なコード、およびオプション的に、メッセージに適用されるハッシュ関数であり得る。によって、各関数は、固定終了タイム、関数が送信し得る最大数のメッセージ等によって制限されたライフタイムが割り当てられ得る。暗号アルゴリズムによって処理された任意の受信されたメッセージは、そのライフタイムの満了後、無視される。
2006504206.tif 000002
【特許請求の範囲】
【請求項１】
暗号関数を生成する方法であって、
少なくとも１つの動的な命令のセットに対する少なくとも１つの静的な命令およびインジケータのセットを有する暗号関数テンプレートを提供するステップと、
該少なくとも１つの動的な命令のセットに対してコンピュータプログラム命令を動的に生成するステップであって、該動的に生成された命令は、該暗号関数に一意である、ステップと、
該一意の暗号関数を形成するために、該少なくとも１つの動的な命令のセットに対する該インジケータを該動的に生成されたコンピュータプログラム命令と置換するステップと
を包含する、方法。
【請求項２】
前記一意の暗号関数に一意の識別子を割り当てるステップをさらに包含する、請求項１に記載の方法。
【請求項３】
コンピュータプログラム命令を動的に生成するステップは、所定の関数のセットから複数の関数を選択するステップを包含し、ストリーム暗号アルゴリズムは、データを暗号化するために該選択された関数を順次適用する、請求項２に記載の方法。
【請求項４】
コンピュータプログラム命令を動的に生成するステップは、前記一意の暗号関数を用いて処理された少なくとも１つのメッセージとともに提供されるメッセージダイジェストを生成するコンピュータプログラム命令を生成することを包含する、請求項１に記載の方法。
【請求項５】
メッセージダイジェストを生成するコンピュータプログラム命令を生成するステップは、前記メッセージダイジェストを生成するために、少なくとも前記動的に生成されたコードにハッシュ関数を適用するコンピュータプログラム命令を生成するステップを包含する、請求項４に記載の方法。
【請求項６】
前記ハッシュ関数は、ストリーム暗号アルゴリズムであり、少なくとも前記動的に生成されたコードに前記ハッシュ関数を適用するコンピュータプログラム命令を生成するステップは、所定の関数のセットから複数の関数を選択するステップを包含し、該ストリーム暗号アルゴリズムは、該ハッシュ関数をインプリメントするために該選択された関数を順次適用する、請求項５に記載の方法。
【請求項７】
前記一意の暗号関数に制限されたライフタイムを割り当てるステップをさらに包含する、請求項１に記載の方法。
【請求項８】
前記一意の暗号関数に制限されたライフタイムを割り当てるステップは、該エージェントに所定の終了タイムを割り当てる、請求項７に記載の方法。
【請求項９】
前記一意の暗号関数に制限されたライフタイムを割り当てるステップは、該関数を用いて処理され得る最大数のメッセージを割り当てる、請求項７に記載の方法。
【請求項１０】
一意のモバイルエージェントを生成する方法であって、
少なくとも１つの動的な命令のセットに対する少なくとも１つの静的な命令およびインジケータのセットを有するモバイルエージェントテンプレートを提供するステップと、
該少なくとも１つの動的な命令のセットに対してコンピュータプログラム命令を動的に生成するステップであって、該動的に生成された命令は、該モバイルエージェントに一意である、ステップと、
該一意のモバイルエージェントを形成するために、該少なくとも１つの動的な命令のセットに対する該インジケータを該動的に生成されたコンピュータプログラム命令と置換するステップと
を包含する、方法。
【請求項１１】
前記モバイルエージェントに一意の識別子を割り当てるステップをさらに包含する、請求項１０に記載の方法。
【請求項１２】
前記動的な命令のセットは、暗号アルゴリズムをインプリメントする、請求項１０に記載の方法。
【請求項１３】
前記暗号アルゴリズムは、ストリーム暗号アルゴリズムであり、コンピュータプログラム命令を動的に生成するステップは、所定の関数のセットから複数の関数を選択するステップを包含し、該ストリーム暗号アルゴリズムは、データを暗号化するために該選択された関数を順次適用する、請求項１２に記載の方法。
【請求項１４】
コンピュータプログラム命令を動的に生成するステップは、前記一意の暗号関数を用いて送信され、処理された少なくとも１つのメッセージとともに提供されるメッセージダイジェストを生成するコンピュータプログラム命令を生成することを包含する、請求項１０に記載の方法。
【請求項１５】
前記メッセージダイジェストを生成するコンピュータプログラム命令を生成するステップは、該メッセージダイジェストを生成するために少なくとも前記動的に生成されたコードにハッシュ関数を適用するコンピュータプログラム命令を生成するステップを包含する、請求項１４に記載の方法。
【請求項１６】
前記ハッシュ関数は、ストリーム暗号アルゴリズムであり、少なくとも前記動的に生成されたコードに該ハッシュ関数を適用するコンピュータプログラム命令を生成するステップは、所定の関数のセットから複数の関数を選択するステップを包含し、該ストリーム暗号アルゴリズムは、該ハッシュ関数をインプリメントするために該選択された関数を順次適用する、請求項１５に記載の方法。
【請求項１７】
前記一意のモバイルエージェントに制限されたライフタイムを割り当てるステップをさらに包含する、請求項１０に記載の方法。
【請求項１８】
前記一意のモバイルエージェントに制限されたライフタイムを割り当てるステップは、該エージェントに所定の終了タイムを割り当てる、請求項１７に記載の方法。
【請求項１９】
前記一意のモバイルエージェントに制限されたライフタイムを割り当てるステップは、前記一意のモバイルエージェントによって送信され得る最大数のメッセージを割り当てる、請求項１７に記載の方法。
【請求項２０】
前記一意のモバイルエージェントに制限されたライフタイムを割り当てるステップは、前記一意のモバイルエージェントがアクセスし得る最大数のホストコンピュータを割り当てる、請求項１７に記載の方法。
【請求項２１】
複数の一意のモバイルエージェントを生成する方法であって、
少なくとも動的な命令のセットに対して少なくとも１つの静的な命令およびインジケータのセットを有するモバイルエージェントテンプレートを提供するステップと、
該複数のモバイルエージェントのそれぞれに対して該少なくとも１つの動的な命令のセットに対する複数のそれぞれ異なるコンピュータプログラム命令のセットを動的に生成するステップと、
該複数の一意のモバイルエージェントを生成するために該少なくとも１つの動的な命令のセットに対する該インジケータを該動的に生成されたコンピュータプログラム命令のそれぞれと置換するステップと
を包含する、方法。
【請求項２２】
該複数の一意のモバイルエージェントのそれぞれにそれぞれ異なる識別子を割り当てるステップをさらに包含する、請求項２１に記載の方法。
【請求項２３】
前記複数の動的な命令のセットの前記それぞれは、それぞれ異なる暗号アルゴリズムをインプリメントする、請求項２１に記載の方法。
【請求項２４】
前記それぞれ異なる暗号アルゴリズムのそれぞれは、ストリーム暗号アルゴリズムであり、コンピュータプログラム命令を動的に生成するステップは、所定の関数のセットからそれぞれ異なる複数の関数を選択するステップを包含し、該ストリーム暗号アルゴリズムは、データを暗号化するために該選択された関数を順次適用する、請求項２３に記載の方法。
【請求項２５】
各一意のモバイルエージェントに対する前記静的な命令のセットは、該一意のモバイルエージェントによって送信される少なくとも１つのメッセージに前記暗号アルゴリズムのそれぞれを適用する命令を包含する、請求項２４に記載の方法。
【請求項２６】
各一意のモバイルエージェントに対する前記静的な命令のセットは、該一意のモバイルエージェントによって少なくとも１つのメッセージとともに送信されるメッセージダイジェストを生成するために該暗号アルゴリズムのそれぞれを適用する命令を包含する、請求項２４に記載の方法。
【請求項２７】
該複数の一意のモバイルエージェントのそれぞれに、それぞれ異なる制限されたライフタイムを割り当てるステップをさらに包含する、請求項２１に記載の方法。
【請求項２８】
潜在的に悪質なホストコンピュータを検出するためにネットワークにおけるコンシューマのホストコンピュータ間を移動するモバイルエージェントをモニタする方法であって、
該モバイルエージェントの制限されたライフタイムを割り当てるステップと、
エージェントモニタリングシステム（ＡＭＳ）に該モバイルエージェントを登録するステップと、
該モバイルエージェントによってアクセスされる該ホストコンピュータの順序を決定するために該モバイルエージェントと該ＡＭＳとの間に通信を確立するステップと、
該ＡＭＳが、該モバイルエージェントの該制限されたライフタイムの間に、該モバイルエージェントと通信できないとき、該ネットワーク上で該エージェントが移動した該ホストコンピュータの最後の１つを潜在的に悪質であるとして識別するステップと
を包含する、方法。
【請求項２９】
前記モバイルエージェントに制限されたライフタイムを割り当てるステップは、該モバイルエージェントが該ＡＭＳに送信し得る最大数のメッセージを割り当てる、請求項２８に記載の方法。
【請求項３０】
前記モバイルエージェントに制限されたライフタイムを割り当てるステップは、該モバイルエージェントがアクセスし得る最大数のホストを割り当てる、請求項２８に記載の方法。
【請求項３１】
前記モバイルエージェントに制限されたライフタイムを割り当てるステップは、該モバイルエージェントが満了するタイムを割り当てる、請求項３０に記載の方法。
【請求項３２】
潜在的に悪質なホストコンピュータを検出するためにネットワークにおけるコンシューマのホストコンピュータ間を移動するモバイルエージェントをモニタする方法であって、
該モバイルエージェントに対する一意の暗号アルゴリズムを特定するステップと、
エージェントモニタリングシステム（ＡＭＳ）に該モバイルエージェントを登録するステップと、
該モバイルエージェントによってアクセスされる該ホストコンピュータの順序を決定するために該モバイルエージェントと該ＡＭＳとの間に通信を確立するステップと、
該ＡＭＳが、該モバイルエージェントから不正に暗号化されたメッセージを受け取るとき、該ネットワーク上で該エージェントが移動した該ホストコンピュータの最後の１つを潜在的に悪質であるとして識別するステップと
を包含する、方法。
【請求項３３】
コンピュータ読み取り可能媒体であって、
コンピュータに暗号関数を生成する方法をインプリメントするコンピュータプログラム命令を含み、
該方法は、
少なくとも１つの動的な命令のセットに対する少なくとも１つの静的な命令およびインジケータのセットを有する暗号関数テンプレートを提供するステップと、
該少なくとも１つの動的な命令のセットに対してコンピュータプログラム命令を動的に生成するステップであって、該動的に生成された命令は、該暗号関数に一意である、ステップと、
該一意の暗号関数を形成するために、該少なくとも１つの動的な命令のセットに対する該インジケータを該動的に生成されたコンピュータプログラム命令と置換するステップと
を包含する、コンピュータ読み取り可能媒体。
【請求項３４】
コンピュータ読み取り可能媒体であって、
コンピュータに複数の一意のモバイルエージェントを生成する方法をインプリメントするコンピュータプログラム命令を含み、
該方法は、
少なくとも１つの動的な命令のセットに対して少なくとも１つの静的な命令のセットおよびインジケータを有するモバイルエージェントテンプレートを提供するステップと、
該複数のモバイルエージェントのそれぞれに対して該少なくとも１つの動的な命令のセットに対する複数のそれぞれ異なるコンピュータプログラム命令のセットを動的に生成するステップと、
該複数の一意のモバイルエージェントを生成するために該少なくとも１つの動的な命令のセットに対するインジケータオを該それぞれ動的に生成されたコンピュータプログラム命令と置換するステップと
を包含する、コンピュータ読み取り可能媒体。
【請求項３５】
コンピュータ読み取り可能媒体であって、
コンピュータに潜在的に悪質なホストコンピュータを検出するためにネットワークにおけるコンシューマのホストコンピュータ間を移動するモバイルエージェントをモニタする方法をインプリメントするコンピュータプログラム命令を含み、
るコンピュータプログラム命令を含み、
該方法は、
該モバイルエージェントに対する一意の暗号アルゴリズムを特定するステップと、
エージェントモニタリングシステム（ＡＭＳ）に該モバイルエージェントを登録するステップと、
該モバイルエージェントによってアクセスされる該ホストコンピュータの順序を決定するために該モバイルエージェントと該ＡＭＳとの間に通信を確立するステップと、
該ＡＭＳが、該モバイルエージェントから不正に暗号化されたメッセージを受け取るとき、該ネットワーク上で該エージェントが移動した該ホストコンピュータの最後の１つを潜在的に悪質であるとして識別するステップと
を包含する、コンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに用いられる暗号関数に関し、詳細には、一意の再生可能な暗号関数をインプリメントするために用いられる自動的に生成されたプログラム命令に関する。
【背景技術】
【０００２】
（発明の背景）
暗号関数は、コンピュータシステム、さらに一般的な消費者向けアプリケーションにおいて多くの用途を有する。ＤＶＤといった媒体を介して配信されるプログラムコンテンツは、無認可の複製を防ぐために暗号化される。暗号関数はまた、コンピュータシステムのユーザを証明するために用いられ、ログファイルおよび動作記録といったコンピュータ上に格納されているデータを暗号化して、格納されているデータの整合性を確実にする。これらの関数はまた、モバイルエージェントとともに用いられ得、エージェントとそのプリンシパルとの間で専用通信チャンネルを確立する。すべてのソフトウェア不正防止機能（ｔａｍｐｅｒ  ｒｅｓｉｓｔａｎｃｅ）技術は、保護されているコンテンツにアクセスし、かつ、十分な時間を有するアタッカによって解読されるので、保護されているコンテンツに繰り返しアクセスするために必要とされる労力を増やす、再生可能な暗号関数を提供することが所望される。本発明は、モバイルエージェントの文脈において記載されるが、それが、暗号化されたデータの安全を高めるために上述される任意のコンテンツとともに、および任意のシステムにおいて用いられ得ることが考えられる。
【０００３】
モバイルエージェントは、ワイドエリアネットワーク、またはローカルエリアネットワークといったネットワークを移動するオブジェクトであり、（そのオリジネータ以外の）ホストコンピュータにおいて動作する。エージェントのライフタイムにおいて２つのタイプのコンピュータサーバがある。プロデューサーおよびコンシューマである。エージェットのプロデューサーはまた、プリンシパルとして知られ、エージェントを作成し、かつ、配信する。コンシューマは、あるタスクを行うエージェントを実行させるサーバである。
【０００４】
ショッピングモバイルエージェントは、例えば、多くの異なるタイプのコンピュータ上で実行され得、それから、いくつかのインターネットウェブサイトページのうちから、より低価格なプロダクトを発見するために用いられ得るＪＡＶＡ（登録商標）といったプログラム言語に書き込まれ得る。エージェントを作成するとき、オーナーは、先ず、彼がどのタスク（例えば、ショッピング）をエージェントが完遂することを所望するかを決定しなければならない。次に、オーナーは、エージェントにどのようにタスクを完遂するかを命令しなければならない。タスクは、サーバ間の移動の仕方および結果の返し方を含む。これらのステップが完了すると、エージェントはネットワーク上に送信される準備ができている。モバイルエージェントは、それから、ネットワークおけるホスト（ホストコンピュータ）間を自主的に動き、モバイルエージェントのプリンシパルの目的を達成するためにホスト上でそのプログラムコードを実行する。
【０００５】
モバイルエージェントはまた、「自覚」（ａｗａｒｅｎｅｓｓ）、つまり擬似人工知能を有し、プリンシパルから自主的して行動し得る。モバイルエージェントは、例えば、任務を完了するために新しいホストを見つけ出すためにネットワークトポロジーを介してそれ自身の移動パスを選ぶ。モバイルエージェントは、そのソースコンピュータシステム、または他のモバイルエージェントと通信し得、情報を交換および共有する。モバイルエージェントはまた、そのモバイルエージョンを補助する他のモバイルエージェント、つまりボット「ｂｏｔ」を生み出す。ボットは、コンピュータ上に常駐し、クエリーを他のコンピュータに送信するプログラム、または命令のセットである。
【０００６】
他方では、モバイルエージェントは、そのモバイルエージェントが移動および常駐するホストコンピュータ上で実行されるコマンド、または命令を含む。
【０００７】
エージェントオーナーのセキュリティー上の懸念は、プライバシーおよびエージェントのデータ、コードおよび実行の整合性である。悪質なコンシューマホストは、さまざまな理由のために、エージェントのプライベートデータ、またはコードにアクセスし、変更しようとする。エージェントに対してされる多数の異なるタイプのアタックは、悪質なホストを深刻な問題にする。最終的に、決意の固いアタッカは、モバイルエージョンを損なう。唯一の疑問は、アタッカが成功するのにどれだけの時間かかるである。
【０００８】
モバイルエージェントの安全性を増加させる１つの方法は、改ざん防止（ｔａｍｐｅｒ  ｐｒｏｏｆ）ハードウェアを用いることである。しかしながら、このハードウェアは、さまざまなリソースおよび要求価格のために、すべての人、またはすべての場所に対して利用可能でないかもしれない。さらに、ハードウェアはまた、損なわれ得、簡単に再生され得ない。モバイルエージェントの安全性を高めるために、ソフトウェア保護は依然所望され、多くの状況において、唯一の利用可能な方法であり得る。
【０００９】
他の安全上の懸念は、実行の拒否である。この問題は、コンシューマがエージェントを実行することを拒絶するとき、起こる。例えば、コンシューマのホストコンピュータショッピングにエージェントが到達することを考える。エージェントは、先ず、ショッピングエージェントが到達し、かつ、正しい目的ホスト上で動作しているかどうかを決定しなければならない。エージェントは、ショッピングエージェントが正しいコンシューマに到達したと認可した後、そのエージェントは、一般的に、コンシューマからのデータの収集および分析であるショッピングエージェントのタスクの実行をスタートする。タスクが完了すると、エージェントは、ショッピングエージェントの次の目的地を決定する。エージェントは、別のコンシューマに移動し得、または結果をショッピングエージェントのプリンシパルに返し、終了し得る。
【００１０】
エージェントの実行の前、かつ、エージェントの実行中に、悪質なコンシューマは、エージェントの実行を妨げ得る。悪質なホストは、それから、エージェントを分析し得、エージェントによって取得された結果をディスライク（ｄｉｓｌｉｋｅ）し得る。例えば、ショッピングエージェントが収集するデータに基づいてグッズをオーダーする任務を有するショッピングエージェントは、悪質なホストに送信される。エージェントは、より良い価格を有する別のホストを発見したので、ホストは、エージェントの実行を終了し得る。実行が停止すると、悪質なホストは、自分自身の利益のために、エージェントの結果を改変し得、そのホストは、エージェントのふりをする。このことは、悪質なホストが不当な利得を得るために、偽の情報を返すことを可能にする。
【００１１】
悪質なホストはまた、エージェントを分析し、損なおうとし得る。悪質なホストは、エージェントのプログラムコードを分析し、またはリバース・エンジニアリングすることによって損なうことを欲するので、悪質なホストは単純に、エージェントの実行を拒絶、または遅延し得る。悪質なエージェントの目的は、悪質なホストに利益を与える態様で、エージェントを改変し、それから、エージェントの実行を再スタートさせることである。悪質なホストは、名前、クレディットカード番号および住所といった個人的なデータを含み得るエージェントから機密情報を抽出し得る。
【００１２】
モバイルエージェントディベロッパおよびプリンシパルは、有用なモバイルエージェントを開発することに集中するので、またデベロッパは、プリンシパルがエージェントから通信を受け取ることをストップするために、常に実行の拒絶を検知し得ると思われるので、モバイルエージェントディベロッパおよびプリンシパルは、最初はこれらの特定のタイプのアタックを無視する。また、エージェントのコンシューマホストが、エージェントの実行の拒絶から何も得られないと間違って思われる。しかし、上述されるように、コンシューマホストは、実行の拒絶に対する多くの理由を有し、エージェントがより一般的になると、この問題はより深刻になる。
【発明の開示】
【課題を解決するための手段】
【００１３】
本発明は、関数の各インスタンスに対して異なるカスタマイズされた命令のセットを有する関数を動的にプログラミングすることによって暗号関数を生成する方法において例示される。カスタマイズされた命令は、選択された関数およびオペランドから作成され、新しい動的なコンピュータプログラム命令のセットは、それから、一意の暗号関数として提供される。
【００１４】
本発明の１つの局面に従って、カスタマイズされた命令は、暗号アルゴリズムをインプリメントする。
【００１５】
本発明の別の局面に従って、暗号アルゴリズムは、ストリーム暗号アルゴリズムである。
【００１６】
本発明のさらなる別の局面に従って、一意の識別子は、関数に割り当てられる。
【００１７】
本発明の別の局面に従って、一意の暗号関数は、モバイルエージェントにインプリメントされる。
【００１８】
本発明のさらなる別の局面に従って、エージェントモニタリングシステム（ＡＭＳ）は、一意のモバイルエージェントとともに用いられる。ＡＭＳは、一意のモバイルエージェントのステータスおよびライフタイムをモニタする。エージェントは、ＡＭＳに登録され、一意のモバイルエージェント情報はデータベースに格納される。ＡＭＳは、エージェントとの通信プロトコルを確立し、これによって、ＡＭＳとエージェントとの間で情報交換を可能にする。ＡＭＳはまた、現在のエージェントのライフタイムの終わりに新しいエージェントを配給し、現在のエージェントのタスクを完了させ得、または一定期間にわたり複数のエージェントを配給し、追跡して、エージェントのライフタイムが満了するとき、同時に動作しているエージェントのそれぞれを置換し得る。
【００１９】
本発明の上述の一般的な記載および以下の詳細な記載は例示的であり、それらはともに限定的なものではないことが理解されるべきである。
【発明を実施するための最良の形態】
【００２０】
本発明は、添付の図面と関連して読まれるとき、下記の詳細な説明から最も理解される。一般的な実施に従って、図面のさまざまな特徴は、縮尺拡大しないことが強調される。これに反して、さまざまな特徴の大きさは、明確化のために任意的に拡大、または減少される。図面に含まれるのは、以下の図である。
【００２１】
図１は、いくつかのホストのコンシューマコンピュータを介するモバイルエージェントのライフサイクルおよび移動を示すネットワークのブロック図である。モバイルエージェントは、ソースコンピュータ１１０上で実行されるプリンシパルプログラム１１２によって作成される。プリンシパルは、通常、人であるが、プリンシパルプログラム１１２として示され、このプログラムは、モバイルエージェントを開始し、モバイルエージェントと通信する人によって用いられる。
【００２２】
モバイルエージェントを生成するために、プリンシパルプログラム１１２は、エージェントテンプレート１１４を用いる。この例において、モバイルエージェントＡ０１１６は、エージェントテンプレート１１４から生成される第１のモバイルエージェントである。モバイルエージェントＡ０１１６は、それから、ネットワーク通信パス１２０を介して第１のコンシューマホスト＿１  １３０に送信される。コンシューマホスト＿１  １３０に到着した後、モバイルエージェントＡ０１１６は、ホスト＿１上で動作し、ネットワークパス１２２を介してプリンシパル１１２と通信する。ホスト＿１  １３０上で、そのタスクを完了すると、モバイルエージェントＡ０１１６は、ネットワークパス１２４を介してホスト＿２  １４０に移動する。ホスト＿２  １４０に到着した後、モバイルエージェントＡ０１１６は、もう一度動作し、ネットワークパス１２６を介してプリンシパル１２２と通信する。エージェントがそれ自身を終了するとき、エージェントは先ず、プリンシパル１１２に、エージェントが収集したデータをアップロードし、プリンシパルが、タスクを完了するための新しいエージェントを生成し得るようにエージェントが終了していることをプリンシパルに報告することが所望され得る。
【００２３】
モバイルエージェントＡ０１１６はまた、制限されたライフタイムを割り当てられる。モバイルエージェントＡ０１１６は、ライフタイムが満了しない限り、および破壊されない限りは、任務を継続する。本発明の例示的実施形態において、エージェントのライフタイムは、静的なプログラムコードによって決定され得る。この場合には、各モバイルエージェントは、同一の制限されたライフタイムを有する。あるいは、ライフタイムは、動的なプログラムコードによって決定され得、各エージェントは、所定の範囲内から選択されたランダムなライフタイムを割り与えられ得る。ライフタイムは、時間量であり得、またはエージェントがアクセスし得るホスト数であり得る。エージェントがそのライフタイムを超えるとき、エージェントは、それ自身を終了し得、またはプリンシパル１２２によって終了され得る。
【００２４】
この例において、コンシューマホスト＿ｉ１５０で、モバイルエージェントＡ０１１６は、その所定のライフタイムを超え、それ自身を終了させる。プリンシパル１１２は、このことに気付き、同一のエージェントのテンプレート１４４にまた基づくが、エージェント１６６とは異なる動的なコードを有する、新しいモバイルエージェントＡ１１６２を作成する。プリンシパル１１２は、ネットワークパス１３４を介して、この新しいモバイルエージェントＡ１１６２をホスト＿ｉ  １６０に送信して、モバイルエージェントのタスクを継続する。エージェントＡ１１６２は、そのライフタイムが満了するまでプリンシパル１１２の任務を継続する。エージェントＡ１１６２のライフタイムが、任務完了の前に満了するとき、プリンシパル１１２は、個々に他のエージェント（Ａ２、Ａ３等）を作成して、タスクを終了させる。各エージェントは、異なる動的なコードを有する。
【００２５】
図３は、モバイルエージェントが、ホストをどのようにトラベル、または移動するかを示すネットワークのブロック図である。モバイルエージェントＡ０１１６は、プリンシパル１１２によって作成され、第１のホスト＿１  １３０に送られる。ここで、エージェントは、ホスト上でコードを実行し、いくつかのデータを収集し得る。このデータは、モバイルエージェントＡ０１１６に格納され得る。このデータはまた、プリンシパル１１２、または下記に記載されるエージェントモニタリングシステム（ＡＭＳ）に送り返され得る。ＡＭＳは、モバイルエージェントのステータスをモニタするためにデータベースを用い得るソフトウェアプログラムである。ＡＭＳ、またはプリンシパル１１２は、点線矢印１２１で示されるように、ホスト＿２  １４０をバイパスして、モバイルエージェントＡ０１１６に直ちにホスト＿ｉ  １５０に向かうように命令する。あるいは、エージェントは、自主的に動作し、順にそれぞれのホスト１３０、１４０、１５０、１６０にアクセスし得る。
【００２６】
モバイルエージェントＡ０１１６が自主モードで動作するとき、エージェントは、それ自身に対して、収集したデータに基づいて、ホスト＿２  １４０向かうか、または、点線矢印１２１で示されるように、ホスト＿２  １４０をバイパスして、直ちにホスト＿ｉ  １５０に跳び得る。エージェントが自主モードでないとき、エージェントは、プリンシパル１１０、またはＡＭＳから命令を待ち得る。
【００２７】
十分に動作していないネットワークはまた、その関数を実行するエージェントの能力を妨げ得る。この例示的な実施形態において、プリンシパル１１２、またはＡＭＳは、ネットワークの性能が向上するためにさらなる時間待機すべきか、または、割り当てられた任務を完了させるためにさらなるモバイルエージェントをリリースすべきか否かを決定する。ＡＭＳ、またはプリンシンパル１１２は、モバイルエージェントが位置しているホストコンシューマへ「ピン（ｐｉｎｇ）」し得、ネットワークの伝播遅延があるか否かを決定する。「ピン」は、一度、（または繰り返し）目的地にＩＣＭＰ（インターネット制御メッセージプロトコル）エコー要求を送信し、返答を待つことで目的地への到達可能性をテストするために用いられるプログラムである。
【００２８】
図２は、新しい一意のエージェントのテンプレートを構成し得るコンポーネントを示すモデルである。エージェントテンプレートは、２つの部分を有する。（１）静的なコードおよびデータ２１２と（２）動的なコードおよびデータ２１４である。静的なコードおよびデータ２１２は、修正されていない状態で、モバイルエージェント２２２の新しいプログラムコードに直接的に配置される。動的なコードおよびデータ２１４は、先ず、新しい動的なコード２２４を生成するためにコード生成器２１８にパスされる。この新しい動的なコード２２４はまた、新しい一意のエージェント２２２の一部になる。この例示的な実施形態において、コード生成器２１８はまた、各一意のエージェントに対して異なる一意の識別子２１０を生成し得る。
【００２９】
本発明の例示的な実施形態において、一意の識別子は、エージェントに割り当たれられた動的なコードに関連付けられる。一意の識別子は、その一意の識別子がプリンシパルに送信する各メッセージを有するエージェントによって送信される。このメッセージに基づいて、プリンシパルは、エージェントによって用いられる動的なコードを理解し、エージェントから受信されたメッセージを適切にデコード、または確認し得る。
【００３０】
先述されるように、完全自動コード生成は、本質的に難しく、この例示的な実施形態において、この問題への解決は、暗号関数だけを自動的に生成することである。数学関数は、任意のコードを生成するより、容易に自動的に生成されるのでこれは好都合である。暗号関数は、それらの関数がエージェントのプライベートデータを暗号化および復号化をするために用いられる点で安全性にとって重要である。
【００３１】
本発明の例示的な実施形態の一意のモバイルエージェントは、暗号関数としてストリーム暗号を用いる。２つ以上のストリーム暗号関数の組み合わせが、組み合わせられた暗号のグループのうちの一番強い暗号と少なくとも安全であるので、ストリーム暗号は、ソフトウェアの暗号化に対して実行可能である。このようにして、ストリーム暗号を形成するために、存在する暗号、例えば、ＤＥＳといったブロック暗号を別の暗号と組み合わせることは、ＤＥＳと少なくとも強い暗号化をもたらす。
【００３２】
ストリーム暗号のこの基本的な概念は、キーストリーム（Ｚ＝ｚ１、ｚ２）を用いて、ランダムコード生成器２１６において、動的なコードおよびデータ２１４を暗号化することである。「現在の」（ｉ番目）のキーＺ１が、前回のキーＺｉ−１および「現在の」の動的なコードおよびデータ２１４に基づいて生成される。等式（１）が以下に示される。
【００３３】
ｘｉ―１：ｘｉ＝ｆｉ（ｚｉ−１，ｘｉ―１）                  （１）
新しい動的なコード２２０ｙ１が、「現在の」ｉ番目のキーｚｉによって生成される。暗号関数が等式（２）において示される。
【００３４】
ｙｉ＝ｅｚｉ（ｘｉ）                                  （２）
暗号化中に用いられる逆関数を計算することは、復号化を実行する。動的なコードおよびデータ２１４は、それから、ｉ番目のキーｚｉおよび等式（３）に示されるような暗号の逆関数によって再生成される。
【００３５】
ｘｉ＝ｄｚｉ（ｙｉ）                                  （３）
複数関数のストリーム暗号の自動的な構築を容易にするために、本発明の例示的な実施形態は、コード生成エンジン２１８の基準としてストリーム暗号コードテンプレートを利用する。新しいコードが、テンプレートの構造に基づいて生成され、この例示的なインプリメンテーションにおいて、テンプレートはＪａｖａ（登録商標）に書き込まれ、かつ、２つの部分から成る。静的な部分および動的な部分である。静的な部分は、すべての生成された例において現れるＪａｖａ（登録商標）コードから成る。動的な部分は、静的な部分から分析され、タグのセットを用いて識別される。例示的な実施形態におけるタグは、ギュメ（ａｎｇｌｅ  ｂｒａｃｋｅｔ）「＜」と「＞」である。タグは、それから、新たに動的に生成されたコードと置換される。従って、テンプレートは、新たなコードを自動的に作るために、我々のコード生成エンジンによって用いられるデータの一部である。
【００３６】
ストリーム暗号テンプレートの一部は、表１に擬似コードとして示されている。このテンプレートにおいて、内部状態（Ｓ―Ｂｏｘ）、暗号化および復号化を計算する関数は、タグによって表される。関数は、各コードインスタンスに対してランダムに生成される。
【００３７】
【表１】
2006504206.tif 000003
１つの例示的な実施形態において、コード生成器２１６は、テンプレートに基づいて新しいコードを生成することを担う。コード生成器２１６は、３つの部分からなる。テンプレートパーサ（ｐａｒｓｅｒ）、タグコード生成器およびライタである。
【００３８】
テンプレートパーサは、すべてのファイルを見つけ出し、抽出することによってテンプレートファイルを分析する。テンプレートパーサはまた、すべてのタグに対して対応するタグコード生成器のクラスを呼び出す。次に、タグコード生成器は、タグの分類に基づいて各タグに対してコードを動的に生成する。このシステムの特性は、生成アルゴリズムが簡単に置換され得、または修正され得ることである。ライタは、タグを新しいコードと置換し、それから、その結果を新しいファイルに書き込むことを担う。
【００３９】
この例示的な実施形態において、新たな動的なコードの各インスタンスは、そのコードを含むエージェントと、他のエージェントとを区別する新しい一意の名前を割り当てられる。名前は、エージェントの管理および確認のために用いられる。名前は、エージェントのプリンシパルにとってのみ重要であるので、名前がエージェントのプリンシパルから見て一意であれば十分である。名前はコード生成器２１８によって選ばれ、操作される。
【００４０】
ストリーム暗号アルゴリズムは、本発明の一実施形態において利用される。このアルゴリズムは、キーストリームルーチンに用いられるべき動作（関数）の数、値ｎを先ずランダムに決定する。それからｎ個の関数が、関数Ｆのセットからランダムに選択される。関数のセットは、例えば、スワップ、排他的論理和（ＸＯＲ）およびスクエアサム（ｓｑｕａｒｅｓｕｍ）といった関数を含み得る。効率を向上するために、これらの関数は、これらの関数のオペランドの数によってグループ化される。オペランドは、各動作（関数）に対して選択される。このオペランドは、内部状態、前回の動的なコードデータ２１４、または前回のキーから選択され得る。より良い効率のために、内部状態、前回の動的なコードおよびデータ２１４、およびキーは、固定フォーマットでアレイに格納される。新たなコードが、各動的なコードおよびデータのセットに対して、動作およびオペランドを選択し、それから、生成されたソースコードをテンプレートへ置き換えることによって生成される。
【００４１】
ランダムに選択された暗号ルーチンが、復号化可能であることを確実にするために、暗号コードを生成するために用いられる関数Ｇのセットにおける各関数Ｆは、逆関数のセットＧ−１における逆関数Ｆ−１を有する。ランダムに生成されたストリーム暗号の暗号化復号化ルーチンを生成するために、上記の段落のステップが後に続が、セットＧ−１は、セットＧの代わりに用いられる。ランダムに選択された暗号ルーチンに関して逆の順序で、適切な逆関数を適用することによって復号化アルゴリズムを構築する最後のステップ（５）が加えられる。
【００４２】
本発明の代替の実施形態において、動的なコードおよびデータ２２０は、ハッシュアルゴリズム方法を介して、確保され得る。この方法は、動的なコードおよびデータ２２０の圧縮表現（ｃｏｎｄｅｎｓｅｄ  ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）を生成し、オプション的に、メッセージダイジェストを形成するためにメッセージを生成する。モバイルエージェントの情報コンテンツは、それから、例えば、情報に対する署名を生成、および確認する署名アルゴリズムに提供され得る。メッセージダイジェストは、通常、メッセージよりはるかにサイズが小さいので、メッセージを暗号化するより、むしろダイジェストを有するメッセージに署名することは、しばしば、処理の効率を向上させる。同一のハッシュアルゴリズムは、デジタル署名のクリエイタによって用いられると同様に、デジタル署名のベリファイヤ（ｖｅｒｉｆｉｅｒ）によって用いられ得る。アルゴリズムへの変更、または送信中のメッセージをハッシュ（ｈａｓｈ）するために用いられるアルゴリズムは、異なるメッセージダイジェストを生成し、署名が確認しそこなうことを引き起こす。
【００４３】
所定のメッセージダイジェストに対応するメッセージを計算上、見つけ出す、または、同一のメッセージダイジェストを生成する２つの異なるメッセージを見つけ出すことは不可能であるので、このタイプの承認は、安全であると考えられる。送信中のメッセージへの変更は、とても高い確率で、異なるメッセージダイジェストの結果を招き、署名が確認し損なうことになる。
【００４４】
モバイルエージェント１１６のステータスおよび進行を追跡するプリンシパル１１２の代わりに、エージェントモニタリングシステム（ＡＭＳ）は、エージェントをモニタするために利用され得る。ＡＭＳは、プリンシパル１１０と同一のコンピュータ上で、または、ネットワークを通じてエージェントと通信し得る他の任意のコンピュータ上で動作しているアプリケーションであり得る。
【００４５】
一意のモバイルエージェントがリリースされる前に、その一意のモバイルエージェントは、ＡＭＳに登録される。モバイルエージェントが、グローバルな情報ネットワーク上でホストからホストへ移動する際に、ＡＭＳは、そのモバイルエージェントのライフタイムの間モバイルエージェントを追跡する。一意のモバイルエージェントは、ある地点で、ＡＭＳとデータ交換を確立し得る。これらのデータ交換は、例えば、アクセスするためのさらなる新しいホストをエージェントに通知し、エージェントが既知の悪質なホストに移動することを禁止し、アクセスされたホストに報告、または、ＡＭＳにエージェントの検索結果の一部を送信するといった情報のダウンロード、またアップロードであり得る。
【００４６】
プリンシパル、またはＡＭＳは、ホストが悪質あるか否かを決定するために検出技術を利用し得る。例示的な悪質なホスト検出アルゴリズムは、以下を含む。（１）ＡＭＳ（またはプリンシパル１１０）が、モバイルエージェントが新たなホストに移動した後、そのモバイルエージェントからの到着コンホメーション通信を予測する特定された時間範囲を特定することと、通信が、この時間範囲で受信されないとき、悪意があるとホストとして印をつけること。（２）一意のモバイルエージェントが、ＡＭＳ、またはプリンシパルとの通信を早まって停止したことを検出すること。（３）ＡＭＳ、またはプリンシパルが、一意のモバイルエージェントから誤って暗号化されたメッセージが受信されたことを決定すること。
【００４７】
動的に生成された暗号化コードおよび制限されたライフタイムの関数は、動的に生成されたワンタイムパスワードを用いて組み合わせられ得る。ワンタイムパスワードの概念は、Ｌ．Ｌａｍｐｏｒｔ氏による、「Ｐａｓｓｗｏｒｄ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ｗｉｔｈ  Ｉｎｓｅｃｕｒｅ  Ｃｏｍｍｎｉｃａｔｉｏｎ」，（Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｏｆ  ｔｈｅ  ＡＣＭ，ｖｏｌ．２４，Ｎｏ．１１，ｐｐ７７０―７７２，１９８１）
と題目された論文に記載される。ログインｉｄおよびパスワードを入手することは、ネットワーク接続の傍受に基づくアタックに対抗するようにデザインされる。ワンタイムパスワードメカニズムを用いるために、プリンシパルは、パスワードを先ず選択し、認証サーバにそれを格納する。サーバは、（適度に大きな）数字ｎを選択し、再帰的にパスワードをｎ回ハッシュ（つまり、あるハッシュ関数に対するｈａｓｈｎ（パスワードを計算）し、エージェントの一意の識別子と、数字ｎとともに、サーバ上のデータベースにその結果を格納する。数字ｎは、エージェントが用い得るワンタイムパスワードの数（つまり、エージェントのライフタイムが満了する前に、そのエージェントが送信し得るメッセージの数）を表す。各使用ごとに、適用されるハッシュ関数が１つ減り、それぞれ異なるパスワードを生成する。エージェントが、ｎ個以上のメッセージを送信するとき、プリンシパルは、エージェントのライフタイムが満了したとき、それらを無視する。
【００４８】
ワンタイムパスワードのための動的なコード生成はまた、パスワードを生成するためにエージェントによって用いられるハッシュ関数を生成するために適用され得る。この例において、新たなハッシュ関数を動的に生成するよりむしろ、おそらくは、選択プロセスにおいて擬似乱数生成器を用いて既知の関数のグループからハッシュ関数を動的に選択することが所望される。動的なコード生成アルゴリズムはまた、ハッシュされたパスワードを生成するために用いられる初期のパスワードを選択するために適用され得る。この例におけるパスワードは、パスワードとして必ずしも用いられないが、そのパスワードが、プリンシパル１１２、またはＡＭＳに送信される前に、データを暗号化するために暗号鍵として用いられ得る。暗号化されたデータを受け取ると、プリンシパル、またはＡＭＳは、一意のエージェン識別子に基づいて現在のキーを探索（ｌｏｏｋ―ｕｐ）し、それから、データを暗号化するために用いられる関数に対応する復号関数を、メッセージをデコードするために適用し得る。
【００４９】
安全なモバイルエージェントは、安全な情報収集の多くのエリアにおいて大いなる可能性を有する。それらは、情報ネットワーク中を検索するスパイダーとして利用され得るか、または、安全が確保されていないネットワーク中のデータベースに安全にアクセスする内蔵されたＯＤＢＣ（Ｏｐｅｎ  Ｄａｔａｂａｓｅ  Ｃｏｎｎｅｃｔｉｖｉｔｙ）を有し得る。モバイルエージェントはまた、移動計画、インターネットネットワークのモニタを行い、かつ、企業環境においてコンピュータ内の不法、無資格、または未登録のソフトウェアの複製を見つけ出すために利用され得る。
【００５０】
ある特定の実施形態および例を参照して上記されてきたが、本発明は、示される詳細によって限定されることを意図としない。むしろ、本発明の精神を逸脱することなく請求項の同等物の範囲内の詳細においてさまざまな変形がなされ得る。例えば、上述のように、暗号関数の動的なコード生成は、モバイルエージェント通信以外の用途おいて用いられ得る。パーソナルコンピュータに常駐する任意のアプリケーションは、アプリケーションの不正防止機能の解読を結果的に招くリバースエンジニアリングアタックを被りやすい。本発明の再生可能な不正防止機能の暗号関数がこれらのアプリケーションに用いられるとき、アタッカは、関数が再生される度に関数を解読する必要がある。このことは、コードを解読しようとする人たちに対して、一段と多くの労力を招く結果になり、その人たちにアプリケーションが用いられるべき意図されるようにアプリケーショを用いることを促す。
【００５１】
例えば、動的に生成されたストリーム暗号が、一時的に格納され、例えば、ＴＩＶＯ（登録商標）またＲｅｐｌａｙ  ＴＶ（登録商標）といったパーソナルビデオデコーダを用いて再生されることを意味されるコンテンツを暗号化するために用いられるとき。この用途において、動的なストリーム暗号をデコードし得るアプリケーションは、コンテンツとともに送信され得、コンテンツをデコードし、かつ、表示するビュアによって用いられ得る。ビュアに送信される次に暗号化されたコンテンツは、異なる動的に生成された暗号を用いるので、コンピュータハッカーは、ストリーム暗号を解読することから大きな利益を得ない。
【００５２】
さらに、再生可能な生成された暗号関数は、上述されるように、また、個々のコンピュータ上でユーザのＩＤを確認するために用いられ得る。暗号関数は、連続して再生されているので、アタッカは、保護されているものに対して連続したアクセスを有しない。再生可能な暗号関数はまた、ログファイル、または動作記録の整合性を確実にするために用いられ、データベースの悪質なユーザが、異なる時間、または異なる場所でさられたデータの不法な改変を隠すことを難しくする。
【図面の簡単な説明】
【００５３】
【図１】本発明に従ってモバイルエージェントの生成および移動を記載するのに有用であるネットワークのブロック図を示す。
【図２】モバイルエージェントのコンポーネントを示す機能的ブロック図を示す。
【図３】モバイルエージェントがいくつかのホストにわたり移動するとき、ライフサイクルを介してモバイルエージェントの生成および移動を記載するのに有用である別のネットワークのブロック図を示す。
【図１】
2006504206.tif 000004
【図２】
2006504206.tif 000005
【図３】
2006504206.tif 000006
【国際調査報告】
2006504206.tif 000007
2006504206.tif 000008
2006504206.tif 000009