本発明の実施の形態について、図を参照しながら以下に説明する。
(第1の実施の形態)
図1は、実施の形態に係るデータ管理システム10の全体構成を示す。
データ管理システム10は、データを送信する配信サーバ100、配信サーバ100から送信されたデータをストレージデバイス200に記録する端末装置150、ストレージデバイス200に記録されたデータを再生する再生装置300、データを記録保持するストレージデバイス200を備える。
※データ管理システム
本実施の形態のストレージデバイス200は、データを保持する記憶媒体だけでなく、端末装置150または再生装置300などのホスト装置との間で、データの入出力を制御するコントローラなどの構成を備える、ドライブ一体型のストレージデバイスである。本実施の形態では、ストレージデバイス200として、ハードディスクドライブを例にとって説明する。
従来のハードディスクドライブは、一つのホスト装置に固定的に接続されて使用されるのが一般的であったが、本実施の形態のストレージデバイス200は、端末装置150および再生装置300などのホスト装置に対して、着脱が自在になされるよう構成されている。すなわち、本実施の形態のストレージデバイス200は、CDやDVDなどと同様にホスト装置から取り外して持ち運ぶことができ、端末装置150、再生装置300のほか、記録および再生が可能な記録再生装置などの複数のホスト装置間で共用することが可能な記憶装置である。
このように、本実施の形態のストレージデバイス200は、複数のホスト装置に接続されることを前提にしており、たとえば、所有者以外の第三者のホスト装置に接続され、記録されたデータが読み出される可能性もある。
このストレージデバイス200に、音楽や映像などの著作権により保護されるべきコンテンツ、企業や個人の機密情報などの秘匿すべきデータを記録することを想定したとき、それらの秘匿データが外部に漏洩することを防ぐためには、ストレージデバイス200自身にデータを適切に保護するための構成を設け、十分な耐タンパ機能を持たせることが好ましい。
このような観点から、本実施の形態のストレージデバイス200は、ホスト装置との間で秘匿データを入出力するときに、その秘匿データを暗号化してやり取りするための構成を備える。また、秘匿データを格納するために、通常の記憶領域とは異なる機密データ記憶領域を設け、その機密データ記憶領域はストレージデバイス200内に設けられた暗号エンジンを介さないとアクセスできないように構成する。この暗号エンジンは、正当な権限を有すると検証されたホスト装置のみと秘匿データの入出力を行う。
以下、このようなデータ保護機能を「セキュア機能」ともいう。
上記の構成および機能により、ストレージデバイス200に記録された秘匿データを適切に保護することができる。
ストレージデバイス200のリムーバブルメディアとしての特徴を最大限に生かすため、通常のデータについては、セキュア機能に非対応のホスト装置でも入出力可能とするのが好ましい。そのため、本実施の形態のストレージデバイス200は、従来のハードディスクとの互換性を保つべく、ANSI(American National Standards Institute)の標準規格であるATA(AT Attachment)に対応しており、上述のセキュア機能は、ATAの拡張命令として実現される。
以下、秘匿データの入出力の例として、映像などのコンテンツデータを記録再生する場合について説明する。コンテンツデータ自身を秘匿データとして扱ってもよいが、本実施の形態では、コンテンツデータを暗号化し、暗号化されたコンテンツデータ自身は、ストレージデバイス200に通常のデータとして記録する。そして、暗号化されたコンテンツを復号するための鍵(以下、コンテンツ鍵と称す)と、コンテンツの再生制御やライセンスの利用(再生)、ムーブ、コピーに関する制御に関する情報(以下、利用規則と称す)を含むデータ(以下、ライセンスデータと称す)を、秘匿データとして上述のセキュア機能を用いて入出力を行う。これにより、十分な耐タンパ性を維持しつつ、データの入出力を簡略化し、処理の高速化および消費電力の低減を図ることができる。
ここで、ライセンスデータは、コンテンツ鍵や利用規則の他に、ライセンスデータを特定するための識別情報LicIDを含むものとする。また、利用規則として再生を目的としたライセンスデータを出力回数の上限を示す制御情報PCを含むものとする。ここでは、制御情報PCは、1バイトの符号なし整数とし、その値がライセンスデータを出力回数の上限値を示すものとし、ライセンスの出力毎に1減算されるものとする。また、PC=255は、例外として、再生回数の上限設定がないことを示し、再生を目的としたライセンスデータの出力によって、値を変化させないものとする。なお、ここで示した制御情報PCの設定方法および運用方法は、本実施の形態における一例であって、特に限定するものではない。
なお、以下においては、配信サーバ100、再生装置300などのホスト装置がストレージデバイス200に対して発行する命令のうち、セキュア機能のための拡張命令を「セキュアコマンド」とも呼び、その他の命令を「通常コマンド」とも呼ぶ。
※配信システム
図2は、実施の形態に係るコンテンツ配信システムの構成を示す。本実施の形態のコンテンツ配信システムは、コンテンツを配信する配信サーバ100、コンテンツの提供を受ける端末装置150、端末装置150に提供されたコンテンツが記録されるストレージデバイス200を含む。
配信サーバ100および端末装置150は、それぞれ通信装置104、153を介して、ネットワークの一例とするインターネット20により接続される。
配信サーバ100は、暗号器102、暗号エンジン103、通信装置104、コンテンツデータベース105、ライセンスデータベース106、ユーザデータベース107、これらを制御するコントローラ101、およびそれらを電気的に接続するデータバス110を備える。
配信サーバ100の構成は、ハードウエア的には、任意のコンピュータのCPU、メモリ、その他のLSIなどで実現でき、ソフトウエア的にはメモリにロードされた記録制御機能のあるプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
暗号器102は、暗号化コンテンツを復号するためのコンテンツ鍵を含むライセンスデータLICを発行し、このコンテンツ鍵を用いて、コンテンツエンコーダ105にてコーディングされたコンテンツを暗号化する。暗号化されたコンテンツは、データバス110、通信装置104を介して、端末装置150に送信され、ストレージデバイス200に記録される。
暗号エンジン103は、ユーザに提供するライセンスデータLICをストレージデバイス200に記録するために、ストレージデバイス200との間で暗号通信の制御を行う。暗号通信路は、配信サーバのデータバス110、通信装置104、インターネット20、端末装置150の通信装置153、データバス160、コントローラ151、ストレージインタフェース152を介して、直接ストレージメディア200との間で行われる。
通信装置104は、インターネット20を介して、他の装置とデータ交換を行う。ここでは、端末装置150とデータ交換を行う
コンテンツデータベース105は、ユーザに提供するコンテンツを保持する。ライセンスデータベース106は、コンテンツを暗号化するのに用いられるコンテンツ鍵を含むライセンスデータを保持する。ユーザデータベース107は、コンテンツの提供先であるユーザの情報を保持する。たとえば、ユーザの個人情報、ユーザの端末装置150のアドレス、コンテンツの購入履歴、課金情報などを保持してもよい。
配信サーバ100のコントローラ101は、ユーザの要求に応じてコンテンツデータベース105からコンテンツデータを読み出し、また、ライセンスデータベース106からライセンスデータLICを読み出す。読み出したコンテンツデータとライセンスデータLIC内のコンテンツ鍵を暗号器102に伝達し、また、ライセンスデータLICを暗号エンジン103に伝達する。そして、暗号器102にて、コンテンツ鍵でコンテンツデータを暗号化し、暗号化されたコンテンツデータを通信装置104を介して端末装置150に送信する。さらに、暗号エンジン103によって暗号通信路を構築し、これを介してライセンスデータLICを端末装置150に送信する。端末装置150は、受信したライセンスデータLICをストレージデバイス200に記録する。
暗号化されたコンテンツデータおよびライセンスデータLICがストレージデバイス200に記録されると、端末装置150のユーザに対して、コンテンツの提供が行われたとして、このコンテンツ提供の対価を課金すべくユーザデータベース107を更新する。
端末装置150は、ストレージインタフェース152、通信装置153、それらを制御するコントローラ151およびそれらを電気的に接続するデータバス160を備える。端末装置150の構成は、ハードウエア的には、任意のコンピュータのCPU、メモリ、その他のLSIなどで実現でき、ソフトウエア的にはメモリにロードされた記録制御機能のあるプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
ストレージインタフェース152は、ストレージデバイス200とのデータの入出力を制御する。
通信装置153は、インターネット20を介して、他の装置とデータ交換を行う。ここでは、配信サーバ100とデータ交換を行う。
端末装置150のコントローラ151は、ユーザの要求を、通信装置153を介して配信サーバ100に送信する。また、この応答として、配信サーバ100から提供される暗号化されたコンテンツデータとライセンスデータを通信装置153を介して受信し、ストレージインタフェース152を介して、ストレージデバイス200に記憶する。
※再生装置
図3は、実施の形態に係る再生装置300の内部構成を示す。これらの機能ブロックも、ハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できる。
再生装置300は、主に、コントローラ301、ストレージインタフェース302、暗号エンジン303、復号器304、コンテンツデコーダ305、およびそれらを電気的に接続するデータバス310を備える。
ストレージインタフェース302は、ストレージデバイス200とのデータの入出力を制御する。
暗号エンジン303は、コンテンツ鍵を含むライセンスデータLICをストレージデバイス200から受信するために、ストレージデバイス200との間で暗号通信の制御を行う。
復号器304は、ストレージデバイス200から読み出した暗号化されたコンテンツを、ストレージデバイス200から入手したライセンスデータLICに含まれるコンテンツ鍵により復号する。
コンテンツデコーダ305は、復号器304により復号されたコンテンツをデコードして出力する。たとえば、MPEG形式のコンテンツであれば、コンテンツから映像信号と音声信号を復元し、映像信号を図示しない表示装置に出力し、音声信号を図示しないスピーカに出力する。
コントローラ301は、再生装置300の構成要素を統括的に制御する。
※ストレージデバイス
図4は、実施の形態に係るストレージデバイス200の内部構成を示す。ストレージデバイス200は、主に、コントローラ201、ストレージインタフェース202、暗号エンジン203、耐タンパ記憶部204、通常データ記憶記部205、およびそれらを電気的に接続するデータバス210を備える。
ストレージインタフェース202は、配信サーバ100および再生装置300とのデータの入出力を制御する。
暗号エンジン203は、コンテンツ鍵を含むライセンスデータLICなどの秘匿データを配信サーバ100および再生装置300との間で入出力するための暗号通信の制御を行う。
通常データ記憶部205は、暗号化されたコンテンツや通常のデータなどを記録する通常記憶領域である。
耐タンパ記憶部204は、コンテンツ鍵を含むライセンスデータLICなどの秘匿データを記録する機密データ記憶領域である。
通常データ記憶部205は、外部からの直接アクセスによりデータの入出力が行われるが、耐タンパ記憶部204は、暗号エンジン203を介さないとデータの入出力ができないように構成される。
コントローラ201は、ストレージデバイス200の構成要素を統括的に制御する。
※使用する鍵
ここで、本実施の形態で用いる鍵について説明する。本実施の形態では、鍵はすべて大文字の"K"から始まる文字列として表記する。
また、第2文字"が小文字の"c"、"s"、r”のいずれかである場合は、対称鍵(共通鍵)を示す。詳しくは、"c"はチャレンジ鍵であり、ライセンスデータの送信元で生成されるテンポラルな対称鍵を示す。"s"はセッション鍵であり、ライセンスデータの送信先で生成されるテンポラルな対称鍵を示す。"r"はリカバリー鍵であり、ライセンスデータの送信先で生成されるテンポラルな対称鍵を示す。
また、第2文字が大文字の"P"である場合は、公開鍵暗号方式の公開鍵を示す。この鍵には、対応する秘密鍵が必ず存在し、この秘密鍵は公開鍵の表記から第2文字の大文字の"P"を除く表記となる。
鍵を示す文字列が小文字の"d"を含む場合は、装置のグループ毎に与えられた鍵であることを表す。また鍵を示す文字列が小文字"p"を含む場合は、装置毎に与えられた鍵であることを表す。それぞれ、公開鍵と秘密鍵の対として与えられ、グループ毎に与えられた公開鍵KPdxは、電子署名付きの公開鍵証明書C[KPdx]として与えられている。
また、鍵を示す文字列の最後に記載される文字、たとえば、公開鍵KPd2の"2"は、その鍵が与えられる暗号エンジンを識別するための記号である。本実施の形態では、提供先が明確な場合には、数字"1", "2", "3"と表記し、当該暗号エンジン以外から提供される鍵であって提供先が不明な場合あるいは特定しない場合には、"x", "y"などの英文字によって表記する。
本実施の形態では、配信サーバ100の暗号エンジン103に対しては識別記号として"1"、ストレージメディア200の暗号エンジン203については識別記号として"2"、再生装置300の暗号エンジン303については識別記号として"3"をそれぞれ使用する。
※配信サーバの暗号エンジン
図5は、図2に示した配信サーバ100の暗号エンジン103の内部構成を示す。暗号エンジン103は、証明書検証部120、第1暗号部121、乱数発生部122、第1復号部123、第2復号部124、第2暗号部125、第3暗号部126、証明書出力部127、制御部128、ログ記憶部129,ログ検証部130およびこれらの構成要素の少なくとも一部を電気的に接続するローカルバス140を備える。
証明書検証部120は、ストレージデバイス200から取得した証明書C[KPd2]を検証する。証明書C[KPd2]は、公開鍵KPd2を含む平文の情報(以下、「証明書本体」と称す)と、証明書本体に対して付される電子署名からなる。この電子署名は、証明書本体に対してハッシュ関数による演算(以下、この演算処理を「ハッシュ演算」と称す)を施した結果を、第三者機関である。認証局(図示せず)のルート鍵Kaによって暗号化したデータである。ルート鍵Kaは、認証局によって厳重に管理されている非公開な鍵であり、認証局の秘密鍵となる。
証明書検証部120は、このルート鍵Kaと対をなす検証鍵KPaを保持している。この検証鍵KPaは証明書の正当性を検証する公開鍵である。証明書の検証は、証明書の正当性と証明書の有効性によって判断する。
証明書の正当性の確認は、検証すべき証明書の証明書本体に対するハッシュ関数の演算結果と、検証鍵KPaで電子署名を復号した結果を比較する処理であり、両者が一致したとき、正当であると判断する。
証明書検証部120は、無効となった証明書のリストである証明書破棄リスト(Certificate Revocation List:CRLと呼ぶ)を保持し、証明書の有効性について、このCRLに検証すべき証明書が記載されていない場合に有効であると判断する。
このように、証明書の正当性と有効性を判断し正当な証明書を承認する処理を検証と称す。
証明書検証部120は、検証に成功すると、ストレージデバイス200の公開鍵KPd2を取り出して第1暗号部121に伝達し、検証結果を通知する。検証に失敗した場合には、検証エラー通知を出力する。
証明書出力部127は、配信サーバ100の証明書C[KPd1]を出力する。この証明書は、配信サーバ100の公開鍵KPd1を含む証明書本体と、証明書本体に対して付される電子署名からなる。電子署名は、ストレージデバイス200の証明書と同様に、認証局のルート鍵Kaにより暗号化される。
乱数発生部122は、ストレージデバイス200との間で暗号通信を行うために一時的に使用されるチャレンジ鍵Kc1を生成する。暗号通信を行う度に、乱数によりチャレンジ鍵Kc1を生成することで、チャレンジ鍵Kc1を見破られる可能性を最小限に抑えることができる。生成されたチャレンジ鍵Kc1は、第1暗号部121および第1復号部123に伝達される。
第1暗号部121は、ストレージデバイス200にチャレンジ鍵Kc1を通知するために、証明書検証部120により取り出されたストレージデバイス200の公開鍵KPd2でチャレンジ鍵Kc1を暗号化して、暗号化チャレンジ鍵E(KPd2,Kc1)を生成する。そして、暗号化チャレンジ鍵E(KPd2,Kc1)は、証明書出力部127から出力された証明書C「KPd1」と結合され、チャレンジ情報E(KPd2,Kc1)//C「KPd1」とされる。
ここで、記号"//"は、データの連結を示し、E(KPd2,Kc1)//C[KPd1]は、暗号化チャレンジ鍵E(KPd2,Kc1)と証明書C[KPd1]を並べて結合したデータ列を示す。また、Eは暗号化関数を示し、E(KPd2,Kc1)は、公開鍵KPd2でチャレンジ鍵Kc1を暗号化したものであることを示す。
第1復号部123は、チャレンジ鍵Kc1で暗号化されたデータを復号する。ストレージデバイス200で発行されたセッション鍵Ks2およびストレージデバイス200の保持する公開鍵KPp2は、セッション情報E(Kc1,E(KPd1,Ks2)//KPp2)として、ストレージデバイス200から供給されるため、第1復号部123は、乱数発生部122が生成したチャレンジ鍵Kc1を用いてセッション情報を復号し、暗号化セッション鍵E(KPd1,Ks2)および公開鍵KPp2を取り出す。取り出された公開鍵KPp2は第2暗号部125、に伝達され、暗号化セッション鍵E(KPd1,Ks2)は第2復号部124に伝達される。
第2復号部124は、第1復号部123から伝達された、自身の公開鍵KPd1で暗号化された暗号化セッション鍵E(KPd1,Ks2)を、公開鍵KPd1と対をなす秘密鍵Kd1で復号し、セッション鍵Ks2を取り出す。取り出されたセッション鍵Ks2は、第3暗号部126へ伝達される。
第2暗号部125は、暗号器102がコンテンツを暗号化する際に発行したコンテンツ鍵を含むライセンスデータLICを取得し、そのライセンスデータLICをライセンスデータの提供先のストレージデバイス200の公開鍵KPp2で暗号化し、E(KPp2、LIC)を生成する。そして、生成されたE(KPp2、LIC)は、第3暗号部126に伝達される。
第3暗号部126は、第2暗号部125から伝達されたE(KPp2、LIC)を、さらに、ストレージデバイス200で発行されたセッション鍵Ks2により暗号化し、暗号化ライセンスデータE(Ks2,E(KPp2、LIC))を生成する。
ログ記憶部129は、ライセンスデータLICの出力に関する履歴情報を記憶する。この履歴情報は、ライセンスデータLICを特定する識別情報LicID、ライセンスデータLICの通信を特定するための情報として、ライセンスデータLICの送受信に用いたセッション鍵、ライセンスデータの送信の経過状態を示す情報ST1を含む。
情報ST1は、セッション鍵を受け取った状態(以下、”状態SP”と称す)、ライセンスデータLICを出力した状態(以下、”状態SL”と称す)の2つの状態のうち、いずれか一つの状態を示す情報を含む。
ログ検証部130は、ライセンスデータの送信先と共有しているチャレンジ鍵Kc1と、ログ記憶部234に記憶されている履歴情報を用いて、ライセンスデータの送信先、ここでは、記憶装置200から受け取ったステータス情報LicID//ST2//H(Kc1//Ks2//LicID//ST2)の正当性を検証し、当該ライセンスデータの再送可否の判断を行う。
制御部128は、配信サーバ100のコントローラ101の指示に従って暗号エンジン103の内部の構成要素の制御および外部の構成との間でデータの入出力を仲介する。
尚、図5では、制御部128による内部の各構成要素への制御を示す結線は省略されている。
図5の如く、本実施の形態では、制御部128を介さないと、暗号エンジン103は外部とデータの交換ができない構成となっている。各構成要素を接続する形態については、種々考えられるが、本実施の形態では、乱数発生部122が生成するチャレンジ鍵Kc1、ストレージデバイス200から受け取ったセッション鍵Ks2、自身の秘密鍵Kd1などの暗号エンジン103内で使用される各鍵が、暗号エンジン103の外部に直接流出しないように構成している。これにより、暗号エンジン103内で使用される各鍵が、配信サーバ100の他の構成要素などを介して外部に漏洩することを防ぎ、セキュリティ性を向上させている。
※再生装置の暗号エンジン
図6は、図3に示した再生装置300の暗号エンジン303の内部構成を示す。暗号エンジン303は、証明書出力部320、乱数発生部321、証明書検証部322、第1復号部323、第1暗号部324、第2暗号部325、第2復号部326、第3復号部327、コンテンツ鍵出力部328、経過時間計測部329、ログ記憶部330、ログ署名部331、制御部332、およびこれらの構成要素の少なくとも一部を電気的に接続するローカルバス340を備える。
証明書出力部320は、再生装置300の証明書C[KPd3]を出力する。証明書は、証明書出力部320が保持してもよいし、図示しない証明書保持部に保持しておき、それを読み出してもよい。証明書は、再生装置300の公開鍵KPd3を含む証明書本体と、証明書本体に対して付される電子署名からなる。電子署名は、ストレージデバイス200の証明書と同様に、認証局のルート鍵Kaにより暗号化される。
乱数発生部321は、ストレージデバイス200との間で暗号通信を行うために一時的に使用されるセッション鍵Ks3を生成する。生成されたセッション鍵Ks3は、第1暗号部324、第2復号部326、ログ記憶部330に伝達される。
証明書検証部322は、ストレージデバイス200の証明書C[KPd2]の検証を行う。検証の詳細は、上述したとおりである。
第1復号部323は、公開鍵KPd3によって暗号化されたデータを秘密鍵Kd3で復号する。再生時には、ストレージデバイス200で発行されたチャレンジ鍵Kc2は、再生装置300の公開鍵KPd3により暗号化されてストレージデバイス200から供給されるため、第1復号部321は、自身の秘密鍵Kd3によりこれを復号し、チャレンジ鍵Kc2を取り出す。取り出されたチャレンジ鍵Kc2は、第2暗号部325に伝達される。
第1暗号部324は、ストレージデバイス200の証明書C[KPd2]から取り出された公開鍵KPd2でデータの暗号化を行う。ストレージデバイス200にセッション鍵Ks3を通知するために、乱数発生部321で生成したセッション鍵Ks3を暗号化し、暗号化セッション鍵E(KPd2,Ks3)を生成する。生成した暗号化セッション鍵E(KPd2,Ks3)は、第2暗号部325に伝達される。
第2暗号部325は、第1復号部323により取り出されたチャレンジ鍵Kc2で、データの暗号化を行う。第1暗号部324から伝達された暗号化セッション鍵E(KPd2,Ks3)と自身の公開鍵KPp3を連結し、これを暗号化してセッション情報E(Kc2,E(KPd2,Ks3)//KPp3)を生成する。
第2復号部326は、セッション鍵Ks3で暗号化されたデータを復号する。ライセンスデータLICは、公開鍵KPp3およびセッション鍵Ks3により2重に暗号化された暗号化ライセンスデータE(Ks3,E(KPp3,LIC))としてストレージデバイス200から供給されるため、第2復号部325は、乱数発生部321が生成するセッション鍵Ks3により復号を行い、その結果である暗号化ライセンスデータE(KPp3,LIC)を第3復号部327に伝達する。
第3復号部327は、公開鍵KPp3で暗号化されたデータの復号を行う。公開鍵KPp3と対をなす秘密鍵Kp3で、第2復号部326の結果である暗号化ライセンスデータE(KPp3,LIC)を復号し、ライセンスデータLICを取り出す。
コンテンツ鍵出力部328は、第3復号部327にて取り出されたライセンスデータLICから、コンテンツ鍵を取り出し保持する。さらに、コンテンツ鍵出力部328は、保持しているコンテンツ鍵を復号器304に提供し、かつ、復号器304における当該コンテンツ鍵を用いた復号処理を監視し、その状況を経過時間計測部329に伝達する。
経過時間計測部329は、コンテンツ鍵出力部328が提供するコンテンツ鍵を用いて復号した暗号化コンテンツの再生時間を計測し、所定のT秒の経過によって、コンテンツ鍵による再生が行われた、すなわち、ライセンスデータによって規定される再生の権利が、1再生回数消費された、と判断する。逆に、T秒が経過しないまま再生が停止された場合には、コンテンツ鍵による再生は行われなかった、すなわち、ライセンスデータによって規定される再生の権利が消費されていない、と判断する。経過時間計測部329の構成については、様々な構成方法が存在するが、ここでは、タイマを用いて再生後の経過時間を計測する構成例を示す。経過時間計測部329は、タイマを含んでいる。そして、コンテンツ鍵出力部328が復号器304に提供したコンテンツ鍵による復号が開始されるとタイマをリセットする。そして、所定のT秒が経過すると、再生が開始されたと判断する。ここで、Tはコンテンツ種類(音楽/映像など)毎に再生を行った、すなわち、ライセンスを消費したと判断する境界時間であり、予め定められている。これによると、たとえば、T秒経過以前に、コンテンツ鍵出力部328の保持するコンテンツ鍵が破棄され、復号部304における復号処理が停止すると、このコンテンツ鍵による再生は行われなかった、と判断される。そして、この判定結果を、後述するログ記憶部330に格納されている情報ST3に反映する。
ログ記憶部330は、ライセンスデータLICの受け取りから消費に至る履歴情報を記憶する。履歴情報は、ライセンスデータLICを特定する識別情報LicID、ライセンスデータLICの通信を特定するための情報であり、ライセンスデータLICの通信にて生成したセッション鍵Ks3、ライセンスデータの通信から消費(再生)に至る状態を示す情報ST3を含む。
情報ST3は、セッション鍵を生成した状態(以下、”状態RP”と称す)、ライセンスデータLICを受け取った状態(以下、”状態RL”と称す)、経過時間計測部329で再生が開始されたと判断した状態(以下、”状態CL”と称す)の3つの状態のいずれか1つの状態を示す情報からなる。
ログ署名部331は、第1復号部323で取り出されたチャレンジ鍵Kc2と、ログ記憶部330に記憶されている履歴情報を用いて、再生装置300におけるライセンスデータLICの受信や消費の状況を知らせるステータス情報LicID//ST3//H(Kc2//Ks3//LicID//ST3)を生成する。このステータス情報は、Kc2とKs3を共有している暗号エンジン203において、その正当性を検証することができる。
制御部332は、再生装置300のコントローラ301の指示に従って暗号エンジン303の内部の構成要素の制御および外部の構成との間でデータの入出力を仲介する。
尚、図6では、制御部332による内部の各構成要素への制御を示す結線は省略されている。
図6に示す暗号エンジン303においても、各構成要素を接続する形態については、種々考えられるが、本実施の形態では、制御部332を介さないと、暗号エンジン303は外部とデータの交換ができない構成となっている。これにより、乱数発生部324が生成したセッション鍵Ks3、公開鍵と対をなしている秘密鍵Kd3およびKp3、ストレージデバイス200から受け取ったセッション鍵Ks2、チャレンジ鍵Kc2などの暗号エンジン303内で使用される鍵が外部に漏洩されることを防ぐ。
※ストレージメディアの暗号エンジン
図7は、図4に示したストレージデバイス200の暗号エンジン203の内部構成を示す。これらの機能ブロックも、ハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できる。暗号エンジン203は、制御部220、乱数発生部221、証明書出力部222、証明書検証部223、第1復号部224、第1暗号部225、第2暗号部226、第2復号部227、第3復号部228、第3暗号部229、第4復号部230、第5復号部231、第4暗号部232、第5暗号部233、ログ記憶部234、第6暗号部235、ログ検証部236、および、これらの構成要素の少なくとも一部を電気的に接続するローカルバス240を備える。
制御部220は、ストレージデバイス200のコントローラ201の指示に従って暗号エンジン203の内部の構成の制御および外部の構成との間でデータの入出力を仲介する。
乱数発生部221は、配信サーバ100または再生装置300との間の暗号通信に一時的に使用されるセッション鍵Ks2、チャレンジ鍵Kc2を、乱数演算によって生成する。各鍵の用途については、追って説明する。
証明書出力部222は、ストレージデバイス200の証明書C[KPd2]を出力する。証明書は、証明書出力部225が保持してもよいし、ストレージデバイス200の所定の記憶領域、たとえば耐タンパ記憶部204に保持しておき、それを読み出してもよい。証明書は、ストレージデバイス200の公開鍵KPd2を含む証明書本体と、証明書本体に付された電子署名とを含む。電子署名は、認証局のルート鍵Kaにより暗号化される。
証明書検証部223は、外部から提供された証明書の検証を行う。具体的には、配信サーバ100から取得した証明書C[KPd1]および再生装置300から取得した証明書C[KPd3]を検証鍵KPaにより検証する。検証の詳細は、上記のとおりである。
第1復号部224は、自身の公開鍵KPd2で暗号化されたデータを復号する。具体的には、記録時には、配信サーバ100で発行されたチャレンジ鍵Kc1が、ストレージデバイス200の公開鍵KPd2で暗号化されて配信サーバ100から供給されるため、これを自身の秘密鍵Kd2で復号し、チャレンジ鍵Kc1を取り出す。取り出されたチャレンジ鍵Kc1は、第2暗号部226に伝達される。
第1暗号部225は、配信サーバ100の公開鍵KPd1でデータを暗号化する。具体的には、乱数発生部221が生成したセッション鍵Ks2を公開鍵KPd1で暗号化し、暗号化セッション鍵E(KPd1,Ks2)を生成する。ここで用いる配信サーバ100の公開鍵KPd1は、制御部220によってストレージデバイス200の証明書C[KPd1]内から取り出され、ローカルバス240を介して伝達される。
第2暗号部226は、配信サーバ100が発行したチャレンジ鍵Kc1でデータを暗号化する。具体的には、第1暗号部225から受け取った暗号化セッション鍵E(KPd1,Ks2)と自身の公開鍵KPp2を連結して、これをチャレンジ鍵Kc1で暗号化し、セッション情報E(Kc1,E(KPd1,Ks2)//KPp2)を生成する。
第2復号部227は、乱数発生部211が生成したセッション鍵Ks2で暗号化されたデータを復号する。具体的には、配信サーバ100から、ライセンスデータLICを、公開鍵KPp2およびセッション鍵Ks2により2重に暗号化されたE(Ks2,E(KPp2,LIC))として受け取り、これをセッション鍵Ks2により復号し、結果を第3復号部228に伝達する。
第3復号部228は、自身の公開鍵KPp2で暗号化されたデータを復号する。第2復号部227から伝達されるライセンスデータE(KPp2,LIC)を、公開鍵KPp2と対をなす自身の秘密鍵Kp2で復号し、ライセンスデータLICを取り出す。
取り出されたライセンスデータLICは、ローカルバス240、制御部220を介して、データバス210に供給され、コントローラ201の指示に従って、耐タンパ記憶部204に記憶される。
第3暗号部229は、再生装置300の公開鍵KPd3でデータを暗号化する。具体的には、再生装置300に対してライセンスデータLICを提供する場合、再生装置300から受け取った証明書C[KPd3]から取り出された公開鍵KPd3で、乱数発生部221が発行するチャレンジ鍵Kc2を暗号化し、暗号化チャレンジ鍵E(KPd3,Kc2)を生成する。生成された暗号化チャレンジ鍵E(KPd3,Kc2)は、ローカルバス240を介して制御部220へ伝達される。制御部220では、これと証明書出力部222から出力される自身の証明書C[KPd2]とを結合して、チャレンジ情報E(KPd3,Kc2)//C[KPd2]を生成する。
第4復号部230は、乱数発生部221が発行したチャレンジ鍵Kc2で暗号化されたデータを復号する。再生装置300から受け取ったセッション情報E(Kc2,E(KPd2,Ks3)//KPp3)を、乱数発生部221が生成したチャレンジ鍵Kc2で復号し、暗号化セッション鍵E(KPd2,Ks3)および再生装置300の公開鍵KPp3を取り出す。取り出した暗号化セッション鍵E(KPd2,Ks3)は第5復号部231に伝達され、公開鍵KPp3は第4暗号部232ログおよび記憶部234に伝達される。
第5復号部231は、自身の公開鍵KPd2で暗号化されたデータを復号する。具体的には、第4復号部230から伝達された暗号化セッション鍵E(KPd2,Ks3)を、自身の秘密鍵Kd2で復号しセッション鍵Ks3を取り出す。取り出されたセッション鍵Ks3は、第5暗号部233に伝達される。
第4暗号部232は、再生装置300の公開鍵KPp3でデータを暗号化する。再生装置300に対してライセンスデータを提供する場合、再生装置300から受け取ったセッション鍵KPp3で、ライセンスデータLICを暗号化する。このライセンスデータLICは、コントローラ201の指示に従って、耐タンパ記憶部204から読み出され、データバス202、制御部220およびローカルバス240を介して第4暗号部232に伝達される。ここで、暗号化されたライセンスデータE(KPp3,LIC)は、第5暗号部233に伝達される。
第5暗号部233は、再生装置300が発行したセッション鍵Ks3でデータを暗号化する。具体的には、セッション鍵Ks3で、第4暗号部232において暗号化されたライセンスデータE(KPp3,LIC)を、さらに暗号化し、暗号化ライセンスデータE(Ks3,E(KPp3,LIC))を生成する。
ログ記憶部234は、ライセンスデータLICの出力および記録に関する履歴情報を記憶する。履歴情報は、ライセンスデータLICを特定する識別情報LicID、ライセンスデータLICの通信を特定するための情報であり、ライセンスデータLICの入出力信のためにライセンスデータ提供元あるいは提供先と共有したセッション鍵(Ks2またはKs3)、ライセンスデータの出力および記録に至る状態を示す情報ST2を含む。
情報ST2は、ライセンスデータの記録時にはセッション鍵を生成した状態(以下、”状態RP”と称す)、ライセンスデータLICを受け取った状態(以下、”状態RL”と称す)、ライセンスデータの記録が終了した状態(以下、”状態CL”と称す)の3つの状態のいずれか1つの状態を、ライセンスデータの出力時にはセッション鍵を受け取った状態(以下、”状態SP”と称す)、再生のためにライセンスデータLICを出力した状態(以下、”状態SL”と称す)の2つの状態のいずれか1つの状態を示す情報を含む。
ログ署名部235は、ライセンスデータの送信元と共有しているチャレンジ鍵Kc1と、ログ記憶部234に記憶されている履歴情報を用いて、記憶装置200におけるライセンスデータLICの受信から記録に至る状況を知らせるステータス情報LicID//ST2//H(Kc1//Ks2//LicID//ST2)を生成する。このステータス情報は、Kc1とKs2を共有している暗号エンジン103において、その正当性を検証することができる。
ログ検証部236は、ログ記憶部234に記憶されている履歴情報を参照しつつ、再生装置300から受け取ったステータス情報LicID//ST3//H(Kc2//Ks3//LicID//ST3)の正当性を検証し、当該ライセンスデータの復元可否の判断を行う。
※ライセンスデータの記録
図8乃至図10は、配信サーバ100がストレージデバイス200にライセンスデータLICを記録するまでの手順を示す。この記録処理では、配信サーバ100の暗号エンジン103とストレージデバイス200の暗号エンジン203との間で暗号通信路が構築され、その暗号通信路によってライセンスデータLICが配信サーバ100からストレージデバイス200に送信される。図は、配信サーバ100(暗号エンジン103)、ストレージデバイス200(暗号エンジン203)および、配信サーバ100とストレージデバイス200のデータ交換を仲介する端末装置150(コントローラ151)に区分して処理を示している。
まず、端末装置150のコントローラ151は、ストレージデバイス200に対して証明書出力命令を発行する(S102)。コントローラ201は、証明書出力命令を正常に受理する(S104)と、暗号エンジン203に証明書の出力を命じ、暗号エンジン203から証明書C[KPd2]を読み出して端末装置150のコントローラ151へ出力する(S106)。
コントローラ151は、ストレージデバイス200から証明書C[KPd2]を取得すると、それを配信サーバ100へ送信する(S108)。
配信サーバ100のコントローラ101は、ストレージデバイス200から発行された証明書C[KPd2]を受信すると(S110)、それを暗号エンジン103に伝達し、証明書検証部120は、認証鍵KPaで証明書を検証する(S112)。証明書が承認されなかった場合(S112のN)、証明書検証部120はエラーをコントローラ101に伝達する。エラーを伝達されたコントローラ101は、検証エラー通知を端末装置150に送信する(S190)。端末装置150のコントローラ151は、エラー通知を受信すると(S192)、処理を異常終了する。
証明書が承認された場合(S112のY)、暗号エンジン103は、乱数発生部122にてチャレンジ鍵Kc1を生成し、保持する(S114)。そして、保持したチャレンジ鍵Kc1を第1暗号部121、第1復号部123およびログ検証部130に伝達する。
第1復号部123では、このチャレンジ鍵Kc1を内部に保持する(S114)。また、第1暗号部121では、このチャレンジ鍵Kc1を証明書証明書C[KPd2]から取り出したストレージデバイス200の公開鍵KPd2で暗号化し、暗号化チャレンジ鍵E(KPd2,Kc1)を生成する。そして、生成した暗号化チャレンジ鍵E(KPd2,Kc1)と証明書出力部127から出力される自身の証明書C[KPd1]とを結合し、チャレンジ情報E(KPd2,Kc1)//C[KPd1]を生成し、これをコントローラ101へ伝達する。コントローラ101は、生成されたチャレンジ情報E(KPd2,Kc1)//C[KPd1]を端末装置150へ送信する(S116)。
端末装置150のコントローラ151は、配信サーバ100からチャレンジ情報E(KPd2,Kc1)//C[KPd1]を受信すると(S118)、ストレージデバイス200に対してチャレンジ情報検証命令を発行する(S120)。
ストレージデバイス200では、コントローラ201がチャレンジ情報検証命令を受理すると、チャレンジ情報E(KPd2,Kc1)//C[KPd1]の入力を端末装置150に要求する(S122)。
端末装置150のコントローラ151は、この要求に応じてチャレンジ情報E(KPd2,Kc1)//C[KPd1]をストレージデバイス200へ出力する(S124)。
ストレージデバイス200は、チャレンジ情報E(KPd2,Kc1)//C[KPd1]を受理すると(S126)、暗号エンジン203では、制御部220が、チャレンジ情報E(KPd2,Kc1)//C[KPd1]から証明書C[KPd1]を取り出し、これを証明書検証部223に伝達する。証明書検証部223は、伝達された証明書C[KPd1]を検証鍵KPaで検証し、検証結果を制御部220に伝達する(S128)。
証明書が承認されなかった場合(S128のN)、証明書検証部223は検証エラー通知を制御部220へ通知し、検証エラー通知を受けた制御部220はこれをコントローラ201へ通知する。
そしてコントローラ201は、受信した検証エラー通知を、ストレージインタフェース202を介して端末装置150のコントローラ151に送信する(S194)。
コントローラ151は、検証エラー通知を受信すると(S192)、本処理を異常終了する。
証明書が承認された場合(S128のY)、制御部220は、チャレンジ情報E(KPd2,Kc1)//C[KPd1]から、公開鍵KPd1と暗号化チャレンジ鍵E(KPd2,Kc1)を取り出し、それぞれ第1暗号部225、第1復号部224に伝達する。
第1暗号部225は、伝達された公開鍵KPd1を保持する。第1復号部224は、伝達された暗号化チャレンジ鍵E(KPd2,Kc1)を自身の秘密鍵Kd2で復号し、チャレンジ鍵Kc1を取り出す(S130)。取り出されたチャレンジ鍵Kc1は、第2暗号部226に伝達され保持される(S132)。
一方、端末装置150のコントローラ151は、ストレージデバイス200においてチャレンジ情報検証命令の処理が終了すると、ストレージデバイス200に対して、これから記録を行うライセンスデータに対するセッション情報生成命令を発行する(S134)。
ストレージデバイス200では、コントローラ201がセッション情報生成命令を受理する(S136)と、暗号エンジン203では制御部220の指示に従って、乱数発生部221がセッション鍵Ks2を生成し、生成したセッション鍵Ks2を、第2復号部227、第1暗号部225およびログ記憶部234に伝達する。第2復号部227は、伝達されたセッション鍵Ks2を保持する。また、制御部220は、ログ記憶部234に履歴情報として、このセッション鍵Ks2を記録する指示を出す。ログ記憶部234では、セッション鍵Ks2を新たな履歴情報として記憶する。この時、ログ記憶部234は、情報ST2として“状態RP”を示す情報を併せて記憶する(S138)。
第1暗号部225は、S130で保持した公開鍵KPd1で、伝達されたセッション鍵Ks2を暗号化して暗号化セッション鍵E(KPd1,ks2)を生成し、これを第2暗号部226に伝達する。第2暗号部226は、暗号化セッション鍵E(KPd1,ks2)と自身の公開鍵KPp2とを連結し、これをS132で保持したチャレンジ鍵Kc1で暗号化してセッション情報E(Kc1,E(KPd1、Ks2)//KPp2)を生成する(S140)。
端末装置150のコントローラ151では、ストレージデバイス200においてセッション情報生成命令の処理が終了すると、セッション情報出力命令を発行する(S142)。
ストレージデバイス200では、セッション情報出力命令を受理する(S144)と、コントローラ201が、暗号エンジン203からセッション情報E(Kc1,E(KPd1、Ks2)//KPp2)を読み出し、端末装置150のコントローラ151へ出力する(S146)。
端末装置150のコントローラ151は、ストレージデバイス200からセッション情報E(Kc1,E(KPd1、Ks2)//KPp2)を受信すると、これを配信サーバ100に送信する(S148)。
配信サーバ100のコントローラ101は、セッション情報E(Kc1,E(KPd1,Ks2)//KPp2)を受信すると(S150)、これを暗号エンジン103に伝達する。
暗号エンジン103の第1復号部123は、内部に保持したチャレンジ鍵Kc1で、伝達されたセッション情報E(Kc1,E(KPd1,Ks2)//KPp2)を復号し、暗号化セッション鍵E(KPd1、Ks2)とストレージデバイス200の公開鍵KPp2を取り出す。取り出された暗号化セッション鍵E(KPd1、Ks2)は、第2復号部124に伝達され、第2復号部124は、自身の秘密鍵Kd1で復号してセッション鍵Ks2を取り出し、第3暗号部126とログ記憶部129に伝達する。ログ記憶部129は、セッション鍵Ks2を受け取ると、新たな履歴情報として、受け取ったセッション鍵Ks2を記憶する。この時、ログ記憶部129は、情報ST1として“状態SP”を示す情報を併せて記憶する(S152)。
続いて、暗号エンジン103の第2暗号部125は、暗号器104が発行したライセンスデータLICをストレージデバイス200の公開鍵KPp2で暗号化してE(KPp2,LIC)を生成し、これを第3暗号部126に伝達する。第3暗号部126は、伝達されたE(KPp2,LIC)を、さらにストレージデバイス200が発行したセッション鍵Ks2で暗号化して暗号化ライセンスデータE(Ks2,E(KPp2,LIC))を生成し、これをコントローラ101に伝達する。コントローラ101は、伝達された暗号化ライセンスデータE(Ks2,E(KPp2,LIC))を端末装置150に送信する。この時、ログ記憶部129は、情報ST1を“状態SP”から“状態SL”に変更する(S154)。
端末装置150のコントローラ151は、配信サーバ100から送信された暗号化ライセンスデータE(Ks2,E(KPp2,LIC))を受信する(S156)と、ストレージデバイス200に対してライセンスデータ書込命令を発行する(S158)。このライセンス書込命令は、耐タンパ記憶部204上の記録位置を指定するアドレスを伴っている。ここでアドレスとは、論理アドレスを示し、耐タンパ記憶部204における記録位置を直接指定するものではないが、アドレスを指定して記録したデータは、同じアドレスを指定することで読み出せるように、コントローラ201によって管理されている。しかしながら、耐タンパ記憶部204における位置を示す物理アドレスであってもよい。
ストレージデバイス200では、端末装置150が発行したライセンス書込命令を受理すると、暗号ライセンスデータを端末装置150のコントローラ151に要求し(S160)、端末装置150のコントローラ151は、この要求に応じて、暗号ライセンスデータE(Ks2,E(KPp2,LIC))をストレージデバイス200へ出力する(S162)。
ストレージデバイス200は、暗号ライセンスデータE(Ks2,E(KPp2,LIC))を受理すると(S164)、これを暗号エンジン203内の第2復号部227に伝達する。
第2復号部227は、内部に保持しているセッション鍵Ks2で暗号化ライセンスデータE(Ks2,E(KPp2,LIC))を復号し、自身の公開鍵KPp2で暗号化されたライセンスデータE(KPp2,LIC)を取り出す。そして、取り出された暗号化ライセンスデータE(KPp2,LIC)は第3復号部228に伝達される。
第3復号部228は、伝達された暗号化ライセンスデータE(KPp2,LIC)を、公開鍵KPp2と対の秘密鍵Kp2で復号してライセンスデータLICを取り出し(S166)、これをローカルバス240を介して制御部220に伝達する。制御部220は、ライセンスデータLICから識別情報LicIDを取り出して、ログ記憶部129に伝達する。また、ライセンスデータLICをデータバス210へ出力する。
ログ記憶部129は、識別情報LicIDを受け取ると、記憶している履歴情報に識別情報LicIDを追記し、併せて、同履歴情報内の状態情報ST1を“状態RP”から“状態RL”に変化させる(S166)。
コントローラ201は、データバス210に出力されたライセンスデータを耐タンパ記憶部204の指定されたアドレスに記憶する(S168)。
耐タンパ記憶部204に対するライセンスデータの記憶が正常に終了すると(S170のY)、ログ記憶部234は、情報ST2を“状態RC”に変化させる(S172)。
このように1つのライセンスデータの記録が終了すると、端末装置150のコントローラ151は、続いてライセンスデータを記録するか判断する(S174)。
続いてライセンスデータを記録する場合(S174のY)、S134に移行してセッション情報の生成命令の発行から処理を繰り返す。これは、複数のライセンスデータを記録する場合に、証明書の検証処理を共有とすることで、処理を軽減することを目的とした手順である。この時、チャレンジ鍵Kc1は、配信サーバ100の暗号エンジン103とストレージデバイス200の暗号エンジン203で共有された状態である。なお、ここで、続いてライセンスデータを記録するとしたが、1つのライセンスデータの記録後、直ちに次のライセンスデータの記録を行わなければならないわけではない。配信サーバ100の暗号エンジン103とストレージデバイス200の暗号エンジン203が同じチャレンジ鍵Kc1を共有している状態、具体的には、配信サーバ100の暗号エンジン103の第1復号部123と、ストレージデバイス200の暗号エンジン203の第2暗号部226が、同じチャレンジ鍵Kc1を保持している状態であればいかなるタイミングであっても良い。
また、続いてライセンスデータを記録する場合であっても、S102から処理を繰り返しても何ら問題はない。
続いてライセンスデータを記録しない場合(S174のN)には、本処理を正常終了する。
耐タンパ記憶部204に対するライセンスデータの記憶でエラーが発生すると(S170のN)、コントローラ201は、書込エラー通知を、ストレージインタフェース202を介して端末装置150のコントローラ151に送信する(S200)。ライセンスデータを記憶する際のエラーは、耐タンパ記憶部204に書込ができない場合の他、暗号化ライセンスデータE(Ks2,E(KPp2,LIC))の送受信中のデータ誤りなどによって、受け取ったライセンスデータLICの形式が誤っていている場合も含めてもよい。
コントローラ151は、書込エラー通知を受信すると(S202)。ストレージデバイス200に対してステータス情報生成命令を発行する(S204)。
ストレージデバイス200では、コントローラ201がステータス情報生成命令を受理する(S206)と、暗号エンジン203の制御部220は、ログ署名部235に指示をする。
ログ署名部235は、ログ記憶部234に記憶されている履歴情報に含まれるセッション鍵Ks2、識別情報LicID、状態情報ST2を取り出し、これらとステップS132で保持したチャレンジ鍵Kc1とを連結して、データKc1//Ks2//LicID//ST2を生成する。そして、ハッシュ演算を行い、H(Kc1//Ks2//LicID//ST2)を算出し、この演算結果と識別情報LicID、状態情報ST2を連結して、ステータス情報LicID//ST3//H(Kc1//Ks2//LicID//ST2)を生成する(S208)。
端末装置150のコントローラ151は、ストレージデバイス200においてステータス情報生成命令の処理が終了すると、ステータス情報出力命令を発行する(S210)。
ストレージデバイス200では、ステータス情報出力命令を受理する(S212)と、コントローラ201が、暗号エンジン203からステータス情報LicID//ST2//H(Kc1//Ks2//LicID//ST2)を読み出し、端末装置150のコントローラ151へ出力する(S214)。
端末装置150のコントローラ151は、ストレージデバイス200からステータス情報LicID//ST2//H(Kc1//Ks2//LicID//ST2)を受信すると、これを配信サーバ100に送信する(S216)。
配信サーバ100は、ステータス情報LicID//ST2//H(Kc1//Ks2//LicID//ST2)を受理すると(S218)、これを内部の暗号エンジン103に伝達する。
暗号エンジン103では、制御部128の指示に従って、ログ検証部130に伝達されたステータス情報を検証し、ステータス情報が信頼できるかの判断によって、ライセンスデータをリカバリー、すなわち、ライセンスデータを未送信の状態とするか否かの判定を行う(S220)。
S220のステータス情報の検証では、次の2項目が確認される。1)ステータス情報中の識別情報LicIDとログ記憶部129に記憶されている識別情報LicIDが一致しているか。2)ステータス情報中の識別情報LicID、状態情報ST3、ログ記憶部129に履歴情報として記憶されているセッション鍵Ks1、ステップS132で保持したチャレンジ鍵Kc2を連結し、この連結されたデータに対してハッシュ関数演算を行った結果H(Kc1//Ks2//LicID//ST2)と、ステータス情報中のハッシュ値H(Kc1//Ks2//LicID//ST2)が一致しているか。
上記2項目の確認において、何れか1つでも不一致であった場合、ステータス情報は信頼できない情報であるとして、リカバリーの対象でないと判断する(S220のN)。
一方、上記2項目の確認において、2項目共に一致した場合、ステータス情報を信頼できるデータであると承認し、さらに、情報ST2と、ログ記憶部129に記憶されている情報ST1に基づいて、当該ライセンスデータが復旧の対象となるライセンスデータか否か判断する。これは、コンテンツ権利者の権利を保護する立場から、リカバリーの対象となるライセンスデータは、配信サーバ100から出力された状態であり、かつ、ストレージデバイス200に記憶されていないものに限られるためである。具体的には、ログ記憶部129に記憶されている状態情報ST1が”状態SL”であり、かつ、ステータス情報内の状態情報ST2が”状態RP”あるいは”状態”RL”であるときである。
上記の判断において、リカバリーの対象であると判断されると(S220のY)、ライセンスデータを未送信の状態とし、ログ記憶部の状態情報ST1を、“状態SP”へ変更する(S222)。ライセンスデータの未送信の状態は、たとえば、有料コンテンツ配信であって課金状態となっていれば、それを解消する。あるいは、ライセンスデータの再出力に応えるようにするなどの状態に移行することになる。
続いて、リカバリー通知を端末装置150に送信する(S224)。
端末装置150のコントローラ151は、リカバリー通知を受信する(S226)とステップS174へ移行し、再び、ライセンスデータの受信を受けるか判断する(S174)。
上記の判断において、リカバリーの対象でないと判断されると(S220のN)、リカバリーエラー通知を端末装置150に送信する(S228)。
端末装置150のコントローラ151は、リカバリー通知を受信する(S230)とステップS174へ移行し、別のライセンスデータの受信を受けるか判断する(S174)。
以上の手順により、暗号化されたコンテンツを復号し再生するために必要なライセンスデータLICがストレージデバイス200に記録される。暗号化コンテンツは、通常データであり、ストレージデバイス200の通常コマンドによって記録されるため、ここでは説明を省略する。
なお、ライセンスデータLICと暗号化コンテンツデータの記録順序は、いずれが先であってもかまわない。さらには、暗号化コンテンツデータの記録における空き時間に、セキュアコマンドを分割して発行することで、ライセンスデータLICを記録するようにしてもよい。
なお、図8乃至図10が示す、端末装置150が配信サーバ100から送信されたライセンスデータLICをストレージデバイス200に記録するまでの手順は、正常に処理が推移した場合の例である。
※ライセンスの利用
図11乃至図14は、再生装置300がストレージデバイス200からライセンスデータLICを読み出し、読み出したコンテンツ鍵を破棄するまでの再生処理にかかる手順を示す。この再生処理では、ストレージデバイス200の暗号エンジン203と再生装置300の暗号エンジン303との間で暗号通信路が構築され、その暗号通信路を介してライセンスデータLICがストレージデバイス200から再生装置300に送信される。なお、図は、ストレージデバイス200(暗号エンジン203)、再生装置300の暗号エンジン303、および、これらのデータ交換を仲介する再生装置300のコントローラ301に区分して処理を示している。
まず、再生装置300のコントローラ301は、暗号エンジン303に対して証明書の出力要求を行う(S302)。暗号エンジン303は、この送信要求を受け取ると(S304)、証明書出力部320が証明書C[KPd3]をコントローラ301へ伝達する(S306)。コントローラ301は、暗号エンジン303から証明書C[KPd3]が伝達されると(S308)、ストレージデバイス200に対して証明書検証命令を発行する(S310)。
ストレージデバイス200では、証明書検証命令が受理されると(S312)、再生装置300に対して証明書を要求する。再生装置300のコントローラ301は、この要求に応じて、暗号エンジン303から伝達された証明書C[KPd3]をストレージデバイス200へ出力する(S314)。
ストレージデバイス200は、証明書C[KPd3]を受理すると(S316)、受理した証明書C[KPd3]を内部の暗号エンジン203に伝達する。暗号エンジン203では、制御部220の指示に従って、証明書検証部223が証明書C[KPd3]を検証鍵KPaで検証する(S318)。
s318において、証明書が承認されなかった場合(S318のN)、証明書検証部223は検証エラー通知を、制御部220、コントローラ201、ストレージインタフェース202を介して、コントローラ301に送信する(S490)。コントローラ301は、エラー通知を受信すると(S492)、本処理を異常終了する。
一方、s318において、証明書C[KPd3]が承認された場合(S318のY)、暗号エンジン203の制御部220は、証明書C[KPd3]から公開鍵KPd3を取り出し、これを第3暗号部229に伝達する。第3暗号部229は、伝達された公開鍵KPd3を保持する(S320)。
ストレージデバイス200において、暗号エンジン303の証明書C[KPd3]が承認されると、再生装置300のコントローラ301は、ストレージデバイス200に対してチャレンジ情報生成命令を発行する(S322)。ストレージデバイス200が、再生装置300が発行したチャレンジ情報生成命令を受理する(S324)と、暗号エンジン202では、制御部220の指示に従って、乱数発生部221がチャレンジ鍵Kc2を生成し、保持する(S326)。保持されたチャレンジ鍵Kc2は、第3暗号部229、第4復号部230およびログ検証部236に伝達される。
第3暗号部229は、S320にて保持した公開鍵KPd3で、伝達されたセッション鍵Kc2を暗号化して暗号化チャレンジ鍵E(KPd3,Kc2)を生成する。次に、自身の証明書C[KPd2]を証明書出力部222から取得し、これを生成した暗号化チャレンジ鍵E(KPd3,Kc2)と連結してチャレンジ情報E(KPd3,Kc2)//C[KPd2]を生成する(S328)。
再生装置300では、ストレージデバイス200においてチャレンジ情報生成命令の処理が終了すると、コントローラ301がチャレンジ情報出力命令を発行する(S330)。
ストレージデバイス200が、再生装置300が発行したチャレンジ情報出力命令を受理する(S332)と、コントローラ201は、暗号エンジン203からチャレンジ情報E(KPd3,Kc2)//C[KPd2]を取り出し、再生装置300のコントローラ301へ出力する(S334)。
再生装置300では、コントローラ301が、チャレンジ情報E(KPd3,Kc2)//C[KPd2]を受信すると、これを暗号エンジン303に伝達する(S336)。そして、暗号エンジン303が、チャレンジ情報E(KPd3,Kc2)//C[KPd2]を受信すると(S338)、暗号エンジン303内の証明書検証部322が、検証鍵KPaで伝達された証明書を検証する(S340)。
証明書が承認されなかった場合(S340のN)、証明書検証部322は、検証エラー通知をコントローラ301に送信する(S394)。コントローラ301は、エラー通知を受信すると(S492)、本処理を異常終了する。
一方、証明書が承認された場合(S340のY)、暗号エンジン303の第1復号部323は、暗号化チャレンジ鍵E(KPd3,Kc2)を自身の秘密鍵Kd3で復号してチャレンジ鍵Kc2を取り出し(S342)、保持する(S344)。保持されたチャレンジ鍵Kc2は、第2暗号部325とログ署名部331に伝達される。
一方、コントローラ301は、ストレージデバイス200に対してライセンス読出命令を発行する(S346)。このライセンス読出命令は、耐タンパ記憶部204における読み出し位置を指定するアドレスを伴っている。
ストレージデバイス200は、再生装置300が発行したライセンス読出命令を受理すると(S348)、耐タンパ記憶部204の指定されたアドレスに記憶されているライセンスデータLICを読み出し、読み出されたライセンスデータLICは、暗号エンジン202の第4暗号部232に保持される(S350)。
続いて、コントローラ301は、暗号エンジン303に対してセッション情報を要求する(S352)。暗号エンジン303は、この要求を受け取ると(S354)、乱数発生部321がセッション鍵Ks3を生成し、第1暗号部324、第2復号部326、ログ記録部330に伝達する。第2復号部326およびログ記憶部330は、伝達されたセッション鍵Ks3を内部に履歴情報として記憶する。この時、ログ記憶部330は、情報ST3として“状態RP”を示す情報を併せて記憶する(S354)。そして、第1暗号部324は、証明書C[KPd2]から取り出されたストレージデバイス200の公開鍵KPd2で、セッション鍵Ks2を暗号化し、暗号化セッション鍵E(KPd2,Ks3)を生成する。生成された暗号化セッション鍵E(KPd2,Ks3)は、第2暗号部325に伝達される。第2暗号部325は、伝達された暗号化セッション鍵E(KPd2,Ks3)に自身の公開鍵KPp3を連結し、これらをS344で保持されたチャレンジ鍵Kc2で暗号化してセッション情報E(Kc2,E(KPd2、Ks3)//KPp3)を生成し、これをコントローラ301へ送る(S356)。
コントローラ301は、暗号エンジン303からセッション情報E(Kc2,E(KPd2,Ks3)//KPp3)を受信すると(S358)、ストレージデバイス200に対してセッション情報処理命令を発行する(S360)。
ストレージデバイス200は、再生装置300から発行されたセッション情報処理命令を受理すると(S362)、再生装置300に対してセッション情報を要求し、再生装置300のコントローラ301は、この要求に応じて、暗号エンジン303から受け取ったセッション情報E(Kc2,E(KPd2,Ks3)//KPp3)をストレージデバイス200へ出力する(S364)。
ストレージデバイス200は、セッション情報E(Kc2,E(KPd2,Ks3)//KPp3)を受理すると(S366)、暗号エンジン203の第4復号部230に伝達する。第4復号部230は、伝達されたセッション情報E(Kc2,E(KPd2,Ks3)//KPp3)を、S326で保持されたチャレンジ鍵Kc2で復号する。そして、暗号化セッション鍵E(KPd2,Ks3)と再生装置300の公開鍵KPp3を取り出し、暗号化セッション鍵E(KPd2,Ks3)を第5復号部231に伝達し、また公開鍵KPp3を第4暗号部232とログ記憶部234に伝達する。
次いで、第5復号部231は、伝達された暗号化セッション鍵E(KPd2,Ks3)を、自身の公開鍵KPd2と対をなす自身の秘密鍵Kd2で復号してセッション鍵Ks3を取り出し、これを第5暗号部233とログ記憶部234に伝達する。
ログ記憶部234は、伝達されたセッション鍵Ks3を、新たな履歴情報として記憶する。また、この時、“状態SP”を示す情報も併せて記憶する(S368)。
第4暗号部232は、S350で保持されたライセンスデータLICを、第4復号部230から伝達された再生装置300の公開鍵KPp3で暗号化して暗号化ライセンスデータE(KPp3,LIC)を生成し、これを第5暗号部233に伝達する。第5暗号部233は、第4暗号部232で生成された暗号化ライセンスデータE(KPp3,LIC)を、第5復号部231から伝達されたセッション鍵Ks3で暗号化し、暗号化ライセンスデータE(Ks3,E(KPp3,LIC))を生成する(S370)。
再生装置300のコントローラ301は、ストレージデバイス200においてセッション情報処理命令の処理が終了、すなわち、暗号化ライセンスデータE(Ks3,E(KPp3,LIC))が生成されると、ストレージデバイス200に対して暗号化ライセンス出力命令を発行する(S372)。ストレージデバイス200は、再生装置300が発行した暗号化ライセンス出力命令を受理する(S374)と、暗号エンジン203の制御部220は、ライセンスデータLICに記載される制御情報PCの確認を行う(S376)。
制御情報PCが0の場合(S376のIV)、制御部220は、再生回数の制限がなされたライセンスデータであって、かつ、既に制限回数の再生が終了していると判断し、再生条件エラー通知を、コントローラ201、ストレージインタフェース202を介して、再生装置300のコントローラ301に送信する(S390)。再生装置300のコントローラ301は、ストレージデバイス200が送信したエラー通知を受信すると(S392)、本処理は、ステップS396へ移行し、別のライセンスデータを送信するか判断する(S396)。
また、S376において、制御情報PCが1〜254の場合(S376のAL)、制御部220は、耐タンパ記憶部204に記憶されているライセンスデータの制御情報PCを1減算した値に変更する。(S378)。
また、S376において、制御情報PCが255の場合(S376のNA)、およびS378の後、制御部220は、暗号化ライセンスデータE(Ks3,E(KPp3,LIC))を、コントローラ201、ストレージインタフェース202を介して、再生装置300のコントローラ301へ出力すると共に、ログ記録部234に、出力したライセンスデータLICの識別情報LicIDを保持させ、情報ST2を“状態SL”に変更させる(S380)。
再生装置300のコントローラ301は、ストレージデバイス200から暗号化ライセンスデータE(Ks3,E(KPp3,LIC))を受信すると、これを暗号エンジン303に送る(S382)。暗号エンジン303が暗号化ライセンスデータE(Ks3,E(KPp3,LIC))を受信すると(S384)、第2復号部326は、S354において保持されたセッション鍵Ks3で暗号化ライセンスデータE(Ks3,E(KPp3,LIC))を復号し、復号結果のE(KPp3,LIC)を第3復号部327に伝達する。
第3復号部327は、伝達されたE(KPp3,LIC)を公開鍵KPp3と対をなす自身の秘密鍵Kp3で復号してライセンスデータLICを取り出し、取り出したライセンスデータLICの識別情報LicIDをログ記憶部330に伝達し、また、コンテンツ鍵をコンテンツ鍵出力部328に伝達する。
ログ記憶部330は、伝達された識別情報LicIDを保持し、情報ST3を“状態RL”に変更し(S386)、コンテンツ鍵出力部328は、復号器304に対して伝達されたコンテンツ鍵の提供を開始する(S388)。
コントローラ301は、復号器304に対してコンテンツ鍵が提供可能な状態になると、再生終了の確認、すなわち、暗号コンテンツデータの再生完了による再生の終了、あるいは、ユーザからの再生中止指示(終了操作、選択操作などによる再生停止の指示を含む)による再生の終了をすべきか確認する(S390)。
S390において、再生が終了でない場合(S390のN)、ストレージデバイス200の通常データ記憶部205に記録されている暗号化コンテンツデータを読み出し、復号器304に供給する(S392)。このとき、コントローラ301は、コンテンツデコーダ305においてスムーズに再生がなされるよう、必要量の暗号化コンテンツデータを、断続的に復号器304に供給する。そして、復号器304へ供給を休止している間に、再びS390に戻って、終了判定を行う。
一方、暗号エンジン303では、復号器304に対してコンテンツ鍵が提供可能な状態になると、コントローラ301における処理と並行して、コンテンツ鍵出力部328による復号部304の復号処理を監視する監視処理が開始される(S400)。コンテンツ鍵出力部328は、提供したコンテンツ鍵による再生が開始されるか、あるいは、コンテンツ鍵が利用されずに再生が終了するかを確認する(S402)。
S402で再生が開始されると確認されると(S402のY)、経過時間計測部329のタイマをリセットし、復号処理の継続時間の計測を開始してT秒の経過を待つ(S404)。そして、T秒が経過すると(S404のY)、経過時間計測部329からライセンスデータLICが消費された旨を伝える情報が、ログ記憶部330に伝達される。この情報を受け取ったログ記憶部330は、記憶されている情報ST3を“状態CL”に変更して(S406)、暗号エンジン303における監視処理を終了する。
また、S402、あるいは、S404において、再生の終了が確認されると(S402のS、あるいは、S404のS)、暗号エンジン302における監視処理を終了する。この場合、ログ記憶部330に記憶されている情報ST3は“状態RL”のままである。
S390において、コントローラ301が再生終了を確認する(S390のY)と、再生時間がT秒を超えているか確認する(S394)。この確認においては、たとえば、コントローラ301が内部に備えているタイマを用いて確認を行っても良い、暗号エンジン303の経過時間計測部329を参照して確認を行っても良い、また、暗号エンジン303のログ記憶部330の情報ST3の状態によって判断するようにしても良い。
S394において、再生してT秒が経過した場合(S394のY)、コントローラ301は、ライセンスデータが消費されたとみなし、次のコンテンツを続いて再生するか判断する(S396)。続けて再生を行わない、すなわち、他のライセンスデータを読み出さない場合(S396のN)、本処理を正常に終了する。
S396において、続いて再生する、すなわち、他のライセンスデータを読み出したい場合(S396のY)、コントローラ301は、S346に移行してライセンス読出命令の発行から処理を繰り返すことができる。これは、複数のライセンスデータの読み出しにおいて、証明書の検証処理を共有とすることで、処理を軽減することを目的とした手順である。なお、続いてライセンスデータを読み出すとしたが、1つのライセンスデータを読み出した後、直ちに次の読み出しを行わなければならないわけではない。暗号エンジン303とストレージデバイス200がチャレンジ鍵Kc2を共有している状態、具体的には、再生装置300の暗号エンジン303の第2暗号部325と、ストレージデバイス200の暗号エンジン203の第4復号部230が、同じチャレンジ鍵Kc2を保持している状態であればいかなるタイミングであっても良い。また、続けてライセンスデータを読み出す場合であっても、ステップS302から手順を開始しても何ら問題はない。続いて他のライセンスデータを読み出さない場合(S386のN)、コントローラ303は、本処理を正常に終了する。
また、S394において、T秒未満の再生、あるいは、再生が行われなかった場合(S394のN)、コントローラ301は、ライセンスデータが消費されていないと判断し、ストレージデバイス200に記録されているライセンスデータLICの復元処理を開始する。
再生装置300のコントローラ301は、ステータス情報送信要求を暗号エンジン303に送る(S410)。
暗号エンジン303の制御部332は、ステータス情報送信要求を受け取ると(S412)、ログ署名部331に指示をする。ログ署名部331は、ログ記憶部330に記憶されている履歴情報に含まれるセッション鍵Ks3、識別情報LicID、情報ST3を取り出し、これらとステップS344で保持したチャレンジ鍵Kc2とを連結して、データKc2//Ks3//LicID//ST3を生成する。そして、ハッシュ演算を行い、H(Kc2//Ks3//LicID//ST3)を算出し、この演算結果と識別情報LicID、状態情報ST3を連結して、ステータス情報LicID//ST3//H(Kc2//Ks3//LicID//ST3)を生成し、再生装置300のコントローラ301へ出力する(S416)。
再生装置300のコントローラ301は、暗号エンジン303からステータス情報LicID//ST3//H(Kc2//Ks3//LicID//ST3)を受信すると(S418)、ストレージデバイス200に対してステータス情報処理命令を発行する(S420)。
ストレージデバイス200は、再生装置300から発行されたステータス情報処理命令を受理すると(S422)、再生装置300にステータス情報を要求する。
再生装置300のコントローラ301は、この要求に応じて、暗号エンジン303から出力されたステータス情報LicID//ST3//H(Kc2//Ks3//LicID//ST3)をストレージデバイス200へ出力する(S424)。
ストレージデバイス200は、ステータス情報LicID//ST3//H(Kc2//Ks3//LicID//ST3)を受理すると(S426)、これを内部の暗号エンジン203に伝達する。
暗号エンジン203では、制御部220の指示に従って、ログ検証部236が伝達されたステータス情報を検証し、ステータス情報が信頼できるかの判断によって、ライセンスデータをリカバリー、すなわち、ライセンスデータを出力前の状態に戻すかの判断を行う(S428)。
S428のステータス情報の検証では、次の2項目が確認される。1)ステータス情報中の識別情報LicIDとログ記憶部234に記憶されている識別情報LicIDが一致しているか。2)ステータス情報中の識別情報LicID、状態情報ST3、ログ記憶部234に保持されているセッション鍵Ks3、ステップS414で保持したチャレンジ鍵Kc2を連結し、この連結されたデータに対してハッシュ関数演算を行った結果H(Kc2//Ks3//LicID//ST3)と、ステータス情報中のハッシュ値H(Kc2//Ks3//LicID//ST3)が一致しているか。
上記2項目の確認において、何れか1つでも不一致であった場合、ステータス情報は信頼できない情報であるとして、リカバリーの対象でないと判断する(S428のN)。
一方、上記2項目の確認において、2項目共に一致した場合、ステータス情報を信頼できるデータであると承認し、さらに、情報ST3と、ログ記憶部234に記憶されている情報ST2に基づいて、当該ライセンスデータが復旧の対象となるライセンスデータか否か判断する。これは、コンテンツ権利者の権利を保護する立場から、復旧の対象となるライセンスデータは、ストレージデバイス200から出力されたものであり、かつ、再生装置200にて消費されていないものに限られるためである。具体的には、情報ST2が”状態SL”であり、かつ、情報ST3が”状態RP”あるいは”状態”RL”であるときである。
上記の判断において、リカバリーの対象であると判断されると(S428のY)、耐タンパ記憶部204に記憶されているライセンスデータの制御情報PCが255でない場合、この制御情報PCを1加算した値に変更する(S430)。そして、制御部220は、リカバリー通知をコントローラ201、ストレージインタフェース202を介して、再生装置300のコントローラ301に送信する(S432)。
再生装置300のコントローラ301は、ストレージデバイス200から出力されたエラー通知を受信すると(S434)、S396へ移行し、本処理を継続する。
一方、S428においてリカバリーの対象でないと判断されると(S428のN)、制御部220は、リカバリーエラー通知をコントローラ201、ストレージインタフェース202を介して、再生装置300のコントローラ301に送信する(S450)。
再生装置300のコントローラ301は、ストレージデバイス200から出力されたエラー通知を受信すると(S452)、S396へ移行し、本処理を継続する。
なお、図11乃至図14に示す、再生装置300がストレージデバイス200に記録されたライセンスデータを利用する手順は、処理が正常に推移した場合の例である。
なお、ライセンスデータの消費の判定における再生時間の測定について、本実施の形態では、復号部304における復号処理までの経過時間を測定するものとしたが、復号部304からコンテンツデコーダ305への復号結果の提供までの経過時間を測定するものとしてもよい。このほか、コンテンツデコーダ305におけるデコード処理までの経過時間、あるいは、コンテンツデコーダ305から出力された再生信号の提供までの経過時間を測定するようにしてもよい。
また、本実施の形態では、ライセンスデータの”消費でない”とする境界時間Tを、コンテンツ種類、たとえば、音楽や映像など、毎に予め定められているとしたが、利用規則としてライセンスデータLICに含めることもでき、また、これらを併用することもできる。たとえば、境界時間Tが利用規則として設定されていない場合、予め定められた境界時間を用いることができる。
また、本実施の形態では、ライセンスデータの消費の判定における再生開始後の経過時間の測定では、経過時間計測部329はタイマを含み、タイマを用いて時間を計測し、境界時間T秒の経過によって、消費の判断を行うものとしたが、処理したデータ量(復号または再生)によって再生開始後の経過時間を導出し、ライセンスの消費を判断することもできる。これは、コンテンツデータを符号化した符号化方式の特性から、コンテンツデータの処理データ量から再生時間を予測することが可能であるためである。また、コンテンツが、映像コンテンツである場合には、復号した、あるいは再生した映像データのフレーム数によって経過時間を導出し、ライセンスの消費を判断することもできる。
さらに、ライセンスデータの消費の判定を再生時間によって行うとしているが、”消費”とするコンテンツデータの境界データ量の設置と、再生したデータ量の計測によって、消費の判定を行うようにしてもよい。
また、上記では、ストレージデバイス200にライセンスデータを格納する場合、および、暗号化コンテンツデータを復号して再生することを目的に、ライセンスデータをストレージデバイス200から再生装置300に送信する場合について説明したが、ストレージデバイス200から、ストレージデバイスに記録する目的でライセンスデータを送信する場合にも同様な処理を実現できる。利用規則には、利用(再生)のみならす、ライセンスデータのコピーやムーブに関する制御も含まれている。他のストレージデバイスに、ライセンスデータあるいはライセンスデータを用いて復号したコンテンツを記録する場合、コピーやムーブの概念が適用される。この場合、制御情報PCに対する処理(ステップS376、S378、S38)に変えて、ライセンスデータの利用規則としてライセンスデータ内に記載されているコピー回数やムーブ回数などの制御情報に対する判断とその事後処理に置き換えられる。
たとえば、制御情報がコピー回数(以下、CCと称す)の場合、制御情報CPによって出力は非判定を行い。ライセンスデータを出力後、事後処理として必要時応じてCCを減算することで実現できる。出力ののく敵と対象となる制御情報がことなるものの、上記の制御情報PCと同様の処理である。リカバリ−処理とは、制御情報CCが減算されている場合、加算して減算以前の値に戻す処理である。
制御情報がムーブ回数(MCと言う。)の場合、制御情報MCによって出力可否判断をした後、出力可能であれば出力するライセンスデータの当該制御情報MCを減算して出力し、ライセンスデータを出力後、事後処理としてストレージデバイス200内に記憶されているライセンスデータを無効化し、ライセンスデータが消去されたのと同等な状態とする。ここで、リカバリ−処理とは、無効化されたライセンスデータを有効な状態に戻す処理である。
また、再生、コピー、ムーブを目的としてライセンスデータが送信されるとき、リカバリー処理によって復元する対象が異なることを考慮すると、“状態SL”を目的毎に細分化して運用する効率がよい。たとえば、再生目的ではライセンスデータ送信した状態を“状態SP”、コピー目的ではライセンスデータ送信した状態を“状態CP”、ムーブ目的ではライセンスデータ送信した状態を“状態MP”などとして区別できるようにする。
さらに、ストレージデバイス200から、同じ機能を持つ別のストレージデバイスに記録を目的としてライセンスデータを送信する場合には、ライセンスデータを受け取る別のストレージデバイスが図8乃至図10が示されるフローチャートにおけるストレージデバイス200と同じ処理を行うことは明示である。
また、上記では、暗号化ライセンスデータE(Ksx,E(KPpx、LIC))、セッション情報E(Kcy,E(KPdy,Ksx)//KPpx)としたが、二重暗号の暗号順序を制限するものではない。つまり、暗号化ライセンスデータE(Kpx,E(Ksx、LIC))、セッション情報E(KPdy,E(KPcy,Ksx)//KPpx)としてもよい。
さらに、上記では、セッション情報では、二重暗号の対象を、Ksxとしているが、二重暗号の対象を限定するものではなく、Kppxであっても、KsxとKPpxの双方であってもよい。この場合、セッション情報はE(KPdy,E(KPcy,KPpx)//KPsx)あるいはE(KPdy,E(KPcy,Ksx//Ppx)となる。いずれの場合にも同様な安全性が提供される。ここではライセンスデータ提供先を“x”、ライセンスデータ提供元を“y”と表記する。
(第2の実施の形態)
図15は、第2の実施の形態に係るコンテンツ配信システムの構成を示す。本実施の形態のコンテンツ配信システムは、第1の実施の形態と同様に、コンテンツを配信する配信サーバ100、コンテンツの提供を受ける端末装置150、端末装置150に提供されたコンテンツが記録されるストレージデバイス200を含み、配信サーバ100および端末装置150は、それぞれ通信装置104、153を介して、ネットワークの一例とするインターネット20により接続される。
第1の実施の形態とは、配信サーバ100の暗号器102と暗号エンジン103が、端末装置150に備えられた構成である点が異なる。
また、配信サーバ100とユーザの端末装置150との間の通信におけるデータの安全性を確保するために、配信サーバ100とユーザの端末装置150間は、SLLあるいは配信事業者が規定する独自のデジタルコンテンツ管理方式にしたがって、安全に保護される。これにより、第1の実施の形態と同様に機能するものである。
以上、本発明に係る実施の形態について説明したが、この実施の形態は例示であり、本発明はこの実施の形態に限定されるものではなく、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
たとえば、上記の実施の形態では、暗号エンジン内において暗号化を行う機能ブロックと復号を行う機能ブロックとを別個に設けたが、これらの構成要素において回路を共有してもよい。これにより、回路規模を抑え、小型化、低消費電力化に寄与することができる。
また、上記では、ストレージデバイス200は、端末装置150に装着され配信サーバ100からライセンスデータを受け取る形態について説明したが、ライセンスデータを生成する機能を有するレコーダに装着して、ライセンスデータを記録するように構成することも可能である。この場合、レコーダは、ライセンスデータを生成する生成部に加え、暗号エンジン103およびストレジデバイスインタフェース152を備えている。
本発明の実施の形態は、特許請求の範囲に示された技術的思想の範囲内において、適宜種々の変更が可能である。