(57)【要約】【課題】コンテンツ配信システムにおいて配信される各暗号化ピースの組み合わせを通信装置毎に一意にすることが可能になると共に、システム構築上の自由度を向上可能な通信技術を提供する。【解決手段】他のノード５０，５１に割り当てられた第１暗号鍵によって暗号化されたピースである第１暗号化ピースと、他のノード５０，５１を識別する第１装置識別情報と、を受信するピース受信部と、割り当てられた第２暗号鍵を記憶する固有情報格納部と、第２暗号鍵を用いて第１暗号化ピースを更に暗号化した第２暗号化ピースを生成するピース暗号化部と、第２暗号化ピースと、第１装置識別情報と、自装置を識別する第２装置識別情報と、を送信するデータ送信部と、を備えた。【選択図】        図１
2010141620.tif 000002
【特許請求の範囲】
【請求項１】
データの一部であるピースを暗号化して送信する通信装置であって、
他の通信装置に割り当てられた第１暗号鍵によって暗号化されたピースである第１暗号化ピースと、前記他の通信装置を識別する第１装置識別情報と、を受信する受信手段と、
前記通信装置に割り当てられた第２暗号鍵を記憶する記憶手段と、
前記第２暗号鍵を用いて前記第１暗号化ピースを更に暗号化した第２暗号化ピースを生成する暗号化手段と、
前記第２暗号化ピースと、前記第１装置識別情報と、前記通信装置を識別する第２装置識別情報と、を送信する送信手段と、
を備えることを特徴とする通信装置。
【請求項２】
前記第１暗号化ピースは、複数の暗号鍵で暗号化されたピースを、暗号化に用いた複数の前記暗号鍵それぞれに対応する複数の秘密情報に基づいて算出される予め定められた個数の復号鍵で復号可能な暗号方式で定められた前記第１暗号鍵によって暗号化されており、
前記記憶手段は、前記暗号方式で定められた前記第２暗号鍵を記憶すること、
を特徴とする請求項１に記載の通信装置。
【請求項３】
前記受信手段は、前記第１暗号化ピースと、前記第１装置識別情報と、前記第１暗号化ピースを暗号化する際に当該他の通信装置によって算出された第１算出情報とを受信し、
その生成毎に異なり得る一時情報を生成し、前記一時情報に応じた値を有する第２算出情報を算出する算出手段をさらに備え、
前記暗号化手段は、前記一時情報と前記第２暗号鍵とを用いて前記第１暗号化ピースを更に暗号化した第２暗号化ピースを生成し、
前記送信手段は、前記第２暗号化ピースと、前記第１装置識別情報と、前記第２装置識別情報と、前記第１算出情報と、前記第２算出情報とを送信すること、
を特徴とする請求項１に記載の通信装置。
【請求項４】
前記受信手段は、ｉ個（ｉは１以上の自然数）の前記他の通信装置に割り当てられた前記第１暗号鍵ｙｊ（０≦ｊ≦ｉ−１）で暗号化された前記第１暗号化ピースＣ2,i-1と、前記第１装置識別情報と、前記第１算出情報Ｃ1,i-1と、を受信し、
前記記憶手段は、前記暗号方式で定められた前記第２暗号鍵ｙiを記憶し、
前記算出手段は、前記一時情報ｒiを生成し、前記一時情報ｒiに応じた値を有する前記第２算出情報Ｃ1,iを以下の（１）式により算出し、
前記暗号化手段は、前記一時情報ｒiと前記第２暗号鍵ｙiとを用いて前記第１暗号化ピースＣ2,i-1を更に暗号化した前記第２暗号化ピースＣ2,iを以下の（２）式により生成すること、
を特徴とする請求項３に記載の通信装置。
【数１】
2010141620.tif 000048
（ただし、ｇは、Ｚｐ＊＝｛１，…，ｐ−１｝上の１のｑ乗根、ｐ，ｑは素数、ｑはｐ−１を割り切る）
【請求項５】
前記受信手段は、ｉ個（ｉは１以上の自然数）の前記他の通信装置に割り当てられた前記第１暗号鍵ｙｊ（０≦ｊ≦ｉ−１）で暗号化された前記第１暗号化ピースＣ2,i-1と、前記第１装置識別情報と、前記第１算出情報Ｃ1,i-1と、を受信し、
前記記憶手段は、前記暗号方式で定められた前記第２暗号鍵ｙiを記憶し、
前記算出手段は、前記一時情報ｒiを生成し、前記一時情報ｒiに応じた値を有する前記第２算出情報Ｃ1,iを以下の（３）式により算出し、
前記暗号化手段は、前記一時情報ｒiと前記第２暗号鍵ｙiとを用いて前記第１暗号化ピースＣ2,i-1を更に暗号化した前記第２暗号化ピースＣ2,iを以下の（４）式により生成すること、
を特徴とする請求項３に記載の通信装置。
【数２】
2010141620.tif 000049
（ただし、Ｇは楕円曲線上のベースポイント、[Ａ]xは楕円曲線上の点Ａのｘ座標を表す）
【請求項６】
前記受信手段は、ｉ個（ｉは１以上の自然数）の前記他の通信装置に割り当てられた前記第１暗号鍵ｙｊ（０≦ｊ≦ｉ−１）で暗号化された前記第１暗号化ピースＣ2,i-1と、前記第１装置識別情報と、前記第１算出情報Ｃ1,i-1と、を受信し、
前記記憶手段は、前記暗号方式で定められた前記第２暗号鍵ｙiを記憶し、
前記算出手段は、前記一時情報ｒiを生成し、前記一時情報ｒiに応じた値を有する前記第２算出情報Ｃ1,iを以下の（１）式により算出し、
前記暗号化手段は、前記一時情報ｒiと前記第２暗号鍵ｙiとを用いて前記第１暗号化ピースＣ2,i-1を更に暗号化した前記第２暗号化ピースＣ2,iを以下の（２）式により生成すること、
を特徴とする請求項３に記載の通信装置。
【数３】
2010141620.tif 000050
（ただし、Plus（A, B）は、楕円曲線上の点Ａと点Ｂとの、ｍｏｄ  ｐ（ｐは素数）上の長さ２のベクトルの加算、または、楕円曲線上の点Ａと点Ｂとの点加算を表す）
【請求項７】
前記受信手段は、ｉ個（ｉは１以上の自然数）の前記他の通信装置に割り当てられた前記第１暗号鍵（ｇ1，ｇ2，ｃj，ｄj，ｈj）（０≦ｊ≦ｉ−１）で暗号化された前記第１暗号化ピースｅi-1と、前記第１装置識別情報と、前記第１算出情報（ｕ1,i-1，ｕ2,i-1，vi-1）と、を受信し、
前記記憶手段は、前記暗号方式で定められた前記第２暗号鍵（ｇ1，ｇ2，ｃi，ｄi，ｈi）を記憶し、
前記暗号化手段は、前記一時情報ｒiと前記第２暗号鍵（ｇ1，ｇ2，ｃi，ｄi，ｈi）とを用いて前記第１暗号化ピースｅi-1を更に暗号化した前記第２暗号化ピースｅiを以下の（７）式により生成し、
前記算出手段は、前記一時情報ｒiを生成し、前記一時情報ｒiに応じた値を有する前記第２算出情報（ｕ1,i，ｕ2,i，vi）を以下の（８）式〜（１１）式により算出すること、
を特徴とする請求項３に記載の通信装置。
【数４】
2010141620.tif 000051
（ただし、Ｈは予め定められたハッシュ関数を表す）
【請求項８】
前記受信手段は、ｉ個（ｉは１以上の自然数）の前記他の通信装置に割り当てられた前記第１暗号鍵ｅjおよびＮ（０≦ｊ≦ｉ−１）で暗号化された前記第１暗号化ピースＣi-1と、前記第１装置識別情報と、を受信し、
前記記憶手段は、前記暗号方式で定められた前記第２暗号鍵ｅiおよびＮを記憶し、
前記暗号化手段は、前記第２暗号鍵ｅiおよびＮを用いて前記第１暗号化ピースＣi-1を更に暗号化した前記第２暗号化ピースＣiを以下の（１２）式により生成すること、
を特徴とする請求項１に記載の通信装置。
【数５】
2010141620.tif 000052
（ただし、Ｎ＝ｐｑ（ｐ、ｑは素数）
【請求項９】
前記受信手段は、前記第１暗号鍵によって一部が暗号化された前記第１暗号化ピースと、前記第１装置識別情報と、を受信し、
前記暗号化手段は、前記第２暗号鍵を用いて、前記第１暗号化ピースのうち前記第１暗号鍵によって暗号化された部分を更に暗号化した前記第２暗号化ピースを生成すること、
を特徴とする請求項１に記載の通信装置。
【請求項１０】
前記受信手段は、前記第１暗号鍵によって暗号化された部分以外の部分が、前記暗号方式と異なる他の暗号方式によって暗号化された前記第１暗号化ピースと、前記第１装置識別情報と、を受信し、
前記暗号化手段は、前記第２暗号鍵を用いて、前記第１暗号化ピースのうち前記第１暗号鍵によって暗号化された部分を更に暗号化し、前記第１暗号化ピースのうち前記第１暗号鍵によって暗号化された部分以外の部分を前記他の暗号方式により更に暗号化した前記第２暗号化ピースを生成すること、
を特徴とする請求項９に記載の通信装置。
【請求項１１】
前記送信手段は、さらに、前記第１暗号化ピースを復号するための復号鍵を要求する、前記第１装置識別情報を含む鍵要求をサーバ装置へ送信し、
前記受信手段は、さらに、前記第１暗号化ピースを復号するための復号鍵を前記サーバ装置から受信し、
受信された前記復号鍵を用いて前記第１暗号化ピースを復号する復号手段をさらに備えたこと、
を特徴とする請求項１に記載の通信装置。
【請求項１２】
暗号化されたピースである暗号化ピースを復号するための復号鍵を要求する鍵要求であって、前記暗号化ピースの配信を仲介した前記通信装置の前記装置識別情報を含む前記鍵要求を前記通信装置から受信する受信手段と、
前記鍵要求に含まれる各前記装置識別情報を用いて前記復号鍵を生成する鍵生成手段と、
生成された前記復号鍵を、前記鍵要求を送信した前記通信装置に送信する送信手段と、
を備えることを特徴とするサーバ装置。
【請求項１３】
データの一部であるピースを暗号化して送信する複数の通信装置のそれぞれに割り当てられた秘密情報と、前記通信装置それぞれに割り当てられた装置識別情報とを各々対応付けて記憶する記憶手段をさらに備え、
前記鍵生成手段は、前記鍵要求に含まれる各前記装置識別情報に対応付けられて記憶されている前記秘密情報を用いて前記復号鍵を生成すること、
を特徴とする請求項１２に記載のサーバ装置。
【請求項１４】
前記暗号化ピースは、複数の暗号鍵で暗号化されたピースを、暗号化に用いた複数の暗号鍵それぞれに対応する複数の前記秘密情報に基づいて算出される予め定められた個数の前記復号鍵で復号可能な暗号方式で定められた暗号鍵によって暗号化されており、
前記鍵生成手段は、前記鍵要求に含まれる前記装置識別情報それぞれに対応付けられて記憶されている前記秘密情報を用いて前記個数の前記復号鍵を生成すること、
を特徴とする請求項１２又は１３に記載のサーバ装置。
【請求項１５】
前記受信手段は、その生成毎に異なり得る一時情報と前記通信装置に割り当てられた暗号鍵とに基づいて算出される算出情報をさらに含む前記鍵要求を前記通信装置から受信し、
前記鍵生成手段は、前記鍵要求に含まれる各前記装置識別情報に対応付けられて記憶されている前記秘密情報を用いて生成した前記復号鍵を、前記算出情報を用いて暗号化し、
前記送信手段は、暗号化した前記復号鍵を前記鍵要求を送信した前記通信装置に送信すること、
を特徴とする請求項１２又は１３に記載のサーバ装置。
【請求項１６】
データの一部であるピースを暗号化して送信する通信装置で実行される通信方法であって、
受信手段が、他の通信装置に割り当てられた第１暗号鍵によって暗号化されたピースである第１暗号化ピースと、前記他の通信装置を識別する第１装置識別情報と、を受信する受信ステップと、
暗号化手段が、記憶手段に記憶された、前記通信装置に割り当てられた第２暗号鍵を用いて前記第１暗号化ピースを更に暗号化した第２暗号化ピースを生成する暗号化ステップと、
送信手段が、前記第２暗号化ピースと、前記第１装置識別情報と、前記通信装置を識別する第２装置識別情報と、を送信する送信ステップと、
を備えることを特徴とする通信方法。
【請求項１７】
データの一部であるピースを暗号化して送信する通信装置を、
他の通信装置に割り当てられた第１暗号鍵によって暗号化されたピースである第１暗号化ピースと、前記他の通信装置を識別する第１装置識別情報と、を受信する受信手段と、
前記通信装置に割り当てられた第２暗号鍵を記憶する記憶手段と、
前記第２暗号鍵を用いて前記第１暗号化ピースを更に暗号化した第２暗号化ピースを生成する暗号化手段と、
前記第２暗号化ピースと、前記第１装置識別情報と、前記通信装置を識別する第２装置識別情報と、を送信する送信手段と、
として機能させるための通信プログラム。
【請求項１８】
コンピュータを、
暗号化されたピースである暗号化ピースを復号するための復号鍵を要求する鍵要求であって、前記暗号化ピースの配信を仲介した前記通信装置の前記装置識別情報を含む前記鍵要求を前記通信装置から受信する受信手段と、
前記鍵要求に含まれる各前記装置識別情報を用いて前記復号鍵を生成する鍵生成手段と、
生成された前記復号鍵を、前記鍵要求を送信した前記通信装置に送信する送信手段と、
として機能させるための通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、通信装置、サーバ装置、通信方法、および通信プログラムに関する。
【背景技術】
【０００２】
例えば、Ｐ２Ｐ（peer to peer）を利用してデータを配信する配信方式（Ｐ２Ｐ配信という）は、巨大なストレージと大きな通信帯域とを有するデータ配信サーバを必要とせず、コストメリットの大きい配信方式である。また、データの配信を受けるノードにおいては、複数のノードからのデータの供給が期待されるため、ダウンロードやアップロードにおける帯域幅を活かした高速なデータ取得が期待される。このようにＰ２Ｐデータ配信には大きなメリットがあるが、一方で、著作権保護などデータセキュリティの観点から安全性に不安があった。Ｐ２Ｐ配信に限らず、著作権保護などのデータセキュリティを考える上で一般的な前提として次のことを仮定する。全ての端末機器又はノードがハッキングされることはないということである。この前提を否定した場合、端末機器は秘密とすべきデータを保持したり、秘密とすべき処理を行ったりすることができなくなり、殆どのセキュリティ技術やセキュリティ確保の為の工夫が成立しない。
【０００３】
さて、Ｐ２Ｐ配信において、暗号化されたデータを配信し、データの配信を受けるノードが当該データ（配信データという）を復号するための復号鍵を取得するコンテンツ配信システムがある。このようなシステムのＰ２Ｐ配信においてデータセキュリティ上の大きな問題点は、配信データと当該配信データを復号するための復号鍵との組み合わせが単一であったり数が少なかったりすることである。この場合、あるノードがハッキングされ、復号鍵が暴露されたとする。この場合、この復号鍵は殆どの配信データを復号するために使用できることになる。この問題を解決する一つの方法は、配信データをノード毎に個別化することである。
【０００４】
Ｐ２Ｐ配信において配信データをノード毎に個別化する技術としては、例えば、特許文献１に示されるMarkingの方式が知られている。この方式では、配信データをピースに分割した上で、鍵の行列で暗号化を施して暗号化ピースを生成する。その結果として、行列状に暗号化された暗号化ピースからなるピース群が生成される。そしてこのようなピース群はＰ２Ｐネットワークを介して配信される。当該Ｐ２Ｐネットワークに接続される１つのノードは、各ピースについて行列状に暗号化された複数の暗号化ピースの中から１つの暗号化ピースを取得することになる。結果として、配信データを構成する各ピースが各々暗号化された暗号化ピースの組み合わせは、ノード毎に統計的に一意になることが期待される。
【０００５】
【特許文献１】USP 7165050
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上述の特許文献１の技術においては、各暗号化ピースの組み合わせがノード毎に一意であることはあくまで統計的に期待されるだけである。各暗号化ピースの組み合わせをノード毎に一意にすることを実現するには、例えば、以下の２つの方法が考えられる。１つは、暗号化ピースの配信方法に工夫を施すという方法である。また、１つは、各暗号化ピースを復号するための復号鍵を保持する鍵サーバが復号鍵の配信を制限するという方法である。例えば、配信されたピース群を復号するために、ノードが各暗号化ピースの組み合わせを鍵サーバに申告して復号鍵を取得するシステムがある。このシステムにおいて、復号鍵の再配信によるリプレイアタックを阻止するためには、既に取得された復号鍵と重複が多い暗号化ピースの組み合わせを、鍵サーバがリジェクトするという方法がある。しかしいずれの方法であっても、暗号化ピースの配信効率を時として著しく低下させ、Ｐ２Ｐネットワークの利点を十分活かすことができなくなる恐れがある。また、前者の方法では、データの保護とデータの配信方法との独立性が損なわれ、そのことがシステム構築上の大きな制約となる恐れがある。また、各暗号化ピースの組み合わせを鍵サーバに申告するかしないかに関わらず、ノードが鍵サーバから復号鍵を取得するシステムにおいては、鍵サーバから送信されるデータ量は小さい方が効率的であり、望ましい。
【０００７】
本発明は、上記に鑑みてなされたものであって、コンテンツ配信システムにおいて配信される各暗号化ピースの組み合わせを通信装置毎に一意にすることが可能になると共に、システム構築上の自由度を向上可能な通信装置、サーバ装置、通信方法、および通信プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明の一実施形態は、データの一部であるピースを暗号化して送信する通信装置であって、他の通信装置に割り当てられた第１暗号鍵によって暗号化されたピースである第１暗号化ピースと、前記他の通信装置を識別する第１装置識別情報と、を受信する受信手段と、前記通信装置に割り当てられた第２暗号鍵を記憶する記憶手段と、前記第２暗号鍵を用いて前記第１暗号化ピースを更に暗号化した第２暗号化ピースを生成する暗号化手段と、前記第２暗号化ピースと、前記第１装置識別情報と、前記通信装置を識別する第２装置識別情報と、を送信する送信手段と、を備えることを特徴とする。
【０００９】
また、本発明の一実施形態は、上記装置で実行することができる方法およびプログラムである。
【００１０】
また、本発明の一実施形態は、暗号化されたピースである暗号化ピースを復号するための復号鍵を要求する鍵要求であって、前記暗号化ピースの配信を仲介した前記通信装置の前記装置識別情報を含む前記鍵要求を前記通信装置から受信する受信手段と、前記鍵要求に含まれる各前記装置識別情報を用いて前記復号鍵を生成する鍵生成手段と、生成された前記復号鍵を、前記鍵要求を送信した前記通信装置に送信する送信手段と、を備えることを特徴とする。
【００１１】
また、本発明の一実施形態は、上記装置で実行することができるプログラムである。
【発明の効果】
【００１２】
本発明によれば、コンテンツ配信システムにおいて配信される各暗号化ピースの組み合わせを通信装置毎に一意にすることが可能になると共に、システム構築上の自由度を向上可能な通信装置、サーバ装置、通信方法、および通信プログラムを提供することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下に添付図面を参照して、この発明にかかる通信装置、サーバ装置、通信方法、および通信プログラムの最良な実施の形態を詳細に説明する。
【００１４】
[第１の実施の形態]
（１）構成
＜コンテンツ配信システムの構成＞
図１は、本実施の形態にかかるデータ配信システムの構成を示す図である。本実施の形態にかかるデータ配信システムにおいては、複数のノード５０，５１Ａ〜５１ＢがＰ２ＰネットワークＮＴを介して接続されている。図示しないがこの他のノードもＰ２ＰネットワークＮＴを介して接続され得る。また、各ノード５０，５１Ａ〜５１Ｂは鍵サーバ５３と接続されている。各ノード５０，５１Ａ〜５１Ｂは、各ノードに一意に割り当てられた装置識別情報であるノードＩＤと、各ノードに一意に割り当てられた割当情報として公開鍵とを保持している。各ノード５０，５１Ａ〜５１Ｂに割り当てられたノードＩＤを各々ID#0、ID#1、ID#2とし、公開鍵を各々ｙ0、ｙ1、ｙ2とする。尚、各ノード５０，５１Ａ〜５１Ｂのうちノード５０は、データの配信の基点となる配信開始ノードであり、配信対象のデータ（配信データという）を保持している。配信データは、平文である場合もあるし、既に暗号化された暗号文である場合もある。例えば、当該配信データは、暗号化として何らかのＤＲＭ （Digital Right Management） Systemによって保護されたビデオデータであっても良い。鍵サーバ５３は、秘密情報として、各ノード５０，５１Ａ〜５１Ｂに各々割り当てられた公開鍵にそれぞれ対応する秘密鍵ｘ0、ｘ1、ｘ2を保持している。尚、以降、ノード５１Ａ〜５１Ｂを各々区別する必要がない場合、単にノード５１と記載する。
【００１５】
ここで、各ノード５０，５１と、鍵サーバ５３との各装置のハードウェア構成について説明する。各装置は各々、装置全体を制御するＣＰＵ（Central Processing Unit）等の制御装置と、各種データや各種プログラムを記憶するＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）等の記憶装置と、各種データや各種プログラムを記憶するＨＤＤ（Hard Disk Drive）やＣＤ（Compact Disk）ドライブ装置等の外部記憶装置と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。また、各装置には各々、情報を表示する表示装置と、ユーザの指示入力を受け付けるキーボードやマウス等の入力装置と、外部装置の通信を制御する通信Ｉ／Ｆ（interface）とが有線又は無線により接続される。
【００１６】
なお、装置識別情報とは、データ配信システムにおける各ノードに割り当てられた情報であって、各ノードを識別できればどのような情報であっても良く、例えば、ノードＩＤ（例えば、当該装置のＭＡＣ（Media Access Control）アドレス、ＩＰアドレス、メールアドレス）、ノードに割り当てられる公開鍵、公開鍵証明書、有料データ配信などの配信サービスにおける加入者ＩＤである。
【００１７】
また、秘密情報とは、鍵サーバ５３が秘密裏に記憶する情報であって、各ノードにより暗号化された暗号化ピースを復号するため情報であり、例えば、公開鍵ｙiに対応する秘密鍵ｘi、装置識別情報から秘密鍵ｘiを導出するアルゴリズム及び当該アルゴリズムにおけるパラメーター（例えば、入力の一部など）である。秘密情報は、鍵サーバ５３のみでなく（例えばサービス事業者など）信頼できる第三者が保持していても良い。
【００１８】
＜配信開始ノードの構成＞
次に、上述したハードウェア構成において、配信開始ノードであるノード５０のＣＰＵが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。図２は、ノード５０の機能的構成を例示する図である。ノード５０は、固有情報格納部５００と、乱数生成部５０１と、ピース暗号化部５０３と、ピース化部５０４と、データ送信部５０５と、送信要求受付部５０６とを有する。尚、固有情報格納部５００は、例えばノード５０のＨＤＤなどの外部記憶装置に記憶領域として確保されるものである。乱数生成部５０１と、ピース化部５０４と、ピース暗号化部５０３と、データ送信部５０５と、送信要求受付部５０６との実体は、ノード５０のＣＰＵのプログラム実行時にＲＡＭなどの記憶装置上に生成されるものである。尚、ノード５０の外部記憶装置には、配信データが予め記憶されている。
【００１９】
固有情報格納部５００は、当該ノード５０に割り当てられたノードＩＤ及び公開鍵を記憶する。ピース化部５０４は、配信データを複数のピースに分割する。分割する際のデータサイズは特に限定されないが、予め定められているものとする。送信要求受付部５０６は、ピース化部５０４が分割したピースを要求するピース要求を他のノード５１から受信する。乱数生成部５０１は、送信要求受付部５０６がピース要求を受信した場合、その発生毎に異なり得る一時情報である乱数を生成する。一時情報とは、ノードで生成される度に異なり得る値となれば良く、乱数の他、例えば、タイムスタンプ、通信のシーケンス番号、ノードに固有のカウンタの値、Time Variant Parameterである。Time Variant Parameterについては、例えば文献ISO9798-1に記載されている。
【００２０】
ピース暗号化部５０３は、乱数生成部５０１が生成した乱数と固有情報格納部５００に記憶されている公開鍵とを用いてピースを暗号化して、暗号化ピースを含む暗号化データ（詳細は後述）を出力する。データ送信部５０５は、ピース要求を送信した他のノード５１に対して、固有情報格納部５００に記憶されているノードＩＤと、ピース暗号化部５０３が出力した暗号化データとを送信する。
【００２１】
＜配信開始ノード以外のノードの構成＞
次に、配信開始ノード以外であるノード５１のＣＰＵが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。図３は、ノード５１の機能的構成を例示する図である。ノード５１は、固有情報格納部５１０と、乱数生成部５１１と、ピース暗号化部５１３と、データ受信部５１４と、データ送信部５１５と、送信要求受付部５１６と、データ格納部５１７と、送信要求送信部５１８と、鍵要求送信部５１９と、ピース復号部５２０とを有する。尚、固有情報格納部５１０とデータ格納部５１７とは、例えばノード５１のＨＤＤなどの外部記憶装置に記憶領域として確保されるものである。乱数生成部５１１と、ピース暗号化部５１３と、データ受信部５１４と、データ送信部５１５と、送信要求受付部５１６と、送信要求送信部５１８と、鍵要求送信部５１９と、ピース復号部５２０との実体は、ノード５１のＣＰＵのプログラム実行時にＲＡＭなどの記憶装置上に生成されるものである。
【００２２】
固有情報格納部５１０は、当該ノード５１に割り当てられたノードＩＤ及び公開鍵を記憶する。送信要求受付部５１６の構成は上述のノード５０の有する送信要求受付部５０６の構成と同様である。送信要求送信部５１８は、ピースを要求するピース要求をノード５０又は他のノード５１に対して送信する。データ受信部５１４は、送信要求送信部５１８がピース要求を送信した相手であるノード５０又は他のノード５１から、ピースが暗号化された暗号化ピースを含む暗号化データと、当該暗号化ピースの送信を仲介した少なくとも１つの他のノード５０,５１に割り当てられた各ノードＩＤを含むノードＩＤ列とを受信する。データ格納部５１７は、データ受信部５１４が受信したノードＩＤ列と暗号化データとを対応付けて記憶する。暗号化データとは、暗号化ピースと算出情報列とを含むデータを指す。なお、算出情報とは、乱数（一時情報）に応じて変更される情報であって、例えば、後述するＣ1,iが算出情報に相当する。
【００２３】
乱数生成部５１１は、送信対象の暗号化ピースを暗号化するとき、又は予め乱数を生成する。ピース暗号化部５１３は、乱数生成部５１１が生成した乱数と固有情報格納部５１０に記憶されている公開鍵とを用いて、データ格納部５１７に記憶されている１つの暗号化ピースを更に暗号化して、新たな暗号化ピースを生成し、新たな暗号化ピースを含む暗号化データを出力する。
【００２４】
データ送信部５１５は、送信要求受付部５１６が受信したピース要求を送信した他のノード５１に対して、送信対象の暗号化ピースに対応付けられてデータ格納部５１７に記憶されたノードＩＤ列に加え固有情報格納部５１０に記憶されたノードＩＤを含む新たなノードＩＤ列と、（ピース暗号化部５１３において送信対象の暗号化ピースを暗号化し）ピース暗号化部５１３が出力した新たな暗号化ピースを含む暗号化データとを送信する。尚、データ格納部５１７に暗号化ピースが記憶されていない場合には、送信要求受付部５１６がピース要求を受信したとしても、ピース暗号化部５１３は暗号化ピースを含む暗号化データを出力せず、データ送信部５１５は暗号化ピースを含む暗号化データを送信しない。
【００２５】
ここで、ノード５０，５１から送信されるノードＩＤ列と、暗号化ピースを含む暗号化データとについて具体的に説明する。尚、ノード５０から１つの暗号化ピースに対してこれと共に送信されるノードＩＤは１つであるが、ここでは説明の便宜上、これをノード列と記載する場合がある。暗号化ピースの配信経路としてここではノード５０からノード５１Ａ、更にノード５１Ａからノード５１Ｂに暗号化ピースを送信し、ノード５１Ｂから鍵サーバ５３に鍵要求を送信する場合について説明する。例えば、あるピースＰについてノード５１Ａからのピース要求に応じて、ノード５０が、乱数ｒ0と公開鍵ｙ0とを用いてピースＰを暗号化して暗号化ピースを含む暗号化データＣ1,0、Ｃ2,0、Ｙ0を出力したとする。なお、Ｃ1,i、Ｃ2,i、Ｙiとは、配信経路上でｉ番目に暗号化データの配信を仲介したノード５１で計算される暗号化データを意味する。そして、ｉ＝０のときの暗号化データＣ1,0、Ｃ2,0、Ｙ0は、配信開始ノードであるノード５０で計算される暗号化データを意味する。
【００２６】
ここで、図４に示されるように、ピースＰの一部（又は全部）をｍと表記し、ｍ以外の残りの部分をＲと表記する。ノード５０が、当該暗号化データをノードＩＤ「ID#0」と共にノード５１Ａに送信したとする。図５は、ノード５０からノード５１Ａに送信される情報を模式的に示す図である。ここで、暗号化データＣ1,0、Ｃ2,0、Ｙ0の計算方法について説明する。始めにパラメータを定義する。ｐ，ｑを素数とし、ｑはｐ−１を割り切るとする。Ｚｑ＝｛０，１，…，ｑ−１｝とする。Ｚｐ＊＝｛１，…，ｐ−１｝とする。ｇを、Ｚｐ＊上の１のｑ乗根とする。Ｇｑを、Ｚｐ＊の部分群であり、かつ、位数がｑである乗法群とする。各ノードは、ｐ，ｑ，ｇの値を知らされている。以下、特に断りの無い限り、計算はＺｐ＊上で行われるとする。ノードＩＤが「ID#i」であるノードに割り当てられる公開鍵ｙiは以下の（１）式で表される。
【数１】
2010141620.tif 000003
【００２７】
ここで、ｘiは公開鍵ｙiに対応する秘密鍵であるが、鍵サーバのみが各ｘiを保持し、各ノードは公開鍵のみを保持する。ノード５０は、乱数ｒ0と公開鍵ｙ0を用いて、以下の（２）式〜（５）式により暗号化データＣ1,0、Ｃ2,0、Ｙ0を計算する。
【数２】
2010141620.tif 000004
【００２８】
Ｃ1,0は乱数ｒ0によってその値が変わる情報である。すなわち、Ｃ1,0は乱数ｒ0に応じた値を有する。ここで、Ｈはハッシュ関数を表す。関数ＫＸＯＲ（Ｋ，Ｒ）の定義は以下である。ＫＸＯＲの入力は鍵ＫとデータＲであり、ＲはＲ=Ｒ1||Ｒ2||…||Ｒnと表せるとする。||はデータ連結を表す。１≦ｉ≦ｎについて、以下の（６）式によりＲi’を計算し、出力をＲ1’||Ｒ2’||…||Ｒn’とする。尚、例えばｍ＝Ｐとする場合など、Ｒに相当するデータが存在しない場合やＲにＫＸＯＲ処理を施さない場合は、上記Ｙ0、Ｋ0の計算は行わず、暗号化データはＣ1,0、Ｃ2,0となる。
【数３】
2010141620.tif 000005
【００２９】
（３）式のＣ2の計算において、ｍをＧｑの元に写像することが必要となる。そのような写像Ｆの定義は以下の（７）式である。ｐ＝２ｑ＋１とする。
Ｆ：Ｚｑ→ＱＲｐ：Ｆ（ａ）＝ａ2  ｍｏｄ  ｐ  ・・・（７）
【００３０】
ここで、ＱＲｐ＝｛１2  ｍｏｄ  ｐ,  ２2  ｍｏｄ  ｐ,・・・,  ｑ2ｍｏｄ  ｐ｝である。ｍをＧｑ（この例ではＱＲｐ）の元に写像するためにはＦ（ｍ）を計算し、上式のｍをＦ（ｍ）に置き換えてＣ2を計算すれば良い。また、Ｆの逆写像Ｆ−１の定義は以下で（８）式である。
Ｆ-1：ＱＲｐ→Ｚｑ：Ｆ-1（ｂ）＝ｍｉｎ（ｂ（p+1）/4, −ｂ（p+1）/4）  ・・・（８）
【００３１】
ここで、ｍｉｎ（ｘ，ｙ）はｘとｙの内でより小さい方を表す。例えば、ｘ＜ｙの場合はｍｉｎ（ｘ，ｙ）＝ｘである（ｘ＝ｙの場合はｍｉｎ（ｘ，ｙ）＝ｘとする）。Ｆ（ｍ）からｍを求める場合には、Ｆ-1（Ｆ（ｍ））を計算すれば良い。以下、上述の写像、逆写像を計算する処理の記載を省略する。尚、上述したＫＸＯＲ処理を行わず、Ｒのままにしておいても良い。
【００３２】
ノード５１Ａは、これらのノードＩＤ「ID#0」と、暗号化データＣ1,0、Ｃ2,0、Ｙ0とを対応付けてデータ格納部５１７に記憶することになる。
【００３３】
そして、当該ノード５１Ａが、ノード５１Ｂからのピース要求に応じてピースＰに対する暗号化ピースを含む暗号化データを送信する場合、乱数ｒ1を生成し、これと公開鍵ｙ1とを用いて暗号化ピースＣ2、Ｙ0を以下の（９）式〜（１２）式により更に暗号化して暗号化データＣ1,1、Ｃ2,1、Ｙ1を計算する。
【数４】
2010141620.tif 000006
【００３４】
Ｃ1,1は乱数ｒ1によってその値が変わる情報（算出情報）である。このとき、ノード５１Ａは、ノード５１Ｂに対して、データ格納部５１７に記憶されている、ノード５０に割り当てられたノードＩＤ「ID#0」に加え固有情報格納部５１０に記憶されている、自身に割り当てられたノードＩＤ「ID#1」と、データ格納部５１７に記憶されている算出情報Ｃ1,0と、上式において計算した算出情報Ｃ1,1、及び暗号化ピースＣ2,1、Ｙ1とを送信する。図６は、ノード５１Ａからノード５１Ｂに送信される情報を模式的に示す図である。ノード５１Ｂは、これらのノードＩＤ列「ID#0，ID#1」、算出情報列Ｃ1,0, Ｃ1,1、及び暗号化ピースＣ2,1、Ｙ1を対応付けてデータ格納部５１７に記憶する。
【００３５】
図３の説明に戻る。鍵要求送信部５１９は、データ格納部５１７に記憶された暗号化ピースを復号するための復号鍵を要求する鍵要求を鍵サーバ５３に送信する。ここで鍵要求送信部５１９は、当該暗号化ピースに対応してデータ格納部５１７に記憶されているノードＩＤ列及び算出情報列を鍵要求に含めて鍵サーバ５３に送信する。例えば、ノード５１Ｂが、ノード５１Ａが暗号化を行った場合に出力された図６に示した暗号化ピースＣ2,1、Ｙ1を復号するための復号鍵を要求する鍵要求を鍵サーバ５３に送信する場合、ノード５１Ｂの鍵要求送信部５１９は、ノードＩＤ列「ID#0，ID#1」と、算出情報列Ｃ1,0、Ｃ1,1とを含む鍵要求を送信する。図７は、ノード５１Ｂから鍵サーバ５３に送信される情報を模式的に示す図である。このように、ノード５１は、暗号化ピースを復号するための復号鍵を鍵サーバ５３に要求する際に、当該暗号化ピースの配信経路を示すものとして、配信開始ノードであるノード５０を基点として当該暗号化ピースの配信を仲介する各ノード５０，５１の各ノードＩＤを含むノードＩＤ列及び当該各ノード５０，５１が生成した各乱数から算出される算出情報列を鍵サーバ５３に送信する。
【００３６】
ピース復号部５２０は、鍵要求送信部５１９が送信した鍵要求に応じて鍵サーバ５３から送信されたデータ（後述するＤ、Ｄ’）を復号鍵として受信し、当該復号鍵を用いて暗号化ピースを復号する。尚、ピース復号部５２０がどのようにピースＰを復号するのかは後述する。図８は、鍵サーバ５３からノード５１Ｂに送信される情報を模式的に示す図である。同図に示される復号鍵によりピースＰが復号される。尚、鍵サーバ５３がどのように復号鍵を生成するのかは後述する。
【００３７】
尚、ノード５１が、複数のピースのそれぞれについてどのような順番やタイミングでどのノードから取得するかは特に限定されないが、以上のようにして、ノード５１は、複数のピースのそれぞれが暗号化された各暗号化ピースをピース要求によって他のノード５０，５１から取得する。また、ノード５１は、各暗号化ピースについて鍵要求によって各復号鍵を鍵サーバ５３から受信し、各暗号化ピースを復号することにより、上述の配信データを得る。
【００３８】
＜鍵サーバの構成＞
次に、鍵サーバ５３のＣＰＵが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。図９は、鍵サーバ５３の機能的構成を例示する図である。鍵サーバ５３は、秘密鍵格納部５３０と、復号鍵計算部５３２と、データ受信部５３１と、データ送信部５３４とを有する。尚、秘密鍵格納部５３０は、例えば鍵サーバ５３のＨＤＤなどの外部記憶装置に記憶領域として確保されるものである。復号鍵計算部５３２と、データ受信部５３１と、データ送信部５３４との実体は、鍵サーバ５３のＣＰＵのプログラム実行時にＲＡＭなどの記憶装置上に生成されるものである。
【００３９】
秘密鍵格納部５３０は、各ノード５０，５１に割り当てられた公開鍵にそれぞれ対応する秘密鍵を、各ノード５０，５１に割り当てられたノードＩＤと対応付けて記憶する。データ受信部５３１は、上述したノードＩＤ列及び算出情報列を含む鍵要求をノード５１から受信すると共に、暗号化ピースを復号するための復号鍵を要求する。
【００４０】
復号鍵計算部５３２における処理を上述の例（ノード５０からノード５１Ａへ、さらにノード５１Ａからノード５１Ｂへ暗号化ピースが配信され、ノード５１Ｂが鍵サーバ５３へ鍵要求する例）を用いて説明する。ID#0、ID#1、Ｃ1,0、Ｃ1,1を受信した鍵サーバ５３は、ノード５０に割り当てられた公開鍵に対応する秘密鍵ｘ0とノード５１Ａに割り当てられた公開鍵に対応する秘密鍵ｘ1とを用いて、以下の（１３）式、（１４）式によりＤ、Ｄ’を計算する。
【数５】
2010141620.tif 000007
【００４１】
ここで、ノード５１Ｂでの復号処理について説明する。ノード５１Ｂは、上式のＤ、Ｄ’と暗号化ピースＣ2,1、Ｙ1とを用いて、以下の（１５）式、（１６）式によりピースＰを得る。
【数６】
2010141620.tif 000008
【００４２】
上述した暗号方式は、ＥｌＧａｍａｌ暗号方式に基づいている。本暗号方式では、ＥｌＧａｍａｌ暗号方式が有する準同型性を利用し、ピースの暗号化に用いられた、ノード５０、ノード５１Ａの公開鍵ｙ0、ｙ1にそれぞれ対応する秘密鍵ｘ0、ｘ1を１つの復号鍵Ｄに集約している。これにより、暗号化ピースが経由するノード数が大きくなっても復号鍵サイズを一定に保つことが可能となる。従って、鍵サーバから送信されるデータ量を削減することが可能となる。なお、適用可能な暗号方式は、ＥｌＧａｍａｌ暗号方式に限られるものではない。また、集約する復号鍵の個数も１つに限られるものではない。すなわち、各ノードの公開鍵にそれぞれ対応する秘密鍵を、予め定められた個数の復号鍵に集約可能な暗号方式であればあらゆる方式を適用しうる。
【００４３】
データ送信部５３４は、復号鍵計算部５３２が計算した復号鍵を、データ受信部５３１が受信した鍵要求を送信したノード５１に対して送信する。例えば、上述の例では、ノード５１Ａが暗号化を行っていた場合には、鍵サーバ５３は、図７に示されるノードＩＤ列及び算出情報列を含む鍵要求に応じて、図８に示されるように、Ｄ、Ｄ’をノード５１Ｂに対して送信する。当該ピースについて行われた全ての暗号化のそれぞれを復号するための復号鍵がノード５１Ｂに対して送信されることにより、ノード５１Ｂは当該暗号化ピースの暗号化を完全に復号することができる。
【００４４】
（２）動作
＜配信開始ノード：配信処理＞
次に、本実施の形態にかかるデータ配信システムで行われる処理の手順について説明する。まず、配信開始ノードであるノード５０が行う配信処理の手順について図１０を用いて説明する。ノード５０は、配信データを複数のピースに分割する（ステップＳ１）。そして、ノード５０は、ピースを要求するピース要求を他のノード５１から受信すると（ステップＳ２：ＹＥＳ）、乱数ｒ0を生成する（ステップＳ３）。次いで、ノード５０は、乱数ｒ0と固有情報格納部５００に記憶された公開鍵ｙ0とを用いて、送信対象となるピースＰを暗号化して、暗号化ピースを含む暗号化データを出力する（ステップＳ４）。尚、送信対象となるピースをどのように決定するかは特に限定されない。そして、ノード５０は、ステップＳ２で受信されたピース要求を送信した他のノード５１に対して、例えば図５に示されるように、固有情報格納部５００に記憶されているノードＩＤ「ID#0」と、ステップＳ３で生成した乱数ｒ0と、ステップＳ４で出力した暗号化データとを送信する（ステップＳ５）。その後ステップＳ２に戻り、ノード５０は、新たなピース要求の受信を待機する。尚、ステップＳ２で受信されるピース要求は、同一のノード５１であるとは限らず、当該ピース要求によって要求されるピースＰは、同一のピースであるとは限らない。また、ステップＳ３で生成する乱数は基本的にステップＳ３の処理毎に異なる。
【００４５】
＜受信処理＞
次に、ノード５１がノード５０又は他のノード５１から暗号化ピースを受信する受信処理の手順について図１１を用いて説明する。ノード５１は、ピースを要求するピース要求をノード５０又は他のノード５１に対して送信する（ステップＳ１０）。次いで、ノード５１は、ステップＳ１０でピース要求を送信した相手であるノード５０又は他のノード５１から、ノードＩＤ列と暗号化データとを受信する（ステップＳ１１）。そして、ノード５１は、ステップＳ１１で受信したノードＩＤ列及び暗号化データを対応付けて記憶する（ステップＳ１２）。
【００４６】
＜配信開始ノード以外のノード：配信処理＞
次に、配信開始ノード以外のノード５１が行う配信処理の手順について図１２を用いて説明する。ノード５１は、ピースを要求するピース要求を他のノード５１から受信すると（ステップＳ２０：ＹＥＳ）、乱数を生成する（ステップＳ２１）。次いでノード５１は、ステップＳ２１で生成した乱数と、固有情報格納部５１０に記憶された公開鍵とを用いて、あるピースＰが暗号化された暗号化ピースであってデータ格納部５１７に記憶されている暗号化ピースを更に暗号化して、新たな暗号化ピースを出力する（ステップＳ２２）。その後ノード５１は、ステップＳ２０で受信されたピース要求を送信した他のノード５１に対して、送信対象である暗号化ピースに対応付けられてデータ格納部５１７に記憶されたノードＩＤに加え固有情報格納部５１０に記憶されたノードＩＤを含む新たなノードＩＤ列と、送信対象である暗号化ピースに対応付けられてデータ格納部５１７に記憶された算出情報に加えステップＳ２２の暗号化の際に生成した算出情報を含む新たな算出情報列と、ステップＳ２２で出力した新たな暗号化ピースとを送信する（ステップＳ２３）。
【００４７】
＜復号処理＞
次に、ノード５１が鍵サーバ５３から復号鍵を取得しこれを用いて暗号化ピースを復号する復号処理の手順について図１３を用いて説明する。ノード５１は、データ格納部５１７に記憶された暗号化ピースに対応付けられているノードＩＤ列及び算出情報列を読み出し（ステップＳ３０）、当該暗号化ピースを復号するための復号鍵を要求すると共に、当該ノードＩＤ列及び算出情報列を含む鍵要求を鍵サーバ５３に送信する（ステップＳ３１）。次いで、ノード５１は、ステップＳ３０で送信された鍵要求に応じて鍵サーバ５３から送信された復号鍵を受信し（ステップＳ３２）、当該復号鍵を用いて暗号化ピースを復号する（ステップＳ３３）。このようにして、各ノード５１は、複数のピースのそれぞれが暗号化された各暗号化ピースについて鍵要求によって各復号鍵を鍵サーバ５３から受信し、各暗号化ピースを復号することにより、上述の配信データを得ることができる。
【００４８】
＜鍵サーバ：鍵送信処理＞
次に、鍵サーバ５３がノード５１からの鍵要求に応じて復号鍵を送信する鍵送信処理の手順について図１４を用いて説明する。鍵サーバ５３は、ノードＩＤ列及び算出情報列を含む鍵要求（暗号化ピースを復号するための復号鍵の要求）をノード５１から受信すると（ステップＳ４０：ＹＥＳ）、受信した鍵要求に含まれるノードＩＤ列に含まれる各ノードＩＤに対応付けられて秘密鍵格納部５３０に記憶されている秘密鍵をノードＩＤ毎に読み出す（ステップＳ４１）。そして、鍵サーバ５３は、ステップＳ４１において読み出した秘密鍵と、ステップＳ４０において受信した算出情報を用いて復号鍵を計算する（ステップＳ４２）。次いで、鍵サーバ５３は、ステップＳ４２で生成した復号鍵を、ステップＳ４０で受信した鍵要求を送信したノード５１に対して送信する（ステップＳ４３）。
【００４９】
以上のような構成によれば、あるノードが取得する暗号化ピースの組み合わせは配信経路と配信時期とに固有のものとなり、確実に一意となり得る。このような構成によれば、Ｐ２Ｐ配信において配信方法に関する特別な工夫をしなくても、各ノードが取得する各暗号化ピースの組み合わせについてノード毎の一意性を確実に高めることができ、安全性を向上させることができる。更に、データの保護とデータの配信方法との独立性を維持することが可能になり、システム構築上の自由度を向上させることが可能になる。また、上述したように、複数のノードによる暗号化で用いられた複数の公開鍵にそれぞれ対応する複数の秘密鍵を１つの復号鍵に集約して復号に用いることができるため、暗号化ピースが経由するノード数が大きくなっても復号鍵サイズを一定に保ち、鍵サーバから送信されるデータ量を削減することが可能となる。
【００５０】
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
【００５１】
＜変形例１＞
上述した実施の形態において、各ノード５０で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また当該プログラムを、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。この場合には、プログラムは、各ノード５０において上記記録媒体から読み出して実行することにより主記憶装置（例えばＲＡＭ）上にロードされ、上記機能的構成において説明した各部が主記憶装置上に生成される。鍵サーバ５３で実行される各種プログラムについても同様である。
【００５２】
また、上述した実施の形態において、各ノード５０の機能的構成において説明した各部のうち全部又は一部をハードウェアにより構成しても良い。鍵サーバ５３の機能的構成において説明した各部のうち全部又は一部についても同様である。
【００５３】
＜変形例２＞
第１の実施の形態では、暗号化ピースが各ノードにおいてさらに暗号化される例を説明したが、これに限らず、受信した暗号化ピースをそのまま他のノードに転送しても良い。また、配信開始ノードのみが暗号化を行っても良い。以下、配信開始ノードのみが暗号化を行う例を説明する。以下、第１の実施の形態と異なる点のみを記載し、第１の実施の形態と同様の処理を行う場合はその記載を省略する。（後述のその他の変形例についても同様である。）
【００５４】
各ノードは予め秘密鍵ｘi’を与えられている。鍵サーバ５３は以下の（１７）式を満たすz及び各ｘiを保持している。
【数７】
2010141620.tif 000009
【００５５】
ノード５０は、乱数rを生成し、以下の（１８）式、（１９）式により暗号化データを計算する。
【数８】
2010141620.tif 000010
【００５６】
各ノードは、Ｐ２Ｐネットワークを介して、暗号化データＣ1、Ｃ2を配信する。ノード５１Ｂは、以下の（２０）式で表されるＥを含む復号鍵要求メッセージを鍵サーバ５３へ送信する。鍵サーバ５３は、以下の（２１）式によりＤを計算し、ノード５１Ｂへ送信する。
【数９】
2010141620.tif 000011
【００５７】
Ｄを受信したノード５１Ｂは、以下の（２２）式により暗号化ピースを復号する。
【数１０】
2010141620.tif 000012
【００５８】
＜変形例３＞
第１の実施の形態では、鍵サーバ５３は、復号鍵Ｄをそのまま送信する例を説明したが、Ｄを暗号化した上で送信しても良い。これにより、復号鍵を盗聴から守ることができる。ノード５１Ｂは、乱数ｔ2を生成し、ノードＩＤ列、Ｃ1,0、Ｃ1,1に加えて以下の（２３）式で表されるＥを含む復号鍵要求メッセージを鍵サーバ５３へ送信する。
【数１１】
2010141620.tif 000013
【００５９】
鍵サーバ５３は、第１の実施の形態と同様に復号鍵Ｄを計算し、以下の（２４）式によりＤeを計算し、Ｄeをノード５１Ｂへ送信する。
【数１２】
2010141620.tif 000014
【００６０】
Ｄeを受信したノード５１Ｂは、以下の（２５）式により暗号化ピースを復号する。
【数１３】
2010141620.tif 000015
【００６１】
尚、Ｄeの生成方法として、共通鍵暗号方式を用いても良い。つまり、ｇ＾ｔ２を共通鍵としてＤを暗号化したものをＤeとしても良い。
【００６２】
＜変形例４＞
第１の実施の形態では、暗号化を有限体の乗法群上で行う例を説明したが、これに限らず、暗号化を楕円曲線上の点から成る加法群上で行っても良い。以下、暗号化を楕円曲線上の点から成る加法群上で行う例を説明する。Ｇを楕円曲線上のベースポイントとする。各ノードに与えられる公開鍵ｙiはｙi＝ｘiＧと表される。ノード５０は、以下の（２６）〜（２９）式により暗号化処理を行う。
【数１４】
2010141620.tif 000016
【００６３】
こで、［Ａ］xは楕円曲線上の点Ａのｘ座標を表す。ノード５１Ａは、以下の（３０）式〜（３３）式により暗号化処理を行う。
【数１５】
2010141620.tif 000017
【００６４】
鍵サーバ５３は、以下の（３４）式、（３５）式により復号鍵Ｄ、Ｄ’を計算し、ノード５１Ｂへ送信する。
【数１６】
2010141620.tif 000018
【００６５】
＜変形例５＞
変形例４では、ｍをスカラーとして扱う例を説明したが、これに限らず、ｍを楕円曲線上の点Ｍに変換して暗号化を行っても良い。以下、ｍを楕円曲線上の点Ｍに変換して暗号化を行う例を説明する。変形例４との相違点のみを記載する。関数Ｐｌｕｓ、関数Ｍｉｎｕｓを以下のように定義する。定義１、定義２のいずれを採用しても良い。
（定義１）Ｐｌｕｓ（Ａ，Ｂ）は、点Ａと点Ｂとの、ｍｏｄ  ｐ（ｐは素数）上の長さ２のベクトルの加算を表す。この場合、Ｍｉｎｕｓ（Ａ，Ｂ）はｍｏｄ  ｐ上の長さ２のベクトルの減算を表す。
（定義２）Ｐｌｕｓ（Ａ，Ｂ）はＡとＢとの点加算を表す。この場合、Ｍｉｎｕｓ（Ａ，Ｂ）はＢの逆元−ＢとＡとの点加算を表す。
【００６６】
ノード５０は、ｍを点Ｍへ変換し、以下の（３６）式〜（３９）式により暗号化処理を行う。
【数１７】
2010141620.tif 000019
【００６７】
尚、ｍを点Ｍへ、又は点Ｍをｍへ変換する方法は、例えば、「Standards for Efficient Cryptography, SEC 1: Elliptic Curve Cryptography, Version 1.0, September 20, 2000. （http://www.secg.org/download/aid-385/sec1_final.pdf）」において開示されている。
【００６８】
ノード５１Ａは、以下の（４０）式〜（４３）式により暗号化処理を行う。
【数１８】
2010141620.tif 000020
【００６９】
鍵サーバ５３は、以下の（４４）式、（４５）式により復号鍵Ｄ、Ｄ’を計算し、ノード５１Ｂへ送信する。ノード５１Ｂは、以下の（４６）式により点Ｍを計算し、点Ｍをｍへ変換する。
【数１９】
2010141620.tif 000021
【００７０】
＜変形例６＞
変形例４では、暗号化を楕円曲線上の点から成る加法群上で行う例を説明した。これは変形例２に適用しても良い。以下、変形例２において、暗号化を楕円曲線上の点から成る加法群上で行う例を説明する。変形例４との相違点のみを記載する。
【００７１】
ノード５０は、乱数rを生成し、ｍを点Ｍに変換し、以下の（４７）式、（４８）式により暗号化データを計算する。
【数２０】
2010141620.tif 000022
【００７２】
各ノードは、Ｐ２Ｐネットワークを介して、暗号化データＣ1、Ｃ2を配信する。ノード５１Ｂは、以下の（４９）式で表されるＥを含む復号鍵要求メッセージを鍵サーバ５３へ送信する。
【数２１】
2010141620.tif 000023
【００７３】
鍵サーバ５３は、以下の（５０）式によりＤを計算し、ノード５１Ｂへ送信する。
【数２２】
2010141620.tif 000024
【００７４】
Ｄを受信したノード５１Ｂは、以下の（５１）式により点Ｍを計算し、点Ｍをｍへ変換する。
【数２３】
2010141620.tif 000025
【００７５】
＜変形例７＞
変形例４では、暗号化を楕円曲線上の点から成る加法群上で行う例を説明した。これは変形例３に適用しても良い。以下、変形例３において、暗号化を楕円曲線上の点から成る加法群上で行う例を説明する。変形例４との相違点のみを記載する。ノード５１Ｂは、乱数ｔ2を生成し、ノードＩＤ列、Ｃ1,0、Ｃ1,1に加えて以下の（５２）式で表されるＥを含む復号鍵要求メッセージを鍵サーバ５３へ送信する。
【数２４】
2010141620.tif 000026
【００７６】
鍵サーバ５３は、以下の（５３）式により復号鍵Ｄを計算し、さらに（５４）式によりＤeを計算する。そしてＤeをノード５１Ｂへ送信する。
【数２５】
2010141620.tif 000027
【００７７】
Ｄeを受信したノード５１Ｂは、以下の（５５）式によりＤを計算する。
【数２６】
2010141620.tif 000028
【００７８】
ノード５１Ｂは、以下の（５６）式によりＭを計算し、Ｍをｍに変換する。
【数２７】
2010141620.tif 000029
【００７９】
尚、Ｄeの生成方法として、共通鍵暗号方式を用いても良い。つまり、ｔ2Ｇを共通鍵としてＤを暗号化したものをＤeとしても良い。
【００８０】
＜変形例８＞
各ノードに上述したＫＸＯＲ処理を行うか行わないかの選択をさせても良い。この場合、鍵サーバ５３においてどのノードがＫＸＯＲ処理を行ったかが識別できるように、各ノードは、上述のノードＩＤ列とは別に、ＫＸＯＲ処理を行ったノードのノードＩＤ列を送信するようにすれば良い。
【００８１】
また、上述の関数ＫＸＯＲに代えて、以下に定義する関数ＫＸＯＲ’関数を用いても良い。ＫＸＯＲ’の入力は鍵ＫとデータＲであり、ＲはＲ=Ｒ1||Ｒ2||…||Ｒnと表せるとする。１≦ｉ≦ｎについて、Ｚi＝ｓ＊Ｚi-1＋ｔ、Ｚ0＝Ｋ、および以下の（５７）式によりＲi’を計算し、出力をＲ1’||Ｒ2’||…||Ｒn’とする。本変形例において、「＊」および「＋」はそれぞれ拡大体上での乗算および加算を表す。ｓ，ｔは定数であるが、ｓ，ｔともにシステム固定であっても良いし、ｓは配信データ毎に変えても良いし、ｔは配信データ毎、ノード毎、又は配信データ毎かつノード毎に変えても良い。
【数２８】
2010141620.tif 000030
【００８２】
＜変形例９＞
ピースＰとその一部分のデータであるｍとの関係について、図４に示した例のみに限らず、図１５に示すようにＰ＝ｍとしても良い。この場合、Ｙi、Ｋiの計算は行わない。また、図１６に示すように、Ｐ＝ｍ1||ｍ2||…||ｍNとしても良い。この場合、各ｍiについて、（Ｙi、Ｋiの計算は行わずに）暗号化データをそれぞれ計算する。この場合、各ノードは必ずしも全てのｍiを暗号化しなくても良い。
【００８３】
ここで、図１７に示すように、Ｐ＝ｍ1||ｍ2||…||ｍN||Ｒとする場合の、ノード５１Ｂが鍵サーバ５３から受信する復号鍵の（ノード５１Ｂにおける）格納形式について説明する。第１の実施の形態のノード５１Ｂは、復号鍵を格納するための復号鍵格納部を有していても良い。図１８は、このように構成した本変形例のノード１８５１の機能的構成を例示する図である。同図に示すように、ノード１８５１は、復号鍵格納部１８５２１をさらに備えている。また、この復号鍵格納部１８５２１は、ＳＤメモリカードやＳＤＨＣメモリカード等の着脱可能な記録媒体によって実現されていても良い。特に、ＳＤメモリカードやＳＤＨＣメモリカード等の着脱可能な記録媒体の秘匿領域に復号鍵を格納することが望ましい。ｍiを復号するための復号鍵をＤiとし、Ｒを復号するための復号鍵をＤ’’とする。Ｄiの計算方法は上記（１３）式と同様である。Ｄ’’の計算方法は上記（１４）式と同様である。
【００８４】
復号鍵格納部１８５２１への復号鍵Ｄ1、Ｄ2、・・・,、ＤN、Ｄ’’の格納形式の一例を図１９に示す。ノード５１Ｂは、鍵サーバ５３から受信した復号鍵を復号鍵格納部１８５２１に格納する。そして、ノード５１Ｂは、復号鍵格納部１８５２１より復号鍵を読み出し、上記（１５）式、（１６）式と同様の計算を行い、暗号化ピースを復号する。
【００８５】
＜変形例１０＞
第１の実施の形態におけるピース暗号化方式は、ＥｌＧａｍａｌ暗号方式が応用されているとみなすことができるが、これに限らず、「R. Cramer and V. Shoup, “A Practical Public Key Cryptosystem Provably Secure against Adaptive Chosen Ciphertext Attack,” Proc. CRYPTO'98, LNCS 1462, Springer-Verlag, pp.13-25, 1998」において開示されているCramer-Shoup暗号方式をピース暗号化方式に応用しても良い。
【００８６】
始めに、Cramer-Shoup暗号方式の概要を説明する。
（鍵生成）第１の実施の形態と同様に、素数ｐ，ｑを生成する。Ｇｑのランダムな要素ｇ1、ｇ2を選択し、秘密鍵ｘ1、ｘ2、ｙ1、ｙ2、ｚ（全てＺｑの要素）を生成する。この秘密鍵に対応する公開鍵ｇ1、ｇ2、ｃ、ｄ、ｈを生成する。ここで、ｃ、ｄ、ｈは以下の（５８）式〜（６０）式により定義される。
【数２９】
2010141620.tif 000031
【００８７】
（暗号化）Ｚｑの要素をランダムに選択し、選択した要素をｒとする。Ｇｑの要素である平文ｍを以下の（６１）式〜（６５）式により暗号化し、暗号文ｕ1、ｕ2、ｅ、ｖを得る。ここでＨはハッシュ関数である。
【数３０】
2010141620.tif 000032
【００８８】
（復号）以下の（６６）式によりａを計算する。
【数３１】
2010141620.tif 000033
【００８９】
次に、秘密鍵を用いて以下の（６７）式が成立するか検査する。
【数３２】
2010141620.tif 000034
【００９０】
検査に合格したら、秘密鍵を用いて以下の（６８）式により平文ｍを計算する。検査に不合格の場合、暗号文が無効である旨のメッセージを出して終了する。
【数３３】
2010141620.tif 000035
【００９１】
次に、第１の実施の形態（ノード５０からノード５１Ａ、ノード５１Ｂへと暗号化ピースが配信され、ノード５１Ｂが鍵サーバ５３へ復号鍵を要求する例）にこれを当てはめた場合について説明する。鍵サーバ５３は、各ノードの公開鍵ｇ1、ｇ2、ｃi、ｄi、ｈi（＝ｇ1zi）にそれぞれ対応する秘密鍵ｘ1,i、ｘ2,i、ｙ1,i、ｙ2,i、ziを知っている。ここで、ｃi、ｄi、ｈiは以下の（６９）式〜（７１）式により表される。
【数３４】
2010141620.tif 000036
【００９２】
各ノードには公開鍵ｇ1、ｇ2、ｃi、ｄi、ｈiに加え、秘密鍵ｘ1,i、ｘ2,i、ｙ1,i、ｙ2,iもそれぞれ与えられる。暗号文ｕ1、ｕ2、ｅ、ｖの中で、上記（２）式のＣ1,0がｕ1、ｕ2、ｖに、上記（３）式のＣ2,0がｅに対応するとみなすことができる。ノード５１Ａの公開鍵をｇ1、ｇ2、ｃ1、ｄ1、ｈ1と表記する。配信開始ノード５０は、乱数ｒ0を生成し、以下の（７２）式〜（７８）式により暗号化を行う。
【数３５】
2010141620.tif 000037
【００９３】
ここで、ｕ1,i、ｕ2,i、ａi、ｖi、ｅi、Ｙi、Ｋiとは、配信経路上でｉ番目に暗号化データの配信を仲介したノード５１で計算されるデータを意味する。そして、ｉ＝０のときのデータｕ1,0、ｕ2,0、ａ0、ｖ0、ｅ0、Ｙ0、Ｋ0は、配信開始ノードであるノード５０で計算されるデータを意味する。
【００９４】
尚、ノード５０は、暗号化データをノード５１Ａに送信する際、自身のノードＩＤをノード５１Ａに送信しなくても良い。ノード５１Ｂの公開鍵をｇ1、ｇ2、ｃ2、ｄ2、ｈ2と表記する。ノード５１Ａは、受信した暗号化データと自身の秘密鍵を用いて上記（６７）式の検証を行う。検査に合格したら、乱数ｒ1を生成し、以下の（７９）式〜（８５）式により暗号化を行う。検査に不合格の場合、暗号化データが無効である旨のメッセージを出して終了する。
【数３６】
2010141620.tif 000038
【００９５】
ノード５１Ａは、暗号化データをノード５１Ｂに送信する際、自身のノードＩＤをノード５１Ｂに送信する。ノード５１Ｂは、復号鍵要求メッセージを鍵サーバ５３に送信する際、ノード５１ＡのノードＩＤと自身のノードＩＤとをノードＩＤ列として鍵サーバ５３に送信する。ノード５１Ｂからｕ1,0、ｕ1,1及びノードＩＤ列を受信した鍵サーバ５３は、以下の（８６）式、（８７）式により復号鍵を計算し、復号鍵Ｄ、Ｄ’をノード５１Ｂへ送信する。
【数３７】
2010141620.tif 000039
【００９６】
ノード５１Ｂは、ｕ1,0、ｕ1,1及びノードＩＤ列に加えてu2,1、e1、v1を鍵サーバ５３に送信しても良い。この場合、鍵サーバ５３においても上記（６７）式の検証を行う。すなわち、鍵サーバ５３は、受信した暗号化データとノード５１Ｂの秘密鍵を用いて（６７）式の検証を行う。検査に合格したら、復号鍵Ｄ、Ｄ’をノード５１Ｂへ送信する。検査に不合格の場合、暗号化データが無効である旨のメッセージを出して終了する。ノード５１Ｂにおける復号は以下の（８８）式、（８９）式により行われる。
【数３８】
2010141620.tif 000040
【００９７】
＜変形例１１＞
第１の実施の形態におけるピース暗号化方式は、ＥｌＧａｍａｌ暗号方式が応用されているとみなすことができるが、これに限らず、ＲＳＡ暗号方式をピース暗号化方式に応用しても良い。
【００９８】
始めに、ＲＳＡ暗号方式の概要を説明する。
（鍵生成）素数ｐ，ｑを生成し、Ｎ＝ｐｑを計算する。次に、（ｐ−１）（ｑ−１）との最大公約数が１となるｅをランダムに選択する。そして、ｅｄo１（ｍｏｄ  （ｐ−１）（ｑ−１））となるｄを計算する。ここで、ａoｂ（ｍｏｄ  Ｎ）とは、整数ａ，ｂの差ａ−ｂが０または正整数Nの倍数であることを表す。公開鍵は（ｅ，Ｎ）であり、それに対応する秘密鍵はｄである。
【００９９】
（暗号化）公開鍵を用いて、平文ｍ（ｍは０≦ｍ≦Ｎ−１を満たす整数）を以下の（９０）式により暗号化し、暗号文Ｃを得る。
【数３９】
2010141620.tif 000041
【０１００】
（復号）秘密鍵ｄを用いて以下の（９１）式により平文ｍを計算する。
【数４０】
2010141620.tif 000042
【０１０１】
次に、第１の実施の形態（ノード５０からノード５１Ａ、ノード５１Ｂへと暗号化ピースが配信され、ノード５１Ｂが鍵サーバ５３へ復号鍵を要求する例）にこれを当てはめた場合について説明する。各ノードに与えられえる公開鍵を（ｅi，Ｎ）とする。鍵サーバ５３は、各ノードに与えられえる公開鍵に対応する秘密鍵ｄi（ｅiｄio１（ｍｏｄ  （ｐ−１）（ｑ−１）））を全て保持している。また、鍵サーバ５３は、ｐ，ｑの値を知っている。配信開始ノード５０は、公開鍵ｅ0を用いて、以下の（９２）式によりｍを暗号化する。ここで、Ｃiとは、配信経路上でｉ番目に暗号化データの配信を仲介したノード５１で計算される暗号化ピースを意味する。そして、ｉ＝０のときの暗号化ピースＣ0は、配信開始ノードであるノード５０で計算される暗号化ピースを意味する。
【数４１】
2010141620.tif 000043
【０１０２】
ノード５０は、自身のノードＩＤ「ID#0」と暗号化ピースＣ0とをノード５１Ａに送信する。ノード５１Ａは、公開鍵ｅ1を用いて、以下の（９３）式によりＣ0をさらに暗号化する。
【数４２】
2010141620.tif 000044
【０１０３】
ノード５１Ａは、ノードＩＤ列「ID#0，ID#1」と暗号化ピースＣ1とをノード５１Ｂに送信する。ノード５１Ｂは、ノード５１Ａから受信したノードＩＤ列「ID#0，ID#1」を含む復号鍵要求メッセージを鍵サーバ５３へ送信する。鍵サーバ５３は、以下の（９４）式により復号鍵Ｄを計算する。
【数４３】
2010141620.tif 000045
【０１０４】
ノード５１Ｂにおける復号は以下の（９５）式により行われる。
【数４４】
2010141620.tif 000046
【０１０５】
＜変形例１２＞
第１の実施の形態においては、鍵サーバ５３が各ノードの公開鍵に対応する秘密鍵ｘiをそれぞれ保持する例を挙げたが、これに限らず、各ノードのノードＩＤ「ID#i」から秘密鍵ｘiを導出するようにして、導出アルゴリズム（例えば以下の（９６）式で表される関数F）のみ記憶しておいても良い。
ｘi=F（ID#i, Kmaster）  ・・・（９６）
【０１０６】
関数Fとしては、例えば、以下の（９７）式、（９８）式、及び（９９）式のいずれを用いてもよい。上記（９７）式、（９８）式、及び（９９）式では、ｘに「ID#i」が代入され、ｙに鍵サーバ５３の秘密鍵「Kmaster」が代入される。
【数４５】
2010141620.tif 000047
F（ｘ，ｙ）＝H（ｘ || ｙ） ・・・（９９）
【０１０７】
（９７）式のEは、暗号化関数を表し、E（Key）［X］は、XがKeyで暗号化されていることを表す。（９８）式のDは、復号関数を表し、D（Key）［X］は、XがKeyで復号されていることを表す。つまり、‘C=D（Key）［E（Key）［C］］’である。（９９）式のHは、ハッシュ関数を表し、||は、データの連結を表す。このようにすれば、鍵サーバ５３において各ノードの公開鍵に対応する秘密鍵を記憶しておく必要がなくなり、鍵サーバ５３での記憶容量を節約できる。
【図面の簡単な説明】
【０１０８】
【図１】第１の実施の形態にかかるデータ配信システムの構成を示す図である。
【図２】同実施の形態にかかるノード５０の機能的構成を例示する図である。
【図３】同実施の形態にかかるノード５１の機能的構成を例示する図である。
【図４】同実施の形態にかかるノード５０からノード５１Ａに送信される情報を模式的に示す図である。
【図５】同実施の形態にかかるピースを模式的に示す図である。
【図６】同実施の形態にかかるノード５１Ａからノード５１Ｂに送信される情報を模式的に示す図である。
【図７】同実施の形態にかかるノード５１Ｂから鍵サーバに送信される情報を模式的に示す図である。
【図８】同実施の形態にかかる鍵サーバからノード５１Ｂに送信される情報を模式的に示す図である。
【図９】同実施の形態にかかる鍵サーバの機能的構成を例示する図である。
【図１０】同実施の形態にかかる配信開始ノードであるノード５０が行う配信処理の手順を示すフローチャートである。
【図１１】同実施の形態にかかるノード５１がノード５０又は他のノード５１から暗号化ピースを受信する受信処理の手順を示すフローチャートである。
【図１２】同実施の形態にかかる配信開始ノード以外のノード５１が行う配信処理の手順を示すフローチャートである。
【図１３】同実施の形態にかかるノード５１が鍵サーバから復号鍵を取得しこれを用いて暗号化ピースを復号する復号処理の手順を示すフローチャートである。
【図１４】同実施の形態にかかる鍵サーバがノード５１からの鍵要求に応じて復号鍵を送信する鍵送信処理の手順を示すフローチャートである。
【図１５】同実施の形態にかかるピースを模式的に示す図である。
【図１６】同実施の形態にかかるピースを模式的に示す図である。
【図１７】同実施の形態にかかるピースを模式的に示す図である。
【図１８】同実施の形態にかかるノード１８５１の機能的構成を例示する図である。
【図１９】同実施の形態にかかる復号鍵の格納形式を例示する図である。
【符号の説明】
【０１０９】
５０，５１，５１Ａ，５１Ｂ  ノード
５３  鍵サーバ
５００  固有情報格納部
５０１  乱数生成部
５０３  ピース暗号化部
５０４  ピース化部
５０５  データ送信部
５０６  送信要求受付部
５１０  固有情報格納部
５１１  乱数生成部
５１３  ピース暗号化部
５１４  データ受信部
５１５  データ送信部
５１６  送信要求受付部
５１７  データ格納部
５１８  送信要求送信部
５１９  鍵要求送信部
５２０  ピース復号部
５３０  秘密鍵格納部
５３１  データ受信部
５３２  復号鍵計算部
５３４  データ送信部
１８５２１  復号鍵計算部
ＮＴ  Ｐ２Ｐネットワーク
【図１】
2010141620.tif 000053
【図２】
2010141620.tif 000054
【図３】
2010141620.tif 000055
【図４】
2010141620.tif 000056
【図５】
2010141620.tif 000057
【図６】
2010141620.tif 000058
【図７】
2010141620.tif 000059
【図８】
2010141620.tif 000060
【図９】
2010141620.tif 000061
【図１０】
2010141620.tif 000062
【図１１】
2010141620.tif 000063
【図１２】
2010141620.tif 000064
【図１３】
2010141620.tif 000065
【図１４】
2010141620.tif 000066
【図１５】
2010141620.tif 000067
【図１６】
2010141620.tif 000068
【図１７】
2010141620.tif 000069
【図１８】
2010141620.tif 000070
【図１９】
2010141620.tif 000071