図2は、本発明を適用したコンテンツ提供システムの構成を示している。インターネット2には、クライアント1−1,1−2(以下、これらのクライアントを個々に区別する必要がない場合、単にクライアント1と称する)が接続されている。この例においては、クライアントが2台のみ示されているが、インターネット2には、任意の台数のクライアントが接続される。
また、インターネット2には、クライアント1に対してコンテンツを提供するコンテンツサーバ3、コンテンツサーバ3が提供するコンテンツを利用するのに必要な利用権をクライアント1に対して付与するライセンスサーバ4、およびクライアント1が利用権を受け取った場合に、そのクライアント1に対して課金処理を行う課金サーバ5が接続されている。
これらのコンテンツサーバ3、ライセンスサーバ4、および課金サーバ5も、任意の台数だけ、インターネット2に接続される。
図3はクライアント1の構成を表している。
図3において、CPU(Central Processing Unit)21は、ROM(Read Only Memory)22に記憶されているプログラム、または記憶部28からRAM(Random Access Memory)23にロードされたプログラムに従って各種の処理を実行する。タイマ20は、計時動作を行い、時刻情報をCPU21に供給する。RAM23にはまた、CPU21が各種の処理を実行する上において必要なデータなども適宜記憶される。
暗号化復号部24は、コンテンツを暗号化するとともに、既に暗号化されているコンテンツを復号する処理を行う。コーデック部25は、例えば、ATRAC(Adaptive Transform Acoustic Coding)3方式などでコンテンツをエンコードし、入出力インタフェース32を介してドライブ30に接続されている半導体メモリ44に供給し、記録させる。あるいはまた、コーデック部25は、ドライブ30を介して半導体メモリ44より読み出した、エンコードされているデータをデコードする。半導体メモリ44は、例えば、メモリスティック(商標)などにより構成される。
CPU21、ROM22、RAM23、暗号化復号部24、およびコーデック部25は、バス31を介して相互に接続されている。このバス31にはまた、入出力インタフェース32も接続されている。
入出力インタフェース32には、キーボード、マウスなどよりなる入力部26、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部27、ハードディスクなどより構成される記憶部28、モデム、ターミナルアダプタなどより構成される通信部29が接続されている。通信部29は、インターネット2を介しての通信処理を行う。通信部29はまた、他のクライアントとの間で、アナログ信号またはデジタル信号の通信処理を行う。
入出力インタフェース32にはまた、必要に応じてドライブ30が接続され、磁気ディスク41、光ディスク42、光磁気ディスク43、或いは半導体メモリ44などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部28にインストールされる。
なお、図示は省略するが、コンテンツサーバ3、ライセンスサーバ4、課金サーバ5も、図3に示したクライアント1と基本的に同様の構成を有するコンピュータにより構成される。そこで、以下の説明においては、図3の構成は、コンテンツサーバ3、ライセンスサーバ4、課金サーバ5などの構成としても引用される。
本発明においては、図4に示されるように、ブロードキャストインクリプション(Broadcast Encryption)方式の原理に基づいて、デバイスとキーが管理される。キーは、階層ツリー構造とされ、最下段のリーフ(leaf)が個々のデバイス固有のキーに対応する。本発明のシステムに用いられる階層ツリー構造鍵管理については特開2001−352321号公報に記載されている。図4の例の場合、番号0から番号15までの16個のデバイスに対応するキーが生成される。
各キーは、図中丸印で示されるツリー構造の各ノードに対応して規定される。この例では、最上段のルートノードに対応してルートキーKR(適宜、Krootとも称する)が規定され、2段目のノードに対応してキーK0,K1が規定される。また、3段目のノードに対応してキーK00乃至K11が規定され、第4段目のノードに対応してキーK000乃至キーK111が規定される。そして、最下段のノードとしてのリーフ(デバイスノード)に、キーK0000乃至K1111が、それぞれ対応されている。
階層構造とされているため、例えば、キーK0010とキーK0011の上位のキーは、K001とされ、キーK000とキーK001の上位のキーは、K00とされている。以下、同様に、キーK00とキーK01の上位のキーは、K0とされ、キーK0とキーK1の上位のキーは、KRとされている。
コンテンツを利用するキーは、最下段のデバイスノード(リーフ)から、最上段のルートノードまでの1つのパスの各ノードに対応するキーで管理される。例えば、番号3のリーフに対応するデバイスにおいて、コンテンツを利用するためのキーは、キーK0011,K001,K00,K0,KRを含むパスの各キーで管理される。
本発明のシステムにおいては、図5に示されるように、図4の原理に基づいて構成されるキーシステムで、デバイスのキーとコンテンツのキーの管理が行われる。図5の例では、8+24+32段のノードがツリー構造とされ、ルートノードから下位の8段までの各ノードにカテゴリが対応される。ここにおけるカテゴリとは、例えばメモリスティックなどの半導体メモリを使用する機器のカテゴリ、或いは、デジタル放送を受信する機器のカテゴリといったカテゴリを意味する。そして、このカテゴリノードのうちの1つのノードに、利用権を管理するシステムとして本システム(適宜、Tシステムと称する)が対応する。
すなわち、Tシステムのノードよりさらに下の階層の24段のノードに対応するキーにより、サービスプロバイダ、あるいはサービスプロバイダが提供するサービスが対応される。従って、図5の例においては、224(約16メガ)のサービスプロバイダ、あるいはサービスを規定することができる。また、最下段の32段の階層により、232(約4ギガ)のユーザ(クライアント1)を規定することができる。最下段の32段のノードからTシステムのノードまでのパス上の各ノードに対応するキーが、DNK(Device Node Key)を構成し、最下段のリーフに対応するIDがリーフIDとされる。
コンテンツを暗号化したコンテンツキーは更新されたルートキーKR'によって暗号化され、上位の階層の更新ノードキーは、その直近の下位の階層の更新ノードキーを用いて暗号化され、EKB(Enabling Key Block:有効化キーブロック)(図7を参照して後述する)内に配置される。
EKBにおける末端から1つ上の段の更新ノードキーはEKBの末端のノードキーあるいはリーフキーによって暗号化され、EKB内に配置される。クライアント1は、サービスデータに記述されているDNKのいずれかのキーを用いて、コンテンツとともに配布されるEKBに記述されている直近の上位の階層の更新ノードキーを復号し、復号して得たノードキーを用いて、EKBに記述されている、さらにその上の階層の更新ノードキーを復号する。同様の処理を順次行うことで、クライアント1は、更新ルートキーKR'を得ることができる。サービスデータは、クライアント1についての情報を登録したときにライセンスサーバ4から供給されるものであり、このサービスデータと、後述する、特定のコンテンツの利用を許可する情報である利用権の組み合わせをライセンスと呼ぶ。
図6は、階層ツリー構造のカテゴリの分類の具体的な例を示す図である。
図6において、階層ツリー構造の最上段には、ルートキーKR2301が設定され、以下の中間段にはノードキー2302が設定され、最下段には、リーフキー2303が設定される。各デバイスは、個々のリーフキーと、リーフキーからルートキーに至る一連のノードキー、ルートキーからなるデバイスノードキー(DNK)を保有する。
最上段から第M段目(図5の例では、M=8)の所定のノードがカテゴリノード2304として設定される。すなわち、第M段目のノードの各々が特定カテゴリのデバイス設定ノードとされる。第M段の1つのノードを頂点としてM+1段以下のノード、リーフは、そのカテゴリに含まれるデバイスに関するノードおよびリーフとされる。
例えば、図6の第M段目の1つのノード2305にはカテゴリ[メモリスティック(商標)]が設定され、このノード以下に連なるノード、リーフはメモリステッイクを使用した様々なデバイスを含むカテゴリ専用のノードまたはリーフとして設定される。すなわち、ノード2305以下が、メモリスティックのカテゴリに定義されるデバイスの関連ノード、およびリーフの集合として定義される。
M段から数段分下位の段をサブカテゴリノード2306として設定することができる。図6の例では、カテゴリ[メモリスティック]ノード2305の2段下のノードに、メモリスティックを使用したデバイスのカテゴリに含まれるサブカテゴリノードとして、[再生専用器]のノード2306が設定されている。また、サブカテゴリノードである再生専用器のノード2306以下に、再生専用器のカテゴリに含まれる音楽再生機能付き電話のノード2307が設定され、さらにその下位に、音楽再生機能付き電話のカテゴリに含まれる[PHS]ノード2308と、[携帯電話]ノード2309が設定されている。
カテゴリ、サブカテゴリは、デバイスの種類のみならず、例えば、あるメーカー、コンテンツプロバイダ、決済機関等が独自に管理するノード、すなわち処理単位、管轄単位、或いは提供サービス単位等、任意の単位(これらを総称して以下、エンティティと呼ぶ)で設定することが可能である。
例えば、1つのカテゴリノードをゲーム機器メーカーの販売するゲーム機器XYZ専用の頂点ノードとして設定することにより、メーカーの販売するゲーム機器XYZに、その頂点ノード以下の下段のノードキー、リーフキーを格納して販売することができ、その後、その頂点ノードキー以下のノードキー、リーフキーによって構成されるEKBを生成して配信することで、暗号化コンテンツの配信処理、各種キーの配信処理、更新処理等を、頂点ノード以下のデバイス(ゲーム機器XYZ)に対してのみ行うことができる。
すなわち、頂点ノードに属さない、他のカテゴリのノードに属するデバイスには全く影響を及ぼすことなく、キーの更新等を実行することができる。
また、ある時点tにおいて、デバイス3の所有する鍵K0011,K001,K00,K0,KRが攻撃者(ハッカー)により解析されて露呈したことが発覚した場合、それ以降、システム(デバイス0,1,2,3のグループ)で送受信されるデータを守るために、デバイス3をシステムから切り離す必要がある。そのためには、ノードキーK001,K00,K0,KRを、それぞれ新たな鍵K(t)001,K(t)00,K(t)0,K(t)Rに更新し、デバイス0,1,2にその更新キーを伝える必要がある。ここで、K(t)aaaは、鍵Kaaaの世代(Generation)tの更新キーであることを示す。
更新キーの配布処理ついて説明する。キーの更新は、例えば、図7に示されるEKBによって構成されるテーブルを、ネットワークを介して、あるいは所定の記録媒体に格納してデバイス0,1,2に供給することによって実行される。なお、EKBは、図4に示されるようなツリー構造を構成する各リーフ(最下段のノード)に対応するデバイスに、新たに更新されたキーを配布するための暗号化キーによって構成される。
図7に示されるEKBは、ノードキーの更新の必要なデバイスのみが更新可能なデータ構成を持つブロックデータとして構成される。図7の例は、図4に示されるツリー構造中のデバイス0,1,2において、世代tの更新ノードキーを配布することを目的として形成されたブロックデータである。
図4から明らかなように、デバイス0,1に対しては、更新ノードキーとしてK(t)00,K(t)0,K(t)Rを提供することが必要であり、デバイス2に対しては、更新ノードキーとしてK(t)001,K(t)00,K(t)0,K(t)Rを提供することが必要である。
図7のEKBに示されるように、EKBには複数の暗号化キーが含まれ、例えば、図7の最下段の暗号化キーは、Enc(K0010,K(t)001)である。これは、デバイス2の持つリーフキーK0010によって暗号化された更新ノードキーK(t)001であり、デバイス2は、自分自身が有するリーフキーK0010によって、暗号化キーを復号し、更新ノードキーK(t)001を取得できる。
また、デバイス2は、復号により得た更新ノードキーK(t)001を用いて、図7の下から2段目の暗号化キーEnc(K(t)001,K(t)00)を復号することができ、更新ノードキーK(t)00を取得することができる。
デバイス2は、同様に、図7の上から2段目の暗号化キーEnc(K(t)00,K(t)0)を復号することで、更新ノードキーK(t)0を取得でき、これを用いて、図7の上から1段目の暗号化キーEnc(K(t)0,K(t)R)を復号することで、更新ルートキーK(t)Rを取得できる。
一方、ノードキーK000は、更新する対象のキーに含まれておらず、ノード0,1が更新ノードキーとして必要なのは、K(t)00,K(t)0,K(t)Rである。
ノード0,1は、デバイスキーK0000,K0001を用いて、図7の上から3段目の暗号化キーEnc(K000,K(t)00)を復号することにより更新ノードキーK(t)00を取得し、同様に、順次、図7の上から2段目の暗号化キーEnc(K(t)00,K(t)0)を復号することで、更新ノードキーK(t)0を取得し、さらに、図7の上から1段目の暗号化キーEnc(K(t)0,K(t)R)を復号することで、更新ルートキーK(t)Rを取得する。このようにして、デバイス0,1,2は、更新したキーK(t)Rを得ることができる。
なお、図7のインデックスは、図の右側に示される暗号化キーを復号するための復号キーとして使用するノードキー、リーフキーの絶対番地を示す。
図4に示されるツリー構造の上位段のノードキーK(t)0,K(t)Rの更新が不要であり、ノードキーK00のみの更新処理が必要である場合には、図8のEKBを用いることで、更新ノードキーK(t)00をデバイス0,1,2に配布することができる。
図8に示されるEKBは、例えば、特定のグループにおいて共有される新たなコンテンツキーを配布する場合に利用可能である。
例えば、図4の一点鎖線で示されるグループ内のデバイス0,1,2,3が、ある記録媒体を用いており、それらのデバイスに対して新たな共通のコンテンツキーK(t)conを設定することが必要であるとする。このとき、デバイス0,1,2,3の共通のノードキーK00を更新したK(t)00により、新たな共通の更新コンテンツキーK(t)conが暗号化されたデータEnc(K(t)00,K(t)con)が、図8に示されるEKBとともに配布される。この配布により、デバイス4など、その他のグループの機器が復号することができないデータとしての配布が可能となる。
すなわち、デバイス0,1,2は、EKBを処理して得たキーK(t)00を用いて暗号データを復号することで、t時点におけるコンテンツキーK(t)conを得ることができる。
図9は、t時点でのコンテンツキーK(t)conを得る処理の例として、K(t)00により新たな共通のコンテンツキーK(t)conが暗号化されたデータEnc(K(t)00,K(t)con)と、図8に示されるEKBが、所定の記録媒体を介して提供されたデバイス0の処理を模式的に示す図である。すなわち、図9の例は、EKBによる暗号化メッセージデータをコンテンツキーK(t)conとした例である。
図9に示されるように、デバイス0は、記録媒体に格納されている世代t時点のEKBと、自分自身に予め用意されているノードキーK000を用いて、上述したようなEKB処理(鍵を順次解く処理)により、ノードキーK(t)00を生成する。また、デバイス0は、復号した更新ノードキーK(t)00を用いて、更新コンテンツキーK(t)conを復号し、それを後に使用するために、自分だけが有するリーフキーK0000で、更新コンテンツキーK(t)conを暗号化して格納する。
図10は、EKBのフォーマットの例を示す図であり、このような各種の情報からなるEKBが、コンテンツデータのヘッダに含まれる。
バージョン61は、EKBのバージョンを示す識別子である。このバージョン61は、最新のEKBを識別する機能と、コンテンツとの対応関係を示す機能を有する。デプス62は、EKBの配布先のデバイスに対する階層ツリーの階層数を示す。データポインタ63は、EKB中のデータ部66の位置を示すポインタであり、タグポインタ64および署名ポインタ65は、タグ部67および署名68の位置をそれぞれ示すポインタである。
データ部66には、例えば、更新するノードキーが暗号化されて得られたデータが格納される。例えば、図9に示されるような、更新されたノードキーに関する各暗号化キー等がデータ部66に格納される。
タグ部67は、データ部66に格納された、暗号化されたノードキー、リーフキーの位置関係を示すタグである。このタグの付与ルールを、図11を参照して説明する。
図11の例においては、送付されるデータは、図11Bに示されるように、図7の暗号化キーとされている。なお、暗号化キーに含まれるトップノードのアドレスをトップノードアドレスとする。
この例においては、ルートキーの更新キーK(t)Rが含まれているため、トップノードアドレスはKRとなる。このとき、例えば、最上段のデータEnc(K(t)0,K(t)R)は、図11Aに示す階層ツリーに示す位置P0に対応する。次の段のデータは、Enc(K(t)00,K(t)0)であり、ツリー上では前のデータEnc(K(t)0,K(t)R)の左下の位置P00に対応する。
すなわち、ツリー構造の所定の位置から見て、その下にデータがある場合には、タグが0に設定され、データがない場合には、タグが1に設定される。タグは{左(L)タグ,右(R)タグ}として設定される。
図11Bの最上段のデータEnc(K(t)0,K(t)R)に対応する位置P0の左下の位置P00にはデータがあるため、Lタグ=0となり、位置P0の右下にはデータがないため、Rタグ=1となる。以下、すべてのデータにタグが設定され、図11Cに示すデータ列、およびタグ列が構成される。
タグは、対応するデータEnc(Kxxx,Kyyy)が、ツリー構造のどこに位置しているのかを示すために設定される。データ部66に格納されるキーデータEnc(Kxxx,Kyyy)・・・は、単純に暗号化されたキーの羅列データに過ぎないが、上述したタグによって、データとして格納された暗号化キーのツリー上の位置が判別可能となる。タグを用いずに、図7または図8に示されるように、暗号化データに対応させたノード・インデックスを用いて、例えば、
0:Enc(K(t)0,K(t)R)
00:Enc(K(t)00,K(t)0)
000:Enc(K((t)000,K(t)00)
・・・
のようなデータ構成とすることも可能であるが、このようなインデックスを用いた構成とした場合、そのデータ量が増大し、ネットワークを介する配信等においては好ましくない。これに対し、以上のようなタグを、キーの位置を示す索引データとして用いることにより、より少ないデータ量で、キーの位置の判別が可能となる。
図10の説明に戻り、署名(Signature)68は、EKBを発行した、例えば、鍵管理センタ(ライセンスサーバ4)、コンテンツロバイダ(コンテンツサーバ3)、決済機関(課金サーバ5)等が実行する電子署名である。EKBを受領したデバイスは、EKBに含まれる署名を検証することにより、取得したEKBが、正当な発行者が発行したEKBであるか否かを判定する。
図12は、以上のような鍵管理システムにおいて、コンテンツを復号するためのコンテンツ鍵Kcがクライアント1により取得されるまでの処理を模式的に示す図である。
図12の左端に示されるDNKは、登録時に生成されるサービスデータに含まれて、ライセンスサーバ4からクライアント1に提供される。また、後述するように、サービスデータには、クライアント1に固有の個別鍵Kpriが含まれており、その鍵情報も提供される(図12の右端)。
クライアント1は、あるコンテンツと、そのコンテンツを利用するための条件等が記述された利用権を取得し、ユーザの指示に応じてコンテンツを利用するとき、始めに、サービスデータにより取得されたDNKを用いて、コンテンツのEKBに含まれるEKBキーKekbを取得する。また、クライアント1は、サービスデータにより取得された個別鍵Kpriを用いて、EKBキーKekbに対応する、利用権に含まれるサブキーKsubを取得する。なお、図12において、EKB(Kekb)は、EKBキーKekbが、EKBに含まれるルートキーKrootにより暗号化されていることを表している。
クライアント1は、EKBキーKekbとサブキーKsubを取得したとき、それらの鍵情報に基づいて、コンテンツを復号するためのコンテンツキーKcを排他的論理和演算により生成し、生成したコンテンツキーKcを利用して、コンテンツ(コンテンツデータ)を復号する。
このように、EKBに含まれるEKBキーKekbと、利用権に含まれるサブキーKsubに基づいて生成されたコンテンツキーKcにより、コンテンツを利用できるようにすることにより(鍵情報を分割してクライアント1に提供することにより)、仮に、EKBの内容が読み取られた場合であっても、そこに記述されている鍵情報のみではコンテンツを利用できないこととなる。すなわち、コンテンツを利用するためには、EKB(コンテンツ)、コンテンツを利用するための利用権、およびサービスデータが必要となる。
以下、分割されて提供された鍵情報に基づいてコンテンツを利用するまでの、クライアント1、コンテンツサーバ3、およびライセンスサーバ4の処理について、フローチャートを参照して説明する。
始めに、図13のフローチャートを参照して、サービスデータを取得するクライアント1の処理について説明する。
入力部26が操作され、ライセンスサーバ4に対するアクセスがユーザにより指示されたとき、クライアント1のCPU21は、ステップS1において、通信部29を制御し、インターネット2を介して、ライセンスサーバ4にアクセスする。ステップS2において、入力部26が操作され、提供を受けるサービスがユーザにより指定されたとき、CPU21は、この指定情報を受け取り、ライセンスサーバ4に対して、指定されたサービスを利用するためのサービスデータを要求する。
図15のフローチャートを参照して後述するように、この通知を受けたライセンスサーバ4は、サービスデータを送信してくるため、CPU21は、ステップS3において、ライセンスサーバ4から送信されてきたサービスデータを受信し、ステップS4に進み、ハードディスクなどにより構成される記憶部28にサービスデータを記憶させる。
図14は、クライアント1に提供されるサービスデータの例を示す図である。
図14に示されるように、サービスデータには、クライアント1を識別するリーフID、EKBに記述されている鍵情報を復号するためのDNK、クライアント1に対して個別に与えられる個別鍵Kpri、個別鍵Kpriに対応する公開鍵Kpubが含まれている。また、サービスデータには、ライセンスサーバ4が有する個別鍵に対応する、ライセンスサーバ4の公開鍵、およびサービスデータの証明書が含まれている。
次に、図15のフローチャートを参照して、図13に示される処理に対応して実行される、ライセンスサーバ4のサービスデータ提供処理について説明する。
ステップS11において、ライセンスサーバ4のCPU21は、クライアント1からアクセスを受けたか否かを判定し、アクセスを受けたと判定するまで待機する。ライセンスサーバ4のCPU21は、ステップS11において、クライアント1からアクセスを受けたと判定した場合、ステップS12に進み、クライアント1から要求されたサービスを利用するための、図14に示されるような各種の情報が記述されたサービスデータを生成する。
ステップS13において、ライセンスサーバ4のCPU21は、通信部29を制御し、ステップS12で生成したサービスデータを、サービスのデフォルトの使用条件を表す情報とともにクライアント1に送信する。
以上のような処理によって、クライアント1により、サービスデータが取得される。なお、以上のような処理によりサービスデータがクライアント1に提供されるのはなく、クライアント1に予め格納された状態(クライアント1の製造の段階で埋め込まれた状態)で、そのクライアント1のユーザに提供されるようにしてもよい。
次に、図16のフローチャートを参照して、クライアント1に提供するコンテンツを生成するコンテンツサーバ3の処理について説明する。なお、コンテンツサーバ3から提供されるコンテンツに含まれる音楽データや映像データなどのそのものであるコンテンツデータは、図示せぬコンテンツホルダにより提供されたものである。
ステップS21において、コンテンツサーバ3のCPU21は、クライアント1に提供するコンテンツ(コンテンツデータ)を暗号化するコンテンツキーKcを生成する。また、CPU21は、ステップS22において、クライアント1においてコンテンツキーKcを生成するために必要なサブキーKsubを生成する。上述したように、このサブキーKsubは、利用権に含まれる形で、ライセンスサーバ4からクライアント1に提供される。
CPU21は、ステップS23において、サブキーKsubとEKBキーKekbに基づいて、クライアント1がコンテンツキーKcを生成できるように、そのEKBキーKekbを生成する。具体的には、CPU21は、ステップS21で生成したコンテンツキーKcと、ステップS22で生成したサブキーKsubの排他的論理和演算(Exclusive OR)を行い、その演算結果をEKBキーKekbとする。
ステップS24において、CPU21は、ステップS23で生成したEKBキーKekbを、EKBに含まれるルートキーKrootで暗号化し、E(Kroot,Kekb)を取得する。また、CPU21は、ステップS25において、ステップS21で生成したコンテンツキーKcを用いて、クライアント1に提供するコンテンツ(Content)に暗号化を施し、E(Kc,Cont)を取得する。
CPU21は、ステップS26において、ステップS24で取得したE(Kroot,Kekb)、およびステップS25で取得したE(Kc,Cont)を含むフォーマットのコンテンツを生成し、それを記憶部28に保存する。
図17は、コンテンツサーバ3により生成されるコンテンツのフォーマットの例を示す図である。
図17に示されるように、基本的に、コンテンツはヘッダ(Header)とデータ(Data)(コンテンツデータ)により構成される。
ヘッダには、コンテンツ情報(Content information)、URL(Uniform Resource Locator)、ライセンスID(License ID)、クライアント1に提供されたDNKにより暗号化されたKrootを含むEKB、EKBから取得されたキーKrootによりEKBキーKekbが暗号化されて得られたE(Kroot,Kekb)、コンテンツの属性を表す属性情報(Attribute)、およびヘッダの署名(Signatures)が記述されている。
コンテンツ情報には、データとして格納されているコンテンツを識別するためのコンテンツID(CID)、および、コンテンツのコーデックの方式を表す情報などが含まれている。
URLは、そのコンテンツを利用するために必要な利用権を取得するときアクセスする、ライセンスサーバ4のアドレスを表している。コンテンツの属性には、コンテンツID、コンテンツの提供者を識別するための識別情報としてのレコードカンパニーID、アーティストを識別するための識別情報としてのアーティストID、および、ユニークIDなどが含まれる。本実施例では、属性は利用権の対象となるコンテンツを特定するために用いられる。
データは、任意の数の暗号化ブロック(Encryption Block)により構成される。各暗号化ブロックは、イニシャルベクトル(IV(Initial Vector))、シード(Seed)、およびコンテンツをキーK'cで暗号化したデータEK'c(data)により構成されている。
キーK'cは、次式により示されるように、コンテンツキーKcと、乱数で設定される値Seedをハッシュ関数に適用して演算された値により構成される。
K'c=Hash(Kc,Seed)
イニシャルベクトルIVとシードSeedは、暗号化ブロック毎に、異なる値が設定される。
例えば、コンテンツの暗号化は、コンテンツのデータを8バイト単位で区分して、その区分毎に行われる。後段の8バイトの暗号化は、前段の8バイトの暗号化の結果を利用して行われるCBC(Cipher Block Chaining)モードで行われる。
CBCモードの場合、最初の8バイトのコンテンツを暗号化するとき、その前段の8バイトの暗号化結果が存在しないため、最初の8バイトのコンテンツを暗号化するときは、イニシャルベクトルIVを初期値として暗号化が行われる。
CBCモードによる暗号化を行うことにより、1つの暗号化ブロックが解読されたとしても、その影響が、他の暗号化ブロックに及ぶことが抑制される。なお、コンテンツが、他の暗号化方式により暗号化されるようにしてもよい。
以上のようなフォーマットでコンテンツを構成することにより、コンテンツを取得したクライアント1は、サービスデータにより予め与えられているDNKを用いてルートキーKrootを復号し、取得したルートキーKrootにより、EKBキーKekbを復号することができる。また、クライアント1は、EKBキーKekbと、利用権に含まれているサブキーKsubに基づいてコンテンツキーKcを生成し、それを用いてコンテンツを復号することができる。
図16の説明に戻り、ステップS27において、コンテンツサーバ3のCPU21は、ステップS22で生成したサブキーKsubを、インターネット2を介して、または、所定の記録媒体を介して、ライセンスサーバ4に提供する。
コンテンツサーバ3によるサブキーKsubの提供に応じて、ライセンスサーバ4においては、図18のフローチャートに示される処理が行われる。
ステップS41において、ライセンスサーバ4のCPU21は、コンテンツサーバ3からサブキーKsubが取得されてきたか否かを判定する。CPU21は、サブキーKsubが取得されてきたと判定するまで待機し、例えば、インターネット2を介してサブキーKsubを表す情報が送信されてきたと判定した場合、ステップS42に進み、それを取得する。取得されたサブキーKsubは、記憶部28に記憶され、クライアント1から利用権が要求されたとき、その利用権に含まれてクライアント1に提供される。
次に、図19のフローチャートを参照して、コンテンツサーバ3からコンテンツの提供を受けるクライアント1の処理について説明する。
クライアント1のCPU21は、ユーザからコンテンツサーバ3にアクセスすることが指示されたとき、ステップS51において、コンテンツサーバ3にアクセスする。ステップS52において、ユーザが、入力部26を操作して、提供を受けるコンテンツを指定すると、CPU21は、この指定情報を受け取り、コンテンツサーバ3に、指定されたコンテンツのコンテンツIDを通知する。
図20のフローチャートを参照して後述するように、この通知を受けたコンテンツサーバ3は、コンテンツを送信してくるため、ステップS53において、CPU21は、送信されてきたコンテンツを受信し、ステップS54において、そのコンテンツを記憶部28に記憶させる。
次に、図20のフローチャートを参照して、クライアント1による図19の処理に対応して実行される、コンテンツサーバ3のコンテンツ提供処理について説明する。
ステップS61において、コンテンツサーバ3のCPU21は、クライアント1からアクセスを受けるまで待機し、アクセスを受けたと判定したとき、ステップS62に進み、クライアント1から送信されてきたコンテンツIDを取り込む。このコンテンツIDは、クライアント1が、図19のステップS52において通知してきた情報である。
ステップS63において、コンテンツサーバ3のCPU21は、記憶部28に記憶されているコンテンツデータの中から、ステップS62の処理で取り込まれたコンテンツIDで指定されたコンテンツデータを読み出す。ステップS64において、CPU21は、通信部29を制御し、読み出したコンテンツデータを含むコンテンツを、コンテンツを要求してきたクライアント1に送信する。
次に、図21のフローチャートを参照して、コンテンツを再生するクライアント1の処理について説明する。
ステップS71において、クライアント1のCPU21は、ユーザが入力部26を操作することで指示したコンテンツの識別情報(CID)を取得する。CIDは、例えば、コンテンツのタイトルや、記憶されている各コンテンツに付与されている番号などにより構成される。CPU21は、コンテンツが指示されると、そのコンテンツの属性(Attributes)を読み取る。この属性は、図17に示されるように、コンテンツのヘッダに記述されているものである。
ステップS72において、CPU21は、ステップS71で読み取られた属性が各利用権に含まれているコンテンツ条件を満たすような利用権が、クライアント1により既に取得され、記憶部28に記憶されているか否かを判定する。まだ、利用権が取得されていない場合には、ステップS73に進み、CPU21は、利用権取得処理を実行する。この利用権取得処理の詳細は、図22のフローチャートを参照して後述する。
ステップS72において、利用権が既に取得されていると判定された場合、または、ステップS73において、利用権取得処理が実行され、利用権が取得された場合、ステップS74に進み、CPU21は、取得されている利用権が有効期限内のものであるか否かを判定する。利用権が有効期限内のものであるか否かは、利用権の記述内容としての有効期限(図24参照)と、タイマ20により計時されている現在日時が比較されて判断される。
利用権の有効期限が既に満了していると判定された場合、CPU21は、ステップS75に進み、利用権更新処理を実行する。ステップS75で実行される利用権更新処理は、基本的には、ステップS73で実行される利用権取得処理と同様の処理である。
ステップS74において、利用権が有効期限内のものであると判定された場合、または、ステップS75において、利用権が更新された場合、ステップS76に進み、CPU21は、記憶部28に記憶されている、利用権に含まれる使用条件及び使用状態を読み出し、再生の条件を満たしているかどうかを判定する。
ステップS76において、利用権に含まれる使用条件、及び使用状態に基づき、再生が許可されると判定された場合には、ステップS77に進み、CPU21は、コンテンツを記憶部28から読み出し、RAM23に格納させる。そして、ステップS78において、CPU21は、RAM23に記憶されたコンテンツを復号する処理を実行する。ステップS78において行われるコンテンツ復号処理については、図25のフローチャートを参照して後述する。
CPU21は、ステップS79において、暗号化復号部24により復号されたコンテンツをコーデック部25に供給し、デコードさせる。そして、CPU21は、コーデック部25によりデコードされたデータを入出力インタフェース32を介して出力部27に供給し、ディジタルアナログ変換させ、スピーカから出力させる。
次に、図22のフローチャートを参照して、図21のステップS73で行われる利用権取得処理の詳細について説明する。
ステップS81において、クライアント1のCPU21は、コンテンツのヘッダに記述されているURLを取得する。上述したように、このURLは、そのコンテンツを利用するために必要な利用権を取得するときアクセスするライセンスサーバ4のアドレスを表している。ステップS82において、CPU21は、通信部29を制御し、ステップS81で取得したURL、すなわちライセンスサーバ4にアクセスする。
このアクセスに応じて、ライセンスサーバ4は、クライアント1に対して、購入する利用権(コンテンツを使用するのに必要な利用権)を指定する利用権指定情報、ユーザID、およびパスワードの入力を要求してくる(後述する図23のステップS102)。CPU21は、この要求を出力部27の表示部に表示させる。ユーザは、この表示に基づいて、入力部26を操作し、利用権指定情報、ユーザID、およびパスワードを入力する。なお、このユーザIDとパスワードは、クライアント1のユーザが、インターネット2を介してライセンスサーバ4にアクセスし、予め取得しておいたものである。
CPU21は、ステップS83において、入力部26から入力された利用権指定情報を取り込み、ステップS84において、ユーザID、パスワードを取り込む。CPU21は、ステップS85において、通信部29を制御し、入力されたユーザIDとパスワード、利用権指定情報、およびサービスデータに含まれるリーフIDを含む利用権要求をライセンスサーバ4に送信させる。
ライセンスサーバ4は、図23を参照して後述するように、ユーザIDとパスワード、並びに利用権指定情報に基づいて生成した利用権を送信してくる(ステップS111)か、または、条件が満たされない場合には、利用権を送信してこない(ステップS114)。
ステップS86において、CPU21は、ライセンスサーバ4から利用権が送信されてきたか否かを判定し、利用権が送信されてきたと判定した場合、ステップS87に進み、受信した利用権を記憶部28に記憶させる。
ステップS86において、利用権が送信されてこないと判定した場合、CPU21は、ステップS88に進み、コンテンツの再生処理を禁止するなどのエラー処理を実行する。
なお、図22に示される利用権取得処理は、各ユーザが、コンテンツを取得する前に予め行っておくようにすることも可能である。
次に、図23のフローチャートを参照して、図22のクライアント1の利用権取得処理に対応して実行される、ライセンスサーバ4の利用権提供処理について説明する。
ステップS101において、ライセンスサーバ4のCPU21は、クライアント1よりアクセスを受けるまで待機し、アクセスを受けたとき、ステップS102に進み、アクセスしてきたクライアント1に対して、各利用権に関する情報を含む利用権のリストを送信するとともに、ユーザIDとパスワード、並びに、利用権指定情報の送信を要求する。クライアント1から、ユーザIDとパスワード、リーフID並びに利用権指定情報(利用権IDであってもよい)が送信されてきたとき(図22のステップS85の処理)、ライセンスサーバ4のCPU21は、通信部29を介してこれを取り込む。
ライセンスサーバ4のCPU21は、ステップS103において、通信部29から課金サーバ5にアクセスし、ユーザIDとパスワードに対応するユーザの与信処理を要求する。課金サーバ5は、インターネット2を介してライセンスサーバ4から与信処理の要求を受けると、そのユーザIDとパスワードに対応するユーザの過去の支払い履歴などを調査し、そのユーザが、過去に利用権の対価の不払いの実績があるか否かなどを調べ、そのような実績がない場合には、利用権の付与を許容する与信結果を送信し、不払いの実績などがある場合には、利用権付与の不許可の与信結果を送信する。なお、クライアント1のユーザは、課金サーバ5に対して、自分自身のユーザID、パスワード、課金先の情報などを予め登録している。
ステップS104において、ライセンスサーバ4のCPU21は、課金サーバ5からの与信結果が、利用権を付与することを許容するものであるか否かを判定し、利用権の付与が許容されている場合には、ステップS105に進み、ステップS102の処理で取り込まれた利用権指定情報に対応する利用権を、記憶部28に記憶されている利用権の中から取り出す。記憶部28に記憶されている利用権には、利用権ID、バージョン、作成日時、有効期限等の情報が記述されている。
ステップS106において、CPU21は、その利用権に、クライアント1から通知されてきたリーフIDを付加する。また、ステップS107において、CPU21は、ステップS105で選択された利用権に対応づけられている使用条件を選択する。なお、ステップS102の処理で、ユーザから使用条件が指定された場合には、その使用条件が、予め用意されている使用条件に付加される。CPU21は、選択した使用条件を利用権に付加する。使用条件は利用権に予め付加されていてもよい。
ステップS108において、CPU21は、ライセンスサーバ4の個別鍵により利用権に署名する。
CPU21は、ステップS109において、コンテンツサーバ3から通知されてきたサブキーKsubを、クライアント1の個別鍵Kpri(図14)に対応するライセンスサーバ4の公開鍵Kpubを用いて暗号化し、E(Kpub,Ksub)を取得する。CPU21は、ステップS110において、ステップS109で取得したE(Kpub,Ksub)を、ステップS105で選択した利用権に付加する。
図24は、以上のような処理により生成される利用権の例を示す図である。
バージョンは、メジャーバージョンおよびマイナーバージョンをドットで区切って、利用権のバージョンを記述する情報である。プロファィルは、10進の整数値から記述され、利用権の記述方法に対する制限を規定する情報である。利用権IDは、16進定数で記述される、利用権を識別するための識別情報である。作成日時は、利用権が作成された日時を示す。有効期限は、利用権の有効期限を示す。9999年23時59分59秒である有効期限は、有効期限に制限がないことを示す。使用条件には、その利用権に基づいて、コンテンツを使用することが可能な使用期限、その利用権に基づいて、コンテンツを再生することが可能な再生期限、コンテンツの最大再生回数、その利用権に基づいて、コンテンツをコピーすることが可能な回数(許されるコピー回数)、最大チェックアウト回数、その利用権に基づいて、コンテンツをCD-Rに記録することができるか否か、PD(Portable Device)にコピーすることが可能な回数、利用権の移動の可否、使用ログをとる義務の有無等を示す情報が含まれる。使用条件の電子署名は、使用条件に対応する電子署名である。
定数は、使用条件または使用状態で参照される定数である。リーフIDは、クライアントを識別するための識別情報である。電子署名は、利用権全体に対応する、電子署名である。証明書は、ライセンスサーバ4の公開鍵を含む証明書である。
また、クライアント1の記憶部28には、利用権の使用条件とあわせて、コンテンツや利用権の状態を表す情報である使用状態(コンテンツ条件)が記憶される。使用状態には、対応する利用権に基づいてコンテンツを再生した回数、コンテンツをコピーした回数、コンテンツをチェックアウトした回数、コンテンツを初めて再生した日時、コンテンツをCD-Rに記録した回数、その他コンテンツあるいは利用権に関する履歴情報等を示す情報が含まれる。コンテンツの再生の条件の判定は、利用権に含まれる使用条件と、記憶部28に利用権と共に記憶されている使用状態とを基に行われる。例えば、使用状態に記憶されているコンテンツを再生した回数が、使用条件に含まれるコンテンツ最大再生回数より少ない場合には、再生の条件が満たされていると判定される。
なお、利用権には、ステップS109の処理により生成されたE(Kpub,Ksub)が含まれている。
図23の説明に戻り、ステップS111において、CPU21は、以上のようにして生成した利用権を、通信部29からクライアント1に送信させる。
ステップS112において、ライセンスサーバ4のCPU21は、ステップS111で送信した利用権の内容を、ステップS102の処理で取り込んだユーザIDとパスワードに対応させて、記憶部28に記憶させる。また、ステップS113において、CPU21は、課金処理を実行する。
具体的には、CPU21は、通信部29から課金サーバ5に、ユーザIDとパスワードに対応するユーザに対する課金処理を要求する。課金サーバ5は、この課金の要求に基づいて、そのユーザに対する課金処理を実行する。上述したように、この課金処理に対して、ユーザが支払いを行わなかったような場合には、以後、そのユーザは、利用権の付与を要求したとしても、利用権を受けることができないことになる。
すなわち、この場合には、課金サーバ5から利用権の付与を不許可とする与信結果が送信されてくるので、ステップS104からステップS114に進み、CPU21は、クライアント1に対して、利用権を付与することができない旨のメッセージを出力するなどのエラー処理を実行する。
次に、図25のフローチャートを参照して、図21のステップS78において行われる、コンテンツを再生するクライアント1の処理の詳細について説明する。
ステップS121において、クライアント1のCPU21は、サービスデータにより予め提供されているDNKにより、コンテンツのEKB(図17)に含まれる鍵情報を復号し、ルートキーKrootを取得する。
ステップS122において、CPU21は、ステップS121で取得したルートキーKrootを用いてE(Kroot,Kekb)を復号し、EKBキーKekbを取得する。
CPU21は、ステップS123において、利用権に含まれているE(Kpub,Ksub)を、ライセンスサーバ4の公開鍵Kpubに対応する個別鍵Kpri(サービスデータにより予め取得されている個別鍵)を用いて復号し、サブキーKsubを取得する。
CPU21は、ステップS124において、ステップS122で取得したEKBキーKekbと、ステップS123で取得したサブキーKsubに基づいて、コンテンツキーKcを生成する。具体的には、CPU21は、EKBキーKekbとサブキーKsubの排他的論理和演算を行い、その演算結果をコンテンツキーKcとして取得する。
ステップS125において、CPU21は、ステップS124で取得したコンテンツキーKcを利用して、E(Kc,Cont)を復号し、コンテンツを取得する。その後、取得されたコンテンツは、図21のステップS79において、CPU21の制御により再生され、出力部27から出力される。
図26は、以上のようにしてクライアント1により行われるコンテンツの再生処理を模式的に表す図である。図26において、S121乃至S125は、図25のステップS121乃至S125のそれぞれの処理に対応する。また、図26において、コンテンツは、主な情報のみが示されている。
図26に示されるように、クライアント1においては、コンテンツサーバ3から取得されたコンテンツに配置されているEKBが、クライアント1に対して予め与えられているDNKにより処理され、ルートキーKrootが取得される(ステップS121)。
また、EKBの右隣に配置されているE(Kroot,Kekb)が、ルートキーKrootにより復号され、EKBキーKekbが取得される(ステップS122)。
一方、ライセンスサーバ4から提供された利用権に含まれるE(Kpub,Ksub)が、サービスデータによりクライアントに予め与えられている個別鍵Kpriにより復号され、サブキーKsubが取得される(ステップS123)。
そして、サブキーKsubとEKBキーKekbに基づく排他的論理和演算が行われ、その出力としてのコンテンツキーKcが生成され(ステップS124)、生成されたコンテンツキーKcにより、コンテンツの右端に配置されているE(Kc,Cont)が復号され、コンテンツ(Content)が取得される(ステップS125)。
以上のように、DNKに基づいてEKBからルートキーKrootを取得するオフラインの認証、および、公開鍵Kpubにより暗号化されたサブキーKsubを個別鍵Kpriにより復号するオフラインの認証を組み合わせることにより、第1に、EKBの内容が不正に読み取られた場合であっても、コンテンツの利用には個別鍵Kpriが必要となるため、不正なコンテンツの利用を防止することができる。
また、第2に、所定の期間、クライアント1のユーザがライセンスサーバ4にアクセスしない場合であっても、EKBの情報を変更し、サービスに属する他のクライアントに配布することにより、不正な行為を行うクライアント1の無効化(ルートキーKrootを取得できなくすること)が可能となる。
さらに、第3に、コンテンツが音楽コンテンツである場合に、試聴用のコンテンツをDNKのみで暗号化し、購入用のコンテンツを、EKBキーKekbとサブキーKsubにより取得されるコンテンツキーKcにより暗号化することにより、コンテンツのみをダウンロードして試聴用コンテンツを利用し、購入用のコンテンツを実際に購入するときにのみ、ユーザにより利用権を取得させるなどのように、サービスに幅を持たせることができる。
また、上記実施例では、コンテンツを利用するために必要な利用権を特定するためにコンテンツの属性と利用権のコンテンツ条件を用いたが、これに限らない。例えば、コンテンツに、該コンテンツを利用するために必要な利用権の利用権IDを含むようにしても良く、この場合、コンテンツを指定すればそれを利用するために必要な利用権は一意に決まるため、両者のマッチングを決定する処理を行う必要はない。
1−1,1−2 クライアント, 2 インターネット, 3 コンテンツサーバ, 4 ライセンスサーバ, 5 課金サーバ, 20 タイマ, 21 CPU, 24 暗号化復号部, 25 コーデック部, 26 入力部, 27 出力部, 28 記憶部, 29 通信部