検証実施命令を記憶するための不揮発性メモリと、安全区分を有するシステムメモリと、そして前記不揮発性メモリと前記システムメモリに結合されたプロセッサとを備え、前記プロセッサは、ブートストラップ安全ロジックを含むオンチップBIOSと、そして前記オンチップBIOSと前記システムメモリに結合された実施ユニットであって、前記ブートストラップ安全ロジックにより特定されるオペレーションを実施するように構成された前記実施ユニットとを備え、前記オペレーションは前記不揮発性メモリから前記安全区分へ前記検証実施命令をコピーするステップと前記検証実施命令の信頼性を検証するステップとを含む、処理システム。前記プロセッサは、キーを記憶するように構成されたキー記憶要素と、そして前記実施ユニットと前記キー記憶要素に結合された暗号化ロジックであって、前記キーに基づいて前記検証実施命令を復号化するように構成された暗号化ロジックとをさらに備える請求項1に記載の処理システム。前記暗号化ロジックはRSAアルゴリズムを実行する請求項2に記載の処理システム。前記キーがRSA秘密キーである請求項3に記載の処理システム。前記プロセッサは、前記実施ユニットに結合された安全区分実施ロジックであって、前記安全区分へのアクセスをモニターし、メモリアクセスを許可するか否かを決定するように構成された安全区分実施ロジックをさらに備える請求項1に記載の処理システム。前記プロセッサは、前記安全区分実施ロジックに結合され、仮想メモリアドレスを物理メモリアドレスに整合させるように構成されたTLBをさらに備える請求項5に記載の処理システム。前記システムメモリはオンチップ物理メモリと外部システムメモリを備え、前記プロセッサは仮想化することにより異なるプロセス間でオンチップ物理メモリを共有するように構成されている請求項1に記載の処理システム。前記プロセッサは前記外部システムメモリに暗号化されたデータを記憶し、前記オンチップ物理メモリに復号化されたデータを記憶するように構成されている請求項1に記載の処理システム。第1のメモリから第2のメモリの安全区分に検証実施命令をコピーするために、オンチップBIOSに記憶されたブートストラップ安全ロジックを、前記プロセッサにより、実行するステップと、そしてその後、前記検証実施命令の信頼性を検証するステップとを含む方法。前記プロセッサのキー記憶要素に記憶されたキーに基づいて前記検証実施命令を、前記暗号化ロジックにより、復号化するステップをさらに含む請求項9に記載の方法。前記暗号化ロジックはRSAアルゴリズムを実施する請求項10に記載の方法。前記キーはRSA秘密キーである請求項11に記載の方法。前記安全区分実施ロジックにより、前記安全区分へのアクセスをモニターし、メモリアクセスを許可するか否かを決定する請求項9に記載の方法。I/Oインタフェースと、ディスプレイデバイスと通信するように適応されたディスプレイコントローラと、スタンダードネットワークプロトコルを使用して通信するように適応されたネットワークインタフェースと、そしてオンチップメモリとを有するアプリケーションプロセッサを含む処理システムを作動させるステップと、不揮発性メモリに記憶された検証実施命令をシステムメモリの安全区分にローディングするステップと、プロセッサに含まれたオンチップBIOSに収容されたブートストラップ安全ロジックにより特定されるオペレーションを実行するステップであって、前記オペレーションが前記不揮発性メモリから前記安全区分に前記検証実施命令をコピーするステップと前記検証実施命令の信頼性を検証するステップを含む、ステップとを含む方法。キー記憶要素内にRSA公開キーを記憶するステップと、安全区分実施ロジックで前記安全区分へのアクセスをモニターするステップと、前記安全区分実施ロジックでメモリアクセスを許可するか否かを決定するステップと、そして仮想メモリアドレスを物理メモリアドレスにTLBで整合させるステップとをさらに含む請求項14に記載の方法。前記不揮発性メモリはフラッシュメモリからなり、前記実行ユニットは演算ロジックユニットを含む、請求項14に記載の方法。1つまたは複数の安全区分レジスターにおいて前記システムメモリの前記安全区分を定めるステップをさらに含む請求項14に記載の方法。前記安全区分実施ロジックでメモリアクセスを許可するか否かを決定するステップが、前記安全区分外のターゲット位置の分岐命令を検出するステップと、前記安全区分外に在る前記ターゲット位置に基づいて前記分岐命令を拒否するステップと、をさらに含む請求項15に記載の方法。前記暗号化ロジックが乱数発生器からなる請求項15に記載の方法。図1は、本発明の一実施形態による、安全に実行できるコンピュータシステムの部分ブロック図である。コンピュータ100はコンポーネント101を含み、このコンポーネント101は、プロセッサ110、チップセット102、システムメモリ120、ネットワークインタフェースカード103、不揮発性の大容量記憶域104、入出力I/Oデバイス107、およびBIOSbasicinput/outputsystemROM108を備えることができる。プロセッサ110はチップセット102に結合することができる。結合という語は、直接接続、間接接続、間接通信などを含む。チップセット102もまた、システムメモリ120、ネットワークインタフェースカード103、不揮発性の大容量記憶域104、入出力デバイス107、およびBIOSROM108に結合することができる。これらのデバイスは、システムバスやPCIperipheralcomponentinterfaceバスなどのバスを介してチップセットに結合することができる。ネットワークインタフェースカード103は、ネットワーク130に結合することができる。コンピュータ103はまた、コプロセッサやモデムなど、追加のコンポーネントを含むこともできる。プロセッサ110は、カリフォルニア州サンタクララのIntelCorp.製のPENTIUMクラスプロセッサなどの汎用マイクロプロセッサとすることができる。別の実施形態では、プロセッサは、特定用途向け集積回路ICASIC、コントローラ、マイクロコントローラなどとすることができる。チップセット102は、コンピュータシステムのプロセッサと他のコンポーネントとの間でデータを転送するためのハブまたはコアとして働く1つまたは複数の集積回路チップとすることができる。一実施形態では、チップセット102は、ノースブリッジ機能として知られる機能を実施するメモリコントロールハブMCHと、サウスブリッジ機能として知られる機能を実施する入出力コントローラハブICHを含む。システムメモリ120は、ダイナミックランダムアクセスメモリDRAMやスタティックランダムアクセスメモリSRAMなど、ディジタル情報を記憶するように適合された任意のデバイス、またはこれらの任意の組合せである。一実施形態では、システムメモリ120は揮発性メモリである。プロセッサ110、チップセット102、システムメモリ120、およびBIOSROM108は、コンピュータ100中のシステムマザーボード上に装着することができる。ネットワークインタフェースカード103は、標準的なネットワークプロトコルを使用して通信するためのロジックを含むことができる。ネットワーク130は、ローカルエリアまたはワイドエリアコンピュータネットワークとすることができ、例えばイントラネットやインターネットとすることができる。不揮発性の大容量記憶域104は、フラッシュメモリ、ハードディスク、光ディジタル記憶デバイス、電磁気記憶デバイス、DVD、CD-ROMなど、ディジタル情報を記憶するように適合された任意のデバイス、またはこれらの任意の組合せとすることができる。図1には、光記憶装置105およびフロッピードライブ106を含むものとして、不揮発性の大容量記憶域104を示す。入出力デバイス107は、キーボード、マウス、表示画面、プリンタなど、またはこれらの任意の組合せとすることができる。BIOSROM108は、キーボード、表示画面、ディスクドライブ、シリアル通信機構などの周辺デバイスを制御するためのコードを含むことができる。BIOSROM108はまた、その他の様々な機能を実施するのに使用されるコードを含むこともできる。図2は、本発明の一実施形態による安全な実行コンポーネントを有するプロセッサと、安全な区分を有するメモリとの部分ブロック図である。図2には、例えば図1に示したコンピュータシステム100などのコンピュータシステムの一部であるプロセッサ210およびシステムメモリ220が示してある。プロセッサ210およびシステムメモリ220は、図1のプロセッサ110およびシステムメモリ120と同じものとすることができる。プロセッサ210は、例えば図1のチップセット102などを介して、システムメモリ220に結合することができる。プロセッサ210は、例えば算術論理ユニットなどの実行ユニット211を含むことができ、これはレジスタファイル212に結合することができる。レジスタファイル212は、汎用レジスタ、フラグレジスタ、命令ポインタ、インデックスレジスタなど、またはこれらの組合せなど、複数のレジスタを含むことができる。レジスタファイル212は、安全な区分レジスタ214を含むことができる。実行ユニット211は、オンチップBIOSbasicinput/outputsystem215、プロセッサキー記憶要素216、および乱数生成器RNGユニット217に結合することができる。オンチップBIOS215は、プロセッサがシステムメモリ120など他のシステムコンポーネントと通信するために使用する、焼き込まれたロジックを含むことができ、また、プロセッサが開始ブートアップされるときに実行されるロジックを含むことができる。このロジックは、後述するようにブートストラップセキュリティロジック241を含むことができる。さらに、オンチップBIOS215は、システム開始時にBIOSROM108からシステムメモリに命令をロードするためのロジック例えばファームウェアやマイクロコードなどを含むこともできる。プロセッサ鍵記憶要素216は、プロセッサ210が他のシステムコンポーネントおよび他のコンピュータシステムから受け取った情報を検証および認証するのに使用することのできる秘密鍵を含む。プロセッサ鍵は、プロセッサ鍵記憶要素216に焼き込むことができる。乱数生成器ユニット217は、任意のランダム化機能を使用するハードウェア乱数生成器とすることができる。一実施形態では、乱数生成器ユニット217は、物理デバイス中の統計的現象例えば熱雑音を利用して乱数を提供する。この実施形態では、実行ユニット211は、安全な区分実施ロジック218にも結合することができる。安全な区分実施ロジック218は、後述するように、メモリ中の安全区分を管理するためのロジックを含む。他の実施形態では、安全な区分実施ロジック218は、暗号ロジック219に結合される。暗号ロジック219は、安全区分に記憶される情報を暗号化し、安全区分から読み取られた情報を暗号化解除する。暗号ロジック219は、DESDataEncryptionStanard、RSARivest-Shamir-Adleman、DSSDigitalSignalStandard暗号化などのアルゴリズムを実装したハードウェアロジックとすることができる。一実施形態では、暗号ロジック219は、プロセッサ鍵記憶要素216に記憶されたプロセッサ鍵ではなく、プラットフォーム特有の鍵を使用する。安全な区分実施ロジック218および暗号ロジック219は、アドレス変換バッファTLB213に結合することができる。TLB213は、プロセッサ210のアドレス空間中の仮想アドレスを、システムメモリ220中の物理アドレスおよびプロセッサ210からアクセスされる他のメモリ中の物理アドレスとマッチさせるのに使用することができる。図2にはまた、安全なメモリ区分223を含むシステムメモリ220も示す。安全なメモリ区分223は、安全な区分中にあるコードからしかアクセスされない、物理メモリまたは仮想メモリのセクションとすることができる。一実施形態では、安全区分223は、2つの安全な区分レジスタ214によって決めることができる。例えば、安全区分223は、仮想メモリ中の安全区分の開始を指定する安全区分仮想アドレス基底レジスタと、安全区分のサイズを指定する安全区分仮想アドレス範囲レジスタとによって定義することができる。図2では、安全区分223は、システムメモリ220中の物理アドレスにマッピングされた状態で示されている。安全なメモリ区分223は、安全なデータセクション225および安全なコードセクション226を含むことができる。安全なコードセクション226は、例えば信用できる検証実施命令242を記憶することができる。この命令242は、暗号アルゴリズムを適用し、ネットワークを介して受信された伝送またはDVDやCD-ROMなどの媒体に記憶されたコンテンツの信憑性および保全性を検証するのに使用される。安全なデータセクション225は、秘密鍵や中間データ例えばセキュリティ命令の制御フロー情報など、安全コードによって使用されるデータを含むことができる。安全なコードセクション226は、後述するように使用することのできるエントリポイント228を有することができる。図2に示す実施形態は、次のように動作することができる。プロセッサ210は、プロセッサマイクロコードやオンチップBIOS検証ファームウェアコード図2にはブートストラップセキュリティロジック241として示すなどのブートストラップセキュリティロジックを使用して、BIOSコード例えばBIOSROM108中にあるを認証することにより、プラットフォームの保全性を保証する。次いで、安全なBIOS108は、チップセット中に他の保護機構があればその存在を妥当性検査する。一実施形態によれば、プロセッサ210がブートアップされるとき、プロセッサ210は、メモリを走査して安全区分のための位置を決定することにより、安全区分を生み出すことができる。次いでプロセッサは、安全区分基底レジスタおよび安全区分範囲レジスタをプログラムして、安全区分を定義することができる。これらのレジスタは、追記型レジスタとすることができる。他の実施形態では、他の機構を使用して安全区分を生み出すことができる。次いでプロセッサは、検証実施命令242、および鍵などの関連データを、システムメモリ220中の安全なメモリ区分223にコピーすることができる。別の実施形態では、プロセッサのブートアップ中に、検証実施命令242をディスクドライブなど不揮発性の大容量記憶域から安全なメモリ区分223にコピーする。この実施形態では、プロセッサ210は、オンチップBIOS215に記憶されたセキュリティロジック241と、プロセッサ鍵記憶要素216に記憶された鍵データを使用して、安全なメモリ区分223にコピーされた検証実施命令242およびデータの信憑性および保全性を検証することができる。この検証により、不揮発性メモリに記憶された検証実施命令242に、攻撃による破損または欠陥が生じているかどうかを判定することができる。ブートストラップセキュリティロジック241をプロセッサに記憶し、検証実施命令242を不揮発性メモリに記憶することは、検証実施命令242をプロセッサ自体に焼き込むことよりも低コストであろう。一実施形態では、安全な区分実施ロジック218は、プロセッサ210によって行われるどんなメモリアクセスも監視する。このようなアクセスには、メモリに記憶された命令の実行や、メモリ中のデータに作用する命令の実行を含めることができる。命令は、メモリ中のある位置に記憶されたデータを読み取るとき、またはある位置にデータを書き込むときに、その位置でデータに作用する。この実施形態では、安全な区分実施ロジック218は、プロセッサ210によって各命令が実行される前に命令を調べることになる。命令が、区分エントリポイント228以外の安全なメモリ区分223内の位置への分岐である場合は、安全な区分実施ロジックは、この命令を実施すべきでないと決定する。このような場合、区分実施ロジックは、トラップハンドラにトラップすることができる。安全な区分実施ロジック218は、区分内のある位置から区分内の別の位置への分岐の実行は許可し、また、区分エントリポイント228への分岐の実行は許可する。エントリポイント228は、安全区分にジャンプしたソフトウェアの信憑性を検証する検証ルーチンの開始を含むことができる。したがって例えば、このルーチンは、未許可のまたは悪意あるプログラムが安全なコードを実行しないようにすることができる。さらに、エントリポイントを安全なコード226へエンフォースすることにより、安全な区分実施ロジック218は、未許可のまたは悪意あるコードが検証ルーチンをバイパスするのも防止する。他の実施形態では、命令が区分エントリポイントに記憶されておらず、前に実行された命令が区分の開始の前の命令だったときは、安全な区分実施ロジックは、この命令を実行しないと決定する。したがって、区分エントリポイント228が区分中の第1の命令でない場合、安全な区分実施ロジック218は、プロセッサがエントリポイント以外のポイントで安全区分中に続けて進まないようにすることになる。この実施形態では、命令が安全区分外にあり、安全区分内の位置に作用例えば読取りまたは書込みしようとしているときは、安全な区分実施ロジックは、この命令を実行しないと決定する。したがって、安全なコードセクション226中の信用できる命令だけが、安全なメモリ区分223の安全なデータセクション225内のデータに作用することができる。この実施形態では、安全区分中に位置するコードによってアクセスできることを除いては、安全データにアクセスすることはできない。他の実施形態では、安全区分中のコードは、安全区分外にあるデータにアクセスすることができる。別の実施形態では、この区分の安全なデータセクション225中のデータに作用しようとする命令が適切な読取り/書込み許可を有さない場合は、安全な区分実施ロジック218は、この命令を実行しないと決定することができる。別の実施形態では、安全区分外の命令が安全区分内の位置に作用しようとするときは、安全な区分実施ロジック218は、トラップハンドラにトラップすることができる。また、命令が適切な読取り/書込み許可なしで安全なデータセクション中のデータに作用しようとするときも、トラップハンドラにトラップすることができる。一実施形態では、安全なメモリ区分223は、仮想メモリ中の区分とすることができる。一実施形態では、プロセッサのアドレス空間は仮想メモリアドレス空間であり、すべての命令は、仮想アドレスでメモリをアドレス指定する。この実施形態では、安全区分は、プロセッサ210中で、仮想アドレス基底レジスタや仮想アドレス範囲レジスタなど、仮想アドレスによって指定される。安全区分を仮想アドレスで指定することにより、安全な区分実施ロジックはより早くパイプライン中に位置することができる。アドレス変換バッファ213が、これらの仮想アドレスを物理アドレスに変換することができる。安全区分についての仮想アドレスから物理アドレスへのマッピングは、信用できる機構を介して行うことができる。図3は、仮想メモリ区分および物理メモリ区分の部分ブロック図である。図3には、アプレット空間367およびカーネル空間365を有する仮想メモリ360を示す。アプレット空間367およびカーネル空間365は、物理メモリ320中の安全区分323にマッピングする。安全区分323中の情報は、不揮発性メモリ340中の安全な不揮発性空間345にスワップアウトすることができる。不揮発性メモリ340はフラッシュメモリとすることができる。一実施形態では、安全な不揮発性空間345は、安全区分323中のコードまたはデータのわずかな部分しか含まない。一実施形態では、検証実施命令242および関連データは、プロセッサ210からメモリに移行する間またはメモリに記憶されている間に暴かれないよう保護するために、暗号化された形で安全区分223に記憶される。この実施形態によれば、安全なコードおよびデータは、メモリ中の安全区分からプロセッサ210に転送された後で、実行ユニット211が作用できるように暗号ロジック219によって暗号化解除されることになる。反対に、安全なコードおよびデータがプロセッサ210からメモリ中の安全区分に転送される前には、暗号ロジック219によって暗号化されることになる。このようにすることで、安全なコードおよびデータは、例えばダイレクトメモリアクセス、ロジックアナライザ、イオンビームなどによる攻撃から保護されることになる。十分に強力な暗号化が用いられれば、攻撃者は、安全区分の内容を決定することができたとしても、安全なコードまたはデータを決定することはできないことになる。一実施形態では、安全なコードおよびデータは、例えばディフィーヘルマンメソッドなどの共有暗号アルゴリズムを使用して暗号化および暗号化解除される。このような実施形態では、カバー鍵を使用してデータをカバーすることができ、このカバー鍵は共有されない。カバー鍵は、ブートアップロジックによって生成することができる。他の実施形態では、1つのシステムがいくつかのプロセッサを有し、カバー鍵はシステムプロセッサによって共有される。他の実施形態では、コンピュータシステムは、ディスクドライブなど不揮発性の大容量記憶域中に安全区分を有する。不揮発性の大容量記憶域中の安全区分は、揮発性の大容量記憶域中の安全区分への追加的なものとすることができる。この実施形態によれば、不揮発性メモリ中の区分は、安全にされたコードによってのみアドレス指定可能である。乱数生成器217を使用して、暗号アルゴリズムの実施または新しい鍵の生成を行うことができる。プロセッサは、安全な不揮発性NVメモリを使用して、単調な値を最新のものに維持することができる。図4に、本発明の一実施形態による命令処理方法のフローチャートを示す。命令は、例えば、図1および2のプロセッサ110や210などのプロセッサによって実行されるアセンブリ言語命令とすることができる。実行前に、命令を調べる401。命令が仮想メモリ中の位置区分内の位置への未許可アクセスであるときは、この命令を実行しないと決定する。一実施形態では、命令が区分内の位置にあるデータに作用するものであり、命令が区分内に記憶されていないときは、この命令を実行しないと決定する402。他の実施形態では、命令が区分外の位置からの分岐であり、この分岐が区分内の位置への分岐であり、この分岐が区分エントリポイントへの分岐でないときは、この命令を実行しないと決定する403。別の実施形態によれば、命令が区分エントリポイントに記憶されておらず、前に実行された命令が区分の開始の直前の命令であったときは、この命令を実行しないと決定する404。命令を許可すると決定した場合は、命令を実行する405。例えば、命令が区分内のある位置から区分内の別の位置に分岐するとき、および命令が区分外の位置から区分エントリポイントに分岐するときは、この命令を実行することができる。一実施形態によれば、この方法は、命令を実行しないと決定したときにトラップハンドラにトラップすることを含む406。図5に、本発明の一実施形態による別の命令処理方法のフローチャートを示す。一実施形態によれば、暗号化された命令をメモリ中の安全区分からプロセッサに読み込む501。命令は、任意の暗号技術を用いて暗号化されたものとすることができる。読み込んだ命令は、例えば図2に示した暗号ロジック219を使用して暗号化解除する502。次いで、暗号化解除した命令を実行することができる。一実施形態では、安全区分からデータを読み取る命令の場合は503、安全区分からデータを読み取り、読み取ったデータを暗号化解除する504。別の実施形態では、安全区分中の位置にデータを書き込む命令の場合は505、データを暗号化し、暗号化したデータを安全区分に書き込む506。他の実施形態では、安全区分からデータを読み取る命令か、または安全区分中の位置にデータを書き込む命令かを決定することは、データの仮想アドレスを安全区分の境界と比較することを含む。セキュリティ特権レベルSPL一実施形態では、2つのセキュリティ特権レベルを定義することができる。一方の特権レベルは、セキュリティカーネル特権レベルと呼び、これは、プリミティブなセキュリティ機能/サービスだけを実行するためのものとすることができる。第2の特権レベルは、プロセッサまたは第三者から供給されたセキュリティコードを実行するためのものと定義することができる。この第2の特権レベルは、アプレット特権レベルと呼ぶことができる。これらの新しいセキュリティ特権レベルSPLは、実行の特権レベルに関する既存の概念と直交することができる。したがってこの実施形態では、所与のアドレス範囲に対するアクセス実行/読取り/書込み特権は、現在特権レベルCPLだけでなく現在SPLCSPLとも相関関係になる。CSPLは、現在の実行に関連するセキュリティ特権レベルを示す。CSPLのデフォルト値は3とすることができる。この場合、CSPLが3のときは、実行モデルはデフォルト実行モデルと呼ぶことができる。CSPLがデフォルト以外の値を有するときは、実行モデルは隠し実行モデルの実行モデルと呼ぶ。2つの特権レベルは、SPL0カーネルの場合およびSPL1アプレットの場合と呼ぶことができる。複合特権レベルはリングx.yと呼ぶことができ、xは現在の実行についてのCPLであり、yは現在の実行についてのCSPLである。したがって、現在の実行の特権レベルが3.3である場合、これは現在のアプリケーションがデフォルトリング3で実行されていることを意味する。しかし、現在特権レベルが3.0である場合は、実行についての現在特権レベルがリング3であり、アクセス権がセキュリティカーネル特権レベルに関連することを意味する。一実施形態では、実モードではCSPLは常に3であり、この場合、実モードでの隠し実行に対するサポートはない。カーネル特権レベルアーキテクチャは、カーネル特権レベルで使用される新しい仮想アドレス範囲を定義することができる。新しい仮想アドレス範囲は、仮想アドレス基底レジスタカーネルVABRkおよび仮想アドレス範囲レジスタカーネルVARRkによって定義することができる。VABRkおよびVARRkによって定義する仮想アドレス範囲は、それに関連するカーネルレベルのセキュリティアクセス権を有するように定義することができ、安全なカーネル空間、またはカーネルの安全なメモリ区分と呼ぶことができる。一実施形態では、安全なカーネル空間内のコードだけが、この空間で読取りまたは書込みを行うことができる。この場合、安全なカーネル空間内のデータおよびコードの保全性およびプライバシーがこの空間の外のコードによって損なわれることはない。他の実施形態では、安全なカーネル空間内のコードは、任意の仮想アドレス空間に対するデータの読取りおよび書込みを、そのようなアクセスが例えば既存のセグメンテーションおよびページング保護機構によって許される限り、行うことができる。他の実施形態では、セキュリティカーネル特権レベルにあるときだけ実行できる命令が定義される。別の実施形態では、カーネル仮想アドレス空間は自由に再配置可能である。別の実施形態では、安全区分のサイズは、ブートアップ時に固定され、一般のシステムソフトウェアの制御下にはない。例えば、プリOSファームウェアまたはオンチップマイクロコードだけが、仮想アドレス範囲レジスタに書き込むことができる。この場合、仮想アドレス範囲レジスタは、ソフトウェアによる書込みは全く不可能プロセッサマイクロコードによって書き込まれる場合とするか、またはリセット後に1度だけ書き込めるファームウェアによって書き込まれる場合とすることができる。別の実施形態では、安全なカーネル空間への固定エントリポイントがあり、この空間の外から、このエントリポイントに対する事前定義済みオフセット以外のオフセットまで安全なカーネル空間に分岐するのは違反である。デフォルトのセキュリティ特権を有するアドレス空間からは、固定エントリポイントに入るのである限り、どんな制御転送機構を介しても安全なカーネル空間に入ることができる。他の実施形態では、カーネルセキュリティ特権レベルにあるコードから要求されるカーネルサービスは、要求元の現在特権レベルと相関関係にあるものとすることができる。この実施形態では、安全なカーネル空間へのエントリポイントにあるコードは、呼出し元の現在特権レベルおよび現在のセキュリティ特権レベルを調べて、要求されているサービスが可能か否かを決定する。一実施形態では、安全カーネルアドレス空間は、現在のセキュリティ特権レベルx.3を有する空間に、任意の制御転送機構を介して出ることができる。セキュリティカーネルが呼出し/リターン機構を使用してプログラムフローを変更する場合、セキュリティカーネルは、その安全なスタック空間を管理し、かつ、安全なアプリケーションスタック空間と安全でないアプリケーションスタック空間との間の移行を管理することが必要な場合がある。アプレット特権レベルアーキテクチャは、プロセッサの一般的な仮想アドレス空間内で新しい仮想アドレス範囲を定義することができる。この仮想アドレス範囲は、2つのレジスタすなわち仮想アドレス基底レジスタアプレットVABRaおよび仮想アドレス範囲レジスタアプレットVARRaによって定義することができる。VABRaおよびVARRaによって定義するアドレス範囲は、アプレットレベルを有し、それに関連するセキュリティアクセス権を有することができ、安全なアプレット空間と呼ぶことができる。一実施形態では、アプレットセキュリティ特権レベルに対応する仮想アドレス空間の場合、読取りおよび書込みアクセス権は、アプレットまたはカーネルセキュリティ特権レベルを有するアドレス範囲内で実行されているコードに限定される。一実施形態では、安全なアプレット空間を定義するアプリケーションは、同じプロセスのコンテキストで、同じ現在特権レベルの安全なカーネル空間も定義しなければならない。一実施形態では、カーネルまたはアプレット隠し実行コード以外のコードは、安全なアプレット空間内で読取りまたは書込みを行うことができない。したがって、安全なアドレス空間内のデータまたはコードの保全性およびプライバシーが、セキュリティアクセス権を有さないコードすなわち現在のセキュリティ特権レベル3によって損なわれることはない。この実施形態では、安全なアプレット空間内のコードは、安全なカーネルアドレス空間内ではデータの読取りまたは書込みを行うことはできず、安全なアプレット空間内のコードは、既存のセグメンテーションおよびページングおよび保護機構によって許される限り、安全なカーネル空間以外ならどんなアドレス範囲に対しても読取りおよび/または書込みを行うことができる。安全なアプレット空間は自由に再配置可能である。区分のサイズは、ブート時に固定することができ、一般のシステムソフトウェアの制御下にはない。この実施形態では、プリOSファームウェアまたはオンチップマイクロコードだけが、VARRaレジスタに書き込むことができる。したがって、レジスタVARRaは、ソフトウェアによる書込みは全く不可能プロセッサマイクロコードによって書き込まれる場合であるか、またはリセット後に1度だけ書き込めるファームウェアによって書き込まれる場合。一実施形態では、安全なアプレット空間には、安全なカーネル空間からしか入ることができない。この実施形態では、デフォルトセキュリティ空間から安全なアプレット空間に分岐するのは違反とすることができるが、安全なカーネル空間から安全なアプレット空間へのエントリポイントには制約はないものとすることができる。この実施形態では、デフォルトセキュリティ特権を有するアドレス空間から安全なアプレット空間中の機能を呼び出すには、現在安全なアプレット空間内の機能の要求についての適切な信任状と共に、安全なカーネル空間中の固定エントリポイントに制御を転送する必要がある。安全なアプレットアドレス空間は、現在のセキュリティ特権レベル3を有する空間に、任意の制御転送機構を介して出ることができる。ただし、デフォルトセキュリティを有する空間中の機能をアプレットが呼び出したい場合は、その安全なカーネル空間への機能呼出しを介してこれを行う。一実施形態では、安全なアプレット空間と安全なカーネル空間の間の移行は、デフォルトセキュリティを有するアドレス空間と安全なカーネル空間の間の移行と同様だが、例外として、アプレットは、追加のセキュリティカーネル機能を呼び出すことができる。この実施形態では、安全なアプレット空間は、あらゆる割込みが安全なアプレット空間からの退出を引き起こすことを除いては、安全なアプレット空間内での制御転送のために任意の制御転送機構を使用することができる。安全なアプレット空間は、セキュリティカーネルが安全なアプレット空間の管理をサポートし、安全なアプリケーションスタック空間と安全でないアプリケーションスタック空間との間の移行をサポートする場合だけ、呼出し/リターン機構を使用することができる。安全な物理メモリRAMおよび不揮発性区分一実施形態では、セキュリティ拡張は、物理メモリ中の1つの安全区分を定義する。プロセッサがセキュリティカーネル特権レベルだけを実装している場合は、安全な物理空間のサイズは安全なカーネル空間のサイズ以上である。プロセッサがセキュリティカーネル特権レベルとアプレット特権レベルの両方をサポートする場合は、物理区分のサイズは、安全なカーネル空間と安全なアプレット空間の合計以上とすることができる。安全な物理メモリ区分は、物理アドレス基底レジスタPABRおよび物理アドレス範囲レジスタPARRによって定義することができる。一実施形態では、安全な物理メモリ区分の基底と範囲は両方とも、ブート時に固定され、したがって一般のシステムソフトウェアの制御下にはない。プリOSファームウェアだけがPABRまたはPARRレジスタに書き込むことができる。したがってこれらのレジスタは、リセット後に1度だけ書き込むことができる。物理アドレス区分は、仮想アドレス機構がイネーブルのとき例えばプロセッサが保護モードで実行しているとき、安全な仮想アドレス区分のための物理メモリを提供するのに使用することができる。仮想アドレス機構がディセーブルのとき例えばプロセッサが実モードのときは、プロセッサハードウェアは、安全な物理メモリ区分へのどんなアクセスも許可せず、この結果、実モードでの安全な物理区分へのアクセスはいずれも違反オペレーショントラップとなる。一実施形態では、安全な物理メモリ区分は、プロセッサダイ中の物理メモリとして、または同じパッケージ中の別個のダイとして、または外部システムメモリの一部として提供することができる。安全な物理区分を外部システムメモリとして実装する場合は、メモリコントローラもPABRおよびPARRと同様のレジスタの対を実装し、アドレス空間がDMAデバイスからアクセスを受けないようにすることが有利である。プリOSBIOSが、チップセット中に適切な保護機構があることを検証することができる。安全な物理メモリの一部は、不揮発性メモリに対応することができる。NV物理メモリ区分に使用される基底アドレスは、PABRと同じものとすることができる。追加の範囲レジスタとして、NVメモリ範囲レジスタすなわちNMRRがあってもよく、これは、安全なNVメモリ区分のサイズを定義するものであり、SPL0のコードによってしか書くことができない。安全なNVメモリ空間は、同じパッケージ中の別個のダイとしてあってもよく、外部コンポーネントの一部としてあってもよい。一実施形態では、このNVメモリへは、安全なカーネル空間で実行されているコードによって要求が開始された場合だけアクセス可能である。一実施形態では、安全なアドレス空間には4つのアーキテクチャ区分がある。すなわち、1安全なアプレット空間、2アプレットから要求されたセキュリティカーネル機能を実行するための、アプレットアドレス空間に関連する安全な物理メモリ、3カーネルコードおよびデータのための安全な物理メモリ、4安全なNVメモリである。アプレット空間のための安全な物理メモリと、アプレット実行に関連する安全なカーネル空間の一部とは、プロセスごとのリソースとすることができる。安全なカーネル空間は、安全なアプレット物理アドレス空間の内容、ならびに安全なアプレットコードから呼び出されるセキュリティカーネル機能のために予約される安全なカーネル空間の一部の内容の、暗号化バージョンを保存する機能を実装することができる。安全なカーネルアドレス空間はまた、安全なアプレット物理メモリと、アプレット空間に関連する安全なカーネル空間の一部とを復元する機能も実装することができる。これらの機能は、安全なアプレット物理メモリと、アプレット空間に関連するカーネルメモリとを、いくつかのプロセス間で仮想化することを可能にする。スワップアウトされた状態の保全性は、スワップされた状態に関連するハッシュ値を、保存した状態のこのインスタンスに対応する固有タグと共に安全なNVメモリに保持することによって提供することができる。一実施形態では、いくつかのカーネル機能を同時に実行することを可能にするのに十分な安全なカーネル空間物理メモリが提供され、実行の最中にセキュリティドライバによって開始されたカーネル機能のスワップアウトを可能にすることは必要ない。他の実施形態では、セキュリティ機能の実行に割り振られた安全なカーネル空間が使用中になった後は、以後にカーネルのセキュリティ機能の要求があっても、前に実行されているセキュリティ機能が完了するまでブロックされる。プロセッサ鍵一実施形態では、プロセッサは、固有IDに加えて秘密鍵/公開鍵の対も有することができる。この鍵の対は、RSA鍵の対、DSS鍵の対、または他の何らかの鍵の対とすることができるが、RSAが最も有利である。秘密鍵は、プロセッサ内部に焼き込み、特定のカーネルのセキュリティ機能でのみ使用できるものとすることができる。これらのセキュリティ機能は、特権レベルcp1.0したがってカーネルセキュリティ空間内でのみ実行することができる。公開鍵もまた、関連する証明書と共にプロセッサ中に提供することができる。完全な秘密鍵と公開鍵のためにオンチップNV記憶域を提供することもできる。電源投入時にプロセッサが秘密鍵を明るみにすることなくオンチップマイクロコードまたはカーネルコードを使用して完全な鍵を計算することができるような、公開鍵と秘密鍵を構成するのに十分なコンポーネントのための記憶域を提供すれば足りる。鍵の署名入りの値に対応する公開鍵証明書の部分もまた、オンチップNVメモリ中に提供すべきである。一実施形態では、RSA鍵の対は、1024ビットの秘密鍵の場合に、1344ビットの隠しNV記憶域をプロセッサ上に必要とする。すなわち、Pコンポーネント用に512ビット、Qコンポーネント用に512ビット、公開鍵証明書用に320ビットである証明書中の署名がDSS署名であると仮定した場合。秘密鍵と公開鍵に加えて、プロセッサは、オンチップNVセル中に56ビットのDES鍵を有することもできるまたはトリプルDESに対するサポートを有するべきである。この鍵もまたプロセッサだけの秘密にしておくことができ、この鍵は、外部の安全な物理メモリに対して記憶/読取りを行うためのDES機能を実施するためだけに使用することができる。一実施形態では、プロセッサ特有のDES鍵ではなくプラットフォーム特有のDES鍵が使用される。セキュリティ特権レベルとプロセッサオペレーションモードの対話一実施形態では、デフォルトのプロセッサ実行と現在のセキュリティ特権レベルとの間に最小限の対話がある。他の実施形態では、仮想変換機構がオフのときすなわちプロセッサが実モードのとき、CSPLは3すなわちデフォルトモードにされ、安全な物理アドレス区分にアクセスするのは違反である。セキュリティ機能は、実モードまたは仮想モードではディセーブルとすることができる。この実施形態では、仮想変換機構がオンのときすなわちプロセッサが保護モードのとき、安全な仮想アドレス区分へのアクセスに関するどんなTLBミスも、プロセッサが新しい変換アルゴリズムを使用して直接処理する。TLBミスは、TLBに関係するどんな障害も生じない。一実施形態では、安全なアドレス空間内でアクセス権がCSPLによってのみ制御されるように、安全なアドレス空間についての仮想-物理マッピングのためのページ変換エントリフォーマットを定義することができる。安全な仮想区分のいずれかからコードを実行するときは、性能監視機能がディセーブルになる。中断または外部割込みのせいで安全なカーネル空間または安全なアプレット空間の外に移行する場合があるときは、適切なレジスタを安全なカーネル空間内の事前定義済みのブロックに保存することができる。安全なアドレス空間内のデータを外部メモリに書き込む前にレジスタ中の一時的な値を保存するのに外部のシステムメモリを使用することができる場合は、プロセッサは、プラットフォーム特有のカバー鍵を使用して、オンチップDESユニットで自動的にこの値を暗号化することができる。これらのレジスタを安全な物理メモリに保存した後、対応するプロセスレジスタ値を、正当だが無意味ないくつかの値に変更することができる。例えば、EIPを何らかの正当な固定値に変更できることを除いては、ほとんどのデータ/アドレスレジスタは、すべて0に変更することができる。セキュリティアドレス空間から外への移行は、オンチップマイクロコードによって、またはカーネルの安全な仮想アドレス区分内の割込み機構によって扱うことができる。安全な物理アドレス区分のために外部メモリが使用される場合、いくつかの実装形態では、プラットフォームのカバー鍵でDESを使用して命令ストリームの暗号化バージョンを安全な仮想アドレス区分からフェッチすることをサポートすることができる。一実施形態では、新しい安全移行TSRを定義することができる。この実施形態によれば、プログラム制御を他の空間から安全なカーネル空間に転送する制御転送機構はいずれも、呼出し元のCPLおよびCSPLをこのレジスタ中に提供する。安全なカーネル空間中のエントリポイントにあるコードが、これらのビットおよび要求されているサービスを調べて、要求されているサービスを許可すべきか否かを決定することができる。例えば、いくつかのセキュリティサービスは、CPL0のコードすなわちセキュリティドライバからしか要求することができない。一実施形態では、TSRレジスタは、ハードウェアまたは安全なカーネルコードCSPL0によってしか更新することができない。一実施形態では、安全なカーネル空間には固定エントリポイントがある。この実施形態では、他のどんなオフセットへの分岐も違反である。レジスタの1つが、セキュリティアドレス空間またはアプリケーションアドレス空間内で実行すべき機能番号を指定することができる。機能の中には、追加のパラメータを必要とするものもある。例えば、入力オペランドや、ターゲットコード/データの暗号化解除に使用される鍵などである。一実施形態では、デフォルトセキュリティCSPL3を有するアドレス空間から安全なアプレット空間に制御を転送することは許されない。別の実施形態では、安全な物理空間についてのライトバック属性を選択するために、安全な仮想アドレス空間についてのキャッシュ制御ビットが事前定義される。セキュリティ命令本発明の機能を実装するために、セキュリティ命令を設けることができる。これらの命令は、セキュリティ機能をサポートするのに必要な命令として分類することができ、あるいは、セキュリティ機能の性能または異なる特権レベル間の移行の性能を向上させるための命令として分類することができる。一実施形態では、最小限のネイティブセキュリティ機能では、実装形態がカーネルセキュリティ特権レベルをロジックアナライザ脅威レベルでサポートすることが必要である。この機能レベルをサポートするのに使用することのできる命令は、1cp1.0特権レベルでプロセッサ秘密鍵を読み取る命令、2cp1.0特権レベルでプラットフォームカバー鍵に、かつ別のモデル特有レジスタに書き込む命令、3いずれかのCPLまたはCSPLでプロセッサの公開鍵を証明書と共に読み取る命令、4いずれかのCPLまたはCSPLでRNGを読み取る命令である。その他の命令を定義して、実装形態を容易にし、異なるセキュリティ特権を有するアドレス空間の間の移行を促進することもできる。これらの命令には、次に現れる制御転送命令が実際に現在のセキュリティ特権レベルの変更を必要とすることを示すための分岐ヒント命令を含めることができる。この命令は、制御を安全なアプレット空間中のコードに転送する命令として実装することもでき、制御を安全なカーネル空間に転送する命令として実装することもでき、かつ/または、制御をデフォルトのセキュリティ特権レベルに転送する命令として実装することもできる。使用できる別の命令は、安全なNVメモリに記憶する命令である。この命令は、現在の記憶がNVメモリを対象としていることを設計のバックエンドではなくフロントエンドで知らせることにより、実装を補助することができる。ソフトウェアモデルセキュリティカーネル空間を実装するには、多くのオプションが可能である。一実施形態では、セキュリティカーネルは、セキュリティ機能を1つだけ実装することができる。他の実施形態では、セキュリティカーネルは、単に追加の機能をマクロコード中に実装するだけで、追加の機能をサポートすることができる。別の実施形態では、セキュリティカーネルは、セキュリティドライバから1度に1つの機能が呼び出されることしか許可しないポリシーを実装することができる。この場合、いずれかの追加セキュリティ機能の実行を開始する前に、前のセキュリティ機能を完了すべきである。別の実施形態では、セキュリティカーネルは、そのリソース内で生きた機能を1つしかサポートできないが、セキュリティドライバによって安全なカーネル空間を仮想化することができる。この手法は、部分的に実行された機能の状態を暗号化して、新たにロードされた機能に対して保全性チェックを実施する場合に、大きなオーバーヘッドにつながることがある。別の実施形態は、いくつかのセキュリティ機能が同時に生きられるだけの十分な空間を安全なカーネル空間に与え、この空間の仮想化はサポートしない。一実施形態では、CSPL3のアプリケーションがカーネルのセキュリティ機能を呼び出したいとき、このアプリケーションは、CPL0およびCSPL3で実行されているセキュリティドライバを介して要求を出すべきである。性能の理由から、このアーキテクチャは、セキュリティドライバを介した呼出しのオーバーヘッドなしにアプリケーションがそれに関連する安全なアプレット中の機能を呼び出せるようにすることができる。CSPL3のアプリケーションは、安全なカーネル空間へのエントリポイントに対する制約が守られる限り、安全なカーネル空間を介してこのような要求を出すことができる。固定エントリポイントにある安全なカーネルコードが、呼出し元が指定のサービスを要求するのにふさわしい特権レベルPLとSPLの両方を有していたことを検証することを担う。このために、新しいレジスタとして移行状況レジスタTSRを定義して、呼出し元のPLおよびSPLを安全なカーネル空間および安全なアプレット空間に提供することができる。性能の理由から、安全なアプレットが制御転送命令を介して制御をアプリケーションに転送して戻せるようにすることができる。実行のプライバシーを維持するために、アプレットは、セキュリティカーネルが安全なスタックに対するサポートを提供する場合だけ、制御をアプリケーションに転送する呼出し命令を使用すべきである。一実施形態では、呼出し元を検証するために安全なカーネル空間に負担を課すのではなく、アプリケーションから安全なアプレット空間への制御転送の要求は、セキュリティドライバを介してのみ可能とすることができる。一実施形態では、インフラストラクチャはまた、エントリポイントに対する制約が守られる限り、安全なアプレットが直接制御転送命令を介してカーネル空間中のセキュリティ機能を呼び出すことも可能にする。安全なカーネル空間は、生きたセキュリティ機能の呼出しを1度に1つサポートするのに十分な、現在安全なアプレットに関連する空間を提供するだけでよい。一実施形態では、どんなCPLおよびCSPLからでも安全なカーネル空間に入ることができるとしても、エントリポイントにあるセキュリティカーネルコードは、許可されたセキュリティカーネルサービス要求だけしか所与のPLおよびSPLから出されないようにする。エントリポイントにあるセキュリティカーネルコードは、移行状況レジスタTSR中の要求元の特権レベルを調べて、この決定を行うことができる。レジスタレジスタを使用して、安全区分機構を管理することができる。これらのレジスタには、安全カーネル仮想アドレス空間、アプレット仮想アドレス空間、物理アドレス空間、および不揮発性メモリアドレス空間のための、基底レジスタおよび範囲レジスタを含めることができる。また、様々なプロセッサ鍵にアクセスするためのレジスタを提供することもできる。これらには、プロセッサ秘密鍵のためのレジスタと、プロセッサ公開鍵およびそれに加えて証明書に対応する署名、ならびにプロセッサDESカバー鍵のためのレジスタを含めることができる。レジスタは読取り専用レジスタとすることができる。その他のレジスタには、セキュリティアドレス空間への移行のために呼出し元のPLおよびSPLを提供する移行状況レジスタを含めることができる。さらに、固有タグ番号レジスタが、隠し実行の特定インスタンスに割り当てられたタグ番号を保持することができる。中断セキュリティ特権レベルレジスタを使用して、セキュリティ特権レベルを記録することができる。これらのレジスタは、読取り/書込みレジスタとすることができる。安全カーネル仮想アドレス空間および安全なアプレット仮想アドレス空間の管理一実施形態では、安全なカーネルアドレス空間および安全なアプレットアドレス空間は、仮想-物理変換機構がイネーブルのときだけ定義される。セキュリティ機能は、安全な仮想アドレス区分を安全な物理メモリにマッピングすることを実現するために、OSのメモリマネージャに依拠しなくてもよい。安全な仮想アドレス区分と安全な物理区分との間に、固定マッピングを定義することができる。安全な仮想アドレス空間にはアクセスフォールトおよびダーティフォールトへの対応がないものとすることができ、キャッシュ制御ビットをライトバックモードに設定することができる。一実施形態では、安全な仮想アドレス空間と安全な物理アドレス空間との間にリンクを確立するのに、OSサービスは必要ない。他の実施形態では、これらの仮想アドレス区分にはページフォールトの概念がない。安全な仮想空間は、固定線形マッピングを用いて安全な物理空間にマッピングすることができる。ページ変換は、PABRレジスタおよびVARRkレジスタと相関関係にあるものとすることができる。アクセス権は事前定義することができる。これらのアクセス権は、あらゆるCPLで実行/読取り/書込み権を許可することができ、それにより、仮想安全区分はどんなCPLにあることもできる。この実施形態では、エントリポイントにおけるセキュリティカーネルコードによって安全なアドレス空間への移行が認められると、安全な区分内の所与の仮想アドレスに対するアクセス許可は、CSPLによってのみ制御される。一実施形態では、安全な仮想アドレス空間は自由に再配置可能である。この実施形態では、安全な仮想区分が再配置されたときは常に、再配置された安全な仮想区分に関する前の有効マッピングはすべて無効になる。このようにして、新しい安全な仮想区分への分岐が行われるときは常に、新しい有効TLBエントリが新しい区分に対して確立される。他の実施形態では、デフォルトセキュリティを有する仮想アドレス空間のためのTLB機構は、これらのPTEに関する物理ページアドレスが安全な物理空間と重複しないことを保証するように強化される。重複の可能性があると、違反オペレーションフォールトが引き起される恐れがある。割込み一実施形態では、カーネルアドレスとアプレットアドレスの両方についての隠し実行が、ソフトウェアによって、かつ/または外部割込みを通して割込みを受けることがある。カーネルとアプレットのいずれかのセキュリティ特権レベルで隠し実行の途中だったかもしれないプロセスのコンテキストを保存できるようにするアーキテクチャ機構を設けることができる。プロセスがセキュリティ特権レベルのうちの1つで実行されている間にシングルステッピングによる割り込みを受けた場合でも、ハードウェア機構およびソフトウェア機構は、実行のプライバシーおよび保全性が脅威モデルまで維持されるようにすることができる。割込みの処理に使用される機構は、プロセッサアーキテクチャの機能に応じて決まる。一実施形態では、セキュリティ特権レベルで実行されているコードが割込みを受けた場合にセキュリティ問題に対処するルーチンを、既存の割込みマイクロコードに追加する。別の実施形態では、新しいセキュリティ割込みベクトルテーブルを定義して、これらの割込みを処理する。この実施形態では、プログラムがセキュリティ特権レベルで実行されている間のどんな割込みも、安全なカーネルアドレス空間中のハンドラに転送される。この安全な割込みハンドラは、クリティカルな機能を実施して、割り込まれたコードのプライバシーおよび保全性を保証し、次いで、関連するすべての正しい割込み状況情報と共に、分岐してデフォルトの割込みベクトルに戻る。セキュリティレベルの仕様様々な実装形態が、様々な脅威レベルに対する保護を与えることができる。例えばいくつかの実装形態は、ソフトウェア、インテリジェント入出力、およびロジックアナライザ観察モードのみによる攻撃だけに対して保護を与えることができ、他の実装形態は、イオンビーム攻撃からの脅威を含めて、あらゆる脅威モデルに対して保護を与えることができる。ある種類の脅威に対する保護能力が、セキュリティレベルを定義する。単純なハードウェア攻撃プロセッサをソケットから外して、保全性の損なわれたプラットフォームに配置し、安全な物理空間を確立するための高保全性BIOSに対する信頼を欺くことを含むに対する保護は、すべてのセキュリティレベルが実現すべきである。一実装形態では、プロセッサは、プロセッサマイクロコードまたはオンチップBIOS検証ファームウェアコードを使用してBIOSを認証することにより、プラットフォームの保全性を保証する。この場合、BIOSコードは、必要なセキュリティ機能がチップセット中にあればその存在を妥当性検査することができる。セキュリティレベル1SL-1モデルの一実施形態では、安全な仮想アドレス区分をマッピングするための外部システムメモリおよびシステムNVフラッシュメモリの、保護された区分が使用される。一実施形態では、隠し実行のためのコードは、共通プラットフォーム鍵を使用して暗号化され、保護された物理メモリ中に暗号化された形で保持される。デバイスの秘密鍵に対して作用するいくつかの機能については、これらがデバイスの秘密鍵のビットに依存する分岐を有さないことを保証するための安全対策をとることができる。これは、条件付き移動命令を使用することによって、または予測機能を使用することによって達成することができる。一実施形態では、すべての中間計算データは、クリアな形でプロセッサレジスタおよびオンチップキャッシュ中だけに保持される。一実施形態では、安全なアドレス範囲中のデータを保護された外部物理メモリ区分に記憶する必要があるときは常に、出て行くデータをバスインタフェースユニット中のDESユニットを使用して暗号化する。安全な物理アドレス空間から入ってきたデータおよびコードを暗号化解除するためには、別個のDESユニットがあってもよく、共通のDESユニットを共用してもよい。DESユニットは、少なくとも56ビットのDES鍵を使用すれば有利である。実装形態によっては、より大きな鍵を使用することもできるトリプルDESが使用される場合。セキュリティレベル1は、あらゆる隠し実行に対するロジックアナライザ観察モードまでのセキュリティ脅威に対処することができる。安全な物理空間中のコードが暗号化された形であるとき、外部バス信号をアクティブに変更してプロセッサ/プラットフォームの秘密にアクセスすることは非常に難しい。ただし、このセキュリティレベルは、このような攻撃に対してどんな保証も提供しない。他の実施形態では、耐タンパ性ソフトウェアを使用して既知テキスト攻撃をさらに困難にする。セキュリティレベル1モデルはまた、秘密データを解読するために実装プローブモードおよびデバッグフックを使用して実装特有の状態へのアクセスを得ることに対しても、何らかの保護を与えることができる。さらに、SL1モードは、プロセッサが誤って挙動するようにして秘密データへのアクセスを得る電圧および周波数タンパ技法に対しても、限られたいくらかの量の保護を採用することができる。SL-1モデルでは、物理メモリの安全な区分の保護は、仮想-物理変換機構、プロセッサ中でのDES暗号化、およびメモリコントローラ中の物理メモリタイプレジスタを介して提供することができる。SL-1モデルでは、秘密データのプライバシーは、プロセッサ記憶域内だけで秘密データに作用することによって保証することができる。安全な物理メモリアドレス範囲内のデータがバス上に書き出されるときは常に、データはBIU中のDESユニットを使用して暗号化される。システムによっては、安全な物理メモリとの間でデータ/コードを暗号化/暗号化解除するDESユニットは、プロセッサ特有の鍵ではなくプラットフォーム特有の鍵を使用することが望ましい。SL-1モデルでは、安全な物理アドレス空間中の外部コードおよびデータはすべてプラットフォーム鍵で暗号化しておくことができるので、ロジックアナライザで外部バス信号を見るだけではコードまたはデータを解読することができない。プロセッサ/プラットフォーム秘密鍵は、より高レベルの脅威モデルまで保護することもできる。外部コードが暗号化されるので、機能の中のどの命令が秘密鍵にアクセスしているか、あるいはプロセッサが最終的に秘密データをクリアなメモリに書くように入来命令ビットストリームをどのように変形するかを知ることは、非常に難しい。SL-1モデルはまた、プロセッサ実装特有のデバッグおよびマシンチェック機構を使用して、また電圧および周波数タンパ技法を使用してプロセッサ/プラットフォームの秘密にアクセスすることに対しても、適度な量の保護を与える。セキュリティレベル2SL-2モデルの一実施形態は、安全な物理メモリ区分の少なくとも一部のためのオンチップ物理メモリを設けることによって、セキュリティレベルをSL-1よりも上げたものである。この場合、すべての安全なNVメモリ区分はやはりプラットフォーム中にある。揮発性の安全な物理メモリのいくつかもまたシステムメモリ中にある場合がある。外部のシステムメモリの一部である安全な揮発性メモリの部分に対する安全保護は、SL-1と同様である。SL-2セキュリティモデルでは、隠し実行に関するコードを、暗号化された形で外部メモリからダウンロードすることができる。次いで、このコードを暗号化解除して、プロセッサオンチップメモリを使用して保全性を検証することができる。次いで、暗号化解除したコードをプロセッサのオンチップメモリ外で実行する。あらゆる秘密データも、クリアな形でオンチップメモリに保持される。このモデルの一実施形態によれば、オンチップメモリは、セキュリティドライバによって管理される共有プロセッサリソースである。オンチップメモリの一部は種々のプロセスによって共有することができる。オンチップメモリのこの共有部分を仮想化することは、ドライバによって行うことができる。オンチップメモリのこの部分を暗号化および保存する能力を与えるためのセキュリティカーネル機能を、ドライバに利用可能にすることができる。また、オンチップ物理メモリの、前に保存された部分を暗号化解除および復元するためのセキュリティカーネル機能を利用可能にすることもできる。外部NVメモリへの秘密データの記憶もまた、同じDESを使用して暗号化することができる。SL-2モデルは、プロセッサ実装特有のプローブモードまたはデバッグフックを用いた攻撃、ならびに電圧および周波数タンパによる攻撃に対して、より高レベルの保護を与えることもできる。SL-2モデルでは、物理揮発性メモリの安全区分の保護は、仮想-物理変換機構、オンチップ物理メモリによって提供することができ、また、外部システムメモリの一部である安全な物理空間の部分に対するDES暗号化によって提供することができる。SL-2モデルは、SL-1モデルと比較して、デバイス/プラットフォームの秘密鍵とプロセッサの隠し実行との両方のセキュリティレベルを上げることができる。外部物理メモリ中のクリティカルなコードおよびデータがすべて暗号化された形で、かつクリアな形でオンチップ物理メモリ中に保持される場合、攻撃者は、ロジックアナライザで外部バス信号を見るだけではコードまたはデータを解読することができない。また、オンチップメモリへのダウンロードの保全性がチェックされる場合、ロジックアナライザを使用して外部バス信号をドライブすることによって隠し実行の保全性を損ねることはできない。SL-2モデルはまた、秘密鍵を解読するために実装プローブおよびデバッグフックを使用して実装特有の状態へのアクセスを得ることに対しても、より多くの保護を与えることができる。SL-2モデルはまた、プロセッサが誤って挙動するようにして秘密データへのアクセスを得る電圧および周波数タンパ技法に対しても、追加の保護を採用することができる。セキュリティレベル3SL-3モデルの一実施形態は、オンチップの安全なNVメモリを提供することにより、または安全なNVメモリ区分をプロセッサダイと同じパッケージ内にもってくることにより、セキュリティレベルをSL-2よりも上げたものである。一実施形態では、揮発性および不揮発性メモリのいくつかは、やはりシステムメモリおよびシステムNVメモリの一部として存在することができる。さらに、このセキュリティレベルは、実装デバッグフック、マシンチェックアーキテクチャ、および様々な実行タンパ技法の使用に対して、また放射線攻撃の使用に対して、より高レベルの保護を与えることもできる。実装形態によっては、イオンビーム攻撃を妨げるために、プロセッサおよびNVメモリシリコン上に、またプロセッサと安全なNVメモリダイとの間の相互接続上に、保護ダイコーティングを施すこともできる。揮発性および不揮発性メモリの区分がシステムリソース中にあるので、これらの実装は、少なくともSL-1レベルまでのセキュリティを与える。SL-3モデルの実施形態では、物理揮発性ならびにNVメモリの安全な区分の保護は、仮想-物理変換機構とオンチップ物理メモリの組合せによって行われる。このモデルは、プロセッサ記憶域内だけで秘密データに作用することにより、秘密データのプライバシーを保証する。このモデルは、SL-2モデルと比較して、デバイス/プラットフォーム秘密鍵とプロセッサ隠し実行との両方セキュリティレベルを上げることができる。SL-3モデルでは、隠し実行に関係するすべての記憶域を1つのパッケージ内にもってくることができる。これにより、計算エンジンと隠し実行のための記憶域との間でどんな内部信号も明るみになることはない。さらにこのモデルでは、オンチップまたは同一パッケージNVメモリもまた、ハードウェア再生攻撃に対して保護することができる。SL-3モデルは、実装特有プローブおよびデバッグフックによる秘密データのリークに対して、広範な保護を与えることができる。このモデルはまた、プロセッサを誤動作させて、場合により秘密データをクリアな形で外部バス上に書き出させることのできる様々なタンパ手法に対しても、保護を与えることができる。実装形態によっては、イオンビーム攻撃を用いて秘密データにアクセスすることができないように、プロセッサおよび秘密記憶領域の上に保護ダイコーティングを施すこともできる。安全なカーネルアドレス空間内のマクロ機能安全なカーネルアドレス空間内に実装することのできるマクロ機能には、認証機能、鍵管理機能、埋込み検証カーネル、署名機能、検証機能、アプレットロード機能、暗号化保存アプレット、暗号化復元アプレット、アプレット空間中の機能呼出しがある。結び本発明の実施形態は、安全なメモリ区分を使用した安全な実行のための方法および装置に関するものである。本発明は、ホストプロセッサのコードおよびデータを保護するための特別なセキュリティコプロセッサを有する従来システムに勝る、いくつかの利点を提供する。本発明は、コプロセッサが必要ないので、コスト効果がより大きい。さらに本発明は、より高性能な汎用プロセッサ中でセキュリティコードを実行することができるので、より高性能な解決法である。さらに本発明は、コプロセッサデータ転送オーバーヘッドがないので、より効率的な解決法でもある。本明細書では、本発明のいくつかの実施形態について具体的に図示および/または記述している。ただし、本発明の修正および変形も、本発明の趣旨および意図される範囲を逸脱することなく、以上の教示によってカバーされ、頭記の特許請求の範囲内にあることは理解されるであろう。例えば、メモリ区分は、仮想メモリ中に実装しても物理メモリ中に実装してもよい。別の例として、各実施形態は、SL-1、SL-2、SL-3のいずれかのセキュリティモデルに適合する特徴を含んでいればよい。