説明

再生装置および復号方法

【課題】メディアキーブロックが更新される前の期間中においても、デジタルコンテントの再生を許可または禁止する制御を安全且つ柔軟に実行することが可能な再生装置を実現する。
【解決手段】演算処理部202は、AACSモジュール13内に保持されているメディアキープレカーサを操作するためのインタフェースをスクリプト102に対して提供する。演算処理部202は、AACSモジュール13内に保持されているメディアキープレカーサの値をスクリプト102、スクリプト・エンジン14に渡すのではなく、スクリプト・エンジン14を介してスクリプト102から送出される、メディアキープレカーサに対する演算処理指示に応じて、メディアキープレカーサに対する演算を実行する。これにより、メディアキープレカーサからメディアキーを算出する演算処理を安全に実行できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記憶メディアに格納された暗号化されたデジタルコンテントを再生する再生装置および当該暗号化されたデジタルコンテントを復号する復号方法に関する。
【背景技術】
【0002】
近年、動画像のデジタル圧縮符号化技術の進展に伴い、HD(High Definition)規格の高精細映像を扱うことが可能な再生装置(プレーヤ)の開発が進められている。
【0003】
このようなプレーヤにおいては、HD DVD(High Definition Digital Versatile Disc)のような記憶メディアが用いられる。HD DVD(High Definition Digital Versatile Disc)のような記憶メディアを用いることにより、HD映像データと高品質のサラウンドオーディオデータとを一枚の記憶メディアにパッケージ化することができる。
【0004】
記憶メディアに格納されたデジタルコンテンツをその不正コピーから保護するための技術としては、従来から、CSS(Content Scramble System)のような暗号化技術が知られている。
【0005】
特許文献1には、コピー制御情報が埋め込まれた、映像データのようなデジタルコンテントのストリームが開示されている。コピー制御情報は、映像データのようなデジタルコンテントのコピーを制限するためのコピープロテクト機能を実現するために使用される。
【0006】
また、近年では、HDコンテントを含む各種デジタルコンテンツを保護するための新たな技術として、AACS(Advanced Access Content System)が用いられている。
【0007】
AACS仕様では、プレーヤのAACSモジュールが、当該プレーヤが有するデバイスキーのセットを用いて記憶メディア上のメディアキーブロック(MKB)を処理することによってメディアキーを生成する。そして、AACSモジュールは、このメディアキーによって記憶メディア上のタイトルキーファイルを復号し、これによって記憶メディア上のデジタルコンテンツを復号するためのタイトルキーをタイトルキーファイルから取得する。
【0008】
ビデオ、静止画、XMLファイル、スクリプトを含む、記憶メディア上のコンテントデータは、タイトルキーファイルに記録されているタイトルキーを用いて復号される。また、タイトルキーは、コンテントデータの正当性をチェックするためにも用いられる。
【0009】
MKBには、プレーヤ単体または一群のプレーヤを無効化(リボーク)する情報が含まれている。無効化されたプレーヤが記憶メディア上のMKBを処理しても正しいメディアキーが得られない。したがって、無効化されたプレーヤが当該記憶メディア上のコンテンツデータを再生することを防止することができる。
【特許文献1】特許第3162046号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
しかし、もしあるプレーヤがハッキングされて、記憶メディア上のMKBから導出されたメディアキーが当該プレーヤから不正に取り出されてしまうと、以降は、当該プレーヤ上で再生可能な全てのビデオタイトルが不正コピーされてしまう危険がある。
【0011】
ハッキングされたプレーヤは、上述のように、MKBを更新することによって無効化する事ができる。ハッキングされたプレーヤを無効化するように更新されたMKBは、AACSライセンシングアドミニストレータ(AACSLA)より発行される。しかし、更新されたMKBが格納された新たなビデオタイトルが流通するまでには、多くの時間が要される。これは、i) 更新されたMKBの入手、ii) 当該MKBを用いたディスク製盤、iii) 新しいディスクの発売、というステップを踏む必要があるからである。
【0012】
MKBが更新される前に発売されたビデオタイトルは不正にコピーされてしまう危険がある。
【0013】
したがって、補助的な手段として、ビデオタイトルをリリースするスタジオ(コンテントプロバイダ)が、独自にプレーヤを無効化することができる新たな機能を実現する事が望ましい。換言すれば、メディアキーブロックが更新される前の期間中においても、ビデオタイトルの再生を許可または禁止する制御を柔軟に行うことを可能にする新たな機能の実現が必要である。この場合においても、メディアキー、またはそのメディアキーの導出課程で生成される他のデータ等の漏洩を防止することが必要である。
【0014】
本発明は上述の事情を考慮してなされたものであり、メディアキーブロックが更新される前の期間中においても、ビデオタイトルのようなデジタルコンテントの再生を許可または禁止する制御を安全且つ柔軟に実行することが可能な再生装置および復号方法を提供することを目的とする。
【課題を解決するための手段】
【0015】
上述の課題を解決するため、本発明は、記憶メディアに格納されている暗号化されたデジタルコンテントを再生する再生装置であって、前記記憶メディアに格納されたプログラムを実行するためのプログラム実行モジュールと、耐タンパ化された処理モジュールであって、前記記憶メディアに格納されたメディアキーブロックを前記再生装置が有するデバイスキーのセットによって処理することによって、前記再生装置が属する再生装置グループまたは前記再生装置単体に固有なデータであって、当該データに所定の演算を施すことによって得られる値が前記記憶メディア上のタイトルキーファイルを復号可能なメディアキーとなるデータである、メディアキープレカーサを算出する手段と、前記プログラム実行モジュールを介して前記プログラムから送出される、前記メディアキープレカーサに対する演算処理指示に応じて、前記メディアキープレカーサの値および前記メディアキープレカーサに対する演算結果を前記プログラムおよび前記プログラム実行モジュールから隠蔽した状態で、前記メディアキープレカーサに対する演算を実行する演算手段と、前記メディアキープレカーサに対する演算結果をメディアキーとして使用することによって前記タイトルキーファイルを復号するための処理を実行する手段とを含む、処理モジュールとを具備することを特徴とする。
【発明の効果】
【0016】
本発明によれば、メディアキーブロックが更新される前の期間中においても、ビデオタイトルのようなデジタルコンテントの再生を許可または禁止する制御を安全且つ柔軟に実行することが可能となる。
【発明を実施するための最良の形態】
【0017】
以下、図面を参照して本発明の実施形態を説明する。
【0018】
図1には、本発明の一実施形態の係る再生装置の構成例が示されている。この再生装置は映像データ(オーディオビジュアルデータ)のようなデータストリームから構成されるデジタルコンテントを再生するプレーヤである。この再生装置は、例えばHD DVD(High Definition Digital Versatile Disc)のような記憶メディアに予め格納された、ビデオタイトルのようなデジタルコンテントを再生するHD DVDプレーヤ10として実現されている。HD DVDプレーヤ10は、記憶メディアである光ディスクメディアに格納されたデジタルコンテントを再生するのみならず、インターネットのようなネットワークを介してネットワークサーバからダウンロードしたデジタルコンテントを再生することもできる。
【0019】
このHD DVDプレーヤ10は、図1に示されているように、HD DVDドライブ11、データ読み取り部12、AACSモジュール(暗号処理モジュール)13、スクリプト・エンジン14、および再生処理部15を備えている。
【0020】
HD DVDドライブ11によって駆動される光ディスクメディア(HD DVDメディア)100には、暗号化されたデジタルコンテント101、スクリプト102、メディアキーブロック(MKB)103、およびタイトルキーファイル104などが格納されている。
【0021】
デジタルコンテント101は、例えば、映画、アニメーションのようなオーディオビジュアルコンテントである。オーディオビジュアルコンテントは、ビデオデータとオーディオデータとが多重化されたストリームである。もちろん、オーディオデータのみから構成されるオーディオコンテントが光ディスクメディアに格納されていても良い。
【0022】
デジタルコンテント101は、HD DVD規格で規定されたエンハンスドビデオオブジェクトEVOB(プライマリーエンハンスドビデオオブジェクトP−EVOB、またはセカンダリーエンハンスドビデオオブジェクトS−EVOB)のようなビデオオブジェクトVOBを含んでいる。ビデオオブジェクトVOBは、複数のビデオオブジェクトユニットVOBU(HD DVD規格で規定された、プライマリーエンハンスドビデオオブジェクトユニットP−EVOBU、セカンダリーエンハンスドビデオオブジェクトS−EVOBU等)から構成されている。ビデオオブジェクトユニットVOBUは所定の再生時間に対応するデータストリームであり、圧縮符号化されたビデオデータおよび圧縮符号化されたオーディオデータ等を含んでいる。デジタルコンテントは、例えば、P−EVOBU、S−EVOBUのようなビデオオブジェクトユニットVOBUを単位として暗号化されている。
【0023】
スクリプト103は、光ディスクメディア100に格納された複数のスクリプトの一つである。これらスクリプトの多くは、デジタルコンテント101をインタラクティブに再生するための手順を記述したプログラムである。本実施形態においては、さらに、MKB103からメディアキーを導出する処理を制御するためのプログラムであるスクリプト103が光ディスクメディア100に格納されている。
【0024】
すなわち、本実施形態においては、タイトルキーファイル104を復号するためのメディアキーは、MKB103から直接的には算出されず、プレーヤ10が有するデバイスキーのセットによってMKB103を処理することによって得られるデータであるメディアキープレカーサ(Media key precursor)に対して所定の演算処理を施すことによって算出される。この所定の演算処理は、スクリプト103によって与えられる。
【0025】
デバイスキーのセットは、各プレーヤに与えられた秘密の鍵群であり、プレーヤ単体毎にまたはプレーヤグループ毎に異なっている。例えば、同一の製造メーカによって製造されたプレーヤそれぞれは、同一のプレーヤグループに属する。
【0026】
デバイスキーのセットは、プレーヤ10の製造時等に当該プレーヤ10に予め保持されている。プレーヤ10の有するデバイスキーのセットは、MKB103を処理して、メディアキーを導出するために必要なデータであるメディアキープレカーサ(Media key precursor)を算出するために使用される。メディアキープレカーサ(Media key precursor)は、プレーヤ単体毎にまたはプレーヤグループ毎に異なっている。すなわち、メディアキープレカーサ(Media key precursor)は、プレーヤ単体またはプレーヤグループに固有のデータであり、且つ、当該データ(メディアキープレカーサ)に所定の演算を施すことによって得られる値が光ディスクメディア100上のタイトルキーファイル109を復号するためのメディアキーとなる、データである。つまり、メディアキープレカーサをKmpとし、メディアキーをKmとすると、
Km=f(Kmp)
という関係が成り立つ。ここで、fは、ある所定の演算(オペレーションとも云う)である。
【0027】
スクリプト103には、複数のプレーヤグループまたは複数のプレーヤ単体それぞれに対応した、異なる複数の演算処理指示を予め記述することができる。この場合、スクリプト103は、プレーヤ10が属するプレーヤグループまたはプレーヤ10単体を判別し、複数の演算処理指示の中から、プレーヤ10が属するプレーヤグループまたはプレーヤ10単体に対応する演算処理指示を選択し、当該選択した演算処理指示をAACSモジュール13に送出する。
【0028】
MKB103は、プレーヤ単体またはプレーヤグループに固有の上述のメディアキープレカーサ(Media key precursor)に対するアクセスを提供するデータブロックである。すなわち、MKB103は、AACSLAによって生成され、各プレーヤが、自身のデバイスキーのセットを使用することによって、当該プレーヤ単体または当該プレーヤが属するプレーヤグループに固有のメディアキープレカーサ(Media key precursor)を算出することを許可するデータブロックである。MKB103は、subset-difference tree system と称されるツリー構造を有している。
【0029】
タイトルキーファイル104は幾つかのタイトルキーを含むファイルであり、暗号化されている。コンテント101はタイトルキーによって暗号化されている。このタイトルキーは、コンテント101を復号するためのキーとして使用される。
【0030】
データ読み取り部12は、HD DVDドライブ11をアクセスして、光ディスクメディア100に格納されたデータ(デジタルコンテント101、スクリプト102、MKB103、およびタイトルキーファイル104など)をリードする。
【0031】
AACSモジュール13は、Advanced Access Content System (AACS)で規定された著作権保護機能を実現するための処理モジュールであり、データ読み取り部12と再生処理部15との間に配置されている。AACSモジュール13はTRS(タンパ・レジスタント・ソフトウェア)等の技術によって耐タンパ化されたモジュールであり、コンテント101を復号するための処理を実行する。
【0032】
このAACSモジュール13は、MKB処理部201、演算処理部202、タイトルキー処理部203、およびコンテント復号処理部204等を備えている。
【0033】
MKB処理部201は、光ディスクメディア100に格納されたMKB103をプレーヤ10が有するデバイスキーのセットによって処理することによって、プレーヤ10が属するプレーヤグループまたはプレーヤ10単体に固有なデータである上述のメディアキープレカーサを算出する。
【0034】
演算処理部202は、AACSモジュール13内に保持されているメディアキープレカーサを操作するためのインタフェースをスクリプト102に対して提供する。この場合、演算処理部202は、AACSモジュール13内に保持されているメディアキープレカーサの値をスクリプト102、スクリプト・エンジン14に渡すのではなく、スクリプト・エンジン14を介してスクリプト102から送出される、メディアキープレカーサに対する演算処理指示に応じて、メディアキープレカーサに対する演算を実行する。この演算は、メディアキープレカーサの値およびメディアキープレカーサに対する演算結果をスクリプト102、およびスクリプト・エンジン14から隠蔽した状態で実行される。このように、スクリプト102から送出される演算処理指示を演算処理部202が受信し、メディアキープレカーサに対する実際の演算は演算処理部202自体が行うことにより、メディアキープレカーサの値およびメディアキープレカーサに対する演算結果を隠蔽することができる。
【0035】
例えば、演算処理部202は、メディアキープレカーサを演算するための幾つかの関数を有しており、スクリプト102は、これら関数を通じて、メディアキープレカーサに対して実行すべき演算内容を指示する。スクリプト102はメディアキープレカーサを直接操作することはできず、メディアキープレカーサに対する操作は、演算処理部202が有する関数を通じてのみ実行可能である。
【0036】
もしスクリプト102から演算処理部202に対して正しい演算処理指示が送信されたならば、演算処理部202は、メディアキープレカーサに対して正しい演算処理を施すことができ、これによって正しいメディアキーを算出することができる。一方、スクリプト102から演算処理部202に対して正しい演算処理指示が送信されなかったならば、演算処理部202は、正しいメディアキーを算出することができない。コンテント101に付随するスクリプト102はスタジオが独自に提供可能である。このため、スタジオはスクリプト102の内容を変更するだけで、コンテント101の再生を許可または禁止するための制御を柔軟に行うことが出来る。しかも、演算処理部202は、AACSモジュール13内に保持されているメディアキープレカーサの値をスクリプト102、スクリプト・エンジン14に渡すのではなく、スクリプト102から送出される演算処理指示に応じてメディアキープレカーサに対する演算を実行するように構成されているので、メディアキープレカーサの値およびメディアキープレカーサに対する演算結果をスクリプト102、スクリプト・エンジン14から隠蔽することができ、メディアキープレカーサに対する演算を安全に実行することが可能となる。
【0037】
タイトルキー処理部203は、演算処理部202によるメディアキープレカーサに対する演算結果をメディアキーとして使用することによって、タイトルキーファイル104を復号するための処理を実行する。演算処理部202によって正しいメディアキーが算出されたならば、タイトルキー処理部203は、そのメディアキーを用いてタイトルキーファイル104を正しく復号することができ、これにより、タイトルキーファイル104から、コンテント101を復号するためのタイトルキーを取得することができる。
【0038】
コンテント復号処理部204は、タイトルキー処理部203によって得られたタイトルキーによってコンテント101を復号する。
【0039】
再生処理部15は、コンテント復号処理部204によって復号されたコンテント101を再生するための再生処理を実行する。再生処理においては、P−EVOBU、S−EVOBUのような各ビデオオブジェクトユニットVOBUに含まれるビデオデータおよびオーディオデータをそれぞれデコードする処理等が実行される。
【0040】
スクリプト・エンジン14は、スクリプト102を実行するプログラム実行モジュールである。スクリプト・エンジン14は、インタープリタのようなプログラム実行環境として機能する。
【0041】
次に、メディアキープレカーサとメディアキーとの関係の例を具体的に説明する。
【0042】
MKB103は、プレーヤ10のAACSモジュール13がMKB103を処理した結果に、あるオペレーションfを施したものがメディアキーになるように作成されている。AACSモジュール13によるMKB処理によって導出されるデータは上述のメディアキープレカーサ(Media key precursor)である。上述したように、KmpをMedia key precursor、Kmをメディアキーとすると、Km=f(Kmp)という関係が成立する。
【0043】
オペレーションfの内容はプレーヤによって異なる。たとえばあるメーカによって製造されたプレーヤそれぞれから構成される、一群のプレーヤは、ディスク上のMKB103を処理する事により、同一のMedia key precursorを出力する。たとえばある別のメーカによって製造されたプレーヤそれぞれから構成される、別の一群のプレーヤは、同一のMKB103を処理して、前記のMedia key precursorとは異なったMedia key precursorを出力する。各プレーヤにはNode IDと呼ばれる数値(識別情報)が割り当てられている。
【0044】
今、図2に示されているように、ある一群のNode IDに対応するMedia key precursorをKmp0、別の一群のNode IDに対応するMedia key precursorをKmp1、更に又別の一群のNode IDに対応するMedia key precursorをKmp2、…とする。Kmp0,Kmp1,Kmp2,…それぞれに対応するオペレーションf0、f1、f2、…が存在して、f0(Kmp0)=f1(Kmp1)=f2(Kmp2)=…=Kmが成立する。
【0045】
すなわち、図2においては、Node ID=0,Node ID=1,Node ID=2,…Node ID=99のプレーヤそれぞれは、ある同一のプレーヤグループに属している。このプレーヤグループの各プレーヤが当該プレーヤに国有のデバイスキーのセットを用いてMKB103を処理する事によって得られるMedia key precursorは、Kmp0である。Kmp0に対応するオペレーションfは、f0である。
【0046】
Node ID=100,Node ID=101,Node ID=102,…Node ID=199のプレーヤそれぞれは、別の同一のプレーヤグループに属している。このプレーヤグループの各プレーヤが当該プレーヤに国有のデバイスキーのセットを用いてMKB103を処理する事によって得られるMedia key precursorは、Kmp1である。Kmp1に対応するオペレーションfは、f1である。
【0047】
Node ID=500,Node ID=501,Node ID=502,…Node ID=599のプレーヤそれぞれは、さらに別の同一のプレーヤグループに属している。このプレーヤグループの各プレーヤが当該プレーヤに国有のデバイスキーのセットを用いてMKB103を処理する事によって得られるMedia key precursorは、Kmp5である。Kmp5に対応するオペレーションfは、f5である。
【0048】
オペレーションf1、f2、…f5、…の実行指示はスクリプト102からAACSモジュール13に与えられる。
【0049】
次に、図3を参照して、スクリプト102とAACSモジュール13の演算処理部202との間の具体的なインタフェースの例について説明する。
【0050】
Media key precursor、メディアキーなどのデータは、AACSモジュール13内に格納されている。AACSモジュール13は耐タンパ化されており、当該AACSモジュール13の外部から当該AACSモジュール13内のデータを読み出す事や、当該AACSモジュール13内部の処理内容を知る事はできない。
【0051】
一方、スクリプト・エンジン14は耐タンパ化されていない。従って、スクリプト・エンジン14で実行されるスクリプト102が、Media key precursorの値、およびメディアキーの値を、AACSモジュール13から読み出すことは、安全上好ましくない。すなわち、もしスクリプト102がメディアキーの値を読み出したとすると、スクリプト・エンジン14には耐タンパ性が無い為、ハッカーがメディアキーの値を知る可能性がある。
【0052】
しかし、スクリプト102は、Media key precursorやメディアキーを操作する必要がある。具体的には、スクリプト102は、メディアキーを導出するために、Media key precursorに対して、例えば、ある数値を加える、あるビット数シフト演算を行う、などの操作を施す必要がある。この一連の操作が前述のオペレーションfを構成する事になる。その為、AACSモジュール13内の演算処理部202には、Media key precursorをスクリプト102が操作するためのハンドルが用意されている。このハンドルは、スクリプト102が、AACSモジュール13に対して、そのAACSモジュール13内に保持されているメディアキープレカーサに施すべき演算を指示することを可能にするためのインタフェースである。このハンドルは、例えば、メディアキープレカーサに対して演算処理をそれぞれ施すための関数群と、メディアキープレカーサに対する演算結果がメディアキーであることをAACSモジュール13に通知するための関数、等とによって実現することができる。例えば、このハンドルは、オブジェクト指向プログラミングにおけるクラスによって実現することができる。
【0053】
図4は、上述のハンドルを実現するためのクラスの例を示している。図4においては、クラス(class MKey)は、C++言語によって記述されている。
【0054】
class MKeyは16バイトの数値を格納しているが、class MKeyには、当該数値をスクリプト102が読み出す手段は提供していない。しかし、class MKeyには、当該数値に対して、代入演算、加法演算、減法演算、乗法演算、除法演算、剰余演算、左シフト演算、右シフト演算、ビット単位の論理積演算、ビット単位の排他的論理和演算、ビット単位の論理和演算、左ローテート、右ローテート、といった種々の演算を行うための複数のメンバ関数が用意されている。スクリプト102は、これらメンバ関数の組み合わせによって、実行すべきオペレーションfを演算処理部202に指示することができる。
【0055】
なお、必ずしも、実行すべきオペレーションf、つまり実行すべき演算処理の内容自体を、スクリプト102からAACSモジュール13に送出する必要はなく、例えば、実行すべきオペレーションfを識別する識別情報のみをスクリプト102からAACSモジュール13に送出するようにしてもよい。この場合、AACSモジュール13の演算処理部202は、識別情報に従って、メディアキープレカーサに対して実行すべき演算処理を特定し、特定された演算処理をメディアキープレカーサに対して実行する。これにより、メディアキープレカーサに対して実行すべき演算処理の内容、つまりオペレーションfの内容をグローバルシークレットとすることが可能となり、より安全性を高めることが出来る。
【0056】
スクリプト102は、class MKeyを呼び出し、そして、class MKey内に定義されたメンバ関数を用いて、Media key precursorの値によって初期化されているMKey変数に対するオペレーションfの実行を演算処理部202に指示する。この後、スクリプト102は、MediaKey()メソッドを呼び出す。このメソッドは、AACSモジュール14に対して、現在のMKey変数の値がメディアキーであることを通知する。演算処理部202は、演算処理指示の後にスクリプト102から送出される上述の通知に応答して、メディアキープレカーサに対する演算結果、つまり現在のMKey変数の値を、メディアキーとして確定する。換言すれば、上述の通知に応答して、現在のMKey変数の値をメディアキーとして使用することによって、タイトルキーファイルを復号する処理が開始される。オペレーションfは様々な演算の組み合わせから構成されるので、上述の通知により、演算処理部202は、メディアキープレカーサに対する演算処理が完了したことを正しく判別すること出来る。
【0057】
このように、メディアキープレカーサの値およびメディアキープレカーサを操作するための手続きはカプセル化されており、スクリプト102は、メディアキープレカーサの値を直接操作することはできず、class MKey内の関数を通じてのみメディアキープレカーサを操作することができる。
【0058】
次に、スクリプト102の例を説明する。
【0059】
上述したように、スクリプト102は、まずclass MKeyを呼び出し、そしてプレーヤ10が属するプレーヤグループを判別する。そして、スクリプト102は、プレーヤ10が属するプレーヤグループに対応するオペレーションfの実行を、演算処理指示としてAACSモジュール14に送出する。そして、スクリプト102は、MediaKey()メソッドを呼び出して、現在のMKey変数の値がメディアキーであることをAACSモジュール14に通知する。
【0060】
図5には、スクリプト102の記述例が示されている。
【0061】
図5においては、スクリプト102をC++言語によって記述した例が示されている。スクリプト102においては、プレーヤ10が属するプレーヤグループを判別するための関数(SW=nodeID/100)が含まれている。この関数は、例えば、nodeIDを100で割ることにより得られる値(商)が0,1,2,3,…99のいずれであるかを判別する。商0,1,2,3,…99それぞれの値は、プレーヤグループを示している。また、スクリプト102においては、プレーヤグループ0,1,2,3,…99それぞれに対応する演算処理指示として、オペレーションf0,f1,f2,f3,…f99が記述されている。オペレーションf0,f1,f2,f3,…f99は、実行すべき実際の演算処理の内容そのものを記述したものでもよいが、上述したように、実行すべき演算処理を識別するための識別情報を記述したものでもよい。このような識別情報を用いることにより、オペレーションfの内容を外部から隠蔽することが可能となり、メディアキーをより安全に保護することが可能となる。
【0062】
さらに、スクリプト102においては、上述のMediaKey()メソッドを呼び出して、現在のMKey変数の値がメディアキーであることをAACSモジュール14に通知するためのコード(return mkp.MediaKey();)も記述されている。
【0063】
さて、ここで、スタジオがnodeID/100が9に等しいプレーヤ、つまりプレーヤグループ9に属するプレーヤを無効化する場合を想定する。この場合、スタジオは、図6に示すようなスクリプト102を光ディスクメディア100に記録する。
【0064】
図6のスクリプト102においては、プレーヤグループ9に対応する演算処理指示が記述されていない。このため、光ディスクメディア100が挿入されたプレーヤがプレーヤグループ9に属するならば、スクリプト102は、正しい演算処理指示(f9)をAACSモジュール13の演算処理部202に与えない。この結果、プレーヤグループ9に属する各プレーヤは、正しいメディアキーを算出することが出来ず、結果として光ディスクメディア100に格納されたコンテント101を正しく再生することが出来ない。例えば、図3に示されているようにプレーヤ10のnodeIDが905であるならば、プレーヤ10はプレーヤグループ9に属するので、スクリプト102は、正しい演算処理指示(f9)をAACSモジュール13の演算処理部202に与えない。
【0065】
なお、リボーク対象のプレーヤグループ9に演算処理指示を与えないのではなく、正しいオペレーションf9とは異なる間違ったオペレーションをプレーヤグループ9に対応する演算処理指示としてスクリプト102に記述してもよい。
【0066】
また、nodeIDを100で割ることにより得られる値に基づいてプレーヤグループを特定するかわりに、各プレーヤのメーカIDなどを用いてプレーヤそれぞれをメーカ別にグループ分けしてもよい。
【0067】
次に、図7のフローチャートを参照して、スクリプト102によって実行される処理手順の例を説明する。
【0068】
プレーヤ10内に設けられたCPUのようなプロセッサは、スクリプト・エンジン14上でスクリプト102を実行する。スクリプト102はスクリプト・エンジン14上で起動され、以下の処理を実行する。
【0069】
スクリプト102は、まず、class MKeyを呼び出し、そしてプレーヤ10が属するプレーヤグループを判別する(ステップS101)。ステップS101では、例えば、スクリプト102は、プレーヤ10のnodeIDを100で割る処理を実行する。次いで、スクリプト102は、スクリプト102に記述された複数の演算処理指示(オペレーション)の中から、プレーヤ10が属するプレーヤグループに対応する演算処理指示(オペレーション)を選択する。例えば、プレーヤ10が属するプレーヤグループに対応する演算処理指示がスクリプト102に記述されていない場合には、プレーヤ10が属するプレーヤグループはリボーク対象のプレーヤグループであると判定される(ステップS102のYES)。この場合、スクリプト102は、AACSモジュール13に演算処理指示を送出することなく、処理を終了する。
【0070】
一方、プレーヤ10が属するプレーヤグループに対応する演算処理指示がスクリプト102に記述されている場合、つまりプレーヤ10が属するプレーヤグループがリボーク対象のプレーヤグループではないならば(ステップS102のNO)、スクリプト102は、プレーヤ10が属するプレーヤグループに対応する演算処理指示をスクリプト・エンジン14を介してAACSモジュール13に送出する(ステップS104)。この後、スクリプト102は、MediaKey()メソッドを呼び出して、現在のMKey変数の値がメディアキーであることをAACSモジュール14に通知する(ステップS104)。
【0071】
次に、図8のフローチャートを参照して、AACSモジュール14によって実行される一連の処理の手順を説明する。
【0072】
AACSモジュール14は、プレーヤ10の有するデバイスキーのセットによってMKB103を処理することによって、プレーヤ10またはプレーヤ10が属するプレーヤグループに固有のMedia key precursorを算出する(ステップS201)。次いで、AACSモジュール14は、スクリプト102から送出される演算処理指示を待つ。
【0073】
スクリプト102から送出される演算処理指示をスクリプト・エンジン14を介して受信すると、AACSモジュール14は、受信した演算処理指示に応じて、Media key precursorに対する演算処理を、Media key precursorの値およびMedia key precursorに対する演算結果をスクリプト102およびスクリプト・エンジン14の各々から隠蔽した状態で、実行する(ステップS203)。次いで、AACSモジュール14は、スクリプト102から送出される、Media key precursorに対する演算結果がメディアキーであることを示す通知を待つ(ステップS204)。
【0074】
この通知をスクリプト・エンジン14を介して受信すると、AACSモジュール14は、Media key precursorに対する演算結果をメディアキーとして確定し、そのメディアキーによってタイトルキーファイル104を処理することにより、タイトルキーをタイトルキーファイル104から取得する(ステップS205)。次いで、AACSモジュール14は、取得したタイトルキーによってコンテント101を復号する(ステップS206)。
【0075】
なお、上述の通知を待たずに、演算処理の実行終了に応答してステップS205の処理を自動的に開始するようにしてもよい。
【0076】
以上のように、本実施形態においては、スクリプト102の制御で、AACSモジュール13による正しいメディアキーの導出を許可又は禁止することができる。スクリプト102はスタジオが独自に提供可能である。したがって、MKB103が更新される前の期間中においても、ビデオタイトルのようなコンテント101の再生を許可または禁止する制御を、スタジオの独自の判断で柔軟に行うことができる。よって、スタジオは、独自に特定のプレーヤまたはプレーヤグループをリボークすることができる。
【0077】
また、Media key precursorに対する演算処理においては、AACSモジュール13は、Media key precursorをスクリプト102に渡すのではなく、スクリプト102からの演算処理指示に従って、AACSモジュール13内に保持されているMedia key precursorに対する演算処理を実行する。このため、Media key precursorの値とその演算結果の値とをスクリプト102から隠蔽することができ、スクリプト102によってAACSモジュール13によるメディアキーの導出を制御するという機能を、安全に実行することができる。
【0078】
なお、図5のスクリプト102がハッカーによって読み取られると、例えば、case9の場合におけるオペレーションf9の内容がハッカーに知られてしまう。これを防ぐ為に、スクリプト102を暗号化して光ディスクメディア100に格納するようにしても良い。また、上述したように、オペレーションfの内容そのものをスクリプト102に記述するのではなく、オペレーションfを識別する識別情報(例えば、オペレーションfのid)をスクリプト102に記述することが有効である。
【0079】
更に、スクリプト102の改竄を防ぐ為、当該スクリプト102に対して改竄防止対策を施し、改竄防止対策が施されたスクリプト102を光ディスクメディア100に格納するようにしても良い。改竄防止対策としては、スクリプト102のハッシュ値を算出し、そのハッシュ値を光ディスクメディア100内のコンテントハッシュテーブルに格納するという方法を利用することができる。AACSモジュール13は、まず、スクリプト102のハッシュ値を算出し、その算出されたハッシュ値が、コンテントハッシュテーブルに格納されているハッシュ値に一致するか否かに応じて、スクリプト102の正当性をチェックすることができる。
【0080】
スクリプト・エンジン14は耐タンパ性を有していない。このため、例えばオペレーションf9の内容がハッカーに一旦知られてしまうと、たとえスクリプト102によってプレーヤ10をリボークしたとしても、ハッカーは、スクリプト・エンジン14をコントロールすることによって、正しいオペレーションf9の実行指示をスクリプト・エンジン14からAACSモジュール13に与え、これによってメディアキーを導出し得る。しかし、MKB103を更新して、Media key precursorを変更すれば、これに伴ってオペレーションf9の内容も変更される為、ハッカーは正しいメディアキーを導出する事ができなくなる。
【0081】
なお、図1のプレーヤ10の機能はすべてコンピュータプログラムによって実現することができるので、このコンピュータプログラムをコンピュータ読み取り可能な記憶媒体を通じて通常のコンピュータに導入するだけで、通常のコンピュータをプレーヤ10(ソフトウェアプレーヤ)として機能させることができる。
【0082】
また、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【0083】
【図1】本発明の一実施形態に係る再生装置の構成を示すブロック図。
【図2】プレーヤグループとメディアキープレカーサとの関係の例を示す図。
【図3】同実施形態の再生装置に設けられたAACSモジュールの演算処理部と、スクリプトとの間のインタフェースの例を示す図。
【図4】同実施形態の再生装置に設けられたAACSモジュールによって提供されるクラスの記述例を示す図。
【図5】同実施形態の再生装置で用いられるスクリプトの例を示す図。
【図6】同実施形態の再生装置で用いられるスクリプトの他の例を示す図。
【図7】同実施形態の再生装置に適用されるスクリプトによって実行される処理の手順を示すフローチャート。
【図8】同実施形態の再生装置に設けられたAACSモジュールによって実行される処理の手順を示すフローチャート。
【符号の説明】
【0084】
10…プレーヤ、13…AACSモジュール、14…スクリプト・エンジン、15…再生処理部、201…MKB処理部、202…演算処理部、203…タイトルキー処理部、204…コンテント復号処理部。

