(57)【要約】      （修正有）【課題】複数の認証済みコードモジュールを利用してセキュアなシステム環境に入るシステム、装置、および方法を提供する。【解決手段】プロセッサはデコーダと制御論理とを含む。デコーダは、セキュアなエントリ命令を復号する。制御論理は、セキュアなエントリ命令が復号されると、マスタ認証済みコードモジュールの整合テーブルから、プロセッサに対応するエントリを見つけ、マスタ認証済みコードモジュールからマスタヘッダおよび個々の認証済みコードモジュールを読み出す。【選択図】図１
2011141870.tif 000002
【特許請求の範囲】
【請求項１】
セキュアなエントリ命令を復号するデコーダと、
前記セキュアなエントリ命令が復号されると、マスタ認証済みコードモジュールの整合テーブルから、プロセッサに対応するエントリを見つけ、前記マスタ認証済みコードモジュールからマスタヘッダおよび個々の認証済みコードモジュールを読み出す制御論理と
を備えるプロセッサ。
【請求項２】
セキュアなモードに構成されるキャッシュをさらに備え、
前記制御論理は、前記マスタヘッダおよび前記個々の認証済みコードモジュールを、前記セキュアなモードに構成された前記キャッシュへと読み込む請求項１に記載のプロセッサ。
【請求項３】
前記制御論理はさらに、前記マスタヘッダおよび前記個々の認証済みコードモジュールを前記キャッシュ内で認証する請求項２に記載のプロセッサ。
【請求項４】
前記個々の認証済みコードモジュールは、前記マスタ認証済みコードモジュール内の複数の個々の認証済みコードモジュールの１つである請求項１に記載のプロセッサ。
【請求項５】
前記制御論理はさらに、前記整合テーブルの前記エントリに基づいて、前記複数の個々の認証済みコードモジュールから前記個々の認証済みコードモジュールを選択する請求項４に記載のプロセッサ。
【請求項６】
前記制御論理はさらに、前記マスタヘッダおよび前記個々の認証済みコードモジュールを認証した後で、マスタハッシュをトークンに送信する請求項３に記載のプロセッサ。
【請求項７】
マスタ認証済みコードモジュールの整合テーブルから、第１のプロセッサに対応する第１のエントリを見つける段階と、
マスタヘッダを、前記マスタ認証済みコードモジュールから第１のセキュアなメモリにロードする段階と、
前記第１のプロセッサの第１の個々の認証済みコードモジュールを、マスタコードモジュールから前記第１のセキュアなメモリにロードする段階と
を備える方法。
【請求項８】
セキュアなエントリ命令を発行する段階をさらに備え、
前記第１のエントリを見つける段階、前記マスタヘッダをロードする段階、および前記第１の個々の認証済みコードモジュールをロードする段階は、前記セキュアなエントリ命令を発行する段階が行われると行われる請求項７に記載の方法。
【請求項９】
前記第１のセキュアなメモリは、前記第１のプロセッサのキャッシュメモリである請求項７に記載の方法。
【請求項１０】
前記マスタヘッダおよび前記第１の個々の認証済みコードモジュールを前記第１のセキュアなメモリ内で認証する段階をさらに備える請求項７に記載の方法。
【請求項１１】
前記第１の個々の認証済みコードモジュールを、前記マスタ認証済みコードモジュール内の複数の個々の認証済みコードモジュールのなかから選択する段階をさらに備える請求項７に記載の方法。
【請求項１２】
前記第１の個々の認証済みコードモジュールを選択する段階は、前記整合テーブルの前記第１のエントリに基づいて行われる請求項１１に記載の方法。
【請求項１３】
前記マスタヘッダおよび前記第１の個々の認証済みコードモジュールを認証する段階の後で、マスタハッシュをトークンに送信する段階をさらに備える請求項１０に記載の方法。
【請求項１４】
前記マスタ認証済みコードモジュールの前記整合テーブルから、第２のプロセッサに対応する第２のエントリを見つける段階と、
前記マスタヘッダを、前記マスタ認証済みコードモジュールから第２のセキュアなメモリにロードする段階と、
前記第２のプロセッサの第２の個々の認証済みコードモジュールを、前記マスタコードモジュールから前記第２のセキュアなメモリにロードする段階とをさらに備える請求項７に記載の方法。
【請求項１５】
前記第２のセキュアなメモリは、前記第２のプロセッサのキャッシュメモリである請求項１４に記載の方法。
【請求項１６】
前記マスタヘッダおよび前記第２の個々の認証済みコードモジュールを前記第２のセキュアなメモリ内で認証する段階をさらに備える請求項１４に記載の方法。
【請求項１７】
第１のプロセッサと第２のプロセッサとを備えるシステムであって、
前記第１のプロセッサは、
セキュアなエントリ命令を復号するデコーダと、
セキュアなエントリメッセージを送信するメッセージング論理と、
前記セキュアなエントリ命令が復号されると、マスタ認証済みコードモジュールの整合テーブルから、前記第１のプロセッサに対応する第１のエントリを見つけ、前記マスタ認証済みコードモジュールからマスタヘッダおよび第１の個々の認証済みコードモジュールを読み出す第１の制御論理とを有し、
前記第２のプロセッサは、
前記セキュアなエントリメッセージを受信するメッセージング論理と、
前記セキュアなエントリメッセージが受信されると、前記マスタ認証済みコードモジュールの前記整合テーブルから、前記第２のプロセッサに対応する第２のエントリを見つけ、前記マスタ認証済みコードモジュールから前記マスタヘッダおよび第２の個々の認証済みコードモジュールを読み出す第２の制御論理とを有するシステム。
【請求項１８】
不揮発性格納装置をさらに備え、前記不揮発性格納装置は、前記整合テーブルと、前記第１の個々の認証済みコードモジュールと、前記第２の個々の認証済みコードモジュールと、マスタハッシュとを含む前記マスタ認証済みコードモジュールを格納し、前記マスタハッシュは、前記整合テーブルと、前記第１の個々の認証済みコードモジュールと、前記第２の個々の認証済みコードモジュールとに基づく請求項１７に記載のシステム。
【請求項１９】
前記マスタ認証済みコードモジュールが前記不揮発性格納メモリからロードされるシステムメモリをさらに備える請求項１７に記載のシステム。
【請求項２０】
前記マスタヘッダおよび前記第１の個々の認証済みコードモジュールを前記第１のプロセッサのセキュアなメモリ内で認証した後で、前記マスタ認証済みコードモジュールのマスタハッシュをロードするトークンをさらに備える請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は情報処理分野に係り、より詳しくは情報処理システムのセキュリティに係る。
【背景技術】
【０００２】
インテルコーポレーション社製のインテル（登録商標）ペンティアム（登録商標）プロセッサファミリーのプロセッサ等のような情報処理システムでは、セキュアなシステム環境における動作をサポートすることができる。セキュアなシステム環境には、トラステッドパーティションおよびアントラステッドパーティションの両方が含まれうる。システムのベアプラットフォームハードウェアおよびトラステドッドソフトウェアがトラステッドパーティションに含まれうる。システムが含みうる機密を発見または改ざんから守るべく、アントラステッドパーティションからトラステッドパーティションのリソースへの直接アクセスは禁止されている。これら機密には、情報処理システムで生成、格納されるパスワード、鍵、プライベート情報または機密情報が含まれてよい。
【０００３】
システムのベアプラットフォームハードウェアは、トラステッドパーティションまたはドメインに、セキュアなシステムエントリプロトコルの実行により含まれてよい。例えば、始動するプロセッサはセキュアなエントリ（「ＳＥＮＴＥＲ」）命令を実行することができ、プロトコルを成功させるには、これに対してシステムの全てのエージェントが適切に応答する必要がある。応答するエージェントは、セキュアなエントリ処理中にはプログラム命令の実行または外部トランザクションの処理を実行できないようになっているので、始動するプロセッサは、署名を有するコードモジュールを正当で信頼がおけるとして有効化（validate）し、署名を有するコードモジュールを実行して、システムを、トラステッドオペレーションをサポートし、計測し（ハッシュ拡張関数による暗号化を利用して）、その後、計測された仮想マシンモニタ（「ＭＶＭＭ」）の実行を開始するよう構成する。ＭＶＭＭは、アントラステッドソフトウェアを実行する１以上の仮想マシン環境を生成して、アントラステッドソフトウェアがシステムリソースに直接アクセスしないようにする。
【０００４】
本発明を、添付図面における限定ではない例により示す。
【図面の簡単な説明】
【０００５】
【図１】本発明の一実施形態における情報処理システムを示す。
【図２】本発明の一実施形態におけるプロセッサを示す。
【図３】本発明の一実施形態におけるチップセットを示す。
【図４】本発明の一実施形態におけるマスタ認証済みコードモジュールを示す。
【図５】本発明の一実施形態における、複数の認証済みコードモジュールを利用してセキュアなコンピューティング環境に入る方法を示す。
【発明を実施するための形態】
【０００６】
本発明の実施形態における、複数の認証済みコードモジュール（それぞれ「ＡＣＭ」と称する）を利用してセキュアなコンピューティング環境に入るシステム、装置、および方法を記載する。本記載において、プロセッサおよびシステムの構成といった特定の詳細を示すことで、本発明の完全な理解を促す。しかし、当業者であれば本発明がこれら特定の詳細なしに実行可能であることを理解する。加えて、公知の構造、回路等は詳細に示さないことで、本発明を不当に曖昧にしないようにしている箇所もある。さらに、本記載の一実施形態である命令をある呼称で呼ぶ場合であっても（例えば「ＳＥＮＴＥＲ」）、他の実施形態では、これら命令または類似した命令が異なる呼称で呼ばれる場合もある。
【０００７】
本発明の実施形態は、複数のＡＣＭを利用してセキュアなコンピューティング環境に入る方法を提供する。複数のＡＣＭを利用すると好適である理由は、情報処理システムが複数のプロセッサまたはプロセッサパッケージを含み、これらプロセッサまたはプロセッサパッケージが同一ではない場合に、単一のＡＣＭだけでは、これらプロセッサまたはプロセッサパッケージ全てを始動させて、セキュアな環境に入らせることができない場合がありうるからである。
【０００８】
図１は、本発明の一実施形態における情報処理システム１００を示す。情報処理システム１００はパソコン、メインフレームコンピュータ、ポータブルコンピュータ、ハンドヘルドデバイス、セットトップボックス、サーバ、その他のコンピューティングシステムであってよい。本実施形態では、システム１００は、ベアプラットフォームハードウェア１１０を含み、このベアプラットフォームハードウェア１１０が、プロセッサ１２０、１３０、および１４０、システムメモリ１５０、チップセット１６０、トークン１７０、デバイス１８０、および不揮発性格納装置１９０を含む。
【０００９】
各プロセッサ１２０、１３０、および１４０は、１以上の実行コアを有するコンポーネントを表してよく、各実行コアは、インテル（登録商標）ペンティアム（登録商標）プロセッサファミリ、アイテニアム（登録商標）プロセッサファミリ、その他インテル（登録商標）コーポレーション社製のその他のプロセッサファミリのプロセッサ、または別の会社製の別のプロセッサ等の汎用マイクロプロセッサ、または専用プロセッサまたはマイクロコントローラ等を含む様々な異なる種類のプロセッサに基づいてよく、または、再構成可能なコア（例えばフィールドプログラマブルゲートアレイ）であってもよい。図１にはこれらプロセッサが３つしか示されていないが、システム１００は任意の数のプロセッサを含むことができ、その各々が任意の数の実行コアおよび実行スレッドを任意の組み合わせで含むことができる。一部の実施形態では、プロセッサ１２０、１３０、１４０のいずれかまたは全てが、１以上の物理プロセッサで動作する別個のハードウェア実行スレッドまたは「論理プロセッサ」を表してよい。
【００１０】
システムメモリ１５０は、データおよび／またはプログラムコード等の情報を格納可能な任意の媒体（例えばＤＲＡＭ、またはプロセッサ１２０、１３０、１４０により可読である任意の他の媒体、またはこれら媒体の任意の組み合わせ）であってよい。
【００１１】
チップセット１６０は、メモリ動作、入出力（Ｉ／Ｏ）動作、構成、制御、内部または外部のインタフェース、接続、または通信機能（たとえば「グルー」論理およびバスブリッジ）、および／または、プロセッサ１２０、１３０、１４０、および／または、システム１００の任意の類似した機能をサポートする任意の回路および論理群を表すことができる。チップセット１６０の個々の要素は、単一のチップ、一対のチップにグループ化されてもよいし、複数のチップ間で分散されてもよいし、および／または、１以上のプロセッサ（プロセッサ１２０、１３０、および／または、１４０）に部分的、全体的、重複的に統合されても、任意の分散法により統合されてもよい。
【００１２】
トークン１７０は、トラステッドプラットフォームモジュール（「ＴＰＭ」）１７２およびプラットフォーム構成レジスタ（「ＰＣＲ」）１７４を含んでよい。ＴＰＭ１７２は、マイクロコントローラを含むコンポーネントであってよく、セキュリティ構築および維持に利用される鍵、パスワード、デジタル証書、その他の情報をセキュアに格納することができる。ＰＣＲ１７４は、システム構成情報を格納する任意の数のレジスタおよび／またはその他の格納位置を含むことができる。ＴＰＭ１７２および／またはＰＣＲ１７４は、一定のエージェントに対して、および／または一定の条件においてのみ、アクセスを可能とするよう構成されている。トークン１７０、および／または、ＴＰＭ１７２およびＰＣＲ１７４のいずれかまたは両方を、チップセット１６０に、または、システム１００のその他のコンポーネントに含めることができる。
【００１３】
デバイス１８０は、任意の数の任意の種類のＩ／Ｏ、周辺デバイス、その他のデバイス（例えばキーボード、マウス、トラックボール、ポインティングデバイス、モニタ、プリンタ、メディアカード、ネットワークインタフェース、情報格納デバイス等）を表してよい。デバイス１８０は、別個のコンポーネントに具現化されても、任意のその他のデバイスを有する集積コンポーネントに含められてもよい。一実施形態では、デバイス１８０が、多機能Ｉ／Ｏ、周辺デバイス、その他のデバイスの単一の機能を表してもよい。
【００１４】
プロセッサ１２０、１３０、１４０、システムメモリ１５０、チップセット１６０、トークン１７０、およびデバイス１８０は、任意の公知の方法で互いに連結、通信してよい。この任意の公知の方法には、１以上の並列、連続、パイプライン式、非同期、同期、有線、無線、その他のバスまたはポイントツーポイント接続等が含まれる。システム１００はさらに、任意の数の追加デバイス、エージェント、コンポーネント、または接続を含んでよい。
【００１５】
図２は、本発明の一実施形態における図１のプロセッサ１２０、１３０、または１４０のいずれか、または任意の他のプロセッサを表してよいプロセッサ２００を示す。
【００１６】
プロセッサ２００は、ＳＲＡＭ、またはその他の形態の情報（例えばシステムメモリ１５０からコピーされるデータ等）の格納装置であってよいキャッシュ２１０を含んでよい。プロセッサ２００（またはキャッシュ２１０）は、さらに、キャッシュ２１０を通常モードまたは「ＲＡＭに準じるキャッシュ「（「ＣＲＡＭ」）モードのいずれで動作させるかを制御するキャッシュ制御論理２２０を含んでよい。通常モードでは、キャッシュ２１０は、キャッシュヒットするとメモリ要求を満たし、キャッシュミスするとキャッシュラインを置き換え、スヌープ要求を受けるとキャッシュラインを無効化する、あるいは、置き換えてよい。一方、ＣＲＡＭモードでは、キャッシュ２１０は、キャッシュメモリのメモリ範囲内の要求がキャッシュメモリにより満たされ、スヌープ要求を受けてもキャッシュのラインが置き換えられたり無効化されたりしないようなＲＡＭとして機能する。
【００１７】
プロセッサ２００はさらに命令ユニット２３０、制御ユニット２４０、実行ユニット２５０、およびメッセージングユニット２６０を含むことができる。命令ユニット２３０は、デコーダ等の任意の回路、論理、その他のハードウェアまたは構造を含み、命令に、受信、認識、復号、その他の処理を行うことができる。制御ユニット２４０は、マイクロコード、状態マシン論理、プログラム可能論理、その他の形態の制御論理等の任意の回路、論理、その他のハードウェアまたは構造を含み、命令ユニット２３０が受信する命令および／またはメッセージングユニット２６０が受信するメッセージに応じて制御プロセッサ２００のための制御信号その他を生成することができる。
【００１８】
実行ユニット２５０は、命令ユニット２３０が受信する命令を実行する任意の回路、論理、その他のハードウェアまたは構造を含むことができる。実行ユニット２５０は、制御ユニット２４０が生成する制御信号に基づき動作することができる。メッセージングユニット２６０は、プロセッサ２００からシステム１００の他のコンポーネントまたはエージェントに送信するべきメッセージを生成して、システム１００の他のコンポーネントまたはエージェントがプロセッサ２００に送信するメッセージを受信する任意の回路、論理、その他のハードウェアまたは構造を含むことができる。
【００１９】
プロセッサ２００の一実施形態では、命令ユニット２１０は、システム１００にセキュアな環境を構築する処理（「ＳＥＮＴＥＲ」処理）をプロセッサ２００に開始させる命令（「ＳＥＮＴＥＲ」命令）を受信することができる。ＳＥＮＴＥＲ命令を受信すると、制御ユニット２４０は、他のプロセッサおよびエージェントのメッセージングユニットによりＳＥＮＴＥＲバスメッセージとして認識される「ＳＥＮＴＥＲ」バスメッセージ（または、プロセッサその他のエージェントがバス以外の手段により通信を行うシステム内のその他の種類のメッセージ）をメッセージングユニット２６０に生成させる。ＳＥＮＴＥＲ命令を実行し、ＳＥＮＴＥＲバスメッセージを送信するプロセッサまたは実行スレッドは、「始動論理プロセッサ」（「ＩＬＰ」）と称される。
【００２０】
ＳＥＮＴＥＲバスメッセージを受信する、システム内の各プロセッサ、実行スレッド、その他のエージェントは、「応答論理プロセッサ」（「ＲＬＰ」）と称される。ＳＥＮＴＥＲバスメッセージに応じて、各ＲＬＰは、セキュアな環境の構築の準備を行うアクションを行い、ＩＬＰにセキュアな環境を起動させる。これらアクションのいずれかは、自身のメッセージングユニットに「ＡＣＫ」バスメッセージを生成させ、ＳＥＮＴＥＲバスメッセージの受領確認を行うことができてよい。
【００２１】
図３は、本発明の一実施形態における、チップセット１６０、またはチップセット１６０の機能を行う任意のその他のチップセットまたはコンポーネントを表してよいチップセット３００を示す。チップセット３００は、メッセージングユニット３１０、制御ユニット３２０、「ＥＸＩＳＴＳ」格納位置３３０、「ＪＯＩＮＳ」格納位置３４０、および、「ＡＬＬ＿ＪＯＩＮＥＤ」格納位置３５０を含んでよい。
【００２２】
メッセージングユニット３１０は、チップセット３００からシステム１００の他のコンポーネントまたはエージェントに送信するべきメッセージを生成して、システム１００の他のコンポーネントまたはエージェントが送信するメッセージを受信する任意の回路、論理、その他のハードウェアまたは構造を含むことができる。制御ユニット３２０は、マイクロコード、状態マシン論理、プログラム可能論理、その他の形態の制御論理等の任意の回路、論理、その他のハードウェアまたは構造を含み、メッセージングユニット３１０が受信するメッセージに応じて制御チップセット２００のための制御信号を生成することができる。
【００２３】
「ＥＸＩＳＴＳ」格納位置３３０、「ＪＯＩＮＳ」格納位置３４０、および「ＡＬＬ＿ＪＯＩＮＥＤ」格納位置３５０の各々は、レジスタまたは任意の他の形態の情報格納装置を含んでよく、任意の数のビット用の格納装置を含んでよい。一実施形態においては、制御ユニット３２０は、ＥＸＩＳＴＳ格納位置３３０を利用してシステム１００で動作する全ての論理プロセッサその他のエージェントを追跡し、ＪＯＩＮＳ格納位置３４０を利用してＳＥＮＴＥＲバスメッセージを承認した全ての論理プロセッサその他のエージェントを追跡してよい。ＥＸＩＳＴＳ格納位置３３０に反映されるシステム１００の全てのプロセッサその他のエージェントが、ＪＯＩＮＳ格納位置３４０に反映されるＳＥＮＴＥＲバスメッセージを承認した場合に、制御ユニット３２０は、「ＡＬＬ＿ＪＯＩＮＥＤ」格納位置３５０にインジケータを設定して、ＩＬＰに対して、セキュアな環境の起動を進めてよいことを示すことができる。ＳＥＮＴＥＲ処理のこの記載において（本記載の残りの部分においても同様であるが）、本発明の実施形態を記載およびイネーブルする目的には不要である多くの詳細は省かれており、処理に関しては多くの変形例が可能である。例えば、ＩＬＰおよびＲＬＰがフロント側プロセッサバス（「ＦＳＢ」）により接続される場合には、ＦＳＢトランザクションは、各トランザクションのイニシエータの識別子を含むことができ、チップセット３００をＦＳＢに接続して全てのＦＳＢ論理プロセッサその他のバスエージェントを追跡することができる。
【００２４】
図１の説明に戻ると、不揮発性格納装置１９０は、システム１００における任意の数の個々の不揮発性格納媒体を表すことができる（例えば、半導体フラッシュメモリまたは磁気または光学ディスク）。不揮発性格納装置１９０は、本発明の実施形態で利用されるソフトウェアコンポーネントを格納する目的に利用することができる。例えば、不揮発性格納装置１９０は、承認済みのコードモジュール（「ＡＣＭ」）１９２および計測された仮想マシンモニタ（「ＭＶＭＭ」）１９４を格納してよい。
【００２５】
ＡＣＭ１９２は、ＳＥＮＴＥＲ処理中にプロセッサ（１または複数）により実行されることで、セキュアな環境の構築に関る任意の数のアクションを実行することができる。例えばＡＣＭ１９２は、システム１００内のコンポーネントを初期化、構成、およびテストして、セキュアな環境に参加させる目的に利用することができる。一実施形態では、ＡＣＭ１９２を利用して、システム１００の任意のプロセッサ、チップセットその他のコンポーネントのメモリコントローラ機能により制御されて、システム１００のメモリ構成をテストして、確実にシステムメモリ１５０内の一定のページまたは部分に対するアクセスを制限または制御することで、システム１００をセキュアにするＭＶＭＭ１９４および／またはその他のソフトウェアをシステムメモリ１５０への格納に際して保護してよい。別の実施形態では、ＡＣＭ１９２は、ＭＶＭＭ１９４、および、セキュアな環境内で利用される任意の他のソフトウェアを認証して、ＭＶＭＭ１９４の実行を起動させる目的に利用することもできる。
【００２６】
ＭＶＭＭ１９４は１以上の仮想マシンを制御して他のソフトウェアプログラムを実行させるＳＥＮＴＥＲ処理中に起動されるトラステッド実体である任意の仮想マシンモニタ、ハイパーバイザ、その他の同様のソフトウェアプログラムであってよく（しばしば、計測起動環境、あるいは「ＭＬＥ」と称される）、トラステッドであるものも、そうではないものも含まれる。
【００２７】
システム１００にセキュアな環境を構築するべく、任意のプロセッサ１２０、１３０、１４０、またはシステム１００の任意の他のプロセッサの上で動作するオペレーティングシステム（「ＯＳ」）、基本入出力システム（「ＢＩＯＳ」）等のシステムソフトウェアは、ＡＣＭ１９２およびＭＶＭＭ１９４を、不揮発性格納装置１９０からシステムメモリ１５０へ送信して、これらプロセッサのいずれか（例えばプロセッサ１２０）に、ＳＥＮＴＥＲ命令を実行させてよい。ＳＥＮＴＥＲ命令の実行により、全てのＲＬＰがＳＥＮＴＥＲバスメッセージを承認し、キャッシュ１２２をＣＲＡＭモードで動作するよう構成し、ＡＣＭ１９２を（あるいは、後述するように本発明の一実施形態においてはＡＣＭ１９２の一部を）キャッシュ１２２にロードするまで、ＩＬＰ等のプロセッサ１２０は、ＳＥＮＴＥＲバスメッセージを発行して、ＡＬＬ＿ＪＯＩＮＥＤ格納位置３５０に対してポーリングを行うことができる。キャッシュ１２２はＣＲＡＭモードで動作するよう構成することができ、ＣＲＡＭモードにおいてキャッシュ１２２は、プロセッサ１２０がＡＣＭ１９２を（あるいは、後述するように本発明の一実施形態においてはＡＣＭ１９２の一部を）承認することのできるプライベートでセキュアなメモリとして機能することができる。
【００２８】
ＡＣＭは、特定のプロセッサおよび／またはチップセットについて書き込むことができ、プロセッサおよび／またはチップセットの製造業者またはベンダによってデジタル署名を施されてよい。システムの各プロセッサを安定した状態にしてＳＥＮＴＥＲ処理に参加できるようにするための様々なアクションは複雑であることから、ＩＬＰに加えてＲＬＰも、ＡＣＭあるいはＡＣＭの一部を実行することが望ましい。さらに、システム１００等のシステムが、異なるステッピング、バージョン、または種類の２以上のプロセッサを含みうる。従って、異なるプロセッサ用のコードを１つのＡＣＭに組み合わせて、異なるプロセッサのいずれもがＩＬＰとして機能することができるよう、および／または、ＲＬＰがＡＣＭあるいはＡＣＭの一部を実行することができるようにすることが望ましい。しかし、ＡＣＭのサイズは、認証のためにロードされる可能性のあるキャッシュメモリのサイズ（例えば６４キロバイト）に制限される場合がある。従って本発明の実施形態では、ＳＥＮＴＥＲ処理において、２以上のＡＣＭを利用する、あるいは利用可能とする。
【００２９】
図４は、本発明の一実施形態におけるマスタＡＣＭ４００を示し、これはシステム１００のＡＣＭ１９２として利用可能である。マスタＡＣＭ４００は、マスタヘッダ４１０、ＡＣＭ４２０、ＡＣＭ４３０、およびＡＣＭ４４０を含む。各ＡＣＭ４２０、４３０、および４４０は、異なるステッピング、バージョン、またはタイプのプロセッサについて書き込むことができる。例えば、ＡＣＭ４２０、ＡＣＭ４３０、およびＡＣＭ４４０は、システム１００内のプロセッサ１２０、１３０、および１４０についてそれぞれ書き込まれてよい。
【００３０】
ＡＣＭ４２０、４３０、および４４０の各々は、コードおよびデータを含むセクション（例えば各セクション４２４、４３２、および４４２）と、ヘッダを含むセクション（例えば各セクション４２４、４３４、および４４４）を含んでよい。各コードおよびデータのセクションは、ＳＥＮＴＥＲ処理中にプロセッサが実行するコードを、このコードの実行中に利用されるデータおよび／またはこのコードの実行中に生成されるデータのスクラッチパッド位置とともに含むことができる。各ヘッダセクションは、ハッシュおよび／または他の暗号関数により生成される、対応するＡＣＭから導出される、または対応するＡＣＭを表すダイジェストおよび／またはデジタル署名（「ハッシュ値」）、および／または、その他の値を含む。各ヘッダセクションは、さらに、ＡＣＭの著者、サイズ、バージョン等に関する情報を含むことができる。これらヘッダセクションの情報を利用して、対応するＡＣＭを認証することができる（つまり、正当性を確認することができる）。
【００３１】
マスタヘッダ４１０は、整合テーブル４１２およびマスタハッシュ４１４を含んでよい。整合テーブル４１２は、例えばレジスタその他の格納位置から可読である各プロセッサ内の、または各プロセッサに関連付けられた固有のプロセッサ識別子（「ＣＰＵ  ＩＤ」）に基づいてシステム１００に含まれる各プロセッサを識別するテーブルを含んでよい。各ＣＰＵ  ＩＤについて、整合テーブルは、プロセッサに関するステッピング、バージョン、種類その他の情報に基づいて、マスタＡＣＭ４００に含まれるどのＡＣＭがそのプロセッサにより実行されるかを示す。
【００３２】
マスタハッシュ４１４は、整合テーブル４１２およびヘッダ４２４、４３４、および４４４（または各ヘッダ４２４、４３４、および４４４の一部）の連結により導出される、または連結を表すハッシュ値を含む。マスタハッシュ４１４は、整合テーブル４１２およびＡＣＭ４２０、４３０、および４４０のハッシュ値の連結に対してハッシュおよび／または他の暗号関数を行うことにより生成されてよい。従ってマスタハッシュ４１４を利用して、マスタＡＣＭ４００に含まれる全ての情報を認証することができる。
【００３３】
図５は、本発明の方法の実施形態を示し、特に、複数の認証済みコードモジュールを利用してセキュアなコンピューティング環境に入る方法５００を示す。本発明の方法の実施形態はこの点に限定はされないが、図５の方法５００の説明において、システム１００、プロセッサ２００、チップセット３００、またはマスタＡＣＭ４００の各エレメントについて説明する場合がある。さらに、方法５００は、各々が潜在的に異なる位置で異なる実体または人により、あるいは自動的に実行されうる個別の方法を集めたものを表してもよい。
【００３４】
さらに、方法５００で実行される特定のアクションは、制御ユニット２４０（例えばボックス５５０から５５８）が生成する制御信号に呼応してプロセッサ２００が実行する、または、制御ユニット３２０が生成する制御信号に呼応してチップセット３００により実行されてよい。そして、命令ユニット２３０の１つの命令の１以上のマイクロ命令またはマイクロオペレーションへの復号に呼応して、および／または、メッセージングユニット２６０のバスメッセージその他のトランザクションの受信に呼応して、プロセッサ２００の制御信号を生成してよく、それから、メッセージングユニット３１０のバスメッセージその他のトランザクションの受信に呼応して、チップセット３００の制御信号を生成してよい。
【００３５】
方法５００は、図５のボックス５０２から開始することができる。
【００３６】
ボックス５１０で、任意の数の個々のＡＣＭ（例えばＡＣＭ４２０、４３０、および４４０）が、例えばプロセッサその他の情報処理システムコンポーネントの製造業者またはベンダにより、書き込まれる、または生成されてよい。ボックス５１２で、各ＡＣＭについて、ハッシュその他のアルゴリズムを該ＡＣＭのコード、データ、および／または、その他のセクションに適用することで、ハッシュ値を生成する。ボックス５１４で、例えば公開／秘密鍵の対を利用して暗号化アルゴリズムを適用することにより、各ハッシュ値を暗号化することができる。ボックス５１６で、各ハッシュ値を対応するＡＣＭのヘッダに追加してよい。
【００３７】
ボックス５２０で、マスタＡＣＭ（例えばマスタＡＣＭ４００）を、情報処理システム（例えばシステム１００）に対して生成してよい。マスタＡＣＭは、例えばシステム製造業者またはベンダにより、任意の数の個々のＡＣＭ（例えばＡＣＭ４２０、４３０、および４４０）を利用することにより生成されてよい。ボックス５２２で、システム１００の各プロセッサその他のエージェントについてエントリ（各プロセッサの識別子およびどのＡＣＭがそのプロセッサにより実行されるかの指示を含む）を生成することにより、整合テーブル（例えば整合テーブル４１２）が生成されてよい。
【００３８】
ボックス５２４で、整合テーブルを、マスタＡＣＭに含まれる個々のＡＣＭのハッシュ値それぞれと連結してよい。ボックス５２６で、整合テーブルおよび個々のＡＣＭハッシュ値の連結に対してハッシュその他の同様のアルゴリズムを適用することにより、マスタハッシュ（例えばマスタハッシュ４１４）を生成することができる。ボックス５２８で、例えば公開／秘密鍵の対を利用して暗号化アルゴリズムを適用することにより、マスタハッシュを暗号化することができる。
【００３９】
ボックス５３０で、マスタハッシュおよびマスタテーブルをマスタヘッダに連結して、マスタヘッダと個々のＡＣＭとを連結することにより、マスタＡＣＭを完成させることができる。ボックス５３２で、マスタＡＣＭは、システムの例えば不揮発性格納装置（例えば不揮発性格納装置１９０）にロードされてよい、またはインストールされてよい。
【００４０】
ボックス５４０で、マスタＡＣＭは、不揮発性格納装置からシステムメモリ（例えばシステムメモリ１５０）に、例えばシステム１００のＢＩＯＳ、ブートローダ、またはＯＳによりコピーされてよい。ボックス５４２で、セキュアなシステム環境へのシステム１００のエントリが、例えばＢＩＯＳ、ブートローダ、ＯＳがプロセッサ１２０にＳＥＮＴＥＲ命令を発行することにより始動される。ボックス５４４で、プロセッサ１２０は、ＳＥＮＴＥＲバスメッセージを送信してよい。ボックス５４６で、システム１００の各ＲＬＰ（例えばプロセッサ１３０および１４０）は、ＡＣＫバスメッセージを送信してよい。ボックス５４８で、全てのＲＬＰがＳＥＮＴＥＲ処理に参加した旨を示す情報を、例えばＡＬＬ＿ＪＯＩＮＥＤ格納位置３５０に設定することができる。
【００４１】
ボックス５５０で、システム１００のプロセッサ（例えばＩＬＰまたはＲＬＰ）は、対応するエントリを見つけるべく、マスタＡＣＭの整合テーブルを読み出す。整合するものが見つからない場合には、ボックス５５２で、プロセッサは、不揮発性メモリにエラーコード値を書き込んで、システムをリセットすることができる。一方で整合するものが見つかった場合には、ボックス５５４で、プロセッサは自身のキャッシュをＣＲＡＭモードで動作するよう構成して、マスタヘッダおよび整合する個々のＡＣＭを自身のキャッシュにロードする。
【００４２】
ボックス５５６で、プロセッサは、マスタヘッダおよび整合するＡＣＭそれぞれをハッシュして、結果生じるハッシュ値を、マスタハッシュ、および、マスタＡＣＭから読み出した個々のＡＣＭハッシュと比較することにより、該マスタヘッダおよび整合するＡＣＭの認証を試みることができる。比較結果が整合しない場合には、ボックス５５２で、プロセッサは、不揮発性メモリにエラーコード値を書き込んで、システムをリセットすることができる。一方でマスタヘッダおよび整合するＡＣＭの両方の認証に成功した場合には、ボックス５５８で、マスタハッシュをトークン（例えばトークン１７０）に送信して、ＰＣＲに格納させ、後に計測起動環境またはセキュアなシステム環境における機密の情報の封印または封印を解くために備えさせることができる。
【００４３】
ボックス５６０では、ボックス５５０からボックス５５８までの処理を、システム１００の各他のプロセッサにより繰り返させてよい。ボックス５６２で、システム１００の１以上のプロセッサが、自身のＡＣＭの実行を開始してよい。ボックス５６４で、ＡＣＭを実行しているプロセッサがＭＶＭＭを起動してよい。ボックス５６６で、計測起動環境（「ＭＬＥ」）またはセキュアなシステム環境へのシステム１００のエントリが完了してよい。
【００４４】
ボックス５９８で方法５００が終了してよい。
【００４５】
方法５００を異なる順序で実行すること、示されたブロックを同時に実行すること、示されたブロックを省くこと、ブロックを追加すること、またはこれら順序を変えること、ブロックの組み合わせ、省略、ブロックの追加を組み合わせること全てが本発明の範囲に含まれることに留意されたい。本発明の方法の実施形態には数多くの変形例が可能であるが、方法５００の説明からは明らかではない場合もある。例えば、ボックス５２０から５３０のマスタＡＣＭの生成は、システム１００内外いずれで行われてもよい。
【００４６】
以上のように、複数の認証済みコードモジュールを利用してセキュアなコンピューティング環境に入るシステム、装置、および方法を記載してきた。特定の実施形態に限って説明、および図示してきたが、これら実施形態は広義の発明の例示であり限定は意図しておらず、当業者であれば様々な他の変形例を想到することが明らかであり、記載、図示してきた特定の構成および配置に本発明を限定することは意図されていないことに留意されたい。本技術分野は急速な進歩を遂げており、未来の技術進化を予測することは難しく、未来の技術進歩如何によって、本開示の原理または添付請求項の範囲を逸脱することなく、開示されている実施形態の配置、詳細等を修正可能になるであろうことは容易に予想がつく。
【図１】
2011141870.tif 000003
【図２】
2011141870.tif 000004
【図３】
2011141870.tif 000005
【図４】
2011141870.tif 000006
【図５】
2011141870.tif 000007
【外国語明細書】
2011141870000001.pdf