(57)【特許請求の範囲】
【請求項１】
処理を依頼するクライアントと、クライアントから依頼された処理を実行するエンジンを備えるサーバとからなり、
前記サーバは、
前記エンジンのエンジンコードを入力とした一方向関数による計算処理を行う一方向関数計算部と、
前記クライアントからの検証指示に応じて、前記一方向関数計算部の計算結果を前記クライアントへ返す検証代行エージェント手段と、を設け、
前記クライアントは、
前記サーバの前記一方向関数計算部と同じ一方向関数による計算処理を行うことが可能で、
前記サーバへの処理依頼に関して、前記サーバに対し、そのエンジンコードの検証要求を送信し、その後前記サーバから前記計算結果が届くと、前記サーバの正当な前記エンジンコードと同じデータを入力とした自らの前記一方向関数による計算処理結果と照合し、それが合致していれば、当該処理依頼を前記サーバへ送信する検証エージェント手段を設けた、
ことを特徴とする処理システム。
【請求項２】
クライアントから依頼された処理を実行するエンジンと、当該エンジンのエンジンコードを入力とした一方向関数による計算処理を行う一方向関数計算部と、
前記クライアントからの検証指示に応じて、前記一方向関数計算部の計算結果を前記クライアントへ返す検証代行エージェント手段と、を有するサーバへ、処理を依頼するクライアント装置であって、
前記サーバの前記一方向関数計算部と同じ一方向関数による計算処理を行うことが可能で、
前記サーバへの処理依頼に関して、前記サーバに対し、そのエンジンコードの検証要求を送信し、その後前記サーバから前記計算結果が届くと、前記サーバの正当な前記エンジンコードと同じデータを入力とした自らの前記一方向関数による計算結果と照合し、それが合致していれば、当該処理依頼を前記サーバへ送信する検証エージェント手段を設けた、
ことを特徴とするクライアント装置。
【請求項３】
処理を依頼するクライアントと、クライアントから依頼された処理を行うエンジンを備えるサーバとからなり、
前記サーバは、
前記エンジンのエンジンコードを入力とした一方向関数による計算処理を行う一方向関数計算部と、
後述の復号化要求に応じて、後述の暗号化されたデータを前記一方向関数計算部の計算結果で復号化できるかどうかを調べ、復号化できた場合にはその内容を前記エンジンに実行させる検証手段と、を設け、
前記クライアントは、
前記サーバへの処理依頼に関して、その内容を、前記サーバが正当な前記エンジンコードに対する前記一方向関数計算部の計算結果で復号化できるように暗号化したデータおよび、それの復号化要求を含む形の復号化用データを生成して前記サーバへ送信する復号化用データ送信手段を設けた、
ことを特徴とする処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、分散して存在する多数の計算機がネットワークで接続された環境における情報処理のセキュリティ技術に関し、特にモーバイルコ−ドによるマルチエージェント方式での情報処理において、モーバイルコ−ドの実行時にそのモーバイルコードに対して不正処理を行わないように保証するモーバイルコ−ド実行システムに関する。
【０００２】
パーソナルコンピュータの発達及びコンピュータネットワーク技術の発達によって、大型計算機をメインホストとし、それに端末がぶら下がって、すべての情報処理をメインホストに依存する集中処理方式から、個々のパソコン・ワークステーションをフロントエンドとして、ネットワーク上に設置された複数のスーパーコンピュータを用いた計算サーバ・大規模な記憶装置を持つ計算機を用いたデータベースサーバを適宜選択して目的の情報処理を行うというクライアント−サーバ方式が主流となってきている。
【０００３】
さらに、全世界的なコンピュータネットワークの技術動向として、オープンな規格によって、用いている計算機や通信媒体の枠を乗り越え、個々の計算機ネットワークの接続によって形成されたネットワークのネットワークであるインターネットが急速に拡大している。その動きは、規模の面だけでなく、利用の面からも専門家から一般の人々へと拡大し、インターネットは企業や国といった既存の枠組みを越え、全世界的な広がりを持ったコンピュータネットワークとして成長し続けている。また、インターネットの柔軟性と利便性を引継ぎながら、利用範囲を特定の組織内に限定したイントラネットも、昨今、普及してきている。
【０００４】
そのようなインターネット・イントラネットの規模と利用分野両面における拡大につれて、クライアント−サーバ間の関係も、限られた範囲の閉鎖的・固定的なものから、ネットワーク上に存在する全てのものへと、時に応じて自由に接続・利用することができるものへ進化することが望まれるようになった。そのため、利用可能なプラットフォームに束縛されないようなインターフェ−スが必要となった。また、利用するユーザが、限られた専門家から一般の人達へと広がるにつれて、簡易なインターフェ−スで複数のネットワークの異なる種類のサーバを統合して扱うような高度なサービスを提供することが必要とされるようになった。それらの要望をみたすために、アクセスする側のエージェントが、各々のサーバを管理するエージェントとのメッセージの交換によって、高度な情報処理を実現するマルチエージェント方式が注目されている。
【０００５】
また、携帯端末の普及によって、常にネットワークに接続しているわけではない場合への対応や、サーバ側の出来合いのエージェントとのメッセージ交換ではなく、こちらからエージェントを送り込んで高度で柔軟な情報処理を行うために、エージェント自体がネットワーク上を移動するというモーバイルコ−ド（モーバイルエージェント）方式がマルチエージェント方式の一部として重視されている。
【０００６】
【従来の技術】
マルチエージェントのシステムは、次のようにインプリメントされる。
すなわち、各計算機上に少なくとも一つ、エージェントの生成・消滅やエージェント間の通信を司るエンジン（シェルやインタプリタ等）が置かれる。そして、各エージェントは、互いに独立的に機能し、かつ相互にメッセージの交換を行うように、プロセスやスレッド等の実体が与えられる。各エージェントの実体は、エンジンのプロセス内に存在する場合と、エンジンとは独立なプロセスである場合とがある。ネットワーク上の別の計算機上に存在するエージェントとのメッセージ交換は、ＴＣＰ（伝送制御プロトコル）またはＵＤＰ(User Datagram Protocol)等を用いて、エンジン経由で間接的に、またはエンジンを仲介としてエージェント間で直接行われる。
【０００７】
モーバイルコ−ド方式では、一方の計算機から、実行すべきエージェントのコ−ドをメッセージとして送信し、受信した計算機で、そのコ−ドを実行する。そのために、一般的には、送付されたコ−ドを計算機のシステム上で直接実行するインプリメントはとられず、エンジンを、そのコ−ドを実行するためのインタプリタ、またはバイトコ−ドを実行するための仮想マシンとするインプリメントがとられる。そうするのは、マルチプラットフォームとするための抽象化と、後で述べる計算機のシステムのセキュリティ確保のためである。
【０００８】
ネットワーク上に計算機が分散している環境、特に全世界的な広がりを持つネットワークであるインターネットに於ては、その柔軟性と利便性の裏返しとして、誰が、何時、何処から、如何なる手段で、何にアクセスして来て、何を為し、その結果の影響がどう出るのかについての可能性（危険性）は、無限にある。そのため、悪意または不注意によるアクセスを制限する必要がある。その実現のために、ネットワークのレベルでは、きまった範囲のネットワークの入口に、アクセスコントロール用計算機を用いたファイヤウォールを設置して、通信する相手先のネットワークや、通信プロトコルの種類に制限を加えることが行われている。
【０００９】
また、マルチエージェントのエンジンのレベルでは、公開範囲の制限や、過剰占有によるシステムの動作不能防止のため、アクセスできるリソースの範囲・量・占有時間に制限を加えることや、コンピュータウイルス等のシステムへの不正アクセスを防止するために、計算機のシステムへは常に間接アクセスすることにしたり、モーバイルコ−ドの実行前にコ−ド検証を行うこと等が行われている。
【００１０】
また、インターネットはその仕組み上、一般的にどのような経路を通るかが判らず、経路上での交信データの盗聴・改ざんや、悪意の第三者が本来の相手に成り済ます可能性・危険性がある。それを防止するために、交信内容の暗号化や、暗号技術を応用した相手の認証・改ざんされてないことを保証するための電子署名等の技術が用いられている。具体的には、秘密鍵暗号を用いるケルベロス、あるいは公開鍵・秘密鍵暗号を用いたＰＥＭ(Privacy-Enhanced Mail）やＰＧＰ(Pretty Good Privacy) 等が存在する。
【００１１】
【発明が解決しようとする課題】
モーバイルコ−ドそれ自体が、高機能化するにしたがい、知的財産権確保の対象としての保護が必要になっていく。また、モーバイルコ−ドはデータを伴った形でネットワークに発信され、ネットワーク上の複数のサービスサーバとメッセージ交換をしていくことによって、データの引き出し・処理等を次々に行っていく使い方も行われ得る。その場合、ネットワーク上のサービスサーバが常に信用できるとは限らないので、データ処理に必要ないデータの読み出しを防ぐ必要があり、また、あるサービスサーバから得たデータを他のサービスサーバには秘匿する必要も有り得る。
【００１２】
しかし、従来のセキュリティ技術は、外部の不正アクセス等から、ネットワーク内のデータやシステムを守ることを目的としており、送信するモーバイルコ−ドに関する保護は十分ではない。サービスを提供するサーバをエージェントの一つとしてしまい、サーバからモーバイルコ−ドの内容を不正に覗き見できないようにしたエンジンもあったが、そのエンジンが本当にその制限機能を持っているかどうかを検証する手段は存在しなかった。
【００１３】
【課題を解決するための手段】
本発明は、この課題を、次の処理システムおよびクライアント装置を用いることにより解決する。
（１）処理を依頼するクライアントと、クライアントから依頼された処理を実行するエンジンを備えるサーバとからなり、
前記サーバは、
前記エンジンのエンジンコードを入力とした一方向関数による計算処理を行う一方向関数計算部と、
前記クライアントからの検証指示に応じて、前記一方向関数計算部の計算結果を前記クライアントへ返す検証代行エージェント手段と、を設け、
前記クライアントは、
前記サーバの前記一方向関数計算部と同じ一方向関数による計算処理を行うことが可能で、
前記サーバへの処理依頼に関して、前記サーバに対し、そのエンジンコードの検証要求を送信し、その後前記サーバから前記計算結果が届くと、前記サーバの正当な前記エンジンコードと同じデータを入力とした自らの前記一方向関数による計算処理結果と照合し、それが合致していれば、当該処理依頼を前記サーバへ送信する検証エージェント手段を設けた、
ことを特徴とする処理システム。
（２）クライアントから依頼された処理を実行するエンジンと、当該エンジンのエンジンコードを入力とした一方向関数による計算処理を行う一方向関数計算部と、前記クライアントからの検証指示に応じて、前記一方向関数計算部の計算結果を前記クライアントへ返す検証代行エージェント手段と、を有するサーバへ、処理を依頼するクライアント装置であって、
前記サーバの前記一方向関数計算部と同じ一方向関数による計算処理を行うことが可能で、
前記サーバへの処理依頼に関して、前記サーバに対し、そのエンジンコードの検証要求を送信し、その後前記サーバから前記計算結果が届くと、前記サーバの正当な前記エンジンコードと同じデータを入力とした自らの前記一方向関数による計算処理結果と照合し、それが合致していれば、当該処理依頼を前記サーバへ送信する検証エージェント手段を設けた、ことを特徴とするクライアント装置。
（３）処理を依頼するクライアントと、クライアントから依頼された処理を行うエンジンを備えるサーバとからなり、
前記サーバは、
前記エンジンのエンジンコードを入力とした一方向関数による計算処理を行う一方向関数計算部と、
後述の復号化要求に応じて、後述の暗号化されたデータを前記一方向関数計算部の計算結果で復号化できるかどうかを調べ、復号化できた場合にはその内容を前記エンジンに実行させる検証手段と、を設け、
前記クライアントは、
前記サーバへの処理依頼に関して、その内容を、前記サーバが正当な前記エンジンコードに対する前記一方向関数計算部の計算結果で復号化できるように暗号化したデータおよび、それの復号化要求を含む形の復号化用データを生成して前記サーバへ送信する復号化用データ送信手段を設けた、
ことを特徴とする処理システム。
【００１４】
エンジンは、各エージェントが明示的に許可していない領域に他のエージェント等がアクセスできないように、各エージェントが実行中に使用するメモリなどのリソースのアクセス管理を行う管理装置を内部に持つ。
【００１５】
図１は、本発明の原理構成図である。
図１において、１は本発明による不正読み出し・書換え禁止機能付きエンジン、２は本発明によるエンジンの正当性の検証の代行装置である。３はサービスを要求するクライアント側システムである。４は不正読み出し・書換え禁止機能付きエンジン１が実現されるサーバ側エンジンである。５はサーバ側エンジン４内に備えられているメモリ等のリソースである。６はリソース５へのアクセスを管理するアクセス管理装置、７ないし８はリソース５を用いて動作しているエージェントで、７はサーバエージェント、８，８′は他のエージェントである。９ないし１３はエンジンの正当性の検証の代行装置２を構成し、９はサーバ側エンジン４上で動作する検証代行エージェントである。１０はエンジン内のインタフェ−ス部である。１１はエンジン外の一次記憶または二次記憶上に存在するエンジンコ−ド読み出し部で、１２はエンジンコ−ドから読み出すデータの番地を指定するパターンが格納される読み出しパターン格納部、１３はエンジンコ−ド読み出し部１１から読み出したエンジンコ−ドのデータを入力として関数計算し、固定長の整数値を出力する一方向関数計算部である。
【００１６】
クライアント側システム３には以下の２通りの構成がある。その一つは、サーバ側のエンジンの正当性の検証を行うエージェントが、クライアント側のエンジン上で動作するものである。他の一つは、モーバイルコ−ド自体の中に、暗号化された本来の実行コ−ドと持参データとが有り、さらにエンジンの正当性の検証や、検証後の暗号化されたコ−ド等の復号化と、そのコ−ドの実行を行うためのエージェントのコ−ドが有るというものである。そのいずれの場合においても、クライアント側には、サーバ側のエンジンのコ−ドの情報が格納されている。
【００１７】
モーバイルコ−ドシステムは、利用するサーバが動作している計算機に、不正な読み出し・書換えから保護すべき実行コ−ド・持参データを送信する。したがって、モーバイルコ−ドのセキュリティの確保は、モーバイルコ−ドが実行されるエンジンに於て行われなければならない。しかし、一般的には、サーバ側エンジン４は、クライアント側システム３の管理下にはない。したがって、本発明では、サーバ側エンジン４として、不正な読み出し・書換えを不可能とするものを用い、クライアント側からは、サーバ側のエンジンが正当なものであるかを検証可能とすることで、クライアント側から送出するモーバイルコ−ドのセキュリティを確保する。
【００１８】
サーバ側エンジン４は、各エージェントが明示的に許可していない領域に他のエージェント等がアクセスできないように、各エージェントが実行中に使用するメモリなどのリソース５のアクセス管理を行うアクセス管理装置６を内部に持つ。かつ、サービスを提供するサーバは、サービスをエージェントの一つとしてインプリメントする。そうすると、サーバの各サービスから、モーバイルコ−ドが明示的に指定したデータ以外の読み書きをするのが不可能となる。
【００１９】
サーバ側エンジン４の上には、エンジン４の正当性の検証の代行を行う検証代行エージェント９が動作している。検証代行エージェント９は、クライアント側の検証エージェントの要求メッセージにしたがって、エンジン４内のインタフェ−ス部１０を介して、エンジン外のエンジンコ−ド読み出し部１１と一方向関数計算部１３でエンジンコ−ドに依存した整数値を得て、その整数値をクライアントの検証エージェントに返す。ここで、一方向関数は、セキュアハッシュ関数・Messge Digest 関数とも呼ばれ、具体的には、ＭＤ４，ＭＤ５，ＳＨＡ，チェックサムＣＲＣなどである。一方向関数は、以下の性質を持っている。
【００２０】
１．任意のバイト列を入力として固定長の整数値を出力
２．同じ出力を与える入力の発見が困難
３．逆関数を定義するのが困難
エンジンコ−ドを不正処理実現のために書き換えると、一方向関数が出力する整数値が、元のエンジンコ−ドのときと異なってしまうので、書換えを検出することができる。当然、偶然に同じ値になることは有り得るが、整数値の大きさが十分ならば、実用上問題のない確率に収められる。また、同じ出力を与える入力の発見が困難であるので、書換えたエンジンコ−ドに、書換えの検出を逃れるためのつじつま合わせのための追加書換えを行うことは困難である。ここで、サーバ側のセキュリティの観点からみると、サーバ側がクライアント側に提供するのは、そのままでは限りなく無意味な整数値に過ぎない。クライアント側がエンジンコ−ドの内容を知っていてはじめて、その整数値が意味を持つ。つまり、サーバ側にとっては、最小限の情報の提供で、検証が可能ということになる。
【００２１】
クライアント側の検証エージェントは、そのエンジンコ−ドに対応した整数値が、正しい値かどうかを調べて、サーバ側のエンジンが書き換えられていないこと、つまり、正当なエンジンであることを検証する。
【００２２】
クライアント側のエンジン上に、サーバ側エンジン４の正当性を検証するエージェントが動作している場合には、検証できた時点ではじめてモーバイルコ−ドの発信を行うことによりセキュリティを確保する。
【００２３】
またモーバイルコ−ド自体の中に、サーバ側エンジン４の正当性を検証するエージェントのコ−ドが有る場合には、本来の実行コ−ドと持参データとを暗号化して、持参データとしておく。この暗号化は、正当なエンジンコ−ドを一方向関数に入力したときの整数値を鍵として復号化できるようにしておく。モーバイルコ−ドが最初に、サーバ側エンジン４に到達したときには、サーバ側の検証代行エージェント９とメッセージ交換を行うことで、サーバ側のエンジンを一方向関数に入力したときの整数値を受け取る。その整数値を鍵として、暗号化してある本来の実行コ−ドと持参データとを復号化して、本来のエージェントをサーバ側エンジン４上で動作させることで、セキュリティを確保する。
【００２４】
次に図１の構成において、読み出しパターンと一方向関数を用いて行うエンジンの正当性検証処理の手法を、図２乃至図５により具体例で説明する。
図２の（Ａ）は、複数バイトで表されるエンジンコードの例を示す。図２の（Ｂ）は、このようなエンジンコードに対して与えられる読み出しパターンの例を示す。読み出しパターンは、エンジンコードのバイト数に対応するビット数をもち、その順次のビット位置は、エンジンコードの順次のバイトデータに対応づけられている。従って、エンジンコードがバイト構成のメモリに格納された場合、読み出しパターンの各ビットは、メモリの順次の番地に対応することになる。
【００２５】
読み出しパターンは、例えば乱数に基づいて生成される。読み出しパターンは、図２の（Ｂ）に示されるように、値“１”をもつビット位置に対応する番地のバイトデータのみを、メモリから読み出して、エンジンコードから、読み出しパターンに依存する少数のデータを抽出する。
【００２６】
図３は一方向関数の機能を示す。図２で読み出しパターンにより読み出されたデータは、一方向関数に入力されて、入力データに依存する値の固定長の出力整数に変換される。
【００２７】
図４に示されるように、正当性を検証しようとするサーバ側エンジンのエンジンコードは、クライアント側にも保持されている。クライアント側では、読み出しパターンを生成して、自己が保持するエンジンコードからデータを抽出し、一方向関数に入力して、クライアント側出力整数を作成する。一方、サーバ側で実行されるエンジンコードからも、同じ読み出しパターンを用いてデータを抽出させ、一方向関数によりサーバ側出力整数を作成させる。このようにして得られたクライアント側出力整数とサーバ側出力整数とを比較し、図示のように一致が得られた場合には、サーバ側エンジンは正当であると判定する。
【００２８】
これに対し、図５に示されるように、不正処理の目的などでサーバ側エンジンコードの一部が書き替えられている場合には、図４と同じ処理を行っても、得られるクライアント側出力整数とサーバ側出力整数とは不一致となり、サーバ側エンジンコードは不正なものであると判定される。
【００２９】
【発明の実施の形態】
図６は、本発明が適用可能なインターネット上のマルチエージェントシステムとモーバイルコードの実行を示す説明図である。図示のようにある計算機のエンジンから送信されたモーバイルコードは、インターネット上に分散している計算機のエンジン間を移動し、順次のサーバエージェントとメッセージ交換をしながら必要なデータを処理していく。
【００３０】
図７は、クライアント側のエンジンで検証エージェントが動作するシステムの構成例を示す説明図である。図７では、図１に示したシステム中の構成要素と共通の要素は、同じ参照番号で示してある。図７において新たに示された要素は１４ないし１６であり、１４はクライアント側システムのエンジン、１５はエンジン１４上で動作する検証エージェント、１６はエンジン１４から送信されたモーバイルコードである。
【００３１】
エンジンコードのすべてを読み出すのではなく、エンジンコード中で読み出しパターンで指定された番地のデータだけが読み出されるようになる。したがって、クライアント側のエンジン１４上で動作している検証エージェント１５からの検証要求時に、読み出しパターンを任意に指定することで、次のようにセキュリティのレベルを向上させることが可能となる。
【００３２】
つまりサーバ側は、クライアント側からの検証要求毎にエンジンコードの読み出しと一方向関数の計算を行なう必要があるので、最初は正当なエンジンを用い、次からは不正エンジンを用いるということができなくなる。クライアントとサーバ間のエンジン検証のためのメッセージ交換の内容を、第三者が盗聴しても、同一の読み出しパターンが再び使われなければ、無意味なパターンと数字の対でしかない。また、副次的効果として、エンジンコードのすべてを読み出す必要がなくなるので、検証のための時間的コストを下げることが可能となる。
【００３３】
この読み出しパターンを用いる方法には、検証をクライアント側のエンジン上で行う場合と、検証をサーバ側のエンジン上で行う場合の二つがあり、どちらの場合でも有効性は変わらない。
【００３４】
図７の検証をクライアント側のエンジン上で行う場合の動作を、図８の制御フローを参照して説明する。
図７のシステム構成では、クライアント側のエンジン１４上で、サーバ側のエンジンの正当性を検証する検証エージェント１５を動作させ、利用するサーバが動作するエンジン４に向けて、モーバイルコードを送信する前に、その相手先のエンジンの正当性を検証する。最初に、クライアント側の検証エージェント１５から、サーバ側の検証代行エージェント９にエンジン検証要求メッセージを送信する（１）。ここで、読み出しパターンを用いるときには、そのパターンも送信する。サーバ側の検証代行エージェント９は、エンジン４内のインターフェース部１０を介して、エンジン外のエンジンコード読み出し部１１及び一方向関数計算部１３でエンジンコードに依存した整数値を得て、その整数値をクライアント側の検証エージェントに返している（２）。このシステム構成の利点は、相手先のエンジンの検証が終わるまで、モーバイルコード１６を送信（３）しなくても良いので、送信途中及び送信先での不正読み出しと書き換えの機会を減らせることである。また、検証エージェント作成にあたって，使用リソースに制限が少ないことも利点となる。
【００３５】
このように、クライアント側のエンジン１４上で、サーバ側のエンジンの正当性を検証する検証エージェント１５を動作させて、サーバ側の検証代行エージェント９とエンジン検証のためのメッセージ交換を行なう場合には、それらのメッセージ交換に、相互の認証とメッセージの電子署名と暗号化を行なうようにしてもよい。そうすると、サーバ側の検証代行エージェントがクライアント側からの検証要求メッセージの真偽を確認してから、検証手続きを開始することで不要な情報の漏出を防ぐとともに、悪意により頻繁に偽の検証要求メッセージが送出された場合のサーバ側のエンジン過負荷状態を回避できる。また、クライアント側がサーバ側からの検証のための整数値のメッセージの真偽を確認することで、第三者の偽または改ざんされたメッセージ送信による検証の妨害を防ぐことが可能となる。
【００３６】
次に、検証エージェントをサーバ側のエンジン上で動作させる場合について述べる。
図９は、この場合にクライアント側から、利用するサーバが動作しているエンジンに対して、送信するモーバイルコードの例を示す。モーバイルコードは、実行コード部分と持参コード部分からなる。
【００３７】
実行コード部分には、エンジンの正当性の検証と、検証後の暗号化されたコード等の復号化、そして、そのコードの実行を行なう、エンジン検証エージェントのコードが格納される。また持参データ部分には、暗号化された本来の実行コードとその持参データとが格納されている。その暗号化は、エンジンコードを一方向関数に入力して得られる整数値を鍵として復号化できるように施されている。モーバイルコードが、サーバ側のエンジンに到達すると、エンジン検証エージェントが起動される。エンジン検証エージェントは、図１０の制御フローに示されるように、最初に、検証代行エージェントに対して、検証要求メッセージを送信する。ここで，読み出しパターンを用いるときには、そのパターンも送信する。検証代行エージェント９は、エンジン内のインターフェース部１０を介して、エンジン外のエンジンコード読み出し部、一方向関数計算部でエンジンコードに依存した整数値を得て、その整数値を検証エージェントに返す。検証エージェントは、その整数値を鍵として、持参データ中のこのエンジン上で起動すべきエージェントの実行コードと持参データの復号化を行い、このエンジン上で起動を行なう。このシステム構成の利点は、検証のためのメッセージ交換が、サーバ側のエンジン上でローカルに行なわれるので、第三者に不正な読み出しや書き換えを行なわれる可能性が低いことである。
【００３８】
このように、検証エージェントをサーバ側のエンジン上で動作させる場合で、クライアント側から、利用するサーバが動作しているエンジンに対して、送信するモーバイルコードの持参データとして、本来の実行コードとそのデータとを暗号化して格納してあって、それらを検証代行エージェントから得たエンジンコードを一方向関数に入力して得られる整数値を鍵として、復号化して実行するシステムの場合とは、サーバ毎に固有の鍵を暗号化のときに付加する。暗号化に公開鍵を用いる場合で、サーバから得たデータを新たに持参データにする場合には、図１１に示すようにクライアントまたは途中でそのデータを利用する必要のあるサーバの公開鍵暗号を用いた暗号化を行なう。この方式の利点は、モーバイルコードが移動しながら複数のサーバを利用する場合に、途中の所定のサーバ及びクライアント自身以外に、実行コード及びデータの読み出し・書き換えを行なわれる危険性をさらに減らせることである。
【００３９】
さらに、図１２に示すように、サーバ側にエンジンの自己検証装置１７を付加する構成とすることができる。この場合、自己検証装置１７は、サーバのエンジンの起動及び、稼動中に、定期的にエンジン外のエンジンコード読み出し部１１と一方向関数計算部１３でエンジンコードに依存した整数値を得て、正しい値と比較を行なうことにより、エンジンコードの書き換えの自己検証を行なう。この方式の利点は、サーバ側で自己検証を行なうことで、クライアント側のモーバイルコードの不正な読み出し・書き換えを未然に防ぐことで、サーバの信頼を保つことがてきることである。
【００４０】
【発明の効果】
本発明によれば、モーバイルコードが実行される際に、モーバイルコードが持つデータ（実行コードを含む）の内、サーバに開示されるのは、モーバイルコード内の明示的記述により指定された部分のみであることを、サーバに用いられているモーバイルコード実行エンジン自体が保証し、その保証の確認をクライアント側ですることができる。したがって、モーバイルコードの発信に際して、発信先のサーバに対しては、そのサーバにおける動作に関してモーバイルコード中の必要な情報のみを相手サーバに開示することが可能となるので、インターネット上の複数のサーバを巡っての情報収集や複数ステップからなる一連のデータ処理作業のように、個々のサーバにはモーバイルコード中の一部分の情報を開示しても良いが全部を開示したくない場合や、モーバイルコードが各々のサーバから得て内蔵している情報を他のサーバには秘密にする必要がある場合に、モーバイルコードを安全に用いることが可能となる。
【図面の簡単な説明】
【図１】本発明の原理的構成図である。
【図２】本発明によるエンジンの正当性の検証処理（その１）の説明図である。
【図３】本発明によるエンジンの正当性の検証処理（その２）の説明図である。
【図４】本発明によるエンジンの正当性の検証処理（その３）の説明図である。
【図５】本発明によるエンジンの正当性の検証処理（その４）の説明図である。
【図６】インターネット上でのマルチエージェントシステムとモーバイルコードの実行を示す説明図である。
【図７】クライアント側のエンジンで検証エージェントが動作するシステムの構成例を示す説明図である。
【図８】クライアント側のエンジン上で検証エージェントを動作させるシステムの制御フローである。
【図９】サーバ側のエンジン上で検証エージェントを動作させるシステムのモーバイルコードの説明図である。
【図１０】サーバ側のエンジン上で検証エンジンを動作させるシステムの制御フローを示す図である。
【図１１】モーバイルコードの構成例を示す説明図である。
【図１２】エンジンに自己検証装置を付加した構成例を示す説明図である。
【符号の説明】
１：  不正読み出し・書換え禁止機能付きエンジン
２：  エンジンの正当性の検証の代行装置
３：  クライアント側システム
４：  サーバ側エンジン
５：  リソース
６：  アクセス管理装置
７：  サーバエージェント
８：  エージェント
９：  検証代行エージェント
１０：インターフェース部
１１：エンジンコード読み出し部
１２：読み出しパターン格納部
１３：一方向関数計算部
【図１】
0003905170.tif 000002
【図２】
0003905170.tif 000003
【図３】
0003905170.tif 000004
【図４】
0003905170.tif 000005
【図５】
0003905170.tif 000006
【図６】
0003905170.tif 000007
【図７】
0003905170.tif 000008
【図８】
0003905170.tif 000009
【図９】
0003905170.tif 000010
【図１０】
0003905170.tif 000011
【図１１】
0003905170.tif 000012
【図１２】
0003905170.tif 000013