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