(57)【要約】  【課題】  コンピュータを用いたユーザの操作を長期的に監視されることなく、当該コンピュータを通信先に識別させて当該通信先と通信を行うことを可能にするプログラムを提供する。  【解決手段】  クライアント装置１２＿１は、ユーザの属性を示すエージェントデータのハッシュデータをサーバ装置１０に送信する。サーバ装置１０は、当該ハッシュデータを基に、クライアント装置１２＿１を識別する。エージェントデータは、クライアント装置１２＿１のユーザの操作に応じて所定の条件で更新され、それに伴いハッシュデータも更新される。【選択図】  図１
2005301530.tif 000002
【特許請求の範囲】
【請求項１】
通信先と通信を行うコンピュータが実行するプログラムであって、
前記コンピュータとの通信に前記通信先で用いられ所定の条件で更新される通信用データのハッシュデータを生成する第１の手順と、
前記第１の手順で生成した前記ハッシュデータを前記通信用データに付加して前記通信先に送信する第２の手順と、
前記第２の手順の後に、前記第１の手順で生成した前記ハッシュデータを前記コンピュータの識別データとして用いて、前記通信先と通信を行う第３の手順と
を前記コンピュータに実行させるプログラム。
【請求項２】
前記通信用データを前記所定の条件で更新する第４の手順
をさらに有し、
前記第１の手順は前記第４の手順による前記更新後の前記通信用データのハッシュデーサを生成し、
前記第３の手順は、前記更新後の前記通信用データの前記ハッシュデータを、前記コンピュータの識別データとして用いて、前記通信先と通信を行う
請求項１に記載のプログラム。
【請求項３】
前記通信用データを生成する第５の手順
をさらに有する
請求項１に記載のプログラム。
【請求項４】
前記第５の手順は、ユーザによる前記コンピュータの操作履歴を基に、前記ユーザの属性を示す前記通信用データを生成する
請求項３に記載のプログラム。
【請求項５】
前記第１の手順は、前記操作履歴を基に、前記ユーザの好みを判断する指標となる前記属性を示す前記通信用データを生成する
請求項４に記載のプログラム。
【請求項６】
通信先と通信を行うコンピュータが実行するプログラムであって、
所定の条件で更新される通信用データと、当該通信用データのハッシュデータとを関連付けて前記通信先から受信する第１の手順と、
前記第１の手順で受信した前記ハッシュデータを基に前記通信先を識別し、前記第１の手順で受信した前記通信用データを基に前記通信先と通信を行う第２の手順と
を前記コンピュータに実行させるプログラム。
【請求項７】
前記第１の手順は、前記通信先のユーザの操作履歴を基に得られた前記ユーザの属性を示す前記通信用データを受信し、
前記第２の手順は、前記第１の手順で受信した前記通信用データを基に、前記ユーザの属性に適合したデータ、あるいは適合した形態で前記通信先にデータを送信する
請求項６に記載のプログラム。
【請求項８】
前記通信先の正当性を認証する第３の手順と、
前記第３の手順で正当であると認証したことを条件に、前記通信先によって正当であると判断され当該通信先で起動されるアプリケーションプログラムの識別データを示す証明データを前記通信先から受信する第４の手順と、
所望の識別データが、前記第４の手順で受信した前記証明データに含まれているか否かを判断する第５の手順と、
前記第５の手順で前記所望の識別データが含まれていると判断したことを条件に、前記第２の手順を実行させる第６の手順と
を有する請求項６に記載のプログラム。
【請求項９】
アプリケーションプログラムが記憶されたメモリと、
前記メモリから読み出した前記アプリケーションプログラムを実行する実行回路と、
通信先とデータ授受を行うインタフェースと
を有するコンピュータであって、
前記実行回路は、前記アプリケーションプログラムに従って、前記通信先で前記コンピュータとの通信に用いられ所定の条件で更新される通信用データのハッシュデータを生成し、当該生成した前記ハッシュデータを前記通信用データに付加して前記通信先に前記インタフェースを介して送信し、前記ハッシュデータを前記コンピュータの識別データとして用いて前記通信先と通信を行う
コンピュータ。
【請求項１０】
記憶データの改竄および監視を防止する機能が備えられ、ブ−トプログラムを記憶する回路モジュール
をさらに有し、
前記実行回路は、前記回路モジュールからセキュアな状態で読み出した前記ブ−トプログラムをさらに実行し、当該ブ−トプログラムに従って、前記アプリケーションプログラムの正当性を検証し、正当であると判断した前記アプリケーションプログラムの識別データを示す証明データを前記回路モジュールに記憶させ、前記回路モジュールから読み出した前記証明データを，前記インタフェースを介して前記通信先に送信する
請求項９に記載のコンピュータ。
【請求項１１】
通信先と通信を行うコンピュータであって、
プログラムを記憶するメモリと、
所定の条件で更新される通信用データと、当該通信用データのハッシュデータとを関連付けて前記通信先から受信するインタフェースと、
前記メモリから読み出した前記プログラムを実行し、当該プログラムに従って、前記インタフェースが受信した前記ハッシュデータを基に前記通信先を識別し、前記インタフェースが受信した前記通信用データを基に前記通信先と通信を行う実行回路と
を有するコンピュータ。
【請求項１２】
前記インタフェースは、前記通信先で起動され当該他のコンテンツデータによって正当性が認められたアプリケーションプログラムの識別データを示す証明データを前記通信先から受信し、
前記実行回路は、前記プログラムに従って、通信先が正当であると認証したことを条件に、前記インタフェースを介して受信した前記証明データに所望の識別データが含まれているか否かを判断し、前記所望の識別データが含まれていると判断したことを条件に、前記インタフェースを介して前記通信先と通信を行う
請求項１１に記載のコンピュータ。
【請求項１３】
通信先と通信を行うコンピュータが実行するデータ処理方法であって、
前記コンピュータとの通信に前記通信先で用いられ所定の条件で更新される通信用データのハッシュデータを生成する第１の工程と、
前記第１の工程で生成した前記ハッシュデータを前記通信用データに付加して前記通信先に送信する第２の工程と、
前記第２の工程の後に、前記第１の工程で生成した前記ハッシュデータを前記コンピュータの識別データとして用いて、前記通信先と通信を行う第３の工程と
を有するデータ処理方法。
【請求項１４】
通信先と通信を行うコンピュータが実行するデータ処理方法であって、
所定の条件で更新される通信用データと、当該通信用データのハッシュデータとを関連付けて前記通信先から受信する第１の工程と、
前記第１の工程で受信した前記ハッシュデータを基に前記通信先を識別し、前記第１の工程で受信した前記通信用データを基に前記通信先と通信を行う第２の工程と
を有するデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信先と通信を行うコンピュータが実行するプログラム、そのコンピュータおよびデータ処理方法に関する。
【背景技術】
【０００２】
例えば、ネットワークを介して複数のコンピュータが通信を行う通信システムがある。
このような通信システムでは、通常、各コンピュータは、通信先のコンピュータに固有かつ固定的に割り当てられた識別データを基に、当該通信先のコンピュータを識別している。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述した従来の通信システムでは、各コンピュータに固定的に割り当てられた識別データを用いてネットワーク上で各コンピュータを識別するため、ユーザの操作に応じた各コンピュータのネットワークを介した振る舞い（処理）が長期的に監視される可能性があり、各コンピュータのアクセス先の情報などユーザのプライバシーに係わる情報が不正に利用されることがあるという問題がある。
【０００４】
本発明は、上述した従来技術に鑑みてなされ、コンピュータを用いたユーザの操作を長期的に監視されることなく、当該コンピュータを通信先に識別させて当該通信先と通信を行うことを可能にするプログラム、コンピュータおよびデータ処理方法を提供することを目的とする。
また、本発明は、通信先のユーザの操作が長期的に監視されることなく、当該通信先を識別して通信を行うことを可能にするプログラム、コンピュータおよびデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上述した従来技術の問題点を解決し、上述した目的を達成するために、第１の発明のプログラムは、通信先と通信を行うコンピュータが実行するプログラムであって、前記コンピュータとの通信に前記通信先で用いられ所定の条件で更新される通信用データのハッシュデータを生成する第１の手順と、前記第１の手順で生成した前記ハッシュデータを前記通信用データに付加して前記通信先に送信する第２の手順と、前記第２の手順の後に、前記第１の手順で生成した前記ハッシュデータを前記コンピュータの識別データとして用いて、前記通信先と通信を行う第３の手順とを前記コンピュータに実行させる。
【０００６】
第１の発明のプログラムの作用は以下のようになる。
第１の発明のプログラムをコンピュータが実行する。
そして、当該プログラムの第１の手順に従って、コンピュータが、当該コンピュータとの通信に前記通信先で用いられ所定の条件で更新される通信用データのハッシュデータを生成する。
次に、当該プログラムの第２の手順に従って、前記コンピュータが、前記第１の手順で生成した前記ハッシュデータを前記通信用データに付加して前記通信先に送信する。
次に、当該プログラムの第３の手順に従って、前記コンピュータが、前記第２の手順の後に、前記第１の手順で生成した前記ハッシュデータを前記コンピュータの識別データとして用いて、前記通信先と通信を行う。
【０００７】
第２の発明のプログラムは、通信先と通信を行うコンピュータが実行するプログラムであって、所定の条件で更新される通信用データと、当該通信用データのハッシュデータとを関連付けて前記通信先から受信する第１の手順と、前記第１の手順で受信した前記ハッシュデータを基に前記通信先を識別し、前記第１の手順で受信した前記通信用データを基に前記通信先と通信を行う第２の手順とを前記コンピュータに実行させる。
【０００８】
第２の発明のプログラムをコンピュータが実行する。
そして、当該プログラムの第１の手順に従って、前記コンピュータが、所定の条件で更新される通信用データと、当該通信用データのハッシュデータとを関連付けて前記通信先から受信する。
次に、当該プログラムの第２の手順に従って、前記コンピュータが、前記第１の手順で受信した前記ハッシュデータを基に前記通信先を識別し、前記第１の手順で受信した前記通信用データを基に前記通信先と通信を行う。
【０００９】
第３の発明のコンピュータは、アプリケーションプログラムが記憶されたメモリと、前記メモリから読み出した前記アプリケーションプログラムを実行する実行回路と、通信先とデータ授受を行うインタフェースとを有するコンピュータであって、前記実行回路は、前記アプリケーションプログラムに従って、前記通信先で前記コンピュータとの通信に用いられ所定の条件で更新される通信用データのハッシュデータを生成し、当該生成した前記ハッシュデータを前記通信用データに付加して前記通信先に前記インタフェースを介して送信し、前記ハッシュデータを前記コンピュータの識別データとして用いて前記通信先と通信を行う。
【００１０】
第３の発明のコンピュータの作用は以下のようになる。
先ず、実行回路が、前記アプリケーションプログラムに従って、前記通信先で前記コンピュータとの通信に用いられ所定の条件で更新される通信用データのハッシュデータを生成する。
次に、前記実行回路が、前記生成した前記ハッシュデータを前記通信用データに付加して前記通信先に前記インタフェースを介して送信し、前記ハッシュデータを前記コンピュータの識別データとして用いて前記通信先と通信を行う。
【００１１】
第４の発明のコンピュータは、通信先と通信を行うコンピュータであって、プログラムを記憶するメモリと、所定の条件で更新される通信用データと、当該通信用データのハッシュデータとを関連付けて前記通信先から受信するインタフェースと、前記メモリから読み出した前記プログラムを実行し、当該プログラムに従って、前記インタフェースが受信した前記ハッシュデータを基に前記通信先を識別し、前記インタフェースが受信した前記通信用データを基に前記通信先と通信を行う実行回路とを有する。
【００１２】
第４の発明のコンピュータの作用は以下のようになる。
実行回路が、メモリからプログラムを読み出して実行する。
そして、実行回路が前記プログラムに従って、前記インタフェースが受信した前記ハッシュデータを基に前記通信先を識別し、前記インタフェースが受信した前記通信用データを基に前記通信先と通信を行う。
【００１３】
第５の発明のデータ処理方法は、通信先と通信を行うコンピュータが実行するデータ処理方法であって、前記コンピュータとの通信に前記通信先で用いられ所定の条件で更新される通信用データのハッシュデータを生成する第１の工程と、前記第１の工程で生成した前記ハッシュデータを前記通信用データに付加して前記通信先に送信する第２の工程と、前記第２の工程の後に、前記第１の工程で生成した前記ハッシュデータを前記コンピュータの識別データとして用いて、前記通信先と通信を行う第３の工程とを有する。
【００１４】
第６の発明のデータ処理方法は、通信先と通信を行うコンピュータが実行するデータ処理方法であって、所定の条件で更新される通信用データと、当該通信用データのハッシュデータとを関連付けて前記通信先から受信する第１の工程と、前記第１の工程で受信した前記ハッシュデータを基に前記通信先を識別し、前記第１の工程で受信した前記通信用データを基に前記通信先と通信を行う第２の工程とを有する。
【発明の効果】
【００１５】
第１、第３および第５の発明によれば、コンピュータを用いたユーザの操作を長期的に監視されることなく、当該コンピュータを通信先に識別させて当該通信先と通信を行うことを可能にするプログラム、コンピュータおよびデータ処理方法を提供することができる。
第２、第４および第６の発明によれば、通信先のユーザの操作が長期的に監視されることなく、当該通信先を識別して通信を行うことを可能にするプログラム、コンピュータおよびデータ処理方法を提供することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施形態に係わる通信システムについて説明する。
図１は、本発明の実施形態に係わる通信システム１の全体構成図である。
図１に示すように、通信システム１は、例えば、サーバ装置１０およびクライアント装置１２＿１，１２＿２を有する。
サーバ装置１０、クライアント装置１２＿１およびクライアント装置１２＿１は、ネットワーク９を介して相互に通信を行う。
なお、本実施形態では、多数のサーバ装置１０および２つのクライアント装置１２＿１，１２＿３で通信を行う場合を例示するが、本発明は、複数のサーバ装置を用いてもよいし、単数または３個以上のクライアント装置を用いてもよい。
【００１７】
先ず、図１に示す通信システム１の概要を説明する。
クライアント装置１２＿１は、ユーザの操作履歴データを基に、当該ユーザの好みなどの属性を示す公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１を生成する。
当該公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１には、クライアント装置１２＿１のユーザの好みなどの属性を示すエージェントデータＡＧＥＮＴ＿Ｄ１と、エージェントデータＡＧＥＮＴ＿Ｄ１のハッシュデータＨＡＳＨ＿Ｄ１とが含まれている。
そして、クライアント装置１２＿１は、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１をサーバ装置１０に送信する。
また、以後、クライアント装置１２＿１は、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１に含めたハッシュデータＨＡＳＨ＿Ｄ１を、自らの識別データとして用いてサーバ装置１０と通信を行う。
サーバ装置１０は、クライアント装置１２＿１から受信した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１に含まれるハッシュデータＨＡＳＨ＿Ｄ１を以後、クライアント装置１２＿１を識別するための識別データとして用いる。
また、サーバ装置１０は、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１を基に、クライアント装置１２＿１のユーザの好みなどの特性に適合した種々のサービスデータ、例えばコンテンツデータをインタフェース２１を介して、ハッシュデータＨＡＳＨ＿Ｄ１を識別データとして用いてクライアント装置１２＿１に送信する。
なお、エージェントデータＡＧＥＮＴ＿Ｄ１は所定の条件で更新され、それに応じてハッシュデータＨＡＳＨ＿Ｄ１も更新される。すなわち、クライアント装置１２＿１の識別データが更新される。
【００１８】
通信システム１では、クライアント装置１２＿１が、所定の条件で更新されるハッシュデータＨＡＳＨ＿Ｄ１を自らの識別データとして用いて、サーバ装置１０と通信を行う。
そのため、ネットワーク９上でハッシュデータＨＡＳＨ＿Ｄ１を基に、クライアント装置１２＿１のユーザの操作（行動）を監視しても、ハッシュデータＨＡＳＨ＿Ｄ１が更新された後には監視を継続することができない。従って、クライアント装置１２＿１のユーザの操作が長期的に継続して監視されることを防止でき、ユーザのプライバシーを保護できる。
【００１９】
以下、本実施形態を図１〜図１０を参照して説明する。
先ず、本実施形態の各構成要素と本発明の構成要素との対応関係を説明する。
図２に示すアプリケーションプログラムＡＰ＿Ｓが第２および第４の発明のプログラムに対応している。
図５等に示すブ−トプログラムＢ＿ＰＲＧが、第３の発明のブ−トプログラムに対応している。
また、図５等に示すエージェントプログラムＡＧＥＮＴ＿Ｐ１等が、第１の発明のプログラム、並びに第３の発明のアプリケーションプログラムに対応している。
また、図１に示すクライアント装置１２＿１が第１および第３の発明のコンピュータに対応し、図１に示すサーバ装置１０およびクライアント装置１２＿２が第１および第３の発明の通信先に対応している。
また、図１に示すサーバ装置１０が第２および第４の発明のコンピュータに対応し、図１に示すクライアント装置１２＿１が第２および第４の発明の通信先に対応している。
また、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１内のエージェントデータＡＧＥＮＴ＿Ｄ１，ＡＧＥＮＴ＿Ｄ２が本発明の通信用データに対応し、ハッシュデータＨＡＳＨ＿Ｄ１，ＨＡＳＨ＿Ｄ２が本発明のハッシュデータに対応している。
また、証明データＡＰ＿ＣＥＲが、本発明の証明データに対応している。
【００２０】
図８に示すステップＳＴ３７が第１の発明の第１の手順に対応し、図８に示すステップＳＴ３８および図９に示すステップＳＴ５４が第１の発明の第２の手順に対応し、ステップＳＴ５５が第２の発明の第３の手順に対応している。
また、図３に示すステップＳＴ７が第２の発明の第１の手順に対応し、ステップＳＴ９，ＳＴ１０が第２の発明の第２の手順に対応している。
【００２１】
〔サーバ装置１０〕
図２は、図１に示すサーバ装置１０の構成図である。
図２に示すように、サーバ装置１０は、例えば、インタフェース２１、メモリ２２およびＣＰＵ２３を有し、これらがデータ線２０を介して接続されている。
ここで、インタフェース２１が第４の発明のインタフェースに対応し、メモリ２２が第４の発明のメモリに対応し、ＣＰＵ２３が第４の発明の実行回路に対応している。
【００２２】
インタフェース２１は、ネットワーク９を介して、クライアント装置１２＿１，１２＿２との間でデータ送受信を行う。
メモリ２２は、アプリケーションプログラムＡＰ＿Ｓを記憶する。
アプリケーションプログラムＡＰ＿Ｓは、後述するように、クライアント装置１２＿１から受信した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１に含まれるハッシュデータＨＡＳＨ＿Ｄ１を登録し、その後のクライアント装置１２＿１との通信で、ハッシュデータＨＡＳＨ＿Ｄ１をクライアント装置１２＿１の識別データとして用いることを規定している。
また、アプリケーションプログラムＡＰ＿Ｓは、後述するように、クライアント装置１２＿１，１２＿２から受信した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１，ＡＧＥＮＴ＿ＤＰ２を基に、クライアント装置１２＿１，１２＿２のユーザの好みなどの特性に適合した種々のサービスをクライアント装置１２＿１，１２＿２に対して提供することを規定している。
【００２３】
メモリ２２は、サーバ装置１０の秘密鍵データＳＫ＿Ｓ、公開鍵データＰＫ＿Ｓ、公開鍵証明データＰＫＣ＿Ｓ、並びに識別データＩＤ＿Ｓを記憶する。
また、メモリ２２は、クライアント装置１２＿１から受信した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１を記憶する。
また、メモリ２２は、クライアント装置１２＿１との通信などにより、クライアント装置１２＿１の公開鍵データＰＫ＿Ｃ１および公開鍵証明データＰＫＣ＿Ｃ１を記憶する。  また、メモリ２２は、クライアント装置１２＿２から受信した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ２を記憶する。
また、メモリ２２は、クライアント装置１２＿２との通信などにより、クライアント装置１２＿２の公開鍵データＰＫ＿Ｃ２および公開鍵証明データＰＫＣ＿Ｃ２を記憶する。
【００２４】
ＣＰＵ２３は、アプリケーションプログラムＡＰ＿Ｓを実行し、サーバ装置１０の動作を統括的に制御する。
ＣＰＵ２３が行う処理については、サーバ装置１０の動作例と関連付けて説明する。
【００２５】
以下、図２に示すサーバ装置１０がクライアント装置１２＿１と通信を行う場合の動作例を説明する。
図３は、図２に示すサーバ装置１０がクライアント装置１２＿１と通信を行う場合の動作例を説明するためのフローチャートである。
以下に示す各ステップは、アプリケーションプログラムＡＰ＿Ｓによって規定されている。
ステップＳＴ１：
サーバ装置１０のＣＰＵ２３が、ユーザから指定されたアプリケーションプログラムＡＰ＿Ｓをメモリ２２から読み出して実行する。
アプリケーションプログラムＡＰ＿Ｓは、例えば、検索エンジン、あるいは、ビデオやオーディオなどのコンテンツデータをクライアント装置に提供するプログラムであり、これに対応した識別データＡＰ＿ＩＤを持つプログラムとのみコンテンツデータを送受信するプログラムである。当該コンテンツデータは、例えば、著作権に係わるものである。
【００２６】
ステップＳＴ２：
ＣＰＵ２３は、例えば、メモリ２２から読み出した秘密鍵データＳＫ＿Ｓ、公開鍵データＰＫ＿Ｃ１および公開鍵証明データＰＫＣ＿Ｃ１を基に、インタフェース２１を介してクライアント装置１２＿１との間で相互認証を行う。
当該相互認証としては、例えば、ＩＳＯ／ＩＥＣ  ９７９８−３方式などが用いられる。
ＣＰＵ２３は、当該相互認証により互いの正当性が確認されると、クライアント装置１２＿１との間の以後の通信に用いるセッション鍵データをクライアント装置１２＿１と共用し、以後の通信において当該セッション鍵データを基にデータを暗号化する。
本実施形態では、例えば、ＣＰＵ２３は、クライアント装置１２＿１のブ−トプログラムＢ＿ＰＲＧのハッシュデータの検証は行わないでよい。
ステップＳＴ３：
ＣＰＵ２３は、ステップＳＴ２で行った相互認証によって互いの正当性が確認されると、ステップＳＴ４に進み、そうでない場合には処理を終了かエラー処理を行う。
【００２７】
ステップＳＴ４：
ＣＰＵ２３は、インタフェース２１を介してクライアント装置１２＿１から署名データＳＩＧが付された証明データＡＰ＿ＣＥＲを受信する。
証明データＡＰ＿ＣＥＲは、例えば、後述するように、クライアント装置１２＿１で起動され、その正当性が確認されたアプリケーションプログラムＡＰ＿Ｃ１の識別データＡＰ＿ＩＤ、製造識別データＭＦ＿ＩＤ、バージョンＶＥＲおよびハッシュデータＨＡＳＨを図４に示すように対応付けて示している。
本実施形態では、アプリケーションプログラムＡＰ＿Ｃ１の一つとして、エージェントプログラムＡＧＥＮＴ＿Ｐ１が用いられる。
【００２８】
ステップＳＴ５：
ＣＰＵ２３は、ステップＳＴ４で受信した証明データＡＰ＿ＣＥＲの正当性を検証する。
このとき、ＣＰＵ２３は、例えば、証明データＡＰ＿ＣＥＲのハッシュデータをハッシュ関数を基に生成する。そして、ＣＰＵ２３は、上記生成したハッシュデータと、図４に示す証明データＡＰ＿ＣＥＲに付加された署名データＳＩＧとが一致しているか否かを判断し、一致していれば、証明データＡＰ＿ＣＥＲ１が改竄されていない正当なものであると判断する。
ここで、ハッシュ関数は、与えられた原文から固定長のデータを生成する関数であり、ハッシュ値から原文を再現できず、且つ、同じハッシュ値を持つ異なるデータを生成することも極めて困難であるという特性を有している。
そして、ＣＰＵ２３は、証明データＡＰ＿ＣＥＲが正当であると判断した場合にステップＳＴ６に進み、そうでない場合に処理を終了するかエラー処理を行う。
なお、クライアント装置１２＿１が上記ハッシュデータをクライアント装置１２＿１の
秘密鍵ＳＫ＿Ｃ１で暗号化して署名データＳＩＧを生成した場合には、ＣＰＵ２３は、署名データＳＩＧをクライアント装置１２＿１の公開鍵ＰＫ＿Ｃ１で復号し、復号されたデータと上記ハッシュデータを比較する。このとき、ネットワーク９上ではデータはセッション鍵で暗号化されているため、処理時間のかかるディジタル署名技術を用いなくても所望の目的を達成できる。すなわち、ハッシュデータそのものはセッション鍵で暗号化されており、ディジタル署名とほぼ同じ機能を実現できるからである。
また、過去にやりとりされたデータを不正に再利用することを防止するために、通常はデータ（本例では図４に示す証明データＡＰ＿ＣＥＲ）に乱数データを追加し、乱数を含む全データに対しハッシュデータを計算し、それを署名データＳＩＧとして利用する。また、秘密鍵ＳＫ＿Ｃ１で暗号化する場合には、この乱数データを含んだデータに対するハッシュデータに対して暗号化を行う。
【００２９】
ステップＳＴ６：
ＣＰＵ２３は、指定されたアプリケーションプログラムＡＰ＿Ｃ１（本実施形態では、エージェントプログラムＡＧＥＮＴ＿Ｐ１）の識別データＡＰ＿ＩＤが、ステップＳＴ４で受信した証明データＡＰ＿ＣＥＲに含まれているか否かを判断し、当該識別データＡＰ＿ＩＤが含まれている（クライアント装置１２＿１においてエージェントプログラムＡＧＥＮＴ＿Ｐ１の正当性が確認され且つ起動されている）と判断するとステップＳＴ７に進み、そうでない場合には処理を終了する。
ここで、エージェントプログラムＡＧＥＮＴ＿Ｐ１は、例えば、上述したように、クライアント装置１２＿１のユーザの公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１を生成するプログラムである。
なお、ＣＰＵ２３は、当該ステップの上記検証において、識別データＡＰ＿ＩＤの他に製造識別データＭＦ＿ＩＤおよびバージョンデータＶＥＲが所望のものであるか否かを検証してもよい。
【００３０】
ステップＳＴ７：
インタフェース２１は、クライアント装置１２＿１から公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１を受信する。
ステップＳＴ８：
ＣＰＵ２３は、ステップＳＴ７で受信した図６に示す公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１に付された署名データＳＩＧＤの正当性を検証し、正当であると判断するとステップＳＴ９に進み、そうでない場合には処理を終了するかエラー処理を行う。
【００３１】
ステップＳＴ９：
ＣＰＵ２３は、ステップＳＴ７で受信した図６に示す公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ内のハッシュデータＨＡＳＨ＿Ｄ１を、クライアント装置１２＿１の識別データとして登録（特定）する。
ステップＳＴ１０：
ＣＰＵ２３は、ステップＳＴ９で登録したハッシュデータＨＡＳＨ＿Ｄ１をクライアント装置１２＿１の識別データとして用いて、クライアント装置１２＿１と通信を行う。
このとき、ＣＰＵ２３は、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１内のエージェントデータＡＧＥＮＴ＿Ｄ１を解析して、クライアント装置１２＿１のユーザの好みなどの特性に適合した種々のサービスデータ、例えばコンテンツデータをインタフェース２１を介してクライアント装置１２＿１に送信する。
ＣＰＵ２３は、例えば、アプリケーションプログラムＡＰ＿Ｓが検索エンジンである場合に、クライアント装置１２＿１のユーザが入力した所定の検索キーワードの他に、上記ユーザの好みを基に決定された当該検索キ−ワードに関連するキ−ワードをさらに用いて、データの検索、並びに検索結果の表示を行う。
例えば、ＣＰＵ２３は、ユーザが「パッケ−ジツア−」を検索キ−ワードとして入力し、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１が当該ユーザの好みは「車」であることを示す場合に、パッケ−ジツアーのデータのなかで、車を使って現地まで行くプランや、レンタカープランに関するデータを優先して選択してクライアント装置１２＿１に送信する。
【００３２】
上述したように、サーバ装置１０は、クライアント装置１２＿１から受信した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１内のハッシュデータＨＡＳＨ＿Ｄ１を識別データとしてクライアント装置１２＿１を識別する。
ここで、ハッシュデータＨＡＳＨ＿Ｄ１は後述するように所定の条件で更新されるため、サーバ装置１０は、ハッシュデータＨＡＳＨ＿Ｄ１が更新されるまでの間はハッシュデータＨＡＳＨ＿Ｄ１を基にクライアント装置１２＿１のユーザの操作を監視できるが、ハッシュデータＨＡＳＨ＿Ｄ１が更新された後は、更新前のハッシュデータＨＡＳＨ＿Ｄ１を基にクライアント装置１２＿１のユーザの操作を監視できない。
ここで、公開鍵証明書には、クライアント装置１２＿１を特定できるＩＤ情報が含まれていることが普通であるため、ハッシュデータＨＡＳＨ＿Ｄ１の更新タイミングよりも短いスパンで秘密鍵ＳＫ＿Ｃ１、公開鍵ＰＫ＿Ｃ１、公開鍵証明書ＰＫＣ＿Ｃ１を更新する必要がある。公開鍵証明書ＰＣＫ＿Ｃ１の更新だけではなく、公開鍵ペアの更新が必要な理由は、公開鍵ＰＫ＿Ｃ１を識別データとして使われないようにするためである。なお、公開鍵認証を用いず、通信路を秘匿化するためにＳＳＬ（Secure Socket Layer）を用いるだけの場合であれば、クライアント装置１２＿１の公開鍵ＰＫ＿Ｃ１、公開鍵証明書ＰＣＫ＿Ｃ１は不要になるため、このような処理も不要となる。
以上により、クライアント装置１２＿１の操作が、長期的に監視されることを防止できる。
また、サーバ装置１０は、クライアント装置１２＿１のユーザの操作履歴データを蓄積することなく、クライアント装置１２＿１から受信した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１を基に、エージェント機能を実現できる。
【００３３】
〔クライアント装置１２＿１〕
図５は、図１に示すクライアント装置１２＿１の構成図である。
図５に示すように、クライアント装置１２＿１は、例えば、インタフェース３１、メモリ３２、ＣＰＵ３３、操作部３７およびセキュリティモジュール回路ＳＭを有し、これらがデータ線３０を介して接続されている。
ここで、インタフェース３１が第３の発明のインタフェースに対応し、メモリ３２が第３の発明のメモリに対応し、セキュリティモジュール回路ＳＭが第３の発明の回路モジュールに対応し、ＣＰＵ３３が第３の発明の実行回路に対応している。
本実施形態において、クライアント装置１２＿１は、例えば、コンピュータ、ＰＤＡ(Personal Digital Assistants) 、並びに携帯電話などである。
【００３４】
インタフェース３１は、ネットワーク９を介して、サーバ装置１０およびクライアント装置１２＿２との間で通信を行う。
メモリ３２は、アプリケーションプログラムＡＰ＿Ｃ１を記憶する。
メモリ３２は、アプリケーションプログラムＡＰ＿Ｃ１の一つとして、エージェントプログラムＡＧＥＮＴ＿Ｐ１を記憶する。
メモリ３２は、半導体メモリあるいはハードディスクドライブである。
セキュリティモジュール回路ＳＭは、例えば、メモリ３５および演算回路３６を有する。
セキュリティモジュール回路ＳＭは、耐タンパ性の回路であり、メモリ３５の記憶データの改竄および監視、並びに演算回路３６の処理の監視を防止する機能が備えられている。
耐タンパ性の回路は、外部からの当該回路に対する攻撃（内部データの不正読み出し、入力周波数や入力電圧を所定外に設定したりする攻撃）を加えたときに、誤動作や内部データの漏洩を起こさないように構成された回路である。具体的には、内部データの読み出しを防止するために、回路構成を多層構造とし、メモリを最下層に配置すると共に、上下層にダミー層（例えばアルミ層）を取り入れることで、外部からメモリ入出力Ｉ／Ｆにアクセスすることを困難にしている。また、回路周波数検知回路や電圧検知回路を備え、周波数や電圧が所定の範囲内にない場合に動作しなように構成されている。
【００３５】
メモリ３５は、クライアント装置１２＿１の秘密鍵データＳＫ＿Ｃ１、公開鍵データＰＫ＿Ｃ１、公開鍵証明データＰＫＣ＿Ｃ１、並びに識別データＩＤ＿Ｃ１を記憶する。
また、メモリ２２は、サーバ装置１０との通信などにより、サーバ装置１０の公開鍵データＰＫ＿Ｓおよび公開鍵証明データＰＫＣ＿Ｓを記憶する。
また、メモリ３５は、クライアント装置１２＿２との通信などにより、クライアント装置１２＿２の公開鍵データＰＫ＿Ｃ２および公開鍵証明データＰＫＣ＿Ｃ２を記憶する。  また、メモリ３５は、クライアント装置１２＿２から受信した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ２を記憶する。
【００３６】
操作部３７は、キ−ボード、マウス、タッチパネルなどの操作手段であり、ユーザの操作に応じた操作信号をＣＰＵ３３に出力する。
【００３７】
ＣＰＵ３３は、ブ−トプログラムＢ＿ＰＲＧ、アプリケーションプログラムＡＰ＿Ｃ１、並びに操作部３７からの操作信号に基づいて種々の処理を行う。
【００３８】
また、ＣＰＵ３３は、セキュリティモジュール回路ＳＭ内のメモリ３５から、データ線３０を介してブ−トプログラムＢ＿ＰＲＧをセキュアな状態で読み出し、これを実行する。
ＣＰＵ３３は、ブ−トプログラムＢ＿ＰＲＧに従って、図４に示す証明データＡＰ＿ＣＥＲを生成し、これをサーバ装置１０およびクライアント装置１２＿２に送信する。
なお、上記セキュアな状態での読み出しを実現するために、ＣＰＵ３３とセキュリティモジュール回路ＳＭとで共通の暗号鍵データを共有し、データ線３０上のデータを暗号化したり、ＣＰＵ３３とセキュリティモジュール回路ＳＭとの間で相互認証を行い、互いに共有したセッション鍵データでデータ線３０上のデータを暗号化したり、ＣＰＵ３３とセキュリティモジュール回路ＳＭとを１つのパッケージにモールドし、外部からデータ線３０上のデータへのアクセスを防止するなどの手法が用いられる。
また、セキュリティモジュール回路ＳＭを、他のクライアント装置に組み込むことを防止するために、クライアント装置１２＿１に装置固有のメモリデータ（ＩＤ、乱数、鍵などのデータ）を分散化して保持させ、起動時にセキュリティモジュール回路ＳＭが上記メモリデータの検証を行うようにしてもよい。また、インタフェース３１への入出力動作を複雑化するなどして、ＣＰＵ３３のブートメカニズムを複雑化し、許諾を受けた製造者のみが、そのメカニズムを知るようにすることで、ブ−トプログラムＢ＿ＰＲＧの起動の信頼性をさらに高めてもよい。
【００３９】
また、ＣＰＵ３３は、メモリ３２からアプリケーションプログラムＡＰ＿Ｃ１を読み出し、これを実行する。
本実施形態では、ＣＰＵ３３は、メモリ３２からエージェントプログラムＡＧＥＮＴ＿Ｐ１を読み出し、これを実行する。
ＣＰＵ３３は、エージェントプログラムＡＧＥＮＴ＿Ｐ１に従って、図６に示す公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１を生成し、これをサーバ装置１０およびクライアント装置１２＿２に送信する。
図６に示すように、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１は、例えば、エージェントプログラムＡＧＥＮＴ＿Ｐ１の識別データＩＤ(Agent Software ID) 、製造識別データ(Agent Software Manufacture ID) 、バージョンデータ、その他、当該エージェントプログラムＡＧＥＮＴ＿Ｐ１に関する情報、エージェンデータＡＧＥＮＴ＿Ｄ１、エージェンデータＡＧＥＮＴ＿Ｄ１のハッシュデータＨＡＳＨ＿Ｄ１、セキュリティモジュールＳＭのバージョン、並びにエージェントプログラムＡＧＥＮＴ＿Ｐ１の署名データＳＩＧＤを有する。
ＣＰＵ３３は、アプリケーションプログラムＡＰ＿Ｃ１に従って、エージェントデータＡＧＥＮＴ＿Ｄ１のハッシュデータＨＡＳＨ＿Ｄ１を生成し、これを含む公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１を生成する。
また、ＣＰＵ３３は、ハッシュデータＨＡＳＨ＿Ｄ１を自らの識別データとして用いて、サーバ装置１０およびクライアント装置１２＿２と通信を行う。
ここで、エージェントデータＡＧＥＮＴ＿Ｄ１は、後述するように、クライアント装置１２＿１のユーザの操作履歴を解析して得られた当該ユーザの好みなどの属性データを基に逐次更新されるデータである。
エージェントデータＡＧＥＮＴ＿Ｄ１は所定の条件で更新されるので、ハッシュデータＨＡＳＨ＿Ｄ１も所定の条件で更新され、クライアント装置１２＿１のユーザの操作が長期的に監視されることを回避できる。
また、ハッシュデータＨＡＳＨ＿Ｄ１は、エージェントデータＡＧＥＮＴ＿Ｄ１として全く同一のものが生成されされる確率が非常に低いため、非常に高い確率でクライアント装置１２＿１に固有の値になる。そのため、ハッシュデータＨＡＳＨ＿Ｄ１は、サーバ装置１０およびクライアント装置１２＿２との通信において、クライアント装置１２＿１の識別データとして機能を十分に発揮できる。
なお、ＣＰＵ３３は、クライアント装置１２＿１のデバイス、例えば、セキュリティモジュール回路ＳＭを特定できる識別データを公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１内に含ませるか否かを、ユーザからの指示に応じて決定してもよい。
【００４０】
ＣＰＵ３３は、クライアント装置１２＿１の動作を統括的に制御する。
ＣＰＵ３３が行う処理については、クライアント装置１２＿１の動作例と関連付けて説明する。
【００４１】
以下、図５に示すクライアント装置１２＿１がブ−トプログラムＢ＿ＰＲＧに従って証明データＡＰ＿ＣＥＲを生成する動作を説明する。
図７は、図５に示すクライアント装置１２＿１が証明データＡＰ＿ＣＥＲを生成する動作を説明するためのフローチャートである。
以下に示す各ステップは、ブ−トプログラムＢ＿ＰＲＧによって規定されている。
ステップＳＴ１１：
クライアント装置１２＿１が起動されると、セキュリティモジュール回路ＳＭの演算回路３６が、メモリ３５からブ−トプログラムＢ＿ＰＲＧを読み出し、当該ブ−トプログラムＢ＿ＰＲＧの正当性を検証する。
このとき、演算回路３６は、例えば、ブ−トプログラムＢ＿ＰＲＧのハッシュデータをハッシュ関数を基に生成し、当該生成したハッシュデータと、予め用意されたブ−トプログラムＢ＿ＰＲＧのハッシュデータとを比較し、一致していれば、メモリ３５に記憶されているブ−トプログラムＢ＿ＰＲＧが正当である（改竄されていない）と判断する。
ステップＳＴ１２：
クライアント装置１２＿１は、ステップＳＴ１１でブ−トプログラムＢ＿ＰＲＧが正当であると判断されるとステップＳＴ１３に進み、そうでない場合にはエラー処理を行う。
【００４２】
ステップＳＴ１３：
クライアント装置１２＿１のＣＰＵ３３が、データ線３０を介して、メモリ３５からブ−トプログラムＢ＿ＰＲＧをセキュアな状態で読み出す。
ステップＳＴ１４：
ＣＰＵ３３が、ステップＳＴ１３で読み出したブ−トプログラムＢ＿ＰＲＧを実行する。
ステップＳＴ１５：
ＣＰＵ３３が、ブ−トプログラムＢ＿ＰＲＧに従って、ユーザにより指定された複数のアプリケーションプログラムＡＰ＿Ｃ１のうち未選択のアプリケーションプログラムＡＰ＿Ｃ１を選択する。  本実施形態では、アプリケーションプログラムＡＰ＿Ｃ１として、エージェントプログラムＡＧＥＮＴ＿Ｐ１が指定される。
【００４３】
ステップＳＴ１６：
ＣＰＵ３３が、ステップＳＴ１５で選択したアプリケーションプログラムＡＰ＿Ｃ１をメモリ３２から読み出して、その正当性を検証する。
このとき、ＣＰＵ３３は、例えば、アプリケーションプログラムＡＰ＿Ｃ１のハッシュデータをハッシュ関数を基に生成し、当該生成したハッシュデータと、予め用意されたアプリケーションプログラムＡＰ＿Ｃ１のハッシュデータとを比較し、一致していれば、メモリ３２に記憶されているアプリケーションプログラムＡＰ＿Ｃ１が正当であると判断する。
また、ＣＰＵ３３は、アプリケーションプログラムＡＰ＿Ｃ１に対応付けられた所定の署名データを公開鍵データを基に検証してもよい。当該署名データは、アプリケーションプログラムＡＰ＿Ｃ１に付加されていてもよいし、メモリ３２に、アプリケーションプログラムＡＰ＿Ｃ１とは別に記憶されていてもよい。
【００４４】
ステップＳＴ１７：
ＣＰＵ３３は、ステップＳＴ１６でアプリケーションプログラムＡＰ＿Ｃ１が正当であると判断するとステップＳＴ１８に進み、そうでない場合にはステップＳＴ２０に進む。  ステップＳＴ１８：
ＣＰＵ３３は、ステップＳＴ１６で正当であると判断したアプリケーションプログラムＡＰ＿Ｃ１の識別データＡＰ＿ＩＤ、製造識別データＭＦ＿ＩＤ，バージョンデータＶＥＲおよびハッシュデータＨＡＳＨ（以下、単に、識別データＡＰ＿ＩＤとも記す）を、証明データＡＰ＿ＣＥＲに追加する。
ステップＳＴ１９：
ＣＰＵ３３は、ステップＳＴ１６で正当性であると判断されたアプリケーションプログラムＡＰ＿Ｃ１を起動する。
本実施形態では、アプリケーションプログラムＡＰ＿Ｃ１が正当であるとステップＳＴ１６で判断したことを条件に、アプリケーションプログラムＡＰ＿Ｃ１を起動する場合を例示するが、その他、アプリケーションプログラムＡＰ＿Ｃ１が正当であると判断されなかった場合に、その旨をユーザに通知し、ユーザの同意を得てアプリケーションプログラムＡＰ＿Ｃ１を起動してもよい。但し、この場合には、ＣＰＵ３３は、アプリケーションプログラムＡＰ＿Ｃ１の識別データＡＰ＿ＩＤを、証明データＡＰ＿ＣＥＲに追加しない。
ステップＳＴ２０：
ＣＰＵ３３は、ユーザにより指定された全てのアプリケーションプログラムＡＰ＿Ｃ１がステップＳＴ１５で選択されたか否かを判断し、選択されたと判断すると処理を終了し、そうでない場合にはステップＳＴ１５に戻る。
本実施形態では、エージェントプログラムＡＧＥＮＴ＿Ｐ１が正当であられば、ＣＰＵ３３がエージェントプログラムＡＧＥＮＴ＿Ｐ１を起動すると共に、その識別データＡＰ＿ＩＤが証明データＡＰ＿ＣＥＲ内に追加される。
【００４５】
以下、図５に示すクライアント装置１２＿１がエージェントプログラムＡＧＥＮＴ＿Ｐ１に従って、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１を更新（生成）する場合の動作例を説明する。
図８は、図５に示すクライアント装置１２＿１が公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１を更新（生成）する場合の動作例を説明するためのフローチャートである。
図８に示す各ステップは、ＣＰＵ３３が、エージェントプログラムＡＧＥＮＴ＿Ｐ１に従って実行する。
以下の動作は、例えば、検索エンジンなどの他のアプリケーションプログラムＡＰ＿Ｃ１の動作と並行して実行される。
【００４６】
ステップＳＴ３１：
ＣＰＵ３３は、メモリ３２からエージェントデータＡＧＥＮＴ＿Ｄ１を読み出す。
ステップＳＴ３２：
ＣＰＵ３３は、操作部３７からの操作信号を基に、クライアント装置１２＿１のユーザの操作履歴データを更新する。
そして、ＣＰＵ３３が、当該更新した操作履歴データを解析し、上記ユーザの好みなどの属性を示す属性データを生成する。
ＣＰＵ３３は、当該生成した属性データを基に、現エージェントデータＡＧＥＮＴ＿Ｄ１を更新する。
【００４７】
ステップＳＴ３３：
ＣＰＵ３３は、時間カウンタ（図示せず）のカウタン値を基に、所定の時間が経過したか否かを判断し、経過したと判断するとステップＳＴ３６に進み、そうでない場合にステップＳＴ３４に進む。
本実施形態において、上記所定の時間は、例えば、１週間、１か月あるいは３か月などである。
ステップＳＴ３４：
ＣＰＵ３３は、更新回数カウンタのカウンタ値が示す値（ステップＳＴ３２の更新回数）、あるいは属性データが更新された内容の程度（更新量）や更新頻度が所定のしきい値を越えたか否かを判断し、越えたと判断するとステップＳＴ３６に進み、そうでない場合にはステップＳＴ３５に進む。
ステップＳＴ３５：
ＣＰＵ３３は、操作部３７からの操作信号を基に、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１の更新指示をユーザから受けたか否かを判断し、更新指示を受けたと判断するとステップＳＴ３６に進み、そうでない場合にはステップＳＴ３２に戻る。
【００４８】
ステップＳＴ３６：
ＣＰＵ３３は、メモリ３２から図６に示す公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１を読み出し、そのエージェントデータＡＧＥＮＴ＿Ｄ１を、ステップＳＴ３２で更新したエージェントデータＡＧＥＮＴ＿Ｄ１で更新する。
ステップＳＴ３７：
ＣＰＵ３３は、更新後のエージェントデータＡＧＥＮＴ＿Ｄ１のハッシュデータＨＡＳＨ＿Ｄ１を生成するとともに、更新前のエージェントデータＡＧＥＮＴ＿Ｄ１のハッシュデータＨＡＳＨ＿Ｄ１を生成する。
ステップＳＴ３８：
ＣＰＵ３３は、ステップＳＴ３７で生成したハッシュデータＨＡＳＨ＿Ｄ１で、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１のハッシュデータＨＡＳＨ＿Ｄ１を更新する。
【００４９】
ステップＳＴ３９：
ＣＰＵ３３は、ステップＳＴ３８で更新した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１の署名データＳＩＧＤを生成し、これを図６に示す公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１に付加する。
ステップＳＴ４０：
ＣＰＵ３３は、時間カウンタおよび更新回数カウンタのカウンタ値をリセットする。
【００５０】
以下、図５に示すクライアント装置１２＿１がサーバ装置１０と通信を行う場合の動作例を説明する。
図９は、図５に示すクライアント装置１２＿１がサーバ装置１０と通信を行う場合の動作例を説明するためのフローチャートである。
以下に示すステップＳＴ５１〜ＳＴ５４は、ブ−トプログラムＢ＿ＰＲＧによって規定されている。
【００５１】
ステップＳＴ５１：
クライアント装置１２＿１のＣＰＵ３３は、セキュリティモジュール回路ＳＭのメモリ３５から読み出した秘密鍵データＳＫ＿Ｃ１、公開鍵データＰＫ＿Ｓおよび公開鍵証明データＰＫＣ＿Ｓを基に、インタフェース３１を介してサーバ装置１０との間で相互認証を行う。
ＣＰＵ３３は、当該相互認証により互いの正当性が確認されると、サーバ装置１０との間の以後の通信に用いるセッション鍵データをサーバ装置１０と共用し、以後の通信において当該セッション鍵データを基にデータを暗号化する。
なお、上記相互認証において、ＣＰＵ３３は、サーバ装置１０のＡＣ(Attribute Certificate) やＵＲＬ(Uniform Resource Locator)を基に、サーバ装置１０の正当性を認証してもよい。ここで、ＡＣは、所定の認証機関（ＡＣ発行機関）が公開鍵証明データの識別データＩＤにリンクして被発行者の機能や属性を証明する電子データであり、本例では、所定のコンテンツデータを配信するサーバであることを示している。
ステップＳＴ５２：
ＣＰＵ３３は、ステップＳＴ５１で行った相互認証によって互いの正当性が確認されるとステップＳＴ５３に進み、そうでない場合には処理を終了する。
【００５２】
ステップＳＴ５３：
ＣＰＵ３３は、図７を基に説明した処理を経て生成した証明データＡＰ＿ＣＥＲのハッシュデータを生成し、これを署名データＳＩＧとして証明データＡＰ＿ＣＥＲに付加する。
ステップＳＴ５４：
ＣＰＵ３３は、ステップＳＴ５３で生成した署名付き証明データＡＰ＿ＣＥＲと公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１とを、インタフェース３１を介してサーバ装置１０に送信する。
ステップＳＴ５５：
ＣＰＵ３３は、ステップＳＴ５３で送信した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１内のハッシュデータＨＡＳＨ＿Ｄ１を自らの識別データとしてサーバ装置１０と通信を行う。
ＣＰＵ３３は、所定のアプリケーションプログラムＡＰ＿Ｃ１あるいはエージェントプログラムＡＧＥＮＴ＿Ｐ１に従って、インタフェース３１を介してサーバ装置１０から受信したデータ、例えばコンテンツデータを利用する。
このとき、サーバ装置１０からクライアント装置１２＿１へのデータ送信は、前述したように、クライアント装置１２＿１がサーバ装置１０に送信した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１を基に行われているため、クライアント装置１２＿１のユーザの好みなどの属性を反映したものになっている。
【００５３】
なお、アプリケーションプログラムＡＰ＿Ｃ１には、例えば、著作権保護機能が備えられており、その機能により、コンテンツデータの著作権が保護される。
また、上述した実施形態では、ＣＰＵ３３が、セキュリティモジュール回路ＳＭから読み出したブ−トプログラムＢ＿ＰＲＧを基に、認証処理、並びに署名データＳＩＧの生成処理を行う場合を例示したが、セキュリティモジュール回路ＳＭの演算回路３６が当該処理を行ってもよい。
この場合には、クライアント装置１２＿１は、サーバ装置１０から受信したデータのうち、認証に必要なデータをセキュリティモジュール回路ＳＭに提供する。そして、セキュリティモジュール回路ＳＭの演算回路３６が、当該データを基に演算処理を行い、その結果をインタフェース３１を介してサーバ装置１０に送信する。また、セキュリティモジュール回路ＳＭの演算回路３６が、証明データＡＰ＿ＣＥＲの署名データＳＩＧを生成し、署名データＳＩＧが付加させた証明データＡＰ＿ＣＥＲをインタフェース３１を介してサーバ１０に送信する。
【００５４】
以下、図５に示すクライアント装置１２＿１が図１に示すクライアント装置１２＿２との間で通信を行う場合の動作例を説明する。
図１０は、図５に示すクライアント装置１２＿１が図１に示すクライアント装置１２＿２との間で通信を行う場合の動作例を説明するためのフローチャートである。
図１０に示すステップＳＴ６１〜ＳＴ６７はブ−トプログラムＢ＿ＰＲＧに従って実行され、ステップＳＴ６８〜ＳＴ７１はエージェントプログラムＡＧＥＮＴ＿Ｐ１に従って実行される。
ステップＳＴ６１：
クライアント装置１２＿１のＣＰＵ３３は、セキュリティモジュール回路ＳＭのメモリ３５から読み出した秘密鍵データＳＫ＿Ｃ１、公開鍵データＰＫ＿Ｃ２および公開鍵証明データＰＫＣ＿Ｃ２を基に、インタフェース３１を介してクライアント装置１２＿２との間で相互認証を行う。
ＣＰＵ３３は、当該相互認証により互いの正当性が確認されると、クライアント装置１２＿２との間の以後の通信に用いるセッション鍵データをクライアント装置１２＿２と共用し、以後の通信において当該セッション鍵データを基にデータを暗号化する。
なお、本実施形態では、メモリ３５に公開鍵データＰＫ＿２および公開鍵証明データＰＫＣ＿２が記憶されているとしたが、認証に先立って、クライアント装置１２＿２から受信するようにしてもよい。
ステップＳＴ６２：
ＣＰＵ３３は、ステップＳＴ６１で行った相互認証によって互いの正当性が確認されるとステップＳＴ６３に進み、そうでない場合には処理を終了かエラー処理を行う。
【００５５】
ステップＳＴ６３：
ＣＰＵ３３は、図７を基に説明した処理を経て生成した証明データＡＰ＿ＣＥＲのハッシュデータを生成し、これを署名データＳＩＧとして証明データＡＰ＿ＣＥＲ１に付加する。
ステップＳＴ６４：
ＣＰＵ３３は、ステップＳＴ６３で生成した署名付き証明データＡＰ＿ＣＥＲ１を、インタフェース３１を介してクライアント装置１２＿２に送信する。
ステップＳＴ６５：
ＣＰＵ３３は、図７を用いて説明した処理と同様の処理をクライアント装置１２＿２が行って生成された署名データＳＩＧが付された証明データＡＰ＿ＣＥＲ２を、インタフェース３１を介してクライアント装置１２＿２から受信する。
証明データＡＰ＿ＣＥＲ２は、前述したように、クライアント装置１２＿２で起動され、その正当性が確認されたアプリケーションプログラムＡＰ＿Ｃ２の識別データＡＰ＿ＩＤ、製造識別データＭＦ＿ＩＤ、バージョンＶＥＲおよびハッシュデータＨＡＳＨを図４に示すように、対応付けて示している。
【００５６】
ステップＳＴ６６：
ＣＰＵ３３は、ステップＳＴ６４で受信した証明データＡＰ＿ＣＥＲ２の正当性を検証する。
このとき、ＣＰＵ３３は、例えば、証明データＡＰ＿ＣＥＲ２のハッシュデータをハッシュ関数を基に生成する。そして、ＣＰＵ３３は、上記生成したハッシュデータと、署名データＳＩＧとが一致しているか否かを判断し、一致していれば、証明データＡＰ＿ＣＥＲ２が改竄されていない正当なものであると判断する。
そして、ＣＰＵ３３は、証明データＡＰ＿ＣＥＲ２が正当であると判断した場合にステップＳＴ６７に進み、そうでない場合に処理を終了するかエラー処理を行う。
【００５７】
ステップＳＴ６７：
ＣＰＵ３３は、ユーザによって指定されたアプリケーションプログラムＡＰ＿Ｃ２の識別データＡＰ＿ＩＤが、ステップＳＴ６５で受信した証明データＡＰ＿ＣＥＲ２に含まれているか否かを判断し、当該識別データＡＰ＿ＩＤが含まれている（クライアント装置１２＿２においてアプリケーションプログラムＡＰ＿Ｃ２の正当性が確認され且つ起動されている）と判断するとステップＳＴ６８に進み、そうでない場合には処理を終了するかエラー処理を行う。
なお、ＣＰＵ３３は、当該ステップにおいて、識別データＡＰ＿ＩＤの他に製造識別データＭＦ＿ＩＤおよびバージョンデータＶＥＲが所望のものであるか否かを判断してもよい。
【００５８】
ステップＳＴ６８：
ＣＰＵ３３は、例えば、既に起動しているエージェントプログラムＡＧＥＮＴ＿Ｐ１に従って、図８に示す手順で生成した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１を、インタフェース３１を介してクライアント装置１２＿２に送信する。
インタフェース３１は、クライアント装置１２＿２から、当該クライアント装置１２＿１が生成した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ２を受信する。
【００５９】
ステップＳＴ６９：
ＣＰＵ３３は、ステップＳＴ６８で受信した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ２に付された署名データＳＩＧＤの正当性を検証する。
ＣＰＵ３３は、署名データＳＩＧＤが正当であると判断するとステップＳＴ７０に進み、そうでない場合には処理を終了するかエラー処理を行う。
ステップＳＴ７０：
ＣＰＵ３３は、ステップＳＴ６８で受信した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ２に含まれるハッシュデータＨＡＳＨ＿Ｄ２を、クライアント装置１２＿２の識別データとして登録する。
ハッシュデータＨＡＳＨ＿Ｄ２は、クライアント装置１２＿２において、前述したクライアント装置１２＿１がハッシュデータＨＡＳＨ＿Ｄ１を生成するのと同じ方法で生成されたものである。
【００６０】
ステップＳＴ７１：
ＣＰＵ３３は、クライアント装置１２＿１の識別データとしてハッシュデータＨＡＳＨ＿Ｄ１を用い、クライアント装置１２＿１の識別データとしてステップＳＴ７０で登録したハッシュデータＨＡＳＨ＿Ｄ２を用いて、クライアント装置１２＿２との間で通信を行う。
例えば、ＣＰＵ３３は、エージェントプログラムＡＧＥＮＴ＿Ｐ１に従って、所定のコンテンツデータなどのデータを暗号化して、インタフェース３１を介してクライアント装置１２＿２に送信する。
このとき、ＣＰＵ３３は、ステップＳＴ６８で受信した公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ２を基に、クライアント装置１２＿１のユーザの好みなどの特性に適合したデータをクライアント装置１２＿２に送信する。
ＣＰＵ３３は、その他、例えば、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ２を基に、クライアント装置１２＿２のユーザがメール、チャット、ボイスメールおよび通話の何れの利用頻度が高いかを判断し、利用頻度が高い媒体を用いて当該ユーザと通信を行うようにしてもよい。
また、ＣＰＵ３３は、インタフェース３１を介してクライアント装置１２＿２から受信したコンテンツデータなどのデータを利用する。
【００６１】
なお、クライアント装置１２＿２は、上述したクライアント装置１２＿１と同じ構成を有している。
【００６２】
以下、図１に示す通信システム１の全体動作例を説明する。
クライアント装置１２＿１，１２＿２は、前述した図７に示す処理を行って証明データＡＰ＿ＣＥＲ，ＡＰ＿ＣＥＲ２を、それぞれクライアント装置１２＿１，１２＿２の図５に示すセキュリティモジュール回路ＳＭ内のメモリ３５に書き込む。
また、クライアント装置１２＿１，１２＿２の各々は、図８に示す処理を行ってユーザの好みなどの属性を示す公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１，ＡＧＥＮＴ＿ＤＰ２を生成し、これをメモリ３２に書き込む。
そして、クライアント装置１２＿１，１２＿２は、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１，ＡＧＥＮＴ＿ＤＰ２をサーバ装置１０に送信する。
サーバ装置１０は、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１内のハッシュデータＨＡＳＨ＿Ｄ１を基にクライアント装置１２＿１を識別すると共に、エージェントデータＡＧＥＮＴ＿Ｄ１を基に、クライアント装置１２＿１のユーザの好みなどの特性に適合した種々のサービスデータ、例えばコンテンツデータをインタフェース２１を介してクライアント装置１２＿１に送信する。
また、サーバ装置１０は、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ２内のハッシュデータＨＡＳＨ＿Ｄ２を基にクライアント装置１２＿２を識別すると共に、クライアント装置１２＿２のユーザの好みなどの特性に適合した種々のサービスデータ、例えばコンテンツデータをインタフェース２１を介してクライアント装置１２＿２に送信する。
一方、クライアント装置１２＿１は、クライアント装置１２＿２との間で通信を行う場合には、クライアント装置１２＿２に公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ１を送信すると共に、クライアント装置１２＿２から公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ２を受信する。
そして、クライアント装置１２＿１は、ハッシュデータＨＡＳＨ＿Ｄ１を基に自らをクライアント装置１２＿２に識別させ、ハッシュデータＨＡＳＨ＿Ｄ２を基にクライアント装置１２＿２を識別してクライアント装置１２＿２と通信を行う。
また、クライアント装置１２＿１は、公開エ−ジェントデータＡＧＥＮＴ＿ＤＰ２を基に、クライアント装置１２＿２のユーザの好みなどの特性に適合したデータ、あるいは適合した形態でデータをクライアント装置１２＿２に送信する。
【００６３】
以上説明したように、通信システム１では、クライアント装置１２＿１，１２＿２が、所定の条件で更新されるハッシュデータＨＡＳＨ＿Ｄ１，ＨＡＳＨ＿Ｄ２を自らの識別データとして用いて、サーバ装置１０と通信を行う。
そのため、ネットワーク９上でハッシュデータＨＡＳＨ＿Ｄ１，ＨＡＳＨ＿Ｄ２を基に、クライアント装置１２＿１，１２＿２のユーザの操作（行動）を監視しても、ハッシュデータＨＡＳＨ＿Ｄ１，ＨＡＳＨ＿Ｄ２が更新された後には監視を継続することができない。従って、クライアント装置１２＿１，１２＿２のユーザの操作が長期的に継続して監視されることを防止でき、ユーザのプライバシーを保護できる。
【００６４】
また、通信システム１によれば、サーバ装置１０が各ユーザの操作履歴データを保持することなく、少ない負担で、エージェント機能を実現できる。
また、通信システム１によれば、クライアント装置１２＿１，１２＿２の相互間で、記憶容量および処理の観点から少ない負担で、エ−ジェント機能を利用した円滑な通信を行うことが可能になる。
例えば、クライアント装置１２＿１，１２＿２との間でデータ交換を行う場合に、相手の好みに適合したデータを送信することができる。
【００６５】
また、通信システム１によれば、クライアント装置１２＿１，１２＿２の各々が自らが起動するアプリケーションプログラムＡＰ＿Ｃ１，ＡＰ＿Ｃ２の正当性を検証し、その結果を示す証明データＡＰ＿ＣＥＲ１，ＡＰ＿ＣＥＲ２をサーバ装置１０に送信する。
そのため、サーバ装置１０は、クライアント装置１２＿１，１２＿２が実行するアプリケーションプログラムのハッシュデータを全て保持する必要がなく、また、その正当性の検証処理を行う必要がない。従って、クライアント装置１２＿１，１２＿２で起動されているアプリケーションプログラムの正当性の判断に伴うサーバ装置１０の負荷を軽減できる。
【００６６】
また、通信システム１によれば、クライアント装置１２＿１，１２＿２において、図５に示すように、上述した証明データＡＰ＿ＣＥＲを生成するブ−トプログラムＢ＿ＰＲＧが証明データＡＰ＿ＣＥＲ１，ＡＰ＿ＣＥＲ２内に記憶され、且つ、それがデータ線３０を介してセキュアな状態でＣＰＵ３３に読み出されるので、証明データＡＰ＿ＣＥＲの信頼性を高めることができる。
また、通信システム１によれば、サーバ装置１０は、クライアント装置１２＿１，１２＿２と相互認証を行ってから、署名付きの証明データＡＰ＿ＣＥＲを受信し、その署名データＳＩＧを検証するため、サーバ装置１０は、クライアント装置１２＿１，１２＿２で起動されているアプリケーションプログラムの正当性を高い信頼性で判断できる。
【００６７】
また、通信システム１によれば、サーバ装置１０とクライアント装置１２＿１，１２＿２との間のみならず、クライアント装置１２＿１と１２＿２との間でコンテンツデータを送受信する場合にも、クライアント装置１２＿１，１２＿２の一方は、他方で起動されているアプリケーションプログラムの正当性を小さな負荷で判断できる。
【００６８】
なお、上述した相互認証は、公開鍵認証に限定されるのではなく、相互認証できる方法またはシステムであればどのような認証方法でもよい。
【産業上の利用可能性】
【００６９】
本発明は、コンピュータ間で通信を行うシステムに適用可能である。
【図面の簡単な説明】
【００７０】
【図１】図１は、本発明の実施形態に係わる通信システムの全体構成図である。
【図２】図２は、図１に示すサーバ装置の構成図である。
【図３】図３は、図２に示すサーバ装置がクライアント装置と通信を行う場合の動作例を説明するためのフローチャートである。
【図４】図４は、本発明の実施形態に係わる証明データを説明するための図である。
【図５】図５は、図１に示すクライアント装置の構成図である。
【図６】図６は、本発明の実施形態における公開エ−ジェントデータＡＧＥＮＴ＿ＤＰを説明するための図である。
【図７】図７は、図５に示すクライアント装置が証明データＡＰ＿ＣＥＲを生成する動作を説明するためのフローチャートである。
【図８】図８は、図５に示すクライアント装置が公開エ−ジェントデータＡＧＥＮＴ＿ＤＰを生成する動作例を説明するためのフローチャートである。
【図９】図９は、図５に示すクライアント装置がサーバ装置と通信を行う場合の動作例を説明するためのフローチャートである。
【図１０】図１０は、図５に示すクライアント装置１２＿１が図１に示すクライアント装置１２＿２と通信を行う場合の動作例を説明するためのフローチャートである。
【符号の説明】
【００７１】
１…通信システム、１０…サーバ装置、１２＿１，１２＿２…クライアント装置、２０…データ線、２１…インタフェース、２２…メモリ、２３…ＣＰＵ、３０…データ線、３１…インタフェース、３２…メモリ、３３…ＣＰＵ、ＳＭ…セキュリティモジュール回路、３５…メモリ、３６…演算回路、ＡＰ＿Ｓ，ＡＰ＿Ｃ１…アプリケーションプログラム  、Ｂ＿ＰＲＧ…ブ−トプログラム、ＡＰ＿ＣＥＲ…証明データ、ＡＧＥＮＴ＿ＤＰ１…公開エ−ジェントデータ、ＡＧＥＮＴ＿Ｄ…エージェントデータ、ＡＧＥＮＴ＿Ｐ１…エージェントプログラム、ＨＡＳＨ＿Ｄ１，ＨＡＳＨ＿Ｄ２…ハッシュデータ
【図１】
2005301530.tif 000003
【図２】
2005301530.tif 000004
【図３】
2005301530.tif 000005
【図４】
2005301530.tif 000006
【図５】
2005301530.tif 000007
【図６】
2005301530.tif 000008
【図７】
2005301530.tif 000009
【図８】
2005301530.tif 000010
【図９】
2005301530.tif 000011
【図１０】
2005301530.tif 000012