説明

安全な環境を初期化する命令を実行するシステムおよび方法

【課題】安全な環境を初期化する命令を実行するシステムおよび方法を提供する。
【解決手段】マイクロプロセッサシステムにおいてセキュアオペレーションを起動する方法と装置が記載されている。一実施形態において、一の起動する論理プロセッサは、他の論理プロセッサの実行を停止し、メモリに初期化およびセキュアバーチャルマシンモニターソフトウェアをロードすることによりプロセスを起動する。起動するプロセッサは、認証と実行のために初期化ソフトウェアをセキュアメモリにロードする。初期化ソフトウェアは、セキュアシステムオペレーションの前に、そのセキュアバーチャルマシンモニターソフトウェアを認証および登録する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイクロプロセッサシステムに関し、特に信頼できる(トラステッド)安全な(セキュア)環境において動作するマイクロプロセッサシステムに関する。
【背景技術】
【0002】
ローカルまたはリモートマイクロコンピュータ上で実行される金融上のおよび個人的取引の数が増加するにつれ、「信頼できる」または「安全な」マイクロプロセッサ環境の確立が促進されつつある。これらの環境が解決しようとする問題は、プライバシーの喪失や、データが汚染されたり乱用されたりする問題である。ユーザは自分のプライベートなデータを公にされたくはない。また、自分のデータが改変されたり不適切な取引で使用されることも望まない。これには、例えば、診療記録の意図しない公開、オンライン銀行等のファンドの電子的窃盗などである。同様に、コンテントプロバイダは、デジタルコンテント(例えば、音楽、オーディオ、ビデオ、その他のタイプの一般的データ)を権限なく複製されることを防止しようとしている。
【0003】
既存の信頼できるシステムは、完全に閉じた信頼できるソフトウェアのセットを用いているかもしれない。この方法の実装は比較的簡単であるが、一般的商業的に入手可能なオペレーティングシステムやアプリケーションソフトウェアを同時に使用できないという短所がある。この短所により、上記の信頼できるシステムが受け入れられないことがある。
【0004】
本発明は、限定としてではなく実施例として添付した図面に例示されている。その添付した図面においては、同様の構成要素には類似した参照数字が付されている。
【発明を実施するための最良の形態】
【0005】
マイクロプロセッサシステムにおいて信頼できる、または安全な環境を初期化するための技術を以下に説明する。以下の説明において、本発明を完全に理解してもらうため、論理実装、ソフトウェアモジュールアロケーション、暗号化方法、バスシグナリング方法、動作の詳細等、多数の具体的詳細を説明する。しかし、本発明はこれらの具体的な詳細なしに実施してもよいことが、当業者には分かるであろう。他の例において、本発明を不明瞭としないように、制御構造、ゲートレベルの回路、ソフトウェア命令シーケンスの全体は詳細には示さなかった。当業者であれば、過剰な説明なしに、ここに含めた説明で、適切な機能を実施することができるであろう。本発明はマイクロプロセッサシステムの形式で開示されている。しかし、本発明は、デジタル信号プロセッサ、ミニコンピュータ、メインフレームコンピュータ等、他の形式のプロセッサで実施してもよい。
【0006】
図1を参照して、マイクロプロセッサシステムで実行されるソフトウェア環境の実施例の図が示されている。図1に示したソフトウェアは信頼されていない。高い権限レベルで動作しているとき、オペレーティングシステム150はサイズが大きく、頻繁に更新しなければならないので、ちょうどよいときに信頼分析を実行することは非常に困難である。多くのオペレーティングシステムは最上位の権限レベルである権限リング0にある。アプリケーション152、154、および156は、より下の権限を有し、一般的には権限リング3にある。異なる権限リングの存在と、オペレーティングシステム150とアプリケーション152、154、156が異なる権限リングに分かれていることにより、オペレーティングシステム150により提供された便宜を信頼する決定をすることに基づき、図1のソフトウェアが信頼できるモードで動作することが可能であると見えるかもしれない。しかし、実際には、そのように信頼できるとの決定をすることはしばしば現実的ではない。この問題に影響する要因には、オペレーティングシステム150のサイズ(コードのライン数)、オペレーティングシステム150が(新しいコードモジュールやパッチにより)何度も更新されるという事実、およびオペレーティングシステムがそのデベロッパ以外の第三者により提供されるデバイスドライバのようなコードモジュールも含むという事実が含まれる。オペレーティングシステム150は、マイクロソフト(登録商標)ウィンドウズ(登録商標)、リナックス、ソラリス(登録商標)のような一般的なものであってもよいし、既知のあるいは入手可能な他のいかなるオペレーティングシステムであってもよい。どのタイプまたは名称のアプリケーションまたはオペレーティングシステムであるかは、重要ではない。
【0007】
図2を参照して、本発明の一実施形態による、トラステッド(信頼できる)、またはセキュア(安全)なソフトウェアモジュールとシステム環境200の実施例の図が示されている。図2に示した実施形態において、プロセッサ202、プロセッサ212、プロセッサ222、および任意的な他のプロセッサ(図示せず)は、別々のハードウェア実体として示されている。他の実施形態において、様々な構成要素と機能ユニットの境界が異なってもよいように、プロセッサの数が異なってもよい。一部の実施形態において、プロセッサは、1以上のより物理的なプロセッサ上で実行されている別々のハードウェア実行スレッドあるいは「論理プロセッサ」により置き換えられてもよい。
【0008】
プロセッサ202、212、222は、安全な、または信頼できる動作をサポートする特殊回路または論理要素を含んでもよい。例えば、プロセッサ202は、信頼できる動作を起動する特殊なセキュアエンター(SENTER)命令の実行をサポートするSENTERロジック204を含んでいてもよい。プロセッサ202は、特殊なSENTER動作をサポートするシステムバス230上の特殊なバスメッセージをサポートするバスメッセージロジック206を含んでもよい。別の実施形態において、チップセット240のメモリ制御機能はプロセッサ内の回路に割り当てられてもよく、複数プロセッサの場合、単一のダイに含まれてもよい。これらの実施形態において、特殊なバスメッセージもプロセッサ内のバスに送られてもよい。特殊なバスメッセージの使用により、いくつかの理由により、システムの安全性と信頼性を高めることができる。プロセッサ202、212、222またはチップセット240等の回路要素は、本開示の実施形態の適当な論理要素を含んでいるとき、このようなメッセージを発行のみまたは応答のみすることができる。それゆえ、その特殊なバスメッセージを成功裏に交換することにより、適当なシステム構成を確実にすることができる。特殊なバスメッセージによりプラットフォームコンフィギュレーションレジスタ278をリセットする等の、通常は禁止されるべき動作も許可されてもよい。特殊なバスメッセージが特殊なセキュリティー命令に応じてのみ発行されることを可能とすることにより、バストランザクションでスパイする潜在的に敵対的な信頼できないコードの能力が削減される。
【0009】
また、プロセッサ202は、セキュアーな初期化動作をサポートするセキュアーメモリ208を含んでもよい。一実施形態において、セキュアーメモリ208は、特殊モードで動作しているであろう、プロセッサ202の内部キャッシュであってもよい。別の実施形態において、セキュアーメモリ208は特殊なメモリであってもよい。プロセッサ212やプロセッサ222等の他のプロセッサも、SENTERロジック214、224、バスメッセージロジック216、226、セキュアーメモリ218、228を含んでもよい。
【0010】
「チップセット」は、接続されたプロセッサのためにメモリや入出力動作をサポートする一群の回路またはロジックとして定義されてもよい。チップセットの個々の要素は、単一のチップにまとめられてもよいし、一組のチップにまとめられてもよいし、プロセッサを含む複数のチップに分散していてもよい。図2の実施形態において、チップセット240は、プロセッサ202、212、222をサポートするためのメモリおよび入出力動作をサポートする回路およびロジックを含んでもよい。一実施形態において、チップセット240は、多数のメモリページ250−262、非プロセッサデバイスがメモリページ250−262にアクセスしてもよいかどうかを示す制御情報を含むデバイスアクセスページテーブル248とインターフェイスしていてもよい。チップセット240は、メモリページ250−262の選択された部分に入出力デバイスからのダイレクトメモリアクセス(DMA)を許可するまたは拒否するデバイスアクセスロジック247を含んでいてもよい。一部の実施形態において、デバイスアクセスロジック247は、上記のアクセスを許可または拒否するのに要するすべての関連する情報を含んでもよい。他の実施形態において、デバイスアクセスロジック247は、デバイスアクセスページテーブル248内に保持された上記の情報にアクセスしてもよい。メモリページの実際の数は重要ではなく、システム要求に応じて変化する。他の実施形態において、メモリアクセス機能はチップセット240の外部にあってもよい。別の実施形態において、チップセット240の機能は1以上の物理的デバイス間にさらに割り当てられていてもよい。
【0011】
チップセット240は、特殊なSENTER動作をサポートするシステムバス230上の特殊なバスメッセージをサポートするために、自分のバスメッセージロジック242を追加的に含んでいてもよい。これらの特殊なバスメッセージは、キーレジスタ244の内容をプロセッサ202、212、または222に転送すること、またはプロセッサ202、212、または222により特殊なALL-JOINEDフラグ274が調べられることを許可することを含んでもよい。バスメッセージロジック242の付加的機能は、プロセッサによるバスアクティビティをEXISTSレジスタ272に登録し、プロセッサによる特殊なバスメッセージアクティビティをJOINSレジスタ272に記憶することである。EXISTSレジスタ272とJOINSレジスタ272の内容が等しいとき、特殊なALL_JOINEDフラグ274が設定され、システム中のすべてのプロセッサがセキュアーエンタープロセスに参加していることを示す。
【0012】
チップセット240は、ペリフェラルコンポーネントインターコネクト(PCI)、アクセラレーテッドグラフィクスポート(AGP)、ユニバーサルシリアルバス(USB)、ローピンカウント(LPC)バス、またはその他の種類の入出力バス(図示せず)等の入出力バス上の標準的入出力動作をサポートする。インターフェイス290は、チップセット240を1以上のプラットフォームコンフィグレーションレジスタ(PCR)278、279を含むトークン276と接続するために用いられる。一実施形態において、インターフェイス290は、セキュリティ拡張を追加して変更されたLPCバス(ローピンカウント(LPC)インターフェイス仕様書、インテル コーポレイション、Rev.1.0、1997年12月29日)であってもよい。上記セキュリティ拡張の一実施例は、トークン276内のプラットフォームコンフィギュレーションレジスタ(PCR)278をターゲットとする以前に予約されたメッセージヘッダとアドレス情報を用いる、ローカルの確認メッセージである。一実施形態において、トークン276は、特殊なセキュリティ機能を有してもよく、一実施形態において、トラステッドコンピューティングプラットフォームアライアンス(TCPA)により発行された、2001年12月1日の、TCPA主仕様書バージョン1.1a(本願の出願時点においてwww.trustedpc.comから入手可能)に開示されたトラステッドプラットフォームモジュール(TPM)281を含んでもよい。
【0013】
システム環境200で識別された2つのソフトウェアコンポーネントが、セキュアバーチャルマシンモニター(SVMM)282モジュールとセキュア初期化認証コード(SINIT-AC)280モジュールである。SVMM282モジュールは、システムディスクまたは他の大容量記憶に記憶されてもよく、必要に応じて移動またはコピーされてもよい。一実施形態において、セキュア起動プロセスの開始の前に、SVMM282は1以上のメモリページ250−262に移動またはコピーされてもよい。セキュアエンタープロセスの後、SVMM282がシステム内の最上位の権限を与えられたコードとして動作するバーチャルマシン環境が生成されてもよく、生成されたバーチャルマシン内でオペレーティングシステムまたはアプリケーションによりシステムリソースへの直接アクセスを許可または拒否するために用いられてもよい。
【0014】
セキュアエンタープロセスにより要求される動作の一部は単純なハードウェア実装の範囲を超えており、実行が黙示的に信頼されたソフトウェアモジュールを有利に用いてもよい。一実施形態において、これらの動作はセキュア初期化(SINIT)コードにより実行されてもよい。3つの動作がここでは識別されているが、これらの動作は限定的に捉えてはならない。1つの動作は、システム構成の重要な部分を表すさまざまなコントロールが、その構成がセキュアード環境の正しい裏付けをサポートすることを確からしめるためにテストされることを要求する。一実施形態において、1つの要求されるテストは、2以上の異なるシステムバスアドレスがメモリページ250−262内の同じ位置をアドレスすることを、チップセット240により提供されるメモリコントローラの構成が許さないことである。第2の動作は、SVMM282のメモリ常駐コピーにより使用されるそれらのメモリページを非プロセッサデバイスによる干渉から保護するために、デバイスアクセスページテーブル248とデバイスアクセスロジック247を構成することであろう。第3の動作は、SVMM282モジュールのアイデンティティを計算および登録し、それにシステムコントロールを転送することである。ここで、「登録」とは、SVMM282のトラスト計測をレジスタ、例えばPCR278またはPCR279に置くことを意味する。この最後の動作が行われると、SVMM282の信頼性が潜在的システムユーザにより検査されてもよい。
【0015】
SINITコードは、プロセッサまたはチップセットの製造者により作られてもよい。この理由により、SINITコードは、チップセット240のセキュア起動を手伝うため信頼されてもよい。SINITコードを配布するために、一実施形態において、SINITコード全体から周知の暗号ハッシュを作り、「ダイジェスト」として知られた値を生成してもよい。一実施形態によると、160ビットの値をもつダイジェストが作られる。ダイジェストは、ダイジェストシグネチャを形成するため秘密キーにより暗号化されてもよい。一実施形態によると、その秘密キーはプロセッサの製造者が保持していてもよい。SINITコードが対応するデジタル署名とバンドルされているとき、その組み合わせはSINIT認証済みコード(SINIT-AC)280と呼ばれることもある。SINIT-AC280のコピーは、下で説明するように、後で確認されてもよい。
【0016】
SINIT-AC280は、システムディスク、その他の大規模記憶装置、または固定メディアに記憶され、必要に応じて他の場所へ移動またはコピーされてもよい。一実施形態において、セキュア起動プロセスを開始する前に、SINIT-ACは、メモリ常駐コピーを形成するため、メモリページ250−262に移動またはコピーされる。
【0017】
いずれの論理プロセッサがセキュア起動プロセスを起動してもよく、その後は起動する論理プロセッサ(ILP)と呼ばれてもよい。システムバス230上のプロセッサのいずれもがILPになることはできるが、本実施例においてはプロセッサ202がILPになるものとする。他の理由もあるが、他のプロセッサまたはDMAデバイスがメモリページ250−262をオーバーライトすることがあるので、この時点では、SINIT-AC280のメモリ常駐コピーもSVMM282のメモリ常駐コピーもいずれも信頼できるとは考えられないかもしれない。
【0018】
その後、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メッセージを送信することに注意すべきである。
【0019】
チップセット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バスメッセージに適当に応答したことを示すALL_JOINEDフラグ246を設定することができる。
【0020】
他の実施形態において、EXISTSレジスタ270とJOINSレジスタ272は、ALL_JOINEDフラグ246の設定の後にセキュリティを支援し続けてもよい。ALL_JOINEDフラグ246の設定後トラステッドまたはセキュアオペレーションが終了するまでの間に、チップセット240はバスサイクルをモニターし、JOINSレジスタ272と比較し続けてもよい。この間に、チップセット240がJOINSレジスタ272では現在識別されていない論理プロセッサからのバストランザクションを見た場合、チップセット240はこの論理プロセッサはともかくも送れて「現れた」ものと推定する。これは暗に、このようなプロセッサはセキュア起動プロセスには参加せず、それゆえアタッカ(セキュリティ脅威)を表しうることを示す。上記の状況において、チップセット240はこのアタッカをセキュアード環境の外にとどめるように適当に応答することができる。一実施形態において、チップセット240は、上記の状況においてシステムリセットを強制することができる。第2の実施形態において、各論理プロセッサがACKバスメッセージの主張に続いて各トランザクションにおいてシステムバスに特殊な予約された信号を主張することにより、「遅れた」プロセッサが同様に検出される。この実施形態において、ALL_JOINEDフラグ246の設定につづいて、チップセット240が特殊な信号の主張を伴わないプロセッサにより起動されたバストランザクションが見られたとき、チップセット240はこの論理プロセッサがとにかく「遅れて」現われ、攻撃者かもしれないと推定する。
【0021】
SENTERバスメッセージを発行した後、ILP(プロセッサ202)は、いつすべてのプロセッサが適当にACKに応答したか、また応答したかどうかを知るために、ALL_JOINEDフラグ246を参照する。フラグ246が設定されていなければ、いくつかの実装が可能である。ILP、チップセット、またはその他のウォッチドッグタイマーがシステムリセットをしてもよい。あるいは、システムがハングしてオペレータのリセットを要求してもよい。いずれの場合にも、システムは機能し続けないかもしれないが、(すべてのプロセッサが参加しない限り、セキュア起動プロセスが完了しないという意味で)セキュア環境の主張は保護される。通常のオペレーションにおいて、すぐ後に、ALL_JOINEDフラグ246が設定され、他のすべての論理プロセッサが待機状態に入ったことをILPが補償される。
【0022】
ALL_JOINEDフラグ246が設定されたとき、SINIT-AC280に含まれたSINITコードを認証し、その後実行する目的で、ILP(プロセッサ202)はSINIT-AC280のコピーとキー284の両方をセキュアメモリ208に移動する。一実施形態において、このセキュアメモリ208は、ILP(プロセッサ202)の内部キャッシュでもよい。そのキャッシュは特殊なモードで動作していてもよい。キー284は、SINIT-AC280モジュールに含まれるデジタルシグネチャを符号化するために用いられる秘密キーに対応する公開キーを表し、デジタルシグネチャを検証し、それによりSINITコードを認証するために使用される。一実施形態において、キー284は、例えばSENTERロジック204の一部として、プロセッサ中にすでに記憶されていてもよい。他の実施形態において、キー284は、ILPにより読み出されるチップセット240の読み出し専用キーレジスタ244に記憶されてもよい。さらに別の実施形態において、プロセッサまたはチップセットのキーレジスタ244のいずれかが、キー284の暗号ダイジェストを実際に保持していてもよい。ここで、キー284自体はSINIT-AC280に含まれる。この最後の実施形態において、ILPはキーレジスタ244からダイジェストを読み出し、SINIT-AC280に組み込まれたキー284の等価な暗号ハッシュを計算し、供給されたキー284が確かに信頼できることを確認するために2つのダイジェストを比較する。
【0023】
SINIT-ACのコピーと公開キーのコピーがセキュアメモリ208内に存在してもよい。ILPは、公開キーのコピーを用いてSINIT-ACのコピーに含まれるデジタルシグネチャを復号することによりSINIT-ACのコピーを検証する。この復号により、暗号ハッシュのダイジェストのオリジナルコピーが作られる。新たに計算されたダイジェストがこのオリジナルダイジェストと一致したとき、SINIT-ACのコピーとそれに含まれたSINITコードは信頼できると考えられる。
【0024】
ILPは、セキュアードオペレーションが起動されることを待機しているRLP(プロセッサ212、222)とチップセット240に知らせる、他の特殊なバスメッセージSENTER連続メッセージを、システムバス230を介して発行する。ILPは、下で概略を説明するように、セキュリティトークン276中のプラットフォーム構成レジスタ272にSINIT-ACモジュールの暗号ダイジェスト値を書きこむことにより、SINIT-ACモジュールが唯一のものであることを登録する。ILPのセキュアメモリ208内に保持されているSINITコードのトラステッドコピーに実行制御を転送することにより、SENTER命令のILPによる実行は終了する。トラステッドSINITコードは、そのシステムテストと構成動作を実行し、上の「レジスタ」の定義により、SVMMのメモリ常駐コピーを登録してもよい。
【0025】
SVMMのメモリ常駐コピーの登録は、いくつかの方法で実行される。一実施形態において、ILP上で実行されているSENTER命令が、セキュリティートークン276内のPCR278に、SINIT-ACの計算されたダイジェストを書き込む。その後、トラステッドSINITコードは、メモリ常駐SVMMの計算されたダイジェストをセキュリティトークン276内の同じPCR278または他のPCR279に書き込む。SVMMダイジェストが同じPCR278に書き込まれたとき、セキュリティトークン276は新しい値(SVMMダイジェスト)でオリジナルコンテント(SINITダイジェスト)をハッシュし、その結果をPCR278に書き戻す。PCR278への第1の書き込み(初期化)がSENTER命令に限定されている実施形態においては、結果として得られるダイジェストはシステムへの信頼の根源として使用される。
【0026】
一旦トラステッドSINITコードが実行を完了し、PCRにSVMMのアイデンティティを登録すると、SINITコードはSVMMにILP実行制御を移す。一般的な実施形態において、ILPにより実行された第1のSVMM命令は、SVMMの自己初期化ルーチンを表す。一実施形態において、ILPは各RLPに個別のRLP JOIN MESSAGE特殊バスメッセージを発行し、RLPの各々をSVMMの現在実行されているコピーの監視下のオペレーションに入るようにする。この時点から後は、下の図3の説明で概略を説明するように、システム全体はトラステッドモードで動作する。
【0027】
図3を参照して、本発明の一実施形態による、トラステッドまたはセキュアードソフトウェア環境の実施例の図が示されている。図3の実施形態において、トラステッドソフトウェアとアントラステッドソフトウェアが同時にロードされ、単一のコンピュータシステム上で同時に実行される。SVMM350は、1以上のアントラステッドオペレーティングシステム340とアントラステッドアプリケーション310−330からのハードウェアリソース380への直接アクセスを選択的に許可または拒絶する。このコンテクストにおいて、「アントラステッド」とは必ずしもオペレーティングシステムまたはアプリケーションが故意に不正を働いているということを意味するのではなく、インターラクションするコードのサイズや多様性により、ソフトウェアが所望のように振舞っており、その実行に干渉するウィルスやその他の外的コードがないと信頼性をもって主張することが実際的ではないということを意味する。典型的な実施形態において、アントラステッドコードは今日、パーソナルコンピュータ上で見られる通常のオペレーティングシステムおよびアプリケーションにより構成されるかもしれない。
【0028】
SVMM350は、また、1以上のトラステッドまたはセキュアなカーネル360および1以上のトラステッドアプリケーション370からの、ハードウェアリソース380への直接アクセスを選択的に許可または拒絶する。上記のトラステッドまたはセキュアなカーネル360およびトラステッドアプリケーション370は、信頼分析の実行を可能とするために、サイズおよび機能的に限定されたものであってもよい。トラステッドアプリケーション370は、セキュア環境において実行可能ないかなるソフトウェアコード、プログラム、ルーチン、または一組のルーチンであってもよい。よって、トラステッドアプリケーション370は様々なアプリケーションやコードシーケンスであってもよく、Java(登録商標)アプレットのような比較的小さなアプリケーションであってもよい。
【0029】
システムリソース保護や権限を改変しうるオペレーティングシステム340またはカーネル360により通常実行される命令または動作は、SVMM350によりトラップされ、選択的に許可され、部分的に許可され、または拒絶される。一実施例として、一般的な実施形態において、オペレーティングシステム340またはカーネル360により普通に実行されるプロセッサのページテーブルを変更する命令は、SVMM350によりトラップされる。これにより、そのバーチャルマシンのドメイン外のページ権限を変更しようとする要求はされないことを保証する。
【0030】
図4Aを参照して、図3のセキュアードソフトウェア環境をサポートするように適応したマイクロプロセッサシステム400の一実施形態が示されている。CPU A410、CPU B414、CPU C418、およびCPU D422は、特殊な命令の実行をサポートする追加的マイクロコーダまたはロジック回路も有するように構成されている。一実施形態において、この追加的マイクロコーダまたはロジック回路は、図2のSENTERロジック204であってもよい。これらの特殊な命令は、セキュア環境を立ち上げる間に、プロセッサの適当な同期を可能とする、システムバス420上に特殊なバスメッセージの発行をサポートする。一実施形態において、特殊なバスメッセージの発行は、図2のバスメッセージロジック206等の回路によりサポートされていてもよい。同様に、チップセット430は、チップセット240と同様であり、上で説明したシステムバス420上の特殊なサイクルをサポートする。物理プロセッサの数は特定の実施形態の実装により変化してもよい。一実施形態において、プロセッサは、インテル(登録商標)ペンティアム(登録商標)クラスのマイクロプロセッサであってもよい。チップセット430は、PCIバス446、あるいは、USB442、インテグレーテッドコントローラエレクトロニクス(IDE)バス(図示せず)、スモールコンピュータシステムインターコネクト(SCSI)バス(図示せず)、その他いかなる入出力バスを介して、大容量記憶デバイス、例えば固定メディア444やリムーバブルメディア448とインターフェイスされる。固定メディア444またはリムーバブルメディア448は、磁気ディスク、磁気テープ、磁気ディスケット、光磁気ドライブ、CD-ROM、DVD-ROM、フラッシュメモリカード、その他多くの形式の大規模記憶であってもよい。
【0031】
図4Aの実施形態において、4つのプロセッサCPU A410、CPU B414、CPU C418、CPU D422は、4つの別々のハードウェア実体として示されている。他の実施形態において、マイクロプロセッサの数は異なってもよい。実際に、物理的に個別のプロセッサは、1以上の物理的プロセッサ上で実行された別々のハードウェア実行スレッドにより代替されてもよい。後者の場合、これらのスレッドは、追加的物理的プロセッサの属性の多くを有する。複数の物理的プロセッサとプロセッサ上の複数のスレッドのミックスを用いて一般的に表現するため、「論理プロセッサ」という表現を物理的プロセッサまたは1以上の物理的プロセッサ上で動作するスレッドのいずれかを示すために用いる。よって、単一スレッドのプロセッサは論理プロセッサとみなされ、マルチスレッドまたはマルチコアプロセッサは複数の論理プロセッサとみなされる。
【0032】
一実施形態において、チップセット430はモディファイドLPCバス450とインターフェイスしている。モディファイドLPCバス450は、チップセット430をセキュリティトークン454と接続するために用いられる。トークン454は、一実施形態において、トラステッドコンピューティングプラットフォームアライアンス(TCPA)により構想されたTPM471を含む。
【0033】
図4Bを参照して、図3のセキュアードソフトウェア環境をサポートするように適応したマイクロプロセッサシステム490の別の実施形態が示されている。図4Aの実施形態と異なり、CPU A410とCPU B414はシステムバスA402でチップセット428に接続されており、一方、CPU C418とCPU D422はシステムバスB404でチップセット428に接続されている。他の実施形態において、2以上のシステムバスが用いられてもよい。他の別の実施形態において、ポイント・ツー・ポイントバスが用いられてもよい。特殊な命令は、セキュア環境を立ち上げる間に、プロセッサ間の適当な同期を可能とする、システムバスA402とシステムバスB404上の特殊なバスメッセージの発行をサポートする。一実施形態において、図2のバスメッセージロジック206等の回路により、特殊なバスメッセージの発行がサポートされる。
【0034】
一実施形態において、チップセット428は、システムバスA402とシステムバスB404をわたる一貫性および統一性を維持する役割を果たす。標準であろうと特殊であろうと、バスメッセージがシステムバスAに送信されると、チップセット428は(適当であれば)そのメッセージをシステムバスB404に反映し、逆もまた同じである。
【0035】
別の実施形態において、チップセット428は、システムバスA402とシステムバスB404を独立したサブシステムとして扱う。システムバスA402に発行された特殊なバスメッセージはいずれもそのバス上のプロセッサにのみ適用され、同様に、システムバスB404に発行された特殊なバスメッセージはいずれもそのバス上のプロセッサにのみ適用される。システムバスA402に関して確立された保護されたメモリはいずれも、システムバスA402に接続されたプロセッサにのみアクセス可能であり、システムバスB404上のプロセッサはアントラステッドデバイスとして扱われる。システムバスA402上のCPU A410とCPU B414のために確立された保護されたいずれのメモリにアクセスするにも、システムバスB404上のプロセッサCPU C418とCPU D422は自分自身のSENTERプロセスを実行して、システムバスA402上のプロセッサのために生成された登録された環境と等しい環境を生成しなければならない。
【0036】
図5を参照して、本発明の別の実施形態による、図3のセキュアードソフトウェア環境をサポートするように適応したマイクロプロセッサシステム500の実施例の概略図が示されている。図4Aの実施形態と異なり、各プロセッサ(例えば、CPU A510)は、例えば、メモリコントローラ機能とデバイスアクセスロジック機能を実行するチップセット機能の一部(例えば、シップセット機能593)を含んでいる。これらのチップセット機能により、メモリ(例えば、メモリA502)のプロセッサへの直接接続が可能となる。他のチップセット機能は、別のチップセット530に残されてもよい。特殊なバスメッセージがシステムバス520をわたって発行されてもよい。各プロセッサは他のプロセッサに接続されたメモリに間接的にアクセスしてもよい。しかし、これらのアクセスはプロセッサ自身のメモリへのアクセスと比較したとき、かなり遅くてもよい。SENTERプロセスの開始の前に、ソフトウェアはSINIT-AC566とSVMM574のコピーを固定メディア544からローカルメモリ504に動かし、SINIT−AC556のコピーとSVMM572のコピーを形成する。一実施形態において、ILPであると意図されたプロセッサ(図5の実施例において、これはCPU B514である)により直接アクセスされるので、メモリ504が選択されてもよい。あるいは、SINIT-AC566とSVMM574のコピーは、ILP514がアクセス可能である限り、他の(ILPでない)プロセッサに付属した他のメモリに置かれてもよい。図2ですでに説明したように、同様のシークエンスと発行されたバスサイクルで、CPU B ILP514は、SENTER命令を発行することによりセキュアエンタープロセスを開始する。すべてのプロセッサがSENTER BUS MESSAGEに適当に応答したかどうかを決定し、この情報をILPに知らせるため、図2に関して上で説明したように、チップセット530はEXISTSレジスタ576、JOINSレジスタ580、ALL_JOINEDフラグ584を利用する。ILP(CPU B514)は、公開キー564のコピーと共に、SINIT−AC556のメモリ常駐コピーをセキュアメモリ560に動かしてもよい。SINIT-AC556の検証と登録をするとき、ILPはSVMM572のメモリ常駐コピーの検証と登録を続けてもよい。
【0037】
次に図6を参照して、本発明の一実施形態による、様々なオペレーションの時間ライン図を示す。図6の時間ラインは、上で図2に関して説明したシステムの実施例に関連して説明したオペレーションの全体的スケジュールを示す。セキュアまたはトラステッドオペレーションが望ましいとソフトウェアが決定したとき、時間610において、SINIT-AC280とSVMM282のコピーを後続のSENTER命令に入手可能とする。本実施例において、ソフトウェアはSINIT−AC280のコピーとSVMM282のコピーを1以上のメモリページ250−262にロードする。1つのプロセッサ、本実施例においてはプロセッサ202がILPに選択され、時間612にSENTER命令を発行する。時間614に、ILPのSENTER命令はSENTER BUS MESSAGE616を発行する。ILPは、時間628でチップセットフラグ待機状態に入る前に、時間618にそれ自身のSENTER ACK608を発行する。
【0038】
各RLP、例えばプロセッサ222は、時間620の間にカレント命令を完了することによりSENTER BUS MESSAGEに応答する。RLPはSENTER ACK622を発行し、SENTER CONTINUE MESSAGEを待ち受ける状態634に入る。
【0039】
チップセット240は、時間624で、システムバス230上で観測したSENTER ACKメッセージに応じて、JOINSレジスタ272を設定する。JOINSレジスタ272の内容がEXISTSレジスタ270の内容と一致したとき、チップセット240は時間626でALL_JOINEDフラグ246を設定する。
【0040】
この時間中、ILPは、ALL_JOINEDフラグ246を調べている間、ループにいる。ALL_JOINEDフラグ246が設定されており、時間630でALL_JOINEDフラグ246が設定されているとILPが決定したとき、ILPは時間632の間にSENTER CONTINUE MESSAGEを発行する。SENTER CONTINUE MESSAGEがシステムバス230に時間636でブロードキャストされると、RLPは参加待ち状態に入る。例えば、プロセッサ222のRLPは時間638において参加待ち状態に入る。
【0041】
SENTER CONTINUE MESSAGEを発行すると、公開キーのコピーとSINIT-ACのコピーを形成するため、ILPは(時間640において)チップセット240のキーレジスタ244の公開キーとSINIT-ACのコピーをセキュアメモリ208に持ってくる。他の実施形態において、キーレジスタ244は公開キーのダイジェストを含んでおり、実際の公開キーはSINIT-ACに含まれるか、それに付属している。図2に関して上で説明したように、SINIT-ACのコピーを認証するとき、ILPはセキュアメモリ208内でSINIT-ACのコピーを実際に実行してもよい。
【0042】
セキュアメモリ208内でSINIT-ACのコピーの実行が開始された後、SVMMのメモリ常駐コピーを検証および登録する。SVMMのコピーがセキュリティトークン276のPCR278に登録された後、SVMMのメモリ常駐コピー自体が実行を開始する。この時、進行中の期間650に、ILPでSVMMのオペレーションが確立される。
【0043】
ILP SVMMオペレーションで最初になされることの1つは、個々のRLP JOIN MESSAGEをシステムバス230に発行することである。例えば、プロセッサ222JOIN MESSAGE644である。このメッセージには、SVMMの登録されたメモリ常駐コピーの実行において、RLPプロセッサ222が参加することができるメモリの場所を含む。あるいは、ILP SVMMオペレーションは、チップセットまたはメモリの所定の場所にメモリロケーションを登録し、JOIN MESSAGEを受信するとRLPはこの場所から開始アドレスを読み出してもよい。プロセッサ222JOIN MESSAGEを受信し、開始アドレスを決定した後、時間646の間に、RLPプロセッサ222はこの場所にジャンプし、SVMMの登録されたメモリ常駐コピーの実行に参加する。
【0044】
すべてのRLPがSVMMの登録されたメモリ常駐コピーに参加した後、セキュアードオペレーションがマイクロコンピュータシステム200全体で確立される。
【0045】
図7を参照して、本発明の一実施形態による、ソフトウェアと他のプロセスブロックのフローチャートを示す。説明の明瞭化のため、図7には単一の代表的なRLPのプロセスブロックのみが示されている。他の実施形態においては、数個の応答論理プロセッサがあってもよい。
【0046】
プロセス700は、ブロック710において、論理プロセッサによりSINIT-ACとSVMMモジュールのコピーが後続のSENTER命令によりアクセス可能とされたときに開始する。本実施例において、ブロック712において、ILPは大規模記憶から物理メモリにSINIT-ACとSVMMコードをロードする。別の実施形態において、ILPだけでなくいずれの論理プロセッサがそうしてもよい。プロセッサは、ブロック714で識別されたように、SENTER命令を実行することによりILPとなる。ブロック716において、ILP SENTER命令はSENTER BUS MESSAGEを発行する。ブロック718において、ILPはチップセットに自分のSENTER ACKメッセージを発行する。ILPはその後、判断ブロック720に示したように待機状態に入り、チップセットがそのALL_JOINEDフラグを設定するのを待つ。
【0047】
各RLPがブロック770においてSENTER BUS MESSAGEを受信した後、カレント命令が終わると実行を停止し、ブロック772において自分自身のSENTER ACKを発行する。判断ブロック774に示したように、各RLPは待機状態に入り、ILPからSENTER CONTINUE MESSAGEが届くのを待つ。
【0048】
SENTER ACKメッセージが受信されたとき、チップセットはJOINSレジスタ内の対応するビットを設定する。JOINSレジスタの内容がEXISTSレジスタの内容と一致するとき、チップセットはそのALL_JOINEDフラグを設定し、ILPに判断ブロック720から進むように知らせる。
【0049】
既存の判断ブロック720でYESの場合、ILPはブロック722においてSENTER CONTINURE MESSAGEを発行する。これにより各RLPが判断ブロック774から進むように信号で知らされる。各RLPは、判断ブロック776として示した第2の待機状態に入り、SENTER JOIN MESSAGEを待つ。
【0050】
さしあたり、ILPはブロック724において、セキュア実行のために、チップセットの公開キーとSINIT-ACのメモリ常駐コピーをそれ自身のセキュアメモリに移動する。ILPはブロック726において、SINIT-ACのセキュアメモリ常駐コピーを検証するために使用し、それを実行する。SINIT-ACの実行により、ブロック728において、システム構成とSVMMコピーのテストが実行され、SVMMのアイデンティティが登録され、最後にSVMMの実行が開始される。ブロック754で示したように、ブロック728で実行される動作の一部として、SVMM282のメモリ常駐コピーにより使用されるメモリページを非プロセッサデバイスによる干渉から保護するように、メモリとチップセットのデバイスアクセスページテーブル248とデバイスアクセスロジック247がILP SINITコードにより構成される。
【0051】
ILPがSVMMの制御下で実行を開始した後、ブロック730において、そのILPは各RLPに個別のSENTER JOIN MESSAGEを送信する。SENTER JOIN MESSAGEを発行した後、ILPはブロック732においてSVMMオペレーションを開始する。
【0052】
SENTER JOIN MESSAGEを受信すると、各RLPは判断ブロック776で表された待機状態をYESの方に抜け、ブロック780でSVMMオペレーションを開始する。SENTER JOIN MESSAGEには、SVMMオペレーションに参加するときにRLPが分岐するSVMMエントリポイントが含まれる。あるいは、ILP SVMMコードがシステムロケーション(例えば、チップセット)中に適当なRLPエントリポイントを登録して、SENTER JOIN MESSAGEを受信した時にRLPにより読み出されるようにしてもよい。
【0053】
開示した様々な実施形態には2以上のプロセッサ(論理または物理プロセッサのいずれか)が含まれるが、上記のマルチプロセッサおよび/またはマルチスレッドシステムは、複数の論理または物理プロセッサを伴うシステムの安全に関連する複雑性を説明する詳細に説明されたものであることを理解すべきである。より複雑でないシステムにおいて有利であろう実施形態は、プロセッサが1つだけのものである。一部の場合において、1つの物理的プロセッサが複数のスレッドを有し、それゆえ複数の論理プロセッサを含んで(したがって、説明したようにILPとRLPを有して)いてもよい。しかし、他の場合において、単一プロセッサ、単一スレッドのシステムを使用して、開始したセキュア処理技術を利用してもよい。このような場合、RLPは存在しない。しかし、セキュア処理技術は依然としてデータが盗まれたり、権限を与えられていない方法で改ざんされたりする見込みを減少させるのに役立つ。
【0054】
以上の説明により、本発明をその特定の実施形態を参照して説明した。しかし、添付した請求項に記載した本発明のより広い精神と範囲から逸脱することなく、様々な修正や変更をできることは明らかである。したがって、本明細書と図面は限定的ではなく例示としてみなすべきである。
【0055】
なお、上記の実施形態について以下の付記を記載する。
(付記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に記載の方法であって、前記セキュアバーチャルマシンモニターを認証するステップは、プラットフォーム構成レジスタに前記バーチャルマシンモニターを登録するステップを含むことを特徴とする方法。
【図面の簡単な説明】
【0056】
【図1】マイクロプロセッサシステムで実行されるソフトウェア環境を示す図である。
【図2】本発明の一実施形態による、信頼された、または安全なソフトウェアモジュールとシステム環境の実施例を示す図である。
【図3】本発明の一実施形態による、信頼された、または安全なソフトウェア環境の実施例を示す図である。
【図4A】本発明の一実施形態による、図3の安全なソフトウェア環境をサポートするように適応したマイクロプロセッサシステムの実施例を示す概略図である。
【図4B】本発明の別の実施形態による、図3の安全なソフトウェア環境をサポートするように適応されたマイクロプロセッサシステムの実施例を示す概略図である。
【図5】本発明の別の実施形態による、図3の安全なソフトウェア環境をサポートするように適応されたマイクロプロセッサシステムの実施例を示す概略図である。
【図6】本発明の一実施形態による、ソフトウェアコンポーネントの実行を示すタイムチャートである。
【図7】本発明の一実施形態による、ソフトウェアおよびその他のプロセスブロックのフローチャートである。

【特許請求の範囲】
【請求項1】
第1の論理プロセッサと第2の論理プロセッサとを同期させるステップと、
初期化コードモジュールを認証するステップと、
セキュアバーチャルマシンモニターを認証するステップと、
前記セキュアバーチャルマシンモニターを実行するステップとを有することを特徴とする方法。
【請求項2】
請求項1に記載の方法であって、特殊なバスメッセージに応じて前記第2の論理プロセッサ上で前記セキュアバーチャルマシンモニターを実行するために前記特殊なバスメッセージを前記第2の論理プロセッサに送信するステップをさらに有することを特徴とする方法。
【請求項3】
請求項1に記載の方法であって、前記同期させるステップは、特殊なバスメッセージが前記第2の論理プロセッサに実行を停止させアクノレッジメントを送信させるステップをさらに有することを特徴とする方法。
【請求項4】
請求項3に記載の方法であって、前記同期させるステップは、前記アクノレッジメントに応じてチップセットにフラグを設定するステップをさらに有することを特徴とする方法。
【請求項5】
請求項1に記載の方法であって、前記初期化コードモジュールを認証するステップは、前記初期化コードモジュールのコピーと公開キーとをセキュアメモリに移動するステップを有することを特徴とする方法。
【請求項6】
請求項5に記載の方法であって、前記初期コードモジュールを認証するステップは、前記初期コードモジュール第1のダイジェストを前記初期コードモジュールの第2のダイジェストと比較するステップを含むことを特徴とする方法。
【請求項7】
請求項1に記載の方法であって、前記セキュアバーチャルマシンモニターを認証するステップは、前記初期コードモジュールを実行するステップを含むことを特徴とする方法。
【請求項8】
請求項7に記載の方法であって、前記セキュアバーチャルマシンモニターを認証するステップは、プラットフォーム構成レジスタに前記バーチャルマシンモニターを登録するステップを含むことを特徴とする方法。
【請求項9】
第1の論理プロセッサと第2の論理プロセッサとを同期させる手段と、
初期化コードモジュールを認証する手段と、
セキュアバーチャルマシンモニターを認証する手段と、
前記セキュアバーチャルマシンモニターを実行する手段とを有することを特徴とする装置。
【請求項10】
請求項9に記載の装置であって、特殊なバスメッセージに応じて前記第2の論理プロセッサ上で前記セキュアバーチャルマシンモニターを実行するために前記特殊なバスメッセージを前記第2の論理プロセッサに送信する手段をさらに有することを特徴とする装置。
【請求項11】
請求項9に記載の装置であって、前記初期化コードモジュールのコピーと公開キーとをセキュアメモリに移動する手段を有することを特徴とする装置。
【請求項12】
請求項11に記載の装置であって、前記初期コードモジュール第1のダイジェストを前記初期コードモジュールの第2のダイジェストと比較する手段をさらに有することを特徴とする装置。
【請求項13】
請求項9に記載の装置であって、前記バーチャルマシンモニターを登録する手段をさらに有することを特徴とする装置。
【請求項14】
セキュアオペレーション初期化をする第1の命令を実行し、セキュア初期化認証済みコードの実行をする時点を検出するセキュアエンターロジックと、
前記第1の命令に応じて第1の特殊なバスメッセージを送信し、前記検出された時点に第2の特殊なバスメッセージを送信するバスメッセージングロジックとを有することを特徴とするプロセッサ。
【請求項15】
請求項14に記載のプロセッサであって、前記時点は第1の論理プロセッサがアクノレッジメントを発行した後であることを特徴とするプロセッサ。
【請求項16】
請求項14に記載のプロセッサであって、前記セキュアエンターロジックは、前記時点を決定するためにチップセット中のフラグレジスタをさらに参照することを特徴とするプロセッサ。
【請求項17】
請求項14に記載のプロセッサであって、前記セキュアエンターロジックは、さらに、前記時点の後にキーを入力しコードモジュールを認証することを特徴とするプロセッサ。
【請求項18】
請求項14に記載のプロセッサであって、前記バスメッセージングロジックは、さらに、コードエントリポイントを含む第3の特殊なバスメッセージを送信することを特徴とするプロセッサ。
【請求項19】
第1の論理プロセッサからの第1の特殊なバスメッセージに応じてセキュアオペレーションを準備するバスメッセージングロジックと、
前記第1の特殊なバスメッセージに応じて第2の論理プロセッサからのアクノレッジメントを記憶するレジスタとを有することを特徴とするチップセット。
【請求項20】
請求項19に記載のチップセットであって、前記チップセットは、前記第1の論理プロセッサにセキュアオペレーション初期化を進める信号をいつ送るかを決定するために、前記レジスタを論理プロセッサアクティビティと比較することを特徴とするチップセット。
【請求項21】
請求項20に記載のチップセットであって、前記信号はフラグの設定を含むことを特徴とするチップセット。
【請求項22】
請求項19に記載のチップセットであって、セキュアバーチャルマシンモニターをロックするデバイスアクセスロジックをさらに有することを特徴とするチップセット。
【請求項23】
請求項19に記載のチップセットであって、前記第1の特殊なバスメッセージの後に、前記第1の論理プロセッサにキーを送信するキーレジスタをさらに有することを特徴とするチップセット。
【請求項24】
セキュアエンターロジックと、前記セキュアエンターロジックに応じる第1のバスメッセージングロジックとを有する論理プロセッサと、
前記第1のバスメッセージングロジックから第1の特殊なバスメッセージを受信する第2のバスメッセージングロジックと、アクノレッジメントに応じて設定されるフラグとを有するチップセットとを有することを特徴とするシステム。
【請求項25】
請求項24に記載のシステムであって、前記セキュアエンターロジックに応じてセキュアオペレーションを起動するセキュア初期化認証済みコードをさらに有することを特徴とするシステム。
【請求項26】
請求項25に記載のシステムであって、前記セキュア初期化認証済みコードを認証するために前記論理プロセッサにより使用されるキーをさらに有することを特徴とするシステム。
【請求項27】
請求項25に記載のシステムであって、前記第1のバスメッセージングロジックは第2の特殊なバスメッセージを発行し、前記第2の特殊なバスメッセージの後に前記論理プロセッサは前記セキュア初期化認証済みコードをセキュアメモリに移動することを特徴とするシステム。
【請求項28】
請求項25に記載のシステムであって、セキュアバーチャルマシンモニターをさらに有することを特徴とするシステム。
【請求項29】
請求項28に記載のシステムであって、前記セキュア初期化認証済みコードは前記セキュアバーチャルマシンモニターの初期化を実行することを特徴とするシステム。
【請求項30】
請求項29に記載のシステムであって、前記初期化は認証を含み、前記チップセットは前記初期化に応じて非プロセッサが前記セキュアバーチャルマシンモニターにアクセスするのを防止するデバイスアクセスロジックを含むことを特徴とするシステム。
【請求項31】
請求項29に記載のシステムであって、前記第1のバスメッセージングロジックは、前記初期化に応じて、第3の特殊なバスメッセージを発行することを特徴とするシステム。
【請求項32】
請求項31に記載のシステムであって、前記第3の特殊なバスメッセージは、前記セキュアバーチャルマシンモニターのコードエントリポイントを含むことを特徴とするシステム。
【請求項33】
特殊なバスメッセージを送信するステップと、
第1の論理プロセッサ内の初期化コードを認証するステップと、
セキュアバーチャルマシンモニターを認証するステップと、
前記第1の論理プロセッサ中の前記セキュアバーチャルマシンモニターを実行するステップとを有することを特徴とする方法。
【請求項34】
請求項33に記載の方法であって、前記第1のバスメッセージに応じてアクノレッジメントを送信するステップをさらに有することを特徴とする方法。
【請求項35】
請求項33に記載の方法であって、第2の論理プロセッサにおける実行を停止してアクノレッジメントを送信するステップをさらに有することを特徴とする方法。
【請求項36】
請求項35に記載の方法であって、前記アクノレッジメントに応じてチップセットにフラグを設定するステップをさらに有することを特徴とする方法。
【請求項37】
請求項33に記載の方法であって、前記初期化コードを認証するステップは、前記初期化コードのコピーと公開キーをセキュアメモリに移動することを特徴とする方法。
【請求項38】
請求項37に記載の方法であって、前記初期化コードを認証するステップは、前記初期化コードの第1のダイジェストを前記初期化コードの第2のダイジェストと比較するステップを含むことを特徴とする方法。
【請求項39】
請求項33に記載の方法であって、前記セキュアバーチャルマシンモニターを認証するステップは、前記初期化コードを実行するステップを含むことを特徴とする方法。
【請求項40】
請求項39に記載の方法であって、前記セキュアバーチャルマシンモニターを認証するステップは、プラットフォーム構成レジスタに前記バーチャルマシンモニターを登録するステップを含むことを特徴とする方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2009−54164(P2009−54164A)
【公開日】平成21年3月12日(2009.3.12)
【国際特許分類】
【出願番号】特願2008−236958(P2008−236958)
【出願日】平成20年9月16日(2008.9.16)
【分割の表示】特願2003−582616(P2003−582616)の分割
【原出願日】平成15年3月20日(2003.3.20)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.リナックス
【出願人】(593096712)インテル コーポレイション (931)
【Fターム(参考)】