セキュアードエンター命令を実行するセキュアメモリを含む第1の論理プロセッサと、非プロセッサデバイスによるセキュアードバーチャルマシンモニターへのアクセスを防止するチップセットとを有することを特徴とするシステム。一実施形態によるシステムは、セキュアードエンター命令を実行するセキュアメモリを含む第1の論理プロセッサと、非プロセッサデバイスによるセキュアードバーチャルマシンモニターへのアクセスを防止するチップセットとを有することを特徴とする。マイクロプロセッサシステムにおいて信頼できる、または安全な環境を初期化するための技術を以下に説明する。以下の説明において、本発明を完全に理解してもらうため、論理実装、ソフトウェアモジュールアロケーション、暗号化方法、バスシグナリング方法、動作の詳細等、多数の具体的詳細を説明する。しかし、本発明はこれらの具体的な詳細なしに実施してもよいことが、当業者には分かるであろう。他の例において、本発明を不明瞭としないように、制御構造、ゲートレベルの回路、ソフトウェア命令シーケンスの全体は詳細には示さなかった。当業者であれば、過剰な説明なしに、ここに含めた説明で、適切な機能を実施することができるであろう。本発明はマイクロプロセッサシステムの形式で開示されている。しかし、本発明は、デジタル信号プロセッサ、ミニコンピュータ、メインフレームコンピュータ等、他の形式のプロセッサで実施してもよい。図1を参照して、マイクロプロセッサシステムで実行されるソフトウェア環境の実施例の図が示されている。図1に示したソフトウェアは信頼されていない。高い権限レベルで動作しているとき、オペレーティングシステム150はサイズが大きく、頻繁に更新しなければならないので、ちょうどよいときに信頼分析を実行することは非常に困難である。多くのオペレーティングシステムは最上位の権限レベルである権限リング0にある。アプリケーション152、154、および156は、より下の権限を有し、一般的には権限リング3にある。異なる権限リングの存在と、オペレーティングシステム150とアプリケーション152、154、156が異なる権限リングに分かれていることにより、オペレーティングシステム150により提供された便宜を信頼する決定をすることに基づき、図1のソフトウェアが信頼できるモードで動作することが可能であると見えるかもしれない。しかし、実際には、そのように信頼できるとの決定をすることはしばしば現実的ではない。この問題に影響する要因には、オペレーティングシステム150のサイズコードのライン数、オペレーティングシステム150が新しいコードモジュールやパッチにより何度も更新されるという事実、およびオペレーティングシステムがそのデベロッパ以外の第三者により提供されるデバイスドライバのようなコードモジュールも含むという事実が含まれる。オペレーティングシステム150は、マイクロソフト登録商標ウィンドウズ登録商標、リナックス、ソラリス登録商標のような一般的なものであってもよいし、既知のあるいは入手可能な他のいかなるオペレーティングシステムであってもよい。どのタイプまたは名称のアプリケーションまたはオペレーティングシステムであるかは、重要ではない。図2を参照して、本発明の一実施形態による、トラステッド信頼できる、またはセキュア安全なソフトウェアモジュールとシステム環境200の実施例の図が示されている。図2に示した実施形態において、プロセッサ202、プロセッサ212、プロセッサ222、および任意的な他のプロセッサ図示せずは、別々のハードウェア実体として示されている。他の実施形態において、様々な構成要素と機能ユニットの境界が異なってもよいように、プロセッサの数が異なってもよい。一部の実施形態において、プロセッサは、1以上のより物理的なプロセッサ上で実行されている別々のハードウェア実行スレッドあるいは論理プロセッサにより置き換えられてもよい。プロセッサ202、212、222は、安全な、または信頼できる動作をサポートする特殊回路または論理要素を含んでもよい。例えば、プロセッサ202は、信頼できる動作を起動する特殊なセキュアエンターSENTER命令の実行をサポートするSENTERロジック204を含んでいてもよい。プロセッサ202は、特殊なSENTER動作をサポートするシステムバス230上の特殊なバスメッセージをサポートするバスメッセージロジック206を含んでもよい。別の実施形態において、チップセット240のメモリ制御機能はプロセッサ内の回路に割り当てられてもよく、複数プロセッサの場合、単一のダイに含まれてもよい。これらの実施形態において、特殊なバスメッセージもプロセッサ内のバスに送られてもよい。特殊なバスメッセージの使用により、いくつかの理由により、システムの安全性と信頼性を高めることができる。プロセッサ202、212、222またはチップセット240等の回路要素は、本開示の実施形態の適当な論理要素を含んでいるとき、このようなメッセージを発行のみまたは応答のみすることができる。それゆえ、その特殊なバスメッセージを成功裏に交換することにより、適当なシステム構成を確実にすることができる。特殊なバスメッセージによりプラットフォームコンフィギュレーションレジスタ278をリセットする等の、通常は禁止されるべき動作も許可されてもよい。特殊なバスメッセージが特殊なセキュリティ命令に応じてのみ発行されることを可能とすることにより、バストランザクションでスパイする潜在的に敵対的な信頼できないコードの能力が削減される。また、プロセッサ202は、セキュアな初期化動作をサポートするセキュアメモリ208を含んでもよい。一実施形態において、セキュアメモリ208は、特殊モードで動作しているであろう、プロセッサ202の内部キャッシュであってもよい。別の実施形態において、セキュアメモリ208は特殊なメモリであってもよい。プロセッサ212やプロセッサ222等の他のプロセッサも、SENTERロジック214、224、バスメッセージロジック216、226、セキュアメモリ218、228を含んでもよい。チップセットは、接続されたプロセッサのためにメモリや入出力動作をサポートする一群の回路またはロジックとして定義されてもよい。チップセットの個々の要素は、単一のチップにまとめられてもよいし、一組のチップにまとめられてもよいし、プロセッサを含む複数のチップに分散していてもよい。図2の実施形態において、チップセット240は、プロセッサ202、212、222をサポートするためのメモリおよび入出力動作をサポートする回路およびロジックを含んでもよい。一実施形態において、チップセット240は、多数のメモリページ250-262、非プロセッサデバイスがメモリページ250-262にアクセスしてもよいかどうかを示す制御情報を含むデバイスアクセスページテーブル248とインターフェイスしていてもよい。チップセット240は、メモリページ250-262の選択された部分に入出力デバイスからのダイレクトメモリアクセスDMAを許可するまたは拒否するデバイスアクセスロジック247を含んでいてもよい。一部の実施形態において、デバイスアクセスロジック247は、上記のアクセスを許可または拒否するのに要するすべての関連する情報を含んでもよい。他の実施形態において、デバイスアクセスロジック247は、デバイスアクセスページテーブル248内に保持された上記の情報にアクセスしてもよい。メモリページの実際の数は重要ではなく、システム要求に応じて変化する。他の実施形態において、メモリアクセス機能はチップセット240の外部にあってもよい。別の実施形態において、チップセット240の機能は1以上の物理的デバイス間にさらに割り当てられていてもよい。チップセット240は、特殊なSENTER動作をサポートするシステムバス230上の特殊なバスメッセージをサポートするために、自分のバスメッセージロジック242を追加的に含んでいてもよい。これらの特殊なバスメッセージは、キーレジスタ244の内容をプロセッサ202、212、または222に転送すること、またはプロセッサ202、212、または222により特殊なALLJOINEDフラグ274が調べられることを許可することを含んでもよい。バスメッセージロジック242の付加的機能は、プロセッサによるバスアクティビティをEXISTSレジスタ272に登録し、プロセッサによる特殊なバスメッセージアクティビティをJOINSレジスタ272に記憶することである。EXISTSレジスタ272とJOINSレジスタ272の内容が等しいとき、特殊なALLJOINEDフラグ274が設定され、システム中のすべてのプロセッサがセキュアエンタープロセスに参加していることを示す。チップセット240は、ペリフェラルコンポーネントインターコネクトPCI、アクセラレーテッドグラフィクスポートAGP、ユニバーサルシリアルバスUSB、ローピンカウントLPCバス、またはその他の種類の入出力バス図示せず等の入出力バス上の標準的入出力動作をサポートする。インターフェイス290は、チップセット240を1以上のプラットフォームコンフィグレーションレジスタPCR278、279を含むトークン276と接続するために用いられる。一実施形態において、インターフェイス290は、セキュリティ拡張を追加して変更されたLPCバスローピンカウントLPCインターフェイス仕様書、インテルコーポレイション、Rev10、1997年12月29日であってもよい。上記セキュリティ拡張の一実施例は、トークン276内のプラットフォームコンフィギュレーションレジスタPCR278をターゲットとする以前に予約されたメッセージヘッダとアドレス情報を用いる、ローカルの確認メッセージである。一実施形態において、トークン276は、特殊なセキュリティ機能を有してもよく、一実施形態において、トラステッドコンピューティングプラットフォームアライアンスTCPAにより発行された、2001年12月1日の、TCPA主仕様書バージョン11a本願の出願時点においてwwwtrustedpccomから入手可能に開示されたトラステッドプラットフォームモジュールTPM281を含んでもよい。システム環境200で識別された2つのソフトウェアコンポーネントが、セキュアバーチャルマシンモニターSVMM282モジュールとセキュア初期化認証コードSINITAC280モジュールである。SVMM282モジュールは、システムディスクまたは他の大容量記憶に記憶されてもよく、必要に応じて移動またはコピーされてもよい。一実施形態において、セキュア起動プロセスの開始の前に、SVMM282は1以上のメモリページ250-262に移動またはコピーされてもよい。セキュアエンタープロセスの後、SVMM282がシステム内の最上位の権限を与えられたコードとして動作するバーチャルマシン環境が生成されてもよく、生成されたバーチャルマシン内でオペレーティングシステムまたはアプリケーションによりシステムリソースへの直接アクセスを許可または拒否するために用いられてもよい。セキュアエンタープロセスにより要求される動作の一部は単純なハードウェア実装の範囲を超えており、実行が黙示的に信頼されたソフトウェアモジュールを有利に用いてもよい。一実施形態において、これらの動作はセキュア初期化SINITコードにより実行されてもよい。3つの動作がここでは識別されているが、これらの動作は限定的に捉えてはならない。1つの動作は、システム構成の重要な部分を表すさまざまなコントロールをテストして、システム構成が必ずセキュア環境を正しく提供することを要求する。一実施形態において、1つの要求されるテストは、2以上の異なるシステムバスアドレスがメモリページ250-262内の同じ位置をアドレスすることを、チップセット240により提供されるメモリコントローラの構成が許さないことである。第2の動作は、SVMM282のメモリ常駐コピーにより使用されるそれらのメモリページを非プロセッサデバイスによる干渉から保護するために、デバイスアクセスページテーブル248とデバイスアクセスロジック247を構成することであろう。第3の動作は、SVMM282モジュールのアイデンティティを計算および登録し、それにシステムコントロールを転送することである。ここで、登録とは、SVMM282のトラスト計測をレジスタ、例えばPCR278またはPCR279に置くことを意味する。この最後の動作が行われると、SVMM282の信頼性が潜在的システムユーザにより検査されてもよい。SINITコードは、プロセッサまたはチップセットの製造者により作られてもよい。この理由により、SINITコードは、チップセット240のセキュア起動を手伝うため信頼されてもよい。SINITコードを配布するために、一実施形態において、SINITコード全体から周知の暗号ハッシュを作り、ダイジェストとして知られた値を生成してもよい。一実施形態によると、160ビットの値をもつダイジェストが作られる。ダイジェストは、ダイジェストシグネチャを形成するため秘密キーにより暗号化されてもよい。一実施形態によると、その秘密キーはプロセッサの製造者が保持していてもよい。SINITコードが対応するデジタル署名とバンドルされているとき、その組み合わせはSINIT認証済みコードSINITAC280と呼ばれることもある。SINITAC280のコピーは、下で説明するように、後で確認されてもよい。SINITAC280は、システムディスク、その他の大規模記憶装置、または固定メディアに記憶され、必要に応じて他の場所へ移動またはコピーされてもよい。一実施形態において、セキュア起動プロセスを開始する前に、SINITACは、メモリ常駐コピーを形成するため、メモリページ250-262に移動またはコピーされる。いずれの論理プロセッサがセキュア起動プロセスを起動してもよく、その後は起動する論理プロセッサILPと呼ばれてもよい。システムバス230上のプロセッサのいずれもがILPになることはできるが、本実施例においてはプロセッサ202がILPになるものとする。他の理由もあるが、他のプロセッサまたはDMAデバイスがメモリページ250-262をオーバーライトすることがあるので、この時点では、SINITAC280のメモリ常駐コピーもSVMM282のメモリ常駐コピーもいずれも信頼できるとは考えられないかもしれない。その後、ILPプロセッサ202は、特殊な命令を実行する。この特殊な命令はセキュアードエンターSENTER命令と呼ばれ、SENTERロジック204によりサポートされる。SENTER命令を実行すると、ILPプロセッサ202がシステムバス230に特殊なバスメッセージを発行し、後続のシステム動作を相当な時間待つ。SENTERの実行が開始された後、特殊なバスメッセージの1つであるSENTERバスメッセージがシステムバス230にブロードキャストされる。ILP以外の論理プロセッサは、応答する論理プロセッサRLPと呼ばれ、内部のノンマスカブルイベントでSENTERバスメッセージに応答する。本実施例において、RLPはプロセッサ212とプロセッサ222を含む。RLPはそれぞれ、カレントオペレーションを終了し、システムバス230にRLPアクノレッジACK特殊バスメッセージを送信し、待機状態に入る。ILPもシステムバス230にACKメッセージを送信することに注意すべきである。チップセット240は一組のレジスタ、EXISTSレジスタ270とJOINSレジスタ272とを含んでもよい。これらのレジスタは、ILPとすべてのRLPがSENTERバスメッセージに適当に応答していることを検証するために用いられる。一実施形態において、チップセット240は、論理プロセッサによりなされたシステムバストランザクションにおいて、EXISTSレジスタ270の対応するビットに1を書き込むことにより、そのシステム中のすべての動作している論理プロセッサを追跡する。本実施形態において、システムバス230上の各トランザクションは、論理プロセッサ識別子を含む識別フィールドを含まねばならない。一実施形態において、これは物理プロセッサ識別子と、各物理プロセッサ内のハードウェア実行スレッドの識別子から構成される。例えば、プロセッサ222上で実行されているスレッドがシステムバス230上の何らかのバストランザクションを生じさせたとき、チップセット240は、そのトランザクション内でこの論理プロセッサ識別子を見て、EXISTSレジスタ270内の対応する場所286に1を書き込む。セキュア起動プロセスの間に、プロセッサ222上の同じスレッドがシステムバス230にACKメッセージを送信したとき、チップセット240はこれも見て、JOINSレジスタ272内の対応する場所288に1を書き込むことができる。図2の実施例においては、明瞭にするため、各物理プロセッサには単一のスレッドが示されている。別の実施形態において、物理プロセッサは複数のスレッド、それにより負狂うの論理プロセッサをサポートしてもよい。JOINSレジスタ272の内容とEXISTSレジスタ270の内容とが一致したとき、チップセット240は、すべてのプロセッサがSENTERバスメッセージに適当に応答したことを示すALLJOINEDフラグ246を設定することができる。他の実施形態において、EXISTSレジスタ270とJOINSレジスタ272は、ALLJOINEDフラグ246の設定の後にセキュリティを支援し続けてもよい。ALLJOINEDフラグ246の設定後トラステッドまたはセキュアオペレーションが終了するまでの間に、チップセット240はバスサイクルをモニターし、JOINSレジスタ272と比較し続けてもよい。この間に、チップセット240がJOINSレジスタ272では現在識別されていない論理プロセッサからのバストランザクションを見た場合、チップセット240はこの論理プロセッサはともかくも遅れて現れたものと推定する。これは暗に、このようなプロセッサはセキュア起動プロセスには参加せず、それゆえアタッカセキュリティ脅威を表しうることを示す。上記の状況において、チップセット240はこのアタッカをセキュアード環境の外にとどめるように適当に応答することができる。一実施形態において、チップセット240は、上記の状況においてシステムリセットを強制することができる。第2の実施形態において、各論理プロセッサがACKバスメッセージの主張に続いて各トランザクションにおいてシステムバスに特殊な予約された信号を主張することにより、遅れたプロセッサが同様に検出される。この実施形態において、ALLJOINEDフラグ246の設定につづいて、チップセット240が特殊な信号の主張を伴わないプロセッサにより起動されたバストランザクションが見られたとき、チップセット240はこの論理プロセッサがとにかく遅れて現われ、攻撃者かもしれないと推定する。SENTERバスメッセージを発行した後、ILPプロセッサ202は、いつすべてのプロセッサが適当にACKに応答したか、また応答したかどうかを知るために、ALLJOINEDフラグ246を参照する。フラグ246が設定されていなければ、いくつかの実装が可能である。ILP、チップセット、またはその他のウォッチドッグタイマーがシステムリセットをしてもよい。あるいは、システムがハングしてオペレータのリセットを要求してもよい。いずれの場合にも、システムは機能し続けないかもしれないが、すべてのプロセッサが参加しない限り、セキュア起動プロセスが完了しないという意味でセキュア環境の主張は保護される。通常のオペレーションにおいて、すぐ後に、ALLJOINEDフラグ246が設定され、他のすべての論理プロセッサが待機状態に入ったことをILPが補償される。ALLJOINEDフラグ246が設定されたとき、SINITAC280に含まれたSINITコードを認証し、その後実行する目的で、ILPプロセッサ202はSINITAC280のコピーとキー284の両方をセキュアメモリ208に移動する。一実施形態において、このセキュアメモリ208は、ILPプロセッサ202の内部キャッシュでもよい。そのキャッシュは特殊なモードで動作していてもよい。キー284は、SINITAC280モジュールに含まれるデジタルシグネチャを符号化するために用いられる秘密キーに対応する公開キーを表し、デジタルシグネチャを検証し、それによりSINITコードを認証するために使用される。一実施形態において、キー284は、例えばSENTERロジック204の一部として、プロセッサ中にすでに記憶されていてもよい。他の実施形態において、キー284は、ILPにより読み出されるチップセット240の読み出し専用キーレジスタ244に記憶されてもよい。さらに別の実施形態において、プロセッサまたはチップセットのキーレジスタ244のいずれかが、キー284の暗号ダイジェストを実際に保持していてもよい。ここで、キー284自体はSINITAC280に含まれる。この最後の実施形態において、ILPはキーレジスタ244からダイジェストを読み出し、SINITAC280に組み込まれたキー284の等価な暗号ハッシュを計算し、供給されたキー284が確かに信頼できることを確認するために2つのダイジェストを比較する。SINITACのコピーと公開キーのコピーがセキュアメモリ208内に存在してもよい。ILPは、公開キーのコピーを用いてSINITACのコピーに含まれるデジタルシグネチャを復号することによりSINITACのコピーを検証する。この復号により、暗号ハッシュのダイジェストのオリジナルコピーが作られる。新たに計算されたダイジェストがこのオリジナルダイジェストと一致したとき、SINITACのコピーとそれに含まれたSINITコードは信頼できると考えられる。ILPは、セキュアードオペレーションが起動されることを待機しているRLPプロセッサ212、222とチップセット240に知らせる、他の特殊なバスメッセージSENTER連続メッセージを、システムバス230を介して発行する。ILPは、下で概略を説明するように、セキュリティトークン276中のプラットフォーム構成レジスタ272にSINITACモジュールの暗号ダイジェスト値を書きこむことにより、SINITACモジュールが唯一のものであることを登録する。ILPのセキュアメモリ208内に保持されているSINITコードのトラステッドコピーに実行制御を転送することにより、SENTER命令のILPによる実行は終了する。トラステッドSINITコードは、そのシステムテストと構成動作を実行し、上のレジスタの定義により、SVMMのメモリ常駐コピーを登録してもよい。SVMMのメモリ常駐コピーの登録は、いくつかの方法で実行される。一実施形態において、ILP上で実行されているSENTER命令が、セキュリティトークン276内のPCR278に、SINITACの計算されたダイジェストを書き込む。その後、トラステッドSINITコードは、メモリ常駐SVMMの計算されたダイジェストをセキュリティトークン276内の同じPCR278または他のPCR279に書き込む。SVMMダイジェストが同じPCR278に書き込まれたとき、セキュリティトークン276は新しい値SVMMダイジェストでオリジナルコンテントSINITダイジェストをハッシュし、その結果をPCR278に書き戻す。PCR278への第1の書き込み初期化がSENTER命令に限定されている実施形態においては、結果として得られるダイジェストはシステムへの信頼の根源として使用される。一旦トラステッドSINITコードが実行を完了し、PCRにSVMMのアイデンティティを登録すると、SINITコードはSVMMにILP実行制御を移す。一般的な実施形態において、ILPにより実行された第1のSVMM命令は、SVMMの自己初期化ルーチンを表す。一実施形態において、ILPは各RLPに個別のRLPJOINMESSAGE特殊バスメッセージを発行し、RLPの各々をSVMMの現在実行されているコピーの監視下のオペレーションに入るようにする。この時点から後は、下の図3の説明で概略を説明するように、システム全体はトラステッドモードで動作する。図3を参照して、本発明の一実施形態による、トラステッドまたはセキュアードソフトウェア環境の実施例の図が示されている。図3の実施形態において、トラステッドソフトウェアとアントラステッドソフトウェアが同時にロードされ、単一のコンピュータシステム上で同時に実行される。SVMM350は、1以上のアントラステッドオペレーティングシステム340とアントラステッドアプリケーション310-330からのハードウェアリソース380への直接アクセスを選択的に許可または拒絶する。このコンテクストにおいて、アントラステッドとは必ずしもオペレーティングシステムまたはアプリケーションが故意に不正を働いているということを意味するのではなく、インターラクションするコードのサイズや多様性により、ソフトウェアが所望のように振舞っており、その実行に干渉するウィルスやその他の外的コードがないと信頼性をもって主張することが実際的ではないということを意味する。典型的な実施形態において、アントラステッドコードは今日、パーソナルコンピュータ上で見られる通常のオペレーティングシステムおよびアプリケーションにより構成されるかもしれない。SVMM350は、また、1以上のトラステッドまたはセキュアなカーネル360および1以上のトラステッドアプリケーション370からの、ハードウェアリソース380への直接アクセスを選択的に許可または拒絶する。上記のトラステッドまたはセキュアなカーネル360およびトラステッドアプリケーション370は、信頼分析の実行を可能とするために、サイズおよび機能的に限定されたものであってもよい。トラステッドアプリケーション370は、セキュア環境において実行可能ないかなるソフトウェアコード、プログラム、ルーチン、または一組のルーチンであってもよい。よって、トラステッドアプリケーション370は様々なアプリケーションやコードシーケンスであってもよく、Java登録商標アプレットのような比較的小さなアプリケーションであってもよい。システムリソース保護や権限を改変しうるオペレーティングシステム340またはカーネル360により通常実行される命令または動作は、SVMM350によりトラップされ、選択的に許可され、部分的に許可され、または拒絶される。一実施例として、一般的な実施形態において、オペレーティングシステム340またはカーネル360により普通に実行されるプロセッサのページテーブルを変更する命令は、SVMM350によりトラップされる。これにより、そのバーチャルマシンのドメイン外のページ権限を変更しようとする要求はされないことを保証する。図4Aを参照して、図3のセキュアードソフトウェア環境をサポートするように適応したマイクロプロセッサシステム400の一実施形態が示されている。CPUA410、CPUB414、CPUC418、およびCPUD422は、特殊な命令の実行をサポートする追加的マイクロコーダまたはロジック回路も有するように構成されている。一実施形態において、この追加的マイクロコーダまたはロジック回路は、図2のSENTERロジック204であってもよい。これらの特殊な命令は、セキュア環境を立ち上げる間に、プロセッサの適当な同期を可能とする、システムバス420上に特殊なバスメッセージの発行をサポートする。一実施形態において、特殊なバスメッセージの発行は、図2のバスメッセージロジック206等の回路によりサポートされていてもよい。同様に、チップセット430は、チップセット240と同様であり、上で説明したシステムバス420上の特殊なサイクルをサポートする。物理プロセッサの数は特定の実施形態の実装により変化してもよい。一実施形態において、プロセッサは、インテル登録商標ペンティアム登録商標クラスのマイクロプロセッサであってもよい。チップセット430は、PCIバス446、あるいは、USB442、インテグレーテッドコントローラエレクトロニクスIDEバス図示せず、スモールコンピュータシステムインターコネクトSCSIバス図示せず、その他いかなる入出力バスを介して、大容量記憶デバイス、例えば固定メディア444やリムーバブルメディア448とインターフェイスされる。固定メディア444またはリムーバブルメディア448は、磁気ディスク、磁気テープ、磁気ディスケット、光磁気ドライブ、CDROM、DVDROM、フラッシュメモリカード、その他多くの形式の大規模記憶であってもよい。図4Aの実施形態において、4つのプロセッサCPUA410、CPUB414、CPUC418、CPUD422は、4つの別々のハードウェア実体として示されている。他の実施形態において、マイクロプロセッサの数は異なってもよい。実際に、物理的に個別のプロセッサは、1以上の物理的プロセッサ上で実行された別々のハードウェア実行スレッドにより代替されてもよい。後者の場合、これらのスレッドは、追加的物理的プロセッサの属性の多くを有する。複数の物理的プロセッサとプロセッサ上の複数のスレッドのミックスを用いて一般的に表現するため、論理プロセッサという表現を物理的プロセッサまたは1以上の物理的プロセッサ上で動作するスレッドのいずれかを示すために用いる。よって、単一スレッドのプロセッサは論理プロセッサとみなされ、マルチスレッドまたはマルチコアプロセッサは複数の論理プロセッサとみなされる。一実施形態において、チップセット430はモディファイドLPCバス450とインターフェイスしている。モディファイドLPCバス450は、チップセット430をセキュリティトークン454と接続するために用いられる。トークン454は、一実施形態において、トラステッドコンピューティングプラットフォームアライアンスTCPAにより構想されたTPM471を含む。図4Bを参照して、図3のセキュアードソフトウェア環境をサポートするように適応したマイクロプロセッサシステム490の別の実施形態が示されている。図4Aの実施形態と異なり、CPUA410とCPUB414はシステムバスA402でチップセット428に接続されており、一方、CPUC418とCPUD422はシステムバスB404でチップセット428に接続されている。他の実施形態において、2以上のシステムバスが用いられてもよい。他の別の実施形態において、ポイントツーポイントバスが用いられてもよい。特殊な命令は、セキュア環境を立ち上げる間に、プロセッサ間の適当な同期を可能とする、システムバスA402とシステムバスB404上の特殊なバスメッセージの発行をサポートする。一実施形態において、図2のバスメッセージロジック206等の回路により、特殊なバスメッセージの発行がサポートされる。一実施形態において、チップセット428は、システムバスA402とシステムバスB404をわたる一貫性および統一性を維持する役割を果たす。標準であろうと特殊であろうと、バスメッセージがシステムバスAに送信されると、チップセット428は適当であればそのメッセージをシステムバスB404に反映し、逆もまた同じである。別の実施形態において、チップセット428は、システムバスA402とシステムバスB404を独立したサブシステムとして扱う。システムバスA402に発行された特殊なバスメッセージはいずれもそのバス上のプロセッサにのみ適用され、同様に、システムバスB404に発行された特殊なバスメッセージはいずれもそのバス上のプロセッサにのみ適用される。システムバスA402に関して確立された保護されたメモリはいずれも、システムバスA402に接続されたプロセッサにのみアクセス可能であり、システムバスB404上のプロセッサはアントラステッドデバイスとして扱われる。システムバスA402上のCPUA410とCPUB414のために確立された保護されたいずれのメモリにアクセスするにも、システムバスB404上のプロセッサCPUC418とCPUD422は自分自身のSENTERプロセスを実行して、システムバスA402上のプロセッサのために生成された登録された環境と等しい環境を生成しなければならない。図5を参照して、本発明の別の実施形態による、図3のセキュアードソフトウェア環境をサポートするように適応したマイクロプロセッサシステム500の実施例の概略図が示されている。図4Aの実施形態と異なり、各プロセッサ例えば、CPUA510は、例えば、メモリコントローラ機能とデバイスアクセスロジック機能を実行するチップセット機能の一部例えば、シップセット機能593を含んでいる。これらのチップセット機能により、メモリ例えば、メモリA502のプロセッサへの直接接続が可能となる。他のチップセット機能は、別のチップセット530に残されてもよい。特殊なバスメッセージがシステムバス520をわたって発行されてもよい。各プロセッサは他のプロセッサに接続されたメモリに間接的にアクセスしてもよい。しかし、これらのアクセスはプロセッサ自身のメモリへのアクセスと比較したとき、かなり遅くてもよい。SENTERプロセスの開始の前に、ソフトウェアはSINITAC566とSVMM574のコピーを固定メディア544からローカルメモリ504に動かし、SINIT-AC556のコピーとSVMM572のコピーを形成する。一実施形態において、ILPであると意図されたプロセッサ図5の実施例において、これはCPUB514であるにより直接アクセスされるので、メモリ504が選択されてもよい。あるいは、SINITAC566とSVMM574のコピーは、ILP514がアクセス可能である限り、他のILPでないプロセッサに付属した他のメモリに置かれてもよい。図2ですでに説明したように、同様のシークエンスと発行されたバスサイクルで、CPUBILP514は、SENTER命令を発行することによりセキュアエンタープロセスを開始する。すべてのプロセッサがSENTERBUSMESSAGEに適当に応答したかどうかを決定し、この情報をILPに知らせるため、図2に関して上で説明したように、チップセット530はEXISTSレジスタ576、JOINSレジスタ580、ALLJOINEDフラグ584を利用する。ILPCPUB514は、公開キー564のコピーと共に、SINIT-AC556のメモリ常駐コピーをセキュアメモリ560に動かしてもよい。SINITAC556の検証と登録をするとき、ILPはSVMM572のメモリ常駐コピーの検証と登録を続けてもよい。次に図6を参照して、本発明の一実施形態による、様々なオペレーションの時間ライン図を示す。図6の時間ラインは、上で図2に関して説明したシステムの実施例に関連して説明したオペレーションの全体的スケジュールを示す。セキュアまたはトラステッドオペレーションが望ましいとソフトウェアが決定したとき、時間610において、SINITAC280とSVMM282のコピーを後続のSENTER命令に入手可能とする。本実施例において、ソフトウェアはSINIT-AC280のコピーとSVMM282のコピーを1以上のメモリページ250-262にロードする。1つのプロセッサ、本実施例においてはプロセッサ202がILPに選択され、時間612にSENTER命令を発行する。時間614に、ILPのSENTER命令はSENTERBUSMESSAGE616を発行する。ILPは、時間628でチップセットフラグ待機状態に入る前に、時間618にそれ自身のSENTERACK608を発行する。各RLP、例えばプロセッサ222は、時間620の間にカレント命令を完了することによりSENTERBUSMESSAGEに応答する。RLPはSENTERACK622を発行し、SENTERCONTINUEMESSAGEを待ち受ける状態634に入る。チップセット240は、時間624で、システムバス230上で観測したSENTERACKメッセージに応じて、JOINSレジスタ272を設定する。JOINSレジスタ272の内容がEXISTSレジスタ270の内容と一致したとき、チップセット240は時間626でALLJOINEDフラグ246を設定する。この時間中、ILPは、ALLJOINEDフラグ246を調べている間、ループにいる。ALLJOINEDフラグ246が設定されており、時間630でALLJOINEDフラグ246が設定されているとILPが決定したとき、ILPは時間632の間にSENTERCONTINUEMESSAGEを発行する。SENTERCONTINUEMESSAGEがシステムバス230に時間636でブロードキャストされると、RLPは参加待ち状態に入る。例えば、プロセッサ222のRLPは時間638において参加待ち状態に入る。SENTERCONTINUEMESSAGEを発行すると、公開キーのコピーとSINITACのコピーを形成するため、ILPは時間640においてチップセット240のキーレジスタ244の公開キーとSINITACのコピーをセキュアメモリ208に持ってくる。他の実施形態において、キーレジスタ244は公開キーのダイジェストを含んでおり、実際の公開キーはSINITACに含まれるか、それに付属している。図2に関して上で説明したように、SINITACのコピーを認証するとき、ILPはセキュアメモリ208内でSINITACのコピーを実際に実行してもよい。セキュアメモリ208内でSINITACのコピーの実行が開始された後、SVMMのメモリ常駐コピーを検証および登録する。SVMMのコピーがセキュリティトークン276のPCR278に登録された後、SVMMのメモリ常駐コピー自体が実行を開始する。この時、進行中の期間650に、ILPでSVMMのオペレーションが確立される。ILPSVMMオペレーションで最初になされることの1つは、個々のRLPJOINMESSAGEをシステムバス230に発行することである。例えば、プロセッサ222JOINMESSAGE644である。このメッセージには、SVMMの登録されたメモリ常駐コピーの実行において、RLPプロセッサ222が参加することができるメモリの場所を含む。あるいは、ILPSVMMオペレーションは、チップセットまたはメモリの所定の場所にメモリロケーションを登録し、JOINMESSAGEを受信するとRLPはこの場所から開始アドレスを読み出してもよい。プロセッサ222JOINMESSAGEを受信し、開始アドレスを決定した後、時間646の間に、RLPプロセッサ222はこの場所にジャンプし、SVMMの登録されたメモリ常駐コピーの実行に参加する。すべてのRLPがSVMMの登録されたメモリ常駐コピーに参加した後、セキュアードオペレーションがマイクロコンピュータシステム200全体で確立される。図7を参照して、本発明の一実施形態による、ソフトウェアと他のプロセスブロックのフローチャートを示す。説明の明瞭化のため、図7には単一の代表的なRLPのプロセスブロックのみが示されている。他の実施形態においては、数個の応答論理プロセッサがあってもよい。プロセス700は、ブロック710において、論理プロセッサによりSINITACとSVMMモジュールのコピーが後続のSENTER命令によりアクセス可能とされたときに開始する。本実施例において、ブロック712において、ILPは大規模記憶から物理メモリにSINITACとSVMMコードをロードする。別の実施形態において、ILPだけでなくいずれの論理プロセッサがそうしてもよい。プロセッサは、ブロック714で識別されたように、SENTER命令を実行することによりILPとなる。ブロック716において、ILPSENTER命令はSENTERBUSMESSAGEを発行する。ブロック718において、ILPはチップセットに自分のSENTERACKメッセージを発行する。ILPはその後、判断ブロック720に示したように待機状態に入り、チップセットがそのALLJOINEDフラグを設定するのを待つ。各RLPがブロック770においてSENTERBUSMESSAGEを受信した後、カレント命令が終わると実行を停止し、ブロック772において自分自身のSENTERACKを発行する。判断ブロック774に示したように、各RLPは待機状態に入り、ILPからSENTERCONTINUEMESSAGEが届くのを待つ。SENTERACKメッセージが受信されたとき、チップセットはJOINSレジスタ内の対応するビットを設定する。JOINSレジスタの内容がEXISTSレジスタの内容と一致するとき、チップセットはそのALLJOINEDフラグを設定し、ILPに判断ブロック720から進むように知らせる。既存の判断ブロック720でYESの場合、ILPはブロック722においてSENTERCONTINUREMESSAGEを発行する。これにより各RLPが判断ブロック774から進むように信号で知らされる。各RLPは、判断ブロック776として示した第2の待機状態に入り、SENTERJOINMESSAGEを待つ。さしあたり、ILPはブロック724において、セキュア実行のために、チップセットの公開キーとSINITACのメモリ常駐コピーをそれ自身のセキュアメモリに移動する。ILPはブロック726において、SINITACのセキュアメモリ常駐コピーを検証するために使用し、それを実行する。SINITACの実行により、ブロック728において、システム構成とSVMMコピーのテストが実行され、SVMMのアイデンティティが登録され、最後にSVMMの実行が開始される。ブロック754で示したように、ブロック728で実行される動作の一部として、SVMM282のメモリ常駐コピーにより使用されるメモリページを非プロセッサデバイスによる干渉から保護するように、メモリとチップセットのデバイスアクセスページテーブル248とデバイスアクセスロジック247がILPSINITコードにより構成される。ILPがSVMMの制御下で実行を開始した後、ブロック730において、そのILPは各RLPに個別のSENTERJOINMESSAGEを送信する。SENTERJOINMESSAGEを発行した後、ILPはブロック732においてSVMMオペレーションを開始する。SENTERJOINMESSAGEを受信すると、各RLPは判断ブロック776で表された待機状態をYESの方に抜け、ブロック780でSVMMオペレーションを開始する。SENTERJOINMESSAGEには、SVMMオペレーションに参加するときにRLPが分岐するSVMMエントリポイントが含まれる。あるいは、ILPSVMMコードがシステムロケーション例えば、チップセット中に適当なRLPエントリポイントを登録して、SENTERJOINMESSAGEを受信した時にRLPにより読み出されるようにしてもよい。開示した様々な実施形態には2以上のプロセッサ論理または物理プロセッサのいずれかが含まれるが、上記のマルチプロセッサおよび/またはマルチスレッドシステムは、複数の論理または物理プロセッサを伴うシステムの安全に関連する複雑性を説明する詳細に説明されたものであることを理解すべきである。より複雑でないシステムにおいて有利であろう実施形態は、プロセッサが1つだけのものである。一部の場合において、1つの物理的プロセッサが複数のスレッドを有し、それゆえ複数の論理プロセッサを含んでしたがって、説明したようにILPとRLPを有していてもよい。しかし、他の場合において、単一プロセッサ、単一スレッドのシステムを使用して、開始したセキュア処理技術を利用してもよい。このような場合、RLPは存在しない。しかし、セキュア処理技術は依然としてデータが盗まれたり、権限を与えられていない方法で改ざんされたりする見込みを減少させるのに役立つ。以上の説明により、本発明をその特定の実施形態を参照して説明した。しかし、添付した請求項に記載した本発明のより広い精神と範囲から逸脱することなく、様々な修正や変更をできることは明らかである。したがって、本明細書と図面は限定的ではなく例示としてみなすべきである。なお、上記の様々な実施形態について、次の付記を記す。付記1セキュアードエンター命令を実行するセキュアメモリを含む第1の論理プロセッサと、非プロセッサデバイスによるセキュアードバーチャルマシンモニターへのアクセスを防止するチップセットとを有することを特徴とするシステム。付記2付記1に記載のシステムであって、前記セキュアードエンター命令は、セキュアオペレーションにおいて、第2の論理プロセッサを前記第1の論理プロセッサと同期させるために、前記第1の論理プロセッサに前記第2の論理プロセッサへ特殊なバスメッセージを発行させることを特徴とするシステム。付記3付記1に記載のシステムであって、前記セキュアメモリは前記第1の論理プロセッサのキャッシュ内にあることを特徴とするシステム。付記4付記1に記載のシステムであって、前記セキュアメモリは前記第1の論理プロセッサ以外の回路によるアクセスから保護されていることを特徴とするシステム。付記5付記1に記載のシステムであって、ダイジェストを記憶するためにプラットフォーム構成レジスタを含むセキュリティトークンをさらに有することを特徴とするシステム。付記6付記1に記載のシステムであって、前記セキュアードエンター命令からの第1の特殊なバスメッセージに応答する第2の論理プロセッサをさらに有することを特徴とするシステム。付記7付記6に記載のシステムであって、前記第2の論理プロセッサは、前記第1の特殊なバスメッセージに応じて、カレント命令の実行を終了し、第2の特殊なバスメッセージを発行することを特徴とするシステム。付記8付記7に記載のシステムであって、前記チップセットは前記第2の特殊なバスメッセージの受信に応じてフラグを設定することを特徴とするシステム。付記9付記8に記載のシステムであって、前記第2の論理プロセッサは、第3の特殊なバスメッセージに応じて、前記セキュアバーチャルマシンモニターのエントリポイントにジャンプすることを特徴とするシステム。付記10第1の論理プロセッサと第2の論理プロセッサとを同期させるステップと、初期化コードモジュールを認証するステップと、セキュアバーチャルマシンモニターを認証するステップと、前記セキュアバーチャルマシンモニターを実行するステップとを有することを特徴とする方法。付記11付記10に記載の方法であって、特殊なバスメッセージに応じて前記第2の論理プロセッサ上で前記セキュアバーチャルマシンモニターを実行するために前記特殊なバスメッセージを前記第2の論理プロセッサに送信するステップをさらに有することを特徴とする方法。付記12付記10に記載の方法であって、前記同期させるステップは、特殊なバスメッセージが前記第2の論理プロセッサに実行を停止させアクノレッジメントを送信させるステップをさらに有することを特徴とする方法。付記13付記12に記載の方法であって、前記同期させるステップは、前記アクノレッジメントに応じてチップセットにフラグを設定するステップをさらに有することを特徴とする方法。付記14付記10に記載の方法であって、前記初期化コードモジュールを認証するステップは、前記初期化コードモジュールのコピーと公開キーとをセキュアメモリに移動するステップを有することを特徴とする方法。付記15付記14に記載の方法であって、前記初期コードモジュールを認証するステップは、前記初期コードモジュール第1のダイジェストを前記初期コードモジュールの第2のダイジェストと比較するステップを含むことを特徴とする方法。付記16付記10に記載の方法であって、前記セキュアバーチャルマシンモニターを認証するステップは、前記初期コードモジュールを実行するステップを含むことを特徴とする方法。付記17付記16に記載の方法であって、前記セキュアバーチャルマシンモニターを認証するステップは、プラットフォーム構成レジスタに前記バーチャルマシンモニターを登録するステップを含むことを特徴とする方法。付記18第1の論理プロセッサと第2の論理プロセッサとを同期させる手段と、初期化コードモジュールを認証する手段と、セキュアバーチャルマシンモニターを認証する手段と、前記セキュアバーチャルマシンモニターを実行する手段とを有することを特徴とする装置。付記19付記18に記載の装置であって、特殊なバスメッセージに応じて前記第2の論理プロセッサ上で前記セキュアバーチャルマシンモニターを実行するために前記特殊なバスメッセージを前記第2の論理プロセッサに送信する手段をさらに有することを特徴とする装置。付記20付記18に記載の装置であって、前記初期化コードモジュールのコピーと公開キーとをセキュアメモリに移動する手段を有することを特徴とする装置。付記21付記20に記載の装置であって、前記初期コードモジュール第1のダイジェストを前記初期コードモジュールの第2のダイジェストと比較する手段をさらに有することを特徴とする装置。付記22付記18に記載の装置であって、前記バーチャルマシンモニターを登録する手段をさらに有することを特徴とする装置。付記23セキュアオペレーション初期化をする第1の命令を実行し、セキュア初期化認証済みコードの実行をする時点を検出するセキュアエンターロジックと、前記第1の命令に応じて第1の特殊なバスメッセージを送信し、前記検出された時点に第2の特殊なバスメッセージを送信するバスメッセージングロジックとを有することを特徴とするプロセッサ。付記24付記23に記載のプロセッサであって、前記時点は第1の論理プロセッサがアクノレッジメントを発行した後であることを特徴とするプロセッサ。付記25付記23に記載のプロセッサであって、前記セキュアエンターロジックは、前記時点を決定するためにチップセット中のフラグレジスタをさらに参照することを特徴とするプロセッサ。付記26付記23に記載のプロセッサであって、前記セキュアエンターロジックは、さらに、前記時点の後にキーを入力しコードモジュールを認証することを特徴とするプロセッサ。付記27付記23に記載のプロセッサであって、前記バスメッセージングロジックは、さらに、コードエントリポイントを含む第3の特殊なバスメッセージを送信することを特徴とするプロセッサ。付記28第1の論理プロセッサからの第1の特殊なバスメッセージに応じてセキュアオペレーションを準備するバスメッセージングロジックと、前記第1の特殊なバスメッセージに応じて第2の論理プロセッサからのアクノレッジメントを記憶するレジスタとを有することを特徴とするチップセット。付記29付記28に記載のチップセットであって、前記チップセットは、前記第1の論理プロセッサにセキュアオペレーション初期化を進める信号をいつ送るかを決定するために、前記レジスタを論理プロセッサアクティビティと比較することを特徴とするチップセット。付記30付記29に記載のチップセットであって、前記信号はフラグの設定を含むことを特徴とするチップセット。付記31付記28に記載のチップセットであって、セキュアバーチャルマシンモニターをロックするデバイスアクセスロジックをさらに有することを特徴とするチップセット。付記32付記28に記載のチップセットであって、前記第1の特殊なバスメッセージの後に、前記第1の論理プロセッサにキーを送信するキーレジスタをさらに有することを特徴とするチップセット。付記33セキュアエンターロジックと、前記セキュアエンターロジックに応じる第1のバスメッセージングロジックとを有する論理プロセッサと、前記第1のバスメッセージングロジックから第1の特殊なバスメッセージを受信する第2のバスメッセージングロジックと、アクノレッジメントに応じて設定されるフラグとを有するチップセットとを有することを特徴とするシステム。付記34付記33に記載のシステムであって、前記セキュアエンターロジックに応じてセキュアオペレーションを起動するセキュア初期化認証済みコードをさらに有することを特徴とするシステム。付記35付記34に記載のシステムであって、前記セキュア初期化認証済みコードを認証するために前記論理プロセッサにより使用されるキーをさらに有することを特徴とするシステム。付記36付記34に記載のシステムであって、前記第1のバスメッセージングロジックは第2の特殊なバスメッセージを発行し、前記第2の特殊なバスメッセージの後に前記論理プロセッサは前記セキュア初期化認証済みコードをセキュアメモリに移動することを特徴とするシステム。付記37付記34に記載のシステムであって、セキュアバーチャルマシンモニターをさらに有することを特徴とするシステム。付記38付記37に記載のシステムであって、前記セキュア初期化認証済みコードは前記セキュアバーチャルマシンモニターの初期化を実行することを特徴とするシステム。付記39付記38に記載のシステムであって、前記初期化は認証を含み、前記チップセットは前記初期化に応じて非プロセッサが前記セキュアバーチャルマシンモニターにアクセスするのを防止するデバイスアクセスロジックを含むことを特徴とするシステム。付記40付記38に記載のシステムであって、前記第1のバスメッセージングロジックは、前記初期化に応じて、第3の特殊なバスメッセージを発行することを特徴とするシステム。付記41付記40に記載のシステムであって、前記第3の特殊なバスメッセージは、前記セキュアバーチャルマシンモニターのコードエントリポイントを含むことを特徴とするシステム。付記42特殊なバスメッセージを送信するステップと、第1の論理プロセッサ内の初期化コードを認証するステップと、セキュアバーチャルマシンモニターを認証するステップと、前記第1の論理プロセッサ中の前記セキュアバーチャルマシンモニターを実行するステップとを有することを特徴とする方法。付記43付記42に記載の方法であって、前記第1のバスメッセージに応じてアクノレッジメントを送信するステップをさらに有することを特徴とする方法。付記44付記42に記載の方法であって、第2の論理プロセッサにおける実行を停止してアクノレッジメントを送信するステップをさらに有することを特徴とする方法。付記45付記44に記載の方法であって、前記アクノレッジメントに応じてチップセットにフラグを設定するステップをさらに有することを特徴とする方法。付記46付記42に記載の方法であって、前記初期化コードを認証するステップは、前記初期化コードのコピーと公開キーをセキュアメモリに移動することを特徴とする方法。付記47付記46に記載の方法であって、前記初期化コードを認証するステップは、前記初期化コードの第1のダイジェストを前記初期化コードの第2のダイジェストと比較するステップを含むことを特徴とする方法。付記48付記42に記載の方法であって、前記セキュアバーチャルマシンモニターを認証するステップは、前記初期化コードを実行するステップを含むことを特徴とする方法。付記49付記48に記載の方法であって、前記セキュアバーチャルマシンモニターを認証するステップは、プラットフォーム構成レジスタに前記バーチャルマシンモニターを登録するステップを含むことを特徴とする方法。