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