プロセッサのバーチャルマシン内で機密コンテンツをセキュアに処理するための方法及び装置
【課題】機密コンテンツをセキュアに処理する。
【解決手段】出力用に第3当事者のコンテンツを処理するためにプロセッサで実施されるセキュアなバーチャルマシンシステム、方法及びプログラム製品が提供される。少なくとも1つのプロセッサが設けられ、第3当事者のコンテンツを処理して出力する第2当事者のプログラムを解釈するためプロセッサで実施されるセキュアなバーチャルマシンが設けられる。バーチャルマシンシステムは、同じプログラムを同様に実行するため、実施変更を許すように基礎的なプロセッサを抽象化する。プログラムによる潜在的なセキュリティ漏洩を軽減し、第2当事者の機密性と第2当事者のプログラムにより管理される第3当事者のコンテンツとを確保するため、プログラム可能な操作の範囲、入力及び出力変数形式、並びにプロセッサ内でのプログラム実行がバーチャルマシン環境内で制限される。
【解決手段】出力用に第3当事者のコンテンツを処理するためにプロセッサで実施されるセキュアなバーチャルマシンシステム、方法及びプログラム製品が提供される。少なくとも1つのプロセッサが設けられ、第3当事者のコンテンツを処理して出力する第2当事者のプログラムを解釈するためプロセッサで実施されるセキュアなバーチャルマシンが設けられる。バーチャルマシンシステムは、同じプログラムを同様に実行するため、実施変更を許すように基礎的なプロセッサを抽象化する。プログラムによる潜在的なセキュリティ漏洩を軽減し、第2当事者の機密性と第2当事者のプログラムにより管理される第3当事者のコンテンツとを確保するため、プログラム可能な操作の範囲、入力及び出力変数形式、並びにプロセッサ内でのプログラム実行がバーチャルマシン環境内で制限される。
【発明の詳細な説明】
【技術分野】
【0001】
[0001]本発明は、プレミアムオーディオ/ビデオコンテンツの処理に係り、より詳細には、コンテンツプレーヤアプリケーションが実行されるプロセッサコンテクスト以外でのコンテンツ処理に係る。
【背景技術】
【0002】
[0002]従来のコンピューティング環境では、コンテンツの処理がしばしば個別プロセッサによって実行される。例えば、高鮮明度コンテンツをデコードするためのハードウェアプロセッサを設けることができる。今日まで、必要な全てのコンテンツ処理を単一チップに統合することは困難であった。更に、完全に実施するには、典型的に、実施者が、第3当事者コンテンツの認可された採用者となって、認可されたコンテンツを処理するアルゴリズムを使用するための権利を得、且つ暗号化されたコンテンツを抽出するための認可保持者キーを得ることが必要である。このような認可は、典型的に、実施上の不備が機密情報又はコンテンツを危うくする場合に、認可発行者シークレットの機密性、責務及び法的改善を保証するための応諾性及び頑健性ルールを含む。従って、第2当事者認可保持者のソフトウェアアプリケーションは、典型的に、再暗号化されたビデオコンテンツをグラフィックス又はビジュアルプロセッサへより一般的なフォーマットで転送する前に中央処理ユニット等を使用してコンテンツを少なくとも部分的に処理することに依存している。
【発明の概要】
【発明が解決しようとする課題】
【0003】
[0003]不都合なことに、中央処理ユニットに依存することは、幾つかの制約を表す。例えば、CPUで実行されるアプリケーション内で認可保持者キー及びアルゴリズムをハンドリングする場合、処理中のある点で、プロセッサ内部にこの機密情報を露呈することを必然的に伴う。前記機密プロセスやシークレットを使用してコンテンツを処理する場合、このようなユニットへの及びユニットからの伝送を伴い、セキュリティの弱点になり得る。更に、不正変更防止技術を使用しても、バーチャル化のために設計された中央プロセッサ内での実行は、例えば、ハイパーバイザー、又は実行中のバーチャルマシンよりプライオリティの高い実行コンテクストから、頑健な不正変更防止実行環境を保証できない事態を招く。更に、中央処理ユニットは、コンピュータアーキテクチャーの汎用性のために、幾つかの形式の処理(例えば、暗号化、等)については、効率が悪い。付加的な不正変更防止及び再暗号化プロセスは、CPUの過剰利用や、不経済なほどの過度の利用を招き、コンテンツ再生中にバッテリ寿命の短縮を招く。従って、従来技術に関連したこれら及び/又は他の問題に対処することが必要となる。
【課題を解決するための手段】
【0004】
[0004]出力用にコンテンツを処理するためにプロセッサにおいて実施されるセキュアなバーチャルマシンシステム、方法及びコンピュータプログラム製品が提供される。少なくとも1つのプロセッサが設けられる。更に、第3当事者のコンテンツを処理して出力する第2当事者のプログラムを解釈するためにプロセッサにおいて実施される少なくとも1つのセキュアなバーチャルマシンが設けられる。バーチャルマシンシステムは、同じプログラムを同一に実行するために、製品にわたる実施変更を許すように基礎的なプロセッサハードウェアを抽象化する。更に、プログラムによる潜在的なセキュリティ漏洩を軽減すると共に、第2当事者のシークレットの機密性、及び第2当事者のプログラムにより管理される第3当事者のコンテンツを確保するために、プログラム可能なオペレーションの範囲、入力及び出力変数の形式、並びにプロセッサ内でのプログラムの実行がバーチャルマシン環境内で慎重に制限される。
【図面の簡単な説明】
【0005】
【図1A】一実施形態によりコンテンツを解読するキーを生成するためにプロセッサを使用してプログラムを実行する方法を示す図である。
【図1B】一実施形態により出力のコンテンツを処理するためにプロセッサにおいて実施されるセキュアなバーチャルマシンを示す図である。
【図2】一実施形態によりコンテンツを解読するキーを生成するためにプロセッサを使用してプログラムを生成し、セキュア化し、実行するシステムを示す図である。
【図3】一実施形態によりインタープリターを使用して受け取ったプログラム及びコンテンツを解釈する方法を示す図である。
【図4】一実施形態により受け取ったプログラム及びコンテンツを解釈するためにプロセッサ及びセキュアなバーチャルマシンを含むシステムを示す図である。
【図5】一実施形態によりセキュアなバーチャルマシンを使用してタイトルキーを抽出する方法を示す図である。
【図6】一実施形態によりセキュアなバーチャルマシンを使用してコンテンツストリームを解読する方法を示す図である。
【図7】一実施形態によりセキュアなバーチャルマシンを使用してコンテンツストリームをパッチし再暗号化する方法を示す図である。
【図8】一実施形態によりコンテンツを解読するキーを生成するためのプログラムを生成する方法を示す図である。
【図9】一実施形態によりコンテンツを解読するキーを生成するためのプログラムをセキュア化するシステムを示す図である。
【図10】一実施形態によりコンテンツを解読するキーを生成するためのプログラムを生成してセキュア化する方法を示す図である。
【図11】種々の先行する実施形態の種々のアーキテクチャー及び/又は機能を実施できる例示的システムを示す図である。
【発明を実施するための形態】
【0006】
[0017]図1Aは、一実施形態によりコンテンツを解読するキーを生成するためにプロセッサを使用してプログラムを実行する方法100を示す。図示されたように、コンテンツを解読するプログラムが生成される。オペレーション102を参照されたい。プログラムが生成されると、プログラムがセキュア化される。オペレーション104を参照されたい。一実施形態では、プログラムは、暗号化されることでセキュア化されてもよい。
【0007】
[0018]本説明の文脈において、プログラムとは、プロセッサを使用して実行できるプログラムを指す。一実施形態では、プログラムは、コンテンツを解読するキーを生成することのできるプログラムを含み、ここで、コンテンツとは、暗号化することのできるデータを指す。オプションとして、コンテンツは、専有情報を含んでもよい。
【0008】
[0019]この場合、コンテンツと、コンテンツを解読するキーを生成するためのプログラムとが、プロセッサに受け取られる。オペレーション106を参照されたい。更に、コンテンツを解読するためにプロセッサを使用してプログラムを実行することができる。オペレーション108を参照されたい。
【0009】
[0020]本説明の文脈において、プロセッサとは、表示用のデータを処理することのできるプロセッサを指す。例えば、種々の実施形態において、プロセッサは、グラフィックプロセッサ及びビデオプロセッサの少なくとも1つを含むことができる。一実施形態では、プロセッサは、出力のコンテンツを処理するためにプロセッサにおいて実施される少なくとも1つのセキュアなバーチャルマシンを含んでもよい。
【0010】
[0021]図1Bは、一実施形態により出力のコンテンツを処理するためにプロセッサ152において実施されるセキュアなバーチャルマシン150を示す。図示されたように、少なくとも1つのプロセッサ152が設けられる。更に、このプロセッサにおいて実施される少なくとも1つのセキュアなバーチャルマシン150が、出力のコンテンツを処理するために設けられる。
【0011】
[0022]オペレーションにおいて、プログラム及びコンテンツをプロセッサ152により入力として受け取ることができる。一実施形態では、バーチャルマシン150は、コンテンツを処理するプログラムを実行することができる。例えば、コンテンツは、バーチャルマシン150により処理される前に暗号化されてもよい。この場合、処理は、コンテンツの解読を含んでもよい。
【0012】
[0023]処理は、更に、コンテンツを再暗号化してもよい。オプションとして、再暗号化は、コンテンツがプロセッサ152から出力される前に行われてもよい。オプションとして、再暗号化は、コンテンツがプロセッサから出力された後に行われてもよい。
【0013】
[0024]一実施形態では、プロセッサ152において複数のセキュアなバーチャルマシン150を実施することができる。この場合に、バーチャルマシン152との間での情報の共有が制約されることがある。例えば、バーチャルマシン152により処理される情報が制約を受ける。一実施形態では、この情報は、キーを含んでもよい。
【0014】
[0025]ユーザの希望で、以上のフレームワークと共に実施してもしなくてもよい種々の任意のアーキテクチャー及び特徴に関して更に例示的な情報を以下に述べる。以下の情報は例示の目的で述べるもので、何ら限定するものと解釈されるべきでないことを強く注意されたい。以下のいずれかの特徴を、他に述べる特徴を除外して合体するか除外せずに合体するかは任意でよい。
【0015】
[0026]図2は、一実施形態によりコンテンツを解読するキーを生成するためにプロセッサを使用してプログラムを生成し、セキュア化し、実行するシステム200を示す。オプションとして、このシステム200は、図1A及び図1Bの状況及び詳細において実施されてもよい。しかしながら、当然、システム200は、いかなる望ましい環境において実施されてもよい。又、この説明の間に前記定義を適用できることにも注意されたい。
【0016】
[0027]オペレーションにおいて、媒体202からコンテンツを受け取ることができる。この場合、コンテンツは、暗号化されてもよい。例えば、コンテンツは、キーを使用して暗号化されてもよい。図示されたように、コンテンツは、認可されたプレーヤベンダー又は他の独立したソフトウェアベンダー(ISV)204により受け取られる。更に、プレーヤISV204は、コンテンツを処理するためにプロセッサ(例えば、グラフィックプロセッサ、等)250において実行するためのプログラム206を受け取ることができる。オプションとして、プログラム206は、アプリケーションを実行する結果としてメモリ228からプレーヤISV204によりフェッチされてもよい。
【0017】
[0028]プログラムをフェッチした後、プレーヤ204は、プログラム206をグラフィックプロセッサ250へ送り出すことができる。一実施形態では、プログラム206は、これがプロセッサ250へ送り出される前に、プレーヤISV204により暗号化されてもよい。
【0018】
[0029]例えば、プログラム206は、プレーヤISV204により生成され、次いで、暗号化されることでセキュア化される。一実施形態では、プログラム206は、プロセッサ250がコンテンツを受け取れるようにするアプリケーション(例えば、コンテンツプレーヤ、等)によって使用される。この場合に、プログラム206は、アプリケーションによりセキュア化することができる。従って、プログラム206は、コンテンツに基づき、アプリケーションによってメモリ228から検索されてもよい。
【0019】
[0030]一実施形態では、プログラム206は、アプリケーションにより検索される前に暗号化することができる。例えば、プログラム206は、アプリケーションにより検索される前に、パブリックキーを使用して暗号化することができる。この場合に、パブリックキー206は、プロセッサ250の製造者により準備されてもよい。
【0020】
[0031]別のオプションとして、プログラム206は、アプリケーションにより検索された後に暗号化されてもよい。この場合、プログラム206は、ランタイム中にアプリケーションにより検索された後に暗号化されてもよい。更に、プログラム206は、エフェメラルキーを使用して暗号化されてもよい。例えば、このエフェメラルキーは、プロセッサ250のみに記憶される情報を使用して生成されてもよい。一実施形態では、プログラム206は、アプリケーションとプロセッサ250との間で交換される少なくとも1つの証明書を使用して暗号化されてもよい。
【0021】
[0032]プロセッサ250により受け取られると、インタープリター208は、コンテンツからタイトルキー210を導出するのに使用される。この場合、インタープリター208は、タイトルキー210を導出するためにプロセッサ250により受け取られたプログラム206を実行できるセキュアなバーチャルマシン(VM)の一部分であるとみなされてもよい。従って、プログラム206は、バーチャルマシンがコンテンツを処理し、タイトルキー210を導出し、コンテンツをハンドリングし(例えば、コンテンツをオーディオ及びビデオストリーム、等に分割することにより)、そしてコンテンツを再暗号化するのを許す情報を含むことができる。
【0022】
[0033]一実施形態では、バーチャルマシンにより処理されるコンテンツは、処理の前に暗号化されてもよい。この場合に、処理は、コンテンツを解読することを含んでもよい。更に、処理は、コンテンツを再暗号化することを含んでもよい。例えば、再暗号化は、コンテンツがプロセッサ250から出力される前に行われてもよい。
【0023】
[0034]上述したように、プログラムは、アプリケーションから受け取られてもよい。この場合、プロセッサ250とアプリケーションとの間の通信チャンネルをセキュア化することができる。例えば、少なくとも1つの証明書を使用して、プロセッサ250とアプリケーションとの間の通信チャンネルをセキュア化することができる。
【0024】
[0035]一実施形態では、セキュアなバーチャルマシンは、コンテンツをオーディオ及びビデオストリームへ分割するのに使用できる逆多重化部212を含むことができる。更に、プログラム206は、バーチャルマシンに関連した再暗号化ビデオモジュール220及び再暗号化オーディオモジュール214が、コンテンツを、出力(例えば、表示、等)の前に、再暗号化するのを許す情報を含むことができる。ビデオ及びオーディオストリームの再暗号化は、任意であることに注意されたい。
【0025】
[0036]システム200を使用して、コンテンツと、コンテンツを解読する暗号キーを生成するのに使用されるプログラム206をプロセッサ250により受け取ることができ、このプログラム206は、コンテンツの解読に使用することができる。更に、プロセッサ250を使用してキーを解読することもできる。
【0026】
[0037]一実施形態では、キーは、コンテンツに関連した少なくとも1つのコンテンツキーと、コンテンツ及びプログラム206が受け取られるようにするアプリケーションに関連した少なくとも1つのアプリケーションキーとを含むことができる。次いで、プロセッサ250は、コンテンツキー及びアプリケーションキーを処理して、タイトルキー210を生成することができる。この場合、タイトルキー210は、コンテンツを解読するのに使用できる。従って、プレーヤISV204に関連した中央処理ユニット(CPU)へのキーの露呈を防止することができる。
【0027】
[0038]コンテンツが分割されると、ビデオコンテンツは、デコーディングのためにビデオデコードモジュール222へ送られ、フレームバッファ224にピクセルとして記憶され、次いで、ディスプレイ226へ出力される。オーディオコンテンツは、PCIEバスを経て解読モジュール216(例えば、プレーヤISV204に関連した)へ送られ、最終的に、出力のためにオーディオスタック218へ送られる。
【0028】
[0039]このように、グラフィック処理ユニット(GPU)と、このGPUにおいてセキュアな埋設バーチャルマシンを実行できるセキュアなマイクロコード(即ち、ファームウェア)と、ソフトウェアプレーヤベンダーが媒体に対する処理(例えば、AACS処理、等)をセキュアにオフロードするのを集合的に許すプレーヤISVのCPUにおいて実行されるグラフィックドライバソフトウェアとを含むシステムを実施することができる。(例えば、AACSに使用されるもののような)キーハンドリング、コンテンツストリーム解読及び構文解析、並びにコンテンツストリーム変更プロセスの処理ステップをGPUにおけるセキュアな埋設プロセッサへ移動し、そしてこれらのステップを、複数のコンテンツ形式に適用するように抽象化することにより、装置キー及びシーケンスキー、媒体、並びにプレーヤISVに関連したタイトルキーに対する保護を与えることができる。更に、プレミアムビデオコンテンツを、圧縮、非デコード及び非暗号化形態で与えることができる。
【0029】
[0040]加えて、プレーヤISVは、オーディオ/ビデオ(AV)コンテンツ(例えば、AACS保護のAVストリームデータ、等)の処理に関連したCPU利用及び電力消費の大半を構成し得る、ビデオ基本的ストリームの解読及び再暗号化タスクを軽減することができる。更に、システム200を使用して、複数のコンテンツ形式、暗号化、及びキー認可モデルを実施しサポートすることができる。
【0030】
[0041]従って、CPUにおける及びバスを横切る非保護のコンテンツ及びキーの流れを回避することができる。例えば、セキュアなプロセスがGPUにおいて実行されるコンテクストは、ハードウェアによりセキュア化することができ、そしてプレーヤISVにより検証できるチッププライベート/パブリックキーを使用して、バーチャルマシンに使用されるメモリをセキュア化し、プログラムに署名することができる。
【0031】
[0042]図3は、一実施形態によりインタープリターを使用して、受け取ったプログラム及びコンテンツを解釈する方法300を示す。オプションとして、この方法300は、図1〜図2の機能及びアーキテクチャーに関して実施することができる。例えば、一実施形態では、方法300は、図2のインタープリター208の細部に関して実施される。しかしながら、当然、方法300は、いかなる望ましい環境において実施されてもよい。この場合も、この説明の間に前記定義が適用される。
【0032】
[0043]図示されたように、バイトコードイメージが受け取られる。オペレーション302を参照されたい。一実施形態では、バイトコードイメージは、プレーヤISVからGPUにより受け取ることができる。この場合、バイトコードイメージは、プレーヤISVにより送られたプログラムに関連したコードを含むことができる。
【0033】
[0044]バイトコードイメージが受け取られると、バイトコードイメージの署名がチェックされる。オペレーション304を参照されたい。この場合、チェックは、信頼性のあるソースに関連した署名を検証することを含む。次いで、バイトコードイメージを解読することができる。オペレーション306を参照されたい。バイトコードイメージが解読されると、バイトコードを解釈することができる。オペレーション308を参照されたい。
【0034】
[0045]図4は、一実施形態により、受け取ったプログラム及びコンテンツを解釈するためにプロセッサ402及びセキュアなバーチャルマシン404を含むシステム400を示す。オプションとして、システム400は、図1から3の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、システム400は、いかなる望ましい環境において実施されてもよい。更に、この説明の間に前記定義が適用される。
【0035】
[0046]図示されたように、システム400は、1つ以上のセキュアな埋設プロセッサ406と、この埋設プロセッサ406によりホストされるセキュアなバーチャルマシン404とを含むGPU402を備えている。セキュアなバーチャルマシン404は、署名されたセキュアなマイクロコードのインタープリターを備え、これは、暗号プリミティブと、ビデオストリームハンドリング及びパッチングにおけるプリミティブとを遂行できるバイトコードインストラクションをサポートする。このインタープリターを使用して、バーチャルマシン404は、プレーヤISVにより与えられるプログラムを解釈するためのインタープリターとして働くことができる。
【0036】
[0047]セキュアなバーチャルマシン404は、更に、ハードウェア暗号エンジン、例えば、AES又はSHA−1プリミティブ、等を含むことができる。加えて、セキュアなバーチャルマシン404は、機密メモリのセキュアなサンドボックスを含むこともでき、これは、エンジンに対してはアクセス不能であるが、バーチャルマシン404の外部から(例えば、CPU又はGPUレンダラー、等から)アクセスすることができる。
【0037】
[0048]更に、バーチャルマシン404において実行するためのセキュアなバイトコードが設けられる。この場合、セキュアなバイトコードは、ISVによりGPU402へ与えられるプログラムに関連したバイトコードである。例えば、バイトコードは、認可されたコンテンツメカニズムのコアワークを遂行するために、認可されたプレーヤISVにより生成することができる。従って、バイトコードを使用して、バーチャルマシン404内でコンテンツ及びキーの処理を遂行することができ、コンテンツ及びキーは、GPU402により受け取られる。
【0038】
[0049]又、セキュアなバーチャルマシン404は、チッププライベート及びパブリックキーと、承認された当局により署名された証明書とにアクセスすることができ、これは、署名されたISVコードをセキュアなバーチャルマシン404内で実行するのを許す。更に、これらのキーは、プレーヤISVが、ISVシークレットを安全に暗号化するのを許すと共に、それらシークレットを、信頼性のあるバーチャルマシン404内で使用された状態で一度しか見られないことを保証する。これらのキーは、更に、プレーヤISVが、有能なGPUを、コンテンツデコードの実行をなすための信頼性のあるエンドポイントとして確認するのを許す。
【0039】
[0050]又、セキュアなバーチャルマシン404は、そのセキュアなバーチャルマシン404のキー部分を暗号化する能力を許し、実行の後にそれをメモリへページアウトして、異なるコンテンツストリームをサポートするセキュアなバーチャルマシン404の別のコンテンツに置き換えることができる。更に、セキュアなバーチャルマシン404のコンテンツを消去して、シークレットが後に残らないようにすることもできる。例えば、バーチャルマシン404により処理されている情報は、処理後に削除されることもある。
【0040】
[0051]セキュアなバーチャルマシン404は、更に、CPUにおいて実行されるグラフィックドライバ(例えば、ソフトウェア)であって、ソフトウェアコンテンツプレーヤベンダーが、バーチャルマシン404へのセキュアなバイトコードのロード動作をネゴシエーションするのを集合的に許すようなグラフィックドライバを含むことができる。更に、セキュアなバーチャルマシン404は、ISV認可保持者のポーティングタイトル解読をサポートし、プログラム(例えば、アッセンブリ又はC、等で書かれた)をコンパイルし、そしてインタープリターによりサポートされるバイトコードを放出するのに必要なコンパイラー及びツールを含むことができる。
【0041】
[0052]図5は、一実施形態によりセキュアなバーチャルマシンを使用してタイトルキーを抽出する方法500を示す。オプションとして、この方法500は、図1から図4の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、方法500は、いかなる望ましい環境において実施されてもよい。この場合も、この説明の間に前記定義が適用される。
【0042】
[0053]オペレーションにおいて、プレーヤISVコード又はプログラムは、機密キーグループを解読するプロセスを記述することができる。このコードは、コンテンツストリームを解読するタイトルキーを形成するために他のコンテンツキー及びポリシーと共に使用される。この場合、ISVプログラムは、解読を許すために識別されたランタイム変数(例えば、即時間接的変数、ローカル変数、ストリーム及びバッファポインタ、等)を使用するインタープリターのためのコマンドを含むことができる。このプログラムは、GPU及びISVが信頼できるものとして確認するキーを使用して署名される。
【0043】
[0054]タイトルキーが抽出されると、セキュアなバーチャルマシンを使用してコンテンツストリームを解読することができる。図6は、一実施形態によりセキュアなバーチャルマシンを使用してコンテンツストリームを解読する方法600を示す。オプションとして、この方法600は、図1から図5の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、方法600は、いかなる望ましい環境において実施されてもよい。この説明の間には、前記定義が適用される。
【0044】
[0055]ISVコードは、ディスク、ネットワーク又は他の媒体からコピーされるストリームのコンテンツを解読するためにタイトルキー抽出中に記憶されるタイトルキーを使用してプロセスを記述することができる。その出力は、その後のプロセスのためにバーチャルマシン内に留めることができる。
【0045】
[0056]コンテンツストリームが解読されると、セキュアなバーチャルマシンを使用してコンテンツストリームをパッチ及び再暗号化することができる。図7は、一実施形態によりセキュアなバーチャルマシンを使用してコンテンツストリームをパッチし再暗号化する方法700を示す。オプションとして、この方法700は、図1から図6の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、方法700は、いかなる望ましい環境において実施されてもよい。この場合も、この説明の間に前記定義が適用される。
【0046】
[0057]オペレーションにおいて、ISVプログラムは、変換記述子に基づきコンテンツストリームをパッチするのに必要なコマンドをカプセル化することができる。コンテンツストリームは、オーディオを付加的な処理のためにプレーヤISVへ又はオフチップオーディオデコーダへ返送するために分割され再暗号化される。
【0047】
[0058]オプションとして、コンテンツストリームは、その後のオンチップビデオデコーダにおいて消費されるべくビデオポートへと分割されてもよい。この場合に、コンテンツは、非暗号化形態のままとされ、コンテンツは、ビデオデコーダ以外のものにはアクセス不能である特別扱いのメモリに機密裡にセーブすることができる。
【0048】
[0059]一実施形態では、プレーヤISVにより与えられるプログラムは、インタープリターが1つの個別のオペレーションとして完了するための個別のコマンドを含むことができる。例えば、種々の実施形態において、これらのコマンドは、表1に示す共通オペレーションのための暗号プリミティブを含むことができる。
【0049】
[0060]
【表1】
[0061]一実施形態では、これらのプリミティブは、GPUの埋設コントローラにおいて実行されるように最適化された予めコード化されたルーチンを含むことができる。別の実施形態では、これらのプリミティブは、性能に敏感なオペレーションを直接的に加速するハードウェアエンジンにより実行を抽象化するインターフェイスラッパーでよい。
【0050】
[0062]別のオプションでは、これらプリミティブは、セキュアなバーチャルマシンにおけるハウスキーピングオペレーションを含むことができる。表2は、一実施形態による幾つかのハウスキーピングオペレーションを示す。
【0051】
[0063]
【表2】
[0064]一実施形態では、バーチャルマシンによりディフィー・ヘルマンのキー交換を行うことができる。解釈されたコードで書かれたステップごとのディフィー・ヘルマンのキー交換が、一実施形態により、表3に示されている。
【0052】
[0065]
【表3】
[0066]別の実施形態では、プログラムは、中間アキュムレータを使用してバイトごとに繰り返しオペレーションを遂行して全体的なプロセスサブルーチンを形成するための1組の複雑なオペレーションを表現することができる。このようなループが生じる場合には、サブルーチンは、実行時に再解釈を要求しないプロセッサマイクロコードで作られた固有のオペレーションを使用して、より効率的な形態へと最適に再コンパイルすることができる。次いで、宣言がなされると、サブルーチンは、マクロレベルにおいて個別のステップとして遂行することができる。
【0053】
[0067]バーチャルマシンのサブルーチンとして書かれたRC4暗号化アルゴリズムの一例が、一実施形態により、表4に示されている。
【0054】
[0068]
【表4】
[0069]セキュアなバーチャルマシンをバーチャルプロセスと共に使用することで、ビデオデコーダハードウェアが既に(例えば、GPU、等に)存在する場合にキーの処理及びストリームの構文解析をハンドリングするためのセキュアな実行環境を提供し、これにより、非保護のコンテンツ及びキーがCPU内に及びバスを横切って流れるのを回避することに注意されたい。更に、セキュアなバーチャルマシンを使用することで、バーチャルマシンへのコンテンツを解読するキーを生成するプログラムを送出することによりGPUが認可された装置となることを必要とせずに、第3当事者の認可保持者がGPUの認可されたコンテンツに対するセキュアな準拠デコーダを生成するという能力を提供する。
【0055】
[0070]図8は、一実施形態によりコンテンツを解読するキーを生成するためのプログラムを生成する方法800を示す。オプションとして、この方法800は、図1から図7の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、方法800は、いかなる望ましい環境において実施されてもよい。この説明の間に前記定義が適用される。
【0056】
[0071]図示されたように、解釈言語仕様が与えられる。オペレーション802を参照されたい。この場合、プレーヤISVには、プロセッサの製造者により解釈言語仕様を与えることができる。例えば、この言語仕様は、インタープリターを含むセキュアなバーチャルマシンのための仕様を含む。一実施形態では、この仕様は、コンテンツを解読するキーを生成するプログラムの生成に使用されるべきプログラミング言語を含むことができる。
【0057】
[0072]次いで、プログラムが書き込まれる。オペレーション804を参照されたい。例えば、プログラムは、解釈言語仕様に基づき、プレーヤISVによりソースコードで書き込まれてもよい。次いで、プログラムは、処理のためにコンパイラー及び/又はインタープリターのようなツールを通して実行される。オペレーション806を参照されたい。
【0058】
[0073]処理の結果として、バイトコードが生成される。オペレーション808を参照されたい。このバイトコードは、ランタイム中にバーチャルマシンにより処理するために使用されるべきコードを含んでもよい。
【0059】
[0074]次いで、バイトコードは、暗号署名プロセスに入力される。オペレーション810を参照されたい。一実施形態では、暗号署名プロセスは、プロセッサの製造者によって与えられるプロセスでよい。暗号署名プロセスを実施した後、埋設可能な暗号イメージが与えられる。この暗号イメージは、次いで、ISVプレーヤのプログラムへ埋設されて、プレーヤがランタイムオペレーション中に処理のためにGPUのバーチャルマシンへプログラムを与えることができるようにする。
【0060】
[0075]図9は、一実施形態によりコンテンツを解読するキーを生成するためのプログラムをセキュア化するシステム900を示す。オプションとして、このシステム900は、図1から図7の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、システム900は、いかなる望ましい環境において実施されてもよい。更に、この説明の間に前記定義が適用される。
【0061】
[0076]オペレーションにおいて、このシステム900は、図10の方法100として示された、コンテンツを暗号化するキーを生成するためのプログラムをセキュア化する方法を実施するのに使用できる。図10に示すように、アプリケーションは、署名のための一対のキーPA及びpAを生成する。更に、GPUは、署名のための一対のキーPG及びpG及び暗号化のためのキーPSを生成する。
【0062】
[0077]次いで、GPUは、GPUの署名シークレットキーを使用してアプリケーションの署名パブリックキーに署名して、アプリケーションへ送られる証明書(例えば、CERTG、等)を生じさせることができる。次いで、アプリケーションは、バーチャルマシンプログラムを暗号化することができる。そのプログラムに署名し、コンパイルすることができる。
【0063】
[0078]ランタイムに、アプリケーションは、エフェメラルキーシークレット(例えば、KSK、等)を確立することができる。GPUも、エフェメラルキーシークレット(例えば、K’SK、等)を導出することができる。次いで、暗号化されたプログラム及びキーがアプリケーションからGPUへ通過される。次いで、インタープリターは、アプリケーションの証明書を解読して検証し、そしてバーチャルマシンプログラムが実行される。
【0064】
[0079]この技術を使用して、GPUプロバイダーにより署名するために一対のプライベートキー及びパブリックキーを生成することができる。プライベートキーは、内部署名サーバーに入れられる。パブリックキーは、API仕様において発行されて、セキュアなインタープリターマイクロコードに埋設される。次いで、ハードウェアシークレット、又はその導出値をチップシークレットキーとして使用し、そしてそれに対応するパブリックキーを暗号化のために導出することができる。
【0065】
[0080]アプリケーションプロバイダーは、署名のためのプライベートキー及びパブリックキーのそれ自身の対をプライベートに生成することができる。アプリケーションプロバイダーは、e−メール又はftpを経てGPUプロバイダーへパブリックキーを送出することができる。GPUプロバイダーは、それらの署名シークレットキーを使用して、アプリケーションプロバイダーの署名パブリックキーに署名することができる。それにより得られる署名は、GPUプロバイダーによって生成されるアプリケーションプロバイダーの署名パブリックキーのための証明書である。この証明書は、アプリケーションプロバイダーへ返送することができる。
【0066】
[0081]アプリケーションプロバイダーは、幾つかのインタープリタープログラム及び高機密性の認可シークレット(例えば、プレーヤ/装置キーのような)をプライベートに書き込み、そしてそれをバイナリーへとコンパイルすることができる。アプリケーションプロバイダーは、GPUプロバイダーのチップパブリックキーのもとでバイナリープログラムをプライベートに暗号化することができる。アプリケーションプロバイダーは、アプリケーションプロバイダーの署名シークレットキーのもとで、暗号化されたバイナリープログラムにプライベートに署名することができる。
【0067】
[0082]暗号化されたプログラムは、署名及びアプリケーションプロバイダーの証明書と共に、アプリケーションプロバイダーのプレーヤ実行部にスタティックに埋設することができる。ランタイムにおいて、アプリケーションプロバイダーは、GPU内のオンチップランダムナンバージェネレータ(RNG)を使用してエフェメラルセッションキーシークレットを確立し、そしてこれを使用して、既にスタティックに暗号化されたプログラムをランタイム暗号化ペイロードへと付加的に再暗号化することができる。
【0068】
[0083]ランタイムに、GPUのインタープリターは、二重暗号化のペイロード、署名、及び証明書をロードすることができる。インタープリターは、GPUプロバイダーの署名パブリックキーを使用して、アプリケーションプロバイダーの証明書を検証することができる。又、インタープリターは、アプリケーションプロバイダーの署名パブリックキーを使用して、暗号化されたプログラムを検証することもできる。インタープリターは、ネゴシエーション中にGPU内部に生成されたエフェメラルセッションキーシークレットを使用してランタイム暗号化ペイロードを解読し、それにより、スタティックに暗号化されたプログラム(まだ暗号化された形態にある)を抽出することができる。
【0069】
[0084]次いで、インタープリターは、ハードウェアシークレットからGPUプロバイダーのチップシークレットキーを導出し、そして解釈されたプログラムのシークレット及びコンテンツ/プレーヤのシークレットを含むスタティックに暗号化されたプログラムを解読することができる。次いで、インタープリターは、プログラムを安全に実行し、GPU内部のセキュアなバーチャルマシン内の高気密性コンテンツシークレットをデリファレンスすることができる。
【0070】
[0085]エフェメラルセッションキーを生成するのに使用されるシークレットは、ランダムナンバージェネレータから導出されて、GPU内にセキュアに保持されるので、GPUプロバイダーのチップシークレット及び他の署名キーの知識をもつ個人でも、ペイロードを解読することはあり得ない。ISVがGPUの署名を確認し、インタープリターがISVのコードを実行するとすれば、ISVがインタープリター及びセキュアなバーチャルマシンの環境を信頼すると仮定することができ、ISVは、それが機密情報を漏洩しないと信じるようになる。加えて、バーチャルマシンで実行されるべきコードがISVにより書き込まれ、実行の前に署名/検証されるとすれば、ISVは、コンテンツ又は機密シークレットがGPUプロバイダーにも漏れないことを保証する環境を生成することができる。
【0071】
[0086]ペイロード暗号化プロセスに使用されるシークレットを露呈するリスクを更に軽減するために、第2当事者又は第3当事者、例えば、ISV認可保持者、製品認可保持者又はシステムベンダーにより付加的な認可保持者シークレットをGPUへ直接融合することができる。シークレットがGPUプロバイダーでも未知であることを更に保証するために、プログラミングプロセスは、GPUがGPUプロバイダーの製造及び在庫プロセスを退出した後にいつでもシークレットをセットできるようにする。GPUベンダーは、例えば、システムベンダーのファシリティにおいてアッセンブル中にGPUがボードに載せられた後に、GPUへのシークレットの独立したプログラミングを許すためのアクセスを与える。例えば、一実施形態では、シークレットが一回限りのチップヒューズに収容され、これらヒューズは、認可保持者シークレットの値ビットに一致するビットパターンでGPUパッケージの特定ピンに高い電圧を印加することにより切れる。又、一実施形態では、GPUから読み取ることができず、GPUの暗号及び他の内部暗号プロセスによりキーとして又は他のキーとの組合せでしか使用できない書き込み専用レジスタに前記ヒューズを適用することによりシークレットが機密裡に保持される。又、一実施形態では、設計上、平易テキスト入力と暗号テキスト出力が外部から見える場合でもキー値の回復を許さないAES暗号のキー値として認可保持者シークレットが使用される。
【0072】
[0087]加えて、ヒューズシークレットのプログラミングは、シークレットを危うくするために既知のものへ再プログラムするその後の変更や攻撃から保護するために、一回限りの設定に制限することができる。一実施形態では、まさにGPUにより使用されるべくシークレットをプログラムできるヒューズは、認可保持者シークレットをプログラミングし終えると、それ自身で切れ、又、いったん切れると、前記ヒューズは、認可保持者シークレットヒューズのその後のプログラミングを許さない。
【0073】
[0088]認可保持者シークレットは、他の(読み取り不能の)GPUシークレットと間接的に組み合わせて、ペイロードの生成及び抽出に使用される暗号及び解読キーを形成することができる。認可保持者シークレットを独立してプログラムすることができ、GPUプロバイダーがそのようなシークレットの知識をもたず、且つシークレットがランタイムにセキュアなバーチャルマシン内のGPUハードウェアにより間接的に結合されるだけであるとすれば、第2当事者の機密プログラム、アルゴリズム及びキーは、機密チップシークレットの詳細な知識をもつ個人に対して更に強化される。
【0074】
[0089]従って、一実施形態によれば、少なくとも1つのプロセッサと、第2当事者のプログラムを処理するためにプロセッサにおいて実施される第1当事者の少なくとも1つのセキュアなバーチャルマシンと、第3当事者のコンテンツを出力のために処理する少なくとも1つのプログラムとを備えた装置が提供される。この場合、第1当事者は、セキュアなバーチャルマシン及び又はプロセッサを備えたエンティティ又は個人を含み、第2当事者は、ソフトウェアを認可するエンティティ又は個人(例えば、独立したソフトウェアベンダー認可保持者、等)を含み、そして第3当事者は、コンテンツを認可するエンティティ又は個人を含むことができる。もちろん、種々の実施形態では、第1、第2及び第3の当事者は、同じ当事者でも異なる当事者でもよく、いずれの個人又はエンティティでもよい。
【0075】
[0090]この装置を使用すると、残留機密プログラム情報、処理されている情報、及び少なくとも1つのバーチャルマシンの各々により生成されるエフェメラル変数は、処理後に削除することができる。一実施形態では、複数のセキュアなバーチャルマシンを個々のコンテクスト内でプロセッサにおいて実施することができる。この場合、複数のセキュアなバーチャルマシン間での情報の共有は、制限されることがある。
【0076】
[0091]例えば、エフェメラル情報の形式及び複数のセキュアなバーチャルマシンにより処理されている情報の記憶が制限されることがある。又、情報は、保護されたコンテンツの解読に使用されるキー及び中間暗号値を含んでもよい。
【0077】
[0092]別の実施形態では、クライアント供給プログラム(例えば、第2当事者のプログラム、等)を実行して、保護されたコンテンツを処理するために、少なくとも1つのバーチャルマシンを設けることができる。この場合に、クライアント供給プログラムは、第3当事者のコンテンツを処理する際にそのクライアント供給プログラムによって使用されるアルゴリズム詳細、シークレット、及びキーの機密性を確保するために、第2当事者により暗号化することができる。クライアント供給プログラムは、更に、そのクライアント供給プログラムの完全性を検証できるように第2当事者により署名できると共に、そのクライアント供給プログラムのソースの真正性を検証できる証明書を含むことができる。
【0078】
[0093]一実施形態では、第3当事者のコンテンツは、少なくとも1つのバーチャルマシンにより処理される前に第3当事者により別々に暗号化されてもよい。この場合に、クライアント供給プログラム、機密のアルゴリズム、及びシークレットは、少なくとも1つのバーチャルマシン内での実行を許す前に、含まれた署名及び証明書を検証することにより解読され、認証されてもよい。
【0079】
[0094]別のオプションとして、クライアント供給プログラムを処理することは、第3当事者のコンテンツを解読することを含んでもよい。この処理は、更に、第3当事者のコンテンツ又は第3当事者のコンテンツ内のストリームの1つ以上の部分のうちの少なくとも1つを再暗号化することを含んでもよい。あるケースでは、再暗号化は、第3当事者のコンテンツが少なくとも1つのバーチャルマシンから出る前に行われる。別のケースでは、再暗号化は、第3当事者のコンテンツがプロセッサから出力された後に行われてもよい。
【0080】
[0095]一実施形態では、クライアント供給プログラムは、アプリケーションから受け取られ、そしてクライアント供給プログラムは、プロセッサとアプリケーションとの間にセキュアな通信チャンネルを確立することができる。この場合、プロセッサとアプリケーションとの間の通信チャンネルは、プロセッサにおいて導出される暗号値及び少なくとも1つの証明書を使用してセキュア化することができる。
【0081】
[0096]別の実施形態では、少なくとも1つのバーチャルマシンは、アプリケーションにより与えられる保護コンテンツ処理プログラムのインタープリターとして働くことができる。更に、プロセッサは、少なくとも1つのセキュリティプロセッサを含み、又、グラフィックプロセッサ、ビデオプロセッサ、又はオーディオプロセッサの少なくとも1つに、処理されたコンテンツを与えるように構成できる。
【0082】
[0097]更に別の実施形態では、プロセッサは、パッケージから解かれたコンテンツキー及びプログラム実行中に導出される中間暗号値のためのセキュアな機密記憶部を含むことができる。いずれにせよ、プロセッサの少なくとも1つのバーチャルマシン内で第2当事者のプログラムにより第3当事者のコンテンツを処理するのに、プロセッサが、認可されたシークレットを含むことも、以前に実施された認可アルゴリズムを有することも要求されない。少なくとも1つのバーチャルマシンの設計、及び少なくとも1つのバーチャルマシン内の第2当事者のプログラムによる第3当事者のコンテンツの処理は、認可応諾及び頑健性ルールに関して第2当事者により再検討され、これにより、第3当事者のコンテンツに対する適合性を決定できることに注意されたい。
【0083】
[0098]加えて、この装置を使用することにより、第3当事者のコンテンツと、この第3当事者のコンテンツを解読する機密キーを生成するのに使用される第2当事者のプログラムが(例えば、第1当事者、等により製造された)プロセッサに受け取られ、そして第3当事者のコンテンツを解読するためにそのプロセッサを使用して第2当事者のプログラムを実行することができる。この場合、第3当事者のコンテンツを解読するには、第2当事者に与えられる機密アルゴリズム及びキー情報を使用することが要求される。オプションとして、第3当事者のコンテンツを解読するのに使用される機密キー及びアルゴリズムは、第2当事者により再暗号化されてもよい。又、機密キーは、プロセッサを使用して解読されてもよい。
【0084】
[0099]一実施形態では、第2当事者のプログラムから生成される機密ランタイム値、中間暗号値、及び機密キーは、プロセッサのオペレーションで間接的にのみデリファレンスされるように構成され且つ読み取り不能に構成された機密の書き込み専用プロセッサレジスタ及び/又はインデックス付きバッファに記憶することができる。この場合に、書き込み専用プロセッサレジスタ及びインデックス付きバッファは、第2当事者のプログラムが終了した後に消去することができ、これにより、その後のバーチャルマシンセッションが残留シークレットへアクセスしないように保証する。
【0085】
[00100]オプションとして、機密キーは、第3当事者のコンテンツに関連した少なくとも1つのコンテンツキーと、第3当事者のコンテンツ及び第2当事者のプログラムをプロセッサで受け取るときに経由する第2当事者のアプリケーションに関連した少なくとも1つのアプリケーションキーとを含むことができる。一実施形態では、第2当事者のアプリケーションは、コンテンツプレーヤを含むことができる。
【0086】
[00101]更に、プロセッサは、第3当事者の少なくとも1つのコンテンツキー及び第2当事者の少なくとも1つのアプリケーションキーを処理して、少なくとも1つのタイトルキーを生成することができる。この場合に、タイトルキーは、第3当事者のコンテンツを解読するのに使用することができる。
【0087】
[00102]一実施形態では、第2当事者のプログラムは、第3当事者のコンテンツ及び第2当事者のプログラムを受け取るときに経由する第2当事者のアプリケーションによって使用することができる。この場合、第2当事者のプログラムは、第3当事者のコンテンツを解読するのに適用できると共に、第3当事者のコンテンツに基づいて第2当事者のアプリケーションにより検索することができる。
【0088】
[00103]ある場合には、第2当事者のプログラム及びコンテンツキーは、第2当事者のアプリケーションにより検索される前に暗号化されることがある。これらの場合に、第2当事者のプログラム及びコンテンツキーは、第2当事者のアプリケーションにより検索される前に、パブリックキーを使用して暗号化することができる。オプションとして、第2当事者のプログラム及びコンテンツキーを暗号化する1つ以上のキーがプロセッサの製造者(例えば、第1当事者、等)によって準備されてもよい。別のオプションとして、第2当事者のプログラムは、第2当事者のアプリケーションに関連した配布バイナリー内のパッケージに合成される前に暗号化されてもよい。
【0089】
[00104]一実施形態では、第2当事者のアプリケーションは、更に、プロセッサへ通される前に、第2当事者のプログラム及び機密キーを含むパッケージを再暗号化することができる。一実施形態では、機密アルゴリズム及び機密キーを中央処理ユニットに露呈することは、プロセッサ内部のバーチャルマシン内で実行されるまで解読されない暗号プログラムパッケージ内に機密アルゴリズム及び機密キーを含ませることにより防止することができる。この場合、機密アルゴリズム及び機密キーシークレットの潜在的な露呈は、第2当事者のプログラムが解読されるプロセッサにおいて、第2当事者のアプリケーションとの間でのパブリックキー交換で生成されるエフェメラル値を使用してパッケージを暗号化することにより防止することができる。
【0090】
[00105]更に、機密アルゴリズム及び機密キーの露呈は、第2当事者のプログラムの暗号化によりプロセッサベンダーに露呈されずに使用され且つプロセッサに入れられる第2当事者認可シークレット又は第3当事者認可保持者シークレットを使用することで防止することができる。この場合、第2当事者認可シークレット及び第3当事者認可保持者シークレットのプログラミングは、一回限りのプログラミングメカニズム(例えば、コンピュータコード、等)の使用によりプロセッサへいったんプログラムされると、変更から保護することができる。
【0091】
[00106]更に別の実施形態では、この装置を使用することにより、第3当事者のコンテンツを暗号化し処理するためのパッケージを第2当事者により生成することができ、このパッケージは、プロセッサを使用して実行できるプログラムを含む。加えて、そのプログラムは、それに関連したシークレットの機密性を保証するために暗号化を使用してセキュア化することができる。更に、そのプログラムは、プログラムのソースの真正性を保証するために署名することができる。更に、プログラムのソースの証明書、及びプログラムをセキュア化したエンティティを検証することもできる。
【0092】
[00107]プロセッサは、グラフィックプロセッサ、ビデオプロセッサ、及び/又はオーディオプロセッサ、等を含むことができる。更に、プロセッサは、第2当事者のアプリケーションで準備されたパッケージ、プログラム、機密アルゴリズム、コンテンツキー及び専有シークレットをセキュアに解読できるセキュアなプロセッサコンテクストを含むことができる。
【0093】
[00108]ある場合には、第3当事者コンテクストは、傍受及び複写から保護されねばならないように第3当事者にとって価値のあるものである。種々の実施形態では、パッケージは、第3当事者のコンテンツを解読し処理するのに必要なプログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットを含むことができる。更に、オプションとして、パッケージは、暗号化によりセキュア化することができる。
【0094】
[00109]一実施形態では、プログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットは、プロセッサが第3当事者のコンテンツを受け取るところの第2当事者のコンテンツ認可保持者プレーヤアプリケーションにより準備することができる。この場合に、プログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットを含むパッケージを、第2当事者のアプリケーションプロバイダーによりセキュア化し、アプリケーションに埋め込むことができる。
【0095】
[00110]一実施形態では、アプリケーションは、ユーザ選択コンテンツを処理して出力するために、少なくとも1つのプレーヤ及びパッケージ、又は少なくとも1つの他のパッケージを含むことができる。更に、第3当事者のコンテンツを解読し処理するのに使用されるパッケージは、第3当事者のコンテンツの形式及びフォーマットに基づいて、アプリケーション内から検索することができる。加えて、パッケージ、プログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットは、アプリケーションにより検索される前に、暗号化することができる。
【0096】
[00111]この場合に、パッケージ、プログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットは、アプリケーションに埋め込まれる前に、1つ以上のパブリック及びプライベートキーを使用して、暗号化し署名することができる。第2当事者のアプリケーションベンダーとプロセッサのベンダーとの間でパブリックキー及び証明書を交換することができる。オプションとして、プログラムは、プロセッサに埋め込まれた認可保持者シークレットを使用して暗号化することができる。
【0097】
[00112]一実施形態では、パッケージは、ランタイムに、アプリケーションにより抽出された後に、暗号化することができる。この場合、プログラムは、擬似ランダムナンバージェネレータと、プロセッサのみに記憶されたシークレットとを使用して生成されるエフェメラルキーを使用して、暗号化することができる。加えて、プログラムは、擬似ランダムナンバージェネレータと、アプリケーションのみに記憶された情報とを使用して生成されるエフェメラルキーを使用して、暗号化することもできる。
【0098】
[00113]別のオプションとして、プログラムは、アプリケーションとプロセッサベンダーとの間で交換される少なくとも1つの証明書の少なくとも1つのキーを使用して暗号化することもできる。一実施形態では、プログラムは、アプリケーションとプロセッサとの間で交換される少なくとも1つの証明書の少なくとも1つのキーを使用して署名することができる。この場合、プロセッサベンダーにとって未知のプロセッサに認可保持者シークレットを埋め込むことができ、認可保持者シークレットは、プロセッサベンダーによって推定し及び/又はプロセッサから読み戻すことができない。ある場合には、認可保持者シークレットは、一度しか書き込むことができず、又、攻撃者がシークレットを導出したり又はプロセッサに記憶されたシークレットを変更することでそれを危うくしたりできないよう保証するために、プログラミングの後に変更やその他修正ができないようにされる。
【0099】
[00114]図11は、種々の先行する実施形態の種々のアーキテクチャー及び/又は機能を実施できる例示的システム1100を示す。図示されたように、通信バス1102に接続された少なくとも1つのホストプロセッサ1101を含むシステム1100が提供される。このシステム1100は、メインメモリ1104も備えている。ランダムアクセスメモリ(RAM)の形態をとるメインメモリ1104には、制御ロジック(ソフトウェア)及びデータが記憶される。
【0100】
[00115]また、システム1100は、グラフィックプロセッサ1106と、ディスプレイ1108、即ちコンピュータモニタも備えている。一実施形態では、グラフィックプロセッサ1106は、複数のシェーダーモジュール、ラスタ化モジュール、等を含むことができる。以上のモジュールの各々は、単一の半導体プラットホームに位置させて、グラフィック処理ユニット(GPU)を形成することもできる。
【0101】
[00116]この説明では、単一の半導体プラットホームは、単独の一体的半導体ベースの集積回路又はチップと称される。又、単一の半導体プラットホームという語は、オンチップオペレーションを模擬すると共に、従来の中央処理ユニット(CPU)及びバス実施を利用するものに勝る実質的な改善をなす増加接続性のマルチチップモジュールとも称されることに注意されたい。もちろん、種々のモジュールは、ユーザの希望で、半導体プラットホームに別々に位置させてもよいし、又は半導体プラットホームの種々の組合せに位置させてもよい。
【0102】
[00117]また、システム1100は、二次記憶装置1110も備えることができる。この二次記憶装置1110は、例えば、ハードディスクドライブ及び/又は取り外し可能な記憶ドライブを含み、これは、フロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ、等を表す。取り外し可能な記憶ドライブは、良く知られた仕方で取り外し可能な記憶ユニットからの読み取り及びそこへの書き込みを行う。
【0103】
[00118]コンピュータプログラム又はコンピュータ制御ロジックアルゴリズムは、メインメモリ1104及び/又は二次記憶装置1110に記憶することができる。このようなコンピュータプログラムは、実行時に、システム1100が種々の機能を遂行できるようにする。メモリ1104、記憶装置1110、及び/又は他の記憶装置は、コンピュータ読み取り可能な媒体の考えられる例である。
【0104】
[00119]一実施形態では、種々の先行する図面のアーキテクチャー及び/又は機能は、ホストプロセッサ1101、グラフィックプロセッサ1106、これらホストプロセッサ1101及びグラフィックプロセッサ1106の両方の能力の少なくとも一部分を遂行できる集積回路(図示せず)、チップセット(即ち、関連機能、等を遂行するユニットとして作用し且つ販売するように設計された集積回路のグループ)、及び/又はそのことに対する他の集積回路に関して実施することができる。
【0105】
[00120]更に、種々の先行する図面のアーキテクチャー及び/又は機能は、汎用コンピュータシステム、回路ボードシステム、娯楽目的専用のゲームコンソールシステム、アプリケーション指向のシステム、及び/又は他の望ましいシステムに関して実施することができる。例えば、システム1100は、デスクトップコンピュータ、ラップトップコンピュータ、及び/又は他の形式のロジックの形態をとることができる。更に、システム1100は、これに限定されないが、パーソナルデジタルアシスタント(PDA)装置、移動電話装置、テレビジョン、等を含む種々の他の装置の形態をとることができる。
【0106】
[00121]更に、図示されていないが、システム1100は、通信目的で、ネットワーク(例えば、テレコミュニケーションネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスネットワーク、インターネットのようなワイドエリアネットワーク(WAN)、ピア・ツー・ピアネットワーク、ケーブルネットワーク、等)に結合することができる。
【0107】
[00122]種々の実施形態を以上に述べたが、それらは単なる例示に過ぎず、それに限定されるものではないことを理解されたい。従って、好ましい実施形態の広がり及び範囲は、上述した実施形態のいずれに限定されるものでもなく、特許請求の範囲及びその等効物のみによって定義されるものとする。
【符号の説明】
【0108】
150…セキュアなバーチャルマシン、152…プロセッサ、200…システム、202…媒体、204…独立したソフトウェアベンダー(ISV)、206…プログラム、208…インタープリター、210…タイトルキー、212…逆多重化部、214…再暗号化オーディオモジュール、216…解読モジュール、218…オーディオスタック、220…再暗号化ビデオモジュール、222…ビデオデコードモジュール、224…フレームバッファ、228…メモリ、250…プロセッサ、400…システム、402…プロセッサ、404…セキュアなバーチャルマシン、406…セキュアな埋設プロセッサ、1101…中央プロセッサ、1102…バス、1104…メインメモリ、1106…グラフィックプロセッサ、1108…ディスプレイ、1110…二次記憶装置。
【技術分野】
【0001】
[0001]本発明は、プレミアムオーディオ/ビデオコンテンツの処理に係り、より詳細には、コンテンツプレーヤアプリケーションが実行されるプロセッサコンテクスト以外でのコンテンツ処理に係る。
【背景技術】
【0002】
[0002]従来のコンピューティング環境では、コンテンツの処理がしばしば個別プロセッサによって実行される。例えば、高鮮明度コンテンツをデコードするためのハードウェアプロセッサを設けることができる。今日まで、必要な全てのコンテンツ処理を単一チップに統合することは困難であった。更に、完全に実施するには、典型的に、実施者が、第3当事者コンテンツの認可された採用者となって、認可されたコンテンツを処理するアルゴリズムを使用するための権利を得、且つ暗号化されたコンテンツを抽出するための認可保持者キーを得ることが必要である。このような認可は、典型的に、実施上の不備が機密情報又はコンテンツを危うくする場合に、認可発行者シークレットの機密性、責務及び法的改善を保証するための応諾性及び頑健性ルールを含む。従って、第2当事者認可保持者のソフトウェアアプリケーションは、典型的に、再暗号化されたビデオコンテンツをグラフィックス又はビジュアルプロセッサへより一般的なフォーマットで転送する前に中央処理ユニット等を使用してコンテンツを少なくとも部分的に処理することに依存している。
【発明の概要】
【発明が解決しようとする課題】
【0003】
[0003]不都合なことに、中央処理ユニットに依存することは、幾つかの制約を表す。例えば、CPUで実行されるアプリケーション内で認可保持者キー及びアルゴリズムをハンドリングする場合、処理中のある点で、プロセッサ内部にこの機密情報を露呈することを必然的に伴う。前記機密プロセスやシークレットを使用してコンテンツを処理する場合、このようなユニットへの及びユニットからの伝送を伴い、セキュリティの弱点になり得る。更に、不正変更防止技術を使用しても、バーチャル化のために設計された中央プロセッサ内での実行は、例えば、ハイパーバイザー、又は実行中のバーチャルマシンよりプライオリティの高い実行コンテクストから、頑健な不正変更防止実行環境を保証できない事態を招く。更に、中央処理ユニットは、コンピュータアーキテクチャーの汎用性のために、幾つかの形式の処理(例えば、暗号化、等)については、効率が悪い。付加的な不正変更防止及び再暗号化プロセスは、CPUの過剰利用や、不経済なほどの過度の利用を招き、コンテンツ再生中にバッテリ寿命の短縮を招く。従って、従来技術に関連したこれら及び/又は他の問題に対処することが必要となる。
【課題を解決するための手段】
【0004】
[0004]出力用にコンテンツを処理するためにプロセッサにおいて実施されるセキュアなバーチャルマシンシステム、方法及びコンピュータプログラム製品が提供される。少なくとも1つのプロセッサが設けられる。更に、第3当事者のコンテンツを処理して出力する第2当事者のプログラムを解釈するためにプロセッサにおいて実施される少なくとも1つのセキュアなバーチャルマシンが設けられる。バーチャルマシンシステムは、同じプログラムを同一に実行するために、製品にわたる実施変更を許すように基礎的なプロセッサハードウェアを抽象化する。更に、プログラムによる潜在的なセキュリティ漏洩を軽減すると共に、第2当事者のシークレットの機密性、及び第2当事者のプログラムにより管理される第3当事者のコンテンツを確保するために、プログラム可能なオペレーションの範囲、入力及び出力変数の形式、並びにプロセッサ内でのプログラムの実行がバーチャルマシン環境内で慎重に制限される。
【図面の簡単な説明】
【0005】
【図1A】一実施形態によりコンテンツを解読するキーを生成するためにプロセッサを使用してプログラムを実行する方法を示す図である。
【図1B】一実施形態により出力のコンテンツを処理するためにプロセッサにおいて実施されるセキュアなバーチャルマシンを示す図である。
【図2】一実施形態によりコンテンツを解読するキーを生成するためにプロセッサを使用してプログラムを生成し、セキュア化し、実行するシステムを示す図である。
【図3】一実施形態によりインタープリターを使用して受け取ったプログラム及びコンテンツを解釈する方法を示す図である。
【図4】一実施形態により受け取ったプログラム及びコンテンツを解釈するためにプロセッサ及びセキュアなバーチャルマシンを含むシステムを示す図である。
【図5】一実施形態によりセキュアなバーチャルマシンを使用してタイトルキーを抽出する方法を示す図である。
【図6】一実施形態によりセキュアなバーチャルマシンを使用してコンテンツストリームを解読する方法を示す図である。
【図7】一実施形態によりセキュアなバーチャルマシンを使用してコンテンツストリームをパッチし再暗号化する方法を示す図である。
【図8】一実施形態によりコンテンツを解読するキーを生成するためのプログラムを生成する方法を示す図である。
【図9】一実施形態によりコンテンツを解読するキーを生成するためのプログラムをセキュア化するシステムを示す図である。
【図10】一実施形態によりコンテンツを解読するキーを生成するためのプログラムを生成してセキュア化する方法を示す図である。
【図11】種々の先行する実施形態の種々のアーキテクチャー及び/又は機能を実施できる例示的システムを示す図である。
【発明を実施するための形態】
【0006】
[0017]図1Aは、一実施形態によりコンテンツを解読するキーを生成するためにプロセッサを使用してプログラムを実行する方法100を示す。図示されたように、コンテンツを解読するプログラムが生成される。オペレーション102を参照されたい。プログラムが生成されると、プログラムがセキュア化される。オペレーション104を参照されたい。一実施形態では、プログラムは、暗号化されることでセキュア化されてもよい。
【0007】
[0018]本説明の文脈において、プログラムとは、プロセッサを使用して実行できるプログラムを指す。一実施形態では、プログラムは、コンテンツを解読するキーを生成することのできるプログラムを含み、ここで、コンテンツとは、暗号化することのできるデータを指す。オプションとして、コンテンツは、専有情報を含んでもよい。
【0008】
[0019]この場合、コンテンツと、コンテンツを解読するキーを生成するためのプログラムとが、プロセッサに受け取られる。オペレーション106を参照されたい。更に、コンテンツを解読するためにプロセッサを使用してプログラムを実行することができる。オペレーション108を参照されたい。
【0009】
[0020]本説明の文脈において、プロセッサとは、表示用のデータを処理することのできるプロセッサを指す。例えば、種々の実施形態において、プロセッサは、グラフィックプロセッサ及びビデオプロセッサの少なくとも1つを含むことができる。一実施形態では、プロセッサは、出力のコンテンツを処理するためにプロセッサにおいて実施される少なくとも1つのセキュアなバーチャルマシンを含んでもよい。
【0010】
[0021]図1Bは、一実施形態により出力のコンテンツを処理するためにプロセッサ152において実施されるセキュアなバーチャルマシン150を示す。図示されたように、少なくとも1つのプロセッサ152が設けられる。更に、このプロセッサにおいて実施される少なくとも1つのセキュアなバーチャルマシン150が、出力のコンテンツを処理するために設けられる。
【0011】
[0022]オペレーションにおいて、プログラム及びコンテンツをプロセッサ152により入力として受け取ることができる。一実施形態では、バーチャルマシン150は、コンテンツを処理するプログラムを実行することができる。例えば、コンテンツは、バーチャルマシン150により処理される前に暗号化されてもよい。この場合、処理は、コンテンツの解読を含んでもよい。
【0012】
[0023]処理は、更に、コンテンツを再暗号化してもよい。オプションとして、再暗号化は、コンテンツがプロセッサ152から出力される前に行われてもよい。オプションとして、再暗号化は、コンテンツがプロセッサから出力された後に行われてもよい。
【0013】
[0024]一実施形態では、プロセッサ152において複数のセキュアなバーチャルマシン150を実施することができる。この場合に、バーチャルマシン152との間での情報の共有が制約されることがある。例えば、バーチャルマシン152により処理される情報が制約を受ける。一実施形態では、この情報は、キーを含んでもよい。
【0014】
[0025]ユーザの希望で、以上のフレームワークと共に実施してもしなくてもよい種々の任意のアーキテクチャー及び特徴に関して更に例示的な情報を以下に述べる。以下の情報は例示の目的で述べるもので、何ら限定するものと解釈されるべきでないことを強く注意されたい。以下のいずれかの特徴を、他に述べる特徴を除外して合体するか除外せずに合体するかは任意でよい。
【0015】
[0026]図2は、一実施形態によりコンテンツを解読するキーを生成するためにプロセッサを使用してプログラムを生成し、セキュア化し、実行するシステム200を示す。オプションとして、このシステム200は、図1A及び図1Bの状況及び詳細において実施されてもよい。しかしながら、当然、システム200は、いかなる望ましい環境において実施されてもよい。又、この説明の間に前記定義を適用できることにも注意されたい。
【0016】
[0027]オペレーションにおいて、媒体202からコンテンツを受け取ることができる。この場合、コンテンツは、暗号化されてもよい。例えば、コンテンツは、キーを使用して暗号化されてもよい。図示されたように、コンテンツは、認可されたプレーヤベンダー又は他の独立したソフトウェアベンダー(ISV)204により受け取られる。更に、プレーヤISV204は、コンテンツを処理するためにプロセッサ(例えば、グラフィックプロセッサ、等)250において実行するためのプログラム206を受け取ることができる。オプションとして、プログラム206は、アプリケーションを実行する結果としてメモリ228からプレーヤISV204によりフェッチされてもよい。
【0017】
[0028]プログラムをフェッチした後、プレーヤ204は、プログラム206をグラフィックプロセッサ250へ送り出すことができる。一実施形態では、プログラム206は、これがプロセッサ250へ送り出される前に、プレーヤISV204により暗号化されてもよい。
【0018】
[0029]例えば、プログラム206は、プレーヤISV204により生成され、次いで、暗号化されることでセキュア化される。一実施形態では、プログラム206は、プロセッサ250がコンテンツを受け取れるようにするアプリケーション(例えば、コンテンツプレーヤ、等)によって使用される。この場合に、プログラム206は、アプリケーションによりセキュア化することができる。従って、プログラム206は、コンテンツに基づき、アプリケーションによってメモリ228から検索されてもよい。
【0019】
[0030]一実施形態では、プログラム206は、アプリケーションにより検索される前に暗号化することができる。例えば、プログラム206は、アプリケーションにより検索される前に、パブリックキーを使用して暗号化することができる。この場合に、パブリックキー206は、プロセッサ250の製造者により準備されてもよい。
【0020】
[0031]別のオプションとして、プログラム206は、アプリケーションにより検索された後に暗号化されてもよい。この場合、プログラム206は、ランタイム中にアプリケーションにより検索された後に暗号化されてもよい。更に、プログラム206は、エフェメラルキーを使用して暗号化されてもよい。例えば、このエフェメラルキーは、プロセッサ250のみに記憶される情報を使用して生成されてもよい。一実施形態では、プログラム206は、アプリケーションとプロセッサ250との間で交換される少なくとも1つの証明書を使用して暗号化されてもよい。
【0021】
[0032]プロセッサ250により受け取られると、インタープリター208は、コンテンツからタイトルキー210を導出するのに使用される。この場合、インタープリター208は、タイトルキー210を導出するためにプロセッサ250により受け取られたプログラム206を実行できるセキュアなバーチャルマシン(VM)の一部分であるとみなされてもよい。従って、プログラム206は、バーチャルマシンがコンテンツを処理し、タイトルキー210を導出し、コンテンツをハンドリングし(例えば、コンテンツをオーディオ及びビデオストリーム、等に分割することにより)、そしてコンテンツを再暗号化するのを許す情報を含むことができる。
【0022】
[0033]一実施形態では、バーチャルマシンにより処理されるコンテンツは、処理の前に暗号化されてもよい。この場合に、処理は、コンテンツを解読することを含んでもよい。更に、処理は、コンテンツを再暗号化することを含んでもよい。例えば、再暗号化は、コンテンツがプロセッサ250から出力される前に行われてもよい。
【0023】
[0034]上述したように、プログラムは、アプリケーションから受け取られてもよい。この場合、プロセッサ250とアプリケーションとの間の通信チャンネルをセキュア化することができる。例えば、少なくとも1つの証明書を使用して、プロセッサ250とアプリケーションとの間の通信チャンネルをセキュア化することができる。
【0024】
[0035]一実施形態では、セキュアなバーチャルマシンは、コンテンツをオーディオ及びビデオストリームへ分割するのに使用できる逆多重化部212を含むことができる。更に、プログラム206は、バーチャルマシンに関連した再暗号化ビデオモジュール220及び再暗号化オーディオモジュール214が、コンテンツを、出力(例えば、表示、等)の前に、再暗号化するのを許す情報を含むことができる。ビデオ及びオーディオストリームの再暗号化は、任意であることに注意されたい。
【0025】
[0036]システム200を使用して、コンテンツと、コンテンツを解読する暗号キーを生成するのに使用されるプログラム206をプロセッサ250により受け取ることができ、このプログラム206は、コンテンツの解読に使用することができる。更に、プロセッサ250を使用してキーを解読することもできる。
【0026】
[0037]一実施形態では、キーは、コンテンツに関連した少なくとも1つのコンテンツキーと、コンテンツ及びプログラム206が受け取られるようにするアプリケーションに関連した少なくとも1つのアプリケーションキーとを含むことができる。次いで、プロセッサ250は、コンテンツキー及びアプリケーションキーを処理して、タイトルキー210を生成することができる。この場合、タイトルキー210は、コンテンツを解読するのに使用できる。従って、プレーヤISV204に関連した中央処理ユニット(CPU)へのキーの露呈を防止することができる。
【0027】
[0038]コンテンツが分割されると、ビデオコンテンツは、デコーディングのためにビデオデコードモジュール222へ送られ、フレームバッファ224にピクセルとして記憶され、次いで、ディスプレイ226へ出力される。オーディオコンテンツは、PCIEバスを経て解読モジュール216(例えば、プレーヤISV204に関連した)へ送られ、最終的に、出力のためにオーディオスタック218へ送られる。
【0028】
[0039]このように、グラフィック処理ユニット(GPU)と、このGPUにおいてセキュアな埋設バーチャルマシンを実行できるセキュアなマイクロコード(即ち、ファームウェア)と、ソフトウェアプレーヤベンダーが媒体に対する処理(例えば、AACS処理、等)をセキュアにオフロードするのを集合的に許すプレーヤISVのCPUにおいて実行されるグラフィックドライバソフトウェアとを含むシステムを実施することができる。(例えば、AACSに使用されるもののような)キーハンドリング、コンテンツストリーム解読及び構文解析、並びにコンテンツストリーム変更プロセスの処理ステップをGPUにおけるセキュアな埋設プロセッサへ移動し、そしてこれらのステップを、複数のコンテンツ形式に適用するように抽象化することにより、装置キー及びシーケンスキー、媒体、並びにプレーヤISVに関連したタイトルキーに対する保護を与えることができる。更に、プレミアムビデオコンテンツを、圧縮、非デコード及び非暗号化形態で与えることができる。
【0029】
[0040]加えて、プレーヤISVは、オーディオ/ビデオ(AV)コンテンツ(例えば、AACS保護のAVストリームデータ、等)の処理に関連したCPU利用及び電力消費の大半を構成し得る、ビデオ基本的ストリームの解読及び再暗号化タスクを軽減することができる。更に、システム200を使用して、複数のコンテンツ形式、暗号化、及びキー認可モデルを実施しサポートすることができる。
【0030】
[0041]従って、CPUにおける及びバスを横切る非保護のコンテンツ及びキーの流れを回避することができる。例えば、セキュアなプロセスがGPUにおいて実行されるコンテクストは、ハードウェアによりセキュア化することができ、そしてプレーヤISVにより検証できるチッププライベート/パブリックキーを使用して、バーチャルマシンに使用されるメモリをセキュア化し、プログラムに署名することができる。
【0031】
[0042]図3は、一実施形態によりインタープリターを使用して、受け取ったプログラム及びコンテンツを解釈する方法300を示す。オプションとして、この方法300は、図1〜図2の機能及びアーキテクチャーに関して実施することができる。例えば、一実施形態では、方法300は、図2のインタープリター208の細部に関して実施される。しかしながら、当然、方法300は、いかなる望ましい環境において実施されてもよい。この場合も、この説明の間に前記定義が適用される。
【0032】
[0043]図示されたように、バイトコードイメージが受け取られる。オペレーション302を参照されたい。一実施形態では、バイトコードイメージは、プレーヤISVからGPUにより受け取ることができる。この場合、バイトコードイメージは、プレーヤISVにより送られたプログラムに関連したコードを含むことができる。
【0033】
[0044]バイトコードイメージが受け取られると、バイトコードイメージの署名がチェックされる。オペレーション304を参照されたい。この場合、チェックは、信頼性のあるソースに関連した署名を検証することを含む。次いで、バイトコードイメージを解読することができる。オペレーション306を参照されたい。バイトコードイメージが解読されると、バイトコードを解釈することができる。オペレーション308を参照されたい。
【0034】
[0045]図4は、一実施形態により、受け取ったプログラム及びコンテンツを解釈するためにプロセッサ402及びセキュアなバーチャルマシン404を含むシステム400を示す。オプションとして、システム400は、図1から3の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、システム400は、いかなる望ましい環境において実施されてもよい。更に、この説明の間に前記定義が適用される。
【0035】
[0046]図示されたように、システム400は、1つ以上のセキュアな埋設プロセッサ406と、この埋設プロセッサ406によりホストされるセキュアなバーチャルマシン404とを含むGPU402を備えている。セキュアなバーチャルマシン404は、署名されたセキュアなマイクロコードのインタープリターを備え、これは、暗号プリミティブと、ビデオストリームハンドリング及びパッチングにおけるプリミティブとを遂行できるバイトコードインストラクションをサポートする。このインタープリターを使用して、バーチャルマシン404は、プレーヤISVにより与えられるプログラムを解釈するためのインタープリターとして働くことができる。
【0036】
[0047]セキュアなバーチャルマシン404は、更に、ハードウェア暗号エンジン、例えば、AES又はSHA−1プリミティブ、等を含むことができる。加えて、セキュアなバーチャルマシン404は、機密メモリのセキュアなサンドボックスを含むこともでき、これは、エンジンに対してはアクセス不能であるが、バーチャルマシン404の外部から(例えば、CPU又はGPUレンダラー、等から)アクセスすることができる。
【0037】
[0048]更に、バーチャルマシン404において実行するためのセキュアなバイトコードが設けられる。この場合、セキュアなバイトコードは、ISVによりGPU402へ与えられるプログラムに関連したバイトコードである。例えば、バイトコードは、認可されたコンテンツメカニズムのコアワークを遂行するために、認可されたプレーヤISVにより生成することができる。従って、バイトコードを使用して、バーチャルマシン404内でコンテンツ及びキーの処理を遂行することができ、コンテンツ及びキーは、GPU402により受け取られる。
【0038】
[0049]又、セキュアなバーチャルマシン404は、チッププライベート及びパブリックキーと、承認された当局により署名された証明書とにアクセスすることができ、これは、署名されたISVコードをセキュアなバーチャルマシン404内で実行するのを許す。更に、これらのキーは、プレーヤISVが、ISVシークレットを安全に暗号化するのを許すと共に、それらシークレットを、信頼性のあるバーチャルマシン404内で使用された状態で一度しか見られないことを保証する。これらのキーは、更に、プレーヤISVが、有能なGPUを、コンテンツデコードの実行をなすための信頼性のあるエンドポイントとして確認するのを許す。
【0039】
[0050]又、セキュアなバーチャルマシン404は、そのセキュアなバーチャルマシン404のキー部分を暗号化する能力を許し、実行の後にそれをメモリへページアウトして、異なるコンテンツストリームをサポートするセキュアなバーチャルマシン404の別のコンテンツに置き換えることができる。更に、セキュアなバーチャルマシン404のコンテンツを消去して、シークレットが後に残らないようにすることもできる。例えば、バーチャルマシン404により処理されている情報は、処理後に削除されることもある。
【0040】
[0051]セキュアなバーチャルマシン404は、更に、CPUにおいて実行されるグラフィックドライバ(例えば、ソフトウェア)であって、ソフトウェアコンテンツプレーヤベンダーが、バーチャルマシン404へのセキュアなバイトコードのロード動作をネゴシエーションするのを集合的に許すようなグラフィックドライバを含むことができる。更に、セキュアなバーチャルマシン404は、ISV認可保持者のポーティングタイトル解読をサポートし、プログラム(例えば、アッセンブリ又はC、等で書かれた)をコンパイルし、そしてインタープリターによりサポートされるバイトコードを放出するのに必要なコンパイラー及びツールを含むことができる。
【0041】
[0052]図5は、一実施形態によりセキュアなバーチャルマシンを使用してタイトルキーを抽出する方法500を示す。オプションとして、この方法500は、図1から図4の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、方法500は、いかなる望ましい環境において実施されてもよい。この場合も、この説明の間に前記定義が適用される。
【0042】
[0053]オペレーションにおいて、プレーヤISVコード又はプログラムは、機密キーグループを解読するプロセスを記述することができる。このコードは、コンテンツストリームを解読するタイトルキーを形成するために他のコンテンツキー及びポリシーと共に使用される。この場合、ISVプログラムは、解読を許すために識別されたランタイム変数(例えば、即時間接的変数、ローカル変数、ストリーム及びバッファポインタ、等)を使用するインタープリターのためのコマンドを含むことができる。このプログラムは、GPU及びISVが信頼できるものとして確認するキーを使用して署名される。
【0043】
[0054]タイトルキーが抽出されると、セキュアなバーチャルマシンを使用してコンテンツストリームを解読することができる。図6は、一実施形態によりセキュアなバーチャルマシンを使用してコンテンツストリームを解読する方法600を示す。オプションとして、この方法600は、図1から図5の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、方法600は、いかなる望ましい環境において実施されてもよい。この説明の間には、前記定義が適用される。
【0044】
[0055]ISVコードは、ディスク、ネットワーク又は他の媒体からコピーされるストリームのコンテンツを解読するためにタイトルキー抽出中に記憶されるタイトルキーを使用してプロセスを記述することができる。その出力は、その後のプロセスのためにバーチャルマシン内に留めることができる。
【0045】
[0056]コンテンツストリームが解読されると、セキュアなバーチャルマシンを使用してコンテンツストリームをパッチ及び再暗号化することができる。図7は、一実施形態によりセキュアなバーチャルマシンを使用してコンテンツストリームをパッチし再暗号化する方法700を示す。オプションとして、この方法700は、図1から図6の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、方法700は、いかなる望ましい環境において実施されてもよい。この場合も、この説明の間に前記定義が適用される。
【0046】
[0057]オペレーションにおいて、ISVプログラムは、変換記述子に基づきコンテンツストリームをパッチするのに必要なコマンドをカプセル化することができる。コンテンツストリームは、オーディオを付加的な処理のためにプレーヤISVへ又はオフチップオーディオデコーダへ返送するために分割され再暗号化される。
【0047】
[0058]オプションとして、コンテンツストリームは、その後のオンチップビデオデコーダにおいて消費されるべくビデオポートへと分割されてもよい。この場合に、コンテンツは、非暗号化形態のままとされ、コンテンツは、ビデオデコーダ以外のものにはアクセス不能である特別扱いのメモリに機密裡にセーブすることができる。
【0048】
[0059]一実施形態では、プレーヤISVにより与えられるプログラムは、インタープリターが1つの個別のオペレーションとして完了するための個別のコマンドを含むことができる。例えば、種々の実施形態において、これらのコマンドは、表1に示す共通オペレーションのための暗号プリミティブを含むことができる。
【0049】
[0060]
【表1】
[0061]一実施形態では、これらのプリミティブは、GPUの埋設コントローラにおいて実行されるように最適化された予めコード化されたルーチンを含むことができる。別の実施形態では、これらのプリミティブは、性能に敏感なオペレーションを直接的に加速するハードウェアエンジンにより実行を抽象化するインターフェイスラッパーでよい。
【0050】
[0062]別のオプションでは、これらプリミティブは、セキュアなバーチャルマシンにおけるハウスキーピングオペレーションを含むことができる。表2は、一実施形態による幾つかのハウスキーピングオペレーションを示す。
【0051】
[0063]
【表2】
[0064]一実施形態では、バーチャルマシンによりディフィー・ヘルマンのキー交換を行うことができる。解釈されたコードで書かれたステップごとのディフィー・ヘルマンのキー交換が、一実施形態により、表3に示されている。
【0052】
[0065]
【表3】
[0066]別の実施形態では、プログラムは、中間アキュムレータを使用してバイトごとに繰り返しオペレーションを遂行して全体的なプロセスサブルーチンを形成するための1組の複雑なオペレーションを表現することができる。このようなループが生じる場合には、サブルーチンは、実行時に再解釈を要求しないプロセッサマイクロコードで作られた固有のオペレーションを使用して、より効率的な形態へと最適に再コンパイルすることができる。次いで、宣言がなされると、サブルーチンは、マクロレベルにおいて個別のステップとして遂行することができる。
【0053】
[0067]バーチャルマシンのサブルーチンとして書かれたRC4暗号化アルゴリズムの一例が、一実施形態により、表4に示されている。
【0054】
[0068]
【表4】
[0069]セキュアなバーチャルマシンをバーチャルプロセスと共に使用することで、ビデオデコーダハードウェアが既に(例えば、GPU、等に)存在する場合にキーの処理及びストリームの構文解析をハンドリングするためのセキュアな実行環境を提供し、これにより、非保護のコンテンツ及びキーがCPU内に及びバスを横切って流れるのを回避することに注意されたい。更に、セキュアなバーチャルマシンを使用することで、バーチャルマシンへのコンテンツを解読するキーを生成するプログラムを送出することによりGPUが認可された装置となることを必要とせずに、第3当事者の認可保持者がGPUの認可されたコンテンツに対するセキュアな準拠デコーダを生成するという能力を提供する。
【0055】
[0070]図8は、一実施形態によりコンテンツを解読するキーを生成するためのプログラムを生成する方法800を示す。オプションとして、この方法800は、図1から図7の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、方法800は、いかなる望ましい環境において実施されてもよい。この説明の間に前記定義が適用される。
【0056】
[0071]図示されたように、解釈言語仕様が与えられる。オペレーション802を参照されたい。この場合、プレーヤISVには、プロセッサの製造者により解釈言語仕様を与えることができる。例えば、この言語仕様は、インタープリターを含むセキュアなバーチャルマシンのための仕様を含む。一実施形態では、この仕様は、コンテンツを解読するキーを生成するプログラムの生成に使用されるべきプログラミング言語を含むことができる。
【0057】
[0072]次いで、プログラムが書き込まれる。オペレーション804を参照されたい。例えば、プログラムは、解釈言語仕様に基づき、プレーヤISVによりソースコードで書き込まれてもよい。次いで、プログラムは、処理のためにコンパイラー及び/又はインタープリターのようなツールを通して実行される。オペレーション806を参照されたい。
【0058】
[0073]処理の結果として、バイトコードが生成される。オペレーション808を参照されたい。このバイトコードは、ランタイム中にバーチャルマシンにより処理するために使用されるべきコードを含んでもよい。
【0059】
[0074]次いで、バイトコードは、暗号署名プロセスに入力される。オペレーション810を参照されたい。一実施形態では、暗号署名プロセスは、プロセッサの製造者によって与えられるプロセスでよい。暗号署名プロセスを実施した後、埋設可能な暗号イメージが与えられる。この暗号イメージは、次いで、ISVプレーヤのプログラムへ埋設されて、プレーヤがランタイムオペレーション中に処理のためにGPUのバーチャルマシンへプログラムを与えることができるようにする。
【0060】
[0075]図9は、一実施形態によりコンテンツを解読するキーを生成するためのプログラムをセキュア化するシステム900を示す。オプションとして、このシステム900は、図1から図7の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、システム900は、いかなる望ましい環境において実施されてもよい。更に、この説明の間に前記定義が適用される。
【0061】
[0076]オペレーションにおいて、このシステム900は、図10の方法100として示された、コンテンツを暗号化するキーを生成するためのプログラムをセキュア化する方法を実施するのに使用できる。図10に示すように、アプリケーションは、署名のための一対のキーPA及びpAを生成する。更に、GPUは、署名のための一対のキーPG及びpG及び暗号化のためのキーPSを生成する。
【0062】
[0077]次いで、GPUは、GPUの署名シークレットキーを使用してアプリケーションの署名パブリックキーに署名して、アプリケーションへ送られる証明書(例えば、CERTG、等)を生じさせることができる。次いで、アプリケーションは、バーチャルマシンプログラムを暗号化することができる。そのプログラムに署名し、コンパイルすることができる。
【0063】
[0078]ランタイムに、アプリケーションは、エフェメラルキーシークレット(例えば、KSK、等)を確立することができる。GPUも、エフェメラルキーシークレット(例えば、K’SK、等)を導出することができる。次いで、暗号化されたプログラム及びキーがアプリケーションからGPUへ通過される。次いで、インタープリターは、アプリケーションの証明書を解読して検証し、そしてバーチャルマシンプログラムが実行される。
【0064】
[0079]この技術を使用して、GPUプロバイダーにより署名するために一対のプライベートキー及びパブリックキーを生成することができる。プライベートキーは、内部署名サーバーに入れられる。パブリックキーは、API仕様において発行されて、セキュアなインタープリターマイクロコードに埋設される。次いで、ハードウェアシークレット、又はその導出値をチップシークレットキーとして使用し、そしてそれに対応するパブリックキーを暗号化のために導出することができる。
【0065】
[0080]アプリケーションプロバイダーは、署名のためのプライベートキー及びパブリックキーのそれ自身の対をプライベートに生成することができる。アプリケーションプロバイダーは、e−メール又はftpを経てGPUプロバイダーへパブリックキーを送出することができる。GPUプロバイダーは、それらの署名シークレットキーを使用して、アプリケーションプロバイダーの署名パブリックキーに署名することができる。それにより得られる署名は、GPUプロバイダーによって生成されるアプリケーションプロバイダーの署名パブリックキーのための証明書である。この証明書は、アプリケーションプロバイダーへ返送することができる。
【0066】
[0081]アプリケーションプロバイダーは、幾つかのインタープリタープログラム及び高機密性の認可シークレット(例えば、プレーヤ/装置キーのような)をプライベートに書き込み、そしてそれをバイナリーへとコンパイルすることができる。アプリケーションプロバイダーは、GPUプロバイダーのチップパブリックキーのもとでバイナリープログラムをプライベートに暗号化することができる。アプリケーションプロバイダーは、アプリケーションプロバイダーの署名シークレットキーのもとで、暗号化されたバイナリープログラムにプライベートに署名することができる。
【0067】
[0082]暗号化されたプログラムは、署名及びアプリケーションプロバイダーの証明書と共に、アプリケーションプロバイダーのプレーヤ実行部にスタティックに埋設することができる。ランタイムにおいて、アプリケーションプロバイダーは、GPU内のオンチップランダムナンバージェネレータ(RNG)を使用してエフェメラルセッションキーシークレットを確立し、そしてこれを使用して、既にスタティックに暗号化されたプログラムをランタイム暗号化ペイロードへと付加的に再暗号化することができる。
【0068】
[0083]ランタイムに、GPUのインタープリターは、二重暗号化のペイロード、署名、及び証明書をロードすることができる。インタープリターは、GPUプロバイダーの署名パブリックキーを使用して、アプリケーションプロバイダーの証明書を検証することができる。又、インタープリターは、アプリケーションプロバイダーの署名パブリックキーを使用して、暗号化されたプログラムを検証することもできる。インタープリターは、ネゴシエーション中にGPU内部に生成されたエフェメラルセッションキーシークレットを使用してランタイム暗号化ペイロードを解読し、それにより、スタティックに暗号化されたプログラム(まだ暗号化された形態にある)を抽出することができる。
【0069】
[0084]次いで、インタープリターは、ハードウェアシークレットからGPUプロバイダーのチップシークレットキーを導出し、そして解釈されたプログラムのシークレット及びコンテンツ/プレーヤのシークレットを含むスタティックに暗号化されたプログラムを解読することができる。次いで、インタープリターは、プログラムを安全に実行し、GPU内部のセキュアなバーチャルマシン内の高気密性コンテンツシークレットをデリファレンスすることができる。
【0070】
[0085]エフェメラルセッションキーを生成するのに使用されるシークレットは、ランダムナンバージェネレータから導出されて、GPU内にセキュアに保持されるので、GPUプロバイダーのチップシークレット及び他の署名キーの知識をもつ個人でも、ペイロードを解読することはあり得ない。ISVがGPUの署名を確認し、インタープリターがISVのコードを実行するとすれば、ISVがインタープリター及びセキュアなバーチャルマシンの環境を信頼すると仮定することができ、ISVは、それが機密情報を漏洩しないと信じるようになる。加えて、バーチャルマシンで実行されるべきコードがISVにより書き込まれ、実行の前に署名/検証されるとすれば、ISVは、コンテンツ又は機密シークレットがGPUプロバイダーにも漏れないことを保証する環境を生成することができる。
【0071】
[0086]ペイロード暗号化プロセスに使用されるシークレットを露呈するリスクを更に軽減するために、第2当事者又は第3当事者、例えば、ISV認可保持者、製品認可保持者又はシステムベンダーにより付加的な認可保持者シークレットをGPUへ直接融合することができる。シークレットがGPUプロバイダーでも未知であることを更に保証するために、プログラミングプロセスは、GPUがGPUプロバイダーの製造及び在庫プロセスを退出した後にいつでもシークレットをセットできるようにする。GPUベンダーは、例えば、システムベンダーのファシリティにおいてアッセンブル中にGPUがボードに載せられた後に、GPUへのシークレットの独立したプログラミングを許すためのアクセスを与える。例えば、一実施形態では、シークレットが一回限りのチップヒューズに収容され、これらヒューズは、認可保持者シークレットの値ビットに一致するビットパターンでGPUパッケージの特定ピンに高い電圧を印加することにより切れる。又、一実施形態では、GPUから読み取ることができず、GPUの暗号及び他の内部暗号プロセスによりキーとして又は他のキーとの組合せでしか使用できない書き込み専用レジスタに前記ヒューズを適用することによりシークレットが機密裡に保持される。又、一実施形態では、設計上、平易テキスト入力と暗号テキスト出力が外部から見える場合でもキー値の回復を許さないAES暗号のキー値として認可保持者シークレットが使用される。
【0072】
[0087]加えて、ヒューズシークレットのプログラミングは、シークレットを危うくするために既知のものへ再プログラムするその後の変更や攻撃から保護するために、一回限りの設定に制限することができる。一実施形態では、まさにGPUにより使用されるべくシークレットをプログラムできるヒューズは、認可保持者シークレットをプログラミングし終えると、それ自身で切れ、又、いったん切れると、前記ヒューズは、認可保持者シークレットヒューズのその後のプログラミングを許さない。
【0073】
[0088]認可保持者シークレットは、他の(読み取り不能の)GPUシークレットと間接的に組み合わせて、ペイロードの生成及び抽出に使用される暗号及び解読キーを形成することができる。認可保持者シークレットを独立してプログラムすることができ、GPUプロバイダーがそのようなシークレットの知識をもたず、且つシークレットがランタイムにセキュアなバーチャルマシン内のGPUハードウェアにより間接的に結合されるだけであるとすれば、第2当事者の機密プログラム、アルゴリズム及びキーは、機密チップシークレットの詳細な知識をもつ個人に対して更に強化される。
【0074】
[0089]従って、一実施形態によれば、少なくとも1つのプロセッサと、第2当事者のプログラムを処理するためにプロセッサにおいて実施される第1当事者の少なくとも1つのセキュアなバーチャルマシンと、第3当事者のコンテンツを出力のために処理する少なくとも1つのプログラムとを備えた装置が提供される。この場合、第1当事者は、セキュアなバーチャルマシン及び又はプロセッサを備えたエンティティ又は個人を含み、第2当事者は、ソフトウェアを認可するエンティティ又は個人(例えば、独立したソフトウェアベンダー認可保持者、等)を含み、そして第3当事者は、コンテンツを認可するエンティティ又は個人を含むことができる。もちろん、種々の実施形態では、第1、第2及び第3の当事者は、同じ当事者でも異なる当事者でもよく、いずれの個人又はエンティティでもよい。
【0075】
[0090]この装置を使用すると、残留機密プログラム情報、処理されている情報、及び少なくとも1つのバーチャルマシンの各々により生成されるエフェメラル変数は、処理後に削除することができる。一実施形態では、複数のセキュアなバーチャルマシンを個々のコンテクスト内でプロセッサにおいて実施することができる。この場合、複数のセキュアなバーチャルマシン間での情報の共有は、制限されることがある。
【0076】
[0091]例えば、エフェメラル情報の形式及び複数のセキュアなバーチャルマシンにより処理されている情報の記憶が制限されることがある。又、情報は、保護されたコンテンツの解読に使用されるキー及び中間暗号値を含んでもよい。
【0077】
[0092]別の実施形態では、クライアント供給プログラム(例えば、第2当事者のプログラム、等)を実行して、保護されたコンテンツを処理するために、少なくとも1つのバーチャルマシンを設けることができる。この場合に、クライアント供給プログラムは、第3当事者のコンテンツを処理する際にそのクライアント供給プログラムによって使用されるアルゴリズム詳細、シークレット、及びキーの機密性を確保するために、第2当事者により暗号化することができる。クライアント供給プログラムは、更に、そのクライアント供給プログラムの完全性を検証できるように第2当事者により署名できると共に、そのクライアント供給プログラムのソースの真正性を検証できる証明書を含むことができる。
【0078】
[0093]一実施形態では、第3当事者のコンテンツは、少なくとも1つのバーチャルマシンにより処理される前に第3当事者により別々に暗号化されてもよい。この場合に、クライアント供給プログラム、機密のアルゴリズム、及びシークレットは、少なくとも1つのバーチャルマシン内での実行を許す前に、含まれた署名及び証明書を検証することにより解読され、認証されてもよい。
【0079】
[0094]別のオプションとして、クライアント供給プログラムを処理することは、第3当事者のコンテンツを解読することを含んでもよい。この処理は、更に、第3当事者のコンテンツ又は第3当事者のコンテンツ内のストリームの1つ以上の部分のうちの少なくとも1つを再暗号化することを含んでもよい。あるケースでは、再暗号化は、第3当事者のコンテンツが少なくとも1つのバーチャルマシンから出る前に行われる。別のケースでは、再暗号化は、第3当事者のコンテンツがプロセッサから出力された後に行われてもよい。
【0080】
[0095]一実施形態では、クライアント供給プログラムは、アプリケーションから受け取られ、そしてクライアント供給プログラムは、プロセッサとアプリケーションとの間にセキュアな通信チャンネルを確立することができる。この場合、プロセッサとアプリケーションとの間の通信チャンネルは、プロセッサにおいて導出される暗号値及び少なくとも1つの証明書を使用してセキュア化することができる。
【0081】
[0096]別の実施形態では、少なくとも1つのバーチャルマシンは、アプリケーションにより与えられる保護コンテンツ処理プログラムのインタープリターとして働くことができる。更に、プロセッサは、少なくとも1つのセキュリティプロセッサを含み、又、グラフィックプロセッサ、ビデオプロセッサ、又はオーディオプロセッサの少なくとも1つに、処理されたコンテンツを与えるように構成できる。
【0082】
[0097]更に別の実施形態では、プロセッサは、パッケージから解かれたコンテンツキー及びプログラム実行中に導出される中間暗号値のためのセキュアな機密記憶部を含むことができる。いずれにせよ、プロセッサの少なくとも1つのバーチャルマシン内で第2当事者のプログラムにより第3当事者のコンテンツを処理するのに、プロセッサが、認可されたシークレットを含むことも、以前に実施された認可アルゴリズムを有することも要求されない。少なくとも1つのバーチャルマシンの設計、及び少なくとも1つのバーチャルマシン内の第2当事者のプログラムによる第3当事者のコンテンツの処理は、認可応諾及び頑健性ルールに関して第2当事者により再検討され、これにより、第3当事者のコンテンツに対する適合性を決定できることに注意されたい。
【0083】
[0098]加えて、この装置を使用することにより、第3当事者のコンテンツと、この第3当事者のコンテンツを解読する機密キーを生成するのに使用される第2当事者のプログラムが(例えば、第1当事者、等により製造された)プロセッサに受け取られ、そして第3当事者のコンテンツを解読するためにそのプロセッサを使用して第2当事者のプログラムを実行することができる。この場合、第3当事者のコンテンツを解読するには、第2当事者に与えられる機密アルゴリズム及びキー情報を使用することが要求される。オプションとして、第3当事者のコンテンツを解読するのに使用される機密キー及びアルゴリズムは、第2当事者により再暗号化されてもよい。又、機密キーは、プロセッサを使用して解読されてもよい。
【0084】
[0099]一実施形態では、第2当事者のプログラムから生成される機密ランタイム値、中間暗号値、及び機密キーは、プロセッサのオペレーションで間接的にのみデリファレンスされるように構成され且つ読み取り不能に構成された機密の書き込み専用プロセッサレジスタ及び/又はインデックス付きバッファに記憶することができる。この場合に、書き込み専用プロセッサレジスタ及びインデックス付きバッファは、第2当事者のプログラムが終了した後に消去することができ、これにより、その後のバーチャルマシンセッションが残留シークレットへアクセスしないように保証する。
【0085】
[00100]オプションとして、機密キーは、第3当事者のコンテンツに関連した少なくとも1つのコンテンツキーと、第3当事者のコンテンツ及び第2当事者のプログラムをプロセッサで受け取るときに経由する第2当事者のアプリケーションに関連した少なくとも1つのアプリケーションキーとを含むことができる。一実施形態では、第2当事者のアプリケーションは、コンテンツプレーヤを含むことができる。
【0086】
[00101]更に、プロセッサは、第3当事者の少なくとも1つのコンテンツキー及び第2当事者の少なくとも1つのアプリケーションキーを処理して、少なくとも1つのタイトルキーを生成することができる。この場合に、タイトルキーは、第3当事者のコンテンツを解読するのに使用することができる。
【0087】
[00102]一実施形態では、第2当事者のプログラムは、第3当事者のコンテンツ及び第2当事者のプログラムを受け取るときに経由する第2当事者のアプリケーションによって使用することができる。この場合、第2当事者のプログラムは、第3当事者のコンテンツを解読するのに適用できると共に、第3当事者のコンテンツに基づいて第2当事者のアプリケーションにより検索することができる。
【0088】
[00103]ある場合には、第2当事者のプログラム及びコンテンツキーは、第2当事者のアプリケーションにより検索される前に暗号化されることがある。これらの場合に、第2当事者のプログラム及びコンテンツキーは、第2当事者のアプリケーションにより検索される前に、パブリックキーを使用して暗号化することができる。オプションとして、第2当事者のプログラム及びコンテンツキーを暗号化する1つ以上のキーがプロセッサの製造者(例えば、第1当事者、等)によって準備されてもよい。別のオプションとして、第2当事者のプログラムは、第2当事者のアプリケーションに関連した配布バイナリー内のパッケージに合成される前に暗号化されてもよい。
【0089】
[00104]一実施形態では、第2当事者のアプリケーションは、更に、プロセッサへ通される前に、第2当事者のプログラム及び機密キーを含むパッケージを再暗号化することができる。一実施形態では、機密アルゴリズム及び機密キーを中央処理ユニットに露呈することは、プロセッサ内部のバーチャルマシン内で実行されるまで解読されない暗号プログラムパッケージ内に機密アルゴリズム及び機密キーを含ませることにより防止することができる。この場合、機密アルゴリズム及び機密キーシークレットの潜在的な露呈は、第2当事者のプログラムが解読されるプロセッサにおいて、第2当事者のアプリケーションとの間でのパブリックキー交換で生成されるエフェメラル値を使用してパッケージを暗号化することにより防止することができる。
【0090】
[00105]更に、機密アルゴリズム及び機密キーの露呈は、第2当事者のプログラムの暗号化によりプロセッサベンダーに露呈されずに使用され且つプロセッサに入れられる第2当事者認可シークレット又は第3当事者認可保持者シークレットを使用することで防止することができる。この場合、第2当事者認可シークレット及び第3当事者認可保持者シークレットのプログラミングは、一回限りのプログラミングメカニズム(例えば、コンピュータコード、等)の使用によりプロセッサへいったんプログラムされると、変更から保護することができる。
【0091】
[00106]更に別の実施形態では、この装置を使用することにより、第3当事者のコンテンツを暗号化し処理するためのパッケージを第2当事者により生成することができ、このパッケージは、プロセッサを使用して実行できるプログラムを含む。加えて、そのプログラムは、それに関連したシークレットの機密性を保証するために暗号化を使用してセキュア化することができる。更に、そのプログラムは、プログラムのソースの真正性を保証するために署名することができる。更に、プログラムのソースの証明書、及びプログラムをセキュア化したエンティティを検証することもできる。
【0092】
[00107]プロセッサは、グラフィックプロセッサ、ビデオプロセッサ、及び/又はオーディオプロセッサ、等を含むことができる。更に、プロセッサは、第2当事者のアプリケーションで準備されたパッケージ、プログラム、機密アルゴリズム、コンテンツキー及び専有シークレットをセキュアに解読できるセキュアなプロセッサコンテクストを含むことができる。
【0093】
[00108]ある場合には、第3当事者コンテクストは、傍受及び複写から保護されねばならないように第3当事者にとって価値のあるものである。種々の実施形態では、パッケージは、第3当事者のコンテンツを解読し処理するのに必要なプログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットを含むことができる。更に、オプションとして、パッケージは、暗号化によりセキュア化することができる。
【0094】
[00109]一実施形態では、プログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットは、プロセッサが第3当事者のコンテンツを受け取るところの第2当事者のコンテンツ認可保持者プレーヤアプリケーションにより準備することができる。この場合に、プログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットを含むパッケージを、第2当事者のアプリケーションプロバイダーによりセキュア化し、アプリケーションに埋め込むことができる。
【0095】
[00110]一実施形態では、アプリケーションは、ユーザ選択コンテンツを処理して出力するために、少なくとも1つのプレーヤ及びパッケージ、又は少なくとも1つの他のパッケージを含むことができる。更に、第3当事者のコンテンツを解読し処理するのに使用されるパッケージは、第3当事者のコンテンツの形式及びフォーマットに基づいて、アプリケーション内から検索することができる。加えて、パッケージ、プログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットは、アプリケーションにより検索される前に、暗号化することができる。
【0096】
[00111]この場合に、パッケージ、プログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットは、アプリケーションに埋め込まれる前に、1つ以上のパブリック及びプライベートキーを使用して、暗号化し署名することができる。第2当事者のアプリケーションベンダーとプロセッサのベンダーとの間でパブリックキー及び証明書を交換することができる。オプションとして、プログラムは、プロセッサに埋め込まれた認可保持者シークレットを使用して暗号化することができる。
【0097】
[00112]一実施形態では、パッケージは、ランタイムに、アプリケーションにより抽出された後に、暗号化することができる。この場合、プログラムは、擬似ランダムナンバージェネレータと、プロセッサのみに記憶されたシークレットとを使用して生成されるエフェメラルキーを使用して、暗号化することができる。加えて、プログラムは、擬似ランダムナンバージェネレータと、アプリケーションのみに記憶された情報とを使用して生成されるエフェメラルキーを使用して、暗号化することもできる。
【0098】
[00113]別のオプションとして、プログラムは、アプリケーションとプロセッサベンダーとの間で交換される少なくとも1つの証明書の少なくとも1つのキーを使用して暗号化することもできる。一実施形態では、プログラムは、アプリケーションとプロセッサとの間で交換される少なくとも1つの証明書の少なくとも1つのキーを使用して署名することができる。この場合、プロセッサベンダーにとって未知のプロセッサに認可保持者シークレットを埋め込むことができ、認可保持者シークレットは、プロセッサベンダーによって推定し及び/又はプロセッサから読み戻すことができない。ある場合には、認可保持者シークレットは、一度しか書き込むことができず、又、攻撃者がシークレットを導出したり又はプロセッサに記憶されたシークレットを変更することでそれを危うくしたりできないよう保証するために、プログラミングの後に変更やその他修正ができないようにされる。
【0099】
[00114]図11は、種々の先行する実施形態の種々のアーキテクチャー及び/又は機能を実施できる例示的システム1100を示す。図示されたように、通信バス1102に接続された少なくとも1つのホストプロセッサ1101を含むシステム1100が提供される。このシステム1100は、メインメモリ1104も備えている。ランダムアクセスメモリ(RAM)の形態をとるメインメモリ1104には、制御ロジック(ソフトウェア)及びデータが記憶される。
【0100】
[00115]また、システム1100は、グラフィックプロセッサ1106と、ディスプレイ1108、即ちコンピュータモニタも備えている。一実施形態では、グラフィックプロセッサ1106は、複数のシェーダーモジュール、ラスタ化モジュール、等を含むことができる。以上のモジュールの各々は、単一の半導体プラットホームに位置させて、グラフィック処理ユニット(GPU)を形成することもできる。
【0101】
[00116]この説明では、単一の半導体プラットホームは、単独の一体的半導体ベースの集積回路又はチップと称される。又、単一の半導体プラットホームという語は、オンチップオペレーションを模擬すると共に、従来の中央処理ユニット(CPU)及びバス実施を利用するものに勝る実質的な改善をなす増加接続性のマルチチップモジュールとも称されることに注意されたい。もちろん、種々のモジュールは、ユーザの希望で、半導体プラットホームに別々に位置させてもよいし、又は半導体プラットホームの種々の組合せに位置させてもよい。
【0102】
[00117]また、システム1100は、二次記憶装置1110も備えることができる。この二次記憶装置1110は、例えば、ハードディスクドライブ及び/又は取り外し可能な記憶ドライブを含み、これは、フロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ、等を表す。取り外し可能な記憶ドライブは、良く知られた仕方で取り外し可能な記憶ユニットからの読み取り及びそこへの書き込みを行う。
【0103】
[00118]コンピュータプログラム又はコンピュータ制御ロジックアルゴリズムは、メインメモリ1104及び/又は二次記憶装置1110に記憶することができる。このようなコンピュータプログラムは、実行時に、システム1100が種々の機能を遂行できるようにする。メモリ1104、記憶装置1110、及び/又は他の記憶装置は、コンピュータ読み取り可能な媒体の考えられる例である。
【0104】
[00119]一実施形態では、種々の先行する図面のアーキテクチャー及び/又は機能は、ホストプロセッサ1101、グラフィックプロセッサ1106、これらホストプロセッサ1101及びグラフィックプロセッサ1106の両方の能力の少なくとも一部分を遂行できる集積回路(図示せず)、チップセット(即ち、関連機能、等を遂行するユニットとして作用し且つ販売するように設計された集積回路のグループ)、及び/又はそのことに対する他の集積回路に関して実施することができる。
【0105】
[00120]更に、種々の先行する図面のアーキテクチャー及び/又は機能は、汎用コンピュータシステム、回路ボードシステム、娯楽目的専用のゲームコンソールシステム、アプリケーション指向のシステム、及び/又は他の望ましいシステムに関して実施することができる。例えば、システム1100は、デスクトップコンピュータ、ラップトップコンピュータ、及び/又は他の形式のロジックの形態をとることができる。更に、システム1100は、これに限定されないが、パーソナルデジタルアシスタント(PDA)装置、移動電話装置、テレビジョン、等を含む種々の他の装置の形態をとることができる。
【0106】
[00121]更に、図示されていないが、システム1100は、通信目的で、ネットワーク(例えば、テレコミュニケーションネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスネットワーク、インターネットのようなワイドエリアネットワーク(WAN)、ピア・ツー・ピアネットワーク、ケーブルネットワーク、等)に結合することができる。
【0107】
[00122]種々の実施形態を以上に述べたが、それらは単なる例示に過ぎず、それに限定されるものではないことを理解されたい。従って、好ましい実施形態の広がり及び範囲は、上述した実施形態のいずれに限定されるものでもなく、特許請求の範囲及びその等効物のみによって定義されるものとする。
【符号の説明】
【0108】
150…セキュアなバーチャルマシン、152…プロセッサ、200…システム、202…媒体、204…独立したソフトウェアベンダー(ISV)、206…プログラム、208…インタープリター、210…タイトルキー、212…逆多重化部、214…再暗号化オーディオモジュール、216…解読モジュール、218…オーディオスタック、220…再暗号化ビデオモジュール、222…ビデオデコードモジュール、224…フレームバッファ、228…メモリ、250…プロセッサ、400…システム、402…プロセッサ、404…セキュアなバーチャルマシン、406…セキュアな埋設プロセッサ、1101…中央プロセッサ、1102…バス、1104…メインメモリ、1106…グラフィックプロセッサ、1108…ディスプレイ、1110…二次記憶装置。
【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサと、
第2当事者のプログラムを処理するために前記プロセッサ上で具現化される第1当事者の少なくとも1つのセキュアなバーチャルマシンと、
第3当事者のコンテンツを出力用に処理するためにコンピュータ読み取り可能な媒体上で実施される少なくとも1つのプログラムと、
を備えた装置。
【請求項2】
残留する機密プログラム情報、処理されている情報、及び前記少なくとも1つのバーチャルマシンの各々により生成されるエフェメラル変数は、処理後に削除される、請求項1に記載の装置。
【請求項3】
個々のコンテクスト内において前記プロセッサ上で複数のセキュアなバーチャルマシンが具現化される、請求項1に記載の装置。
【請求項4】
前記複数のセキュアなバーチャルマシン間での情報の共有が制限される、請求項3に記載の装置。
【請求項5】
エフェメラル情報の形式、及び前記複数のセキュアなバーチャルマシンにより処理されている情報の記憶が制限される、請求項4に記載の装置。
【請求項6】
前記情報は、保護されたコンテンツの解読に使用されるキー及び中間暗号値を含む、請求項4に記載の装置。
【請求項7】
クライアント供給プログラムを実行して前記保護されたコンテンツを処理するために前記少なくとも1つのバーチャルマシンが設けられる、請求項1に記載の装置。
【請求項8】
前記クライアント供給プログラムは、第3当事者のコンテンツを処理する際に前記クライアント供給プログラムによって使用されるアルゴリズム詳細、シークレット及びキーの機密性を保証するために第2当事者により暗号化される、請求項7に記載の装置。
【請求項9】
前記クライアント供給プログラムは、更に、そのクライアント供給プログラムの完全性を検証できるように第2当事者により署名されると共に、そのクライアント供給プログラムのソースの真正性を検証できるようにする証明書を含む、請求項8に記載の装置。
【請求項10】
第3当事者のコンテンツは、前記少なくとも1つのバーチャルマシンにより処理される前に第3当事者により別々に暗号化される、請求項7に記載の装置。
【請求項11】
前記クライアント供給プログラム、機密アルゴリズム及びシークレットは、前記少なくとも1つのバーチャルマシン内での実行を許す前に、含まれた署名及び証明書を検証することで、解読され認証される、請求項10に記載の装置。
【請求項12】
前記クライアント供給プログラムの処理は、第3当事者のコンテンツを解読することを含む、請求項10に記載の装置。
【請求項13】
前記処理は、更に、第3当事者のコンテンツ又は第3当事者のコンテンツ内のストリームの1つ以上の部分のうちの少なくとも1つを再暗号化することを含む、請求項12に記載の装置。
【請求項14】
前記再暗号化は、第3当事者のコンテンツが前記少なくとも1つのバーチャルマシンから退出する前に行われる、請求項13に記載の装置。
【請求項15】
前記再暗号化は、第3当事者のコンテンツが前記プロセッサから出力された後に行われる、請求項13に記載の装置。
【請求項16】
前記クライアント供給プログラムは、アプリケーションから受け取られ、前記クライアント供給プログラムは、前記プロセッサとアプリケーションとの間にセキュアな通信チャンネルを確立する、請求項7に記載の装置。
【請求項17】
前記プロセッサとアプリケーションとの間の前記通信チャンネルは、前記プロセッサにおいて導出された暗号値及び少なくとも1つの証明書を使用してセキュア化される、請求項16に記載の装置。
【請求項18】
前記少なくとも1つのバーチャルマシンは、アプリケーションによって供給される保護コンテンツ処理プログラムのインタープリターとして働く、請求項1に記載の装置。
【請求項19】
前記プロセッサは、少なくとも1つのセキュリティプロセッサを含み、そして処理されたコンテンツを、グラフィックプロセッサ、ビデオプロセッサ又はオーディオプロセッサの少なくとも1つに与えるように構成される、請求項1に記載の装置。
【請求項20】
前記プロセッサは、パッケージから解かれたコンテンツキー、及びプログラム実行中に導出される中間暗号値のためのセキュアな機密記憶部を含む、請求項1に記載の装置。
【請求項21】
前記プロセッサの少なくとも1つのバーチャルマシン内で第2当事者のプログラムにより第3当事者のコンテンツを処理するのに、前記プロセッサが、認可されたシークレットを含むことも、以前に実施された認可アルゴリズムを有することも要求されない、請求項1に記載の装置。
【請求項22】
前記少なくとも1つのバーチャルマシンの設計、及び前記少なくとも1つのバーチャルマシン内の第2当事者のプログラムによる第3当事者のコンテンツの処理は、認可応諾及び頑健性ルールに関して第2当事者により再検討され、これにより、第3当事者のコンテンツに対する適合性を決定できる、請求項1に記載の装置。
【請求項1】
少なくとも1つのプロセッサと、
第2当事者のプログラムを処理するために前記プロセッサ上で具現化される第1当事者の少なくとも1つのセキュアなバーチャルマシンと、
第3当事者のコンテンツを出力用に処理するためにコンピュータ読み取り可能な媒体上で実施される少なくとも1つのプログラムと、
を備えた装置。
【請求項2】
残留する機密プログラム情報、処理されている情報、及び前記少なくとも1つのバーチャルマシンの各々により生成されるエフェメラル変数は、処理後に削除される、請求項1に記載の装置。
【請求項3】
個々のコンテクスト内において前記プロセッサ上で複数のセキュアなバーチャルマシンが具現化される、請求項1に記載の装置。
【請求項4】
前記複数のセキュアなバーチャルマシン間での情報の共有が制限される、請求項3に記載の装置。
【請求項5】
エフェメラル情報の形式、及び前記複数のセキュアなバーチャルマシンにより処理されている情報の記憶が制限される、請求項4に記載の装置。
【請求項6】
前記情報は、保護されたコンテンツの解読に使用されるキー及び中間暗号値を含む、請求項4に記載の装置。
【請求項7】
クライアント供給プログラムを実行して前記保護されたコンテンツを処理するために前記少なくとも1つのバーチャルマシンが設けられる、請求項1に記載の装置。
【請求項8】
前記クライアント供給プログラムは、第3当事者のコンテンツを処理する際に前記クライアント供給プログラムによって使用されるアルゴリズム詳細、シークレット及びキーの機密性を保証するために第2当事者により暗号化される、請求項7に記載の装置。
【請求項9】
前記クライアント供給プログラムは、更に、そのクライアント供給プログラムの完全性を検証できるように第2当事者により署名されると共に、そのクライアント供給プログラムのソースの真正性を検証できるようにする証明書を含む、請求項8に記載の装置。
【請求項10】
第3当事者のコンテンツは、前記少なくとも1つのバーチャルマシンにより処理される前に第3当事者により別々に暗号化される、請求項7に記載の装置。
【請求項11】
前記クライアント供給プログラム、機密アルゴリズム及びシークレットは、前記少なくとも1つのバーチャルマシン内での実行を許す前に、含まれた署名及び証明書を検証することで、解読され認証される、請求項10に記載の装置。
【請求項12】
前記クライアント供給プログラムの処理は、第3当事者のコンテンツを解読することを含む、請求項10に記載の装置。
【請求項13】
前記処理は、更に、第3当事者のコンテンツ又は第3当事者のコンテンツ内のストリームの1つ以上の部分のうちの少なくとも1つを再暗号化することを含む、請求項12に記載の装置。
【請求項14】
前記再暗号化は、第3当事者のコンテンツが前記少なくとも1つのバーチャルマシンから退出する前に行われる、請求項13に記載の装置。
【請求項15】
前記再暗号化は、第3当事者のコンテンツが前記プロセッサから出力された後に行われる、請求項13に記載の装置。
【請求項16】
前記クライアント供給プログラムは、アプリケーションから受け取られ、前記クライアント供給プログラムは、前記プロセッサとアプリケーションとの間にセキュアな通信チャンネルを確立する、請求項7に記載の装置。
【請求項17】
前記プロセッサとアプリケーションとの間の前記通信チャンネルは、前記プロセッサにおいて導出された暗号値及び少なくとも1つの証明書を使用してセキュア化される、請求項16に記載の装置。
【請求項18】
前記少なくとも1つのバーチャルマシンは、アプリケーションによって供給される保護コンテンツ処理プログラムのインタープリターとして働く、請求項1に記載の装置。
【請求項19】
前記プロセッサは、少なくとも1つのセキュリティプロセッサを含み、そして処理されたコンテンツを、グラフィックプロセッサ、ビデオプロセッサ又はオーディオプロセッサの少なくとも1つに与えるように構成される、請求項1に記載の装置。
【請求項20】
前記プロセッサは、パッケージから解かれたコンテンツキー、及びプログラム実行中に導出される中間暗号値のためのセキュアな機密記憶部を含む、請求項1に記載の装置。
【請求項21】
前記プロセッサの少なくとも1つのバーチャルマシン内で第2当事者のプログラムにより第3当事者のコンテンツを処理するのに、前記プロセッサが、認可されたシークレットを含むことも、以前に実施された認可アルゴリズムを有することも要求されない、請求項1に記載の装置。
【請求項22】
前記少なくとも1つのバーチャルマシンの設計、及び前記少なくとも1つのバーチャルマシン内の第2当事者のプログラムによる第3当事者のコンテンツの処理は、認可応諾及び頑健性ルールに関して第2当事者により再検討され、これにより、第3当事者のコンテンツに対する適合性を決定できる、請求項1に記載の装置。
【図1A】
【図1B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図1B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2010−140470(P2010−140470A)
【公開日】平成22年6月24日(2010.6.24)
【国際特許分類】
【外国語出願】
【出願番号】特願2009−242567(P2009−242567)
【出願日】平成21年10月21日(2009.10.21)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(501261300)エヌヴィディア コーポレイション (166)
【Fターム(参考)】
【公開日】平成22年6月24日(2010.6.24)
【国際特許分類】
【出願番号】特願2009−242567(P2009−242567)
【出願日】平成21年10月21日(2009.10.21)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(501261300)エヌヴィディア コーポレイション (166)
【Fターム(参考)】
[ Back to top ]