(57)【要約】【課題】ユーザに鍵などを持たせる必要なく、かつ、安全に認証を実現する。【解決手段】データ通信網で相互に接続された一以上の情報処理装置１４にて動作するエージェントを認証するための認証コードを発行するとともに、当該認証コードを利用して、エージェントを認証する情報処理装置１６は、外部からのアクセスを禁止する非公開記憶領域に記憶された情報を利用した、各エージェントを認証するための判定条件を含む認証コードを発行し、対応するエージェントに格納させるとともに、認証に利用する自己の判定条件を含むデータの組を記憶する認証コード発行処理部２０と、各エージェントから認証コードを受理し、当該認証コードおよび記憶した自己の判定条件を利用して、エージェントを認証する認証コード検証部２２とを備えている。【選択図】  図２
2004172962.tif 000002
【特許請求の範囲】
【請求項１】
データ通信網で相互に接続された一以上の情報処理装置において、当該情報処理装置にて動作するプログラムおよび関連するデータにて構成されるエージェントを認証するための認証コードを発行するとともに、当該認証コードを利用して、前記エージェントを認証する認証装置であって、
外部からのアクセスを禁止する非公開記憶領域に記憶された情報を利用した、各エージェントを認証するための判定条件を含む認証コードを発行し、対応するエージェントに格納させるとともに、前記認証に利用する自己の判定条件を含むデータの組を記憶する認証コード発行処理手段と、
各エージェントから認証コードを受理し、当該認証コードおよび記憶した自己の判定条件を利用して、前記エージェントを認証する認証コード検証手段とを備えたことを特徴とする認証装置。
【請求項２】
前記認証コード発行処理手段が、
（認証すべきエージェントの数＋１）個の乱数を発生する乱数発生手段と、
前記乱数を用いて、認証装置とエージェントとの間の判定条件を生成する判定条件生成手段とを有することを特徴とする請求項１に記載の認証装置。
【請求項３】
前記判定条件生成手段が、
前記乱数および非公開のハッシュ関数、或いは、前記乱数、非公開のハッシュ関数および非公開の数値表中の定数を用いて、認証装置および各エージェントのそれぞれに関連する（認証すべきエージェントの数＋１）個のハッシュ値を生成し、かつ、認証装置自身に関連するハッシュ値および各エージェントに関連するハッシュ値の結合のそれぞれに、所定の関数を施して判定条件を得るとともに、
前記乱数および判定条件の組を認証コードとして、対応するエージェントに格納させ、かつ、前記乱数および関数の種別を、自身の情報として記憶するように構成されたことを特徴とする請求項２に記載の認証装置。
【請求項４】
前記判定条件生成手段が、
前記乱数および非公開のハッシュ関数、或いは、前記乱数、非公開のハッシュ関数および非公開の数値表中の定数を用いて、認証装置および各エージェントのそれぞれに関連する（認証すべきエージェントの数＋１）個のハッシュ値を生成し、かつ、認証装置自身に関連するハッシュ値およびエージェントに関連するハッシュ値の結合に、所定の関数を施して判定条件を得るとともに、
前記乱数および判定条件を認証コードとして、何れかのエージェントに格納させるとともに、前記乱数を、他のエージェントに格納させ、かつ、前記乱数および関数の種別を、自身の情報として記憶するように構成されたことを特徴とする請求項２に記載の認証装置。
【請求項５】
さらに、データ通信網を介して移動したエージェントを記憶するエージェント記憶手段を有し、
前記認証コード発行処理手段が、認証コードを、前記エージェント記憶手段中のエージェントに格納し、かつ、前記認証コード検証手段が、前記エージェント記憶手段中のエージェントから認証コードを取り出すように構成されたことを特徴とする請求項１ないし４の何れか一項に記載の認証装置。
【請求項６】
さらに、前記認証コード検証手段による、エージェントの検証が終了した場合に、エージェント間のデータ交換が許可されることを特徴とする請求項１ないし５の何れか一項に記載の認証装置。
【請求項７】
前記認証コード発行処理手段が、前記エージェントから、当該エージェントを特定する情報、および、前記エージェントにおいて経時的に変化しない情報であるコード部或いはその一部を、前記データ通信網を介して受理し、当該エージェントを特定する情報および経時的に変化しない情報に基づいて、判定条件を生成することを特徴とする請求項１ないし４の何れか一項に記載の認証装置。
【請求項８】
データ通信網で相互に接続された一以上の情報処理装置において、当該情報処理装置にて動作するプログラムおよび関連するデータにて構成されるエージェントを認証するための認証コードを発行するとともに、当該認証コードを利用して、前記エージェントを認証する認証装置を利用したエージェントの認証方法であって、
外部からのアクセスを禁止する非公開記憶領域に記憶された情報を利用した、各エージェントを認証するための判定条件を含む認証コードを発行するステップと、
前記認証コードを、対応するエージェントに格納させるとともに、前記認証に利用する自己の判定条件を含むデータの組を、認証装置の記憶装置に記憶するステップと、
各エージェントから認証コードを受理し、当該認証コードおよび記憶した自己の判定条件を利用して、前記エージェントを認証するステップとを備えたことを特徴とするエージェントの認証方法。
【請求項９】
前記認証コードを発行するステップが、
（認証すべきエージェントの数＋１）個の乱数を発生する乱数発生ステップと、
前記乱数を用いて、認証装置とエージェントとの間の判定条件を生成する判定条件生成ステップとを有することを特徴とする請求項８に記載の方法。
【請求項１０】
前記判定条件生成ステップが、
前記乱数および非公開のハッシュ関数、或いは、前記乱数、非公開のハッシュ関数および非公開の数値表中の定数を用いて、認証装置および各エージェントのそれぞれに関連する（認証すべきエージェントの数＋１）個のハッシュ値を生成するステップと、
認証装置自身に関連するハッシュ値および各エージェントに関連するハッシュ値の結合のそれぞれに、所定の関数を施して判定条件を得るステップと、
前記乱数および判定条件の組を認証コードとして、対応するエージェントに格納させ、かつ、前記乱数および関数の種別を、自身の情報として、認証装置の記憶手段に記憶するステップとを有することを特徴とする請求項９に記載の方法。
【請求項１１】
前記判定手段生成ステップが、
前記乱数および非公開のハッシュ関数、或いは、前記乱数、非公開のハッシュ関数および非公開の数値表中の定数を用いて、認証装置および各エージェントのそれぞれに関連する（認証すべきエージェントの数＋１）個のハッシュ値を生成するステップと、
認証装置自身に関連するハッシュ値およびエージェントに関連するハッシュ値の結合に、所定の関数を施して判定条件を得るステップと、
前記乱数および判定条件を認証コードとして、何れかのエージェントに格納させるとともに、前記乱数を、他のエージェントに格納させるステップと、
前記乱数および関数の種別を、自身の情報として、認証装置の記憶手段に記憶するステップとを備えたことを特徴とする請求項９に記載の方法。
【請求項１２】
さらに、データ通信網を介して移動したエージェントを、認証装置中のエージェント記憶手段に記憶するステップと、
認証コードの発行の際に、前記認証コードを、前記エージェント記憶手段中のエージェントに格納し、かつ、前記認証コードの検証の際に、前記エージェント記憶手段中のエージェントから認証コードを取り出すように構成されたことを特徴とする請求項８ないし１１の何れか一項に記載の方法。
【請求項１３】
さらに、エージェントの検証が終了した場合に、エージェント間のデータ交換を許可するステップを備えたことを特徴とする請求項８ないし１２の何れか一項に記載の方法。
【請求項１４】
請求項１ないし７の何れか一項に記載の複数の認証装置を用いて、エージェントを認証する認証方法であって、
前記非公開記憶領域に記憶された情報を同期させるステップを備え、
ある認証装置において、各エージェントを認証するための判定条件を含む認証コードを発行し、対応するエージェントに格納させ、
他の認証装置において、前記エージェントから認証コードを受理し、当該エージェントを認証するように構成されたことを特徴とする方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、共通鍵のように秘匿性を保持する必要なく、アプリケーション・エージェントを認証する方法に関する。
【０００２】
【従来の技術】
アクセスしようとする者が、当人であることを確認する認証手段としてパスワード方式が広く使用されている。これは計算機に複数ユーザがアクセスできる仕組みが登場して以来、２０年以上にわたって使われてきた伝統的な手法である。インターネットが普及し、クライアントとサーバが物理的に離間している場合にも、同様の手法が採られている。
【０００３】
パスワード方式の認証では、サーバ（ボブ）の側で、「いまアクセスしている者が「アリス」である」とする根拠は、その者が「「アリス」のパスワード」を知っていたことに依拠している。特に、インターネットの世界では、「アリス」以外の者（「イブ」）が、「アリス」のパスワードを知ることがしばしば生じ得る。もともとパスワードという秘密情報を、インターネットという無防備なネットに送り込んでいるため、なおさら「イブ」がパスワードを知る危険性は高まることになる。
【０００４】
その一方、「公開情報」のみを送ることにより相手（サーバ）側を認証する方式として、公開鍵方式が実用化されている。公開鍵方式では、「アリス」の属性情報（たとえば、名前、住所など）と公開鍵を合わせた書面に、認証局のディジタル署名をもらうことで、「アリス」の公開鍵を認証局から認めてもらうようになっている。このように認証局から認められたものを「アリス」のディジタル証明書と称する。
【０００５】
公開鍵方式においては、「アリス」がサーバにアクセスする際に、まず、ディジタル証明書を提示する。サーバはこれを受理すると、証明書に添付された認証局の署名を確認する。これにより、ここにある公開鍵は確かに「アリス」のものであることを確認できる。次いで、返送すべきメッセージを、その公開鍵にて暗号化して「アリス」に送信する。「アリス」が対応する秘密鍵（復号鍵）を持っていれば、そのメッセージを開くことができるが、「アリス」以外の者（「イブ」）が成りすましている場合には、復号ができずメッセージを開くことができない。  メッセージ内容を確認した「アリス」は、その内容にしたがった返答をサーバ側に送ればよい。
【０００６】
サーバ側においては、返答が正しいものであれば、今アクセスしている者が確かに「アリス」であることを認証することができる。アクセスしている者が本当の「アリス」であるか、それとも「イブ」による成りすましであるかの違いは、秘密鍵を保持しているか否かで判断されている。秘密鍵はサーバ側に送られることはないため、公開情報（公開鍵）のみでアリスの認証が可能となる。したがって、公開鍵方式を利用すれば、パスワードのような秘密情報をインターネット上で送る必要をなくすことができる。
【０００７】
たとえば、特許文献１には、利用者が結託しても権利を詐称することができないようなよりセキュアな利用資格検証装置が開示されている。ここでは、一方向関数ｈ（・，・）を利用して、公開鍵の法数ｎと証明装置が保持する秘密情報ｄｕとに対して、証明装置２０が、ｈ（ｄｕ，ｎ）を作成し、さらに、公開鍵に対応する証明補助情報ｔおよび試験情報を用いて作成した応答情報Ｒ≡Ｃｔｈ（ｄｕ，ｎ）を検証装置１０に与えている。
【０００８】
【特許文献１】特開平１１−３２０３６号公報
【０００９】
【発明が解決しようとする課題】
しかしながら、公開鍵方式においては、「アリス」が移動して他の場所において他の計算機を利用して認証を受けようとする場合にも、秘密鍵を利用しなければならない。このため、「アリス」は秘密鍵を常時携帯しておく必要があり、防犯上望ましくない。特に、エージェントを一方の情報処理装置から他の情報処理装置に移動する場合に、「アリス」は秘密鍵を持って、一方の情報処理装置から他の情報処理装置まで移動しなければならず、非現実的である。「アリス」が秘密鍵を持って移動する手間を無くすために、エージェント本体に秘密鍵を保持させて、移動させることも考えられる。しかしながら、エージェントをインターネットなどの広域通信網中を移動させるため、その移動中に秘密鍵を盗まれる危険が大きい。
【００１０】
たとえば、特許文献１に開示された技術においても、公開鍵暗号系を前提としている。したがって、検証装置は、非公開数ｒを保持管理し、その一方、証明装置は、非公開数ｄｕを保持管理する必要がある。
本発明は、ユーザに鍵などを持たせる必要なく、かつ、安全な認証方法を提供することを目的とする。
【００１１】
【課題を解決するための手段】
本発明の目的は、データ通信網で相互に接続された一以上の情報処理装置において、当該情報処理装置にて動作するプログラムおよび関連するデータにて構成されるエージェントを認証するための認証コードを発行するとともに、当該認証コードを利用して、前記エージェントを認証する認証装置であって、外部からのアクセスを禁止する非公開記憶領域に記憶された情報を利用した、各エージェントを認証するための判定条件を含む認証コードを発行し、対応するエージェントに格納させるとともに、前記認証に利用する自己の判定条件を含むデータの組を記憶する認証コード発行処理手段と、各エージェントから認証コードを受理し、当該認証コードおよび記憶した自己の判定条件を利用して、前記エージェントを認証する認証コード検証手段とを備えたことを特徴とする認証装置により達成される。
【００１２】
本発明によれば、非公開記憶領域に記憶された情報を利用して、エージェントを認証するための判定条件を生成し、当該判定条件を含む認証コードを、エージェントに格納する。その後、認証が必要な場合には、エージェントから認証コードを取り出して、認証を実行する。これにより、ユーザが鍵を保持することなく、プログラムなどエージェントの改ざんの有無等を検証し、エージェント作動の際における安全性を向上させることが可能となる。
【００１３】
好ましい実施態様においては、前記認証コード発行処理手段が、（認証すべきエージェントの数＋１）個の乱数を発生する乱数発生手段と、前記乱数を用いて、認証装置とエージェントとの間の判定条件を生成する判定条件生成手段とを有する。
【００１４】
より好ましい実施態様においては、前記判定条件生成手段が、前記乱数および非公開のハッシュ関数、或いは、前記乱数、非公開のハッシュ関数および非公開の数値表中の定数を用いて、認証装置および各エージェントのそれぞれに関連する（認証すべきエージェントの数＋１）個のハッシュ値を生成し、かつ、認証装置自身に関連するハッシュ値および各エージェントに関連するハッシュ値の結合のそれぞれに、所定の関数を施して判定条件を得るとともに、前記乱数および判定条件の組を認証コードとして、対応するエージェントに格納させ、かつ、前記乱数および関数の種別を、自身の情報として記憶するように構成されている。
【００１５】
或いは、前記判定条件生成手段が、前記乱数および非公開のハッシュ関数、或いは、前記乱数、非公開のハッシュ関数および非公開の数値表中の定数を用いて、認証装置および各エージェントのそれぞれに関連する（認証すべきエージェントの数＋１）個のハッシュ値を生成し、かつ、認証装置自身に関連するハッシュ値およびエージェントに関連するハッシュ値の結合に、所定の関数を施して判定条件を得るとともに、前記乱数および判定条件を認証コードとして、何れかのエージェントに格納させるとともに、前記乱数を、他のエージェントに格納させ、かつ、前記乱数および関数の種別を、自身の情報として記憶するように構成されても良い。
【００１６】
前者においては、各エージェントに別個の判定条件が対応付けられ、その一方、後者においては、エージェントに共通の判定条件が対応付けられる。
【００１７】
別の好ましい実施態様においては、さらに、データ通信網を介して移動したエージェントを記憶するエージェント記憶手段を有し、前記認証コード発行処理手段が、認証コードを、前記エージェント記憶手段中のエージェントに格納し、かつ、前記認証コード検証手段が、前記エージェント記憶手段中のエージェントから認証コードを取り出すように構成されている。これは、エージェント自体が認証装置に参集して、認証コードを格納し、また、認証コードの読み出しを受けて認証される。また、前記認証コード検証手段による、エージェントの検証が終了し、改ざんがなかったと判定された場合に、エージェント間のデータ交換が許可される。たとえば、エージェント間のデータ交換は、認証装置の内部で行えばよい。
【００１８】
別の好ましい実施態様においては、前記認証コード発行処理手段が、前記エージェントから、当該エージェントを特定する情報、および、前記エージェントにおいて経時的に変化しない情報であるコード部或いはその一部を、前記データ通信網を介して受理し、当該エージェントを特定する情報および経時的に変化しない情報に基づいて、判定条件を生成する。この実施態様においては、エージェント自体は、情報処理装置から移動せず、コード部或いはその一部を認証装置に与え、認証装置が、これに基づいて、認証コードを作成し、エージェントに返す。したがって、情報処理装置から移動しないエージェント（静的エージェント）であっても、鍵を利用せずに、安全性の検証が可能となる。
【００１９】
また、本発明の目的は、データ通信網で相互に接続された一以上の情報処理装置において、当該情報処理装置にて動作するプログラムおよび関連するデータにて構成されるエージェントを認証するための認証コードを発行するとともに、当該認証コードを利用して、前記エージェントを認証する認証装置を利用したエージェントの認証方法であって、外部からのアクセスを禁止する非公開記憶領域に記憶された情報を利用した、各エージェントを認証するための判定条件を含む認証コードを発行するステップと、前記認証コードを、対応するエージェントに格納させるとともに、前記認証に利用する自己の判定条件を含むデータの組を、認証装置の記憶装置に記憶するステップと、各エージェントから認証コードを受理し、当該認証コードおよび記憶した自己の判定条件を利用して、前記エージェントを認証するステップとを備えたことを特徴とするエージェントの認証方法によっても達成される。
【００２０】
さらに、本発明の目的は、上記認証装置を用いて、エージェントを認証する認証方法であって、非公開記憶領域に記憶された情報を同期させるステップを備え、ある認証装置において、各エージェントを認証するための判定条件を含む認証コードを発行し、対応するエージェントに格納させ、他の認証装置において、前記エージェントから認証コードを受理し、当該エージェントを認証するように構成されたことを特徴とする方法によっても達成される。
ここでは、複数の認証装置において、非公開の情報、たとえば、ハッシュ関数や定数を記憶する数値テーブルや関数と定数との対応表を共通とする。したがって、認証コードを取得したエージェントは、他の認証装置において認証を受けることができる。
【００２１】
【発明の実施の形態】
以下、添付図面を参照して、本発明の実施の形態につき説明を加える。図１は、本発明の実施の形態にかかるシステムの一例を示すブロックダイヤグラムである。図１に示すように、本実施の形態においては、インターネットなどの広域通信網１２に、種々の情報処理装置１４−１、１４−２、１４−３、・・・が接続されるとともに、後述する認証機能をもつ情報処理装置１６が接続されている。以下、何れかの情報処理装置を指し示す場合には、単に、情報処理装置１４と記載する。
【００２２】
本実施の形態において、情報処理装置１４として、据え置き型のパーソナルコンピュータやラップトップコンピュータのほか、インターネットなどに接続可能な携帯電話、ＰＤＡなどの携帯端末装置を利用することもできる。情報処理装置１４、認証機能付きの情報処理装置１６中では、アプリケーション・エージェント（以下、単に「エージェント」と称する）が作動して、必要な処理を実行できるようになっている。また、エージェントは、後述するように、情報処理装置間を移動することも可能である。なお、認証機能付きの情報処理装置１６では、一定のデータが保護された状態で保管されるため、本実施の形態において、場合によっては、「オアシス・ノード」とも称する。
【００２３】
図１に示すように、オアシス・ノード１６は、認証のために必要なデータを発行し、或いは、エージェントを認証するための認証管理部１８を有する。認証管理部１８には、認証コードを発行する際の種々の処理を実行する認証コード発行処理部２０と、エージェント中の認証コード、つまり、乱数および後述する判定条件を用いて、エージェントの真正さを認証する認証コード検証部２２とを有している。
【００２４】
図２は、オアシス・ノード１６をより詳細に示すブロックダイヤグラムである。図２に示すように、オアシス・ノード１６は、広域通信網１２とのデータ授受を制御するインタフェース（Ｉ／Ｆ）２４、広域通信網１２を介して移動したエージェントを一時的に記憶するエージェント一時記憶部２５を有している。また、認証コード発行処理部２０は、必要な数の乱数を発生する乱数発生部２６と、エージェント一時記憶部２５に記憶されたエージェントから、エージェントの識別子およびエージェントのコード部を取得するコード／識別子取得部２８と、コード部、エージェント識別子、乱数に基づきハッシュ値を算出するハッシュ演算部３０と、各エージェントに関する認証条件を算出する認証条件算出部３６と、オアシス・ノードにて記憶すべき認証条件等を記憶する条件記憶部３８とを有している。
【００２５】
また、認証コード発行処理部２０は、ハッシュ演算部にて用いる数値を記憶する数値テーブル３２と、関数に関する種々の情報を記憶する関数テーブル３４とを有する。これら数値テーブル３２および関数テーブル３４は、非公開領域４４であり、外部からのアクセスが不可能になっている。たとえば、オアシス・ノード１６のＯＳなどの基本ソフトウェアにより、上記非公開領域４４への外部からの不正アクセスができないようにしておけば良い。
認証コード検証部２２は、エージェントが保持している情報を取得する情報取得部４０と、認証処理を実行する認証処理部４２とを有している。
【００２６】
上述したような構成のオアシス・ノード１６を利用した認証処理について、以下に説明する。まず、認証コード発行処理部２０による処理を説明する。図３は、情報処理装置１４とオアシス・ノード１６との間、および、それぞれにて実行される処理の一例を示すフローチャートである。この例では、ある情報処理装置１４（たとえば、パーソナルコンピュータ（ＰＣ１））に位置し、当該「ＰＣ１」を動作させて所定の処理を実行しているエージェントＡｐｐＡ１が、他の１以上の情報処理装置中に位置している、（Ｎ−１）個の他のエージェント（ＡｐｐＡｉ＝２、３、・・・、Ｎ）と共同作業をし、その主催者となる。このように共同作業の主催者となるエージェントを、以後、「主催エージェント」とも称する。なお、この処理において、主催エージェントは、他の（Ｎ−１）個のエージェントの名称やＩＰアドレスを予め知っている。
【００２７】
まず、主催エージェントとなるＰＣ１中のエージェントＡｐｐＡ１（符号３００参照）が、オアシス・ノード１６の認証管理部１８（より詳細には認証コード発行処理部２０）に対して、他の（Ｎ−１）個のエージェントＡｐｐＡｉとの共同作業を主催することを宣言する（ステップ３０１）。また、エージェントＡｐｐＡ１は、上記他の（Ｎ−１）個のエージェントＡｐｐＡｉが位置する他の情報処理装置に対して、エージェントＡｐｐＡｉ宛で、共同作業を依頼する（ステップ３０２）。
【００２８】
各情報処理装置のエージェントＡｐｐＡ１、および、ＡｐｐＡｉ（たとえば、符号３１０参照）は、それぞれ、オアシス・ノード１６に移動する（ステップ３０３、３０４）。これにより、共同作業に関連するエージェントが、オアシス・ノード１６に参集し、エージェント一時記憶部２５に記憶される（ステップ３０５）。
【００２９】
認証コード発行処理部２０は、乱数の発生、認証に用いる判定条件に必要なエージェント中の情報の抽出、および、認証条件の算出を実行し（ステップ３０６）、必要な情報を、各エージェントに格納する（ステップ３０７）。本実施の形態においては、エージェント中の情報として、エージェントを一意的に特定するエージェント識別子（ｉｄＡｉ、ｉ＝１、２、・・・、Ｎ）と、エージェントのコード部（ＣｏｄｅＡｉ、ｉ＝１、２、・・・、Ｎ）とが利用される。したがって、コード／識別子取得部２８は、エージェント一時記憶部２５に記憶されたエージェントＡｐｐＡｉのそれぞれから、エージェント識別子およびコード部を抽出する。なお、このコード部とは、エージェントのプログラム中、時間的に変化しない部分を意味する。たとえば、ソースコードをコード部とすることができる。
【００３０】
その後、エージェントＡｐｐＡ１〜ＡｐｐＡＮは、たとえば、元来位置していた情報処理装置にそれぞれ移動し、必要な処理（たとえば、依頼された共同作業）を実行すればよい（ステップ３０８、３０９）。無論、もとの情報処理装置ではなく、他の情報処理装置に、エージェントＡｐｐＡｉが移動しても良いことはいうまでも無い。或いは、エージェントは、オアシス・ノード１６内に留まって、当該オアシス・ノード１６内のハードウェア資源を利用して、必要な処理を実行しても良い。
【００３１】
図４は、ステップ３０６、３０７の処理をより詳細に示すフローチャートである。認証コード発行処理部２０の乱数発生部２６は、共同作業するエージェント数に「１」を加えた（Ｎ＋１）個の乱数（ｒ０１、ｒ１、ｒ２、・・・、ｒＮ）を発生する（ステップ４０１）。次いで、後述する認証条件を作成するための関数ｆｎが決定され、当該ｆｎに予め関連付けられた数値表中の定数Ｃが選択される（ステップ４０２）。
【００３２】
本実施の形態においては非公開領域４４の数値テーブル３２には、関数ｆｎを一意的に特定する情報（たとえば、ｆｎの種別や名称、以下、これを「ｆｎ種別」と称する。）と定数Ｃとが関連付けられて記憶され、関数ｆｎ種別が決定されると、これに伴って定数Ｃが決定されるようになっている。また、非公開領域４４の関数テーブル３４には、関数ｆｎのアルゴリズム自体を特定する情報が、記憶されるようになっている。関数ｆｎとして、ハッシュ関数、非周期関数、分散の大きな乱数発生関数を利用することができる。したがって、ステップ４０２においては、たとえば、ハッシュ演算部３０が、関数テーブル３４を参照して、今回の認証に利用する関数ｆｎ種別を決定し、そのアルゴリズムを取得するとともに、数値テーブル３２を参照して、決定されたｆｎに関連付けられた定数Ｃを取得すればよい。
【００３３】
なお、関数ｆｎは、認証の処理を実行するたびに異なるように決定するのが望ましい。無論、処理のたびに異なる関数ｆｎを決定することに限定されず、所定回数（これもランダムであって良い）の処理が終了すると異なる関数ｆｎを決定するように構成しても良い。また、関数ｆｎ選択のアルゴリズムも、関数テーブル３４に記憶され、非公開となっている。
次いで、ハッシュ演算部３０は、（Ｎ＋１）個の乱数および定数Ｃを用いて、以下のような、（Ｎ＋１）個の変換値を生成する（ステップ４０３）。
【００３４】
ｒ０１’＝｛ｒ０１  ＸＯＲ  Ｃ｝
ｒ１’＝｛ｒ１  ＸＯＲ  Ｃ｝
：
ｒＮ’＝｛ｒＮ  ＸＯＲ  Ｃ｝（ただし、「ＸＯＲ」は排他的論理和）
【００３５】
次いで、エージェントのコード部の完全性の保証（そのための改ざんの有無の検査）をなすため、また、なりすまし防止のために、ハッシュ演算部３０は、オアシス・ノード１６自体のコード部（Ｃｏｄｅ０１）およびその識別子（ｉｄ０１）、並びに、各エージェントＡｐｐＡｉのコード部（ＣｏｄｅＡｉ）およびそのエージェント識別子（ｉｄＡｉ）と、上記変換値とを利用して、ハッシュ値Ｈ０１およびＨｉ（ｉ＝１、２、・・・、Ｎ）を、以下のように算出する（ステップ４０４、４０５）。
【００３６】
ｈ０１１＝ｈ（Ｃｏｄｅ０１  ｜｜  ｒ０１’），ｈ０１２＝ｈ（ｉｄ０１）
Ｈ０１＝（ｈ０１１  ｜｜  ｈ０１２）
（ただし、「ｈ（  ，  ）」はハッシュ関数、「｜｜」は結合を表す。）
ｈ１１＝ｈ（ＣｏｄｅＡ１  ｜｜  ｒ１’），  ｈ１２＝ｈ（ｉｄＡ１）
Ｈ１＝ｈ（ｈ１１
｜｜  ｈ１２）
ｈ２１＝ｈ（ＣｏｄｅＡ２  ｜｜  ｒ２’），  ｈ２２＝ｈ（ｉｄＡ２）
Ｈ２＝ｈ（ｈ２１
｜｜  ｈ２２）
：
ｈｉ１＝ｈ（ＣｏｄｅＡｉ  ｜｜  ｒｉ’），  ｈｉ２＝ｈ（ｉｄＡｉ）
Ｈｉ＝ｈ（ｈｉ１
｜｜  ｈｉ２）
：
ｈＮ１＝ｈ（ＣｏｄｅＡＮ  ｜｜  ｒＮ’），  ｈＮ２＝ｈ（ｉｄＡＮ）
ＨＮ＝ｈ（ｈＮ１
｜｜  ｈＮ２）
【００３７】
なお、ハッシュ関数も非公開とするのが望ましい。ハッシュ値が算出されると、認証条件算出部３６は、ハッシュ値に基づき、以下のような、オアシス・ノードと各エージェントＡｐｐＡｉとの間の判定条件Ｃｏｎｄ＿ｉを算出する（ステップ４０６）。
【００３８】
Ｃｏｎｄ＿１＝ｆｎ（Ｈ０１  ｜｜  Ｈ１）  （ＡｐｐＡ１のための判定条件）
Ｃｏｎｄ＿２＝ｆｎ（Ｈ０１  ｜｜  Ｈ２）  （ＡｐｐＡ２のための判定条件）
：
Ｃｏｎｄ＿ｉ＝ｆｎ（Ｈ０１  ｜｜  Ｈｉ）  （ＡｐｐＡｉのための判定条件）
：
Ｃｏｎｄ＿Ｎ＝ｆｎ（Ｈ０１  ｜｜  ＨＮ）  （ＡｐｐＡＮのための判定条件）
【００３９】
このようにして、判定条件が算出されると、認証条件算出部３６は、オアシス・ノード自身の条件記憶部３８に、データの組｛ｒ０１，ｆｎ種別｝を格納するとともに（ステップ４０７）、各エージェントＡｐｐＡｉ中に、データの組｛ｒｉ，Ｃｏｎｄ＿ｉ｝をそれぞれ格納する（ステップ４０８）。
【００４０】
次に、認証コード検証部２２による処理を、図５を参照して説明する。主催エージェントＡｐｐＡ１から、共同作業をする他のエージェントＡｐｐＡｉ（ｉ＝２、３、・・・、Ｎ）に対して呼び出しがあった場合、或いは、予め参集時刻が通知されていたときには、参集時刻に、ＡｐｐＡ１を含む各エージェントＡｐｐＡｉは、オアシス・ノード１６に参集する（ステップ５０１〜５０３）。これにより、エージェント一時記憶部２５に、各エージェントＡｐｐＡｉが一時的に記憶される。
【００４１】
次いで、認証コード検証部２２は、各エージェントＡｐｐＡｉを認証し、改竄の有無やなりすましの有無を判断する（ステップ５０４）。認証結果は、エージェント一時記憶部２５中の各エージェントＡｐｐＡｉに通知される（ステップ５０５）。エージェントＡｐｐＡｉの認証が成功している場合には、共同作業が許可され、たとえば、エージェント間のデータ交換が実現される（ステップ５０６）。その一方、認証が成功しなかった場合には、共同作業は許可されない。その後、たとえば、各エージェントＡｐｐＡｉは、元来位置していた情報処理装置に再度移動し、処理を続行しても良い（ステップ５０７、５０８）。無論、エージェントは、他の情報処理装置に移動しても良いし、或いは、オアシス・ノード１６に留まって処理を続行しても良い。
【００４２】
図６は、ステップ５０４、５０５の処理をより詳細に示すフローチャートである。情報取得部４０は、条件記憶部３８に記憶された自己のデータの組｛ｒ０１，ｆｎ種別｝と、エージェント一時記憶部２５に記憶された各エージェントＡｐｐＡｉに格納されたデータの組｛ｒｉ，Ｃｏｎｄ＿ｉ｝（ｉ＝１、２、・・・、Ｎ）とを取得する。次いで、認証処理部４２が、上記ｒ０１と、各エージェントＡｐｐＡｉのｒｉとを使用して、ハッシュ値Ｈ０１およびＨｉを算出する（ステップ６０１）。より詳細には、上記取得されたｒ０１およびｒｉを利用して、図４のステップ４０２〜４０５の処理を繰り返せばよい。
【００４３】
次いで、認証処理部４２は、ステップ６０１にて取得したハッシュ値Ｈ０１、Ｈｉを利用して、再度、ｆｎ種別により特定される関数ｆｎを適用して、ｆｎ（Ｈ０１  ｜｜  Ｈｉ）（ｉ＝１、２、・・・、Ｎ）を算出する（ステップ６０２）。その後、認証処理部４２は、先に取得した各エージェントＡｐｐＡｉの認証条件Ｃｏｎｄ＿ｉと、ステップ６０２で算出したｆｎ（Ｈ０１
｜｜  Ｈｉ）とを比較する（ステップ６０３）。
【００４４】
ステップ６０３で両者が一致していれば（ステップ６０３でイエス（Ｙｅｓ））、認証処理部４２は、主催エージェントＡｐｐＡ１およびエージェントＡｐｐＡｉに、共同作業の許可を通知する（ステップ６０５）。その一方、ステップ６０３で両者が一致していなければ（ステップ６０３でノー（Ｎｏ））、認証処理部４２は、双方のエージェントＡｐｐＡ１、ＡｐｐＡｉに、共同作業の不許可を通知する（ステップ６０６）。
【００４５】
このように本実施の形態によれば、オアシス・ノード１６において、乱数と判定条件を含む判定条件を生成し、乱数と、判定条件に用いる情報の一部とを、エージェントに格納しておき、認証時に、当該エージェント中の乱数から、再度、判定条件を算出し、これと、エージェントに格納された判定条件とを比較することで、認証を実現する。判定条件を算出するための情報の一部は、オアシス・ノード中で非公開とされ、外部から不正アクセスができないようにする。これにより、秘密鍵や共通鍵など特別な鍵を利用することなく、エージェントを認証することが可能となる。
また、本実施の形態によれば、共同作業をするための複数のエージェントを認証することが可能となる。
【００４６】
特に、本実施の形態においては、非公開記憶領域に定数Ｃ、定数Ｃと関数ｆｎ種別との関係、および、ｆｎのアルゴリズム自体、ハッシュ関数自体を記憶している。変換値を作成するための定数Ｃは、決定されたｆｎ種別に基づき、非公開記憶領域の情報を参照して特定される。認証のたびに利用するｆｎを変更することにより、ハッシュ値が認証のたびに変化する、つまり、アルゴリズムを動的に変更することができる。したがって、あるタイミングでクラックされても被害が広がることはない。
【００４７】
また、定数Ｃと関数ｆｎとの対応関係を、適当なタイミングで更新すれば、より安全性を高めることが可能となる。
【００４８】
次に、本発明の第２の実施の形態につき説明を加える。第１の実施の形態においては、エージェントは、情報処理装置間（情報処理装置とオアシス・ノード間を含む）を移動可能であったが、第２の実施の形態においては、エージェントは、それが格納された情報処理装置から移動しない。このようなエージェントを、本明細書において、「静的エージェント」とも称する。静的エージェントを認証する場合には、エージェント自体が移動できないため、当該静的エージェントから、コード部やその一部から作られるメッセージダイジェストが、オアシス・ノードに送信され、それに基づき、判定条件が作られる。
【００４９】
図７は、第２の実施の形態にかかる情報処理装置１４とオアシス・ノード１６との間、および、それぞれにて実行される処理の一例を示すフローチャートである。図７において、ステップ７０１、７０２は、図３のステップ３０１、３０２にそれぞれ一致する。また、第２の実施の形態においては、ＡｐｐＡ１（符号７００参照）、ＡｐｐＡｉ（ステップ７１０参照）は、それぞれ、移動する代わりに、コード部（ＣｏｄｅＡｉ）或いはその一部をメッセージとしたものを、オアシス・ノード１６に送信する（ステップ７０３、７０４）。
【００５０】
また、ステップ３０７のように、データの組｛ｒｉ，Ｃｏｎｄ＿ｉ｝を、オアシス・ノード中のエージェントに格納する代わりに、データの組｛ｒｉ，Ｃｏｎｄ＿ｉ｝を、各エージェントＡｐｐＡｉが位置する情報処理装置に送信する。情報処理装置においては、ＡｐｐＡｉが、受理した情報を保持する（ステップ７０６、７０７）。
【００５１】
また、図８に示すように、主催エージェントＡｐｐＡ１から、共同作業をする他のエージェントＡｐｐＡｉ（ｉ＝２、３、・・・、Ｎ）に対して呼び出しがあった場合、或いは、参集時刻が設定されている場合には参集時刻に、ＡｐｐＡ１を含む各ＡｐｐＡｉ（符号７００、７０１参照）は、データの組｛ｒｉ，Ｃｏｎｄ＿ｉ｝を、オアシス・ノード１６に送信する（ステップ８０１、８０２）。これに応答して、オアシス・オード１６の、認証コード検証部２２は認証を実行する。これは、図５のステップ５０４および図６を参照して説明したものと同様である。
【００５２】
その後、認証結果が、それぞれのＡｐｐＡｉに通知される（ステップ８０４、８０５）。たとえば、ＡｐｐＡ１に対しては、ＡｐｐＡ１と他のＡｐｐＡｉ（ｉ＝２、３、・・・、Ｎ）とのそれぞれの認証結果が通知される。通知の際に、事前に登録しておいた主催エージェントＡｐｐＡ１の識別子に基づき、認証コード検証部２２が、当該識別子にて、認証結果を示す情報を暗号化し、主催エージェントＡｐｐＡ１に送信しても良い。この場合には、主催エージェントＡｐｐＡ１は、自身の識別子を用いて、受理した情報を復号化すればよい。他のエージェントに関しても、識別子の登録をしておくことにより、認証結果を暗号化した状態で受理することもできる。無論、暗号化することなく、認証結果を示す情報を通知しても良い。認証結果が成功を示すものである場合には、共同作業が許可され、たとえば、エージェント間のデータ交換が実現される（ステップ８０６）。
【００５３】
第２の実施の形態によれば、静的エージェントについても、オアシス・ノード１６がコード部を受理し、コード部を用いて判定条件を作成し、これを、静的エージェントに返送し、認証が必要なときに、判定条件を含むデータの組を、再度、静的エージェントから受理することにより、認証を実現することができる。
次に、上記第１の実施の形態にかかるエージェント認証を利用した第１の応用例を、図９を参照して説明する。第１の例では、４台の情報処理装置（たとえば、パーソナルコンピュータ）４８−１〜４８−４にそれぞれ位置するエージェントＡｐｐＡ１〜ＡｐｐＡ４が、商品（たとえば、機械、ソフトウェア、保険商品など）に必要な部品を、共同して設計する。たとえば、ＡｐｐＡ１からの要求に応答して、各情報処理装置４８−１〜４８−４から、エージェントＡｐｐＡ１〜ＡｐｐＡ４が、オアシス・ノード１６に参集する（ステップ９０１−１〜９０１−４）。
【００５４】
オアシス・ノード１６からは、それぞれ、認証コードを構成する乱数および判定条件を含むデータの組｛ｒｉ，Ｃｏｎｄ＿ｉ｝（ｉ＝１〜４）が格納されたエージェントＡｐｐＡｉ（ｉ＝１〜４）が、もとの情報処理装置４８−１〜４８−４に、それぞれ返される（ステップ９０２−１〜９０２−４）。
【００５５】
共同して設計を担当する各ユーザは、それぞれの情報処理装置を操作して、エージェントを作動させて、必要な情報を収集しつつ設計を進める。所定のタイミング、たとえば、ある設計段階が終了した場合に、再度、エージェントＡｐｐＡｉ（ｉ＝１〜４）は、オアシス・ノード１６に参集して（ステップ９０３−１〜９０３−４）、認証を受ける。この認証において、各エージェントのコード部が改ざんされていないかが検証される。認証が成功した場合には、次の設計段階に進むために、エージェント間で設計データが交換され、データ交換により取得されたデータを含むエージェントＡｐｐＡｉ（ｉ＝１〜４）が、もとの情報処理装置に返される（ステップ９０４−１〜９０４−４）。
【００５６】
このように、本実施の形態によれば、安全ではない公衆通信網を介して、データを交換することで、複数のユーザが共同作業をする場合に、各ユーザが秘密鍵を保持する必要なく、エージェントの改ざんの有無を含む検証をなすことができる。
【００５７】
次に、図１０を参照して、第２の応用例について説明する。第１の応用例では、単一のオアシス・ノードが利用されているが、第２の実施の形態では、複数のオアシス・ノードを利用して認証を実現している。なお、この場合には、オアシス・ノード間の同期が必要であるが、これについては、後述する。
【００５８】
第２の応用例においては、ユーザが、あるオアシス・ノード（第１のオアシス・ノード１６−１）にアクセスして、ディジタルコンテンツを購入する。この購入の際に、ダウンロードしたい場所や日時を指定しておき、指定された日時および場所にて、他のオアシス・ノード（第２のオアシス・ノード１６−２）からコンテンツをダウンロードするようになっている。
【００５９】
ユーザは、携帯端末５０を操作して、第１のオアシス・ノード１６−１にアクセスする（ステップ１００１）。たとえば、ビデオ店などディジタルコンテンツを販売する店舗にて、当該店舗に配置された、第１のオアシス・ノードとして機能するサーバにアクセスすればよい。
【００６０】
ここで、携帯端末５０中のエージェントＡｐｐＡ１（符号１０００参照）は、第１のオアシス・ノード１６−１に移動する（ステップ１００１）。第１のオアシス・ノード１６−１において、エージェントＡｐｐＡ１は、ユーザからの指示にしたがって、ディジタルコンテンツのダウンロードを希望する日時や場所を指定し、かつ、第１のオアシス・ノード１６−１から予約チケットに対応する情報を受領する。また、第１のオアシス・ノード１６−１は、乱数ｒ１および判定条件Ｃｏｎｄ＿１を含む認証コードを、エージェントＡｐｐＡ１に格納する。次いで、認証コードが格納されたエージェントＡｐｐＡ１（符号１０１０参照）が、携帯端末５０に返送される（ステップ１００２）。第１のオアシス・ノード１６−１は、指定日時までに、指定された場所に位置するサーバ（第２のオアシス・ノード１６−２）にディジタルコンテンツを配信しておく。
【００６１】
ユーザは、所定の場所（指定場所）に移動した後（矢印１００６参照）、指定された日時に携帯端末５０を操作して、第２のオアシス・ノード１６−２にアクセスし、認証コードを含むエージェントＡｐｐＡ１を、第２のオアシス・ノード１６−２に移動させる（ステップ１００３）。第２のオアシス・ノード１６−２は、認証コード中の乱数および判定条件に基づいて、認証を実行し、認証に成功した場合に、ダウンロードを実行する（ステップ１００４）。つまり、ＡｐｐＡ１にディジタルコンテンツ１０１１を格納する。無論、認証の際には、予約チケットに対応する情報の照合も実行する。
【００６２】
次いで、エージェントＡｐｐＡ１は携帯端末５０に戻る。これにより、ディジタルコンテンツ１０１１を携帯端末５０にて再生することができる。エージェントＡｐｐＡ１が、携帯端末５０に戻らず、第２のオアシス・ノード１６にて作動し、ディジタルコンテンツを再生しても良い。或いは、第２のオアシス・ノード中の他のエージェントを起動して、ディジタルコンテンツを再生しても良い。
【００６３】
このように、予約とダウンロードが異なる場所で行われる場合には、ユーザがその間、他のウェブサイトにアクセスすることで、悪意ある攻撃を受けて、予約チケットに対応する情報が盗まれ、また、その内容が改ざんされる可能性がある。したがって、予約の際に、エージェントに認証コードを与え、ダウンロードの際に、認証コードを用いて認証を実行することにより、秘密鍵を保持する必要なく、情報の盗難や改ざんの有無を検証することが可能となる。
【００６４】
上記第２の応用例におけるオアシス・ノード間の同期について説明する。第２の応用例においては、２つのオアシス・ノード間で、非公開情報である関数ｆｎの種別および関数ｆｎ自体、数値テーブル、ハッシュ関数自体）を同期させる必要がある。このような非公開情報を、オアシス・ノードで相互に保持するには、非公開情報を暗号化して送信する必要がある。
【００６５】
あるオアシス・ノードが、単一のオアシス・ノードに、自己の非公開情報を送る際には、「ＩＰｓｅｃ」を利用すればよい。また、あるオアシス・ノードが、他の全てのオアシス・ノードに、マルチキャストにて自己の非公開情報を送るには、以下の手法を採用することができる。
【００６６】
ここで、他のオアシス・ノードにおいても、自己の非公開情報と同じものを使用させるために、自己の非公開情報を他のオアシス・ノードに送信するオアシス・ノードを、便宜上「リーダ」と称する。まず、リーダは、現在使用している非公開の定数および乱数から暗号鍵Ｋを生成し、暗号鍵Ｋにて、新たな数値テーブル、および、新たなｆｎ種別および定数との対応表を暗号化し、得られたＫ（新たな数値テーブル，新たな対応表）を、他のオアシス・ノードにマルチキャストする。また、リーダは、現在使用中の｛乱数，ｆｎ種別｝も、他のオアシス・ノードにマルチキャストする。
【００６７】
他のオアシス・ノードのそれぞれにおいては、受理したｆｎ種別から非公開の定数が特定される。次いで、非公開の定数および受理した乱数から、復号鍵（＝暗号鍵）が再生される。この復号鍵を利用することで、新たな数値テーブルおよび対応表を得ることができる。この方式では、秘密鍵を、各オアシス・ノードで使用中の非公開の定数および乱数から動的に生成する。定数は非公開であるため、これが外部に漏れない限り、復号鍵を生成することはできない。したがって、上記数値テーブルや対応表を、オアシス・ノード間で同期させることが可能となる。
【００６８】
なお、第１の応用例、第２の応用例において、エージェントが移動せず、そのコード部や一部をオアシス・ノードに送信するような形態（第２の実施の形態参照）を採用しても良い。
【００６９】
また、本発明は、アプリケーションを多重化したシステム、たとえば、高信頼システムやフォルトトレラントシステムに適用することもできる。図１１は、患者の脈拍などのデータを収集するための高信頼システムの例を示すブロックダイヤグラムである。図１１（ａ）においては、患者の脈拍等を計測する計測機器からのデータを、看護婦のＰＤＡ（ＰＤＡ−１）のエージェントＢ１１１０が収集する。さらに、収集された脈拍データ等は、病院内サーバ１１００中のカルテ管理エージェントＡ１１２０に伝達される。ここで、ＰＤＡ−１のバッテリー残量が少なくなっていることに看護婦が気付いたとする。医師もＰＤＡ（ＰＤＡ−２）を所持していたため、エージェントＢ１１１０を稼動させつつ、ＰＤＡ−２に、エージェントＢのレプリカであるエージェントＢ‘１１１１を生成して、処理を中断させることなく続行させることが求められる。また、処理を継続させるとともに、エージェントＢが攻撃を受け、或いは、データ送信中にデータ改ざんが行われていないことを検証する必要がある。
【００７０】
また、レプリカエージェントＢ’１１１１が、ＰＤＡ−２に生成され、当該エージェントＢ’１１１１が、図１１（ｂ）に示すように、計測機器からの脈拍データ等を収集し、カルテ管理エージェント１１２０に、当該脈拍データ等を送信する場合にも、レプリカエージェントＢ’が攻撃を受け、或いは、データ改ざんが行われていないことを検証する必要がある。
【００７１】
そこで、図１１に示すシステムにおいては、病院内サーバ１１００を、オアシス・ノードとして機能するように構成する。無論、他のサーバをオアシス・ノードとしても良い。図１１（ａ）に示す状態では、エージェントＢ１１１０が主催エージェントとなり、レプリカエージェントＢ’１１１１の生成後に、病院内サーバ１１００への参集を指示するとともに、自身も病院内サーバ１１００に移動する。病院内サーバ１１１０の認証管理部１８により生成された認証コードが、エージェントＢ１１１０およびレプリカエージェントＢ’１１１１に、それぞれ格納された後、各エージェントは、もとのＰＤＡに戻る。
【００７２】
図１１（ｂ）に示す状態では、レプリカエージェントＢ’１１１１が適切に作動しているのを確認するため、或いは、レプリカエージェントＢ’が収集した情報（作業結果など）を、エージェントＢ１１１０に伝達するために、所定のタイミングで、再度、病院内サーバ１１００に参集する。ここでは、レプリカエージェントＢ’１１１１が主催エージェントとなる。認証管理部１８は、参集したレプリカエージェントＢ’１１１１やエージェントＢ１１１０の認証コードを利用して、認証を実行する。認証が成功した場合には、それぞれのエージェントが攻撃を受け、或いは、改ざんされていないことになる。したがって、たとえば、レプリカエージェントＢ’１１１１からエージェントＢ１１１０へのデータ転送などが可能となる。
【００７３】
次に、フォルトトレラントシステムへの応用について説明する。図１２は、フォルトトレラントシステムの一例を示す図である。システムは、情報処理装置（ＰＣ−１）１４−１、情報処理装置（ＰＤＡ−１）１４−２および情報処理装置（ＰＤＡ−２）１４−３を備えている。このシステムにおいては、プロセスＡ（符号１２００）、プロセスＢ（符号１２１０）、プロセスＣ（符号１２２０）およびプロセスＤ（符号１２３０）が実行されるようになっており、たとえば、プロセスＡ１２００を実行するために、３つのエージェントＡ１（符号１１０１）、エージェントＡ２（符号１１０２）およびエージェントＡ３）が作動する。なお、図１２において、ハッチングで示すエージェントは、待機中であることを示す。したがって、この例では、プロセスＢが二重系、プロセスＣおよびＤが待機系、プロセスＡが二重系および待機系の組み合わせとなっている。
【００７４】
このようなシステムにおいて、オアシス・ノード（図示せず）は、たとえば、当該オアシス・ノードに参集した、プロセスＡを実行するエージェントのそれぞれに、認証コードを発行し、各エージェントに格納する。なお、主催エージェントとなるのは、上記エージェントＡ１〜Ａ３のうちの何れでも良い。主催エージェントの要求により、或いは、あらかじめ定められたタイミングで、それぞれのエージェントＡ１〜Ａ３は、再度、オアシス・ノードに参集し、認証を受ける。エージェントＡ１〜Ａ３のいずれかの認証が成功すれば、システムにおいてプロセスＡが健在であることがわかる。また、エージェントＡ３の認証が成功し、その一方、エージェントＡ１或いはＡ２のいずれかの認証が失敗した場合には、認証が失敗したエージェントを切り離すとともに、待機していたエージェントＡ３を稼動させて処理を続行すればよい。他のプロセスＢ〜Ｄにかかるエージェント（エージェントＢ１〜Ｄ２）についても、同様の手法で、認証を実行し、エージェントの認証が失敗した場合には、当該エージェントに障害が発生したと判断し、待機系の可動など必要な処理を実行すればよい。
【００７５】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【００７６】
たとえば、前記実施の形態においては、
（１）乱数ｒ０１、ｒｉ（ｉ＝１、・・・Ｎ）および定数Ｃを用いて、変換値ｒ’０１，ｒ’ｉ（ｉ＝１、・・・Ｎ）を生成し、
【００７７】
（２）各エージェントＡｐｐＡｉのコード部およびそのエージェント識別子、並びに、上記変換値を利用して、ハッシュ値Ｈ０１およびＨｉ（ｉ＝１、・・・、Ｎ）を算出し、
【００７８】
（３）ハッシュ値および関数ｆｎを利用して、各エージェントＡｐｐＡｉを認証するための判定条件Ｃｏｎｄ＿ｉ（ｉ＝１、・・・、Ｎ）を算出している。
しかしながら、このようなものに限定されるものではなく、以下のように判定条件を算出しても良い。
【００７９】
第１の変形例では、定数を用いず、したがって、変換値も用いない。ここでは、認証コード発行処理部は、
【００８０】
（１）（Ｎ＋１）個の乱数ｒ０１、ｒ１、ｒ２、・・・ｒＮを生成し、
（２）各エージェントＡｐｐＡｉ（ｉ＝１、２、・・・Ｎ）のコード部およびそのエージェント識別子、並びに、上記乱数を用いて、以下のようなハッシュ値を算出する。
【００８１】
ｈ０１１＝ｈ（Ｃｏｄｅ０１  ｜｜  ｒ０１），ｈ０１２＝ｈ（ｉｄ０１）
Ｈ０１＝（ｈ０１１  ｜｜  ｈ０１２）
ｈ１１＝ｈ（ＣｏｄｅＡ１  ｜｜  ｒ１），  ｈ１２＝ｈ（ｉｄＡ１）
Ｈ１＝ｈ（ｈ１１
｜｜  ｈ１２）
ｈ２１＝ｈ（ＣｏｄｅＡ２  ｜｜  ｒ２），  ｈ２２＝ｈ（ｉｄＡ２）
Ｈ２＝ｈ（ｈ２１
｜｜  ｈ２２）
：
ｈｉ１＝ｈ（ＣｏｄｅＡｉ  ｜｜  ｒｉ），  ｈｉ２＝ｈ（ｉｄＡｉ）
Ｈｉ＝ｈ（ｈｉ１
｜｜  ｈｉ２）
：
ｈＮ１＝ｈ（ＣｏｄｅＡＮ  ｜｜  ｒＮ），  ｈＮ２＝ｈ（ｉｄＡＮ）
ＨＮ＝ｈ（ｈＮ１
｜｜  ｈＮ２）
【００８２】
なお、ここで、認証コード発行処理部は、次のステップで用いる関数ｆｎの種別（ｆｎ種別）に予め対応付けられたハッシュ関数ｈを選択する。このハッシュ関数ｈとｆｎ種別との対応関係は非公開である。つまり、この対応関係を示すテーブルを非公開領域に設けておく。
【００８３】
（３）次いで、認証コード発行処理部は、各エージェントに格納する判定条件を以下のように算出する。
【００８４】
Ｃｏｎｄ＿１＝ｆｎ（Ｈ０１  ｜｜  Ｈ１）  （ＡｐｐＡ１のための判定条件）
Ｃｏｎｄ＿２＝ｆｎ（Ｈ０１  ｜｜  Ｈ２）  （ＡｐｐＡ２のための判定条件）
：
Ｃｏｎｄ＿ｉ＝ｆｎ（Ｈ０１  ｜｜  Ｈｉ）  （ＡｐｐＡｉのための判定条件）
：
Ｃｏｎｄ＿Ｎ＝ｆｎ（Ｈ０１  ｜｜  ＨＮ）  （ＡｐｐＡＮのための判定条件）
【００８５】
前記実施の形態と同様に、ｆｎとして、ハッシュ関数、非周期関数或いは分散の大きな乱数発生関数を利用することができる。
【００８６】
（４）その後、認証コード発行処理部は、自身に｛ｒ０１，ｆｎ種別｝を格納するとともに、各ＡｐｐＡｉ（ｉ＝１、２、・・・、Ｎ）に、データの組｛ｒｉ，Ｃｏｎｄ＿１｝を格納すればよい。
【００８７】
また、第２の変形例においては、数値テーブルは非公開領域におかず、公開情報とするが、定数Ｃとｆｎ種別の対応関係を非公開とする。認証コード発行処理部における乱数、変換値、ハッシュ値および判定条件の生成は、第１の実施の形態のものと同様である。
【００８８】
第３の変形例にあっては、認証コード中の判定条件を単一にしている。この例では、認証コード発行処理部は、
（１）乱数ｒ０１、ｒｉ（ｉ＝１、・・・Ｎ）および定数Ｃを用いて、変換値ｒ’０１，ｒ’ｉ（ｉ＝１、・・・Ｎ）を生成し、
（２）各エージェントＡｐｐＡｉのコード部およびそのエージェント識別子、並びに、上記変換値を利用して、ハッシュ値Ｈ０１およびＨｉ（ｉ＝１、・・・、Ｎ）を算出する。ここまでは、第１の実施の形態と同様である。また、数値テーブルなどが非公開領域に配置されることも同様である。
【００８９】
次いで、認証コード発行処理部は、
（３）ハッシュ値および関数ｆｎを利用して、各エージェントＡｐｐＡｉを認証するための判定条件
Ｃｏｎｄ＝ｆｎ（Ｈ０１  ｜｜  Ｈ１｜｜  Ｈ２  ｜｜  ・・・  ｜｜  ＨＮ）
を算出する。
【００９０】
（４）その後、認証コード発行処理部は、自身に｛ｒ０１，ｆｎ種別｝を格納するとともに、各ＡｐｐＡｉ（ｉ＝１、２、・・・、Ｎ）に、｛ｒｉ｝を格納する。また、いずれかのエージェント｛Ｃｏｎｄ｝を格納する。
さらに、変形例２のように変換値を利用しないで、単一の判定条件を生成しても良い。
【００９１】
また、前記実施の形態においては、単一のオアシス・ノードにおいて、複数のエージェントが共同作業をするために、認証コードを受理し、その後、認証を受けているが、応用例にて示したように、単一或いは複数のオアシス・ノードにおいて、単一のオアシス・ノードが認証コードを受理し、自分自身が真正であることや改ざんされていないことを認証してもらうこともできる。無論、複数のオアシス・ノードにおいて、複数のエージェントが認証コードを受理し、また、その後、認証を受けても良い。
【００９２】
【発明の効果】
本発明によれば、ユーザに鍵などを持たせる必要なく、かつ、安全な認証装置および方法を提供することができる。
【図面の簡単な説明】
【図１】図１は、本発明の実施の形態にかかるシステムの一例を示すブロックダイヤグラムである。
【図２】図２は、本実施の形態にかかるオアシス・ノードをより詳細に示すブロックダイヤグラムである。
【図３】図３は、情報処理装置とオアシス・ノードとの間、および、それぞれにて実行される処理の一例を示すフローチャートである。
【図４】図４は、図３のステップ３０６、３０７の処理をより詳細に示すフローチャートである。
【図５】図５は、本実施の形態にかかる認証コード検証部による処理を示すフローチャートである。
【図６】図６は、図５のステップ５０４、５０５の処理をより詳細に示すフローチャートである。
【図７】図７は、第２の実施の形態にかかる情報処理装置とオアシス・ノードとの間、および、それぞれにて実行される処理の一例を示すフローチャートである。
【図８】図８は、第２の実施の形態にかかる情報処理装置とオアシス・ノードとの間、および、それぞれにて実行される処理の一例を示すフローチャートである。
【図９】図９は、第１の実施の形態にかかるエージェント認証を利用した第１の応用例を説明する。
【図１０】図１０は、第１の実施の形態にかかるエージェント認証を利用した第２の応用例を説明する。
【図１１】図１１は、患者の脈拍などのデータを収集するための高信頼システムの例を示すブロックダイヤグラムである。
【図１２】図１２は、フォルトトレラントシステムの一例を示す図である。
【符号の説明】
１２      広域通信網
１４      情報処理装置
１６      情報処理装置（オアシス・ノード）
１８      認証管理部
２０      認証コード発行処理部
２２      認証コード検証部
２５      エージェント一時記憶部
２６      乱数発生部
２８      コード／識別子取得部
３０      ハッシュ演算部
３６      認証条件算出部
４０      情報取得部
４２      認証処理部
【図１】
2004172962.tif 000003
【図２】
2004172962.tif 000004
【図３】
2004172962.tif 000005
【図４】
2004172962.tif 000006
【図５】
2004172962.tif 000007
【図６】
2004172962.tif 000008
【図７】
2004172962.tif 000009
【図８】
2004172962.tif 000010
【図９】
2004172962.tif 000011
【図１０】
2004172962.tif 000012
【図１１】
2004172962.tif 000013
【図１２】
2004172962.tif 000014