(57)【要約】【課題】コンテンツ配信システムにおいて配信されるピースを不正に改ざんするノードを特定可能とする通信装置を提供すること。【解決手段】他の通信装置を識別する第１装置識別情報およびピースを含む第１署名対象情報と、第１署名対象情報に対して生成された第１電子署名と、を受信するデータ受信部５１４と、通信装置を識別する第２装置識別情報と、通信装置に割り当てられた非公開鍵と、を記憶する固有情報格納部５１０と、第１署名対象情報と第１電子署名と第２装置識別情報とを含む第２署名対象情報に対する第２電子署名を、非公開鍵を用いて生成する電子署名生成部５２１と、第２署名対象情報と第２電子署名とを送信するデータ送信部５１５とを備えた。【選択図】        図３
2010141619.tif 000002
【特許請求の範囲】
【請求項１】
データの一部であるピースを送信する通信装置であって、
他の通信装置を識別する第１装置識別情報と前記ピースとを含む第１署名対象情報、および、前記第１署名対象情報に対して生成された第１電子署名を受信する受信手段と、
前記通信装置を識別する第２装置識別情報と、前記通信装置に割り当てられた非公開鍵と、を記憶する記憶手段と、
前記第１署名対象情報と前記第１電子署名と前記記憶手段に記憶された前記第２装置識別情報とを含む第２署名対象情報に対する第２電子署名を、前記記憶手段に記憶された前記非公開鍵を用いて生成する署名生成手段と、
前記第２署名対象情報と前記第２電子署名とを送信する送信手段と、
を備えることを特徴とする通信装置。
【請求項２】
前記受信手段は、前記第１装置識別情報と前記他の通信装置によって暗号化された前記ピースである第１暗号化ピースとを含む前記第１署名対象情報、前記第１電子署名、および、前記他の通信装置が暗号化する際に生成した第１一時情報を受信し、
その生成毎に異なり得る第２一時情報を生成する一時情報生成手段と、
前記第２一時情報を用いて一時対称鍵を生成する鍵生成手段と、
前記一時対称鍵を用いて前記第１暗号化ピースを更に暗号化した第２暗号化ピースを出力する暗号化手段と、をさらに備え、
前記署名生成手段は、前記第１暗号化ピースを前記第２暗号化ピースで置換した前記第１署名対象情報と前記第１電子署名と前記記憶手段に記憶された前記第２装置識別情報とを含む第２署名対象情報に対する第２電子署名を、前記記憶手段に記憶された前記非公開鍵を用いて生成し、
前記送信手段は、前記第２署名対象情報と、前記第２電子署名と、前記第１一時情報と、前記第２一時情報と、を送信すること、
を特徴とする請求項１に記載の通信装置。
【請求項３】
前記第１署名対象情報は、前記第１装置識別情報と前記他の通信装置に割り当てられた公開鍵とを含む公開鍵証明書と、前記第１暗号化ピースとを含むこと、
を特徴とする請求項２に記載の通信装置。
【請求項４】
前記受信手段は、さらに、前記第１電子署名を生成するときに用いられた非公開鍵に対応する公開鍵を受信し、
前記公開鍵と前記第１署名対象情報とを用いて前記第１電子署名を検証する検証手段をさらに備え、
前記署名生成手段は、前記第１電子署名が正しいことが検証されたときに、前記第２署名対象情報に対する前記第２電子署名を、前記記憶手段に記憶された前記非公開鍵を用いて生成すること、
を特徴とする請求項１に記載の通信装置。
【請求項５】
前記受信手段は、前記ピースの送信を仲介した複数の前記他の通信装置それぞれを識別する複数の前記第１装置識別情報と前記ピースとを含む前記第１署名対象情報と、前記ピースを送信するごとに複数の前記他の通信装置のそれぞれが生成した複数の前記第１電子署名と、を受信し、
前記送信手段は、さらに、電子署名を検証可能なサーバ装置に対して、前記第１署名対象情報と、前記第１電子署名とを含む、前記第１電子署名の検証要求を送信し、
前記受信手段は、さらに、前記検証要求に対する応答として前記第１電子署名の検証結果を前記サーバ装置から受信すること、
を特徴とする請求項１に記載の通信装置。
【請求項６】
データの一部であるピースを送信する複数の通信装置と接続されたサーバ装置であって、
前記通信装置は、前記ピースを含む署名対象情報と、前記署名対象情報に対して他の通信装置が生成した電子署名とを含む新たな署名対象情報に対して新たな電子署名を生成し、生成した前記署名対象情報と生成した前記電子署名とを送信し、
前記署名対象情報と、前記署名対象情報に対して生成された前記電子署名とを含む、前記電子署名の検証要求を前記通信装置から受信する受信手段と、
前記検証要求に含まれる前記署名対象情報と、前記検証要求に含まれる前記電子署名を生成した前記通信装置に割り当てられた公開鍵とを用いて前記電子署名を検証する検証手段と、
検証されなかった前記電子署名を含む前記署名対象情報に対する前記電子署名を生成した前記通信装置を、不正な通信装置として検出する検出手段と、
を備えることを特徴とするサーバ装置。
【請求項７】
前記通信装置を識別する装置識別情報と、前記通信装置のそれぞれに割り当てられた前記公開鍵とを対応づけて記憶する記憶手段をさらに備え、
前記受信手段は、前記署名対象情報と、前記電子署名と、前記署名対象情報を送信した複数の前記通信装置の前記装置識別情報と、を対応づけて含む前記検証要求を受信し、
前記検証手段は、前記検証要求に含まれる前記署名対象情報と、前記検証要求に含まれる前記装置識別情報に対応する前記記憶手段の前記公開鍵とを用いて、前記電子署名を検証すること、
を特徴とする請求項６に記載のサーバ装置。
【請求項８】
前記受信手段は、前記署名対象情報と、前記電子署名と、前記署名対象情報を送信した複数の前記通信装置に割り当てられた前記公開鍵と、を対応づけて含む前記検証要求を受信し、
前記検証手段は、前記検証要求に含まれる前記署名対象情報と、前記検証要求に含まれる前記公開鍵とを用いて、前記電子署名を検証すること、
を特徴とする請求項６に記載のサーバ装置。
【請求項９】
前記通信装置のそれぞれに割り当てられた秘密情報と、前記通信装置を識別する装置識別情報とを各々対応付けて記憶する記憶手段をさらに備え、
前記検証要求は、さらに、複数の前記通信装置それぞれが生成した生成毎に異なり得る情報であって、前記ピースを暗号化する暗号鍵を生成するための複数の一時情報を対応づけた前記装置識別情報を含み、
前記署名対象情報は、複数の前記通信装置により前記一時情報を用いて生成された複数の暗号鍵によって、複数の前記通信装置が前記署名対象情報を送信するごとに暗号化されており、
前記検証手段は、前記検証要求に含まれる前記一時情報と、前記検証要求に含まれる前記装置識別情報に対応する前記記憶手段の前記秘密情報とを用いて暗号鍵を生成し、生成した暗号鍵によって前記署名対象情報を復号し、復号した前記署名対象情報と、前記公開鍵とを用いて前記電子署名を検証すること、
を特徴とする請求項６に記載のサーバ装置。
【請求項１０】
データの一部であるピースを送信する通信装置を、
他の通信装置を識別する第１装置識別情報と前記ピースとを含む第１署名対象情報、および、前記第１署名対象情報に対して生成された第１電子署名を受信する受信手段と、
前記通信装置を識別する第２装置識別情報と前記通信装置に割り当てられた非公開鍵とを記憶する記憶手段に記憶された前記第２装置識別情報と前記第１署名対象情報と前記第１電子署名とを含む第２署名対象情報に対する第２電子署名を、前記記憶手段に記憶された前記非公開鍵を用いて生成する署名生成手段と、
前記第２署名対象情報と前記第２電子署名とを送信する送信手段と、
として機能させるための通信プログラム。
【請求項１１】
配信データの一部であるピースの配信を仲介する通信装置から送信されるデータであって、
前記ピースの配信を仲介した複数の通信装置のそれぞれを識別する装置識別情報と前記ピースとを含む署名対象情報、および、前記署名対象情報に対して複数の前記通信装置それぞれが生成した複数の電子署名を含む、
ことを特徴とするデータ。
【請求項１２】
配信データの一部であるピースの配信を仲介する通信装置からサーバ装置へ送信されるデータであって、
前記ピースを含む署名対象情報、前記署名対象情報に対して前記署名対象情報を送信した複数の前記通信装置それぞれによって生成された複数の電子署名、および、前記署名対象情報を送信した複数の前記通信装置を識別する装置識別情報と前記署名対象情報を送信した複数の前記通信装置に割り当てられた公開鍵との少なくとも一方を対応づけた、前記電子署名の検証要求を含む、
ことを特徴とするデータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、サーバ装置及びデータに関する。
【背景技術】
【０００２】
例えば、Ｐ２Ｐ（peer to peer）を利用してデータを配信する配信方式（Ｐ２Ｐ配信という）は、巨大なストレージと大きな通信帯域とを有するデータ配信サーバを必要とせず、コストメリットの大きい配信方式である。また、データの配信を受けるノードにおいては、複数のノードからのデータの供給が期待されるため、ダウンロードやアップロードにおける帯域幅を活かした高速なデータ取得が期待される。このようにＰ２Ｐデータ配信には大きなメリットがあるが、一方で、著作権保護などデータセキュリティの観点から安全性に不安があった。Ｐ２Ｐ配信に限らず、著作権保護などのデータセキュリティを考える上で一般的な前提として次のことを仮定する。全ての端末機器又はノードがハッキングされることはないということである。この前提を否定した場合、端末機器は秘密とすべきデータを保持したり、秘密とすべき処理を行ったりすることができなくなり、殆どのセキュリティ技術やセキュリティ確保の為の工夫が成立しない。
【０００３】
さて、Ｐ２Ｐ配信において、暗号化されたデータを配信し、データの配信を受けるノードが当該データ（配信データという）を復号するための復号鍵を取得するコンテンツ配信システムがある。このようなシステムのＰ２Ｐ配信においてデータセキュリティ上の大きな問題点は、配信データと当該配信データを復号するための復号鍵との組み合わせが単一であったり数が少なかったりすることである。この場合、あるノードがハッキングされ、復号鍵が暴露されたとする。この場合、この復号鍵は殆どの配信データを復号するために使用できることになる。この問題を解決する一つの方法は、配信データをノード毎に個別化することである。
【０００４】
Ｐ２Ｐ配信において配信データをノード毎に個別化する技術としては、例えば、特許文献１に示されるMarkingの方式が知られている。この方式では、配信データをピースに分割した上で、鍵の行列で暗号化を施して暗号化ピースを生成する。その結果として、行列状に暗号化された暗号化ピースからなるピース群が生成される。そしてこのようなピース群はＰ２Ｐネットワークを介して配信される。当該Ｐ２Ｐネットワークに接続される１つのノードは、各ピースについて行列状に暗号化された複数の暗号化ピースの中から１つの暗号化ピースを取得することになる。結果として、配信データを構成する各ピースが各々暗号化された暗号化ピースの組み合わせは、ノード毎に統計的に一意になることが期待される。
【０００５】
【特許文献１】USP 7165050
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上述の特許文献１の技術においては、各暗号化ピースの組み合わせがノード毎に一意であることはあくまで統計的に期待されるだけである。各暗号化ピースの組み合わせをノード毎に一意にすることを実現するには、例えば、以下の２つの方法が考えられる。１つは、暗号化ピースの配信方法に工夫を施すという方法である。また、１つは、各暗号化ピースを復号するための復号鍵を保持する鍵サーバが復号鍵の配信を制限するという方法である。例えば、配信されたピース群をノードは復号するために、各暗号化ピースの組み合わせを鍵サーバに申告して復号鍵を取得するシステムがある。このシステムにおいて、復号鍵の再配信によるリプレイアタックを阻止するためには、既に取得された復号鍵と重複が多い暗号化ピースの組み合わせを、鍵サーバがリジェクトするという方法がある。しかしいずれの方法であっても、暗号化ピースの配信効率を時として著しく低下させ、Ｐ２Ｐネットワークの利点を十分活かすことができなくなる恐れがある。また、前者の方法では、データの保護とデータの配信方法との独立性が損なわれ、そのことがシステム構築上の大きな制約となる恐れがある。
【０００７】
また、Ｐ２Ｐ配信では、受信したピースが不正に改ざんされていないことを検証することが望ましい。一般的にはピースの完全性をチェックする方法として、配信データの提供者が配信データのピース毎にハッシュ値を計算して、全てのピースのハッシュ値の束（ハッシュテーブル）を利用する方法がある。しかし、このような方法では、ピースの完全性をチェックすることができるが、ピースを不正に改ざんするノードを特定することが困難である。
【０００８】
本発明は、上記に鑑みてなされたものであって、コンテンツ配信システムにおいて配信されるピースを不正に改ざんするノードを特定可能とする通信装置、サーバ装置、通信プログラム及びデータを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明の一実施形態は、データの一部であるピースを送信する通信装置であって、他の通信装置を識別する第１装置識別情報と前記ピースとを含む第１署名対象情報、および、前記第１署名対象情報に対して生成された第１電子署名を受信する受信手段と、前記通信装置を識別する第２装置識別情報と、前記通信装置に割り当てられた非公開鍵と、を記憶する記憶手段と、前記第１署名対象情報と前記第１電子署名と前記記憶手段に記憶された前記第２装置識別情報とを含む第２署名対象情報に対する第２電子署名を、前記記憶手段に記憶された前記非公開鍵を用いて生成する署名生成手段と、前記第２署名対象情報と前記第２電子署名とを送信する送信手段と、を備えることを特徴とする。
【００１０】
また、本発明の一実施形態は、上記装置で実行することができるプログラムである。
【００１１】
また、本発明の一実施形態は、データの一部であるピースを送信する複数の通信装置と接続されたサーバ装置であって、前記通信装置は、前記ピースを含む署名対象情報と、前記署名対象情報に対して他の通信装置が生成した電子署名とを含む新たな署名対象情報に対して新たな電子署名を生成し、生成した前記署名対象情報と生成した前記電子署名とを送信し、前記署名対象情報と、前記署名対象情報に対して生成された前記電子署名とを含む、前記電子署名の検証要求を前記通信装置から受信する受信手段と、前記検証要求に含まれる前記署名対象情報と、前記検証要求に含まれる前記電子署名を生成した前記通信装置に割り当てられた公開鍵とを用いて前記電子署名を検証する検証手段と、検証されなかった前記電子署名を含む前記署名対象情報に対する前記電子署名を生成した前記通信装置を、不正な通信装置として検出する検出手段と、を備えることを特徴とする。
【００１２】
また、本発明の一実施形態は、配信データの一部であるピースの配信を仲介する通信装置から送信されるデータであって、前記ピースの配信を仲介した複数の通信装置のそれぞれを識別する装置識別情報と前記ピースとを含む署名対象情報、および、前記署名対象情報に対して複数の前記通信装置それぞれが生成した複数の電子署名を含む、ことを特徴とする。
【００１３】
また、本発明の一実施形態は、配信データの一部であるピースの配信を仲介する通信装置からサーバ装置へ送信されるデータであって、前記ピースを含む署名対象情報、前記署名対象情報に対して前記署名対象情報を送信した複数の前記通信装置それぞれによって生成された複数の電子署名、および、前記署名対象情報を送信した複数の前記通信装置を識別する装置識別情報と前記署名対象情報を送信した複数の前記通信装置に割り当てられた公開鍵との少なくとも一方を対応づけた、前記電子署名の検証要求を含む、ことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、コンテンツ配信システムにおいて配信されるピースを不正に改ざんするノードを特定可能になるという効果を奏する。
【発明を実施するための最良の形態】
【００１５】
以下に添付図面を参照して、この発明にかかる通信装置、サーバ装置、通信プログラム及びデータの最良な実施の形態を詳細に説明する。
【００１６】
（１）構成
＜コンテンツ配信システムの構成＞
図１は、本実施の形態にかかるデータ配信システムの構成を示す図である。本実施の形態にかかるデータ配信システムにおいては、複数のノード５０，５１Ａ〜５１ＢがＰ２ＰネットワークＮＴを介して接続されている。図示しないがこの他のノードもＰ２ＰネットワークＮＴを介して接続され得る。また、各ノード５０，５１Ａ〜５１Ｂは鍵サーバ５３と接続されている。各ノード５０，５１Ａ〜５１Ｂは、各ノードに一意に割り当てられた割当情報として公開鍵証明書と、公開鍵証明書に記載された公開鍵の対となるピースの電子署名生成に使用される非公開鍵と、ピースの暗号化に使用される秘密鍵を保持している。公開鍵証明書には、少なくとも装置識別情報であるノードＩＤと、電子署名を検証するための公開鍵が含まれている。公開鍵証明書（Public Key Certificate）については、例えば文献ISO/IEC 9594-8に記載されている。各ノード５０，５１Ａ〜５１Ｂに割り当てられた公開鍵証明書を各々pkc_0、pkc_1、pkc_2とし、非公開鍵を各々sk_0、sk_1、sk_2とし、公開鍵証明書に含まれるノードＩＤを各々ID #0、ID #1、ID #2とし、公開鍵証明書に含まれる公開鍵を各々pk_0、pk_1、pk_2とし、秘密鍵を各々s_0、s_1、s_2とする。尚、各ノード５０，５１Ａ〜５１Ｂのうちノード５０は、データの配信の基点となる配信開始ノードであり、配信対象のデータ（配信データという）を保持している。配信データは、平文である場合も既に暗号化された暗号文である場合もある。例えば、当該配信データは、暗号化として何らかのＤＲＭ（Digital Right Management） Systemによって保護されたビデオデータであっても良い。鍵サーバ５３は、各ノード５０，５１Ａ〜５１Ｂに各々割り当てられたノードＩＤと、秘密鍵を保持している。さらに鍵サーバ５３は、各ノード５０，５１Ａ〜５１Ｂに各々割り当てられた公開鍵証明書を保持していてもよい。尚、以降、ノード５１Ａ〜５１Ｂを各々区別する必要がない場合、単にノード５１と記載する。
【００１７】
ここで、各ノード５０，５１と、鍵サーバ５３との各装置のハードウェア構成について説明する。各装置は各々、装置全体を制御するＣＰＵ（Central Processing Unit）等の制御装置と、各種データや各種プログラムを記憶するＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）等の記憶装置と、各種データや各種プログラムを記憶するＨＤＤ（Hard Disk Drive）やＣＤ（Compact Disk）ドライブ装置等の外部記憶装置と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。また、各装置には各々、情報を表示する表示装置と、ユーザの指示入力を受け付けるキーボードやマウス等の入力装置と、外部装置の通信を制御する通信Ｉ／Ｆ（interface）とが有線又は無線により接続される。
【００１８】
なお、装置識別情報とは、データ配信システムにおける各ノードに割り当てられた情報であって、各ノードを識別できればどのような情報であっても良く、例えば、ノードＩＤ、通信装置のＭＡＣ（Media Access Control）アドレス、通信機器のＣＰＵ固有なシリアルナンバー、などである。
【００１９】
また、電子署名とは、デジタル文書の正当性を保証するために当該デジタル文書に付けられる署名情報であれば良く、例えば、ＲＳＡ署名、ＤＳＡ（Digital Signature Algorithm）、ＥｌＧａｍａｌ署名、Ｓｃｈｎｏｒｒ署名、Ｃｒａｍｅｒ−Ｓｈｏｕｐ署名、ＥＣＤＳＡ（Elliptic Curve DSA）、楕円ＥｌＧａｍａｌ署名、楕円Ｓｃｈｎｏｒｒ署名などのアルゴリズムで生成された署名情報である。
【００２０】
＜配信開始ノードの構成＞
次に、上述したハードウェア構成において、配信開始ノードであるノード５０のＣＰＵが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。図２は、ノード５０の機能的構成を例示する図である。ノード５０は、固有情報格納部５００と、乱数生成部５０１と、一時対称鍵生成部５０２と、ピース暗号化部５０３と、ピース化部５０４と、データ送信部５０５と、送信要求受付部５０６と、電子署名生成部５０７を有する。尚、固有情報格納部５００は、例えばノード５０のＨＤＤなどの外部記憶装置に記憶領域として確保されるものである。乱数生成部５０１と、一時対称鍵生成部５０２と、ピース暗号化部５０３と、ピース化部５０４と、データ送信部５０５と、送信要求受付部５０６と、電子署名生成部５０７との実体は、ノード５０のＣＰＵのプログラム実行時にＲＡＭなどの記憶装置上に生成されるものである。尚、ノード５０の外部記憶装置には、配信データが予め記憶されている。
【００２１】
固有情報格納部５００は、当該ノード５０に割り当てられた公開鍵証明書と非公開鍵及び秘密鍵を記憶する。公開鍵証明書には、少なくとも当該ノード５１に割り当てられたノードＩＤ及び公開鍵が含まれている。ピース化部５０４は、配信データを複数のピースに分割する。分割する際のデータサイズは特に限定されないが、予め定められているものとする。送信要求受付部５０６は、ピース化部５０４が分割したピースを要求するピース要求を他のノード５１から受信する。乱数生成部５０１は、送信要求受付部５０６がピース要求を受信した場合、その発生毎に異なり得る一時情報である乱数を生成する。一時情報とは、使い捨ての値であって、ノードで生成される度に異なる値となれば良く、乱数の他、たとえば、タイムスタンプや通信のシーケンス番号やノードに固有のカウンタ値やTime Variant Parameterである。Time Variant Parameterについては、文献ISO9798-1が詳しい。
【００２２】
一時対称鍵生成部５０２は、乱数生成部５０１が生成した乱数r_0と、固有情報格納部５００に記憶された秘密鍵s_0とを用いて関数Fにより一時対称鍵k_0を生成する。これを式により表すと以下の（１）式のように表される。
k_0＝F（s_0, r_0）  ・・・（１）
【００２３】
尚、関数Fは一方向性関数あるいは共通鍵暗号あるいは擬似乱数生成器であり、入力値である秘密鍵と乱数の両方を知らないものが、出力値である一時対称鍵を推測できないものである。一時対称鍵とは、関数Fの出力値であって、関数Fの入力と出力値との関係が一意に定められれば良い。関数Fとしては、例えばＳＨＡ−１やＳＨＡ２５６といったハッシュ関数であっても良く、ＡＥＳやＨｉｅｒｏｃｒｙｐｔといった共通鍵暗号方式であっても良く、Ｍｅｒｓｅｎｎｅ  ｔｗｉｓｔｅｒといった疑似乱数生成器であってもよい。ハッシュ関数には、乱数と秘密鍵を結合した値が入力されても良い。共通鍵暗号方式では、乱数を秘密鍵で暗号化しても良く、秘密鍵を乱数で暗号化しても良く、乱数を秘密鍵で復号しても良く、秘密鍵を乱数で復号しても良い。疑似乱数生成器には、乱数と秘密鍵を結合した値が入力されても良い。
【００２４】
ピース暗号化部５０３は、一時対称鍵生成部５０２が生成した一時対称鍵k_0を用いてピースPを暗号化して、暗号化ピースE（k_0）Pを出力する。尚、一時対称鍵は暗号化に用いられる暗号鍵でもあり、暗号化ピースに対して行われている暗号化を解くための復号鍵にもなる。電子署名生成部５０７は、非公開鍵sk_0を用いて関数SIGNにより暗号化ピースE（k_0）Pと公開鍵証明書pkc_0と乱数r_0に対して電子署名sig_0を生成する。電子署名の生成を式で表すと以下の（２）式のようになる。
sig_0＝SIGN（sk_0, E（k_0）P || pkc_0 || r_0 ）  ・・・（２）
【００２５】
ここで、記号||はデータ結合を意味する。また、上記（２）式では署名生成対象データの結合順番の１例を示しており、署名検証を行うものが当該署名生成対象データの結合順番を把握できる仕組みになっていれば、結合順番はどのようになっていてもよい。
【００２６】
関数SIGNとしてはＲＳＡ署名、ＤＳＡ（Digital Signature Algorithm）、ＥｌＧａｍａｌ署名、Ｓｃｈｎｏｒｒ署名、Ｃｒａｍｅｒ−Ｓｈｏｕｐ署名、ＥＣＤＳＡ（Elliptic Curve DSA）、楕円ＥｌＧａｍａｌ署名、楕円Ｓｃｈｎｏｒｒ署名などの電子署名方式における署名生成アルゴリズムを用いても良い。データ送信部５０５は、ピース要求を送信した他のノード５１に対して、固有情報格納部５００に記憶されている公開鍵証明書と、乱数生成部５０１が生成した乱数と、ピース暗号化部５０３が出力した暗号化ピースと、電子署名生成部５０７が生成した電子署名とを送信する。
【００２７】
＜配信開始ノード以外のノードの構成＞
次に、配信開始ノード以外であるノード５１のＣＰＵが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。図３は、ノード５１の機能的構成を例示する図である。ノード５１は、固有情報格納部５１０と、乱数生成部５１１と、一時対称鍵生成部５１２と、ピース暗号化部５１３と、データ受信部５１４と、データ送信部５１５と、送信要求受付部５１６と、データ格納部５１７と、送信要求送信部５１８と、鍵要求送信部５１９と、ピース復号部５２０と、電子署名生成部５２１と、電子署名検証部５２２と、ピース検証要求送信部５２３とを有する。尚、固有情報格納部５１０とデータ格納部５１７とは、例えばノード５１のＨＤＤなどの外部記憶装置に記憶領域として確保されるものである。乱数生成部５１１と、一時対称鍵生成部５１２と、ピース暗号化部５１３と、データ受信部５１４と、データ送信部５１５と、送信要求受付部５１６と、送信要求送信部５１８と、鍵要求送信部５１９と、ピース復号部５２０と、電子署名生成部５２１と、電子署名検証部５２２と、ピース検証要求送信部５２３との実体は、ノード５１のＣＰＵのプログラム実行時にＲＡＭなどの記憶装置上に生成されるものである。
【００２８】
固有情報格納部５１０は、当該ノード５１に割り当てられた公開鍵証明書と非公開鍵と秘密鍵とを記憶する。公開鍵証明書には、少なくとも当該ノード５１に割り当てられたノードＩＤ及び公開鍵が含まれている。送信要求受付部５１６の構成は上述のノード５０の有する送信要求受付部５０６の構成と同様である。送信要求送信部５１８は、ピースを要求するピース要求をノード５０又は他のノード５１に対して送信する。データ受信部５１４は、送信要求送信部５１８がピース要求を送信した相手であるノード５０又は他のノード５１から、ピースが暗号化された暗号化ピースと、当該暗号化ピースの送信を仲介した少なくとも１つの他のノード５０,５１に割り当てられた各公開鍵証明書を含む公開鍵証明書列と、当該他のノード５０,５１が生成した各乱数を含む乱数列と、当該他のノード５０,５１が生成した各電子署名を含む電子署名列とを受信する。電子署名検証部５２２は、受信した暗号化ピースE（k_i-1）・・・E（k_0）Pと公開鍵証明書列pkc_0,・・・,pkc_i-1と乱数列r_0,・・・r_i-1と電子署名列sig_0,・・・,sig_i-1とが正当かどうかを、データ送信者の公開鍵証明書に含まれる公開鍵pk_i-1を用いて、以下の（３）式で表される関数VERIFYによりデータ送信者が生成した電子署名を検証する。なおE（k_i-1）・・・E（k_0）P、pkc_i-1、r_i-1、sig_i-1、およびpk_i-1とは、それぞれ、配信経路上でｉ番目に暗号化ピースの配信を仲介するノード５１で計算される暗号化ピース、当該ノード５１の公開鍵証明書、当該ノード５１が生成した乱数、当該ノード５１が生成した電子署名、および当該ノード５１の公開鍵証明書に含まれる公開鍵を意味する。そして、ｉ＝０のときの各データE（k_0）P、pkc_0、r_0、sig_0、およびpk_0は、配信開始ノードであるノード５０で計算される暗号化ピース、ノード５０の公開鍵証明書、ノード５０が生成した乱数、ノード５０が生成した電子署名、およびノード５０の公開鍵証明書に含まれる公開鍵である。
検証成功／失敗＝VERIFY（pk_i-1, E（k_i-1）・・・E（k_0）P || pkc_0 || r_0 || sig_0 || ・・・ || pkc_i-1 || r_i-1, sig_i-1）  ・・・（３）
【００２９】
例えば、ノード５０から最初に暗号化ピースを受信したノード５１では、以下の（４）式でノード５０が生成した電子署名を検証する。
検証成功／失敗＝VERIFY（pk_0, E（k_0）P || pkc_0 || r_0, sig_0）  ・・・（４）
【００３０】
関数VERIFYとしては、署名生成時に使用した関数SIGNと対になる署名検証アルゴリズムを用いる。例えば、SIGNとしてＲＳＡ署名生成アルゴリズムを用いた場合には、VERIFYとしてＲＳＡ署名検証アルゴリズムを用いる。
【００３１】
電子署名の検証に成功した場合、データ格納部５１７は、データ受信部５１４が受信した公開鍵証明書列、乱数列、電子署名列及び暗号化ピースを対応付けて記憶する。検証に失敗した場合、データ受信部５１４が受信した公開鍵証明書列、乱数列、電子署名列及び暗号化ピースを破棄する。
【００３２】
送信要求受付部５１６がピース要求を他のノード５１から受信した場合、乱数生成部５１１は、乱数を生成する。一時対称鍵生成部５１２は、乱数生成部５１１が生成した乱数と、固有情報格納部５１０に記憶された秘密鍵とを用いて上述した関数Fにより一時対称鍵を生成する。ピース暗号化部５１３は、一時対称鍵生成部５１２が生成した一時対称鍵を用いて、データ格納部５１７に記憶されている１つの暗号化ピースを更に暗号化して、新たな暗号化ピースを出力する。電子署名生成部５２１は、固有情報格納部５１０に記憶された非公開鍵を用いて、ピース暗号化部５１３が出力した新たな暗号化ピースと、当該暗号化ピースに対応づけられてデータ格納部５１７に記憶された公開鍵証明書列に加え固有情報格納部５１０に記憶された公開鍵証明書を含む新たな公開鍵証明書列と、当該暗号化ピースに対応づけられてデータ格納部５１７に記憶された乱数列に加え乱数生成部５１１が生成した乱数を含む新たな乱数列と、当該暗号化ピースに対応づけられてデータ格納部５１７に記憶された電子署名列とに対して、新たな電子署名を生成する。
【００３３】
データ送信部５１５は、送信要求受付部５１６が受信したピース要求を送信した他のノード５１に対して、以下のデータを送信する。すなわち、送信対象の暗号化ピースに対応付けられてデータ格納部５１７に記憶された公開鍵証明書列に加え固有情報格納部５１０に記憶された公開鍵証明書を含む新たな公開鍵証明書列と、当該暗号化ピースに対応付けられてデータ格納部５１７に記憶された乱数列に加え乱数生成部５１１が生成した乱数を含む新たな乱数列と、ピース暗号化部５１３が出力した新たな暗号化ピースと、当該暗号化ピースに対応付けられてデータ格納部５１７に記憶された電子署名列に加え電子署名生成部５２１が生成した電子署名を含む新たな電子署名列とである。尚、データ格納部５１７に暗号化ピースが記憶されていない場合には、送信要求受付部５１６がピース要求を受信したとしても、ピース暗号化部５１３は暗号化ピースを出力せず、データ送信部５１５は暗号化ピースを送信しない。
【００３４】
ここで、ノード５０，５１から送信される公開鍵証明書列、乱数列、暗号化ピース及び電子署名列について具体的に説明する。尚、ノード５０から１つの暗号化ピースに対してこれと共に送信される公開鍵証明書、乱数及び電子署名は各々１つであるが、ここでは説明の便宜上、これらを公開鍵証明書列、乱数列及び電子署名列と各々記載する場合がある。暗号化ピースの配信経路としてここではノード５０からノード５１Ａ、更にノード５１Ａからノード５１Ｂに暗号化ピースを送信し、ノード５１Ｂから鍵サーバ５３に鍵要求を送信する場合について説明する。例えば、あるピースPについてノード５１Ａからのピース要求に応じて、ノード５０が、乱数r_0と秘密鍵s_0とを用いて一時対称鍵k_0を生成し、これを用いてピースPを暗号化して暗号化ピースE（k_0）Pを出力したとする。さらに、ノード５０は、乱数r_0と暗号化ピースE（k_0）Pと公開鍵証明書pkc_0とを含む情報（署名対象情報）に対する電子署名sig_0を、非公開鍵sk_0を用いて生成したとする。
【００３５】
なお、署名対象情報とは、電子署名を生成する対象となる情報をいう。上述のように、ノード５０の場合は、ノード５０で生成した乱数r_0と、ノード５０で暗号化した暗号化ピースE（k_0）Pと、ノード５０の公開鍵証明書pkc_0とが署名対象情報に含まれる。配信経路上でｉ番目に暗号化ピースの配信を仲介するノード５１の場合は、公開鍵証明書列pkc_0、・・・、pkc_iと、乱数列r_0、・・・、r_iと、暗号化ピースE（k_i）・・・E（k_0）Pと、電子署名列sig_0、・・・、sig_i-1とが署名対象情報に含まれる。
【００３６】
そして、ノード５０が、当該暗号化ピースE（k_0）Pを公開鍵証明書pkc_0、乱数r_0及び電子署名sig_0と共にノード５１Ａに送信したとする。図４は、ノード５０からノード５１Ａに送信される情報を模式的に示す図である。当該ノード５１Ａは、電子署名sig_0が、暗号化ピースE（k_0）Pと公開鍵証明書pkc_0及び乱数r_0に対する正当な署名かどうかを、公開鍵証明書pkc_0に含まれる公開鍵pk_0を用いて電子署名検証部５２２において確認する。当該電子署名検証の結果が検証成功だった場合、当該ノード５１Ａは、これらの公開鍵証明書pkc_0、乱数r_0、暗号化ピースE（k_0）P及び電子署名sig_0を対応付けてデータ格納部５１７に記憶することになる。尚、データ格納部５１７は、公開鍵証明書と当該公開鍵証明書が割り当てられたノードが生成した乱数と当該公開鍵証明書が割り当てられたノードが生成した電子署名との対応関係を保持した状態で各公開鍵証明書列、各乱数列及び各電子署名列を記憶する。一方、当該電子署名検証の結果が検証失敗だった場合、当該ノード５１Ａは、当該公開鍵証明書pkc_0と乱数r_0と暗号化ピースE（k_0）P及び電子署名sig_0を破棄する。
【００３７】
そして、当該ノード５１Ａが、ノード５１Ｂからのピース要求に応じてピースPに対する暗号化ピースを送信する場合、乱数r_1を生成し、これと秘密鍵s_1とを用いて一時対称鍵k_1を生成し、これを用いて暗号化ピースE（k_0）Pを更に暗号化して暗号化ピースE（k_1）E（k_0）Pを出力したとする。E（k_1）E（k_0）Pは、順に一時対称鍵k_0、k_1でピースPを多重に暗号化したものを示す。さらに、ノード５１Ａは、公開鍵証明書列pkc_0、pkc_1と乱数列r_0、r_1と暗号化ピースE（k_1）E（k_0）Pと電子署名sig_0とを含む署名対象情報に対する電子署名sig_1を、非公開鍵sk_1を用いて生成したとする。このとき、ノード５１Ａは、ノード５１Ｂに対して、データ格納部５１７に記憶されている、ノード５０に割り当てられた公開鍵証明書pkc_0に加え固有情報格納部５１０に記憶されている、自身に割り当てられた公開鍵証明書pkc_1と、データ格納部５１７に記憶されている乱数r_0に加え自身が生成した乱数r_1と、暗号化ピースE（k_1）E（k_0）Pと、データ格納部５１７に記憶されている電子署名sig_0に加え自身が生成した電子署名sig_1とを送信する。図５は、ノード５１Ａからノード５１Ｂに送信される情報を模式的に示す図である。ノード５１Ｂは、電子署名sig_1が、暗号化ピースE（k_1）（k_0）Pと公開鍵証明書列pkc_0、pkc_1と乱数列r_0、r_1及び電子署名sig_0に対する正当な署名かどうかを、公開鍵証明書pkc_1に含まれる公開鍵pk_1を用いて電子署名検証部５２２において確認する。当該電子署名検証の結果が検証成功だった場合、これらの公開鍵証明書列pkc_0、pkc_1、乱数列r_0、r_1、暗号化ピースE（k_1）E（k_0）P及び電子署名列sig_0、sig_1を対応付けてデータ格納部５１７に記憶する。
【００３８】
また、鍵サーバ５３に全てのノードの公開鍵証明書が格納されている場合には、受信した公開鍵証明書からノードＩＤを取り出して、当該ノードＩＤを公開鍵証明書の代わりに送信することで、ノード間で送られるデータを削減できる。すなわち、ノード５１Ａは、ノード５１Ｂに対して、データ格納部５１７に記憶されている、ノード５０に割り当てられた公開鍵証明書pkc_0に含まれているノードＩＤ「ID #0」に加え固有情報格納部５１０に記憶されている、自身に割り当てられた公開鍵証明書pkc_1と、データ格納部５１７に記憶されている乱数r_0に加え自身が生成した乱数r_1と、暗号化ピースE（k_1）E（k_0）Pと、データ格納部５１７に記憶されている電子署名sig_0に加え自身が生成した電子署名sig_1とを送信する。図６は、鍵サーバ５３に全てのノードの公開鍵証明書が格納されている場合のノード５１Ａからノード５１Ｂに送信される情報を模式的に示す図である。ノード５１Ｂは、電子署名sig_1が、暗号化ピースE（k_1）（k_0）PとノードＩＤ列「ID #0」と公開鍵証明書pkc_1と乱数列r_0、r_1及び電子署名sig_0に対する正当な署名かどうかを、公開鍵証明書pkc_1に含まれる公開鍵pk_1を用いて電子署名検証部５２２において確認する。当該電子署名検証の結果が検証成功だった場合、これらのノードID列「ID #0」、公開鍵証明書pkc_1、乱数列r_0、r_1、暗号化ピースE（k_1）E（k_0）P及び電子署名列sig_0、sig_1を対応付けてデータ格納部５１７に記憶する。
【００３９】
鍵要求送信部５１９は、データ格納部５１７に記憶された暗号化ピースを復号するための復号鍵を要求する鍵要求を鍵サーバ５３に送信する。ここで鍵要求送信部５１９は、当該暗号化ピースに対応してデータ格納部５１７に記憶されている公開鍵証明書列から取り出されたノードＩＤ列及び乱数列を鍵要求に含めて鍵サーバ５３に送信する。例えば、ノード５１Ｂが、ノード５１Ａが暗号化を行った場合に出力された図６に示した暗号化ピースE（k_1）E（k_0）Pを復号するための復号鍵を要求する鍵要求を鍵サーバ５３に送信する場合、ノード５１Ｂの鍵要求送信部５１９は、ノードＩＤ列「ID #0、ID #1」と、乱数列r_0、r_1とを含む鍵要求を送信する。図７は、ノード５１Ｂから鍵サーバ５３に送信される情報を模式的に示す図である。このように、ノード５１は、暗号化ピースを復号するための復号鍵を鍵サーバ５３に要求する際に、当該暗号化ピースの配信経路を示すものとして、配信開始ノードであるノード５０を基点として当該暗号化ピースの配信を仲介する各ノード５０，５１の各ノードＩＤを含むノードＩＤ列及び当該各ノード５０，５１が生成した各乱数を含む乱数列を鍵サーバ５３に送信する。尚、これらの送信に際し、鍵要求送信部５１９は、各ノードＩＤと当該各ノードＩＤが割り当てられたノードが生成した乱数との対応関係を保持した状態で送信する。
【００４０】
ピース復号部５２０は、鍵要求送信部５１９が送信した鍵要求に応じて鍵サーバ５３から送信された一時対称鍵列を復号鍵として受信し、当該一時対称鍵列を用いて暗号化ピースを復号する。例えば、上述の例では、ノード５１Ａが暗号化を行っていた場合には、ノード５１Ｂは、図７に示したノードＩＤ列及び乱数列を含む鍵要求に応じて鍵サーバ５３から送信された一時対称鍵列k_0、k_1を受信する。ここで、即ち、ピースに対して少なくとも１回以上行われている各暗号化を解くための各復号鍵が受信される。図８は、鍵サーバ５３からノード５１Ｂに送信される情報を模式的に示す図である。同図に示される一時対称鍵列によりピースPが復号される。尚、鍵サーバ５３がどのように一時対称鍵列を生成するのかは後述する。
【００４１】
尚、ノード５１が、複数のピースのそれぞれについてどのような順番やタイミングでどのノードから取得するかは特に限定されないが、以上のようにして、ノード５１は、複数のピースのそれぞれが暗号化された各暗号化ピースをピース要求によって他のノード５０，５１から取得する。また、ノード５１は、各暗号化ピースについて鍵要求によって各一時対称鍵を鍵サーバ５３から受信し、各暗号化ピースを復号することにより、上述の配信データを得る。
【００４２】
ピース検証要求送信部５２３は、受信した復号鍵を用いて正しく復号できなかったピースが存在した場合、あるいは復号鍵を受信する前に暗号化ピースが正しく復号可能かどうかを判断したいピースが存在した場合、鍵サーバ５３に対して、ピースの検証要求を送信する。なお、正しく復号できなかったピースが存在した場合は、図９に示すようにハッシュ値でピースを検証する方法を用いることもできる。図９を用いてピースが正しく復号できたかどうかを調べる方法の１例を説明する。例えば配信データの提供者が、配信データのピース毎のハッシュ値をあらかじめ計算して、ハッシュ値列（ハッシュテーブル）を準備しておき、各ノードが復号された配信データを入手したときに、当該配信データのハッシュ値とハッシュテーブルのハッシュ値を比較することで、ピースが正しく復号できたかどうかを調べることができる。ピース検証要求送信部５２３は、データ格納部５１７に記憶された暗号化ピースの検証を依頼するための検証要求を鍵サーバ５３に送信する。ここでピース検証要求送信部５２３は、検証対象暗号化ピースと共に当該暗号化ピースに対応してデータ格納部５１７に記憶されている公開鍵証明書列と乱数列及び電子署名列をピース検証要求に含めて鍵サーバ５３に送信する。
【００４３】
例えば、ノード５１Ｂが、ノード５１Ａが暗号化を行った場合に出力された図５に示した暗号化ピースE（k_1）E（k_0）Pを検証するための検証要求を鍵サーバ５３に送信する場合、ノード５１Ｂのピース検証要求送信部５２３は、公開鍵証明書列pkc_0、pkc_1と、乱数列r_0、r_1と、暗号化ピースE（k_1）E（k_0）Pと、電子署名列sig_0、sig_1とを含むピース検証要求を送信する。図１０は、ノード５１Ｂから鍵サーバ５３に送信される情報を模式的に示す図である。このように、ノード５１は、暗号化ピースを検証するための検証要求を鍵サーバ５３に要求する際に、当該暗号化ピースの配信経路を示すものとして、配信開始ノードであるノード５０を基点として当該暗号化ピースの配信を仲介する各ノード５０，５１の各公開鍵証明書を含む公開鍵証明書列、当該各ノード５０，５１が生成した各乱数を含む乱数列及び当該各ノード５０，５１が生成した各電子署名を含む電子署名列を鍵サーバ５３に送信する。尚、これらの送信に際し、ピース検証要求送信部５２３は、各公開鍵証明書と当該各公開鍵証明書が割り当てられたノードが生成した乱数と当該各公開鍵証明書が割り当てられたノードが生成した電子署名との対応関係を保持した状態で送信する。
【００４４】
また、鍵サーバ５３に全てのノードの公開鍵証明書が格納されている場合には、ピース検証要求送信部５２３は、データ格納部５１７に記憶された暗号化ピースの検証を依頼するための検証要求を鍵サーバ５３に送信する。このときピース検証要求送信部５２３は、当該暗号化ピースに対応してデータ格納部５１７に記憶されているノードＩＤ列と乱数列及び電子署名列をピース検証要求に含めて鍵サーバ５３に送信する。例えば、ノード５１Ｂが、ノード５１Ａが暗号化を行った場合に出力された図６に示した暗号化ピースE（k_1）E（k_0）Pを検証するための検証要求を鍵サーバ５３に送信する場合、ノード５１Ｂのピース検証要求送信部５２３は、公開鍵証明書pkc_1からノードＩＤ「ID #1」を取り出した後に、ノードＩＤ列「ID #0、ID #1」と、乱数列r_0、r_1と、暗号化ピースE（k_1）E（k_0）Pと、電子署名列sig_0、sig_1とを含むピース検証要求を送信する。
【００４５】
図１１は、鍵サーバ５３に全てのノードの公開鍵証明書が格納されている場合における、ノード５１Ｂから鍵サーバ５３に送信される情報を模式的に示す図である。このように、ノード５１は、暗号化ピースを検証するための検証要求を鍵サーバ５３に要求する際に、当該暗号化ピースの配信経路を示すものとして、配信開始ノードであるノード５０を基点として当該暗号化ピースの配信を仲介する各ノード５０，５１の各ノードＩＤ列、当該各ノード５０，５１が生成した各乱数を含む乱数列及び当該各ノード５０，５１が生成した各電子署名を含む電子署名列を鍵サーバ５３に送信する。尚、これらの送信に際し、ピース検証要求送信部５２３は、各ノードＩＤと当該各ノードＩＤが割り当てられたノードが生成した乱数と当該ノードＩＤが割り当てられたノードが生成した電子署名との対応関係を保持した状態で送信する。
【００４６】
データ受信部５１４は、ピース検証要求送信部５２３が送信したピース検証要求に応じて鍵サーバ５３から送信されたピース検証結果を受信して、当該検証結果が検証失敗であった場合には対応する暗号化ピースを破棄し、再度他のノード５１から暗号化ピースの取得を試みる。
【００４７】
＜鍵サーバの構成＞
次に、鍵サーバ５３のＣＰＵが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。図１２は、鍵サーバ５３の機能的構成を例示する図である。鍵サーバ５３は、秘密鍵格納部５３０と、データ受信部５３１と、公開鍵証明書格納部５３２と、一時対称鍵生成部５３３と、データ送信部５３４と、電子署名検証部５３５と、ピース検証要求受付部５３６と、ピース復号部５３７と、不正ノードリスト格納部５３８とを有する。尚、秘密鍵格納部５３０と公開鍵証明書格納部５３２及び不正ノードリスト格納部５３８とは、例えば鍵サーバ５３のＨＤＤなどの外部記憶装置に記憶領域として確保されるものである。データ受信部５３１と、一時対称鍵生成部５３３と、データ送信部５３４と、電子署名検証部５３５と、ピース検証要求受付部５３６と、ピース復号部５３７との実体は、鍵サーバ５３のＣＰＵのプログラム実行時にＲＡＭなどの記憶装置上に生成されるものである。
【００４８】
秘密鍵格納部５３０は、各ノード５０，５１に割り当てられた秘密鍵を、各ノード５０，５１に割り当てられた公開鍵証明書あるいは公開鍵証明書に含まれるノードＩＤと対応付けて記憶する。データ受信部５３１は、上述したノードＩＤ列及び乱数列を含む鍵要求をノード５１から受信する。
【００４９】
公開鍵証明書格納部５３２は、鍵サーバ５３に全てのノードの公開鍵証明書を格納するように構成する場合に備えられる。公開鍵証明書を格納せずにノードＩＤを備えるように構成する場合は、鍵サーバ５３は公開鍵証明書格納部５３２を備える必要はない。公開鍵証明書格納部５３２は、各ノード５０，５１に割り当てられた公開鍵証明書を記憶する。当該公開鍵証明書格納部５３２に全ノードの公開鍵証明書が記憶されていると、ノード間のデータ転送量や、後述するピース検証要求におけるデータ転送量を削減できる。
【００５０】
一時対称鍵生成部５３３は、データ受信部５３１が受信した鍵要求に含まれる各ノードＩＤに対応づけられて秘密鍵格納部５３０に記憶されている秘密鍵s_i（0≦i≦j-1:jはピースの暗号化回数、以下同様）を読み出し、当該秘密鍵と当該鍵要求に含まれる乱数列に含まれる各乱数r_i（0≦i≦j-1）を用いて、関数Fにより復号鍵k_iを生成する。これを式により表すと以下の（５）式のように表される。尚、関数Fは上述のノード５０又はノード５１が一時対称鍵を生成する際に用いたものと同じである。従って、ここでは、乱数と秘密鍵とを用いて当該関数Fにより一時対称鍵を復元することになる。
k_i = F（s_i, r_i）  ・・・（５）
【００５１】
データ送信部５３４は、一時対称鍵生成部５３３が復号鍵として生成した一時対称鍵を、データ受信部５３１が受信した鍵要求を送信したノード５１に対して送信する。例えば、上述の例では、ノード５１Ａが暗号化を行っていた場合には、鍵サーバ５３は、図７に示されるノードＩＤ列及び乱数列を含む鍵要求に応じて、図８に示されるように、各乱数r_0、r_1に対して一時対称鍵k_0、k_1を得て、これをノード５１Ｂに対して送信する。当該ピースについて行われた全ての暗号化のそれぞれを復号するための各対称鍵がノード５１Ｂに対して送信されることにより、ノード５１Ｂは当該暗号化ピースの暗号化を完全に復号することができる。
【００５２】
ピース検証要求受付部５３６は、上述した公開鍵証明書列と乱数列と暗号化ピースと電子署名列とを含むピース検証要求をノード５１から受信する。例として、図１０で示されるピース検証要求を受信したとすると、一時対称鍵生成部５３３は、鍵要求を受信したときと同様の処理で復号鍵k_0、k_1を生成する。電子署名検証部５３５は、公開鍵証明書列に含まれる各公開鍵pk_0、pk_1を用いて電子署名列sig_0、sig_1の検証を実施し、ピース復号部５３７はE（k_1）（k_0）Pの復号を実施する。電子署名の検証および暗号化ピースの復号の手順は以下の通りである。まず、公開鍵pk_1を用いて、暗号化ピースE（k_1）E（k_0）Pと公開鍵証明書列pkc_0、pkc_1と乱数列r_0、r_1と電子署名sig_0とを含む署名対象情報に対する電子署名sig_1を以下の（６）式のように関数VERIFYにより検証する。
検証結果＝VERIFY（pk_1, E（k_1）（k_0）P || pkc_0 || r_0 || sig_0 || pck_1 || r_1, sig_1）  ・・・（６）
【００５３】
上記（６）式の検証に失敗した場合には、不正ノードリスト格納部５３８に記憶された不正ノードリストに、ピース検証要求受付部５３６が受信したピース検証要求を送信したノード５１のノードＩＤが追記されて、データ送信部５３４が「検証失敗」を当該ノード５１に対して送信する。上記の検証に成功した場合には、一時対称鍵k_1を用いて暗号化ピースを復号し、公開鍵pk_0を用いて、暗号化ピースE（k_0）Pと公開鍵証明書列pkc_0と乱数列r_0とを含む署名対象情報に対する電子署名sig_0を以下の（７）式のように関数VERIFYにより検証する。
検証結果＝VERIFY（pk_0, E（k_0）P || pkc_0 || r_0, sig_0）  ・・・（７）
【００５４】
上記（７）式の検証に失敗した場合には、不正ノードリスト格納部５３８に記憶された不正ノードリストに、公開鍵証明書pkc_1に含まれるノードＩＤが追記されて、データ送信部５３４が「検証失敗」を当該ノード５１に対して送信する。上記の検証に成功した場合には、データ送信部５３４が「検証成功」を当該ノード５１に対して送信する。
【００５５】
また、鍵サーバ５３に全てのノードの公開鍵証明書が格納されている場合には、ピース検証要求受付部５３６は、図１１に示す検証依頼を受信する。当該検証依頼には、ノードＩＤ列が含まれており、鍵サーバ５３は公開鍵証明書格納部に記録されている公開鍵証明書の中から当該ノードＩＤに対応する公開鍵証明書pkc_i（0≦i≦j-1）を取り出す。その後のピース検証処理は、上述の図１０に示す検証依頼を受信した場合と同様である。
【００５６】
（２）動作
＜配信開始ノード：配信処理＞
次に、本実施の形態にかかるデータ配信システムで行われる処理の手順について説明する。まず、配信開始ノードであるノード５０が行う配信処理の手順について図１３を用いて説明する。ノード５０は、配信データを複数のピースに分割する（ステップＳ１）。そして、ノード５０は、ピースを要求するピース要求を他のノード５１から受信すると（ステップＳ２：ＹＥＳ）、乱数r_0を生成する（ステップＳ３）。次いで、ノード５０は、乱数r_0と固有情報格納部５００に記憶された秘密鍵s_0とを用いて関数Fにより一時対称鍵k_0を生成する（ステップＳ４）。そして、ノード５０は、ステップＳ４で生成した一時対称鍵を用いて、送信対象となるピースPを暗号化して、暗号化ピースE（k_0）Pを出力する（ステップＳ５）。尚、送信対象となるピースをどのように決定するかは特に限定されない。さらに、ノード５０は、固有情報格納部５００に記憶された非公開鍵sk_0を用いて、ステップＳ５で生成された暗号化ピースE（k_0）Pとノード５０自身の公開鍵証明書pkc_0とステップＳ３で生成された乱数r_0とを含む署名対象情報に対する電子署名sig_0を生成する（ステップＳ６）。そして、ノード５０は、ステップＳ２で受信されたピース要求を送信した他のノード５１に対して、例えば図４に示されるように、固有情報格納部５００に記憶されている公開鍵証明書pkc_0と、ステップＳ３で生成した乱数r_0と、ステップＳ５で出力した暗号化ピースE（k_0）Pと、ステップＳ６で生成した電子署名sig_0とを送信する（ステップＳ７）。その後ステップＳ２に戻り、ノード５０は、新たなピース要求の受信を待機する。尚、ステップＳ２で受信されるピース要求は、同一のノード５１であるとは限らず、当該ピース要求によって要求されるピースPは、同一のピースであるとは限らない。また、ステップＳ３で生成する乱数は基本的にステップＳ３の処理毎に異なる。
【００５７】
＜受信処理＞
次に、ノード５１がノード５０又は他のノード５１から暗号化ピースを受信する受信処理の手順について図１４を用いて説明する。ノード５１は、ピースを要求するピース要求をノード５０又は他のノード５１に対して送信する（ステップＳ１０）。そして、ノード５１は、ステップＳ１０でピース要求を送信した相手であるノード５０又は他のノード５１から、公開鍵証明書列と、乱数列と、暗号化ピースと、電子署名列とを受信する（ステップＳ１１）。次いで、送信した相手であるノード５０又は他のノード５１が生成した電子署名の検証を行なう（ステップＳ１２）。ステップＳ１２の検証に成功すると（ステップＳ１３：ＹＥＳ）、ノード５１は、ステップＳ１１で受信した公開鍵証明書列、乱数列、暗号化ピース及び電子署名列を対応付けて記憶する（ステップＳ１４）。一方、ステップ１２の検証に失敗すると（ステップＳ１３：ＮＯ）、ノード５１は、ステップＳ１１で受信した公開鍵証明書列、乱数列、暗号化ピース及び電子署名列を破棄する（ステップＳ１５）。
【００５８】
尚、ノード５１がノード５０にピース要求を送信した場合は、ステップＳ１１ではピースPについて図４に示される公開鍵証明書列と、乱数列と、暗号化ピースと電子署名列とを受信する。ここで、図示はしないが、Ｐ２ＰネットワークＮＴに接続されるノードであって、fを１以上の整数として、f番目にピースPを受信するノードについて一般化して説明する。説明の便宜上、当該ノードのノードＩＤをID# fとする。ノードＩＤ「ID# f」が割り当てられたノードは、（f -1）番目のノードＩＤ「ID# （f-1）」が割り当てられたノードから、図１５に示されるように、ピースPについて、公開鍵証明書列pkc_0、・・・、pkc_｛f-1｝と、乱数列r_0、・・・、r_｛f-1｝と、暗号化ピースE（k_｛f-1｝）・・・E（k_0）Pと、電子署名列sig_0・・・、sig_{f-1}とを受信する。このとき、公開鍵証明書列に含まれるノードＩＤ「ID #0、・・・、ID #（f-1）」によって、暗号化ピースがどのノードによって暗号化されて送信されたかが各々特定されるため、暗号化ピースの配信経路が示されることになる。
【００５９】
＜配信開始ノード以外のノード：配信処理＞
次に、配信開始ノード以外のノード５１が行う配信処理の手順について図１６を用いて説明する。ノード５１は、ピースを要求するピース要求を他のノード５１から受信すると（ステップＳ２０：ＹＥＳ）、乱数を生成する（ステップＳ２１）。そしてノード５１は、ステップＳ２１で生成した乱数と、固有情報格納部５１０に記憶された秘密鍵とを用いて関数Fにより一時対称鍵を生成する（ステップＳ２２）。次いでノード５１は、ステップＳ２２で生成した一時対称鍵を用いて、あるピースPが暗号化された暗号化ピースであってデータ格納部５１７に記憶されている暗号化ピースを更に暗号化して、新たな暗号化ピースを出力する（ステップＳ２３）。そして、固有情報格納部５１０に記憶された非公開鍵を用いて、関数SIGNにより公開鍵証明書列と乱数列と暗号化ピースと電子署名列とを含む署名対象情報に対する電子署名を生成する（ステップＳ２４）。その後ノード５１は、ステップＳ２０で受信されたピース要求を送信した他のノード５１に対して、送信対象である暗号化ピースに対応付けられてデータ格納部５１７に記憶された公開鍵証明書に加え固有情報格納部５１０に記憶された公開鍵証明書を含む新たな公開鍵証明書列と、当該暗号化ピースに対応付けられてデータ格納部５１７に記憶された乱数列に加えステップＳ２１で生成した乱数を含む新たな乱数列と、ステップＳ２３で出力した新たな暗号化ピースと、当該暗号化ピースに対応付けられてデータ格納部５１７に記憶された電子署名列に加えステップＳ２４で生成した電子署名を含む電子署名列とを送信する（ステップＳ２５）。
【００６０】
＜復号処理＞
次に、ノード５１が鍵サーバ５３から復号鍵を取得しこれを用いて暗号化ピースを復号する復号処理の手順について図１７を用いて説明する。ノード５１は、データ格納部５１７に記憶された暗号化ピースに対応付けられている公開鍵証明書列及び乱数列を読み出し（ステップＳ３０）、公開鍵証明書に含まれるノードＩＤを元にノードＩＤ列を取得する（ステップＳ３１）。そして、当該暗号化ピースを復号するための復号鍵を要求すると共に、ステップＳ３１で取得したノードＩＤ列及びデータ格納部５１７から読み出した乱数列を含む鍵要求を鍵サーバ５３に送信する（ステップＳ３２）。次いで、ノード５１は、ステップＳ３２で送信された鍵要求に応じて鍵サーバ５３から送信された一時対称鍵を復号鍵として受信し（ステップＳ３３）、当該一時対称鍵を用いて暗号化ピースを復号する（ステップＳ３４）。
【００６１】
例えば、上述したノードＩＤ「ID #f」が割り当てられたノードは、鍵サーバ５３に対して、図１８に示されるように、ピースPについて、ノードＩＤ列「ID #0、・・・、ID #（f-1）」と、乱数列r_0、・・・、r_｛f-1｝とを送信する。そして、当該ノードは、鍵サーバ５３から、図１９に示されるように、ピースPについて、一時対称鍵k_0、・・・、k_｛f-1｝を受信し、これらを用いて暗号化ピースE（k_｛f-1｝）・・・E（k_0）Pを復号して、ピースPを得る。このようにして、各ノード５１は、各ピースについて行われている暗号化を解くための一時対称鍵を全て得ることにより、当該ピースについて行われている暗号化を解くことができ、当該暗号化ピースを完全に復号することが可能になる。このようにして、各ノード５１は、複数のピースのそれぞれが暗号化された各暗号化ピースについて鍵要求によって各一時対称鍵を鍵サーバ５３から受信し、各暗号化ピースを復号することにより、上述の配信データを得ることができる。
【００６２】
＜ピース検証要求処理＞
次に、ノード５１が鍵サーバ５３にピース検証要求を送信し、ピース検証結果を受信する手順について図２０を用いて説明する。ノード５１は、データ格納部５１７に記憶された暗号化ピースと、暗号化ピースに対応付けられている公開鍵証明書列と乱数列及び電子署名列を読み出し（ステップＳ４０）、暗号化ピースと公開鍵証明書列と乱数列及び電子署名列を含むピース検証要求を鍵サーバ５３に送信する（ステップＳ４１）。次いで、ノード５１は、ステップＳ４１で送信されたピース検証要求に応じて鍵サーバ５３から送信されたピース検証結果を受信し（ステップＳ４２）、検証結果が成功であった場合は処理を終了する（ステップＳ４３：ＹＥＳ）。一方、検証結果が失敗であった場合（ステップＳ４３：ＮＯ）は、当該暗号化ピースと、当該暗号化ピースに対応づけられている公開鍵証明書列と乱数列及び電子署名列を廃棄する（ステップＳ４４）。
【００６３】
例えば、上述したノードＩＤ「ID #f」が割り当てられたノードは、鍵サーバ５３に対して、図１５に示されるように、あるピースPについて、公開鍵証明書列pkc_0、・・・、pkc_｛f-1｝と、乱数列r_0、・・・、r_｛f-1｝と暗号化ピースE（k_｛f-1｝）、・・・、E（k_0）P及び電子署名列sig_0、・・・、sig_｛f-1｝を送信する。そして当該ノードは、鍵サーバ５３から、ピース検証結果（成功もしくは失敗）を受信する。
【００６４】
＜鍵サーバ：鍵送信処理＞
次に、鍵サーバ５３がノード５１からの鍵要求に応じて復号鍵を送信する鍵送信処理の手順について図２１を用いて説明する。鍵サーバ５３は、暗号化ピースを復号するための復号鍵を要求されると共に、ノードＩＤ列及び乱数列を含む鍵要求をノード５１から受信すると（ステップＳ５０：ＹＥＳ）、受信した鍵要求に含まれるノードＩＤ列に含まれる各ノードＩＤに対応付けられて秘密鍵格納部５３０に記憶されている秘密鍵をノードＩＤ毎に読み出す（ステップＳ５１）。そして鍵サーバ５３は、全てのノードＩＤに対する乱数と、ステップＳ５１で読み出した秘密鍵とを用いてノードＩＤ毎に関数Fにより一時対称鍵を復号鍵として生成する（ステップＳ５２）。次いで、鍵サーバ５３は、ステップＳ５２で復号鍵として生成した一時対称鍵を、ステップＳ５０で受信した鍵要求を送信したノード５１に対して送信する（ステップＳ５３）。
【００６５】
例えば、鍵サーバ５３は、上述したノードＩＤ「ID #f」が割り当てられたノードに対して、ピースPについて、図１８に示されるようなノードＩＤ列及び乱数列を含む鍵要求に応じて、図１９に示されるような一時対称鍵k_0、・・・、k_｛f-1｝を送信する。
【００６６】
＜鍵サーバ：ピース検証処理＞
次に、鍵サーバ５３がノード５１からのピース検証要求に応じてピースを検証し、検証結果を送信するピース検証処理の手順について図２２を用いて説明する。鍵サーバ５３は、ピースの検証を要求されると共に、公開鍵証明書列と乱数列と暗号化ピースと電子署名列とを含むピース検証要求をノード５１から受信すると（ステップＳ６００：ＹＥＳ）、受信したピース検証要求に含まれる公開鍵証明書列に含まれる各ノードＩＤに対応づけられて秘密鍵格納部５３０に記憶されている秘密鍵をノードＩＤ毎に読み出す（ステップＳ６０１）。そして鍵サーバ５３は、全てのノードＩＤに対する乱数と、ステップＳ６０１で読み出した秘密鍵とを用いてノードＩＤ毎に関数Fにより一時対称鍵k_0、・・・、k_｛f-1｝を復号鍵として生成する（ステップＳ６０２）。ここで、fをピース検証要求に含まれる暗号化ピースの暗号化回数すなわち暗号化ピースの転送回数とする。fは、例えば公開鍵証明書列、乱数列、および電子署名列などの各データ列に含まれるデータの個数として求めることができる。次いで鍵サーバ５３は、i=f-1として（ステップＳ６０３）、以下のステップＳ６０４〜Ｓ６０７をi=0となるまで繰り返す。まず鍵サーバ５３は、ピース検証要求に含まれる公開鍵証明書列pkc_0、・・・、pkc_iと乱数列r_0、・・・、r_iと暗号化ピースE（k_i）・・・E（k_0）Pと電子署名列sig_0、・・・、sig_｛i-1｝とに対して、電子署名sig_iが正当な署名であるかどうかを、公開鍵証明書pkc_iに含まれる公開鍵pk_iを用いて関数VERIFYにより検証する（ステップＳ６０４）。ステップＳ６０４の検証結果が検証成功となったとき（ステップＳ６０５：ＹＥＳ）は、暗号化ピースE（k_i）E（k_｛i-1｝）・・・E（k_0）Pを一時対称鍵k_iを用いて復号して、暗号化ピースE（k_｛i-1｝）・・・E（k_0）Pを得る（ステップＳ６０６）。次いで鍵サーバ５３は、i=i-1とし（ステップＳ６０７）、i=0となった場合（ステップＳ６０８：ＹＥＳ）は、公開鍵証明書pkc_0と乱数r_0と暗号化ピースE（k_0）Pとに対して、電子署名sig_0が正当な署名であるかどうかを、公開鍵証明書pkc_0に含まれる公開鍵pk_0を用いて関数VERIFYにより検証する（ステップＳ６０９）。ステップＳ６０９の検証結果が検証成功となったとき（ステップＳ６１０：ＹＥＳ）、鍵サーバ５３はステップＳ６００で受信したピース検証要求を送信したノード５１に対して、検証成功を送信する（ステップＳ６１２）。鍵サーバ５３は、ステップＳ６０４の検証結果が検証失敗となったとき（ステップＳ６０５：ＮＯ）及び、ステップＳ６０９の検証結果が検証失敗となったとき（ステップＳ６１０：ＮＯ）は、不正ノードリスト格納部５３８に記録された不正ノードリストに、pkc_｛i+1｝に含まれているノード５１のノードＩＤを追記し（ステップＳ６１１）、データ送信部５３４が「検証失敗」を当該ノード５１に対して送信する（ステップＳ６１３）。また、鍵サーバ５３は、ステップＳ６０７でi=0とならなかった場合（ステップＳ６０８：ＮＯ）は、ステップＳ６０４以降の処理をステップＳ６０８でi=0となるまで繰り返す。
【００６７】
次に、鍵サーバ５３が全てのノードの公開鍵証明書を公開鍵証明書格納部５３２に記憶されており、かつ図２３に示されるように、ピース検証要求にノードＩＤ列が含まれていた場合の処理を、図２４を用いて説明する。鍵サーバ５３は、ピースの検証を要求されると共に、ノードＩＤ列と乱数列と暗号化ピースと電子署名列とを含むピース検証要求をノード５１から受信すると（ステップＳ７００：ＹＥＳ）、受信したピース検証要求に含まれるノードＩＤ列に含まれる各ノードＩＤに対応づけられて秘密鍵格納部５３０に記憶されている秘密鍵をノードＩＤ毎に読み出し、受信したピース検証要求に含まれるノードＩＤ列に含まれる各ノードＩＤに対応づけられて公開鍵証明書格納部５３２に記憶されている公開鍵証明書をノードＩＤ毎に読み出す（ステップＳ７０１）。まず鍵サーバ５３は、全てのノードＩＤに対する乱数と、ステップＳ７０１で読み出した秘密鍵とを用いてノードＩＤ毎に関数Fにより一時対称鍵k_0、・・・、k_｛f-1｝を復号鍵として生成する（ステップＳ７０２）。ここで、fをピース検証要求に含まれる暗号化ピースの暗号化回数すなわち暗号化ピースの転送回数とする。次いで鍵サーバ５３は、i=f-1として（ステップＳ７０３）、以下のステップＳ７０４〜Ｓ７０７をi=0となるまで繰り返す。そして鍵サーバ５３は、ステップＳ７０１で読み出された公開鍵証明書列pkc_0、・・・、pkc_iとピース検証要求に含まれる乱数列r_0、・・・、r_iと暗号化ピースE（k_i）・・・E（k_0）P及び電子署名列sig_0、・・・、sig_｛i-1｝に対して、電子署名sig_iが正当な署名であるかどうかを、公開鍵証明書pkc_iに含まれる公開鍵pk_iを用いて関数VERIFYにより検証する（ステップＳ７０４）。ステップＳ７０４の検証結果が検証成功となったとき（ステップＳ７０５：ＹＥＳ）は、暗号化ピースE（k_i）E（k_｛i-1｝）・・・E（k_0）Pを一時対称鍵k_iを用いて復号して、暗号化ピースE（k_｛i-1｝）・・・E（k_0）Pを得る（ステップＳ７０６）。次いで鍵サーバ５３は、i=i-1とし（ステップＳ７０７）、i=0となった場合（ステップＳ７０８：ＹＥＳ）は、公開鍵証明書pkc_0と乱数r_0及び暗号化ピースE（k_0）Pに対して、電子署名sig_0が正当な署名であるかどうかを、公開鍵証明書pkc_0に含まれる公開鍵pk_0を用いて関数VERIFYにより検証する（ステップＳ７０９）。ステップＳ７０９の検証結果が検証成功となったとき（ステップＳ７１０：ＹＥＳ）、鍵サーバ５３はステップＳ７００で受信したピース検証要求を送信したノード５１に対して、検証成功を送信する（ステップＳ７１２）。鍵サーバ５３は、ステップＳ７０４の検証結果が検証失敗となったとき（ステップＳ７０５：ＮＯ）及び、ステップＳ７０９の検証結果が検証失敗となったとき（ステップＳ７１０：ＮＯ）は、不正ノードリスト格納部５３８に記録された不正ノードリストに、pkc_｛i+1｝に含まれているノード５１のノードＩＤを追記し（ステップＳ７１１）、データ送信部５３４が「検証失敗」を当該ノード５１に対して送信する（ステップＳ７１３）。また、鍵サーバ５３は、ステップＳ７０７でi=0とならなかった場合（ステップＳ７０８：ＮＯ）は、ステップＳ７０４以降の処理をステップＳ７０８でi=0となるまで繰り返す。
【００６８】
不正ノードリストは、鍵サーバ５３から各ノード５０，５１に定期的にあるいは不定期に配布されてもよい。また、各ノード５０，５１が、鍵サーバ５３に定期的にあるいは不定期に要求して不正ノードリストを入手しても良い。各ノード５０、５１は入手した不正ノードリストの情報を元に、暗号化ピースの送受信を一部制限してもよい。例えば、不正ノードリストを持つノード５１に他のノードからのピース要求を受信したときに、当該他のノードのノードＩＤが不正ノードリストに記載されていた場合に、ピース要求を拒否してもよい。また、不正ノードリストを持つノード５１が他のノードにピース要求をする際に、当該他のノードのノードＩＤが不正ノードリストに記載されていた場合には、当該他のノードに対してピース要求を行なわないことにしてもよい。
【００６９】
以上のような構成によれば、ある不正ノードが暗号化ピースを不正に改ざんした場合、鍵サーバは暗号化ピースを転送するごとに生成された電子署名を用いて当該暗号化ピースを検証することで当該不正ノードを特定することが可能となる。
【図面の簡単な説明】
【００７０】
【図１】第１の実施の形態にかかるデータ配信システムの構成を示す図である。
【図２】同実施の形態にかかる配信開始ノードの機能的構成を例示する図である。
【図３】同実施の形態にかかる配信開始ノード以外のノードの機能的構成を例示する図である。
【図４】同実施の形態にかかる配信開始ノードから配信開始ノード以外のノードに送信される情報を模式的に示す図である。
【図５】同実施の形態にかかるノードから他のノードに送信される情報を模式的に示す図である。
【図６】同実施の形態にかかるノードから他のノードに送信される情報を模式的に示す図である。
【図７】同実施の形態にかかるノードから鍵サーバに送信される情報を模式的に示す図である。
【図８】同実施の形態にかかる鍵サーバからノードに送信される情報を模式的に示す図である。
【図９】ハッシュ値を用いたピース検証方法の一例を示す図である。
【図１０】同実施の形態にかかるノードから鍵サーバに送信される情報を模式的に示す図である。
【図１１】同実施の形態にかかるノードから鍵サーバに送信される情報を模式的に示す図である。
【図１２】同実施の形態にかかる鍵サーバの機能的構成を例示する図である。
【図１３】同実施の形態にかかる配信開始ノードであるノードが行う配信処理の手順を示すフローチャートである。
【図１４】同実施の形態にかかるノードが配信開始ノード又は他のノードから暗号化ピースを受信する受信処理の手順を示すフローチャートである。
【図１５】同実施の形態にかかるノードに受信される情報を模式的に示す図である。
【図１６】同実施の形態にかかる配信開始ノード以外のノードが行う配信処理の手順を示すフローチャートである。
【図１７】同実施の形態にかかるノードが鍵サーバから復号鍵を取得しこれを用いて暗号化ピースを復号する復号処理の手順を示すフローチャートである。
【図１８】同実施の形態にかかるノードが送信する情報を模式的に示す図である。
【図１９】同実施の形態にかかるノードが受信する一時対称鍵を模式的に示す図である。
【図２０】同実施の形態にかかるノードが鍵サーバにピース検証要求を送信し、ピース検証結果を受信するピース検証要求処理の手順を示すフローチャートである。
【図２１】同実施の形態にかかる鍵サーバがノードからの鍵要求に応じて復号鍵を送信する鍵送信処理の手順を示すフローチャートである。
【図２２】同実施の形態にかかる鍵サーバがノードからのピース検証要求に応じてピースを検証し、検証結果を送信するピース検証処理の手順を示すフローチャートである。
【図２３】同実施の形態にかかるノードから鍵サーバに送信される情報を模式的に示す図である。
【図２４】同実施の形態にかかる鍵サーバがノードからのピース検証要求に応じてピースを検証し、検証結果を送信するピース検証処理の手順を示すフローチャートである。
【符号の説明】
【００７１】
５０，５１，５１Ａ，５１Ｂ  ノード
５３  鍵サーバ
５００  固有情報格納部
５０１  乱数生成部
５０２  一時対称鍵生成部
５０３  ピース暗号化部
５０４  ピース化部
５０５  データ送信部
５０６  送信要求受付部
５０７  電子署名生成部
５１０  固有情報格納部
５１１  乱数生成部
５１２  一時対称鍵生成部
５１３  ピース暗号化部
５１４  データ受信部
５１５  データ送信部
５１６  送信要求受付部
５１７  データ格納部
５１８  送信要求送信部
５１９  鍵要求送信部
５２０  ピース復号部
５２１  電子署名生成部
５２２  電子署名検証部
５２３  ピース検証要求送信部
５３０  秘密鍵格納部
５３１  データ受信部
５３２  公開鍵証明書格納部
５３３  一時対称鍵生成部
５３４  データ送信部
５３５  電子署名検証部
５３６  ピース検証要求受付部
５３７  ピース復号部
５３８  不正ノードリスト格納部
ＮＴ  Ｐ２Ｐネットワーク
【図１】
2010141619.tif 000003
【図２】
2010141619.tif 000004
【図３】
2010141619.tif 000005
【図４】
2010141619.tif 000006
【図５】
2010141619.tif 000007
【図６】
2010141619.tif 000008
【図７】
2010141619.tif 000009
【図８】
2010141619.tif 000010
【図９】
2010141619.tif 000011
【図１０】
2010141619.tif 000012
【図１１】
2010141619.tif 000013
【図１２】
2010141619.tif 000014
【図１３】
2010141619.tif 000015
【図１４】
2010141619.tif 000016
【図１５】
2010141619.tif 000017
【図１６】
2010141619.tif 000018
【図１７】
2010141619.tif 000019
【図１８】
2010141619.tif 000020
【図１９】
2010141619.tif 000021
【図２０】
2010141619.tif 000022
【図２１】
2010141619.tif 000023
【図２２】
2010141619.tif 000024
【図２３】
2010141619.tif 000025
【図２４】
2010141619.tif 000026