(本発明の基礎となった知見)
本発明者は、「背景技術」の欄において記載した、コンテンツ読み出し方法に関し、以下の問題が生じることを見出した。以下、その問題について、図1〜図3Bを用いて説明する。
図1は、光ディスク再生環境の一例を示す図である。
光ディスク101に格納されたAVコンテンツ(以下、単にコンテンツという)などは、ドライブ102によって読み出される。こうして読み出されたコンテンツ、および著作権保護のために必要な情報は、パーソナルコンピュータ103に通知される。なお、ここで、著作権保護のために必要な情報など、暗号化などの保護が必要な情報を受け渡す際には、ドライブ102とパーソナルコンピュータ103との間でドライブ・ホスト認証が行われる。この認証のプロトコルをドライブ・ホスト認証プロトコルと呼ぶ。こうしてパーソナルコンピュータ103は、必要な情報を得ると、コンテンツを復号した上で再生し、ディスプレイ104にコンテンツの映像を表示する。
ここで、昨今新たな高画質のコンテンツとして4Kコンテンツが注目されている。従来のHigh Definition(HD)コンテンツは、2Kコンテンツとも呼ばれ、その画素数は縦1920、横1080である。4Kコンテンツは、これを縦横各々2倍として、画素数を縦3840、横2160とするものである。4Kコンテンツでは、従来の2Kコンテンツと単純に比較して4倍の容量が必要となるが、昨今の動画圧縮技術の進展により、おおよそ2倍程度の容量に抑えることが可能であると言われている。
2倍の容量となる4K画質のコンテンツを格納するためには、光ディスクも新たな進化が必要となる。例えばBlu−ray(登録商標)においては、パッケージメディアで用いられる光ディスクの1層あたりの容量は25GBであり、2層での容量は50GBである。これを1層あたりの容量を33GBとし、さらに、光ディスクに含まれる層の数を3層とすることで、100GBの容量を実現することが可能となる。勿論、このような光ディスクは従来のドライブでは読み出すことができず、新たな仕様に基づくドライブが必要である。
さて、既に述べたドライブ・ホスト認証でも、新たな画質のコンテンツに見合った著作権保護の仕組みが必要となる。Blu−ray(登録商標)が市場に導入された2000年代前半当時は、ハッシュ関数または楕円暗号では鍵の長さとして160bitsのものが標準的に利用されていた。しかしながら、2010年代も半ばにさしかかる時期となれば、その長さは不十分と考えられる。つまり、ハッシュ関数または楕円関数には、256bits程度の長さの鍵を利用することが望まれる。よって、ドライブ・ホスト認証も新たな方式が必要となる。
図2Aおよび図2Bは、異なるタイプの光ディスクを用いた再生環境の一例を示す図である。
図2Aに示すように、従来タイプ(バージョンV1.0)の光ディスク211には、そのバージョンV1.0に対応する、ドライブ212およびパーソナルコンピュータ213の組み合わせが用いられる。これに対して、図2Bに示すように、新たなタイプ(バージョンV2.0)の光ディスク221には、そのバージョンV2.0に対応する、ドライブ222およびパーソナルコンピュータ223の組み合わせが必要となる。
ここで、新たなタイプであるバージョンV2.0の光ディスク221に対しては、従来タイプのバージョン1.0の光ディスク211のよりも、レベルの高い著作権保護が要求されている。したがって、図2Aに示したバージョンV1.0の組み合わせでは、ドライブ・ホスト認証は、バージョンV1.0で定める方式で行われる。これに対して図2Bに示したバージョンV2.0の組み合わせでは、ドライブ・ホスト認証は、バージョンV2.0で定める方式で行われる。
なお、一般的には、バージョンV2.0専用のドライブは考えにくく、一般的に市場に導入されるドライブは、バージョンV1.0とV2.0の共用ドライブとなると考えられる。これに対して、パーソナルコンピュータ213,223は、一定レベルの性能を持っていれば、バージョンV1.0でもV2.0でもどちらでも対応が可能である。ただし、バージョンV1.0の光ディスク211を再生するために必要な機能と、バージョンV2.0の光ディスク221を再生するために必要な機能は異なる。このため、その再生のために用いられるアプリケーションソフト(PCソフト)は異なるものとなる。なお、パーソナルコンピュータ223で実行されるPCソフトは、バージョンV2.0専用であるとしたが、バージョンV1.0とV2.0の兼用であってもよい。兼用の場合、PCソフトは、例えば、ユーザに対しては一つのPCソフトであるような表示を行い、内部的にそれらのバージョンの機能を区分するように構成される。
さて、ここで、バージョンV1.0とV2.0の共用のドライブを持つユーザが、V1.0の光ディスクとV2.0の光ディスクの両方を再生するケースを記載したものが図3Aおよび図3Bである。
図3Aおよび図3Bは、共用ドライブを用いた光ディスク再生環境の例を示す図である。
図3Aおよび図3Bに示すように、ユーザは、共用ドライブ222とPCソフトの組み合わせによって、バージョンV1.0の光ディスク211と、バージョンV2.0の光ディスク221とを再生する。この際、パーソナルコンピュータ213によって実行されるバージョンV1.0のPCソフトは、バージョンV1.0の光ディスク211に対して、バージョンV1.0で定めるドライブ・ホスト認証のプロトコルで読み出しを行う。一方、パーソナルコンピュータ223によって実行されるバージョンV2.0のPCソフトは、バージョンV2.0の光ディスク221に対して、バージョンV2.0で定めるドライブ・ホスト認証のプロトコルで読み出しを行う必要がある。
しなしながら、共用ドライブ222は、ホストとなるパーソナルコンピュータ213、223からの読み出し命令に応じたバージョンV1.0のプロトコル、またはバージョンV2.0のプロトコルにしたがって、ドライブ・ホスト認証を行う。つまり、バージョンV2.0の光ディスク221からの読み出しであるにも関わらず、パーソナルコンピュータ213が読み出しを行おうとした場合には、共用ドライブ222は、バージョンV1.0のプロトコルでドライブ・ホスト認証を行う。このように、光ディスク221では、バージョンV2.0のレベルの高い著作権保護が要求されているにも関わらず、セキュリティレベルの低いバージョンV1.0のプロトコルでドライブ・ホスト認証が行われてしまう。したがって、光ディスクのコンテンツに対して適切な著作権保護を行うことができないという問題がある。
このような問題を解決するために、本発明の一態様に係るコンテンツ読み出し方法は、ホスト装置からの指示を受けて、記録媒体からコンテンツを読み出すコンテンツ読み出し方法であって、前記記録媒体におけるコンテンツの著作権保護方式のバージョンを示す第1のバージョン情報を、前記記録媒体に基づいて特定し、前記ホスト装置の認証で用いられるプロトコルのバージョンを示す第2のバージョン情報を特定し、前記第1のバージョン情報と、前記第2のバージョン情報とを比較することによって、認証の是非を判定し、前記認証の是非の判定結果に基づいて、前記ホスト装置を認証し、前記記録媒体に格納されている暗号化された前記コンテンツの復号に用いられるメディア固有情報を、前記記録媒体から読み出して、認証された前記ホスト装置に通知し、暗号化された前記コンテンツを前記記録媒体から読み出して、認証された前記ホスト装置に通知する。例えば、記録媒体は、Blu−ray(登録商標)ディスクなどの光ディスクである。
これにより、第1のバージョン情報と第2のバージョン情報との比較によって、ドライブ・ホスト認証などの認証の是非が判定される。したがって、例えば、第1のバージョン情報と第2のバージョン情報とが共にバージョンV1.0またはV2.0を示す場合には、認証を行うと判定し、ドライブ・ホスト認証を行うことができる。つまり、記録媒体において要求されている著作権保護のレベルに応じたドライブ・ホスト認証を適切に行うことができる。一方、第1のバージョン情報がバージョンV2.0を示し、第2のバージョン情報がバージョンV1.0を示す場合には、認証を行わないと判定し、ドライブ・ホスト認証を中止することができる。その結果、認証されていないホスト装置に対して、メディア固有情報と、暗号化されたコンテンツとが通知されてしまうことを防ぐことができる。つまり、記録媒体では、バージョンV2.0のレベルの高い著作権保護が要求されているにも関わらず、セキュリティレベルの低いバージョンV1.0のプロトコルでドライブ・ホスト認証が行われてしまうことを防ぐことができる。その結果、記録媒体のコンテンツに対して適切な著作権保護を行うことができる。
また、前記第1のバージョン情報の特定では、不正なホスト装置のリストであって前記記録媒体に格納されているホストリボケーションリストに含まれている前記第1のバージョン情報を読み出すことによって、当該第1のバージョン情報を特定してもよい。
一般的に、ドライブ・ホスト認証などの認証には、ホストリボケーションリストであるHRLを記録媒体から読み出す必要がある。したがって、このようなHRLに含まれている第1のバージョン情報を読み出すことによって、第1のバージョン情報を特定することは、実質的に新たな処理負荷をかけることなく簡単に行うことができる。したがって、記録媒体のコンテンツに対する適切な著作権保護を、処理負荷の増加を抑えて簡単に行うことができる。
また、前記第1のバージョン情報の特定では、前記記録媒体の物理特性に基づいて、前記第1のバージョン情報を特定してもよい。
これにより、第1のバージョン情報が記録媒体に記録されていなくても、例えば、記録媒体のレイヤーの数などの物理特性から、第1のバージョン情報を適切に特定することができる。
また、前記第1のバージョン情報の特定では、ディスクとして形成された前記記録媒体の先頭部分に格納されているメタデータであるディスク情報に基づいて、前記第1のバージョン情報を特定してもよい。
これにより、第1のバージョン情報を適切に特定することができる。
また、本発明の一態様に係る記録媒体は、著作権保護された暗号化コンテンツと、前記暗号化コンテンツの復号に用いられるメディア固有情報と、不正なホスト装置のリストであるホストリボケーションリストとが記録され、前記ホストリボケーションリストは、前記暗号化コンテンツの著作権保護方式のバージョンを示すバージョン情報と、署名とを含み、前記暗号化コンテンツと前記メディア固有情報との読み出しを指示するホスト装置と、前記ホスト装置からの指示を受けたコンテンツ読み出し装置との間の認証に用いられる。
これにより、記録媒体のホストリボケーションリストであるHRLには、その記録媒体における著作権保護方式のバージョンを示すバージョン情報が含まれている。したがって、コンテンツ読み出し装置であるドライブは、ホスト装置との間での認証を行うか否かを、そのバージョン情報に基づいて適切に判定することができる。その結果、記録媒体において要求されている著作権保護のレベルに満たないセキュリティレベルの認証が行われることを防ぐことができる。したがって、記録媒体のコンテンツに対して適切な著作権保護を行うことができる。また、一般的に、ドライブ・ホスト認証などの認証には、ドライブはHRLを記録媒体から読み出す必要がある。したがって、このようなHRLに第1のバージョン情報が含まれているため、ドライブは、実質的に新たな処理負荷をかけることなく簡単に第1のバージョン情報を特定することができる。これにより、記録媒体のコンテンツに対する適切な著作権保護を、処理負荷の増加を抑えて簡単に行うことができる。さらに、HRLには署名が含まれているため、バージョン情報などの改竄に対する耐性を確保することができる。
以下、実施の形態について、図面を参照しながら具体的に説明する。
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
(実施の形態)
図4は、本実施の形態におけるドライブの構成を示すブロック図である。
ドライブ10は、ホスト装置20からの指示を受けて、記録媒体である光ディスク50からコンテンツを読み出すコンテンツ読み出し装置である。光ディスク50は、例えばBlu−ray(登録商標)ディスクなどである。このようなドライブ10は、光ディスク50から情報を読み出してホスト装置20に通知する読み出し処理部10aと、ホスト装置20との間で上述のドライブ・ホスト認証を行う認証処理部10bとを備えている。
ここで、光ディスク50について詳細に説明する。
図5は、光ディスク50に格納されているコンテンツの構造を模式的に示す図である。光ディスク50上にはコンテンツとしてMPEG2−TS形式でエンコードされたSterem Fileが格納される。図5ではStream Fileを一つしか記載していないが、複数になることもありえる。またここでは、Stream FileをXXXXX.M2TSというファイル名で記録することとしている。XXXXXには番号が記載され、複数のコンテンツが格納される場合に、これのコンテンツを個別に管理することが可能である。
各Stream Fileは、6144BytesのAligned Unitと呼ばれる単位に区分される。Aligned Unitが暗号化の単位となる。なお、Stream Fileに格納されるコンテンツのデータ量は、必ずしも6144 Bytesの倍数にならない可能性もある。この場合には、コンテンツの末尾にNULL Dataを格納する等の方法によって、コンテンツのデータ量を6144 Bytesの倍数にすることが望ましい。
図6は、各Aligned Unitの復号方法を説明するための図である。光ディスク50上のコンテンツは、ユニット鍵Kuと呼ばれるデータを用いて暗号化されている。ここで、各Aligned Unitの6144 Bytesのデータは、先頭の16Bytesと、残る6128Bytesとに分離される。先頭の16Bytesを対象として、先述したユニット鍵Kuを用いて、AES暗号方式の復号処理であるAES_Eを行う。こうして得られたデータと、その先頭の16Bytesとに対する排他的論理和(XOR)を行う。次に、その排他的論理和によって得られたデータを鍵として用いて、残る6128Bytes分のデータを、AES−DCBCモードで復号する。こうして得られた平文のデータに、先頭の16Bytesのデータを付け加えることで、6144Bytes分の平文が得られる。
図7は、各Aligned Unitの復号で用いるユニット鍵の記録方法を模式的に示す図である。この図7では、図5で示したStream Fileに加えて、各Stream Fileを復号するための鍵を記録するためのデータであるKey Fileの構成が模式的に示されている。光ディスク50には、Stream Fileとは別にKey Fileが格納される。図7の例では、「Stream File #1」、「Stream File #2」、および「Stream File #3」の三つのファイルが光ディスク50に記録されている。光ディスク50には、この各々のStream Fileに対応して、Key Fileの中に「Key #1」、「Key #2」、および「Key #3」が記録されている。「Key #1」にはその値として「Y!4.d」というデータが格納されている。ホスト装置20(Player)がStream Fileを復号する場合には、先述したユニット鍵Kuとしてこの値が利用される。なお、ここでは、ユニット鍵Kuが光ディスク50に直接格納されているとしたが、実際には、ユニット鍵Kuが平文で格納されていることはない。例えば、ユニット鍵Kuは、ホスト装置20などのPlayerが保持するデバイス鍵で暗号化された状態で光ディスク50に記録されている。
図8は、光ディスク50に記録されている、Key File以外の、コンテンツの保護に必要となるデータを模式的に示す図である。
光ディスク50には、Volume ID、Host Revocation List(HRL)、およびMedia Key Block(MKB)が記録されている。
Volume IDは、メディア固有情報であって、コンテンツが格納された光ディスク50を一意に特定するための識別子である。なお、パッケージメディアで利用されるBD−ROMでは、スタンパによってディスクが制作されるため、同じコンテンツが格納されるBD−ROMでは全て同じVolume IDが記録されている。Volume IDは、コピーや改竄が困難になるように、通常のデータとは異なる特殊な方法で記録されている。ホスト装置20からの通常のコマンドでは、Volume IDを読み出すことはできず、後述するドライブ・ホスト認証を実行した上でしかVolume IDを読み出せない。
Host Revocation List(HRL)は、ドライブ・ホスト認証のプロトコルにおいて利用されるデータであり、不正なホスト装置のリストを示す。ドライブ10の認証処理部10bは、このリストを読み出し、認証相手のホスト装置が不正なものであるかどうかを確認する。認証処理部10bは、不正であると判断した場合には、Volume IDなどの重要なデータをホスト装置には渡さない。HRLは、通常のデータとは異なる特殊な位置に記録される。ただし、記録の方法については他の通常のデータと変わらない。ドライブ10が簡単に読み出せる位置(一般的には光ディスク50内の固定位置)にHRLが格納されていることによって、ドライブ10はホスト装置20からの指示無しでも、このHRLを読み出すことが可能である。
Media Key Block(MKB)は、ホスト装置20によって処理されるデータである。ホスト装置20は、このデータを処理することによって、先述したユニット鍵Kuを生成するために必要となるメディア鍵を取得することが可能である。なお、MKBは、通常のデータと同様の方法で光ディスク50に格納されており、ホスト装置20からの一般的な読み出しコマンドで読み出される。
図9は、HRLのデータ構造の一例を示す図である。
HRLは、Type and Version Recordと、Host Revocation List Recordとから構成される。
本実施の形態におけるType and Version Recordには、先頭から順に、Record Type、Record Length、MKB TypeおよびVersion Numberが記録されている。Record Typeは、記録されている情報の種別がType and Version Recordであることを示す。Record Lengthは、Type and Version Recordの長さを示す。MKB Typeは、記録されているMKBのタイプを示す。Version Numberは、光ディスク50におけるコンテンツの著作権保護方式のバージョンを示す第1のバージョン情報であって、例えば、上述のバージョンV1.0またはV2.0を示す。また、第1のバージョン情報は、例えば、AACS(Advanced Access Content System)の規格におけるバージョンを示す。
本実施の形態における認証処理部10bは、光ディスク50に格納されているHRLに含まれているVersion Numberを読み出すことによって、そのVersion Numberを特定する。そして、認証処理部10bは、ホスト装置20からの光ディスク50に対する読み出しの指示に対して、用いられるドライブ・ホスト認証プロトコルのバージョンを、このVersion Numberに基づいて判断する。つまり、認証処理部10bは、バージョンV1.0のドライブ・ホスト認証プロトコルを用いれば良いのか、それともバージョンV2.0のホスト・ドライブ認証プロトコルを用いれば良いのかを判断する。HRLは、ドライブ10によって必ず読み出される。したがって、Version NumberがHRLに格納されていることは、ドライブ・ホスト認証プロトコルのバージョンを判定するためには好適である。さらに、HRLには、後述するように署名が付与されているため、改竄に対しても耐性がある。
Host Revocation List Recordには、先頭から順に、Record Type、Record Length、Number of Entries、Host Revocation List Entry(0)〜(n−1)、V1 Signature for Block、およびV2 Signature for Block、が記録されている。
Record Typeは、記録されている情報の種別がHost Revocation List Recordであることを示す。Record Lengthは、Host Revocation List Recordの長さを示す。Number of Entriesは、実際のHost Revocation List Entryの数を示す。実際のHost Revocation List Entry(0)〜(n−1)はそれぞれ、無効化の対象となったホスト装置のIDを示す。V1 Signature for BlockおよびV2 Signature for Blockはそれぞれ、署名である。ここで、ドライブ・ホスト認証プロトコルV1.0では、160ビットの鍵が使われるため、V1 Signature for Blockの署名は320ビットである。一方、ドライブ・ホスト認証プロトコルV2.0では、256ビットの鍵が使われるため、V2 Signature for Blockの署名は、512ビットである。ドライブ10は、ドライブ・ホスト認証プロトコルV1.0で動作するときには、320ビットの署名を検証し、ドライブ・ホスト認証プロトコルV2.0で動作するときには、512ビットの署名を検証する。
図10は、ユニット鍵KuをKey Fileから取得する処理を説明するための図である。ここでは、ユニット鍵Kuは、暗号化された状態で光ディスク50に格納されている。
再生プレイヤーであるホスト装置20は、光ディスク50に格納されているMKBを、ドライブ10を介して読み出す。このとき、ドライブ10の読み出し処理部10aは、光ディスク50からMKBを読み出してホスト装置20に通知する。そして、ホスト装置20は、自らが保持するデバイス鍵を用いてそのMKBを処理することにより、メディア鍵Kmを生成する。ここで、MKBは、不正なホスト装置が保持するデバイス鍵では、正しいメディア鍵が取得できないように、予め生成されている。
さらに、ホスト装置20は、光ディスク50に格納されているVolume IDを、ドライブ10を介して読み出す。このとき、ドライブ10の認証処理部10bは、ホスト装置20との間でドライブ・ホスト認証を行う。その認証後に、ドライブ10の読み出し処理部10aは、Volume IDを光ディスク50から読み出して暗号化し、その暗号化されたVolume IDをホスト装置20に通知する。
ホスト装置20は、このVolume IDに対して、メディア鍵KmとHash関数とを用いた処理を行うことにより、メディアユニーク鍵Kmuを取得する。このように、メディアユニーク鍵Kmuを取得するためには、Volume IDが必須である。その理由は、通常手段では複製が極めて困難なVolume IDによって、光ディスク50の単純なbit−by−bitコピーを防止するためである。
次に、ホスト装置20は、ドライブ10を介して、暗号化タイトル鍵Emu(Ku XOR UR)をKey Fileから読み出す。このとき、ドライブ10の読み出し処理部10aは、光ディスク50から暗号化タイトル鍵Emu(Ku XOR UR)を読み出してホスト装置20に通知する。そして、ホスト装置20は、この暗号化タイトル鍵Emu(Ku XOR UR)を、メディアユニーク鍵Kmuを用いて復号することによって、変形ユニット鍵“Ku XOR UR”を取得する。
さらに、ホスト装置20は、光ディスク上から利用条件“Usage Rule”を、ドライブ10を介して読み出す。このとき、ドライブ10の読み出し処理部10aは、光ディスク50から利用条件“Usage Rule”を読み出してホスト装置20に通知する。そして、ホスト装置20は、この利用条件“Usage Rule”をHash関数にかけることによって得られる値URと、前述の変形ユニット鍵“Ku XOR UR”との排他的論理和(XOR)を行うことによって、ユニット鍵Kuを得る。このように、ユニット鍵Kuを取得するためには、利用条件“Usage Rule”が必須である。その理由は、光ディスク50における利用条件“Usage Rule”の改竄を防止するためである。
上述のように、Volume IDの読み出しには、ドライブ・ホスト認証が行われる。ドライブ10の読み出し処理部10aは、この認証によって得られたバス鍵を用いて、Volume IDを暗号化したうえでホスト装置20に通知する。ホスト装置20は、暗号化されたVolume IDを復号することによって、Volume IDを取得する。不正なホスト装置、またはホスト装置以外のモジュールは、ドライブ10との間でバス鍵を共有することができない。したがって、不正なホスト装置などは、Volume IDを正しく取得することはできない。
なお、上述の例では、Volume IDは暗号化されるが、暗号化されなくてもよい。つまり、ドライブ10の読み出し処理部10aは、Volume IDをそのまま平文でホスト装置20に通知する。このとき、読み出し処理部10aは、先述したバス鍵を用いてMessage Authentication Code(MAC)をVolume IDに付与し、MACが付されたVolume IDをホスト装置20に通知する。これにより、Volume IDの改竄を防ぐことができる。これは、Volume IDそのものは秘密ではなく、改竄されないこと、または不正に記録されないことが要求されるためである。
図11は、ドライブ10とホスト装置20との間でのドライブ・ホスト認証を示すシーケンス図である。
まず最初に、ステップS101にて、ドライブ10の認証処理部10bは、光ディスク50からHRLを読み出す。認証処理部10bは、読み出したHRLと、既にドライブ10が保持しているHRLとのバージョンの比較を行い、新しいバージョンのHRLのみを保持する。このHRLの読み出しによって、認証処理部10bは、HRLに含まれる上述のVolume IDを読み出す。これによって、認証処理部10bは、光ディスク50の著作権保護方式のバージョンを示す第1のバージョン情報を特定する。さらに、認証処理部10bは、ドライブ10とホスト装置20との間での一連のやりとりを識別するための情報であるAGIDを生成し、これをホスト装置20に通知する。
次に、ステップS111では、ホスト装置20は、通知されたAGIDを保持するとともに、ランダム値であるHnを生成する。なお、ホスト・ドライブ認証プロトコルV1.0では、楕円関数において160ビットの鍵を利用するため、ホスト装置20は、160ビットのランダム値Hnを生成する。これに対して、ホスト・ドライブ認証プロトコルV2.0では、楕円関数において256ビットの鍵を利用するため、ホスト装置20は、256ビットのランダム値Hnを生成する。ホスト装置20は、生成されたランダム値Hnに、ホスト装置20に付与された公開鍵証明書Hcertを付けて、ドライブ10に対して通知する。
ステップS102では、ドライブ10の認証処理部10bは、ホスト装置20から通知された、公開鍵証明書Hcertに記述されている鍵または署名などに基づいて、ドライブ・ホスト認証プロトコルのバージョンを示す第2のバージョン情報を特定する。例えば、公開鍵証明書Hcertには、図11に示すように、Certificate Typeと、Reservedと、Lengthと、Certificate IDと、Reservedと、Public Keyと、Entity Signatureとが記述されている。この公開鍵証明書Hcertに記述されているこれらの要素のうち、Public KeyまたはEntity Signatureの長さ(ビット数)は、ドライブ・ホスト認証プロトコルのバージョンによって異なる。したがって、認証処理部10bは、そのPublic KeyまたはEntity Signatureの長さに基づいて、第2のバージョン情報を特定する。また、公開鍵証明書Hcertにバージョン番号が記述されている場合には、認証処理部10bは、そのバージョン番号を第2のバージョン情報として特定してもよい。なお、認証処理部10bは、ランダム値Hnに基づいて、第2のバージョン情報を特定してもよい。例えば、ランダム値Hnの上述のビット数に応じて第2のバージョン情報を特定する。なお、第2のバージョン情報は、例えば、AACS(Advanced Access Content System)の規格におけるバージョンを示す。さらに、認証処理部10bは、上述の特定された第1のバージョン情報であるVolume IDと、第2のバージョン情報とを比較することによって、認証の是非を判定する。第1および第2のバージョン情報が共にV1.0またはV2.0であれば、認証処理部10bは、認証を行うと判定する。一方、第1のバージョン情報がV2.0であって、第2のバージョン情報がV1.0であれば、認証処理部10bは、認証を行わないと判定する。認証を行わないと判定したときには、認証処理部10bは、ホスト装置20にエラーを通知して、ドライブ・ホスト認証を中止する。
一方、認証を行うと判定したときには、ドライブ10の認証処理部10bは、公開鍵証明書Hcertの検証を行う。公開鍵証明書Hcertにはルートの公開鍵を用いて署名が付与されている。認証処理部10bは、この署名を、ドライブ10が保持するルートの公開鍵を用いて検証する。万が一、検証が失敗した場合には、認証処理部10bは、一連のホスト・ドライブ認証をこの段階で中止する。さらに、署名検証が成功したとしても、公開鍵証明書Hcertの中に含まれるホスト装置20のIDが、万が一先述するHRLの中に登録されていた場合には、認証処理部10bは、ホスト装置20が不正であると判断する。その結果、認証処理部10bは、ホスト・ドライブ認証をこの段階で中止する。これら一連の検証が無事に成功した段階で、認証処理部10bは、ランダム値Dnを生成する。ここで生成されるランダム値Dnのビット長は、先述したランダム値Hnのビット長と同一である。こうして認証処理部10bは、ホスト装置20に対して、生成されたランダム値Dnと、ドライブ10に付与された公開鍵証明書Dcertとをあわせてホスト装置20に通知する。
ステップS112にて、上記通知を受け取ったホスト装置20は、公開鍵証明書Dcertの検証を行う。公開鍵証明書Dcertには、ルートの公開鍵を用いて署名が付与されている。ホスト装置20は、ホスト装置20が保持するルートの公開鍵を用いて、その署名を検証する。万が一、検証が失敗した場合には、ホスト装置20は、一連のドライブ・ホスト認証をこの段階で中止する。ここで、ホスト装置20は、ドライブ10が保持するHRLと同様に、Drive Revocation List(DRL)を保有する。DRLは先述したMKBの中に格納されている。ホスト装置20は、このMKBから新たなDRLを取得して蓄積しておく。ホスト装置20は、上述の署名検証が成功すると、公開鍵証明書Dcertの中に含まれるドライブ10のIDが、DRLに登録されているか否かを判定する。DRLに登録されていると判定すると、ホスト装置20は、このドライブ10が不正であると判断して、ドライブ・ホスト認証をこの段階で中止する。
ステップS103では、ドライブ10の認証処理部10bは、ランダム値Dkを生成する。このランダム値Dkのビット長は先述したランダム値Dnと同じ長さである。次に、認証処理部10bは、予め定められた楕円関数のベース値とランダム値Dkとから、値Dvを計算する。さらに、認証処理部10bは、ランダム値Hnと値Dvとを連結することによって得られる連結値に対して、ドライブ10が保有する秘密鍵で署名Dsigを生成する。認証処理部10bは、こうして得られた値Dvと署名Dsigとを連結してホスト装置20に通知する。
ステップS113では、ホスト装置20は、まず、受け取った署名Dsigを検証する。具体的には、ホスト装置20は、既にドライブ10から受け取っている公開鍵証明書Dcertの中から公開鍵を取得し、この公開鍵を用いて署名Dsigを検証する。この検証に失敗した場合には、ホスト装置20は、一連のホスト・ドライブ認証が失敗したと判断する。次に、ホスト装置20は、ランダム値Hkを生成する。このランダム値Hkのビット長は先述したランダム値Hnと同じ長さである。次に、ホスト装置20は、予め定められた楕円関数のベース値とランダム値Hkから値Hvを計算する。さらに、ホスト装置20は、ランダム値Dnと値Hvとを連結することによって得られた連結値に対して、ホスト装置20が保有する秘密鍵で署名Hsigを生成する。ホスト装置20は、こうして得られた値Hvと署名Hsigとを連結してドライブ10に通知する。
ステップS104では、ドライブ10の認証処理部10bは、受け取った署名Hsigを検証する。具体的には、認証処理部10bは、既にホスト装置20から受け取っている公開鍵証明書Hcertの中から公開鍵を取得し、この公開鍵を用いて署名Hsigを検証する。この検証に失敗した場合には、認証処理部10bは、一連のホスト・ドライブ認証が失敗したと判断する。そして、認証処理部10bは、ランダム値Dkと値Hvとを楕円曲線上で処理することにより、最終的にバス鍵Kbを取得する。
ステップS114では、ホスト装置20は、ドライブ10と同様に、ランダム値Hkと値Dvを楕円曲線上で処理することにより、最終的に、ドライブ10と同じバス鍵Kbを取得する。
ドライブ10の読み出し処理部10aは、上述のステップS101〜S114の処理からなるホスト・ドライブ認証が失敗することなく行われた後に、その認証によって得られたバス鍵Kbを用いてVolume IDを暗号化する。そして、読み出し処理部10aは、その暗号化されたVolume IDをホスト装置20に通知する。
なお、本実施の形態では、HRLに含まれている第1のバージョン情報であるVersion Numberを読み出すことによって、その第1のバージョン情報を特定したが、このような読み出し以外の手法で、第1のバージョン情報を特定してもよい。
例えば、ドライブ10の認証処理部10bは、光ディスク50の物理特性に基づいて、第1のバージョン情報を特定してもよい。つまり、認証処理部10bは、光ディスク50の物理特性として、例えばトラックピッチまたはレイヤーの数などを検出する。そして、検出されたトラックピッチが閾値よりも長ければ、あるいは、検出されたレイヤーの数が2層であれば、認証処理部10bは、バージョンV1.0を示す第1のバージョン情報を特定する。一方、検出されたトラックピッチが閾値よりも短ければ、あるいは、検出されたレイヤーの数が3層であれば、認証処理部10bは、バージョンV2.0を示す第1のバージョン情報を特定する。
また、ドライブ10の認証処理部10bは、HRL以外の場所に記録されている第1のバージョン情報を読み出すことによって、その第1のバージョン情報を特定してもよい。HRL以外の場所は、例えば、光ディスク50の先頭部分に記録されているメタデータのDisc Informationである。このDisc Informationに、第1のバージョン情報がバージョン番号として含まれている。したがって、認証処理部10bは、そのDisc Informationに基づいて、つまり、Disc Informationに含まれるバージョン番号を読み出すことによって、第1のバージョン情報を特定する。
また、ドライブ10の認証処理部10bは、HRL、Disc Information、および、光ディスク50の物理特性の全てに基づいて、第1のバージョン情報を特定してもよい。これにより、第1のバージョン情報をより正確に特定することができる。
図12は、本実施の形態におけるドライブ10の詳細な構成を示すブロック図である。
ドライブ10は、ホスト装置20からの指示を受けて、記録媒体である光ディスク50からコンテンツを読み出す。このようなドライブ10は、第1のバージョン特定部11と、第2のバージョン特定部12と、判定部13と、認証部14と、情報読み出し部15と、コンテンツ読み出し部16とを備える。
第1のバージョン特定部11は、光ディスク50におけるコンテンツの著作権保護方式のバージョンを示す第1のバージョン情報を、その光ディスク50に基づいて特定する。具体的には、第1のバージョン特定部11は、光ディスク50に格納されているHRLに含まれているVolume IDを第1のバージョン情報として読み出すことによって、当該第1のバージョン情報を特定する。あるいは、第1のバージョン特定部11は、光ディスク50のレイヤーの数などの物理特性に基づいて、第1のバージョン情報を特定する。あるいは、第1のバージョン特定部11は、光ディスク50の先頭に格納されているメタデータであるDisc Informationに基づいて、第1のバージョン情報を特定する。
第2のバージョン特定部12は、ホスト装置20のドライブ・ホスト認証で用いられるプロトコルのバージョンを示す第2のバージョン情報を特定する。具体的には、第2のバージョン特定部12は、ホスト装置20から通知される情報に基づいて、第2のバージョン情報を特定する。
判定部13は、第1のバージョン情報と第2のバージョン情報とを比較することによって、ドライブ・ホスト認証の是非を判定する。例えば、判定部13は、第1および第2のバージョン情報が共にV1.0またはV2.0であれば、認証を行うと判定する。一方、第1のバージョン情報がV2.0であって、第2のバージョン情報がV1.0である場合には、プロトコルのセキュリティレベルが、光ディスク50のコンテンツに要求されている著作権保護のレベルよりも低い。したがって、このような場合には、判定部13は、ドライブ・ホスト認証を行わないと判定する。
認証部14は、ドライブ・ホスト認証の是非の判定結果に基づいて、ホスト装置20との間でのドライブ・ホスト認証を行う。
情報読み出し部15は、光ディスク50に格納されている暗号化されたコンテンツの復号に用いられるVolume IDであるメディア固有情報を、光ディスク50から読み出して、認証されたホスト装置20に通知する。
コンテンツ読み出し部16は、暗号化されたコンテンツを光ディスク50から読み出して、認証されたホスト装置20に通知する。
なお、第1のバージョン特定部11、第2のバージョン特定部12、判定部13、および認証部14は、上記実施の形態における認証処理部10bに含まれる。また、情報読み出し部15およびコンテンツ読み出し部16は、上記実施の形態における読み出し処理部10aに含まれる。
図13は、本実施の形態におけるドライブ10の処理動作を示すフローチャートである。
まず、ドライブ10は、光ディスク50におけるコンテンツの保護方式のバージョンを示す第1のバージョン情報を、その光ディスク50に基づいて特定する(ステップS11)。そして、ドライブ10は、ホスト装置20との間のドライブ・ホスト認証で用いられるプロトコルのバージョンを示す第2のバージョン情報を特定する(ステップS12)。
次に、ドライブ10は、第1のバージョン情報と第2のバージョン情報とを比較することによって、ドライブ・ホスト認証の是非を判定する(ステップS13)。ここで、ドライブ・ホスト認証を行うと判定すると(ステップS13のYes)、ドライブ10は、ホスト装置20との間でドライブ・ホスト認証を行う(ステップS14)。一方、ドライブ・ホスト認証を行わない、つまり認証失敗と判定すると(ステップS13のNo)、ドライブ10は、ホスト装置20にエラーを通知して、光ディスク50からの情報の読み出しを中止する。
ステップS14の後には、ドライブ10は、光ディスク50に格納されている暗号化されたコンテンツの復号に用いられるVolume IDであるメディア固有情報を、光ディスク50から読み出して、認証されたホスト装置20に通知する(ステップS15)。そして、ドライブ10は、暗号化されたコンテンツを光ディスク50から読み出して、認証されたホスト装置20に通知する(ステップS16)。
このように、本実施の形態では、第1のバージョン情報と第2のバージョン情報との比較によって、ドライブ・ホスト認証などの認証の是非が判定される。したがって、例えば、第1のバージョン情報と第2のバージョン情報とが共にバージョンV1.0またはV2.0を示す場合には、認証を行うと判定し、ドライブ・ホスト認証を行うことができる。つまり、記録媒体において要求されている著作権保護のレベルに応じたドライブ・ホスト認証を適切に行うことができる。一方、第1のバージョン情報がバージョンV2.0を示し、第2のバージョン情報がバージョンV1.0を示す場合には、認証を行わないと判定し、ドライブ・ホスト認証を中止することができる。その結果、認証されていないホスト装置に対して、メディア固有情報と、暗号化されたコンテンツとが通知されてしまうことを防ぐことができる。つまり、記録媒体では、バージョンV2.0のレベルの高い著作権保護が要求されているにも関わらず、セキュリティレベルの低いバージョンV1.0のプロトコルでドライブ・ホスト認証が行われてしまうことを防ぐことができる。その結果、記録媒体のコンテンツに対して適切な著作権保護を行うことができる。
また、本実施の形態では、不正なホスト装置のリストであって光ディスク50に格納されているHRLに含まれているVolume IDを読み出すことによって、第1のバージョン情報を特定する。一般的に、ドライブ・ホスト認証などの認証には、HRLを記録媒体から読み出す必要がある。したがって、このようなHRLに含まれているVolume IDを読み出すことによって、第1のバージョン情報を特定することは、実質的に新たな処理負荷をかけることなく簡単に行うことができる。したがって、光ディスク50のコンテンツに対する適切な著作権保護を、処理負荷の増加を抑えて簡単に行うことができる。
なお、上記実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記実施の形態のドライブ10などを実現するソフトウェアは、コンピュータに、図11または図13に示す各ステップを実行させる。
以上、一つまたは複数の態様に係るコンテンツ読み出し方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。