(57)【要約】セキュア実行モード性能を有するプロセッサ（１００）を含むコンピュータシステム（１０）の初期化方法は、システムメモリ（１１０）内の特定のアドレス範囲に応じた複数の場所にセキュア操作システムコードセグメントローダを記録する過程を含む。この方法は、又、セキュリティ初期化命令を実行する過程を含む。セキュリティ初期化命令を実行する過程は、特定値域アドレスのベースアドレスを含むスタートトランザクションを伝送する過程を含む種々のオペレーション実行を行わせることが可能である。追加として、セキュリティ初期化命令を実行する過程は又、システムメモリからセキュア操作システムコードセグメントローダを読出し、複数データトランザクションとして確認のためにセキュアオペレーティングシステムコードセグメントローダを伝送する過程を含む他の操作を実行可能にする。
2005528678.tif 000002
【特許請求の範囲】
【請求項１】
セキュア実行モードで動作し得るプロセッサ（１００Ａ）とシステムメモリ（１１０）を備えたコンピュータシステム（１０）の初期化方法であって、
前記システムメモリ内の特定のアドレス範囲に対応した複数の位置にセキュアオペレーティングシステムコードセグメントローダを記録する過程と、
セキュリティ初期化命令を実行する過程とを含み、
前記セキュリティ初期化命令を実行する過程は、複数のオペレーションを発生する過程を含み、この発生させる過程には、
前記特定のアドレス範囲のベースアドレスを含むスタートトランザクションを伝送する過程と、
前記セキュアオペレーティングシステムコードセグメントローダを前記システムメモリから読出してこのセキュアオペレーティングシステムコードセグメントロードを複数のデータトランザクションの確認のために伝送する過程と、を含む、
方法。    
【請求項２】
更に、前記セキュア実行モードで動作し得るプロセッサ以外のいずれのデバイスに対しても、前記特定範囲のアドレスへのアクセスを阻止する過程を含む、
請求項１記載の方法。
【請求項３】
前記セキュリティ初期化命令は、自動的に実行される複数のマイクロコードのコンポーネントを含む単一命令であり、前記複数のマイクロコードは、実行されると前記発生させるべき複数のオペレーションを発生させるものである、
請求項１記載の方法。
【請求項４】
更に、確認のためにセキュアオペレーティングシステムコードセグメントを読出す過程と、伝送する過程とを含む、
請求項１記載の方法。
【請求項５】
前記複数のオペレーティングには、更に割込みの無効化が含まれる、
請求項１記載の方法。
【請求項６】
更に、他のセキュア実行モードで動作し得るプロセッサ（１１０Ｂ）に初期化状態への移行を発生させる過程を含む、
請求項１記載の方法。
【請求項７】
更に、前記他のセキュアモードで動作し得るプロセッサが前記初期化状態に移行していないとの判定に対応して、前記セキュアオペレーティングシステムコードセグメントローダの伝送を阻止する過程を含む、
請求項６記載の方法。
【請求項８】
セキュリティ初期化命令を実行するよう構成されたセキュア実行モードで動作し得るプロセッサ（１００）と、
システムメモリ（１１０）内に特定のアドレス範囲に応じた複数の位置にセキュアオペレーティングシステムを記録するよう構成されたメモリコントローラ（１０１）と、
前記セキュリティ初期化命令の実行に応答して前記特定のアドレス範囲のベースアドレスを含むスタートトランザクションを転送するための手段と、
前記システムメモリから前記セキュアオペレーティングシステムコードセグメントローダを読出して前記セキュリティ初期化命令の実行に応答して、前記セキュアオペレーティングシステムコードセグメントローダを複数のデータトランザクションとしての認証のために伝送する手段と、を含む、
コンピュータシステム（１０）。
【請求項９】
更に、前記セキュア実行モードで動作し得るプロセッサを除くいずれのデバイスに対しても前記特定のアドレス範囲へのアクセスを阻止するための手段を含む、
請求項８記載のコンピュータシステム。
【請求項１０】
前記セキュリティ初期化命令は、複数のアトミカリに実行されたマイクロコードコンポーネントを含む単一命令である、
請求項８記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュア実行モードで動作し得るプロセッサを用いるコンピュータシステムに関し、より具体的には、コンピュータシステムとセキュア実行モードで動作し得るプロセッサとの初期化に関する。
【背景技術】
【０００２】
現代のコンピュータシステムは、人々の生活を激変させている。ｘ８６システムアーキテクチャを用いるマイクロプロセッサを含むシステムプラットフォームにおいて、特に激変している。所有者がインストール可能な無数のサードパーティ周辺デバイスとアプリケーションに対して、ｘ８６を基礎としたシステムが開放されたことにより、ハードウェアとソフトウェアベンダーの幅広い市場を可能にし、これにより、競争力、技術革新、及び進化が促進された。そのような進化の一例は、デジタル通信として今や広く知れ渡ったプラットフォームの使用と永続的に向上している質と性能である。インターネットに呼応して、これらのシステムプラットフォームは、新聞、リアルタイム天気情報、世界中のラジオ番組、オンライン銀行とショッピング、及びオーディオとビデオを基礎としたエンタテインメントにオンデマンド型アクセスを可能にして、デジタルコンテンツの大量配信を明りょうに大改革している。  
【０００３】
ｘ８６プラットフォームがオープンアーキテクチャであるので、デバイスは、通常、ベンダーにより供給される、デバイスにアクセスするためにカーネルモードで動作するドライバを有し、ある種のソフトウェアアプリケーションは、カーネルモードコンポーネントを含む場合がある。それ故、オープンアーキテクチャには種々の利点があり、又、あるアプリケーションから他のアプリケーションへの突発的な干渉に対してもかなりの保護が得られるものの、現在の構造上の保護メカニズムは、この環境下では、意に反する操作がなされるおそれがある。
【０００４】
ｘ８６アーキテクチャを用いるマイクロプロセッサを含むコンピュータシステムは、互いに干渉するアプリケーションを保護するよう設計されたフィーチャを有している。例えば、ｘ８６を基礎としたオペレーティングシステムは、アプリケーションが互いに隔離されていて、及び重大なオペレーティングシステムコードとデータがアプリケーションから隔離される環境を提供するためにｘ８６プロテクトモードアーキテクチャの２つのフィーチャ、即ち、
１）ページ化された仮想メモリ
２）特権レベルの実行
に依存している。
【０００５】
ページ化された仮想メモリは、オペレーティングシステム（ＯＳ）に各アプリケーションごとに個別仮想アドレス空間を定義することを可能とし、物理メモリの個々のページをこれら仮想アドレススペースにアドレス変換テーブルの１セットを介して選択的にマッピングすることを可能する。これにより、各アプリケーションに、コード及びデータ用に物理メモリの独自のプライベートセクションが与えられる。このプライベートセクションは、他のアプリケーションからはアクセス不能となっている。仮想メモリメカニズムは、ＯＳに、物理メモリのページを選択的に複数の仮想アドレス空間にマッピングすることを可能とさせ、複数の仮想空間におけるそのようなページをリードオンリー可能となるよう選択的に指定可能にする。このように共有マッピングができることから、ＯＳカーネル自体のコピーを各アプリケーションのアドレス空間に置くことも可能となり、同様に、周辺デバイスアクセスポートとそれに関連づけられたデバイスドライバルーチンの共有マッピングも可能にする。それ故、アプリケーションには、コストのかかるアドレス空間の切り替えを要することのないＯＳサービスへの効率的なアクセスが与えられる。しかし、アドレス空間のＯＳ部分は、ＯＳコードによる改変が可能でなければならないシステムデータ領域を必然的に含む。また、このシステムデータ領域は、更にアプリケーションコードからは保護されなくてはならない。リードオンリー可能として指定しても、このような領域のために適切な保護を与えない場合がある。
【０００６】
ｘ８６アーキテクチャは又、ＯＳによってコード領域に割り当てられ、コードセグメント記述子に保持された０から３までの４特権レベルを定義する。一般的には、現時点でのコード又は手順を実行するための特権レベルが、カレント特権レベル（ＣＰＬ）として記録される。それ故、特権レベルは通常、ＣＰＬ０からＣＰＬ３までとして称されている。ある種のシステムリソースは、これらの特権レベルを用いて、適切なレベルで実行するコードに対してのみ、アクセス可能である。このページ化された仮想メモリアーキテクチャは、仮想メモリのページに対するアクセスが特権レベルによって制限されなくてはならないことを可能にしている。４つの特権レベルが定義されているものの、オペレーティングシステムでは、ＣＰＬ０とＣＰＬ３のレベルのみが一般的にメインストリームとして用いられている。ページ化された仮想メモリアーキテクチャでは、ＣＰＬ１及びＣＰＬ２をＣＰＬ３と区別していないからである。ＣＰＬ０は、通常、カーネルモードとして称され、最も特権レベルが高く、一方、ＣＰＬ３は、通常、ユーザモードとして称され、最も特権レベルが低いレベルである。ＯＳコードとデータは、一般的にＣＰＬ０が割り当てられ、アプリケーションコードとデータは、ＣＰＬ３が割り当てられている。ＣＰＬ０実行特権は、リードオンリー保護よりは優先しない、何故ならば、この２つの属性は独立しているからである。これらのレベルを割り当てるためにコードセグメント記述子が使用されている。
【０００７】
このメモリ保護に追加して、仮想メモリオペレーションを制御するものを含むすべてのプロセッサコントロールレジスタは、アーキテクチャの定義により、ＣＰＬ０のみにおいてアクセス可能である。さらに、スペシャルコントロールトランスファ命令（special control transfer instruction）は、一般的にあるセグメントから他のセグメントへの実行を切り替えるように求められ、従って特権レベルを切り替えるように要請される。これらの命令は、ＯＳ制御されたコードでの特定のエントリポイントに対するそうした制御転送の目標をＯＳが制限することを可能とする。従って、アプリケーションは、ＯＳに対して同時にハンドリングコントロールを行わない場合、特権レベルを変更することはできないであろう。
【０００８】
アドレス空間を相互に隔離（isolation）すること、及びＯＳメモリをアプリケーションから隔離することは、仮想メモリアドレス変換テーブルのコンテンツによって完全に制御が可能になる。変換テーブルは、一アプリケーションメモリから他のアプリケーションメモリを隔離するための仮想から物理ページへのマッピングと、又、共有ライブラリと前述のＯＳを保護するリードオンリーと特権レベルの属性を定義する。テーブル自体は、メモリ常駐形式のデータストラクチャである変換エントリを含み、この変換エントリは、それ自身を共有ＯＳメモリ領域にマップし、カーネルモードコードに対してテーブルへのアクセスを制限する。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従来の保護メカニズムは、アプリケーションとオペレーティングシステムのために適切な保護を与えるように見えるだろう。いわゆる「行儀の良い」システム（例、オペレーティングシステムによるこれらのメカニズムの正常アプリケーションと、これらのメカニズムを制御するＯＳコードの正常なオペレーションと、及びこれらと干渉しないようカーネルモードコードで動作する他の全部のコードのような）正常に動作するシステムにおいては、適切の保護を与える。しかし、一般的なｘ８６を基礎としたシステムでは、大量のカーネルコードを、ＯＳベンダーのみならず多くの独立したソースからも、得ているので、偶然にしろ、そうでないにしろ、そうした干渉が発生しないことを保証するのは、誰にとっても不可能である。
【００１０】
ユーザが実行しているオペレーション形式と、動作しているソフトウェアアプリケーションの形式と、に依っては、コンピュータシステム内に記録及び動作している情報は、外部からのアクセスに対して攻撃を受け易くなる可能性がある。それ故、セキュリティを改善し、ｘ８６アーキテクチャシステムをそのようなアクセスに対する攻撃を受け難くすることが可能にすることが求められている。
【課題を解決するための手段】
【００１１】
セキュア実行モードで動作し得るプロセッサを含む、コンピュータシステムの初期化方法の種々の実施形態が開示されている。一実施形態において、セキュア実行モードで動作し得るプロセッサとシステムメモリを含むコンピュータシステムの初期化方法は、システムメモリ内の特定のアドレス範囲に応じて、セキュアオペレーティングシステムコードセグメントローダを複数の位置に記録させる過程を含んでいる。この方法は又、セキュリティ初期化命令を実行する過程を含んでいる。セキュリティ初期化命令を実行する過程は、特定のアドレス範囲のベースアドレスを含むスタートトランザクションを伝送する過程を含む複数のオペレーションを実行する過程を発生させることを可能にする。追加として、セキュリティ命令を実行する過程は、システムメモリのセキュアオペレーティングシステムコードセグメントローダを読出す過程と、複数のデータトランザクションとして確認のためにセキュアオペレーティングシステムコードセグメントローダを伝送する過程を含む他のオペレーションの実行を発生させることを可能にする。
【００１２】
他の実施例において、前述の方法は又、セキュア実行モードで動作し得るプロセッサ以外のいずれのデバイスに対しても、特定範囲のアドレスへのアクセスを阻止する過程を含むことが可能である。
【００１３】
他の実施形態において、セキュリティ初期化命令は、アトミカリに（自動的に）実行される複数のマイクロコードのコンポーネントを含む単一命令であり、これらのコンポーネントは、実行されると、発生させるべき複数のオペレーションを発生させ得るものである。
【発明を実施するための最良の形態】
【００１４】
本発明は、種々の改変及び代替例が可能である一方で、図面の例によって示された特定の実施形態が以下に記載されている。しかし、図面と本文に記載された明細書は、開示された具体的な形式に本発明を制限するものではないことが理解されなくてはならない。それどころか、そうした意図は、全部の改変、均等物、及び代替例を覆うものであり、添付されたクレームによって限定された本発明の趣旨と範囲内に含まれるものである。  
【００１５】
［セキュアコンピュータプラットフォームの概要］
信頼性のあるコンピューティングは、コンピュータシステム（例、パーソナルコンピュータ（ＰＣ））ユーザに電子マネーと映画のダウンロードのような新しい活動への参加を可能にし、一方、プライバシーに対する攻撃から保護されることを同時に可能にする。信頼性のあるコンピューティング環境の一部であるためには、ＰＣ自体が、ユーザと、例えばユーザと銀行とコンテンツプロバイダのような外部の事業体（entitiy：エンティティ）の双方によって信頼されなければならない。信頼性のあるＰＣを創造するために必要である重要な要素としては、信頼性のあるプロセッシング環境、プラットフォーム仕様のシークレット、暗号生成プロセッシング、セキュアな記録、及びセキュリティカーネル（ＳＫ：security kernel）と称されるセキュアオペレーティングシステムコードセグメントが挙げられる。これらのコンポーネントを実装するためのブロックを構築する過程は、以下に詳細が記載される。
【００１６】
ｘ８６型命令を実行するために構築されたプロセッサは、概して、ページ化された仮想メモリと特権実行モードを与えるプロテクトモード、及びこれらのフィーチャを制御する制御レジスタセットのような構造上のフィーチャを含んでいる。これらの制御レジスタとページテーブルへのアクセスを制御することで、コンピュータシステムにおけるプログラムコードとデータへの不正なアクセスに対して追加プロテクトの提供を可能にする。それ故、そのようなプロセッサと対応するソフトウェアサポートに構造上の拡張セットを追加することは、このプロテクトの提供を可能にする。プロセッサに対する全体的なセキュリティの向上は、セキュア実行モード（ＳＥＭ）と称される場合がある。セキュア実行モード（ＳＥＭ）は、セキュリティカーネルが外部からの改ざんを免れて走査を可能にする、信頼性のある実行環境を形成するプロセッサに追加された新しいオペレーションモードである。
【００１７】
従って、ＳＥＭでオペレーティングをし得るプロセッサは、（図示されていない）セキュリティハードウェアを含み、ＳＥＭによってイネーブルされると、例えば、信頼性のある実行モード（ＴＸ：trusted execution）でのオペレーションのようなＳＥＭオペレーティングモードに関するサポートを提供する。以下に更に記載されているように、信頼性のある実行モードは、いずれのソフトウェアが実行しているか、及びその特権レベルに依存し、ノーマルユーザモードとノーマルカーネルモードに追加したセキュアユーザモードとセキュアカーネルモードでオペレーティングするＳＥＭで動作し得るプロセッサを含んでいる。この環境において動作し、ある種のハードウェアメモリアクセス（例、ダイレクトメモリアクセス（ＤＭＡ））を阻止するソフトウェアによってのみアクセス可能であるプロテクトメモリ領域を形成するためのメカニズムも又、提供されることが可能である。
【００１８】
新しい信頼性のある実行環境（ＴＸ）は、ユーザとカーネル環境を分けるために用いられた従来のノーマル／プロテクトモード（ＣＰＬ３／ＣＰＬ０）メカニズムに若干類似している。図１の説明に関連して更なる詳細が以下に記載されたように信頼性のある、若しくは信頼性のないモードを伴ったユーザ／カーネルモードの組み合わせは、４つのクアドラント（象限）モデルを形成する。それ故、ＳＥＭで動作し得るＣＰＵは、ＴＸモードを創造し、実施するハードウェアメカニズムを含んでいる。
【００１９】
図１を参照すると、セキュア実行モードで動作し得るプロセッサの一実施形態の操作ドメインとこれらのドメインにおけるコードのオペレーティングパターンが示されている。上述したように現在のｘ８６を基礎としてオペレーティングシステムは、一般的にノーマル実行モード又はプロテクトドメイン内の２つのモードを実装するために４つの使用可能な特権レベルの２つ（例、ＣＰＬ０とＣＰＬ３）を使用する。即ち、ノーマルカーネルモードとノーマルユーザモードである。向上したSEMは、SEMがイネーブルされると、信頼性のある実行（TX）モードとして称される新しい実行モードを定義する。従来のノーマル実行モードプロテクトドメインと組み合わせると、TXモードは、以下に記載された４つの特徴的なモード又はソフトウェアで操作可能なドメインを生成する。実施形態において、ノーマルユーザ（ＮＵ）ドメイン１０１０と、ノーマルカーネル（ＮＫ）ドメイン１０２０と、セキュアユーザ（ＳＵ）ドメイン１０３０及びセキュアカーネル（ＳＫ）ドメイン１０４０の４つのドメインが示されている。  
【００２０】
ＮＵドメイン１０１０は、信頼性のある実行（ＴＸ）モードによってではなく、ノーマルユーザモード（即ち、ＣＰＬ＝３である）で走査しているプロセッサによって特徴付けられる。ＮＵドメイン１０１０において、一般的な仮想メモリ設定は、改変されていないアプリケーションのノーマルオペレーションを可能にする。しかし、ＳＥＭに基づいて、そうしたアプリケーションは、ＳＵドメイン１０３０に常駐するアプリケーションのメモリと、又はＳＫドメイン１０４０にセキュリティカーネル１０２１を含むメモリへアクセスすることは阻止される。更に、そうしたアプリケーションは、例えば、Ｕ／Ｓ及びＲ／Ｗページ属性のようなプロテクトロジックメカニズムを常駐させることによりＯＳカーネル１０２３又はノーマルカーネルドメイン１０２０におけるデバイスドライバのメモリにアクセスすることを阻止される（図示されていない）。
【００２１】
ＮＫドメイン１０２０において、ＳＥＭは、改変されていないＯＳカーネル１０２３コンポーネントとカーネルモードデバイスドライバのノーマルオペレーションを可能にする。このドメインにおいて実行されるコードは、ＮＵドメイン１０１０におけるオブジェクトにアクセス可能であるが、ＳＥＭにおいては、ＳＵドメイン１０３０又はＳＫドメイン１０４０の何れか一方におけるオブジェクトへのアクセスは阻止される。更に、ＮＫドメイン１０２０は、プロセッサが、ＴＸモードではなく、ノーマルカーネルモード（即ち、ＣＰＬ＝０である）で走査していることで特徴付けられ得る。ページングがＮＫドメイン１０２０にイネーブルされたとき、プロセッサは、時折、ネイティブカーネルモードでオペレーティングしていると呼ばれる場合がある。
【００２２】
ＳＵドメイン１０４０において、ＳＥＭは、例えば、ハイセキュリティアプリケーション（ＨＳＡ）１のようなアプリケーションソフトウェアの新しい形式が動作することを可能とする。ＨＳＡソフトウェアは、既存のｘ８６ページプロテクトとページマッピングメカニズムによって他のいずれのドメインにおけるオブジェクトにアクセスすることも阻止され得る。追加として、ＨＳＡは、（図２に示されていない）オペレーティングシステムカーネル１０２３とデバイスドライバを含むＮＵドメイン１０１０とＮＫドメイン１０２０において実施しているいずれのコードによる不正のアクセスからも保護されている。更なる詳細が以下に記載されるように、セキュリティカーネル１０２１は、ＨＳＡの仮想アドレス空間を設定し、保持するための責務を担う場合がある。更に、ＳＵドメインは、ユーザモードで動作している（即ち、ＣＰＬ＝３）プロセッサだけでなく、セキュアユーザモードとも称されるTXモードによっても特徴付けられることが可能である。
【００２３】
ＳＫドメイン１０４０において、ＳＥＭは、セキュリティカーネル１０２１に対して全部のプラットフォームへの完全なアクセスを可能にし、追加として、セキュリティカーネル１０２１に対するこれらのリソースの排他的制御を提供可能にする。ＳＫドメイン１０４０は、カーネルモード（即ち、ＣＰＬ＝０）で、又、セキュアカーネルモードとして称されるTXモードでも走査するプロセッサによって特徴付けられることが可能である。
【００２４】
概して、セキュリティカーネル１０２１は、信頼性のある実行モード（ＴＸ）で走査するソフトウェアである。一実施形態において、セキュリティカーネル１０２１は、ＳＫドメイン１０４０で動作する唯一のソフトウェアであり得る。ＳＫドメイン１０４０において、セキュリティカーネル１０２１は、全部の仮想メモリから物理メモリへのマッピングの制御が可能であり、外部デバイスに対していずれの物理メモリ領域へのアクセスが可能であるか制御可能である。しかし、セキュリティカーネル１０２１は、ＯＳカーネルのプロセス生成関数（process creation function）に依存する場合があり、ノーマルモード仮想メモリマッピング、ＨＳＡメモリの初期マッピングとＨＳＡコードとデータセクションをロードする過程を含む。しかし、セキュリティカーネル１０２１は、信頼されていない仮想空間に信頼されたメモリの不正マッピングが行われていないことを確認するためにそうしたマッピングの各々を監視すること可能である。それ故、セキュリティカーネル１０２１は、信頼されていないメモリ全部の領域を、信頼性のないものとしてみなすことが可能である。更に、セキュリティカーネル１０２１は、セキュリティカーネル１０２１によって制御されていない全部のプログラムコードを信頼性のないものとしてみなすことが可能である。一実施形態においてセキュリティカーネル１０２１は、常駐しているＯＳに対するパッチであり得るスタンドアローンコードセグメントである場合があることが注目される。他の実施形態において、セキュリティカーネル１０２１は、ある種のＯＳの一部におけるモジュール又はコードセグメントであり得る。
【００２５】
ＳＥＭの主要な機能は、ＳＥＭで動作するためにプロセッサを初期化することによって信頼された環境においてシステムを配置する過程と、ＳＫの真正を確認する過程と、及び信頼された環境を外部からの攻撃から保護する過程を含む。なお、用語ＣＰＵ、マイクロプロセッサ、及びプロセッサは、それぞれ置き換え可能として用いられている。それ故、ＳＥＭの主要なフィーチャの１つは、システムが立ち上がり走査した後、ＳＥＭプロテクトが確実にイネーブルされることである。一実施形態において、一般的なｘ８６プラットフォームブートプロセスを変更するための要件はない場合がある。ＳＥＭプロテクトは、一般的にシステムソフトウェアコンポーネントによって立ち上がることが可能であり、このドキュメントの目的のためのコンポーネントは、（図示されていない）ＳＥＭドライバと称されている。ＳＥＭドライバは、ＯＳカーネルから独立となり得るが、デバイスドライバと同様、カーネルモードで動作し得る。図２から図４まで関連して更なる詳細が以下に記載されているように、一般的なｘ８６プラットフォームの保護されていないシステム環境におけるＳＥＭプロテクトを確実に構築する過程に関するキーは、セキュリティカーネル初期化（ＳＫＩＮＩＴ）命令として称される新しいセキュリティ命令であり、これはＳＥＭドライバによる使用目的を対象としている。
【００２６】
信頼されたPCを創造するための中核をなすのは、個有のプラットフォーム仕様のシークレット（secret：機密）である。実際に、このシークレットは、一対の公開／秘密の暗号キーのプライベートペアであり得る。このシークレットは、信頼された環境においてＰＣがオペレーティングしているときのみ使用されなければならないし、誰に対しても、又、いずれのコードに対しても決して漏洩されてはならない。このシークレットを用いた暗号オペレーションの結果は、漏洩可能であるが、シークレット自体は、漏洩されることはない。これを操作するために使用する秘密キーと暗号プロセス機構は、制御された出入力を備えたクローズドボックス（closed box）に存在しなければならない。実用的用語では、閉鎖ボックスは、プロセッシング性能と非揮発性記録を組み合わせている単一集積回路（ＩＣ）パッケージのことを指す。デバイスは、セキュリティサービスプロセッサ（ＳＳＰ）として称されている。一実施形態において、少なくとも一つのＳＳＰが要求され、正確に一ＳＳＰがプラットフォーム初期化プロセスに関与する。
【００２７】
アーキテクチャ的に、このＳＳＰは、プラットフォームのいずれの位置においても配置可能である。唯一の要件は、ＳＥＭで動作し得るプロセッサとＳＳＰとの間になりすまし不可能でセキュアな通信径路が常駐することである。以下に記載されたようにＳＥＭで動作し得るプロセッサとＳＳＰとの間におけるなりすまし不可能な通信径路は、ＳＳＰが信頼された環境の外部から実行されたソフトウェア又はＤＭＡハードウェアのどちらからもコマンドを受信しないセキュア通信径路として称されている。これは、信頼された環境が初期化されているときには特に複雑なものとなり得る。ここでは、ＳＳＰは、ＳＫの有効性を確認しなくてはならないし、確認されたＳＫがこの瞬間にＳＥＭで動作し得るプロセッサ上で実際に走査しているコードであることを確認しなければならない。この確認は、ＳＫイメージの暗号ハッシュ形式で行われる。このハッシュは、通常のソフトウェアのオペレーションからの結果としては得られないような手法でＳＳＰに配信されなければならない。更に、ＳＥＭで動作し得るプロセッサは、クリーンな初期化状態でＳＫの実行を始めなければならない（そしてＳＳＰはこれを知らなければならない）。これらの要件は、通常のソフトウェアにとって利用不可能であるＣＰＵマイクロコードとハードウェアメカニズムを用いることによって満たされることが可能である。ＳＫＩＮＩＴ命令は、ＳＥＭで動作し得るプロセッサを再初期化するような種々のセキュリティ初期化機能を実行するために使用され、例えば、ＭＰシステムにおける他のプロセッサは中止させられることを確認し、予約したシステムアドレスと個有のバストランザクションを用いてＳＳＰとの通信を行い、ＳＫコードにジャンプする。一実施形態において、ＳＫＩＮＩＴ命令は、アトミカリ（atomically）に実行する複数マイクロコードのコンポネーントを有する単一命令であることに注目される。本文に記載されたように「アトミカリに実行する」とは、中止することなしに特定の順序で完了するまで実行する過程を意味している。一実施形態において、初期化プロセスは、２つのステップを含み、１つは、ＳＳＰによるスモールセキュアローダ（ＳＬ）の確認過程であり、次に比較的相当大きなＳＫの確認過程が続くことが更に注目される。ＳＬは、セキュアオペレーティングシステムコードセグメントローダであり、ＳＫをロードする過程と関連づけられた機能を実行する。
【００２８】
［信頼性のあるコンピュータプラットフォームを使用するコンピュータシステム］  
図２を参照すると、信頼性のあるコンピュータプラットフォームを使用するコンピュータシステムの一実施形態のブロック図が示されている。コンピュータシステム１０は、ＳＥＭプロセッサ１００ＡとＳＥＭプロセッサ１００Ｂを指定した２つのＳＥＭで動作し得るプロセッサを含んでいる。ＳＥＭプロセッサ１００Ａは、プロセッサバス１０５を介してＳＥＭプロセッサ１００Ｂに結合されている。コンピュータシステム１０は、又、ＳＥＭプロセッサ１００Ａに結合されたシステムメモリ１１０ＡとＳＥＭプロセッサ１００Ｂに結合されたシステムメモリ１１０Ｂを含む。ＳＥＭプロセッサ１００Ａは、システムバス１２５を介してＩ／Ｏインターフェース１２０に結合されている。示された実施形態において、Ｉ／Ｏ１２０は、ペリフェラルバス１４５を介して記録デバイス１４０と周辺デバイス１５０に結合されている。Ｉ／Ｏインターフェース１２０は、更に、ペリフェラルバス１３５を介してＳＳＰ１３０に結合されている。一代替実施形態において、ＳＳＰ１３０は、ペリフェラルバス１３５に代えて、ペリフェラルバス１４５に結合可能である。２つのＳＥＭプロセッサが示されていることが知られているが、他の実施形態は、異なる数のＳＥＭプロセッサを含むことが可能である。同じ符号と参照文字を有するコンポーネントは、単に符号によってのみ参照可能であることが注目される。例えば、ＳＥＭプロセッサ１００Ａは、適切に充足される単にＳＥＭプロセッサとして参照が可能である。複数の代替実施形態において、システムメモリ１１０は、直接にＩ／Ｏインターフェース１２０に接続可能であることが、更に注目される。そのような実施形態において１つ以上のメモリコントローラは、ＳＥＭプロセッサ１００Ａと１００Ｂとは別の集積回路に製造が可能である。例えば、そのような実施形態において、Ｉ／Ｏインターフェース１２０は、１つ以上のメモリコントローラを含む場合がある。
【００２９】
ＳＥＭプロセッサ１００は、ｘ８６アーキテクチャを使用するプロセッサの一実施例である。例えば、一実施形態において、ＳＥＭプロセッサ１００は、アドバンスドマイクロデバイシイズインコーポレイテッドによって製造されたアスロン（ＡｔｈｌｏｎＴＭ）であり得る。そのような場合、ＳＥＭプロセッサ１００は、システムメモリ１１０又は記録デバイス１４０に記録可能なｘ８６命令を実行するよう構成されている。例示的実施例によると、ＳＥＭプロセッサ１００は、ＳＥＭによってイネーブルされたとき、例えば、図１の説明に関連して上述された信頼性のある実行モード（ＴＸ）のようなＳＥＭオペレーティングモードのためのサポートを提供する（図２に示されていない）セキュリティハードウェアを含む場合がある。
【００３０】
前述の例示的実施形態において、ＳＥＭプロセッサ１００ＡとＳＥＭプロセッサ１００Ｂの各々は、メモリコントローラ１０１Ａと１０１Ｂを指定した集積メモリコントローラをそれぞれ含む。以下に更なる詳細が記載されるが、メモリコントローラ１０１は、不正のアクセスからＳＬイメージを記録するために用いられた６４ＫＢのアドレス範囲を保護可能である（図２に示されていない）セキュリティハードウェアを含む。セキュリティハードウェアは、又、ＳＫＩＮＩＴ命令と関連づけられたトランザクションをＩ／Ｏインターフェース１２０にルートさせるために構築可能である。メモリコントローラ１０１Ａと１０１Ｂのような集積メモリコントローラが同じ集積回路にＳＥＭプロセッサ１００Ａと１００Ｂとして製造されることに注目される。
【００３１】
既存のアドバンスドプログラム可能中断コントローラ（ＡＰＩＣ）基準フィーチャに従って図２に示されたような構築のようなマルチプロセッサ実装において、プロセッサの１つは、ブートストラップ（bootstrap：ＢＳＰ）として指定され、他のプロセッサは、アプリケーションプロセッサ（ＡＰ）として指定されている。提示された実施形態において、説明目的のためであるが、ＳＥＭプロセッサ１００Ａは、ＢＳＰであり、一方、ＳＥＭプロセッサ１００Ｂは、ＡＰである。しかし、他の実施形態によると、ＳＥＭプロセッサ１００Ｂは、ＢＳＰであり、一方、ＳＥＭプロセッサは、ＡＰであり得る。従って、ＩＮＩＴインタープロセッサインターラプト（ＡＰＩＣ）は、後に続くスタートアップＩＰＩにのみ対応するＡＰを中断状態に置くことが可能である。スタートアップＩＰＩは、ＢＳＰによって特定され、スタートアップＩＰＩに従って搬送されたメモリ内の位置にて実行を始めることをＡＰに行わせる。図３の説明に関連して以下に更なる詳細が記載されるが、ＡＰと動作している間、ＳＥＭプロセッサ１００Ａ又は１００Ｂの何れか一方は、ＳＥＭ初期化をサポートしている間にスタートアップＩＰＩに対応するよう構成可能である。
【００３２】
例示された実施形態において、ＳＥＭプロセッサ１００ＡとＳＥＭプロセッサ１００Ｂの各々は、システムインターフェースユニット指定されたシステムインターフェース１０２Ａと１０２Ｂを含む。以下に更なる詳細が記載されるが、システムインターフェース１０２は、マルチプロセッサセキュリティ初期化をサポート可能にするよう構成された（図２に示されていない）セキュリティハードウェアを含む。
【００３３】
システムメモリ１１０は、頻繁にＳＥＭプロセッサ１００によって用いられたプログラム命令とデータを記録するよう構成されている。一般的なシステム構成において、記録デバイス１４０は、もっと永続的にプログラム命令とデータを記録するために用いられることが可能であり、ＳＥＭプロセッサ１００は、データとプログラムコードを要するので、システムメモリ１１０に伝送される場合がある。ＳＥＭオペレーティングモードのための追加のサポートを、ＳＥＭプロセッサ１００のオペレーションの間、システムメモリ１１０の外部でＯＳに関連して実行されるセキュリティカーネルによって提供することも可能である。更に、システムメモリ１１０を、信頼された部分と信頼されていない部分に分けることが可能である。セキュリティカーネルは、システムメモリ１１０の信頼された部分に常駐する。上述したようにシステムメモリ１１０は、一般的にページ化された仮想メモリを用いてアクセスされる。そうした構成において、システムメモリ１１０は、個有のページ又は膨大なメモリによってアクセスされることが可能である。このページング機能は、一般的にＯＳメモリ管理機能によって一般的に処理されている。
【００３４】
上述されたように記録デバイス１４０は、プログラムコードとデータを記録可能である。一実施形態において、記録デバイス１４０は、ハードディスク又はハードディスクドライブの記録であり得るが、他の実施形態は、例えば、ＣＤ−ＲＯＭドライブ、フロッピーディスクドライブとテイプドライブのような他の大量記録デバイスを含むことが考慮される。
【００３５】
周辺デバイス１５０は、例えば、モデム、ビデオ獲得デバイス又は他の多目的出入力デバイスのような何れの周辺デバイスであり得る。他の実施形態において、異なる数の周辺デバイスが使用可能であることに注目される。
【００３６】
Ｉ／Ｏインターフェース１２０は、ノーマルシステムオペレーションの間、種々のペリフェラルバスとＳＥＭプロセッサ１００Ａと１００Ｂとの間にトランザクションのためのバス制御と変換を提供するために構成可能である。一実施形態において、Ｉ／Ｏインターフェース１２０は、ノースブリッジと関連して機能を実行可能である。例えば、ペリフェラルバス１４５は、ペリフェラルコンポネーネントインターコネクト（ＰＣＩ）バスであり得、ペリフェラルバス１３５は、ローピンカウント（ＬＰＣ）バスであり得る。追加として、Ｉ／Ｏインターフェース１２０は、ＳＳＰは、接続されているか、バスに接続されているかを判定し、セキュア初期化の間、ＳＥＭプロセッサ１００とＳＳＰ１３０との間になりすまし不可能の通信を発生させるために構築可能である。Ｉ／Ｏインターフェース１２０は又、メッセージに関連したＳＫＩＮＩＴを認識し、これらのメッセージをペリフェラルバス１３５の特定形式でＳＳＰ１３０に搬送するために構築され得る。
【００３７】
［セキュア実行モード初期化］
概して、セキュリティカーネル初期化命令（ＳＫＩＮＩＴ）は、例えば、ＳＥＭプロセッサ１００ＡとＳＥＭプロセッサ１００ＢのようなＳＥＭを動作し得るプロセッサに実行する。上述したように、ＳＫＩＮＩＴ命令は、自動的に実行する複数のマイクロコードコンポーネントを有する単一の命令であり得る。追加として、一実施形態において、ＳＫＩＮＩＴ命令は、例えば、ＥＡＸレジスタのコンテンツのような単一の入力オペランドを有する場合がある。一実施形態において、ＳＫＩＮＩＴ命令は、３つの実行フェーズを含む。即ち、初期化、データ転送、及びジャンプである。ＳＫＩＮＩＴ命令は、データ伝送サイクルの変数（例、Ｈａｓｈ＿Ｄａｔａ）を一括する明示伝送のスタート（例、Ｈａｓｈ＿Ｓｔａｒｔ）、及び転送の終わり（例、Ｈａｓｈ＿Ｅｎｄ）指示の特別なプロトコルを含むことが可能である。
【００３８】
ＳＫＩＮＩＴ命令の前に、ＳＥＭドライバは、ＳＬとＳＫによって使用されるためのメモリを割り当てるような種々のシステム用意を行うことが可能であり、例えば、ＳＫが（特にＣＲ３、ＩＤＴＲ、ＬＤＴＲ等のような種々のプロセッサ制御レジスタのコンテンツの）制御を獲得した後でＯＳのステートを記録することを可能にする情報を設定し、ＳＬ実行可能イメージをシステムメモリにロードする。
【００３９】
ＳＫＩＮＩＴ命令の完了が成功するとすぐ、ＳＬは、他のＳＥＭハードウェアメカニズムとデータ構築を初期化し、ＳＫ実行可能なイメージを確認し、ＳＥＭをイネーブルし、及びＳＫの実行をスタートすることが可能になる。ＳＫは、代わりにアドレス変換テーブル、制御レジスタ、及びハードウェアメカニズムの制御を行うことが可能になり、完全なＳＥＭプロテクトを所定の位置に備えてであるが、ＯＦＦ直前の状態で置かれたオペレーションを再開するノーマルＯＳに戻ることが可能である。ＳＥＭドライバとＳＬオペレーションの正確な詳細とは、実装仕様であり、特定のＯＳ、ＳＬ及びＳＫ特性に依存することが場合がある。
【００４０】
一実施形態において、ＳＬイメージは、コードと、完全実装されたセキュアローダの初期化されたデータセクションを含む場合がある。それは、完全に安全な方法でセキュリティカーネルを初期化し、スタートするために必要とされる全部のコードと初期データを含む。これは、ＳＬとＳＫ使用のために割り当てられたメモリのためのＤＭＡ除外プロテクトを設定する過程を含む。ＳＬは、以下に記載されるが、ＳＥＭドライバによってセキュアローダブロックと呼ばれるメモリ範囲にロードされることが可能である。ＳＬＢは、ハードウェアによって実行可能である６４ＫＢサイズである場合がある。しかし、実際は、以下に記載された理由により、最大サイズは、若干小さくなっている可能性がある。一実施形態において、ＳＬイメージの（１６ビットの）第１ワードは、署名されていないオフセットをＳＬエントリポイントに含む。第２ワードは、イメージの長さを含む。これらの２つの数値は、ＳＫＩＮＩＴ命令によって使用可能である。イメージの残り部分の設計は、ソフトウェアコンベンションによって判定可能である。このイメージは、認証目的のためのデジタル署名を含み、そのハッシュは、エントリポイントと長さ領域を含む。ＳＫＩＮＩＴは、ＳＬ実行前の認証のためにＳＬイメージをＳＳＰに転送する。ＳＬは、少なくとも最初にページ化を無効にした状態でフラット３２ビットプロテクトモードで実行可能である。ＳＬコードの位置を独立させるために基礎となるアドレスは、ベース＋置き換えアドレス（base + displacement addressing）を使用してＳＬイメージ内のデータ領域にアクセスするためにＥＡＸの数値から派生している場合がある。
【００４１】
図３を参照すると、ＳＥＭで動作し得る一実施形態のブロック図が示されている。ＳＥＭプロセッサ３００は、メモリコントローラ３３０と、システムインターフェース３２０と中止制御ロジック３４０に結合された実行ユニット３１０を含む。更に、中断制御ロジック３４０は、システムフラグロジック３５０に結合されている。一実施形態においてＳＥＭプロセッサ３００は、図２に示されているようにＳＥＭプロセッサ１００Ａと１００Ｂの代表的なものである。  
【００４２】
上述したように初期化フェーズの間、ＳＬイメージは、メモリコントローラ３３０によってシステムメモリ１１０Ａにロードされることが可能である。ＤＭＡアクセスの発生を回避する前に、ＳＬイメージを保護するためのＳＬＢへのアクセスが阻止される。この６４バイト空間をベースとしたアドレスは、（例、EAXを使用してＳＫＩＮＩＴへの入力のような）ＳＫＩＮＩＴ命令のパラメータである。Ｈａｓｈ＿Ｓｔａｒｔトランザクションは、パラメータでアドレスフィールドの一部としてこのベースアドレスを搬送する。この方法で、Ｈａｓｈ＿Ｓｔａｒｔトランザクションを受信する全部のメモリコントローラは、いずれの領域を保護すべきかを知ることが可能である。
【００４３】
一実施形態において、セキュアローダブロックは、６４ＫＢ配列されたいずれのアドレスにおいて配置された６４ＫＢの物理メモリ範囲である。このメモリは、ＳＥＭドライバによって割り当てることが可能である。他の形態によると、このメモリは、常に予め割り当て可能である。ＳＥＭドライバは、ＳＫＩＮＩＴを実行する前は常に、ＳＬイメージをオフセット０でスタートしてＳＬＢにロード可能である。一実施形態において、ＳＬイメージの終わりとＳＬＢの終わりとの間におけるメモリは、ＤＥＶプロテクトが残りのメモリのために設定される前に、初期スタックに関するようなセキュアスクラッチ空間としてセキュアローダによるエントリした後すぐに使用が可能である。
【００４４】
ＳＥＭプロセッサ３００以外の何れのデバイスによるアクセスからＳＬＢをプロテクトするために、メモリコントローラ３３０は、ディレクトメモリアクセス（ＤＭＡ）排除ベクトル制御レジスタ３３１とＳＬ＿ＤＥＶをベースとしたレジスタ３３２に結合されたＭＣ制御ロジック３３３を含む。
【００４５】
ＤＭＡ排除ベクトル（ＤＥＶ：ＤＭＡ Exclusion Vector）制御レジスタ３３１は、ＭＣ制御ロジック３３３のオペレーションに応じた制御情報を含む。提示された実施形態において、ＤＥＶ制御レジスタ３３１は、“ＤＥＶイネーブル”と“ＳＬ＿ＤＥＶイネーブル”を指名した制御ビットを含む。“ＤＥＶイネーブル”ビットは、ＤＥＶアクセスプロテクトがイネーブルであるか、又は無効であるかを制御することが可能である。提示された実施形態において、“ＤＥＶイネーブル”ビットがアサートされるとき、ＤＥＶプロテクトがイネーブルされ、“ＤＥＶイネーブル”ビットがデアサートされたとき、ＤＥＶプロテクトは無効化される。“ＳＬ＿ＤＥＶイネーブル”ビットは、ＳＬＢへのアクセスがＤＭＡアクセスから阻止されているか否かの制御が可能である。提示された実施形態において、“ＳＬ＿ＤＥＶイネーブル”ビットがアサートされたとき、ＳＬＢは、ＤＭＡアクセスからプロテクトされ、“ＳＬ＿ＤＥＶイネーブル”ビットがデアサートされたとき、ＳＬＢのプロテクトは、無効化される。他の実施形態において、ＤＥＶ制御レジスタ３３１は、追加の機能性を有する他のビットを含む。
【００４６】
ＳＬ＿ＤＥＶを基礎としたレジスタ３３２は、ＳＫＩＮＩＴ命令（例、ＳＬＢ）によってプロテクトされたシステムメモリ領域の位置に応じた情報を含む。提示された実施形態において、ＳＬが実行されている間、又完全なＤＭＡプロテクトがイネーブルされる前にＤＭＡアクセスからプロテクトされるべきであるＳＬ＿ＤＥＶをベースとしたレジスタ３３２にロードされたアドレスは、ＳＬＢの最初のアドレスに対応が可能である。このアドレスは、ＳＬ＿ＤＥＶをベースとしたアドレスと称される。ＭＣ制御ロジック３３３は、所定のアクセス要請の指定先がプロテクトされた領域に入るか否かを判定するためにＳＬ＿ＤＥＶをベースとしたアドレスを使用可能である。ＳＬ＿ＤＥＶをベースとしたレジスタ３３２は、ソフトウェアに対して直接はみえないようになっており、Ｈａｓｈ＿Ｓｔａｒｔトランザクションを受信したことに応じて、ＭＣ制御ロジック３３３によりロードすることが可能である。他の実施形態において、ＳＬ＿ＤＥＶをベースとしたレジスタ３３２は、追加の機能特性を有する他のビットを含む場合があることに注目される。それ故、Ｈａｓｈ＿Ｓｔａｒｔトランザクションを受信したことに応じて、ＭＣ制御ロジックは、ＳＬ＿ＤＥＶをベースとしたアドレスをＳＬ＿ＤＥＶをベースとしたアドレスレジスタにロードし、又、“ＳＬ＿ＤＥＶイネーブル”ビットをアサートするよう構成可能である。
【００４７】
一実施形態において、ＭＣ制御ロジック３３３は、ＳＥＭプロセッサ３００からＳＳＰ１３０までのＳＬイメージのセキュア搬送のためのサポートを提供する（図示されていない）ロジックを含むことが可能であり、ＳＫＩＮＩＴ命令によってのみ使用可能である特定のプロトコル（唯一の制御、アドレス及び／又はコマンド）を用いる。このプロトコルは、（０から６４ＫＢに相当する何れの位置において）可変数のデータ搬送サイクル（Ｈａｓｈ＿Ｄａｔａ）を一括する明示的な搬送のスタート（即ち、Ｈａｓｈ＿Ｓｔａｒｔ）と搬送の終わり（即ち、Ｈａｓｈ＿Ｅｎｄ）指示を含む。このプロトコルは、ＳＫＩＮＩＴを除き、いずれのデバイス又は命令も,これらのスタート、エンド、及びデータ搬送指示の生成可能にはさせない。従って、ＭＣ制御ロジック３３３は、上述したトランザクションの各々をＳＳＰ１３０までルーティングするよ構成するされ得る。更に、ＭＣ制御ロジック３３３は、システムメモリからＳＬを読出し、Ｈａｓｈ＿Ｄａｔａトランザクションで転送するためのＳＬイメージを提供するために構築することが可能である。
【００４８】
さらに、ＭＣ制御ロジック３３３は、多重メモリコントローラシステムにＳＬ＿ＤＥＶ指示を提供可能にする。ＳＬ＿ＤＥＶをベースとしたアドレスは、転送のスタートステイタス指示の設定と同時又は前に、全部のメモリコントローラに対して同時に配信可能であり、イネーブルされる。
【００４９】
更に、コンピュータシステム１０のようなマイクロプロセッサにおいて、ＳＥＭプロセッサ３００が、ＢＳＰとして動作しているとき、他の全部のコンピュータは、認証のためにＳＬイメージをＳＳＰ１３０に送信する前は、ＡＰＩＣ  ＩＮＩＴ状態であることが確認されねばならない。例えば、ＳＥＭドライバは、ＢＳＰ上に実行しているとき、ＳＫＩＮＩＴ命令を呼ぶ前にＡＰＩＣ  ＩＮＩＴ  ＩＰＩを全部のＡＰに発行する。しかし、ＳＥＭプロセッサ３００は、ＡＰとして動作しているとき、ＡＰＩＣ  ＩＮＩＴ状態になったという指示(indication)を提供することが可能である。一実施形態において、ＡＰは、ＩＰＩを受信したことに対応して、指示を提供し得る。他の実施形態において、ＡＰＩＣ  ＩＮＩＴ  ＩＰＩは、ＳＫＩＮＩＴ命令のマイクロコードによって発行される。
【００５０】
ＡＰＩＣ  ＩＮＩＴ機能特性をＳＥＭモードで支持するために、システムインターフェース３２０は、Ｈａｓｈ＿Ｓｔａｒｔレジスタ３２１に結合されたＳＩ制御ロジック３２３を含んでいる。Ｈａｓｈ＿Ｓｔａｒｔレジスタ３２１は、コンピュータシステム内の他のプロセッサ状態に応じたビットを含む。例示的実施形態においてＨａｓｈ＿Ｓｔａｒｔレジスタ３２１は、ステイタスビットとシーン（Seen）ビットを含む。ステイタスビットは、Ｈａｓｈ＿Ｓｔａｒｔトランザクションが効果を奏しているか否かを指示する。一実施形態において、Ｈａｓｈ＿Ｓｔａｒｔトランザクションは、他の全部のプロセッサがステイタスビットを用いてＡＰＩＣ  ＩＮＩＴステートに移行したか否かを判定することが可能である。他の実施形態において、Ｈａｓｈ＿Ｓｔａｒｔトランザクションは、発行されなければならないＡＰＩＣ  ＩＮＩＴ  ＩＰＩを発生させ、それ故、全部の他のプロセッサにＡＰＩＣ  ＩＮＩＴ状態に移行するように発生させることが可能である。シーンビットは、Ｈａｓｈ＿Ｓｔａｒｔトランザクションが他のプロセッサによって発行されたか否かを指示可能である。システムインターフェース３２０は、Ｈａｓｈ＿Ｓｔａｒｔトランザクションが成功したか、また、メモリコントローラ３３０にＳＬイメージを送信することを知らせるか否かを判定するようにＨａｓｈ＿Ｓｔａｒｔステイタスレジスタ３２１のコンテンツを使用することが可能である。一実施形態において、Ｈａｓｈ＿Ｓｔａｒｔステイタスレジスタ３２１内のビットがソフトウェアには直接みることができないことが注目される。ＳＩ制御ロジック３２３は、コンピュータシステム１０における他の全部のプロセッサからの通知を受信することに依存するビットを設定し、及びクリアするよう構成可能である。他の実施形態において、Ｈａｓｈ＿Ｓｔａｒｔステイタスレジスタ３２１は、追加の機能性を有する他のビットを含むことが可能であることが注目される。
【００５１】
上述したようにＳＥＭプロセッサ３００は、スタートアップＩＰＩを受信したことに対応して、ＡＰを動作しているとき、スタートアップＩＰＩによって与えられたメモリの位置にて実行をスタート可能にする。追加として、図４の説明に関連して更なる詳細が以下に記載されるが、ＳＩ制御ロジック３２３又は、シーンビットがアサートされた場合にグローバル中断フラグをクリアするよう構成可能である。一実施形態において、ＳＬは、スタートアップＩＰＩを発行可能にし、他方、他の実施形態においては、ＳＫがスタートアップＩＰＩを発行可能であることが考慮されている。
【００５２】
一般的なｘ８６アーキテクチャは、非セキュア実行モードでシステムオペレーション制御を支持するＥＦＬＡＧＳレジスタのＩＦフラグを提供する。特に、ＥＦＬＡＧＳレジスタのＩＦフラグは、例えば、ＩＮＴＲのようなマスク可能なハードウェア割り込みに対するプロセッサの応答を、イネーブル又は無効可能にする。それ故、非セキュア実行モードの間、複数の割り込みソースは、プロセッサ実行に干渉することが可能である。しかし、ＳＥＭに基づいて、システムセキュリティを保持するために、ＳＫエントリとＥｘｉｔに関連するシステムコンテキストスイッチシーケンスは、外部のノーマル干渉（例、ＩＮＴＲピン）に関連するだけでなく、ＩＮＩＴ＃、ＮＭＩ、ＳＭＩ、及びデバッグポート割り込みとデバッグトラップのようなマスク不可能な割り込みに関してもアトミカリに（自動的に）実行されなければならない。従って、例示的形態において、システムフラッグロジック３５０は、グローバル中断フラグ（ＧＩＦ）と、ＳＥＭイネーブルフラグ及びＥＦＬＡＧＳ．ＩＦフラグを含む。一実施形態において、ＧＩＦは、ＳＥＭプロセッサ３００がセキュア実行モードでオペレートしているとき、全部の干渉とデバッグトラップをイネーブル又は無効化するよう構成することが可能である。ＧＩＦは、全部の干渉ソースを網羅することによってＥＦＬＡＧＳ．ＩＦ機能のスーパーセットを提供する場合がある。一実施形態において、ＧＩＦは内部プロセッサフラグであり、通常、ソフトウェアに視覚可能ではない。システムフラグロジック３５０がＧＩＦ、ＳＥＭイネーブルフラグ、及びＥＦＬＡＧＳ．ＩＦフラグを含むものとして記載されているが、特定の実装においてこれらのフラグは別々のロジックブロックに実装可能であることが考慮されることに注目される。
【００５３】
例示された形態において、干渉制御ロジック３４０は、ＳＥＭプロセッサ３００の内部又は外部の双方の多くのソースから複数の干渉を受信することが可能である。干渉制御ロジック３４０は、ＳＥＭプロセッサは、ＳＥＭイネーブルビットのステートに依存するセキュア実行モードにおいてオペレーティングしているか否かを判定可能にする。更に、一実施形態において、干渉制御ロジック３４０は、２つの新しい命令、ＳＴＧＩとＣＬＧＩの実行に応じてＧＩＦを設定し、クリアするよう種々に構成可能である。（このコンテキストにおいて、ＧＩＦを設定することは、ＧＩＦをアサートすると称され、ＧＩＦをクリアすることはＧＩＦをデアサートすると称される。）システムフラグロジックは、ＧＩＦステートを記録するための記録を含む可能性があることに注目される。この記録は、例えば、レジスタ又はＲＡＭ記録配置のような記録のいずれの形式可能である。
【００５４】
一実施形態において、ＳＴＧＩとＣＬＧＩ命令は、ＳＫとＳＫを呼ぶＳＫＩＮＩＴ命令とらのオペレーションのような他の特権レベルのオペレーションに対してに対してのみ特権を有し、獲得可能である。ＳＥＭがイネーブルされないとき、いずれのモードにおけるＳＴＧＩとＣＬＧＩの試みられた実行は、結果として非有効なオップコード欠陥を生成可能にする（＃ＵＤ）。ＳＥＭがイネーブルされたとき、ＣＰＬ＞０にてＴＸモードでのＳＴＧＩとＣＬＧＩの試みられた実行は、結果として、一般的なプロテクト欠陥（＃ＧＰ）を生成し、いずれのＣＰＬにおけるノーマルモードでの実行は、結果として＃ＵＤ例外を生成する。一実施形態において、実行ロジック３１０は、非有効オップコード欠陥と上述されたように一般的なプロテクト欠陥（＃ＧＰ）を生成するよう構成可能である。
【００５５】
一実施形態において、システムコンテキストスワップシーケンスをプロテクトするために、ＧＩＦは、自動的にノーマルモードからのＳＫエントリがなされると自動的にクリアされ得、この時間中に、アサートするいずれの干渉は、保留される可能性がある。ＳＫは、システムコンテキストスワップシーケンス後にＳＴＧＩ命令を介してＧＩＦを設定可能である。この時点で保留している干渉は、同時の干渉のノーマル優先順位付けを使用して対応可能である。一実施形態において、ＥＦＬＡＧＳ．ＩＦは、又、ＳＫへのエントリを自動的にクリア可能であり、それ故、ＳＴＧＩに追加して、ＳＴＩがデバイス干渉をイネーブルするために求められる。しかし、デバッグトラップは、無視され、効果的に放棄される可能性がある。
【００５６】
一実施形態において、セキュア実行モードを終了するための準備において、ＳＫは、最初にＣＬＧＩ命令ＧＩＦをクリアし、その後求められるシステムコンテキストスワップを実行する。ＧＩＦは、自動的にＳＭＲＥＴ命令によって設定可能である。
【００５７】
図４は、セキュア初期化の間、セキュア実行モードで動作し得るプロセッサを含むコンピュータシステムの一実施形態のオペレーションを記載したフロー図である。図１から図４までに焦点を絞って参照すると、マイクロコンピュータシステムのセキュア初期化が記載されている。ステップ４００から始まり、コンピュータシステムのＳＥＭプロセッサ１００Ａと１００Ｂは、非セキュアモードでオペレーティング可能である。ＳＥＭプロセッサ１００ＡのＯＳはＳＥＭドライバをコールする（ブロック４０５）。一実施形態において、ＳＥＭドライバは、種々のシステム準備を行ない、例えばＳＬ及びＳＫで用いられるようメモリーを配置する（ブロック４１０）。ＳＥＭドライバは、また、ＳＫがコントロールを得た（例えば種々のプロセッサコントロールレジスタの内容）後に、ＯＳの状態を読出し可能とする情報のセットアップを行い、更に、ＳＬ及びＳＬ実行可能なイメージをシステムメモリ１１０に読出す（ブロック４１５）。ＳＥＭドライバは、ＳＬがＥＡＸレジスタに読出される６４ＫＢ範囲のメモリーのベースアドレスを記録する。準備を終えた後に、ＳＥＭドライバは、ＳＫＩＮＩＴ命令をコールし得る（ブロック４２０）。
【００５８】
上述したように、自動的に実行する多重のマイクロコードコンポーネントを有するＳＫＩＮＩＴ命令は単一の命令であり得る。一実施形態において、ＳＫＩＮＩＴ命令は、特権を有し、ＣＰＬ０（ブロック４３０）でＳＥＭプロセッサ１００Ａによって実行可能である。ＳＫＩＮＩＴの実行が不正確なモードで実行された場合、一般的なプロテクト欠陥によって禁止され得る（ブロック４３０）。
【００５９】
ブロック４２５を参照すると、ＳＥＭプロセッサ１００ＡがＣＰＬ０であるとき、ＳＫＩＮＩＴは、ＳＥＭがイネーブルされないときノーマルモードで実行可能である。ＳＥＭがイネーブルされると、ＳＫＩＮＩＴは、ＴＸモードで（即ちＳＫによって）実行され得る。ＳＫＩＮＩＴは、所望により、ＳＫにおいてもシステムを再初期化するために使用可能であるが、ＳＥＭがイネーブルされる前にノーマルモードで主に使用するためのものである。いずれのモードでも、オペレーションは同じとなり得る。
【００６０】
ＳＫＩＮＩＴ命令のマイクロコードは、いずれのインストールされたマイクロコードパッチのクリアをも行ない得る（ブロック４３５）。この時点を含み、この時点までは、ＳＫＩＮＩＴマイクロコードはパッチ可能ではない。これにより、実質的に、その他のＳＫＩＮＩＴマイクロコードもまたパッチ可能ではなくなる。更に、ＳＥＭプロセッサ１００Ａのステートは、ＩＮＩＴ＃信号に関して、従ってＳＥＭプロセッサ１００Ａプロセッサがアルモードに残されるのではなく、（ページングオフを伴った）フラット３２ビットプロテクトモードに配置されるのと同様の方法で初期化される（ブロック４４０）。例えば、一実施形態によると、制御レジスタ０のＰＥビットは、１に設定され、ＣＳとＳＳセレクタは、０００８ｈと００１０ｈに設定され、各々、ＣＳとＳＳベース、制限及び属性レジスタは、システム管理コール命令（ＳＭＣＡＬＬ）と同じ数値に設定されている。ＤＳ，ＥＳ，ＦＳ、及びＧＳは、１６ビットリアルモードセグメントの状態で置かれていて、ＳＬは、それらを使用する前に適切なＧＤＴエントリでプログラムテクされたモードセレクタによってリロードしなければならない。一般的なレジスタは、その値を維持するＥＡＸ及び数値、モデルと、ファミリと、ステップの情報を保持するＥＤＸを除きクリアされる。キャッシュコンテンツは、ｘ８７とＳＳＥオペランドと制御レジスタと同様、無傷で残され得る。更に、多くのモデル毎のレジスタ（ＭＳＲ:model specified registers）も、ＳＥＭプロテクトに影響のあるものを除き、その値を維持し得る。ＳＫＩＮＩＴマイクロコードは、その後、ＥＡＸレジスタのコンテンツを読み出すことによってＳＬＢを基礎としたアドレスを形成可能にする。その後、ＥＡＸレジスタの１５：０ビットをクリアにする（ブロック４４５）。
【００６１】
データ転送フェーズの間、ＳＫＩＮＩＴマイクロコードは、Ｈａｓｈ＿Ｓｔａｒｔ、Ｈａｓｈ＿Ｄａｔａ、及びＨａｓｈ＿Ｅｎｄトランザクションを実行可能にする。一実施形態において、Ｈａｓｈ＿Ｓｔａｒｔトランザクションは、ＳＥＭプロセッサ１００ＡとＳＳＰ１３０の間における干渉するリンクとバスの全部に送信された放送トランザクションである可能性があり、それ故、プロセッサバス１０５と、システムバス１２５と、ペリフェラルバス１３５に送信され得る（ブロック４５０）。メモリコントローラ１０１Aと１０１BがＳＬＢを基礎としたアドレスを含むＨａｓｈ＿Ｓｔａｒｔトランザクションを受信し得る。MC制御ロジック３３３は、ＳＬＢを基礎としたアドレスをＳＬ＿ＤＥＶを基礎としたレジスタ３３２にロードし、ＤＥＶ制御レジスタ３３１のＳＬ＿ＤＥＶイネーブルビットをアサート可能にする（ブロック４５５）。システムのメモリコントローラの各々は、この機能を実行可能にすることに注目される。ＳＬ＿ＤＥＶイネーブルビットをアサートすることによって、ＳＬＢは、ＳＥＭプロセッサ１００Ａ以外のいずれのデバイスによるアクセスから保護されている。この機構は、又、グラフィックアドレス再マッピングテーブル（ＧＡＲＴ：grapihc address remapping tabel）を通じて変換されたアドレスを介したアクセスに対してＳＬＢを保護可能にし、周辺コンポーネントインターコネクト（ＰＣＩ）構築空間に対するデバイスアクセスを阻止可能にする。
【００６２】
図２に示されたマルチプロセッサ環境において、ＳＬイメージを送信する前にＳＥＭプロセッサ１００Ａは、Ｈａｓｈ＿ＳｔａｒｔトランザクションがＳＥＭプロセッサ１００Ｂからの応答を待つことにより、効果を奏したか否かを判定可能にする（ブロック４６０）。ＳＥＭプロセッサ１００Ｂは、ＡＰとして動作して、“ＡＰＩＣＩｎｉｔモードがアクティブ”又は“ＡＰＩＣＩｎｉｔモードが非アクティブ”のいずれかを示すステイタスビットでＨａｓｈ＿Ｓｔａｒｔトランザクションに応答可能にする。もしＨａｓｈ＿Ｓｔａｒｔが成功した場合、システムインターフェース３２０のＳＩ制御ロジック３２３は、Ｈａｓｈ＿Ｓｔａｒｔステイタスレジスタ３２１のステイタスをアサート可能にする。Ｈａｓｈ＿Ｓｔａｒｔステイタスビットのアサーションに応答して、ＳＫＩＮＩＴマイクロコードは、ＭＣ制御ロジック３３３にシステムメモリ１１０以外のＳＬイメージを読み出させ、認証のためにＨａｓｈ＿ＤａｔａトランザクションのシリーズとしてＳＬイメージをＳＳＰ１３０に転送させる（ブロック４７０）。一実施形態において、ＳＳＰ１３０は、ハッシュ関数のための正確長さを判定するためにＳＬイメージの長さフィールドを使用可能にする。
【００６３】
Ｈａｓｈ＿Ｄａｔａトランザクションと対応するデータが、一旦ＳＳＰ１３０に送信されると、マイクロコードは、Ｈａｓｈ＿Ｅｎｄトランザクションを実行可能にする。Ｈａｓｈ＿Ｅｎｄトランザクションは、ＳＥＭプロセッサ１００ＡとＳＳＰ１３０の間における干渉するリンクとバスの全部に放送トランザクションとして送信され得る（ブロック４７５）。Ｈａｓｈ＿Ｅｎｄトランザクションは、ハッシュを完了し、ＳＬイメージ署名を認証するためにＳＳＰ１３０を信号で送信し得る。ＳＳＰは、ＳＬイメージ署名を認証する場合、ＳＳＰ１３０は、安全な状態（armed state）に移行可能である。安全な状態において、ＳＳＰ１３０は、認証用に比較的大きなＳＫの次に続くハッシュを受け入れることが可能である。
【００６４】
ＳＫＩＮＩＴマイクロコードは、全部の干渉を無効化するためにＳＥＭプロセッサ１００ＡのＧＩＦをクリア可能にして（ブロック４８０）、ＮＭＩ、ＳＭＩ及びＩＮＩＴを含み、次に続くコードがアトミカリ（オートマティカリ）に実行可能であるかを確認する。ＳＥＭプロセッサ１００Ｂは、ＡＰとして動作すると、シーンビットがアサートされた場合、ＡＰＩＣスタートアップＩＰＩを受信するとすぐ、ＧＩＦをクリアにする場合がある。
【００６５】
ＳＫＩＮＩＴマイクロコードは、ＳＬからＳＬＢを基礎としたアドレスまでの署名されていない１６ビットのエントリオフセット数値を追加することによって、ＳＬエントリポイントを形成可能である。ＳＫＩＮＩＴマイクロコードは、ＳＬエントリポイントへのジャンプを行うことによって完了を実行可能にする（ブロック４８５）。ＳＬ実行は、ＳＬエントリポイントから始まり得る。ＳＬがＢＳＰ（例、ＳＥＭプロセッサ１００Ａ）実行開始している間、ＡＰ（例、ＳＥＭプロセッサ１００Ｂ）は、ＡＰＩＣ ＩＮＩＴ状態で中断したままでいる。
【００６６】
上述したようにＳＬは、セキュリティカーネルを初期化し、スタートさせるために種々の機能を実行可能にする。一実施形態において、ＳＬは、ＳＫのハッシュを生成可能にし、ＳＫハッシュに認証のためにＳＳＰ１３０に対して転送されるように起こさせる（ブロック４９０）。ＳＳＰ１３０は、予め安全化（武装化）された場合、ＳＫハッシュの認証を実行可能にする。ＳＫハッシュが確認された場合、ＳＳＰ１３０は、信頼された実行環境においてコンピュータシステム１０のオペレーションと関連づけられた次に続く暗号関数のために解除される可能性がある。ＳＬコードは、セキュリティカーネルへのジャンプを実行する（ブロック４９５）。この時点で、ＳＫは、セキュアシステム初期化を完了するために残っているタスクのいずれも実行する（ブロック５００）。
【００６７】
例えば、一実施形態において、ＳＫは、適切な地点でＡＰのためにスタートアップＩＰＩを発行可能である。他の形態において、ＳＬがＡＰのためにスタートアップＩＰＩを発行可能である。スタートアップＩＰＩに応じてＡＰは、１６ビットモードで特定の位置で実行をスタートさせる。一実施形態において、ＡＰスタートアップコードは、各ＳＥＭモＡＰのモデル固有のレジスタを（ＳＬ又はＳＫによって判定されたように）適切な数値に初期化し、ＳＥＭをイネーブルさせる。ＡＰコードは、又、ＧＩＦを設定する各ＡＰにそれぞれ少なくとも一度は、ＴＸモードに移行し、又ＴＸモードから移行して、中断を再イネーブルし、プロセッサの制御がＯＳに戻される前に（ＢＳＰに実行することでＳＬ又はＳＫによって示されたように）プリＳＫＩＮＩＴシステムコンテキストを復元する。ＳＬは、例えば、求められた領域にＡＰスタートアップシーケンスの整合性ををコピーする前にハッシュされたＳＬイメージにＡＰスタートアップコードを含み、ＤＥＶプロテクトを設定することによってＡＰスタートアップシーケンスの整合性を保証し得る。しかし、ＡＰスタートアップコードは、ＳＫＩＮＩＴを実行する必要はない。
【００６８】
一実施形態において、ＳＳＰ１３０によるＳＬイメージの確認は、ＳＫＩＮＩＴに関する限りは、一方向トランザクションであることに注目される。ＳＬイメージを転送した後と、条件上セキュアローダの実行を初期化するためにＳＬエントリポイントにジャンプする前においてＳＳＰ１３０の何れの応答にも依存しない。
【００６９】
他の一実施形態において、ＳＬは、ＳＬイメージの認証のＳＳＰ１３０のポジティブ又はネガティブな確認を受信すための基準バスを用いてＳＳＰ１３０との通信を構築可能にする。この通信の詳細は、実装に依存する可能性がある。
【００７０】
ブロック４６０を参照すると、ＳＥＭプロセッサ１００Ｂが“ＡＰＩＣＩｎｉｔモードはアクティブである”に応じない場合、ＳＥＭプロセッサは、１００Ａは、Ｈａｓｈ＿Ｓｔａｒｔを終了し、その後Ｈａｓｈ＿Ｅｎｄトランザクションを転送し、Ｈａｓｈ＿Ｄａｔａトランザクションをスキップする。この場合、ＳＳＰ１３０は、非有効なＳＬイメージが転送されたと結論付け、安全化されずにそのままの状態でいる可能性があり、それ故、いずれの次に続くＳＫ認証にも参加不可能になる。オペレーションは、それ故、ブロック４７５の記載と関連して上述したように進行する可能性がある。
【００７１】
初期化シーケンスの間、ＳＬは中断する可能性があることが注目される。一実施形態において、ＳＬが有効なＳＫを適切に初期化することが不可能である場合、中断されていることをＳＳＰ１３０に通知する可能性がある。これは、ＳＳＰ１３０とのセキュアな通信径路を構築することを要せずに、ＳＬイメージの長さフィールドをゼロにすることによって確実に行われる可能性があり、エントリポイントを続行中断点に変更し、ＳＫＩＮＩＴを実行する。
【００７２】
若干の構成要素は、ハードウェアに実装されているとして記載され、一方他の構成要素は、単にシステムとその種々のコンポーネントのオペレーションの特性を有する設備としてソフトウェアに実装されているとして記載されている。しかし、種々の実装において、上述された若干又は全部のハードウェアは、ソフトウェアに実装される可能性があり、上述された若干又は全部のソフトウェアは、ハードウェアに実装される可能性があることが考慮される。
【００７３】
更に、種々のロジックビットがアサートされ、又、アサートされないものとして記載されていることに注目される。アサートされたビットは、ポジティブ指示を提供し、一方、アサートされないビットは、ネガティブビットを提供するものとして本文に記載されている。従って、特定の実施例は、アサートされたとき、１つのロジック数値を使用可能にし、一方、他の実施例では、アサートされたどき、ゼロのロジック数値を使用する可能性がある。
【００７４】
複数の実施形態がかなり詳細に記載されたが、上述した開示が一旦、完全に理解された場合、多くの改変と修正が行われることが当業者にとって明りょうとなるであろう。クレームは、そうした改変と修正を全部含めるものとして解釈されなければならないことが意図されている。
【産業上の利用可能性】
【００７５】
本発明は、概してセキュア実行モードで動作し得るプロセッサを使用してコンピュータシステムに利用可能である。
【図面の簡単な説明】
【００７６】
【図１】セキュア実行モードで動作し得るプロセッサの一実施形態のオペレーションドメインとこれらのドメインを操作するコードの動作を示す概略図である。
【図２】信頼性のあるコンピュータプラットフォームを使用するコンピュータシステムの一実施形態を示すブロック図である。
【図３】セキュア実行モードで動作し得るプロセッサの一実施形態を示すブロック図である。
【図４】セキュア初期化の間、セキュア実行モードで動作し得るプロセッサを含むコンピュータシステムの一実施形態のオペレーションを示すフロー図である。
【図１】
2005528678.tif 000003
【図２】
2005528678.tif 000004
【図３】
2005528678.tif 000005
【図４】
2005528678.tif 000006
【国際調査報告】
2005528678.tif 000007
2005528678.tif 000008
2005528678.tif 000009