説明

デジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置

【課題】秘匿化の向上に有利なデジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置を提供する。
【解決手段】実施形態によれば、デジタルコンテンツの保護方法は、暗号化されたコンテンツ(Protected Content)70と共に、少なくとも暗号化された保護プログラム鍵(Protected Program Key)67、保護コンテンツ鍵(Protected Content Keys(Ck0e,Ck1e,Ck2e,,,))69、およびコンテンツ再生装置毎またはコンテンツ再生装置群毎に少なくとも一部の要素が固有の固有オペレーションコード仕様に従って設計された個別命令コード((C1e,C2e,,,)を含む保護コード(Protected Code)68を配布する。

【発明の詳細な説明】
【技術分野】
【0001】
デジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置に関する。
【背景技術】
【0002】
著作権保護方式は、一般に著作物であるコンテンツを暗号化した形式にて配布する方法を定めている。また、コンテンツの暗号化に用いる暗号鍵は、秘匿情報であるため、暗号鍵自身も更に他の暗号鍵で暗号化されるなどをし、違法コピー防止などがなされている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2008/0101604号
【非特許文献】
【0004】
【非特許文献1】インターネット<URL:http://www.cryptography.com/public/pdf/SelfProtectingContent.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0005】
コンテンツの秘匿性の向上に有利なデジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置を提供する。
【課題を解決するための手段】
【0006】
実施形態によれば、デジタルコンテンツの保護方法は、暗号化されたコンテンツと共に、暗号化された保護プログラム鍵、保護コンテンツ鍵、およびコンテンツ再生装置毎またはコンテンツ再生装置群毎に少なくとも一部の要素が固有の固有オペレーションコード仕様に従って設計された個別命令コードを含む保護コードを配布する。
【図面の簡単な説明】
【0007】
【図1】比較例に係るAACSのコンテンツ保護手順を示す図。
【図2】比較例に係るMKBによる鍵の無効化について説明するための図。
【図3】比較例に係るSKBによる鍵の無効化について説明するための図。
【図4】第1実施形態に係るバーチャルマシンを用いたSPDC技術の再生装置を示すブロック図。
【図5】第1実施形態に係るバーチャルマシンの構造例を示すブロック図。
【図6】第1実施形態に係る命令セット(Instruction Set)を示す図。
【図7】第1実施形態に係る命令フォーマット(Instruction Format)を示す図。
【図8】第1実施形態に係る命令テーブル(Instruction Tables)を示す図。
【図9】第1実施形態に係る命令テーブルを記憶する再生装置の例を示す図。
【図10】第1実施形態に係るコンテントコードの一生成方法を示す図。
【図11】第1実施形態に係るコンテントコードの一生成方法を示す図。
【図12】第1実施形態に係るコンテントコードの一生成方法を示す図。
【図13】第1実施形態に係るコンテントコードの一生成方法を示す図。
【図14】第1実施形態に係るコンテントコードの一生成方法を示す図。
【図15】第1実施形態に係るプログラム鍵を説明するための図。
【図16】第1実施形態に係る暗号化処理(デジタルコンテンツ保護処理)を説明するためのフロー図。
【図17A】第1実施形態に係る暗号化処理後の記憶媒体の一例を示す図。
【図17B】第1実施形態に係る暗号化処理後の記憶媒体の一例を示す図。
【図18】第1実施形態に係る復号化処理を説明するためのフロー図。
【発明を実施するための形態】
【0008】
著作権保護方式には、特定の企業が仕様を定めたプロプラエタリ仕様や、複数の企業等から構成される団体が定めたデファクト標準仕様などが存在する。著作権保護方式の運用については、暗号鍵等は秘匿情報とするが方式は公開するという場合のほか、著作権保護方式自体も秘匿情報とする場合などもある。いずれの場合においても、著作権保護方式に対応した再生装置を製造するためには、暗号鍵等の秘密情報やコンテンツ復号仕様を著作権保護方式管理団体から入手する必要がある。再生装置はコンテンツ復号仕様に則り設計・製造され、暗号鍵を容易に露見しない形で組み込んで販売される。
【0009】
しかしながら、近年では、再生装置内やその他の経路を通じて暗号鍵を取得し、コンテンツの不正コピーに利用する事象が生じている。例えば、DVD(Digital Versatile Disc)における著作権保護方式であるCSS(Content Scramble System)解除ソフトや、Blu-Ray Discにおける著作権保護方式であるAACS(Advanced Access Content System)解除ソフトなどは、不正に入手した暗号鍵を用いることで、コンテンツの不正入手や配布に利用されている。
【0010】
このため、上記著作権保護方式における追加のコンテンツ不正利用対策として、コンテンツとともにコンテンツセキュリティーポリシーや復号処理を実行するためのデータ処理・演算プログラム(以下、コンテントコードと呼ぶ)を合わせて提供し、再生装置仕様として前記コンテントコードを処理するバーチャルマシンを規定することで、通常著作権保護方式において画一的に規定されていることによる再生装置依存であったセキュリティー処理の少なくとも一部を更新可能なシステムとする技術も利用されている。
【0011】
しかしながら、上記追加のコンテンツ保護を施した場合であっても、脆弱性を持った機器からコード実行環境、コンテントコードやバーチャルマシン等の構造が一旦露見してしまうと、全ての環境においてコンテンツ保護処理の更新によるセキュリティー上の効果がなくなってしまう。一方で、バーチャルマシン等の構造を規定せず、全てを独自の個別仕様とした場合、装置の処理環境を全て把握した上でコンテントコードを作成する必要があり、生産性および互換性が低減するという傾向もある。
【0012】
以下、実施形態について図面を参照して説明する。尚、この説明においては、全図にわたり共通の部分には共通の参照符号を付す。
【0013】
[比較例]
まず、図1乃至図3を用い、下記実施形態と比較するために、比較例について説明する。
【0014】
<AACS方式のコンテンツ保護>
図1は、再生専用型Blu-Ray Discなどで用いられているAACSのコンテンツ保護手順を示したものである。
図示するように、ディスク製造者(Disc Manufacturer)100は、著作権保護管理機構から、コンテンツ暗号化に使われるメディア鍵を元にデバイス鍵群によって生成したMKB(Media Key Block)、メディア鍵(Km)、KCD(Key Conversion Data)等を共に提供される。ディスク製造者100は、コンテンツ及びタイトル鍵(Kt)等をコンテンツ著作権者から受け取り、Ktを暗号鍵としてコンテンツを暗号化する。更に、Ktはメディア鍵とVolume IDよりAES-G処理によって生成されたVolume Unique Keyによって暗号化され、暗号化Ktを含むTitle Key Fileが生成される。ここで、AES-G処理とは、AES暗号に基づく一方性関数処理である。Volume IDはディスク製造者100もしくはコンテンツ著作権者によって生成されたタイトルボリューム固有の値である。
【0015】
メディア(Media)200の指定箇所には、上記のようなディスク製造者100が入手、もしくは処理・生成した「MKB」、「KCD」、「Volume ID」、「Title Key」、「暗号化コンテンツ」が記録される。その後、メディア200は、上記記憶データと共に、マーケットに供給される。尚、メディア200は、円盤状のディスクに限らず、SD(Secure Digital)カードなど任意の物理記憶媒体であれば良い。
【0016】
再生装置(Player)300は、上記メディア200から読み出した上記記録データを元に、復号処理し、コンテンツの再生を行なう。再生装置300内には、著作権保護管理機構から提供されたデバイス鍵が露見・改竄困難な形で保持されている。再生装置300は、メディア200からMKBを読み出し、デバイス鍵によってMKB処理(Process MKB)を行なうことでメディア鍵を導出する。ここで、再生装置300の保持するデバイス鍵の種類によって、MKB処理の結果導出された値は異なる。AACSでは、再生装置を2つのカテゴリに分けており、一つはEnhanced Robustness Device、もう一つはProactive Renewal Deviceと呼ばれる。前者は、ハードウェア等により強固にデバイス鍵等の秘匿データが守られた再生装置を指す。後者は、PC等のオープンプラットフォーム上で動作するソフトウェアに代表され、ハードウェアベースでデバイス鍵を保護する代わりに定期的なデバイス鍵の更新を義務付けた再生装置を指す。前者の場合、MKB処理によって導出された値に対し、KCDとAES-G処理を行なうことでメディア鍵が導出される。後者の場合、MKB処理によって導出された値そのものがメディア鍵となる。こうして導出されたメディア鍵に対して、Volume IDを用いてAES-G処理を行うことでVolume Unique Keyが導出される。Volume Unique Keyによって、Title Key File中のタイトル鍵が復号され、次いでタイトル鍵によってコンテンツが復号される。
【0017】
これからもわかるとおり、暗号化・復号化の大本となっているデバイス鍵(Device Keys)は非常に重要な秘匿データである。よって、デバイス鍵が万一流出した場合に備えて、MKBにはデバイス鍵の無効化を可能とする構造が適用されている。MKBは、複数のメディア鍵複製データに対し、複数のデバイス鍵によって各々暗号化を施した暗号化メディア鍵束から構成される。もし、あるデバイス鍵が流出しコンテンツの不正コピーに利用された場合、MKBから流出したデバイス鍵で暗号化されたメディア鍵を除くことで、流出したデバイス鍵を用いたコンテンツの復号を防ぐことができる。これをデバイス鍵の無効化、もしくはリボケーションと呼ぶ。ただし、この無効化情報が適用できるのは新規に製造されたメディアであり、過去に製造・販売されたメディアには適用できない。
【0018】
<MKB構造による鍵の無効化>
次に、図2を用いて、MKBによる鍵の無効化について説明する。上記AACSで用いられているMKBはNNL Treeと呼ばれるツリー構造となっており、各リーフには対応するデバイス鍵(Kd1, Kd2, Kd3…)が存在する。メディア鍵(Km)は各リーフに対応したデバイス鍵によって各々暗号化され、MKBの対応するリーフに割り当てられる。この構造に基づき、各リーフに対応する暗号化されたデバイス鍵やリーフ・デバイス鍵のノード番号などの情報がMKBファイルに格納される。もし、リーフ2に相当するデバイス鍵を無効化する場合、同リーフに対応する暗号化されたメディア鍵をMKBに含めなければよい。
【0019】
<SKB構造による鍵の無効化>
図3は、別のMKB構造(SKB(Sequence Key Block)構造)を示す。上記図2の場合では、いずれのリーフにおいても同一のメディア鍵を元としたデータが割り当てられていたが、図示するSKB構造では、各リーフにはメディア鍵バリアント(Kmv)と呼ばれる異なるメディア鍵が割り当てられている。これは、デバイス毎に入手できるメディア鍵を個別化し、後の暗号処理を異ならせる、などの用途に用いられる。AACS方式では、コンテンツの一部を複製、複製された各々のコンテンツを別のメディア鍵バリアントに基づく鍵で暗号化し、デバイス毎に再生可能なコンテンツを異ならせることで、デバイス鍵流出時のデバイス特定などに利用されている。
【0020】
このように、AACS方式では、万一デバイス鍵が流出した場合、デバイス鍵を特定する手段や、デバイス鍵を無効化する手段が講じられている。しかしながら、脆弱性を持った再生装置や経路が発生した場合、複数の再生装置やその他の経路を通じて、複数のデバイス鍵が流出し、同デバイス鍵を無効化しても別のデバイス鍵によりコンテンツの不正コピーが継続するおそれがある。
【0021】
[第1実施形態]
次に、図4乃至図18を用い、第1実施形態に係るデジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置について説明する。この説明において、上記比較例と重複する部分の詳細な説明を省略する。
【0022】
<0.前提(SPDC方式)>
まず、前提として、SPDC(Self-Protecting Digital Content)方式による、コンテンツ保護技術について説明する。SPDC方式では、上記鍵の無効化以外のコンテンツ不正利用対策として、コンテンツ保護方式自身を変更・更新する技術である。例えば、SPDC技術によれば、記憶媒体に暗号化されたコンテンツとともにコンテンツセキュリティーポリシーや復号処理を実行するためのデータ処理・演算プログラム(以下、コンテントコードと呼ぶ)を合わせて提供することで、再生装置依存であったセキュリティー処理を更新可能なシステムとすることができる。SPDCでは、コンテンツ保護処理の一部を、再生装置内のバーチャルマシン上で動作するコンテントコードによって実現する。ここで、バーチャルマシンとは一般にコンピュータのCPUや記憶装置などのリソースを仮想化したコンピュータを定義し、仮想化したコンピュータを実行するためのアーキテクチャを意味する。
【0023】
バーチャルマシンは、ハードウェアに依存した機械語とC言語のような高級プログラミング言語の中間に位置する中間言語(バイトコードとも呼ぶ)を入力とし、バーチャルマシン内の翻訳部によって中間言語を機械語に翻訳することで、機械語形式が異なるCPUや記憶装置においても同一のプログラムが実行できる。バーチャルマシンは仮想プロセッサ、仮想メモリを備え、算術・暗号演算などの実行のほか、その他再生装置内のリソースやディスク内のリソースへのアクセス機能なども提供する。
【0024】
<1.構成例>
1−1.再生装置(Player)
次に、図4を用い、本例に係るバーチャルマシンを用いたSPDC技術を採用する再生装置(Player)について説明する。
図示するように、本例に係る再生装置は、図中の破線で示す境界線(Player boundary)10で区画され、プロセッサ12、翻訳部17、および実行部・RAM18から構成されるバーチャルマシン30を含むものである。バーチャルマシン30の詳細については、後述する。
【0025】
プロセッサ(Processor)12は、再生装置固有の環境・設定情報などから構成される再生環境配置データ(Playback Environ. Config.)11等を読み出し、この再生装置全体の動作を制御する。
【0026】
翻訳部(Interpreter)17は、中間言語から機械語への翻訳方法に基づき実装される。さらに、翻訳部17は、共通命令テーブルと個別命令テーブルとを備える命令テーブル(Instruction Tables)19を備える。命令テーブル19の詳細については、後述する。
【0027】
実行部・RAM18は、RAMに展開される必要なソフトフェアやデータに基づき、所定の処理を実行する。
【0028】
バルク復号モジュール(BULK Decryption Module)13は、記憶媒体25から読み出したコンテンツもしくは暗号鍵情報などに対する正当な復号キーやパラメータを、プロセッサ12により指定される。
【0029】
暗号認証部(Cryptographic Oracles)14は、暗号認証部自身が保持する、もしくは外部の取り外し可能なセキュリティカード24にインプリントされたコンテンツにより、この再生装置(Player)が本装置であることの証明を認証できる証拠や、記憶媒体25から読み出した暗号鍵等の情報、もしくは同暗号鍵等の情報に対して暗号認証部14が処理した結果などを、プロセッサ12に与える。セキュリティカード(SIM)24は、例えば、スマートカード等である。
【0030】
メディアインターフェイス(Media Interface)15は、記憶媒体25からコンテントコード29を読み出し、バーチャルマシン30内のRAM18にロードする。このように、記憶媒体(Media)25には、コンテンツ毎のセキュリティーポリシーに応じて記述されたコンテントコード(Content Code)29が記録される。
【0031】
出力インターフェイス(Output Interface)16は、プロセッサ12、もしくはバルク復号モジュール13によって処理されたコンテンツを、描画、記録、もしくは再生を目的とする外部プログラム/デバイス(Destination Program/Device)26に供給する。
【0032】
バーチャルマシン30は、コンテンツコード29内に記述された命令を逐次読み出し、機械語に翻訳して実行する。ここで、バーチャルマシン30は、再生装置固有の環境・設定情報にアクセスする機能や、再生装置内のRAM18、もしくはSIMカード24のような外部メディアに記録された暗号処理に係る情報や機能にアクセスする機能、及び復号処理モジュールの制御や処理を実行する機能などを有する。これら機能を利用するための命令記述ルールはあらかじめ定義されており、同定義に従ってバーチャルマシン30の実装及びコンテントコード29の記述がなされる。
上記構成により、これまで画一的であったコンテンツ保護処理を、コンテンツコード29によりコンテンツ毎に異なる保護処理へと拡張することできる。例えば、DVDのCSSのように、コンテンツ保護構造が全て露見してしまい、一切の対応手段を講じることができない、などといった事態を、拡張可能な保護処理によって回避することができる。これにより、コンテンツ保護処理自身を変更できることの他、再生装置の環境に応じた処理を実行する、例えば、鍵が流出した再生装置に対して追加の処理を設ける、再生装置毎に異なるウォーターマークを付加してコンテンツ個別化を図る等を行うことが可能である。
【0033】
しかしながら、かかるSPDC方式のコンテンツ保護技術においても、バーチャルマシン30の構造が露見した場合は、対策手段がないという傾向がある。バーチャルマシン30の構造が露見するということは、上記コンテンツ保護処理を記述したコンテンツコード29を実行できる環境を不正者が構築できることを意味し、ひいてはコンテンツコード29の処理内容の解析と把握、実行が可能となってしまう。また、再生装置に応じた処理に関しても、これを回避する手段や、再生装置環境の偽装応答なども実施することができる。すなわち、バーチャルマシン30を利用したプログラムによるコンテンツ保護処理においては、バーチャルマシン30の構造の秘匿性が非常に重要となる。
【0034】
上記のように、コンテンツの保護の観点からは、SPDC方式のような更新可能なコンテンツ保護処理を導入するにあたり、バーチャルマシン30の構造の秘匿性が重要である。一方で、生産性、互換性の向上の観点からは、コンテンツと再生装置の互換性を保証するする必要があり、コンテンツ自身のフォーマット、コンテンツ保護フォーマット、コンテントコードフォーマット、装置仕様などを標準化し、コンテンツ制作者や装置製造者などが仕様を共有する必要がある。通常、これら標準化及び標準仕様は、標準化仕様策定団体によって策定され、標準化仕様運用団体によってコンテンツ制作者及び装置製造者へ仕様やデータを含んだ必要な情報を提供するという形をとる。これら仕様やデータ等の情報には、上述の鍵情報やバーチャルマシン構造などの秘匿性を要する情報なども含まれており、これらはグローバルシークレットとして扱われる。よって、バーチャルマシンの技術仕様の開示にあたり、同情報は鍵情報と同等以上の守秘義務を開示元である標準化仕様策定団体と開示先の間で締結する必要がある。また、不正者がバーチャルマシン構造を解析するに当たり、手がかりとなる要素として、コンテントコード自身やバーチャルマシンを実装した機器があり、これらも内容が容易に露見しないよう対策を講じる必要がある。
【0035】
しかしながら、上記に示す対策を講じた場合であっても、バーチャルマシンやコンテントコードの構造が露見する可能性を否定することはできない。同様に秘匿性が求められる鍵情報については、前述のとおり漏洩時の無効化手段が講じられている。一方で、バーチャルマシン30については、有効な無効化手段が設けられていない傾向がある。これは、コンテントコードの互換性を実現するために単一のバーチャルマシン仕様が利用されており、同仕様を無効化するということは、同仕様に基づき製造された装置全てを無効化するということになるためである。
【0036】
このため、ある脆弱性をもった機器からバーチャルマシンの構造が把握されてしまった場合、同様のバーチャルマシンの構造を適用している他の全ての機器にも影響が波及してしまう。これに対しては、対抗手段がなく、バーチャルマシンを用いたコンテンツ保護システム自身が無効となってしまう。
【0037】
そこで、脆弱性をもった機器からの解析内容を他の機器には適用できなくするために、機器もしくは機器群毎にバーチャルマシンの少なくとも一部の処理を個別化してコンテンツ保護を向上でき、かつ生産性および互換性の向上できる点で有利な方法および構成について、以下より具体的に説明する。
【0038】
1−2.バーチャルマシンの構成例
次に、図5を用い、本例に係るバーチャルマシン30の内部構造例を説明する。
図示するように、バーチャルマシン30は、再生装置10の内部にハードウェア、ソフトウェア、もしくはその組み合わせにより実装されている。
【0039】
コンテントコード(Content Code)29は、機器内部・外部のストレージ、もしくは通信装置などを経由して再生装置10に供給される。コンテントコード29の内部には再生装置10(バーチャルマシン30)が解釈できる後述するInstruction Setや同Instruction Setによって処理されるデータなどが存在する。
【0040】
メモリ(Memory)31は、コンテントコード29を保持する。ここで、メモリ31は、揮発性メモリであってもよいし、不揮発性メモリであってもよい。
【0041】
Instruction Loader32は、メモリ31に保持されたコンテントコード29内の命令(Instruction)やデータを呼び出す。Instruction Loader32によって呼び出される各Instructionは、Instruction Processorがそのまま解釈できる形式であってもよいし、図に示すInstruction Converter34によって変換された後、Instruction Processor35が解釈できる形式であってもよい。
【0042】
レジスタ(Register)33は、演算に用いる値、演算結果の値、メモリ31に保持されたコンテントコード29内の次実行Instructionのアドレス値(プログラムカウンタ)等を保持する。レジスタ33は、Instruction Processor35のほか、Instruction Loader32や後述するSystem Call Operation36などからもアクセスされる。尚、本例では、レジスタ33は、メモリ31と別のモジュールとして記載しているが、実際にはメモリ31の一部をレジスタとして利用してもよい。
【0043】
Instruction Converter34は、コンテントコード29及びその実行環境を難読化するために用いられ、Instructionをロードした時点でのレジスタ33、もしくは、メモリ31に保持されている値とロードされたInstructionの値を演算し、Instruction Processor34が解釈できる形式に変換する機能を持つ。ここで、演算に用いる値が保持されているレジスタ33、もしくは、メモリ31のアドレスは、あらかじめ定められた固定アドレスとしてもよいし、ロードしたInstructionの一部に含まれる値、もしくはレジスタ33、メモリ31の所定領域に保持されている値によって指し示してもよい。演算方法は、ビット演算、算術演算、暗号演算のいずれであってもよい。演算に用いる値は、一つであってもよいし、複数であってもよい。
【0044】
Instruction Processor35は、Instruction Loader32が呼び出した命令、またはInstruction Converter34によって変換された命令を受け取る。Instruction Processor35は、各Instructionの命令コード(Opcode)を、Instruction tables(Opcode-Function)19を用いて、各実行機能(Function)へと解釈する。ここで、Instruction tables19は、Hard wiredで実装されている場合、EEPROM(Electrically Erasable and Programmable Read Only Memory)に記録されている場合、バーチャルマシン30外部の記憶領域にデータとして記録されている場合などがある。Instruction Processor35は、命令コードに基づき処理を行なう際の記憶領域として、上記レジスタ33を利用する。
【0045】
System Call Operation36は、各Instructionによって、バーチャルマシン30、もしくは図4の境界線(Player boundary)によって示される再生装置10内部が持つ暗号機能、利用制御機能、メディアアクセス機能、その他のモジュールアクセス機能により利用されるものである。これら機能は、Instruction Processor35が、バーチャルマシン30の各機能を呼び出すためのSystem Callを発行することで利用される。System Call Operation36の実行に係る入出力のやり取りには、前述のレジスタ33やメモリ31が利用される。
【0046】
Crypt module41は、暗号化、復号化、乱数生成、一方向性関数、署名処理などの暗号器に基づく演算のほか、別途装置が保持する暗号演算に用いるための固有情報や暗号、復号、署名鍵、証明書などを含んでいても良い。また、Crypt module41は、それ自身が前述の演算もしくは固有情報を含んでおらず、図4のバルク復号モジュール13、もしくは暗号認証部14などの装置30の外部機能を利用するためのインターフェースであってもよい。
【0047】
Usage control42は、再生開始、停止、ディスプレイやその他外部機器への信号出力時のCopy制御情報、マクロビジョンに代表されるアナログコピーガード情報、HDCP(High-bandwidth Digital Content Protection system)やDTCP(Digital Transmission Content Protection)に代表されるデジタルコピーガード情報などの付与等、コンテンツ利用に関わる制御を含んでいても良い。また、Usage control42は、それ自身が前述の制御情報もしく制御機能を含んでおらず、図4の外部プログラム/デバイス26などのバーチャルマシン30の外部機能を利用するためのインターフェースであってもよい。
【0048】
Media interface43は、コンテンツ及びコンテンツに係る情報が記録されているメディアに対するアクセスインターフェースであり、メディアはリムーバブルメディア、装置内蔵のメディア、外部装置上のメディアであってもよい。また、Media interface43は、それ自身が前述のアクセス機能を含んでおらず、図4のメディアインターフェイス15、記憶媒体25などのバーチャルマシン30の外部機能を利用するためのインターフェースであってもよい。
【0049】
Module interface44は、上記以外のその他の機能モジュール、例えば、コンテンツデコーダー、装置内蔵の時計、ネットワークインターフェース、USBインターフェース、携帯電話向けSIMカード、クレジットカードなどがある。Module interface44は、装置内蔵の機能モジュール、もしくは装置のインターフェースを通じて利用可能な外部装置の機能モジュールなどを示す。
【0050】
1−3.Instruction Set
次に、図6を用い、上記図5中の本例に係る命令単位(Instruction Set)39について説明する。
図示するように、図6には、本例に係る命令単位39の一例が示されている。Instruction set39には、メモリ31やレジスタ33などのデータロード、加減乗除などの算術演算、AND/OR/XOR/Shiftなどのビット演算などの他、System call operation36に対応した命令語を示すOpcode(0x01,0x02,0x03等)が含まれる。System call operation36を示すOpcodeは、レジスタ33やメモリ31上の特定領域、もしくはInstructionに含まれる引数もしくは引数によって示されたレジスタ33やメモリアドレスに置かれた、各System call operation毎に定められたコードセットとともに利用される。
【0051】
1−4.Instruction Format
次に、図7を用い、本例に係る命令構成(Instruction format)の例について説明する。
【0052】
図示するように、命令構成(Instruction format)には、先のOpcodeとともにRS1,RS2,RD,SA,Immediate,Function,PC Offsetなどを示すデータが各Instructionに含まれる。
【0053】
(a)では、32bitのI-typeが示されている。図中のRS1はオペレーションに用いる変数が格納されているレジスタ33やメモリ33のアドレスを意味する。RDはオペレーション結果の値を格納するレジスタ33やメモリ31のアドレスを意味する。これはDLX Processorなどで用いられているフォーマットを利用した例である。Immediateは、レジスタ33格納の値ではなく、オペレーションに利用する即時値(直接指定変数)が格納されている領域である。
【0054】
(b)では、32bitのR-typeが示されている。図中のRS2は、同様に、オペレーションに用いる変数が格納されているレジスタ33やメモリ31のアドレスを意味する。
【0055】
RDは、RDはオペレーション結果の値を格納するレジスタ33やメモリ31のアドレスである。SAは、任意用途用スペア領域である。Functionは、追加入出力やその他の拡張条件の指示もしくは利用向けにOpcode毎に必要に応じて定められる拡張関数領域である。
【0056】
(c)では、32bitのJ-typeが示されている。PC Offsetは、通常はInstruction列が順次実行されるのに対して、特定のInstructionへとジャンプする際などに利用されるプログラムカウンタのアドレスを保持する領域である。プログラムカウンタのアドレスは絶対アドレスであってもよいし、相対アドレスであってもよい。
【0057】
コンテントコード29は、上述したSystem call operation36を含むInstruction set39及び同Instruction setにより処理・利用されるデータなどから構成される。このように、コンテントコード29により、データ演算のほか、System call operation36を通じた装置の各機能の利用とその戻り値に基づく更なる演算処理、条件分岐処理などを実現することで、高度かつ難読なセキュリティー処理を実現することが可能となる。
【0058】
ここで、上述のように、全ての機器において単一のバーチャルマシン構造を採用した場合、ある脆弱性をもった機器からバーチャルマシンの構造が把握されてしまった場合、同様のバーチャルマシンの構造を適用している他の全ての機器にも影響が波及してしまうという傾向がある。一方で、バーチャルマシンを規定せず、全てを独自の仕様とした場合、装置の処理環境を全て把握した上でコンテントコードを作成する必要があり、生産性、互換性が低減するという傾向がある。
【0059】
そこで、バーチャルマシン30の構造を固有化してコンテンツの保護を向上させつつ、生産性、互換性の劣化を防止できる方法および構成について、さらに具体的に説明を進める。
【0060】
1−5.Instruction Tables
図8を用い、上記方法および構成に適用される本例に係る命令テーブル(Instruction Tables)の例について説明する。
【0061】
図示するように、Instraction setのOpcodeと機能割り当てが異なる(a)共通命令テーブル(Common Instruction Table)19−0と、(b)個別命令テーブル(Instruction table #1-#3)19−1〜19−3の例が示されている。
【0062】
(a)で示す共通命令テーブル(Common Instruction Table)19−0は、各装置で共通のInstruction tableである。このように、各装置において共通のコンテントコードとして、Common instruction table19−0を用いることで、情報量を削減でき、加えて生産性、互換性を向上できる点で有利である。
【0063】
(b)で示す個別命令テーブル(Instruction table #1-#3)19−1〜19−3は、Instraction setの各Opcodeと機能の割り当て関係を示すInstruction tableを装置毎、もしくは装置群毎に少なくとも一部の要素が個別化された命令テーブルである。装置群とは例えば、あるモデル名に属する一群の装置、または、あるメーカ名に属する一群の装置などを意味する。
【0064】
例えば、Table #1は、OpcodeとしてX(i), X(i+1), X(i+2), …によって示される系列を用いる。Table #2は、OpcodeとしてY(i), Y(i+1), Y(i+2), …によって示される系列を用いる。Table #3は、OpcodeとしてZ(i), Z(i+1), Z(i+2), …によって示される系列を用いる。ここで、各X,Y,Z系列は各々異なるデータ指示子系列である。このように、装置毎、もしくは装置群毎に異なる個別化された命令テーブル19−1〜19−3を適用することで、例えばTable #1を実装した装置に脆弱性があり、Table #1の内容が露見した場合でも他のTable #2, #3を用いた装置群には影響を及ぼさないため、コンテンツ保護の向上に対して有利である。
【0065】
上記のように、本例に係るInstruction tables19では、個別命令テーブル(Instruction table #1-#3)19−1〜19−3によりバーチャルマシン30を個別化するため、コンテントコードを各バーチャルマシン30毎に用意し、コンテントと共に配布・記録する必要がある。しかしながら、共通命令テーブル(Common Instruction Tables)19−0により共通部分のコンテントコードについて共通化させることで、情報量を削減している。
【0066】
この結果、例えば、バーチャルマシン30を有する各再生装置が記憶するテーブルは、図9のように示される。テーブルは、例えば再生装置中のROM(Read Only Memory)に格納される。
【0067】
(a)に示す再生装置Aでは、ROM中に、共通命令テーブル(Common Instruction Table)19−0および個別命令テーブル(Instruction table #1)19−1を格納する。
【0068】
(b)に示す再生装置Bでは、ROM中に、共通命令テーブル(Common Instruction Table)19−0および個別命令テーブル(Instruction table #2)19−2を格納する。
【0069】
(c)に示す再生装置Cでは、ROM中に、共通命令テーブル(Common Instruction Table)19−0および個別命令テーブル(Instruction table #3)19−3を格納する。
【0070】
尚、この例に限らず、例えば、必要に応じて、更に個別命令テーブル(Instruction table #4, #5,,,)を格納しても良いことは勿論である。例えば、コンテンツ再生装置群毎に異なる(例えば、第1群{再生装置A,再生装置B}:個別命令テーブル19−1,第2群{再生装置C}:個別命令テーブル19−2等)ように、必要に応じて格納することが可能である。
【0071】
<2.コンテントコードの生成方法>
次に、図10乃至図15を用い、本例に係るコンテントコード29の生成方法について、説明する。このコンテントコードの生成方法は、ディスク製造者(Disc Manufacturer)100側により、専用の書き込み装置(暗号装置)により行われるものである。
【0072】
コンパイラは、上記共通命令テーブル(Common instruction table)19−0、および各装置もしくは装置群毎に割り当てられた個別命令テーブル(Instruction table #n)19−nを元に、各ソースコードをコンテントコード(C0-C#n)へと変換する。ここで、Common instruction table19−0によりコンパイルされたコンテントコード(Common Code:C0)を共通コンテントコードとし、個別命令テーブル(Instruction table #n)19−nを元にコンパイルされたコンテントコードを個別コンテントコード(Code #n)と称する。
【0073】
ソースコード(Source Code)内にはコンテントのセキュリティーポリシーに従った、装置に実行させる処理手順が記載されている。コンパイラは、ソースコードをコンテントコードへと変換する際、必要に応じて、前述したInstruction converter34における処理向けの変換処理も実行する。生成されたコンテントコード29は、署名処理のほか、必要に応じて、暗号化やパッケージ化などの配布もしくは記録用の処理がなされる。ここで、署名処理は不正者が作成したコンテントコード29の実行を防止するために必要な処理であり、再生装置はコンテントコード29実行前に署名を検証することで不正なコンテントコードであるか否か、また、コンテントコードが改竄されていないか、を判定でき、正当なコンテントコード以外の実行を防止することができる。ここで、署名処理は、RSAやECDSAなどの公開鍵暗号方式に基づき、秘密鍵によって署名が生成され、公開鍵によって署名が検証される方法のほか、AES(Advanced Encryption Standard)などの共通鍵暗号方式に基づき、秘密鍵によってメッセージ認証コード(Message Authentication Code: MAC)が生成され、同秘密鍵によってMACが検証される方法でもよい。後者の秘密鍵は、コンテントコード29毎に用意される後述のプログラム鍵を用いてもよい。
【0074】
2−1.共通コード生成の例(ハッキングが発生していない場合)
図10は、全ての再生装置について共通の処理を実行させ、かつ、Common instruction table 19−0を用いてソースコードをコンパイルする場合の例である。この場合は、例えば、いずれの再生装置においてもハッキングが生じておらず、従ってCommon instruction table 19−0のみを用いて、共通のセキュリティーポリシーに従った処理を実行させる場合などが考えられる。
【0075】
図示するように、対応するコンパイラ(Compiler(w/ Intstruction convert))134−0は、共通命令テーブル(Common instruction table)19−0を元に、ソースコード(Source Code 0)を、共通コンテントコード(Common Code(C0))64−0へ変換させる。
【0076】
続いて、Post processing部135は、コード保護のための鍵(Keys for Code Protection)61を秘密鍵として、共通コンテントコード(Common Code(C0))64−0を保護されたコード(Protected Code)68に処理する。ここで、コード保護のための鍵61とは、後述するプログラム鍵、あるいは必要に応じて署名鍵等を含む鍵である。
【0077】
2−2.個別コード生成の例(Common instruction tableのハッキングが生じた場合)
図11は、全ての再生装置について共通の処理を実行させるが、再生装置毎に異なる個別命令テーブル(Instruction Table #n)を用いてソースコードをコンパイルする場合の例である。例えば、Common instruction table 19−0がハッキングされ、共通のセキュリティーポリシーに従った処理を実行させる場合などが考えられる。
図示するように、例えば、共通命令テーブル(Common instruction table)19−0のハッキングが生じた場合、上記2−1の共通コンテントコード64−0は生成されず、個別命令テーブル(Instruction Table #n)を用いてソースコードのコンパイルが開始される。
【0078】
即ち、対応する個別のコンパイラ(Compiler(w/ Instruction convert))134−1〜134−4は、個別命令テーブル(instruction table #1-#4)19−1〜19−4を元に、共通のソースコード(Source Code)を、個別のコンテントコード(Code #1 - Code #4)64−1〜64−4へ変換させる。
【0079】
続いて、Post processing部135は、同様に、コード保護のための鍵(Keys for Code Protection)61を秘密鍵として、個別のコンテントコード(Code #1 - Code #4)64−1〜64−4を保護されたコード(Protected Code)68に処理する。
【0080】
2−3.特定のコード生成の例
図12は、特定の再生装置(ここでは、instruction table #4に対応する再生装置)に対して異なる処理を実行させ、また、装置毎に異なるInstruction tableを用いてソースコードをコンパイルする場合の例である。例えば、Instruction table #4に基づく処理を行う再生装置にハッキングの疑いが生じた場合などに用いられ、当該再生装置のみに対してSystem call operation36を通じたハッキング状況の検査やそれに基づく鍵導出処理の選択、停止、コンテンツ再生制御などを行なうことが可能となる。
即ち、対応する個別のコンパイラ(Compiler(w/Instruction convert))134−4は、個別命令テーブル(instruction table #4)19−4を元に、ソースコード2(Source Code 2)を、個別のコンテントコード(Code #4)64−4へ変換させる。
【0081】
続いて、Post processing部135は、同様に、コード保護のための鍵(Keys for Code Protection)61を秘密鍵として、個別のコンテントコード(Code #4)64−4を保護されたコード(Protected Code)68に処理する。
【0082】
2−4.ソースコード1処理の後にソースコード2を処理する場合
図13は、全ての再生装置で共通の処理を実行させてソースコード1(Source Code 1)を共通命令テーブル(Common instruction table)19−0を用いてコンパイルした後、ソースコード2(Source Code 2)を再生装置毎に異なる個別命令テーブル(Instruction table #1 -#4)を用いてコンパイルする、2つのコンテントコードを組み合わせる場合の例である。例えば、コード生成時にはCommon instruction table 19−0のハッキングは生じていないが、将来的にハッキングが生じることを仮定して、処理の少なくとも一部を、再生装置毎に異なるInstruction table 19−1〜19−4を用いてコンパイルしたコードに含める場合が考えられる。この場合は、Common instruction table 19−0のハッキングのみで処理の全体を把握することが困難となる。例えば、ソースコード1を実行した後にソースコード2を実行するような分岐命令が存在する場合がこれに相当する。
【0083】
即ち、上記と同様に、対応するコンパイラ(Compiler(w/ Instruction convert))134−0は、共通命令テーブル(Common instruction table)19−0を元に、ソースコード1(Source Code 1)を、共通コンテントコード(Common Code(C0))64−0へ変換させる。続いて、Post processing部135は、コード保護のための鍵(Keys for Code Protection)を秘密鍵として、共通コンテントコード(Common Code(C0))64−0を保護されたコード(Protected Code)68に処理する。
【0084】
続いて、対応する個別のコンパイラ(Compiler(w/ Instruction convert))134−1〜134−4は、個別命令テーブル(instruction table #1-#4)19−1〜19−4を元に、ソースコード2(Source Code 2)を、個別のコンテントコード(Code #1 - Code #4)64−1〜64−4へ変換させる。続いて、Post processing部135は、同様に、コード保護のための鍵(Keys for Code Protection)を秘密鍵として、個別のコンテントコード(Code #1 - Code #4)64−1〜64−4を保護されたコード(Protected Code)68に処理する。
【0085】
2−5.共通処理の後に装置毎に個別処理を行う場合
図14は、例えば、上記図13に示す2−4と比較して、更に再生装置毎に異なる処理(ソースコード1〜4)を実行させる点で、相違する。このような実行により、再生装置ごとにソースコードが異なるため、特定の再生装置をハッキングした結果露見した処理内容を、他の再生装置に適用することを困難とさせることができる。
【0086】
即ち、上記と同様に、対応するコンパイラ(Compiler(w/ Instruction convert))134−0は、共通命令テーブル(Common instruction table)19−0を元に、ソースコード1(Source Code 1)を、共通コンテントコード(Common Code(C0))64−0へ変換させる。続いて、Post processing部135は、コード保護のための鍵(Keys for Code Protection)を秘密鍵として、共通コンテントコード(Common Code(C0))64−0を保護されたコード(Protected Code)68に処理する。
【0087】
続いて、対応する個別のコンパイラ(Compiler(w/ Instruction convert))134−1〜134−4は、個別命令テーブル(instruction table #1-#4)19−1〜19−4を元に、ソースコード1〜4(Source Code 2-4)を、個別のコンテントコード(Code #1 - Code #4)64−1〜64−4へ変換させる。続いて、Post processing部135は、同様に、コード保護のための鍵(Keys for Code Protection)を秘密鍵として、個別のコンテントコード(Code #1 - Code #4)64−1〜64−4を保護されたコード(Protected Code)68に処理する。
【0088】
2−6.プログラム鍵(Program key)について
次に、図15を用い、プログラム鍵61について説明する。
図示するように、プログラム鍵KP0, KP1, KP2, KP3, KP4…(61−0〜61−4)は、各々のコンテントコード64−0〜64−4の暗号として用いられる。
【0089】
ここで、プログラム鍵61−0〜61−4は、前述のメッセージ認証コードの生成に用いる秘密鍵であってもよい。また、各プログラム鍵61−0〜61−4は、各々異なる鍵であってもよいし、少なくとも一部が同一の鍵であってもよいし、また全て同一の鍵であっても良い。プログラム鍵を異ならせた場合、脆弱性を持った装置からプログラム鍵が露見し、当該装置向けの個別コンテントコードの復号がされた場合であっても、他の装置向けの個別コンテントコードの復号はできないため、コンテントコード及びこれを処理するバーチャルマシンの秘匿性には影響を与えない。この場合、プログラム鍵はデバイス固有の鍵やデータに基づき保護されていることが望ましい。詳細については、後述する。
【0090】
<3.暗号化処理(デジタルコンテンツ保護処理)>
3−1.
次に、図16を用い、本例に係る暗号化処理(デジタルコンテンツ保護処理)について説明する。以下に説明する暗号化処理は、例えば、メディアにコンテンツを書き込む事業者側100により、専用の書き込み装置(暗号装置)が行う処理であり、図10乃至図14の処理の何れかを含むものである。
【0091】
図示するように、本例に係る暗号化処理により、上記コンテントコード29、コンテント鍵の保護やその他の処理に用いられるプログラム鍵は、デバイス固有のデータもしくは鍵などで暗号化される。最終的には、保護処理がなされたデータ群として、保護されたプログラム鍵67、保護されたコード68、保護されたコンテント鍵69、および保護されたコンテント70は、電子配信や物理媒体(メディア)に記録された形式で、再生装置向けに配布される。
【0092】
(ステップP0(Generating code (Security policy, etc)))
セキュリティーポリシーやコンテンツ保護方法に基づいて記されたソースコードを基にして、図10乃至図14で説明したコンテントコード生成方法のように、コンテントコード生成部としてのコンパイラ134は、コンテントコード(C0,C1,C2,,,)29を生成する。ここで、図10乃至図14のバリエーションで示したように、ソースコードは単一であってもよいし、複数であってもよい。また、生成されるコンテントコードはソースコード毎に単一であってもよいし、異なるInstruction tableによってコンパイルされた複数のコードであってもよい。
【0093】
(ステップP1(Protect Code (w/ or w/c conv.))
続いて、生成されたコンテントコード29は、コンテントコード保護部としてのPost processing部135により、保護処理が行なわれ、保護コード(Protected Code(C0e,C1e,C2e,,,))68として処理される。この際、上記のように、プログラム鍵61が用いられる。ここで、プログラム鍵61は、前述のとおり、装置固有値に基づく情報62と保護処理により関連付けられており、同関連付けられた装置向けのコンテントコードに対応するプログラム鍵61が各々のコンテントコードの保護に用いられる。またこの際、図中の破線で示すように、メディアID/Key、ボリュームID/Key、コンテントID/Key, デバイスID/Keyなどの固有値(Unique Value)71を保護処理に用いてもよい。更に、前述のInstruction converter34による処理に対応する難読化処理を行なってもよい。保護されたコンテントコード68は、ステップP6に示すように、暗号化されたコンテンツとして電子配信や物理媒体(メディア)に記録されるなどの形式で再生装置向けに配布される。
【0094】
(ステップP2(Protect Program Key))
コンテントコードを暗号化するプログラム鍵(Program Keys (Kpc, Kp1, Kp2,,,))は、装置固有値に基づく情報62などを用いて、保護処理がなされる。ここで、装置固有値に基づく情報62とは、装置固有値を直接的に用いる場合の他、装置固有値を用いて導出された間接情報を用いてもよい。関連情報の例としては、装置固有値に基づく情報62毎に対応するメディア鍵群などが考えられる。
【0095】
具体例としては、前述のSKBにおけるメディア鍵バリアントが間接情報であり、SKBを処理し、前記メディア鍵バリアントを導出するのに必要なデバイス鍵が装置固有情報などに相当する。また、間接情報の導出には、図中の破線で示すように、メディアID/Key、ボリュームID/Key、コンテントID/Key, デバイスID/Keyなどの固有値(Unique Value)71を用いてもよい。保護処理がなされたプログラム鍵(Protected Program Key)67は、ステップP6に示すように、暗号化されたコンテンツとして電子配信や物理媒体(メディア)に記録されるなどの形式で再生装置向けに配布される。
【0096】
(ステップP3(Protect Content))
コンテンツ66は、コンテント鍵(Content key)65を用いて保護処理がなされ、保護されたコンテンツ(Protected Content)70として処理される。
ここで、コンテントコード29によってコンテントの少なくとも一部に対し追加の処理をしてもよい。追加の処理はデータの変換、暗号化、置き換え処理などでよい。保護されたコンテンツ70は、ステップP6に示すように、暗号化されたコンテンツとして電子配信や物理媒体(メディア)に記録されるなどの形式で再生装置向けに配布される。
【0097】
(ステップP4(Transform Key))
コンテントを暗号化するコンテンツ鍵65は、コンテントコード29に含まれる鍵変換方式に則り変換され、変換コンテント鍵(Transformed Content key)として変換される。この際、同様に、固有値71を用いて、追加の処理をしてもよい。
【0098】
(ステップP5(Protect Transformed Content Key)
続いて、変換された変換コンテント鍵は、保護処理が行なわれ、保護コンテント鍵(Protected Content Keys(Ck0e,Ck1e,Ck2e,,,))69として処理される。この際、メディアID/Key、ボリュームID/Key、コンテントID/Key, デバイスID/Keyなどの固有値71を鍵変換処理や保護処理に用いてもよい。ここで、ステップP4の鍵変換処理とステップP5の保護処理とは順序は逆であってもよく、保護処理後に鍵変換処理を行なってもよい。またいずれか一方の処理がもう一方の処理を包含するといった直列処理接続以外の構造をとってもよい。保護コンテント鍵69は、ステップP6に示すように、電子配信や物理媒体(メディア)に記録されるなどの形式で再生装置向けに配布される。
【0099】
3−2.物理記憶媒体に記憶された形式
上記暗号化処理のステップP6の結果、暗号化されたコンテンツとして物理記憶媒体(メディア)に記憶される保護されたプログラム鍵67等は、例えば、図17A、図17Bのように示される。
【0100】
図17Aに示す例では、記憶媒体(Storage Media)に、暗号化されたコンテンツとして上記暗号化処理が行われた保護プログラム鍵(Protected Program Key)67,保護されたコード(Protected Code(C0e,C1e,C2e,,,))68,保護コンテント鍵(Protected Content Keys(Ck0e,Ck1e,Ck2e,,,))69,および保護されたコンテンツ(Protected Content)70が記憶される。この記憶媒体は、再生装置向けに配布される。
【0101】
図17Bに示す例では、より具体的に、記憶媒体としてSDカード(SD Card)(登録商標)の例を示している。SDカードは、メモリコントローラ76と、不揮発性半導体メモリのNAND型フラッシュメモリ77とを備える。メモリコントローラ76は、NAND型フラッシュメモリ77の動作全体を制御する。
NAND型フラッシュメモリ77には、暗号化されたコンテンツとして上記暗号化処理が行われた保護プログラム鍵(Protected Program Key)67,保護されたコード(Protected Code(C0e,C1e,C2e,,,))68,保護コンテント鍵(Protected Content Keys(Ck0e,Ck1e,Ck2e,,,))69,および保護されたコンテンツ(Protected Content)70が記憶される。このSDカードは、同様に、再生装置向けに配布される。
【0102】
尚、記憶媒体に限らず、ステップP6に示したように、例えば、ダウンロード等による電気通信回線を通じた電子配信等の形式により、再生装置向けに配布されても良い。
【0103】
<4.復号化処理>
次に、図18を用い、本例に係る復号化処理について説明する。本例に係る復号化処理は、原則的には、上記図16で説明した暗号化処理の反対の処理を行うものであり、コンシューマ向けに販売される再生装置(プレイヤー300側)で実行される処理である。
【0104】
(ステップUP0(Electrically delivered and/or Read from Storage))
暗号化されたコンテンツとして上記電子配信や物理媒体に記録されるなどの形式で、再生装置には、上記暗号化処理が行われた保護されたプログラム鍵67、保護されたコード68、および保護コンテント鍵69、保護されたコンテンツ70に加え、固有値71が配布される。固有値(Unique Value)71は、例えば、メディアID/Key、ボリュームID/Key、コンテントID/Key,、デバイスID/Key等である。固有値71は、同一、または異なる手段により再生装置へと提供される。
【0105】
(ステップUP1(Unprotect Program Key))
保護プログラム鍵(Protected Program Key)67は、装置固有値に基づく情報62を用いて、プログラム鍵(Kp0, Kp#n)61として復号される。上記のように、この際の復号処理には装置固有値に基づく情報62が用いられる。
【0106】
ここで、装置固有値に基づく情報62とは、装置固有値を直接的に用いる場合の他、装置固有値を用いて導出された間接情報を用いてもよい。関連情報の例としては、装置固有値に基づく情報62毎に対応するメディア鍵群などが考えられる。具体例としては、前述のSKBにおけるメディア鍵バリアントが間接情報であり、SKBを処理し、前記メディア鍵バリアントを導出するのに必要なデバイス鍵が装置固有情報などに相当する。また、間接情報の導出には、図中の破線で示すように、メディアID/Key、ボリュームID/Key、コンテントID/Key, デバイスID/Keyなどの固有値(Unique Value)71を用いてもよい。復号化されたプログラム鍵(Kp0, Kp#n)61は、後段の復号処理で用いられる。 (ステップUP2(Select & Unprotect Code))
保護されたコンテントコード(Protected Code(C0e,C1e,C2e,,,))68は、再生装置のコンテントコード選択部・復号部によって、コンテントコード(C0, C#n)64に復号される。この際の選択処理には、プログラム鍵61もしくはデバイス固有鍵71やデータに付随するコンテントコード選択番号、もしくは事前に定められた選択番号、もしくはその他の手段で提供される選択番号が用いられる。復号処理には上記プログラム鍵61が用いられる。また、メディアID/Key、ボリュームID/Key、コンテントID/Key, デバイスID/Keyなどの固有値71を選択もしくは復号処理に用いてもよい。 (ステップUP3(Select & Unprotect Key))
保護されたコンテント鍵(Protected Content Keys(Ck0e,Ck1e,Ck2e,,,))69は、再生装置のコンテント鍵選択部・復号部によって復号され、ステップUP4へ受け渡される。
【0107】
(ステップUP4(Execute Code (Transform key, etc.)))
続いて、コンテントコード(C0, C#n)64は、再生装置のバーチャルマシン(Virtual Machine)30により、例えば、プログラム鍵61、変換された鍵(Transformed key, etc)等を用い、コンテント鍵(Content Key)65を復号する。また、保護されたコンテント(Protected Content)70がコンテントコード29によってコンテントの少なくとも一部に対し追加の処理がなされていた場合、それらに対応する復号処理も本ステップにおいてなされる。
【0108】
(ステップUP5(Unprotect Content))
保護されたコンテント(Protected Content)70は、コンテント鍵(Content Key)65を用いて、コンテンツ(Content)66に復号される。
【0109】
(ステップUP6(Playback Control (Rendering, etc)))
復号されたコンテンツ(Content)66は、必要に応じて、再生装置のバーチャルマシン(Virtual Machine)30で実行されるコード(Execute Code)により、適宜再生制御がなされる。
【0110】
<5.作用効果>
上記第1実施形態に係るデジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置によれば、少なくとも下記(1)および(2)に示す効果が得られる。
【0111】
(1)秘匿性の向上に対して有利である。
上記図16等に示したように、第1実施形態に係るデジタルコンテンツの保護処理(デジタルコンテンツの暗号処理)では、暗号化されたコンテンツ(Protected Content)70と共に、少なくとも暗号化された保護プログラム鍵(Protected Program Key)67、保護コンテンツ鍵(Protected Content Keys(Ck0e,Ck1e,Ck2e,,,))69、およびコンテンツ再生装置毎またはコンテンツ再生装置群毎に少なくとも一部の要素が固有の固有オペレーションコード仕様に従って設計された個別命令コード(C1e,C2e,,,)を含む保護コード(Protected Code)68が配布される。
【0112】
このように、コンテンツ再生装置毎またはコンテンツ再生装置群毎に少なくとも一部の要素が異なる個別化された個別命令コード(C1e,C2e,,,)を含むことで、例えば、個別命令コード(C1e)を用いた再生装置に脆弱性があり、個別命令コード(C1e)の内容が露見した場合であっても、他の個別命令コード(C2e,,,)を用いた再生装置群には影響を及ぼさず、デジタルコンテンツの不正コピー等を防止することができる。このように、デジタルコンテンツ保護を向上でき、秘匿性の向上に対して有利である。
【0113】
(2)情報量を削減でき、生産性および互換性の劣化の防止に対して有利である。
加えて、上記保護コード68は、コンテンツ再生装置毎に共通の共通命令コード(C0e)を更に含む。
【0114】
このように、コンテンツ再生装置毎に共通の共通命令コード(C0e)を含むことで、共通部分の情報量を削減でき、かつ生産性および互換性を向上できる点で有利である。
【0115】
(3)デジタルコンテンツの復号方法、再生装置、記憶媒体、暗号装置について
上記(1)および(2)で示した効果については、上記で説明したデジタルコンテンツの復号方法(例えば、図18等)、再生装置(例えば、図4、図5等)、記憶媒体(例えば、図17等)、暗号装置(例えば、図1、図10等)においても同様に有するものである。
【0116】
例えば、第1実施形態に係るデジタルコンテンツ保護方法により保護されたコンテンツを再生する再生装置に関しては、バーチャルマシン(Virtual Machine)30のプロセッサ(Instruction Processor)35により、図8で示す命令テーブル(Instruction tables)19を用いて実行される。
【0117】
図8(a)で示す共通命令テーブル(Common Instruction Table)19−0は、各装置で共通のInstruction tableである。
【0118】
図8(b)で示す個別命令テーブル(Instruction table #1-#3)19−1〜19−3は、Instraction setの各Opcodeと機能の割り当て関係を示すInstruction tableを装置毎、もしくは装置群毎に個別化された命令テーブルである。
【0119】
例えば、Table #1は、OpcodeとしてX(i), X(i+1), X(i+2), …によって示される系列を用いる。Table #2は、OpcodeとしてY(i), Y(i+1), Y(i+2), …によって示される系列を用いる。Table #3は、OpcodeとしてZ(i), Z(i+1), Z(i+2), …によって示される系列を用いる。
【0120】
この結果、例えば、バーチャルマシン30を有する各再生装置が記憶するテーブルは、図9のように示される。
【0121】
(a)に示す再生装置Aでは、ROM中に、共通命令テーブル(Common Instruction Table)19−0および個別命令テーブル(Instruction table #1)19−1を格納する。
【0122】
(b)に示す再生装置Bでは、ROM中に、共通命令テーブル(Common Instruction Table)19−0および個別命令テーブル(Instruction table #2)19−2を格納する。
【0123】
(c)に示す再生装置Cでは、ROM中に、共通命令テーブル(Common Instruction Table)19−0および個別命令テーブル(Instruction table #3)19−3を格納する。
【0124】
加えて、図10乃至図14に示したように、コンテントコードの生成については、必要に応じて、種々に適用することが可能である点で有利である。
【0125】
[本例が包含し得る態様]
また、上記比較例および実施形態は、以下の態様を含む。
(1) 暗号化されたコンテンツと共に、暗号化された保護プログラム鍵、保護コンテンツ鍵、およびコンテンツ再生装置毎またはコンテンツ再生装置群毎に少なくとも一部の要素が固有の固有オペレーションコード仕様に従って設計された個別命令コードを含む保護コードを配布するデジタルコンテンツの保護方法。
【0126】
(2) (1)に記載のデジタルコンテンツの保護方法において、前記保護コードは、前記コンテンツ再生装置毎に共通の共通オペレーションコード仕様に従って設計された共通命令コードを更に含む。
【0127】
(3) (1)または(2)に記載のデジタルコンテンツの保護方法において、前記個別命令コードは、異なる前記固有オペレーションコード仕様に従って設計された前記コンテンツ再生装置または前記コンテンツ再生装置群では導出不可能なプログラム鍵によって暗号化される。
【0128】
(4) (3)に記載のデジタルコンテンツの保護方法において、前記プログラム鍵は、前記コンテンツ再生装置の固有情報を用いて導出される鍵によって暗号化される。
【0129】
(5) (2)乃至(4)に記載のデジタルコンテンツの保護方法において、前記共通命令コードは、任意の前記コンテンツ再生装置群で導出可能なプログラム鍵によって暗号化される。
【0130】
(6) (1)または(2)に記載のデジタルコンテンツの保護方法において、前記個別命令コードおよび共通命令コードは、少なくとも命令意味(Mnemonic)と記述子(Opcode)とを含む個別命令テーブルおよび共通命令テーブルに基づきコンパイルされる。
【0131】
(7) (1)または(2)に記載のデジタルコンテンツの保護方法において、前記共通命令コードは任意の前記コンテンツ処理装置で実行可能であり、前記個別命令コードは異なる前記固有オペレーションコード仕様に従って設計された前記コンテンツ処理装置または前記コンテンツ処理装置群では実行ができない。
【0132】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0133】
70…暗号化されたコンテンツ、67…暗号化された保護プログラム鍵、69…暗号化された保護コンテンツ鍵、68…暗号化された保護コード、C1e, C2e, ……コンテンツ再生装置毎またはコンテンツ再生装置群毎に少なくとも一部の要素が固有の個別命令コード。

【特許請求の範囲】
【請求項1】
暗号化されたコンテンツと共に、暗号化された保護プログラム鍵、保護コンテンツ鍵、およびコンテンツ再生装置毎またはコンテンツ再生装置群毎に少なくとも一部の要素が固有の固有オペレーションコード仕様に従って設計された個別命令コードを含む保護コードを配布する
デジタルコンテンツの保護方法。
【請求項2】
前記保護コードは、前記コンテンツ再生装置毎に共通の共通オペレーションコード仕様に従って設計された共通命令コードを更に含む
請求項1に記載のデジタルコンテンツの保護方法。
【請求項3】
前記個別命令コードを、異なる前記固有オペレーションコード仕様に従って設計された前記コンテンツ再生装置または前記コンテンツ再生装置群では導出不可能なプログラム鍵によって暗号化する
請求項1または2に記載のデジタルコンテンツの保護方法。
【請求項4】
前記プログラム鍵を、前記コンテンツ再生装置の固有情報を用いて導出される鍵によって暗号化する
請求項3に記載のデジタルコンテンツの保護方法。
【請求項5】
前記共通命令コードを、任意の前記コンテンツ再生装置群で導出可能なプログラム鍵によって暗号化する
請求項2乃至4のいずれか1項に記載のデジタルコンテンツの保護方法。
【請求項6】
暗号化されたコンテンツと共に配布された、暗号化された保護プログラム鍵、保護コンテンツ鍵、およびコンテンツ再生装置毎またはコンテンツ再生装置群毎に少なくとも一部の要素が固有の固有オペレーションコード仕様に従って設計された個別命令コードを含む保護コードを復号する
デジタルコンテンツの復号方法。
【請求項7】
前記保護コードに更に含まれる前記コンテンツ再生装置毎に共通の共通オペレーションコード仕様に従って設計された共通命令コードを復号化する
請求項6に記載のデジタルコンテンツの復号方法。
【請求項8】
前記個別命令コードを、前記固有オペレーションコード仕様に従って設計された前記コンテンツ再生装置または前記コンテンツ再生装置群で導出可能なプログラム鍵によって復号化する
請求項6または7に記載のデジタルコンテンツの復号方法。
【請求項9】
前記プログラム鍵を、前記コンテンツ再生装置の固有情報を用いて導出される鍵によって復号化する
請求項8に記載のデジタルコンテンツの復号方法。
【請求項10】
前記共通命令コードを、任意の前記コンテンツ再生装置群で導出可能なプログラム鍵によって復号化する
請求項7乃至9のいずれか1項に記載のデジタルコンテンツの復号方法。
【請求項11】
暗号化されたコンテンツと共に配布された、暗号化された保護プログラム鍵、保護コンテンツ鍵、およびコンテンツ再生装置毎またはコンテンツ再生装置群毎に少なくとも一部の要素が固有の固有オペレーションコード仕様に従って設計された個別命令コードを含む保護コードを再生する処理部を具備する
デジタルコンテンツの再生装置。
【請求項12】
前記保護コードは、前記コンテンツ再生装置毎に共通の共通オペレーションコード仕様に従って設計された共通命令コードを更に含む
請求項11に記載のデジタルコンテンツの再生装置。
【請求項13】
前記個別命令コードを、前記固有オペレーションコード仕様に従って設計された前記コンテンツ再生装置または前記コンテンツ再生装置群で導出可能なプログラム鍵によって復号化する
請求項11または12に記載のデジタルコンテンツの再生装置。
【請求項14】
前記プログラム鍵を、前記コンテンツ再生装置の固有情報を用いて導出される鍵によって復号化する
請求項13に記載のデジタルコンテンツの再生装置。
【請求項15】
前記共通命令コードを、任意の前記コンテンツ再生装置群で導出可能なプログラム鍵によって復号化する
請求項12乃至14のいずれか1項に記載のデジタルコンテンツの再生装置。
【請求項16】
暗号化されたコンテンツと共に配布された、暗号化された保護プログラム鍵、保護コンテンツ鍵、およびコンテンツ再生装置毎またはコンテンツ再生装置群毎に少なくとも一部の要素が固有の固有オペレーションコード仕様に従って設計された個別命令コードを含む保護コードを記憶する
デジタルコンテンツの記憶媒体。
【請求項17】
前記保護コードは、前記コンテンツ再生装置毎に共通の共通オペレーションコード仕様に従って設計された共通命令コードを更に含む
請求項16に記載のデジタルコンテンツの記憶媒体。
【請求項18】
前記個別命令コードは、異なる前記固有オペレーションコード仕様に従って設計された前記コンテンツ再生装置または前記コンテンツ再生装置群では導出不可能なプログラム鍵によって暗号化される
請求項16または17に記載のデジタルコンテンツの記憶媒体。
【請求項19】
前記プログラム鍵は、前記コンテンツ再生装置の固有情報を用いて導出される鍵によって暗号化される
請求項18に記載のデジタルコンテンツの記憶媒体。
【請求項20】
前記共通命令コードは、任意の前記コンテンツ再生装置群で導出可能なプログラム鍵によって暗号化される
請求項17乃至19のいずれか1項に記載のデジタルコンテンツの記憶媒体。
【請求項21】
コンテンツと共に、保護プログラム鍵、保護コンテンツ鍵、およびコンテンツ再生装置毎またはコンテンツ再生装置群毎に少なくとも一部の要素が固有の固有オペレーションコード仕様に従って設計された個別命令コードを含む保護コードを暗号化させる
デジタルコンテンツの暗号装置。
【請求項22】
前記保護コードは、前記コンテンツ再生装置毎に共通の共通オペレーションコード仕様に従って設計された共通命令コードを更に含む
請求項21に記載のデジタルコンテンツの暗号装置。
【請求項23】
前記個別命令コードを、異なる前記固有オペレーションコード仕様に従って設計された前記コンテンツ再生装置または前記コンテンツ再生装置群では導出不可能なプログラム鍵によって暗号化させる
請求項21または22に記載のデジタルコンテンツの暗号装置。
【請求項24】
前記プログラム鍵を、前記コンテンツ再生装置の固有情報を用いて導出される鍵によって暗号化させる
請求項23に記載のデジタルコンテンツの暗号装置。
【請求項25】
前記共通命令コードを、任意の前記コンテンツ再生装置群で導出可能なプログラム鍵によって暗号化させる
請求項22乃至24のいずれか1項に記載のデジタルコンテンツの暗号装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17A】
image rotate

【図17B】
image rotate

【図18】
image rotate


【公開番号】特開2012−84071(P2012−84071A)
【公開日】平成24年4月26日(2012.4.26)
【国際特許分類】
【出願番号】特願2010−231745(P2010−231745)
【出願日】平成22年10月14日(2010.10.14)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】