(57)【要約】【課題】コンテンツ配信システムにおいて、不正な通信装置の無効化を簡単に行うことを可能にする通信技術を提供する。【解決手段】リーチャ５０Ａは、販売サーバ５４からTorrent Fileを受信し、当該Torrent Fileに基づいて、トラッカ５１にアクセスしてノード情報を取得し、ノード情報に基づいて、シーダ５２Ａ〜５２Ｃやリーチャ５０Ｂの少なくとも１つにアクセスして各暗号化ピースを受信して、各ピースに各々対応する全ての暗号化ピースを取得する。そして、リーチャ５０Ａは、各暗号化ピースを復号するための復号情報を鍵サーバ５３に要求し、鍵サーバ５３は、各暗号化ピースを復号するための各復号鍵を暗号化した暗号化復号鍵と、当該各復号鍵の暗号化に用いたシード情報とを含む復号情報をリーチャ５０に送信する。【選択図】        図１
2010124071.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツの一部が暗号化された暗号化ピースを受信する通信装置であって、
第１通信装置から、複数の前記暗号化ピースを受信する第１受信手段と、
第２通信装置に、受信した各前記暗号化ピースを復号するための情報を要求する要求手段と、
自通信装置に割り当られた第１鍵を記憶する第１記憶手段と、
受信した各前記暗号化ピースを復号するための復号鍵であって暗号化された前記復号鍵を前記第２通信装置又は第３通信装置から受信し、当該復号鍵の暗号化に用いられた一時情報を前記第２通信装置から受信する第２受信手段と、
前記一時情報と、前記第１鍵と、前記第１鍵を用いて復号可能に暗号化された第２鍵とを用いて、暗号化された前記各復号鍵を復号する鍵復号手段とを備える
ことを特徴とする通信装置。
【請求項２】
前記鍵復号手段は、
暗号化された前記第２鍵を、前記第１鍵を用いて復号するＭＫＢ処理手段と、
前記第２鍵と前記一時情報とを用いて、暗号化された前記各復号鍵を復号するための第３鍵を計算する計算手段と、
前記第３鍵を用いて、暗号化された前記各復号鍵を復号する復号手段とを有する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記第２受信手段は、前記一時情報を用いて変換された前記第１鍵を用いて復号可能に暗号化された前記第２鍵を前記第２通信装置から更に受信し、
前記鍵復号手段は、
前記第１鍵と前記一時情報とを用いて計算を行うことにより、当該第１鍵を変換する計算手段と、
暗号化された前記第２鍵を、変換された前記第１鍵を用いて復号するＭＫＢ処理手段と、
前記第２鍵を用いて、暗号化された前記各復号鍵を復号する復号手段とを有する
ことを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記第２受信手段は、前記一時情報を用いて変換された前記第１鍵を用いて復号可能に暗号化された前記第２鍵を前記第２通信装置から更に受信し、
前記鍵復号手段は、
前記第１鍵と前記一時情報とを用いて計算を行うことにより、当該第１鍵を変換する計算手段と、
暗号化された前記第２鍵を、変換された前記第１鍵を用いて復号するＭＫＢ処理手段と、
前記第２鍵と前記一時情報とを用いて、暗号化された前記各復号鍵を復号するための第３鍵を計算する計算手段と、
前記第３鍵を用いて、暗号化された前記各復号鍵を復号する復号手段とを有する
ことを特徴とする請求項１又は２に記載の通信装置。
【請求項５】
前記第１鍵を用いて復号可能に暗号化された前記第２鍵を含み当該鍵管理情報を識別可能な第１鍵管理識別情報が割り当てられた鍵管理情報を記憶する第２記憶手段を更に備え、
前記第２受信手段は、当該通信装置が用いるべき前記鍵管理情報に割り当てられた第２の前記鍵管理識別情報を前記第２通信装置から更に受信し、
前記鍵復号手段は、前記第１鍵管理識別情報と前記第２鍵管理識別情報とが同一である場合、前記第２記憶手段に記憶された前記鍵管理情報と、前記一時情報と、前記第１鍵とを用いて、暗号化された前記各復号鍵を復号し、前記第１鍵管理識別情報と前記第２鍵管理識別情報とが同一でない場合、前記第２鍵管理識別情報が対応付けられた前記鍵管理情報を前記第３通信装置又は記憶媒体から取得して、取得した前記鍵管理情報と、前記一時情報と、前記第１鍵とを用いて、暗号化された前記各復号鍵を復号する
ことを特徴とする請求項１乃至４のいずれか一項に記載の通信装置。
【請求項６】
前記第２受信手段は、前記第１鍵を用いて復号可能に暗号化された前記第２鍵を含む鍵管理情報を前記第２通信装置から更に受信し、
前記鍵復号手段は、受信された前記鍵管理情報と、前記一時情報と、前記第１鍵とを用いて、暗号化された前記各復号鍵を復号する
ことを特徴とする請求項１乃至４のいずれか一項に記載の通信装置。
【請求項７】
前記要求手段は、前記情報を要求するとき、自通信装置を識別可能な通信装置識別情報と、前記コンテンツを識別可能なコンテンツ識別情報とを前記第２通信装置に送信し、
前記第２受信手段は、暗号化された前記復号鍵を前記第２通信装置又は第３通信装置から受信し、前記一時情報を前記第２通信装置から受信する
ことを特徴とする請求項１乃至６のいずれか一項に記載の通信装置。
【請求項８】
復号された前記各復号鍵を用いて、前記暗号化ピースを復号するピース復号手段を更に備える
ことを特徴とする請求項１乃至７のいずれか一項に記載の通信装置。
【請求項９】
コンテンツの一部が暗号化された暗号化ピースを受信する他の通信装置と通信する通信装置であって、
複数の前記暗号化ピースを復号するための情報を要求する要求メッセージを前記他の通信装置から受信する受信手段と、
前記暗号化ピースを復号するための復号鍵の暗号化に用いる一時情報を生成する生成手段と、
前記要求メッセージに従って、前記一時情報を前記他の通信装置に送信する送信手段とを備える
ことを特徴とする通信装置。
【請求項１０】
複数の前記暗号化ピースの各前記復号鍵又は各前記復号鍵を計算するための鍵計算情報を記憶する第１記憶手段と、
第１鍵を記憶する第２記憶手段と、
前記一時情報と前記第１鍵とを用いて復号可能に前記復号鍵を暗号化する鍵暗号化手段とを更に備え、
前記送信手段は、前記一時情報と、暗号化された前記復号鍵とを前記他の通信装置に送信する
ことを特徴とする請求項９に記載の通信装置。
【請求項１１】
前記送信手段は、前記復号鍵又は暗号化された前記復号鍵を保持するその他の通信装置へアクセスするためのアクセス情報を更に前記他の通信装置に送信する
ことを特徴とする請求項９に記載の通信装置。
【請求項１２】
前記他の通信装置に対して公開されていない秘密情報を記憶する第３記憶手段を更に備え、
前記コンテンツには、当該コンテンツを識別可能なコンテンツ識別情報が割り当てられており、
前記他の通信装置には、当該他の通信装置を識別可能な通信装置識別情報が割り当てられており、
前記受信手段は、前記通信装置識別情報と、前記コンテンツ識別情報とを含む前記要求メッセージを受信し、
前記生成手段は、前記秘密情報と前記通信装置識別情報と前記コンテンツ識別情報とを用いて前記一時情報を生成する
ことを特徴とする請求項９乃至１１のいずれか一項に記載の通信装置。
【請求項１３】
前記鍵暗号化手段は、
前記一時情報を用いて関数により前記第１鍵を変換する変換手段と、
変換された前記第１鍵を用いて復号可能に前記各復号鍵を暗号化する暗号化手段とを有する
ことを特徴とする請求項１０に記載の通信装置。
【請求項１４】
前記第２記憶手段は、前記第１鍵と、前記他の通信装置に割り当てられた第２鍵を用いて復号可能に暗号化された前記第１鍵を含み当該鍵管理情報を識別可能な鍵管理識別情報が割り当てられた鍵管理識別情報と、前記コンテンツ識別情報とを対応付けて記憶し、
前記受信手段は、前記通信装置識別情報と、前記コンテンツ識別情報と、前記鍵管理識別情報とを含む前記要求メッセージを前記他の通信装置から受信し、
前記鍵暗号化手段は、前記要求メッセージに含まれる前記コンテンツ識別情報に対応付けられて記憶されている前記第１鍵に対応付けられている前記鍵管理識別情報と、前記要求メッセージに含まれる前記鍵管理識別情報とが同一であるか否かを判断する判断手段と、
前者の前記鍵管理識別情報と、後者の前記鍵管理識別情報とが同一でない場合、その旨を示すエラーメッセージを前記他の通信装置に送信するエラー送信手段とを更に有し、
前記変換手段は、前者の前記鍵管理識別情報と、後者の前記鍵管理識別情報とが同一である場合、前記一時情報を用いて関数により前記第２鍵を変換する
ことを特徴とする請求項１３に記載の通信装置。
【請求項１５】
前記送信手段は、前記一時情報と、前記他の通信装置に割り当てられた第２鍵を用いて復号可能に暗号化された第１鍵を含む鍵管理情報とを前記他の通信装置に送信する
ことを特徴とする請求項９乃至１４のいずれか一項に記載の通信装置。
【請求項１６】
前記他の通信装置に割り当られた第２鍵を記憶する第４記憶手段を更に備え、
前記鍵暗号化手段は、
前記一時情報を用いて、前記第２鍵を関数により変換する変換手段と、
変換された前記第２鍵を用いて復号可能に暗号化した前記第１鍵を含む前記鍵管理情報を生成する生成手段と、
前記第１鍵を用いて前記各復号鍵を暗号化する暗号化手段とを有し、
前記送信手段は、前記一時情報と、暗号化された前記復号鍵と、前記鍵管理情報とを前記他の通信装置に送信する
ことを特徴とする請求項１０に記載の通信装置。
【請求項１７】
前記他の通信装置に割り当られた第２鍵を記憶する第４記憶手段を更に備え、
前記鍵暗号化手段は、
前記一時情報を用いて、前記第２鍵を関数により変換する変換手段と、
変換された前記第２鍵を用いて復号可能に暗号化した前記第１鍵を含む前記鍵管理情報を生成する生成手段と、
前記第１鍵と前記一時情報とを用いて前記各復号鍵を暗号化する暗号化手段とを有し、
前記送信手段は、前記一時情報と、暗号化された前記復号鍵と、前記鍵管理情報とを前記他の通信装置に送信する
ことを特徴とする請求項１０に記載の通信装置。
【請求項１８】
自通信装置に割り当てられた前記第２鍵を記憶する第４記憶手段と、
前記第２鍵を用いて復号可能に暗号化された第１鍵を含む前記鍵管理情報を記憶する第５記憶手段とを更に備え、
前記鍵暗号化手段は、
前記鍵管理情報に含まれる、暗号化された前記第１鍵を、前記第２鍵を用いて復号するＭＫＢ処理手段と、
前記第１鍵と前記一時情報とを用いて前記各復号鍵を暗号化する暗号化手段とを有する
ことを特徴とする請求項１０に記載の通信装置。
【請求項１９】
前記他の通信装置に割り当られた第２鍵を記憶する第４記憶手段を更に備え、
前記受信手段は、前記第２鍵を用いて復号可能に暗号化された前記第１鍵を含む前記鍵管理情報を更に受信し、
前記鍵暗号化手段は、
前記鍵管理情報に含まれる、暗号化された前記第１鍵を、前記第２鍵を用いて復号するＭＫＢ処理手段と、
前記第１鍵と前記一時情報とを用いて前記各復号鍵を暗号化する暗号化手段とを有する
ことを特徴とする請求項１０に記載の通信装置。
【請求項２０】
前記送信手段は、前記一時情報と、前記他の通信装置に割り当てられた第２鍵を用いて復号可能に暗号化された前記第１鍵を含む鍵管理情報に割り当てられた前記鍵管理識別情報とを前記他の通信装置に送信する
ことを特徴とする請求項９乃至１４のいずれか一項に記載の通信装置。
【請求項２１】
前記鍵暗号化手段は、
前記要求メッセージによって要求された各前記復号鍵の組み合わせに基づいて、当該各復号鍵を送信するか否かを決定する決定手段と、
前記決定手段の決定結果が肯定的である場合、前記要求メッセージによって要求された前記組み合わせにおける各前記復号鍵又は各前記復号鍵を計算するための鍵計算情報を前記第１記憶手段から各々読み出し、前記一時情報と、前記第１鍵とを用いて当該各復号鍵を暗号化する暗号化手段とを有する
ことを特徴とする請求項１０に記載の通信装置。
【請求項２２】
コンテンツの一部が暗号化された暗号化ピースを受信する通信装置で実行される通信方法であって、
前記通信装置は、第１受信手段と、送信手段と、鍵復号手段と、自通信装置に割り当られた第１鍵を記憶する記憶手段とを備え、
前記第１受信手段が、第１通信装置から、複数の前記暗号化ピースを受信する第１受信ステップと、
前記要求手段が、第２通信装置に、受信した各前記暗号化ピースを復号するための情報を要求する要求ステップと、
前記第２受信手段が、受信した各前記暗号化ピースを復号するための復号鍵であって暗号化された前記復号鍵を前記第２通信装置又は第３通信装置から受信し、当該復号鍵の暗号化に用いられた一時情報を前記第２通信装置から受信する第２受信ステップと、
前記鍵復号手段が、前記一時情報と、前記第１鍵と、前記第１鍵を用いて復号可能に暗号化された第２鍵とを用いて、暗号化された前記各復号鍵を復号する鍵復号ステップとを含む
ことを特徴とする通信方法。
【請求項２３】
コンテンツの一部が暗号化された暗号化ピースを受信する通信装置の有するコンピュータを実行させるためのプログラムであって、
第１通信装置から、複数の前記暗号化ピースを受信する第１受信ステップと、
第２通信装置に、受信した各前記暗号化ピースを復号するための情報を要求する要求ステップと、
受信した各前記暗号化ピースを復号するための復号鍵であって暗号化された前記復号鍵を前記第２通信装置又は第３通信装置から受信し、当該復号鍵の暗号化に用いられた一時情報を前記第２通信装置から受信する第２受信ステップと、
前記一時情報と、自通信装置に割り当られた第１鍵と、前記第１鍵を用いて復号可能に暗号化された第２鍵とを用いて、暗号化された前記各復号鍵を復号する鍵復号ステップとをコンピュータに実行させるためのプログラム。
【請求項２４】
コンテンツの一部が暗号化された暗号化ピースを受信する他の通信装置の有するコンピュータを実行させるためのプログラムであって、
複数の前記暗号化ピースを復号するための情報を要求する要求メッセージを前記他の通信装置から受信する受信ステップと、
前記暗号化ピースを復号するための復号鍵の暗号化に用いる一時情報を生成する生成ステップと、
前記要求メッセージに従って、前記一時情報を前記他の通信装置に送信する送信ステップとをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、通信方法及びプログラムに関する。
【背景技術】
【０００２】
一般に、コンテンツを配信するシステムには、「単一サーバ型」と「分散サーバ型」とがある。単一サーバ型のシステムでは、例えば、１つのコンテンツサーバと、ライセンスサーバと、クライアントとがネットワークを介して接続され、コンテンツサーバからコンテンツが各クライアントに配信される。配信されるコンテンツは暗号化されており、この暗号化に係る鍵情報をライセンスサーバが有している。コンテンツサーバでは、コンテンツはE( KT )[ C ]として保持される。ただし、KTはタイトル鍵と呼ばれる鍵であり、Cは平文のコンテンツである。E( KT )[ C ]はCがKTで暗号化されていることを示す。鍵情報にはKTが含まれている。クライアントＢは、鍵情報をライセンスサーバから取得し、当該鍵情報を、当該クライアント（クライアントＢとする）固有の鍵KBを用いて暗号化し、これをコンテンツサーバから受信したコンテンツE( KT )[ C ]と関連づけて保持する。そして、クライアントＢは、鍵KBを用いて鍵情報を復号して、タイトル鍵KTを取り出し、当該タイトル鍵KTを用いてE( KT )[ C ]を復号することにより、コンテンツを利用することができる。
【０００３】
このような構成において、クライアントＢは、コンテンツサーバからコンテンツE( KT )[ C ]をダウンロードする際、認証及び鍵交換を互いに行う。この結果、クライアントＢは、一時鍵KtmpBを共有する。コンテンツサーバは、一時鍵KtmpBを用いてコンテンツE( KT )[ C ]を暗号化し、コンテンツE( KtmpB )[ E( KT )[ C ] ]をクライアントＢに送信する。クライアントＢは、上述の認証及び鍵交換によってコンテンツサーバと共有している一時鍵KtmpBを用いてコンテンツE( KtmpB )[ E( KT )[ C ]]を復号して、E( KT )[ C ]を取り出す。このような構成においては、ネットワークの経路上で、暗号化されたコンテンツE( KtmpB )[ E( KT )[ C ] ]が不正に読み取られたとしても、不正に読み取られたものは一時鍵KtmpBがなければ復号することができない。即ち、クライアント毎に異なる一時鍵を用いてコンテンツを暗号化することにより、同一のコンテンツをクライアント毎に個別化し、これにより、コンテンツの不正使用を抑制することができる。例えば、クライアントＡに対する一時鍵KtmpAとクライアントＢに対する一時鍵KtmpBとを異ならせることにより、クライアントＡに配信されるコンテンツE( KtmpA )[ E( KT )[ C ] ]と、クライアントＢに配信されるコンテンツE( KtmpB )[ E( KT )[ C ] ]とは異なる個別のデータとなる。このように同一のコンテンツを暗号鍵の相違により個別化することにより、コンテンツの不正使用を抑制することができる。
【０００４】
しかし、単一サーバ型のシステムでは、クライアントとコンテンツサーバとの１対１での通信となるため、多くのクライアントがコンテンツサーバからコンテンツの配信を受けようとすると、配信効率が悪くなるという問題がある。
【０００５】
一方、分散サーバ型のシステムには、例えば、Ｐ２ＰによるBitTorrentというコンテンツ配信システムがある（例えば、非特許文献１参照）。このようなシステムにおいては、コンテンツ毎に異なるトラッカと、シーダと、リーチャとがＰ２Ｐで各々接続される。また、配信されるコンテンツは、複数のピースに分割されている。シーダは、コンテンツの配信（アップロード）を目的として、コンテンツを構成するピースを配信するノードである。リーチャは、コンテンツの受信（ダウンロード）を目的として、コンテンツを構成する各ピースの受信とコンテンツを構成するピースの配信とを行うノードである。即ち、リーチャはコンテンツを構成するピースをある程度取得するとシーダになる場合がある。このように、シーダには、コンテンツを構成する全部のピース又は一部のピースを受信したリーチャがシーダへ変化したものと、システム側で（予め又は配信の途中に）用意される（最初からシーダである）ものとがある。後者を初期シーダと呼ぶ。初期シーダは、あるひとつのコンテンツを構成し得る全てのピース又は一部のピースを保持している。以降、特に断りのない限り、シーダとはシーダ又は初期シーダを意味するものとし、ノードとはリーチャ、シーダ、又は初期シーダを意味するものとする。トラッカは、各ノードに関するノード情報を保持しており、リーチャからアクセスがあった場合、ノード情報をリーチャに提供する。
【０００６】
このような構成において、あるリーチャがコンテンツの配信を受ける場合、まず、Torrent Fileと呼ばれる情報を取得する。Torrent Fileは、例えば、コンテンツプロバイダ又はユーザにコンテンツを販売するサービスを運用するサーバ（販売サーバと呼ぶ）から、他ノード又は販売サーバへ与えられ、さらに他ノード又は販売サーバからリーチャへ与えられる。この他に、例えばＣＤ−ＲＯＭなどの記憶媒体に記録されたTorrent Fileをオフラインでリーチャへ配布される場合もある。Torrent Fileには、コンテンツに関するトラッカ情報と、当該コンテンツのファイル情報とが格納されている。トラッカ情報はトラッカの接続先を含んでいる。ファイル情報は、例えば、コンテンツを構成する各ピースのハッシュ情報を含んでいる。ハッシュ情報は、ピースの完全性を確認するために用いられる。即ち、ハッシュ情報は、リーチャがダウンロードしたピースのハッシュを計算し、当該ピースのハッシュ値と照合して、受信したピースが改竄されていないことを確認するのに用いられる。
【０００７】
リーチャは、このようなTorrent Fileを取得すると、トラッカ情報に基づいてトラッカに接続する。トラッカは、リーチャに上述のノード情報を送信する。ノード情報は単数又は複数のノードの接続先のリストを含んでいる。リーチャはノード情報に基づいて、複数のノードに接続する。各ノードが配信するピースは、ノード毎に異なっている場合が多い。リーチャは、複数のノードから異なるピースを受信することができるので、コンテンツの高速な受信が可能である。
【０００８】
このように、Ｐ２Ｐによるコンテンツ配信システムでは、コンテンツは複数のノードに分散して保持されている。従って、このようなシステムにおいては、コンテンツの配信を受けるノードが多くても、Ｐ２Ｐにより複数の他のノードからコンテンツの配信を受けることができるため、単一サーバ型のシステムに比べて配信効率が良い。
【０００９】
尚、このように、複数のノードからコンテンツを配信し得るコンテンツ配信システムにおいても、コンテンツの不正使用を抑制するためには、配信するコンテンツを暗号化によって保護することが望ましい。しかし、このようなコンテンツ配信システムでは、単一サーバ型のシステムとは異なり、各リーチャがシーダから受信する同一のコンテンツは、暗号化された状態であっても同一でなければならず、リーチャ毎に個別に暗号化したコンテンツを配信することは難しかった。このため、暗号化されたコンテンツを復号するための鍵が１つ曝露されてしまうと、ネットワーク上に多数存在するコンテンツが全て復号可能になってしまうという恐れがあった。
【００１０】
ところで、特許文献１には、コンテンツを複数のピースに分割し、それら複数のピースをそれぞれ１つの平文として、複数の暗号鍵を用いて各々暗号化して暗号文（暗号化ピースという）を生成するコンテンツ配信方法が開示されている。
【００１１】
【非特許文献１】Bittorrent Protocol Specification v1.0
【特許文献１】特許第３９１７３９５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
特許文献１において開示されているコンテンツ配信方法を始め、複数の暗号鍵を用いてピースを各々暗号化して暗号化ピースを生成するコンテンツ配信方法を用いれば、上述の恐れをなくすことができる。しかし、さらに、不正リーチャ（例えば、ハックされてしまったリーチャや、不正コピーなどの不正行為に加担しているリーチャ）を検出した場合には、当該不正リーチャの無効化を行えることが望ましい。不正リーチャの無効化を行うための素朴な解決策として、例えば以下のものが考えられる。鍵サーバから暗号化ピースの復号鍵をリーチャへ与えることとし、さらに、鍵サーバが不正リーチャのリスト（ブラックリスト）を管理し、リーチャから鍵サーバへ暗号化ピースの復号鍵の送信要求があった際に、鍵サーバがブラックリストに当該リーチャが載っているか否かを照合する処理を行い、当該リーチャがブラックリストに載っていない場合のみ、鍵サーバから当該リーチャへ暗号化ピースの復号鍵を送信するという解決策である。しかし、ブラックリストの管理やその照合の処理は煩雑であるため、この解決策は望ましくない。
【００１３】
本発明は、上記に鑑みてなされたものであって、コンテンツ配信システムにおいて、不正な通信装置の無効化を簡単に行うことを可能にする通信装置、通信方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、本発明は、コンテンツの一部が暗号化された暗号化ピースを受信する通信装置であって、第１通信装置から、複数の前記暗号化ピースを受信する第１受信手段と、第２通信装置に、受信した各前記暗号化ピースを復号するための情報を要求する要求手段と、自通信装置に割り当られた第１鍵を記憶する第１記憶手段と、受信した各前記暗号化ピースを復号するための復号鍵であって暗号化された前記復号鍵を前記第２通信装置又は第３通信装置から受信し、当該復号鍵の暗号化に用いられた一時情報を前記第２通信装置から受信する第２受信手段と、前記一時情報と、前記第１鍵と、前記第１鍵を用いて復号可能に暗号化された第２鍵とを用いて、暗号化された前記各復号鍵を復号する鍵復号手段とを備えることを特徴とする。
【００１５】
また、本発明は、コンテンツの一部が暗号化された暗号化ピースを受信する他の通信装置と通信する通信装置であって、複数の前記暗号化ピースを復号するための情報を要求する要求メッセージを前記他の通信装置から受信する受信手段と、前記暗号化ピースを復号するための復号鍵の暗号化に用いる一時情報を生成する生成手段と、前記要求メッセージに従って、前記一時情報を前記他の通信装置に送信する送信手段とを備えることを特徴とする。
【００１６】
また、本発明は、コンテンツの一部が暗号化された暗号化ピースを受信する通信装置で実行される通信方法であって、前記通信装置は、第１受信手段と、送信手段と、鍵復号手段と、自通信装置に割り当られた第１鍵を記憶する記憶手段とを備え、前記第１受信手段が、第１通信装置から、複数の前記暗号化ピースを受信する第１受信ステップと、前記要求手段が、第２通信装置に、受信した各前記暗号化ピースを復号するための情報を要求する要求ステップと、前記第２受信手段が、受信した各前記暗号化ピースを復号するための復号鍵であって暗号化された前記復号鍵を前記第２通信装置又は第３通信装置から受信し、当該復号鍵の暗号化に用いられた一時情報を前記第２通信装置から受信する第２受信ステップと、前記鍵復号手段が、前記一時情報と、前記第１鍵と、前記第１鍵を用いて復号可能に暗号化された第２鍵とを用いて、暗号化された前記各復号鍵を復号する鍵復号ステップとを含むことを特徴とする。
【００１７】
また、本発明は、コンテンツの一部が暗号化された暗号化ピースを受信する通信装置の有するコンピュータを実行させるためのプログラムであって、第１通信装置から、複数の前記暗号化ピースを受信する第１受信ステップと、第２通信装置に、受信した各前記暗号化ピースを復号するための情報を要求する要求ステップと、受信した各前記暗号化ピースを復号するための復号鍵であって暗号化された前記復号鍵を前記第２通信装置又は第３通信装置から受信し、当該復号鍵の暗号化に用いられた一時情報を前記第２通信装置から受信する第２受信ステップと、前記一時情報と、前記第１鍵と、前記第１鍵を用いて復号可能に暗号化された第２鍵とを用いて、暗号化された前記各復号鍵を復号する鍵復号ステップとをコンピュータに実行させる。
【００１８】
また、本発明は、コンテンツの一部が暗号化された暗号化ピースを受信する他の通信装置の有するコンピュータを実行させるためのプログラムであって、複数の前記暗号化ピースを復号するための情報を要求する要求メッセージを前記他の通信装置から受信する受信ステップと、前記暗号化ピースを復号するための復号鍵の暗号化に用いる一時情報を生成する生成ステップと、前記要求メッセージに従って、前記一時情報を前記他の通信装置に送信する送信ステップとをコンピュータに実行させる。
【発明の効果】
【００１９】
本発明によれば、コンテンツ配信システムにおいて、不正な通信装置の無効化を簡単に行うことが可能になる。
【発明を実施するための最良の形態】
【００２０】
以下に添付図面を参照して、この発明にかかる通信装置、通信方法及びプログラムの最良な実施の形態を詳細に説明する。
【００２１】
[実施の形態]
（１）構成
＜コンテンツ配信システムの構成＞
まず、本実施の形態にかかるコンテンツ配信システムの基本的な構成について説明する。図１は、本実施の形態にかかるコンテンツ配信システムの構成を示す図である。本実施の形態にかかるコンテンツ配信システムにおいては、リーチャ５０Ａ〜５０Ｂと、トラッカ５１と、シーダ５２Ａ〜５２Ｃと、販売サーバ５４とが各々Ｐ２ＰネットワークＮＴを介して接続されている。リーチャ５０Ａ〜５０Ｂと、鍵サーバ５３とは各々、図示しないインターネットなどのネットワークを介して接続される。ここでノードとは、リーチャ５０Ａ〜５０Ｂと、シーダ５２Ａ〜５２Ｃとである。シーダ５２Ａ〜５２Ｃは、複数のピースに分割されたコンテンツについて、各ピースが各々異なる暗号鍵で暗号化された各暗号化ピースを保持している。尚、以降、このような暗号化ピースから構成されるコンテンツを暗号化コンテンツという。このような暗号化コンテンツの詳細については後述する。シーダ５２Ａ〜５２Ｃのうち、シーダ５２Ａは、上述した初期シーダとして機能する。シーダ５２Ａは、１つのコンテンツを構成する各ピースについて、同一のピースに対して複数の暗号鍵を用いて各々暗号化されて生成された暗号化ピースの全てとTorrent Fileとを保持している。トラッカ５１は、各ノードにアクセスするためのノード情報を保持している。尚、各ノードには各々、ノード識別情報が付与されているものとする。ノード識別情報とは、各ノードを一意に識別可能な識別情報であり、例えば、各ノードのＩＰアドレスである。鍵サーバ５３は、各暗号化ピースを復号するための復号鍵を保持している。販売サーバ５４は、Torrent Fileを保持している。
【００２２】
リーチャ５０Ａは、販売サーバ５４からTorrent Fileを受信し、当該Torrent Fileに基づいて、トラッカ５１にアクセスしてノード情報を取得し、ノード情報に基づいて、シーダ５２Ａ〜５２Ｃやリーチャ５０Ｂの少なくとも１つにアクセスして各暗号化ピースを受信して、各ピースに各々対応する全ての暗号化ピースを取得する。そして、リーチャ５０Ａは、各暗号化ピースを復号するための復号情報を鍵サーバ５３に要求し、鍵サーバ５３は、各暗号化ピースを復号するための各復号鍵を暗号化した暗号化復号鍵を含む復号情報をリーチャ５０に送信する。各復号鍵を暗号化する方式としてはＭＫＢ（Media Key Block）方式を適用する。このＭＫＢ方式及び復号情報の詳細については後述する。リーチャ５０Ｂについても同様である。尚、以降、リーチャ５０Ａ〜５０Ｂを各々区別する必要がない場合、単にリーチャ５０と記載する。シーダ５２Ａ〜５２Ｃを各々区別する必要がない場合も、単にシーダ５２と記載する。
【００２３】
ここで、コンテンツの構成について説明する。コンテンツとは、種々のデジタルデータ、例えばMPEG2やMPEG4等の動画データや音声データの他、テキストデータや静止画データ等を指し、また、これらのデジタルデータが暗号化されているものもコンテンツと呼ぶ。例えば、HD DVD Prepared Video ContentをAACS(Advanced Access Content System)仕様に従って暗号化したものもコンテンツである。ここでは、コンテンツ全体をＣと表すものとする。Ｃは平文であっても暗号化されていても構わない。図２は、コンテンツが複数のピースに分割された状態を模式的に示す図である。例えば、コンテンツＣは、ある１つのコンテンツをＮ（N＞１）個のピースＣ１〜ＣＮに分割される。各ピースＣ１，Ｃ２，・・・ＣＮのデータ長は全て同一であっても良いし、そうでなくても良い。これらのＮ個の各ピースＣ１〜ＣＮについては、各々異なる暗号鍵で暗号化される。このとき、Ｎ個のうちａ個のピースについては、同一のピースに対して、各々異なるｍ個の暗号鍵で暗号化される。残りの（Ｎ-ａ）個のピースについては、同一のピースに対して１つの暗号鍵で暗号化される。即ち、ａ個の各ピースについては、同一のピースがｍ個の異なる暗号鍵で各々暗号化されてｍ個の異なるピース（暗号化ピース）が生成される。（Ｎ-ａ）個の各ピースについては、各々１つの暗号鍵で暗号化して、１つのピースに対して１つの暗号化ピースが生成される。図３は、各暗号化ピースを模式的に示す図である。このａ個の各ピースに各々対応して、ｍ個の暗号化ピースの中から各々１つ選択される暗号化ピースの組み合わせを異ならせることにより、Ｎ個の暗号化ピースから構成される暗号化コンテンツ全体を個別化することができる。
【００２４】
尚、コンテンツの各ピースへの分割や、各ピースの暗号化は、トラッカ５１や、鍵サーバ５３や、コンテンツ製作者が用意したサーバのいずれが行っても良い。尚、以降、これらのうち少なくとも１つを行う装置をピース処理装置という。また、各暗号化ピースは、例えば、トラッカ５１、鍵サーバ５３又は信頼できる第三者（例えば、コンテンツ製作者が用意したサーバ）からシーダ５２Ａ（初期シーダ）へ与えられるものとする。
【００２５】
次に、ＭＫＢ方式について説明する。ＭＫＢ方式とは、一般的にデータを暗号化して送信する送信者と、暗号化されたデータ（暗号化データという）を受信して復号する複数の受信者とが存在する状況において適用される。このような状況において、各受信者には、予め１つ又は複数の復号鍵がそれぞれ割り当てられている。送信者は、受信者に割り当てられた１つ又は複数の暗号化鍵を用いて、無効化される対象の受信者は平文を計算できないように且つ無効化されない受信者は平文を計算できるように、当該平文をそれぞれ暗号化する。無効化されない受信者は、割り当てられた復号鍵のうちの１つを用いて、暗号化された平文を復号することにより、平文を計算する。ＭＫＢとは、平文をデバイス鍵（第１鍵）を用いて復号可能に各々暗号化した１つ又は複数の暗号文を含むデータであり、受信者による復号に必要な他のデータも含む鍵管理情報である。各暗号文に識別情報が割り当てられている場合、受信者による復号に必要な他のデータとしては例えばこの識別情報が挙げられる。デバイス鍵とは、１つ又は複数の鍵情報を含むデータであり、受信者による復号に必要な他のデータも含む。各デバイス鍵にはデバイス鍵識別情報が各々割り当てられているため、受信者による復号に必要な他のデータとしては例えばこのデバイス鍵識別情報が挙げられる。上述の平文は、このデバイス鍵とＭＫＢとを用いて後述するＭＫＢ処理により得られる。この平文を説明の便宜上以降平文鍵（第２鍵）という。この平文鍵が、各デバイス鍵を少なくとも用いて復号可能に暗号化されたものを暗号化平文鍵という。一般的には、暗号化対象のデータのデータ長が大きい場合、送信者は、平文鍵を復号鍵として、平文鍵に対応する暗号化鍵を用いて暗号化対象のデータを暗号化する。暗号化されたデータ（暗号化データ）が送信者から送信されて受信者に受信される。図４は、本実施の形態に係るＭＫＢ方式において受信者が行う基本的な処理の流れを概念的に示す図である。同図に示されるように、本実施の形態においては、受信者は、自身に割り当てられたデバイス鍵を用いて、ＭＫＢに含まれる暗号化平文鍵を復号して平文鍵を得て、次に、平文鍵を用いて、受信した暗号化データを復号する。尚、ＭＫＢ方式の例として、以下の参考文献１〜２において開示されているＭＫＢ方式がある。
（参考文献１）  D. Naor, M. Naor, and J. Lotspiech, “Revocation and Tracing Schemes for Stateless Receivers,” In Proc. of CRYPTO 2001, LNCS 2139, Springer-Verlag, pp.41-62, 2001.
（参考文献２）  特許第３９１７５０７号公報
【００２６】
参考文献１において開示されているＭＫＢ方式は、共通鍵暗号に基づいたＭＫＢ方式である。共通鍵暗号に基づいたＭＫＢ方式においては、ＭＫＢに含まれる暗号化平文鍵を生成する際に用いられた暗号化鍵と、当該暗号化平文鍵を復号するための復号鍵（デバイス鍵）とは同一である。一方、参考文献２において開示されているＭＫＢ方式は、公開鍵暗号に基づいたＭＫＢ方式である。公開鍵暗号に基づいたＭＫＢ方式においては、ＭＫＢに含まれる暗号化平文鍵を生成する際に用いられた暗号化鍵（公開鍵）と、当該暗号文を復号するための復号鍵（デバイス鍵）とは異なとは異なり、暗号化鍵を（公開鍵として）公開することができる。
【００２７】
このようなＭＫＢ方式を適用して、あるリーチャ５０を無効化する場合、当該リーチャ５０に割り当てられたデバイス鍵を用いて復号されても正しい平文鍵が得られないように生成された暗号化平文鍵を含むＭＫＢを生成する。即ち、無効化されていないリーチャ５０に割り当てられたデバイス鍵を用いて暗号化平文鍵を復号して得られる平文鍵と、無効化されたリーチャ５０に割り当てられたデバイス鍵を用いて暗号化平文鍵を復号して得られる平文鍵とが異なるような暗号化平文鍵を含むＭＫＢを生成する。このような構成によれば、無効化されたリーチャ５０が、デバイス鍵記憶部５０４に記憶されたデバイス鍵を用いてＭＫＢに含まれている暗号化平文鍵を復号しても、正しい平文鍵を得ることができないことになる。
【００２８】
次に、リーチャ５０と、トラッカ５１と、シーダ５２と、鍵サーバ５３との各装置のハードウェア構成について説明する。各装置は各々、装置全体を制御するＣＰＵ（Central Processing Unit）等の制御装置と、各種データや各種プログラムを記憶するＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）等の記憶装置と、各種データや各種プログラムを記憶するＨＤＤ（Hard Disk Drive）やＣＤ（Compact Disk）ドライブ装置等の外部記憶装置と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。また、各装置には各々、情報を表示する表示装置と、ユーザの指示入力を受け付けるキーボードやマウス等の入力装置と、外部装置の通信を制御する通信Ｉ／Ｆ（interface）とが有線又は無線により接続される。
【００２９】
＜シーダ５２の構成＞
次に、上述したハードウェア構成において、シーダ５２のＣＰＵが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。シーダ５２は、コンテンツＣを構成する複数のピースＣ１〜ＣＮが各々暗号化された各暗号化ピースを、各ピースＣ１〜ＣＮを各々復号するための各復号鍵のインデックス（添え字）と対応付けて記憶している。尚、各復号鍵は、各暗号鍵と同一であっても良いし、各暗号鍵と異なるものであっても良い。いずれにしろ、各ピースＣ１〜ＣＮは各々暗号鍵で暗号化されているため、これらの各暗号化ピースを復号するための復号鍵のそれぞれについて、各復号鍵のインデックスを用いて、各暗号化ピースを特定することができる。また、各暗号化ピースには、コンテンツを識別可能なコンテンツ識別情報が各々割り当てられている。このような各暗号化ピースは例えば外部記憶装置に記憶される。
【００３０】
以下簡単のため、暗号鍵と復号鍵が同一の場合で説明する。復号鍵のインデックスを、( i, j )で表し、復号鍵を、K ( i, j )で表すとすると、各暗号化ピースは、例えば、以下のように表される。
E( K( i, j) )[ Cj ]
（ただし、i, jは整数、1≦i≦m、1≦j≦N（m＞1）、相異なるインデックス( i, j)、( i’, j’) (( i, j)≠( i’, j’))についてK( i, j)= K( i’, j’)であってもよい。）
【００３１】
このような各暗号化ピースから構成される暗号化コンテンツは、例えば、以下のように表される。
{ E( K( i1, 1 ) )[ C1 ], E( K( i2, 2 ) )[ C2 ], …, E( K( iN, N ))[ CN ]} 
（ただし、1≦i1, …, iN≦m）
【００３２】
このような暗号化コンテンツにおける各暗号化ピースのシーケンスは、各暗号化ピースのインデックスの組み合わせにより表され、例えば以下のように表される。ここでは、各ピースＣ１〜ＣＮに各々対応するインデックスが左から順に配列されて表されている。
{ ( i1, 1 ), ( i2, 2 ), …, ( iN, N) }
（ただし、1≦i1, …, iN≦m）
【００３３】
従って、シーダ５２が各暗号化ピースとインデックスとを対応付けて記憶するものは、例えば、以下のように表される。
{ ( E( K( i1, 1) )[ C1 ], ( i1, 1 ) ), ( E( K( i2, 2) )[ C2 ], ( i2, 2 ) ), …,( E( K( iN, N) )[ CN ], ( iN, N ) ) }
（ただし、1≦i1, …, iN≦m）
【００３４】
更に、初期シーダであるシーダ５２Ａは、コンテンツを構成する各ピースに各々対応する各暗号化ピースについて、同一のピースに対して複数の暗号鍵により各々暗号化されて生成された暗号化ピースの全てを記憶している。図５は、シーダ５２Ａが記憶している各暗号化ピースを例示する図である。同図においては、Ｎ個のうちa個（1<a<N）のピースについて、同一のピースに対して複数の異なる暗号鍵で各々暗号化されていることが示されている。同図においては、同一のピースの暗号化に用いられる暗号鍵の個数は、ピース毎に異なっている。ピースＣ１に対する暗号鍵の個数はｍ個であり、ピースＣ３に対する暗号鍵の個数は２個である。但し、本実施の形態においては、同一のピースの暗号化に用いられる暗号鍵の個数はピース毎に同じであっても良い。ピース処理装置では、このように、Ｎ個のうちa個（1<a<N）のピースについて、同一のピースに対して複数の異なる暗号鍵で各々暗号化することにより、例えば、重要度の高いほど暗号鍵の数を増やすようにすることができる。
【００３５】
尚、本実施の形態においては、これに限らず、例えば、図６に示されるように、「a=N」の場合、即ち、Ｎ個全てのピースについて、同一のピースに対してｍ個の異なる暗号鍵で各々暗号化されていても良い。このような構成によれば、暗号化ピースのシーケンスのバリエーションを多くすることができる。また、図７に示されるように、「a=1」の場合、即ち、Ｎ個のうち１個のピースのみ、ｍ個の異なる暗号鍵で暗号化されていても良い。このような構成によれば、配信効率を向上させることができる。
【００３６】
このような構成において、シーダ５２は、リーチャ５０からのアクセスにより、当該シーダ５２が記憶している暗号化ピースのシーケンスを示すピース情報をリーチャ５０に送信する。図８は、ピース情報のデータ構成を例示する図である。同図においては、ピースＣ１に対応する暗号化ピースについては、復号鍵K(1, 1 )により復号されることが示され、ピースＣ２に対応する暗号化ピースについては、復号鍵K(3, 2 ) により復号されることが示されている。即ち、ピース情報によって、各暗号化ピースと各暗号化ピースの復号化のための復号鍵の対応関係とが示される。シーダ５２は、当該ピース情報に基づいて暗号化ピースを要求するピース要求をリーチャ５０から受信すると、要求された暗号化ピースを保持しているか否かを判断し、当該判断結果が肯定的である場合に、当該暗号化ピースをリーチャ５０に送信する。
【００３７】
＜リーチャ５０の構成＞
次に、上述したハードウェア構成において、リーチャ５０のＣＰＵが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。図９は、リーチャ５０の機能的構成を例示する図である。リーチャ５０は、コンテンツ取得部５００と、復号情報要求部５０１と、復号情報取得部５０２と、コンテンツ復号部５０３と、デバイス鍵記憶部５０４と、ＭＫＢ記憶部５０５と、ＭＫＢ処理部５０６と、変換部５０７と、鍵束復号部５０８とを有する。コンテンツ取得部５００と、復号情報要求部５０１と、復号情報取得部５０２と、コンテンツ復号部５０３と、ＭＫＢ処理部５０６と、変換部５０７と、鍵束復号部５０８の実体は、ＣＰＵのプログラム実行時にＲＡＭなどの記憶装置上に生成されるものである。デバイス鍵記憶部５０４と、ＭＫＢ記憶部５０５とは、例えばＨＤＤなどの外部記憶装置に記憶されている。尚、リーチャ５０には、当該リーチャ５０を識別可能なリーチャ識別情報が割り当てられているものとする。リーチャ識別情報は例えばＨＤＤなどの外部記憶装置に記憶されている。
【００３８】
コンテンツ取得部５００は、Ｐ２ＰネットワークＮＴを介して、暗号化コンテンツを構成する各暗号化ピースをシーダ５２の少なくとも１つから受信する。具体的には、コンテンツ取得部５００は、まず、販売サーバ５４からTorrent Fileを受信する。Torrent Fileは、トラッカ５１に接続するためのトラッカ接続先情報を含むトラッカ情報と、暗号化コンテンツを構成する各暗号化ピースとしてどのようなものがあるかを示すファイル情報とを含んでいる。図１０は、Torrent Fileを例示する図である。同図においては、ファイル情報として、各暗号化ピースを特定するための情報として、各暗号化ピースに対応するインデックスが各々示されている。トラッカ接続先情報は、例えば、トラッカ５１のＩＰアドレスや、ＵＲＬなどである。
【００３９】
コンテンツ取得部５００は、Torrent Fileに基づいて、Ｐ２ＰネットワークＮＴを介してトラッカ５１にアクセスして、Ｐ２ＰネットワークＮＴに接続されているノード（シーダ５２、他のリーチャ５０）にアクセスするためのノード情報を当該トラッカ５１から受信する。ノード情報の詳細については後述する。そして、コンテンツ取得部５００は、ノード情報に基づいて、ノードの少なくとも１つにアクセスして、当該ノードが記憶している自身の保持する暗号化ピースのシーケンスを示すピース情報を取得する。そして、コンテンツ取得部５００は、ピース情報に基づいて、暗号化コンテンツを構成する各暗号化ピースを要求するピース要求をノードの少なくとも１つに送信し、当該ピース要求に応じて送信される暗号化ピースを受信することにより、暗号化コンテンツを構成する全ての暗号化ピース（ピースシーケンス）を取得する。例えば、図３に示した各暗号化ピースのうち、網掛けされた全ての暗号化ピースをピースシーケンスとしてコンテンツ取得部５００は取得する。取得した暗号化ピースをコンテンツ取得部５００は例えば外部記憶装置に記憶する。
【００４０】
デバイス鍵記憶部５０４は、リーチャ５０に割り当てられたデバイス鍵を、当該デバイス鍵に割り当てられたデバイス鍵識別情報と対応付けて記憶する。デバイス鍵記憶部５０４に記憶されるデバイス鍵の数は、１つの場合もあるし、複数の場合もある。ＭＫＢ記憶部５０５は、異なる複数の各リーチャ５０にそれぞれ割り当てられたデバイス鍵のそれぞれで復号可能に暗号化された平文鍵である暗号化平文鍵を含むＭＫＢを記憶する。このＭＫＢには、ＭＫＢを識別可能なＭＫＢ識別情報が割り当てられている。ＭＫＢ識別情報は、例えば、ＭＫＢの通し番号である。図１１は、ＭＫＢのデータ構成を例示する図である。同図に示されるように、ＭＫＢは、ＭＫＢ識別情報と、平文鍵検証用レコードと、複数の暗号化平文鍵とを含む。平文鍵検証用レコードは、ＭＫＢを検証するために用いられる。具体的には、平文鍵検証用レコードは、固定データ（例えば、‘０１２３４ＸＸＸ’などの数列）を平文鍵Ｋｍで暗号化したものである。固定データはリーチャ５０の例えばＨＤＤなどの外部記憶装置に別途予め記憶される。暗号化平文鍵は、１つのデバイス鍵識別情報又はデバイス鍵識別情報のグループ毎に、１つずつレコードが分かれてＭＫＢに含まれる。例えば、デバイス鍵識別情報‘１’に対応する１つの暗号化平文鍵と、デバイス鍵識別情報‘１００’〜‘１９９’に対応する１つの暗号化平文鍵とが別々のレコードとして含まれる。各デバイス鍵識別情報には上述したようにデバイス鍵が対応しているから、各暗号化平文鍵は、デバイス鍵識別情報に対応するデバイス鍵に含まれる鍵情報の１つによって復号可能である。なお、図１１では、デバイス鍵を用いて平文鍵を（共通鍵暗号方式により）暗号化する場合のＭＫＢのデータ構成を例示したが、これに限らず、この暗号化を公開鍵暗号方式により行っても良い。この場合、ＭＫＢに含まれる暗号化平文鍵は、例えば、デバイス鍵識別情報‘１’に対応するデバイス鍵に対応する公開鍵を用いて平文鍵を暗号化した暗号化平文鍵である。（‘１’以外のデバイス鍵識別情報についても同様である。）また、ＭＫＢに含まれる暗号化平文鍵は１つであっても良い。この場合、デバイス鍵識別情報をＭＫＢに含めなくても良い。また、用いるＭＫＢ方式によっては（例えば、参考文献２において開示されている公開鍵暗号に基づいたＭＫＢ方式を用いる場合）、デバイス鍵識別情報をＭＫＢに含めなくても良い。
【００４１】
復号情報要求部５０１は、ピースシーケンスを復号するための復号情報を要求する要求メッセージを鍵サーバ５３へ送信する。要求メッセージは、ピースシーケンスに含まれる暗号化ピースに対応付けられているコンテンツ識別情報及び当該リーチャ５０に割り当てられたリーチャ識別情報を含む。復号情報とは、ピースシーケンスを復号するための各復号鍵が暗号化された各暗号化復号鍵を含む暗号化鍵束と、シード情報と、暗号化鍵束の復号に用いるＭＫＢを識別可能なＭＫＢ識別情報とを含む。復号鍵の詳細については後述する。要求メッセージは、更に、各復号鍵のシーケンスを指定する情報として、ピースシーケンスにおける各暗号化ピースのインデックスの組み合わせ（シーケンス）を示すインデックス情報を含む。このようなシーケンスは、例えば、以下のように表される。
{ ( i1, 1 ), ( i2, 2 ), …, ( iN, N) }
（ただし、1≦i1, …, iN≦m）
【００４２】
復号情報取得部５０２は、要求メッセージに従って鍵サーバ５３から送信された復号情報を受信する。シード情報とは、リーチャ５０が保持する各暗号化ピースを復号するための鍵束の暗号化に用いられた情報であり、暗号化された鍵束（暗号化鍵束）の復号に用いられる一時情報である。ＭＫＢ処理部５０６は、復号情報取得部５０２が取得した復号情報に含まれるＭＫＢ識別情報と、ＭＫＢ記憶部５０５に記憶されているＭＫＢに割り当てられているＭＫＢ識別情報とが同一である場合、後者のＭＫＢに含まれる暗号化平文鍵のうち、デバイス鍵記憶部５０４に記憶されたデバイス鍵で復号可能な暗号平文鍵を復号して、平文鍵を得る。また、ＭＫＢ処理部５０６は、復号情報取得部５０２が取得した復号情報に含まれるＭＫＢ識別情報と、ＭＫＢ記憶部５０５に記憶されているＭＫＢに割り当てられているＭＫＢ識別情報とが同一でない場合、前者のＭＫＢ識別情報が割り当てられてＭＫＢを例えばトラッカ５１、販売サーバ５４又はコンテンツ製作者が用意したサーバなど鍵サーバ５３以外の他の通信装置から取得する。そして、ＭＫＢ処理部５０６は、取得したＭＫＢに含まれる暗号化平文鍵のうち、デバイス鍵記憶部５０４に記憶されたデバイス鍵で復号可能な暗号平文鍵を復号して、平文鍵を得る。
【００４３】
変換部５０７は、復号情報取得部５０２が取得した復号情報に含まれるシード情報を用いてＭＫＢ処理部５０６が得た平文鍵を以下の式１により変換して、変換平文鍵を得る。変換平文鍵は、復号情報取得部５０２が取得した復号情報に含まれる暗号化鍵束を復号するための鍵束復号鍵となる。Km’は変換平文鍵を表す。Kmは、平文鍵を表す。Sはシード情報を表す。Fは関数を表す。関数Fとして、例えば、‘F(x,y) =E( x )[ y ] A y’としても良いし、‘F(x,y) =D( x )[ y ] A y’としても良いし、‘F(x,y) =H( x || y)’としても良い。Aは、ビット毎の排他的論理和を表す。Dは、復号関数を表し、D( Key )[ X ]はXがKeyで復号されていることを表す。つまり、‘C=D( Key )[ E( Key )[ C ] ]’である。Hは、ハッシュ関数を表す。||は、データの連結を表す。
Km’=F(Km, S)・・・（式１）
【００４４】
鍵束復号部５０８は、変換部５０７が変換した変換平文鍵を用いて、以下の式２により、復号情報取得部５０２が取得した暗号化鍵束を復号して、コンテンツ取得部５００が取得した各暗号化ピースを復号するための各復号鍵を得る。Zは、鍵束を表す。K(i1,1),K(i2,2), …,K(iN,N)（ただし、1≦i1, …, iN≦m）は、各ピースＣ１〜ＣＮに各々対応する復号鍵であって鍵束に含まれる各復号鍵を表す。
K(i1,1)||K(i2,2)|| ... ||K(iN,N)=D( Km’)[Z]・・・（式２）
【００４５】
コンテンツ復号部５０３は、コンテンツ取得部５００が取得した各暗号化ピースを、鍵束復号部５０８が得た各復号鍵を用いて各々復号して、復号した各ピースから構成されるコンテンツを取得する。
【００４６】
尚、リーチャ５０は、上述したように、シーダとして機能する場合もあるが、その機能的構成については、シーダ５２の構成において説明したため、ここでは、その説明を省略する。
【００４７】
＜鍵サーバ５３の構成＞
次に、鍵サーバ５３のＣＰＵが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。図１２は、鍵サーバ５３の機能的構成を例示する図である。鍵サーバ５３は、制御部５３０と、パケット処理部５３１と、ネットワークインターフェース部５３２と、平文鍵記憶部５３３と、コンテンツ復号鍵記憶部５３４と、シーケンス情報記憶部５３６と、シーケンス情報照合部５３５と、暗号化鍵供給部５３７と、シード情報生成部５３８と、暗号化部５３９とを有する。制御部５３０と、シーケンス情報照合部５３５と、ネットワークインターフェース部５３２と、パケット処理部５３１と、暗号化鍵供給部５３７と、シード情報生成部５３８と、暗号化部５３９との実体は、ＣＰＵのプログラム実行時にＲＡＭなどの記憶装置上に生成されるものである。コンテンツ復号鍵記憶部５３４と平文鍵記憶部５３３とは、例えば、外部記憶装置に記憶されるものである。
【００４８】
制御部５３０は、鍵サーバ５３全体を制御し、ネットワークインターフェース部５３２を介して、リーチャ５０から要求メッセージを受信したり、シーケンス情報照合部５３５から暗号化鍵供給部５３７への指示を仲介したりする。パケット処理部５３１は、リーチャ５０などの外部装置に送信する各種データをパケット化してネットワークインターフェース部５３２に受け渡したり、ネットワークインターフェース部５３２から受け渡されたパケットを基にデータを取得したりする。ネットワークインターフェース部５３２は、外部装置との通信を制御し、パケット処理部５３１から受け渡されたパケット化されたデータを送信したり、外部装置から受信したパケットをパケット処理部５３１に受け渡したりする。
【００４９】
平文鍵記憶部５３３は、平文鍵を、当該平文鍵が暗号化された暗号化平文鍵を含むＭＫＢに対応付けられているＭＫＢ識別情報及びコンテンツ識別情報と対応付けて記憶している。
【００５０】
コンテンツ復号鍵記憶部５３４は、例えば、ＨＤＤなどの外部記憶装置において構成され、各暗号化ピースを各々復号するための各復号鍵を各々記憶する。各復号鍵は、上述したように、例えばK ( i, j )として表される。
【００５１】
シーケンス情報記憶部５３６は、例えばＨＤＤなどの外部記憶装置において構成され、リーチャ５０に過去に送信した全ての鍵束に各々対応するシーケンスを示すシーケンス情報をコンテンツ識別情報及びリーチャ識別情報と対応付けて記憶する。鍵束に各々対応するシーケンスは、上述したインデックス情報に示されるシーケンスと同様に、例えば以下のように表される。
{(i1,1),(i2,2),…,(iN,N)}
（ただし、1≦i1,…,iN≦m）
【００５２】
シーケンス情報照合部５３５は、シーケンス情報記憶部５３６に記憶されたシーケンス情報と、リーチャ５０から受信したインデックス情報とを照合することにより、インデックス情報によって示されるシーケンスに対応する鍵束を送信するか否かを決定する。具体的には、シーケンス情報照合部５３５は、インデックス情報に示されるシーケンスと同一のシーケンスを示すシーケンス情報がシーケンス情報記憶部５３６に記憶されていない場合、インデックス情報によって示されるシーケンスに対応する鍵束を送信することを決定する。鍵束は、例えば、以下のように表される。ここでは、各ピースＣ１〜ＣＮに各々対応する復号鍵が左から順に配列されて表されている。
｛K(i1,1), K(i2,2), …, K(iN,N)｝
（ただし、1≦i1, …,iN≦m）
【００５３】
そして、シーケンス情報照合部５３５は、鍵束を送信することを決定した場合、制御部５３０を介して、当該鍵束の暗号化に用いるシード情報を生成することをシード情報生成部５３８に指示する。また、シーケンス情報照合部５３５は、鍵束を送信しないことを決定した場合、制御部５３０を介して、当該鍵束の当該リーチャ５０への送信禁止を暗号化鍵供給部５３７に指示する。
【００５４】
シード情報生成部５３８は、リーチャ５０から受信した要求メッセージに含まれるコンテンツ識別情報及びリーチャ識別情報と、秘密情報とを用いて、以下の式３によりシード情報を計算することにより、シード情報を生成する。秘密情報とは、リーチャ５０に対して公開されていない情報であり、鍵サーバ５３が例えばＨＤＤなどの外部記憶装置に記憶している情報である。Kは、秘密情報を表す。Sは、シード情報を表す。CIDは、コンテンツ識別情報を表す。LIDは、リーチャ識別情報を表す。
S=H(K || CID || LID)・・・(式３)
【００５５】
暗号化部５３９は、シーケンス情報照合部５３５が送信することを決定した鍵束を暗号化する。具体的には、暗号化部５３９は、シーケンス情報照合部５３５が送信することを決定した鍵束のシーケンスに応じた復号鍵をコンテンツ復号鍵記憶部５３４から各々読み出し、リーチャ５０から受信した要求メッセージに含まれるコンテンツ識別情報に対応付けられた平文鍵を平文鍵記憶部５３３から読み出す。そして、暗号化部５３９は、平文鍵及びシード情報生成部５３８が生成したシード情報を用いて、以下の式４により、各復号鍵を含む鍵束を暗号化して、暗号化された各復号鍵を含む暗号化鍵束を得る。Zは、暗号化鍵束を表す。K(i1,1),K(i2,2), …,K(iN,N)は、上述したように、各復号鍵を表す。Eは、上述したように暗号化関数を表す。
Z=E( F(Km, S) )[K(i1,1)||K(i2,2)|| ... ||K(iN,N)]・・・（式４）
【００５６】
暗号化鍵供給部５３７は、暗号化部５３９が鍵束を暗号化して得た暗号化鍵束、鍵束の暗号化に用いたシード情報及びリーチャ５０が用いるべきＭＫＢのＭＫＢ識別情報を含む復号情報を、ネットワークインターフェース部５３２を介してリーチャ５０に送信する。リーチャ５０が用いるべきＭＫＢのＭＫＢ識別情報とは、暗号化部５３９が鍵束の暗号化に用いた平文鍵に対応付けられているＭＫＢ識別情報である。
【００５７】
＜トラッカ５１の構成＞
次に、トラッカ５１の構成について説明する。トラッカ５１は、リーチャ５０からアクセスされると、Ｐ２ＰネットワークＮＴに接続されているノードにアクセスするための接続先情報としてノード情報を当該リーチャ５０に対して送信する。ノード情報は、ＩＰアドレスとポート番号との組を含んでいる。図１３は、ノード情報のデータ構成を例示する図である。同図においては、ノードＡ〜Ｂは各々、リーチャ５０Ａ〜５０Ｂ、シーダ５２Ａ〜５２Ｃのいずれかであり、当該各ノードのＩＰアドレスとポート番号との組が示されている。
【００５８】
ここで、トラッカ５１がノード情報をどのように生成するかについて説明する。例えば、複数のトラッカ５１が存在しえる場合、そのうちの１つのトラッカ５１に接続するためのトラッカ接続先情報を含むTorrent Fileをあるノードが保持しており、また、暗号化ピースを保持しているとする。当該ノードは、Torrent Fileのトラッカ接続先情報を参照し、当該ノードを一意に識別するためのノード識別情報をトラッカ５１に送信する。ノード識別情報とは、例えば、当該ノードのＩＰアドレスとポート番号とである。トラッカ５１は、当該ノード識別情報を受信するとこれを用いて図１３に示されるようなノード情報を生成する。
【００５９】
（２）動作
次に、本実施の形態にかかるコンテンツ配信システムで行うコンテンツ配信処理の手順について図１４を用いて説明する。尚、リーチャ５０は、暗号化ピースを他のリーチャ５０からも受信可能であるが、ここでは、説明の便宜上、暗号化ピースをシーダ５２Ａ〜５２Ｃからの少なくとも１つから受信するものとする。
【００６０】
リーチャ５０は、まず、販売サーバ５４にアクセスして、Torrent Fileを取得する（ステップＳ１）。そして、リーチャ５０は、Torrent Fileに含まれるトラッカ情報に含まれるトラッカ接続先情報を用いてトラッカ５１にアクセスすると（ステップＳ２）、トラッカ５１はリーチャ５０に対して、ノード情報を送信する（ステップＳ３）。リーチャ５０は、ノード情報を受信すると（ステップＳ４）、ノード情報を用いて、例えばシーダ５２Ａ〜５２Ｃの少なくとも１つにアクセスする（ステップＳ５）。シーダ５２は、リーチャ５０からアクセスされると、自身の保持する暗号化ピースのシーケンスを示すピース情報をリーチャ５０へ送信する（ステップＳ６）。
【００６１】
リーチャ５０は、ピース情報を受信すると（ステップＳ７）、当該ピース情報を用いて、少なくとも１つのシーダ５２にアクセスする(ステップＳ８)。そして当該シーダ５２に対して、各ピースＣ１〜ＣＮに各々対応して複数存在しえる暗号化ピースのうち少なくとも１つを要求するピース要求をリーチャ５０は送信して、各暗号化ピースを受信する。シーダ５２は、リーチャ５０からのピース要求に応じて、自身の保持する暗号化ピースをリーチャ５０に送信する（ステップＳ９）。具体的には、リーチャ５０は、例えば、シーダ５２Ｂにアクセスして受信したピース情報を用いて、ピースＣ１が暗号化された暗号化ピースE( K( i1, 1 ) )[ C1 ]（i1は1≦i1≦mの整数）のうち例えば「i1=1」の暗号化ピースをシーダ５２Ｂが保持しているか否かを判断し、当該判断結果が肯定的である場合、当該シーダ５２Ｂにアクセスして、当該暗号化ピースE( K( 1, 1 ) )[ C1 ]をシーダ５２Ｂから受信することによりこれを取得する。尚、シーダ５２Ｂが当該暗号化ピースE( K( 1, 1 ) )[ C1 ]を実際には保持していなかった場合、リーチャ５０は、次いで、他のシーダ５２（例えばシーダ５２Ｃ）にアクセスして、当該他のシーダ５２Ｃからピース情報を取得する。そして、リーチャ５０は、上述と同様にして、ピース情報を用いて、当該暗号化ピースをシーダ５２Ｃが保持しているか否かを判断して、当該判断結果が肯定的である場合、シーダ５２にアクセスして、当該暗号化ピースの取得を試みる。リーチャ５０は、このような処理を繰り返して、各暗号化ピースから構成される暗号化コンテンツ｛E( K( i1, 1 ) )[ C1 ], E( K( i2, 2 ) )[ C2 ], …, E( K( iN, N ))[ CN ]｝を得る。
【００６２】
なお、リーチャ５０が、ピースＣｊ（1≦j≦N）に対応して複数存在しえる暗号化ピースのうちいずれの暗号化ピースを取得対象とするか、即ち、E( K( i1, j ) )[ Cj ]（i1は1≦i1≦mの整数）につきi1を「１」から「ｍ」のうちいずれの値にするかについては、任意である。従って、リーチャ５０が、各ピースＣ１〜ＣＮに対応して各々取得した暗号化ピースにシーケンス｛( i1, 1 ), ( i2, 2 ), …,(iN, N )｝は、任意のものとなる。
【００６３】
また、ステップＳ９で送信される暗号化ピースを完全には受信することができないと判断されたとき、リーチャ５０は、ステップＳ９よりも前のいずれかのステップに戻って処理をやり直すことができる。完全には受信することはできないと判断される場合とは、例えば、暗号化ピースや特定の暗号化ピースの一部を受信していたとしても、それらの取得を試みて失敗した回数や、取得を開始してからの時間が所定の閾値以上となる場合などである。
【００６４】
リーチャ５０は、コンテンツを構成する各ピースに各々対応する暗号化ピースであって暗号化コンテンツを構成する全ての暗号化ピースを取得すると、各暗号化ピースを各々復号するため復号情報を要求する要求メッセージを鍵サーバ５３に送信する（ステップＳ１０）。この要求メッセージには、各復号鍵に対応するシーケンスを示すインデックス情報｛( i1, 1 ),…, ( iN, N)｝と、コンテンツ識別情報及びリーチャ識別情報とが含まれる。
【００６５】
鍵サーバ５３の制御部５３０は、ネットワークインターフェース部５３２を介して、当該要求メッセージを受信すると（ステップＳ１１）、シーケンス情報照合部５３５は、ステップＳ１１で受信された要求メッセージに含まれるインデックス情報を用いて、照合処理を行う（ステップＳ１２）。図１５は、照合処理の手順を示すフローチャートである。照合処理では、シーケンス情報照合部５３５は、ステップＳ１１で受信された要求メッセージに含まれるインデックス情報と、シーケンス情報記憶部５３６に記憶されているシーケンス情報とを照合し（ステップＳ１４０）、インデックス情報に示されるシーケンスと同一のシーケンスを示すシーケンス情報がシーケンス情報記憶部５３６に記憶されているか否かを判断する（ステップＳ１４１）。即ち、リーチャ５０から要求されている鍵束が過去にリーチャ５０のいずれかに送信されたか否かが判断される。
【００６６】
当該判断結果が否定的である場合（ステップＳ１４１：ＮＯ）、シーケンス情報照合部５３５は、インデックス情報に示されるシーケンスに対応する鍵束｛K( i1, 1 ), K( i2, 2 ), …, K( iN, N )｝を送信することを決定する。そして、シーケンス情報照合部５３５は、当該シーケンスを示すシーケンス情報をシーケンス情報記憶部５３６に記憶させる（ステップＳ１４２）。次いで、シーケンス情報照合部５３５は、制御部５３０を介して、シード情報を生成するようシード情報生成部５３８に指示する。尚、ステップＳ１４１の判断結果が肯定的である場合、シーケンス情報照合部５３５は、当該鍵束を送信しないことを決定し、制御部５３０を介して、当該鍵束の当該リーチャ５０への送信禁止を暗号化鍵供給部５３７に指示する（ステップＳ１４４）。
【００６７】
ここでは、シード情報生成部５３８は、制御部５３０を介してシーケンス情報照合部５３５からシード情報の生成が指示されるとする。図１４に戻り、この場合、シード情報生成部５３８は、上述の式３によりシード情報を計算することにより、シード情報を生成する。次いで、暗号化部５３９は、シーケンス情報照合部５３５が送信することを決定した鍵束のシーケンスに応じた復号鍵をコンテンツ復号鍵記憶部５３４から各々読み出し、リーチャ５０から受信した要求メッセージに含まれるコンテンツ識別情報に対応付けられた平文鍵を平文鍵記憶部５３３から読み出す。そして、暗号化部５３９は、平文鍵記憶部５３３から読み出した平文鍵及びシード情報生成部５３８が生成したシード情報を用いて、上述の式４により、鍵束を暗号化して、暗号化鍵束を得る（ステップＳ１３）。その後、暗号化鍵供給部５３７は、ステップＳ１３で得られた暗号化鍵束、鍵束の暗号化に用いたシード情報及びリーチャ５０が用いるべきＭＫＢのＭＫＢ識別情報を含む復号情報を、ネットワークインターフェース部５３２を介してリーチャ５０に送信する（ステップＳ１４）。
【００６８】
一方、リーチャ５０は、復号情報を鍵サーバ５３から受信した場合（ステップＳ１５：ＹＥＳ）、ＭＫＢ処理部５０６がＭＫＢ処理を行う（ステップＳ１６）。図１６は、ＭＫＢ処理部５０６が行うＭＫＢ処理の手順を示すフローチャートである。同図に示されるＭＫＢ処理は、例えば上述の参考文献２において開示されているＭＫＢ方式に則っている。ＭＫＢ処理部５０６は、復号情報に含まれるＭＫＢ識別情報を用いて、当該リーチャ５０が用いるべきＭＫＢを取得する（ステップＳ１５１）。復号情報に含まれるＭＫＢ識別情報と、ＭＫＢ記憶部５０５に記憶されているＭＫＢに対応付けられているＭＫＢ識別情報とが同一である場合には、ＭＫＢ処理部５０６は、ＭＫＢ記憶部５０５からＭＫＢを読み出す。また、復号情報に含まれるＭＫＢ識別情報と、ＭＫＢ記憶部５０５に記憶されているＭＫＢに対応付けられているＭＫＢ識別情報とが同一でない場合には、ＭＫＢ処理部５０６は、復号情報に含まれるＭＫＢ識別情報が対応付けられたＭＫＢを例えばトラッカ５１、販売サーバ５４又はコンテンツ製作者が用意したサーバなど鍵サーバ５３以外の他の通信装置に要求してこれを受信する。そして、このようにして取得したＭＫＢに含まれている暗号化平文鍵のうち、デバイス鍵記憶部５０４に記憶されているデバイス鍵で復号可能な暗号化平文鍵とデバイス鍵との組をＭＫＢ処理部５０６は検索する（ステップＳ１５２）。つまり、ＭＫＢ処理部５０６は、どのデバイス鍵を用いてどの暗号化平文鍵を復号すればよいかを決定する。この検索は、例えば、各デバイス鍵に割り当てられたデバイス鍵識別情報を用いてＭＫＢ処理部５０６は行う。尚、各暗号化平文鍵に識別情報が割り当てられている場合にはＭＫＢ処理部５０６はこの識別情報も用いて検索を行えば良い。そしてＭＫＢ処理部５０６は、検索の結果得られた組におけるデバイス鍵を用いて暗号化平文鍵を復号して、平文鍵を得る（ステップＳ１５３）。
【００６９】
図１４に戻り、リーチャ５０の変換部５０７は、ステップＳ１５で受信された復号情報に含まれるシード情報を用いて、ステップＳ１６で得られた平文鍵を上述の式１により変換して、変換平文鍵を得る。リーチャ５０の鍵束復号部５０８は、変換部５０７が変換した変換平文鍵を用いて、上述の式２により、ステップＳ１５で受信された復号情報に含まれる暗号化鍵束を復号して、コンテンツ取得部５００が取得した各暗号化ピースを復号するための各復号鍵を得る（ステップＳ１７）。そして、コンテンツ復号部５０３は、各復号鍵を用いて、各暗号化ピースE( K( i1, 1 ) )[ C1 ], E( K( i2, 2 ) )[ C2 ], …, E( K( iN, N )[ CN ])をそれぞれ復号し、復号した各ピースＣ１〜ＣＮを得て、これらから構成されるコンテンツＣを得る（ステップＳ１８）。即ち、リーチャ５０は、復号鍵K( i1, 1 )を用いてE( K( i1, 1 ) )[ C1 ]を復号して、ピースＣ１を得て、復号鍵K( i2, 2 )を用いてE( K( i2, 2 ) )[ C2 ]を復号して、ピースＣ２を得て、復号鍵K( iN, N )を用いてE( K( iN, N ))[ CN ]を復号して、ピースＣＮを得て、他のピースについても同様にして得ることにより、各ピースＣ１〜ＣＮから構成されるコンテンツＣを得る。
【００７０】
尚、リーチャ５０が無効化されている場合、ステップＳ１６で得られた平文鍵を用いて暗号化鍵束を復号しても、正しい復号鍵を得ることができない。従って、このような復号鍵を用いて各暗号化ピースを復号したとしても、正しく復号することができない。即ち、無効化されているリーチャ５０は、コンテンツを正しく復号することができず、コンテンツを利用できないことになる。
【００７１】
以上のように、Ｐ２Ｐネットワークを介して、同一のコンテンツを複数のリーチャ５０に配信する場合、暗号化ピースのシーケンスを用いて、鍵サーバ５３が鍵束の送信の可否を決定する。そして鍵サーバ５３が送信すると決定した鍵束をＭＫＢ方式を適用して暗号化することにより、暗号化した鍵束をリーチャ５０が復号するために平文鍵を必要とする構成にする。このような構成によれば、不正なリーチャ５０がいずれかであるかを示すブラックリストなどの情報を鍵サーバ５３が管理する必要がなく、不正なリーチャ５０を無効化して不正なリーチャ５０がコンテンツを利用することを阻止することができる。また、暗号化鍵束を復号するために必要な情報としてシード情報をリーチャ５０が鍵サーバ５３から送信する構成とすることにより、復号情報が要求される毎にシード情報を異ならせることができる。このため、リーチャ５０がコンテンツを利用するために鍵サーバ５３へアクセスすることを強制することができる。これは、万が一デバイス鍵が漏洩してしまった場合でも、リーチャ５０が鍵サーバ５３へアクセスすることなしに、漏洩したデバイス鍵のみを用いて暗号化鍵束を復号することができないことを意味する。即ち、デバイス鍵漏洩の被害を抑えることができる。また以上のような構成によれば、鍵サーバ５３において、例えば同一のリーチャ識別情報及びコンテンツ識別情報を利用して復号情報を要求する要求メッセージを監視することによって、不正なリーチャ５０の検出を行うことも可能になる。
【００７２】
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
【００７３】
＜変形例１＞
上述した実施の形態において、リーチャ５０で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記憶媒体に記録して提供するように構成しても良い。この場合には、プログラムは、リーチャ５０において上記記憶媒体から読み出して実行することによりＲＡＭなどの記憶装置上にロードされ、上記機能的構成において説明した各部が記憶装置上に生成される。鍵サーバ５３で実行される各種プログラムについても同様である。
【００７４】
＜変形例２＞
上述の実施の形態においては、鍵サーバ５３はシーケンス情報照合部５３５及びシーケンス情報記憶部５３６を備えるように構成し、リーチャ５０は、ステップＳ１０で鍵サーバ５３へ送信する要求メッセージにインデックス情報を含め、鍵サーバ５３は、ステップＳ１２でインデックス情報を用いて照合処理を行って、鍵束をリーチャ５０に送信するか否かを決定するようにした。しかし、鍵サーバ５３はシーケンス情報照合部５３５及びシーケンス情報記憶部５３６を備えず、リーチャ５０はステップＳ１０で鍵サーバ５３へ送信する要求メッセージにインデックス情報を含めず、鍵サーバ５３はステップＳ１２の照合処理を行わずに、ステップＳ１１の後ステップＳ１３以降の処理を行うようにしても良い。
【００７５】
また、上述の実施の形態において、図３に示したように、Ｎ個のうちａ個のピースについては、同一のピースに対して、各々異なるｍ個の暗号鍵で暗号化されるようにした。しかし、ａ個のピースについては、複数の暗号鍵ではなく１つの暗号鍵で暗号化されるが、（Ｎ−ａ）個のピースが暗号化される暗号鍵とは異なる暗号鍵で暗号化されるようにしても良い。また、Ｎ個の全てのピースが同一の暗号鍵で各々暗号化されるようにしても良い。
【００７６】
また、上述の実施の形態においては、コンテンツを構成する各ピースに対しては、１回の暗号化を施して、１つの復号鍵で復号可能であるように構成したが、少なくとも１つのピースに対して多重に暗号化を施し、当該ピースの復号に２つ以上の復号鍵が必要であるように構成しても良い。
【００７７】
ピースを複数の暗号化鍵で多重に暗号化する場合、各リーチャ５０には装置秘密情報が与えられており、リーチャ５０は、当該装置秘密情報を暗号鍵として、シーダ５２や他のリーチャ５０などの他のノードから受信した暗号化ピースを暗号化して、暗号化した当該暗号化ピースをその他のリーチャ５０に送信する。このように、暗号化ピースが各ノードから送信される度に暗号化が施されるようにする。例えば、暗号化を行ったリーチャ５０（例えばリーチャ５０Ａとする）は、自身のリーチャ識別情報も暗号化ピースの送信先のその他のリーチャ５０（例えばリーチャ５０Ｂとする）に送信する。リーチャ５０Ｂは、暗号化ピースに更なる暗号化を行ってその他のリーチャ５０（例えばリーチャ５０Ｃとする）に送信する場合、暗号化ピースを受信元であるリーチャ５０Ａのリーチャ識別情報と自身のリーチャ識別情報とをあわせてリーチャ５０Ｃへ送信する。
【００７８】
尚、リーチャ５０に与えられた装置秘密情報SA自体を、暗号化ピースを暗号化するための暗号化鍵として用いる必要は必ずしもなく、例えば、リーチャ５０が生成した乱数RAを用いて、ハッシュ値H(SA || RA)を計算してこれを暗号化鍵としても良いし、関数により暗号化鍵F(SA, RA)を計算しても良い。この場合、リーチャ５０（リーチャ５０Ａ）は、暗号化鍵の計算に用いた乱数RAもその他のリーチャ５０（リーチャ５０Ｂ）に送信する。リーチャ５０Ｂは、その他のリーチャ５０（リーチャ５０Ｃ）に暗号化ピースを送信する場合、リーチャ５０Ａから送信された乱数と自身が生成した乱数とをあわせてリーチャ５０Ｃに送信する。
【００７９】
また、リーチャ５０は暗号化ピース全体を暗号化する必要は必ずしもなく、暗号化ピースの一部分のみを暗号化しても良い。この場合、リーチャ５０(リーチャ５０Ａ)は、暗号化ピースのどの部分を暗号化したかに関する情報（例えば、暗号化ピースの先頭(０番目のデータとする)から３２バイト分のデータを暗号化した場合には(0,31)）をその他のリーチャ５０（リーチャ５０Ｂ）に送信する。リーチャ５０Ｂは、その他のリーチャ５０（リーチャ５０Ｃ）に暗号化ピースを送信する場合、リーチャ５０Ａが暗号化ピースのどの部分を暗号化したかに関する情報と自身が暗号化ピースのどの部分を暗号化したかに関する情報をあわせてリーチャ５０Ｃに送信する。この際、暗号化ピースに暗号化を行ったリーチャ５０の順番が分かるように、例えば、リーチャ５０Ａの次にリーチャ５０Ｂが暗号化したことが分かるように、暗号化ピースのどの部分を暗号化したかに関する情報を順番に並べていく。ここで、例えば、ピースの長さを１２８バイトとして、初期シーダ５２Ａはピース全体（例えば１２８バイト分のデータ）を暗号化し、次に暗号化ピースを受信したリーチャ５０Ａは先頭から１６バイト分のデータを暗号化し、リーチャ５０Ｃから暗号化ピースを受信したリーチャ５０Ｂは先頭から１６バイト飛ばした次の１６バイトのデータを暗号化する、というように暗号化ピースを受信した順番によってデータのどの部分を暗号化するかを予め定めるようにしても良い。この場合、暗号化ピースのどの部分を暗号化したかに関する情報に代えて、暗号化ピースがいくつのノード（リーチャ５０、シーダ５２）を経由してきたかに関する情報を用いれば良い。この情報は、リーチャ５０が暗号化ピースを受信したノードが、例えば初期シーダ５２Ａである場合’０‘であり、リーチャ５０Ａである場合’１‘、リーチャ５０Ｂである場合’２‘である。例えば、リーチャ５０Ｂは、リーチャ５０Ａから暗号化ピースを受信すると、この情報を‘１’から‘２’に上書きする。
【００８０】
また、ピースを複数の暗号化鍵で多重に暗号化する場合、リーチャ５０が鍵サーバ５３へ送信する上述の要求メッセージには、暗号化ピースが経由してきた全てのノードのノード識別情報を含ませる。また、上述のように暗号化鍵の生成に乱数を用いる場合、上述の要求メッセージには暗号化ピースが経由してきた全てのノードの乱数を含ませる。同様に、暗号化ピースのどの部分を暗号化したかに関する情報が含まれていても良いし、暗号化ピースがいくつのノードを経由してきたかに関する情報を含んでいても良い。
【００８１】
なお、上述の実施の形態におけるコンテンツ配信システムでは、‘1≦i1, …, iN≦m’であったが、以上のようにピースを複数の暗号化鍵で多重に暗号化する場合、‘m=1’としても良い。この場合、インデックス情報としてi1, …, iNを含めなくても良い。
【００８２】
一方、ピースを複数の暗号化鍵で多重に暗号化する場合の鍵サーバ５３は以下の通りである。鍵サーバ５３は、各リーチャ５０に与えられた装置秘密情報を保持している。鍵サーバ５３は、リーチャ５０から要求メッセージを受信すると、暗号化ピースが経由してきた全てのノードのノード識別情報から、暗号化ピースが経由してきた各ノードに与えられた装置秘密情報を検索し、これらを鍵束として取得する。上述のように暗号化鍵の生成に乱数を用いる場合、鍵サーバ５３は、暗号化ピースが経由してきた各ノードに与えられた装置秘密情報と、それに対応するノードの乱数とを用いて復号鍵を各々計算し（上述の例においてはH(SA || RA)又はF(SA, RA)である）、計算結果を鍵束として取得する。尚、鍵サーバ５３が各リーチャ５０に与えられた装置秘密情報を保持している必要は必ずしもなく、例えば、リーチャ５０（リーチャ識別情報の値をLIDAとする）に与えられる装置秘密情報が‘SA=H(Kmaster || LIDA)又はSA=F(Kmaster, LIDA)’と定められている場合、鍵サーバ５３はKmasterの値と関数H又はFのアルゴリズムのみを知っていれば良く、要求メッセージに含まれているLIDからその識別情報の対応するリーチャ５０に与えられた装置秘密情報を計算することができる。
【００８３】
また、ピースの暗号化は、ノードから送信される度にではなく、暗号化ピースが経由してきた全てのノードのうち少なくとも２つ以上により行われるようにしても良い。
【００８４】
このように、暗号化ピースを復号するための復号鍵又はその復号鍵を得るために必要な情報をリーチャ５０が鍵サーバ５３から受信するコンテンツ配信システムであれば、本実施の形態にかかるＭＫＢ方式による鍵束の暗号化を、種々のコンテンツ配信システムに適用することができる。
【００８５】
＜変形例３＞
上述した実施の形態において、鍵サーバ５３は、リーチャ５０から要求メッセージを受信した際に、リーチャ５０が適切なＭＫＢを保持しているか否かをチェックするようにしても良い。この場合、各暗号化ピースから構成されるコンテンツには、コンテンツ識別情報の他、各暗号化ピースを復号するための鍵束の暗号化及び暗号化鍵束の復号に用いるＭＫＢに割り当てられたＭＫＢ識別情報が対応付けられている。このコンテンツ識別情報とＭＫＢ識別情報との対応関係を例えば鍵サーバ５３が予め記憶している。リーチャ５０は、自身の保持するＭＫＢに対応付けられているＭＫＢ識別情報を要求メッセージに含めて鍵サーバ５３に送信する。鍵サーバ５３は、要求メッセージを受信すると、当該要求メッセージに含まれるコンテンツ識別情報を検索キーとして、当該コンテンツ識別情報に対応付けられて平文鍵記憶部５３３に記憶された平文鍵と、当該平文鍵に対応付けられているＭＫＢ識別情報との組を検索する。そして、鍵サーバ５３は、検索キーとして用いてコンテンツ識別情報に対応付けられて平文鍵記憶部５３３に記憶された対応付けられたＭＫＢ識別情報と、当該コンテンツ識別情報に対応付けられて鍵サーバ５３に予め記憶されたＭＫＢ識別情報と、リーチャ５０から受信した要求メッセージに含まれるＭＫＢ識別情報とが同一であるか否かを判定する。これらのＭＫＢ識別情報が同一であると判定した場合、鍵サーバ５３は処理を続行し、図１４のステップＳ１４の照合処理を行う。以降は上述の実施の形態と同様である。一方、これらのＭＫＢ識別情報が同一でないと判定した場合、その旨を鍵サーバ５３はリーチャ５０へ通知して、処理を終了する。このとき、鍵サーバ５３は、リーチャ５０が取得すべきＭＫＢの取得先に関する情報をリーチャ５０へ送信しても良い。ＭＫＢの取得先に関する情報とは、例えば、ＭＫＢを保持するサーバへアクセスするためのURL（Uniform Resource Locator）などのアクセス情報である。
【００８６】
以上のような構成によれば、リーチャ５０が適切なＭＫＢを保持していない場合には、照合処理や鍵束を暗号化して送信する処理を行わないため、不正なリーチャ５０のコンテンツの利用を抑制することができると共に、鍵サーバ５３の処理負担を軽減することができる。
【００８７】
＜変形例４＞
上述した実施の形態において、鍵サーバ５３は、平文鍵記憶部５３３を有し、平文鍵を記憶するように構成した。しかし、これに限らず、鍵サーバ５３は、平文鍵を記憶するのでなく、ＭＫＢとデバイス鍵とを記憶してこれらを用いて平文鍵を計算するようにしても良い。図１７は、本変形例にかかる鍵サーバ５３の構成を例示する図である。鍵サーバ５３は、平文鍵記憶部５３３の代わりに、ＭＫＢを記憶するＭＫＢ記憶部５４１と、デバイス鍵を記憶するデバイス鍵記憶部５４２とを有し、更にＭＫＢ処理部５４０を有する。ＭＫＢ処理部５４０は、ＭＫＢ記憶部５４１に記憶されたＭＫＢに含まれる暗号化平文鍵のうち、デバイス鍵記憶部５４２に記憶されたデバイス鍵で復号可能な暗号化平文鍵を復号して、平文鍵を得る。暗号化部５３９は、ＭＫＢ処理部５４０が得た平文鍵と、上述のシード情報生成部５３８が生成したシード情報とを用いて、鍵束を暗号化して暗号化鍵束を得る。
【００８８】
また、この場合、鍵サーバ５３は、ＭＫＢをＭＫＢ記憶部５０５に予め記憶するのではなく、ＭＫＢをリーチャ５０から取得するようにしても良い。この場合、リーチャ５０は、復号情報を要求する要求メッセージに、リーチャ５０が有するＭＫＢのＭＫＢ識別情報ではなく、ＭＫＢ自体を含ませて鍵サーバ５３に送信するようにすれば良い。
【００８９】
＜変形例５＞
上述した実施の形態において、鍵サーバ５３は、復号情報をリーチャ５０に送信する際に、リーチャ５０が用いるべきＭＫＢのＭＫＢ識別情報の代わりに、当該ＭＫＢ自体を送信しても良い。この場合、リーチャ５０は鍵サーバ５３から受信したＭＫＢを用いて上述のＭＫＢ処理を行えば良い。このような構成によれば、リーチャ５０はＭＫＢを予め記憶しておく必要がないため、リーチャ５０のメモリリソースを節約することができる。
【００９０】
また、この場合、鍵サーバ５３は、ＭＫＢ全体をリーチャ５０に送信するのではなく、ＭＫＢに含まれる情報のうち、リーチャ５０が暗号化鍵束を復号するために必要な情報のみをリーチャ５０に送信するようにしても良い。リーチャ５０が暗号化鍵束を復号するために必要な情報とは、例えば、ＭＫＢに含まれる暗号化平文鍵のうち、リーチャ５０の有するデバイス鍵に割り当てられたデバイス鍵識別情報に対応してＭＫＢに含まれている暗号化平文鍵である。このような構成によれば、鍵サーバ５３がリーチャ５０にＭＫＢを送信する場合であっても、送信するデータ量を低減することができる。
【００９１】
また、この場合、鍵サーバ５３は、鍵束の暗号化には、ＭＫＢに含まれる各暗号化平文鍵自体ではなく、平文鍵を式１により変換した変換平文鍵（同式においてはKm’）を用いても良い。この場合、リーチャ５０の変換部５０７は、ＭＫＢ処理部５０６により得た平文鍵を式１により変換し、鍵束復号部５０８が、変換された平文鍵（変換平文鍵）を用いて暗号化鍵束を復号して鍵束を得る。
【００９２】
＜変形例６＞
上述した実施の形態において、ＭＫＢ識別情報は、ＭＫＢの通し番号であるとしたが、これに限らず、例えば、数字やアルファベット等を組み合わせた識別子であっても良いし、ＭＫＢのハッシュ値であっても良いし、ＭＫＢのバージョン情報であっても良いし、ＭＫＢに対するディジタル署名であっても良いし、ＭＫＢのファイル名であっても良い。図１１では、ＭＫＢにＭＫＢ識別情報が含まれる場合のＭＫＢのデータ構成を例示したが、これに限らず、例えば、ＭＫＢのハッシュ値をＭＫＢ識別情報とする場合など、ＭＫＢ自体から各ＭＫＢを識別可能な場合、ＭＫＢ識別情報をＭＫＢに含ませなくても良い。
【００９３】
＜変形例７＞
上述した実施の形態において、鍵サーバ５３は、異なる複数の各リーチャ５０に各々割り当てられたデバイス鍵を記憶し、鍵サーバ５３がＭＫＢを生成するようにしても良い。鍵サーバ５３は、以下の式５によりデバイス鍵を変換して（変換デバイス鍵という）、変換デバイス鍵を用いて平文鍵を暗号化した暗号化平文鍵を含むＭＫＢを生成する。Kd’は、変換デバイス鍵を表す。Kdは、リーチャ５０に割り当てられたデバイス鍵を表す。Fは、関数を表す。
Kd’=F(Kd, S)・・・（式５）
【００９４】
そして、鍵サーバ５３は、例えば、自身が生成したＭＫＢに含まれる各暗号化平文鍵が変換デバイス鍵を用いて復号される結果である平文鍵を用いて鍵束を暗号化する。そして、鍵サーバ５３は、自身が生成したＭＫＢ、鍵束を暗号化した暗号化鍵束及びシード情報を含む復号情報をリーチャ５０へ送信する。一方、リーチャ５０では、復号情報取得部５０２が復号情報を受信すると、変換部５０７が、デバイス鍵記憶部５０４に記憶されたデバイス鍵と、復号情報に含まれるシード情報とを用いて、上述の式５により変換デバイス鍵を計算する。そして、ＭＫＢ処理部５０６が、復号情報に含まれるＭＫＢに含まれる暗号化平文鍵のうち、計算された変換デバイス鍵を用いて復号可能な暗号化平文鍵を復号して、平文鍵を得る。そして、鍵束復号部５０８が、得られた平文鍵を用いて暗号化鍵束を復号して鍵束を得る。尚、鍵サーバ５３は、鍵束の暗号化には、自身が生成したＭＫＢに含まれる各暗号化平文鍵自体ではなく、平文鍵を式１により変換した変換平文鍵（同式においてはKm’）を用いても良い。この場合、リーチャ５０の変換部５０７は、ＭＫＢ処理部５０６により得た平文鍵を式１により変換し、鍵束復号部５０８が、変換された平文鍵（変換平文鍵）を用いて暗号化鍵束を復号して鍵束を得る。
【００９５】
尚、鍵サーバ５３は、デバイス鍵を変換せずに、当該デバイス鍵を用いて平文鍵を暗号化した暗号化平文鍵を含むＭＫＢを生成するようにしても良い。そして、鍵サーバ５３は、平文鍵を式１により変換した変換平文鍵を用いて鍵束を暗号化するようにしても良い。
【００９６】
＜変形例８＞
上述した実施の形態において、鍵サーバ５３は、ＭＫＢをＭＫＢ記憶部５０５に予め記憶している場合であっても、上述した式５によりデバイス鍵を変換した変換デバイス鍵を用いて平文鍵を暗号化しても良い。そして、鍵サーバ５３は、平文鍵を用いて鍵束を暗号化するようにしても良いし、平文鍵を式１により変換した変換平文鍵を用いて鍵束を暗号化するようにしても良い。
【００９７】
＜変形例９＞
上述した実施の形態において、リーチャ５０のＭＫＢ処理部５０６は、復号情報に含まれるＭＫＢ識別情報と、ＭＫＢ記憶部５０５に記憶されているＭＫＢに対応付けられているＭＫＢ識別情報とが同一でない場合に、例えばトラッカ５１、販売サーバ５４又はコンテンツ製作者が用意したサーバなど鍵サーバ５３以外の他の通信装置からＭＫＢを取得するようにした。しかし、他の装置は、これに限らず、鍵サーバ５３であっても良い。この場合、鍵サーバ５３は、例えば、復号情報をリーチャ５０へ送信する際にＭＫＢも共に送信すれば良い。また、ＭＫＢがTorrent Fileに含まれるようにしても良い。この場合、リーチャ５０に対してTorrent Fileを与える販売サーバなどの通信装置からリーチャ５０はＭＫＢを取得することになる。また、Torrent FileにＭＫＢの取得先のURLを含めても良い。この場合、リーチャ５０は、当該URLを用いてアクセス可能な他の通信装置からＭＫＢを取得する。また、ＭＫＢ自体も暗号化ピースのひとつとしてＰ２ＰネットワークＮＴで送受信されるようにしても良い。また、リーチャ５０は、他の通信装置からＭＫＢを取得するのではなく、例えばＣＤ−ＲＯＭなどの記憶媒体に記録されたＭＫＢをオフラインで取得するようにしても良い。
【００９８】
＜変形例１０＞
上述した実施の形態において、シード情報はリーチャ５０毎及びコンテンツ毎に異なる値となるように計算したが、これに限らない。例えばリーチャ５０をグループ分けした場合、同一グループのリーチャ５０には同一のシード情報を割り当てるようにしても良い。
【００９９】
＜変形例１１＞
【０１００】
上述した実施の形態において、鍵サーバ５３のシード情報生成部５３８は、上述の式３によりシード情報を計算したが、以下の式６によりシード情報を計算しても良い。Fは、関数を表す。
S=F( F(K, CID), LID)・・・（式６）
【０１０１】
また、上述した実施の形態において、暗号化部５３９は関数Eを用いて、鍵束を暗号化したが、鍵束のデータ長が大きい場合は、例えば関数Eを共通鍵暗号としてCBCモードを用いれば良い。この場合、リーチャ５０の鍵束復号部５０８が、暗号化鍵束を復号する際に用いる関数Dについても、同一の共通鍵暗号のCBCモードを用いれば良い。
【０１０２】
＜変形例１２＞
上述した実施の形態において、鍵サーバ５３の暗号化部５３９は、リーチャ５０から要求メッセージを受信した後に鍵束を暗号化して暗号化鍵を得たが、これに限らず、鍵束を予め暗号化して暗号化鍵束を予め記憶しておくようにしても良い。
【０１０３】
＜変形例１３＞
上述した実施の形態において、鍵サーバ５３は、鍵束を暗号化した暗号化鍵束と、シード情報とを含む復号情報をリーチャ５０に送信するようにした。しかし、鍵サーバ５３は、暗号化鍵束をリーチャ５０に送信せず、シード情報を復号情報としてリーチャ５０へ送信しても良い。この場合、リーチャ５０は、例えばトラッカ５１、販売サーバ５４又はコンテンツ製作者が用意したサーバなど鍵サーバ５３以外の他の通信装置から暗号化鍵束を受信することにより取得する。この場合、鍵サーバ５３は、上述の要求メッセージをリーチャ５０から受信すると、シード情報をリーチャ５０に送信すると共に、暗号化鍵束を当該リーチャ５０へ送信することを要求する送信依頼メッセージを当該他の通信装置に送信するようにしても良い。又は、鍵サーバ５３は、シード情報と、暗号化鍵束の取得先に関する情報とを含む復号情報をリーチャ５０へ送信しても良い。暗号化鍵束の取得先に関する情報とは、例えば、取得先のサーバへアクセスするためのURL（Uniform Resource Locator）などのアクセス情報である。暗号化鍵束の生成については、鍵サーバ５３が行い、生成した暗号化鍵束を鍵サーバ５３が当該他の通信装置へ渡すようにしても良いし、当該他の通信装置自体が暗号化鍵束の生成を行うようにしても良い。他の通信装置自体が暗号化鍵束の生成を行う場合には、鍵サーバ５３は、各暗号化ピースを復号するための各復号鍵を記憶していなくても良く、当該他の通信装置が各復号鍵を記憶し、鍵サーバ５３はシード情報を生成してこれを当該他の通信装置に送信すれば良い。即ちこの場合、鍵サーバ５３は、図１２に示した平文鍵記憶部５３３，コンテンツ復号鍵記憶部５３４，暗号化鍵供給部５３７及び暗号化部５３９を備えない構成であっても良く、シード情報生成部５３８は、パケット処理部５３１及びネットワークインターフェース部５３２を介してシード情報を当該他の通信装置に送信すれば良い。
【０１０４】
＜変形例１４＞
上述した実施の形態において、リーチャ５０がステップＳ１６で行うＭＫＢ処理は、参考文献２に記載されているＭＫＢ方式に則るものとしたが、これに限らず、例えば、参考文献２において開示されているＭＫＢ方式に則るようにしても良い。この場合、図１６に示したステップＳ１５２の処理が不要で、リーチャ５０は、ステップＳ１５１の後ステップＳ１５３で、デバイス鍵を用いて暗号化平文鍵を復号して平文鍵を得る。
【０１０５】
また、上述した実施の形態において、ＭＫＢのデータ構成として図１１に示したものを用いたが、これに限らない。例えば、上述の参考文献１において開示されているＭＫＢ方式を適用した場合のデータ構成が以下の参考文献３において開示されているが、このデータ構成を用いても良い。
（参考文献３）Advanced Access Content System (AACS), Introduction and Common Cryptographic Elements Revision 0.91, February 17, 2006.(http://www.aacsla.com/specifications/specs091/AACS_Spec_Common_0.91.pdf)
【０１０６】
＜変形例１５＞
上述した実施の形態において、図１４のステップＳ１６のＭＫＢ処理の後、リーチャ５０は、ステップＳ１６で得られた平文鍵が無効化されているか否か（又は正しい平文鍵が得られたか否か）を判定するようにしても良い。この場合、例えば、ＭＫＢに平文鍵検証用レコードを含ませる。平文鍵検証用レコードとは、例えば、固定データ（例えば、‘０１２３４ＸＸＸ’などの数列）を平文鍵Ｋｍで暗号化したものである。固定データはリーチャ５０に別途予め記憶させておく。図１８は、本変形例にかかるコンテンツ配信処理の手順について上述の実施の形態と異なる部分の手順を示すフローチャートである。ステップＳ１６の後、ステップＳ２０では、リーチャ５０は、ステップＳ１６で得られた平文鍵が無効化されているかを判定する。具体的には、リーチャ５０は、当該平文鍵を用いて、当該平文鍵を得るために用いたＭＫＢに含まれる平文鍵検証用レコードを復号して、固定データを得る。そして、リーチャ５０は、これと、予め記憶された固定データとが一致するか否かを判定する。前者と後者とが一致しない場合、平文鍵が無効化されていると判定する。これは即ち、リーチャ５０が無効化されているということである。前者と後者とが一致する場合、平文鍵が無効化されていないと判定する。これは即ち、リーチャ５０は無効化されていないということである。そして、平文鍵が無効化されていると判定した場合（ステップＳ２０：ＹＥＳ）、リーチャ５０は、リーチャ５０が無効化されている旨を表示装置に表示して処理を終了する（ステップＳ２１）。又は、リーチャ５０は、デバイス鍵の更新を促す旨を表示装置に表示するようにしても良い。一方、平文鍵が無効化されていないと判定した場合（ステップＳ２０：ＮＯ）、リーチャ５０は、上述と同様にしてステップＳ１７以降の処理を行う。ＭＫＢ方式によっては、無効化されるリーチャが平文鍵の計算に必要なデータ（例えば、暗号化平文鍵）をＭＫＢに含ませないことにより無効化を行う場合もある。つまり、無効化されたリーチャは平文鍵を計算することができない。この場合、無効化されていないリーチャ５０は、上述の平文鍵検証用レコードを用いて、データの読み取りエラーや計算間違いなど無く、正しい平文鍵が得られたか否かを判定するようにしても良い。図１１では、ＭＫＢに平文鍵検証用レコードが含まれる場合のＭＫＢのデータ構成を例示したが、これに限らず、上述の判定処理を行わない場合、平文鍵検証用レコードをＭＫＢに含ませなくても良い。
【０１０７】
このような構成によれば、平文鍵が無効化されている場合、暗号化鍵束を復号する処理を行わないため、リーチャ５０の処理負担を軽減することができる。それと共に、リーチャ５０が無効化されている旨をユーザに報知することができるため、不正なリーチャ５０の検出をスムーズに行うことができる。
【０１０８】
＜変形例１６＞
上述した実施の形態において、鍵サーバ５３はコンテンツ復号鍵記憶部５３４に各暗号化ピースを各々復号するための各復号鍵を各々記憶する例を説明したが、これに限らず、コンテンツ復号鍵記憶部５３４を持たない鍵サーバ５３の構成も可能である。以下、各復号鍵（例えばK ( i, j )として表される）を記憶せず、計算によって各復号鍵を求める方法の例を説明する。例えば、‘K ( i, j )=H(Kmaster’ || CID || i || j)’と定める。ここで、Kmaster’は鍵サーバ５３が保持する秘密情報であり、CIDはリーチャ５０からの要求メッセージに含まれているコンテンツ識別情報である。この場合、鍵サーバ５３は、Kmaster’の値をコンテンツ復号鍵記憶部５３４に記憶しておけば良く、要求メッセージに含まれているCIDからリーチャ５０に与えるべき復号鍵K ( i, j )を計算することができる。K ( i, j )の計算方法は上述の方法に限らず、例えば、鍵サーバ５３が保持する秘密情報をコンテンツ毎（つまりCID毎）に用意（KmasterCIDと表す）し、‘K ( i, j )=F(KmasterCID, i || j)’と定めても良い。この場合、鍵サーバ５３は、KmasterCIDの値をコンテンツ復号鍵記憶部５３４に記憶しておけば良く、要求メッセージに含まれているCIDから用いるべきKmasterCIDをコンテンツ復号鍵記憶部５３４から取得し、リーチャ５０に与えるべき復号鍵K ( i, j )を計算することができる。
【０１０９】
このような構成によれば、鍵サーバ５３はコンテンツ復号鍵記憶部５３４に各暗号化ピースを各々復号するための各復号鍵を各々記憶する必要がなく、マスター鍵のみを記憶しておけばよいため、コンテンツ復号鍵記憶部５３４のメモリ容量が小さくて済み、製品コストを削減できる。
【０１１０】
＜変形例１７＞
上述した実施の形態において、鍵サーバ５３は暗号化鍵束Zを式４により計算する例を示したが、Eとして公開鍵暗号を用いることもできる。この場合、鍵サーバ５３は、F(Km, S)を秘密鍵として、これに対応する公開鍵を計算し、計算した公開鍵を用いて鍵束を暗号化すれば良い。K(i1,1)||K(i2,2)|| ... ||K(iN,N)のデータサイズが大きい場合、公開鍵暗号処理を複数回行っても良い。
【０１１１】
＜変形例１８＞
上述した実施の形態におけるデバイス鍵について、以下の式７により定義される多項式f(x)にリーチャ識別情報LIDを代入した値f(LID)を（リーチャ識別情報がLIDであるリーチャの）デバイス鍵としても良い。
【０１１２】
【数１】
2010124071.tif 000003
【０１１３】
ここで、qは素数である。tは整数である。aiはゼロ以上q未満の整数である。以下の式８により定義される多項式g(x) にリーチャ識別情報LIDを代入した値g(LID)を（リーチャ識別情報がLIDであるリーチャが受信する）シード情報Sとしても良い。
【０１１４】
【数２】
2010124071.tif 000004
【０１１５】
ここで、qは素数である。uは整数である。biはゼロ以上q未満の整数である。biの値は、コンテンツ識別情報毎に変えても良い。シード情報を用いて変換した後の（リーチャ識別情報がLIDであるリーチャの）デバイス鍵は、f(LID)+g(LID) mod qと定めても良い。本変形例は、例えば、参考文献２のＭＫＢ方式を用いるときに適用することができる。シード情報を用いて変換した後のデバイス鍵をf(x)+g(x) mod qと定める場合、かつ、参考文献２のＭＫＢ方式を用いる場合、鍵サーバ５３は、f(x)+g(x)の各係数、又はg(x)の各係数と（シード情報を用いて変換する前のデバイス鍵に対応する）公開鍵を用いて（シード情報を用いて変換した後のデバイス鍵に対応する）公開鍵を計算し、その計算した公開鍵を用いて、各暗号化ピースを復号するための鍵束又は暗号化鍵束を復号するための復号鍵を暗号化する。
【図面の簡単な説明】
【０１１６】
【図１】一実施の形態にかかるコンテンツ配信システムの構成を示すブロック図である。
【図２】同実施の形態にかかるコンテンツが複数のピースに分割された状態を模式的に示す図である。
【図３】同実施の形態にかかる各暗号化ピースを模式的に示す図である。
【図４】同実施の形態にかかるＭＫＢ方式において受信者が行う基本的な処理の流れを概念的に示す図である。
【図５】同実施の形態にかかるシーダ５２Ａが記憶している各暗号化ピースを例示する図である。
【図６】同実施の形態にかかるシーダ５２Ａが記憶している各暗号化ピースを例示する図である。
【図７】同実施の形態にかかるシーダ５２Ａが記憶している各暗号化ピースを例示する図である。
【図８】同実施の形態にかかるピース情報のデータ構成を例示する図である。
【図９】同実施の形態にかかるリーチャ５０の機能的構成を例示する図である。
【図１０】同実施の形態にかかるTorrent Fileを例示する図である。
【図１１】同実施の形態にかかるＭＫＢのデータ構成を例示する図である。
【図１２】同実施の形態にかかる鍵サーバ５３の機能的構成を例示する図である。
【図１３】同実施の形態にかかるノード情報のデータ構成を例示する図である。
【図１４】同実施の形態にかかるコンテンツ配信処理の手順を示すフローチャートである。
【図１５】同実施の形態にかかる照合処理の手順を示すフローチャートである。
【図１６】同実施の形態にかかるＭＫＢ処理部５０６が行うＭＫＢ処理の手順を示すフローチャートである。
【図１７】同実施の形態の一変形例にかかる鍵サーバ５３の構成を例示する図である。
【図１８】同実施の形態の一変形例にかかるコンテンツ配信処理の手順について同実施の形態と異なる部分の手順を示すフローチャートである。
【符号の説明】
【０１１７】
５０，５０Ａ，５０Ｂ  リーチャ（通信装置）
５１  トラッカ（管理サーバ）
５２，５２Ａ，５２Ｂ，５２Ｃ  シーダ（通信装置）
５３  鍵サーバ
５４  販売サーバ
５００  コンテンツ取得部
５０１  復号情報要求部
５０２  復号情報取得部
５０３  コンテンツ復号部
５０４  デバイス鍵記憶部
５０５  ＭＫＢ記憶部
５０６  ＭＫＢ処理部
５０７  変換部
５０８  鍵束復号部
５３０  制御部
５３１  パケット処理部
５３２  ネットワークインターフェース部
５３３  平文鍵記憶部
５３４  コンテンツ復号鍵記憶部
５３５  シーケンス情報照合部
５３６  シーケンス情報記憶部
５３７  暗号化鍵供給部
５３８  シード情報生成部
５３９  暗号化部
５４０  ＭＫＢ処理部
５４１  ＭＫＢ記憶部
５４２  デバイス鍵記憶部
ＮＴ  Ｐ２Ｐネットワーク
【図１】
2010124071.tif 000005
【図２】
2010124071.tif 000006
【図３】
2010124071.tif 000007
【図４】
2010124071.tif 000008
【図５】
2010124071.tif 000009
【図６】
2010124071.tif 000010
【図７】
2010124071.tif 000011
【図８】
2010124071.tif 000012
【図９】
2010124071.tif 000013
【図１０】
2010124071.tif 000014
【図１１】
2010124071.tif 000015
【図１２】
2010124071.tif 000016
【図１３】
2010124071.tif 000017
【図１４】
2010124071.tif 000018
【図１５】
2010124071.tif 000019
【図１６】
2010124071.tif 000020
【図１７】
2010124071.tif 000021
【図１８】
2010124071.tif 000022