図1は、本発明を適用したコンテンツ提供システムの構成を示している。インターネット2には、クライアント1−1,1−2(以下、これらのクライアントを個々に区別する必要がない場合、単にクライアント1と称する)が接続されている。この例においては、クライアントが2台のみ示されているが、インターネット2には、任意の台数のクライアントが接続される。
また、インターネット2には、クライアント1に対してコンテンツを提供するコンテンツサーバ3、コンテンツサーバ3が提供するコンテンツを利用するのに必要な利用権をクライアント1に対して付与するライセンスサーバ4、およびクライアント1が利用権を受け取った場合に、そのクライアント1に対して課金処理を行う課金サーバ5が接続されている。
コンテンツサーバ3とライセンスサーバ4には、コンテンツホルダサーバ6がさらに接続されている。コンテンツホルダサーバ6は、コンテンツサーバ3に対してコンテンツを提供するとともに、ライセンスサーバ4に対してコンテンツに関するプロダクト情報を提供する。
これらのコンテンツサーバ3、ライセンスサーバ4、課金サーバ5、およびコンテンツホルダ6も、任意の台数設けられ、必要に応じてインターネット2に接続される。
図2はライセンスサーバ4の構成を表している。
図2において、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、LCDなどよりなるディスプレイ、並びにスピーカなどよりなる出力部27、ハードディスクなどより構成される記憶部28、モデム、ターミナルアダプタなどより構成される通信部29が接続されている。通信部29は、インターネット2を介しての通信処理を行う。通信部29はまた、他のクライアントとの間で、アナログ信号またはデジタル信号の通信処理を行う。
入出力インタフェース32にはまた、必要に応じてドライブ30が接続され、磁気ディスク41、光ディスク42、光磁気ディスク43、或いは半導体メモリ44などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部28にインストールされる。
なお、図示は省略するが、クライアント1、コンテンツサーバ3、課金サーバ5も、図2に示したライセンスサーバ4と基本的に同様の構成を有するコンピュータにより構成される。そこで、以下の説明においては、図2の構成は、クライアント1、コンテンツサーバ3、課金サーバ5などの構成としても引用される。
なお、図示は省略するが、PD(Portable Device)も、図2に示したライセンスサーバ4と基本的に同様の構成を有するコンピュータにより構成される。
次に、図3のフローチャートを参照して、クライアント1がコンテンツサーバ3からコンテンツの提供を受ける処理について説明する。
ユーザが、入力部26を操作することでコンテンツサーバ3に対するアクセスを指令すると、CPU21は、ステップS1において、通信部29を制御し、インターネット2を介してコンテンツサーバ3にアクセスさせる。ステップS2において、ユーザが、入力部26を操作して、提供を受けるコンテンツを指定すると、CPU21は、この指定情報を受け取り、通信部29から、インターネット2を介してコンテンツサーバ3に、指定されたコンテンツのコンテンツIDを通知する。図4のフローチャートを参照して後述するように、この通知を受けたコンテンツサーバ3は、暗号化されたコンテンツデータを含むコンテンツを送信してくるので、ステップS3において、CPU21は、通信部29を介して、このコンテンツデータを受信すると、ステップS4において、その暗号化されているコンテンツデータを記憶部28を構成するハードディスクに供給し、記憶させる。
次に、図4のフローチャートを参照して、クライアント1の以上の処理に対応するコンテンツサーバ3のコンテンツ提供処理について説明する。なお、以下の説明において、図2のライセンスサーバ4の構成は、コンテンツサーバ3の構成としても引用される。
ステップS21において、コンテンツサーバ3のCPU21は、インターネット2から通信部29を介してクライアント1よりアクセスを受けるまで待機し、アクセスを受けたと判定したとき、ステップS22に進み、クライアント1から送信されてきたコンテンツIDを取り込む。このコンテンツIDは、クライアント1が、図3のステップS2において通知してきた情報である。
ステップS23において、コンテンツサーバ3のCPU21は、記憶部28に記憶されているコンテンツの中から、ステップS22の処理で取り込まれたコンテンツIDで指定されたコンテンツデータを読み出す。CPU21は、ステップS24において、記憶部28から読み出されたコンテンツデータを、暗号化復号部24に供給し、コンテンツキーKcを用いて暗号化させる。
記憶部28に記憶されているコンテンツデータは、コーデック部25により、既にATRAC3方式によりエンコードされているので、このエンコードされているコンテンツデータが暗号化されることになる。
なお、もちろん、記憶部28に予め暗号化した状態でコンテンツデータを記憶させることができる。この場合には、ステップS24の処理は省略することが可能である。
次に、ステップS25において、コンテンツサーバ3のCPU21は、暗号化したコンテンツデータを伝送するフォーマットを構成するヘッダに、暗号化されているコンテンツを復号するのに必要なキー情報(図5を参照して後述するEKBとKEKBC(Kc))を付加する。そして、ステップS26において、コンテンツサーバ3のCPU21は、ステップS24の処理で暗号化したコンテンツと、ステップS25の処理でキー情報を付加したヘッダとをフォーマット化したデータを、通信部29から、インターネット2を介して、アクセスしてきたクライアント1に送信する。
図5は、このようにして、コンテンツサーバ3からクライアント1にコンテンツが供給される場合のフォーマットの構成を表している。同図に示されるように、このフォーマットは、ヘッダ(Header)とデータ(Data)とにより構成される。
ヘッダには、コンテンツ情報(Content information)、URL(Uniform Resource Locator)、イネーブリングキーブロック(有効化キーブロック)(EKB(Enabling Key Block))、EKBから生成されたキーKEKBCを用いて暗号化されたコンテンツキーKcとしてのデータKEKBC(Kc)、コンテンツの属性(Attributes)、および署名(Signatures)が配置されている。なお、EKBについては、図13および図14を参照して後述する。
コンテンツ情報には、データとしてフォーマット化されているコンテンツデータを識別するための識別情報としてのコンテンツID(CID)、そのコンテンツのコーデックの方式などの情報が含まれている。
URLは、そのコンテンツを利用するために必要な利用権を取得するときアクセスするアドレス情報であり、図1のシステムの場合、具体的には、利用権を受けるために必要なライセンスサーバ4のアドレスである。
コンテンツの属性は、コンテンツの関する情報であり、コンテンツの属性には、コンテンツ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バイトの暗号化は、前段の8バイトの暗号化の結果を利用して行われるCBC(Cipher Block Chaining)モードで行われる。
CBCモードの場合、最初の8バイトのコンテンツデータを暗号化するとき、その前段の8バイトの暗号化結果が存在しないため、最初の8バイトのコンテンツデータを暗号化するときは、イニシャルベクトルIVを初期値として暗号化が行われる。
このCBCモードによる暗号化を行うことで、1つの暗号化ブロックが解読されたとしても、その影響が、他の暗号化ブロックにおよぶことが抑制される。
また、暗号方式についてはこれに限らない。
以上のようにして、クライアント1は、コンテンツサーバ3からコンテンツを無料で、自由に取得することができる。従って、コンテンツそのものは、大量に、配布することが可能となる。
しかしながら、各クライアント1は、取得したコンテンツを利用するとき、そのコンテンツの利用が許可されていることを示す利用権を保持している必要がある。そこで、図6を参照して、クライアント1がコンテンツを再生する場合の処理について説明する。
ステップS41において、クライアント1のCPU21は、ユーザが入力部26を操作することで指示したコンテンツの識別情報(CID)を取得する。この識別情報は、例えば、コンテンツのタイトルや、記憶されている各コンテンツ毎に付与されている番号などにより構成される。
そして、CPU21は、コンテンツが指示されると、そのコンテンツの属性(Attributes)を読み取る。この属性(Attributes)は、図5に示されるように、コンテンツのヘッダに記述されているものである。
次に、ステップS42に進み、CPU21は、ステップS41で読み取られた属性(Attributes)が各利用権に含まれているコンテンツ条件を満たすような利用権が、クライアント1により既に取得され、記憶部28に記憶されているか否かを判定する。まだ、利用権が取得されていない場合には、ステップS43に進み、CPU21は、利用権取得処理を実行する。この利用権取得処理の詳細は、図7のフローチャートを参照して後述する。
ステップS42において、利用権が既に取得されていると判定された場合、または、ステップS43において、利用権取得処理が実行された結果、利用権が取得された場合、ステップS44に進み、CPU21は、取得されている利用権は有効期限内のものであるか否かを判定する。利用権が有効期限内のものであるか否かは、利用権の内容として規定されている期限(後述する図8参照)と、タイマ20により計時されている現在日時と比較することで判断される。利用権の有効期限が既に満了していると判定された場合、CPU21は、ステップS45に進み、利用権更新処理を実行する。
ステップS44において、利用権はまだ有効期限内であると判定された場合、または、ステップS45において、利用権が更新された場合、ステップS46に進み、CPU21は記憶部28に記憶されている、利用権に含まれる使用条件及び使用状態(後述する)を読み出し、再生の条件を満たしているかどうかを判定する。
ステップS46において、利用権に含まれる使用条件、及び使用状態に基づき、再生が許可されると判断された場合には、ステップS47に進み、CPU21は、暗号化されているコンテンツデータを記憶部28から読み出し、RAM23に格納させる。そして、ステップS48において、CPU21は、RAM23に記憶された暗号化コンテンツデータを、図5のデータに配置されている暗号化ブロック単位で、暗号化復号部24に供給し、コンテンツキーKcを用いて復号させる。
コンテンツキーKcを得る方法の具体例は、図13および図14を参照して後述するが、デバイスノードキー(DNK)を用いて、EKB(図5)に含まれるキーKEKBCを得ることができ、そのキーKEKBCを用いて、データKEKBC(Kc)(図5)から、コンテンツキーKcを得ることができる。
CPU21は、さらに、ステップS49において、暗号化復号部24により復号されたコンテンツデータをコーデック部25に供給し、デコードさせる。そして、コーデック部25によりデコードされたデータを、CPU21は、入出力インタフェース32から出力部27に供給し、D/A変換させ、スピーカから出力させる。
ステップS46において、利用権に含まれる使用条件、及び使用状態に基づき、再生が許可されないと判断された場合、コンテンツを出力しないで、処理は終了する。
次に、図7のフローチャートを参照して、図6のステップS43で行われる利用権取得処理の詳細について説明する。
クライアント1は、事前にライセンスサーバに登録することにより、リーフID、DNK(Device Node Key)、クライアント1の秘密鍵・公開鍵のペア、ライセンスサーバの公開鍵、及び各公開鍵の証明書を含むサービスデータを取得しておく。
リーフIDは、クライアント毎に割り当てられた識別情報を表し、DNKは、コンテンツに含まれるEKB(有効化キーブロック)によって暗号化されているコンテンツキーKcを復号するのに必要なデバイスノードキーである(図10を参照して後述する)。
最初にステップS61において、CPU21は、コンテンツのヘッダに記述されているURLを取得する。上述したように、このURLは、そのコンテンツを利用するために必要な利用権を取得するときアクセスすべきアドレスである。そこで、ステップS62において、CPU21は、ステップS61で取得したURLにアクセスする。具体的には、通信部29によりインターネット2を介してライセンスサーバ4にアクセスが行われる。このとき、ライセンスサーバ4は、クライアント1に対して、利用権のリストを送信するとともに、購入する利用権(コンテンツを使用するのに必要な利用権)を指定する利用権指定情報、並びにユーザIDとパスワードの入力を要求してくる(後述する図9のステップS102)。CPU21は、この要求を出力部27の表示部に表示させる。ユーザは、この表示に基づいて、入力部26を操作して、利用権指定情報、ユーザID、およびパスワードを入力する。なお、このユーザIDとパスワードは、クライアント1のユーザが、インターネット2を介してライセンスサーバ4にアクセスし、事前に取得しておいたものである。
CPU21は、ステップS63,S64において、入力部26から入力された利用権指定情報を取り込むとともに、ユーザIDとパスワードを取り込む。CPU21は、ステップS65において、通信部29を制御し、入力されたユーザIDとパスワードを、利用権指定情報及びサービスデータ(後述する)に含まれるリーフIDを含む利用権要求をインターネット2を介してライセンスサーバ4に送信させる。
ライセンスサーバ4は、図9を参照して後述するように、ユーザIDとパスワード、並びに利用権指定情報に基づいて利用権を送信してくる(ステップS109)か、または、条件が満たされない場合には、利用権を送信してこない(ステップS112)。
ステップS66において、CPU21は、ライセンスサーバ4から利用権が送信されてきたか否かを判定し、利用権が送信されてきた場合には、ステップS67に進み、その利用権を記憶部28に供給し、記憶させる。
ステップS66において、利用権が送信されて来ないと判定した場合、CPU21は、ステップS68に進み、エラー処理を実行する。具体的には、CPU21は、コンテンツを利用するための利用権が得られないので、コンテンツの再生処理を禁止する。
以上のようにして、各クライアント1は、コンテンツを利用するために必要な利用権を取得して、初めて、そのコンテンツを使用することが可能となる。
なお、図7の利用権取得処理は、各ユーザがコンテンツを取得する前に、予め行っておくようにすることも可能である。
クライアント1に提供される利用権は、例えば、図8に示されるように、使用条件、リーフIDおよび電子署名などを含んでいる。
バージョンは、メジャーバージョンおよびマイナーバージョンをドットで区切って、利用権のバージョンを記述する情報である。
プロファィルは、10進の整数値から記述され、利用権の記述方法に対する制限を規定する情報である。
利用権IDは、16進定数で記述される、利用権を識別するための識別情報である。
作成日時は、利用権が作成された日時を示す。
有効期限は、利用権の有効期限を示す。9999年23時59分59秒である有効期限は、有効期限に制限がないことを示す。
使用条件には、その利用権に基づいて、コンテンツを使用することが可能な使用期限、その利用権に基づいて、コンテンツを再生することが可能な再生期限、コンテンツの最大再生回数、その利用権に基づいて、コンテンツをコピーすることが可能な回数(許されるコピー回数)、最大チェックアウト回数、その利用権に基づいて、コンテンツをCD-Rに記録することができるか否か、PD(Portable Device)にコピーすることが可能な回数、利用権の移動の可否、使用ログをとる義務の有無等を示す情報が含まれる。
使用条件の電子署名は、使用条件に対応する、電子署名である。
定数は、使用条件または使用状態で参照される定数である。
リーフIDは、クライアントを識別するための識別情報である。
電子署名は、利用権全体に対応する、電子署名である。
証明書は、ライセンスサーバの公開鍵を含む証明書である。
また、クライアント1の記憶部28には、利用権の使用条件とあわせて、コンテンツや利用権の状態を表す情報である使用状態が記憶される。使用状態には、対応する利用権に基づいてコンテンツを再生した回数、コンテンツをコピーした回数、コンテンツをチェックアウトした回数、コンテンツを初めて再生した日時、コンテンツをCD-Rに記録した回数、その他コンテンツあるいは利用権に関する履歴情報等を示す情報が含まれる。
図6のステップS46の再生の条件の判定は、利用権に含まれる使用条件と、記憶部28に利用権と共に記憶されている使用状態とを基に行われる。例えば、使用状態に記憶されているコンテンツを再生した回数が、使用条件に含まれるコンテンツ最大再生回数より少ない場合には、再生の条件が満たされていると判定される。
次に、図9のフローチャートを参照して、図7のクライアント1の利用権取得処理に対応して実行されるライセンスサーバ4の利用権提供処理について説明する。
ステップS101において、ライセンスサーバ4のCPU21は、クライアント1よりアクセスを受けるまで待機し、アクセスを受けたとき、ステップS102に進み、アクセスしてきたクライアント1に対して、各利用権に関する情報を含む利用権のリストを送信するとともに、ユーザIDとパスワード、並びに、利用権指定情報の送信を要求する。上述したようにして、クライアント1から、図7のステップS65の処理で、ユーザIDとパスワード、リーフID並びに利用権指定情報(利用権IDであってもよい)が送信されてきたとき、ライセンスサーバ4のCPU21は、通信部29を介してこれを受信し、取り込む処理を実行する。
そして、ライセンスサーバ4のCPU21は、ステップS103において、通信部29から課金サーバ5にアクセスし、ユーザIDとパスワードに対応するユーザの与信処理を要求する。課金サーバ5は、インターネット2を介してライセンスサーバ4から与信処理の要求を受けると、そのユーザIDとパスワードに対応するユーザの過去の支払い履歴などを調査し、そのユーザが、過去に利用権の対価の不払いの実績があるか否かなどを調べ、そのような実績がない場合には、利用権の付与を許容する与信結果を送信し、不払いの実績などがある場合には、利用権付与の不許可の与信結果を送信する。
ステップS104において、ライセンスサーバ4のCPU21は、課金サーバ5からの与信結果が、利用権を付与することを許容する与信結果であるか否かを判定し、利用権の付与が許容されている場合には、ステップS105に進み、ステップS102の処理で取り込まれた利用権指定情報に対応する利用権を、記憶部28に記憶されている利用権の中から取り出す。記憶部28に記憶されている利用権は、あらかじめ利用権ID、バージョン、作成日時、有効期限等の情報が記述されている。ステップS106において、CPU21は、その利用権に受信したリーフIDを付加する。さらに、ステップS107において、CPU21は、ステップS105で選択された利用権に対応づけられている使用条件を選択する。あるいはまた、ステップS102の処理で、ユーザから使用条件が指定された場合には、その使用条件が必要に応じて、予め用意されている使用条件に付加される。CPU21は、選択された使用条件を利用権に付加する。使用条件は利用権にあらかじめ付加されていてもよい。
ステップS108において、CPU21はライセンスサーバの秘密鍵により利用権に署名し、ライセンスサーバの公開鍵を含む証明書を利用権に添付し、これにより、図8に示されるような構成の利用権が生成される。
次に、ステップS109に進み、ライセンスサーバ4のCPU21は、その利用権(図8に示される構成を有する)を、通信部29からインターネット2を介してクライアント1に送信させる。
ステップS110においてライセンスサーバ4のCPU21は、ステップS109の処理で、いま送信した利用権(使用条件、リーフIDを含む)を、ステップS102の処理で取り込まれたユーザIDとパスワードに対応して、記憶部28に記憶させる。さらに、ステップS111において、CPU21は、課金処理を実行する。具体的には、CPU21は、通信部29から課金サーバ5に、そのユーザIDとパスワードに対応するユーザに対する課金処理を要求する。課金サーバ5は、この課金の要求に基づいて、そのユーザに対する課金処理を実行する。上述したように、この課金処理に対して、そのユーザが支払いを行わなかったような場合には、以後、そのユーザは、利用権の付与を要求したとしても、利用権を受けることができないことになる。
すなわち、この場合には、課金サーバ5から利用権の付与を不許可とする与信結果が送信されてくるので、ステップS104からステップS112に進み、CPU21は、エラー処理を実行する。具体的には、ライセンスサーバ4のCPU21は、通信部29を制御してアクセスしてきたクライアント1に対して、利用権を付与することができない旨のメッセージを送信し、処理を終了させる。
この場合、上述したように、そのクライアント1は利用権を受けることができないので、そのコンテンツを利用すること(暗号化されたコンテンツデータを復号し、再生すること)ができないことになる。
本発明においては、図10に示されるように、ブロードキャストインクリプション(Broadcast Encryption)方式の原理に基づいて、デバイスとキーが管理される。キーは、階層ツリー構造とされ、最下段のリーフ(leaf)が個々のデバイス固有のキーに対応する。本発明のシステムに用いられる階層ツリー構造鍵管理については特許公開2001-352321号公報に記載されている。図10の例の場合、番号0から番号15までの16個のデバイスに対応するキーが生成される。
各キーは、図中丸印で示されるツリー構造の各ノードに対応して規定される。この例では、最上段のルートノードに対応してルートキーKRが、2段目のノードに対応してキーK0,K1が、3段目のノードに対応してキーK00乃至K11が、第4段目のノードに対応してキーK000乃至キーK111が、それぞれ対応されている。そして、最下段のノードとしてのリーフ(デバイスノード)に、キーK0000乃至K1111が、それぞれ対応されている。
階層構造とされているため、例えば、キーK0010とキー0011の上位のキーは、K001とされ、キーK000とキーK001の上位のキーは、K00とされている。以下同様に、キーK00とキーK01の上位のキーは、K0とされ、キーK0とキーK1の上位のキーは、KRとされている。
コンテンツを利用するキーは、最下段のデバイスノード(リーフ)から、最上段のルートノードまでの1つのパスの各ノードに対応するキーで管理される。例えば、番号3のリーフに対応するデバイスにおいて、コンテンツを利用するためのキーは、キーK0011,K001,K00,K0,KRを含むパスの各キーで管理される。
本発明のシステムにおいては、図11に示されるように、図10の原理に基づいて構成されるキーシステムで、デバイスのキーとコンテンツのキーの管理が行われる。図11の例では、8+24+32段のノードがツリー構造とされ、ルートノードから下位の8段までの各ノードにカテゴリが対応される。ここにおけるカテゴリとは、例えばメモリースティックなどの半導体メモリを使用する機器のカテゴリ、デジタル放送を受信する機器のカテゴリといったカテゴリを意味する。そして、このカテゴリノードのうちの1つのノードに、ライセンスを管理するシステムとして本システム(Tシステムと称する)が対応する。
すなわち、このTシステムのノードよりさらに下の階層の24段のノードに対応するキーにより、サービスプロバイダ、あるいはサービスプロバイダが提供するサービスが対応される。この例の場合、これにより、224(約16メガ)のサービスプロバイダあるいはサービスを規定することができる。さらに、最も下側の32段の階層により、232(約4ギガ)のユーザ(あるいはクライアント1)を規定することができる。最下段の32段のノードからTシステムのノードまでのパス上の各ノードに対応するキーが、DNK(Device Node Key)を構成し、最下段のリーフに対応するIDがリーフIDとされる。
コンテンツを暗号化したコンテンツキーは更新されたルートキーKR'によって暗号化され、上位の階層の更新ノードキーは、その直近の下位の階層の更新ノードキーを用いて暗号化され、EKB(図13および図14を参照して後述する)内に配置される。EKBにおける末端から1つ上の段の更新ノードキーはEKBの末端のノードキーあるいはリーフキーによって暗号化され、EKB内に配置される。クライアント1は、サービスデータに記述されているDNKのいずれかのキーを用いて、コンテンツデータとともに配布されるEKB(図13および図14)内に記述されている直近の上位の階層の更新ノードキーを復号し、復号して得たキーを用いて、EKB内に記述されているさらにその上の階層の更新ノードキーを復号する。以上の処理を順次行うことで、クライアント1は、更新ルートキーKR'を得ることができる。
図12に階層ツリー構造のカテゴリの分類の具体的な例を示す。図12において、階層ツリー構造の最上段には、ルートキーKR2301が設定され、以下の中間段にはノードキー2302が設定され、最下段には、リーフキー2303が設定される。各デバイスは個々のリーフキーと、リーフキーからルートキーに至る一連のノードキー、ルートキーからなるデバイスノードキー(DNK)を保有する。
最上段から第M段目(図11の例では、M=8)の所定のノードがカテゴリノード2304として設定される。すなわち第M段目のノードの各々が特定カテゴリのデバイス設定ノードとされる。第M段の1つのノードを頂点としてM+1段以下のノード、リーフは、そのカテゴリに含まれるデバイスに関するノードおよびリーフとされる。
例えば図12の第M段目の1つのノード2305にはカテゴリ[メモリースティック(商標)]が設定され、このノード以下に連なるノード、リーフはメモリステッイクを使用した様々なデバイスを含むカテゴリ専用のノードまたはリーフとして設定される。すなわち、ノード2305以下が、メモリースティックのカテゴリに定義されるデバイスの関連ノード、およびリーフの集合として定義される。
さらに、M段から数段分下位の段をサブカテゴリノード2306として設定することができる。図12の例では、カテゴリ[メモリースティック]ノード2305の2段下のノードに、メモリースティックを使用したデバイスのカテゴリに含まれるサブカテゴリノードとして、[再生専用器]のノード2306が設定されている。さらに、サブカテゴリノードである再生専用器のノード2306以下に、再生専用器のカテゴリに含まれる音楽再生機能付き電話のノード2307が設定され、さらにその下位に、音楽再生機能付き電話のカテゴリに含まれる[PHS]ノード2308と、[携帯電話]ノード2309が設定されている。
さらに、カテゴリ、サブカテゴリは、デバイスの種類のみならず、例えばあるメーカー、コンテンツプロバイダ、決済機関等が独自に管理するノード、すなわち処理単位、管轄単位、あるいは提供サービス単位等、任意の単位(これらを総称して以下、エンティティと呼ぶ)で設定することが可能である。例えば1つのカテゴリノードをゲーム機器メーカーの販売するゲーム機器XYZ専用の頂点ノードとして設定すれば、メーカーの販売するゲーム機器XYZに、その頂点ノード以下の下段のノードキー、リーフキーを格納して販売することが可能となり、その後、暗号化コンテンツの配信、あるいは各種キーの配信、更新処理を、その頂点ノードキー以下のノードキー、リーフキーによって構成される有効化キーブロック(EKB)を生成して配信し、頂点ノード以下のデバイスに対してのみ利用可能なデータが配信可能となる。
このように、1つのノードを頂点として、以下のノードをその頂点ノードに定義されたカテゴリ、あるいはサブカテゴリの関連ノードとして設定する構成とすることにより、カテゴリ段、あるいはサブカテゴリ段の1つの頂点ノードを管理するメーカー、コンテンツプロバイダ等がそのノードを頂点とする有効化キーブロック(EKB)を独自に生成して、頂点ノード以下に属するデバイスに配信する構成が可能となり、頂点ノードに属さない他のカテゴリのノードに属するデバイスには全く影響を及ぼさずにキー更新を実行することができる。
また、ある時点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の更新キーであることを示す。
更新キーの配布処理ついて説明する。キーの更新は、例えば、図13に示す有効化キーブロック(EKB:Enabling Key Block)と呼ばれるブロックデータによって構成されるテーブルを、ネットワークを介して、あるいは記録媒体に格納してデバイス0,1,2に供給することによって実行される。なお、有効化キーブロック(EKB)は、図10に示されるようなツリー構造を構成する各リーフ(最下段のノード)に対応するデバイスに、新たに更新されたキーを配布するための暗号化キーによって構成される。有効化キーブロック(EKB)は、キー更新ブロック(KRB:Key Renewal Block)と呼ばれることもある。
図13に示す有効化キーブロック(EKB)は、ノードキーの更新の必要なデバイスのみが更新可能なデータ構成を持つブロックデータとして構成される。図13の例は、図10に示すツリー構造中のデバイス0,1,2において、世代tの更新ノードキーを配布することを目的として形成されたブロックデータである。図10から明らかなように、デバイス0,デバイス1は、更新ノードキーとしてK(t)00、K(t)0、K(t)Rが必要であり、デバイス2は、更新ノードキーとしてK(t)001、K(t)00、K(t)0、K(t)Rが必要である。
図13のEKBに示されるように、EKBには複数の暗号化キーが含まれる。図13の最下段の暗号化キーは、Enc(K0010,K(t)001)である。これはデバイス2の持つリーフキーK0010によって暗号化された更新ノードキーK(t)001であり、デバイス2は、自身の持つリーフキーK0010によってこの暗号化キーを復号し、更新ノードキーK(t)001を得ることができる。また、復号により得た更新ノードキーK(t)001を用いて、図13の下から2段目の暗号化キーEnc(K(t)001,K(t)00)が復号可能となり、更新ノードキーK(t)00を得ることができる。
以下順次、図13の上から2段目の暗号化キーEnc(K(t)00,K(t)0)を復号することで、更新ノードキーK(t)0が得られ、これを用いて、図13の上から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を用いて、図13の上から3段目の暗号化キーEnc(K000,K(t)00)を復号することで更新ノードキーK(t)00を取得し、以下順次、図13の上から2段目の暗号化キーEnc(K(t)00,K(t)0)を復号することで、更新ノードキーK(t)0を得、図13の上から1段目の暗号化キーEnc(K(t)0,K(t)R)を復号することで、更新ルートキーK(t)Rを得る。このようにして、デバイス0,1,2は更新したキーK(t)Rを得ることができる。
なお、図13のインデックスは、図の右側の暗号化キーを復号するための復号キーとして使用するノードキー、リーフキーの絶対番地を示す。
図10に示すツリー構造の上位段のノードキーK(t)0,K(t)Rの更新が不要であり、ノードキーK00のみの更新処理が必要である場合には、図14の有効化キーブロック(EKB)を用いることで、更新ノードキーK(t)00をデバイス0,1,2に配布することができる。
図14に示すEKBは、例えば特定のグループにおいて共有する新たなコンテンツキーを配布する場合に利用可能である。具体例として、図10に点線で示すグループ内のデバイス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)が、図14に示されるEKBとともに配布される。この配布により、デバイス4など、その他のグループの機器が復号することができないデータとしての配布が可能となる。
すなわち、デバイス0,1,2はEKBを処理して得たキーK(t)00を用いて暗号文を復号すれば、t時点でのコンテンツキーK(t)conを得ることが可能になる。
図15に、t時点でのコンテンツキーK(t)conを得る処理例として、K(t)00を用いて新たな共通のコンテンツキーK(t)conを暗号化したデータEnc(K(t)00,K(t)con)と、図14に示すEKBとを記録媒体を介して受領したデバイス0の処理を示す。すなわちこの例は、EKBによる暗号化メッセージデータをコンテンツキーK(t)conとした例である。
図15に示すように、デバイス0は、記録媒体に格納されている世代t時点のEKBと、自分があらかじめ格納しているノードキーK000を用いて、上述したと同様のEKB処理により、ノードキーK(t)00を生成する。さらに、デバイス0は、復号した更新ノードキーK(t)00を用いて、更新コンテンツキーK(t)conを復号して、後にそれを使用するために自分だけが持つリーフキーK0000で暗号化して格納する。
図16に有効化キーブロック(EKB)のフォーマット例を示す。バージョン601は、有効化キーブロック(EKB)のバージョンを示す識別子である。なお、バージョンは、最新のEKBを識別する機能と、コンテンツとの対応関係を示す機能を持つ。デプスは、有効化キーブロック(EKB)の配布先のデバイスに対する階層ツリーの階層数を示す。データポインタ603は、有効化キーブロック(EKB)中のデータ部606の位置を示すポインタであり、タグポインタ604はタグ部607の位置、署名ポインタ605は署名608の位置を示すポインタである。
データ部606は、例えば更新するノードキーを暗号化したデータを格納する。例えば図15に示すような更新されたノードキーに関する各暗号化キー等を格納する。
タグ部607は、データ部606に格納された暗号化されたノードキー、リーフキーの位置関係を示すタグである。このタグの付与ルールを図18を用いて説明する。
図17では、データとして先に図13で説明した有効化キーブロック(EKB)を送付する例を示している。この時のデータは、図17のBで示す表に示すようになる。このときの暗号化キーに含まれるトップノードのアドレスをトップノードアドレスとする。この例の場合は、ルートキーの更新キーK(t)Rが含まれているので、トップノードアドレスはKRとなる。このとき、例えば最上段のデータEnc(K(t)0,K(t)R)は、図17のAで示す階層ツリーに示す位置P0に対応する。次の段のデータは、Enc(K(t)00,K(t)0)であり、ツリー上では前のデータの左下の位置P00に対応する。ツリー構造の所定の位置から見て、その下に、データがある場合は、タグが0、ない場合はタグが1に設定される。タグは{左(L)タグ,右(R)タグ}として設定される。表Bの最上段のデータEnc(K(t)0,K(t)R)に対応する位置POの左下の位置POOにはデータがあるので、Lタグ=0、右にはデータがないので、Rタグ=1となる。以下、すべてのデータにタグが設定され、図17のCで示すデータ列、およびタグ列が構成される。
タグは、対応するデータEnc(Kxxx,Kyyy)が、ツリー構造のどこに位置しているのかを示すために設定されるものである。データ部606に格納されるキーデータEnc(Kxxx,Kyyy)・・・は、単純に暗号化されたキーの羅列データに過ぎないが、上述したタグによってデータとして格納された暗号化キーのツリー上の位置が判別可能となる。上述したタグを用いずに、先の図15で説明した構成のように、暗号化データに対応させたノード・インデックスを用いて、例えば、
0:Enc(K(t)0,K(t)R)
00:Enc(K(t)00,K(t)0)
000:Enc(K((t)000,K(t)00)
・・・のようなデータ構成とすることも可能であるが、このようなインデックスを用いた構成とすると、冗長なデータとなりデータ量が増大し、ネットワークを介する配信等においては好ましくない。これに対し、上述したタグをキー位置を示す索引データとして用いることにより、少ないデータ量でキー位置の判別が可能となる。
図16に戻って、EKBフォーマットについてさらに説明する。署名(Signature)608は、有効化キーブロック(EKB)を発行した例えば鍵管理センタ(ライセンスサーバ4)、コンテンツロバイダ(コンテンツサーバ3)、決済機関(課金サーバ5)等が実行する電子署名である。EKBを受領したデバイスは、署名検証によって正当な有効化キーブロック(EKB)発行者が発行した有効化キーブロック(EKB)であることを確認する。
以上のようにして、ライセンスサーバ4から供給された利用権に基づいて、コンテンツサーバ3から供給されたコンテンツを利用する処理をまとめると、図18に示されるようになる。
すなわち、コンテンツサーバ3からクライアント1に対してコンテンツが提供されるとともに、ライセンスサーバ4からクライアント1にライセンスが与えられる。クライアント1をライセンスサーバ4に登録した際に供給されるサービスデータと、特定のコンテンツの利用を許可する情報である利用権との組み合わせをライセンスと呼ぶ。コンテンツは、コンテンツキーKcにより、暗号化されており(Enc(Kc,Content))、コンテンツキーKcは、更新ルートキーKR'(EKBから得られるキーであって、図5におけるキーKEKBCに対応する)で暗号化され(Enc(KR',Kc))、EKBとともに、暗号化されたコンテンツに付加されてクライアント1に提供される。
図18の例におけるEKBには、例えば、図21に示されるように、DNKで復号可能な更新ルートキーKR'が含まれている(Enc(DNK,KR'))。従って、クライアント1は、サービスデータに含まれるDNKを利用して、EKBから更新ルートキーKR'を得ることができる。さらに、更新ルートキーKR'を用いて、Enc(KR',Kc)からコンテンツキーKcを復号することができ、コンテンツキーKcを用いて、Enc(Kc,Content)からコンテンツを復号することができる。
このように、クライアント1にDNKを各デバイスに割り当てることにより、図10と図15を参照して説明した原理に従って、個々のクライアント1のリボーク(revoke)が可能になる。
また、ライセンスリーフIDを付加して配布することにより、クライアント1において、サービスデータと利用権の対応付けが行われることになり、利用権の不正コピーを防止することが可能になる。
また、クライアント用の証明書と秘密鍵をサービスデータとして配信するようにすることで、エンドユーザも、これらを用いて不正コピーを防止可能なコンテンツを作成することが可能になる。
本発明においては、図11を参照して説明したように、カテゴリノードにライセンスを管理するTシステムと、各種のコンテンツを利用するデバイスのカテゴリが対応づけられるので、複数のDNKを同一のデバイスに持たせることができる。その結果、異なるカテゴリのコンテンツを1つのデバイスで管理することが可能となる。
図22は、この関係の一例を表している。すなわち、デバイスD1には、Tシステムに基づいて、DNK1が割り当てられており、EKBを含むコンテンツ1を再生することができる。同様に、このデバイスD1には、例えば、DNK2が割り当てられており、メモリースティックにCDからリッピングしたコンテンツ2を記録することができる。この場合、デバイスD1は、コンテンツ1とコンテンツ2という、異なるシステム(Tシステムとデバイス管理システム)により配信されたコンテンツを同時に扱うことが可能となる。新たなDNKを割り当てるとき、既に割り当てられているDNKを削除するなどして、デバイスに1個のDNKだけを対応させるようにした場合、このようなことはできない。
このように、本発明においては、カテゴリ毎に独立したキー管理が可能になる。
また、DNKを、機器やメディアに予め埋め込むのではなく、ライセンスサーバ4により、登録処理を行う際に、各機器やメディアにダウンロードするようにすることで、ユーザによるキーの購入が可能なシステムを実現することができる。
コンテンツとその利用権を別々に配布するシステムにおいては、コンテンツは、それが作成された後、どのような使われ方をされようとも、その使われ方に関わりなく、全ての用途において、使用可能であるのが望ましい。例えば、異なるコンテンツ配信サービス、あるいは用途が異なる場合においても、同一のコンテンツが使えることが望ましい。本発明においては、このため、上述したように、各ユーザ(クライアント1)に、認証局としてのライセンスサーバ4から秘密鍵と、それに対応する公開鍵の証明書(certificates)が配布される。各ユーザは、その秘密鍵を用いて、署名(signature)を作成し、コンテンツに付加して、コンテンツの真正さ(integrity)を保証し、かつコンテンツの改竄防止を図ることができる。
クライアント1は、コンテンツを利用する前に、ライセンスサーバ4にアクセスし、利用権を取得する必要がある。ライセンスサーバ4は、クライアント1からアクセスを受けたとき、利用権を提供するのであるが、その前にコンテンツホルダサーバ6からコンテンツに関するプロダクト情報を取得する必要がある。次に、図21と図22のフローチャートを参照して、この場合の処理について説明する。
コンテンツホルダサーバ6のCPU21は、ステップS201において、コンテンツのプロダクト情報を作成する。ステップS202において、CPU21は、ステップS201で作成したプロダクト情報を、通信部29を介してライセンスサーバ4に送信する。
以上のコンテンツホルダサーバ6の処理に対応して、ライセンスサーバ4は、図22のフローチャートに示される処理を実行する。
すなわち、ステップS301において、ライセンスサーバ4のCPU21は、コンテンツホルダサーバ6から送信されてきた(図21のステップS202の処理で送信されてきた)プロダクト情報を受信する。ステップS302において、CPU21は、ステップS301の処理で受信したプロダクト情報を記憶部28に供給し、記憶させる。その後、ステップS303において、CPU21は、ステップS302の処理で登録したプロダクト情報(使用条件)を分割する処理を実行する。
例えば、コンテンツホルダサーバ6から送信されてきたプロダクト情報が図23に示されるような内容であったとする。図23の例においては、ユーザが350円の対価を支払った場合には、対応するコンテンツを、回数と期間の制限なく、再生することが可能となる。
これに対して、ユーザが100円の対価を支払った場合には、回数は制限ないが、期間は1ヶ月のみとされ、その間、ユーザはコンテンツを再生することが許容される。
ユーザは、さらに50円を追加的に支払った場合には、3回だけチェックアウトが許容される。さらに50円の対価が支払われた場合には、1回だけ、10日間の間、コピーをすることが許容される。この場合におけるコピー先での再生は、対価の支払いは必要ないが(対価は0円であるが)、回数は10回に限られ、期間は1日に限られている。
ライセンスサーバ4は、図23に示されるようなプロダクト情報をコンテンツホルダサーバ6から受け取ったとき、このプロダクト情報を、例えば、図24に示されるように分割する。
図24の例においては、プロダクト情報は3つに分割されている。第1のプロダクト情報は、ユーザが350円の対価を支払った場合のものであり、その内容は、再生回数と再生期間が無限とされている。
第2のプロダクト情報は、ユーザが150円の対価を支払った場合のものであり、再生回数は無限であるが、再生期間は、YY年MM月DD日までとされ、チェックアウトの回数は3回まで許容される内容となっている。
第3番目のプロダクト情報は、対価は0円とされ、その内容はコピー先の使用条件を規定するものであり、再生回数は10回とされ、再生期間は1日とされている。
この第3番目のプロダクト情報は0円であるので、第2番目のプロダクト情報に付随して配布される。
このように、ライセンスサーバ4は、コンテンツホルダサーバ6から許容されたプロダクト情報に記載されている使用条件の範囲内において、その使用条件を複数の使用条件に分割し、分割された使用条件を含む利用権として、クライアント1に対して提供することができる。
次に、図25のフローチャートを参照して、図22のステップS303のプロダクト情報(使用条件)分割処理の具体的な例について説明する。
なお、図25の処理は、コンテンツホルダサーバ6から提供され、ライセンスサーバ4の記憶部28に記憶されているプロダクト情報に含まれる使用条件が、例えば、図26に示されるような内容である場合において、この使用条件から、再生だけを許容する使用条件として分割する処理の例を表している。
図26の例においては、再生回数は3回とされ、チェックアウト回数も3回とされている。そして、再生開始日は2001年12月1日とされ、終了日は2002年2月28日とされている。
ステップS321において、CPU21は、コンテンツホルダサーバ6から受信し、記憶部28に記憶したプロダクト情報のXML(Extensible Markup Language)で記述されているRule部から、「playback」の要素を検索する。
次に、ステップS322において、CPU21は、「playback」が存在したか否かを判定する。「playback」が存在した場合には、ステップS323に進み、CPU21は、期間制限オプション(timespan_id)から期間を抽出する。図26の例においては、2001年12月1日から2002年2月28日までの期間が抽出される。
次に、ステップS324において、CPU21は、ステップS323の処理で抽出された期間のdate_start(開始日)とdate_end(終了日)を、それぞれ再生可能開始日を表す変数resp及び再生可能終了日を表すreepに代入する。
ステップS325において、CPU21は、ステップS324の処理に基づいて生成されたデータに基づいて、分割された使用条件を作成する。これにより、例えば、図27に示されるような使用条件が作成される。
図27の例においては、2001年12月1日から2002年2月28日までの期間、コンテンツが使用可能とされている。
ステップS326において、CPU21は、ステップS325の処理で作成した使用条件と、プロダクト情報に含まれるコンテンツ条件、利用権ID等を組み合わせ、バージョン、有効期限等を追加した利用権を生成し、生成された利用権を記憶部28に登録する。
ステップS322において、「playback」のテキストが存在しないと判定された場合には、ステップS323乃至ステップS326の処理はスキップされる。
次に、図28のフローチャートを参照して、図22のステップS303の使用条件分割処理の他の例について説明する。
この例は、図26に示されるような使用条件がコンテンツホルダサーバ6からライセンスサーバ4に提供された場合において、再生の使用条件と、チェックアウトの使用条件の、合計2つの使用条件を分割、生成する場合の処理例を表している。
ステップS341乃至S345において、図25のステップS321乃至ステップS325における場合と同様の処理が実行される。これにより、上述したように、再生の使用条件を含む利用権が分割、生成される。
なお、ステップS342において、「PLAYBACK」の要素が検索されなかったと判定された場合、ステップS343乃至ステップS345の処理はスキップされ、処理はステップS346に進む。
次に、ステップS346において、CPU21は、XMLで記述されたRule部(図26)から「checkout」の要素を検索する。ステップS347において、CPU21は、「checkout」が存在したか否かを判定し、存在した場合には、ステップS348に進み、XMLのRule部から回数を読み出す。図26の例の場合、回数として3回が読み出される。
ステップS349において、CPU21は、ステップS348で読み出された回数を、最大チェックアウト回数を表す変数reccに代入する。そして、ステップS350において、CPU21は、ステップS349の処理で生成されたデータを元に、分割された使用条件を作成する。ステップS351において、CPU21は、ステップS345またはステップS350で作成された使用条件を含む利用権を生成し、記憶部28に登録する処理を実行する。
ステップS347において、「checkout」が存在しないと判定された場合、ステップS348乃至ステップS350の処理はスキップされる。
このようにして、図29に示されるような再生の使用条件を含む利用権とチェックアウト回数が3回である使用条件を含む利用権が生成される。
以上のようにして、ライセンスサーバ4がコンテンツホルダサーバ6から提供を受けた使用条件を、分割、管理するようにすることで、クライアント1は、大きな使用条件を取り扱う負担を強いられることなく、利用権を容易に管理することが可能となる。
また、利用権に含まれている使用条件をアップグレードさせることができる。この場合の処理について、図30を参照して説明する。
すなわち、図30の例においては、コンテンツホルダサーバ6が生成したコンテンツに対する利用権として、そのコンテンツの再生、チェックアウト、および購入を規定する1つの利用権を生成し、これをライセンスサーバ4に提供する。
ライセンスサーバ4は、この1つの利用権を、再生だけができる利用権、並びに再生とチェックアウトができる利用権の2つの利用権に分割する。
クライアント1は、例えば、10円を支払うことにより、再生だけの利用権を取得することができる。そして、その後、クライアント1は、さらに30円を支払うことにより、再生だけでなく、さらにチェックアウトの権利が付加された利用権を取得することができる。すなわち、再生だけの利用権から、再生とチェックアウトを含む利用権に、クライアント1は利用権をアップグレードすることができる。
この場合において、クライアント1は、利用権の状態が、10円を支払った状態と、さらに30円を支払った状態とがあるということを管理している必要はない。クライアント1は、ただ単に、新たな利用権を購入するだけでよい。換言すれば、クライアント1から見れば、再生の利用権と、再生とチェックアウトの利用権とは、全く独立した別の利用権として取り扱えばよいことになる。
この場合の処理を、さらに図31と図32を参照して説明する。図31は、ライセンスサーバ4がコンテンツホルダサーバ6から提供を受けたプロダクト情報の使用条件の概要を表している。この例では、Usage Rule IDが1とされ、10円の支払いが行われた場合、再生が許容されるルールと、20円の支払いがなされた場合には、再生とチェックアウトが許容されるルールが記述されている。
このような場合において、ライセンスサーバ4が図31に示される1つの使用条件を、再生だけの使用条件と、再生とチェックアウトを許容する使用条件の2つに分割し、それぞれに対応する利用権を生成したとする。
この場合、図32に示されるように、クライアント1がステップS371で、ライセンスサーバ4に対して10円を支払った場合、(なお、詳細な説明は省略するが、具体的な課金処理は、課金サーバ5により行われる。以下同様)ステップS372において、ライセンスサーバ4は、クライアント1に対して再生の利用権(Usage Right)を付与する。この場合の処理は、購入処理と同様となる。
その後、ステップS373において、クライアント1がライセンスサーバ4に対して、さらに20円の支払いを許諾する情報を送信し、ステップS374において、クライアント1のリーフIDと、ステップS372で取得した利用権のIDを、ライセンスサーバ4に対して送信すると、ステップS375において、ライセンスサーバ4は、再生とチェックアウトの内容を含む利用権を、クライアント1に配布する。この処理は、アップグレード処理である。
なお、ステップS372でクライアント1に付与される利用権IDと、ステップS375の処理でクライアント1に付与される利用権IDは、同一である。すなわち、この利用権IDは、図31に示されるライセンスサーバ4がコンテンツホルダサーバ6から提供を受けた利用権のIDと対応している。
換言すれば、分割されてはいるが、2つの利用権は同一のプロダクト情報に含まれる使用条件から派生したものである。
図33は、クライアント1がライセンスサーバ4から利用権を取得する場合における表示例を表している。ステップS391において、クライアント1がリーフIDをライセンスサーバ4に送信するとともに、既に利用権を取得している場合には、そのIDをライセンスサーバ4に送信する。
ライセンスサーバ4は、クライアント1に対して、購入可能な権利のリストと対応する値段が記述されたドキュメントを、クライアント1に送信する。クライアント1のCPU21は、これを通信部29を介してこれを受信すると、出力部27のモニタに出力し、表示させる。
図33の例においては、購入可能な権利として、3回のチェックアウトを可能にする100円の利用権、既に取得されているコンテンツを自分のものにする150円の利用権、並びに既に取得している利用権を他人にコピーしてあげる10円の利用権の、3種類の利用権が表示されている。
クライアント1が保持する利用権は、クライアント1が支払った対価に応じて、変化するのであるが、いま、ライセンスサーバ4にアクセスしてきたクライアント1が、いずれの状態の利用権を取得しているのかは、ライセンスサーバ4が管理している。従って、クライアント1のリーフIDとクライアント1が保持している利用権のIDに基づいて、ライセンスサーバ4のCPU21は、アクセスしてきたクライアント1に対応するメニュー(購入可能な権利の内容)を表示させることができる。
なお、図33の表示例においては、「佐藤さん、いらっしゃいませ。」のメッセージも同時に表示されている。アクセスしてきたクライアント1のユーザが誰であるのかは、ユーザを登録する処理を行った場合に、ユーザ名を登録しているので、リーフIDに対応するユーザの氏名をデータベースから検索することで、表示することが可能となる。
あるいは、また、cookieを利用して氏名を表示させるようにすることも可能である。
ステップS392で、クライアント1が、メニュー表示に従い利用権の購入手続を行い、利用権に対する対価の支払の処理を行うと、ステップS393において、ライセンスサーバ4からクライアント1に、対価に対応する利用権(Usage Right)が配布される。
次に、図34を参照して、ライセンスサーバ4において行われる購入履歴の管理について説明する。
図34の例においては、コンテンツホルダサーバ6が1つのプロダクト情報をライセンスサーバ4に供給する。このプロダクト情報は、200円の対価によって取得することが可能なUsage Rules1、さらに100円を支払って取得することが可能なUsage Rules2、さらに50円を支払うことにより取得可能なUsage Rules3、並びにUsage Rules2を有するユーザがさらに30円を支払うことにより取得することが可能なUsage Rules4、により構成されている。
ライセンスサーバ4は、コンテンツホルダサーバ6からこのプロダクト情報を取得すると、Usage Rules1乃至Usage Rules4を分割する。そして、ライセンスサーバ4は、状態テーブルとして、Usage Rules1乃至Usage Rules4に対応した利用権購入状態のレコードをLeafID、利用権ごとに生成、管理する。
すなわち、このテーブルでは、Usage Rules1乃至Usage Rules4をそれぞれ有する状態が、状態1乃至状態4とされ、これらのいずれをも有していない状態が状態0とされる。
このように、利用権所持の状態は、ライセンスサーバ4により管理されているので、クライアント1が管理する必要はない。従って、クライアント1の負荷が軽減される。
すなわち、クライアント1は、Usage Rules1乃至Usage Rules4のうちのいずれか1つを適宜購入するだけでよい。
例えば、クライアント1のユーザは、200円を支払うことで、Usage Rules1を含む利用権を取得することができ、さらに100円を追加的に支払うことで、Usage Rules2を含む利用権を取得することができる。
クライアント1がいずれの利用権を取得する場合においても、同一のプロトコルを使用することが可能であるが、利用権の内容に応じて、使用するプロトコルを変更することも可能である。次に、この使用権に応じて、プロトコルを変更する例について説明する。
この実施の形態では、図35に示されるように、ライセンスサーバ4からクライアント1に対して、利用権を配布するプロトコルには、簡易購入プロトコルと権利更新プロトコルの2種類が用意される。簡易購入プロトコルは、特殊な認証が不要とされるプロトコルであり、権利更新プロトコルは、特殊な認証が必要とされるプロトコルである。すなわち、権利更新プロトコルは、簡易購入プロトコルに比べて、よりセキュアな環境化での通信が行われるものである。
簡易購入プロトコルにおいては、利用権は、ライセンスサーバ4からクライアント1に対して、単にダウンロードされる。これに対して、権利更新プロトコルにおいては、ライセンスサーバ4がクライアント1が有する利用権を更新する処理を実行するため認証処理が行われる。
次に、図36のフローチャートを参照して、クライアント1がライセンスサーバ4から、利用権の内容に応じて、異なるプロトコルで利用権を取得する処理について説明する。
ステップS461において、クライアント1のCPU21は、ライセンスサーバ4にアクセスする。ステップS412において、CPU21は、ユーザからの指令に基づいて、ユーザが希望する利用権に関する情報を通信部29を介してライセンスサーバ4に送信する。
図37のフローチャートを参照して後述するように、クライアント1が希望するのが、サブスクリプションサービスの利用権である場合には、ライセンスサーバ4からAKE(Authentication Key Exchange)処理が要求されてくる(図37のステップS448)。これに対して、取得する利用権がサブスクリプションサービスの利用権ではない場合(買い取り用、または試聴用である場合)には、AKE処理が要求されてこない。そこで、ステップS413において、CPU21は、ライセンスサーバ4からAKE処理が要求されたか否かを判定し、AKE処理が要求されてこない場合には、ステップS414に進み、記憶部28に記憶されているリーフIDを読み出し、通信部29を介してライセンスサーバ4に送信させる。
このとき、ライセンスサーバ4は、クライアント1が希望した利用権に、それに対応するデジタル署名を付加してクライアント1に送信してくる(図37のステップS447)。そこで、ステップS415において、クライアント1のCPU21は、クライアントサーバ4から送信されてきた利用権とデジタル署名を受信する。ステップS416において、CPU21は、ステップS415で受信したデジタル署名をライセンスサーバ4の公開鍵SPで復号する。このライセンスサーバの公開鍵SPは、リーフIDとともに、登録処理において、取得され、記憶部28に記憶されているものである(図6のステップS53)。
ステップS417において、CPU21は、ステップS415の処理で受信した利用権は、ステップS416の処理でデジタル署名を復号して得られた利用権と一致するか否かを判定する。両者が一致する場合には、適正な(改竄されていない)利用権であるので、CPU21は、ステップS418において、その利用権を記憶部28に記憶させる。
それに対して、2つの利用権が一致しない場合には、正しい利用権ではないので、ステップS426に進み、CPU21は、エラー処理を実行する。
一方、ステップS413において、AKE処理が要求されたと判定された場合、ステップS419に進み、CPU21は、ライセンスサーバ4との間でAKE処理を実行する。すなわち、これにより、よりセキュアな通信路を確保する処理が実行され、セッション鍵が共有される。
ステップS420において、CPU21は、AKE処理により、SAC(Secure Authentication Channel)が形成できたか否か(セキュアな通信路が確保できたか否か)を判定する。SACが形成できたと判定された場合には、ステップS421において、CPU21は、記憶部28に記憶されているリーフIDを、AKE処理により確保されたセッション鍵で暗号化して、通信部29からインターネット2を介して、ライセンスサーバ4に送信する。
この場合、ライセンスサーバ4からセッション鍵で暗号化された使用鍵とデジタル署名が、クライアント1に送信されてくる(後述する図37のステップS454)。そこで、ステップS422において、クライアント1のCPU21は、セッション鍵で暗号化されている利用権とデジタル署名を受信し、ステップS423において、暗号化された利用権を、ステップS419のAKE処理で取得したセッション鍵で復号する。
ステップS424において、CPU21は、ステップS422の処理で受信したデジタル署名を、ライセンスサーバ4の公開鍵SPで復号する。ステップS425において、CPU21は、ステップS423の処理で復号して得られた利用権と、ステップS424の処理で復号して得られた利用権とが、一致するか否かを判定する。両者が一致する場合には、正しい利用権であることが確認できたので、ステップS418に進み、CPU21は、得られた利用権を記憶部28に記憶する。
ステップS425の処理において、2つの利用権が一致しないと判定された場合、得られた利用権が正しいものではない(例えば、改竄されたものである)恐れがあるので、ステップS420において、SACが形成できなかったと判定された場合と同様に、ステップS426に進み、エラー処理が実行される。
以上のクライアント1の利用権取得処理に対応して実行されるライセンスサーバ4の利用権配布処理について、図37のフローチャートを参照して説明する。
ステップS441において、ライセンスサーバ4のCPU21は、クライアント1からのアクセスを受け付ける。ステップS442において、CPU21は、クライアント1からの利用権に関する情報を受信する。この利用権に関する情報は、図36のステップS412の処理により、クライアント1から送信されてきたものである。
ステップS434において、ライセンスサーバ4のCPU21は、クライアント1が希望するサービスに対応する利用権の情報を記憶部28から取得する。
ステップS444において、CPU21は、クライアント1が希望している利用権は、サブスクリプションサービスの利用権のものであるか否かを判定する。利用権がサブスクリプションサービスの利用権でない場合(買い取り用または試聴用のものである場合)には、特に、セキュアな環境化で通信を行う必要がない。このとき、クライアント1からリーフIDが送信されてくる(図36のステップS414)。そこで、ステップS445において、ライセンスサーバ4のCPU21は、クライアント1から送信されてきたリーフIDを受信し、そのリーフIDをクライアント1が希望する利用権に挿入する。
ステップS446において、CPU21は、ライセンスサーバ4の秘密鍵を用いて、ステップS445の処理でリーフIDを挿入した利用権のデジタル署名を作成する。
次に、ステップS447において、CPU21は、ステップS445の処理でリーフIDを挿入した利用権と、ステップS446の処理で作成したデジタル署名とを、クライアント1に送信する。
このようにして、送信した利用権とデジタル署名が、図36のステップS415において、クライアント1により受信されることになる。
一方、ステップS444において、クライアント1が希望している利用権がサブスクリプションサービスの利用権である(買い取り用または試聴用ではない)と判定された場合、よりセキュアな環境化で通信を行う必要がある。そこで、ステップS448に進み、CPU21は、クライアント1に対してAKE処理を要求し、AKE処理を実行する。
ステップS449において、CPU21は、SACが形成できたか否かを判定する。SACが形成できた場合には、ステップS451に進み、CPU21は、クライアント1が希望する利用権に使用状態(Usage Status)を付加する。ステップS452において、CPU21は、クライアント1が希望する利用権にリーフIDを挿入し、ステップS448のAKE処理で得られたセッション鍵で暗号化する。
ステップS453において、CPU21は、自分自身の秘密鍵を用いて、ステップS452の処理でリーフIDが挿入され、セッション鍵で暗号化された利用権のデジタル署名を作成する。
ステップS454において、CPU21は、ステップS452の処理でセッション鍵で暗号化された利用権と、ステップS453の処理で作成されたデジタル署名とを、クライアント1に送付する。
このようにして、送付された利用権とデジタル署名は、上述したように、クライアント1により、ステップS422において受信される。
ステップS449において、SACが形成できなかったと判定された場合には、セキュアな通信路が確保できなかったので、ステップS450に進み、エラー処理が実行される。
すなわち、この場合には、利用権は、クライアント1に対して配布されないことになる。
よりセキュアな状態での利用権の配布を望まないユーザは、そのための機能を設ける必要がないので、ユーザに必要以上の負担をかけることなく、利用権を配布することが可能となる。また、セキュアな環境下での利用権の取得を希望するユーザに対しては、より安全に利用権を配布することが可能となる。その結果、利用権が第3者に盗用されるようなことが防止される。
以上のようにして、コンテンツと利用権を得たクライアント1は、利用権に基づいて、コンテンツを使用する(例えば、再生する)処理を実行する。
次に、この場合の処理について、図38のフローチャートを参照して説明する。
ステップS471において、クライアント1のCPU21は、ライセンスサーバ4にアクセスする。ステップS472において、CPU21は、ライセンスサーバ4との間でAKE処理を実行する。
ステップS473において、CPU21は、SACが形成できたか否かを判定する。SACが形成できた場合には、ライセンスサーバ4から使用状態、リーフID、およびコンテンツ情報の送信を要求してくる(後述する図39のステップS495)。
そこで、ステップS475において、クライアント1のCPU21は、ライセンスサーバ4からのこの要求を受信する。この要求は、ステップS472のAKE処理で得られたセッション鍵で暗号化されている。そこで、CPU21は、ステップS472のAKE処理で得られたセッション鍵を用いて、この要求を復号する。
ステップS476において、CPU21は、この要求に基づいて、これから使用する利用権に対応する使用状態、リーフID、およびコンテンツ情報を、セッション鍵で暗号化して、ライセンスサーバ4に送信する。
この送信に対応して、ライセンスサーバ4から更新した使用状態を、セッション鍵で暗号化して送信してくる(図39のステップS498)。
そこで、ステップS477において、クライアント1のCPU21は、ライセンスサーバ4から送信されてきた、更新された使用状態を受信し、セッション鍵で復号し、記憶部28に記憶する。例えば、利用権に使用回数の条件が含まれているような場合、クライアント1がこれからコンテンツを再生するので、使用回数は1回インクリメントされた値に更新されていることになる。そして、ステップS478において、CPU21は、コンテンツを再生する処理を実行する。
このように、使用状態がクライアント1ではなく、ライセンスサーバ4により管理されるので、利用権がクライアント1において改竄され、コンテンツが不正に利用されるようなことが防止される。
また、ライセンスサーバ4は、必要に応じて、使用状態を適宜書き換えることで、所定のユーザに対して、コンテンツの利用を適宜禁止させたり、柔軟なサービスの提供を行うことが可能となる。
また、ライセンスサーバ4からクライアント1が保持する利用権の使用状態を制御することができるため、使用を許可する回数の増減、コンテンツ毎の無効化、サービス自体の停止などを、ライセンスサーバ4が適宜行うことが可能となる。
ステップS473において、SACが形成できなかったと判定された場合、ステップS474に進み、エラー処理が実行される。
以上のクライアント1の利用権使用処理に対応して実行されるライセンスサーバ4の処理について、図39のフローチャートを参照して説明する。
ステップS491において、ライセンスサーバ4のCPU21は、クライアント1からのアクセスを受け付ける。ステップS492において、CPU21は、クライアント1との間でAKE処理を実行する。ステップS493において、CPU21は、AKE処理の結果、SACが形成できたか否かを判定する。
SACが形成できた場合には、ステップS495に進み、CPU21は、クライアント1に対して、使用状態、リーフID、およびコンテンツ情報の送信を要求する。この要求は、ステップS492のAKE処理で得られたセッション鍵で暗号化して、クライアント1に送信される。上述したように、この要求は、クライアント1において、ステップS475の処理で受信され、ステップS476の処理でその要求に対応した情報がクライアント1から送信されてくる。
そこで、ステップS496において、ライセンスサーバ4のCPU21は、クライアント1から送信されてきた使用状態、リーフID、およびコンテンツ情報を受信する。これらの情報は、セッション鍵で暗号化されているので、CPU21は、ステップS492のAKE処理で得られたセッション鍵を用いて、これらの情報を復号する。
ステップS497において、CPU21は、クライアント1から送信されてきた使用状態をコンテンツ情報に基づいて更新する。例えば、これからコンテンツが使用される場合には、その使用回数を1回だけインクリメントした値に変更させる。あるいは、そのコンテンツを以後使用禁止にする場合には、CPU21は、使用回数をもはや使用できない回数に変更する。
ステップS498において、CPU21は、ステップS497の処理で更新した使用状態をセッション鍵で暗号化して、クライアント1に送信する。
この使用状態が上述したように、クライアント1において、ステップS477において、受信される。
ステップS493の処理でSACが形成できなかったと判定された場合には、ステップS494に進み、エラー処理が実行される。
使用条件を記述する場合、フラグや値のみで記述すると、その値の意味をクライアント1が全て知っている必要がある。このため、条件項目をライセンスサーバ4が追加することが困難になる。
また、逆に、使用条件をフレキシブルに記述することを許容すると、クライアント1において、ユーザに対して、使用条件をどのように表現するか難しくなる。
そこで、コンテンツの使用条件を、関係式と論理式のみからなる条件式で記述することにより、クライアント1において、各項目のフォーマットをあらかじめ規定しておく必要がなく、様々な使用条件の記述に対応することができるようにすることができる。このため、クライアント1における実装によらずに、使用条件を記述することが可能となる。
また、クライアント1の処理能力等によって、Usage Rulesの記述に制限を設けるようにすることで、クライアント1において、容易にルールの意味を解釈できるようにすることができる。以下、この例について説明する。
Usage Rulesは、コンテンツの使用条件を規定するものであり、上述したように、ユーザ(クライアント1)が購入する利用権(Usage Right)に含まれる。Usage Rulesで規定できるものには、以下のようなものがある。
コンテンツの再生回数
コンテンツの使用期限
コンテンツのチェックアウト回数
その他
これらの条件は、専用の記述言語で記述し、バイトコードにコンパイルして、Usage Rightに格納される。
基本的な記述方法は、図40に示されるような形式となる。すなわち、各ドメイン、つまりコンテンツの利用形態のカテゴリ、に対して、Usage Ruleが記述される。
1つのUsage Ruleは、図41に示されるような形式で記述される。
1つのUsage Ruleは、先頭に記述するdomain_idで、それを適用するドメインを規定する。さらに、それに続く'{'・・・'}'内に、各種ルールが規定されるが、その中は、ルールセクション、invariablesセクション、およびoverhead partの3つのセクションに分かれる。
ルールセクションは、'{'・・・'}'の先頭で、複数のdomain_ruleを記述することができる。invariablesセクションは、ルールセクションに続き、キーワード'invariables:'によって始まる部分である。overhead partは、invariablesセクションに続く部分であり、'over_head_part:'によって始まる。
domain_idは、ドメインを示す名称であり、以下の文字列のうちのいずれかである。
drm
renderer
ripper
burner
lcm_1
lcm_2
lcm_3
rendererドメインはコンテンツの再生、表示等の利用形態のカテゴリ、ripperドメインはCDのコンテンツの読み出しの利用形態のカテゴリ、burnerドメインはコンテンツのCD-Rへの記録の利用形態のカテゴリ、drmドメインは全ての利用形態のカテゴリをそれぞれ表している。
domain_ruleは、
'{'<条件式>'}'の形式で記述される。
各ルールの前には、以下の形式でルール番号を指定することができる。
'['<ルール番号>']'{'<条件式>'}'
ルール番号を指定する場合には、次のように、複数の番号を指定することが可能である。
[1]'{'<条件式#1>'}'
[2]'{'<条件式#2>'}'
条件式は、各ドメインの状態変数や定数などを参照するためのChars Code(CC)に対して、比較演算を施したものである。その記述例は、例えば、次のようになる。
!'ee' and !'pp'
!'ee' and ('cid > 'pp')
利用できる演算子には、図42に示されるようなものあがる。
図42における2項演算子の演算優先順位は、弱い順に、or, and,その他の演算子となる。どの演算子も左結合である。
invariablesセクションは、各種定数を記述する部分であり、次の形式でChars Codeに値を定義する。
<Chars Code>'=' <値>';'
複数のinvariablesを定義する場合には、次に示されるように、','で区切って記述が行われる。
<Chars Code>'='<値>','<Chars Code>'='<値>・・・';'
<Chars Code>は、その名称と意味があらかじめ規定されている。
overhead partは、各ドメイン毎の独自のルールを記述する部分である。
Char CodeはUsage Rulesのinvariablesセクション内で定義される以外に、利用権、コンテンツ、使用状態等の中で定義されていても良い。
以上のルール記述言語で記載された例が図43に示されている。
なお、上述したコンテンツサーバ3、ライセンスサーバ4、課金サーバ5、並びにコンテンツホルダサーバ6のいずれか2つ以上は、必要に応じて実質的に1つのサーバに統合させることも可能である。
また、本実施の形態では、暗号化されたコンテンツを復号するための鍵情報はコンテンツに含まれているが、利用権に鍵情報を含む、あるいはコンテンツに含まれる鍵情報と利用権に含まれる鍵情報とを組み合わせることで復号可能となるようにしても良い。
本発明が適用されるクライアントは、いわゆるパーソナルコンピュータ以外に、PDA(Personal Digital Assistants)、携帯電話機、ゲーム端末機などとすることができる。
一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
この記録媒体は、図2に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク41(フレキシブルディスクを含む)、光ディスク42(CD-ROM(Compact Disk - Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク43(MD(Mini-Disk)(商標)を含む)、もしくは半導体メモリ44などよりなるパッケージメディアにより構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM22や、記憶部28に含まれるハードディスクなどで構成される。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、セキュリティに関連する処理を実行させるプログラムは、その処理を解析されるのを防ぐため、そのプログラム自体が暗号化されているのが望ましい。例えば、暗号処理などを行う処理については、そのプログラムをタンパーレジスタントモジュールとして構成することができる。
また、上記実施の形態では、コンテンツを利用するために必要な利用権を特定するためにコンテンツの属性と利用権のコンテンツ条件を用いたが、これに限らない。例えば、コンテンツに、該コンテンツを利用するために必要な利用権の利用権IDを含むようにしても良く、この場合、コンテンツを指定すればそれを利用するために必要な利用権は一意に決まるため、両者のマッチングを決定する処理を行う必要はない。
1−1,1−2 クライアント, 2 インターネット, 3 コンテンツサーバ, 4 ライセンスサーバ, 5 課金サーバ,6 コンテンツホルダサーバ, 20 タイマ, 21 CPU, 24 暗号化復号部, 25 コーデック部, 26 入力部, 27 出力部, 28 記憶部, 29 通信部