以下、図面を参照しながら本発明のドライブ装置、再生処理装置、情報記録媒体、およびデータ処理方法、並びにコンピュータ・プログラムの詳細について説明する。なお、説明は、以下の記載項目に従って行う。
1.情報記録媒体の格納データ構成
2.コンテンツ再生処理
3.再生処理装置およびドライブ装置の構成
[1.情報記録媒体の格納データ構成]
まず、情報記録媒体の格納データ構成について説明する。図5にコンテンツの格納された情報記録媒体の一例を示す。ここでは、コンテンツ格納済みディスクとしてのROMディスクの情報格納例を示す。
このROMディスクは、例えば、Blu−ray Disc(登録商標)、DVDなどの情報記録媒体であり、正当なコンテンツ著作権、あるいは頒布権を持ついわゆるコンテンツ権利者の許可の下にディスク製造工場において製造された正当なコンテンツを格納した情報記録媒体である。なお、以下の実施例では、情報記録媒体の例としてディスク型の媒体を例として説明するが、本発明は様々な態様の情報記録媒体の適用が可能である。
図5に示すように、情報記録媒体100は、コンテンツ等のデータを格納するデータ格納領域101と、ディスクおよび格納コンテンツに対応する付帯情報、コンテンツの復号処理に適用する鍵情報などを格納するリードイン領域102を持つ。
データ格納領域101には、暗号化(スクランブル)コンテンツ111と、暗号化コンテンツの復号処理に適用する鍵の生成に必要となる情報としての記録シード(REC SEED)であるユニットキー生成情報:Vu112、リボーク情報113が格納される。なお、スクランブル処理は、暗号化処理の一態様であり、本明細書ではスクランブルコンテンツの上位概念として、暗号化コンテンツという表現を用いる。暗号化コンテンツ111は、所定のユニット単位に区分され、ユニットに対応付けられたユニットキーを適用した暗号化がなされた状態で、情報記録媒体100のデータ格納領域101に格納される。ユニットキー生成情報:Vu112は、これらの各ユニットキーの生成に適用する情報でありシード情報とも呼ばれる。リボーク情報113については後述する。
リードイン領域102には、暗号化コンテンツ111の復号処理に適用する鍵の生成に必要となる各種情報が格納される。その1つは、ROMマーク:Ve114である。ROMマーク:Ve114は物理インデックス(Physical Index)とも呼ばれ、書き換えの不可能な固定情報である。リードイン領域102には、さらに、暗号鍵情報120が格納される。なお、ROMマーク:Ve114、暗号鍵情報120は必ずしもリードイン領域102に格納されることが必須ではなく、データ領域101に格納してもよい。
暗号鍵情報120は、前述のユニットキー生成情報:Vu112、ROMマーク:Ve114と同様、情報記録媒体のデータ格納領域101に格納された暗号化コンテンツ111の復号処理に適用する鍵を生成するための鍵情報(鍵生成情報)によって構成される。
すなわち、暗号化コンテンツ111の復号処理に適用する鍵として、例えば情報記録媒体に格納されたコンテンツに対応する鍵として設定されるメディアキー:Kmを取得するために必要となる暗号鍵ブロックであるRKB(Renewal Key Block)121と、暗号化コンテンツ111の復号処理に適用する鍵としてのディスクキー:Kdを、メディアキー:Kmを適用して暗号化した暗号化ディスクキーeKm(Kd)122とを含む情報である。なお、eKa(b)は、データ:bを鍵:Kaで暗号化したデータを示すものとする。
RKB(Renewal Key Block)121は、ブロードキャストエンクリプション方式の一態様として知られる木構造の鍵配信方式に基づいて生成される暗号鍵ブロックであり、情報記録媒体の再生を実行する正当なライセンスを保有するユーザ機器としての情報処理装置に配布されたデバイスキーを適用した復号処理によってメディアキー:Kmを取得可能とした暗号鍵ブロックである。暗号鍵ブロック:RKBの構成データを変更することにより、メディアキー:Kmを取得可能なユーザ機器を選別することが可能となる。
管理センタが、特定のユーザ機器あるいは再生アプリケーションを不正であると判定した場合は、RKBの構成を変更して、不正機器によるメディアキー:Kmの取得を不可能とすることが可能となる。なお、不正と判定されたユーザ機器あるいは再生アプリケーションはリボーク(排除)機器として管理センタに登録される。管理センタは、リボークされたユーザ機器あるいは再生アプリケーションの識別情報をリスト化したリボケーションリストを保持し、適宜更新する。ユーザは、最新のリボケーションリストを含むリボーク情報を情報記録媒体あるいはネットワークを介して入手することができる。
図5に示すリボーク情報113は、リボークされたユーザ機器あるいは再生アプリケーションの識別情報をリスト化したリボケーションリストを含む情報である。ユーザ機器は、例えばコンテンツを出力する機器が不正機器であるか否かを、機器から入力した機器識別子(ID)がリボークリストに記録されていないかを検証することにより判定することが可能であり、リボークリストに掲載された不正機器である場合は、コンテンツの出力を中止する処理を行なう。
次に、情報記録媒体100に格納される暗号化コンテンツ111の記録構成の詳細について、図6〜図8を参照して説明する。図6(a)が情報記録媒体に格納されるデータ記録構成である。18バイトのユーザ制御データ(UCD:User Control Data)と、実際のAVコンテンツデータなどを含む2048バイトのユーザデータ(User Data)が1つのセクタデータとして構成される。
図6(b)に示すように、例えばユーザデータ3セクタ分6144バイトのデータが1つのブロック暗号処理単位としての1ユニット(1AU:Aligned Unit)、すなわちブロックとして設定される。6144バイトのデータは、32TS(トランスポートストリーム)パケットに相当する。なお、ブロックの設定単位は、3セクタ分6144バイトのデータとする方式に限らず、1セクタ分2048バイトのデータを1つの暗号処理単位、すなわちブロックとして設定する方式など、様々な設定が可能である。
図6(c)に示すように、コンテンツに対応するコピー制御情報CCI(Copy Control Information)を格納したユーザデータは、2K(2048)バイト単位で暗号化されて記録される。
なお、18バイトのユーザ制御データ(User Control Data)は暗号化対象から除去され、ユーザデータのみが、暗号化されて記録される。
図7は、1つのセクタデータの構成を示している。1つのセクタデータは、18バイトのユーザ制御データ(UCD:User Control Data)と2048バイトのユーザデータ(User Data)からなる。
ユーザ制御データ(UCD:User Control Data)はセクタヘッダとも呼ばれ、その一部に、セクタ単位の出力制御情報(Output Control Information)151が記録される。
出力制御情報151は、対応するセクタデータ(ユーザデータ)の転送制御情報、例えば情報記録媒体を装着したドライブからPC等の情報処理装置に対する出力の制御情報であり、以下の情報を含む。
*出力制御フラグ(Output Control Flag)
*セキュリティレベル(Security Level)
*アプリケーションID(Application ID)
を含む情報として設定される。
図8にユーザ制御データ(UCD:User Control Data)中に記録される出力制御情報151の詳細構成を示す。出力制御情報151は、ユーザ制御データ(UCD:User Control Data)の3バイト(24ビット)データに記録される。
まず、ビット15〜0の16ビット情報として、アプリケーションID(Application ID)が記録される。アプリケーションID(Application ID)は、情報記録媒体の読み出しコンテンツの制御を出力制御情報(Output Control Information)に従って実行する場合に適用する情報であり、情報記録媒体の読み出しコンテンツの再生処理を許容する再生アプリケーションの識別情報(ID)である。例えば情報記録媒体に格納されたコンテンツが、再生アプリケーションとしてのブルーレイディスク(Blu−ray Disc(登録商標))プレーヤを適用することで再生可能なMPEG−TSパケットベースのハイビジョン映像コンテンツである場合には、再生アプリケーションとしてのブルーレイディスク(Blu−ray Disc(登録商標))プレーヤのアプリケーションIDが記録される。また、情報記録媒体に格納されたコンテンツが、再生アプリケーションとしてのDVDプレーヤで再生可能なMPEG−PSベースの標準画質の映像コンテンツである場合には、再生アプリケーションとしてのDVDプレーヤの識別情報がアプリケーションIDとして記録される。このように、アプリケーションIDは、コンテンツの再生を許可する再生プラットフォームを指定する識別情報である。
次のビット19〜16の4ビットには、セキュリティレベル(Security Level)が記録される。セキュリティレベル(Security Level)も、情報記録媒体の読み出しコンテンツの制御を出力制御情報(Output Control Information)に従って実行する場合に適用する情報であり、コンテンツ出力先として許容するPCなどの情報処理装置のセキュリティレベルを規定した情報である。例えば、特定のセキュアなデータ処理を実行する構成を持ついわゆるセキュアPCに対してのみ出力を許容するなど、コンテンツ出力先として許容するPCなどの情報処理装置のセキュリティレベルを規定する。
0000〜1111までのセキュリティレベルの設定が可能であり、0000を最低セキュリティレベル、1111を最高セキュリティレベルとし、出力先の機器から取得したセキュリティレベル情報が、情報記録媒体の出力制御情報151に記録されたセキュリティレベル(Security Level)以上である場合に、ドライブからのコンテンツ出力を許容する。
具体的には、例えばセキュリティレベル(Security Level)=0001はMicrosoft NGSCB やTrusted Computing Groupで仕様策定されつつあるセキュアPC(Secure PC)環境下で動作するアプリケーション、およびセキュアPC(Secure PC)環境下でしか動作を認めないコンテンツであることを示す。このような設定、すなわち、セキュリティレベル(Security Level)=0001の記録されたデータは、通常のPCアプリケーションでの再生が禁止され、ドライブからのコンテンツ出力が禁止される。
ビット22〜20の3ビットはリザーブ領域であり、
ビット23の1ビットが出力制御フラグ(Output Control Flag)として設定される。出力制御フラグ(Output Control Flag)は、情報記録媒体の読み出しコンテンツの制御を出力制御情報(Output Control Information)に従って実行するか否かの判定情報として利用される。具体的には、例えば、
出力制御フラグ(Output Control Flag)=1:出力制限、およびバス暗号化あり
出力制御フラグ(Output Control Flag)=0:出力制限なし
として設定される。なお、バス暗号化は、ドライブからのコンテンツ出力時に実行する暗号化処理であり、詳細については後述する。
[2.コンテンツ再生処理]
次に、上述した情報記録媒体に格納されたコンテンツの再生処理について説明する。情報記録媒体に格納されたコンテンツの再生態様には2つの態様がある。第1の態様は、情報記録媒体を装着し、情報記録媒体からのデータ読み取りを実行する機器自体が再生処理を実行する態様であり、第2の態様は、情報記録媒体からのデータ読み取りを実行するドライブと、再生処理を実行するホスト(PC)等の再生処理装置とが別の機器として構成され、ドライブ装置と再生処理装置間がデータ転送用バスによって接続され、接続バスを介したデータ転送を実行して再生処理を行なう態様である。
まず、情報記録媒体を装着し、情報記録媒体からのデータ読み取りを実行する機器自体が再生処理を実行する処理シーケンスについて図9を参照して説明する。
ドライブ兼用再生機器300が、暗号化コンテンツ206を格納した情報記録媒体200をセットしてデータの読み取り、鍵生成、コンテンツ復号などの各種の暗号処理を実行してコンテンツを出力する。
情報記録媒体200には、先に、図5を参照して説明した各種の情報、すなわち不正機器リストとしてのリボケーションリストを含むリボーク情報(Revocation info for AKE)201、メディアキー:Kmを格納した暗号鍵ブロックとしてのRKB202、ディスクキー:Kdをメディアキー:Kmで暗号化した暗号化ディスクキー:EKm(Kd)203、ROMマーク:Ve204、ユニットキー生成情報:Vu205、暗号化コンテンツ206が格納されている。
ドライブ兼用再生機器300の処理について説明する。ドライブ兼用再生機器300は、ステップS101において、予め機器内に格納されているデバイスキー:Kdev301を適用して暗号鍵ブロックとしてのRKB202の復号処理を実行して、RKB202からメディアキー:Kmを取得する。なお、RKB202からメディアキー:Kmを取得できるのは、コンテンツの利用を認められた機器のみであり、前述したように不正機器としてリボークされた機器の持つデバイスキーではRKBの復号が出来ず、メディアキー:Kmを取得することができない。
ステップS101においてメディアキー:Kmの取得に成功すると、次に、ステップS102において、取得したメディアキー:Kmを適用して、情報記録媒体200から取得した暗号化ディスクキー:EKm(Kd)203の復号処理を実行し、ディスクキー:Kdを取得する。
次にステップS103において、取得したディスクキー:Kdと、情報記録媒体200から取得したROMマーク:Ve204に基づく鍵生成処理、例えばAES暗号アルゴリズムに従った鍵生成処理を実行してエンベデッドキー:Keを生成する。
AES暗号アルゴリズムに従った鍵生成処理の詳細について、図10を参照して説明する。図10に示すように、AES暗号アルゴリズムに従った鍵生成は、AES暗号処理ブロック311において、入力値に対して暗号鍵を適用したAES暗号処理を実行し、その出力と入力値の排他論理和(XOR)演算結果を出力とする処理である。図9のステップS103においては、入力値を情報記録媒体200から取得したROMマーク:Ve204とし、適用鍵をディスクキー:Kdとした鍵生成処理を実行して、出力値としてのエンベデッドキー:Keを得る。
次に、ステップS104において、取得したエンベデッドキー:Keと、情報記録媒体200から取得したユニットキー生成情報:Vu205に基づく鍵生成処理を実行してユニットキー:Kuを生成する。この鍵生成処理も、図10を参照して説明したAES暗号アルゴリズムに従った鍵生成処理として実行される。
次に、ステップS105において、生成したユニットキーKuを適用した暗号化コンテンツ206の復号処理が実行されて、コンテンツが出力される。
ステップS105におけるユニットキーKuを適用した暗号化コンテンツ206の復号処理の詳細について、図11を参照して説明する。
暗号化コンテンツ206は、所定データ単位のブロック単位での暗号化がなされて情報記録媒体200に格納されている。図11に示すように例えば6144バイトのセクタデータは、16バイトのブロックごとの暗号化がなされている。
復号処理の手順について説明する。まず、6144バイトのセクタデータから先頭の16バイトデータを取得し、AES鍵生成処理ブロック[AES_G]321において、AES暗号アルゴリズムに従った鍵生成処理を実行する。これは、先に図10を参照して説明した処理と同様である。AES鍵生成処理ブロック321の出力をブロックキー:Kbとし、このブロックキー:Kbを適用して次の16バイトデータの復号処理をAES復号処理ブロック[AES_D]322において実行する。
AES復号処理ブロック[AES_D]322では、セクタデータの第2番目の16バイトデータと初期値:IVaとの排他論理和(XOR)結果を入力としてブロックキー:Kbを適用したAES暗号アルゴリズムに従った復号処理を実行して、16バイトブロックデータの復号データを取得するとともに、次のブロックの復号に適用する入力値とする。以下、同様の処理を繰り返し実行して、復号セクタデータ323を得ることができる。なお、初期値:IVaは、予め設定された定数である。IVaは、例えばセクタデータに対応するユーザ制御データあるいはユーザデータから取得することができる値として設定されるという場合もある。
図9のステップS105では、このように、ユニットキー:Kuを適用して、ブロック単位の復号処理を実行し、復号されたコンテンツを出力する。
このように、情報記録媒体からの情報読み取りと再生処理を1つの機器内で実行する場合には、コンテンツの漏洩の可能性は少なく、コンテンツの著作権の侵害といった問題が発生する可能性は少ない。しかし、先に、図2〜4を参照して説明したように、情報記録媒体を装着したドライブからバスを介してPC等の機器にコンテンツ出力を行なう構成の場合には、様々な問題が発生し得る。
本発明の構成では、このような情報記録媒体を装着したドライブからバスを介してPC等の機器にコンテンツ出力を行なう構成においてもセキュアなデータ転送を実現しコンテンツの不正利用の防止を可能としている。以下、ドライブと再生機器とをバス接続し、コンテンツの転送を伴う再生処理シーケンスの詳細について説明する。
図12は、情報記録媒体200と、情報記録媒体200をセットし、情報記録媒体200からのデータ読み取りを実行するドライブ装置400と、ドライブ装置400からコンテンツ他のデータを接続バスを介して入力し、ホストアプリケーション・プログラムに従ったコンテンツ再生処理を実行するホスト機器であるPC等の再生処理装置500の処理を示している。図には、再生処理装置(ホストアプリケーション)として示しているが、これは、再生処理装置において実行されるデータ再生プログラムであるホストアプリケーションの処理という意味である。なお、ドライブ装置400と、ドライブ装置400と、ホストアプリケーションを実行するPC等の再生処理装置500とを接続するバスは、例えばATAPI BUSによって構成される接続バスである。なお、USBその他の接続バスとしてもよい。
情報記録媒体200には、先に図9を参照して説明したと同様、図5に示す各種の情報、すなわち不正機器リストとしてのリボケーションリストを含むリボーク情報(Revocation info for AKE)201、メディアキー:Kmを格納した暗号鍵ブロックとしてのRKB202、ディスクキー:Kdをメディアキー:Kmで暗号化した暗号化ディスクキー:EKm(Kd)203、ROMマーク:Ve204、ユニットキー生成情報:Vu205、暗号化コンテンツ206が格納されている。
ドライブ装置400には、公開鍵暗号方式に従った管理センタの公開鍵[Kp_kic]401、公開鍵暗号方式に従ったドライブ対応の秘密鍵[Ks_drive]402、公開鍵暗号方式に従ったドライブ対応の公開鍵を格納した公開鍵証明書[Cert_drive]403、およびデバイスキー[Kdev]404を格納している。
一方、ホストアプリケーションを実行する再生処理装置500には、公開鍵暗号方式に従った管理センタの公開鍵[Kp_kic]501、再生処理装置(ホスト)の実行するホストアプリケーション対応の公開鍵暗号方式に従ったホストアプリケーション秘密鍵[Ks_host]502、再生処理装置(ホスト)の実行するホストアプリケーション対応の公開鍵暗号方式に従った公開鍵を格納したホストアプリケーション公開鍵証明書[Cert_host]503を格納している。
ドライブ対応の公開鍵証明書[Cert_drive]403と、ホストアプリケーション対応の公開鍵証明書[Cert_host]503の詳細について、図13を参照して説明する。
図13(a)がドライブ対応の公開鍵証明書[Cert_drive]のデータ構成であり、図13(b)がホストアプリケーション対応の公開鍵証明書[Cert_host]のデータ構成である。
ドライブ対応の公開鍵証明書[Cert_drive]のデータ構成は、従来からの公開鍵証明書と同様の構成であり、証明書タイプ、証明書識別子、公開鍵、署名データから構成される。
ホストアプリケーション対応の公開鍵証明書[Cert_host]は、証明書タイプ、証明書識別子、公開鍵、署名データに加え、アプリケーション・セキュリティレベル[SLcert]511と、アプリケーションID[AIDcert]512が追加データとして設定される。
アプリケーション・セキュリティレベル[SLcert]511は、4ビット情報であり、先に図8を参照して説明した情報記録媒体のコンテンツ構成データとしてのセクタデータに対応するユーザ制御データ(UCD)に格納される出力制御情報(Output Control Information)内のセキュリティレベル(Security Level)に対応するデータである。
ホストのアプリケーション対応の公開鍵証明書に格納されるアプリケーション・セキュリティレベル[SLcert]511は、そのアプリケーションの持つセキュリティレベル情報が設定される。例えば、セキュアPCで実行されるアプリケーションであれば、高いセキュリティレベルの値が設定される。
公開鍵証明書に格納されるアプリケーション・セキュリティレベル[SLcert]511は、4ビットデータであり、[0000]〜[1111]までのセキュリティレベルの値のいずれかが設定される。0000を最低セキュリティレベル、1111を最高セキュリティレベルとする。
アプリケーションID[AIDcert]512は、16ビット情報であり、先に図8を参照して説明した情報記録媒体のコンテンツ構成データとしてのセクタデータに対応するユーザ制御データ(UCD)に格納される出力制御情報(Output Control Information)内のアプリケーションIDに対応するデータである。
公開鍵証明書に格納されるアプリケーションIDは、公開鍵証明書の設定されたアプリケーションの識別情報である。例えば情報記録媒体に格納されたコンテンツが、再生アプリケーションとしてのブルーレイディスク(Blu−ray Disc(登録商標))プレーヤアプリケーションであれば、ブルーレイディスク(Blu−ray Disc(登録商標))プレーヤアプリケーションであることを判別可能な識別情報としてのアプリケーションIDが格納される。
図12戻り、ドライブ装置400が情報記録媒体から取得したコンテンツ等のデータを接続バスを介して再生処理装置(ホスト)500に転送して再生する処理シーケンスについて説明する。
まず、ステップS201,S301において、ドライブ装置400と再生処理装置(ホスト)500のホストアプリケーション間で相互認証および鍵交換(AKE:Authentication and Key Exchange)処理が実行される。相互認証および鍵交換(AKE:Authentication and Key Exchange)処理の詳細シーケンスについて、図14を参照して説明する。この処理は、例えば、ISO/IEC9798−3に規定された公開鍵アルゴリズムを利用した相互認証、ISO/IEC11770−3に規定された公開鍵アルゴリズムを利用した鍵生成処理方式を適用して実行可能である。なお、公開鍵を利用した相互認証方式として実用化された方式としては、例えば、DTCP(Digital Transmission Content Protection) Specification Volume 1 (Informational Version)に記載される方法がある。
図14に示す処理シーケンスについて説明する。ステップS401において、ホストアプリケーションは、ドライブに対して乱数生成処理によって生成したチャレンジデータ[C_host]と、公開鍵証明書[Cert_Host]を送信する。公開鍵証明書[Cert_Host]は、図13(b)に示す公開鍵証明書であり、セキュリティレベルと、アプリケーションIDの各情報が格納された公開鍵証明書である。
このデータを受け取ったドライブ側は、公開鍵証明書[Cert_Host]の署名検証処理により、公開鍵証明書[Cert_Host]の正当性を検証する。署名検証処理は、ドライブの保持する管理センタの公開鍵[Kp_kic]401(図12参照)を適用して実行される。
公開鍵証明書[Cert_Host]の正当性が検証されると、公開鍵証明書[Cert_Host]からアプリケーションIDを取得して、情報記録媒体から取得したリボーク情報201に含まれるリボケーションリストに基づくリボーク確認を実行する。
公開鍵証明書[Cert_Host]の正当性が確認されなかったり、あるいは、アプリケーションIDに基づいて、ホストアプリケーションがリボークされていることが判明した場合にはエラーメッセージの通知などを実行し、処理を終了する。以後のコンテンツ、出力、再生処理は中止される。
公開鍵証明書[Cert_Host]の正当性が確認され、ホストアプリケーションがリボークされていない正当なアプリケーションであることが確認されると、ステップS402において、ドライブは、ホストアプリケーションに対して乱数生成処理によって生成したチャレンジデータ[C_drive]と、ドライブ側の公開鍵証明書[Cert_drive]を送信する。
ホストアプリケーション側では、ドライブ側の公開鍵証明書[Cert_drive]の署名検証を実行する。署名検証処理は、ホスト側で保持する管理センタの公開鍵[Kp_kic]501(図12参照)を適用して実行される。
公開鍵証明書[Cert_drive]の正当性が確認されなかった場合にはエラーメッセージの通知などを実行し、処理を終了する。以後のコンテンツ、出力、再生処理は中止される。
公開鍵証明書[Cert_drive]の正当性が確認された場合には、ホストアプリケーションは、ドライブから受信したチャレンジデータ[C_drive]に基づく演算を実行しパラメータ[A_host]を算出し、新たに生成した乱数[R_host]とともに、ドライブに送信(ステップS403)する。
一方、ドライブは、ホストアプリケーションから受信したチャレンジデータ[C_host]に基づく演算を実行しパラメータ[A_drive]を算出し、新たに生成した乱数[R_drive]とともに、ホストアプリケーションに送信(ステップS404)する。
この処理により、ドライブ、ホストアプリケーションの双方は、乱数[R_host]、[R_drive]、パラメータ[A_host]、[A_drive]を共有することになり、ドライブと、ホストアプリケーションの双方は、これらの共有データに基づいて共通のセッションキーKsを生成(ステップS405)する。
ドライブは、さらに、ステップS406において、乱数に基づいて生成したバスキー:Kbus、およびバスキーのシーケンス番号:SEQとの連結データ:[Kbus‖SEQ]に、この連結データの改竄検証用データとして算出したハッシュ値[hash(Kbus‖SEQ)]をセッションキー:Ksを用いて暗号化したデータ:EKs[(Kbus‖SEQ),hash(Kbus‖SEQ)]をホストアプリケーションに送信する。なお、このステップS406の処理は、図12において、ステップS206のバスキー生成処理(Genarate_Kbus)と、ステップS207のセッションキー:Ksによるバスキーの暗号化処理(AES_E)の処理に相当する。
バスキー:Kbusは、暗号化コンテンツのドライブからホスト側への接続バスを介した転送処理の際の暗号化キーとして用いられる鍵であり、ドライブにおいて乱数に基づいて生成される。バスキーは、適宜切り替えられ、各バスキーに応じたシーケンス番号が対応付けられる。例えばホスト側で複数のアプリケーションを適用して情報記録媒体に格納された異なるコンテンツの再生をそれぞれのアプリケーションを適用して実行する場合には、各アプリケーションで適用するバスキーを異なる鍵として設定する。
図12に戻り、ドライブ装置400が情報記録媒体から取得したコンテンツ等のデータを接続バスを介して再生処理装置(ホスト)500に転送して再生する処理シーケンスについて説明を続ける。
ドライブ装置400は、再生処理装置(ホスト)500との相互認証および鍵交換(AKE)が終了すると、ドライブ内に保持するデバイスキー:Kdev404を適用し、ステップS202において、情報記録媒体200から読み出した暗号鍵ブロックとしてのRKB202の復号処理を実行して、RKB202からメディアキー:Kmを取得する。なお、RKB202からメディアキー:Kmを取得できるのは、コンテンツの利用を認められた機器のみであり、前述したように不正機器としてリボークされた機器の持つデバイスキーではRKBの復号が出来ず、メディアキー:Kmを取得することができない。
ステップS202においてメディアキー:Kmの取得に成功すると、次に、ステップS203において、取得したメディアキー:Kmを適用して、情報記録媒体200から取得した暗号化ディスクキー:EKm(Kd)203の復号処理を実行し、ディスクキー:Kdを取得する。
次にステップS204において、取得したディスクキー:Kdと、情報記録媒体200から取得したROMマーク:Ve204に基づく鍵生成処理、例えばAES暗号アルゴリズムに従った鍵生成処理を実行してエンベデッドキー:Keを生成する。AES暗号アルゴリズムに従った鍵生成処理は、先に図10を参照して説明した通りである。
ドライブは、ステップS205において、エンベデッドキー:Keを先の相互認証および鍵交換処理(AKE)において生成したセッションキー:Ksで暗号化して再生処理装置(ホスト)500に対して接続バスを介して送信する。
ステップS206、およびステップS207の処理は、先に図14を参照して説明した相互認証および鍵交換処理(AKE)のステップS406の処理に相当し、乱数に基づいて、バスキー:Kbusを生成(ステップS206)し、セッションキー:Ksでバスキー:Kbusを含むデータを暗号化(ステップS207)して生成したデータを再生処理装置(ホスト)500に対して接続バスを介して送信する処理である。送信データは、先に図14を参照して説明したように、乱数に基づいて生成したバスキー:Kbus、およびバスキーのシーケンス番号:SEQとの連結データ:[Kbus‖SEQ]と、この連結データの改竄検証用データとして算出したハッシュ値[hash(Kbus‖SEQ)]とをセッションキー:Ksを用いて暗号化したデータ:EKs[(Kbus‖SEQ),hash(Kbus‖SEQ)]である。
さらに、ドライブ装置400は、ステップS208において、情報記録媒体200から読み出した暗号化コンテンツ206のユーザ制御データ(UCD)に含まれる出力制御情報と、相互認証および鍵交換処理(AKE)処理において、再生処理装置(ホスト)500から取得した再生処理装置(ホスト)の公開鍵証明書の格納データとに基づく出力制御を実行し、ステップS209において、暗号化コンテンツ206を制御態様に応じてバスキー:Kbusを用いて暗号化し、生成した暗号化データを接続バスを介して再生処理装置(ホスト)500に対して出力する。
情報記録媒体200から読み出される暗号化コンテンツ350は、例えばスクランブル処理のなされた暗号化データであり、ドライブは、このスクランブル処理されたデータをバスキー:Kbusを適用して再暗号化してホスト側に出力する。このバスキー:Kbusを適用した再暗号化処理によるデータ出力を実行することにより、バスキー:Kbusを保持している認証のなされたホスト側の唯一のアプリケーションのみが、バスキー:Kbusを適用した復号が可能となり、復号処理によって暗号化コンテンツ350を取得することが可能となる。
すなわち、先に、図4を参照して説明したように、コンテンツを入力するPC(ホスト)側でのアプリケーションの切り替えによるコンテンツの迂回取得や、ドライブとホストとの接続バスの転送データを盗聴することによるコンテンツ取得を行なっても、取得されるコンテンツは、バスキー:Kbusによって暗号化されたデータであり、バスキー:Kbusを保有しているのは、ドライブとの認証の成立した特定のアプリケーションのみであり、その特定のアプリケーションを適用しない限り、入力コンテンツの復号は実行できない。CSSスクランブルの解除プログラムのみではバスキー:Kbusによって暗号化されたデータの復号は実行できず、コンテンツの不正利用が防止可能となる。
バスキー:Kbusを適用した暗号化コンテンツ206の暗号化処理態様について、図15を参照して説明する。バスキー:Kbusを適用した暗号化コンテンツ206の暗号化処理は、例えば図15に示すように、AES−CBCモードを適用したブロック暗号化処理によって実行される。
ドライブ装置400は、情報記録媒体200から読み出される暗号化コンテンツに対して、ドライブにおいて生成したバスキー:Kbusを適用して、所定データブロック単位(16バイト)で暗号化する処理を実行する。
まず、情報記録媒体200から読み出される暗号化コンテンツの構成データである2048バイトのセクタデータ350から先頭の16バイトデータを取得し、初期値:IVbとの排他論理和(XOR)結果を、AES暗号処理部[AES_E]351に入力し、バスキー:Kbusを適用したAES暗号アルゴリズムに従った暗号処理を実行して16バイトブロックデータの暗号化データを生成する。初期値:IVbは、予め設定された定数である。IVbは、例えば、セクタデータ350に対応するユーザ制御データ(UCD)から取得されるという場合もある。
さらに、この生成データは、次のブロックの暗号化に適用する入力値として適用される。以下、各16バイトのブロックデータ毎に排他論理和(XOR)およびAES暗号処理を同様に繰り返し実行して、バスキーによる暗号化セクタデータ352を生成し、このデータをATAPI−BUSなどの接続バスを介して再生処理装置(ホスト)500側のアプリケーションに向けて送信する。再生処理装置(ホスト)500側ではこの入力暗号化データを復号して再生処理を行なう。
図12に戻り、再生処理装置(ホスト)500側の処理シーケンスについて説明する。再生処理装置(ホスト)500は、まず、前述したようにステップS301においてドライブ装置400との相互認証および鍵交換(AKE)を実行し、セッションキー:Ksを取得する。
次に、ステップS302において、ドライブから接続バスを介して入力したセッションキー:Ksによって暗号化されたエンベデッドキー:Ke、すなわち[EKs(Ke)]に対して、セッションキー:Ksを適用した復号処理を実行しエンベデッドキー:Keを取得する。
さらに、ステップS303において、ドライブから接続バスを介して入力したユニットキー生成情報:Vuに対してエンベデッドキー:Keを適用したAES鍵生成処理(図10参照)を実行し、ユニットキー:Kuを生成する。
さらに、ステップS304において、ドライブから接続バスを介して入力したセッションキー:Ksによって暗号化されたバスキー:Kbus、すなわち[EKs(Kbus)]に対して、セッションキー:Ksを適用した復号処理を実行しバスキー:Kbusを取得する。
なお、先に、図14を参照して説明したように、ドライブから送信されるバスキー:Kbusを含むデータは、バスキー:Kbusおよびバスキーのシーケンス番号:SEQとの連結データ:[Kbus‖SEQ]と、この連結データの改竄検証用データとして算出したハッシュ値[hash(Kbus‖SEQ)]とをセッションキー:Ksを用いて暗号化したデータ:EKs[(Kbus‖SEQ),hash(Kbus‖SEQ)]である。
再生処理装置(ホスト)500のアプリケーションは、ステップS304において、データ:EKs[(Kbus‖SEQ),hash(Kbus‖SEQ)]をセッションキー:Ksで復号し、バスキー:Kbusおよびバスキーのシーケンス番号:SEQとの連結データ:[Kbus‖SEQ]と、この連結データの改竄検証用データとして算出したハッシュ値[hash(Kbus‖SEQ)]とを取得する。
次に、ステップS305において、連結データ:[Kbus‖SEQ]のハッシュ値を算出し、ドライブからの入力データ中に含まれるハッシュ値[hash(Kbus‖SEQ)]と比較を実行する。両ハッシュ値が一致していれば、連結データ:[Kbus‖SEQ]が改竄されていないものと判定し、ステップS306におけるバスキー:Kbusを適用したコンテンツ復号処理に以降する。
ステップS306では、ドライブ装置400から入力するバスキー:Kbusによって再暗号化された暗号化コンテンツの復号処理を実行する。
バスキー:Kbusによって再暗号化された暗号化コンテンツの復号処理の詳細について、図16を参照して説明する。バスキー:Kbusを適用した暗号化コンテンツの復号処理は、例えば図16に示すように、AES−CBCモードを適用したブロック復号処理によって実行される。
再生処理装置(ホスト)500のアプリケーションは、ドライブ装置400から接続バスを介して入力する暗号化コンテンツに対して、ドライブから入力したバスキー:Kbusを適用して、所定データブロック単位(16バイト)で復号する処理を実行する。
まず、ドライブ装置400から接続バスを介して入力する暗号化コンテンツの構成データである2048バイトのセクタデータ370から先頭の16バイトデータを取得し、AES復号処理部[AES_D]371に入力し、バスキー:Kbusを適用したAES暗号アルゴリズムに従った復号処理を実行し、さらに、初期値:IVbとの排他論理和(XOR)演算を実行して復号結果を得る。初期値:IVbは、予め設定された定数である。IVbは、例えば、セクタデータ370に対応するユーザ制御データ(UCD)から取得されるという場合もある。
さらに、16バイト単位の復号結果データは、次のブロックの復号処理に適用する入力値として適用される。以下、各16バイトのブロックデータ毎にAES復号処理および排他論理和(XOR)を同様に繰り返し実行して、バスキーによる暗号化を解除したセクタデータ、すなわち、情報記録媒体200に格納されたデータ状態としての暗号化(スクランブル)セクタデータ372を取得する。
さらに、再生処理装置(ホスト)500のホストアプリケーションは、図12に示すステップS307において、ユニットキー:Kuを適用して、情報記録媒体200に格納されたデータ状態としての暗号化コンテンツの復号処理を実行する。この復号処理は、先に図11を参照して説明したと同様の処理として実行される。
以上の処理により、再生処理装置(ホスト)500のホストアプリケーションは、復号コンテンツ520を取得し、スピーカ、ディスプレイ等の出力部に対する出力処理を行いコンテンツ再生を実行する。
このように、本発明の構成では、情報記録媒体のデータ読み取りを実行するドライブにおいて、情報記録媒体から読み出したスクランブル処理されたデータをバスキー:Kbusを適用して再暗号化してホスト側に出力する構成としたので、バスキー:Kbusを保持しているホスト側アプリケーション、すなわちドライブとの相互認証が成立したホストアプリケーションのみにおいてバスキー:Kbusを適用した復号が可能となり、復号処理による暗号化コンテンツの利用が可能となる。
従って、コンテンツを入力するPC(ホスト)側でのアプリケーションの切り替えによるコンテンツの迂回取得や、ドライブとホストとの接続バスの転送データを盗聴することによるコンテンツ取得を行なってもバスキー:Kbusによって暗号化されたデータの復号は、ドライブとの相互認証が成立し、同一のバスキー:Kbusを持つ唯一のアプリケーションのみが可能となるので、他のアプリケーション、例えばCSSスクランブルの解除プログラムはバスキー:Kbusによる暗号化データの復号が不可能でありコンテンツの不正利用が防止される。
次に、図17〜図19を参照して、図12に示すステップS208、ステップS209において実行する出力制御情報解析と、コンテンツの出力制御の複数の態様について説明する。
先に、図8を参照して説明したように、情報記録媒体に格納した暗号化コンテンツのセクタヘッダ(ユーザ制御データ)には、ドライブからPC等の再生処理装置に対する出力制御情報として、
(1)出力制御フラグ(Output Control Flag)
(2)セキュリティレベル(Security Level)
(3)アプリケーションID(Application ID)
の各情報が設定されると説明した。
これら(1)〜(3)の3種類の情報のすべてを出力制御情報として設定する態様も可能であるが、(1)出力制御フラグ(Output Control Flag)のみ、あるいは、(1)出力制御フラグ(Output Control Flag)と、(3)アプリケーションID(Application ID)のみを設定するなど、各種の態様が可能である。また、設定情報としては(1)〜(3)の全てが設定されている場合であっても、ドライブにおける出力制御情報の解析に際して、その一部のみを適用した解釈を実行してもよい。以下、これらの複数の処理態様について、図17〜図19を参照してドライブ側の処理シーケンス例について説明する。
図17〜図19は、それぞれ、以下の処理を説明するシーケンスである。
図17:出力制御情報中の[出力制御フラグ]のみに基づく出力制御シーケンス
図18:出力制御情報中の[出力制御フラグ]と[アプリケーションID]に基づく出力制御シーケンス
図19:出力制御情報中の[出力制御フラグ]と[アプリケーションID]と[セキュリティレベル]に基づく出力制御シーケンス
まず、図17を参照して、出力制御情報中の[出力制御フラグ]のみに基づいて、ドライブから再生処理装置(ホスト)に対するコンテンツ出力を制御するシーケンスについて説明する。
図17のフローの各ステップについて説明する。まず、ステップS511においてドライブに対する情報記録媒体(ディスク)の挿入を検知し、ステップS512において、バス接続された再生処理装置(ホスト)側でのコンテンツ再生処理を実行するホストアプリケーションの起動を検知する。これらが検知されたことを条件として、ステップS513に進み、ホスト側からの相互認証要求を待機し、相互認証要求を受信すると、ステップS514において、先に図14を参照して説明した公開鍵暗号方式に従った相互認証および鍵交換(AKE)処理を実行する。
ステップS515において、相互認証および鍵交換(AKE)処理の完了が確認されると、ステップS516に進み、ドライブは、バスキー:Kbに対応する乱数Rの生成処理を実行し、この生成乱数Rをバスキー:Kbとする。この処理は、図12におけるステップS206の処理に相当する。なお、前述したように、バスキー:Kbには、シーケンス番号が対応付けられる。ドライブは、複数の異なるシーケンス番号に対応する異なるバスキーを保持し、ホスト側の実行アプリケーションに応じて切り替えて適用する場合もある。
ステップS517において、ホスト側からバスキーの転送要求を受領すると、ステップS518において、バスキー:Kbをホスト側に転送する。この処理は、図12におけるステップS207の処理に相当する。なお、このバスキー転送は、図14の相互認証および鍵交換(AKE)処理の最終ステップS406に相当する処理であり、ドライブは、バスキー:Kbusおよびバスキーのシーケンス番号:SEQとの連結データ:[Kbus‖SEQ]と、この連結データの改竄検証用データとして算出したハッシュ値[hash(Kbus‖SEQ)]とをセッションキー:Ksを用いて暗号化したデータ:EKs[(Kbus‖SEQ),hash(Kbus‖SEQ)]を生成してホスト側に送信する。
次に、ステッブS519では、新たな相互認証要求がないことを確認し、また、ステップS520では、情報記録媒体の排出がなされないことを確認して、ステップS521において、ホスト側のコンテンツ取得要求、すなわちセクタデータの読み取り要求がなされるまで待機する。
なお、ステップS519において、新たな相互認証要求があった場合は、ステップS514に戻り相互認証および鍵交換(AKE)処理を実行し、新たなバスキーの生成、送信を実行する。この際に生成するバスキーは、シーケンス番号:2のバスキーであり、先に生成したバスキー(シーケンス番号1)とは異なるバスキーとなる。これらは、ホスト側の異なるアプリケーションに対応するバスキーであり、ドライブは、ホスト側の起動アプリケーション毎に相互認証および鍵交換(AKE)処理を実行し、新たなバスキーの生成、送信を実行し、コンテンツ送信に際しては、ホスト側の起動アプリケーション毎に対応するバスキーを適用した暗号化データを生成して送信する。
なお、ステップS520において、ドライブからのディスク排出があったと判定した場合は、ステップS511に戻り、初期招待に設定され、生成済みのバスキー、セッションキー等のすべてのデータはリセット、すなわち消去される。
ステップS521において、ホスト側からセクタデータの読み出し要求があると、ドライブは、ステップS522において、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)から出力制御情報を読み取り、[出力制御フラグ:OCF]の値を判定する。この処理は、図12のステップS208の処理に相当する。
出力制御フラグ:OCFは、先に図8を参照して説明したように、
OCF=1:出力制限あり、バス暗号化あり、
OCF=0:出力制限なし、
の設定情報である。
ステップS522において、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)の出力制御情報中の出力制御フラグ(OCF)が[1]に設定されていると判定した場合は、ステップS523に進み、情報記録媒体から読出したセクタデータをバスキー:Kbusで暗号化して、ステップS524においてホスト側に出力する。なお、ステップS523におけるセクタデータの暗号化処理は、例えば、先に図15を参照して説明したAES−CBCモードを適用した暗号化処理として実行される。
ステップS522において、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)の出力制御情報中の出力制御フラグ(OCF)が[0]に設定されていると判定した場合は、ステップS523をスキップし、情報記録媒体から読出したセクタデータのバスキー:Kbusによる暗号化処理を実行することなく、ステップS524において、情報記録媒体からの読出しコンテンツをそのままホスト側に出力する。なお、この読出しコンテンツは、例えばCSS規定に従った暗号化(スクランブル)コンテンツである。
このように、ドライブは、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)の出力制御情報中の出力制御フラグ(OCF)が[0]か[1]かに基づいてバスキーによる暗号化の要否を判定し、バスキーによる暗号化の必要なデータである場合に、出力コンテンツのバスキーによる暗号化を実行して出力する。
次に、図18を参照して、出力制御情報中の[出力制御フラグ]と[アプリケーションID]とに基づいて、ドライブから再生処理装置(ホスト)に対するコンテンツ出力を制御するシーケンスについて説明する。
図18のフローの各ステップについて説明する。まず、ステップS611において、初期設定処理としてセッションID[SID]と、バスキー:Kbusの値を初期値[0]に設定する。セッションIDは、ドライブトホスト間で設定されたセッションに対応する識別子であり、ホストドライブ間において設定されたセッションに対しては、ホストドライブ間の相互認証および鍵交換(AKE)処理において、ドライブがホストから受領したホストのアプリケーション対応の公開鍵証明書(図13参照)から取得したアプリケーションID[AIDcert]と同一の値がセッションIDとされる。すなわち、SID=AIDcertとしてセッションIDが決定される。
ステップS612〜S616の処理は、図17において説明した処理ステップS511〜515と同様の処理であり、説明を省略する。
ステップS617では、ホストドライブ間の相互認証および鍵交換(AKE)処理において、ドライブが、ホストから受領したホストのアプリケーション対応の公開鍵証明書(図13参照)から取得したアプリケーションID[AIDcert]と、セッションID[SID]が一致するか否かを判定する。
SID=AIDcertであれば、既に成立済みのセッションであり、セッション対応のバスキーが存在しているので、バスキー生成処理を実行することなくステップS620に進む。
SID≠AIDcertであれば、新たなセッションであり、ステップS618において、セッション対応のバスキーの生成処理を実行する。これは乱数生成によるバスキーの生成として実行する。なお、バスキーにはシーケンス番号が対応付けられる。それぞれのセッション対応のバスキーは区別されて記憶され、利用される。
バスキー:Kbusの生成が完了すると、ステップS619において、新たなセッションに対するセッション識別子をホストドライブ間の相互認証および鍵交換(AKE)処理において、ドライブが、ホストから受領したホストのアプリケーション対応の公開鍵証明書(図13参照)から取得したアプリケーションID[AIDcert]として設定、すなわち、SID=AIDcertとして設定する。
ステップS620〜S624の処理は、先に説明した図17のフローにおけるステップS517〜521の処理と同様であるので、説明を省略する。
ステップS624において、ホスト側からセクタデータの読み出し要求があると、ドライブは、ステップS625において、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)から出力制御情報を読み取り、[出力制御フラグ:OCF]の値を判定する。この処理は、図12のステップS208の処理に相当する。
出力制御フラグ:OCFは、先に図8を参照して説明したように、
OCF=1:出力制限あり、バス暗号化あり、
OCF=0:出力制限なし、
の設定情報である。
ステップS625において、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)の出力制御情報中の出力制御フラグ(OCF)が[1]に設定されていると判定した場合は、ステップS626に進み、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)の出力制御情報中のアプリケーションID[AIDucd]と、ホストドライブ間の相互認証および鍵交換(AKE)処理において、ドライブが、ホストから受領したホストのアプリケーション対応の公開鍵証明書(図13参照)から取得したアプリケーションID[AIDcert]とが一致するか否か、すなわち、
AIDucd=AIDcert
が成立するか否かを判定する。
前述したように、出力制御情報中のアプリケーションID[AIDucd]は、出力を許容するアプリケーションを示す識別情報であり、ドライブは、ホストのアプリケーションが、出力制御情報中のアプリケーションID[AIDucd]に一致する場合にのみ、コンテンツ出力を許容する。
ステップS626において、
AIDucd=AIDcert
が成立しないと判定した場合は、ステップS629においてドライブからホスト側にエラーメッセージを送信し、処理を終了する。この場合、コンテンツの送信は実行されない。
ステップS626において、
AIDucd=AIDcert
が成立すると判定した場合は、ステップS627において、情報記録媒体から読出したセクタデータをバスキー:Kbusで暗号化して、ステップS628においてホスト側に出力する。なお、ステップS627におけるセクタデータの暗号化処理は、例えば、先に図15を参照して説明したAES−CBCモードを適用した暗号化処理として実行される。
ステップS625において、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)の出力制御情報中の出力制御フラグ(OCF)が[0]に設定されていると判定した場合は、ステップS626,S627をスキップし、アプリケーションIDの判定処理、および情報記録媒体から読出したセクタデータのバスキー:Kbusによる暗号化処理を実行することなく、ステップS628に進み、情報記録媒体からの読出しコンテンツをそのままホスト側に出力する。なお、この読出しコンテンツは、例えばCSS規定に従った暗号化(スクランブル)コンテンツである。
この実施例においては、ドライブは、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)の出力制御情報中の出力制御フラグ(OCF)が[0]か[1]かを判定し、出力制御を実行するか否かを判定するともに、出力制御フラグ(OCF)に基づいて出力制御が必要とされる場合には、さらに、アプリケーションIDの検証、すなわち、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)の出力制御情報中のアプリケーションID[AIDucd]と、ホストドライブ間の相互認証および鍵交換(AKE)処理において、ドライブが、ホストから受領したホストのアプリケーション対応の公開鍵証明書から取得したアプリケーションID[AIDcert]とが一致するか否か、すなわち、
AIDucd=AIDcert
が成立するか否かを判定し、一致する場合にコンテンツ出力を許容して、出力コンテンツのバスキーによる暗号化を実行して出力する。
この構成とすることで、ホスト側で実行しているアプリケーションの確認に基づくコンテンツ出力が実現される。なお、アプリケーションIDは公開鍵証明書に格納されたデータであり、管理センタの署名に基づいて相互認証時に改竄検証の実行されたデータであるので、信頼性の担保されたデータに基づくアプリケーションの確認が可能となる。
次に、図19を参照して、出力制御情報中の[出力制御フラグ]と[アプリケーションID]と、[セキュリティレベル]とに基づいて、ドライブから再生処理装置(ホスト)に対するコンテンツ出力を制御するシーケンスについて説明する。
図19のフローの各ステップの処理について説明する。図19のフローにおいて、ステップS631〜S644は、先に説明した図18のフローにおけるステップS611〜S624と同様の処理であるので、説明を省略する。
ステップS644において、ホスト側からセクタデータの読み出し要求があると、ドライブは、ステップS645において、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)から出力制御情報を読み取り、[出力制御フラグ:OCF]の値を判定する。この処理は、図12のステップS208の処理に相当する。
出力制御フラグ:OCFは、先に図8を参照して説明したように、
OCF=1:出力制限あり、バス暗号化あり、
OCF=0:出力制限なし、
の設定情報である。
ステップS645において、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)の出力制御情報中の出力制御フラグ(OCF)が[1]に設定されていると判定した場合は、ステップS646に進み、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)の出力制御情報中のセキュリティレベル[SLucd]と、ホストドライブ間の相互認証および鍵交換(AKE)処理において、ドライブが、ホストから受領したホストのアプリケーション対応の公開鍵証明書(図13参照)から取得したセキュリティレベル[SLcert]との値の比較を実行する。
セクタヘッダ(ユーザ制御データ)の出力制御情報中に記録されたセキュリティレベル[SLucd]はコンテンツ出力を許容するアプリケーションのセキュリティレベルを設定した情報であり、許容する最低のセキュリティレベルの値が記録される。例えば1111(最高レベル)〜0000(最低レベル)のいずれかの値が設定される。ホストアプリケーション対応の公開鍵証明書に記録さたれセキュリティレベル[SLcert]は、ホストアプリケーション対応のセキュリティレベルの値である。
ドライブは、ホストアプリケーション対応のセキュリティレベル[SLcert]の値が、出力制御情報中に記録されたセキュリティレベル[SLucd]の値以上である場合に、コンテンツ出力の許容アプリケーションであると判定する。すなわち、
SLucd≦SLcert
である場合に、コンテンツ出力の許容アプリケーションであると判定する。
ステップS646において、
SLucd≦SLcert
が成立しないと判定した場合は、ステップS650においてドライブからホスト側にエラーメッセージを送信し、処理を終了する。この場合、コンテンツの送信は実行されない。
ステップS646において、
SLucd≦SLcert
が成立すると判定した場合は、さらに、ステップS647において、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)の出力制御情報中のアプリケーションID[AIDucd]と、ホストから受領したホストのアプリケーション対応の公開鍵証明書(図13参照)から取得したアプリケーションID[AIDcert]とが一致するか否か、すなわち、
AIDucd=AIDcert
が成立するか否かを判定する。
この処理は、図18において説明したステップS626の処理と同様である。
ステップS647において、
AIDucd=AIDcert
が成立しないと判定した場合は、ステップS650においてドライブからホスト側にエラーメッセージを送信し、処理を終了する。この場合、コンテンツの送信は実行されない。
ステップS647において、
AIDucd=AIDcert
が成立すると判定した場合は、ステップS648において、情報記録媒体から読出したセクタデータをバスキー:Kbusで暗号化して、ステップS649においてホスト側に出力する。なお、ステップS627におけるセクタデータの暗号化処理は、例えば、先に図15を参照して説明したAES−CBCモードを適用した暗号化処理として実行される。
なお、ステップS645において、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)の出力制御情報中の出力制御フラグ(OCF)が[0]に設定されていると判定した場合は、ステップS646〜S648をスキップし、セキュリティレベルの判定処理、アプリケーションIDの判定処理、および情報記録媒体から読出したセクタデータのバスキー:Kbusによる暗号化処理を実行することなく、ステップS649に進み、情報記録媒体からの読出しコンテンツをそのままホスト側に出力する。なお、この読出しコンテンツは、例えばCSS規定に従った暗号化(スクランブル)コンテンツである。
この実施例においては、ドライブは、読み出し対象のセクタデータに対応するセクタヘッダ(ユーザ制御データ)の出力制御情報中の出力制御フラグ(OCF)が[0]か[1]かを判定し、出力制御を実行するか否かを判定するともに、出力制御フラグ(OCF)に基づいて出力制御が必要とされる場合には、さらに、セキュリティレベルの検証と、アプリケーションIDの検証を実行する構成である。
本構成によれば、ホスト側で実行しているアプリケーションのセキュリティレベルと、アプリケーション確認に基づくコンテンツ出力が実現される。なお、セキュリティレベルとアプリケーションIDは公開鍵証明書に格納されたデータであり、管理センタの署名に基づいて相互認証時に改竄検証の実行されたデータであるので、信頼性の担保されたデータに基づくセキュリティレベルおよびアプリケーションの確認が可能となる。
[3.再生処理装置およびドライブ装置の構成]
次に、図20、図21を参照して、情報記録媒体の格納コンテンツの再生処理を行う再生処理装置および、情報記録媒体の格納コンテンツの読み取りおよび出力を実行するドライブ装置の構成例について説明する。
まず、図20を参照して、情報記録媒体の格納コンテンツの再生処理を行う再生処理装置の構成について説明する。再生処理装置600は、OSやコンテンツ再生アプリケーションプログラム、相互認証処理プログラムなどの各種プログラムに従ったデータ処理を実行するCPU670、プログラム、パラメータ等の記憶領域としてのROM660、メモリ680、デジタル信号を入出力する入出力I/F610、アナログ信号を入出力し、A/D,D/Aコンバータ641を持つ入出力I/F640、MPEGデータのエンコード、デコード処理を実行するMPEGコーデック630、TS(Transport Stream)・PS(Program Stream)処理を実行するTS・PS処理手段620、相互認証、暗号化コンテンツの復号処理など各種の暗号処理を実行する暗号処理手段650、ハードディスクなどの記録媒体691、記録媒体691の駆動、データ記録再生信号の入出力を行なうドライブ690を有し、バス601に各ブロックが接続されている。
再生処理装置(ホスト)600は、例えばATAPIBUS等の接続バスによってドライブと接続され、上述したバスキーによって暗号化されたコンテンツは、デジタル信号用入出力I/F610から入力され、必要に応じて暗号化処理手段650によって、例えば、図16を参照して説明したAES−CBCモードによる復号処理が実行される。
なお、コンテンツ再生処理を実行するプログラムは例えばROM660内に保管されており、プログラムの実行処理中は必要に応じて、パラメータ、データの保管、ワーク領域としてメモリ680を使用する。
ROM660または記録媒体691には、先に図12を参照して説明した管理センタの公開鍵、ホストアプリケーションに対応する秘密鍵、ホストアプリケーションに対応する公開鍵証明書が格納されている。なお、複数のホストアプリケーションを保持している場合は、それぞれに対応する秘密鍵と公開鍵証明書が格納される。
次に、図21を参照して、情報記録媒体の格納コンテンツの読み取り、および再生処理装置(ホスト)に対する出力を実行するドライブ装置の構成について説明する。ドライブ装置700は、コンテンツ読み取り、転送処理プログラム、相互認証処理プログラムなどの各種プログラムに従ったデータ処理を実行するCPU702、プログラム、パラメータ等の記憶領域としてのROM705、メモリ706、デジタル信号を入出力する入出力I/F703、相互認証、バスキーの生成、出力データの暗号化処理など各種の暗号処理を実行する暗号処理手段704、DVD,Blu−ray Disc(登録商標)などの情報記録媒体708の駆動、データ記録再生信号の入出力を行なう記録媒体I/F707を有し、バス701に各ブロックが接続されている。
ドライブ700は、例えばATAPIBUS等の接続バスによって再生処理装置(ホスト)と接続され、例えば情報記録媒体708に格納された暗号化(スクランブル)コンテンツをバスキー:Kbusで、再暗号化し入出力I/F703から出力する。バスキー:Kbusを適用したコンテンツの暗号化は、暗号化処理手段704によって、例えば、図15を参照して説明したAES−CBCモードで実行される。
なお、ROM705、またはメモリ706には、先に図12を参照して説明した管理センタの公開鍵、ドライブに対応する秘密鍵、ドライブに対応する公開鍵証明書、および暗号鍵ブロックRKBの処理に適用するためのデバイスキー:Kdevが格納されている。また、コンテンツの読み取り、取得、および相互認証処理を実行するプログラム等が格納されている。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。