次に、本発明の実施形態について説明する。なお、以下の図面の記載において、同一または類似の部分には、同一または類似の符号を付している。ただし、図面は模式的なものであり、各寸法の比率などは現実のものとは異なることに留意すべきである。
したがって、具体的な寸法などは以下の説明を参酌して判断すべきものである。また、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることは勿論である。
(コンテンツ利用システムの概略構成)
図1は、本実施形態に係るコンテンツ利用システム10の概略構成を示している。同図に示すように、コンテンツ利用システム10は、コンテンツ記録装置100、ストレージデバイス200及びコンテンツ再生装置300とによって構成されている。
コンテンツ記録装置100(コンテンツ利用装置)は、音楽データ、映像データまたはゲームプログラムなどのディジタルコンテンツをストレージデバイス200とは異なるDVD200A(図2参照)などに記録するものである。なお、本実施形態では、以下、音楽データを例として説明する。
ストレージデバイス200(コンテンツ利用情報記憶装置)は、ディジタルコンテンツを暗号化して格納するものである。また、ストレージデバイス200は、暗号化された状態で格納されているディジタルコンテンツを復号するために用いられるコンテンツ鍵Kcont、及びコンテンツ再生装置300によるディジタルコンテンツの再生(play)やコンテンツ記録装置100によるディジタルコンテンツの複製(copy)の可能回数などを示す利用則(AC,UC)を含む“ライセンスデータLIC”(コンテンツ利用情報)を管理することができる。
具体的には、ストレージデバイス200は、コンテンツ記録装置100またはコンテンツ再生装置300へのディジタルコンテンツの出力に応じて、利用則を含むライセンスデータLICを更新して記憶する。
ストレージデバイス200としては、コンテンツ記録装置100やコンテンツ再生装置300から取り外し可能(リムーバル)なハードディスクドライブ(HDD)や、メモリーカード(マルチメディアカード)などを用いることができる。また、ストレージデバイス200は、ライセンスデータLICが不正に取得されることを防止するため、耐タンパ性モジュールを有している。
コンテンツ再生装置300(コンテンツ利用装置)は、ストレージデバイス200に格納されているディジタルコンテンツを読み出して再生するものである。
具体的には、コンテンツ再生装置300は、ストレージデバイス200によって送信されたライセンスデータLICに含まれるコンテンツ鍵Kcontを用いて、ストレージデバイス200に格納されているディジタルコンテンツを復号し、復号したディジタルコンテンツを再生する。
コンテンツ記録装置100及びコンテンツ再生装置300としては、パーソナル・コンピュータをはじめ、ディジタルコンテンツの種類に特化した専用の記録装置(小型のミュージックプレイヤーなど)を用いることができる。
(コンテンツ利用システムの概略論理ブロック構成)
次に、図2〜図4を参照して、コンテンツ利用システム10を構成するコンテンツ記録装置100、ストレージデバイス200及びコンテンツ再生装置300の概略論理ブロック構成について説明する。
なお、以下、本発明との関連がある部分について主に説明する。したがって、図2〜図4に示すコンテンツ記録装置100、ストレージデバイス200及びコンテンツ再生装置300は、当該装置の機能を実現する上で必須な、図示しない或いは説明を省略した論理ブロック(電源部や表示部など)を備える場合があることに留意されたい。
(1)コンテンツ記録装置
図2は、コンテンツ記録装置100の概略論理ブロック構成を示している。同図に示すように、コンテンツ記録装置100は、コントローラ101、ストレージインタフェース103、暗号エンジン105、復号器107、暗号器109、暗号エンジン111、ストレージインタフェース113及びデータバス115を備えている。
コントローラ101は、データバス115を介して、コンテンツ記録装置100を構成する各論理ブロックの動作を制御するものである。
特に、本実施形態では、コントローラ101は、ストレージデバイス200から読み出したディジタルコンテンツが利用されたか否か、つまり、当該ディジタルコンテンツが正常に他の記録メディア(例えば、DVD200A)に記録されたか否かを判定するものであり、利用判定部を構成する。
また、コントローラ101は、ディジタルコンテンツが正常に他の記録メディアに記録されていないと判定した場合(例えば、書込エラーの発生)、ライセンスデータLICを更新前の状態に復元することを要求するものである。本実施形態では、コントローラ101と暗号エンジン105とによって、復元要求部が構成される。
具体的には、コントローラ101は、ストレージデバイス200において一時的に生成されたテンポラリ鍵(記憶装置側テンポラリ鍵)を用いて暗号化されたライセンスID(LID)及び利用則ACをストレージデバイス200に送信する。
なお、ライセンスID(LID)とは、ライセンスデータLICを識別するID(コンテンツ利用情報識別子)である。また、より具体的なライセンスデータLICの復元方法については、後述する。
ストレージインタフェース103は、ストレージデバイス200との接続インタフェースを提供し、ストレージデバイス200との間における情報の入出力を制御するものである。
暗号エンジン105は、ストレージデバイス200との間において送受信される送受信情報の暗号化に用いられるコンテンツ鍵Kcontの管理などを実行するものである。
復号器107は、コンテンツ鍵Kcontを用いて、ストレージデバイス200から取得したディジタルコンテンツを復号するものである。
暗号器109は、復号器107において復号されたディジタルコンテンツをDVD200Aの規格にしたがった暗号方式によって暗号化するものである。
暗号エンジン111は、DVD200Aとの間において送受信される送受信情報の暗号化に用いられる鍵の管理などを実行するものである。本実施形態では、暗号エンジン105、復号器107、暗号器109及び暗号エンジン111によって、利用装置側暗号処理部が構成される。
ストレージインタフェース113は、DVD200Aとの接続インタフェースを提供し、DVD200Aとの間における情報の入出力を制御するものである。
(2)コンテンツ再生装置
図3は、コンテンツ再生装置300の概略論理ブロック構成を示している。同図に示すように、コンテンツ再生装置300は、コントローラ301、ストレージインタフェース303、暗号エンジン305、復号器307及びコンテンツデコーダ309を備えている。
コントローラ301は、データバス311を介して、コンテンツ再生装置300を構成する各論理ブロックの動作を制御するものである。
特に、本実施形態では、コントローラ301は、ストレージデバイス200から読み出したディジタルコンテンツが利用されたか否か、つまり、当該ディジタルコンテンツが正常に再生できた否かを判定するものであり、利用判定部を構成する。
また、コントローラ301は、ストレージデバイス200から読み出したディジタルコンテンツが正常に再生できていないと判定した場合、ログ格納部335(図5参照)に格納されているライセンスID(LID)(コンテンツ利用情報識別子)及び利用則ACをストレージデバイス200に送信し、ストレージデバイス200に記憶されているライセンスデータLIC(記憶コンテンツ利用情報)を更新前の状態に復元することを要求するものである。本実施形態では、コントローラ301と暗号エンジン305とによって復元要求部が構成される。
ここで、「正常に再生できていない」とは、コンテンツ再生装置300とストレージデバイス200との間の通信路の不具合によって、コンテンツ再生装置300がライセンスデータLICを正常に受信できなかったために、ディジタルコンテンツを再生することができなかった場合などである。
また、「正常に再生できていない」には、ストレージデバイス200からライセンスデータLICを受信したにもかかわらず、取得したディジタルコンテンツを再生しなかった場合や、当該ディジタルコンテンツの一部のみを利用した場合(いわゆるイントロスキャン)が含まれる。
具体的には、コントローラ301は、ストレージデバイス200において一時的に生成されたテンポラリ鍵(記憶装置側テンポラリ鍵)を用いて、暗号化されたライセンスID(LID)及び利用則ACをストレージデバイス200に送信する。なお、より具体的なライセンスデータLICの復元方法については、後述する。
ストレージインタフェース303は、ストレージデバイス200との接続インタフェースを提供し、ストレージデバイス200との間における情報の入出力を制御するものである。
暗号エンジン305は、ストレージデバイス200との間において送受信される送受信情報を暗号処理するものであり、利用装置側暗号処理部を構成する。
具体的には、暗号エンジン305は、一時的に生成される利用装置側テンポラリ鍵を用いて、ストレージデバイス200との間において送受信する送受信情報を暗号処理する。
また、暗号エンジン305は、内部にログ格納部335(図5参照)を有し、ライセンスデータLICを識別するライセンスID(LID)及び利用則(AC,UC)をコンテンツ利用情報ログとして格納するものである。なお、暗号エンジン305の詳細については、後述する。
復号器307は、コンテンツ鍵Kcontを用いて、ストレージデバイス200に格納されているディジタルコンテンツを復号するものである。
コンテンツデコーダ309は、所定の符号化則(例えば、MPEG audio layer 3 (MP3))にしたがって符号化されているディジタルコンテンツを、アナログオーディオ信号などに変換するものである。
(3)ストレージデバイス
図4は、ストレージデバイス200の概略論理ブロック構成を示している。同図に示すように、ストレージデバイス200は、コントローラ201、ストレージインタフェース203、暗号エンジン205、耐タンパ性データ格納部207及び通常データ格納部209を備えている。
コントローラ201は、データバス211を介して、ストレージデバイス200を構成する各論理ブロックの動作を制御するものである。
特に、本実施形態では、コントローラ201は、コンテンツ再生装置300(またはコンテンツ記録装置100)によって送信されたライセンスID(LID)が耐タンパ性データ格納部207記憶されているライセンスデータLIC(記憶コンテンツ利用情報)に含まれているライセンスID(LID)(コンテンツ利用情報識別子)と一致するか否かに基づいて、ライセンスデータLIC(コンテンツ利用情報)を書き換えるか否かを判定するものである。本実施形態では、コントローラ201と暗号エンジン205とによって、書換判定部が構成される。
具体的には、コントローラ201は、コンテンツ再生装置300(またはコンテンツ記録装置100)によって送信されたライセンスID(LID)が、更新して耐タンパ性データ格納部207に格納したライセンスデータLICに含まれているライセンスID(LID)と一致するか否かを判定する。
さらに、コントローラ201は、当該ライセンスID(LID)とともにコンテンツ再生装置300(またはコンテンツ記録装置100)によって送信された利用則ACに基づいて、耐タンパ性データ格納部207に格納したライセンスデータLICに含まれる利用則ACを書き換えてよいか否かを判定する。
また、コントローラ201は、暗号エンジン205によるライセンスデータLICの書き換え可否の判定結果に基づいて、ライセンスデータLICに含まれる利用則を、コンテンツ再生装置300(またはコンテンツ記録装置100)によって送信された利用則に書き換えるものであり、書換部を構成する。
具体的には、コントローラ201は、一時的に生成されたテンポラリ鍵(記憶装置側テンポラリ鍵)を用いて、受信したライセンスID(LID)及び利用則ACを復号することができた場合、利用則ACをコンテンツ再生装置300(またはコンテンツ記録装置100)によって送信された利用則ACを書き換える。
また、コントローラ201は、利用則ACの書き換え前において、ライセンスデータLIC(記憶コンテンツ利用情報)が出力許可または禁止の何れの状態であっても、利用則ACの書き換えとともに、ライセンスデータLICを出力許可の状態に変更することができる。
ストレージインタフェース203は、コンテンツ記録装置100及びコンテンツ再生装置300との接続インタフェースを提供し、当該装置との間における情報の入出力を制御するものである。
暗号エンジン205は、コンテンツ記録装置100またはコンテンツ再生装置300との間において送受信される送受信情報を暗号処理するものであり、記録装置側暗号処理部を構成する。
具体的には、暗号エンジン205は、一時的に生成される記憶装置側テンポラリ鍵を用いて、ストレージデバイス200との間において送受信する送受信情報を暗号処理する。
耐タンパ性データ格納部207は、耐タンパ性モジュール(Tamper Resistant Module)によって構成されている。耐タンパ性データ格納部207は、ライセンスデータLICや、テンポラリ鍵などから構成される接続ログなどを格納するものである。
なお、耐タンパ性モジュールは、ソフトウェア(例えば、暗号通信路を利用して情報を送受信する)及びハードウェア(例えば、耐タンパ性モジュールの表面を剥がすと内部の回路が完全に破壊する構造)によって実現される。
通常データ格納部209は、暗号化されたディジタルコンテンツなどを格納するものである。通常データ格納部209では、耐タンパ性データ格納部207のように、耐タンパ性は確保されていない。
(暗号エンジンの論理ブロック構成)
次に、図5及び図6を参照して、本発明の要部に係る処理を実行する暗号エンジン(暗号エンジン305,暗号エンジン205)の論理ブロック構成について説明する。なお、コンテンツ記録装置100に備えられている暗号エンジン105は、コンテンツ再生装置300に備えられている暗号エンジン305とほぼ同様の構成及び機能を有しているため、以下、暗号エンジン305を例として説明する。
(1)鍵、暗号化情報及び証明書の表現方法
まず、暗号エンジン305及び暗号エンジン205において用いられる鍵、当該鍵を用いて暗号化された暗号化情報(E)、及び証明書の表現方法について説明する。
(1.1)公開鍵暗号方式に基づく鍵
暗号エンジン305及び暗号エンジン205において用いられる主な公開鍵暗号方式に基づく鍵は、次のように表現される。
・ KPp3:暗号エンジン305の公開鍵
・ KPd3:暗号エンジン305の公開鍵
・ Kp3 :公開鍵KPp3とペアになる暗号エンジン305の秘密鍵
・ Kd3 :公開鍵KPd3とペアになる暗号エンジン305の秘密鍵
・ KPp2:暗号エンジン205の公開鍵
・ KPd2:暗号エンジン205の公開鍵
・ Kp2 :公開鍵KPp2とペアになる暗号エンジン205の秘密鍵
・ Kd2 :公開鍵KPd2とペアになる暗号エンジン205の秘密鍵
・ KPa :認証局によって発行されるルート公開鍵
(1.2)対称鍵暗号方式に基づく鍵
暗号エンジン305及び暗号エンジン205において用いられる主な対称鍵(共通鍵)暗号方式に基づく鍵(テンポラリ鍵)は、次のように表現される。
・ Kb3,Kc3,Ks3 :暗号エンジン305において生成される対称鍵
・ Kb2,Kc2,Ks2 :暗号エンジン205において生成される対称鍵
(1.3)暗号化情報(E)
上述した鍵を用いて暗号化された暗号化情報(E)は、“E(K,D)”の形態で表現される。“E(K,D)”は、鍵Kを用いて情報Dが暗号化された暗号化情報(E)であることを意味する。また、“A‖B”は、情報Aと情報Bとが連結された情報であることを意味する。
(1.4)証明書
上述した鍵の証明書は、次のように表現される。
・ C[KPd3]: コンテンツ再生装置300(公開鍵KPd3)の証明書
・ C[KPd2]: ストレージデバイス200(公開鍵KPd2)の証明書
(2)ライセンスデータLICの構成
次に、ライセンスデータLIC(コンテンツ利用情報)の構成について説明する。ライセンスデータLICは、次のような構成を有している。
・ライセンスデータLIC: 許諾情報LC+コンテンツ鍵Kcont
また、許諾情報LCは、次のような構成を有している。
・ 許諾情報LC: ライセンスID(LID)+利用則(AC,UC)
ライセンスID(LID)は、ライセンスデータLICを識別するコンテンツ利用情報識別子である。
利用則AC(Access Condition)は、ストレージデバイス200において強制される利用要件について規定するものであり、ディジタルコンテンツの再生回数、複製回数及び保護レベル(例えば、ディジタルコンテンツの利用許諾期間)などを制限する。
利用則UC(Usage Condition)は、ディジタルコンテンツの復号時に強制される利用要件について規定(例えば、ディジタルコンテンツの編集の禁止)するものである。
(3)暗号エンジン305
図5は、コンテンツ再生装置300に備えられている暗号エンジン305の論理ブロック構成を示している。同図に示すように、暗号エンジン305は、制御部321、証明書出力部323、証明書検証部325、暗号化部327、復号部329、乱数発生部331、署名演算部333、ログ格納部335及びローカルバス337を備えている。
制御部321は、コントローラ301による制御内容にしたがって、暗号エンジン305を構成する各論理ブロックを、ローカルバス337を介して制御するものである。
証明書出力部323は、コンテンツ再生装置300(公開鍵KPd3)の証明書C[KPd3]を出力するものである。証明書C[KPd3]は、認証局の秘密鍵(Ka)で暗号化(署名)された公開鍵KPd3によって構成されている。
証明書検証部325は、ストレージデバイス200(公開鍵KPd2)の証明書C[KPd2]を検証するものである。証明書検証部325は、認証局のルート公開鍵KPaを用いて証明書C[KPd2]を検証する。
また、証明書検証部325は、無効となった証明書のリストである証明書失効リスト(CRL: Certificate Revocation List)を用いて、無効な証明書を検証の対象から除外する。
暗号化部327は、公開鍵暗号方式及び対称鍵(共通鍵)暗号方式を用いて、暗号エンジン305の外部へ出力される情報を暗号化するものである。本実施形態では、暗号化部327は、公開鍵暗号方式として楕円曲線暗号方式を用い、共通鍵暗号方式としてTriple−DESを用いる。もちろん、暗号化部327は、他の暗号方式(例えば、RSA公開鍵暗号方式)を用いてもよい。
復号部329は、公開鍵暗号方式及び共通鍵暗号方式を用いて、暗号エンジン305に入力された情報を復号するものである。復号部329では、暗号化部327と同一の暗号方式が用いられる。また、復号部329は、復号したライセンスデータLICを復号器307に出力する。
乱数発生部331は、暗号化のために一時的に生成されるテンポラリ鍵(対称鍵Kb3,Kc3,Ks3)を生成するために用いられる乱数を発生するものである。
署名演算部333は、暗号エンジン305の外部へ出力される情報に付加される電子署名データを演算するものである。具体的には、署名演算部333は、所定のハッシュ関数(例えば、SHA−1)などを用いて、電子署名データを演算する。
ログ格納部335は、上述したように、ストレージデバイス200から受信したライセンスデータLICを識別するライセンスID(LID)、利用則AC,UC、及びストレージデバイス200におけるライセンスデータLICの格納先を示すアドレス情報ADRを含む転送ログリスト(コンテンツ利用情報ログ)やテンポラリ鍵などから構成される接続ログなどを格納するものである。
(4)暗号エンジン205
図6は、ストレージデバイス200に備えられている暗号エンジン205の論理ブロック構成を示している。同図に示すように、暗号エンジン205は、制御部221、証明書出力部223、証明書検証部225、暗号化部227、復号部229、乱数発生部231、署名演算部233及びローカルバス235を備えている。
制御部221は、コントローラ201による制御内容にしたがって、暗号エンジン205を構成する各論理ブロックを、ローカルバス235を介して制御するものである。
証明書出力部223は、ストレージデバイス200(公開鍵KPd2)の証明書C[KPd2]を出力するものである。証明書C[KPd2]は、認証局の秘密鍵(Ka)で暗号化(署名)された公開鍵KPd2によって構成されている。
証明書検証部225は、コンテンツ再生装置300(公開鍵C[KPd3])の証明書C[KPd3]を検証するものである。証明書検証部225は、認証局のルート公開鍵KPaを用いて証明書C[KPd3]を検証する。
また、証明書検証部225は、無効となった証明書のリストである証明書失効リスト(CRL: Certificate Revocation List)を用いて、無効な証明書を検証の対象から除外する。
暗号化部227及び復号部229は、上述した暗号化部327及び復号部329(図5参照)とほぼ同様の機能を有し、公開鍵暗号方式及び共通鍵暗号方式を用いて、暗号エンジン205から出力される情報の暗号化や、暗号エンジン205に入力された情報を復号するものである。
乱数発生部231は、暗号化のために一時的に生成されるテンポラリ鍵(対称鍵Kb2,Kc2,Ks2)を生成するために用いられる乱数を発生するものである。
署名演算部233は、暗号エンジン205の外部へ出力される情報に付加される電子署名データを演算するものである。
(コンテンツ利用システムによるライセンスデータの復元動作)
次に、図7〜図14を参照して、上述したコンテンツ利用システム10(ストレージデバイス200及びコンテンツ再生装置300)によるライセンスデータLICの復元動作について説明する。
(1)全体概略動作
図7は、コンテンツ利用システム10によるライセンスデータLICの復元動作を含む全体概略動作フローである。
同図に示すように、ステップS10において、ストレージデバイス200及びコンテンツ再生装置300(コントローラ301,暗号エンジン305)は、ストレージデバイス200とコンテンツ再生装置300との間において、再度、通信コネクションを確立する必要がある場合、“再コネクション処理”を実行する。なお、再コネクション処理の具体的な内容については、後述する。
ステップS20において、コントローラ301は、ストレージデバイス200との間において、通信コネクションが確立しているか否かを判定する。
ストレージデバイス200との間において通信コネクションが確立している場合(ステップS20のYES)、ステップS30において、コントローラ301は、転送ログリスト(コンテンツ利用情報ログ)の送信要求を暗号エンジン305に送信する。
ストレージデバイス200との間において通信コネクションが確立していない場合(ステップS20のNO)、コントローラ301は、ステップS100の処理を実行する。
ステップS40において、暗号エンジン305は、転送ログリストの送信要求をコントローラ301から受信する。
ステップS50において、暗号エンジン305は、転送ログリストに基づいて、許諾情報LCとアドレス情報ADRとが連結された“LC‖ADR”のリストをコントローラ301に送信する。
ここで、“転送ログリスト”には、以下のようなコンテンツ利用情報ログが格納される。すなわち、ストレージデバイス200からコンテンツ再生装置300へのライセンスデータLICの送信中に、ストレージデバイス200とコンテンツ再生装置300との通信路が切断され、コンテンツ再生装置300がライセンスデータLICを正常に受信することができなかった場合、及びコンテンツ再生装置300がライセンスデータLICを正常に受信したものの、コンテンツ鍵Kcontによる復号、つまり、ディジタルコンテンツが利用されたと判定される前に、コンテンツ再生装置300の電源が切断された場合などの不慮の原因によって処理が完了していない場合におけるコンテンツ利用情報ログが、転送ログリストとして格納される。
“LC‖ADR”のリストは、当該転送ログリストに基づいて送信される。したがって、“LC‖ADR”のリストが空の場合、以前に設定した通信コネクションによって送信されたライセンスデータLICに対するすべての処理が完了していることを示している。
一方、“LC‖ADR”のリストが空でない場合、つまり、“LC‖ADR”のリストに何らかの情報が含まれている場合、ライセンスデータLICを復元する必要がある可能性を示している。
ステップS60において、コントローラ301は、“LC‖ADR”のリストを暗号エンジン305から受信する。
ステップS70において、コントローラ301は、受信した“LC‖ADR”のリストの内容が空か否か、つまり、“LC‖ADR”のリストに情報が含まれているか否かを判定する。
“LC‖ADR”のリストの内容が空の場合(ステップS70のYES)、コントローラ301は、ライセンスデータLICの復元は不要と判定し、ステップS160の処理(リード転送処理)を実行する。
“LC‖ADR”のリストの内容が空でない場合(ステップS70のNO)、ステップS80において、ストレージデバイス200及びコンテンツ再生装置300は、ライセンスデータLICの内容を、ディジタルコンテンツの利用に伴うライセンスデータLICの更新前の状態に復元する“復元転送処理”を実行する。なお、復元転送処理の具体的な内容については、後述する。
ステップS90において、コントローラ301は、ステップS80において復元転送処理が完了したことに基づいて、“LC‖ADR”のリストから、復元の対象となった転送ログリスト(コンテンツ利用情報ログ)を削除する。
ステップS100において、ストレージデバイス200及びコンテンツ再生装置300は、ストレージデバイス200とコンテンツ再生装置300との間において、通信コネクションを確立する“コネクション処理”を実行する。なお、コネクション処理の具体的な内容については、後述する。
ステップS110において、コントローラ301は、ストレージデバイス200との間において、通信コネクションが確立しているか否かを判定する。
ストレージデバイス200との間において、通信コネクションが確立していない場合(ステップS110のNO)、コントローラ301は、ストレージデバイス200との間において、通信コネクションが確立できないと判定し、異常終了として処理を終了する。
ストレージデバイス200との間において通信コネクションが確立している場合(ステップS110のYES)、ステップS120において、コントローラ301は、転送ログリストの破棄要求を暗号エンジン305に送信する。
つまり、ステップS100におけるコネクション処理が実行された場合、過去にライセンスデータLICの復元のために記録された転送ログリストは不要と判定し、コントローラ301は、転送ログリストの破棄要求を暗号エンジン305に送信する。
ステップS130において、暗号エンジン305は、転送ログリストの破棄要求を受信する。ステップS140において、暗号エンジン305は、受信した転送ログリストの破棄要求に基づいて、ログ格納部335に格納されている転送ログリストを破棄する。
ステップS150において、コントローラ301は、リード要求を実行するか否か、具体的には、ディジタルコンテンツを利用するためにライセンスデータLICを読み出すか、処理を終了するかを判定する。
ここで、「ライセンスデータLICを読み出す」とは、コンテンツ再生装置300のユーザによって再生が指示されたディジタルコンテンツと対応するライセンスデータLICの読出しを開始することをいう。
また、「処理を終了する」とは、コンテンツ再生装置300の電源を正常な処理を経て切断することや、節電を目的とした低消費電力状態に移行するために、ストレージデバイス200への電源の供給を停止することなどである。
つまり、ステップS150において、コントローラ301は、次の処理を開始する指示を待っている状態である。
リード要求を実行する場合(ステップS150のYES)、ステップS160において、ストレージデバイス200及びコンテンツ再生装置300は、暗号化されたディジタルコンテンツをストレージデバイス200から読み出して再生する“リード転送処理”を実行する。
また、ストレージデバイス200及びコンテンツ再生装置300は、リード転送処理が終了するとステップS150の処理に戻り、次のライセンスデータLICなどの転送に備える。
(2)コネクション処理
図8及び図9は、上述したステップS100のコネクション処理の内容を示している。図8に示すように、ステップS100−1において、コントローラ301は、証明書の送信要求を暗号エンジン305に送信する。ステップS100−3において、暗号エンジン305は、証明書の送信要求をコントローラ301から受信する。
ステップS100−5において、暗号エンジン305は、コンテンツ再生装置300の証明書C[KPd3]をコントローラ301に送信する。ステップS100−7において、コントローラ301は、証明書C[KPd3]を暗号エンジン305から受信する。
ステップS100−9において、コントローラ301は、証明書C[KPd3]の検証命令をストレージデバイス200に送信する。ステップS100−11において、ストレージデバイス200は、証明書C[KPd3]の検証命令をコントローラ301から受信する。
ステップS100−13において、コントローラ301は、暗号エンジン305から受信した証明書C[KPd3]をストレージデバイス200に送信する。ステップS100−15において、ストレージデバイス200は、証明書C[KPd3]をコントローラ301から受信する。
ステップS100−17において、ストレージデバイス200は、証明書C[KPd3]を検証し、証明書C[KPd3]が正当なものであるか否かを判定する。
証明書C[KPd3]が正当なものである場合(ステップS100−17のYES)、ステップS100−19において、ストレージデバイス200は、証明書C[KPd3]に含まれる公開鍵KPd3を保持する。
証明書C[KPd3]が正当なものでない場合(ステップS100−17のNO)、ストレージデバイス200は、ステップS10−45において、証明書C[KPd3]の検証ができなかったことを示す検証エラー通知をコントローラ301に送信する。
ステップS100−21において、コントローラ301は、第1チャレンジ情報の生成命令をストレージデバイス200に発行する。ステップS100−23において、ストレージデバイス200は、第1チャレンジ情報の生成命令をコントローラ301から受理する。
ステップS100−25において、ストレージデバイス200は、第1チャレンジ情報の生成命令に基づいて、対称鍵Kc2を生成して保持する。
ステップS100−27において、ストレージデバイス200は、生成した対称鍵Kc2を用いて、第1チャレンジ情報E(KPd3,Kc2)‖C[KPd2]を生成する。
ステップS100−29において、コントローラ301は、第1チャレンジ情報の出力命令をストレージデバイス200に発行する。ステップS100−31において、ストレージデバイス200は、第1チャレンジ情報の出力命令をコントローラ301から受理する。
ステップS100−33において、ストレージデバイス200は、第1チャレンジ情報E(KPd3,Kc2)‖C[KPd2]をコントローラ301に送信する。ステップS100−35において、コントローラ301は、ストレージデバイス200によって送信された第1チャレンジ情報E(KPd3,Kc2)‖C[KPd2]を取得し、取得した第1チャレンジ情報を暗号エンジン305に送信する。
ステップS100−37において、暗号エンジン305は、第1チャレンジ情報E(KPd3,Kc2)‖C[KPd2]を受信する。
ステップS100−39において、暗号エンジン305は、第1チャレンジ情報E(KPd3,Kc2)‖C[KPd2]に含まれている証明書C[KPd2]を検証し、証明書C[KPd2]が正当なものであるか否かを判定する。
証明書C[KPd2]が正当なものでない場合(ステップS100−39のNO)、ステップS100−41において、暗号エンジン305は、検証エラー通知をコントローラ301に送信する。ステップS100−43において、コントローラ301は、検証エラー通知を暗号エンジン305またはストレージデバイス200から受信し、異常終了としてコネクション処理を終了する。
証明書C[KPd2]が正当なものである場合(ステップS100−39のYES)、ステップS100−47において、暗号エンジン305は、第1チャレンジ情報E(KPd3,Kc2)‖C[KPd2]の前半部E(KPd3,Kc2)を復号する。
次に、図9に示すように、ステップS100−49において、コントローラ301は、第2チャレンジ情報の送信要求を暗号エンジン305に送信する。ステップS100−51において、暗号エンジン305は、第2チャレンジ情報の送信要求をコントローラ301から受信する。
ステップS100−53において、暗号エンジン305は、第2チャレンジ情報の生成命令に基づいて、対称鍵Kb3を生成して保持する。
ステップS100−55において、暗号エンジン305は、生成した対称鍵Kb3を用いて、第2チャレンジ情報E(Kc2,E(KPd2,KPp3‖Kb3))を生成し、生成した第2チャレンジ情報E(Kc2,E(KPd2,KPp3‖Kb3))をコントローラ301に送信する。
ステップS100−57において、コントローラ301は、第2チャレンジ情報E(Kc2,E(KPd2,KPp3‖Kb3))を暗号エンジン305から受信する。
ステップS100−59において、コントローラ301は、第2チャレンジ情報の処理命令をストレージデバイス200に発行する。ステップS100−61において、ストレージデバイス200は、第2チャレンジ情報の処理命令をコントローラ301から受理する。
ステップS100−63において、コントローラ301は、第2チャレンジ情報E(Kc2,E(KPd2,KPp3‖Kb3))をストレージデバイス200に送信する。ステップS100−65において、ストレージデバイス200は、第2チャレンジ情報E(Kc2,E(KPd2,KPp3‖Kb3))をコントローラ301から受信する。
ステップS100−67において、ストレージデバイス200は、第2チャレンジ情報E(Kc2,E(KPd2,KPp3‖Kb3))を復号する。
ステップS100−69において、ストレージデバイス200は、対称鍵Kb2を生成して保持する。ステップS100−71において、ストレージデバイス200は、対称鍵Kb2を用いて、コネクション情報E(KPp3,Kb2‖KPp2)を生成する。
ステップS100−73において、コントローラ301は、コネクション情報の出力命令をストレージデバイス200に発行する。ステップS100−75において、ストレージデバイス200は、コネクション情報の出力命令をコントローラ301から受理する。
ステップS100−77において、ストレージデバイス200は、コネクション情報E(KPp3,Kb2‖KPp2)を出力する。さらに、ストレージデバイス200は、“接続ログ”にKPp3,Kb2,Kb3を記録する。
なお、接続ログは、再コネクション処理において用いられ、最新の通信コネクション(再コネクション処理による通信コネクションを含む)において共有された対称鍵Kb2,Kb3と、当該通信コネクション先の公開鍵KPp3とが、それぞれひとつが記憶される。
ステップS100−79において、コントローラ301は、ストレージデバイス200によって送信されたコネクション情報E(Kb3,E(KPp3,Kb2‖KPp2))を取得し、取得したコネクション情報を暗号エンジン305に送信する。
ステップS100−81において、暗号エンジン305は、コネクション情報E(Kb3,E(KPp3,Kb2‖KPp2))をコントローラ301から受信する。ステップS100−83において、暗号エンジン305は、コネクション情報E(Kb3,E(KPp3,Kb2‖KPp2))を復号して、対称鍵Kb2及び公開鍵KPp2を取り出す。
ステップS100−85において、暗号エンジン305は、コネクション情報E(Kb3,E(KPp3,Kb2‖KPp2))から取り出した対称鍵Kb2及び公開鍵KPp2を保持し、“接続ログ”にKPp2,Kb2,Kb3を記録し、コネクション処理を終了する。
すなわち、ステップS100−85までの処理が実行されることによって、ストレージデバイス200(暗号エンジン205)及び暗号エンジン305の公開鍵KPp2とKPp3とが交換されるとともに、ストレージデバイス200及びコンテンツ再生装置300の双方において、一時的にKb2及びKb3が共有され、通信コネクションが確立する。そして、この確立した通信コネクションによって、暗号通信が行われる。
なお、接続ログは、再コネクション処理において用いられ、最新の通信コネクション(再コネクション処理による通信コネクションを含む)において共有された対称鍵Kb2,Kb3と、当該通信コネクション先の公開鍵KPp2とが、それぞれひとつ記憶される。
(3)再コネクション処理
図10は、上述したステップS10の再コネクション処理の内容を示している。同図に示すように、ステップS10−1において、コントローラ301は、ストレージデバイス200とコンテンツ再生装置300との間において再び通信コネクションを確立するために必要となる第1リコネクション情報の送信要求を暗号エンジン305に送信する。ステップS10−3において、暗号エンジン305は、第1リコネクション情報の送信要求をコントローラ301から受信する。
ステップS10−5において、暗号エンジン305は、第1リコネクション情報の送信要求に基づいて、対称鍵Kb3を生成して保持する。
ステップS10−7において、暗号エンジン305は、接続ログから公開鍵KPp2及び対称鍵Kb2oldを取得する。なお、対称鍵Kb2old,Kb3oldは、ステップS10−7の処理の時点において、接続ログに記録されている対称鍵Kb2,Kb3を意味する。
暗号エンジン305は、公開鍵KPp2及び対称鍵Kb2oldを取得して第1リコネクション情報E(KPp2,E(Kb2old,Kb3))を生成し、生成した第1リコネクション情報をコントローラ301に送信する。
ステップS10−9において、コントローラ301は、第1リコネクション情報E(KPp2,E(Kb2old,Kb3))を暗号エンジン305から受信する。
ステップS10−11において、コントローラ301は、第1リコネクション情報の処理命令をストレージデバイス200に発行する。ステップS10−13において、ストレージデバイス200は、第1リコネクション情報の処理命令をコントローラ301から受理する。
ステップS10−15において、コントローラ301は、第1リコネクション情報E(KPp2,E(Kb2old,Kb3))をストレージデバイス200に送信する。ステップS10−17において、ストレージデバイス200は、第1リコネクション情報E(KPp2,E(Kb2old,Kb3))をコントローラ301から受信する。
ステップS10−19において、ストレージデバイス200は、接続ログから対称鍵Kb2oldを取得して、第1リコネクション情報を復号し、対称鍵Kb3を取り出す。
ステップS10−21において、ストレージデバイス200は、対称鍵Kb2を生成して保持する。ステップS10−23において、ストレージデバイス200は、接続ログから公開鍵KPp3及び対称鍵Kb3oldを取得して、第2リコネクション情報E(KPp3,E(Kb3old,Kb2))を生成する。
ステップS10−25において、コントローラ301は、第2リコネクション情報の出力命令をストレージデバイス200に発行する。ステップS10−27において、ストレージデバイス200は、第2リコネクション情報の出力命令をコントローラ301から受理する。
ステップS10−29において、ストレージデバイス200は、第2リコネクション情報E(KPp3,E(Kb3old,Kb2))を出力する。さらに、ストレージデバイス200は、接続ログに記録されている対称鍵Kb2old,Kb3oldをKb2,Kb3に書き換える。
ステップS10−31において、コントローラ301は、ストレージデバイス200によって送信された第2リコネクション情報E(KPp3,E(Kb3old,Kb2))を取得し、取得した第2リコネクション情報を暗号エンジン305に送信する。
ステップS10−33において、暗号エンジン305は、第2リコネクション情報E(KPp3,E(Kb3old,Kb2))をコントローラ301から受信する。
ステップS10−35において、暗号エンジン305は、接続ログから対称鍵Kb3oldを取得して、第1リコネクション情報を復号し、対称鍵Kb2を取り出す。
ステップS10−37において、暗号エンジン305は、ストレージデバイス200とコンテンツ再生装置300との間において、通信コネクションが確立されたか否か、つまり、ストレージデバイス200(暗号エンジン205)及び暗号エンジン305において、対称鍵Kb2,Kb3が共有されたか否かを判定する。
ストレージデバイス200との間において通信コネクションが確立している場合(ステップS10−37のYES)、ステップS10−39において、暗号エンジン305は、対称鍵Kb2,KPp2を保持し、接続ログに記録されている対称鍵Kb2old,Kb3oldをKb2,Kb3に書き換え、再コネクション処理を終了する。
ストレージデバイス200との間において、通信コネクションが確立していない場合(ステップS10−37のNO)、コントローラ301及び暗号エンジン305は、ストレージデバイス200との間において、通信コネクションが確立できないと判定し、異常終了として再コネクション処理を終了する。
なお、通信コネクションが確立しているか否かは、例えば、復号したディジタルコンテンツのデータ構造が定められた形式であるか否かによって判定することができる。
また、ステップS10−37における通信コネクションの確立を判定することなく、常に通信コネクションが確立しているものとして、処理を継続するようにしてもよい。
この場合、通信コネクションが確立していれば、以降の暗号化されたデータが正常に転送される。通信コネクションが確立していなければ、暗号化されたデータを転送しても当該データを復号することができないからである。
(4)リード転送処理
図11及び図12は、上述したステップS160のリード転送処理の内容を示している。図11に示すように、ステップS160−1において、コントローラ301は、転送ログリストを参照し、ストレージデバイス200(耐タンパ性データ格納部207)に格納されているライセンスデータLICを読み出すライセンス読出命令をストレージデバイス200に発行するとともに、ライセンスデータLICが格納されている耐タンパ性データ格納部207のアドレスを指定する。
ステップS160−3において、ストレージデバイス200は、ライセンス読出命令をコントローラ301から受理する。ステップS160−5において、ストレージデバイス200は、指定されたアドレスに格納されたライセンスデータLICを読み出して保持する。
ステップS160−7において、コントローラ301は、許諾情報LCの出力命令をストレージデバイス200に発行する。ステップS160−9において、ストレージデバイス200は、許諾情報LCの出力命令をコントローラ301から受理する。
ステップS160−11において、ストレージデバイス200は、ライセンスデータLICに含まれている許諾情報LCをコントローラ301に送信する。
ステップS160−13において、コントローラ301は、ストレージデバイス200から受信した許諾情報LCに含まれている利用則ACとUCとが連結された“AC‖UC”の内容がOKか否か、つまり、対応するディジタルコンテンツが利用(例えば、再生)可能か否かを判定する。
当該ディジタルコンテンツが利用可能な場合(ステップS160−13のYES)、テップS160−15において、コントローラ301は、セッション情報の送信要求(LC‖ADR‖P)を暗号エンジン305に送信する。なお、処理情報“P”とは、当該ディジタルコンテンツの利用種別(再生(playback)、複製(copy)及び移動(move))を示すものである。
当該ディジタルコンテンツが利用可能でない場合(ステップS160−13のNO)、コントローラ301は、異常終了としてリード転送処理を終了する。
ステップS160−17において、暗号エンジン305は、セッション情報の送信要求をコントローラ301から受信する。
ステップS160−19において、暗号エンジン305は、セッション情報の送信要求に基づいて、対称鍵Ks3を生成して保持する。
ステップS160−21において、暗号エンジン305は、受信したセッション情報の送信要求(LC‖ADR‖P)を転送ログリストに追記する。なお、処理情報“P”は当該送信要求に含まれていなくてもよい。ストレージデバイス200内に格納されているライセンスデータLICに含まれている利用則ACの内容が変化することによって、処理情報“P”の内容を確認することができる。
ステップS160−23において、暗号エンジン305は、セッション情報E(Kb2,Ks3)を生成し、生成したセッション情報をコントローラ301に送信する。ステップS160−25において、コントローラ301は、セッション情報をコントローラ301から受信する。
ステップS160−27において、コントローラ301は、セッション情報の処理命令をストレージデバイス200に発行する。このとき、コントローラ301は、利用種別も併せて指定する。
ステップS160−29において、ストレージデバイス200は、セッション情報の処理命令をコントローラ301から受理する。
ステップS160−31において、コントローラ301は、セッション情報E(Kb2,Ks3)をストレージデバイス200に送信する。ステップS160−33において、ストレージデバイス200は、セッション情報をコントローラ301から受信する。
ステップS160−35において、ストレージデバイス200は、セッション情報の処理命令によって指定された利用種別と、当該ライセンスデータLICに含まれている利用則ACに基づいて、ライセンスデータLICの出力の可否を判定する。
コンテンツ再生装置300に適用される利用種別は、再生(playback)のみである。したがって、1)利用則ACにおいてディジタルコンテンツの再生回数が設定され、再生回数の値が“0”(つまり、再生回数の残りがない)である場合、2)当該ライセンスデータLICが、以前に移動(move)の対象となり、出力が不可とされている場合、3)利用則ACに出力先の要件が記載されており、コンテンツ再生装置300が当該要件に反している場合などにおいて、ストレージデバイス200は、ライセンスデータLICを出力できないと判定する。
なお、移動(move)について出力不可の状態を設定している理由は、移動(move)によってライセンスデータLICを削除してしまうと、ライセンスデータLICの復元ができなくなるためである。また、本実施形態では、移動(move)による出力不可の状態を利用則ACに反映して、利用則ACに基づいて、ライセンスデータLICの出力可否を判定できるものとする。
しかしながら、必ずしも移動(move)による出力不可の状態を利用則ACに反映させる必要はなく、別途、新たな“状態情報”を用いて、当該出力可否を判定してもよい。この場合、ステップS160−35において、ストレージデバイス200は、当該状態情報も参照して、当該出力可否を判定する。
また、コンテンツ再生装置300に代えて、コンテンツ記録装置100を用いた場合、利用種別は、複製(copy)または移動(move)となる。複製(copy)の場合、再生回数に代えて、“複製禁止/複製回数”による判定が加えられる。移動(move)の場合、再生回数に代えて、“移動禁止”による判定が加えられる。
ライセンスデータLICを出力可能でない場合(ステップS160−35のNO)、テップS160−37において、ストレージデバイス200は、ライセンスデータLICを出力可能でないことを示すエラー通知をコントローラ301に送信する。ステップS160−39において、コントローラ301は、エラー通知をストレージデバイス200から受信し、異常終了としてリード転送処理を終了する。
ライセンスデータLICを出力可能である場合(ステップS160−35のYES)、ステップS160−41において、ストレージデバイス200は、受信したセッション情報E(Kb2,Ks3)を復号する。
次に、図12に示すように、ステップS160−43において、ストレージデバイス200は、暗号化されたライセンスデータLICであるE(Ks3,E(KPp3,LIC))を生成する。
ステップS160−45において、コントローラ301は、暗号化ライセンスデータの出力命令をストレージデバイス200に発行する。ステップS160−47において、ストレージデバイス200は、暗号化ライセンスデータの出力命令をコントローラ301から受理する。
ステップS160−49において、ストレージデバイス200は、耐タンパ性データ格納部207の特定のアドレスに格納されたライセンスデータLICの利用則ACの内容を変更する。例えば、利用則ACにおいて、ディジタルコンテンツの再生回数が100回と規定されている場合、当該回数を99回に減算する。
なお、複製(copy)の場合、複製回数が規定されていれば、当該回数を“1”減算する。移動(move)の場合、当該ライセンスデータLICを以後出力できない出力不可の状態とする。
ステップS160−51において、ストレージデバイス200は、生成した暗号化ライセンスデータE(Ks3,E(KPp3,LIC))をコントローラ301に送信する。ステップS160−53において、コントローラ301は、ストレージデバイス200によって送信された暗号化ライセンスデータE(Ks3,E(KPp3,LIC))を取得し、取得した暗号化ライセンスデータを暗号エンジン305に送信する。
ステップS160−55において、暗号エンジン305は、暗号化ライセンスデータE(Ks3,E(KPp3,LIC))をコントローラ301から受信する。
ステップS160−57において、暗号エンジン305は、暗号化ライセンスデータE(Ks3,E(KPp3,LIC))を復号する。
ステップS160−59において、暗号エンジン305は、復号したライセンスデータLICが、格納している転送ログリストに含まれているライセンスID(LID)と一致するか否かを判定する。さらに、暗号エンジン305は、ライセンスID(LID)が一致しているライセンスデータLICに含まれている利用則UCをチェックし、再生要件を確認する。
ライセンスID(LID)が一致しない場合または再生要件を満たさない場合(ステップS160−59のNO)、ステップS160−61において、暗号エンジン305は、再生できないことを示すエラー通知をコントローラ301に送信する。
ライセンスID(LID)が一致し、再生要件を満たす場合(ステップS160−59のYES)、ステップS160−63において、暗号エンジン305は、ライセンスデータLICに含まれているコンテンツ鍵Kcontを復号器307に供給するために保持するか、コンテンツ鍵Kcontの利用を終了し、コンテンツ鍵Kcontを破棄するか否かを判定する。
コンテンツ鍵Kcontを保持した場合(ステップS160−63のYES)、ステップS160−65において、暗号エンジン305は、ディジタルコンテンツが利用された判定されるような利用(例えば、音楽データを所定秒数以上に渡って再生した場合)があったか否かを監視する。
ディジタルコンテンツが利用されたと判定されるような利用がない場合(ステップS160−65のNO)、暗号エンジン305は、ステップS160−63からの処理を繰り返す。
ディジタルコンテンツが利用されたと判定されるような利用があった場合(ステップS160−65のYES)、ステップS160−67において、暗号エンジン305は、当該ディジタルコンテンツと対応付けられているライセンスデータLICのライセンスID(LID)を確認し、該当する“(LC‖ADR‖P)”を転送ログリストから削除する。
なお、ステップS160−63〜S160−65の処理は、コンテンツ鍵Kcontが保持されている間、定期的に繰り返し実行される。
コンテンツ鍵Kcontを破棄する場合(ステップS160−63のNO)、またはステップS160−61の処理に続き、ステップS160−69において、コントローラ301は、ストレージデバイス200から受信したライセンスデータLICの内容を、当該ディジタルコンテンツの利用に伴う更新前の状態に復元する必要があるか否かを判定する。
つまり、当該ディジタルコンテンツが利用されたと判定されるような利用がない場合、例えば、コンテンツ再生装置300が、ストレージデバイス200から所定のディジタルコンテンツを再生するためのライセンスデータLICを取得したにもかかわらず、当該ライセンスデータLICと対応するディジタルコンテンツを全く再生しなかったり、利用と判定されないような短時間の再生であったりした場合、コントローラ301は、ライセンスデータLICの内容を、当該ディジタルコンテンツの利用に伴う更新前の状態に復元する必要があると判定する。
ライセンスデータLICの内容を復元する必要がある場合(ステップS160−69のYES)、ステップS160−71において、ストレージデバイス200及びコンテンツ再生装置300は、“復元転送処理”を実行する。
なお、ステップS160−71における“復元転送処理”の内容は、ステップS80における“復元転送処理”の内容と同様である。つまり、ステップS160−71における“復元転送処理”は、“リード転送処理”中おいて、ライセンスデータLICの内容を復元する必要があると判定された場合に実行される。
ライセンスデータLICの内容を復元する必要がない場合(ステップS160−69のNO)、コントローラ301は、リード転送処理を終了する。
(5)復元転送処理
図13及び図14は、上述したステップS80の復元転送処理の内容を示している。図13に示すように、ステップS80−1において、コントローラ301は、転送ログリストを参照し、ストレージデバイス200(耐タンパ性データ格納部207)に格納されているライセンスデータLICを読み出すライセンス読出命令をストレージデバイス200に発行するとともに、ライセンスデータLICが格納されている耐タンパ性データ格納部207のアドレスを指定する。
ステップS80−3において、ストレージデバイス200は、ライセンス読出命令をコントローラ301から受理する。ステップS80−5において、ストレージデバイス200は、指定されたアドレスに格納されたライセンスデータLICを読み出して保持する。
ステップS80−7において、コントローラ301は、許諾情報LCの出力命令をストレージデバイス200に発行する。ステップS80−9において、ストレージデバイス200は、許諾情報LCの出力命令をコントローラ301から受理する。
ステップS80−11において、ストレージデバイス200は、ライセンスデータLICに含まれている許諾情報LCをコントローラ301に送信する。ステップS80−13において、コントローラ301は、許諾情報LCをストレージデバイス200から受信する。
ステップS80−15において、コントローラ301は、ストレージデバイス200から受信した許諾情報LCに基づいて、ライセンスデータLICの内容を、対応するディジタルコンテンツの利用に伴う更新前の状態に復元する必要があるか否かを判定する。
具体的には、コントローラ301は、ストレージデバイス200から受信した許諾情報LCに含まれているライセンスID(LID)が、判定の対象となる許諾情報LCに含まれているライセンスID(LID)と一致し、それぞれの許諾情報LCに含まれている利用則ACの内容が異なる場合、すなわち、リード転送処理が中断され(転送ログリストに同一のライセンスID(LID)が含まれる)、先のライセンスデータLICの送信によって、ストレージデバイス200に格納されているライセンスデータLICに含まれている利用則ACの内容が更新されている(それぞれの許諾情報LCに含まれている利用則ACの内容が異なる)場合、ライセンスデータLICの復元が必要であると判定する。
ストレージデバイス200に格納されているライセンスデータLICを復元する必要がある場合(ステップS80−15のYES)、ステップS80−17において、コントローラ301は、セッション情報の生成命令をストレージデバイス200に発行する。
ストレージデバイス200に格納されているライセンスデータLICを復元する必要がない場合(ステップS160−15のNO)、コントローラ301は、復元転送処理を終了する。
ステップS80−19において、ストレージデバイス200は、セッション情報の生成命令をコントローラ301から受理する。
ステップS80−21において、ストレージデバイス200は、対称鍵Ks2を生成して保持する。ステップS80−23において、ストレージデバイス200は、対称鍵Ks2を用いて、セッション情報E(Kb3,Ks2)を生成する。
ステップS80−25において、コントローラ301は、セッション情報の出力命令をストレージデバイス200に発行する。ステップS80−27において、ストレージデバイス200は、セッション情報の出力命令をコントローラ301から受理する。
ステップS80−29において、ストレージデバイス200は、セッション情報E(Kb3,Ks2)をコントローラ301に送信する。ステップS80−31において、コントローラ301は、セッション情報をストレージデバイス200から受信する。
ステップS80−33において、コントローラ301は、ログ検証要求(セッション情報‖許諾情報LC)を暗号エンジン305に送信する。ステップS80−35において、暗号エンジン305は、ログ検証要求(具体的には、ログ検証要求に含まれている許諾情報LC)をコントローラ301から受信する。
ステップS80−37において、暗号エンジン305は、コントローラ301から受信した許諾情報LCの内容と、転送ログリストに含まれている許諾情報LCの内容とを確認、具体的には、コントローラ301から受信した許諾情報LCに含まれているライセンスID(LID)と同一のライセンスID(LID)を含む許諾情報LCが転送ログリストに含まれているか否かを判定する。
該当する許諾情報LCが転送ログリストに含まれている場合(ステップS80−37のYES)、ステップS80−39において、暗号エンジン305は、それぞれの許諾情報LCに含まれている利用則ACの内容を比較する。
2つの利用則ACの内容が異なる場合(ステップS80−39のYes)、つまり、先のライセンスデータLICの送信において、ストレージデバイス200に格納されているライセンスデータLICに含まれている利用則ACが更新されていると判定された場合、暗号エンジン305は、図14に示すステップS80−45の処理に移行する。
該当する許諾情報LCが転送ログリストに含まれていない場合(ステップS80−37のNO)、及び2つの利用則ACが一致し、内容が更新されていないと判定される場合(ステップS80−39のNO)、ステップS80−41において、暗号エンジン305は、ライセンスデータLICを復元できないことを示すエラー通知をコントローラ301に送信する。
ステップS80−43において、コントローラ301は、エラー通知を暗号エンジン305から受信し、異常終了として転送復元処理を終了する。
次に、図14に示すように、ステップS80−45において、暗号エンジン305は、受信したセッション情報E(Kb3,Ks2)を復号し、対称鍵Ks2を取り出す。
ステップS80−47において、暗号エンジン305は、対称鍵Ks2と、ストレージデバイス200の公開鍵KPp3とを用いて“LID‖AC”を暗号化した復元情報E(Ks2,E(KPp2,LID‖AC))を生成し、生成した復元情報E(Ks2,E(KPp2,LID‖AC))をコントローラ301に送信する。ステップS80−49において、コントローラ301は、復元情報E(Ks2,E(KPp2,LID‖AC))を暗号エンジン305から受信する。
ステップS80−51において、コントローラ301は、ライセンスデータLICの復元命令をストレージデバイス200に発行する。また、コントローラ301は、ストレージデバイス200(耐タンパ性データ格納部207)におけるライセンスデータLICの格納先アドレスを指定してストレージデバイス200に通知する。
ステップS80−53において、ストレージデバイス200は、ライセンスデータLICの復元命令をコントローラ301から受理する。ストレージデバイス200は、当該復元命令に基づいて、復元情報E(Ks2,E(KPp2,LID‖AC))の送信をコントローラ301に要求する。
ステップS80−55において、コントローラ301は、復元情報E(Ks2,E(KPp2,LID‖AC))をストレージデバイス200に送信する。
ステップS80−57において、ストレージデバイス200は、復元情報E(Ks2,E(KPp2,LID‖AC))をコントローラ301から受信する。さらに、ストレージデバイス200は、E(Ks2,E(KPp2,LID‖AC))を秘密鍵Kp2と対称鍵Ks2とを用いて復号し、ライセンスID(LID)と利用則ACとを取り出す。
ステップS80−58において、ストレージデバイス200は、コントローラ301によって指定された当該アドレスに格納されているライセンスデータLICに含まれているライセンスID(LID)と、E(Ks2,E(KPp2,LID‖AC))を復号して取り出したライセンスID(LID)とが一致するか否かを判定する。
ライセンスID(LID)が一致しない場合(ステップS80−58のNO)、ステップS80−60において、ストレージデバイス200は、復元情報E(Ks2,E(KPp2,LID‖AC))を信頼できない情報と判定し、ライセンスデータLICの復元命令に対する処理を実行しないことを示すエラー通知を、コントローラ301に送信する。
ステップS80−62において、コントローラ301は、エラー通知をストレージデバイス200から受信し、異常終了として復元転送処理を終了する。
一方、ライセンスID(LID)が一致した場合、ステップS80−59において、ストレージデバイス200は、コントローラ301によって指定された当該アドレスに格納されているライセンスデータLICに含まれている利用則ACを復元情報から取り出した利用則ACに書き換える。このとき、当該アドレスに格納されているライセンスデータLICを、出力可能な状態に設定する。
復元情報から取り出した利用則ACは、先のライセンスデータLICの送信前における利用則ACであり、利用則ACの書き換えは、当該ライセンスデータLICを送信前における状態に復元したことになる。なお、出力可能な状態への設定は、ライセンスデータLICの送信が移動(move)であった場合、出力不可の状態となっているので、当該ライセンスデータLICを送信前の状態に復元する。
これによって、再生(playback)、複製(copy)または移動(move)の利用種別に関係なく、ライセンスデータLICを送信前の状態に復元することができる。したがって、ストレージデバイス200は、先の送信におけるライセンスデータLICの利用種別を復元のために記録しておく必要はない。
ステップS80−61において、ストレージデバイス200は、利用則ACの書き換えが完了したことを示す完了通知をコントローラ301に送信する。なお、当該完了通知には、ライセンスID(LID)が含まれている。
ステップS80−63において、コントローラ301は、ストレージデバイス200によって送信された完了通知を取得し、取得した完了通知を暗号エンジン305に送信する。ステップS80−65において、暗号エンジン305は、完了通知をコントローラ301から受信する。
ステップS80−67において、暗号エンジン305は、受信した完了通知に含まれているライセンスID(LID)を確認し、当該ライセンスID(LID)を有するライセンスデータLICを転送ログリストから削除し、転送復元処理を終了する。
(作用・効果)
以上説明した本実施形態に係るコンテンツ利用システム10によれば、ディジタルコンテンツを利用するための権利を取得したにもかかわらずコンテンツ再生装置300においてディジタルコンテンツが利用されていないと判定された場合、コンテンツ再生装置300は、ストレージデバイス200から受信したライセンスデータLICを更新前の状態に復元することをストレージデバイス200に要求する。
また、ストレージデバイス200では、復元の要求に伴ってコンテンツ再生装置300から受信した転送ログリストの内容が、更新して記憶したライセンスデータLICと一致するか否かを判定し、ライセンスデータLICを更新前の状態に復元する。
すなわち、かかる特徴によれば、ストレージデバイス200によって送信されたライセンスデータLICを用いてディジタルコンテンツが正常に利用されなかった場合、ストレージデバイス200が管理するライセンスデータLICの内容を送信前の状態に復元することができる。
また、コンテンツ利用システム10によれば、ライセンスデータLIC(利用則AC)の送受信の中断などによって、通信コネクションが切断された場合であっても、ライセンスデータLICの送受信に用いられ、一時的に生成されるテンポラリ鍵である対称鍵(Kb2old,Kb3old)を用いて、再度通信コネクションを確立した後に、ライセンスデータLICの内容を送信前の状態に復元する処理が実行される(上述した再コネクション処理を参照)。
すなわち、通信コネクションの切断後であっても、切断された通信コネクションにおいて用いた対称鍵(Kb2old,Kb3old)を用いることによって、ライセンスデータLICを送受信した相手方の装置を確実に特定することができるため、コンテンツ再生装置300のなりすましなど、ディジタルコンテンツを利用する権利の許可範囲を超えるようなライセンスデータLICの復元が防止される。このため、ディジタルコンテンツの利用者の利便性を高めつつ、ディジタルコンテンツの著作者の権利(著作権など)を保護することができる。
(その他の実施形態)
上述したように、本発明の一実施形態を通じて本発明の内容を開示したが、この開示の一部をなす論述及び図面は、本発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態が明らかとなろう。
例えば、上述した本発明の実施形態では、ストレージデバイス200によって送信されるライセンスデータLICは、公開鍵KPp3によって暗号化され、さらに対称鍵Ks3によって暗号化されたE(Ks3,E(KPp3,LIC))としたが、暗号化の順序は、これに限定されるものではない。
例えば、暗号化の順序は、逆(E(KPp3,E(Ks3,LIC))としてもよく、この場合でもE(Ks3,E(KPp3,LIC))と同じ暗号強度を得ることができる。さらに、復元情報E(Ks2,E(KPp2,LID‖AC))についても同様に、E(KPp2,E(Ks2,LID‖AC))としても構わない。
上述した本発明の実施形態では、対称鍵Ks2,Ks3は、セッション情報E(Kb2,Ks3),E(Kb3,Ks2)として、一重の暗号で送信する形態としたが、ライセンスデータLICや復元情報と同様に、二重に暗号化することもできる。例えば、セッション情報をE(Kb2,E(Kb3,Ks3)),E(Kb3,E(Kb2,Ks2))をなどとすればよい。
上述した本発明の実施形態では、通信コネクションの確立時に、ストレージデバイス200と暗号エンジン305との双方が共有した対称鍵Kb2,Kb3をセッション情報の生成に継続して用いる形態としたが、暗号化されたライセンスデータLIC、または復元情報の送受信ごとに、当該対称鍵を更新するようにしてもよい。
この場合、対称鍵Kb2,Kb3として、それぞれ直前に用いた対称鍵Ks2,Ks3(以下、Ks2old,Ks3old)を用いるようにすればよい。
一重に暗号化した場合におけるセッション情報E(Ks2old,Ks3),E(Ks3old,Ks2)を二重に暗号化した場合、セッション情報は、E(Ks2old,E(Ks3old,Ks3)),E(Ks3old,E(Ks2old,Ks2))となる。また、初回のKs2old,Ks3oldとしては、対称鍵Kb2,Kb3を用いればよい。
上述した本発明の実施形態では、通信コネクションの確立時に生成されるテンポラリ鍵である対称鍵Kb2old,Kb3oldを用いて通信コネクションを再確立する形態としたが、必ずしも当該対称鍵を用いなくても構わない。通信コネクションの確立時または確立後に生成した一時的なテンポラリ鍵であれば、どのようなテンポラリ鍵を用いても構わない。
上述した本発明の実施形態では、ストレージデバイス200とコンテンツ再生装置300との間における処理について主に説明したが、本発明は、ストレージデバイス200とコンテンツ記録装置100との間における処理にも適用することができる。
上述した本発明の実施形態では、ディジタルコンテンツの再生(playback)を例として説明したが、本発明は、ディジタルコンテンツの複製(copy)や、ライセンスデータLICの他の記録メディアへの移動(move)にも適用することができる。
上述した本発明の実施形態では、ディジタルコンテンツとして、音楽データを例として説明したが、本発明は、音楽データに限定して適用されるものではなく、映像データ(静止画及び動画)、ゲームなどのプログラム、ドキュメントなどのあらゆるマルチメディア情報に適用することができる。
また、本発明に係る論理ブロック(コントローラ201,暗号エンジン205,コントローラ301,暗号エンジン305)は、パーソナル・コンピュータなどにおいて実行可能なプログラムとして提供することもできる。
このように、本発明は、ここでは記載していない様々な実施の形態などを含むことは勿論である。したがって、本発明の技術的範囲は、上述の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
10…コンテンツ利用システム、100…コンテンツ記録装置、101…コントローラ、103…ストレージインタフェース、105…暗号エンジン、107…復号器、109…暗号器、111…暗号エンジン、113…ストレージインタフェース、115…データバス、200,200A…ストレージデバイス、201…コントローラ、203…ストレージインタフェース、205…暗号エンジン、207…耐タンパ性データ格納部、209…通常データ格納部、211…データバス、221…制御部、223…証明書出力部、225…証明書検証部、227…暗号化部、229…復号部、231…乱数発生部、233…署名演算部、235…ローカルバス、300…コンテンツ再生装置、301…コントローラ、303…ストレージインタフェース、305…暗号エンジン、307…復号器、309…コンテンツデコーダ、311…データバス、321…制御部、323…証明書出力部、325…証明書検証部、327…暗号化部、329…復号部、331…乱数発生部、333…署名演算部、335…ログ格納部、337…ローカルバス