【特許請求の範囲】
【請求項1】
記憶メディアに格納されている暗号化されたデジタルコンテントを再生する再生装置であって、
前記記憶メディアに格納されたプログラムを実行するためのプログラム実行モジュールと、
耐タンパ化された処理モジュールであって、前記記憶メディアに格納されたメディアキーブロックを前記再生装置が有するデバイスキーのセットによって処理することによって、前記再生装置が属する再生装置グループまたは前記再生装置単体に固有なデータであって、当該データに所定の演算を施すことによって得られる値が前記記憶メディア上のタイトルキーファイルを復号可能なメディアキーとなるデータである、メディアキープレカーサを算出する手段と、前記プログラム実行モジュールを介して前記プログラムから送出される、前記メディアキープレカーサに対する演算処理指示に応じて、前記メディアキープレカーサの値および前記メディアキープレカーサに対する演算結果を前記プログラムおよび前記プログラム実行モジュールから隠蔽した状態で、前記メディアキープレカーサに対する演算を実行する演算手段と、前記メディアキープレカーサに対する演算結果をメディアキーとして使用することによって前記タイトルキーファイルを復号するための処理を実行する手段とを含む、処理モジュールとを具備することを特徴とする再生装置。
【請求項2】
前記プログラムには、複数の再生装置グループまたは複数の再生装置単体それぞれに対応した、異なる複数の演算処理指示が記述されており、前記プログラムは、前記再生装置が属する再生装置グループまたは前記再生装置単体を判別し、且つ前記複数の演算処理指示の中から、前記再生装置が属する再生装置グループまたは前記再生装置単体に対応する演算処理指示を選択し、当該選択した演算処理指示を前記プログラム実行モジュールを介して前記処理モジュールに送出することを特徴とする請求項1記載の再生装置。
【請求項3】
前記演算処理指示は、前記再生装置が属する再生装置グループまたは前記再生装置単体に固有の対応するメディアキープレカーサから前記メディアキーを導出するための演算処理を識別するための識別情報であり、前記演算手段は、前記識別情報に従って、前記メディアキープレカーサに対して実行すべき演算処理を特定し、前記特定された演算処理を前記メディアキープレカーサに対して実行することを特徴とする請求項1または2のいずれか1項に記載の再生装置。
【請求項4】
前記演算手段は、前記演算処理指示が送出された後に前記プログラム実行モジュールを介して前記プログラムから送出される、前記メディアキープレカーサに対する演算結果が前記メディアキーであることを示す通知に応答して、前記メディアキープレカーサに対する演算結果を前記メディアキーとして確定することを特徴とする請求項1記載の再生装置。
【請求項5】
前記プログラムには暗号化が施されていることを特徴とする請求項1記載の再生装置。
【請求項6】
前記プログラムには改竄防止対策が施されていることを特徴とする請求項1記載の再生装置。
【請求項7】
記憶メディアに格納されている暗号化されたデジタルコンテントを、再生装置内に設けられた耐タンパ化された処理モジュールによって、復号する復号方法であって、
前記記憶メディアに格納されたメディアキーブロックを前記再生装置が有するデバイスキーのセットによって処理することによって、前記再生装置が属する再生装置グループまたは前記再生装置単体に固有なデータであって、当該データに所定の演算を施すことによって得られる値が前記記憶メディア上のタイトルキーファイルを復号可能なメディアキーとなるデータである、メディアキープレカーサを算出する処理を、前記処理モジュールによって実行するステップと、
前記記憶メディアに格納されたプログラムを実行するステップと、
前記プログラムから送出される、前記メディアキープレカーサに対する演算処理指示に従って、前記メディアキープレカーサの値および前記メディアキープレカーサに対する演算結果を前記プログラムから隠蔽した状態で、前記メディアキープレカーサに対する演算を実行する処理を前記処理モジュールによって実行する演算処理ステップと、
前記メディアキープレカーサに対する演算結果をメディアキーとして使用することによって前記タイトルキーファイルを復号するための処理を、前記処理モジュールによって実行するステップとを具備することを特徴とする復号方法。
【請求項8】
前記プログラムには、複数の再生装置グループまたは複数の再生装置単体それぞれに対応した、異なる複数の演算処理指示が記述されており、
前記プログラムを実行するステップは、前記プログラムを実行することによって、前記再生装置が属する再生装置グループまたは前記再生装置単体を判別するステップと、前記複数の演算処理指示の中から、前記再生装置が属する再生装置グループまたは前記再生装置単体に対応する演算処理指示を選択し、当該選択した演算処理指示を前記処理モジュールに送出するステップとを含むことを特徴とする請求項7記載の復号方法。
【請求項9】
前記演算処理指示は、前記再生装置が属する再生装置グループまたは前記再生装置単体に固有の対応するメディアキープレカーサから前記メディアキーを導出するための演算処理を識別するための識別情報であり、
前記演算処理ステップは、前記識別情報に従って、前記メディアキープレカーサに対して実行すべき演算処理を特定し、前記特定された演算処理を前記メディアキープレカーサに対して実行することを特徴とする請求項7または8のいずれか1項に記載の復号方法。
【請求項10】
前記演算処理ステップは、前記演算処理指示が送出された後に前記プログラムから送出される、前記メディアキープレカーサに対する演算結果が前記メディアキーであることを示す通知に応答して、前記メディアキープレカーサに対する演算結果を前記メディアキーとして確定することを特徴とする請求項7記載の復号方法。
【請求項11】
前記プログラムには暗号化が施されていることを特徴とする請求項7記載の復号方法。
【請求項12】
前記プログラムには改竄防止対策が施されていることを特徴とする請求項7記載の復号方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2008−311961(P2008−311961A)
【公開日】平成20年12月25日(2008.12.25)
【国際特許分類】
【出願番号】特願2007−157918(P2007−157918)
【出願日】平成19年6月14日(2007.6.14)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】