(57)【特許請求の範囲】
【請求項１】
ポイントツーポイント相互接続に連結される論理プロセッサの数を識別し、システムトポロジーが正確に表されているかを検証するために用いられるレジスタを備えるプロセッサであって、
セキュアな起動プロセスを開始するセキュアなエンター命令に応答して、
前記レジスタを読み出してシステムトポロジーが正確に表されているかを検証し、
前記プロセッサ及びチップセットに前記ポイントツーポイント相互接続を介して連結する他のプロセッサに対し、当該他のプロセッサを休止状態に入らせる信号を前記チップセットに送信させ、前記他のプロセッサを休止状態に入らせる信号を前記チップセットに送信させた後で、前記他のプロセッサに、前記休止状態に入ったことを知らせる信号を前記チップセットに対して送信させ、
前記ポイントツーポイント相互接続を介して前記プロセッサに連結する他のプロセッサが、休止状態に入ったことを確認し、
前記他のプロセッサが休止状態に入ったことを確認した後で、セキュアな起動ソフトウエアをセキュアなメモリにコピーし、
前記セキュアなメモリ内の前記セキュアな起動ソフトウエアの実行を開始し、
前記セキュアな起動ソフトウエアの実行の後に、プロセッサ実行制御をセキュアな仮想マシンモニタに移して、前記セキュアな仮想マシンモニタの自己初期化ルーチンを実行する、
ロジックを含むプロセッサ。
【請求項２】
前記ロジックは、前記セキュアな起動ソフトウエアを前記セキュアなメモリにコピーし、前記セキュアなメモリ中の前記セキュアな起動ソフトウエアを検証する、
請求項１に記載のプロセッサ。
【請求項３】
前記ロジックは、前記セキュアな起動ソフトウエアに制御を移すことで、前記セキュアな起動ソフトウエアの実行を開始する
請求項１又は２に記載のプロセッサ。
【請求項４】
ポイントツーポイント相互接続に連結される論理プロセッサの数を識別するレジスタを含む第１のプロセッサが、前記レジスタを読み出してシステムトポロジーが正確に表されているかを検証する段階と、
チップセットにより、前記チップセット及び前記第１のプロセッサに前記ポイントツーポイント相互接続を介して連結する第２のプロセッサを休止状態に入らせる信号を送信する段階と、
前記第２のプロセッサが休止状態に入った後で、前記第２のプロセッサにより、前記チップセットに対して、前記休止状態に入ったことを知らせる信号を送信する段階と、
前記第１のプロセッサにより、前記第２のプロセッサが休止状態に入ったことを確認すること、及び、前記第２のプロセッサが休止状態に入ったことを確認した後でセキュアな起動ソフトウエアをセキュアなメモリにコピーすることを含み、セキュアな起動プロセスを開始するセキュアなエンター命令を実行する段階と、
前記セキュアなエンター命令に応答して、前記第１のプロセッサにより、前記セキュアなメモリ内の前記セキュアな起動ソフトウエアを実行する段階と、
前記セキュアな起動ソフトウエアの実行の後に、プロセッサ実行制御をセキュアな仮想マシンモニタに移して、前記セキュアな仮想マシンモニタの自己初期化ルーチンを実行する段階と、
を含む方法。
【請求項５】
前記セキュアなエンター命令に応じて、前記セキュアなメモリ内の前記セキュアな起動ソフトウエアを検証する段階をさらに含む、
請求項４に記載の方法。
【請求項６】
前記セキュアなエンター命令に応じて、前記セキュアなメモリ内の前記セキュアな起動ソフトウエアを検証する段階は、
前記セキュアな起動ソフトウエアのデジタル署名を使用する段階を含む、
請求項５に記載の方法。
【請求項７】
前記セキュアな起動ソフトウエアの前記デジタル署名は、前記セキュアな起動ソフトウエアのハッシュから生成される、
請求項６に記載の方法。
【請求項８】
チップセット、
ポイントツーポイント相互接続に連結される論理プロセッサの数を識別し、システムトポロジーが正確に表されているかを検証するために用いられるレジスタを含み、セキュアな起動プロセスを開始するセキュアなエンター命令に応じて、セキュアな起動ソフトウエアをセキュアなメモリにコピーし、前記セキュアなメモリ内の前記セキュアな起動ソフトウエアの実行を開始する第１のプロセッサ、及び、
前記第１のプロセッサ及び前記チップセットに前記ポイントツーポイント相互接続を介して連結する第２のプロセッサを含み、
前記第１のプロセッサは、前記レジスタを読み出してシステムトポロジーが正確に表されているかを検証し、
前記第１のプロセッサは、前記セキュアな起動ソフトウエアの実行の後に、プロセッサ実行制御をセキュアな仮想マシンモニタに移して、前記セキュアな仮想マシンモニタの自己初期化ルーチンを実行し、
前記第１のプロセッサは、前記セキュアなメモリに前記セキュアな起動ソフトウエアをコピーする前に、前記第２のプロセッサが休止状態に入ったことを確認し、
前記チップセットは、前記第２のプロセッサに対し、前記第２のプロセッサを休止状態に入らせる信号を送信し、
前記第２のプロセッサが休止状態に入った後で、前記第２のプロセッサは、前記休止状態に入ったことを知らせる信号を前記チップセットに対して送信する、
システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してマイクロプロセッサシステムに関しており、より具体的には、トラステッドな、あるいはセキュアな環境で動作できるマイクロプロセッサシステムに関する。
【背景技術】
【０００２】
ローカルあるいは遠隔マイクロコンピュータで金融および個人的な取引を行う数の増加が、「トラステッドな」、あるいは「セキュアな」マイクロプロセッサ環境の構築の原動力となってきた。これら環境が解決しようとする課題は、プライバシー欠如、あるいはデータ破損あるいは乱用である。ユーザは自分のプライベートなデータを公にしたくないし、自分のデータを変更されたり、あるいは不適切な処理に利用されたくない。これらの例には、過失による医療記録の流出、あるいはオンライン銀行あるいはその他の保管所からの電子資金盗用が含まれる。同様に、コンテンツプロバイダは、デジタルコンテンツ（例えば、音楽、その他の音声、ビデオ、あるいは他の種類のデータ一般）が許可なくコピーされるのを防ぎたいと思っている。
【０００３】
既存のトラステッドなシステムには、完結した一式のトラステッドなソフトウェアが利用されているものがある。この方法は実装が比較的簡単であるが、共通の市販のオペレーティングシステムおよびアプリケーションソフトウェアでの同時利用ができないという不利な点がある。この不利な点により、このようなトラステッドなシステムは受容が限られる。
【０００４】
他の方策では、システムが、互いにバスを介して接続されたプロセッサを内蔵することが要求される。
【図面の簡単な説明】
【０００５】
本願を、同様の参照番号が同様の部材を示す添付図面において、限定ではなく例示により示す。
【０００６】
【図１】マイクロプロセッサシステムで実行される例示的なソフトウェア環境を示す図である。
【０００７】
【図２】本発明の一実施形態による、ある例示的なトラステッドな、あるいはセキュアなソフトウェアモジュールおよび例示的なシステム環境を示す図である。
【０００８】
【図３】本発明の一実施形態による例示的なトラステッドな、あるいはセキュアなソフトウェア環境を示す図である。
【０００９】
【図４】本発明の方法の一実施形態による、ソフトウェアおよびその他の処理ブロックのフローチャートである。
【発明を実施するための最良の形態】
【００１０】
以下の記載では、マイクロプロセッサシステムにおけるトラステッドなセキュアな環境を初期化する技法を記載する。以下の記載において、論理実装、ソフトウェアモジュール割り当て、暗号化技法、バス信号化技法、および動作の詳細などの幾多もの特定の詳細を述べて、本発明のより完全な理解を助ける。しかし、本発明がこのような特定の詳細なしに実施できることは当業者であれば理解する。他の場合においては、本発明を曖昧にしないように、制御構造、ゲートレベル回路、および完全なソフトウェア命令列は詳細に示していない。当業者であれば、含めた記載を読めば、必要以上の実験なしに、適切な機能を実装することができる。発明はマイクロプロセッサシステムの形で開示される。しかし、本発明は、デジタル信号プロセッサ、ミニコンピュータ、あるいはメインフレームコンピュータでも実施することができる。
【００１１】
図１を参照すると、マイクロプロセッサシステムで実行される例示的ソフトウェア環境を示す図が示されている。図１に示すソフトウェアはトラステッドでない（アントラステッド）。高優先度レベルで動作する際、オペレーティングシステム１５０のサイズおよび定期的な更新により、任意のトラステッドな分析を適時に実施することが非常に難しくなる。オペレーティングシステムの多くが、優先度が最大レベルである優先度リングゼロ（０）に在る。アプリケーション１５２、１５４、１５６は、これよりずっと低い優先度を持ち、典型的に優先度リング３に在る。異なる優先度リングが在ること、およびオペレーティングシステム１５０およびアプリケーション１５２、１５４、１５６をこれら異なる優先度リングに分類することで、オペレーティングシステム１５０が提供する機能の信頼性に関する決定に基づき、トラステッドなモードで図１のソフトウェアの動作を行うことができるように一見思われる。しかし実際上は、このような信頼性に関する決定はしばしば実用的ではない。この課題を生じる要素には、オペレーティングシステム１５０のサイズ（コードのライン数）、オペレーティングシステム１５０が幾らもの更新（新たなコードモジュールおよびパッチ）を受信する可能性があるという事実、およびオペレーティングシステム１５０が、オペレーティングシステムの開発業者以外の者が供給するデバイスドライバなどのコードモジュールを含みうるという事実、などがある。オペレーティングシステム１５０は、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ、あるいはＳｏｌａｒｉｓ(登録商標)などの一般的なもの、あるいは任意の他の適切な既知の、あるいは入手可能なオペレーティングシステムであってよい。特定の種類のあるいは名称のアプリケーションあるいはオペレーティングシステムの運用は重要ではない。
【００１２】
図２を参照すると、ある例示的なトラステッドな、あるいはセキュアなソフトウェアモジュールおよび例示的なシステム環境２００が示されている。図２の実施形態においては、プロセッサ２０２、プロセッサ２１２、プロセッサ２２２、およびオプションとして他のプロセッサ（不図示）を別個のハードウェア資源として示している。図２は三つのプロセッサを示しているが、本発明の実施形態は任意の数のプロセッサを含みえ、これは単一のプロセッサをも含みうる。
【００１３】
システム２００はさらに、下に示す任意の他のシステムあるいは他のロジックとともに、入力／出力（Ｉ／Ｏ）コントローラあるいはハブを含みうるチップセット２４０を含む。他の実施形態は、図２に示す部材の代わりに、あるいはそれに加えて、他の部材を含みえ、これら任意の数のプロセッサあるいは他の部材は、それらの互いに対する配置などで異なっていてよい。
【００１４】
プロセッサ２０２、２１２、２２２は、コア２０３、２０５、２１３、２１５、２２３、および２２５など、一以上の実行コアを含みうる。幾らかの実施形態においては、プロセッサあるいはコアを、一以上の物理的プロセッサあるいはコア上で動作する別個のハードウェア実行スレッドで置き換えてもよい。これらスレッドは、追加的な物理的プロセッサの属性の多くを所有する。多数の物理的プロセッサおよびプロセッサ上の多数のスレッドを任意に組み合わせて説明する便宜上の一般的表現として「論理プロセッサ」という用語を利用して、一つの物理的プロセッサあるいは一以上の物理的プロセッサで動作するスレッドを記載する。故に、一つのシングルスレッドプロセッサは論理プロセッサとして考えられ、マルチスレッドあるいはマルチコアプロセッサは多数の論理プロセッサとして考えられうる。
【００１５】
プロセッサ２０２、２１２、２２２はさらに、コアなしロジック２０１、２１１、および２２１などの「コアなし」ロジックを含みえ、ここで「コアなし」ロジックは、実行コアのうちのいずれからも別離されるロジックである。コアなしロジックは、そこにあるプロセッサに関する情報を記憶するのに利用されうるレジスタ２０７、２１７、２２７などの、レジスタ、あるいは任意のほかの記憶位置を含みうる。これらレジスタあるいは記憶位置はプログラムできる、あるいはハードコードされえ、このような情報は、対応するプロセッサに含まれるコアおよび／または論理プロセッサの数を含みうる。レジスタ２０７、２１７、２２７は、電源投入時のリセット中に更新される標準グローバルメモリマップレジスタ（standard global memory mapped register）であってよい。
【００１６】
プロセッサ２０２、２１２、２２２はさらに、セキュアなあるいはトラステッドな動作を支援する特別な回路あるいは論理部材を含みうる。例えば、プロセッサ２０２は、安全入力（ＳＥＮＴＥＲ）ロジック２０４を含むことで、トラステッドな動作を始めうる特別なＳＥＮＴＥＲ命令の実行を支援しうる。プロセッサ２０２はさらに、特別なＳＥＮＴＥＲ動作を支援すべくプロセッサおよび他の部材間の特別な相互接続メッセージを支援すべく相互接続メッセージロジック２０６を含みうる。特別な相互接続メッセージは、システムの安全性あるいは信頼性を様々な理由から増加させうる。プロセッサ２０２、２１２、２２２、あるいはチップセット２４０などの回路部材は、それらが本開示の実施形態の適切な論理部材を含む場合にのみ、このようなメッセージを発行しうる、あるいはそれに対して応答しうる。従って、特別な相互接続メッセージの交換を成功させることで、適切なシステム構成の確保を助けうる。特別な相互接続メッセージはさらに、プラットフォーム構成レジスタ２７８のリセットなどの、通常は禁止されているべきアクティビティを許可しうる。潜在的に敵意のある信用のおかれないコードがある相互接続処理上でスパイをする能力は、特別な相互接続メッセージを、特別な安全命令に対して発行することで、削減されうる。ＳＥＮＴＥＲロジック２０４、相互接続メッセージロジック２０６、および本発明の実施形態で利用される任意の他のロジックは、ロジック回路、マイクロコード、およびファームウェアを含む任意の既知の方策により実装されうる。
【００１７】
さらに、プロセッサ２０２は、セキュアな初期化動作を支援すべくセキュアなメモリ２０８を含みうる。一実施形態においては、セキュアなメモリ２０８は、特別なモードで動作してもよいプロセッサ２０２の内部キャッシュであってよい。代替実施形態においては、セキュアなメモリ２０８は特別なメモリであってよい。プロセッサ２１２およびプロセッサ２２２などの他のプロセッサはさらに、ＳＥＮＴＥＲロジック２１４、２２４、バスメッセージロジック２１６、２２６、およびセキュアなメモリ２１８、２２８を含みうる。
【００１８】
「チップセット」は、接続プロセッサ（一または複数）用のメモリおよび／またはＩ／Ｏ動作を支援する一群の回路およびロジックとして定義されうる。一つのチップセットの個々の部材は、単一のチップ、一対のチップ上にまとめられてよく、あるいは多数のプロセッサを含む多数のチップ間で分散されてもよい。図２の実施形態においてチップセット２４０は、プロセッサ２０２、２１２、２２２のＩ／Ｏ動作を支援する回路およびロジックを含みうるが、ここで各プロセッサはメモリ動作を支援する回路およびロジックを含む。その代わりに、チップセット２４０はさらに、プロセッサ２０２、２１２、２２２のメモリ動作を支援する回路およびロジックを含みうる。チップセット２４０の機能は、代替実施形態においては、一以上の物理デバイス間に割り当てられうる。
【００１９】
チップセット２４０はさらに、特別なＳＥＮＴＥＲ動作を支援するＰＴＰファブリック２３０上の特別な相互メッセージを支援すべく、自身の相互接続メッセージロジック２４２を含みうる。これら特別な相互接続メッセージには、鍵レジスタ２４４の内容をプロセッサ２０２、２１２、あるいは２２２に対して転送することで、プロセッサに対して、特別な「ＱＵＩＥＳＣＥ」インジケータ２４６を設定あるいはクリアして、チップセット２４０に、システム２００をｑｕｉｅｓｅあるいはｄｅ−ｑｕｉｅｓｅさせる、あるいはプロセッサにより特別な「ＱＵＩＥＳＣＥＤ」フラグ２４８を検査させることを許可することを含みうる。バスメッセージロジック２４２のさらなる特徴は、「ＥＸＩＳＴＳ」レジスタ２７０内のシステム２００のプロセッサの存在あるいは参加をレジスタすることであってよい。
【００２０】
プロセッサ２０２、２１２、２２２は互いに、チップセット２４０に対して、および任意の他の部材あるいはエージェントに対して、ポイントツーポイント（ＰＴＰ）相互接続ファブリック２３０により接続されてよい。プロセッサ２０２、２１２、および２２２、およびチップセット２４０は、ＰＴＰファブリック２３０に接続すべく、および互いに対しておよびシステム２００に存在あるいは参加する任意の他のエージェントに対してメッセージを送受信すべく、それぞれインタフェースユニット２０９、２１９、２２９、および２３９の各々を含んでよい。インタフェースユニット２０９、２１９、２２９、および２３９の各々は、任意の数の他の部材と通信する任意の数の一方向性および／または双方向性ポートを含みうる。通信は、任意のあるいは全てのリンク層、プロトコル層、ルーティング層、搬送層、物理層、および任意の他の同様の層によりフレームされたメッセージおよび／またはデータを表す信号を含むパケットがエージェント間で（ポイントツーポイント）送信される層型のポイントツーポイント相互接続アーキテクチャによりＰＴＰファブリック２３０を介して行われる。故に、インタフェースユニット２０９、２１９、２２９、および２３９の各々は、各層に対応する信号を生成する回路あるいはロジックを含みうる。パケットはさらに、検知あるいはエラー訂正用の、重複するあるいは他の情報を含みうる。
【００２１】
トークン２７６は、一以上のプラットフォーム構成レジスタ（ＰＣＲ）２７８、２７９を含み、チップセット２４０に接続されてよい。一実施形態において は、トークン２７６は、特別な安全フィーチャを含みえ、一実施形態では、ＴＣＰＡ（www.trustedpc.comから入手可能）発行の２００１年 １２月１日付けのバージョン１．１ａ、Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｐｌａｔｆｏｒｍ  Ａｌｌｉａｎｃｅ（ＴＣＰＡ）Ｍａｉｎ   Ｓｐｅｃｉｆｉｃａｔｉｏｎに開示されている、トラステッドなプラットフォームモジュール（ＴＰＭ）２８１を含みうる。
【００２２】
システム環境２００で識別される二つのソフトウェア部材は、Ｓｅｃｕｒｅ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ（ＳＶＭＭ）２８２モジュールおよびＳｅｃｕｒｅ  Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ａｕｔｈｅｎｔｉｃａｔｅｄ  Ｃｏｄｅ（ＳＩＮＩＴ−ＡＣ）２８０モジュールである。ＳＶＭＭ２８２モジュールは、システムディスクあるいは他の大容量記憶装置に記憶でき、必要に応じて他の場所に移動あるいはコピーされうる。一実施形態においては、セキュアな起動プロセス開始の前に、ＳＶＭＭ２８２を、システム２００内の一以上のメモリページに移動あるいはコピーしてよい。セキュアなエンタープロセスに続いて、ＳＶＭＭ２８２がシステム内で最も優先度の高いコードとして動作し得る仮想マシン環境が作成され得、作成された仮想マシン内のオペレーティングシステムあるいはアプリケーションによりあるシステム資源への直接アクセスが許可あるいは否認するのに利用され得る。
【００２３】
セキュアなエンタープロセスが必要とするアクションの幾らかは、簡単なハードウェア実装の範囲を超える場合があり、代わりに実行が暗に信用されうるソフトウェアモジュールを利用することができるという利点がある。一実施形態においては、これらアクションはＡｕｔｈｅｎｔｉｃａｔｅｄ（ＳＩＮＩＴ）Ｃｏｄｅとして実行されうる。一例示的アクションは、セキュアな環境の正しいインタスタンス化を支援する構成を確保すべく、システム構成の重要な部分を表す様々な制御を必要としうる。第２の例示的アクションは、ＳＶＭＭ２８２モジュールの識別情報を算出およびレジスタして、それへのシステム制御を転送することを含む。ここで、「レジスタ」とは、ＳＶＭＭ２８２の信頼尺度を、例えばＰＣＲ２７８あるいはＰＣＲ２７９などのレジスタあるいは他の記憶位置に配置することを意味する。この第２のアクションがとられると、ＳＶＭＭ２８２の信頼性が潜在的なシステムユーザにより調査されうる。
【００２４】
ＳＩＮＩＴコードは、プロセッサあるいはチップセットの製造業者により作成されうる。この理由から、ＳＩＮＩＴコードはチップセット２４０のセキュアな起動の支援を信頼される。ＳＩＮＩＴコードを分配すべく、一実施形態においては、公知の暗号ハッシュが全ＳＩＮＩＴコードからなっており、これにより「ダイジェスト」として知られている値を生成する。一実施形態においては、ダイジェストは１６０ビット値を生成する。ダイジェストは、その後、秘密鍵により暗号化され、一実施形態においてはプロセッサの製造業者により保持され、デジタル署名を形成しうる。ＳＩＮＩＴコードは対応するデジタル署名により束ねられると、この組み合わせがＳＩＮＩＴ認証コード（ＳＩＮＩＴ−ＡＣ）２８０として言及されうる。以下に記載するようにＳＩＮＩＴ−ＡＣ２８０のコピーは後に有効性を確認される（validate）。
【００２５】
ＳＩＮＩＴ−ＡＣ２８０は、システムディスクあるいは他の大容量記憶装置あるいは固定媒体に記憶され得、必要に応じて他の位置に移動あるいはコピーされ得る。一実施形態においては、セキュアな起動プロセスの開始前に、ＳＩＮＩＴ−ＡＣ２８０をシステム２００の一以上のメモリページに移動あるいはコピーして、ＳＩＮＩＴ−ＡＣのメモリレジデントコピーを形成しうる。
【００２６】
オペレーティングシステムなどのシステム２００上で動く任意の優先ソフトウェアは、論理プロセッサ上のセキュアな起動プロセスを開始してよく、これは開始論理プロセッサ（initiating logical processor）（ＩＬＰ）と称される。本例のプロセッサ２０２はＩＬＰであるが、ＰＴＰファブリック２３０上の任意のプロセッサもＩＬＰである場合がある。ＳＩＮＩＴ−ＡＣ２８０のメモリレジデントコピーもＳＶＭＭ２８２のメモリレジデントコピーもいずれも、今回信頼性があるとして考慮され得ない。
【００２７】
ＩＬＰ（プロセッサ２０２）はセキュアな起動プロセスを開始すべく特別な命令を実行する。この特別な命令はセキュアなエンター（ＳＥＮＴＥＲ）命令として証され得、ＳＥＮＴＥＲロジック２０４により支援され得る。ＳＥＮＴＥＲ命令は第１にシステム２００の全ての論理プロセッサがチップセット２４０（例えばＥＸＩＳＴＳレジスタ２７０）に登録されているかを検証する。各プロセッサおよび、ＰＴＰファブリック２３０に接続される他のエージェントは、レジスタ２０７、２１７、および２２７などのレジスタあるいは他の記憶位置を含み、自身の含む論理プロセッサの数を示す。これらレジスタは読み出されて、システムトポロジーが正確にチップセット２４０で表されているかを検証する。
【００２８】
この検証の後、ＳＥＮＴＥＲ命令はＱＵＩＥＳＣＥインジケータ２４６に書き込み、チップセット２４０に対してシステム２００を休止させる（quiesce）。チップセット２４０はＰＴＰファブリック２３０上でハンドシェイク列を開始して、一つのプロセッサ（休止状態マスター）を除く、ＰＴＰファブリック２３０上の全てのプロセッサおよび他のエージェントに休止状態に入らせる。本実施形態においては、プロセッサ２０２がＩＬＰであるとともに休止状態マスターである。休止列は「ＳＴＯＰ＿ＲＥＱ」信号をマスターでないプロセッサに対して各々送信して、各マスターでないプロセッサのイベント処理を終了させ、それらのバッファをドレインさせ、「ＳＴＯＰ＿ＡＣＫ」信号をチップセット２４０に戻してそれらが休止状態に入ったことを承認させる。休止状態は、命令を何ら実行せず、ＰＴＰファブリック２３０上に処理を何ら生成しない状態のことである。チップセット２４０がチップセット２４０に登録されている全ての論理プロセッサを代表してＳＴＯＰ＿ＡＣＫ信号を各エージェントから受信した後、ＱＵＩＥＳＣＥＤフラグ２４８が設定されてよい。マスターのプロセッサは、セキュアな初期化認証モジュールを実行する前に休止状態に入ったことを検証すべくチップセット内のインジケータレジスタを読み出してよい。また、セキュアな仮想マシン監視モジュールを実行する前に休止状態に入ったことを検証すべくチップセット内のインジケータレジスタを読み出してよい。
【００２９】
システムが休止した後、ＳＥＮＴＥＲ命令が安全モジュールを安全に実行しうることを以下に記す。この目的上、ＰＴＰファブリック２３０は依然機能的であり、ＴＰＭ２８１は依然休止状態マスターに対して入手できる。安全モジュールの実行が完了すると、休止状態マスターはＱＵＩＥＳＣＥインジケータ２４６をクリアして、チップセット２４０に対してシステム２００を休止状態から抜けさせる。
【００３０】
安全モジュールを実行すべく、ＩＬＰ（プロセッサ２０２）は、ＳＩＮＩＴ‐ＡＣ２８０に含まれるＳＩＮＩＴコードを認証およびその後実行する目的から第１にＳＩＮＩＴ−ＡＣ２８０および鍵２８４の写し両方をセキュアなメモリ２０８に移動しうる。一実施形態においては、このセキュアなメモリ２０８は、ＩＬＰ（プロセッサ２０２）の内部キャッシュであってよく、特別なモードで動作していてよい。鍵２８４はＳＩＮＩＴ−ＡＣ２８０モジュールに含まれるデジタル署名を暗号化するのに利用される秘密鍵に対応する公開鍵を表しており、デジタル署名を検証してＳＩＮＩＴコードを認証するのに利用される。一実施形態においては、鍵２８４は、場合としてはＳＥＮＴＥＲロジック２０４の一部としてプロセッサに予め記憶されている場合もある。別の実施形態においては、鍵２８４はチップセット２４０の読み出し専用鍵レジスタ２４４に記憶され、ＩＬＰより読み出されてよい。また別の実施形態においては、プロセッサあるいはチップセットの鍵レジスタ２４４は、実際に鍵２８４の暗号化ダイジェストを保持していてよく、ここで鍵２８４そのものがＳＩＮＩＴ−ＡＣ２８０モジュールに含まれている。この最後の実施形態においては、ＩＬＰは鍵レジスタ２４４からダイジェストを読み出し、ＳＩＮＩＴ−ＡＣ２８０に埋め込まれた鍵２８４の等価暗号化ハッシュ（equivalent cryptographic hash）を算出して、二つのダイジェストを比較し、供給された鍵２８４が実際にトラステッドか確かめる。
【００３１】
ＳＩＮＩＴ−ＡＣのコピーおよび公開鍵のコピーはセキュアなメモリ２０８内に存在してよい。ＩＬＰは公開鍵のコピーを利用してＳＩＮＩＴ−ＡＣのコピーに含まれるデジタル署名を復号することでＳＩＮＩＴ−ＡＣの写しが有効性を確認される。この復号により、暗号化ハッシュダイジェストの原本を生成する。新たに算出されたダイジェストがこの原ダイジェストに整合している場合、ＳＩＮＩＴ−ＡＣのコピーおよびそれに含まれるＳＩＮＩＴコードはトラステッドであると考えられる。
【００３２】
ＩＬＰは、以下に概略を示すように、セキュアなトークン２７６内のプラットフォーム構成レジスタ２７８（又は２７９）に対してＳＩＮＩＴ−ＡＣモジュールの暗号化ダイ ジェスト値を書き込むことで、ＳＩＮＩＴ−ＡＣモジュールの唯一の識別情報を登録する。ＳＥＮＴＥＲ命令のＩＬＰ実行は、ＩＬＰのセキュアなメモリ２０８ 内に保持されるＳＩＮＩＴコードのトラステッドなコピーに実行制御を転送することで終了しうる。トラステッドなＳＩＮＩＴコードはシステムテストおよび構 成アクションを実行して、上述のレジスタの定義に則りＳＶＭＭのメモリレジデントコピーを登録してよい。
【００３３】
ＳＶＭＭのメモリレジデントコピーの登録は、幾らかの方法で行うことができる。一実施形態においては、ＩＬＰ上で動くＳＥＮＴＥＲ命令は、安全トークン２７６内のＰＣＲ２７８にＳＩＮＩＴ−ＡＣの算出されたダイジェストを書き込む。次に、トラステッドなＳＩＮＩＴコードは、メモリレジデントＳＶＭＭの算出されたダイジェストを、同じＰＣＲ２７８あるいは安全トークン２７６内の別のＰＣＲ２７９に書き込むことができる。ＳＶＭＭダイジェストが同じＰＣＲ２７８に書き込まれる場合、安全トークン２７６は、新たな値（ＳＶＭＭダイジェスト）で原コンテンツ（ＳＩＮＩＴダイジェスト）をハッシュして、結果をＰＣＲ２７８に書き込む。第１（初期化）のＰＣＲ２７８への書き込みがＳＥＮＴＥＲ命令に限定される実施形態においては、結果であるダイジェストはシステムの信頼ルート（a root of trust）として利用されうる。
【００３４】
トラステッドなＳＩＮＩＴコードはその実行を完了して、ＳＶＭＭの識別情報をＰＣＲに登録すると、ＳＩＮＩＴコードはＩＬＰ実行制御をＳＶＭＭに転送しうる。典型的な実施形態においては、ＩＬＰにより実行される第１のＳＶＭＭ命令は、ＳＶＭＭの自己初期化ルーチンを表しうる。システム２００は、以下の図３の説明で概略を示すように、目下実行しているＳＶＭＭのコピーの監督下で、トラステッドなモードで動作することができる。ここからは、システム全体は、以下の図３の説明で概略を示すように、トラステッドなモードで動作することができる。
【００３５】
図３を参照すると、本発明の一実施形態による例示的なトラステッドなあるいはセキュアなソフトウェア環境が示されている。図３の実施形態においては、トラステッドなソフトウェアおよびトラステッドでないソフトウェアは、同時にロードされて同時に単一のコンピュータシステム上で実行されうる。ＳＶＭＭ３５０は、一以上のトラステッドでないオペレーティングシステム３４０およびトラステッドでないアプリケーション３１０〜３３０からハードウェア資源３８０への直接アクセスを選択的に許可あるいは禁止する。この文脈において、「トラステッドでない」とは、必ずしもオペレーティングシステムあるいはアプリケーションが故意に不正を行っていることを意味するとは限らず、相互作用するコードのサイズおよび種類により、ソフトウェアが所望の通りに行動すること、およびこの実行に干渉するウィルスあるいは他の異質のコードがないこと、を確実にアサートすることが実際的でないことを意味する。典型的な実施形態においては、トラステッドでないコードは、今日のパーソナルコンピュータで見られる通常のオペレーティングシステムおよびアプリケーションからなる場合がある。
【００３６】
ＳＶＭＭ３５０はさらに、一以上のトラステッドなあるいはセキュアなカーネル３６０から、および一以上のトラステッドなアプリケーション３７０から、ハードウェア資源３８０への直接アクセスを選択的に許可あるいは禁止する。このようなトラステッドな、あるいはセキュアなカーネル３６０およびトラステッドなアプリケーション３７０は、トラステッドな分析をそれに対して行う能力を支援すべく寸法および機能が限られうる。トラステッドなアプリケーション３７０は、セキュアな環境下で実行可能な任意のソフトウェアコード、プログラム、ルーチン、あるいは一式のルーチンでありうる。故に、トラステッドなアプリケーション３７０は、様々なアプリケーション、あるいはコード列でありえ、あるいはＪａｖａアプレットのような比較的小さいアプリケーションでありえる。
【００３７】
システム資源保護あるいは優先度を変更しうるオペレーティングシステム３４０あるいはカーネル３６０により通常実行される命令あるいは動作は、ＳＶＭＭ３５０によりトラップ、選択的に許可、部分的に許可、あるいは拒絶されうる。一例として、典型的な実施形態においては、このかわりに、通常オペレーティングシステム３４０あるいはカーネル３６０により実行されるプロセッサのページテーブルの変更命令が、ＳＶＭＭ３５０によりトラップされえ、これにより、要求が仮想マシンのドメイン外でページ優先度を変更しようと試みなかったことを確かめうる。
【００３８】
図４を参照すると、本発明の一実施形態における方法４００におけるソフトウェアおよび他のプロセスブロックのフローチャートが示されている。
【００３９】
方法４００のブロック４１０において論理プロセッサは、後続のＳＥＮＴＥＲ命令によりアクセス可能なＳＩＮＩＴ−ＡＣおよびＳＶＭＭモジュールのコピーを作成する。本例においては、ＩＬＰはＳＩＮＩＴ−ＡＣおよびＳＶＭＭコードを大容量記憶装置から物理メモリにロードする。代替的実施形態においては、ＩＬＰだけでなくて任意の論理プロセッサがこれを行ってよい。プロセッサは、ブロック４１２で示されるように、ＳＥＮＴＥＲ命令を実行することでＩＬＰとなる。
【００４０】
ブロック４２０においては、ＳＥＮＴＥＲ命令は、システム２００内の全ての論理プロセッサがチップセット２４０に（例えばＥＸＩＳＴＳレジスタ２７０に）登録されているか検証する。チップセットは、ポイントツーポイントファブリックに連結されるプロセッサを含むエージェントのリストを維持する。ブロック４２２において、ＳＥＮＴＥＲ命令は、ＱＵＩＥＳＣＥインジケータ２４６に書き込んで、チップセット２４０にシステム２００を休止させる。ブロック４２４において、チップセット２４０は、「ＳＴＯＰ＿ＲＥＱ」信号を各マスターでないプロセッサに送り、各マスターでないプロセッサにそれらの処理を終了させ、それらのバッファをドレインさせ、「ＳＴＯＰ＿ＡＣＫ」信号をチップセット２４０に戻してそれらが休止状態に入ったことを通知する。ブロック４２６において、ＱＵＩＥＳＣＥＤフラグ２４８を設定して、チップセット２４０がＳＴＯＰ＿ＡＣＫ信号を、チップセット２４０に登録されている全ての論理プロセッサを代表して、全てのエージェントから受信したことを示す。
【００４１】
ブロック４３０において、ＩＬＰはチップセットの公開鍵およびＳＩＮＩＴ−ＡＣのメモリレジデントコピーを、安全に実行すべく自身のセキュアなメモリに移動する。ブロック４３２において、ＩＬＰは鍵を使ってＳＩＮＩＴ−ＡＣのセキュアなメモリレジデントコピーの有効性を確認して実行する。ＳＩＮＩＴ−ＡＣの実行により、システム構成およびＳＶＭＭコピーのテストを行ってよく、その後ＳＶＭＭの識別情報を登録して、最後にブロック４３４にてＳＶＭＭの実行を開始する。ブロック４３６において、休止状態のマスターはＷＵＩＥＳＣＥインジケータ２４６をクリアして、ブロック４３８でチップセット２４０に対してシステム２００を休止状態から復帰させる。
【００４２】
以下に本発明の実施形態の一例を示す。
［実施形態１］
システムであって、
セキュアなエンター命令を実行する第１のプロセッサと、
前記セキュアなエンター命令の実行中に、前記システムを休止状態に入らせるチップセットと、を含むシステム。
［実施形態２］
前記第１のプロセッサを前記チップセットに連結するポイントツーポイントファブリックをさらに含む、実施形態１に記載のシステム。
［実施形態３］
前記ポイントツーポイントファブリックにより前記チップセットに連結される第２のプロセッサをさらに含み、
前記チップセットは、前記セキュアなエンター命令の実行中に、さらに前記第２のプロセッサを前記休止状態に入らせる、実施形態２に記載のシステム。
［実施形態４］
前記チップセットは、さらに前記システムを、前記第１のプロセッサおよび前記チップセットだけが前記ポイントツーポイントファブリックを介して通信する前記休止状態に入らせる、実施形態２に記載のシステム。
［実施形態５］
トラステッドなプラットフォームモジュールをさらに含み、
前記トラステッドなプラットフォームモジュールは前記休止状態中に前記第１のプロセッサにアクセス可能である、実施形態１に記載のシステム。
［実施形態６］
前記第１のプロセッサは、セキュアな初期化認証コードモジュールをさらに実行する、実施形態１に記載のシステム。
［実施形態７］
前記第１のプロセッサは、セキュアな仮想マシン監視モジュールをさらに実行する、実施形態１に記載のシステム。
［実施形態８］
前記チップセットは、前記チップセットが前記システムを前記休止状態に入らせるべく前記第１のプロセッサにアクセス可能なインジケータを含む、実施形態１に記載のシステム。
［実施形態９］
前記チップセットは、
前記チップセットが前記システムを前記休止状態に入らせるべく前記第１のプロセッサにアクセス可能なインジケータと、
前記システムの各プロセッサの識別情報を示す第１の記憶位置と、を含み、
前記第２のプロセッサは、前記第２のプロセッサが前記ポイントツーポイントファブリックに接続されていることを示す第２の記憶位置を含み、
前記第１のプロセッサは、前記チップセットに前記システムを前記休止状態に入らせるべく前記インジケータにアクセスする前に前記第２のプロセッサの識別情報（identity）が前記第１の記憶位置に示されていることを検証するロジックを含む、実施形態３に記載のシステム。
［実施形態１０］
ポイントツーポイントファブリックを介してチップセットに連結される第１のプロセッサ上で、セキュアなエンター命令の実行を開始することと、
セキュアなエンター命令の実行中に、前記チップセットに、前記ポイントツーポイントファブリックに連結される第２のプロセッサを休止状態に入らせることと、を含む方法。
［実施形態１１］
前記チップセットが、前記ポイントツーポイントファブリックに連結されるエージェントのリストを維持することをさらに含む、実施形態１０に記載の方法。
［実施形態１２］
前記第２のプロセッサを介して前記ポイントツーポイントファブリックに連結されるエージェントの数を識別する、前記第２のプロセッサ内の記憶位置を読み出すことをさらに含む、実施形態１１に記載の方法。
［実施形態１３］
前記休止状態中に前記第１のプロセッサが、トラステッドなプラットフォームモジュールにアクセスすることをさらに含む、実施形態１０に記載の方法。
［実施形態１４］
セキュアな初期化認証モジュールを実行することをさらに含む、実施形態１３に記載の方法。
［実施形態１５］
前記セキュアな初期化認証モジュールを実行する前に前記休止状態に入ったことを検証すべく前記チップセット内のインジケータを読み出すことをさらに含む、実施形態１４に記載の方法。
［実施形態１６］
セキュアな仮想マシン監視モジュールを実行することをさらに含む、実施形態１３に記載の方法。
［実施形態１７］
前記セキュアな仮想マシン監視モジュールを実行する前に前記休止状態に入ったことを検証すべく前記チップセット内のインジケータを読み出すことをさらに含む、実施形態１６に記載の方法。
［実施形態１８］
前記休止状態に入る前に、前記第２のプロセッサに、自身のイベント処理を終了させ、自身のバッファをドレインさせることをさらに含む、実施形態１０に記載の方法。
［実施形態１９］
前記休止状態に入ったことを通知すべく前記チップセットに信号を送る前記第２のプロセッサをさらに含む、実施形態１８に記載の方法。
［実施形態２０］
セキュアな動作の初期化を呼び出すべく第１の命令を実行するセキュアなエンターロジックと、
チップセットに対して、ポイントツーポイントファブリックを介して前記チップセットに連結されるエージェントを休止状態に入らせる相互接続メッセージロジック（interconnection messaging logic）と、を含むプロセッサ。
前述の記載において、本発明を特定の例示的実施形態により記載してきた。しかし、添付請求項に示す本発明の幅広い精神および範囲から逸脱しない範囲で、様々な変形例および変更例を考えられることが明らかである。故に、明細書および図面は、限定的な意味ではなくて例示的な意味で捉えられるべきである。
【図１】
0006012166.tif 000002
【図２】
0006012166.tif 000003
【図３】
0006012166.tif 000004
【図４】
0006012166.tif 000005