(57)【要約】プライベート・メモリに記憶された認証コード・モジュールを読み出し、認証し、及び／又は、実行する装置及び方法。
2006507548.tif 000002
【特許請求の範囲】
【請求項１】
認証コード・モジュールをプライベート・メモリに転送する工程と、
前記プライベート・メモリに記憶された前記認証コード・モジュールが信頼できると判断されたときに前記プライベート・メモリに記憶された前記認証コード・モジュールを実行する工程と、を有する方法。
【請求項２】
請求項１記載の方法であって、
前記転送工程は、メモリからのオペランドによって指定された複数バイトを転送する、ことを特徴とする方法。
【請求項３】
請求項１記載の方法であって、
前記プロセッサのキャッシュ・メモリをランダム・アクセス・メモリのように作動するように設定する工程を更に有し、
前記転送工程は、前記認証コード・モジュールを前記キャッシュ・メモリに記憶する工程を有する、ことを特徴とする方法。
【請求項４】
請求項３記載の方法であって、
前記認証コード・モジュールを前記キャッシュ・メモリに記憶する前に前記キャッシュ・メモリを無効する工程を更に有する、ことを特徴とする方法。
【請求項５】
請求項３記載の方法であって、
前記キャッシュ・メモリをロックして認証コード・モジュールのラインが取り替えられるのを防止する工程を更に有する、ことを特徴とする方法。
【請求項６】
請求項１記載の方法であって、
前記認証コード・モジュールのディジタル署名に基づいて、前記認証コードが信頼できるか否かを判断する工程を更に有する、ことを特徴とする方法。
【請求項７】
請求項１記載の方法であって、
前記プライベート・メモリに記憶された前記認証コード・モジュールから第一の値を取得する工程と、
前記認証コード・モジュールから第二の値を計算する工程と、
前記第一の値と前記第二の値とが所定の関係を有するときに、前記認証コード・モジュールが信頼できると判断する工程と、更に有することを特徴とする方法。
【請求項８】
請求項１記載の方法であって、
キーを検索する工程と、
前記キーを用いて前記認証コード・モジュールのディジタル署名を暗号解読して第一の値を取得する工程と、
前記認証コード・モジュールをハッシュして第二の値を取得する工程と、
前記第一の値と前記第二の値とが所定の関係を有するときに、前記認証コード・モジュールを実行する工程と、更に有することを特徴とする方法。
【請求項９】
請求項８記載の方法であって、
前記暗号解読工程は、前記キーを用いて前記ディジタル署名をＲＳＡ暗号解読する工程を有し、
前記ハッシュ工程は、ＳＨＡ−１ハッシュを前記認証コード・モジュールに適用して前記第二の値を取得する工程を有する、ことを特徴とする方法。
【請求項１０】
請求項８記載の方法であって、
前記プロセッサから前記キーを検索する工程を更に有することを特徴とする方法。
【請求項１１】
請求項８記載の方法であって、
チップセットから前記キーを検索する工程を更に有することを特徴とする方法。
【請求項１２】
請求項８記載の方法であって、
トークンから前記キーを検索する工程を更に有することを特徴とする方法。
【請求項１３】
請求項１記載の方法であって、
前記転送工程は、機械可読媒体から前記認証コード・モジュールを受信する工程を有する、ことを特徴とする方法。
【請求項１４】
チップセットと
前記チップセットに結合されたメモリと、
機械可読媒体から認証コード・モジュールを受信するための機械可読媒体インターフェースと、
前記チップセットに結合されたプライベート・メモリと、
前記認証コード・モジュールを前記機械可読媒体インターフェースから前記プライベート・メモリへ転送し、前記プライベート・メモリに記憶された前記認証コード・モジュールを認証するプロセッサと、を有するコンピュータ装置。
【請求項１５】
請求項１４記載のコンピュータ装置であって、
前記チップセットは、前記メモリに結合されたメモリ・コントローラと、前記プライベート・メモリに結合された別体のプライベート・メモリ・コントローラとを有する、ことを特徴とするコンピュータ装置。
【請求項１６】
請求項１４記載のコンピュータ装置であって、
前記チップセットはキーを有し、
前記プロセッサは、前記チップセットの前記キーに基づいて、前記プライベート・メモリに記憶された前記認証コード・モジュールを認証する、ことを特徴とするコンピュータ装置。
【請求項１７】
請求項１４記載のコンピュータ装置であって、
前記プロセッサは、
キーを有し、
前記プロセッサの前記キーに基づいて、前記プライベート・メモリに記憶された前記認証コード・モジュールを認証する、ことを特徴とするコンピュータ装置。
【請求項１８】
請求項１４記載のコンピュータ装置であって、
前記チップセットに結合されたトークンを更に有し、
前記トークンはキーを有し、
前記プロセッサは、前記トークンの前記キーに基づいて、前記プライベート・メモリに記憶された前記認証コード・モジュールを認証する、ことを特徴とするコンピュータ装置。
【請求項１９】
チップセットと、
機械可読媒体から認証コード・モジュールを受信するための機械可読媒体インターフェースと、
プロセッサ・バスを通じて前記チップセットに結合されたプロセッサと、を有し、
前記プロセッサは、
前記認証コード・モジュールを前記機械可読媒体インターフェースから前記プロセッサのプライベート・メモリに転送し、
前記プライベート・メモリに記憶された前記認証コード・モジュールを認証する、ことを特徴とするコンピュータ装置。
【請求項２０】
請求項１９記載のコンピュータ装置であって、
前記プライベート・メモリは専用バスを通じて前記プロセッサに結合される、ことを特徴とするコンピュータ装置。
【請求項２１】
請求項１９記載のコンピュータ装置であって、
前記プライベート・メモリは前記プロセッサの内部にあることを特徴とするコンピュータ装置。
【請求項２２】
請求項１９記載のコンピュータ装置であって、
前記プライベート・メモリは前記プロセッサの内部キャッシュ・メモリを有する、ことを特徴とするコンピュータ装置。
【請求項２３】
請求項１９記載のコンピュータ装置であって、
前記プロセッサ・バスを通じて前記チップセットに結合された他のプロセッサを更に有し、
前記プロセッサは、更に、前記他のプロセッサによる前記認証コード・モジュールの変更を防止するために前記プロセッサ・バスをロックする、ことを特徴とするコンピュータ装置。
【請求項２４】
メモリと、
前記メモリの一部をプライベート・メモリと定義するメモリ制御を有するチップセットと、
機械可読媒体から認証コード・モジュールを受信するための機械可読媒体と、
前記認証コード・モジュールを前記機械可読媒体インターフェースから前記プライベート・メモリへ転送し、前記プライベート・メモリに記憶された前記認証コード・モジュールを認証するプロセッサと、を有するコンピュータ装置。
【請求項２５】
請求項２４記載のコンピュータ装置であって、
前記チップセットは、前記メモリに結合されたメモリ・コントローラと、前記プライベート・メモリに結合された別体のプライベート・メモリ・コントローラとを有する、ことを特徴とするコンピュータ装置。
【請求項２６】
請求項２４記載のコンピュータ装置であって、
前記チップセットはキーを有し、
前記プロセッサは、前記チップセットの前記キーに基づいて、前記プライベート・メモリに記憶された前記認証コード・モジュールを認証する、ことを特徴とするコンピュータ装置。
【請求項２７】
請求項２４記載のコンピュータ装置であって、
前記プロセッサは、
キーを有し、
前記プロセッサの前記キーに基づいて、前記プライベート・メモリに記憶された前記認証コード・モジュールを認証する、ことを特徴とするコンピュータ装置。
【請求項２８】
請求項２４記載のコンピュータ装置であって、
キーを有するトークンを更に有し、
前記プロセッサは、前記トークンの前記キーに基づいて、前記プライベート・メモリに記憶された前記認証コード・モジュールを認証する、ことを特徴とするコンピュータ装置。
【請求項２９】
１以上の命令を有する機械可読媒体であって、
前記１以上の命令は、実行されると、コンピュータ装置に、
認証コード・モジュールをプロセッサに接続されたプライベート・メモリに転送させ、
前記プライベート・メモリに記憶された前記認証コード・モジュールが信頼できると判断されたときに、前記プライベート・メモリに記憶された前記認証コード・モジュールを実行させる、ことを特徴とする機械可読媒体。
【請求項３０】
請求項２９記載の機械可読媒体であって、
前記１以上の命令は、実行されると、前記コンピュータ装置に、更に、
前記認証コード・モジュールのディジタル署名に基づいて、前記認証コードが信頼できるか否かを判断させる、ことを特徴とする機械可読媒体。
【請求項３１】
請求項２９記載の機械可読媒体であって、
前記１以上の命令は、実行されると、前記コンピュータ装置に、更に、
前記プライベート・メモリに記憶された前記認証コード・モジュールから第一の値を取得させ、
前記認証コード・モジュールから第二の値を計算させ、
前記第一の値と前記第二の値が所定の関係を有するときに、前記認証コード・モジュールが信頼できると判断させる、ことを特徴とする機械可読媒体。
【請求項３２】
請求項２９記載の機械可読媒体であって、
前記１以上の命令は、実行されると、前記コンピュータ装置に、更に、
非対称キーを検索させ、
前記非対称キーを用いて前記認証コード・モジュールのディジタル署名を暗号解読して第一の値を取得させ、
前記認証コード・モジュールをハッシュして第二の値を取得させ、
前記第一の値と前記第二の値とが所定の関係を有するときに、前記認証コード・モジュールの実行を開始させる、ことを特徴とする機械可読媒体。
【請求項３３】
請求項２９記載の機械可読媒体であって、
前記１以上の命令は、実行されると、前記コンピュータ装置に、
非対称キーを検索させ、
前記非対称キーを用いて前記認証コード・モジュールのディジタル署名を暗号解読して第一の値を取得させ、
前記認証コード・モジュールをハッシュして第二の値を取得させ、
前記第一の値と前記第二の値とが所定の関係を有するときに、前記認証コード・モジュールの実行を開始させる、起動命令を有する、ことを特徴とする機械可読媒体。
【請求項３４】
請求項３３記載の機械可読媒体であって、
前記１以上の命令は、実行されると、前記コンピュータ装置に、更に、
機械可読媒体インターフェースを通じて前記認証コード・モジュールを受信させる、ことを特徴とする機械可読媒体。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
（背景）
コンピュータ装置は、様々なオペレーションを実行するために、ファームウェア及び／又はソフトウェア・コードを実行する。コードは、ユーザ・アプリケーションの形でもよく、ＢＩＯＳルーチンの形でもよく、或いは、オペレーティング・システム・ルーチンでもよい。オペレーティング・システムの中には、悪者コードに対してコンピュータ装置の完全性を維持するために制限されたプロテクション（プロテクト）を提供するものもある。例えば、管理者（アドミニストレータ）は、特定の事前承認コードの実行についてユーザ又はユーザ・グループに制限を加えることができる。さらに、管理者は、管理者がそのコードを信頼できると判断するまで、信頼できないコードを実行できるサンドボックス又は隔離された環境を設定することができる。上記手法は、幾分のプロテクトを提供するが、一般には、そのコードの供給者、そのコードの歴史上の性能、及び／又は、ソースコード自体のレビューに基づく信頼性判断を管理者が手動で行わなければならない。
【０００２】
また、信頼性判断を自動的に行うメカニズムを提供するための他のメカニズムも導入されている。例えば、団体（例えば、ソフトウェア・メーカ）は、Ｘ．５０９証明書などの証明書をコードに備えてもよい。ここで、Ｘ．５０９証明書は、コードにディジタル署名し、該コードの完全性を証明するものである。管理者は、信頼できる団体（エンティティ）からの証明書を提供するコードの実行を、管理者が問題となっているコードを特別に分析することなく、ユーザに自動的に許可するようにオペレーティング・システムを設定することができる。上記手法はいくつかの環境に対しては十分なものとなり得るが、上記手法は、内在的に、オペレーティング・システム又はオペレーティング・システムの制御下で実行される他のソフトウェアが証明書を適正に処理すると信頼している。
【０００３】
しかし、特定のオペレーションは、オペレーティング・システムがそのような判断を行うことを信頼できない可能性もある。例えば、実行されるコードは、オペレーティング・システムが信頼できるか否かをコンピュータ装置に判断させる可能性もある。このようなコードの認証をオペレーティング・システムに頼ると、そのコードの目的を妨げるかもしれない。さらに、実行されるコードは、コンピュータ装置のオペレーティング・システムより先に実行されるシステム初期化コードを有する可能性もある。したがって、このようなコードは、オペレーティング・システムによっては認証できない。
【０００４】
ここに記載した発明は、例示であり、添付図面を制限するものではない。説明の便宜上図示された要素は必ずしも一定の縮尺で描かれていない。例えば、いくつかの要素の寸法は、明晰さのために、他の要素に対して誇張されているかもしれない。さらに、適切であると考えられるところでは、対応した又は相似の要素を示すために、参照符号が複数の図面を通して繰り返される。
（詳細な説明）
以下の説明は、信頼できるコンピュータ環境を確立する及び／又は維持するなどの様々なオペレーションに用いられ得る認証コード（ＡＣ）モジュールの起動させ、その実行の終了させる手法について述べている。以下の説明において、ロジック実施、オプコード（ｏｐｃｏｄｅ）、オペランドを指定する手段、リソース分割／共有／重複実施、システム構成要素の種類及び相互関係、ロジック分割／統合選択などの多くの具体的なディテールは、本発明のより完全な理解を提供するために説明される。しかし、当業者には明らかなように、本発明がそのような具体的詳細が無くても実現可能である。他の例において、制御構造、ゲートレベル回路、及び全ソフトウェア命令シーケンスは、本発明を分かりにくくしないように、詳細に示さない。当業者は、含まれた説明があれば、必要以上の実験無しで、適切な機能性を実施することができるであろう。
【０００５】
明細書中で「１つの実施形態」、「一実施形態」、「実施形態の一例」などへ言及したとき、それは記載された実施形態が特定の機能、構造、又は特徴を含み得るが、すべての実施形態が必ずしもそれら特定の機能、構造、又は特徴を含むとは限らない、ことを意味する。また、上記のフレーズは、必ずしも同じ実施形態を指していない。さらに、特定の機能、構造、又は特徴が一実施形態と共に説明されているとき、明示されているか否かにかかわらず、他の実施形態と共にそのような機能、構造、又は特徴を実行することは当業者の知識の範囲内であると考えられている。
【０００６】
以下の説明及び請求項において、「結合された」及び「接続された」という語及びそれらの派生語が用いられ得る。これらの用語は、お互いに類義語として意図されていないことは明らかである。むしろ、実施形態によっては、「接続された」は、２つ以上の要素が互いに物理的又は電気的に直接接触していることを示すために用いられている可能性がある。「結合された」は、２つ以上の要素が物理的又は電気的に直接接触していることを意味している可能性がある。しかしながら、「結合された」は、２つ以上の要素が互いに直接接触していないが、依然として互いに協働又は相互作用していることも意味し得る。
【０００７】
コンピュータ装置１００の実施形態の例を図１Ａ〜１Ｅに示す。コンピュータ装置１００は、プロセッサ・バス１３０を通じてチップセット１２０に結合された１以上のプロセッサ１１０を有する。チップセット１２０は、プロセッサ１１０をシステム・メモリ１４０、物理的トークン１５０、プライベート・メモリ（ＰＭ）１６０、媒体インターフェース１７０、及び／又は、コンピュータ装置１００の他のＩ／Ｏ機器に結合させる１以上の集積回路パッケージ又はチップを有する。
【０００８】
各プロセッサ１１０は、１つの集積回路として実現されてもよく、或いは、複数の集積回路として実現されてもよく、或いは、ソフトウェア・ルーチン（例えば、バイナリ翻訳ルーチン）を備えたハードウェアとして実現されてもよい。さらに、プロセッサ１１０は、キャッシュ・メモリ１１２と、コントロール・レジスタ１１４とを有する。キャッシュ・メモリ１１２は、通常キャッシュ・モード又はキャッシュ・アズ・ラム（ｃａｃｈｅ−ａｓ−ＲＡＭ）・モードで作動するように構成される。通常キャッシュ・モードにおいて、キャッシュ・メモリ１１２は、キャッシュ・ヒットに呼応してメモリ要求を満足させ、キャッシュ・ミスに呼応してキャッシュ・ラインを置き換え、場合によってはプロセッサ・バス１３０の詮索要求に呼応してキャッシュ・ラインを無効にする又は置き換える。キャッシュ・アズ・ラム・モードにおいて、キャッシュ・メモリ１１２は、キャッシュ・メモリ１１２のメモリ範囲内のリクエストがキャッシュ・メモリによって満たされ、キャッシュのラインがプロセッサ・バス１３０の詮索要求に呼応して置き換えも又は無効化もされないランダム・アクセス・メモリとして動作する。
【０００９】
プロセッサ１１０は、例えば、対称暗号アルゴリズム（例えば、よく知られたＤＥＳ、３ＤＥＳ、ＡＥＳアルゴリズム、など）の鍵や非対称暗号アルゴリズム（例えば、良く知られたＲＳＡアルゴリズムなど）の鍵などのキー１１６を更に有する。プロセッサ１１０は、キー１１６を用いて、ＡＣモジュール１９０を実行する前にＡＣモジュール１９０を認証することができる。
【００１０】
プロセッサ１１０は、例えば、リアルモード、プロテクトモード、仮想リアルモード、及び仮想コンピュータ・モード（ＶＭＸモード）などの１以上の動作モードをサポートする。さらに、プロセッサ１１０は、サポートされた動作モードの各々において、１以上の特権レベル又はリングをサポートする。一般に、プロセッサ１１０の動作モード及び特権レベルは、実行可能な命令と、該命令の実行の効果とを定義する。より具体的には、プロセッサ１１０は、プロセッサ１１０が適切なモード及び／又は特権レベルにある場合のみ、特定の特権命令の実行が許可される。
【００１１】
また、プロセッサ１１０は、プロセッサ・バス１３０のロッキングをサポートする。プロセッサ・バス１３０がロックされると、プロセッサ１１０はプロセッサ・バス１３０の排他的所有権を取得する。プロセッサ・バス１３０がリリース（解放）されるまで、他のプロセッサ１１０及びチップセット１２０は、プロセッサ・バス１３０の所有権を取得できない。実施形態の一例において、プロセッサ１１０は、他のプロセッサ１１０及びチップセット１２０にＬＴ．ＰＲＯＣＥＳＳＯＲメッセージを提供する特殊なトランザクションをプロセッサ・バス１３０上に発行する。このＬＴ．ＰＲＯＣＥＳＳＯＲ．ＨＯＬＤバス・メッセージは、プロセッサ１１０がＬＴ．ＰＲＯＣＥＳＳＯＲ．ＲＥＬＥＡＳＥバス・メッセージを通じてプロセッサ・バス１３０をリリースするまで、他のプロセッサ１１０及びチップセット１２０がプロセッサ・バス１３０の所有権を獲得することを防止する。
【００１２】
ただし、プロセッサ１１０は、プロセッサ・バス１３０をロッキングする代替的な及び／又は追加的な方法をサポートしてもよい。例えば、プロセッサ１１０は、プロセッサ間割込を発行することによって、プロセッサ・バス・ロック信号をアサートすることによって、プロセッサ・バス要求信号をアサートすることによって、及び／又は、他のプロセッサ１１０に実行を中止させることによって、他のプロセッサ１１０及び／又はチップセット１２０にロック状態について知らせてもよい。同様に、プロセッサ１１０は、プロセッサ間割込を発行することによって、プロセッサ・バス・ロック信号をアサート停止することによって、プロセッサ・バス要求信号をアサート停止することによって、及び／又は、他のプロセッサ１１０に実行を再開させることによって、プロセッサ・バス１３０をリリースしてもよい。
【００１３】
さらに、プロセッサ１１０は、ＡＣモジュール１９０の起動及びその実行の終了をサポートする。実施形態の一例において、プロセッサ１１０は、プライベート・メモリ１６０からＡＣモジュール１９０を読み出し、認証し、その実行を開始するＥＮＴＥＲＡＣ命令の実行をサポートする。ただし、プロセッサ１１０は、プロセッサ１１０にＡＣモジュール１９０を読み出させ、認証させ、及び／又はその実行を開始させる追加的な又は異なる命令をサポートしてもよい。これら他の命令は、ＡＣモジュール１９０を起動する変形例であってもよく、或いは、より大きいタスクを成し遂げるのを助けるためにＡＣモジュール１９０を起動させる他のオペレーションに関するものであってもよい。例えば信頼できるコンピュータ環境を確立するなどの別のオペレーションの副次的な効果としてＡＣモジュール１９０を読み出し、認証し、起動させることができる命令も存在するという事実はあるが、特に断りのない限り、ＥＮＴＥＲＡＣ命令及び上記他の命令を、以下、ＡＣ起動命令と呼ぶ。
【００１４】
実施形態の一例において、プロセッサ１１０は、更に、ＡＣモジュール１９０の実行を終了させて、ポストＡＣコード（図６参照）を開始させるＥＸＩＴＡＣ命令の実行をサポートする。ただし、プロセッサ１１０は、プロセッサ１１０にＡＣモジュール１９０を終了させ、ポストＡＣコードを起動させる追加的な又は異なる命令をサポートしてもよい。これら他の命令は、ＡＣモジュール１９０を終了させるＥＸＩＴＡＣ命令の変形例であってもよく、或いは、ＡＣモジュール１９０がより大きいオペレーションの一部として終了させられる他のオペレーションに主として関連した命令であってもよい。例えば信頼できるコンピュータ環境を解体するなどの別のオペレーションの副次的効果としてＡＣモジュール１９０を終了させ、ポストＡＣコードを起動させることができる命令も存在するという事実はあるが、特に断りのない限り、ＥＸＩＴＡＣ命令及び上記他の命令を、以下、ＡＣ終了命令と呼ぶ。
【００１５】
チップセット１２０は、メモリ１４０へのアクセスを制御するメモリ・コントローラ１２２を有する。さらに、チップセット１２０は、プロセッサ１１０が実行前にＡＣモジュール１９０を認証するのに用いるキー１２４を有する。プロセッサ１１０のキー１１６と同様に、キー１２４は、対称暗号アルゴリズムの鍵であってもよく、或いは、非対称暗号アルゴリズムの鍵であってもよい。
【００１６】
また、チップセット１２０は、チップセット１２０の信頼できるプラットフォーム機能に関するステータス情報を制御し、提供するための信頼できるプラットフォーム・レジスタ１２６を有する。実施形態の一例において、チップセット１２０は、信頼できるプラットフォーム・レジスタ１２６をメモリ１４０のプライベート空間１４２及び／又は共用空間１４４にマッピングして、プロセッサ１１０が一貫した方法でその信頼できるプラットフォーム・レジスタ１２６にアクセスできるようにする。
【００１７】
例えば、チップセット１２０は、レジスタ１２６のサブセットを読み出し専用位置として共用空間１４４にマッピングすると共に、レジスタ１２６を読み出し／書き込み位置としてプライベート空間１４２にマッピングする。チップセット１２０は、最も特権が与えられたモードのプロセッサ１１０のみが特権読み書きトランザクションを用いてそのマッピングされたレジスタ１２６にアクセスできるように、プライベート空間１４２を設定する。さらに、チップセット１２０は、すべての特権モードのプロセッサ１１０が通常な読み書きトランザクションを用いてそのマッピングされたレジスタ１２６にアクセスできるように、共用空間１４４を設定する。また、チップセット１２０は、コマンド・レジスタ１２６にＯｐｅｎＰｒｉｖａｔｅコマンドが書き込まれると、プライベート空間１４２を開く。プライベート空間１４２が開かれると、プロセッサ１１０は、通常の特権でない読み書きトランザクションを用いて、共用空間１４４の場合と同じ方法で、プライベート空間１４２にアクセスできる。
【００１８】
コンピュータ装置１００の物理的トークン１５０は、完全性メトリックス（ｉｎｔｅｇｒｉｔｙ  ｍｅｔｒｉｃｓ）を記録すると共に、例えば暗号鍵などの秘密を記憶するプロテクト・ストレージを有する。物理的トークン１５０は、プロセッサ１１０及びチップセット１２０からのリクエストに呼応して、様々な完全性機能（ｉｎｔｅｇｒｉｔｙ  ｆｕｎｃｔｉｏｎ）を実行する。特に、物理的トークン１５０は、信頼できる方法で完全性メトリックスを記憶し、信頼できる方法で完全性メトリックスを引用し、特定の環境に対して暗号鍵などの秘密を封印し、そして、それらが封印された環境に対してのみ秘密を開封する。以下、「プラットフォーム・キー」という語を、特定のハードウェア及び／又はソフトウェア環境に対して封印されたキーを指すのに用いる。物理的トークン１５０は、多くの異なる方法で実現できる。ただし、実施形態の一例において、物理的トークン１５０は、Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｐｌａｔｆｏｒｍ  Ａｌｌｉａｎｃｅ（ＴＣＰＡ）の主仕様書のバージョン１.１（２００１年７月３１日付）に詳細に記載されたＴｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ（ＴＰＭ）の仕様に準拠して実施される。
【００１９】
プライベート・メモリ１６０は、ＡＣモジュール１９０を実行するべき１以上のプロセッサ１１０によるＡＣモジュール１９０へのアクセスを可能にすると共に、他のプロセッサ１１０及びコンピュータ装置１００の構成要素によるＡＣモジュール１９０の変更又はＡＣモジュール１９０の実行の妨害を防ぐように、ＡＣモジュール１９０を記憶する。図１Ａに示すように、プライベート・メモリ１６０は、例えば、ＡＣ起動命令を実行しているプロセッサ１１０のキャッシュ・メモリ１１２を用いて実現される。あるいは、プライベート・メモリ１６０は、図１Ｂに示すように、そのキャッシュ・メモリ１１２から分離されたプロセッサ１１０内部のメモリ・エリアとして実現されてもよい。また、プライベート・メモリ１６０は、図１Ｃに示すように、別体の専用バスを通じてプロセッサ１１０に結合された別体の外部メモリとして実現されてもよい。この場合、有効にＡＣ起動命令を実行するための当該外部メモリをプロセッサ１１０のみに持たせることができる。
【００２０】
また、プライベート・メモリ１６０は、システム・メモリ１４０を通じて実現されてもよい。このような一実施形態において、チップセット１２０及び／又はプロセッサ１１０は、メモリ１４０の特定の領域を、特定のプロセッサ１１０に制限することができると共に、特定の動作モードの時に該特定のプロセッサ１１０によってのみアクセスできるプライベート・メモリ１６０（図１Ｄ参照）と定義する。この実施例の１つの欠点は、プロセッサ１１０が、プライベート・メモリ１６０及びＡＣモジュール１９０にアクセスするのにメモリ・コントローラ１２２及びチップセット１２０に依存していることである。したがって、ＡＣモジュール１９０は、プロセッサ１１０のＡＣモジュール１９０へのアクセスを否定してプロセッサ１１０にＡＣモジュール１９０の実行を中止させることなく、メモリ・コントローラ１２２を再設定することができない。
【００２１】
また、プライベート・メモリ１６０は、図１Ｅに示すように、チップセット１２０の独立したプライベート・メモリ（ＰＭ）・コントローラ１２８に結合された別体のメモリとして実現されてもよい。このような一実施形態において、プライベート・メモリ・コントローラ１２８は、プライベート・メモリ１６０に対する独立したインターフェースを提供する。独立したプライベート・メモリ・コントローラ１２８を設けたことにより、プロセッサ１１０は、プロセッサ１１０がプライベート・メモリ１６０及びＡＣモジュール１９０にアクセスできるような方法で、システム・メモリ１４０に合わせてメモリ・コントローラ１２２を再設定することができる。一般に、独立したプライベート・メモリ・コントローラ１２８は、追加的メモリ及びメモリ・コントローラの犠牲において。図１Ｄに示した実施形態のいくつかの欠点を克服する。
【００２２】
ＡＣモジュール１９０は、様々な機械可読媒体１８０の任意のものにおいて提供される。媒体インターフェース１７０は、機械可読媒体１８０及びＡＣモジュール１９０へのインターフェースを提供する。機械可読媒体１８０は、マシン・インタフェース１７０による読み出しのための情報を、少なくとも一時的に、記憶することができる任意の媒体を有する。これは、例えば、（媒体としてワイヤ、光学、又は空気を通じた）信号伝送、及び／又は、様々な種類のディスクやメモリ記憶装置などの物理的ストリームを含む。
【００２３】
ここで図２を参照すると、ＡＣモジュール１９０の実施形態の一例がより詳細に示されている。ＡＣモジュール１９０は、コード２１０と、データ２２０とを有する。コード２１０は１以上のコード・ページ２１２を有し、データ２２０は１以上のデータ・ページ２２２を有する。実施形態の一例において、各コード・ページ２１２及びデータ・ページ２２２は、４キロバイトの連続したメモリ領域に対応する。しかし、コード２１０及びデータ２２０は、異なるページサイズで実施されてもよく、或いは、ページによらない態様で実施されてもよい。コード・ページ２１２は、１以上のプロセッサ１１０によって実行されるプロセッサ命令を有し、データ・ページ２２２は、１以上のプロセッサ１１０によってアクセスされるデータと、コード・ページ２１２の命令が実行されると１以上のプロセッサ１１０により生成されるデータを記憶するメモ帳（スクラッチ・パッド）とを有する。
【００２４】
ＡＣモジュール１９０は、更に、コード２１０又はデータ２２０の一部である１以上のヘッダ２３０を有する。ヘッダ２３０は、例えば、モジュール作者、著作権表示、モジュール・バージョン、モジュール実行ポイント位置、モジュール長、認証方法などのＡＣモジュール１９０に関する情報を提供する。ＡＣモジュール１９０は、更に、コード２１０、データ２２０、及び／又はヘッダ２３０の一部である署名２４０を有する。署名２４０は、ＡＣモジュール１９０、認証団体（エンティティ）、認証メッセージ、認証方法、及び／又はダイジェスト値に関する情報を提供する。
【００２５】
また、ＡＣモジュール１９０は、モジュール・マーカ２５０の終端を有する。モジュール・マーカ２５０の終端は、ＡＣモジュール１９０の終端を指定し、ＡＣモジュール１９０の長さを指定することへの代案として用いられる。例えば、コード・ページ２１２及びデータ・ページ２２２は連続して指定されてもよく、モジュール・マーカ２５０の終端はコード・ページ２１２及びデータ・ページ２２２の終端を伝達する所定のビットパターンを有してもよい。ＡＣモジュール１９０は、多くの様々な方法でその長さが指定され及び／又は終了することは明らかである。例えば、ヘッダ２３０は、ＡＣモジュール１９０が含むバイト数又はページ数を指定してもよい。あるいは、ＡＣ起動命令及びＡＣ終了命令は、ＡＣモジュール１９０が所定のバイト数の長さであること、又は、所定のページ数を含むことを期待してもよい。さらに、ＡＣ起動命令及びＡＣ終了命令は、ＡＣモジュール１９０の長さを指定するオペランドを有してもよい。
【００２６】
ＡＣモジュール１９０は、物理メモリ空間又は仮想メモリ空間において連続したメモリ１４０の連続した領域に常駐することは明らかである。物理的に連続であるか、仮想上連続であるかにかかわらず、ＡＣモジュール１９０が記憶されたメモリ１４０内の位置は、始まる位置と、長さ及び／又はモジュール・マーカ２５０の終端とによって指定される。あるいは、ＡＣモジュール１９０は、物理的にも仮想上でも連続せずにメモリ１４０に記憶されてもよい。例えば、ＡＣモジュール１９０は、例えばコンピュータ装置１００がメモリ１４０からＡＣモジュール１９０を検索して不連続に記憶することを許可するリンク付きリスト（ｌｉｎｋｅｄ  ｌｉｓｔ）などのデータ構造において記憶される。
【００２７】
以下により詳細に説明するように、プロセッサ１１０の一例は、プライベート・メモリ１６０内へＡＣモジュール１９０を読み出し、実行ポイント２６０からＡＣモジュール１９０の実行を開始するＡＣ起動命令をサポートする。そのようなＡＣ起動命令により起動するＡＣモジュール１９０は、プライベート・メモリ１６０内に読み出されたときに、ＡＣ起動命令の１以上のオペランドにより指定された場所を実行ポイント２６０とするコード２１０を有する。あるいは、ＡＣ起動命令により、プロセッサ１１０がＡＣモジュール１９０自体から実行ポイント２６０の位置を取得してもよい。例えば、コード２１０、データ２２０、ヘッダ２３０、及び／又は署名２４０は、実行ポイント２６０の位置を指定する１以上のフィールドを有してもよい。
【００２８】
以下により詳細に説明するように、プロセッサ１１０の一例は、実行前にＡＣモジュール１９０を認証するＡＣ起動命令をサポートする。したがって、ＡＣモジュール１９０は、プロセッサ１１０による信頼性判断をサポートするための情報を有する。例えば、署名２４０は、ダイジェスト値２４２を有してもよい。ダイジェスト値２４２は、例えば、ＡＣモジュール１９０をハッシュ（ｈａｓｈｉｎｇ）・アルゴリズム（例えばＳＨＡ−１やＭＤ５）又は他のアルゴリズムを通過させることによって、生成される。また、署名２４０は、ダイジェスト値２４２が変更されるのを防止するために、暗号化アルゴリズム（例えば、ＤＥＳ，３ＤＥＳ、ＡＥＳ、及び／又はＲＳＡアルゴリズム）を用いて暗号化されてもよい。実施形態の一例において、署名２４０は、公開鍵であるプロセッサ・キー１１６、チップセット・キー１２０、及び／又はプラットフォーム・キー１５２に対応した秘密鍵でＲＳＡ暗号化される。
【００２９】
ＡＣモジュール１９０が他のメカニズムを用いて認証されてもよいことは明らかである。例えば、ＡＣモジュール１９０は、異なるハッシュ・アルゴリズムや異なる暗号化アルゴリズムを利用することができる。さらに、ＡＣモジュール１９０は、いずれのアルゴリズムが使用されたかを示す情報を、コード２１０、データ２２０、ヘッダ２３０、及び／又は署名２４０内に有する。また、ＡＣモジュール１９０は、暗号解読のために、対称鍵又は非対称鍵であるプロセッサ・キー１１６、チップセット・キー１２４、又はプラットフォーム・キー１５２を用いてＡＣモジュール１９０全体を暗号化することによってプロテクトされてもよい。
【００３０】
プロセッサ１１０の実施形態の一例を図３により詳細に示す。図示したように、プロセッサ１１０は、フロント・エンド３０２と、レジスタ・ファイル３０６と、１以上の実行ユニット３７０と、回収ユニット又は後端３８０とを有する。フロント・エンド３０２は、プロセッサ・バス・インタフェース３０４と、命令レジスタ３１４及び命令ポインタ・レジスタ３１６を有する取り出しユニット３３０と、デコーダ３４０と、命令行列３５０と、１以上のキャッシュ・メモリ３６０とを有する。レジスタ・ファイル３０６は、汎用レジスタ３１２と、ステータス／制御レジスタ３１８と、他のレジスタ３２０とを有する。取り出しユニット３３０は、プロセッサ・バス・インタフェース３０４又はキャッシュ・メモリ３６０を経由したメモリ１４０からの命令ポインタ・レジスタ３１６によって指定された命令を取り出し、取り出した命令を命令レジスタ３１４に記憶する。
【００３１】
命令レジスタ３１４は、２以上の命令を含み得る。したがって、デコーダ３４０は、命令レジスタ３１４中の命令を識別し、識別された命令を実行に適した形で命令行列３５０に置く。例えば、デコーダ３４０は、識別された命令の各々について１以上のマイクロ操作（ｍｉｃｒｏ−ｏｐｅｒａｔｉｏｎｓ；ｕｏｐｓ）を生成し、命令行列３５０に記憶する。あるいは、デコーダ３４０は、識別された命令の各々について１つのマクロ操作（ｍａｃｒｏ−ｏｐｅｒａｔｉｏｎ；Ｍｏｐ）を生成し、命令行列３５０に記憶してもよい。特に断りのない限り、ｏｐｓという語は、以下、ｕｏｐｓ及びＭｏｐの双方を指すのに用いられる。
【００３２】
プロセッサ１１０は、更に、命令行列３５０のｏｐｓによって命じられたオペレーションを実行する１以上の実行ユニット３７０を有する。例えば、実行ユニット３７０は、ハッシュ・ユニット、暗号解読ユニット、及び／又はＡＣモジュール１９０を認証するのに用いることができる認証オペレーションを実施するマイクロコード・ユニットを有してもよい。実行ユニット３７０は、命令行列３５０に記憶されたｏｐｓの実行を順番に実行する。しかし、実施形態の一例として、プロセッサ１１０は、実行ユニット３７０によるｏｐｓのランダムな実行をサポートしてもよい。このような一実施形態において、プロセッサ１１０は、更に、命令行列３５０からｏｐｓを順に削除すると共に、結果が適切な順序となるようにｏｐｓ実行の結果を１以上のレジスタ３１２、３１４、３１６、３１８、３２０へコミットする回収ユニット３８０を有してもよい。
【００３３】
デコーダ３４０は、識別された一ＡＣ起動命令について１以上のｏｐｓを生成し、実行ユニット３７０は、生成されたｏｐｓが実行されると、ＡＣモジュール１９０を読み出し、認証し、及び／又はその実行を開始する。さらに、デコーダ３４０は、識別された一ＡＣ終了命令について１以上のｏｐｓを生成し、実行ユニット３７０は、生成されたｏｐｓが実行されるのに呼応して、ＡＣモジュール１９０の実行を終了させ、コンピュータ装置１００のセキュリティ態様を調整し、及び／又はポストＡＣコードの実行を開始する。
【００３４】
特に、デコーダ３４０は、ＡＣ起動命令と該ＡＣ起動命令に関連する０以上のオペランドとに応じて１以上のｏｐｓを生成する。各ＡＣ起動命令とその関連するオペランドは、ＡＣモジュール１９０を起動させるパラメータを指定する。例えば、ＡＣ起動命令及び／又はオペランドは、ＡＣモジュールの位置、ＡＣモジュールの長さ、及び／又はＡＣモジュールの実行ポイントなどのＡＣモジュール１９０に関するパラメータを指定する。また、ＡＣ起動命令及び／又はオペランドは、例えば、プライベート・メモリの位置、プライベート・メモリの長さ、及び／又はプライベート・メモリの実施などのプライベート・メモリ１６０に関するパラメータも指定する。さらに、ＡＣ起動命令及び／又はオペランドは、使用されるべき認証アルゴリズム、ハッシュ・アルゴリズム、暗号解読アルゴリズム、及び／又は他のアルゴリズムの指定などのＡＣモジュール１９０を認証するパラメータも指定する。さらに、ＡＣ起動命令及び／又はオペランドは、例えば、キーの長さ、キーの位置、及び／又はキーなどのアルゴリズムについてのパラメータも指定する。さらに、ＡＣ起動命令及び／又はオペランドは、例えば、マスクされる／マスクされないイベント及び／又は更新されるセキュリティ能力の指定などのＡＣモジュール起動のためにコンピュータ・システム１００を設定するパラメータも指定する。
【００３５】
ＡＣ起動命令及び／又はオペランドは、上記よりも少ないパラメータ、上記に追加されたパラメータ、及び／又は上記と異なるパラメータ、を提供してもよい。さらに、ＡＣ起動命令は、０以上の明示オペランド及び／又は暗示オペランドを有し得る。例えば、ＡＣ起動命令は、ＡＣ起動命令自体がこれらのオペランドの位置を定義するフィールドを有していないにもかかわらず、プロセッサ・レジスタ及び／又はメモリ位置によって暗示的に指定されたオペランド値を有してもよい。さらに、ＡＣ起動命令は、例えば、生データ、レジスタＩＤ、絶対アドレス、及び／又は相対アドレスなどのオペランドを様々な手法を用いて明示的に指定してもよい。
【００３６】
また、デコーダ３４０は、ＡＣ終了命令と、該ＡＣ終了命令に関連した０以上のオペランドとに応じた１以上のｏｐｓを生成する。各ＡＣ終了命令及び関連したオペランドは、ＡＣモジュール１９０の実行を終了させるパラメータを指定する。例えば、ＡＣ終了命令及び／又はオペランドは、ＡＣモジュールの位置及び／又はＡＣモジュールの長さなどのＡＣモジュール１９０に関するパラメータを指定してもよい。また、ＡＣ終了命令及び／又はオペランドは、例えば、プライベート・メモリの位置、プライベート・メモリの長さ、及び／又はプライベート・メモリの実施などのプライベート・メモリ１６０に関するパラメータを指定する。ＡＣ終了命令及び／又はオペランドは、例えば、起動方法及び／又はポストＡＣコード実行ポイントなどのポストＡＣコードの起動に関するパラメータを指定する。さらに、ＡＣ終了命令及び／又はオペランドは、例えば、マスクされる／マスクが取られるイベント及び／又は更新されるセキュリティ能力の指定などのポストＡＣコード実行用にコンピュータ・システム１００を設定するパラメータを指定する。
【００３７】
ＡＣ終了命令及び／又はオペランドは、上記よりも少ないパラメータ、及び／又は上記と異なるパラメータ、を提供してもよい。さらに、ＡＣ終了命令は、ＡＣ起動命令について既に説明したように、０以上の明示オペランド及び／又は暗示オペランドを有してもよい。
【００３８】
ここで図４を参照すると、ＡＣモジュール１９０を起動する方法４００が図示されている。特に、方法４００は、認証オペランド、モジュール・オペランド、及び長さオペランドを有するＥＮＴＥＲＡＣ命令の一例が実行されたときのプロセッサ１１０のオペレーションについて示している。しかし、当業者は、必要以上の実験無しで、より少ないオペランドを持つ、追加的なオペランドを持つ、及び／又は異なるオペランドを持つ他のＡＣ起動命令を実施することができる。
【００３９】
ブロック４０４において、プロセッサ１１０は、ＡＣモジュール１９０の実行を開始するのに環境が適切であるか否かを判断する。例えば、プロセッサ１１０は、その現在の特権レベル、動作モード、及び／又はアドレス指定モードが適切であることを確認する。さらに、プロセッサが複数のハードウェア・スレッドをサポートする場合、プロセッサは、他のすべてのスレッドが停止したことを確認する。さらに、プロセッサ１１０は、チップセット１２０が一定の要件を満たしていることを確認する。ＥＮＴＥＲＡＣ命令の実施形態の一例において、プロセッサ１１０は、プロセッサ１１０がプロテクト・フラット動作モードであり、プロセッサの現在の特権レベルが０であり、プロセッサ１１０が他のすべての実行スレッドを停止させており、且つ、チップセット１２０が１以上のレジスタ１２６によって示された信頼できるプラットフォーム能力を提供している、と判断されたのに呼応して、環境が適切であると判断する。ＡＣ起動命令の他の実施形態として、異なる適切な環境が定義されてもよい。他のＡＣ起動命令及び／又は関連したオペランドとして、プロセッサ１１０にその環境についてより少なくパラメータ、追加的なパラメータ、及び／又は異なるパラメータを確認させる環境要件が指定されてもよい。
【００４０】
環境がＡＣモジュール１９０を起動するには不適切であると判断されると、プロセッサ１１０は、適切なエラーコードを用いてＥＮＴＥＲＡＣ命令を終了させる（ブロック４０８）。あるいは、プロセッサ１１０は、ＥＮＴＥＲＡＣ命令のエミュレーションを可能にするために、いくつかの信頼できるソフトウェア・レイヤに対してトラップを掛けてもよい。
【００４１】
環境がＡＣモジュール１９０を起動するのに適切であると判断されると、ブロック４１４において、プロセッサ１１０は、ＡＣモジュール１９０の起動をサポートするイベント処理を更新する。ＥＮＴＥＲＡＣ命令の実施形態の一例において、プロセッサ１１０は、ＩＮＴＲ、ＮＭＩ、ＳＭＩ、ＩＮＩＴ、及びＡ２０Ｍイベントの処理をマスクする。他のＡＣ起動命令及び／又は関連するオペランドは、より少ないイベントのマスキング、追加的イベントのマスキング、及び／又は異なるイベントのマスキング、を指定してもよい。さらに、他のＡＣ起動命令及び／又は関連するオペランドは、マスクされるイベントとマスクが取られるイベントとを明示的に指定してもよい。あるいは、他の実施形態として、コンピュータ装置１００にマスキング・イベントに呼応して例えばＡＣモジュール１９０のイベント・ハンドラなどの信頼できるコードを実行させることによってマスキング・イベントが回避されてもよい。
【００４２】
ブロック４１６において、プロセッサ１１０は、ＡＣモジュール１９０の起動中及び実行中に、他のプロセッサ１１０及びチップセット１２０がプロセッサ・バス１３０の所有権を取得しないように、プロセッサ・バス１３０をロックする。ＥＮＴＥＲＡＣ命令の実施形態の一例において、プロセッサ１１０は、他のプロセッサ１１０及びチップセット１２０にＬＴ．ＰＲＯＣＥＳＳＯＲ．ＨＯＬＤバス・メッセージを提供する特殊なトランザクションを生成することによって、プロセッサ・バス１３０の排他的所有権を取得する。ＡＣ起動命令及び／又は関連するオペランドの他の実施形態として、プロセッサ・バス１３０がロックされないままでいるように指定されてもよく、或いは、異なる方法でプロセッサ・バス１３０をロックするように指定されてもよい。
【００４３】
ブロック４２０において、プロセッサ１１０は、ＡＣモジュール１９０を受信するためにそのプライベート・メモリ１６０を設定する。プロセッサ１１０は、プライベート・メモリ１６０の中身を明らかにすると共に、プロセッサ１１０がプライベート・メモリ１６０にアクセスできるようにプライベート・メモリ１６０に接続された制御構造を設定する。ＥＮＴＥＲＡＣ命令の実施形態の一例において、プロセッサ１１０は、１以上のコントロール・レジスタを更新してキャッシュ・メモリ１１２をキャッシュ・アズ・ラム・モードに切り替え、そのキャッシュ・メモリ１１２の中身を破棄にする。
【００４４】
他のＡＣ起動命令及び／又は関連するオペランドとして、プライベート・メモリ１６０の異なる実施のためのプライベート・メモリ・パラメータが指定されてもよい（例えば図１Ａ〜１Ｅ参照）。したがって、プロセッサ１１０は、これらの他のＡＣ起動命令を実行する際、異なるオペレーションを実行してＡＣモジュール１９０のためにプライベート・メモリ１６０を準備してもよい。例えば、プロセッサ１１０は、プライベート・メモリ１６０に接続されたメモリ・コントローラ（例えば、図１ＥのＰＭコントローラ１２８）をイネーブルする又は設定する。また、プロセッサ１１０は、プライベート・メモリ１６０にクリア信号、リセット信号、及び／又は無効信号を提供してプライベート・メモリ１６０をクリアしてもよい。あるいは、プロセッサ１１０は、ＡＣ起動命令及び／又はオペランドによって指定されたプライベート・メモリ１６０をクリアするために、０又は他のビットパターンをプライベート・メモリ１６０に書き込んでもよく、及び／又は、プライベート・メモリ１６０からパワーを取り除いてもよく、及び／又は、他のメカニズムを利用してもよい。
【００４５】
ブロック４２４において、プロセッサ１１０は、そのプライベート・メモリ１６０内にＡＣモジュール１９０を読み出す。ＥＮＴＥＲＡＣ命令の実施形態の一例において、プロセッサ１１０は、メモリ１４０内のアドレス・オペランドによって指定された位置から長さオペランドによって指定された複数バイトがそのキャッシュ・メモリ１１２へ転送されるまでの読み出しを開始する。ＡＣ起動命令及び／又は関連するオペランドの他の実施形態として、ＡＣモジュール１９０を異なる方法でプライベート・メモリ１６０内へ読み出すためのパラメータが指定されてもよい。例えば、他のＡＣ起動命令及び／又は関連するオペランドとして、ＡＣモジュール１９０の位置、プライベート・メモリ１６０の位置、ＡＣモジュール１９０はプライベート・メモリ１６０内のどこに読み出されるべきか、及び／又は、ＡＣモジュール１９０の終端、が多くの異なる方法で指定されてもよい。
【００４６】
ブロック４２８において、プロセッサ１１０は、更に、プライベート・メモリ１６０をロックする。ＥＮＴＥＲＡＣ命令の実施形態の一例において、プロセッサ１１０は、１以上のコントロール・レジスタを更新し、そのキャッシュ・メモリ１１２をロックして、プロセッサ又はＩ／Ｏ機器からの詮索要求などの外部イベントがＡＣモジュール１９０の記憶されたラインを変更することを防止する。しかし、他のＡＣ起動命令及び／又は関連するオペランドとして、プロセッサ１１０に対して他のオペレーションが指定されてもよい。例えば、プロセッサ１１０は、プライベート・メモリ１６０に接続されたメモリ・コントローラ（例えば、図１ＥのＰＭコントローラ１２８）を設定して、他のプロセッサ１１０及び／又はチップセット１２０がプライベート・メモリ１６０にアクセスすることを防止してもよい。実施形態によっては、プライベート・メモリ１６０が既に十分にロックされているために、ブロック４２８においてプロセッサ１１０が何らのアクションも行わない場合もあり得る。
【００４７】
ブロック４３２において、プロセッサは、そのプライベート・メモリ１６０に記憶されたＡＣモジュール１９０が信頼できるか否かを、ＥＮＴＥＲＡＣ命令のプロテクション・オペランドによって指定されたプロテクション・メカニズムに基づいて、決定する。ＥＮＴＥＲＡＣ命令の実施形態の一例において、プロセッサ１１０は、プロテクション・オペランドによって指定されたプロセッサ・キー１１６、チップセット・キー１２４、及び／又はプラットフォーム・キー１５２を検索する。次いで、プロセッサ１１０は、検索されたキーを用いてＡＣモジュール１９０の署名２４０をＲＳＡ復号化し、ダイジェスト値２４２を得る。プロセッサ１１０は、更に、ＳＨＡ−１ハッシュを用いてＡＣモジュール１９０をハッシュ（ｈａｓｈ）して計算されたダイジェスト値を得る。次いで、プロセッサ１１０は、計算されたダイジェスト値とダイジェスト値２４２とが期待された関係（例えば、互いに等しい）を有する場合に、ＡＣモジュール１９０を信頼できると判断する。期待された関係を有しない場合、プロセッサ１１０は、ＡＣモジュール１９０が信頼できないと判断する。
【００４８】
他のＡＣ起動命令及び／又は関連するオペランドとして、異なる認証パラメータが指定されてもよい。例えば、他のＡＣ起動命令及び／又は関連するオペランドは、異なる認証方法、異なる暗号解読アルゴリズム、及び／又は異なるハッシュ・アルゴリズムを指定してもよい。他のＡＣ起動命令及び／又は関連するオペランドは、更に、異なるキー長さを指定してもよく、及び／又は、異なるキー位置を指定してもよく、及び／又は、ＡＣモジュール１９０を認証するキーを指定してもよい。
【００４９】
ＡＣモジュール１９０が信頼できないと判断されると、プロセッサ１１０は、ブロック４３６において、エラーコードを生成し、ＡＣ起動命令の実行を終了させる。信頼できると判断されると、プロセッサ１１０は、ブロック４４０において、コンピュータ装置１００のセキュリティ態様を更新してＡＣモジュール１９０の実行をサポートする。ＥＮＴＥＲＡＣ命令の実施形態の一例において、プロセッサ１１０は、ブロック４４０において、チップセット１２０のコマンド・レジスタ１２６にＯｐｅｎＰｒｉｖａｔｅコマンドを書き込み、プロセッサ１１０が通常の特権がない読み書きトランザクションを用いてプライベート空間１４２経由でレジスタ１２６にアクセスできるようにする。
【００５０】
他のＡＣ起動命令及び／又は関連するオペランドとして、ＡＣモジュール実行のためにコンピュータ装置１００を設定する他のオペレーションが指定されてもよい。例えば、ＡＣ起動命令及び／又は関連するオペランドは、プロセッサ１１０がプライベート空間１４２を現状のままにしておくことを指定してもよい。また、ＡＣ起動命令及び／又は関連するオペランドは、プロセッサ１１０がプロテクトされたメモリ領域、プロテクトされた記憶装置、記憶装置のプロテクトされたパーティション、記憶装置のプロテクトされたファイルなどの特定のコンピュータ・リソースへのアクセスをイネーブル及び／又はディスエブルすることを指定してもよい。
【００５１】
コンピュータ装置１００のセキュリティ態様を更新した後、プロセッサ１１０は、ブロック４４４において、ＡＣモジュール１９０の実行を開始する。ＥＮＴＥＲＡＣ命令の実施形態の一例として、プロセッサ１１０がモジュール・オペランドによって提供された物理アドレスを用いてその命令ポインタ・レジスタ３１６を読み出し、これよりプロセッサ１１０が該物理アドレスによって指定された実行ポイント２６０へジャンプして該実行ポイント２６０からＡＣモジュール１９０を実行するようにしてもよい。他のＡＣ起動命令及び／又は関連するオペランドとして、実行ポイント２６０の位置は多くの代替方法で指定されてもよい。例えば、ＡＣ起動命令及び／又は関連するオペランドは、プロセッサ１１０が実行ポイント２６０の位置をＡＣモジュール１９０自体から取得するようにするものであってもよい。
ここで図５を参照すると、ＡＣモジュール１９０を終了させる方法５００が示されている。特に、方法５００は、プロテクト・オペランド、イベント・オペランド、及び起動オペランドを有するＥＸＩＴＡＣ命令の一例が実行されたときのプロセッサ１１０のオペレーションを示す。しかし、当業者は、必要以上の実験無しで、より少ないオペランドを持つ、追加的なオペランドを持つ、及び／又は異なるオペランドを持つ他のＡＣ終了命令を実施することができる。
【００５２】
ブロック５０４において、プロセッサ１１０は、プライベート・メモリ１６０をクリア及び／又は再設定してプライベート・メモリ１６０に記憶されたＡＣモジュール１９０への更なるアクセスを防止する。ＥＸＩＴＡＣ命令の実施形態の一例において、プロセッサ１１０は、そのキャッシュ・メモリ１１２を無効にし、コントロール・レジスタを更新してキャッシュ・メモリ１１２を通常のキャッシュ・モード・オペレーションに切り換える。
【００５３】
ＡＣ終了命令及び／又は関連するオペランドは、プライベート・メモリ１６０の様々な実施（例えば、図１Ａ〜１Ｅ参照）についてプライベート・メモリ・パラメータを指定する。したがって、ＡＣ終了命令及び／又は関連するオペランドは、ポストＡＣコード実行のためにコンピュータ装置１００を準備するためにプロセッサ１１０に様々なオペレーションを実行させる。例えば、プロセッサ１１０は、ＡＣモジュール１９０への更なるアクセスを防止するために、プライベート・メモリ１６０に接続されたメモリ・コントローラ（例えば、図１ＥのＰＭコントローラ１２８）をディスエブルしてもよい。また、プロセッサ１１０は、プライベート・メモリ１６０にクリア信号、リセット信号、及び／又は無効信号を提供してプライベート・メモリ１６０をクリアしてもよい。あるいは、プロセッサ１１０は、ＡＣ終了命令及び／又は関連するオペランドによって指定されたプライベート・メモリ１６０をクリアするために、プライベート・メモリ１６０に０又は他のビットパターンを書き込んでもよく、及び／又は、プライベート・メモリ１６０からパワーを取り除いてもよく、及び／又は、他のメカニズムを利用してもよい。
【００５４】
プロセッサ１１０は、ブロック５０６において、ポストＡＣコード実行をサポートするプロテクション・オペランドに基づいて、コンピュータ装置１００のセキュリティ態様を更新する。ＥＸＩＴＡＣ命令の実施形態の一例において、プロテクション・オペランドは、プロセッサ１１０がプライベート空間１４２を閉じるべきか或いは現状のままにしておくべきかを指定する。プライベート空間１４２を現状のままにしておくと判断されると、プロセッサ１１０は、ブロック５１０へ進む。プライベート空間１４２を閉じると判断されると、プロセッサ１１０は、ＣｌｏｓｅＰｒｉｖａｔｅコマンドをコマンド・レジスタ１２６に書き込むことによってプライベート空間１４２を閉じ、プロセッサ１１０がプライベート空間１４２に対する通常の特権がない読み書きトランザクションを通じてレジスタ１２６へ更にアクセスすることを防止する。
【００５５】
別の実施形態に係るＡＣ終了命令及び／又は関連するオペランドとして、プロセッサ１１０にＡＣモジュール１９０後のコードの実行をサポートするためにコンピュータ装置１００の他のセキュリティ態様を更新させるようにしてもよい。例えば、ＡＣ終了命令及び／又は関連するオペランドは、プロセッサ１１０がプロテクトされたメモリ領域、プロテクトされた記憶装置、記憶装置のプロテクトされたパーティション、記憶装置のプロテクトされたファイルなどの特定のコンピュータ・リソースへのアクセスをイネーブル及び／又はディスエブルすると指定してもよい。
【００５６】
プロセッサ１１０は、ブロック５１０において、プロセッサ・バス１３０のロックを解除し、他のプロセッサ１１０及びチップセット１２０がプロセッサ・バス１３０の所有権を取得することを可能にする。ＥＸＩＴＡＣ命令の実施形態の一例において、プロセッサ１１０は、他のプロセッサ１１０及びチップセット１２０にＬＴ．ＰＲＯＣＥＳＳＯＲ．ＲＥＬＥＡＳＥバス・メッセージを提供する特殊なトランザクションを生成することによって、プロセッサ・バス１３０の排他的所有権を解放する。ＡＣ終了命令及び／又は関連するオペランドの他の実施形態として、プロセッサ・バス１３０がロックされたままにされることが指定されてもよく、或いは、プロセッサ・バス１３０のロックを解除するための様々な方法が指定されてもよい。
【００５７】
プロセッサ１１０は、ブロック５１４において、マスク・オペランドに基づいて、イベント処理を更新する。ＥＸＩＴＡＣ命令の実施形態の一例において、マスク・オペランドは、プロセッサ１１０がイベント処理をイネーブルすべきか或いはイベント処理を現状のままにしておくべきかを指定する。イベント処理を現状のままにすると判断されると、プロセッサ１１０は、ブロック５１６へ進む。イベント処理をイネーブルすると判断されると、プロセッサ１１０はＩＮＴＲ、ＮＭＩ、ＳＭＩ、ＩＮＩＴ、及びＡ２０Ｍイベントのマスクを取り、そのようなイベントの処理を可能にする。他のＡＣ終了命令及び／又は関連するオペランドとして、より少ないイベントのマスクを取ることが指定されてもよく、及び／又は、追加的イベントのマスクを取ることが指定されてもよく、及び／又は、異なるイベントのマスクを取ることが指定されてもよい。さらに、他のＡＣ終了命令及び／又は関連するオペランドとして、マスクされるイベント及びマスクされないイベントが明示的に指定されてもよい。
【００５８】
プロセッサ１１０は、ブロック５１６において、ＡＣモジュール１９０の実行を終了させ、起動オペランドによって指定されたポストＡＣコードを起動する。ＥＸＩＴＡＣ命令の実施形態の一例において、プロセッサ１１０は、起動オペランドによって指定されたコード・セグメント及びセグメント・オフセットを用いてそのコード・セグメント・レジスタ及び命令ポインタ・レジスタを更新する。結果として、プロセッサ１１０は、コード・セグメント及びセグメント・オフセットによって指定されたポストＡＣコードの実行ポイントへジャンプし、該実行ポイントから該ポストＡＣカードを実行する。
【００５９】
他のＡＣ終了モジュール及び／又は関連したオペランドとして、多くの様々な方法でポストＡＣコードの実行ポイントが指定されてもよい。例えば、ＡＣ起動命令は、プロセッサ１１０にポストＡＣコードの実行ポイントを識別するために現在の命令ポインタを保存させるようにしてもよい。このような一実施形態において、ＡＣ終了命令は、ＡＣ起動命令によって保存された実行ポイントを検索し、検索された実行ポイントからポストＡＣコードの実行を開始する。この方法において、ＡＣ終了命令は、ＡＣ起動命令に続く命令に実行を返す。さらに、このような一実施形態において、ＡＣモジュール１９０は、関数呼び出し又はシステム・コールのように、読み出しコードによって呼び出されたように見える。
【００６０】
コンピュータ装置１００の別の実施形態を図６に示す。コンピュータ装置１００は、プロセッサ１１０、プロセッサ１１０にメモリ空間６４０へのアクセスを提供するメモリ・インターフェース６２０、及び、プロセッサ１１０に媒体１８０へのアクセスを提供する媒体インターフェース１７０、を有する。メモリ空間６４０は、複数の機械可読媒体にまたがっているかもしれないアドレス空間、システム・メモリ１４０、プライベート・メモリ１６０、ハードディスク・ストレージ、ネットワーク・ストレージなどを有する（図１Ａ〜１Ｅ参照）。プロセッサ１１０は、例えばファームウェアなどの複数の機械可読媒体からのコードを実行し得る。メモリ空間６４０は、プレＡＣコード６４２、ＡＣモジュール１９０、及び、ポストＡＣコード６４６を有する。プレＡＣコード６４２は、オペレーティング・システム・コード、システム・ライブラリ・コード、共有ライブラリ・コード、アプリケーション・コード、ファームウェア・ルーチン、ＢＩＯＳルーチン、及び／又は、ＡＣモジュール１９０の実行を起動する他のルーチン、を有する。ポストＡＣコード６４６は、同様に、オペレーティング・システム・コード、システム・ライブラリ・コード、共有ライブラリ・コード、アプリケーション・コード、ファームウェア・ルーチン、ＢＩＯＳルーチン、及び／又は、ＡＣモジュール１９０後に実行される他のルーチン、を有する。プレＡＣコード６４２及びポストＡＣコード６４６は同じソフトウェア及び／又はファームウェア・モジュールであっても、異なるソフトウェア及び／又はファームウェア・モジュールであってもよい、ことを明らかである。
【００６１】
ＡＣモジュールの起動及び終了の実施形態の一例を図７Ａに示す。ブロック７０４において、コンピュータ装置１００は、プレＡＣコード６４２が実行されると、ＡＣモジュール１９０をメモリ空間６４０に記憶する。実施形態の一例において、コンピュータ装置１００は、媒体インターフェース１７０を通じて機械可読媒体１８０からＡＣモジュール１９０を検索し、メモリ空間６４０にＡＣモジュール１９０を記憶する。例えば、コンピュータ装置１００は、ファームウェア、ハードドライブ、システム・メモリ、ネットワーク・ストレージ、ファイル・サーバ、ウェブ・サーバなどからＡＣモジュール１９０を検索し、検索されたＡＣモジュール１９０をコンピュータ装置１００のシステム・メモリ１４０内に記憶する。
【００６２】
ブロック７０８において、コンピュータ装置１００は、プレＡＣコード６４２が実行されると、ＡＣモジュール１９０を読み出し、認証し、その実行を開始する。例えば、プレＡＣコード６４２は、コンピュータ装置１００にＡＣモジュール１９０をメモリ空間６４０のプライベート・メモリ１６０に転送させ、ＡＣモジュール１９０を認証させ、そしてＡＣモジュール１９０の実行をその実行ポイントから起動させるＥＮＴＥＲＡＣ命令又は別のＡＣ起動命令を有する。あるいは、プレＡＣコード６４２は、コンピュータ装置１００にＡＣモジュール１９０をメモリ空間６４０のプライベート・メモリ１６０に転送させ、ＡＣモジュール１９０を認証させ、そしてＡＣモジュール１９０の実行をその実行ポイントから起動させる一連の命令群を有する。
【００６３】
ブロック７１２において、コンピュータ装置１００は、ＡＣモジュール１９０のコード２１０（図２参照）を実行する。コンピュータ装置１００は、ブロック７１６において、ＡＣモジュール１９０の実行を終了させ、メモリ空間６４０のポストＡＣコード６４６の実行を開始する。例えば、ＡＣモジュール１９０は、コンピュータ装置１００にＡＣモジュール１９０の実行を終了させ、コンピュータ装置１００のセキュリティ態様を更新させ、ポストＡＣコード６４６の実行ポイントからポストＡＣコード６４６の実行を開始させるＥＸＩＴＡＣ命令又は別のＡＣ終了命令を有する。あるいは、ＡＣモジュール１９０は、コンピュータ装置１００にＡＣモジュール１９０の実行を終了させ、ポストＡＣコード６４６の実行をポストＡＣコード６４６の実行ポイントから開始させる一連の命令群を有してもよい。
【００６４】
ＡＣモジュールを起動させ、終了させる実施形態の別の一例を図７Ｂに示す。ブロック７４０において、コンピュータ装置１００は、プレＡＣコード６４２が実行されると、ＡＣモジュール１９０をメモリ空間６４０に記憶する。実施形態の一例において、コンピュータ装置１００は、媒体インターフェース１７０を通じて機械可読媒体１８０からＡＣモジュール１９０を検索し、メモリ空間６４０にＡＣモジュール１９０を記憶する。例えば、コンピュータ装置１００は、ファームウェア、ハードドライブ、システム・メモリ、ネットワーク・ストレージ、ファイル・サーバ、ウェブ・サーバなどからＡＣモジュール１９０を検索し、検索されたＡＣモジュール１９０をコンピュータ装置１００のシステム・メモリ１４０内に記憶する。
【００６５】
ブロック７４４において、コンピュータ装置１００は、プレＡＣコード６４２が実行されると、ＡＣモジュール１９０を読み出し、認証し、その実行を開始する。ブロック７４４において、コンピュータ装置１００は、更に、命令ポインタに基づくポストＡＣコード６４６の実行ポイントを保存する。例えば、プレＡＣコード６４２は、コンピュータ装置１００にＡＣモジュール１９０をメモリ空間６４０のプライベート・メモリ１６０に転送させ、ＡＣモジュール１９０を認証させ、ＡＣモジュール１９０の実行をその実行ポイントから起動させ、そしてＡＣモジュール１９０実行後にプロセッサ１１０がＡＣ起動命令に続く命令に戻れるように命令ポインタを保存させるＥＮＴＥＲＡＣ命令又は別のＡＣ起動命令を有する。あるいは、プレＡＣコード６４２は、コンピュータ装置１００にＡＣモジュール１９０をメモリ空間６４０のプライベート・メモリ１６０に転送させ、ＡＣモジュール１９０を認証させ、ＡＣモジュール１９０の実行をその実行ポイントから起動させ、そして命令ポインタを保存させる一連の命令群を有する。
【００６６】
ブロック７４８において、コンピュータ装置１００は、ＡＣモジュール１９０のコード２１０（図２参照）を実行する。ブロック７５２において、コンピュータ装置１００は、ＡＣモジュール１９０の実行を終了させ、ブロック７４４において保存された命令ポインタに基づく実行ポイントを読み出し、ＡＣ起動命令に続く命令の実行又はブロック７４４において実行された一連の命令群を開始する。例えば、ＡＣモジュール１９０は、コンピュータ装置１００にＡＣモジュール１９０の実行を終了させ、コンピュータ装置１００のセキュリティ態様を更新させ、ブロック７４４において保存された命令ポインタによって指定されたポストＡＣコード６４６の実行ポイントからポストＡＣコード６４６の実行を開始させるＥＸＩＴＡＣ命令又は別のＡＣ終了命令を有する。あるいは、ＡＣモジュール１９０は、コンピュータ装置１００にＡＣモジュール１９０の実行を終了させ、コンピュータ装置１００のセキュリティ態様を更新させ、ブロック７４４において保存された命令ポインタによって指定されたポストＡＣコード６４６の実行ポイントからポストＡＣコード６４６の実行を開始させる一連の命令群を有してもよい。
【００６７】
図８は、開示された手法を用いたデザインのシミュレーション、エミュレーション、及び組立のための様々なデザイン表現又は形式を示す。デザインを表すデータは、多くの方法でデザインを表すことができる。第一に、シミュレーションに有用なものとして、ハードウェアは、ハードウェア記述言語（ＨＤＬ）又は本質的にデザインされたハードウェアがどのように機能することが期待されているのかをコンピュータ化したモデルを提供する別の機能記述言語を用いて、表すことができる。ハードウェア・モデル８１０は、該モデルが実際に機能するか否かを判断するためにハードウェア・モデル８１０に特定のテスト・スイート８３０を適用するシミュレーション・ソフトウェア８２０を用いて該モデルをシミュレーションすることができるように、コンピュータ・メモリなどの記憶媒体８００に記憶される。実施形態によっては、シミュレーション・ソフトウェアが、媒体に記録されず、取り込まれず、含まれもしない場合もある。
【００６８】
加えて、ロジック及び／又はトランジスタ・ゲートを備えた回路レベルのモデルが、設計過程のいくつかの段階で作成されてもよい。このモデルも同じようにシミュレーションすることができる。プログラム可能ロジックを用いて該モデルを形成する専用ハードウェア・シミュレータによる場合もある。この種のシミュレーションは、エミュレーション手法となり得る。いずれにしても、再構成可能なハードウェアは、開示された手法を採用してモデルを記憶する機械可読媒体に関係する別の実施形態である。
【００６９】
さらに、ほとんどのデザインは、いくつかのステージにおいて、ハードウェア・モデルの様々な機器の物理的な配置を表すデータのレベルに到達する。従来の半導体製造手法が用いられる場合、ハードウェア・モデルを表すデータは、例えば、集積回路を製造するのに用いられたマスク用の様々なマスク層上の様々な特徴の存在又は不存在を指定するデータである。再記するが、集積回路を表すこのデータは、データ内の電気回路又はロジックがこれらの手法を実行するのにシミュレーションする又は組み立てることができるという点で開示された手法を具現化する。
【００７０】
デザインがどのように表現されても、データは、任意の形のコンピュータ可読媒体に記憶される。媒体とは、例えば、このような情報を送信するために変調された又は別の方法で生成された光又は電気の波８６０や、メモリ８５０や、或いは、磁気又は光学式のストレージ（ディスクなど）８４０などである。デザイン又はデザインの特定の部分を描写するビット群は、それ自体が売り物になる或いは更なる設計又は組立のために他人によって用いられ得る物品である。
【００７１】
特定の例示的な実施形態について説明し、添付図面に示したが、これら実施形態は単なる例示であり、広義の発明に対する制限ではないこと、及び、本発明は図示し説明した具体的構造及び構成に限定されないことは明らかである。なぜなら、本開示を研究した当業者には、様々な他の修正が思い付くであろうからである。
【図面の簡単な説明】
【００７２】
【図１Ａ】プライベート・メモリを有するコンピュータ装置の実施形態の一例を示す図である。
【図１Ｂ】プライベート・メモリを有するコンピュータ装置の実施形態の一例を示す図である。
【図１Ｃ】プライベート・メモリを有するコンピュータ装置の実施形態の一例を示す図である。
【図１Ｄ】プライベート・メモリを有するコンピュータ装置の実施形態の一例を示す図である。
【図１Ｅ】プライベート・メモリを有するコンピュータ装置の実施形態の一例を示す図である。
【図２】図１Ａ〜１Ｅに示したコンピュータ装置によって起動させられ得る認証コード（ＡＣ）モジュールの一例を示す図である。
【図３】図１Ａ〜１Ｅに示したコンピュータ装置のプロセッサの実施形態の一例を示す図である。
【図４】図２に示したＡＣモジュールを起動させる方法の一例を示す図である。
【図５】図２に示したＡＣモジュールの実行を終了させる方法の一例を示す図である。
【図６】図１Ａ〜１Ｅに示したコンピュータ装置の別の実施形態を示す図である。
【図７Ａ】図２に示したＡＣモジュールを起動させ、その実行を終了させる方法の一例を示す図である。
【図７Ｂ】図２に示したＡＣモジュールを起動させ、その実行を終了させる方法の一例を示す図である。
【図８】図１Ａ〜１Ｅに示したコンピュータ装置のプロセッサをシミュレーションし、エミュレートし、及び／又は、テストするシステムを示す図である。
【図１Ａ】
2006507548.tif 000003
【図１Ｂ】
2006507548.tif 000004
【図１Ｃ】
2006507548.tif 000005
【図１Ｄ】
2006507548.tif 000006
【図１Ｅ】
2006507548.tif 000007
【図２】
2006507548.tif 000008
【図３】
2006507548.tif 000009
【図４】
2006507548.tif 000010
【図５】
2006507548.tif 000011
【図６】
2006507548.tif 000012
【図７Ａ】
2006507548.tif 000013
【図７Ｂ】
2006507548.tif 000014
【図８】
2006507548.tif 000015
【国際調査報告】
2006507548.tif 000016
2006507548.tif 000017
2006507548.tif 000018
2006507548.tif 000019
2006507548.tif 000020