説明

通信装置、鍵サーバ、管理サーバ、通信サーバ、通信方法及びプログラム

【課題】コンテンツ配信システムにおいて配信される暗号化されたコンテンツが不正に復号されることを抑制可能な配信技術を提供する。
【解決手段】リーチャ50Aは、販売サーバ54からTorrent Fileを受信し、当該Torrent Fileに基づいて、トラッカ51にアクセスしてノード情報を取得し、ノード情報に基づいて、シーダ52A〜52Cやリーチャ50Bの少なくとも1つにアクセスして各暗号化ピースを受信して、各ピースに各々対応する全ての暗号化ピースを取得し、各暗号化ピースを各々復号するための各復号鍵を含む鍵束を鍵サーバ53から受信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号鍵を用いて暗号化された暗号化コンテンツを、他の通信装置から受信する通信装置、暗号化コンテンツを復号するための復号鍵を送信する鍵サーバ、通信装置が他の通信装置へアクセスするための情報を記憶する管理サーバ、通信サーバ、通信方法及びプログラムに関する。
【背景技術】
【0002】
一般に、コンテンツを配信するシステムには、「単一サーバ型」と「分散サーバ型」とがある。単一サーバ型のシステムでは、例えば、1つのコンテンツサーバと、ライセンスサーバと、クライアントとがネットワークを介して接続され、コンテンツサーバからコンテンツが各クライアントに配信される。配信されるコンテンツは暗号化されており、この暗号化に係る鍵情報をライセンスサーバが有している。コンテンツサーバでは、コンテンツはE( KT )[ C ]として保持される。ただし、KTはタイトル鍵と呼ばれる鍵であり、Cは平文のコンテンツである。E( KT )[ C ]はCがKTで暗号化されていることを示す。鍵情報にはKTが含まれている。クライアントBは、鍵情報をライセンスサーバから取得し、当該鍵情報を、当該クライアント(クライアントBとする)固有の鍵KBを用いて暗号化し、これをコンテンツサーバから受信したコンテンツE( KT )[ C ]と関連づけて保持する。そして、クライアントBは、鍵KBを用いて鍵情報を復号して、タイトル鍵KTを取り出し、当該タイトル鍵KTを用いてE( KT )[ C ]を復号することにより、コンテンツを利用することができる。
【0003】
このような構成において、クライアントBは、コンテンツサーバからコンテンツE( KT )[ C ]をダウンロードする際、認証及び鍵交換を互いに行う。この結果、クライアントBは、一時鍵KtmpBを共有する。コンテンツサーバは、一時鍵KtmpBを用いてコンテンツE( KT )[ C ]を暗号化し、コンテンツE( KtmpB )[ E( KT )[ C ]]をクライアントBに送信する。クライアントBは、上述の認証及び鍵交換によってコンテンツサーバと共有している一時鍵KtmpBを用いてコンテンツE( KtmpB )[ E( KT )[ C ]]を復号して、E( KT )[ C ]を取り出す。このような構成においては、ネットワークの経路上で、暗号化されたコンテンツE( KtmpB )[ E( KT )[ C ] ]が不正に読み取られたとしても、不正に読み取られたものは一時鍵KtmpBがなければ復号することができない。即ち、クライアント毎に異なる一時鍵を用いてコンテンツを暗号化することにより、同一のコンテンツをクライアント毎に個別化し、これにより、コンテンツの不正使用を抑制することができる。例えば、クライアントAに対する一時鍵KtmpAとクライアントBに対する一時鍵KtmpBとを異ならせることにより、クライアントAに配信されるコンテンツE( KtmpA )[ E( KT )[ C ] ]と、クライアントBに配信されるコンテンツE( KtmpB )[ E( KT )[ C ] ]とは異なる個別のデータとなる。このように同一のコンテンツを暗号鍵の相違により個別化することにより、コンテンツの不正使用を抑制することができる。
【0004】
しかし、単一サーバ型のシステムでは、クライアントとコンテンツサーバとの1対1での通信となるため、多くのクライアントがコンテンツサーバからコンテンツの配信を受けようとすると、配信効率が悪くなるという問題がある。
【0005】
一方、分散サーバ型のシステムには、例えば、P2PによるBitTorrentというコンテンツ配信システムがある(例えば、非特許文献1参照)。このようなシステムにおいては、コンテンツ毎に異なるトラッカと、シーダと、リーチャとがP2Pで各々接続される。また、配信されるコンテンツは、複数のピースに分割されている。シーダは、コンテンツの配信(アップロード)を目的として、コンテンツを構成するピースを配信するノードである。リーチャは、コンテンツの受信(ダウンロード)を目的として、コンテンツを構成する各ピースの受信とコンテンツを構成するピースの配信とを行うノードである。即ち、リーチャはコンテンツを構成するピースをある程度取得するとシーダになる場合がある。このように、シーダには、コンテンツを構成する全部のピース又は一部のピースを受信したリーチャがシーダへ変化したものと、システム側で(予め又は配信の途中に)用意される(最初からシーダである)ものとがある。後者を初期シーダと呼ぶ。初期シーダは、あるひとつのコンテンツを構成し得る全てのピース又は一部のピースを保持している。以降、特に断りのない限り、シーダとはシーダ又は初期シーダを意味するものとし、ノードとはリーチャ、シーダ、又は初期シーダを意味するものとする。トラッカは、各ノードに関するノード情報を保持しており、リーチャからアクセスがあった場合、ノード情報をリーチャに提供する。
【0006】
このような構成において、あるリーチャがコンテンツの配信を受ける場合、まず、Torrent Fileと呼ばれる情報を取得する。Torrent Fileは、例えば、コンテンツプロバイダ又はユーザにコンテンツを販売するサービスを運用するサーバ(販売サーバと呼ぶ))から、他ノード又は販売サーバへ与えられ、さらに他ノード又は販売サーバからリーチャへ与えられる。この他に、例えばCD−ROMなどの記録媒体に記録されたTorrent Fileをオフラインでリーチャへ配布される場合もある。Torrent Fileには、コンテンツに関するトラッカ情報と、当該コンテンツのファイル情報とが格納されている。トラッカ情報はトラッカの接続先を含んでいる。ファイル情報は、例えば、コンテンツを構成する各ピースのハッシュ情報を含んでいる。ハッシュ情報は、ピースの完全性を確認するために用いられる。即ち、ハッシュ情報は、リーチャがダウンロードしたピースのハッシュを計算し、当該ピースのハッシュ値と照合して、受信したピースが改竄されていないことを確認するのに用いられる。
【0007】
リーチャは、このようなTorrent Fileを取得すると、トラッカ情報に基づいてトラッカに接続する。トラッカは、リーチャに上述のノード情報を送信する。ノード情報は単数または複数のノードの接続先のリストを含んでいる。リーチャはノード情報に基づいて、複数のノードに接続する。各ノードが配信するピースは、ノード毎に異なっている場合が多い。リーチャは、複数のノードから異なるピースを受信することができるので、コンテンツの高速な受信が可能である。
【0008】
このように、P2Pによるコンテンツ配信システムでは、コンテンツは複数のノードに分散して保持されている。従って、このようなシステムにおいては、コンテンツの配信を受けるノードが多くても、P2Pにより複数の他のノードからコンテンツの配信を受けることができるため、単一サーバ型のシステムに比べて配信効率が良い。
【0009】
また、特許文献1には、コンテンツを複数のピースに分割し、それら複数のピースのそれぞれについて、複数の暗号鍵を用いて暗号化して複数の暗号化ピースを生成するコンテンツ配信方法が開示されている。
【0010】
【非特許文献1】Bittorrent Protocol Specification v1.0
【特許文献1】特許第3917395号公報
【発明の開示】
【発明が解決しようとする課題】
【0011】
しかし、非特許文献1に記載されているような複数のノードからコンテンツを配信し得るコンテンツ配信システムにおいても、コンテンツの不正使用を抑制するためには、配信するコンテンツを暗号化によって保護することが望ましい。しかし、このようなコンテンツ配信システムでは、単一サーバ型のシステムとは異なり、各リーチャがシーダから受信する同一のコンテンツは、暗号化された状態であっても同一でなければならず、リーチャ毎に個別に暗号化したコンテンツを配信することは難しかった。このため、暗号化されたコンテンツを復号するための鍵が1つ曝露されてしまうと、ネットワーク上に多数存在するコンテンツが全て復号可能になってしまうという恐れがあった。
【0012】
また、特許文献1に記載のコンテンツ配信方法では、コンテンツの配信を受ける各ユーザが全ての暗号化ピースを取得する必要がある。このため、このコンテンツ配信方法をP2Pによるコンテンツ配信システムへそのまま応用した場合、配信効率が悪くなる恐れがある。更に、暗号化されたコンテンツを復号するための鍵が複数であっても、それらが曝露されてしまった場合、復号鍵を正規に取得することなしにコンテンツが復号可能になってしまうという恐れがある。
【0013】
本発明は、上記に鑑みてなされたものであって、コンテンツ配信システムにおいて配信される暗号化されたコンテンツが不正に復号されることを抑制可能な通信装置、鍵サーバ、管理サーバ、通信サーバ、通信方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0014】
上述した課題を解決し、目的を達成するために、本発明は、コンテンツの一部である複数のピースを受信する通信装置であって、複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵とは異なっていて、他の通信装置から、前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に受信するコンテンツ受信手段と、前記コンテンツ受信手段がピース毎に受信した前記第1暗号化ピース又は前記第2暗号化ピースを復号するための各復号鍵を要求する要求メッセージを、当該各復号鍵を記憶する鍵サーバに送信する鍵要求送信手段と、前記要求メッセージに従った前記鍵サーバから前記各復号鍵を受信する鍵受信手段とを備えることを特徴とする。
【0015】
また、本発明は、コンテンツの一部である複数のピースを送信する通信装置であって、
複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵とは異なっていて、前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に記憶する記憶手段と、前記第1暗号化ピース又は前記第2暗号化ピースのデータのうち一部又は全部を要求するピース要求を他の通信装置から受信する要求受信手段と、前記ピース要求によって要求された前記第1暗号化ピース又は前記第2暗号化ピースのデータのうち一部又は全部を前記他の通信装置に送信する送信手段とを備えることを特徴とする。
【0016】
また、本発明は、コンテンツの一部である複数のピースを受信する通信装置と通信する鍵サーバであって、複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、
同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵とは異なっていて、
前記通信装置は、他の通信装置から、前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に受信するものであって、前記通信装置から、ピース毎の前記第1暗号化ピース又は前記第2暗号化ピースを復号するための各復号鍵を要求する要求メッセージを受信する受信手段と、前記各復号鍵を記憶する第1記憶手段と、前記要求メッセージによって要求された前記各復号鍵の組み合わせに基づいて、当該各復号鍵を送信するか否かを決定する決定手段と、前記決定手段の決定結果が肯定的である場合、前記要求メッセージによって要求された前記組み合わせにおける前記各復号鍵を前記第1記憶手段から各々読み出してこれらを前記通信装置に送信する鍵送信手段とを備えることを特徴とする。
【0017】
また、本発明は、コンテンツの一部である複数のピースを受信する通信装置と通信する管理サーバであって、複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵とは異なっていて、前記通信装置は、他の通信装置から、前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に受信するものであって、前記他の通信装置にアクセスするための接続先情報を記憶する第1記憶手段と、前記複数のピースのうち少なくとも1つのピースについて、当該少なくとも1つのピースが暗号化された前記第1暗号化ピース又は前記第2暗号化ピースを決定する決定手段と、前記通信装置に対して、前記他の通信装置にアクセスするための接続先情報を前記第1記憶手段から読み出してこれと、決定された前記第1暗号化ピース又は前記第2暗号化ピースを指定するシーダ情報とを送信する送信手段とを備えることを特徴とする。
【0018】
また、本発明は、コンテンツの一部である複数のピースを受信する通信装置と通信する通信サーバであって、複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、
第3暗号化ピースは、前記複数のピースのうち1つ以上のピースを第3暗号鍵で暗号化することによって生成されるものであって、同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵と前記第3暗号鍵とは異なっていて、前記通信装置は、他の通信装置から、前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に受信するものであって、前記第3暗号化ピースを記憶する第1記憶手段と、前記第3暗号化ピースを前記通信装置に送信した場合に当該通信装置を識別するための識別情報を記憶する第2記憶手段と、前記第3暗号化ピースを要求すると共に前記通信装置を識別するための識別情報を含む特別ピース要求を前記通信装置から受信する第1受信手段と、前記特別ピース要求に含まれる前記識別情報が前記第2記憶手段に記憶されていない場合、前記第1記憶手段から前記第3暗号化ピースを読み出して前記通信装置に送信する第1送信手段とを備えることを特徴とする。
【発明の効果】
【0019】
本発明によれば、コンテンツ配信システムにおいて配信される暗号化されたコンテンツを受信装置毎に個別化することができるため、配信される暗号化されたコンテンツが不正に復号されることを抑制することができる。
【発明を実施するための最良の形態】
【0020】
以下に添付図面を参照して、この発明にかかる通信装置、鍵サーバ、管理サーバ、通信サーバ、通信方法及びプログラムの最良な実施の形態を詳細に説明する。
【0021】
[第1の実施の形態]
(1)構成
<コンテンツ配信システムの構成>
図1は、本実施の形態にかかるコンテンツ配信システムの構成を示すブロック図である。本実施の形態にかかるコンテンツ配信システムにおいては、リーチャ50A〜50Bと、トラッカ51と、シーダ52A〜52Cと、販売サーバ54とが各々P2PネットワークNTを介して接続されている。リーチャ50A〜50Bと、鍵サーバ53とは各々、図示しないインターネットなどのネットワークを介して接続される。ここでノードとは、リーチャ50A〜50Bと、シーダ52A〜52Cとである。シーダ52A〜52Cは、複数のピースに分割されたコンテンツについて、各ピースが各々異なる暗号鍵で暗号化された各暗号化ピースを保持している。尚、以降、このような暗号化ピースから構成されるコンテンツを暗号化コンテンツという。このような暗号化コンテンツの詳細については後述する。シーダ52A〜52Cのうち、シーダ52Aは、上述した初期シーダとして機能する。シーダ52Aは、一つのコンテンツを構成する各ピースについて、同一のピースに対して複数の暗号鍵を用いて各々暗号化されて生成された暗号化ピースの全てを保持している。トラッカ51は、各ノードにアクセスするためのノード情報を保持している。尚、各ノードには各々、ノード識別情報が付与されているものとする。ノード識別情報とは、各ノードを一意に識別可能な識別情報であり、例えば、各ノードのIPアドレスである。鍵サーバ53は、各暗号化ピースを復号するための復号鍵を保持している。販売サーバ54は、Torrent Fileを保持している。
【0022】
リーチャ50Aは、販売サーバ54からTorrent Fileを受信し、当該Torrent Fileに基づいて、トラッカ51にアクセスしてノード情報を取得し、ノード情報に基づいて、シーダ52A〜52Cやリーチャ50Bの少なくとも1つにアクセスして各暗号化ピースを受信して、各ピースに各々対応する全ての暗号化ピースを取得し、各暗号化ピースを各々復号するための各復号鍵を含む鍵束を鍵サーバ53から受信する。リーチャ50Bについても同様である。尚、以降、リーチャ50A〜50Bを各々区別する必要がない場合、単にリーチャ50と記載する。シーダ52A〜52Cを各々区別する必要がない場合も、単にシーダ52と記載する。
【0023】
ここで、コンテンツの構成について説明する。コンテンツとは、種々のデジタルデータ、例えばMPEG2やMPEG4等の動画データや音声データの他、テキストデータや静止画データ等を指し、また、これらのデジタルデータが暗号化されているものもコンテンツと呼ぶ。例えば、HD DVD Prepared Video ContentをAACS(Advanced Access Content System)仕様に従って暗号化したものもコンテンツである。ここでは、コンテンツ全体をCと表すものとする。Cは平文であっても暗号化されていても構わない。図2は、コンテンツが複数のピースに分割された状態を模式的に示す図である。例えば、コンテンツCは、ある1つのコンテンツをN(N>1)個のピースC1〜CNに分割される。各ピースC1,C2,・・・CNのデータ長は全て同一であっても良いし、そうでなくても良い。これらのN個の各ピースC1〜CNについては、各々異なる暗号鍵で暗号化される。このとき、N個のうちa個のピースについては、同一のピースに対して、各々異なるm個の暗号鍵(第1暗号鍵及び第2暗号鍵)で暗号化される。残りの(N-a)個のピースについては、同一のピースに対して1つの暗号鍵(第1暗号鍵)で暗号化される。即ち、a個の各ピースについては、同一のピースがm個の異なる暗号鍵で各々暗号化されてm個の異なるピース(暗号化ピース)が生成される。(N-a)個の各ピースについては、各々1つの暗号鍵で暗号化して、1つのピースに対して1つの暗号化ピースが生成される。図3は、各暗号化ピースを模式的に示す図である。このa個の各ピースに各々対応して、m個の暗号化ピースの中から各々1つ選択される暗号化ピースの組み合わせを異ならせることにより、N個の暗号化ピースから構成される暗号化コンテンツ全体を個別化することができる。
【0024】
次に、リーチャ50と、トラッカ51と、シーダ52と、鍵サーバ53との各装置のハードウェア構成について説明する。各装置は各々、装置全体を制御するCPU(Central Processing Unit)等の制御装置と、各種データや各種プログラムを記憶するROM(Read Only Memory)やRAM(Random Access Memory)等の記憶装置と、各種データや各種プログラムを記憶するHDD(Hard Disk Drive)やCD(Compact Disk)ドライブ装置等の外部記憶装置と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。また、各装置には各々、情報を表示する表示装置と、ユーザの指示入力を受け付けるキーボードやマウス等の入力装置と、外部装置の通信を制御する通信I/F(interface)とが有線又は無線により接続される。
【0025】
<シーダ52の構成>
次に、上述したハードウェア構成において、シーダ52のCPUが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。シーダ52は、コンテンツCを構成する複数のピースC1〜CNが各々暗号化された各暗号化ピースを、各ピースC1〜CNを各々復号するための各復号鍵のインデックス(添え字)と対応付けて記憶している。尚、各復号鍵は、各暗号鍵と同一であっても良いし、各暗号鍵と異なるものであっても良い。いずれにしろ、各ピースC1〜CNは各々暗号鍵で暗号化されているため、これらの各暗号化ピースを復号するための復号鍵のそれぞれについて、各復号鍵のインデックスを用いて、各暗号化ピースを特定することができる。このような各暗号化ピースは例えば外部記憶装置に記憶される。
【0026】
以下簡単のため、暗号鍵と復号鍵が同一の場合で説明する。復号鍵のインデックスを、( 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’)であってもよい。)
【0027】
このような各暗号化ピースから構成される暗号化コンテンツは、例えば、以下のように表される。
{ E( K( i1, 1 ) )[ C1 ], E( K( i2, 2 ) )[ C2 ], …, E( K( iN, N ))[ CN ]}
(ただし、1≦i1, …, iN≦m)
【0028】
このような暗号化コンテンツにおける各暗号化ピースのシーケンスは、各暗号化ピースのインデックスの組み合わせにより表され、例えば以下のように表される。ここでは、各ピースC1〜CNに各々対応するインデックスが左から順に配列されて表されている。
{ ( i1, 1 ), ( i2, 2 ), …, ( iN, N) }
(ただし、1≦i1, …, iN≦m)
【0029】
従って、シーダ52が各暗号化ピースとインデックスとを対応付けて記憶するものは、例えば、以下のように表される。
{ ( 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)
【0030】
更に、初期シーダであるシーダ52Aは、コンテンツを構成する各ピースに各々対応する各暗号化ピースについて、同一のピースに対して複数の暗号鍵により各々暗号化されて生成された暗号化ピースの全てを記憶している。図4は、シーダ52Aが記憶している各暗号化ピースを例示する図である。同図においては、N個のうちa個(1<a<N)のピースについて、同一のピースに対して複数の異なる暗号鍵で各々暗号化されていることが示されている。同図においては、同一のピースの暗号化に用いられる暗号鍵の個数は、ピース毎に異なっている。ピースC1に対する暗号鍵の個数はm個であり、ピースC3に対する暗号鍵の個数は2個である。但し、本実施の形態においては、同一のピースの暗号化に用いられる暗号鍵の個数はピース毎に同じであっても良い。ピース処理装置では、このように、N個のうちa個(1<a<N)のピースについて、同一のピースに対して複数の異なる暗号鍵で各々暗号化することにより、例えば、重要度の高いほど暗号鍵の数を増やすようにすることができる。
【0031】
尚、本実施の形態においては、これに限らず、例えば、図5に示されるように、「a=N」の場合、即ち、N個全てのピースについて、同一のピースに対してm個の異なる暗号鍵で各々暗号化されていても良い。このような構成によれば、暗号化ピースのシーケンスのバリエーションを多くすることができる。また、図6に示されるように、「a=1」の場合、即ち、N個のうち1個のピースのみ、m個の異なる暗号鍵で暗号化されていても良い。このような構成によれば、配信効率を向上させることができる。
【0032】
このような構成において、シーダ52は、リーチャ50からのアクセスにより、当該シーダ52が記憶している暗号化ピースのシーケンスを示すピース情報をリーチャ50に送信する。図7は、ピース情報のデータ構成を例示する図である。同図においては、ピースC1に対応する暗号化ピースについては、復号鍵K(1, 1 )により復号されることが示され、ピースC2に対応する暗号化ピースについては、復号鍵K(3, 2 ) により復号されることが示されている。即ち、ピース情報によって、各暗号化ピースと各暗号化ピースの復号化のための復号鍵の対応関係とが示される。シーダ52は、当該ピース情報に基づいて暗号化ピースを要求するピース要求をリーチャ50から受信すると、要求された暗号化ピースを保持しているか否かを判断し、当該判断結果が肯定的である場合に、当該暗号化ピースをリーチャ50に送信する。
【0033】
<リーチャ50の構成>
次に、上述したハードウェア構成において、リーチャ50のCPUが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。図8は、リーチャ50の機能的構成を例示する図である。リーチャ50は、コンテンツ取得部500と、鍵束要求部501と、鍵束取得部502と、コンテンツ復号部503とを有する。これら各部の実体は、CPUのプログラム実行時にRAMなどの記憶装置上に生成されるものである。
【0034】
コンテンツ取得部500は、P2PネットワークNTを介して、暗号化コンテンツを構成する各暗号化ピースをシーダ52の少なくとも1つから受信する。具体的には、コンテンツ取得部500は、まず、販売サーバ54からTorrent Fileを受信する。Torrent Fileは、トラッカ51に接続するためのトラッカ接続先情報を含むトラッカ情報と、暗号化コンテンツを構成する各暗号化ピースとしてどのようなものがあるかを示すファイル情報とを含んでいる。図9は、Torrent Fileを例示する図である。同図においては、ファイル情報として、各暗号化ピースを特定するための情報として、各暗号化ピースに対応するインデックスが各々示されている。トラッカ接続先情報は、例えば、トラッカ51のIPアドレスや、URLなどである。
【0035】
コンテンツ取得部500は、Torrent Fileに基づいて、P2PネットワークNTを介してトラッカ51にアクセスして、P2PネットワークNTに接続されているノード(シーダ52、他のリーチャ50)にアクセスするためのノード情報を当該トラッカ51から受信する。ノード情報の詳細については後述する。そして、コンテンツ取得部500は、ノード情報に基づいて、ノードの少なくとも1つにアクセスして、当該ノードが記憶している自身の保持する暗号化ピースのシーケンスを示すピース情報を取得する。そして、コンテンツ取得部500は、ピース情報に基づいて、暗号化コンテンツを構成する各暗号化ピースを要求するピース要求をノードの少なくとも1つに送信し、当該ピース要求に応じて送信される暗号化ピースを受信することにより、暗号化コンテンツを構成する全ての暗号化ピース(ピースシーケンス)を取得する。例えば、図3に示した各暗号化ピースのうち、網掛けされた全ての暗号化ピースをピースシーケンスとしてコンテンツ取得部500は取得する。
【0036】
鍵束要求部501は、ピースシーケンスを復号するための鍵束を要求する要求メッセージを鍵サーバ53へ送信する。鍵束とは、ピースシーケンスの各暗号化ピースを各々復号するための各復号鍵を、各暗号化ピースのシーケンスに合わせて含むものである。尚、鍵束及び復号鍵の詳細については後述する。要求メッセージは、この鍵束に含ませる各復号鍵のシーケンスを指定する情報として、ピースシーケンスにおける各暗号化ピースのインデックスの組み合わせ(シーケンス)を示すインデックス情報を含む。このようなシーケンスは、例えば、以下のように表される。
{ ( i1, 1 ), ( i2, 2 ), …, ( iN, N) }
(ただし、1≦i1, …, iN≦m)
【0037】
鍵束取得部502は、要求メッセージに応じて鍵サーバ53から送信された鍵束を受信する。コンテンツ復号部503は、コンテンツ取得部500が取得した各暗号化ピースを、鍵束取得部502が取得した鍵束に含まれ且つ各暗号化ピースに各々対応する復号鍵を用いて各々復号して、復号した各ピースから構成されるコンテンツを取得する。
【0038】
尚、リーチャ50は、上述したように、シーダとして機能する場合もあるが、その機能的構成については、シーダ52の構成において説明したため、ここでは、その説明を省略する。
【0039】
<鍵サーバ53の構成>
次に、鍵サーバ53のCPUが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。図10は、鍵サーバ53の機能的構成を例示する図である。鍵サーバ53は、制御部530と、パケット処理部531と、ネットワークインターフェース部532と、認証・鍵交換処理部533と、鍵記憶部534と、シーケンス情報記憶部536と、シーケンス情報照合部535と、鍵供給部537とを有する。制御部530と、シーケンス情報照合部535と、ネットワークインターフェース部532と、パケット処理部531と、認証・鍵交換処理部533と、鍵供給部537との実体は、CPUのプログラム実行時にRAMなどの記憶装置上に生成されるものである。鍵記憶部534は、例えば、外部記憶装置に記憶されるものである。
【0040】
制御部530は、鍵サーバ53全体を制御し、シーケンス情報照合部535から鍵供給部537への指示を仲介したりする。パケット処理部531は、リーチャ50などの外部装置に送信する各種データをパケット化してネットワークインターフェース部532に受け渡したり、ネットワークインターフェース部532から受け渡されたパケットを基にデータを取得したりする。ネットワークインターフェース部532は、外部装置との通信を制御し、パケット処理部531から受け渡されたパケット化されたデータを送信したり、外部装置から受信したパケットをパケット処理部531に受け渡したりする。
【0041】
認証・鍵交換処理部533は、ネットワークインターフェース部532を介して、リーチャ50から要求メッセージを受信し、当該リーチャ50と相互認証を行い、認証後、要求を受理する旨の受理メッセージをリーチャ50に送信する。
【0042】
鍵記憶部534は、例えば、HDDなどの外部記憶装置において構成され、各暗号化ピースを各々復号するための各復号鍵を各々記憶する。各復号鍵は、上述したように、例えばK ( i, j )として表される。
【0043】
シーケンス情報記憶部536は、例えばHDDなどの外部記憶装置において構成され、リーチャ50に過去に送信した全ての鍵束に各々対応するシーケンスを示すシーケンス情報を記憶する。鍵束に各々対応するシーケンスは、上述したインデックス情報に示されるシーケンスと同様に、例えば以下のように表される。
{ ( i1, 1 ), ( i2, 2 ), …, ( iN, N) }
(ただし、1≦i1, …, iN≦m)
【0044】
シーケンス情報照合部535は、シーケンス情報記憶部536に記憶されたシーケンス情報と、リーチャ50から受信したインデックス情報とを照合することにより、インデックス情報によって示されるシーケンスに対応する鍵束を送信するか否かを決定する。具体的には、シーケンス情報照合部535は、インデックス情報に示されるシーケンスと同一のシーケンスを示すシーケンス情報がシーケンス情報記憶部536に記憶されていない場合、インデックス情報によって示されるシーケンスに対応する鍵束を送信することを決定する。鍵束は、例えば、以下のように表される。ここでは、各ピースC1〜CNに各々対応する復号鍵が左から順に配列されて表されている。
{K( i1, 1 ), K( i2, 2 ), …, K( iN, N )}
(ただし、1≦i1, …, iN≦m)
【0045】
そして、シーケンス情報照合部535は、鍵束を送信することを決定した場合、制御部530を介して、当該鍵束を当該リーチャ50へ送信するよう鍵供給部537に指示する。また、シーケンス情報照合部535は、鍵束を送信しないことを決定した場合、制御部530を介して、当該鍵束の当該リーチャ50への送信禁止を鍵供給部537に指示する。
【0046】
鍵供給部537は、制御部530を介してシーケンス情報照合部535から鍵束の送信を指示されると、当該鍵束のシーケンスに応じた復号鍵を鍵記憶部534から各々読み出し、読み出した各復号鍵を含む鍵束を、ネットワークインターフェース部532を介してリーチャ50に送信する。
【0047】
<トラッカ51の構成>
次に、トラッカ51の構成について説明する。トラッカ51は、リーチャ50からアクセスされると、P2PネットワークNTに接続されているノードにアクセスするためのノード情報を当該リーチャ50に対して送信する。ノード情報は、各ノードのIPアドレスとポート番号との組を含んでいる。図11は、ノード情報のデータ構成を例示する図である。同図においては、ノードA〜Bは各々、リーチャ50A〜50B、シーダ52A〜52Cのいずれかであり、当該各ノードのIPアドレスとポート番号との組が示されている。
【0048】
ここで、トラッカ51がノード情報をどのように生成するかについて説明する。あるノードが、トラッカ51に接続するためのトラッカ接続先情報を含むTorrent Fileを保持しており、また、暗号化ピースを保持しているとする。ノードは、Torrent Fileに含まれるトラッカ接続先情報を参照して、トラッカ51にアクセスして、当該ノードを識別するためのIPアドレスとポート番号とをトラッカ51に送信する。トラッカ51は、受信したピース情報とIPアドレスとポート番号とを用いてノード情報を生成する。
【0049】
(2)動作
次に、本実施の形態にかかるコンテンツ配信システムで行うコンテンツ配信処理の手順について図12を用いて説明する。尚、リーチャ50は、暗号化ピースを他のリーチャ50からも受信可能であるが、ここでは、説明の便宜上、暗号化ピースをシーダ52A〜52Cからの少なくとも1つから受信するものとする。
【0050】
リーチャ50は、まず、販売サーバ54にアクセスして、Torrent Fileを取得する(ステップS1)。そして、リーチャ50は、Torrent Fileに含まれるトラッカ情報に含まれるトラッカ接続先情報を用いてトラッカ51にアクセスすると(ステップS2)、トラッカ51はリーチャ50に対して、ノード情報を送信する(ステップS3)。リーチャ50は、ノード情報を受信すると(ステップS4)、ノード情報を用いて、例えばシーダ52A〜52Cの少なくとも1つにアクセスする(ステップS5)。シーダ52は、リーチャ50からアクセスされると、自身の保持する暗号化ピースのシーケンスを示すピース情報をリーチャ50へ送信する(ステップS6)。
【0051】
リーチャ50は、ピース情報を受信すると(ステップS7)、当該ピース情報を用いて、少なくとも1つのシーダ52にアクセスする(ステップS8)。そして当該シーダ52に対して、各ピースC1〜CNに各々対応して複数存在しえる暗号化ピースのうち少なくとも1つを要求するピース要求をリーチャ50は送信して、各暗号化ピースを受信する。シーダ52は、リーチャ50からのピース要求に応じて、自身の保持する暗号化ピースをリーチャ50に送信する(ステップS9)。具体的には、リーチャ50は、例えば、シーダ52Bにアクセスして受信したピース情報を用いて、ピースC1が暗号化された暗号化ピースE( K( i1, 1 ) )[ C1 ](i1は1≦i1≦mの整数)のうち例えば「i1=1」の暗号化ピースをシーダ52Bが保持しているか否かを判断し、当該判断結果が肯定的である場合、当該シーダ52Bにアクセスして、当該暗号化ピースE( K( 1, 1 ) )[ C1 ]をシーダ52Bから受信することによりこれを取得する。尚、シーダ52Bが当該暗号化ピースE( K( 1, 1 ) )[ C1 ]を実際には保持していなかった場合、リーチャ50は、次いで、他のシーダ52(例えばシーダ52C)にアクセスして、当該他のシーダ52Cからピース情報を取得する。そして、リーチャ50は、上述と同様にして、ピース情報を用いて、当該暗号化ピースをシーダ52Cが保持しているか否かを判断して、当該判断結果が肯定的である場合、シーダ52にアクセスして、当該暗号化ピースの取得を試みる。リーチャ50は、このような処理を繰り返して、各暗号化ピースから構成される暗号化コンテンツ{E( K( i1, 1 ) )[ C1 ], E( K( i2, 2 ) )[ C2 ], …, E( K( iN, N ))[ CN ]}を得る。
【0052】
なお、リーチャ50が、ピースCj(1≦j≦N)に対応して複数存在しえる暗号化ピースのうちいずれの暗号化ピースを取得対象とするか、即ち、E( K( i1, j ) )[ Cj ](i1は1≦i1≦mの整数)につきi1を「1」から「m」のうちいずれの値にするかについては、任意である。従って、リーチャ50が、各ピースC1〜CNに対応して各々取得した暗号化ピースにシーケンス{( i1, 1 ), ( i2, 2 ), …,(iN, N )}は、任意のものとなる。
【0053】
リーチャ50は、コンテンツを構成する各ピースに各々対応する暗号化ピースであって暗号化コンテンツを構成する全ての暗号化ピースを取得すると、各暗号化ピースを各々復号するための各復号鍵を含む鍵束を要求する要求メッセージを鍵サーバ53に送信する(ステップS10)。この要求メッセージには、各復号鍵に対応するシーケンスを示すインデックス情報{( i1, 1 ),…, ( iN, N)}が含まれる。
【0054】
鍵サーバ53の認証・鍵交換処理部533は、ネットワークインターフェース部532を介して、当該要求メッセージを受信すると(ステップS11)、当該リーチャ50と相互認証を行い、認証成功の場合、要求を受理する旨の受理メッセージをリーチャ50に送信する(ステップS12)。リーチャ50は、鍵サーバ53から受理メッセージを受信すると(ステップS13)、鍵サーバ53からの鍵束の送信を待機する。
【0055】
一方、鍵サーバ53のシーケンス情報照合部535は、ステップS11で受信された要求メッセージに含まれるインデックス情報を用いて、照合処理を行う(ステップS14)。図13は、照合処理の手順を示すフローチャートである。照合処理では、シーケンス情報照合部535は、ステップS11で受信された要求メッセージに含まれるインデックス情報と、シーケンス情報記憶部536に記憶されているシーケンス情報とを照合し(ステップS140)、インデックス情報に示されるシーケンスと同一のシーケンスを示すシーケンス情報がシーケンス情報記憶部536に記憶されている否かを判断する(ステップS141)。即ち、リーチャ50から要求されている鍵束が過去にリーチャ50のいずれかに送信されたか否かが判断される。
【0056】
当該判断結果が否定的である場合(ステップS141:NO)、シーケンス情報照合部535は、インデックス情報に示されるシーケンスに対応する鍵束{K( i1, 1 ), K( i2, 2 ), …, K( iN, N )}を送信することを決定する。そして、シーケンス情報照合部535は、制御部530を介して、当該鍵束を当該リーチャ50へ送信するよう鍵供給部537に指示する。また、シーケンス情報照合部535は、当該シーケンスを示すシーケンス情報をシーケンス情報記憶部536に記憶させる(ステップS142)。鍵供給部537は、制御部530を介してシーケンス情報照合部535から送信を指示された鍵束を、鍵記憶部534から読み出しこれをネットワークインターフェース部532を介してリーチャ50に送信する(ステップS143)。尚、ステップS141の判断結果が肯定的である場合、シーケンス情報照合部535は、当該鍵束を送信しないことを決定し、制御部530を介して、当該鍵束の当該リーチャ50への送信禁止を鍵供給部537に指示する(ステップS144)。
【0057】
図12に戻り、リーチャ50は、鍵束K( i1, 1 ), K( i2, 2 ), …, K( iN, N )を鍵サーバ53から受信した場合(ステップS15:YES)、鍵束に含まれる各復号鍵を用いて、各暗号化ピースE( K( i1, 1 ) )[ C1 ], E( K( i2, 2 ) )[ C2 ], …, E( K( iN, N )[ CN ]をそれぞれ復号し、復号した各ピースC1〜CNを得て、これらから構成されるコンテンツCを得る(ステップS16)。即ち、リーチャ50は、復号鍵K( i1, 1 )を用いてE( K( i1, 1 ) )[ C1 ]を復号して、ピースC1を得て、復号鍵K( i2, 2 )を用いてE( K( i2, 2 ) )[ C2 ]を復号して、ピースC2を得て、復号鍵K( iN, N )を用いてE( K( iN, N ))[ CN ]を復号して、ピースCNを得て、他のピースについても同様にして得ることにより、各ピースC1〜CNから構成されるコンテンツCを得る。
【0058】
尚、リーチャ50は、ステップS15で鍵束を受信することなく、図13のステップS143で鍵サーバ53から送信されたエラーメッセージを受信した場合、ステップS10で取得した各ピースを復号することができず、従って、コンテンツを利用できない。この場合、ステップS5に戻り、リーチャ50は、ステップS10で取得したシーケンスとは異なるシーケンスで各暗号化ピースを取得した後に、ステップS10以降の処理を再度行う。
【0059】
以上のように、P2Pネットワークを介して、同一のコンテンツを複数のリーチャ50に配信する場合、暗号化ピースのシーケンスを用いて、鍵サーバ53が鍵束の送信の可否を決定する。ここで、鍵サーバ53が、既に使用されたシーケンスの再使用を回避することにより、コンテンツをリーチャ50毎に個別化することができる。従って、例えば、1つの鍵束が漏洩したとしても、この鍵束に対応する暗号化コンテンツのみしか復号することができないので、コンテンツの不正使用を抑制することができる。また、予め定められたシーケンスではなく、リーチャ50が任意に取得した暗号化ピースにより定まるシーケンスを用いることにより、P2Pネットワークの環境に応じたフレキシブルなコンテンツ配信を実現することができる。
【0060】
(3)変形例
<変形例1_1>
上述の第1の実施の形態においては、Torrent Fileは上述のものに限らず、例えば、ファイル情報は、各暗号化ピースを用いてハッシュ演算により計算されるハッシュ値を含んでいても良い。各暗号化ピースのハッシュ値とは、例えば以下のように表される。
{ hash( E( K( i, j ) )[ Cj ] ) }
(ただし、1≦i≦m、1≦j≦N)
【0061】
図14は、このようなTorrent Fileのデータ構成を例示する図である。同図においては、暗号化ピースのハッシュ値とインデックスとの対応関係が示される。リーチャ50は、これらm×n個のハッシュ値を用いて、受信した各暗号化ピースの完全性を確認することができる。更に、このようなTorrent Fileに対し、Torrent Fileの生成者又は信頼できる第三者(例えば、コンテンツ製作者)がディジタル署名を付加しても良い。この場合、リーチャ50は、受信した各暗号化ピースの完全性に加えて正当性も確認することができる。
【0062】
また、このようなTorrent Fileを参照することで、暗号化ピースのハッシュ値からインデックスを特定することが可能であり、この結果、当該暗号化ピースを復号するための復号鍵を特定することも可能になる。
【0063】
このような構成においては、更に、シーダ52は、ハッシュ値を含むピース情報をリーチャ50に送信するようにしても良い。図15は、ハッシュ値を含むインデックス情報を例示する図である。この場合も、リーチャ50は、ハッシュ値を用いて、受信した各暗号化ピースの完全性を確認することができる。
【0064】
また、ファイル情報は、全てのインデックス(上記の例では1≦i≦m、1≦j≦Nの全ての( i, j ))についてのものである必要はなく、その一部についてのものであってもよい。
【0065】
また、Torrent Fileにそのバージョン番号や有効期限情報を含めてもよい。この場合、リーチャ50は、取得したTorrent Fileがその時点において有効であるか否かを知ることができる。例えば、ある時点において取得したTorrent Fileが有効でない場合、リーチャ50はより新しいTorrent Fileを取得してもよいし、前記ある時点において取得したTorrent Fileを用いて暗号化ピースの取得を始め、シーダ52が(リーチャ50にとって)未知のインデックスに対応する暗号化ピースを保持している場合、シーダ52から前記未知のインデックスに対応する暗号化ピースを受信し、その受信後により新しいTorrent Fileを取得して受信した各暗号化ピースの完全性や正当性を確認してもよい。
【0066】
<変形例1_2>
上述の第1の実施の形態においては、リーチャ50は、ステップS10で、インデックス情報を要求メッセージに含ませて鍵サーバ53に送信したが、これに限らず、受理メッセージを受信した後にインデックス情報を鍵サーバ53へ送信してもよい。
【0067】
<変形例1_3>
上述のステップS6では、シーダ52は、リーチャ50からのアクセスにより、自身の保持するピースのシーケンスを示すピース情報を送信したが、リーチャ50からのアクセスを待たずに、ピース情報を当該リーチャ50へ送信するようにしても良い。
【0068】
<変形例1_4>
上述のステップS9では、シーダ52は、暗号化ピースをリーチャ50に送信したが、これに加えて、対応するインデックスを送信しても良い。例えば、送信する暗号化ピースがE( K( 1, 1 ) )[ C1 ]である場合、これに加えて、対応するインデックス( 1, 1 )をシーダ52はリーチャ50に送信しても良い。
【0069】
<変形例1_5>
上述の第1の実施の形態においては、リーチャ50は、暗号化ピースをシーダ52から受信するようにしたが、これに限らず、他のリーチャ50から暗号化ピースを取得するようにしても良い。
【0070】
また、リーチャ50は、各ピースC1〜CNに各々対応する暗号化ピースにつき、同一のピースに対応する異なる暗号化ピースを複数取得しておくようにしても良い。例えば、ピースC1に対して、暗号化ピースE( K( i1, 1 ) )[ C1 ]及びE( K( i1’, 1 ) )[ C1 ](但し、i1≠i1’, 1≦i1≦m,1≦i1’≦m)をリーチャ50は取得しておいても良い。このような構成によれば、リーチャ50が鍵束を鍵サーバ53に要求する際に、仮にインデックス( i1, 1 )を含むシーケンスが既に使用されている場合当該シーケンスに対応する鍵束を取得することはできないが、インデックス( i1’, 1 ) を含むシーケンスが使用可能である場合には、シーダ52へ再びアクセスすることなく当該シーケンスに対応する鍵束を鍵サーバ53から取得することができる。このように、暗号化ピースを予め余分に取得しておくことにより、シーケンスの候補を予め複数用意することができるため、リーチャ50がシーダ52に再度アクセスする煩雑さを回避することができる。
【0071】
<変形例1_6>
上述の第1の実施の形態においては、リーチャ50から要求されている鍵束に対応するシーケンスがシーケンス情報記憶部536に既に記憶されている場合、ステップS144では、鍵サーバ53のシーケンス情報照合部535は、制御部530を介して、当該鍵束の当該リーチャ50への送信禁止を鍵供給部537に指示するようにしたが、これに限らず、以下のようにすることもできる。例えば、リーチャ50が暗号化コンテンツE( K( i1, 1 ) )[ C1 ], E( K( i2, 2 ) )[ C2 ], …, E( K( iN, N ))[ CN ]を取得し、これに対応する鍵束を鍵サーバ53へ要求したとする。鍵サーバ53は、リーチャ50から要求された鍵束に対応するシーケンス{( i1, 1 ), ( i2, 2 ), …, ( iN, N )}がシーケンス情報記憶部536に既に記憶されている場合、シーケンス情報記憶部536に記憶されていない他のシーケンス{( i1’, 1 ), ( i2, 2 ), …, ( iN, N )}を生成して、リーチャ50が置き換えるべき暗号化ピースE( K( i1’, 1 ) )[ C1 ]とそのインデックスに関する情報(この例では( i1’, 1 ))をリーチャ50へ送信する。加えて、鍵サーバ53は他のシーケンス{( i1’, 1 ), ( i2, 2 ), …, ( iN, N )}に各々対応する各復号鍵を含む鍵束をリーチャ50へ送信する。このようにすれば、リーチャ50は、鍵サーバ53のシーケンス情報照合部535が行う照合処理において鍵束の送信が許可されるシーケンスに対応する暗号化ピースを取得するために、リーチャ50がトラッカ51へ再度アクセスする煩雑さを避けることができる。尚、鍵サーバ53は、リーチャ50に送信可能な暗号化ピースを予め保持しておく必要があるが、その暗号化ピースは1つでも複数でも良く、その暗号化ピースが複数の場合、リーチャ50が置き換えるべき暗号化ピースとして複数の暗号化ピース(とそれらのインデックスに関する情報)をリーチャ50へ送信してもよい。なお、リーチャ50から要求された鍵束に対応するシーケンス{( i1, 1 ), ( i2, 2 ), …, ( iN, N )}がシーケンス情報記憶部536に未だ記憶されていない場合、鍵サーバ53は上記に例示した置き換えを行ってもよいし、行わなくてもよい。
【0072】
<変形例1_7>
上述の第1の実施の形態においては、照合処理では、シーケンス情報照合部535は、リーチャ50から要求されている鍵束が1回でも過去にリーチャ50のいずれかに送信していれば、当該鍵束を送信しないようにした。しかし、これに限らず、同一の鍵束を、2回以上の所定の回数まで送信可能にしても良い。この場合、鍵サーバ53の認証・鍵交換処理部533は、リーチャ50との間で行う相互認証において、リーチャ50を識別するためのリーチャ識別情報をリーチャ50から取得する。リーチャ識別情報としては、例えば、リーチャ50のIPアドレスやポート番号や、リーチャ50のMACアドレスや上述の加入者IDなどやこれらの組み合わせなどがある。シーケンス情報照合部535は、鍵束のシーケンスを示すシーケンス情報と、リーチャ識別情報と、当該リーチャ識別情報によって識別されるリーチャ50が当該鍵束の送信を要求した使用回数とを対応付けてシーケンス情報記憶部536に記憶させる。図16は、本変形例に係る照合処理の手順を示すフローチャートである。ステップS140〜S141は第1の実施の形態と同様である。ステップS141の判定結果が肯定的である場合、即ち、リーチャ50から要求されている鍵束のシーケンスと同一のシーケンスを示すシーケンス情報がシーケンス情報記憶部536に既に記憶されている場合、当該シーケンス情報と、当該リーチャ50のリーチャ識別情報と対応付けられてシーケンス情報記憶部536に記憶されている使用回数を参照して、当該使用回数が所定回数以下であるか否かを判断する(ステップS140A)。当該判断結果が肯定的である場合、シーケンス情報照合部535は、当該シーケンス情報と、当該リーチャ識別情報と対応付けられてシーケンス情報記憶部536に記憶されている使用回数を1つインクリメントすることにより、当該使用回数を更新して(ステップS140B)、上述と同様のステップS143の処理を行う。また、ステップS141の判断結果が否定的である場合、シーケンス情報照合部535は、上述と同様にステップS142以降の処理を行う。尚、ステップS140Aの判断結果が否定的である場合は、シーケンス情報照合部535は、上述のステップS144と同様の処理を行う。
【0073】
このような構成によれば、暗号化ピースにおける同一のシーケンスの使用を1回のみならず複数回許可することになり、より柔軟なコンテンツ配信を実現することができる。
【0074】
<変形例1_8>
上述の第1の実施の形態においては、ノード情報は、各ノードのIPアドレス及びポート番号を示すものとしたが、これに限らず、各ノードのMACアドレスを示すようにしても良いし、コンテンツ配信サービスの加入時に割り当てられる加入者IDを示すようにしても良い。この場合、各ノードはノード識別情報として、当該ノードのIPアドレス、MACアドレス、加入者ID及びURLのうち少なくとも1つ以上をトラッカ51に送信すれば良い。
【0075】
また、上述の第1の実施の形態においては、トラッカ51がノード情報を生成する際に、各ノードは、受信したピース情報とIPアドレス及びポート番号とをトラッカ51に送信するようにした。しかし、これに限らず、ピース情報とIPアドレス及びポート番号とに加えて、Torrent File識別情報をトラッカ51に送信しても良い。Torrent File識別情報とは、例えば、Torrent Fileの一部又は全部のハッシュ値であっても良いし、Torrent Fileのファイル名であっても良いし、Torrent FileにそのIDを示すフィールドがある場合、そのIDの値であっても良い。この場合、トラッカ51は、受信したピース情報とIPアドレス及びポート番号とに加えTorrent File識別情報を受信すると、Torrent File識別情報毎にノード情報を生成するようにしても良い。即ち、トラッカ51は、アクセスしてきたノードが送信したTorrent File識別情報に対応するノード情報を生成してこれを当該ノードへ送信するようにしても良い。
【0076】
また、トラッカ51は、IPアドレス及びポート番号を基にノードをグループ分けし、グループ毎にノード情報を生成しても良い。即ち、トラッカ51は、アクセスしてきたノードが送信したIPアドレス及びポート番号の属するグループに対応するノード情報を生成してこれを当該ノードへ送信する。ここで、トラッカ51は、各ノードが複数のグループに属するようにグループ分けしても良い。この場合、トラッカ51は、アクセスしてきたノードが送信したIPアドレス及びポート番号が属する全部または一部のグループにそれぞれ対応するノード情報を生成してこれを当該ノードへ送信する。
【0077】
<変形例1_9>
上述の第1の実施の形態においては、ステップS9で、リーチャ50は、暗号化ピースの取得に成功した場合、その旨を、当該暗号化ピースを送信したシーダ52に通知するようにしても良い。暗号化ピースの取得が成功したか否かは、例えば、以下のように判断するようにしても良い。シーダ52が、そのデータの末尾に末尾であることを示す印をつけて暗号化ピースを送り、リーチャ50は、このような暗号化ピースを受信する際に当該印を検出することにより、当該暗号化ピースについてデータの全部を取得できたと判断するようにしても良い。
【0078】
又は、Torrent Fileに含まれるファイル情報が、上述の変形例1_1で説明したように、各暗号化ピースを用いてハッシュ演算により計算されるハッシュ値を含む場合、リーチャ50は、シーダ52から受信した暗号化ピースのハッシュ値を計算しこれと、Torrent Fileにおける当該暗号化ピースのハッシュ値とを比較して、これらが一致する場合に、当該暗号化ピースの取得に成功したと判断するようにしても良い。また、リーチャ50は、暗号化ピースの取得に成功した旨を示す通知メッセージをシーダ52に送信する際に、当該暗号化ピースのハッシュ値やTorrent Fileにある暗号化ピースのインデックスや取得に成功した時刻や当該リーチャ50のノード情報を当該通知メッセージに含めても良い。
【0079】
<変形例1_10>
上述の第1の実施の形態においては、リーチャ50が、シーダ52に対して一度に要求できる暗号化ピースの数に上限を設けても良い。この場合、シーダ52は、上限を超える数の暗号化ピースを要求するピース要求を受信した場合、シーダ52はその要求を拒否しても良い。又は、シーダ52はその要求を拒否せずに、その上限以下の数の暗号化ピースを、当該ピース要求を送信したリーチャ50に送信して、それらのうち少なくとも一つの暗号化ピースの送信が終わるのを確認してから、ピース要求により要求され未だ送信していない残りの暗号化ピースのうち少なくとも一つであって且つ設定された上限の数以下の数の暗号化ピースを当該リーチャ50に送信するようにしても良い。
【0080】
<変形例1_11>
上述の第1の実施の形態においては、シーダ52は、リーチャ50から送信されたピース要求によって要求された暗号化ピースを、保持していないなどの理由で当該リーチャ50に送信できない場合、その旨のメッセージをリーチャ50に送信しても良い。
【0081】
[第2の実施の形態]
次に、コンテンツ配信システムの第2の実施の形態について説明する。なお、上述の第1の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【0082】
(1)構成
本実施の形態にかかるコンテンツ配信システムの構成は、上述の第1の実施の形態にかかるコンテンツ配信システムの構成とは以下の点で異なる。本実施の形態においては、各ピースC1〜CNに対応する各暗号化ピースのうち全部又は一部のシーケンスについてトラッカ51が決定する。
【0083】
図17は、本実施の形態にかかるトラッカ51の機能的構成を示すブロック図である。トラッカ51は、インデックス生成部510と、シーダ情報生成部511と、シーダデータベース512と、インデックスデータベース513とを有する。
【0084】
シーダデータベース512は、各ピースC1〜CNについて、各暗号化ピースを復号するための各復号鍵のインデックスと、当該インデックスに対応する暗号化ピースを保持するノードにアクセスするためのシーダ接続先情報とを対応付けて記憶している。シーダ接続先情報とは、ここでは、URLとする。図18は、シーダデータベース512のデータ構成を例示する図である。同図においては、左から順に各ピースC1〜CNに対応する情報が示されており、例えば、ピースC1に対応しインデックス( 1, 1 )に対応する暗号化ピースは、URLが「http://www11...」であるノード及びURLが「http://www12...」であるノードが保持していることが示され、ピースC2に対応しインデックス( 2, 2 )に対応する暗号化ピースは、URLが「http://www23...」であるノードが保持していることが示されている。尚、各ピースC1〜CNのインデックスに対応付けられるノードは全て同じであっても良いし、各々異なるノードであっても良い。
【0085】
尚、トラッカ51は、以下のようにシーダ接続先情報を生成して各インデックスと対応付けてシーダデータベース512に記憶する。上述の第1の実施の形態で説明したように、トラッカ51は、各ノードからノード識別情報を取得するが、本実施の形態においては、これに加え、当該ノードが保持する暗号化ピースのピース情報も取得する。そして、トラッカ51は、上述の第1の実施の形態で説明したノード情報と同様に、ノード識別情報に基づいてシーダ接続先情報を生成し、これと、ピース情報によって示されるシーケンスに含まれる各インデックスとを対応付けてシーダデータベース512に記憶させる。
【0086】
インデックス生成部510は、リーチャ50からアクセスされると、まず、Torrent File識別情報をリーチャ50から取得する。そして、インデックス生成部510は、Torrent File識別情報に基づいて、各暗号化ピースの選択できるインデックスの範囲を定めた上で、各ピースに各々対応する各暗号化ピースの各インデックスを決定し、各インデックスの組み合わせ(シーケンス)を生成する。そして、インデックス生成部510は、生成したシーケンスがインデックスデータベース513に既に記憶されているか否かを問い合わせて、当該問い合わせ結果に応じて、当該シーケンスの使用可否を判断する。インデックス生成部510が使用可能であると判断したシーケンスを示すシーケンス情報はインデックスデータベース513において記憶される。
【0087】
シーダ情報生成部511は、インデックス生成部510が使用可能であると判断したシーケンスを用いて、シーダデータベース512を参照して、シーケンスに対応する各暗号化ピースを保持するノードを暗号化ピース毎に各々特定する。尚、シーダ情報生成部511は、ここで特定するノードは、対象の暗号化ピースを保持するノードが複数存在する場合、その中から任意に選択したものであっても良い。そして、シーダ情報生成部511は、暗号化ピース毎に特定されたノードを示すシーダ情報を生成してこれをリーチャ50に送信する。シーダ情報とは、インデックス生成部510が使用可能であると判断したシーケンスの各インデックスを示すインデックス情報と、当該各インデックスに対応する暗号化ピースを保持するノードにアクセスするための接続先情報とを含む。
【0088】
図19は、シーダ情報を例示する図である。同図においては、全部の暗号化ピースのシーケンスをトラッカ51が決定する例を示している。同図には、左から順にピースC1〜C3に対応する情報が示されており、接続先情報として、各ノードのURLが示されている。また、ピースC1〜CNに対して決定されたシーケンスは、{(3,1),(5,2),…,(1,N)}であることが示され、インデックス(3,1)に対応する暗号化ピースを、URLが「http://www10...」であるノードが保持することが示され、インデックス(5,2)に対応する暗号化ピースを、URLが「http://www20...」であるノードが保持することが示され、インデックス(1, N)に対応する暗号化ピースを、URLが「http://wwwN0...」であるノードが保持することが示されている。尚、各暗号化ピースを保持するノードは同一のノードであっても良い。
【0089】
インデックスデータベース513は、インデックス生成部510が生成したインデックスのシーケンスを示すシーケンス情報を記憶する。あるシーケンス情報がインデックスデータベース513に記憶されているということは、当該シーケンス情報によって示されるシーケンスは既に使用されたことになる。また、インデックスデータベース513は、外部又は内部にコントローラを有し、インデックス生成部510からの問合せに応じて、シーケンス情報を検索して、検索結果に応じて、問合せ結果をインデックス生成部510に返したり、シーケンス情報を記憶したりする。
【0090】
(2)動作
次に、本実施の形態にかかるコンテンツ配信システムで行うコンテンツ配信処理の手順について図20を用いて説明する。尚、ここでも、説明の便宜上、リーチャ50は、各暗号化ピースをシーダ52A〜52Cからの少なくとも1つから受信するものとする。
【0091】
ステップS1〜S2は上述の第1の実施の形態と同様である。トラッカ51は、リーチャ50からアクセスされると、Torrent File識別情報をリーチャ50から取得し、Torrent File識別情報に基づいて、インデックス生成処理を行う(ステップS20)。以下では、各暗号化ピースの全部のシーケンスをトラッカ51が決定する場合について説明する。図21はインデックス生成処理の手順を示すフローチャートである。インデックス生成処理では、インデックス生成部510が、例えば、各インデックス( i1, 1 ), ( i2, 2 ),…,( i3, N )において、「1≦i1, i2, …, i3≦m」なる「i1」, 「i2」, …,「 N」の値をそれぞれ任意に決定して、各インデックスのシーケンス{( i1, 1 ), ( i2, 2 ), …,( i3, N )}を生成する(ステップS200)。次いで、インデックス生成部510は、当該シーケンス{( i1, 1 ), ( i2, 2 ), …,( i3, N )}を示すシーケンス情報が既に記憶されているか否かをインデックスデータベース513に問い合わせる。インデックスデータベース513は、自身が記憶しているシーケンス情報を検索して、問合せされたシーケンスと同一のシーケンスを示すシーケンス情報が既に記憶されている場合(ステップS201:YES)、問合せされたシーケンスは既に使用されたことになる。この場合、インデックスデータベース513は、「1」をインデックス生成部510に返す。インデックス生成部510は、インデックスデータベース513から「1」を受け取ると、新たなシーケンスを生成して、当該シーケンスを示すシーケンス情報が既に記憶されているか否かをインデックスデータベース513に再度問い合わせる。
【0092】
尚、ステップS201で、問合せされたシーケンスと同一のシーケンスを示すシーケンス情報が記憶されていない場合(ステップS201:NO)、インデックスデータベース513は、問合せされたシーケンスを示すシーケンス情報を記憶すると共に、「0」をインデックス生成部510に返す(ステップS202)。インデックス生成部510がインデックスデータベース513から「0」を受け取ると、次いで、シーダ情報生成部511が、シーケンスシーダデータベース512を参照して、当該シーケンスに対応する各暗号化ピースを保持するシーダ52を暗号化ピース毎に各々特定する。そして、シーダ情報生成部511は、暗号化ピース毎に特定されたシーダを示すシーダ情報を生成してこれをリーチャ50に送信する(ステップS203)。シーダ情報には、上述のインデックス情報及び接続先情報が含まれている。
【0093】
図20に戻り、リーチャ50は、シーダ情報をトラッカ51から受信すると(ステップS21)、当該シーダ情報に含まれる接続先情報を用いてシーダ52にアクセスして(ステップS22)、シーダ情報に含まれるインデックス情報によって示されるシーケンスに対応する各暗号化ピースを取得する。ステップS10〜S13は上述の第1の実施の形態と同様である。ステップS23では、鍵サーバ53は、上述の照合処理を行わず、要求メッセージに応じた鍵束をリーチャ50に送信する。ステップS15以降は上述の第1の実施の形態と同様である。
【0094】
このような構成によれば、トラッカ51は、暗号化コンテンツを構成する暗号化ピースのシーケンスについて、既に使用されたシーケンスを回避したシーケンスをリーチャ50に提供することができる。例えば、トラッカ51が、あるリーチャ50に対して、図19に示されるシーダ情報を送信したとする。同図に示されるシーダ情報によって示されるシーケンスは、{( 3, 1 ),( 5, 2 ),…,( 1, N)}である。これに対し、その後、他のリーチャ50がトラッカ51にアクセスしたとき、例えば図22に示されるシーダ情報を送信する。同図に示されるシーダ情報によって示されるシーケンスは、{( 4, 1 ),( 5, 2 ), …,(2, N)}であり、図19に示したものとは異なる。従って、暗号化コンテンツを構成する暗号化ピースのシーケンスをトラッカ51がリーチャ50毎に異ならせることができる。
【0095】
このように、トラッカ51がシーケンスを決定することで、同一のシーケンスに対応するコンテンツの不正使用を抑制することができる。例えば、各暗号化ピースを復号するための復号鍵が全て漏洩した場合、漏洩元を特定することが可能である。
【0096】
即ち、トラッカ51は、既に使用されたシーケンスを回避するためのみではなく、鍵束を漏洩させる不正行為に対して、鍵束の漏洩元を特定するために、各ノードにシーケンスを割り当てることもできる。後者の目的を達成する手段として、以下の参考文献1において示されているTA Codeを用いることができる。例えば、あるノードに割り当てられたTA Codeの符号語をw=( i1 i2 … iN’ )(i1, i2, … ,iN’はそれぞれ、符号語を構成するシンボルである)とすると、当該ノードには暗号化ピースE( K( i1, 1 ) )[ C1 ], E( K( i2, 2 ) )[ C2 ], …, E( K( iN’, N’ ))[ CN’ ]を保持させる。
(参考文献1)J. Staddon, D.R. Stinson, and R. Wei, “Combinatorial properties of frameproof and traceability codes,” IEEE Transactions on Information Theory 47(3): pp.1042-1049 (2001).
【0097】
鍵束が漏洩した場合には、当該鍵束に対応するシーケンス(対応する符号語)を調べることにより、トラッカ51が当該シーケンスを割り当てたノードを特定することができる。このため、結果的に、コンテンツの不正使用を抑制することが可能になる。
【0098】
<変形例2_1>
上述の第2の実施の形態においては、接続先情報は、上述のものに限らず、シーダのURLの代わりに、シーダのIPアドレスとポート番号とを含むようにしても良いし、シーダのURLに加えて、シーダのIPアドレスとポート番号との組が含まれていても良い。
【0099】
また、上述の第2の実施の形態においては、シーダ情報は、各暗号化ピースの各インデックスと各暗号化ピースのハッシュ値とを含んでも良い。図23は、本変形例にかかるシーダ情報を例示する図である。同図においては、接続先情報として、各「ノードのIPアドレスとポート番号との組が示されている。また、hash(E( K(i1 , 1 ))[ C1 ] ), hash(E( K(i2 , 2 ) ) [ C2 ] ), hash(E( K(i3 , 3 )) [ C3 ])により、各暗号化ピースのインデックスとハッシュ値とが表される。
【0100】
また、上述の第2の実施の形態においては、第1の実施形態の変形例で説明したように、Torrent Fileに暗号化ピースのハッシュ情報が含まれている場合、トラッカ51は、Torrent File識別情報をリーチャ50から取得しなくても良い。
【0101】
また、上述の第2の実施の形態においては、トラッカ51が生成するシーダ情報は、ノードにアクセスするための接続先情報を含むようにしたが、これを含まないようにしても良い。図24は、本変形例にかかるシーダ情報を例示する図である。同図においては、暗号化ピースに対応する各インデックスのみが示されている。このような構成において、リーチャ50は、第1の実施の形態で説明したノード情報をトラッカ51から取得し、取得したノード情報に基づいて、各暗号化ピースを取得するようにすれば良い。また、この場合も、シーダ情報としてハッシュ値を含んでも良い。図25は、ハッシュ値を含み、接続先情報を含まないシーダ情報を例示する図である。
【0102】
また、トラッカ51は、シーダデータベース512において、接続先情報を各暗号化ピースを復号するための各復号鍵のインデックスと対応付けて記憶していたが、これに限らず、接続先情報自体を記憶しなくても良い。この場合のリーチャ50の動作は、上述と同様である。
【0103】
<変形例2_2>
上述の第2の実施の形態においては、インデックス生成処理では、1回でも既に使用されたシーケンスを再度使用しないようにしたが、2回以上の所定の回数まで使用可能にしても良い。この場合、トラッカ51の認証・鍵交換処理部533は、リーチャ50との間で行う相互認証において、リーチャ50を識別するためのリーチャ識別情報をリーチャ50から取得する。シーケンス情報照合部535は、シーケンス情報と、リーチャ識別情報と、当該リーチャ識別情報によって識別されるリーチャ50に対して生成したシーケンスを示すシーケンス情報を送信した使用回数とを対応付けてシーダデータベース512に記憶させる。図26は、本変形例に係るインデックス生成処理の手順を示すフローチャートである。尚、トラッカ51は、図20に示したステップS2でリーチャ50からアクセスされたときにリーチャ識別情報をリーチャ50から取得しているものとする。ステップS200〜S201は上述と同様である。ステップS201の判定結果が肯定的である場合、即ち、ステップS200で生成されたインデックスのシーケンスを示すシーケンス情報がインデックスデータベース513に既に記憶されている場合、当該シーケンス情報と、取得されたリーチャ識別情報とに対応付けられて記憶されている使用回数を参照して、当該使用回数が所定回数以下であるか否かを判断する(ステップS200A)。当該判断結果が肯定的である場合、インデックスデータベース513は、「0」をインデックス生成部510に返すと共に、当該シーケンス情報と、当該リーチャ識別情報と対応付けて使用回数を1つインクリメントすることにより、当該使用回数を更新する(ステップS200B)。尚、ステップS201の判断結果が否定的である場合は、上述と同様にステップS202以降の処理を行う。ステップS200Aの判断結果が否定的である場合は、ステップS200に戻って、各インデックスのシーケンスを新たに生成する。
【0104】
このような構成によれば、暗号化ピースの同一のシーケンスの使用を1回のみならず複数回許可することになり、より柔軟なコンテンツ配信を実現することができる。
【0105】
<変形例2_3>
上述においては、トラッカ51が、インデックス生成部510が生成したシーケンスが既に使用されたか否かをトラッカ51自体が判断するようにしたが、この判断をトラッカ51が行わないようにしても良い。この場合、上述の第1の実施の形態と同様にして、鍵サーバ53は、ステップS12の後、ステップS14の照合処理を行うことにより、同一のシーケンスが再度使用されることを回避することができる。
【0106】
例えば、この場合、リーチャ50は、トラッカ51がそのシーケンスを決定する暗号化ピースにつき、同一のピースに対応する異なる暗号化ピースを複数取得しておくようにしても良い。例えば、ピースC1に対して、暗号化ピースE( K( i1, 1 ) )[ C1 ]及びE( K( i1’, 1 ) )[ C1 ](但し、i1≠i1’, 1≦i1≦m,1≦i1’≦m)をリーチャ50は取得しておいても良い。このような構成によれば、リーチャ50が鍵束を鍵サーバ53に要求する際に、仮にインデックス( i1, 1 )を含むシーケンスが既に使用されている場合当該シーケンスに対応する鍵束を取得することはできないが、インデックス( i1’,1 ) を含むシーケンスが使用可能である場合には、トラッカ51へ再びアクセスすることなく当該シーケンスに対応する鍵束を鍵サーバ53から取得することができる。このように、暗号化ピースを予め余分に取得しておくことにより、シーケンスの候補を予め複数用意することができるため、リーチャ50が再度トラッカ51へアクセスする煩雑さを回避することができる。
【0107】
また、トラッカ51は、コンテンツを構成する全ての各ピースC1〜CNに対応する暗号化ピースのシーケンスを決定するようにしたが、これに限らず、一部の暗号化ピースのシーケンスのみを決定するように構成しても良い。このような構成においては、トラッカ51がシーケンスを決定しない残りの暗号化ピースについては、上述の第1の実施の形態と同様に、リーチャ50が他のノードから任意に取得すれば良く、そのシーケンスについて、鍵サーバ53が上述の照合処理を行うようにすれば良い。
【0108】
この場合、鍵サーバ53は、照合処理では、トラッカ51が決定した一部の暗号化ピースのシーケンスを除いたシーケンスについてのみ照合を行うようにしても良い。この場合、シーケンス情報記憶部536は、トラッカ51が決定する一部のシーケンス以外のシーケンスを示すシーケンス情報を記憶する。各ピースC1〜CNのうちいずれに対応する暗号化ピースのシーケンスについてトラッカ51が決定するのかは、例えばTorrent Fileにおいて予め定められているものとする。鍵サーバ53のシーケンス情報照合部535は、照合処理においては、トラッカ51が決定した一部のシーケンスを除いて、要求メッセージに含まれるインデックス情報と、シーケンス情報記憶部536に記憶されたシーケンス情報とを照合する。
【0109】
このような構成によれば、シーケンス情報記憶部536に記憶される情報量を低減させることができる。また、照合処理に用いる情報量を低減することができるため、鍵サーバ53の処理負担を軽減することができる。
【0110】
<変形例2_4>
上述の第2の実施の形態においては、インデックスデータベース513はトラッカ51が有する構成としたが、これに限らず、トラッカ51に接続されるデータベースサーバが有するように構成しても良い。このような構成において、トラッカ51のインデックス生成部510は、データベースサーバを介してインデックスデータベース513に記憶されているシーケンスを参照する。
【0111】
[第3の実施の形態]
次に、コンテンツ配信システムの第3の実施の形態について説明する。なお、上述の第1の実施の形態又は第2の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【0112】
(1)構成
本実施の形態にかかるコンテンツ配信システムの構成は、上述の第1の実施の形態又は第2の実施の形態にかかるコンテンツ配信システムの構成とは以下の点で異なる。本実施の形態にかかるコンテンツ配信システムにおいては、特定の暗号化ピース(たとえば、ピースC1に対応する暗号化ピースとする)を鍵サーバ53からリーチャ50へ配信する例について説明する。ここでは、例えば、図6に示されるように暗号化ピースが生成されるものとする。また、本実施の形態にかかるTorrent Fileに含まれるファイル情報は、ピースC1に対応する暗号化ピースにどのようなものがあるかを示す情報を含まない。
【0113】
このような構成において、リーチャ50は、鍵束を要求する要求メッセージを鍵サーバ53に送信する際に、当該リーチャ50を識別するためのリーチャ識別情報を要求メッセージに含ませて送信する。また、要求メッセージは、インデックス情報を含まなくても良いし、特定の暗号化ピースを除いた全てのピース(例えば、特定の暗号化ピースがピースC1に対応する暗号化ピースである場合はC2〜CN)の各インデックスのシーケンスを示すようにしても良い。
【0114】
また、鍵サーバ53の鍵記憶部534は、各復号鍵に加え、ピースC1に対応する暗号化ピースを記憶する。シーケンス情報記憶部536は、シーケンス情報に対応して過去に鍵サーバ53から鍵束を送信したリーチャ50のリーチャ識別情報を記憶する。シーケンス情報照合部535は、リーチャ50から送信されたリーチャ識別情報がシーケンス情報記憶部536に記憶されているか否かを判断し、当該判断結果に応じて、鍵束及び特定の暗号化ピースの送信の可否を決定する。鍵供給部537は、シーケンス情報照合部535の決定結果に応じて、鍵束及び暗号化ピースをリーチャ50に送信する。
【0115】
(2)動作
次に、本実施の形態にかかるコンテンツ配信システムで行うコンテンツ配信処理の手順について図12を用いて説明する。ステップS1〜S13は上述の第1の実施の形態と同様である。但し、ステップS1でリーチャ50が取得したTorrent Fileに、ピースC1に対応する暗号化ピースに関する情報が含まれないため、リーチャ50は、各ピースC2〜CNに各々対応する暗号化ピースを取得している。ステップS10では、鍵束を要求する要求メッセージに、当該リーチャ50を識別するためのリーチャ識別情報を含ませて鍵サーバ53に送信する。そして、ステップS14では、鍵サーバ53は、以下の照合処理を行う。
【0116】
図27は、本実施の形態にかかる照合処理の手順を示すフローチャートである。鍵サーバ53のシーケンス情報照合部535は、要求メッセージに含まれるリーチャ識別情報と、シーケンス情報記憶部536に記憶されているリーチャ識別情報とを照合し(ステップS140D)、同一のリーチャ識別情報がシーケンス情報記憶部536に既に記憶されているか否かを判断する(ステップS140E)。当該判断結果が否定的である場合、シーケンス情報照合部535は、当該リーチャ識別情報に対応する鍵束{K( i1, 1 ), K(1, 2 ), …, K( 1, N )}と、ピースC1に対応する暗号化ピースE( K( i1, 1 ) )[ C1 ]とを送信することを決定する。そして、シーケンス情報照合部535は、制御部530を介して、当該鍵束及び暗号化ピースを当該リーチャ50へ送信するよう鍵供給部537に指示する。また、シーケンス情報照合部535は、当該リーチャ識別情報をシーケンス情報記憶部536に記憶させる。鍵供給部537は、制御部530を介してシーケンス情報照合部535から送信を指示された鍵束及び暗号化ピースを、鍵記憶部534から読み出しこれらをネットワークインターフェース部532を介してリーチャ50に送信する(ステップS140F)。尚、ステップS140Eの判断結果が肯定的である場合、即ち、リーチャ50に対して過去に鍵サーバ53から鍵束を送信している場合、シーケンス情報照合部535は、当該鍵束及び暗号化ピースを送信しないことを決定し、制御部530を介して、当該鍵束の当該リーチャ50への送信禁止を鍵供給部537に指示する(ステップS144)。ステップS15以降は上述の第1の実施の形態と同様である。
【0117】
以上のようにして、特定の暗号化ピースを鍵サーバ53から配信することにより、リーチャ50にトラッカ51に再度アクセスさせることなく、各リーチャ50がそれぞれ異なるシーケンスで各暗号化ピースを取得することを可能とする。従って、リーチャ50がトラッカ51へ再度アクセスする煩雑さを避けることができる。
【0118】
<変形例3_1>
上述のステップS140Fにおいて、上述の変形例1_7で例示した暗号化ピースの置き換えを行ってもよい。例えば、リーチャ50が暗号化コンテンツE( K( i2, 2 ) )[ C2 ], E( K( i3, 3 ) )[ C3 ], …, E( K( iN, N ))[ CN ]を取得し、これに対応する鍵束を鍵サーバ53へ要求したとする。鍵サーバ53は、リーチャ50から要求された鍵束に対応するシーケンス{( i2, 2 ), ( i3, 3 ), …, ( iN, N )}がシーケンス情報記憶部536に既に記憶されている場合(シーケンス情報照合部535での判定結果が否定的な場合)、シーケンス情報記憶部536に記憶されていない他のシーケンス{( i2’, 2 ), ( i3, 3 ), …, ( iN, N )}を生成して、リーチャ50が置き換えるべき暗号化ピースE( K( i2’, 2 ) )[ C2 ]とそのインデックスに関する情報(この例では( i2’, 2 ))をリーチャ50へ送信する。加えて、鍵サーバ53はシーケンス{( i1, 1 ), ( i2’, 2 ), …, ( iN, N )}に各々対応する各復号鍵を含む鍵束とピースC1に対応する暗号化ピースE( K( i1, 1 ) )[ C1 ]とをリーチャ50へ送信する。なお、リーチャ50から要求された鍵束に対応するシーケンス{( i2, 2 ), ( i3, 3 ), …, ( iN, N )}がシーケンス情報記憶部536に未だ記憶されていない場合(シーケンス情報照合部535での判定結果が肯定的な場合)、鍵サーバ53は上記に例示した置き換えを行ってもよいし、行わなくてもよい。
【0119】
<変形例3_2>
上述の第3の実施の形態においては、特定の暗号化ピースは、ピースC1に対応する暗号化ピースに限らず、その数も1つに限らない。例えば、第2の実施の形態で例示した参考文献1におけるTA Codeを用いて定められる暗号化ピースを特定の暗号化ピースとしてもよい。例えば、あるノードに割り当てられたTA Codeの符号語をw=( i1 i2 … iN’ )とすると、当該ノードには暗号化ピースE( K( i1, 1 ) )[ C1 ], E( K( i2, 2 ) )[ C2 ], …, E( K( iN’, N’ ))[ CN’ ]を特定の暗号化ピースとして、鍵サーバ53からリーチャ50へ送信してもよい。
【0120】
また、特定の暗号化ピースをリーチャ50に配信するのは、鍵サーバ53に限らず、トラッカ51、販売サーバ54又は信頼できる第3者のサーバであっても良い。この場合、鍵サーバ53は、ステップS140Fでは、鍵束のみリーチャ50に送信すれば良い。
【0121】
<変形例3_3>
上述の第3の実施の形態においては、暗号化ピース及びリーチャ識別情報を各々記憶するものは、鍵記憶部534及びシーケンス情報記憶部536に限らない。例えば、鍵サーバ53は別途異なる記憶部を各々備え、各記憶部に暗号化ピース及びリーチャ識別情報を記憶させるようにしても良い。
【0122】
<変形例3_4>
上述の第3の実施の形態においては、特定の暗号化ピースを鍵サーバ53からリーチャ50に送信するように構成したが、これに限らず、鍵サーバ53が特定の暗号化ピースのインデックス(上述の例ではピースC1に対応するインデックスi1の値:(i1,1))を指定し、そのインデックスに対応する暗号化ピースE( K( i1, 1 ) )[ C1 ]を他ノード、販売サーバ54又は別途用意した専用サーバからリーチャ50に送信するようにしても良い。また、鍵サーバ53がインデックスを指定するのではなく、他ノード、販売サーバ54又は別途用意した専用サーバが特定の暗号化ピースのインデックスを指定し、専用サーバからそのインデックスに対応する暗号化ピースをリーチャ50に送信するようにしても良い。
【0123】
[第4の実施の形態]
次に、コンテンツ配信システムの第4の実施の形態について説明する。なお、上述の第1の実施の形態乃至第3の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【0124】
(1)構成
本実施の形態においては、Torrent Fileに含まれるファイル情報が、上述の変形例1_1で説明したように、各暗号化ピースを用いてハッシュ演算により計算されるハッシュ値{ hash( E( K( i, j ) )[ Cj ] ) }(ただし、1≦i≦m、1≦j≦N)を含んでいるものとする(図14参照)。上述の各実施の形態においては、シーダ52がリーチャ50に送信するピース情報は、図7に示されるように、当該シーダ52が記憶している暗号化ピースのシーケンスを示すものであった。本実施の形態においては、ピース情報は、図29に示されるように、シーダ52が記憶している暗号化ピースの各インデックス(i, j)のうち、各ピースC1〜CNを区別するためのインデックスjのみを示すものとする。
【0125】
尚、以降、各ピースC1〜CNを区別するためのインデックスjについては、ピースインデックスと表記し、復号鍵の数に応じてバリエーションが生じるインデックスiについては、バリエーションインデックスと表記し、これらの組(i,j)を単にインデックスと表記する。また、ピースインデックスjに対応するピースについて、相異なる2つ以上の暗号鍵で各々暗号化された暗号化ピースが存在する場合これらの集合を暗号化ピース列jと適宜表記する。
【0126】
このような構成において、リーチャ50のコンテンツ取得部500は、上述のようなピース情報に基づいて、暗号化ピースをシーダ52から取得すると、当該暗号化ピースについて、バリエーションインデックスjを特定する処理を行う。具体的には、コンテンツ取得部500は、当該暗号化ピースを用いてハッシュ演算によりハッシュ値を計算し、Torrent Fileに含まれるファイル情報を参照して、当該ハッシュ値に対応するインデックス(i, j)のうち、当該暗号化ピースのピースインデックスjに対応するバリエーションインデックスiを特定する。
【0127】
(2)動作
次に、本実施の形態にかかるコンテンツ配信システムで行うコンテンツ配信処理の手順について図30を用いて説明する。ステップS1〜S5は、上述の第1の実施の形態と同様である。ステップS6では、シーダ52は、リーチャ50からアクセスされると、図29に示したように、自身の保持する暗号化ピースのピースインデックスを示すピース情報をリーチャ50へ送信し、ステップS7では、リーチャ50は、当該ピース情報を受信する。ステップS8では、リーチャ50は、当該ピース情報を用いて、少なくとも1つのシーダ52にアクセスして、各ピースC1〜CNに各々対応して複数存在しえる暗号化ピースのうち少なくとも1つを要求するピース要求を当該シーダ52に送信して、各暗号化ピースを受信する。シーダ52は、リーチャ50からのピース要求に応じて、自身の保持する暗号化ピースをリーチャ50に送信する(ステップS9)。ここでは、リーチャ50がシーダ52Bにアクセスして受信したピース情報に示されるインデックスには、バリエーションインデックスが含まれていない。このため、リーチャ50は、シーダ52Bにアクセスして受信したピース情報を用いて、例えば、ピースC1について暗号化された暗号化ピースE( K( i1, 1 ) )[ C1 ](i1は1≦i1≦mの整数)のうちいずれかの暗号化ピースをシーダ52Bが保持しているか否かを判断し、当該判断結果が肯定的である場合、当該シーダ52Bにアクセスして、ピースC1について暗号化された暗号化ピースのうちいずれかの暗号化ピースをシーダ52Bから受信することによりこれを取得する。尚、シーダ52BがピースC1について暗号化された暗号化ピースを実際には1つも保持していなかった場合、リーチャ50は、次いで、他のシーダ52(例えばシーダ52C)にアクセスして、当該他のシーダ52Cからピース情報を取得する。そして、リーチャ50は、上述と同様にして、ピース情報を用いて、当該暗号化ピースをシーダ52Cが保持しているか否かを判断して、当該判断結果が肯定的である場合、シーダ52にアクセスして、当該暗号化ピースの取得を試みる。
【0128】
次いで、ステップS4001では、リーチャ50は、受信した暗号化ピースのハッシュ値を計算する。その後、ステップS4002では、リーチャ50は、図14に示したTorrent Fileを参照して、当該ハッシュ値に対応するインデックス(i, j)のうち、当該暗号化ピースのピースインデックスjに対応するバリエーションインデックスiを特定する。ステップS10は上述の第1の実施の形態と同様である。ここでリーチャ50が鍵サーバ53に送信する要求メッセージには、上述の第1の実施の形態と同様に、各復号鍵に対応するシーケンスを示すインデックス情報{( i1, 1 ),…, ( iN, N)}が含まれる。この各復号鍵に対応する各インデックス( i1, 1 ),…, ( iN, N)における各バリエーションインデックスi1,…iNは、ステップS4001毎に各々特定されたものとなる。以降、ステップS11〜S16も上述の第1の実施の形態と同様である。
【0129】
以上のようにして、リーチャ50が暗号化ピースを受信する前に、シーダ52が記憶している暗号化ピースのバリエーションインデックスiを特定できないようにする。このような構成によれば、リーチャ50が、例えばその復号鍵が漏洩したあるインデックス(i, j)に対応する暗号化ピースを取得しようとすることを抑制することができる。また、取得された暗号化ピースについては、そのバリエーションインデックスをハッシュ値及びTorrent Fileにより特定可能にしたため、リーチャ50は、取得した各暗号化ピースの復号鍵を含む鍵束を上述の第1の実施の形態と同様にして鍵サーバ53から取得することができる。
【0130】
(3)変形例
<変形例4_1>
上述第4の実施の形態においては、ピース情報に示されるインデックスは、図29に示されるものに限らず、例えば図31に示されるように、バリエーションインデックスjを含んでいても良い。この場合、バリエーションインデックスjには、値自体が特定されないもの(ここでは‘X’である)をセットすれば良い。また、ピース情報に示されるインデックスは、図32に示されるように、バリエーションインデックスjを含むものと含まないものとが混在するようにしても良い。
【0131】
<変形例4_2>
上述第4の実施の形態においては、シーダ52は、リーチャ50へ暗号化ピースを送信する場合、ピース情報とは別に、当該暗号化ピースのバリエーションインデックスを示すバリエーションインデックス情報をリーチャ50へ送信するようにしても良い。この場合、リーチャ50は、上述のように、暗号化ピースのハッシュ値を計算する必要はない。このため、Torrent Fileに含まれるファイル情報は、各暗号化ピースのハッシュ値を含んでいなくても良い。図33は、本変形例にかかるコンテンツ配信処理の手順を示すフローチャートである。ステップS1〜S8は上述の第1の実施の形態と同様である。ステップS4003では、シーダ52は、リーチャ50へ送信する対象の暗号化ピースのバリエーションインデックスを示すバリエーションインデックス情報をリーチャ50へ送信し、ステップS4004で、リーチャ50は当該バリエーションインデックス情報を受信する。以降、ステップS9〜S16は、上述の第1の実施の形態と同様である。尚、ステップS4003〜S4004は、ステップS9の後であっても構わない。
【0132】
このような構成によれば、リーチャ50における暗号化ピースのバリエーションインデックスの特定を容易にしつつ、例えばその復号鍵が漏洩したあるインデックス(i, j)に対応する暗号化ピースを取得しようとすることを抑制することができる。
【0133】
<変形例4_3>
上述第4の実施の形態においては、シーダ52は、リーチャ50へ暗号化ピースを送信する場合、当該暗号化ピースのハッシュ値をリーチャ50へ送信するようにしても良い。この場合も、リーチャ50は、上述のように、暗号化ピースのハッシュ値を計算する必要はない。Torrent Fileに含まれるファイル情報は、上述の第4の実施の形態と同様に、各暗号化ピースのハッシュ値を含んでいる。図34は、本変形例にかかるコンテンツ配信処理の手順を示すフローチャートである。ステップS1〜S8は上述の第1の実施の形態と同様である。ステップS4005では、シーダ52は、リーチャ50へ送信する対象の暗号化ピースのハッシュ値をリーチャ50へ送信し、ステップS4006で、リーチャ50は当該ハッシュ値を受信する。以降、ステップS9,S4002,S10〜S16は、上述の第4の実施の形態と同様である。尚、ステップS4005〜S4006は、ステップS9の後であっても構わない。
【0134】
このような構成によれば、暗号化ピースのバリエーションインデックスをリーチャ50に直接伝えることなく且つハッシュ値を伝えることで、リーチャ50に処理負担を掛けることなく、暗号化ピースのバリエーションインデックスを特定させることができる。
【0135】
尚、シーダ52が暗号化ピースのハッシュ値をリーチャ50へ送信する場合、暗号化ピースのバリエーションインデックスの特定を、リーチャ50が行うのではなく、鍵サーバ53が行うようにしても良い。即ち、上述のステップS4002に相当する処理を、鍵サーバ53が行うようにする。図35は、本変形例にかかるコンテンツ配信処理の手順を示すフローチャートである。ステップS1〜S8は上述の第1の実施の形態と同様である。そして、上述のステップS4005〜S4006の後、ステップS10では、リーチャ50は、各暗号化ピースを各々復号するための各復号鍵を含む鍵束を要求する要求メッセージとして、ハッシュ値を含む要求メッセージを鍵サーバ53に送信する。ピースCjが暗号化された暗号化ピースのハッシュ値をHjとすると、要求メッセージは、インデックス情報として例えば{ ( 1, 1 ), (( X, 2 ), H2), …, ((N), HN) }を含む。このインデックス情報に含まれるインデックス( 1, 1 )では、ピースC1についてバリエーションインデックス‘1’が特定されていることが示され、インデックス(( X, 2 ), H2)では、ピースC2についてバリエーションインデックスが特定されておらずハッシュ値H2が示されており、インデックス((N), HN)では、ピースCNについてバリエーションインデックスが特定されておらずハッシュ値HNが示されている。
【0136】
次いで、ステップS11では、鍵サーバ53は、このようなハッシュ値を含む要求メッセージを受信した場合、ステップS12の後、次いで、ステップS4007で、ハッシュ値が示されるインデックスについて、図14に示されるTorrent Fileを参照して、ステップS4002と同様にして、当該暗号化ピースのバリエーションインデックスを特定する。
【0137】
このような構成によれば、リーチャ50自身が暗号化ピースのバリエーションインデックスを特定しなくても、当該暗号化ピースを復号するための復号鍵を取得可能になる。
【0138】
<変形例4_4>
上述の第4の実施の形態においては、リーチャ50が暗号化ピースのハッシュ値を計算した後、当該暗号化ピースのバリエーションインデックスを特定する処理を行ったが、これに限らず、この処理を鍵サーバ53が行うようにしても良い。この場合、鍵サーバ53は、図14に示されるTorrent Fileを予め取得しておく。図36は、本変形例にかかるコンテンツ配信処理の手順を示すフローチャートである。ステップS1〜S8は上述の第1の実施の形態と同様である。ステップS4001は上述の第4の実施の形態と同様である。ステップS9〜S12は上述の第1の実施の形態と同様である。ステップS4007以降は上述の変形例4_3と同様である。
【0139】
このような構成によっても、リーチャ50自身が暗号化ピースのバリエーションインデックスを特定しなくても、当該暗号化ピースを復号するための復号鍵を取得可能になる。
【0140】
[第5の実施の形態]
次に、コンテンツ配信システムの第5の実施の形態について説明する。なお、上述の第1の実施の形態乃至第4の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【0141】
(1)構成
本実施の形態においては、リーチャ50が、1つの暗号化ピースを複数回に分けてシーダ52に要求する場合について説明する。この場合、リーチャ50は、暗号化ピースについて、その一部である部分データ(サブピースという)をシーダ52に要求するピース要求(一部データ要求という)を送信する。尚、各サブピースのデータ長は、一定の長さであっても良いし、可変長でも良い。また、暗号化ピースが何個のサブピースで構成されるかについては限定されず、一定の個数にしても良いし、可変にしても良い。また、各サブピースのデータ長や、1つの暗号化ピースを構成する全部のサブピースの個数は、コンテンツ配信システムに初期値として予め設定されるようにしても良いし、Torrent Fileにおいて予め示されるようにしても良い。尚、ここでは、Torrent Fileに含まれるファイル情報は、各暗号化ピースのデータ長を含むものとし、ハッシュ値を含んでいなくても良い。
【0142】
<リーチャ50の構成>
図37は、本実施の形態にかかるリーチャ50の機能的構成を例示する図である。リーチャ50は、上述したコンテンツ取得部500と、鍵束要求部501と、鍵束取得部502と、コンテンツ復号部503とに加え、サブピース完成判定部504と、セッション情報管理部505とを有する。尚、リーチャ50は、暗号化ピースについてそのデータの全部を要求することも、サブピースを要求することもいずれも可能であるとする。前者については、上述の第1の実施の形態と略同様であるので、ここでは、後者について主に説明する。
【0143】
本実施の形態にかかるコンテンツ取得部500は、ピース要求をシーダ52に送信する際に、取得対象の暗号化ピースについて、データの一部を取得済みであるか否かを判断し、データの一部を取得済みであると判断した場合、一部データ要求を生成してこれをシーダ52に送信する。一部データ要求は、例えば、取得対象である一部取得済み暗号化ピースを指定する指定ピースインデックス及び指定バリエーションインデックスの組(i,j)と、当該一部取得済み暗号化ピースの一部のデータであるサブピースを指定するサブピース指定情報とを示す。サブピース指定情報は、当該一部取得済み暗号化ピースの一部のデータ(サブピース)のデータ範囲を指定するものである。データ範囲は、例えば、当該サブピースの開始位置としてバイト数等で表されるオフセット値、当該サブピースの終了位置としてバイト数等で表されるオフセット値、当該サブピースのデータ長などやそれらの組み合わせなどを用いて指定される。図38は、本実施の形態にかかるピース要求のデータ構成を例示する図である。同図においては、一部データ要求として、指定ピースインデックス及び指定バリエーションインデックスの組と、サブピース指定情報として、サブピースの開始位置及びデータ長とが示されている。この一部データ要求は、インデックス(3,4)に対応する暗号化ピースE( K( 3, 4 ) )[C4]のデータのうち、先頭位置(0バイト目)から54677バイト目を開始位置とし、当該開始位置から54676バイトを有するデータ範囲のデータが取得対象のサブピースとして指定されていることが示されている。
【0144】
尚、コンテンツ取得部500は、ピース要求をシーダ52に送信する際に、取得対象の暗号化ピースについて、データの全部を未取得であると判断した場合、上述の第1の実施形態で説明したようなピース要求を生成してこれをシーダ52に送信する。
【0145】
サブピース完成判定部504は、コンテンツ取得部500が暗号化ピース又はサブピースを受信した場合、当該暗号化ピース又は当該サブピースを一部とする暗号化ピースについて、その全部のデータを取得済みであるか否かを判定する完成判定処理を行う。この完成判定処理は、例えば、そのデータ長や、暗号化ピースにおけるデータの先頭位置や終了位置からデータ長を計算すること等により行う。ここでは、サブピース完成判定部504は、後述するセッション情報において示される取得済み量と、Torrent Fileに含まれるデータ長とを参照して、完成判定処理を行う。そして、サブピース完成判定部504は、判定対象の暗号化ピースについて、その全部のデータを取得済みであると判定した場合、当該暗号化ピースが複数のサブピースから構成されている場合には、当該暗号化ピースを構成する全てのサブピースを統合して、暗号化ピースを完成させる完成処理を行う。
【0146】
また、サブピース完成判定部504は、判定対象の暗号化ピースについて、その全部のデータを取得済みでないと判定した場合、後述のセッション情報を参照して、当該暗号化ピースを構成するサブピースを送信したシーダ52にアクセスして、当該暗号化ピースを構成するサブピースのうち未だ取得していないサブピース(未取得サブピースという)を要求する一部データ要求を、コンテンツ取得部500を介してシーダ52に送信する。このようにして、サブピース完成判定部504は、コンテンツ取得部500を介して未取得サブピースの取得を試みる。例えば、サブピース完成判定部504は、当該暗号化ピースを構成するサブピース全て取得するまで、未取得サブピースをシーダ52から取得する処理を繰り返し行う。
【0147】
セッション情報管理部505は、サブピースの送信元であるシーダ52に対して未取得サブピースを再度要求するために用いるセッション情報を生成してこれを記憶する。セッション情報は、例えば、シーダ特定情報と、取得済み量とを示す。シーダ特定情報とは、サブピースの送信元であるシーダ52を特定する情報である。シーダ特定情報としては、例えば、シーダ52のIPアドレスやポート番号や、シーダ52のMACアドレスや上述の加入者IDなどやこれらの組み合わせなどがある。取得済み量とは、暗号化ピースのうち取得済みのデータの数量を示す。取得済み量としては、例えば、暗号化ピースにおけるデータの先頭位置や取得済みのデータの終了位置から計算されるデータ長や、暗号化ピースを構成するサブピースのうち取得済みのサブピースのデータ長の合計や、当該取得済みのサブピースの個数などがある。
【0148】
<シーダ52の構成>
シーダ52は、一部データ要求において要求されたサブピースを外部記憶装置から読み出してこれをリーチャ50に送信する。図38に示された一部データ要求を受信した場合は、シーダ52は、当該一部データ要求において示される指定ピースインデックス及び指定ピースインデックスに対応する暗号化ピースのうち、指定されたデータ範囲のデータを送信する。
【0149】
(2)動作
本実施の形態にかかるコンテンツ配信システムで行うコンテンツ配信処理の手順について図39を用いて説明する。ステップS1〜S4の処理は、上述の第1の実施の形態と同様である。ステップS300では、リーチャ50は、暗号化ピースのダウンロード処理を行う。一方、シーダ52は、ステップS301で、暗号化ピースのアップロード処理を行う。図40は、ダウンロード処理及びアップロード処理の詳細な手順を示すフローチャートである。ステップS5〜S7の処理は、上述の第1の実施の形態と同様である。ステップS310では、リーチャ50は、ピース要求をシーダ52に送信する際に、取得対象の暗号化ピースについて、データの一部を取得済みであるか否かを判断する。データの一部を取得済みであると判断した場合(ステップS310:YES)、リーチャ50は、セッション情報のシーダ特定情報を参照して(ステップS313)、取得対象の暗号化ピースを構成するサブピースの送信元であるシーダ52を特定し、図38に示されるような一部データ要求をピース要求として生成して(ステップS314)、これを当該シーダ52に送信する(ステップS312)。尚、取得対象の暗号化ピースについて、データの全部を未取得であると判断した場合(ステップS310:NO)、リーチャ50は、上述の第1の実施形態で説明したピース要求を生成して(ステップS311)、これをシーダ52に送信する(ステップS312)。
【0150】
一方、シーダ52は、ステップS312で送信されたピース要求を受信すると、当該ピース要求に応じた暗号化ピース又はサブピースを外部記憶装置から読み出してこれをリーチャ50に送信する(ステップS315)。リーチャ50は、暗号化ピース又はサブピースを受信すると(ステップS316)、セッション情報において取得済み量を更新する(ステップS317)。次いで、リーチャ50は、ピース要求が完了したか否かを判定する(ステップS318)。ここでは、リーチャ50は、ステップS312でサブピースを受信した場合には、当該サブピースから構成される暗号化ピースについて、セッション情報に示される取得済み量と、Torrent Fileに含まれるデータ長とを比較し、これらが一致する場合には、当該暗号化ピースについて、その全部のデータを取得済みであると判定し、ピース要求が完了したと判定する(ステップS318:YES)。そして、リーチャ50は、当該暗号化ピースを構成する全てのサブピースを統合して、暗号化ピースを完成させる完成処理を行う。次いで、リーチャ50は、他のシーダ52にアクセスして、他の暗号化ピースを受信するか否かを判断し(ステップS319)、当該判断結果が肯定的である場合には、ステップS5に戻り、他のシーダ52にアクセスする。ステップS319の判断結果が否定的である場合には、処理を終了する。
【0151】
一方、ステップS318で、セッション情報に示される取得済み量と、Torrent Fileに含まれるデータ長とが一致する場合には、リーチャ50は、当該暗号化ピースについて、その全部のデータを取得済みでないと判定し、ピース要求が完了していないと判定する。この場合、リーチャ50は、ステップS5に戻り、セッション情報を参照して、当該暗号化ピースを構成するサブピースを送信したシーダ52に再度アクセスする。そして、以降の処理では、リーチャ50は、当該暗号化ピースを構成するサブピースのうち未取得サブピースを要求する一部データ要求を生成してこれをシーダ52に送信し、当該暗号化ピースを構成するサブピース全て取得するまで、未取得サブピースをシーダ52から取得する処理を繰り返し行う。
【0152】
尚、リーチャ50がステップS311の後、ステップS316で暗号化ピースを受信する場合、何らかの原因で暗号化ピースのデータのうち全部を受信し切れない場合がある。この場合も、ステップS315でサブピースを受信した場合と同様に、ステップS318では、リーチャ50は、セッション情報に示される取得済み量と、Torrent Fileに含まれるデータ長とを比較することにより、ピース要求が完了したか否かと判定する。そして、ピース要求が完了していないと判定した場合、リーチャ50は、ステップS5に戻り、セッション情報を参照して、当該暗号化ピースを送信したシーダ52に再度アクセスする。そして、以降の処理では、リーチャ50は、当該暗号化ピースのうち未取得のデータ(未取得サブピースと同様に扱う)を要求する一部データ要求を生成してこれをシーダ52に送信する。以降は上述と同様である。一方、ステップS318で、リーチャ50は、一度の受信でピース要求が完了したと判定した場合、上述したステップS319の処理を行う。
【0153】
そして、図39に戻り、リーチャ50は、コンテンツを構成する各ピースに各々対応する暗号化ピースであって暗号化コンテンツを構成する全ての暗号化ピースについて、全てのデータを取得すると、上述の第1の実施の形態と同様にして、ステップS10以降の処理を行う。
【0154】
以上のような構成によれば、リーチャ50は自身が一部取得済みの暗号化ピースについて必要なデータを取得することができることから、暗号化ピースをより早く完成させることができるようになり、その暗号化ピースを他のリーチャと共有できることから配信効率の向上が期待される。
【0155】
(3)変形例
<変形例5_1>
上述の第5の実施の形態においては、シーダ52は、サブピースを送信する際に、一部データ要求によって要求されたサブピースのデータの全部ではなく更に一部のデータのみを送信するようにしても良い。また、シーダ52は、リーチャ50に送信するサブピースと共に、当該サブピースを特定する情報を送信しても良い。サブピースを特定する情報は、上述したサブピースを指定する情報と同様の情報であっても良い。また,複数のサブピースを一度に送信する場合、これらが、1つの暗号化ピースにおいて連続するサブピースであっても、各サブピースのそれぞれについて、サブピースを特定する情報を共に送信するようにしても良いし、送信するサブピースの個数を共に送信するようにしても良い。
【0156】
また、シーダ52は、ピース要求によって暗号化ピースについてそのデータの全部が要求された場合、当該暗号化ピースと共に、サブピースではなく当該暗号化ピースのデータの全部を含むことを示す情報を共に送信するようにしても良い。
【0157】
また、シーダ52は、同じリーチャ50から暗号化ピースやサブピースを要求するピース要求(新ピース要求という)を受信した際、それより以前に受信したピース要求(前ピース要求という)によって要求された暗号化ピースやサブピースについて送信が完了していないデータ量に応じて、新ピース要求による要求を拒否したり、新ピース要求による要求を保留したりしても良い。具体的には、例えば、シーダ52は、前ピース要求によって要求されていてその送信がまだ完了しておらず送信途中である暗号化ピースやサブピースの数や送信が完了されていない前ピース要求の数などを計数し、当該数がある閾値以上であった場合には、新ピース要求による要求を拒否する。又は、シーダ52は、送信途中のものの送信を終えて処理中である前ピース要求に応じて既に送信した暗号化ピースやサブピースの数が閾値未満になるまで新ピース要求による要求を保留する。
【0158】
また、リーチャ50は、暗号化ピースやサブピースを取得する毎に取得した旨のメッセージをシーダ52へ送信しても良い。また、このメッセージにその暗号化ピースやサブピースを識別する情報として指定ピースインデックス及び指定バリエーションインデックスの組(i,j)と、サブピースを指定する情報やハッシュ値などを含めても良い。また、取得したサブピースから暗号化ピースを完成できたときに完成できた旨のメッセージをシーダ52へ送信しても良い。このメッセージにその暗号化ピースを識別する情報として指定ピースインデックス及び指定バリエーションインデックスの組(i,j)やハッシュ値などを含めても良い。
【0159】
<変形例5_2>
上述の第5の実施の形態においては、一部データ要求が、更に、一部データ要求であることを示すフラグ情報を含むようにしても良い。また、1つの一部データ要求において、複数のサブピースを要求するようにしても良い。この場合、一部データ要求において、複数のサブピースのそれぞれについて、指定ピースインデックス及び指定バリエーションインデックスの組(i,j)と、サブピースを指定する情報とを示すようにしても良い。また、1つの一部データ要求で要求される複数のサブピースは、1つの暗号化ピースにおいて連続するサブピースであっても良いし、1つの暗号化ピースにおいて連続しないサブピースであっても良いし、各々異なるピースが復号される各暗号化ピースの一部であるサブピースであっても良い。一方、シーダ52は、一部データ要求によって要求される複数のサブピースのうち少なくとも1つをリーチャ50に送信するようにしても良い。
【0160】
また、一部データ要求は、一部取得済み暗号化ピースを指定する指定ピースインデックス及び指定バリエーションインデックスの組(i,j)ではなく、指定ピースインデックスjを少なくとも示すようにしても良い。この場合、シーダ52は、一部データ要求を受信すると、当該一部取得済み暗号化ピースを指定する指定バリエーションインデックスと、サブピースを指定する情報とをリーチャ50に問い合わせることにより、これらの情報を取得して、送信対象のサブピースを特定して当該サブピースをリーチャ50に送信するようにしても良い。このような構成によれば、シーダ52に対する攻撃耐性が向上し得る。
【0161】
また、一部データ要求は、一部取得済み暗号化ピースを用いてハッシュ演算によって計算されたハッシュ値を示し、取得対象の一部取得済み暗号化ピースを当該ハッシュ値により指定するようにしても良い。この場合、シーダ52は、各暗号化ピースのハッシュ値を含むファイル情報を含むTorrent Fileを予め取得しておく。そして、シーダ52は、Torrent Fileを参照して、一部データ要求によって示されたハッシュ値により指定された一部取得済み暗号化ピースを特定することができる。
【0162】
<変形例5_3>
上述の第5の実施の形態においては、暗号化ピースを所定の個数のサブピースに分割可能に予め構成し、各サブピースに対してデータ番号(サブピースインデックスという)を予め割り当てるようにしても良い。この場合、一部データ要求に含まれるサブピース指定情報として、サブピースインデックスを用いても良い。この場合、Torrent Fileのファイル情報は、暗号化ピースを構成する全てのサブピースの個数を示すようにする。そして、リーチャ50のサブピース完成判定部504は、ある暗号化ピースについてリーチャ50取得したサブピースの個数と、当該暗号化ピースについてTorrent Fileのファイル情報に示されるサブピースの個数とを用いて完成判定処理を行うようにしても良い。
【0163】
<変形例5_4>
上述の第5の実施の形態においては、各サブピースを用いて計算されるハッシュ値がTorrent Fileに含まれるようにしても良い。
【0164】
また、Torrent Fileに含まれるファイル情報が、各暗号化ピースを用いてハッシュ演算により計算されるハッシュ値を含む場合、リーチャ50のサブピース完成判定部504は、以下のようにして、完成判定処理を行うようにしても良い。サブピース完成判定部504は、判定対象の暗号化ピースについて、サブピースを統合したもののハッシュ値を計算しこれと、Torrent Fileに含まれる、当該暗号化ピースのハッシュ値とが一致する場合に、当該暗号化ピースについて、その全部のデータを取得済みであると判定する。
【0165】
<変形例5_5>
上述の第5の実施の形態においては、リーチャ50のコンテンツ取得部500は、シーダ52においてリーチャ50を識別できるようにするために、一部データ要求をシーダ52位送信する際に、リーチャ50を識別するためのリーチャ識別情報をシーダ52に送信するようにしても良い。
【0166】
<変形例5_6>
上述の第5の実施の形態においては、ステップS318の判定結果が否定的である場合、リーチャ50は、サブピースの送信元であるシーダ52に対して未取得サブピースを要求する一部データ要求を送信するのではなく、当該暗号化ピースを保持する他のシーダ52に対して当該一部データ要求を送信するようにしても良い。
【0167】
また、リーチャ50は、暗号化ピースを構成するサブピースの送信元であるシーダ52から、当該暗号化ピースを構成する未取得サブピースを受信できなかった場合に、一定時間経過後に当該シーダに対して当該一部データ要求を送信するようにしても良いし、又は、他のシーダ52に対して当該一部データ要求を送信するようにしても良いし、当該一部データ要求とは異なるピース要求を当該シーダ52や他のシーダ52に送信するようにしても良い。
【0168】
即ち、上述においては、リーチャ50は、判定対象の暗号化ピースについて、その全部のデータを取得済みでないと判定した場合、当該暗号化ピースを構成するサブピース全て取得するまで、当該暗号化ピースを構成するサブピースのうち未取得サブピースをシーダ52から取得する処理を繰り返し行うようにしたが、このような処理を行わないようにしても良い。
【0169】
また、リーチャ50は、判定対象の暗号化ピースについて、その全部のデータを取得済みでないと判定した場合、未取得サブピースを取得することをせず、当該暗号化ピースについて取得済みのサブピースを破棄し、当該暗号化ピースから復号されるピースについては、暗号化ピースの取得をやり直すようにしても良い。
【0170】
<変形例5_7>
上述のステップS313では、シーダ52は、リーチャ50から送信されたピース要求が不正であるか否かを判定し、判定結果に応じて、暗号化ピースやサブピースの送信を拒否するようにしても良い。図41は、本変形例にかかるシーダ52の機能的構成を例示する図である。シーダ52は、コンテンツ送信部526と、不正要求判定部527と、セッション情報管理部528とを有する。コンテンツ送信部526は、リーチャ50からのアクセスにより、ピース情報をリーチャ50に送信したり、リーチャ50からのピース要求を受信したり、当該ピース要求及び不正要求判定部527の判定結果に応じて、暗号化ピース又はサブピースをリーチャ50に送信したりする。
【0171】
セッション情報管理部528は、暗号化ピース又はサブピースの送信に係るセッションを管理するためのセッション情報を記憶する。セッション情報は、暗号化ピース又はサブピースの送信対象であるリーチャ50を識別するためのリーチャ識別情報と対応付けられて記憶されるものであり、暗号化ピース又はサブピースを構成する暗号化ピースのピースインデックス及びバリエーションインデックスと、送信済データ量とを含む。リーチャ識別情報は、コンテンツ送信部526がリーチャ50からピース要求を受信する際に共に受信する。取得済み量とは、暗号化ピースのうち取得済みのデータの数量を示す。取得済み量としては、例えば、暗号化ピースにおけるデータの先頭位置や取得済みのデータの終了位置から計算されるデータ長や、暗号化ピースを構成するサブピースのうち取得済みのサブピースのデータ長の合計や、当該取得済みのサブピースの個数などがある。
【0172】
不正要求判定部527は、コンテンツ送信部526がリーチャ50から受信したピース要求が、不正であるか否かを判定する。ここでは、ピース要求のうち一部データ要求に示されるサブピース指定情報として、データの開始位置及びデータ長を用いる。そして、例えば、所定の条件を満たした場合のみ指定しても良い開始位置(判定位置という)を所定値として予め決めておく。所定の条件とは、例えば、同じリーチャ50が同じピースを暗号化したものである暗号化ピースを一定数以上収集しようと試みていないことが確認されることや、同じ暗号化ピースを一定数以上収集しようと試みていないことが確認されること、もしくはその両方が確認されることである。このような所定の条件を満たすか否かは、上述したセッション情報を参照して判定することができる。同じリーチャ50か否かは、リーチャ50から受信したリーチャ識別情報と、セッション情報によって示されるリーチャ識別情報とが同じであるか否かにより判定する。同じピースを暗号化したものである暗号化ピースであるか否かは、リーチャ50から受信したピース要求によって指定されるピースインデックスと、セッション情報によって示されるピースインデックスとが同じであるか否かにより判定する。
【0173】
不正要求判定部527は、このような所定の条件が満たされている場合、コンテンツ送信部526がリーチャ50から受信したピース要求が、不正でないと判定する。一方、このような所定の条件が満たされていない場合、コンテンツ送信部526がリーチャ50からピース要求として受信した一部データ要求によって示される開始位置が、判定位置と同じか否かを判定することにより、不正であるか否かを判定する。例えば、暗号化ピースのデータの先頭位置(例えば、‘0’とする)を判定位置とする。この場合、一部データ要求によって示される開始位置が、先頭位置、即ち、‘0’か否かが判定されることになる。この判定結果が肯定的となる場合、リーチャ50が、上述の第1の実施形態で説明したように、データの全部を未取得である場合に送信するピース要求ではなく、一部データ要求によって、暗号化ピースのデータの先頭位置からデータを要求しているということである。このような行為は、不正であると判定される。
【0174】
以上のような構成において、コンテンツ送信部526は、ピース要求が不正でないと不正要求判定部527が判定した場合、ピース要求に応じた暗号化ピース又はサブピースの送信を拒否して、これをリーチャ50に送信しない。この場合、コンテンツ送信部526は、暗号化ピース又はサブピースの送信を拒否する旨のメッセージをリーチャ50に送信しても良いし、送信しなくても良い。また、コンテンツ送信部526は、ピース要求が不正でないと不正要求判定部527が判定した場合、ピース要求に応じた暗号化ピース又はサブピースをリーチャ50に送信する。
【0175】
一方、リーチャ50は、ピース要求をシーダ52に送信する毎に、当該リーチャ50のリーチャ識別情報を当該シーダ52に送信する。尚、送信したピース要求が不正であるとシーダ52に判定されたり、何らかの障害があったりした場合、リーチャ50は、シーダ52から暗号化ピース又はサブピースを受信できない。このとき、リーチャ50は、図40のステップS315よりも前のいずれかのステップに戻って処理をやり直しても良い。リーチャ50は、例えば、当該暗号化ピースの取得を試みて失敗した回数が予め定められた回数を超えた場合、又は当該暗号化ピースを取得する処理を開始してからの経過時間が予め定められた時間を超えた場合、当該シーダ52より当該暗号化ピースを受信することができないと判断しても良い。また、不正な要求と判断された、もしくは何らかの障害があった旨の拒否メッセージをシーダ52がリーチャ50へ送信しても良い。リーチャ50は、そのような拒否メッセージを受信した場合、当該シーダ52より当該暗号化ピースを受信することができないと判断しても良い。リーチャ50は、当該シーダ52より当該暗号化ピースを受信することができないと判断した場合、他のシーダ52へ接続し、当該暗号化ピースの取得を試みる。
【0176】
また、シーダ52は、拒否メッセージをリーチャ50に送信せずにリーチャ50からのピース要求を保留しても良い。この場合、シーダ52は、ある時間経過後に拒否メッセージをリーチャ50に送信しても良いし、リーチャ50との接続を強制的に切断しても良い。
【0177】
尚、不正要求判定部527が、リーチャ50に攻撃の意図が推測されるようなピース要求を不正であると判定できれば、上述の例に限らない。また、判定位置も上述のものに限らない。また、ピース要求が不正であるか否かは、開始位置が判定位置と同じであるか否かではなく、例えば、前者が後者よりも先か後かにより判定しても良い。
【0178】
尚、変形例5_3で説明したようなサブピースインデックスを用いる場合、判定位置の代わりに、判定インデックスとして、サブピースインデックスの値を用いても良い。例えば、暗号化ピースを構成する1番先頭のサブピースのサブピースインデックスの値を判定インデックス(所定値)として設定しても良い。尚、判定位置や判定インデックスは、所定値ではなく、可変であっても良い。
【0179】
[第6の実施の形態]
次に、コンテンツ配信システムの第6の実施の形態について説明する。なお、上述の第1の実施の形態乃至第5の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【0180】
(1)構成
図42は、本実施の形態にかかるコンテンツ配信システムの構成を示す図である。本実施の形態にかかるコンテンツ配信システムの構成は、上述の第1の実施の形態乃至第5の実施の形態にかかるコンテンツ配信システムの構成とは以下の点で異なる。本実施の形態にかかるコンテンツ配信システムにおいては、リーチャ50と、鍵サーバ53とに接続されるResidualサーバ55を更に備える。Residualサーバ55は、リーチャ50と対応付けて送信する暗号化ピースとして別途用意されている暗号化ピース(非流通暗号化ピースという)を記憶している。非流通暗号化ピースは、コンテンツを構成する各ピースC1〜CNのうち、上述したピースC1〜CL(1<L≦N)が各々暗号化されたものである。但し、非流通暗号化ピースは、各ピースC1〜CLについて、各々暗号化されて初期シーダ52Aに少なくとも記憶されておりP2PネットワークネットワークNTを介して送受信される暗号化ピース(流通暗号化ピースという)とは各々異なる暗号鍵で暗号化された暗号化ピースである。図43は、流通暗号化ピースと、非流通暗号化ピースとを例示する図である。同図において、「1≦i≦m, 1≦j≦N」なるi,jに対する暗号化ピースE(K(i,j))[Cj]が流通暗号化ピースであり、「m+1≦i≦m´, 1≦j≦L 」なるi, jに対する暗号化ピースE(K(i,j))[Cj]が非流通暗号化ピースである。尚、流通暗号化ピースの数及び非流通暗号化ピースの数は同図に示されるものに限らない。また、本実施の形態にかかるTorrent Fileに含まれるファイル情報は、流通暗号化ピースにどのようなものがあるかを示す情報は含むが、非流通暗号化ピースにどのようなものがあるかを示す情報は含まない。
【0181】
<リーチャ50の構成>
このような構成において、リーチャ50は、非流通暗号化ピースを要求するピース要求(特別ピース要求という)をResidualサーバ55に送信する。このとき、リーチャ50は、当該リーチャ50を識別するためのリーチャ識別情報をピース要求に含ませて送信する。尚、ここでリーチャ50が要求する非流通暗号化ピースのピースインデックスjについては、リーチャ50毎に初期値として予め設定されているものとする。その初期値は1≦j≦L なる j の中からランダムに選ばれたものであっても良い。このピースインデックスjの初期値は、リーチャ50のプログラムにおいて予め設定されるようにしても良いし、他のノードからリーチャ50に対して通知されるようにしても良いし、当該リーチャ50が予め決定するようにしても良い。また、リーチャ50は、Residualサーバ55から非流通暗号化ピースE( K( i,j))[ Cj]を受信すると、当該非流通暗号化ピースを復号するための復号鍵を要求する要求メッセージをResidualサーバ55に送信する。
【0182】
<Residual サーバ55の構成>
Residualサーバ55のハードウェア構成は、上述の第1の実施の形態において説明したリーチャ50等の各装置のハードウェア構成と略同様である。このようなハードウェア構成において、Residualサーバ55のCPUが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について説明する。図44は、Residualサーバ55の機能的構成を例示する図である。Residualサーバ55は、制御部550と、パケット処理部551と、ネットワークインターフェース部552と、認証交換処理部553と、非流通暗号化ピース記憶部554と、リーチャ識別情報記憶部556と、リーチャ識別情報照合部555と、非流通暗号化ピース供給部557と、鍵記憶部558と、鍵供給部559とを有する。
【0183】
制御部550は、鍵サーバ53全体を制御し、リーチャ識別情報照合部555から鍵供給部559への指示を仲介したりする。パケット処理部551は、リーチャ50などの外部装置に送信する各種データをパケット化してネットワークインターフェース部552に受け渡したり、ネットワークインターフェース部552から受け渡されたパケットを基にデータを取得したりする。ネットワークインターフェース部552は、外部装置との通信を制御し、パケット処理部551から受け渡されたパケット化されたデータを送信したり、外部装置から受信したパケットをパケット処理部551に受け渡したりする。
【0184】
非流通暗号化ピース記憶部554は、非流通暗号化ピースを記憶する。リーチャ識別情報記憶部556は、Residualサーバ55が非流通暗号化ピースを過去に送信したリーチャ50のリーチャ識別情報を記憶する。リーチャ識別情報照合部555は、リーチャ50から送信されたリーチャ識別情報がリーチャ識別情報記憶部556に記憶されているか否かを判断し、当該判断結果に応じて、非流通暗号化ピースの送信の可否を決定する。非流通暗号化ピース供給部557は、リーチャ識別情報照合部555の決定結果に応じて、制御部550を介して、送信対象の非流通暗号化ピースの送信が指示されると、当該非流通暗号化ピースを非流通暗号化ピース記憶部554を読み出しこれをリーチャ50に送信する。
【0185】
認証交換処理部553は、ネットワークインターフェース部552を介して、リーチャ50から特別ピース要求を受信し、当該リーチャ50と相互認証を行い、認証後、要求を受理する旨の受理メッセージをリーチャ50に送信する。鍵記憶部558は、例えば、HDDなどの外部記憶装置において構成され、各非流通暗号化ピースを各々復号するための各復号鍵を各々記憶する。各復号鍵は、上述したように、例えばK ( i, j )(但し、m+1≦i≦m´, 1≦j≦L)として表される。鍵供給部559は、非流通暗号化ピースを復号するための復号鍵を要求する要求メッセージを受信し、当該要求メッセージに応じて、当該復号鍵を鍵記憶部558から読み出しこれを、ネットワークインターフェース部552を介してリーチャ50に送信する。
【0186】
(2)動作
次に、本実施の形態にかかるコンテンツ配信システムで行うコンテンツ配信処理の手順について図45を用いて説明する。ステップS1〜S7は上述の第1の実施の形態と同様であるため、その図示を省略している。ステップS8〜S9についても上述の第1の実施の形態と同様である。ステップS9の後、リーチャ50は、シーダ52から流通暗号化ピースを受信すると、次いで、ステップS960では、次に取得するのは非流通暗号化ピースであるか否かを判断する。各ピースC1〜CNのうち、非流通暗号化ピースに対して予め設定されているピースインデックスj以外のピースについて流通暗号化ピースを取得している場合、当該判断結果が肯定的となる。この場合、リーチャ50は、ステップS961では、当該リーチャ50を識別するためのリーチャ識別情報を含み、非流通暗号化ピースを要求する特別ピース要求をResidualサーバ55に送信する。一方、ステップS960の判断結果が否定的となる場合、ステップS8に戻り、リーチャ50は、シーダ52にアクセスして、以降、各ピースC1〜CNのうち、未だ取得していないピースが暗号化された流通暗号化ピースの取得を試みる。
【0187】
一方、Residualサーバ55は、特別ピース要求を受信すると(ステップS962)、当該リーチャ50と相互認証を行い、認証後、要求を受理する旨の受理メッセージをリーチャ50に送信する(ステップS963)。リーチャ50は、Residualサーバ55から受理メッセージを受信すると(ステップS964)、Residualサーバ55からの非流通暗号化ピースの送信を待機する。ステップS965では、Residualサーバ55は、特別ピース要求について、以下の照合処理を行う。
【0188】
図46は、本実施の形態にかかるResidualサーバ55が行う照合処理の手順を示すフローチャートである。Residualサーバ55のリーチャ識別情報照合部555は、ピース要求に含まれるリーチャ識別情報と、リーチャ識別情報記憶部556に記憶されているリーチャ識別情報とを照合し(ステップS9651)、同一のリーチャ識別情報がリーチャ識別情報記憶部556に既に記憶されているか否かを判断する(ステップS9652)。同一のリーチャ識別情報がリーチャ識別情報記憶部556に記憶されていないと判断した場合、リーチャ識別情報照合部555は、予め設定されているピースインデックスjに対応する非流通暗号化ピースE( K(i,j))[Cj]を送信することを決定する。そして、リーチャ識別情報照合部555は、制御部550を介して、当該非流通暗号化ピースを当該リーチャ50へ送信するよう非流通暗号化ピース供給部557に指示する。また、リーチャ識別情報照合部555は、当該リーチャ識別情報をリーチャ識別情報記憶部556に記憶させる。非流通暗号化ピース供給部557は、制御部550を介してリーチャ識別情報照合部555から送信を指示された非流通暗号化ピースを非流通暗号化ピース記憶部554から読み出し、これをネットワークインターフェース部552を介してリーチャ50に送信する(ステップS9653)。尚、当該リーチャ50に対して予め設定されているピースインデックスjに対応する非流通暗号化ピースE( K(i,j))[Cj]が複数ある場合、即ち、これのバリエーションインデックスiが「2」以上存在する場合、Residualサーバ55は、バリエーションインデックスiとして任意の値を選択して、送信対象の非流通暗号化ピースを決定する。
【0189】
一方、ステップS9652で、同一のリーチャ識別情報がリーチャ識別情報記憶部556に記憶されていると判断した場合、即ち、リーチャ50に対して過去にResidualサーバ55から非流通暗号化ピースを送信している場合、リーチャ識別情報照合部555は、当該非流通暗号化ピースを送信しないことを決定し、制御部550を介して、当該非流通暗号化ピースの当該リーチャ50への送信禁止を非流通暗号化ピース供給部557に指示する(ステップS9654)。
【0190】
ここでは、ステップS9653で、非流通暗号化ピースが送信されたものとする。図45に戻り、この場合、リーチャ50は、非流通暗号化ピースを受信すると(ステップS966)、当該非流通暗号化ピースを復号するための復号鍵を要求する要求メッセージをResidualサーバ55に送信する(ステップS967)。Residualサーバ55は、当該要求メッセージを受信すると、当該要求メッセージに応じて、当該復号鍵を外部記憶装置から読み出しこれを当該リーチャ50に送信する(ステップS968)。リーチャ50は、Residualサーバ55から復号鍵を受信する(ステップS969)。その後の処理の手順は図示を省略しているが、図12に示したステップS10で、リーチャ50が取得した各流通暗号化ピースを復号するための各復号鍵を含む鍵束を要求する要求メッセージを鍵サーバ53に送信する。以降、上述の第1の実施の形態と同様に、図12に示したステップS11〜S16の処理がコンテンツ配信システムにおいて行われる。
【0191】
このような構成によれば、各ピースC1〜CNのうち、どのピースが非流通暗号化ピースから復号されるかが秘匿され得る。このため、例えば、非流通暗号化ピースを復号したピースと、他の各ピースについて暗号化された各流通暗号化ピースの復号鍵とを暴露して、コンテンツを不正に利用可能にする攻撃を抑制することができる。
【0192】
<変形例6_1>
上述の第6の実施の形態においては、リーチャ50が特別ピース要求によって要求する非流通暗号化ピースE(K(i,j))[Cj] (m+1≦i≦m´, 1≦j≦L)のピースインデックスjは、予め設定されているものとしたが、予め設定されていなくても良い。その場合、特別ピース要求は、取得対象の非流通暗号化ピースのピースインデックスを指定する情報を含んでも良いし、既に取得している流通暗号化ピースの各インデックスのシーケンスを示すシーケンス情報を含むようにしても良い。
【0193】
尚、シーケンス情報を特別ピース要求に含ませる場合、Residualサーバ55は、当該特別ピース要求に含まれるリーチャ識別情報とシーケンス情報との組をリーチャ識別情報記憶部556に記憶し、ステップS965では、リーチャ識別情報とシーケンス情報との組を用いて照合するようにしても良い。
【0194】
また、リーチャ50に送信する非流通暗号化ピースのピースインデックスjを決定する主体は、Residualサーバ55であっても良いし、鍵サーバ53であっても良いし、シーダ52であっても良いし、他の通信装置であっても良い。
【0195】
また、リーチャ50に送信する非流通暗号化ピースのピースインデックスjは、任意の値であっても良いし、Residualサーバ55において特別ピース要求を受信した順にインクリメントされる値であっても良い。また、コンテンツに対してコンテンツインデックスが割り当てられている場合にはコンテンツインデックスやノード情報やリーチャ識別情報などのいくつかを用いてハッシュ関数などで計算される値であっても良い。リーチャ50に送信する非流通暗号化ピースのピースインデックスjを決定する主体は、このような情報をリーチャ50から予め取得して、当該ピースインデックスjを決定すれば良い。
【0196】
また、リーチャ50に送信する非流通暗号化ピースを何れにするのかを決定するタイミングは、特別ピース要求がリーチャ50からResidualサーバ55に送信された後であっても良い。
【0197】
また、リーチャ50特別ピース要求によって要求する非流通暗号化ピースは、複数であっても良い。また、取得可能な非流通暗号化ピースの個数が、リーチャ50毎に異なっていても良い。
【0198】
また、リーチャ50が取得する非流通暗号化ピースのピースインデックスjは、リーチャ毎50に異なるように設定されるようにしても良い。即ち、Residualサーバ55は、復号されるピースがリーチャ毎50に各々異なるように、非流通暗号化ピースをリーチャ50に送信する。
【0199】
更に、リーチャ50が取得する非流通暗号化ピースのピースインデックスj及びバリエーションインデックスiは、リーチャ毎50に異なるように設定されるようにしても良い。即ち、Residualサーバ55は、リーチャ毎50に各々異なるように、非流通暗号化ピースがをリーチャ50に送信する。
【0200】
<変形例6_2>
上述の第6の実施の形態においては、Residualサーバ55がリーチャ50に送信する非流通暗号化ピースE(K(i,j))[Cj] (m+1≦i≦m´, 1≦j≦L)のバリエーションインデックスiは、任意に決定するものとした。しかし、当該バリエーションインデックスiの値は、固定値であっても良いし、Residualサーバ55において特別ピース要求を受信した順にインクリメントされる値であっても良い。また、コンテンツに対してコンテンツインデックスが割り当てられている場合にはコンテンツインデックスやノード情報やリーチャ識別情報などのいくつかを用いてハッシュ関数などで計算される値であっても良い。また、当該非流通暗号化ピースのバリエーションインデックスiの値は、当該非流通暗号化ピースのピースインデックスjの値が決定される前又は後のいずれに決定されても良い。また、非流通暗号化ピースを配られたリーチャ50の数の分布の分散が小さくなるように、各リーチャ50に対して送信する非流通暗号化ピースについてのバリエーションインデックスiを決定するようにしても良い。
【0201】
<変形例6_3>
上述の第6の実施の形態においては、ステップS1でリーチャ50が取得したTorrent Fileに含まれるファイル情報には、非流通暗号化ピースにどのようなものがあるかを示す情報が含まれないため、リーチャ50は、各ピースC1〜CNのそれぞれについて流通暗号化ピースを取得する場合がある。この場合、リーチャ50は、流通暗号化ピースをシーダ52に要求する際に、非流通暗号化ピースのピースインデックスjとして予め設定されているもの以外に対応する暗号化ピースを要求するようにしても良いし、当該ピースインデックスjに対応する暗号化ピースをシーダ52から受信した場合は受信後にこれを削除するようにしても良い。
【0202】
また、図45のステップS9でシーダ52がリーチャ50へ暗号化ピースを送信する際、各リーチャ50に対して送信される非流通暗号化ピースのピースインデックスとして予め設定されているものに対応するピースについて、これが暗号化された流通暗号化ピースを当該リーチャ50に送信しないようにしても良い。
【0203】
<変形例6_4>
上述の第6の実施の形態においては、リーチャ50が非流通暗号化ピースをResidualサーバ55に要求するタイミングは、各ピースC1〜CNのうち、非流通暗号化ピースに対して予め設定されているピースインデックスj以外のピースについて流通暗号化ピースを取得した後であるとした。しかし、これに限らず、各C1〜CNのそれぞれについて流通暗号化ピースを取得する前であっても良いし、流通暗号化ピースの取得の途中やその取得と並行するタイミングであっても良い。
【0204】
また、リーチャ50が非流通暗号化ピースを復号するための復号鍵をResidualサーバ55に要求するタイミングは、リーチャ50が取得した各流通暗号化ピースを復号するための各復号鍵を含む鍵束を要求する要求メッセージを鍵サーバ53に送信した後であっても良いし、これと並行するタイミングであっても良い。
【0205】
<変形例6_5>
上述の第6の実施の形態においては、リーチャ50が非流通暗号化ピースを復号するための復号鍵を要求する要求メッセージには、どの非流通暗号化ピースに対する復号鍵かを特定するための情報として、非流通暗号化ピースのピースインデックス及びバリエーションインデックスや、非流通暗号化ピースの部分データやその部分データハッシュ値、非流通暗号化ピースのハッシュ値及びリーチャ50の識別情報のうち少なくとも1つを含ませてResidualサーバ55に送信しても良い。Residualサーバ55は、このような情報を用いて特定される非流通暗号化ピースを復号するための復号鍵を非流通暗号化ピース記憶部554から読み出しこれをリーチャ50に送信すれば良い。
【0206】
<変形例6_6>
上述の第6の実施の形態においては、非流通暗号化ピースを復号するための復号鍵をResidualサーバ55が送信するようにした。しかし、各非流通暗号化ピースを復号するための各復号鍵を鍵サーバ53が記憶し、リーチャ50は、流通暗号化ピースについての鍵束を要求する要求メッセージにおいて、自身が取得した非流通暗号化ピースを復号するための復号鍵を要求するようにしても良い。鍵サーバ53は、当該要求メッセージに応じて、上述の第1の実施の形態で説明した照合処理の後、各復号鍵をリーチャ50に送信するようにすれば良い。また、鍵サーバ53ではなく、他の通信装置が各非流通暗号化ピースを復号するための各復号鍵を鍵サーバ53が記憶し、リーチャ50からの要求に応じて当該復号鍵をリーチャ50に送信するようにしても良い。
【0207】
<変形例6_7>
上述の第6の実施の形態においては、非流通暗号化ピースを復号するための復号鍵は、Residualサーバ55の鍵記憶部558に記憶されているとしたが、Residualサーバ55がこれを備えず、非流通暗号化ピース記憶部554で非流通暗号化ピースと共に記憶するようにしても良い。また、ステップS9653では、Residualサーバ55の非流通暗号化ピース供給部557は、制御部550を介してリーチャ識別情報照合部555から送信を指示された非流通暗号化ピースを非流通暗号化ピース記憶部554から読み出すと共に、当該非流通暗号化ピースを復号するための復号鍵を読み出し、これらをネットワークインターフェース部552を介してリーチャ50に送信しても良い。
【0208】
<変形例6_8>
上述の第6の実施の形態においては、Residualサーバ55は、流通暗号化ピースを更に記憶していても良く、リーチャ50は、非流通暗号化ピースのみならず流通暗号化ピースを当該Residualサーバ55に要求するようにしても良い。この場合、Residualサーバ55は、ステップS9652で、同一のリーチャ識別情報がリーチャ識別情報記憶部556に記憶されていないと判断した場合、リーチャ50に要求された非流通暗号化ピース又は流通暗号化ピースのうち少なくとも一方を当該リーチャ50に送信すれば良い。
【0209】
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
【0210】
<変形例7_1>
上述した各実施の形態においては、鍵サーバ53と、リーチャ50とは、相互認証の後、通信対象のデータを暗号化するようにしても良い。図28は、このような構成の鍵サーバの構成を例示する図である。鍵サーバ53´は、上述の制御部530と、パケット処理部531と、ネットワークインターフェース部532と、認証・鍵交換処理部533と、鍵記憶部534と、シーケンス情報記憶部536と、シーケンス情報照合部535と、鍵供給部537とに加え、暗号処理部538を有する。認証・鍵交換処理部533は、リーチャ50と、通信対象のデータを暗号化するための暗号鍵の交換を行う。暗号処理部538は、認証・鍵交換処理部533が交換した暗号鍵を用いて通信対象のデータを暗号化してこれをネットワークインターフェース部532を介してリーチャ50に送信する。
【0211】
<変形例7_2>
上述した各実施の形態においては、コンテンツの各ピースへの分割や、各ピースの暗号化は、トラッカ51や、鍵サーバ53や、コンテンツ製作者が用意したサーバのいずれが行っても良い。また、各暗号化ピースは、例えば、トラッカ51、鍵サーバ53又は信頼できる第三者(例えば、コンテンツ製作者が用意したサーバ)からシーダ52A(初期シーダ)へ与えられるものとする。
【0212】
また、上述した各実施の形態においては、復号鍵及び暗号鍵のうち少なくとも一方を鍵サーバ53自体が発行して生成するようにしても良いし、トラッカ51やコンテンツ製作者が用意したサーバが発行したり生成したりしたものを鍵サーバ53が取得するようにしても良い。
【0213】
また、コンテンツCを分割した全てのピースC1〜CNが各々異なる暗号鍵で暗号化されているとしたが、これに限らず、一部のピースは同一の暗号鍵で暗号化されていても良い。
【0214】
<変形例7_3>
上述した各実施の形態においては、トラッカ51、シーダ52及びリーチャ50の数は、上述したものに限らない。
【0215】
また、P2PネットワークNTに販売サーバ54が接続され、リーチャ50は、販売サーバ54からTorrent Fileを取得するようにした。しかし、販売サーバ54はP2PネットワークNTに接続されていなくても良く、リーチャ50は、例えばCD−ROMなどの記録媒体に記録されたTorrent Fileを読み出すことにより、Torrent Fileを取得するようにしても良い。
【0216】
また、リーチャ50は、鍵サーバ53とネットワークを介して接続されるようにしたが、ネットワークを介さず専用線などを介して接続されるようにしてもよいし、プロキシサーバを介して接続されるようにしても良い。これにより管理能力を高めたり、プロキシサーバの後段にある鍵サーバが直接攻撃されないようにしたりすることができる。
【0217】
<変形例7_4>
上述の第1の実施の形態乃至第6の実施の形態の一部及び全部を組み合わせても良い。尚、第2の実施の形態及び第3の実施の形態とを組み合わせた場合、Torrent Fileと同様に、シーダ情報も、鍵サーバ53が保持する特定の暗号化ピースに関する情報を含まないようにすれば良い。
【0218】
<変形例7_5>
上述した各実施の形態において、リーチャ50で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。この場合には、プログラムは、リーチャ50において上記記録媒体から読み出して実行することにより主記憶装置(例えばRAM)上にロードされ、上記機能的構成において説明した各部が主記憶装置上に生成される。シーダ52において実現される各種プログラム、鍵サーバ53において実現される各種プログラム、トラッカ51において実現される各種プログラム及びResidualサーバ55において実現される各種プログラムについても同様である。
【0219】
[他の態様の発明1]
前記取得手段は、前記管理サーバへアクセスするための第1アクセス情報を更に取得し、
前記第1受信手段は、取得された前記第1アクセス情報を用いて、前記管理サーバにアクセスして、前記ノード情報を受信する
ことを特徴とする請求項3に記載の通信装置。
[他の態様の発明2]
前記第2受信手段は、
受信された前記ノード情報を用いて、前記他の通信装置にアクセスして、当該他の通信装置が記憶している前記第1暗号化ピースと当該第1暗号化ピースを復号するための復号鍵との対応関係又は前記第2暗号化ピースと当該第2暗号化ピースを復号するための復号鍵との対応関係を示すピース情報を当該他の通信装置から受信する第3受信手段と、
受信された前記ピース情報を用いて、前記ファイル情報に基づいて、前記第1暗号化ピース又は前記第2暗号化ピースを前記他の通信装置から受信する第4受信手段とを有する
ことを特徴とする請求項3又は4に記載の通信装置。
[他の態様の発明3]
前記第1受信手段は、複数の他の通信装置にアクセスするためのノード情報を前記管理サーバから受信し、
前記第3受信手段は、前記第4受信手段が、前記ピース情報を用いて、前記第1暗号化ピース又は前記第2暗号化ピースを前記他の通信装置から受信できなかった場合、前記ノード情報を用いて、その他の通信装置にアクセスして、当該その他の通信装置から前記ピース情報を受信し、
前記第4受信手段は、前記その他の通信装置から受信された前記ピース情報を用いて、前記ファイル情報に基づいて、前記第1暗号化ピース又は前記第2暗号化ピースを前記その他の通信装置から受信する
ことを特徴とする他の態様の発明2に記載の通信装置。
[他の態様の発明4]
前記コンテンツ受信手段は、
受信された前記シーダ情報によって指定された前記第1暗号化ピース又は前記第2暗号化ピースに暗号化された前記ピース以外の他のピースが暗号化された前記第1暗号化ピース又は前記第2暗号化ピースのうち任意のいずれか一方を前記他の通信装置から受信する第7受信手段を有する
ことを特徴とする請求項7に記載の通信装置。
[他の態様の発明5]
前記第2暗号化ピースは、複数であり、前記複数のピースの全てを各々第2暗号鍵で暗号化することによって各々生成されるものであって、
前記コンテンツ受信手段は、前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に前記他の通信装置から受信する
ことを特徴とする請求項1に記載の通信装置。
[他の態様の発明6]
前記第2暗号化ピースは、前記複数のピースのうち1つのピースを第2暗号鍵で暗号化することによって生成されるものであって、
前記コンテンツ受信手段は、前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に前記他の通信装置から受信する
ことを特徴とする請求項1に記載の通信装置。
[他の態様の発明7]
前記取得手段は、複数のピースのそれぞれについて、前記第1暗号化ピースを用いて所定の演算により計算された演算値と当該第1暗号化ピースを復号するための復号鍵との対応関係又は前記第2暗号化ピースを用いて所定の演算により計算された演算値と当該第2暗号化ピースを復号するための復号鍵との対応関係を示すファイル情報を取得し、
前記第3受信手段は、前記他の通信装置にアクセスして、当該他の通信装置に記憶されている前記第1暗号化ピース又は前記第2暗号化ピースに対する前記ピースを特定するピース情報を当該他の通信装置から受信し、
前記第4受信手段は、受信された前記ピース情報を用いて、前記第1暗号化ピース又は前記第2暗号化ピースを受信し、
前記コンテンツ受信手段は、受信された前記第1暗号化ピース又は前記第2暗号化ピースを用いて前記所定の演算により演算値を計算する計算手段を更に有し、
前記鍵要求送信手段は、前記ファイル情報において前記演算値との対応関係が示される前記復号鍵を要求する要求メッセージを前記鍵サーバに送信する
ことを特徴とする請求項5に記載の通信装置。
[他の態様の発明8]
前記取得手段は、複数のピースのそれぞれについて、前記第1暗号化ピースを用いて所定の演算により計算された演算値と当該第1暗号化ピースを復号するための復号鍵との対応関係又は前記第2暗号化ピースを用いて所定の演算により計算された演算値と当該第2暗号化ピースを復号するための復号鍵との対応関係を示すファイル情報を取得し、
前記第3受信手段は、前記他の通信装置にアクセスして、当該他の通信装置に記憶されている前記第1暗号化ピース又は前記第2暗号化ピースに対する前記ピースを特定するピース情報を当該他の通信装置から受信し、
前記第4受信手段は、受信された前記ピース情報を用いて、前記ファイル情報に基づいて、前記第1暗号化ピース又は前記第2暗号化ピースを前記他の通信装置から受信し、
前記コンテンツ受信手段は、前記第1暗号化ピース又は前記第2暗号化ピースを用いて前記所定の演算により計算された演算値を前記他の通信装置から受信する演算値受信手段を更に有し、
前記鍵要求送信手段は、前記ファイル情報において前記演算値との対応関係が示される前記復号鍵を要求する要求メッセージを前記鍵サーバに送信する
ことを特徴とする請求項5に記載の通信装置。
[他の態様の発明9]
前記第3受信手段は、前記他の通信装置にアクセスして、当該他の通信装置に記憶されている前記第1暗号化ピース又は前記第2暗号化ピースに対する前記ピースを特定するピース情報を当該他の通信装置から受信し、
前記第4受信手段は、受信された前記ピース情報を用いて、前記ファイル情報に基づいて、前記第1暗号化ピース又は前記第2暗号化ピースを前記他の通信装置から受信し、
前記コンテンツ受信手段は、前記第1暗号化ピース又は前記第2暗号化ピースを用いて前記所定の演算により計算された演算値を前記他の通信装置から受信する演算値受信手段を更に有し、
前記鍵要求送信手段は、前記演算値によって特定される前記復号鍵を要求する要求メッセージを前記鍵サーバに送信する
ことを特徴とする請求項5記載の通信装置。
[他の態様の発明10]
前記一部データ要求において指定された前記データ範囲に基づいて、当該一部データ要求が不正であるか否かを判定する判定手段を更に備え、
前記ピース送信手段は、前記一部データ要求が不正であると判定された場合、前記一部ピース要求において指定された前記データ範囲のデータを前記他の通信装置に送信しない
ことを特徴とする請求項12に記載の通信装置。
[他の態様の発明11]
前記ピース要求送信手段は、当該通信装置に対して予め割り当てられたピースが暗号化された前記第3暗号化ピースを要求すると共に、前記識別情報を含む特別ピース要求を通信サーバに送信する
ことを特徴とする請求項13に記載の通信装置。
[他の態様の発明12]
前記コンテンツ受信手段は、前記複数のピースのうち、当該通信装置に対して予め割り当てられたピース以外のピースについて前記第1暗号化ピース又は前記第2暗号化ピースを前記他の通信装置から受信する
ことを特徴とする他の態様の発明10に記載の通信装置。
[他の態様の発明13]
前記ピース要求送信手段は、前記第1暗号化ピース、前記第2暗号化ピース又は前記第3暗号化ピースを要求すると共に、前記識別情報を含む特別ピース要求を前記通信サーバに送信し、
前記コンテンツ受信手段は、前記特別ピース要求に従い前記通信サーバが送信した前記第1暗号化ピース、前記第2暗号化ピース又は前記第3暗号化ピースを前記他の通信装置から受信する
ことを特徴とする請求項13に記載の通信装置。
[他の態様の発明14]
受信された前記第3暗号化ピースを復号するための復号鍵を要求する特別要求メッセージを前記通信サーバに送信する特別鍵要求送信手段と、
前記特別要求メッセージによって要求された前記復号鍵を前記通信サーバから受信する特別鍵受信手段とを更に備える
ことを特徴とする請求項13に記載の通信装置。
[他の態様の発明15]
前記一部データ要求において指定された前記データ範囲に基づいて、当該一部データ要求が不正であるか否かを判定する判定手段を更に備え、
前記送信手段は、前記一部データ要求が不正であると判定された場合、前記一部データ要求において指定された前記データ範囲のデータを前記他の通信装置に送信しない
ことを特徴とする請求項15に記載の通信装置。
[他の態様の発明16]
前記一部データ要求は、前記データ範囲として、前記第1暗号化ピース又は前記第2暗号化ピースにおける前記データの開始位置、終了位置及び開始位置からのデータ長少なくとも1つを指定する
ことを特徴とする請求項15に記載の通信装置。
[他の態様の発明17]
前記第1暗号化ピース又は前記第2暗号化ピースは、所定の個数のデータに分割可能に予め構成され、各データにデータ番号が予め割り当てられており、
前記一部データ要求は、前記データ範囲として、前記データに割り当てられたデータ番号を指定する
ことを特徴とする請求項15に記載の通信装置。
[他の態様の発明18]
前記判定手段は、前記一部データ要求において指定された前記データ範囲が、所定値であるか否かを判定することにより、当該一部データ要求が不正であるか否かを判定する
ことを特徴とする請求項15に記載の通信装置。
[他の態様の発明19]
前記第1暗号化ピース又は前記第2暗号化ピースには、前記複数のピースの各々を区別するためのピースインデックスと、前記ピースに対する前記第1暗号化ピース又は前記第2暗号化ピースの各々を区別するためのバリエーションインデックスとが各々対応付けられており、
前記要求受信手段は、そのデータのうち一部を要求する前記第1暗号化ピース又は前記第2暗号化ピースを、前記ピースインデックス及び前記バリエーションインデックスにより指定する前記一部データ要求を受信する
ことを特徴とする請求項15に記載の通信装置。
[他の態様の発明20]
前記要求受信手段は、そのデータのうち一部を要求する前記第1暗号化ピース又は前記第2暗号化ピースを、当該第1暗号化ピース又は前記第2暗号化ピースを用いて所定の演算により計算された演算値により指定する前記一部データ要求を受信する
ことを特徴とする請求項15に記載の通信装置。
[他の態様の発明21]
前記第1のピース要求によって要求された前記データを送信しない場合、その旨を示す拒否メッセージを前記他の通信装置に送信する拒否送信手段を更に備える
ことを特徴とする請求項16に記載の通信装置。
[他の態様の発明22]
前記送信手段は、第1のピース要求が受信された場合且つ当該第1のピース要求が受信される以前に受信された第2のピース要求によって要求された前記データのうち一部又は全部の送信が完了しておらず、送信が完了していないデータの量が閾値以上である場合、前記第1のピース要求によって要求された前記データの送信を保留し、前記第2のピース要求に応じて送信が完了していないデータの全部又は一部を送信後、送信が完了していないデータの量が閾値未満になった場合、前記第1のピース要求によって要求された前記データの全部又は一部を送信する
ことを特徴とする請求項14に記載の通信装置。
[他の態様の発明23]
前記第2記憶手段は、前記組み合わせを示すシーケンス情報と、前記通信装置を識別する第1識別情報と、前記組み合わせにおける各前記復号鍵を前記通信装置に送信した回数とを対応付けて記憶し、
前記受信手段は、前記要求メッセージによって要求される前記各復号鍵について、前記インデックス情報と、前記通信装置を識別する第1識別情報とを前記通信装置から受信し、
前記決定手段は、前記インデックス情報によって示される前記各復号鍵の組み合わせと同じ組み合わせを示すシーケンス情報が前記第2記憶手段に記憶されている場合且つ当該シーケンス情報と前記第1識別情報とに対応して前記第2記憶手段に記憶されている前記回数が所定の回数以下である場合、当該各復号鍵を送信することを決定する
ことを特徴とする請求項19に記載の鍵サーバ。
[他の態様の発明24]
前記複数のピースのうち特定のピースが暗号化された特定暗号化ピースを記憶する第3記憶手段を更に備え、
前記鍵送信手段は、前記決定手段の決定結果が肯定的である場合、前記特定暗号化ピースを前記第3記憶手段から読み出してこれを前記通信装置に送信する
ことを特徴とする請求項20に記載の鍵サーバ。
[他の態様の発明25]
前記鍵送信手段は、前記決定手段の決定結果が肯定的である場合、前記要求メッセージによって要求された、ピース毎の前記第1暗号化ピース又は前記第2暗号化ピースを各々復号するための前記各復号鍵と、前記コンテンツの一部であって前記複数のピースとは異なるピースである特定ピースが暗号化され且つ前記他の通信装置及び前記通信装置に対応付けられた特定暗号化ピースのうち、前記通信装置に対応付けられた特定暗号化ピースを復号化するための前記復号鍵とを前記第1記憶手段から各々読み出してこれらを前記通信装置に送信する
ことを特徴とする他の態様の発明24に記載の鍵サーバ。
他の態様の発明26]
前記決定手段の決定結果が否定的である場合、前記第2記憶手段に記憶された前記シーケンス情報とは異なる、前記各復号鍵の組み合わせを特定する置換特定手段を更に備え、
前記鍵送信手段は、前記決定手段の決定結果が否定的である場合、特定された前記組み合わせを示す置換インデックス情報を送信する
ことを特徴とする請求項17に記載の鍵サーバ。
[他の態様の発明27]
前記複数のピースのそれぞれについて、前記第1暗号化ピースを用いて所定の演算により計算された演算値と当該第1暗号化ピースを復号するための復号鍵との対応関係又は前記第2暗号化ピースを用いて所定の演算により計算された演算値と当該第2暗号化ピースを復号するための復号鍵との対応関係を示すファイル情報を取得する取得手段を更に備え、
前記受信手段は、前記第1暗号化ピース又は前記第2暗号化ピースを用いて前記所定の演算により計算された演算値を含む前記要求メッセージを前記通信装置から受信し、
前記決定手段は、
前記要求メッセージに含まれる前記演算値との対応関係が前記ファイル情報において示される前記復号鍵を特定する特定手段と、
特定された前記復号鍵を含む前記各復号鍵の組み合わせに基づいて、当該各復号鍵を送信するか否かを決定する第1決定手段とを有する
ことを特徴とする請求項17に記載の鍵サーバ。
[他の態様の発明28]
前記第3暗号化ピースを復号するための復号鍵を記憶する第3記憶手段と、
前記復号鍵を要求する要求メッセージを前記通信装置から受信する第2受信手段と、
前記要求メッセージによって要求された前記復号鍵を前記通信装置に送信する第2送信手段とを更に備える
ことを特徴とする請求項26に記載の通信サーバ。
[他の態様の発明29]
コンテンツの一部である複数のピースを受信する通信装置と、少なくとも1つの他の通信装置と、当該他の通信装置にアクセスするためのノード情報を記憶する管理サーバと、鍵サーバとが通信するコンテンツ配信システムであって、
複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、
第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、
同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵とは異なっていて、
前記通信装置が、
前記アクセス情報を前記管理サーバから受信するアクセス情報受信手段と、
受信された前記ノード情報を用いて前記少なくとも1つの他の通信装置にアクセスして、前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に他の通信装置から受信するコンテンツ受信手段と、
前記コンテンツ受信手段がピース毎に受信した前記第1暗号化ピース又は前記第2暗号化ピースを各々復号するための各復号鍵を要求する要求メッセージを、当該復号鍵を記憶する鍵サーバに送信する第1送信手段と、
前記要求メッセージに従い前記鍵サーバから、前記各復号鍵を受信する鍵受信手段とを備え、
前記鍵サーバが、
前記要求メッセージを前記通信装置から受信する受信手段と、
各前記復号鍵を記憶する第1記憶手段と、
前記要求メッセージによって要求された前記各復号鍵の組み合わせに基づいて、当該各復号鍵を送信するか否かを決定する決定手段と、
前記決定手段の決定結果が肯定的である場合、前記要求メッセージによって要求された前記各復号鍵を前記第1記憶手段から各々読み出してこれらを前記通信装置に送信する鍵送信手段とを備える
ことを特徴とするコンテンツ配信システム。
[他の態様の発明30]
コンテンツ受信手段と、送信手段と、鍵受信手段とを備え、コンテンツの一部である複数のピースを受信する通信装置において実現される通信方法であって、
複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、
第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、
同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵とは異なっていて、
前記コンテンツ受信手段が、他の通信装置から、前記第1暗号化ピース又は前記第2暗号化ピースを、ピース毎に受信するコンテンツ受信ステップと、
前記送信手段が、各前記対応暗号化ピースを復号するための各復号鍵を要求する要求メッセージを、当該各復号鍵を記憶する鍵サーバに送信する送信ステップと、
前記鍵受信手段が、前記要求メッセージに従った前記鍵サーバから前記各復号鍵を受信する鍵受信ステップとを含む
ことを特徴とする通信方法。
[他の態様の発明31]
受信手段と、決定手段と、鍵送信手段と、前記各復号鍵を記憶する記憶手段とを備え、コンテンツの一部である複数のピースを受信する通信装置と通信する鍵サーバにおいて実現される通信方法であって、
複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、
第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、
同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵とは異なっていて、
前記通信装置は、他の通信装置から、前記第1暗号化ピース又は前記第2暗号化ピースを、ピース毎に受信するものであって、
前記受信手段が、前記通信装置から、ピース毎の前記第1暗号化ピース又は前記第2暗号化ピースを復号するための各復号鍵を要求する要求メッセージを受信する受信ステップと、
前記決定手段が、前記要求メッセージによって要求された前記各復号鍵の組み合わせに基づいて、当該各復号鍵を送信するか否かを決定する決定ステップと、
前記鍵送信手段が、前記決定手段の決定結果が肯定的である場合、前記要求メッセージによって要求された前記組み合わせにおける前記各復号鍵を前記記憶手段から各々読み出してこれらを前記通信装置に送信する鍵送信ステップとを含む
ことを特徴とする通信方法。
[他の態様の発明32]
決定手段と、送信手段と、記憶手段とを備え、コンテンツの一部である複数のピースを受信する通信装置と通信する管理サーバにおいて実現される通信方法であって、
複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、
第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、
同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵とは異なっていて、
前記通信装置は、他の通信装置から、前記第1暗号化ピース又は前記第2暗号化ピースを、ピース毎に受信するものであって、
前記記憶手段には、前記他の通信装置にアクセスするための接続先情報が記憶され、
前記決定手段が、各前記ピースのうち少なくとも1つのピースについて、当該少なくとも1つのピースが暗号化された前記第1暗号化ピース又は前記第2暗号化ピースを決定する決定ステップと、
前記送信手段が、前記通信装置に対して、前記他の通信装置にアクセスするための接続先情報を前記記憶手段から読み出してこれと、決定された前記第1暗号化ピース又は前記第2暗号化ピースを指定するシーダ情報とを送信する送信ステップとを含む
ことを特徴とする通信方法。
[他の態様の発明33]
第1記憶手段と、第2記憶手段と、第1受信手段と、第1送信手段とを備え、コンテンツの一部である複数のピースを受信する通信装置と通信する通信サーバで実現される通信方法であって、
複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、
第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、
第3暗号化ピースは、前記複数のピースのうち1つ以上のピースを第3暗号鍵で暗号化することによって生成されるものであって、
同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵と前記第3暗号鍵とは異なっていて、
前記通信装置は、他の通信装置から、前記第1暗号化ピース又は前記第2暗号化ピースを、ピース毎に受信するものであって、
前記第1記憶手段には、前記第3暗号化ピースが記憶され、
前記第2記憶手段には、前記第3暗号化ピースを前記通信装置に送信した場合に当該通信装置を識別するための識別情報が記憶され、
前記第1受信手段が、前記第3暗号化ピースを要求すると共に前記通信装置を識別するための識別情報を含む特別ピース要求を前記通信装置から受信する第1受信ステップと、
前記第1送信手段が、前記特別ピース要求に含まれる前記識別情報が前記第2記憶手段に記憶されていない場合、前記第1記憶手段から前記第3暗号化ピースを読み出して前記通信装置に送信する第1送信ステップとを含む
ことを特徴とする通信方法。
【図面の簡単な説明】
【0220】
【図1】第1の実施の形態にかかるコンテンツ配信システムの構成を示すブロック図である。
【図2】コンテンツが複数のピースに分割された状態を模式的に示す図である。
【図3】各暗号化ピースを模式的に示す図である。
【図4】シーダ52Aが記憶している各暗号化ピースを例示する図である。
【図5】シーダ52Aが記憶している各暗号化ピースを例示する図である。
【図6】シーダ52Aが記憶している各暗号化ピースを例示する図である。
【図7】ピース情報のデータ構成を例示する図である。
【図8】リーチャ50の機能的構成を例示する図である。
【図9】Torrent Fileを例示する図である。
【図10】鍵サーバ53の機能的構成を例示する図である。
【図11】ノード情報のデータ構成を例示する図である。
【図12】コンテンツ配信処理の手順を示すフローチャートである。
【図13】照合処理の手順を示すフローチャートである。
【図14】同実施形態の一変形例にかかるTorrent Fileのデータ構成を例示する図である。
【図15】同実施形態の一変形例にかかるハッシュ値を含むインデックス情報を例示する図である。
【図16】同実施形態の一変形例にかかる照合処理の手順を示すフローチャートである。
【図17】第2の実施の形態にかかるトラッカ51の機能的構成を示すブロック図である。
【図18】シーダデータベース512のデータ構成を例示する図である。
【図19】シーダ情報を例示する図である。
【図20】コンテンツ配信処理を示すフローチャートである。
【図21】インデックス生成処理の手順を示すフローチャートである。
【図22】シーダ情報を例示する図である。
【図23】同実施形態の一変形例にかかるシーダ情報を例示する図である。
【図24】同実施形態の一変形例にかかるシーダ情報を例示する図である。
【図25】同実施形態の一変形例にかかるハッシュ値を含み、接続先情報を含まないシーダ情報を例示する図である。
【図26】同実施形態の一変形例にかかるインデックス生成処理の手順を示すフローチャートである。
【図27】第3の実施の形態にかかる照合処理の手順を示すフローチャートである。
【図28】一変形例にかかる鍵サーバの構成を例示する図である。
【図29】第4の実施の形態にかかるピース情報のデータ構成を例示する図である。
【図30】同実施の形態にかかるコンテンツ配信処理の手順を示すフローチャートである。
【図31】一変形例にかかるピース情報のデータ構成を例示する図である。
【図32】一変形例にかかるピース情報のデータ構成を例示する図である。
【図33】一変形例にかかるコンテンツ配信処理の手順を示すフローチャートである。
【図34】一変形例にかかるコンテンツ配信処理の手順を示すフローチャートである。
【図35】一変形例にかかるコンテンツ配信処理の手順を示すフローチャートである。
【図36】一変形例にかかるコンテンツ配信処理の手順を示すフローチャートである。
【図37】第5の実施の形態にかかるリーチャ50の機能的構成を例示する図である。
【図38】同実施の形態にかかるピース要求のデータ構成を例示する図である。
【図39】同実施の形態にかかるコンテンツ配信処理の手順を示すフローチャートである。
【図40】同実施の形態にかかるダウンロード処理及びアップロード処理の詳細な手順を示すフローチャートである。
【図41】一変形例にかかるシーダ52の機能的構成を例示する図である。
【図42】第6の実施の形態にかかるコンテンツ配信システムの構成を示す図である。
【図43】同実施の形態にかかる流通暗号化ピースと、非流通暗号化ピースとを例示する図である。
【図44】同実施の形態にかかるResidualサーバ55の機能的構成を例示する図である。
【図45】同実施の形態にかかるコンテンツ配信処理の手順を示すフローチャートである。
【図46】同実施の形態にかかるResidualサーバ55が行う照合処理の手順を示すフローチャートである。
【符号の説明】
【0221】
50,50A,50B リーチャ(通信装置)
51 トラッカ(管理サーバ)
52,52A,52B,52C シーダ(通信装置)
53 鍵サーバ
54 販売サーバ
500 コンテンツ取得部(コンテンツ受信手段)
501 鍵束要求部(送信手段)
502 鍵束取得部(鍵受信手段)
503 コンテンツ復号部(復号手段)
504 サブピース完成判定部
505 セッション情報管理部
510 インデックス生成部(決定手段)
511 シーダ情報生成部(生成手段、送信手段)
512 シーダデータベース(第1記憶手段)
513 インデックスデータベース(第2記憶手段)
526 コンテンツ送信部
527 不正要求判定部
528 セッション情報管理部
530 制御部
531 パケット処理部
532 ネットワークインターフェース部(受信手段、送信手段)
533 認証・鍵交換処理部
534 鍵記憶部(第1記憶手段)
535 シーケンス情報照合部(決定手段)
536 シーケンス情報記憶部(第2記憶手段)
537 鍵供給部(送信手段)
538 暗号処理部
550 制御部
551 パケット処理部
552 ネットワークインターフェース部
553 認証交換処理部
554 非流通暗号化ピース記憶部
555 リーチャ識別情報照合部
556 リーチャ識別情報記憶部
557 非流通暗号化ピース供給部
558 鍵記憶部
559 鍵供給部
NT P2Pネットワーク

【特許請求の範囲】
【請求項1】
コンテンツの一部である複数のピースを受信する通信装置であって、
複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、
第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、
同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵とは異なっていて、
他の通信装置から、前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に受信するコンテンツ受信手段と、
前記コンテンツ受信手段がピース毎に受信した前記第1暗号化ピース又は前記第2暗号化ピースを復号するための各復号鍵を要求する要求メッセージを、当該各復号鍵を記憶する鍵サーバに送信する鍵要求送信手段と、
前記要求メッセージに従った前記鍵サーバから前記各復号鍵を受信する鍵受信手段とを備える
ことを特徴とする通信装置。
【請求項2】
前記複数のピースのそれぞれについて、前記ピースが暗号化された前記第1暗号化ピース又は前記第2暗号化ピースのうち全部又は一部を示すファイル情報を取得する取得手段を更に備え、
前記コンテンツ受信手段は、前記ファイル情報に基づいて、前記第1暗号化ピース又は前記第2暗号化ピースを前記他の通信装置から受信する
ことを特徴とする請求項1に記載の通信装置。
【請求項3】
前記コンテンツ受信手段は、
前記第1暗号化ピース又は前記第2暗号化ピースのうち少なくとも一方を記憶する他の通信装置にアクセスするためのノード情報を管理サーバから受信する第1受信手段と、
受信された前記ノード情報を用いて、前記他の通信装置にアクセスして、前記ファイル情報に基づいて、前記第1暗号化ピース又は前記第2暗号化ピースを前記他の通信装置から受信する第2受信手段とを有する
ことを特徴とする請求項2に記載の通信装置。
【請求項4】
前記第2受信手段は、前記ファイル情報によって示される前記第1暗号化ピース又は前記第2暗号化ピースの全ての中から、前記複数のピースのうち少なくとも1つのピースについて、前記第1暗号化ピース又は前記第2暗号化ピースを受信する
ことを特徴とする請求項3に記載の通信装置。
【請求項5】
前記コンテンツ受信手段は、
前記他の通信装置が記憶している前記第1暗号化ピースと当該第1暗号化ピースを復号するための復号鍵との対応関係又は前記第2暗号化ピースと当該第2暗号化ピースを復号するための復号鍵との対応関係を示すピース情報を当該他の通信装置から受信する第3受信手段と、
受信された前記ピース情報を用いて、前記ファイル情報に基づいて、前記第1暗号化ピース又は前記第2暗号化ピースを前記他の通信装置から受信する第4受信手段とを有する
ことを特徴とする請求項2乃至4のいずれか一項に記載の通信装置。
【請求項6】
前記鍵要求送信手段は、前記要求メッセージによって要求する、前記各ピースに各々対応する各前記復号鍵の組み合わせを示すインデックス情報を前記鍵サーバに送信し、
前記鍵受信手段は、前記要求メッセージに従った前記鍵サーバから前記各復号鍵を当該鍵サーバから受信する
ことを特徴とする請求項1乃至5のいずれか一項に記載の通信装置。
【請求項7】
前記コンテンツ受信手段は、
前記複数のピースのうち少なくとも1つのピースが暗号化された前記第1暗号化ピース又は前記第2暗号化ピースを指定するシーダ情報を管理サーバから受信する第5受信手段と、
受信された前記シーダ情報によって指定された前記第1暗号化ピース又は前記第2暗号化ピースを記憶する他の通信装置にアクセスして、当該第1暗号化ピース又は前記第2暗号化ピースを受信する第6受信手段とを有する
ことを特徴とする請求項1乃至6のいずれか一項に記載の通信装置。
【請求項8】
前記コンテンツ受信手段は、前記コンテンツの一部であって前記複数のピースとは異なる特定ピースが暗号化された特定暗号化ピースを前記鍵サーバ、前記管理サーバ及び他のサーバのうち少なくとも1つから受信し、
前記鍵要求送信手段は、前記特定暗号化ピースを復号するための復号鍵を要求する要求メッセージを前記鍵サーバに送信し、
前記鍵受信手段は、前記要求メッセージに従った前記鍵サーバから、前記特定暗号化ピースを復号化するための復号鍵を受信する
ことを特徴とする請求項1乃至7のいずれか一項に記載の通信装置。
【請求項9】
特定暗号化ピースは、前記コンテンツの一部であって前記複数のピースとは異なるピースである特定ピースが暗号化され且つ他の通信装置及び当該通信装置に対応付けられたものであって、
前記コンテンツ受信手段は、当該通信装置に対応付けられた特定暗号化ピースを、当該特定暗号化ピースを記憶する他の通信装置、前記鍵サーバ、前記管理サーバ及び他のサーバのうち少なくとも1つから受信し、
前記鍵要求送信手段は、前記特定暗号化ピースとを復号するための復号鍵を要求する要求メッセージを、当該復号鍵を記憶する鍵サーバに送信し、
前記鍵受信手段は、前記要求メッセージに従った前記鍵サーバから前記特定暗号化ピースを復号化するための各復号鍵のうち全部又は一部を受信する
ことを特徴とする請求項1乃至8のいずれか一項に記載の通信装置。
【請求項10】
受信された前記各復号鍵を用いて、前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に各々復号する復号手段を更に備える
ことを特徴とする請求項1乃至9のいずれか一項に記載の通信装置。
【請求項11】
前記第1暗号化ピース又は前記第2暗号化ピースを復号するための復号鍵には、前記複数のピースの各々を区別するためのピースインデックスと、前記ピースに対する前記第1暗号化ピース又は前記第2暗号化ピースの各々を区別するためのバリエーションインデックスとが各々対応付けられており、
前記取得手段は、複数のピースのそれぞれについて、前記ピースインデックス及びバリエーションインデックスを示すファイル情報を取得し、
前記第3受信手段は、前記他の通信装置にアクセスして、当該他の通信装置に記憶されている前記第1暗号化ピース又は前記第2暗号化ピースに対するピースを区別するためのピースインデックスを示すピース情報を当該他の通信装置から受信し、
前記第4受信手段は、受信された前記ピース情報を用いて、前記ファイル情報に基づいて、前記第1暗号化ピース又は前記第2暗号化ピースを前記他の通信装置から受信し、
前記コンテンツ受信手段は、前記第1暗号化ピース又は前記第2暗号化ピースの前記ピースインデックスに対応する前記バリエーションインデックスを示すバリエーションインデックス情報を前記他の通信装置から受信するバリエーション受信手段とを更に有し、
前記鍵要求送信手段は、前記ピースインデックス及び前記バリエーションインデックスによって特定される前記復号鍵を要求する要求メッセージを前記鍵サーバに送信する
ことを特徴とする請求項5に記載の通信装置。
【請求項12】
前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に記憶する記憶手段と、
前記第1暗号化ピース又は前記第2暗号化ピースのデータのうち一部又は全部を要求するピース要求を他の通信装置から受信する要求受信手段と、
前記ピース要求によって要求された前記第1暗号化ピース又は前記第2暗号化ピースのデータのうち一部又は全部を前記他の通信装置に送信するピース送信手段とを更に備え、
前記要求受信手段は、前記第1暗号化ピース又は前記第2暗号化ピースのデータのうち一部を要求するピース要求として、当該前記第1暗号化ピース又は前記第2暗号化ピースのデータのうち一部のデータ範囲を指定する一部データ要求を受信し、
前記ピース送信手段は、前記一部データ要求によって指定された前記データ範囲のデータを前記他の通信装置に送信する
ことを特徴とする請求項1乃至11のいずれか一項に記載の通信装置。
【請求項13】
第3暗号化ピースは、前記複数のピースのうち1つ以上のピースを第3暗号鍵で暗号化することによって生成されるものであって、
同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵と前記第3暗号鍵とは異なっていて、
前記第3暗号化ピースを要求すると共に、当該通信装置を識別するための識別情報を含む特別ピース要求を通信サーバに送信するピース要求送信手段を更に備え、
前記コンテンツ受信手段は、前記特別ピース要求に従い前記通信サーバが送信した前記第3暗号化ピースを受信する
ことを特徴とする請求項1乃至12のいずれか一項に記載の通信装置。
【請求項14】
コンテンツの一部である複数のピースを送信する通信装置であって、
複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、
第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、
同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵とは異なっていて、
前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に記憶する記憶手段と、
前記第1暗号化ピース又は前記第2暗号化ピースのデータのうち一部又は全部を要求するピース要求を他の通信装置から受信する要求受信手段と、
前記ピース要求によって要求された前記第1暗号化ピース又は前記第2暗号化ピースのデータのうち一部又は全部を前記他の通信装置に送信する送信手段とを備える
ことを特徴とする通信装置。
【請求項15】
前記要求受信手段は、前記第1暗号化ピース又は前記第2暗号化ピースのデータのうち一部を要求するピース要求として、前記第1暗号化ピース又は前記第2暗号化ピースのデータのうち一部のデータ範囲を指定する一部データ要求を受信し、
前記送信手段は、前記一部データ要求によって指定された前記データ範囲のデータを前記他の通信装置に送信する
ことを特徴とする請求項14に記載の通信装置。
【請求項16】
前記送信手段は、第1のピース要求が受信された場合且つ当該第1のピース要求が受信される以前に受信された第2のピース要求によって要求された前記データのうち一部又は全部の送信が完了しておらず、送信が完了していないデータの量が閾値以上である場合、前記第1のピース要求によって要求された前記データを送信しない
ことを特徴とする請求項14又は15に記載の通信装置。
【請求項17】
コンテンツの一部である複数のピースを受信する通信装置と通信する鍵サーバであって、
複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、
第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、
同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵とは異なっていて、
前記通信装置は、他の通信装置から、前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に受信するものであって、
前記通信装置から、ピース毎の前記第1暗号化ピース又は前記第2暗号化ピースを復号するための各復号鍵を要求する要求メッセージを受信する受信手段と、
前記各復号鍵を記憶する第1記憶手段と、
前記要求メッセージによって要求された前記各復号鍵の組み合わせに基づいて、当該各復号鍵を送信するか否かを決定する決定手段と、
前記決定手段の決定結果が肯定的である場合、前記要求メッセージによって要求された前記組み合わせにおける前記各復号鍵を前記第1記憶手段から各々読み出してこれらを前記通信装置に送信する鍵送信手段とを備える
ことを特徴とする鍵サーバ。
【請求項18】
前記各ピースに対応して既に送信した前記各復号鍵の組み合わせを示すシーケンス情報を記憶する第2記憶手段を備え、
前記決定手段は、前記要求メッセージによって要求された前記各復号鍵の組み合わせを示すシーケンス情報が、前記第2記憶手段に記憶されているか否かを判断することにより、当該各復号鍵を送信するか否かを決定する
ことを特徴とする請求項17に記載の鍵サーバ。
【請求項19】
前記受信手段は、要求メッセージによって要求される前記各復号鍵の組み合わせを示すインデックス情報を前記通信装置から受信し、
前記決定手段は、前記インデックス情報によって示される前記各復号鍵の組み合わせに基づいて、当該各復号鍵を送信するか否かを決定する
ことを特徴とする請求項17又は18に記載の鍵サーバ。
【請求項20】
前記鍵送信手段は、前記決定手段の決定結果が肯定的である場合、前記要求メッセージによって要求された、ピース毎の前記第1暗号化ピース又は前記第2暗号化ピースを各々復号するための前記各復号鍵と、前記コンテンツの一部であって前記複数のピースとは異なる特定ピースが暗号化された特定暗号化ピースを復号化するための前記復号鍵とを前記第1記憶手段から各々読み出してこれらを前記通信装置に送信する
ことを特徴とする請求項17乃至19のいずれか一項に記載の鍵サーバ。
【請求項21】
コンテンツの一部である複数のピースを受信する通信装置と通信する管理サーバであって、
複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、
第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、
同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵とは異なっていて、
前記通信装置は、他の通信装置から、前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に受信するものであって、
前記他の通信装置にアクセスするための接続先情報を記憶する第1記憶手段と、
前記複数のピースのうち少なくとも1つのピースについて、当該少なくとも1つのピースが暗号化された前記第1暗号化ピース又は前記第2暗号化ピースを決定する決定手段と、
前記通信装置に対して、前記他の通信装置にアクセスするための接続先情報を前記第1記憶手段から読み出してこれと、決定された前記第1暗号化ピース又は前記第2暗号化ピースを指定するシーダ情報とを送信する送信手段と
を備えることを特徴とする管理サーバ。
【請求項22】
前記送信手段は、決定された前記第1暗号化ピースと当該第1暗号化ピースを復号するための復号鍵との対応関係を示すインデックス情報又は前記第2暗号化ピースと当該第2暗号化ピースを復号するための復号鍵との対応関係を示すインデックス情報を含む前記シーダ情報を前記通信装置に送信する
ことを特徴とする請求項21に記載の管理サーバ。
【請求項23】
前記第1暗号化ピースと当該第1暗号化ピースを復号するための復号鍵との対応関係又は前記第2暗号化ピースと当該第2暗号化ピースを復号するための復号鍵との対応関係に対して、それを示す前記シーダ情報が前記通信装置に送信されたか否かを記憶する第2記憶手段を備え、
前記決定手段は、前記ピースに対応する前記第1暗号化ピース又は前記第2暗号化ピースのうち、前記復号鍵との対応関係においてそれを示す前記シーダ情報が前記通信装置に送信されたことが前記第2記憶手段に記憶されていない前記第1暗号化ピース又は前記第2暗号化ピースを決定する
ことを特徴とする請求項21又は22に記載の管理サーバ。
【請求項24】
前記コンテンツの一部であって前記複数のピースとは異なるピースである特定ピースが暗号化された特定暗号化ピースを、前記他の通信装置及び前記通信装置のうち少なくとも一方に一意に割り当てる割当手段を更に備える
ことを特徴とする請求項21乃至23のいずれか一項に記載の管理サーバ。
【請求項25】
前記第1記憶手段は、各前記ピースに各々対応する前記第1暗号化ピース又は前記第2暗号化ピースについて、前記第1暗号化ピースと当該第1暗号化ピースを復号するための復号鍵との対応関係と当該第1暗号化ピースを記憶する他の通信装置の前記接続先情報とを対応付けて記憶し又は前記第2暗号化ピースと当該第2暗号化ピースを復号するための復号鍵との対応関係と当該第2暗号化ピースを記憶する他の通信装置の前記接続先情報とを対応付けて記憶し、
前記決定手段は、前記少なくとも1つのピースが暗号化された前記第1暗号化ピース又は前記第2暗号化ピースを決定すると共に、決定された前記第1暗号化ピース又は前記第2暗号化ピースに対応して前記第1記憶手段に記憶された前記接続先情報を参照して、決定した前記第1暗号化ピース又は前記第2暗号化ピースを記憶する他の通信装置を特定し、
前記送信手段は、特定された前記他の通信装置の前記接続先情報を前記シーダ情報に含めて前記通信装置に送信する
ことを特徴とする請求項21乃至24のいずれか一項に記載の管理サーバ。
【請求項26】
コンテンツの一部である複数のピースを受信する通信装置と通信する通信サーバであって、
複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、
第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、
第3暗号化ピースは、前記複数のピースのうち1つ以上のピースを第3暗号鍵で暗号化することによって生成されるものであって、
同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵と前記第3暗号鍵とは異なっていて、
前記通信装置は、他の通信装置から、前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に受信するものであって、
前記第3暗号化ピースを記憶する第1記憶手段と、
前記第3暗号化ピースを前記通信装置に送信した場合に当該通信装置を識別するための識別情報を記憶する第2記憶手段と、
前記第3暗号化ピースを要求すると共に前記通信装置を識別するための識別情報を含む特別ピース要求を前記通信装置から受信する第1受信手段と、
前記特別ピース要求に含まれる前記識別情報が前記第2記憶手段に記憶されていない場合、前記第1記憶手段から前記第3暗号化ピースを読み出して前記通信装置に送信する第1送信手段とを備える
ことを特徴とする通信サーバ。
【請求項27】
前記第1送信手段は、前記特別ピース要求に含まれる前記識別情報が前記第2記憶手段に記憶されていない場合、復号される前記ピースが通信装置毎に異なるように、前記第3暗号化ピースを前記第1記憶手段から読み出して前記通信装置に送信する
ことを特徴とする請求項26に記載の通信サーバ。
【請求項28】
前記第1記憶手段は、前記第1暗号化ピース及び前記第2暗号化ピースのうち少なくとも一つを更に記憶しており、
前記第1受信手段は、前記第1暗号化ピース、前記第2暗号化ピース及び前記第3暗号化ピースを要求すると共に前記通信装置を識別するための識別情報を含むピース要求を前記通信装置から受信し、
前記第1送信手段は、前記特別ピース要求に含まれる前記識別情報が前記第2記憶手段に記憶されていない場合、前記特別ピース要求によって要求された前記第1暗号化ピース、前記第2暗号化ピース及び前記第3暗号化ピースを前記第1記憶手段から読み出して前記通信装置に送信する
ことを特徴とする請求項26又は27に記載の通信サーバ。
【請求項29】
コンテンツの一部である複数のピースを受信する通信装置の有するコンピュータに実行させるためのプログラムであって、
複数の第1暗号化ピースは、前記複数のピースを第1暗号鍵で暗号化することによって生成されるものであって、
第2暗号化ピースは、前記複数のピースのうち1つ以上のピースを第2暗号鍵で暗号化することによって生成されるものであって、
同一のピースを暗号化するための前記第1暗号鍵と前記第2暗号鍵とは異なっていて、
他の通信装置から、前記第1暗号化ピース又は前記第2暗号化ピースをピース毎に受信するコンテンツ受信ステップと、
前記コンテンツ受信ステップでピース毎に受信した前記第1暗号化ピース又は前記第2暗号化ピースを復号するための各復号鍵を要求する要求メッセージを、当該各復号鍵を記憶する鍵サーバに送信する送信ステップと、
前記要求メッセージに従った前記鍵サーバから前記各復号鍵を当該鍵サーバから受信する鍵受信ステップとを含む
ことを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate

【図44】
image rotate

【図45】
image rotate

【図46】
image rotate


【公開番号】特開2009−153091(P2009−153091A)
【公開日】平成21年7月9日(2009.7.9)
【国際特許分類】
【出願番号】特願2008−181884(P2008−181884)
【出願日】平成20年7月11日(2008.7.11)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】