(57)【要約】【課題】機密コンテンツをセキュアに処理する。【解決手段】出力用に第３当事者のコンテンツを処理するためにプロセッサで実施されるセキュアなバーチャルマシンシステム、方法及びプログラム製品が提供される。少なくとも１つのプロセッサが設けられ、第３当事者のコンテンツを処理して出力する第２当事者のプログラムを解釈するためプロセッサで実施されるセキュアなバーチャルマシンが設けられる。バーチャルマシンシステムは、同じプログラムを同様に実行するため、実施変更を許すように基礎的なプロセッサを抽象化する。プログラムによる潜在的なセキュリティ漏洩を軽減し、第２当事者の機密性と第２当事者のプログラムにより管理される第３当事者のコンテンツとを確保するため、プログラム可能な操作の範囲、入力及び出力変数形式、並びにプロセッサ内でのプログラム実行がバーチャルマシン環境内で制限される。【選択図】図２
2010140470.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと、
第２当事者のプログラムを処理するために前記プロセッサ上で具現化される第１当事者の少なくとも１つのセキュアなバーチャルマシンと、
第３当事者のコンテンツを出力用に処理するためにコンピュータ読み取り可能な媒体上で実施される少なくとも１つのプログラムと、
を備えた装置。
【請求項２】
残留する機密プログラム情報、処理されている情報、及び前記少なくとも１つのバーチャルマシンの各々により生成されるエフェメラル変数は、処理後に削除される、請求項１に記載の装置。
【請求項３】
個々のコンテクスト内において前記プロセッサ上で複数のセキュアなバーチャルマシンが具現化される、請求項１に記載の装置。
【請求項４】
前記複数のセキュアなバーチャルマシン間での情報の共有が制限される、請求項３に記載の装置。
【請求項５】
エフェメラル情報の形式、及び前記複数のセキュアなバーチャルマシンにより処理されている情報の記憶が制限される、請求項４に記載の装置。
【請求項６】
前記情報は、保護されたコンテンツの解読に使用されるキー及び中間暗号値を含む、請求項４に記載の装置。
【請求項７】
クライアント供給プログラムを実行して前記保護されたコンテンツを処理するために前記少なくとも１つのバーチャルマシンが設けられる、請求項１に記載の装置。
【請求項８】
前記クライアント供給プログラムは、第３当事者のコンテンツを処理する際に前記クライアント供給プログラムによって使用されるアルゴリズム詳細、シークレット及びキーの機密性を保証するために第２当事者により暗号化される、請求項７に記載の装置。
【請求項９】
前記クライアント供給プログラムは、更に、そのクライアント供給プログラムの完全性を検証できるように第２当事者により署名されると共に、そのクライアント供給プログラムのソースの真正性を検証できるようにする証明書を含む、請求項８に記載の装置。
【請求項１０】
第３当事者のコンテンツは、前記少なくとも１つのバーチャルマシンにより処理される前に第３当事者により別々に暗号化される、請求項７に記載の装置。
【請求項１１】
前記クライアント供給プログラム、機密アルゴリズム及びシークレットは、前記少なくとも１つのバーチャルマシン内での実行を許す前に、含まれた署名及び証明書を検証することで、解読され認証される、請求項１０に記載の装置。
【請求項１２】
前記クライアント供給プログラムの処理は、第３当事者のコンテンツを解読することを含む、請求項１０に記載の装置。
【請求項１３】
前記処理は、更に、第３当事者のコンテンツ又は第３当事者のコンテンツ内のストリームの１つ以上の部分のうちの少なくとも１つを再暗号化することを含む、請求項１２に記載の装置。
【請求項１４】
前記再暗号化は、第３当事者のコンテンツが前記少なくとも１つのバーチャルマシンから退出する前に行われる、請求項１３に記載の装置。
【請求項１５】
前記再暗号化は、第３当事者のコンテンツが前記プロセッサから出力された後に行われる、請求項１３に記載の装置。
【請求項１６】
前記クライアント供給プログラムは、アプリケーションから受け取られ、前記クライアント供給プログラムは、前記プロセッサとアプリケーションとの間にセキュアな通信チャンネルを確立する、請求項７に記載の装置。
【請求項１７】
前記プロセッサとアプリケーションとの間の前記通信チャンネルは、前記プロセッサにおいて導出された暗号値及び少なくとも１つの証明書を使用してセキュア化される、請求項１６に記載の装置。
【請求項１８】
前記少なくとも１つのバーチャルマシンは、アプリケーションによって供給される保護コンテンツ処理プログラムのインタープリターとして働く、請求項１に記載の装置。
【請求項１９】
前記プロセッサは、少なくとも１つのセキュリティプロセッサを含み、そして処理されたコンテンツを、グラフィックプロセッサ、ビデオプロセッサ又はオーディオプロセッサの少なくとも１つに与えるように構成される、請求項１に記載の装置。
【請求項２０】
前記プロセッサは、パッケージから解かれたコンテンツキー、及びプログラム実行中に導出される中間暗号値のためのセキュアな機密記憶部を含む、請求項１に記載の装置。
【請求項２１】
前記プロセッサの少なくとも１つのバーチャルマシン内で第２当事者のプログラムにより第３当事者のコンテンツを処理するのに、前記プロセッサが、認可されたシークレットを含むことも、以前に実施された認可アルゴリズムを有することも要求されない、請求項１に記載の装置。
【請求項２２】
前記少なくとも１つのバーチャルマシンの設計、及び前記少なくとも１つのバーチャルマシン内の第２当事者のプログラムによる第３当事者のコンテンツの処理は、認可応諾及び頑健性ルールに関して第２当事者により再検討され、これにより、第３当事者のコンテンツに対する適合性を決定できる、請求項１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明は、プレミアムオーディオ／ビデオコンテンツの処理に係り、より詳細には、コンテンツプレーヤアプリケーションが実行されるプロセッサコンテクスト以外でのコンテンツ処理に係る。
【背景技術】
【０００２】
[0002]従来のコンピューティング環境では、コンテンツの処理がしばしば個別プロセッサによって実行される。例えば、高鮮明度コンテンツをデコードするためのハードウェアプロセッサを設けることができる。今日まで、必要な全てのコンテンツ処理を単一チップに統合することは困難であった。更に、完全に実施するには、典型的に、実施者が、第３当事者コンテンツの認可された採用者となって、認可されたコンテンツを処理するアルゴリズムを使用するための権利を得、且つ暗号化されたコンテンツを抽出するための認可保持者キーを得ることが必要である。このような認可は、典型的に、実施上の不備が機密情報又はコンテンツを危うくする場合に、認可発行者シークレットの機密性、責務及び法的改善を保証するための応諾性及び頑健性ルールを含む。従って、第２当事者認可保持者のソフトウェアアプリケーションは、典型的に、再暗号化されたビデオコンテンツをグラフィックス又はビジュアルプロセッサへより一般的なフォーマットで転送する前に中央処理ユニット等を使用してコンテンツを少なくとも部分的に処理することに依存している。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
[0003]不都合なことに、中央処理ユニットに依存することは、幾つかの制約を表す。例えば、ＣＰＵで実行されるアプリケーション内で認可保持者キー及びアルゴリズムをハンドリングする場合、処理中のある点で、プロセッサ内部にこの機密情報を露呈することを必然的に伴う。前記機密プロセスやシークレットを使用してコンテンツを処理する場合、このようなユニットへの及びユニットからの伝送を伴い、セキュリティの弱点になり得る。更に、不正変更防止技術を使用しても、バーチャル化のために設計された中央プロセッサ内での実行は、例えば、ハイパーバイザー、又は実行中のバーチャルマシンよりプライオリティの高い実行コンテクストから、頑健な不正変更防止実行環境を保証できない事態を招く。更に、中央処理ユニットは、コンピュータアーキテクチャーの汎用性のために、幾つかの形式の処理（例えば、暗号化、等）については、効率が悪い。付加的な不正変更防止及び再暗号化プロセスは、ＣＰＵの過剰利用や、不経済なほどの過度の利用を招き、コンテンツ再生中にバッテリ寿命の短縮を招く。従って、従来技術に関連したこれら及び／又は他の問題に対処することが必要となる。
【課題を解決するための手段】
【０００４】
[0004]出力用にコンテンツを処理するためにプロセッサにおいて実施されるセキュアなバーチャルマシンシステム、方法及びコンピュータプログラム製品が提供される。少なくとも１つのプロセッサが設けられる。更に、第３当事者のコンテンツを処理して出力する第２当事者のプログラムを解釈するためにプロセッサにおいて実施される少なくとも１つのセキュアなバーチャルマシンが設けられる。バーチャルマシンシステムは、同じプログラムを同一に実行するために、製品にわたる実施変更を許すように基礎的なプロセッサハードウェアを抽象化する。更に、プログラムによる潜在的なセキュリティ漏洩を軽減すると共に、第２当事者のシークレットの機密性、及び第２当事者のプログラムにより管理される第３当事者のコンテンツを確保するために、プログラム可能なオペレーションの範囲、入力及び出力変数の形式、並びにプロセッサ内でのプログラムの実行がバーチャルマシン環境内で慎重に制限される。
【図面の簡単な説明】
【０００５】
【図１Ａ】一実施形態によりコンテンツを解読するキーを生成するためにプロセッサを使用してプログラムを実行する方法を示す図である。
【図１Ｂ】一実施形態により出力のコンテンツを処理するためにプロセッサにおいて実施されるセキュアなバーチャルマシンを示す図である。
【図２】一実施形態によりコンテンツを解読するキーを生成するためにプロセッサを使用してプログラムを生成し、セキュア化し、実行するシステムを示す図である。
【図３】一実施形態によりインタープリターを使用して受け取ったプログラム及びコンテンツを解釈する方法を示す図である。
【図４】一実施形態により受け取ったプログラム及びコンテンツを解釈するためにプロセッサ及びセキュアなバーチャルマシンを含むシステムを示す図である。
【図５】一実施形態によりセキュアなバーチャルマシンを使用してタイトルキーを抽出する方法を示す図である。
【図６】一実施形態によりセキュアなバーチャルマシンを使用してコンテンツストリームを解読する方法を示す図である。
【図７】一実施形態によりセキュアなバーチャルマシンを使用してコンテンツストリームをパッチし再暗号化する方法を示す図である。
【図８】一実施形態によりコンテンツを解読するキーを生成するためのプログラムを生成する方法を示す図である。
【図９】一実施形態によりコンテンツを解読するキーを生成するためのプログラムをセキュア化するシステムを示す図である。
【図１０】一実施形態によりコンテンツを解読するキーを生成するためのプログラムを生成してセキュア化する方法を示す図である。
【図１１】種々の先行する実施形態の種々のアーキテクチャー及び／又は機能を実施できる例示的システムを示す図である。
【発明を実施するための形態】
【０００６】
[0017]図１Ａは、一実施形態によりコンテンツを解読するキーを生成するためにプロセッサを使用してプログラムを実行する方法１００を示す。図示されたように、コンテンツを解読するプログラムが生成される。オペレーション１０２を参照されたい。プログラムが生成されると、プログラムがセキュア化される。オペレーション１０４を参照されたい。一実施形態では、プログラムは、暗号化されることでセキュア化されてもよい。
【０００７】
[0018]本説明の文脈において、プログラムとは、プロセッサを使用して実行できるプログラムを指す。一実施形態では、プログラムは、コンテンツを解読するキーを生成することのできるプログラムを含み、ここで、コンテンツとは、暗号化することのできるデータを指す。オプションとして、コンテンツは、専有情報を含んでもよい。
【０００８】
[0019]この場合、コンテンツと、コンテンツを解読するキーを生成するためのプログラムとが、プロセッサに受け取られる。オペレーション１０６を参照されたい。更に、コンテンツを解読するためにプロセッサを使用してプログラムを実行することができる。オペレーション１０８を参照されたい。
【０００９】
[0020]本説明の文脈において、プロセッサとは、表示用のデータを処理することのできるプロセッサを指す。例えば、種々の実施形態において、プロセッサは、グラフィックプロセッサ及びビデオプロセッサの少なくとも１つを含むことができる。一実施形態では、プロセッサは、出力のコンテンツを処理するためにプロセッサにおいて実施される少なくとも１つのセキュアなバーチャルマシンを含んでもよい。
【００１０】
[0021]図１Ｂは、一実施形態により出力のコンテンツを処理するためにプロセッサ１５２において実施されるセキュアなバーチャルマシン１５０を示す。図示されたように、少なくとも１つのプロセッサ１５２が設けられる。更に、このプロセッサにおいて実施される少なくとも１つのセキュアなバーチャルマシン１５０が、出力のコンテンツを処理するために設けられる。
【００１１】
[0022]オペレーションにおいて、プログラム及びコンテンツをプロセッサ１５２により入力として受け取ることができる。一実施形態では、バーチャルマシン１５０は、コンテンツを処理するプログラムを実行することができる。例えば、コンテンツは、バーチャルマシン１５０により処理される前に暗号化されてもよい。この場合、処理は、コンテンツの解読を含んでもよい。
【００１２】
[0023]処理は、更に、コンテンツを再暗号化してもよい。オプションとして、再暗号化は、コンテンツがプロセッサ１５２から出力される前に行われてもよい。オプションとして、再暗号化は、コンテンツがプロセッサから出力された後に行われてもよい。
【００１３】
[0024]一実施形態では、プロセッサ１５２において複数のセキュアなバーチャルマシン１５０を実施することができる。この場合に、バーチャルマシン１５２との間での情報の共有が制約されることがある。例えば、バーチャルマシン１５２により処理される情報が制約を受ける。一実施形態では、この情報は、キーを含んでもよい。
【００１４】
[0025]ユーザの希望で、以上のフレームワークと共に実施してもしなくてもよい種々の任意のアーキテクチャー及び特徴に関して更に例示的な情報を以下に述べる。以下の情報は例示の目的で述べるもので、何ら限定するものと解釈されるべきでないことを強く注意されたい。以下のいずれかの特徴を、他に述べる特徴を除外して合体するか除外せずに合体するかは任意でよい。
【００１５】
[0026]図２は、一実施形態によりコンテンツを解読するキーを生成するためにプロセッサを使用してプログラムを生成し、セキュア化し、実行するシステム２００を示す。オプションとして、このシステム２００は、図１Ａ及び図１Ｂの状況及び詳細において実施されてもよい。しかしながら、当然、システム２００は、いかなる望ましい環境において実施されてもよい。又、この説明の間に前記定義を適用できることにも注意されたい。
【００１６】
[0027]オペレーションにおいて、媒体２０２からコンテンツを受け取ることができる。この場合、コンテンツは、暗号化されてもよい。例えば、コンテンツは、キーを使用して暗号化されてもよい。図示されたように、コンテンツは、認可されたプレーヤベンダー又は他の独立したソフトウェアベンダー（ＩＳＶ）２０４により受け取られる。更に、プレーヤＩＳＶ２０４は、コンテンツを処理するためにプロセッサ（例えば、グラフィックプロセッサ、等）２５０において実行するためのプログラム２０６を受け取ることができる。オプションとして、プログラム２０６は、アプリケーションを実行する結果としてメモリ２２８からプレーヤＩＳＶ２０４によりフェッチされてもよい。
【００１７】
[0028]プログラムをフェッチした後、プレーヤ２０４は、プログラム２０６をグラフィックプロセッサ２５０へ送り出すことができる。一実施形態では、プログラム２０６は、これがプロセッサ２５０へ送り出される前に、プレーヤＩＳＶ２０４により暗号化されてもよい。
【００１８】
[0029]例えば、プログラム２０６は、プレーヤＩＳＶ２０４により生成され、次いで、暗号化されることでセキュア化される。一実施形態では、プログラム２０６は、プロセッサ２５０がコンテンツを受け取れるようにするアプリケーション（例えば、コンテンツプレーヤ、等）によって使用される。この場合に、プログラム２０６は、アプリケーションによりセキュア化することができる。従って、プログラム２０６は、コンテンツに基づき、アプリケーションによってメモリ２２８から検索されてもよい。
【００１９】
[0030]一実施形態では、プログラム２０６は、アプリケーションにより検索される前に暗号化することができる。例えば、プログラム２０６は、アプリケーションにより検索される前に、パブリックキーを使用して暗号化することができる。この場合に、パブリックキー２０６は、プロセッサ２５０の製造者により準備されてもよい。
【００２０】
[0031]別のオプションとして、プログラム２０６は、アプリケーションにより検索された後に暗号化されてもよい。この場合、プログラム２０６は、ランタイム中にアプリケーションにより検索された後に暗号化されてもよい。更に、プログラム２０６は、エフェメラルキーを使用して暗号化されてもよい。例えば、このエフェメラルキーは、プロセッサ２５０のみに記憶される情報を使用して生成されてもよい。一実施形態では、プログラム２０６は、アプリケーションとプロセッサ２５０との間で交換される少なくとも１つの証明書を使用して暗号化されてもよい。
【００２１】
[0032]プロセッサ２５０により受け取られると、インタープリター２０８は、コンテンツからタイトルキー２１０を導出するのに使用される。この場合、インタープリター２０８は、タイトルキー２１０を導出するためにプロセッサ２５０により受け取られたプログラム２０６を実行できるセキュアなバーチャルマシン（ＶＭ）の一部分であるとみなされてもよい。従って、プログラム２０６は、バーチャルマシンがコンテンツを処理し、タイトルキー２１０を導出し、コンテンツをハンドリングし（例えば、コンテンツをオーディオ及びビデオストリーム、等に分割することにより）、そしてコンテンツを再暗号化するのを許す情報を含むことができる。
【００２２】
[0033]一実施形態では、バーチャルマシンにより処理されるコンテンツは、処理の前に暗号化されてもよい。この場合に、処理は、コンテンツを解読することを含んでもよい。更に、処理は、コンテンツを再暗号化することを含んでもよい。例えば、再暗号化は、コンテンツがプロセッサ２５０から出力される前に行われてもよい。
【００２３】
[0034]上述したように、プログラムは、アプリケーションから受け取られてもよい。この場合、プロセッサ２５０とアプリケーションとの間の通信チャンネルをセキュア化することができる。例えば、少なくとも１つの証明書を使用して、プロセッサ２５０とアプリケーションとの間の通信チャンネルをセキュア化することができる。
【００２４】
[0035]一実施形態では、セキュアなバーチャルマシンは、コンテンツをオーディオ及びビデオストリームへ分割するのに使用できる逆多重化部２１２を含むことができる。更に、プログラム２０６は、バーチャルマシンに関連した再暗号化ビデオモジュール２２０及び再暗号化オーディオモジュール２１４が、コンテンツを、出力（例えば、表示、等）の前に、再暗号化するのを許す情報を含むことができる。ビデオ及びオーディオストリームの再暗号化は、任意であることに注意されたい。
【００２５】
[0036]システム２００を使用して、コンテンツと、コンテンツを解読する暗号キーを生成するのに使用されるプログラム２０６をプロセッサ２５０により受け取ることができ、このプログラム２０６は、コンテンツの解読に使用することができる。更に、プロセッサ２５０を使用してキーを解読することもできる。
【００２６】
[0037]一実施形態では、キーは、コンテンツに関連した少なくとも１つのコンテンツキーと、コンテンツ及びプログラム２０６が受け取られるようにするアプリケーションに関連した少なくとも１つのアプリケーションキーとを含むことができる。次いで、プロセッサ２５０は、コンテンツキー及びアプリケーションキーを処理して、タイトルキー２１０を生成することができる。この場合、タイトルキー２１０は、コンテンツを解読するのに使用できる。従って、プレーヤＩＳＶ２０４に関連した中央処理ユニット（ＣＰＵ）へのキーの露呈を防止することができる。
【００２７】
[0038]コンテンツが分割されると、ビデオコンテンツは、デコーディングのためにビデオデコードモジュール２２２へ送られ、フレームバッファ２２４にピクセルとして記憶され、次いで、ディスプレイ２２６へ出力される。オーディオコンテンツは、ＰＣＩＥバスを経て解読モジュール２１６（例えば、プレーヤＩＳＶ２０４に関連した）へ送られ、最終的に、出力のためにオーディオスタック２１８へ送られる。
【００２８】
[0039]このように、グラフィック処理ユニット（ＧＰＵ）と、このＧＰＵにおいてセキュアな埋設バーチャルマシンを実行できるセキュアなマイクロコード（即ち、ファームウェア）と、ソフトウェアプレーヤベンダーが媒体に対する処理（例えば、ＡＡＣＳ処理、等）をセキュアにオフロードするのを集合的に許すプレーヤＩＳＶのＣＰＵにおいて実行されるグラフィックドライバソフトウェアとを含むシステムを実施することができる。（例えば、ＡＡＣＳに使用されるもののような）キーハンドリング、コンテンツストリーム解読及び構文解析、並びにコンテンツストリーム変更プロセスの処理ステップをＧＰＵにおけるセキュアな埋設プロセッサへ移動し、そしてこれらのステップを、複数のコンテンツ形式に適用するように抽象化することにより、装置キー及びシーケンスキー、媒体、並びにプレーヤＩＳＶに関連したタイトルキーに対する保護を与えることができる。更に、プレミアムビデオコンテンツを、圧縮、非デコード及び非暗号化形態で与えることができる。
【００２９】
[0040]加えて、プレーヤＩＳＶは、オーディオ／ビデオ（ＡＶ）コンテンツ（例えば、ＡＡＣＳ保護のＡＶストリームデータ、等）の処理に関連したＣＰＵ利用及び電力消費の大半を構成し得る、ビデオ基本的ストリームの解読及び再暗号化タスクを軽減することができる。更に、システム２００を使用して、複数のコンテンツ形式、暗号化、及びキー認可モデルを実施しサポートすることができる。
【００３０】
[0041]従って、ＣＰＵにおける及びバスを横切る非保護のコンテンツ及びキーの流れを回避することができる。例えば、セキュアなプロセスがＧＰＵにおいて実行されるコンテクストは、ハードウェアによりセキュア化することができ、そしてプレーヤＩＳＶにより検証できるチッププライベート／パブリックキーを使用して、バーチャルマシンに使用されるメモリをセキュア化し、プログラムに署名することができる。
【００３１】
[0042]図３は、一実施形態によりインタープリターを使用して、受け取ったプログラム及びコンテンツを解釈する方法３００を示す。オプションとして、この方法３００は、図１〜図２の機能及びアーキテクチャーに関して実施することができる。例えば、一実施形態では、方法３００は、図２のインタープリター２０８の細部に関して実施される。しかしながら、当然、方法３００は、いかなる望ましい環境において実施されてもよい。この場合も、この説明の間に前記定義が適用される。
【００３２】
[0043]図示されたように、バイトコードイメージが受け取られる。オペレーション３０２を参照されたい。一実施形態では、バイトコードイメージは、プレーヤＩＳＶからＧＰＵにより受け取ることができる。この場合、バイトコードイメージは、プレーヤＩＳＶにより送られたプログラムに関連したコードを含むことができる。
【００３３】
[0044]バイトコードイメージが受け取られると、バイトコードイメージの署名がチェックされる。オペレーション３０４を参照されたい。この場合、チェックは、信頼性のあるソースに関連した署名を検証することを含む。次いで、バイトコードイメージを解読することができる。オペレーション３０６を参照されたい。バイトコードイメージが解読されると、バイトコードを解釈することができる。オペレーション３０８を参照されたい。
【００３４】
[0045]図４は、一実施形態により、受け取ったプログラム及びコンテンツを解釈するためにプロセッサ４０２及びセキュアなバーチャルマシン４０４を含むシステム４００を示す。オプションとして、システム４００は、図１から３の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、システム４００は、いかなる望ましい環境において実施されてもよい。更に、この説明の間に前記定義が適用される。
【００３５】
[0046]図示されたように、システム４００は、１つ以上のセキュアな埋設プロセッサ４０６と、この埋設プロセッサ４０６によりホストされるセキュアなバーチャルマシン４０４とを含むＧＰＵ４０２を備えている。セキュアなバーチャルマシン４０４は、署名されたセキュアなマイクロコードのインタープリターを備え、これは、暗号プリミティブと、ビデオストリームハンドリング及びパッチングにおけるプリミティブとを遂行できるバイトコードインストラクションをサポートする。このインタープリターを使用して、バーチャルマシン４０４は、プレーヤＩＳＶにより与えられるプログラムを解釈するためのインタープリターとして働くことができる。
【００３６】
[0047]セキュアなバーチャルマシン４０４は、更に、ハードウェア暗号エンジン、例えば、ＡＥＳ又はＳＨＡ−１プリミティブ、等を含むことができる。加えて、セキュアなバーチャルマシン４０４は、機密メモリのセキュアなサンドボックスを含むこともでき、これは、エンジンに対してはアクセス不能であるが、バーチャルマシン４０４の外部から（例えば、ＣＰＵ又はＧＰＵレンダラー、等から）アクセスすることができる。
【００３７】
[0048]更に、バーチャルマシン４０４において実行するためのセキュアなバイトコードが設けられる。この場合、セキュアなバイトコードは、ＩＳＶによりＧＰＵ４０２へ与えられるプログラムに関連したバイトコードである。例えば、バイトコードは、認可されたコンテンツメカニズムのコアワークを遂行するために、認可されたプレーヤＩＳＶにより生成することができる。従って、バイトコードを使用して、バーチャルマシン４０４内でコンテンツ及びキーの処理を遂行することができ、コンテンツ及びキーは、ＧＰＵ４０２により受け取られる。
【００３８】
[0049]又、セキュアなバーチャルマシン４０４は、チッププライベート及びパブリックキーと、承認された当局により署名された証明書とにアクセスすることができ、これは、署名されたＩＳＶコードをセキュアなバーチャルマシン４０４内で実行するのを許す。更に、これらのキーは、プレーヤＩＳＶが、ＩＳＶシークレットを安全に暗号化するのを許すと共に、それらシークレットを、信頼性のあるバーチャルマシン４０４内で使用された状態で一度しか見られないことを保証する。これらのキーは、更に、プレーヤＩＳＶが、有能なＧＰＵを、コンテンツデコードの実行をなすための信頼性のあるエンドポイントとして確認するのを許す。
【００３９】
[0050]又、セキュアなバーチャルマシン４０４は、そのセキュアなバーチャルマシン４０４のキー部分を暗号化する能力を許し、実行の後にそれをメモリへページアウトして、異なるコンテンツストリームをサポートするセキュアなバーチャルマシン４０４の別のコンテンツに置き換えることができる。更に、セキュアなバーチャルマシン４０４のコンテンツを消去して、シークレットが後に残らないようにすることもできる。例えば、バーチャルマシン４０４により処理されている情報は、処理後に削除されることもある。
【００４０】
[0051]セキュアなバーチャルマシン４０４は、更に、ＣＰＵにおいて実行されるグラフィックドライバ（例えば、ソフトウェア）であって、ソフトウェアコンテンツプレーヤベンダーが、バーチャルマシン４０４へのセキュアなバイトコードのロード動作をネゴシエーションするのを集合的に許すようなグラフィックドライバを含むことができる。更に、セキュアなバーチャルマシン４０４は、ＩＳＶ認可保持者のポーティングタイトル解読をサポートし、プログラム（例えば、アッセンブリ又はＣ、等で書かれた）をコンパイルし、そしてインタープリターによりサポートされるバイトコードを放出するのに必要なコンパイラー及びツールを含むことができる。
【００４１】
[0052]図５は、一実施形態によりセキュアなバーチャルマシンを使用してタイトルキーを抽出する方法５００を示す。オプションとして、この方法５００は、図１から図４の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、方法５００は、いかなる望ましい環境において実施されてもよい。この場合も、この説明の間に前記定義が適用される。
【００４２】
[0053]オペレーションにおいて、プレーヤＩＳＶコード又はプログラムは、機密キーグループを解読するプロセスを記述することができる。このコードは、コンテンツストリームを解読するタイトルキーを形成するために他のコンテンツキー及びポリシーと共に使用される。この場合、ＩＳＶプログラムは、解読を許すために識別されたランタイム変数（例えば、即時間接的変数、ローカル変数、ストリーム及びバッファポインタ、等）を使用するインタープリターのためのコマンドを含むことができる。このプログラムは、ＧＰＵ及びＩＳＶが信頼できるものとして確認するキーを使用して署名される。
【００４３】
[0054]タイトルキーが抽出されると、セキュアなバーチャルマシンを使用してコンテンツストリームを解読することができる。図６は、一実施形態によりセキュアなバーチャルマシンを使用してコンテンツストリームを解読する方法６００を示す。オプションとして、この方法６００は、図１から図５の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、方法６００は、いかなる望ましい環境において実施されてもよい。この説明の間には、前記定義が適用される。
【００４４】
[0055]ＩＳＶコードは、ディスク、ネットワーク又は他の媒体からコピーされるストリームのコンテンツを解読するためにタイトルキー抽出中に記憶されるタイトルキーを使用してプロセスを記述することができる。その出力は、その後のプロセスのためにバーチャルマシン内に留めることができる。
【００４５】
[0056]コンテンツストリームが解読されると、セキュアなバーチャルマシンを使用してコンテンツストリームをパッチ及び再暗号化することができる。図７は、一実施形態によりセキュアなバーチャルマシンを使用してコンテンツストリームをパッチし再暗号化する方法７００を示す。オプションとして、この方法７００は、図１から図６の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、方法７００は、いかなる望ましい環境において実施されてもよい。この場合も、この説明の間に前記定義が適用される。
【００４６】
[0057]オペレーションにおいて、ＩＳＶプログラムは、変換記述子に基づきコンテンツストリームをパッチするのに必要なコマンドをカプセル化することができる。コンテンツストリームは、オーディオを付加的な処理のためにプレーヤＩＳＶへ又はオフチップオーディオデコーダへ返送するために分割され再暗号化される。
【００４７】
[0058]オプションとして、コンテンツストリームは、その後のオンチップビデオデコーダにおいて消費されるべくビデオポートへと分割されてもよい。この場合に、コンテンツは、非暗号化形態のままとされ、コンテンツは、ビデオデコーダ以外のものにはアクセス不能である特別扱いのメモリに機密裡にセーブすることができる。
【００４８】
[0059]一実施形態では、プレーヤＩＳＶにより与えられるプログラムは、インタープリターが１つの個別のオペレーションとして完了するための個別のコマンドを含むことができる。例えば、種々の実施形態において、これらのコマンドは、表１に示す共通オペレーションのための暗号プリミティブを含むことができる。
【００４９】
[0060]
【表１】
2010140470.tif 000003
[0061]一実施形態では、これらのプリミティブは、ＧＰＵの埋設コントローラにおいて実行されるように最適化された予めコード化されたルーチンを含むことができる。別の実施形態では、これらのプリミティブは、性能に敏感なオペレーションを直接的に加速するハードウェアエンジンにより実行を抽象化するインターフェイスラッパーでよい。
【００５０】
[0062]別のオプションでは、これらプリミティブは、セキュアなバーチャルマシンにおけるハウスキーピングオペレーションを含むことができる。表２は、一実施形態による幾つかのハウスキーピングオペレーションを示す。
【００５１】
[0063]
【表２】
2010140470.tif 000004
[0064]一実施形態では、バーチャルマシンによりディフィー・ヘルマンのキー交換を行うことができる。解釈されたコードで書かれたステップごとのディフィー・ヘルマンのキー交換が、一実施形態により、表３に示されている。
【００５２】
[0065]
【表３】
2010140470.tif 000005
[0066]別の実施形態では、プログラムは、中間アキュムレータを使用してバイトごとに繰り返しオペレーションを遂行して全体的なプロセスサブルーチンを形成するための１組の複雑なオペレーションを表現することができる。このようなループが生じる場合には、サブルーチンは、実行時に再解釈を要求しないプロセッサマイクロコードで作られた固有のオペレーションを使用して、より効率的な形態へと最適に再コンパイルすることができる。次いで、宣言がなされると、サブルーチンは、マクロレベルにおいて個別のステップとして遂行することができる。
【００５３】
[0067]バーチャルマシンのサブルーチンとして書かれたＲＣ４暗号化アルゴリズムの一例が、一実施形態により、表４に示されている。
【００５４】
[0068]
【表４】
2010140470.tif 000006
[0069]セキュアなバーチャルマシンをバーチャルプロセスと共に使用することで、ビデオデコーダハードウェアが既に（例えば、ＧＰＵ、等に）存在する場合にキーの処理及びストリームの構文解析をハンドリングするためのセキュアな実行環境を提供し、これにより、非保護のコンテンツ及びキーがＣＰＵ内に及びバスを横切って流れるのを回避することに注意されたい。更に、セキュアなバーチャルマシンを使用することで、バーチャルマシンへのコンテンツを解読するキーを生成するプログラムを送出することによりＧＰＵが認可された装置となることを必要とせずに、第３当事者の認可保持者がＧＰＵの認可されたコンテンツに対するセキュアな準拠デコーダを生成するという能力を提供する。
【００５５】
[0070]図８は、一実施形態によりコンテンツを解読するキーを生成するためのプログラムを生成する方法８００を示す。オプションとして、この方法８００は、図１から図７の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、方法８００は、いかなる望ましい環境において実施されてもよい。この説明の間に前記定義が適用される。
【００５６】
[0071]図示されたように、解釈言語仕様が与えられる。オペレーション８０２を参照されたい。この場合、プレーヤＩＳＶには、プロセッサの製造者により解釈言語仕様を与えることができる。例えば、この言語仕様は、インタープリターを含むセキュアなバーチャルマシンのための仕様を含む。一実施形態では、この仕様は、コンテンツを解読するキーを生成するプログラムの生成に使用されるべきプログラミング言語を含むことができる。
【００５７】
[0072]次いで、プログラムが書き込まれる。オペレーション８０４を参照されたい。例えば、プログラムは、解釈言語仕様に基づき、プレーヤＩＳＶによりソースコードで書き込まれてもよい。次いで、プログラムは、処理のためにコンパイラー及び／又はインタープリターのようなツールを通して実行される。オペレーション８０６を参照されたい。
【００５８】
[0073]処理の結果として、バイトコードが生成される。オペレーション８０８を参照されたい。このバイトコードは、ランタイム中にバーチャルマシンにより処理するために使用されるべきコードを含んでもよい。
【００５９】
[0074]次いで、バイトコードは、暗号署名プロセスに入力される。オペレーション８１０を参照されたい。一実施形態では、暗号署名プロセスは、プロセッサの製造者によって与えられるプロセスでよい。暗号署名プロセスを実施した後、埋設可能な暗号イメージが与えられる。この暗号イメージは、次いで、ＩＳＶプレーヤのプログラムへ埋設されて、プレーヤがランタイムオペレーション中に処理のためにＧＰＵのバーチャルマシンへプログラムを与えることができるようにする。
【００６０】
[0075]図９は、一実施形態によりコンテンツを解読するキーを生成するためのプログラムをセキュア化するシステム９００を示す。オプションとして、このシステム９００は、図１から図７の機能及びアーキテクチャーに関して実施することができる。しかしながら、当然、システム９００は、いかなる望ましい環境において実施されてもよい。更に、この説明の間に前記定義が適用される。
【００６１】
[0076]オペレーションにおいて、このシステム９００は、図１０の方法１００として示された、コンテンツを暗号化するキーを生成するためのプログラムをセキュア化する方法を実施するのに使用できる。図１０に示すように、アプリケーションは、署名のための一対のキーＰＡ及びｐＡを生成する。更に、ＧＰＵは、署名のための一対のキーＰＧ及びｐＧ及び暗号化のためのキーＰＳを生成する。
【００６２】
[0077]次いで、ＧＰＵは、ＧＰＵの署名シークレットキーを使用してアプリケーションの署名パブリックキーに署名して、アプリケーションへ送られる証明書（例えば、ＣＥＲＴＧ、等）を生じさせることができる。次いで、アプリケーションは、バーチャルマシンプログラムを暗号化することができる。そのプログラムに署名し、コンパイルすることができる。
【００６３】
[0078]ランタイムに、アプリケーションは、エフェメラルキーシークレット（例えば、ＫＳＫ、等）を確立することができる。ＧＰＵも、エフェメラルキーシークレット（例えば、Ｋ’ＳＫ、等）を導出することができる。次いで、暗号化されたプログラム及びキーがアプリケーションからＧＰＵへ通過される。次いで、インタープリターは、アプリケーションの証明書を解読して検証し、そしてバーチャルマシンプログラムが実行される。
【００６４】
[0079]この技術を使用して、ＧＰＵプロバイダーにより署名するために一対のプライベートキー及びパブリックキーを生成することができる。プライベートキーは、内部署名サーバーに入れられる。パブリックキーは、ＡＰＩ仕様において発行されて、セキュアなインタープリターマイクロコードに埋設される。次いで、ハードウェアシークレット、又はその導出値をチップシークレットキーとして使用し、そしてそれに対応するパブリックキーを暗号化のために導出することができる。
【００６５】
[0080]アプリケーションプロバイダーは、署名のためのプライベートキー及びパブリックキーのそれ自身の対をプライベートに生成することができる。アプリケーションプロバイダーは、ｅ−メール又はｆｔｐを経てＧＰＵプロバイダーへパブリックキーを送出することができる。ＧＰＵプロバイダーは、それらの署名シークレットキーを使用して、アプリケーションプロバイダーの署名パブリックキーに署名することができる。それにより得られる署名は、ＧＰＵプロバイダーによって生成されるアプリケーションプロバイダーの署名パブリックキーのための証明書である。この証明書は、アプリケーションプロバイダーへ返送することができる。
【００６６】
[0081]アプリケーションプロバイダーは、幾つかのインタープリタープログラム及び高機密性の認可シークレット（例えば、プレーヤ／装置キーのような）をプライベートに書き込み、そしてそれをバイナリーへとコンパイルすることができる。アプリケーションプロバイダーは、ＧＰＵプロバイダーのチップパブリックキーのもとでバイナリープログラムをプライベートに暗号化することができる。アプリケーションプロバイダーは、アプリケーションプロバイダーの署名シークレットキーのもとで、暗号化されたバイナリープログラムにプライベートに署名することができる。
【００６７】
[0082]暗号化されたプログラムは、署名及びアプリケーションプロバイダーの証明書と共に、アプリケーションプロバイダーのプレーヤ実行部にスタティックに埋設することができる。ランタイムにおいて、アプリケーションプロバイダーは、ＧＰＵ内のオンチップランダムナンバージェネレータ（ＲＮＧ）を使用してエフェメラルセッションキーシークレットを確立し、そしてこれを使用して、既にスタティックに暗号化されたプログラムをランタイム暗号化ペイロードへと付加的に再暗号化することができる。
【００６８】
[0083]ランタイムに、ＧＰＵのインタープリターは、二重暗号化のペイロード、署名、及び証明書をロードすることができる。インタープリターは、ＧＰＵプロバイダーの署名パブリックキーを使用して、アプリケーションプロバイダーの証明書を検証することができる。又、インタープリターは、アプリケーションプロバイダーの署名パブリックキーを使用して、暗号化されたプログラムを検証することもできる。インタープリターは、ネゴシエーション中にＧＰＵ内部に生成されたエフェメラルセッションキーシークレットを使用してランタイム暗号化ペイロードを解読し、それにより、スタティックに暗号化されたプログラム（まだ暗号化された形態にある）を抽出することができる。
【００６９】
[0084]次いで、インタープリターは、ハードウェアシークレットからＧＰＵプロバイダーのチップシークレットキーを導出し、そして解釈されたプログラムのシークレット及びコンテンツ／プレーヤのシークレットを含むスタティックに暗号化されたプログラムを解読することができる。次いで、インタープリターは、プログラムを安全に実行し、ＧＰＵ内部のセキュアなバーチャルマシン内の高気密性コンテンツシークレットをデリファレンスすることができる。
【００７０】
[0085]エフェメラルセッションキーを生成するのに使用されるシークレットは、ランダムナンバージェネレータから導出されて、ＧＰＵ内にセキュアに保持されるので、ＧＰＵプロバイダーのチップシークレット及び他の署名キーの知識をもつ個人でも、ペイロードを解読することはあり得ない。ＩＳＶがＧＰＵの署名を確認し、インタープリターがＩＳＶのコードを実行するとすれば、ＩＳＶがインタープリター及びセキュアなバーチャルマシンの環境を信頼すると仮定することができ、ＩＳＶは、それが機密情報を漏洩しないと信じるようになる。加えて、バーチャルマシンで実行されるべきコードがＩＳＶにより書き込まれ、実行の前に署名／検証されるとすれば、ＩＳＶは、コンテンツ又は機密シークレットがＧＰＵプロバイダーにも漏れないことを保証する環境を生成することができる。
【００７１】
[0086]ペイロード暗号化プロセスに使用されるシークレットを露呈するリスクを更に軽減するために、第２当事者又は第３当事者、例えば、ＩＳＶ認可保持者、製品認可保持者又はシステムベンダーにより付加的な認可保持者シークレットをＧＰＵへ直接融合することができる。シークレットがＧＰＵプロバイダーでも未知であることを更に保証するために、プログラミングプロセスは、ＧＰＵがＧＰＵプロバイダーの製造及び在庫プロセスを退出した後にいつでもシークレットをセットできるようにする。ＧＰＵベンダーは、例えば、システムベンダーのファシリティにおいてアッセンブル中にＧＰＵがボードに載せられた後に、ＧＰＵへのシークレットの独立したプログラミングを許すためのアクセスを与える。例えば、一実施形態では、シークレットが一回限りのチップヒューズに収容され、これらヒューズは、認可保持者シークレットの値ビットに一致するビットパターンでＧＰＵパッケージの特定ピンに高い電圧を印加することにより切れる。又、一実施形態では、ＧＰＵから読み取ることができず、ＧＰＵの暗号及び他の内部暗号プロセスによりキーとして又は他のキーとの組合せでしか使用できない書き込み専用レジスタに前記ヒューズを適用することによりシークレットが機密裡に保持される。又、一実施形態では、設計上、平易テキスト入力と暗号テキスト出力が外部から見える場合でもキー値の回復を許さないＡＥＳ暗号のキー値として認可保持者シークレットが使用される。
【００７２】
[0087]加えて、ヒューズシークレットのプログラミングは、シークレットを危うくするために既知のものへ再プログラムするその後の変更や攻撃から保護するために、一回限りの設定に制限することができる。一実施形態では、まさにＧＰＵにより使用されるべくシークレットをプログラムできるヒューズは、認可保持者シークレットをプログラミングし終えると、それ自身で切れ、又、いったん切れると、前記ヒューズは、認可保持者シークレットヒューズのその後のプログラミングを許さない。
【００７３】
[0088]認可保持者シークレットは、他の（読み取り不能の）ＧＰＵシークレットと間接的に組み合わせて、ペイロードの生成及び抽出に使用される暗号及び解読キーを形成することができる。認可保持者シークレットを独立してプログラムすることができ、ＧＰＵプロバイダーがそのようなシークレットの知識をもたず、且つシークレットがランタイムにセキュアなバーチャルマシン内のＧＰＵハードウェアにより間接的に結合されるだけであるとすれば、第２当事者の機密プログラム、アルゴリズム及びキーは、機密チップシークレットの詳細な知識をもつ個人に対して更に強化される。
【００７４】
[0089]従って、一実施形態によれば、少なくとも１つのプロセッサと、第２当事者のプログラムを処理するためにプロセッサにおいて実施される第１当事者の少なくとも１つのセキュアなバーチャルマシンと、第３当事者のコンテンツを出力のために処理する少なくとも１つのプログラムとを備えた装置が提供される。この場合、第１当事者は、セキュアなバーチャルマシン及び又はプロセッサを備えたエンティティ又は個人を含み、第２当事者は、ソフトウェアを認可するエンティティ又は個人（例えば、独立したソフトウェアベンダー認可保持者、等）を含み、そして第３当事者は、コンテンツを認可するエンティティ又は個人を含むことができる。もちろん、種々の実施形態では、第１、第２及び第３の当事者は、同じ当事者でも異なる当事者でもよく、いずれの個人又はエンティティでもよい。
【００７５】
[0090]この装置を使用すると、残留機密プログラム情報、処理されている情報、及び少なくとも１つのバーチャルマシンの各々により生成されるエフェメラル変数は、処理後に削除することができる。一実施形態では、複数のセキュアなバーチャルマシンを個々のコンテクスト内でプロセッサにおいて実施することができる。この場合、複数のセキュアなバーチャルマシン間での情報の共有は、制限されることがある。
【００７６】
[0091]例えば、エフェメラル情報の形式及び複数のセキュアなバーチャルマシンにより処理されている情報の記憶が制限されることがある。又、情報は、保護されたコンテンツの解読に使用されるキー及び中間暗号値を含んでもよい。
【００７７】
[0092]別の実施形態では、クライアント供給プログラム（例えば、第２当事者のプログラム、等）を実行して、保護されたコンテンツを処理するために、少なくとも１つのバーチャルマシンを設けることができる。この場合に、クライアント供給プログラムは、第３当事者のコンテンツを処理する際にそのクライアント供給プログラムによって使用されるアルゴリズム詳細、シークレット、及びキーの機密性を確保するために、第２当事者により暗号化することができる。クライアント供給プログラムは、更に、そのクライアント供給プログラムの完全性を検証できるように第２当事者により署名できると共に、そのクライアント供給プログラムのソースの真正性を検証できる証明書を含むことができる。
【００７８】
[0093]一実施形態では、第３当事者のコンテンツは、少なくとも１つのバーチャルマシンにより処理される前に第３当事者により別々に暗号化されてもよい。この場合に、クライアント供給プログラム、機密のアルゴリズム、及びシークレットは、少なくとも１つのバーチャルマシン内での実行を許す前に、含まれた署名及び証明書を検証することにより解読され、認証されてもよい。
【００７９】
[0094]別のオプションとして、クライアント供給プログラムを処理することは、第３当事者のコンテンツを解読することを含んでもよい。この処理は、更に、第３当事者のコンテンツ又は第３当事者のコンテンツ内のストリームの１つ以上の部分のうちの少なくとも１つを再暗号化することを含んでもよい。あるケースでは、再暗号化は、第３当事者のコンテンツが少なくとも１つのバーチャルマシンから出る前に行われる。別のケースでは、再暗号化は、第３当事者のコンテンツがプロセッサから出力された後に行われてもよい。
【００８０】
[0095]一実施形態では、クライアント供給プログラムは、アプリケーションから受け取られ、そしてクライアント供給プログラムは、プロセッサとアプリケーションとの間にセキュアな通信チャンネルを確立することができる。この場合、プロセッサとアプリケーションとの間の通信チャンネルは、プロセッサにおいて導出される暗号値及び少なくとも１つの証明書を使用してセキュア化することができる。
【００８１】
[0096]別の実施形態では、少なくとも１つのバーチャルマシンは、アプリケーションにより与えられる保護コンテンツ処理プログラムのインタープリターとして働くことができる。更に、プロセッサは、少なくとも１つのセキュリティプロセッサを含み、又、グラフィックプロセッサ、ビデオプロセッサ、又はオーディオプロセッサの少なくとも１つに、処理されたコンテンツを与えるように構成できる。
【００８２】
[0097]更に別の実施形態では、プロセッサは、パッケージから解かれたコンテンツキー及びプログラム実行中に導出される中間暗号値のためのセキュアな機密記憶部を含むことができる。いずれにせよ、プロセッサの少なくとも１つのバーチャルマシン内で第２当事者のプログラムにより第３当事者のコンテンツを処理するのに、プロセッサが、認可されたシークレットを含むことも、以前に実施された認可アルゴリズムを有することも要求されない。少なくとも１つのバーチャルマシンの設計、及び少なくとも１つのバーチャルマシン内の第２当事者のプログラムによる第３当事者のコンテンツの処理は、認可応諾及び頑健性ルールに関して第２当事者により再検討され、これにより、第３当事者のコンテンツに対する適合性を決定できることに注意されたい。
【００８３】
[0098]加えて、この装置を使用することにより、第３当事者のコンテンツと、この第３当事者のコンテンツを解読する機密キーを生成するのに使用される第２当事者のプログラムが（例えば、第１当事者、等により製造された）プロセッサに受け取られ、そして第３当事者のコンテンツを解読するためにそのプロセッサを使用して第２当事者のプログラムを実行することができる。この場合、第３当事者のコンテンツを解読するには、第２当事者に与えられる機密アルゴリズム及びキー情報を使用することが要求される。オプションとして、第３当事者のコンテンツを解読するのに使用される機密キー及びアルゴリズムは、第２当事者により再暗号化されてもよい。又、機密キーは、プロセッサを使用して解読されてもよい。
【００８４】
[0099]一実施形態では、第２当事者のプログラムから生成される機密ランタイム値、中間暗号値、及び機密キーは、プロセッサのオペレーションで間接的にのみデリファレンスされるように構成され且つ読み取り不能に構成された機密の書き込み専用プロセッサレジスタ及び／又はインデックス付きバッファに記憶することができる。この場合に、書き込み専用プロセッサレジスタ及びインデックス付きバッファは、第２当事者のプログラムが終了した後に消去することができ、これにより、その後のバーチャルマシンセッションが残留シークレットへアクセスしないように保証する。
【００８５】
[00100]オプションとして、機密キーは、第３当事者のコンテンツに関連した少なくとも１つのコンテンツキーと、第３当事者のコンテンツ及び第２当事者のプログラムをプロセッサで受け取るときに経由する第２当事者のアプリケーションに関連した少なくとも１つのアプリケーションキーとを含むことができる。一実施形態では、第２当事者のアプリケーションは、コンテンツプレーヤを含むことができる。
【００８６】
[00101]更に、プロセッサは、第３当事者の少なくとも１つのコンテンツキー及び第２当事者の少なくとも１つのアプリケーションキーを処理して、少なくとも１つのタイトルキーを生成することができる。この場合に、タイトルキーは、第３当事者のコンテンツを解読するのに使用することができる。
【００８７】
[00102]一実施形態では、第２当事者のプログラムは、第３当事者のコンテンツ及び第２当事者のプログラムを受け取るときに経由する第２当事者のアプリケーションによって使用することができる。この場合、第２当事者のプログラムは、第３当事者のコンテンツを解読するのに適用できると共に、第３当事者のコンテンツに基づいて第２当事者のアプリケーションにより検索することができる。
【００８８】
[00103]ある場合には、第２当事者のプログラム及びコンテンツキーは、第２当事者のアプリケーションにより検索される前に暗号化されることがある。これらの場合に、第２当事者のプログラム及びコンテンツキーは、第２当事者のアプリケーションにより検索される前に、パブリックキーを使用して暗号化することができる。オプションとして、第２当事者のプログラム及びコンテンツキーを暗号化する１つ以上のキーがプロセッサの製造者（例えば、第１当事者、等）によって準備されてもよい。別のオプションとして、第２当事者のプログラムは、第２当事者のアプリケーションに関連した配布バイナリー内のパッケージに合成される前に暗号化されてもよい。
【００８９】
[00104]一実施形態では、第２当事者のアプリケーションは、更に、プロセッサへ通される前に、第２当事者のプログラム及び機密キーを含むパッケージを再暗号化することができる。一実施形態では、機密アルゴリズム及び機密キーを中央処理ユニットに露呈することは、プロセッサ内部のバーチャルマシン内で実行されるまで解読されない暗号プログラムパッケージ内に機密アルゴリズム及び機密キーを含ませることにより防止することができる。この場合、機密アルゴリズム及び機密キーシークレットの潜在的な露呈は、第２当事者のプログラムが解読されるプロセッサにおいて、第２当事者のアプリケーションとの間でのパブリックキー交換で生成されるエフェメラル値を使用してパッケージを暗号化することにより防止することができる。
【００９０】
[00105]更に、機密アルゴリズム及び機密キーの露呈は、第２当事者のプログラムの暗号化によりプロセッサベンダーに露呈されずに使用され且つプロセッサに入れられる第２当事者認可シークレット又は第３当事者認可保持者シークレットを使用することで防止することができる。この場合、第２当事者認可シークレット及び第３当事者認可保持者シークレットのプログラミングは、一回限りのプログラミングメカニズム（例えば、コンピュータコード、等）の使用によりプロセッサへいったんプログラムされると、変更から保護することができる。
【００９１】
[00106]更に別の実施形態では、この装置を使用することにより、第３当事者のコンテンツを暗号化し処理するためのパッケージを第２当事者により生成することができ、このパッケージは、プロセッサを使用して実行できるプログラムを含む。加えて、そのプログラムは、それに関連したシークレットの機密性を保証するために暗号化を使用してセキュア化することができる。更に、そのプログラムは、プログラムのソースの真正性を保証するために署名することができる。更に、プログラムのソースの証明書、及びプログラムをセキュア化したエンティティを検証することもできる。
【００９２】
[00107]プロセッサは、グラフィックプロセッサ、ビデオプロセッサ、及び／又はオーディオプロセッサ、等を含むことができる。更に、プロセッサは、第２当事者のアプリケーションで準備されたパッケージ、プログラム、機密アルゴリズム、コンテンツキー及び専有シークレットをセキュアに解読できるセキュアなプロセッサコンテクストを含むことができる。
【００９３】
[00108]ある場合には、第３当事者コンテクストは、傍受及び複写から保護されねばならないように第３当事者にとって価値のあるものである。種々の実施形態では、パッケージは、第３当事者のコンテンツを解読し処理するのに必要なプログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットを含むことができる。更に、オプションとして、パッケージは、暗号化によりセキュア化することができる。
【００９４】
[00109]一実施形態では、プログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットは、プロセッサが第３当事者のコンテンツを受け取るところの第２当事者のコンテンツ認可保持者プレーヤアプリケーションにより準備することができる。この場合に、プログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットを含むパッケージを、第２当事者のアプリケーションプロバイダーによりセキュア化し、アプリケーションに埋め込むことができる。
【００９５】
[00110]一実施形態では、アプリケーションは、ユーザ選択コンテンツを処理して出力するために、少なくとも１つのプレーヤ及びパッケージ、又は少なくとも１つの他のパッケージを含むことができる。更に、第３当事者のコンテンツを解読し処理するのに使用されるパッケージは、第３当事者のコンテンツの形式及びフォーマットに基づいて、アプリケーション内から検索することができる。加えて、パッケージ、プログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットは、アプリケーションにより検索される前に、暗号化することができる。
【００９６】
[00111]この場合に、パッケージ、プログラム、機密アルゴリズム、コンテンツキー、及び専有シークレットは、アプリケーションに埋め込まれる前に、１つ以上のパブリック及びプライベートキーを使用して、暗号化し署名することができる。第２当事者のアプリケーションベンダーとプロセッサのベンダーとの間でパブリックキー及び証明書を交換することができる。オプションとして、プログラムは、プロセッサに埋め込まれた認可保持者シークレットを使用して暗号化することができる。
【００９７】
[00112]一実施形態では、パッケージは、ランタイムに、アプリケーションにより抽出された後に、暗号化することができる。この場合、プログラムは、擬似ランダムナンバージェネレータと、プロセッサのみに記憶されたシークレットとを使用して生成されるエフェメラルキーを使用して、暗号化することができる。加えて、プログラムは、擬似ランダムナンバージェネレータと、アプリケーションのみに記憶された情報とを使用して生成されるエフェメラルキーを使用して、暗号化することもできる。
【００９８】
[00113]別のオプションとして、プログラムは、アプリケーションとプロセッサベンダーとの間で交換される少なくとも１つの証明書の少なくとも１つのキーを使用して暗号化することもできる。一実施形態では、プログラムは、アプリケーションとプロセッサとの間で交換される少なくとも１つの証明書の少なくとも１つのキーを使用して署名することができる。この場合、プロセッサベンダーにとって未知のプロセッサに認可保持者シークレットを埋め込むことができ、認可保持者シークレットは、プロセッサベンダーによって推定し及び／又はプロセッサから読み戻すことができない。ある場合には、認可保持者シークレットは、一度しか書き込むことができず、又、攻撃者がシークレットを導出したり又はプロセッサに記憶されたシークレットを変更することでそれを危うくしたりできないよう保証するために、プログラミングの後に変更やその他修正ができないようにされる。
【００９９】
[00114]図１１は、種々の先行する実施形態の種々のアーキテクチャー及び／又は機能を実施できる例示的システム１１００を示す。図示されたように、通信バス１１０２に接続された少なくとも１つのホストプロセッサ１１０１を含むシステム１１００が提供される。このシステム１１００は、メインメモリ１１０４も備えている。ランダムアクセスメモリ（ＲＡＭ）の形態をとるメインメモリ１１０４には、制御ロジック（ソフトウェア）及びデータが記憶される。
【０１００】
[00115]また、システム１１００は、グラフィックプロセッサ１１０６と、ディスプレイ１１０８、即ちコンピュータモニタも備えている。一実施形態では、グラフィックプロセッサ１１０６は、複数のシェーダーモジュール、ラスタ化モジュール、等を含むことができる。以上のモジュールの各々は、単一の半導体プラットホームに位置させて、グラフィック処理ユニット（ＧＰＵ）を形成することもできる。
【０１０１】
[00116]この説明では、単一の半導体プラットホームは、単独の一体的半導体ベースの集積回路又はチップと称される。又、単一の半導体プラットホームという語は、オンチップオペレーションを模擬すると共に、従来の中央処理ユニット（ＣＰＵ）及びバス実施を利用するものに勝る実質的な改善をなす増加接続性のマルチチップモジュールとも称されることに注意されたい。もちろん、種々のモジュールは、ユーザの希望で、半導体プラットホームに別々に位置させてもよいし、又は半導体プラットホームの種々の組合せに位置させてもよい。
【０１０２】
[00117]また、システム１１００は、二次記憶装置１１１０も備えることができる。この二次記憶装置１１１０は、例えば、ハードディスクドライブ及び／又は取り外し可能な記憶ドライブを含み、これは、フロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ、等を表す。取り外し可能な記憶ドライブは、良く知られた仕方で取り外し可能な記憶ユニットからの読み取り及びそこへの書き込みを行う。
【０１０３】
[00118]コンピュータプログラム又はコンピュータ制御ロジックアルゴリズムは、メインメモリ１１０４及び／又は二次記憶装置１１１０に記憶することができる。このようなコンピュータプログラムは、実行時に、システム１１００が種々の機能を遂行できるようにする。メモリ１１０４、記憶装置１１１０、及び／又は他の記憶装置は、コンピュータ読み取り可能な媒体の考えられる例である。
【０１０４】
[00119]一実施形態では、種々の先行する図面のアーキテクチャー及び／又は機能は、ホストプロセッサ１１０１、グラフィックプロセッサ１１０６、これらホストプロセッサ１１０１及びグラフィックプロセッサ１１０６の両方の能力の少なくとも一部分を遂行できる集積回路（図示せず）、チップセット（即ち、関連機能、等を遂行するユニットとして作用し且つ販売するように設計された集積回路のグループ）、及び／又はそのことに対する他の集積回路に関して実施することができる。
【０１０５】
[00120]更に、種々の先行する図面のアーキテクチャー及び／又は機能は、汎用コンピュータシステム、回路ボードシステム、娯楽目的専用のゲームコンソールシステム、アプリケーション指向のシステム、及び／又は他の望ましいシステムに関して実施することができる。例えば、システム１１００は、デスクトップコンピュータ、ラップトップコンピュータ、及び／又は他の形式のロジックの形態をとることができる。更に、システム１１００は、これに限定されないが、パーソナルデジタルアシスタント（ＰＤＡ）装置、移動電話装置、テレビジョン、等を含む種々の他の装置の形態をとることができる。
【０１０６】
[00121]更に、図示されていないが、システム１１００は、通信目的で、ネットワーク（例えば、テレコミュニケーションネットワーク、ローカルエリアネットワーク（ＬＡＮ）、ワイヤレスネットワーク、インターネットのようなワイドエリアネットワーク（ＷＡＮ）、ピア・ツー・ピアネットワーク、ケーブルネットワーク、等）に結合することができる。
【０１０７】
[00122]種々の実施形態を以上に述べたが、それらは単なる例示に過ぎず、それに限定されるものではないことを理解されたい。従って、好ましい実施形態の広がり及び範囲は、上述した実施形態のいずれに限定されるものでもなく、特許請求の範囲及びその等効物のみによって定義されるものとする。
【符号の説明】
【０１０８】
１５０…セキュアなバーチャルマシン、１５２…プロセッサ、２００…システム、２０２…媒体、２０４…独立したソフトウェアベンダー（ＩＳＶ）、２０６…プログラム、２０８…インタープリター、２１０…タイトルキー、２１２…逆多重化部、２１４…再暗号化オーディオモジュール、２１６…解読モジュール、２１８…オーディオスタック、２２０…再暗号化ビデオモジュール、２２２…ビデオデコードモジュール、２２４…フレームバッファ、２２８…メモリ、２５０…プロセッサ、４００…システム、４０２…プロセッサ、４０４…セキュアなバーチャルマシン、４０６…セキュアな埋設プロセッサ、１１０１…中央プロセッサ、１１０２…バス、１１０４…メインメモリ、１１０６…グラフィックプロセッサ、１１０８…ディスプレイ、１１１０…二次記憶装置。
【図１Ａ】
2010140470.tif 000007
【図１Ｂ】
2010140470.tif 000008
【図２】
2010140470.tif 000009
【図３】
2010140470.tif 000010
【図４】
2010140470.tif 000011
【図５】
2010140470.tif 000012
【図６】
2010140470.tif 000013
【図７】
2010140470.tif 000014
【図８】
2010140470.tif 000015
【図９】
2010140470.tif 000016
【図１０】
2010140470.tif 000017
【図１１】
2010140470.tif 000018
【外国語明細書】
2010140470000001.pdf