"別個のプログラムコードまたはデータの複数のインスタンスのためのセキュアな実行環境を提供するための方法であって、別個のコードまたはデータの複数のインスタンスを、ホストプロセッサからセキュアな資産管理ユニットSAMUへ暗号化フォーマットでオフロードして、前記別個のコードまたはデータの複数のインスタンスの機密性を認証および維持するステップ、を含む、方法。前記オフロードするステップは、前記別個のコードまたはデータの複数のインスタンスの各インスタンスについて、署名ツール内で生成されたランダム鍵によって暗号化2値ブート画像を生成するステップを含む、請求項1に記載の方法。前記暗号化2値ブート画像は、前記SAMUのために暗号化され、前記SAMU用のセキュアなカーネルおよびセキュアなアプリケーションとして提供される、請求項2に記載の方法。ユーザは、前記暗号化2値ブート画像をインストールし、前記暗号化2値ブート画像をオンデマンドで前記SAMUに提供する、請求項3に記載の方法。前記暗号化2値ブート画像をインテグリティについて有効化した後に、前記SAMUと共に用いられる復号化鍵を、ブートリードオンリーメモリROMを用いて構成するステップ、をさらに含む、請求項4に記載の方法。前記SAMUと共に用いられる復号化鍵を、前記ブートROMによって生成するステップと、肯定的な有効化に応じて、前記暗号化2値ブート画像に制御を送るステップと、をさらに含む、請求項5に記載の方法。肯定的な有効化および前記セキュアなカーネルの実行後に、コンテンツへのアクセスを提供するためのアプリケーションは、前記SAMUハードウェアの利用可能性を検出し、前記セキュアなカーネルは、前記アプリケーションについてのコンテクストを生成して、前記アプリケーションのインテグリティを有効化する、請求項6に記載の方法。前記アプリケーション用の前記別個のコードまたはデータの複数のインスタンスの各々のコード復号化鍵は、カーネル画像と共に生成されたコンテクストと共に用いられる肯定的な有効化に応じて、前記セキュアなカーネルによって復元される、請求項7に記載の方法。前記別個のコードまたはデータの複数のインスタンスの各々の前記セキュアなカーネルにおいて、前記カーネル画像の肯定的な有効化に応じて、前記アプリケーション用のデータ暗号鍵をランダムに生成するステップ、をさらに含む、請求項8に記載の方法。有効化が否定的な場合にはSAMUサービスがさらされず、前記アプリケーションはソフトウェアベースの保護スキームに戻る、請求項5に記載の方法。別個のプログラムコードまたはデータの複数のインスタンスのためのセキュアな実行ユニットを提供するためのシステムであって、コードまたはデータを含む複数のアプリケーションを実行するように構成されたホストプロセッサと、プログラムコードを実行するように構成されたセキュアな資産管理ユニットSAMUであって、前記ホストプロセッサに接続されており、別個のコードまたはデータの複数のインスタンスを、前記ホストプロセッサから暗号化フォーマットでオフロードして、前記別個のコードまたはデータの複数のインスタンスの機密性を認証および維持するように構成されている、セキュアな資産管理ユニットSAMUと、を含む、システム。前記SAMUは、前記別個のコードまたはデータの複数のインスタンスをオフロードすることの一部として、署名ツール内で生成されたランダム鍵によって暗号化2値ブート画像を生成するように構成されている、請求項11に記載のシステム。前記暗号化2値ブート画像は、前記SAMUのために暗号化され、SAMUのためのセキュアなカーネルおよびセキュアなアプリケーションとして提供される、請求項12に記載のシステム。ユーザは、前記暗号化2値ブート画像をインストールし、前記暗号化2値ブート画像を前記SAMUへオンデマンドで提供する、請求項12に記載のシステム。前記SAMUは、前記暗号化2値ブート画像をインテグリティについて有効化した後、前記SAMUと共に用いられる復号化鍵をブートリードオンリーメモリROMを用いて構成するようにさらに構成されている、請求項14に記載のシステム。前記ブートROMは、前記SAMUと共に用いられる復号化鍵の生成と、肯定的な有効化に応じて前記暗号化2値ブート画像への制御送りとを行うようにさらに構成されている、請求項15に記載のシステム。肯定的な有効化および前記セキュアなカーネルの実行の後に、コンテンツへのアクセスを提供するためのアプリケーションは、前記SAMUハードウェアの利用可能性を検出し、前記セキュアなカーネルは、前記アプリケーションのためのコンテクストを生成して、前記アプリケーションのインテグリティを有効化する、請求項16に記載のシステム。前記アプリケーションのための前記別個のコードまたはデータの複数のインスタンスの各々に対するコード復号化鍵は、カーネル画像と共に生成された前記コンテクストと共に用いられる肯定的な有効化に応じて、前記セキュアなカーネルによって回復される、請求項17に記載のシステム。前記カーネル画像の肯定的な有効化に応じて、前記別個のコードまたはデータの複数のインスタンスの各々の前記セキュアなカーネルにおいて、前記アプリケーション用のデータ暗号鍵をランダムに生成するように構成されている、請求項18に記載のシステム。有効化が否定的な場合、SAMUサービスはさらされず、前記アプリケーションは認証のためにソフトウェアベースの保護スキームに後退する、請求項16に記載のシステム。1つ以上のプロセッサによって実行される1組の命令を記憶する、コンピュータで読み出し可能な記憶媒体であって、前記1組の命令は、セキュアな資産管理ユニットSAMUの製造を容易にするためのものであり、前記SAMUは、プログラムコードを実行することと、別個のコードまたはデータの複数のインスタンスを、暗号化フォーマットでプロセッサからオフロードして、前記別個のコードまたはデータの複数のインスタンスの機密性を認証および維持することと、を行うように構成されている、コンピュータで読み出し可能な記憶媒体。前記命令はハードウェア記述言語HDL命令であり、デバイスの製造に用いられる、請求項21に記載のコンピュータで読み出し可能な記憶媒体。本明細書に記載の実施形態は、ハードウェアに基づいて保護された実行環境のために設けられたセキュリティ構成を含む。上記構成により、複数のアプリケーションまたはオンデマンド機密コードを同時に上記セキュアな実行環境へロードすることが可能となる。ランタイム生成されたデータを、外部メモリ内に保存された場合でもセキュアに保護することができる。各メモリコンテクストは別個に管理されるため、各コンテクスト間の機密性が保証される。実行環境は、セキュアな資産管理ユニットSAMUのアーキテクチャ詳細を含む。上記SAMUは、ホストプロセッサからのコードまたはデータの機密性を認証および維持するために上記コードまたはデータを暗号化フォーマットでオフロードすることにより、プログラムコードまたはデータのためのセキュアな実行環境を提供する。上記SAMUは、不正防止ソフトウェアのためのプラットフォームを提供することにより消費電力低減を可能にし、また、有効なソフトウェアが取り消される頻度を低減する。また、上記SAMUは、正当なユーザに対しては非侵入型であり、かつ、機密コードのリバースエンジニアリングを困難にするための保護された実行環境を提供する。このようなハードウェアに基づいたセキュリティ構成により、垂直または水平方向の特権違反の回避が促進される。以下の記載を添付の図面と共に読めば、より詳細な理解が可能となる。本出願は、米国非仮出願第12/964,278号全体をあたかも同文献全体が記載されているかのように援用する点に留意されたい。本明細書中用いられるプロセッサという用語は、以下のうち任意のものを指す:プロセッサ、プロセッサコア、中央処理装置CPU、グラフィックス処理装置GPU、デジタル信号プロセッサDSP、フィールドプログラマブルゲートアレイFPGA、または類似のデバイス。上記プロセッサは、別のデバイス例えば、一体型ノースブリッジ、アプリケーションプロセッサAppsプロセッサ、CPU、DSP等の一部を形成し得る。本明細書中用いられるプロセッサコアは、x86、RISC、または他の命令セットコアであり得る。セキュアな資産管理ユニットSAMUは、プロセッサコア内に設けられるように構成されたコンポーネントであるか、または、プロセッサコアと協働して実行するように構成された別個のコンポーネントである。プロセッサコアまたはプロセッサコアとは別個のコンポーネントとして構成された場合、SAMUは、以下のうち少なくとも1つを実行するように構成される。ホストプロセッサから機密コードをオフロードすること、あるいは、メモリ中の機密コードまたはデータを暗号化すること。上記SAMUは、ハードウェアに基づいた保護された実行環境を提供するように、ハードウェアにおいて実行することができる。このような環境において、機密コードおよびデータをセキュアなメモリにおいて保護することができ、平文形態でキャッシュまたは埋設メモリのみに保存することができる。さらに、デバッギングは、生成側において完全に無効にされ、セキュアなカーネルが実行環境を所有および制御し、メモリおよびリソースへのアクセスが全て制御される。上記SAMUは、メモリを上記プロセッサと共有してもよいし、あるいは専用のメモリを有してもよい。図1Aは、一実施形態によるホストシステム101を示す。この実施形態において、機密コードがプロセッサからSAMUへとオフロードされる。図1Aは、プロセッサ102およびSAMU104を含むシステム101を示す。プロセッサ102およびSAMU104は、システムバスまたは内部バス105を介して接続される。システム101を用いて、セキュアなコードをプロセッサ102からSAMU104へとオフロードする。システム101は、データをピアで交換することが可能な任意のコンピュータシステムであり得る。さらに、システム101は、1つ以上のアプリケーション図示せずを含み得る。上記1つ以上のアプリケーション図示せずは、セキュアなプロトコルを用いて、プロセッサ102とSAMU104との間のデータ転送を行う。上記アプリケーションは、カーネル空間またはユーザ空間において実行され得る。プロセッサ102は、システムカーネル図示せずにおいて動作するように構成される。プロセッサ102は、外部デバイスとインターフェースで接続して、コンテンツソース例えば、ブルーレイ登録商標ディスク等のコンテンツメディアや、インターネットから等から、暗号化データおよびメッセージすなわち、パケットを取り出す。プロセッサ102は、復号化および処理対象となる暗号化データをSAMU104へと提供し得る。いくつかのデータセット例えば、ナビゲーションデータをSAMU104からプロセッサ102へと返送して、メディア消費プロセス全体を制御することができる。SAMU104はまた、保護が必要な場合、データを再暗号化フォーマットでプロセッサ102へと返送し得る。一実施形態において、SAMU104は、外部デバイスへと送られるかまたは外部デバイスから受信したデータの処理を有効にするように構成された処理スタックを含む。よって、システム101が外部デバイスまたはインターネットとの接続を確立すると、ホストプロセッサ102が上記送信および受信したパケットを処理する代わりに、SAMU104は、SAMU104上において実行された処理スタックを介してこの処理機能を提供する。別の実施形態において、SAMU104は、プロセッサ102の一部であり得る。SAMU104のアーキテクチャについて、図1Bを参照してさらに詳述する。SAMU104は、セキュアなブートリードオンリーメモリROM110と、メモリ管理ユニットMMU120と、命令キャッシュIキャッシュ130と、データキャッシュDキャッシュ140と、メモリ高度暗号化標準M-AESコンポーネント150と、インテグリティ照合器IV160と、セキュリティアクセラレータ170と、プロセッサコア180と、セキュアなカーネル185と、メモリインターフェース190とを含む。セキュリティアクセラレータ170は、以下のうち少なくとも1つを実行するように構成される。128b/192b/256bAES;セキュアなハッシュアルゴリズムSHA-1/-2;Rivest、ShamirおよびAdlemanRSA暗号化;楕円曲線暗号化ECC演算;データ暗号化標準DES;3DES;Rivest暗号化4RC4;1024b/2048b/3072b冪剰余;または真の乱数生成器の提供。SAMU104は、複数のプロセッサモード例えば、シリコン内のブートコードのためのモードを含むをサポートし得る。他のプロセッサモードは、セキュアなカーネル185によって定義され得る。セキュアなカーネル185は、例えば、カーネルコア機能、カーネルサービス、社内開発されたSAMU104アプリケーション、サードパーティが開発したSAMU104アプリケーション、署名されかつ暗号化されていないSAMU104アプリケーション、または未署名でありかつ暗号化されていないSAMU104アプリケーションを含む。ブートROM110は、シリコン形態においてブートコードを実行して、デバッグ管理の実行と、所与のカーネルのインテグリティの確認と、メモリAESの設定とを実行した後、インテグリティ確認を通過したカーネルへ制御を送るように構成される。ここで、埋設プロセッサは、リセット状態から起動して、ブートコードを実行するように構成される。上記ブートコードは、eフューズ技術に基づいてデバッギング機能を構成または再構成するようにさらに構成される例えば、全デバッグ機能の生成側へのアクセスを無効にするか、またはeフューズパターンへのアクセスを無効にする。上記eフューズパターンは、製造時においてチップ上へのエッチングまたはハードコーディングコンピュータ論理を用いて注入されるため、チップ製造後は変更不可能となる。上記ブートコードはまた、SAMU104カーネルの初期化を待機するようにさらに構成される。ここで、SAMUドライバは、セキュアなカーネル185をロード対象として提示する。上記ブートコードはまた、インテグリティ照合器IVハードウェア160を用いて、所与の画像のインテグリティを有効化するようにさらに構成される。IVハードウェア160は、所与の画像からのハッシュコードを生成し、上記ハッシュコードと、上記画像に取り付けられたハッシュコードとを比較するように構成され得る。上記生成されたハッシュコードと、上記取り付けられたハッシュコードとが整合した場合、IVハードウェア160はPASSレポートを提供し、そうではない場合、失敗を報告する。ブートROM110は、インテグリティ確認成功の後にセキュアなカーネル185のための環境を準備し、セキュアなカーネル185へ制御を送るようにさらに構成される。セキュアなカーネル185は、同一のIVハードウェア160を用いて定期的に再有効化することができる。ブートROM110は、シリコン形態内のチップの一部として設けられてもよいし、あるいは外部ROMにセキュアに保存されてもよい。暗号化および署名されたセキュアなカーネル185は、SAMUドライバの一部として設けられ得る。セキュアなカーネル185は、SAMU内のリソースセキュリティ方針に制御アクセスを提供し、SAMUサイクルジョブスケジューリングに制御アクセスを提供し、ホスト上、またはSAMUで実行するSAMUアプリケーション上で実行するSAMUドライバを接続し、SAMUメモリまたは他のコンテクストをオンデマンドで構築/分解するように、構成される。コード保護を最大化するために、異なるアプリケーションからの異なるSAMUコードを異なるコンテクストで実行する。各コード画像は、署名ツールによって異なる態様で暗号化およびハッシュされる。署名時において、暗号鍵はランダムに生成される。さらに、インテグリティ確認を暗号化画像に適用した後、画像を実行対象として受容する。M-AES150は、ハードウェア内のさらなる専用スクランブリングを用いて変調したAES復号化を読み出し時に実行し、変調したAES暗号化を書き込み時キャッシュまたは埋設内部メモリ中のコンテンツは平文であるに実行する。あるいは、MMUを介して構成された通常のメモリアクセスのためのパススルーとしてバイパスモードが設けられてもよい。メモリAES鍵をブートROMコード又はセキュアなカーネル185によって生成してもよい。メモリAES鍵は、メモリインターフェースを通過する機密コードおよびデータを保護するためのハードウェアに設けられてもよい。コンテンツは、命令キャッシュ130、データキャッシュ140または内部埋設メモリ内のみにおいて平文である。同一のコンテクストについてコードおよびデータ鍵を共有することも可能である。セキュアなカーネル185は、コンテクスト生成時間においてランダムビットを用いてデータ鍵を初期化して、リプレー攻撃を阻止することもできる。ランタイムに確立された機密データは、通常、ランタイム生成されたランダム鍵によって保護される。上記ランダム鍵の保護の仕方としては、2つの方法がある。1つの方法としては、外部消費例えば、ホストまたはプロセッサ内の復号化アクセラレータの対象となる機密データを標準AESにおいて暗号化する。第2の方法としては、セキュアな実行環境内部に保存されるべき機密データをM-AES150によって暗号化する。M-AES動作においては、その他の場合の標準AESプロセスの前後において、ハードウェア生成変調による変調が行われる。さらなるセキュリティを提供するための別の実施形態において、SAMUから来たメモリトラフィックを保護するために、M-AES150は、その他の場合の標準AES動作の前後においてハードウェア内のさらなる専用スクランブリングによるさらなる変調を行う。その結果、リバースエンジニアリングが困難となる。そのため、機密コードおよびデータを、既存のフレームバッファメモリまたはシステムメモリ内に保存および保護することが可能となる。異なるランダム鍵をデータセグメント保護のために生成することができ、コードおよびデータ鍵は共有されない。さらなるセキュリティを提供するための別の実施形態において、署名ツールによって各コード画像を暗号化およびハッシュする。署名時において、暗号鍵をランダム生成するプロセスのこの部分は、ベンダーまたはサードパーティソフトウェアプロバイダにおいて行われる。セキュアなカーネル185のための復号化鍵をブートROM110中のブートコードによって計算および回復し、SAMUアプリケーションのための復号化鍵をカーネルによって計算および回復する。さらに、インテグリティ確認を、IV160によって暗号化バージョンで適用し、その後実行対象の画像が受容される。MMU120による支援により、コンテクストまたはメモリ管理がセキュアなカーネル185によって行われる。MMU120は、アドレス変換論理を行うように構成される。上記アドレス変換論理は、プロセッサ180の仮想アドレス空間をデバイスアドレス空間例えば、グラフィックスプロセッサ、デジタル信号プロセッサ、またはFPGAへとマップする。MMU120は、16個までの非重複アドレスセグメントを4つのAES鍵によってサポートする。1つの可能な配置構成として、セキュアなカーネル185のための2つの鍵1つはコード用およびもう1つはデータ用と、SAMUアプリケーションのためのその他の2つの鍵1つはコード用およびもう1つはデータ用とを割りあてる配置構成がある。この構成において、同一コンテクストに所属する全データセグメントのうちメモリAES保護すべきもののみを、同一データ鍵によって保護することができる。各セグメントは、以下の要素に合わせて独立的に構成することができる:メモリサイズ、メモリAES保護、実行可能かどうか例えば、実行フラグが無い、およびアクセス制御読み出し/書き込みアクセスのための最小プロセッサモード。各メモリセグメントは、仮想アドレス空間において隣接しなければならない。全てのセグメントがメモリAES暗号化によって保護されるべきであるわけではない。詳細には、SAMU104と、外部デバイスまたはインターネットとの間の通信のためのバッファは、標準AESのみによって保護可能であるため、M-AES150をオフにした状態で構成するべきである。セキュアなカーネル185は、MMU120を構成することが可能な唯一のエージェントである。次のSAMU動作またはアプリケーションを提供するための新規コンテクストへ切り換える前に、セキュアなカーネル185は、MMU120からの先行コンテクストに所属する全セグメントをアンマップし、MMU120を再構成して、対象コンテクストに所属する全セグメントをマップする。このプロセスを行うために、セキュアなカーネル185は、データキャッシュをフラッシュして、全キャッシュデータをメモリに返送し、メモリAES鍵を対象コンテクスト用のもので更新する必要があり得る。メモリへのアクセスは、メモリインターフェース190を介して行われる。SAMU104およびその各コンポーネントは、デバイス例えば、CPU、GPU、DSPまたはFPGAまたは他の同様のデバイスを含むプロセッサの観点から通常のクライアントとして扱われる。SAMU104は、機密コードおよびデータに対するメモリ保護を提供する際、M-AES150に依存する。セキュアなカーネル185は、以下の範囲を提供するためにさらなるセキュリティサービスを含み得る:外部コンポーネントとのセキュアなトンネルを確立すること、デジタル著作権管理DRMブロックとの鍵交換、ライセンス鍵、デバイス鍵またはコンテンツ鍵をアンラップすること、ビットストリームの逆多重化、ビットストリームの復号化または再暗号化、バーチャルマシン例えば、BD、ブルーレイ登録商標ディスクDRMシステムのコンポーネントとしての動作、または既存の経路を用いた音声/映像A/Vの加速のためのデータ提出。セキュアなカーネル185は、ロードおよび制御された後、SAMU実行環境を担当する。セキュリティサービスがカーネルの一体部分となる代わりにオンデマンドでロードされた場合、上記カーネルは、オンデマンドコードのインテグリティの確認と、これらのオンデマンドサービスに適した正しい復号化鍵の設定とを担当する。オンデマンドコードのための鍵誘導プロセスは、カーネルエンジニアリングプロセスによって決定され得、製品/デバイス生成または製造技術から変化し得る。製品/デバイス生成は、デバイス製造を行うためのスケールである。例えば、プロセッサは、90ナノメートルnmまたは65nm技術を用いて製造され得る。しかし、上記カーネルが鍵誘導アルゴリズムを変更するたびに、ユーザコードのためのオフライン署名ツールを暗号化プロセス内のフローに整合するように変更する必要がある。プロセッサは、リセットされた後、シリコン内のROMコードからブートする。ブートストラップコードは、所与の暗号化カーネルのインテグリティを調査した後、復号化鍵を回復させ、上記鍵へと制御を転送するように構成される。インテグリティ照合は、IV160内の専用ハードウェア論理によって行われる。セキュアなカーネルのためのオフライン署名ツールは、インテグリティ照合ハードウェアと整合する暗号設定と、ブートROM110中にハードコードされた鍵回復機構とを有する。暗号化または鍵生成のためのハッシュ機能の選択は重要ではなく、一方向AES動作の連鎖法に基づき得る。SAMU104のアーキテクチャは、暗号化要求に基づいて何百万個の命令を1秒あたりにMIPS行うことが可能であり、暗号化加速例えば、AES、DES、SHAl、および他のアルゴリズムをサポートし得る。SAMU104アーキテクチャは、以下のうち全てまたは一部をサポートし得る:真の乱数生成器および疑似乱数生成器、セキュアなタイマー、メモリ管理を用いた命令/データキャッシュ、複数の実行モードまたは保護レベル、カーネルによって構成されたアドレス範囲実行、ブート-ストラップコード有効化、およびさらなる開発ツール。ハードウェアに基づいたページテーブルを用いることにより、セキュリティおよび性能双方が向上する。しかし、ほとんどのオペレーティングシステムによって用いられることが多い4キロKバイトのページサイズをシステムによってサポートするためには、さらなる専用メモリが必要となるため、高コストになり得る。このようなサポートに関する問題は、本明細書に記載されるセキュアな実行ユニットによって正当化される。一実施形態において、1メガMバイトのページサイズを開始点として用いる。ハードウェアページテーブル機構は、1Mバイト~4ギガGバイトの任意の2のべき乗のページサイズをサポートし得る。あるいは、他のページサイズもサポートされ得る。例えば、4Kバイト、8Kバイト、16Kバイト、および他の2のべき乗のページサイズ。上記ページテーブルは、アドレス変換の他にも、他のセキュリティ特性を含み得る。例えば、上記ページテーブルは、以下のうち1つ以上を示すデータ構造を含み得る:ページ入力が活性であるかまたは無効であるか、ページがデータまたはコードを含むか否か、別個の読み出しアクセスおよび書き込みアクセス制御、メモリAESをオンオフにするための暗号化フラグ、またはメモリAESが必要な場合の鍵索引。ページまたはセグメント内にコードまたはデータが含まれるか否かを示すページテーブル情報は、大部分がセキュリティ問題であり、複数のコンテクストのサポートにおいて本質的ではないであろう。ページがデータ保存のためのものである旨をカーネルに通知することにより、上記カーネルは、当該ページからのコードを実行する試行を全て捕捉トラップすることができる。この情報により、バッファ-オーバーラン攻撃を捕捉するための有効な機構を促進することも支援される。読み出しおよび書き込みアクセス制御は、ページまたはセグメント毎に規定され、当該ページまたはセグメントへの読み出しおよび/または書き込みアクセスが許可される前に、コード実行中の最小保護リングを指定する。その結果、垂直特権違反が回避される。垂直特権違反は、低レベルの特権が割りあてられたアプリケーション例えば、ユーザアプリケーションがより高レベルの特権で実行する別のプロセス例えば、カーネルに所属するページへの読み出し/書き込みアクセスを取得する場合に発生する。典型的なプロセッサアーキテクチャにおいては、多様なレベルの保護/特権を用いて、制御機能およびプロセス例えば、特定のデータ構造またはコードセグメントへアクセスするための特定の事前規定された保護レベルを持たなければならないプロセスを分離および制御する。暗号化フラグは、メモリインターフェースに対するキャッシュがM-AES150をオンにすることができるか否かを示す。M-AES150は、AES動作の前後に適用されたハードウェア変調を有する。M-AES150によって保護された情報は、セキュアな実行環境および/または環境内部において実行する機密機能のみによって用いられる機密データによって実行されるべきSAMU機密コードの内部において消費されるべきものである。ページテーブル入力において設定された暗号化フラグがマーク付けされたページに対し、ハードウェアは、命令キャッシュまたはデータキャッシュ中への全メモリ読み出し動作に対して復号化を自動的に適用し、キャッシュラインのフラッシュ時において、メモリ書き込みに対して暗号化を適用する。MMU120における異なるページ入力は、異なる暗号鍵と関連付けられ得る。一実施形態においては、4つの活性暗号鍵が任意の時点においてサポートされ得る別の実施形態においては、任意の数の鍵がサポートされ得る。各ページ入力は、暗号化および復号化双方に用いることが可能な主要ハードウェアの索引を指定し得る。その結果、カーネルコード/データおよびユーザコード/データを独立した鍵で保護することが可能になる。ブートコードは、カーネルコード鍵を回復することを担当し、カーネルは、ユーザコード鍵を回復することを担当する。上記カーネルは、全データ鍵のランタイム生成も担当する。別の実施形態において、上記コード鍵は、これらの機能双方に、それらへの入力部分としてeフューズ値を用いることにより、インテグリティ照合機構中の署名と接続される。上記復号化鍵と、上記インテグリティ照合機構とを接続することにより、SAMU改ざんが困難になる。最終的に、これら全てのリソースすなわち、ページテーブル入力およびメモリAES鍵の構成空間の制御が必要となる。上記構成への読み出し/書き込みアクセスは、制御状態レジスタ中の別個のアクセス制御フィールドによって保護される。コードを適切な保護リング内に配置した後、上記コードにより、これらの構成設定を改変することができる。このハードウェアに基づいた仮想メモリサポートと、上述の関連付けられたセキュリティ設定とにより、現代のPCベースのオペレーティングシステムと共に用いられる機密コードおよびデータを保護するためのロバストなソリューションが得られる。その結果、ソフトウェアベースの不正防止および難読化に関連する演算および出力/熱オーバーヘッドが無くなる。図2は、SAMUアーキテクチャを用いた場合の単一のアプリケーションのフロー図である。SAMUのためのバイナリを生成するステップ210。署名ツール内においてランダム鍵が生成されるステップ215。上記バイナリは、上記SAMUのために再暗号化されステップ220、セキュアなカーネルを例えばGPUの表示ドライバの一部として発送することを含む。ユーザは、セキュアなカーネル表示ドライバおよびセキュアなアプリケーションを共に搬送するユーザのコンピュータ/システム上にドライバおよび上記アプリケーションをインストールし得るステップ225。ブート時間において、セキュアなカーネル185がSAMUハードウェアへと提示されるステップ230。上記セキュアなカーネルは、ブートROM110によってインテグリティについて照合および有効化されるステップ235。ブートROM110は、セキュアなカーネル185のインテグリティを有効化ステップ240した後、暗号化コードのオンデマンド復号化を行うためのメモリAES内の復号化鍵を構成し、制御をセキュアなカーネル185へと送る。上記セキュアなカーネルが有効化に失敗した場合ステップ245、SAMUサービスはさらされず、上記アプリケーションはソフトウェアベースの保護スキームに後退する。有効化が成功した場合、上記セキュアなカーネルのための復号化鍵がブートROM110によって構成されるステップ250。アプリケーションがユーザによって起動されるステップ255。アプリケーションが起動すると、アプリケーションは、SAMUサービスの存在を検出しステップ260、SAMUから提供された保護された実行環境を利用する準備をする。アプリケーションは、セキュアなSAMUアプリケーションを、コンテクスト生成のためのセキュアなカーネルへ提供するステップ265。SAMUアプリケーションは、セキュアなカーネル185によってインテグリティについて有効化されるステップ270。セキュアなカーネル185は、SAMUアプリケーションのインテグリティについて確認するように、IVハードウェア160を構成するステップ275。インテグリティ有効化の成功後、SAMUアプリケーションのための復号化鍵が、セキュアなカーネル185によって構成されるステップ280。IVハードウェア160がSAMUアプリケーションを有効化できない場合ステップ275、SAMUアプリケーションは実行を許可されず、対応する失敗メッセージがアプリケーションへ返送されるステップ285。この場合、アプリケーションは、ソフトウェアベースの保護技術に後退することを選択することができる。上述したようなハードウェア加速のためのSAMUに対するコードまたはデータのオフロードは、復号化のオフロードおよび3Dレンダリングのオフロードに類似する。例えば、アプリケーションは、APIを用いて、良好に規定されたワークアイテムをGPUへとオフロードする。SAMU104は、セキュアなブート、インテグリティ確認、実行暗号化コード、機密機能によって用いられる機密データについてのメモリ保護を提供し、チップ製造におけるデバッギングを無効にすることにより、セキュアな実行環境を提供する。上記セキュアな環境内において、少なくとも異なる2種類のコードがある例えば、カーネルコードまたはファームウェアコード、およびブートストラップコード。上記ブートストラップコードは、セキュアな保存部中に暗号化された態様で保存され、最終チップと共に発送される。上記ブートストラップコードは、ブート時において主に以下の3つのサービスを提供する:チップ製造のためのデバッギングの無効、SAMUドライバから提供されたカーネル画像のインテグリティの確認、および所与のカーネルのために復号化鍵のコンピューティングを行った後、上記カーネルへ制御を送ること。復号化鍵は、ブートプロセスの一部として計算され、カーネル画像のインテグリティの照合が成功した後のみに用いられる。上記復号化鍵は、以下の複数の入力の関数である:例えば、チップ製造後に変更ができないように、チップへのエッチングまたはコンピュータ論理のハードコーディングを含む製造時において注入されたeフューズパターン、署名されたカーネル画像の一部として保存されたカーネル2値署名において生成されたランダムパターン、およびブート時において上記SAMUドライバから提供されたソフトウェアパラメータ。カーネル復号化鍵のコンピューティングにおいては、シリコン例えば、秘密乗算器、DSPブロック、プロセッサ、高速IO論理、および埋設メモリに埋設された秘密機能へのアクセスも行われる。カーネルコードは、SAMU104のためのマネージャとして機能し、サービスをSAMUドライバへ提供する。上記カーネルコードは、製造業者カーネル証明書を含み得、ブートローダによってインテグリティが実行される。上記カーネルコードは、SAMUリソースを制御し、SAMUおよびプロセッサ双方に対するレジスタレベルアクセスを有する。また、上記カーネルコードは、ランタイムにおいてオンデマンドサービスを提供するためのさらなるアプリケーションコードをロードし得る。セキュアなカーネル185は、ドライバ呼び出しを取り扱い、ファームウェアルーチンを相応に呼び出す。図3は、SAMUソフトウェアスタック300を示す。ホストアプリケーション310およびSAMUドライバ320は、ホストプロセッサ360例えば、パーソナルコンピュータ、スマートフォン上に常駐する。ホストアプリケーション310から来たリクエストに基づいて、SAMUドライバ320はコマンド330を発行し、対応するデータ340をSAMUプロセッサ370のセキュアなカーネル380例えば、プロセッサコア内またはGPU内のものへと転送する。セキュアなカーネル380は、複数のアプリケーションプロセス例えば、SAMUアプリケーションからのデータを受信し得る。このデータは、コード、アプリケーションデータ、および各鍵および署名ツールによって埋設された署名を含み得る。セキュアなカーネル380は、処理されたデータ340をSAMUドライバ320へと返送し得、その後SAMUドライバ320は上記情報をホストアプリケーション310へと送る。あるいは、セキュアなカーネル380は、終了コード350をSAMUドライバ320へと送り得、終了コード350は最終的には処理対象としてホストアプリケーション310へ送られる。図4は、SAMUアーキテクチャにおけるランタイムメモリ管理の例を示す。SAMU仮想アドレス410は、MMU120内の仮想アドレスページテーブル入力D0~D15へとマップされ、仮想アドレスページテーブル入力D0~D15は、アドレスをデバイスアドレス空間420例えば、GPUメモリ、DSPメモリ、FPGAメモリ、または他の類似のデバイス内の入力へマップする。一実施形態において、仮想アドレスページテーブルは、MMU120のハードウェアレジスタに保存され、外部保存に依存するのではなく、プロセッサ180へのみアクセスが可能となる。このスキームの1つの特徴は、複数のアプリケーションの同時管理が可能な点にある。この例において、SAMUアドレス空間410およびデバイスアドレス空間420内のSA2と、デバイスアドレス空間420内のSA1とは、少なくとも2つのアプリケーションを示し、SA2は、そのときにSAMUによってサービスされる活性コンテクストである。以下、ページテーブル入力のアプリケーションについて説明する。ページテーブル入力を活性または非活性として表記して、ハードウェアに基づいたページ変換を行う。異なるコンテクストは、典型的には、異なる数のページテーブル入力を消費する。なぜならば、全コンテクストが同一数のメモリセグメントを利用しなければならない場合、ソフトウェア開発の観点からみて制限が高すぎるからである。入力毎のフラグにより、メモリ管理におけるカーネルの柔軟性が得られる。また、入力毎のフラグにより、水平特権違反も回避され得る。水平特権違反が発生する場合としては、同一保護リングが割りあてられた2つのコンテクストリング値は、SAMUアドレス空間410、SRBに示すようにSAMUリングバッファ中に保存されるが別のコンテクストに所属するページへのアクセスを得た場合がある。本明細書に記載される実施形態においては、SAMUを用いて、ホストプロセッサからの機密コードをオフロードする。上記プロセッサは、SAMU上において実行する機密コードへ機密データを保護された態様で送る。貴重なコンテンツを取り扱うために、SAMUは、コンテンツコピー保護、逆多重化、および音声および/または映像パケットの抽出、音声および/または映像主要ストリームの構築、再暗号化を適用した後のホストおよび/またはさらなる処理のためのコーデック復号化への制御返送を提供し得る。SAMUによって提供されるセキュアな実行環境を用いて、高価値コンテンツ消費のために確立されたコピー保護スキームと関連付けられた機密コードを実行することができる。セキュアな実行が必要となり得る環境の一例として、ブルーレイ登録商標ディスクプレーヤまたはホスト上において実行するブルーレイ登録商標プレーヤアプリケーションがある。ブルーレイ登録商標ディスクプレーヤは、パーソナルコンピュータまたはユーザデバイスの一部であり得る。ソフトウェアベンダーは、ブルーレイ登録商標ディスクを実行するためのセキュアな実行環境を必要とする。なぜならば、上記ディスクは、コンテンツ制作者がコンテンツ保護のために用いたロバストなコピー保護スキームと共に送られるからである。上記SAMUは、このような環境を提供する。ブルーレイ登録商標プレーヤは、コンテンツ保護機能例えば、AACSおよびBD機能をオフロードして、セキュアな環境上において実行させることができる。上記保護されたブルーレイ登録商標コンテンツは、光ディスクからロードされるが、復号化動作および逆多重化動作を行う際には、上記セキュアな環境内のAACSおよびBD機能に依存する。映像ビットストリームを上記セキュアな環境においてAESによって再暗号化して、映像復号器によって消費することができる。音声ビットストリームおよび他のナビゲーションデータをAESによって再暗号化して、プレーヤによって消費することができる。しかし、当業者であれば、SAMUの用途はブルーレイ登録商標ディスクプレーヤに限定されないことを理解する。SAMUは、他のハードウェアプラットフォーム例えば、携帯電話、ハンドヘルドアクセサリ、測位システムなどにおいても利用可能である。上記実施形態において、SAMUは、プロセッサ中心のセキュリティプラットフォームである。プロセッサは、別のデバイス例えば、一体型ノースブリッジ、アプリケーションプロセッサ、中央処理装置、デジタル信号プロセッサの一部を形成し得る。SAMUはプロセッサの一部であるため、コーデック加速が可能となり、SAMUから出てきたビットストリームを保護するための鍵単数または複数をコーデックアクセラレータへの入力として用いることができ、上記鍵は、プロセッサから退出することなくSAMUからコーデックアクセラレータへと移動することができる。このような構造および動作により、高価値コンテンツ消費のためのセキュリティの向上が可能となる。SAMUカーネルの一部として提供されたセキュリティサービスを検出および利用することにより、機密コードの実行をプロセッサからSAMUへと移動させることができる。あるいは、認証ドライバへのコードを署名されファームウェアとして半導体製造業者から提示することにより、機密コードをプロセッサからSAMUへと移動することも可能である。また、SAMUを用いて、他の暗号動作例えば、秘密鍵へのアクセスが必要な場合における認証およびデジタル署名の生成をオフロードすることもできる。これらの動作をSAMUへと移動することにより、秘密鍵を暗号化された態様でホストシステム中に保存することができ、上記秘密鍵の平文値は、保護された実行環境のみにおいて回復および消費される。SAMUの利用により、全体的なシステムロバスト性および出力効率の向上が可能となる。SAMUは、信頼性確認のための単一ポイントを処理アーキテクチャ例えば、プロセッサ、GPU、CPU、DSPまたはFPGA内に提供する。SAMUは、暗号化および署名されたカーネルコードのみからブートし、暗号化および署名されたコードのみを実行する。SAMUハードウェアは、未署名でありかつ暗号化されていないすなわち、未暗号化のコードを実行し得る。SAMUは、ハードウェアに基づいたセキュアなブートおよびメモリ保護を備えており、ホストプロセッサから提供されたオンデマンドコードを実行することができる。一実施形態において、デバイス例えば、GPUプラットフォーム内の32ビットRISCプロセッサを統合し、上記プロセッサにセキュリティ論理を付加することにより、出力効率が良くかつコスト効率の良いセキュアな実行環境が確立される。この環境における実行対象として2値がランダム生成された鍵によって暗号化され、オフラインツールによって同時署名される。保護された2値は、暗号化形態でドライバおよび/またはアプリケーションへ提供され、メモリにロードされた際にもこの形態のままである。機密コードがオンデマンドで命令キャッシュ中へとロードされる際、復号化がオンザフライで行われる。このような構成により、PC中において利用可能な既存のメモリを用いて機密情報を保存することが可能になる。機密コードは、オフライン署名ツールによって保護される。機密コードには、リソースアクセスを管理するカーネルと、実際のセキュリティ関連機能をホストアプリケーションへ提供するユーザコードとの2種類が少なくともある。SAMU製造業者は上記カーネルを所有し得るが、ユーザコードは、SAMU用のアプリケーションを構築するSAMU製造業者または外部ソフトウェアベンダーのいずれかから来る。これらの種類の機密コードのために、別個の署名ツールを開発してもよい。また、SAMU製造業者が開発ツールをソフトウェアベンダーに提供した場合またはSAMU製造業者およびソフトウェアベンダー双方が分割スキームおよび関連APIを開発した場合、SAMUのコア機能をソフトウェアベンダーに提供することもできる。これらの状況において、SAMU製造業者またはソフトウェアベンダーのうちいずれかが、オンデマンドファームウェアコードを生成し得る。さらに、本明細書に記載の実施形態により、研究および開発リソースのランダム化が低減し、収益からの小売り圧力が軽減し、また、パーソナルコンピュータプラットフォーム上における高価値ブロードキャストが可能となる。高価値コンテンツを挙げると、例えば、デジタル映像ブロードキャストハンドヘルド、ARIBがある。本明細書に記載の実施形態により、難読化された不正防止ソフトウェアの利用に費やされる出力が低減し、有効なソフトウェアの取り消し頻度が低減し、顧客にとって煩わしさが比較的少ないかまたはほとんど無くなるため、コンテンツ所有者の満足度も増す。本明細書に記載の実施形態は、プロセッサコア内において実行され得る。上記プロセッサコアは、CPU、DSP、FPGA、GPUまたはこれらの組み合わせとして実現され得る。当業者であれば、プロセッサコアが別のデバイス例えば、一体型ノースブリッジ、アプリケーションプロセッサ、CPU、DSPの一部を形成し得ることを理解する。適切なプロセッサを例示的に挙げると、汎用プロセッサ、特殊目的用プロセッサ、従来のプロセッサ、デジタル信号プロセッサDSP、複数のマイクロプロセッサ、DSPコアと関連付けられた1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路ASIC、フィールドプログラマブルゲートアレイFPGA回路、他の任意の種類の集積回路ICおよび/または状態機械がある。さらに、本発明は、ハードウェア、ソフトウェア、ファームウェアまたはこれらの任意の組み合わせとして実現され得る。本発明の実施形態またはその一部は、多数のプログラミング言語例えば、ハードウェア記述言語HDL、アセンブリ言語、C言語、ネットリストで符号化され得る。例えば、HDL例えば、Verilogを用いて、本発明の1つ以上の実施形態の局面を実行するデバイス例えば、プロセッサ、特定用途向け集積回路ASIC、および/または他のハードウェア要素の合成、シミュレートおよび製造を行うことができる。Verilogコードを用いて、SAMUアプリケーションが可能なプロセッサのモデル化、設計および/または実行を行うことができる。例えば、Verilogを用いて、レジスタ転送レベルRTL記述論理を生成することができる。この論理は、SAMUアプリケーションのための命令を実行することができる。次に、上記論理のRTL記述を用いて、所望の論理またはデバイスの製造に用いられるデータ例えば、グラフィック設計システムGDSまたはGDSIIデータを生成することができる。Verilogコード、RTL記述および/またはGDSIIデータは、コンピュータで読み出し可能な媒体上に保存され得る。本発明の局面を実行するために上記論理によって実行される命令は、多様なプログラミング言語例えば、CおよびCによって符号化され得、オブジェクトコードとしてコンパイルされることにより、論理または他のデバイスによって実行され得る。本発明の局面は、全体的または部分的に、コンピュータで読み出し可能な媒体上に保存され得る。上記コンピュータで読み出し可能な媒体上に保存された命令は、本発明を全体的または部分的に行うようにプロセッサを適合させることもできるし、あるいは、本発明を全体的または部分的に実行するように特定に適合されたデバイス例えば、プロセッサ、ASICまたは他のハードウェアを生成するように適合させることもできる。これらの命令を用いて、マスクワーク/フォトマスクの生成を通じて製造プロセスを最終的に構成して、本明細書に記載される本発明のハードウェアデバイスを実現する局面を得ることができる。"