(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5752767
(24)【登録日】2015年5月29日
(45)【発行日】2015年7月22日
(54)【発明の名称】複数の認証済みコードモジュールを利用するプロセッサ、方法、及びシステム
(51)【国際特許分類】
G06F 21/57 20130101AFI20150702BHJP
G06F 21/74 20130101ALI20150702BHJP
【FI】
G06F21/57 350
G06F21/74
【請求項の数】11
【全頁数】15
(21)【出願番号】特願2013-194105(P2013-194105)
(22)【出願日】2013年9月19日
(62)【分割の表示】特願2010-277703(P2010-277703)の分割
【原出願日】2010年12月14日
(65)【公開番号】特開2013-251016(P2013-251016A)
(43)【公開日】2013年12月12日
【審査請求日】2013年12月3日
(31)【優先権主張番号】12/650,579
(32)【優先日】2009年12月31日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ダッタ、シャム エム.
(72)【発明者】
【氏名】ブリッケル、アーニー エフ.
(72)【発明者】
【氏名】クマー、モハン ジェー.
【審査官】
脇岡 剛
(56)【参考文献】
【文献】
特開2006−221631(JP,A)
【文献】
特開昭62−128354(JP,A)
【文献】
特表2005−535005(JP,A)
【文献】
特表2009−532783(JP,A)
【文献】
特表2006−507548(JP,A)
【文献】
米国特許出願公開第2006/0224878(US,A1)
【文献】
米国特許出願公開第2009/0144754(US,A1)
【文献】
米国特許出願公開第2003/0055840(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G06F 21/74
(57)【特許請求の範囲】
【請求項1】
第1のプロセッサにより、認証済みコードモジュールと前記認証済みコードモジュールを実行するプロセッサとの対応関係を示すエントリを有するマスタ認証済みコードモジュールの整合テーブルから、前記第1のプロセッサに対応する第1のエントリを見つける段階と、
前記第1のプロセッサにより、マスタヘッダを、前記マスタ認証済みコードモジュールから第1のセキュアなメモリにロードする段階と、
前記第1のプロセッサにより、見つけた前記第1のエントリに示される前記第1のプロセッサの第1の個々の認証済みコードモジュールを、前記マスタ認証済みコードモジュールから前記第1のセキュアなメモリにロードする段階と、
第2のプロセッサにより、前記マスタ認証済みコードモジュールの前記整合テーブルから、前記第2のプロセッサに対応する第2のエントリを見つける段階と、
前記第2のプロセッサにより、前記マスタヘッダを、前記マスタ認証済みコードモジュールから第2のセキュアなメモリにロードする段階と、
前記第2のプロセッサにより、前記第2のプロセッサの第2の個々の認証済みコードモジュールを、前記マスタ認証済みコードモジュールから前記第2のセキュアなメモリにロードする段階と、
を備え、
前記第1のプロセッサ及び前記第2のプロセッサは同一でなく、前記第1のプロセッサ及び前記第2のプロセッサは順番に対応する認証済みコードモジュールを実行することでセキュアなコンピューティング環境に入る、
方法。
【請求項2】
前記第1のプロセッサにより、セキュアなエントリ命令を発行する段階をさらに備え、
前記第1のエントリを見つける段階、前記マスタヘッダをロードする段階、および前記第1の個々の認証済みコードモジュールをロードする段階は、前記セキュアなエントリ命令を発行する段階に対応して行われる、
請求項1に記載の方法。
【請求項3】
前記第1のセキュアなメモリは、前記第1のプロセッサのキャッシュメモリである、
請求項1又は2に記載の方法。
【請求項4】
前記第1のプロセッサにより、前記マスタヘッダおよび前記第1の個々の認証済みコードモジュールを前記第1のセキュアなメモリ内で認証する段階をさらに備える、
請求項1から3のいずれか1項に記載の方法。
【請求項5】
前記マスタヘッダおよび前記第1の個々の認証済みコードモジュールを認証する段階の後で、前記第1のプロセッサによりマスタハッシュをトークンに送信する段階をさらに備える、
請求項4に記載の方法。
【請求項6】
前記第2のセキュアなメモリは、前記第2のプロセッサのキャッシュメモリである、
請求項5に記載の方法。
【請求項7】
前記第2のプロセッサにより、前記マスタヘッダおよび前記第2の個々の認証済みコードモジュールを前記第2のセキュアなメモリ内で認証する段階をさらに備える、
請求項5に記載の方法。
【請求項8】
第1のプロセッサと第2のプロセッサとを備えるシステムであって、
前記第1のプロセッサは、
セキュアなエントリ命令をデコードするデコーダと、
セキュアなエントリメッセージを送信するメッセージングロジックと、
前記セキュアなエントリ命令がデコードされると、認証済みコードモジュールと前記認証済みコードモジュールを実行するプロセッサとの対応関係を示すエントリを有するマスタ認証済みコードモジュールの整合テーブルから、前記第1のプロセッサに対応する第1のエントリを見つけ、前記マスタ認証済みコードモジュールからマスタヘッダおよび見つけた前記第1のエントリに示される第1の個々の認証済みコードモジュールを読み出す第1の制御ロジックとを有し、
前記第2のプロセッサは、
前記セキュアなエントリメッセージを受信するメッセージングロジックと、
前記セキュアなエントリメッセージが受信されると、前記マスタ認証済みコードモジュールの前記整合テーブルから、前記第2のプロセッサに対応する第2のエントリを見つけ、前記マスタ認証済みコードモジュールから前記マスタヘッダおよび見つけた前記第2のエントリに示される第2の個々の認証済みコードモジュールを読み出す第2の制御ロジックとを有し、
前記第1のプロセッサ及び前記第2のプロセッサは同一でなく、前記第1のプロセッサ及び前記第2のプロセッサは順番に対応する認証済みコードモジュールを実行することでセキュアなコンピューティング環境に入る、
システム。
【請求項9】
不揮発性格納装置をさらに備え、前記不揮発性格納装置は、前記整合テーブルと、前記第1の個々の認証済みコードモジュールと、前記第2の個々の認証済みコードモジュールと、マスタハッシュとを含む前記マスタ認証済みコードモジュールを格納し、前記マスタハッシュは、前記整合テーブルと、前記第1の個々の認証済みコードモジュールと、前記第2の個々の認証済みコードモジュールとに基づく、
請求項8に記載のシステム。
【請求項10】
前記マスタ認証済みコードモジュールが前記不揮発性格納装置からロードされるシステムメモリをさらに備える、
請求項9に記載のシステム。
【請求項11】
前記マスタヘッダおよび前記第1の個々の認証済みコードモジュールを前記第1のプロセッサのセキュアなメモリ内で認証した後で、前記マスタ認証済みコードモジュールのマスタハッシュをロードするトークンをさらに備える、
請求項8から10のいずれか1項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は情報処理分野に係り、より詳しくは情報処理システムのセキュリティに係る。
【背景技術】
【0002】
インテルコーポレーション社製のインテル(登録商標)ペンティアム(登録商標)プロセッサファミリーのプロセッサ等のような情報処理システムでは、セキュアなシステム環境における動作をサポートすることができる。セキュアなシステム環境には、トラステッドパーティションおよびアントラステッドパーティションの両方が含まれうる。システムのベアプラットフォームハードウェアおよびトラステドッドソフトウェアがトラステッドパーティションに含まれうる。システムが含みうる機密を発見または改ざんから守るべく、アントラステッドパーティションからトラステッドパーティションのリソースへの直接アクセスは禁止されている。これら機密には、情報処理システムで生成、格納されるパスワード、鍵、プライベート情報または機密情報が含まれてよい。
【0003】
システムのベアプラットフォームハードウェアは、トラステッドパーティションまたはドメインに、セキュアなシステムエントリプロトコルの実行により含まれてよい。例えば、始動するプロセッサはセキュアなエントリ(「SENTER」)命令を実行することができ、プロトコルを成功させるには、これに対してシステムの全てのエージェントが適切に応答する必要がある。応答するエージェントは、セキュアなエントリ処理中にはプログラム命令の実行または外部トランザクションの処理を実行できないようになっているので、始動するプロセッサは、署名を有するコードモジュールを正当で信頼がおけるとして有効化(validate)し、署名を有するコードモジュールを実行して、システムを、トラステッドオペレーションをサポートし、計測し(ハッシュ拡張関数による暗号化を利用して)、その後、計測された仮想マシンモニタ(「MVMM」)の実行を開始するよう構成する。MVMMは、アントラステッドソフトウェアを実行する1以上の仮想マシン環境を生成して、アントラステッドソフトウェアがシステムリソースに直接アクセスしないようにする。
【0004】
本発明を、添付図面における限定ではない例により示す。
【図面の簡単な説明】
【0005】
【
図1】本発明の一実施形態における情報処理システムを示す。
【
図2】本発明の一実施形態におけるプロセッサを示す。
【
図3】本発明の一実施形態におけるチップセットを示す。
【
図4】本発明の一実施形態におけるマスタ認証済みコードモジュールを示す。
【
図5】本発明の一実施形態における、複数の認証済みコードモジュールを利用してセキュアなコンピューティング環境に入る方法を示す。
【発明を実施するための形態】
【0006】
本発明の実施形態における、複数の認証済みコードモジュール(それぞれ「ACM」と称する)を利用してセキュアなコンピューティング環境に入るシステム、装置、および方法を記載する。本記載において、プロセッサおよびシステムの構成といった特定の詳細を示すことで、本発明の完全な理解を促す。しかし、当業者であれば本発明がこれら特定の詳細なしに実行可能であることを理解する。加えて、公知の構造、回路等は詳細に示さないことで、本発明を不当に曖昧にしないようにしている箇所もある。さらに、本記載の一実施形態である命令をある呼称で呼ぶ場合であっても(例えば「SENTER」)、他の実施形態では、これら命令または類似した命令が異なる呼称で呼ばれる場合もある。
【0007】
本発明の実施形態は、複数のACMを利用してセキュアなコンピューティング環境に入る方法を提供する。複数のACMを利用すると好適である理由は、情報処理システムが複数のプロセッサまたはプロセッサパッケージを含み、これらプロセッサまたはプロセッサパッケージが同一ではない場合に、単一のACMだけでは、これらプロセッサまたはプロセッサパッケージ全てを始動させて、セキュアな環境に入らせることができない場合がありうるからである。
【0008】
図1は、本発明の一実施形態における情報処理システム100を示す。情報処理システム100はパソコン、メインフレームコンピュータ、ポータブルコンピュータ、ハンドヘルドデバイス、セットトップボックス、サーバ、その他のコンピューティングシステムであってよい。本実施形態では、システム100は、ベアプラットフォームハードウェア110を含み、このベアプラットフォームハードウェア110が、プロセッサ120、130、および140、システムメモリ150、チップセット160、トークン170、デバイス180、および不揮発性格納装置190を含む。
【0009】
各プロセッサ120、130、および140は、1以上の実行コアを有するコンポーネントを表してよく、各実行コアは、インテル(登録商標)ペンティアム(登録商標)プロセッサファミリ、アイテニアム(登録商標)プロセッサファミリ、その他インテル(登録商標)コーポレーション社製のその他のプロセッサファミリのプロセッサ、または別の会社製の別のプロセッサ等の汎用マイクロプロセッサ、または専用プロセッサまたはマイクロコントローラ等を含む様々な異なる種類のプロセッサに基づいてよく、または、再構成可能なコア(例えばフィールドプログラマブルゲートアレイ)であってもよい。
図1にはこれらプロセッサが3つしか示されていないが、システム100は任意の数のプロセッサを含むことができ、その各々が任意の数の実行コアおよび実行スレッドを任意の組み合わせで含むことができる。一部の実施形態では、プロセッサ120、130、140のいずれかまたは全てが、1以上の物理プロセッサで動作する別個のハードウェア実行スレッドまたは「論理プロセッサ」を表してよい。
【0010】
システムメモリ150は、データおよび/またはプログラムコード等の情報を格納可能な任意の媒体(例えばDRAM、またはプロセッサ120、130、140により可読である任意の他の媒体、またはこれら媒体の任意の組み合わせ)であってよい。
【0011】
チップセット160は、メモリ動作、入出力(I/O)動作、構成、制御、内部または外部のインタフェース、接続、または通信機能(たとえば「グルー」論理およびバスブリッジ)、および/または、プロセッサ120、130、140、および/または、システム100の任意の類似した機能をサポートする任意の回路および論理群を表すことができる。チップセット160の個々の要素は、単一のチップ、一対のチップにグループ化されてもよいし、複数のチップ間で分散されてもよいし、および/または、1以上のプロセッサ(プロセッサ120、130、および/または、140)に部分的、全体的、重複的に統合されても、任意の分散法により統合されてもよい。
【0012】
トークン170は、トラステッドプラットフォームモジュール(「TPM」)172およびプラットフォーム構成レジスタ(「PCR」)174を含んでよい。TPM172は、マイクロコントローラを含むコンポーネントであってよく、セキュリティ構築および維持に利用される鍵、パスワード、デジタル証書、その他の情報をセキュアに格納することができる。PCR174は、システム構成情報を格納する任意の数のレジスタおよび/またはその他の格納位置を含むことができる。TPM172および/またはPCR174は、一定のエージェントに対して、および/または一定の条件においてのみ、アクセスを可能とするよう構成されている。トークン170、および/または、TPM172およびPCR174のいずれかまたは両方を、チップセット160に、または、システム100のその他のコンポーネントに含めることができる。
【0013】
デバイス180は、任意の数の任意の種類のI/O、周辺デバイス、その他のデバイス(例えばキーボード、マウス、トラックボール、ポインティングデバイス、モニタ、プリンタ、メディアカード、ネットワークインタフェース、情報格納デバイス等)を表してよい。デバイス180は、別個のコンポーネントに具現化されても、任意のその他のデバイスを有する集積コンポーネントに含められてもよい。一実施形態では、デバイス180が、多機能I/O、周辺デバイス、その他のデバイスの単一の機能を表してもよい。
【0014】
プロセッサ120、130、140、システムメモリ150、チップセット160、トークン170、およびデバイス180は、任意の公知の方法で互いに連結、通信してよい。この任意の公知の方法には、1以上の並列、連続、パイプライン式、非同期、同期、有線、無線、その他のバスまたはポイントツーポイント接続等が含まれる。システム100はさらに、任意の数の追加デバイス、エージェント、コンポーネント、または接続を含んでよい。
【0015】
図2は、本発明の一実施形態における
図1のプロセッサ120、130、または140のいずれか、または任意の他のプロセッサを表してよいプロセッサ200を示す。
【0016】
プロセッサ200は、SRAM、またはその他の形態の情報(例えばシステムメモリ150からコピーされるデータ等)の格納装置であってよいキャッシュ210を含んでよい。プロセッサ200(またはキャッシュ210)は、さらに、キャッシュ210を通常モードまたは「RAMに準じるキャッシュ「(「CRAM」)モードのいずれで動作させるかを制御するキャッシュ制御論理220を含んでよい。通常モードでは、キャッシュ210は、キャッシュヒットするとメモリ要求を満たし、キャッシュミスするとキャッシュラインを置き換え、スヌープ要求を受けるとキャッシュラインを無効化する、あるいは、置き換えてよい。一方、CRAMモードでは、キャッシュ210は、キャッシュメモリのメモリ範囲内の要求がキャッシュメモリにより満たされ、スヌープ要求を受けてもキャッシュのラインが置き換えられたり無効化されたりしないようなRAMとして機能する。
【0017】
プロセッサ200はさらに命令ユニット230、制御ユニット240、実行ユニット250、およびメッセージングユニット260を含むことができる。命令ユニット230は、デコーダ等の任意の回路、論理、その他のハードウェアまたは構造を含み、命令に、受信、認識、復号、その他の処理を行うことができる。制御ユニット240は、マイクロコード、状態マシン論理、プログラム可能論理、その他の形態の制御論理等の任意の回路、論理、その他のハードウェアまたは構造を含み、命令ユニット230が受信する命令および/またはメッセージングユニット260が受信するメッセージに応じて制御プロセッサ200のための制御信号その他を生成することができる。
【0018】
実行ユニット250は、命令ユニット230が受信する命令を実行する任意の回路、論理、その他のハードウェアまたは構造を含むことができる。実行ユニット250は、制御ユニット240が生成する制御信号に基づき動作することができる。メッセージングユニット260は、プロセッサ200からシステム100の他のコンポーネントまたはエージェントに送信するべきメッセージを生成して、システム100の他のコンポーネントまたはエージェントがプロセッサ200に送信するメッセージを受信する任意の回路、論理、その他のハードウェアまたは構造を含むことができる。
【0019】
プロセッサ200の一実施形態では、命令ユニット210は、システム100にセキュアな環境を構築する処理(「SENTER」処理)をプロセッサ200に開始させる命令(「SENTER」命令)を受信することができる。SENTER命令を受信すると、制御ユニット240は、他のプロセッサおよびエージェントのメッセージングユニットによりSENTERバスメッセージとして認識される「SENTER」バスメッセージ(または、プロセッサその他のエージェントがバス以外の手段により通信を行うシステム内のその他の種類のメッセージ)をメッセージングユニット260に生成させる。SENTER命令を実行し、SENTERバスメッセージを送信するプロセッサまたは実行スレッドは、「始動論理プロセッサ」(「ILP」)と称される。
【0020】
SENTERバスメッセージを受信する、システム内の各プロセッサ、実行スレッド、その他のエージェントは、「応答論理プロセッサ」(「RLP」)と称される。SENTERバスメッセージに応じて、各RLPは、セキュアな環境の構築の準備を行うアクションを行い、ILPにセキュアな環境を起動させる。これらアクションのいずれかは、自身のメッセージングユニットに「ACK」バスメッセージを生成させ、SENTERバスメッセージの受領確認を行うことができてよい。
【0021】
図3は、本発明の一実施形態における、チップセット160、またはチップセット160の機能を行う任意のその他のチップセットまたはコンポーネントを表してよいチップセット300を示す。チップセット300は、メッセージングユニット310、制御ユニット320、「EXISTS」格納位置330、「JOINS」格納位置340、および、「ALL_JOINED」格納位置350を含んでよい。
【0022】
メッセージングユニット310は、チップセット300からシステム100の他のコンポーネントまたはエージェントに送信するべきメッセージを生成して、システム100の他のコンポーネントまたはエージェントが送信するメッセージを受信する任意の回路、論理、その他のハードウェアまたは構造を含むことができる。制御ユニット320は、マイクロコード、状態マシン論理、プログラム可能論理、その他の形態の制御論理等の任意の回路、論理、その他のハードウェアまたは構造を含み、メッセージングユニット310が受信するメッセージに応じて制御チップセット200のための制御信号を生成することができる。
【0023】
「EXISTS」格納位置330、「JOINS」格納位置340、および「ALL_JOINED」格納位置350の各々は、レジスタまたは任意の他の形態の情報格納装置を含んでよく、任意の数のビット用の格納装置を含んでよい。一実施形態においては、制御ユニット320は、EXISTS格納位置330を利用してシステム100で動作する全ての論理プロセッサその他のエージェントを追跡し、JOINS格納位置340を利用してSENTERバスメッセージを承認した全ての論理プロセッサその他のエージェントを追跡してよい。EXISTS格納位置330に反映されるシステム100の全てのプロセッサその他のエージェントが、JOINS格納位置340に反映されるSENTERバスメッセージを承認した場合に、制御ユニット320は、「ALL_JOINED」格納位置350にインジケータを設定して、ILPに対して、セキュアな環境の起動を進めてよいことを示すことができる。SENTER処理のこの記載において(本記載の残りの部分においても同様であるが)、本発明の実施形態を記載およびイネーブルする目的には不要である多くの詳細は省かれており、処理に関しては多くの変形例が可能である。例えば、ILPおよびRLPがフロント側プロセッサバス(「FSB」)により接続される場合には、FSBトランザクションは、各トランザクションのイニシエータの識別子を含むことができ、チップセット300をFSBに接続して全てのFSB論理プロセッサその他のバスエージェントを追跡することができる。
【0024】
図1の説明に戻ると、不揮発性格納装置190は、システム100における任意の数の個々の不揮発性格納媒体を表すことができる(例えば、半導体フラッシュメモリまたは磁気または光学ディスク)。不揮発性格納装置190は、本発明の実施形態で利用されるソフトウェアコンポーネントを格納する目的に利用することができる。例えば、不揮発性格納装置190は、承認済みのコードモジュール(「ACM」)192および計測された仮想マシンモニタ(「MVMM」)194を格納してよい。
【0025】
ACM192は、SENTER処理中にプロセッサ(1または複数)により実行されることで、セキュアな環境の構築に関る任意の数のアクションを実行することができる。例えばACM192は、システム100内のコンポーネントを初期化、構成、およびテストして、セキュアな環境に参加させる目的に利用することができる。一実施形態では、ACM192を利用して、システム100の任意のプロセッサ、チップセットその他のコンポーネントのメモリコントローラ機能により制御されて、システム100のメモリ構成をテストして、確実にシステムメモリ150内の一定のページまたは部分に対するアクセスを制限または制御することで、システム100をセキュアにするMVMM194および/またはその他のソフトウェアをシステムメモリ150への格納に際して保護してよい。別の実施形態では、ACM192は、MVMM194、および、セキュアな環境内で利用される任意の他のソフトウェアを認証して、MVMM194の実行を起動させる目的に利用することもできる。
【0026】
MVMM194は1以上の仮想マシンを制御して他のソフトウェアプログラムを実行させるSENTER処理中に起動されるトラステッド実体である任意の仮想マシンモニタ、ハイパーバイザ、その他の同様のソフトウェアプログラムであってよく(しばしば、計測起動環境、あるいは「MLE」と称される)、トラステッドであるものも、そうではないものも含まれる。
【0027】
システム100にセキュアな環境を構築するべく、任意のプロセッサ120、130、140、またはシステム100の任意の他のプロセッサの上で動作するオペレーティングシステム(「OS」)、基本入出力システム(「BIOS」)等のシステムソフトウェアは、ACM192およびMVMM194を、不揮発性格納装置190からシステムメモリ150へ送信して、これらプロセッサのいずれか(例えばプロセッサ120)に、SENTER命令を実行させてよい。SENTER命令の実行により、全てのRLPがSENTERバスメッセージを承認し、キャッシュ122をCRAMモードで動作するよう構成し、ACM192を(あるいは、後述するように本発明の一実施形態においてはACM192の一部を)キャッシュ122にロードするまで、ILP等のプロセッサ120は、SENTERバスメッセージを発行して、ALL_JOINED格納位置350に対してポーリングを行うことができる。キャッシュ122はCRAMモードで動作するよう構成することができ、CRAMモードにおいてキャッシュ122は、プロセッサ120がACM192を(あるいは、後述するように本発明の一実施形態においてはACM192の一部を)承認することのできるプライベートでセキュアなメモリとして機能することができる。
【0028】
ACMは、特定のプロセッサおよび/またはチップセットについて書き込むことができ、プロセッサおよび/またはチップセットの製造業者またはベンダによってデジタル署名を施されてよい。システムの各プロセッサを安定した状態にしてSENTER処理に参加できるようにするための様々なアクションは複雑であることから、ILPに加えてRLPも、ACMあるいはACMの一部を実行することが望ましい。さらに、システム100等のシステムが、異なるステッピング、バージョン、または種類の2以上のプロセッサを含みうる。従って、異なるプロセッサ用のコードを1つのACMに組み合わせて、異なるプロセッサのいずれもがILPとして機能することができるよう、および/または、RLPがACMあるいはACMの一部を実行することができるようにすることが望ましい。しかし、ACMのサイズは、認証のためにロードされる可能性のあるキャッシュメモリのサイズ(例えば64キロバイト)に制限される場合がある。従って本発明の実施形態では、SENTER処理において、2以上のACMを利用する、あるいは利用可能とする。
【0029】
図4は、本発明の一実施形態におけるマスタACM400を示し、これはシステム100のACM192として利用可能である。マスタACM400は、マスタヘッダ410、ACM420、ACM430、およびACM440を含む。各ACM420、430、および440は、異なるステッピング、バージョン、またはタイプのプロセッサについて書き込むことができる。例えば、ACM420、ACM430、およびACM440は、システム100内のプロセッサ120、130、および140についてそれぞれ書き込まれてよい。
【0030】
ACM420、430、および440の各々は、コードおよびデータを含むセクション(例えば各セクション424、432、および442)と、ヘッダを含むセクション(例えば各セクション424、434、および444)を含んでよい。各コードおよびデータのセクションは、SENTER処理中にプロセッサが実行するコードを、このコードの実行中に利用されるデータおよび/またはこのコードの実行中に生成されるデータのスクラッチパッド位置とともに含むことができる。各ヘッダセクションは、ハッシュおよび/または他の暗号関数により生成される、対応するACMから導出される、または対応するACMを表すダイジェストおよび/またはデジタル署名(「ハッシュ値」)、および/または、その他の値を含む。各ヘッダセクションは、さらに、ACMの著者、サイズ、バージョン等に関する情報を含むことができる。これらヘッダセクションの情報を利用して、対応するACMを認証することができる(つまり、正当性を確認することができる)。
【0031】
マスタヘッダ410は、整合テーブル412およびマスタハッシュ414を含んでよい。整合テーブル412は、例えばレジスタその他の格納位置から可読である各プロセッサ内の、または各プロセッサに関連付けられた固有のプロセッサ識別子(「CPU ID」)に基づいてシステム100に含まれる各プロセッサを識別するテーブルを含んでよい。各CPU IDについて、整合テーブルは、プロセッサに関するステッピング、バージョン、種類その他の情報に基づいて、マスタACM400に含まれるどのACMがそのプロセッサにより実行されるかを示す。
【0032】
マスタハッシュ414は、整合テーブル412およびヘッダ424、434、および444(または各ヘッダ424、434、および444の一部)の連結により導出される、または連結を表すハッシュ値を含む。マスタハッシュ414は、整合テーブル412およびACM420、430、および440のハッシュ値の連結に対してハッシュおよび/または他の暗号関数を行うことにより生成されてよい。従ってマスタハッシュ414を利用して、マスタACM400に含まれる全ての情報を認証することができる。
【0033】
図5は、本発明の方法の実施形態を示し、特に、複数の認証済みコードモジュールを利用してセキュアなコンピューティング環境に入る方法500を示す。本発明の方法の実施形態はこの点に限定はされないが、
図5の方法500の説明において、システム100、プロセッサ200、チップセット300、またはマスタACM400の各エレメントについて説明する場合がある。さらに、方法500は、各々が潜在的に異なる位置で異なる実体または人により、あるいは自動的に実行されうる個別の方法を集めたものを表してもよい。
【0034】
さらに、方法500で実行される特定のアクションは、制御ユニット240(例えばボックス550から558)が生成する制御信号に呼応してプロセッサ200が実行する、または、制御ユニット320が生成する制御信号に呼応してチップセット300により実行されてよい。そして、命令ユニット230の1つの命令の1以上のマイクロ命令またはマイクロオペレーションへの復号に呼応して、および/または、メッセージングユニット260のバスメッセージその他のトランザクションの受信に呼応して、プロセッサ200の制御信号を生成してよく、それから、メッセージングユニット310のバスメッセージその他のトランザクションの受信に呼応して、チップセット300の制御信号を生成してよい。
【0035】
方法500は、
図5のボックス502から開始することができる。
【0036】
ボックス510で、任意の数の個々のACM(例えばACM420、430、および440)が、例えばプロセッサその他の情報処理システムコンポーネントの製造業者またはベンダにより、書き込まれる、または生成されてよい。ボックス512で、各ACMについて、ハッシュその他のアルゴリズムを該ACMのコード、データ、および/または、その他のセクションに適用することで、ハッシュ値を生成する。ボックス514で、例えば公開/秘密鍵の対を利用して暗号化アルゴリズムを適用することにより、各ハッシュ値を暗号化することができる。ボックス516で、各ハッシュ値を対応するACMのヘッダに追加してよい。
【0037】
ボックス520で、マスタACM(例えばマスタACM400)を、情報処理システム(例えばシステム100)に対して生成してよい。マスタACMは、例えばシステム製造業者またはベンダにより、任意の数の個々のACM(例えばACM420、430、および440)を利用することにより生成されてよい。ボックス522で、システム100の各プロセッサその他のエージェントについてエントリ(各プロセッサの識別子およびどのACMがそのプロセッサにより実行されるかの指示を含む)を生成することにより、整合テーブル(例えば整合テーブル412)が生成されてよい。
【0038】
ボックス524で、整合テーブルを、マスタACMに含まれる個々のACMのハッシュ値それぞれと連結してよい。ボックス526で、整合テーブルおよび個々のACMハッシュ値の連結に対してハッシュその他の同様のアルゴリズムを適用することにより、マスタハッシュ(例えばマスタハッシュ414)を生成することができる。ボックス528で、例えば公開/秘密鍵の対を利用して暗号化アルゴリズムを適用することにより、マスタハッシュを暗号化することができる。
【0039】
ボックス530で、マスタハッシュおよびマスタテーブルをマスタヘッダに連結して、マスタヘッダと個々のACMとを連結することにより、マスタACMを完成させることができる。ボックス532で、マスタACMは、システムの例えば不揮発性格納装置(例えば不揮発性格納装置190)にロードされてよい、またはインストールされてよい。
【0040】
ボックス540で、マスタACMは、不揮発性格納装置からシステムメモリ(例えばシステムメモリ150)に、例えばシステム100のBIOS、ブートローダ、またはOSによりコピーされてよい。ボックス542で、セキュアなシステム環境へのシステム100のエントリが、例えばBIOS、ブートローダ、OSがプロセッサ120にSENTER命令を発行することにより始動される。ボックス544で、プロセッサ120は、SENTERバスメッセージを送信してよい。ボックス546で、システム100の各RLP(例えばプロセッサ130および140)は、ACKバスメッセージを送信してよい。ボックス548で、全てのRLPがSENTER処理に参加した旨を示す情報を、例えばALL_JOINED格納位置350に設定することができる。
【0041】
ボックス550で、システム100のプロセッサ(例えばILPまたはRLP)は、対応するエントリを見つけるべく、マスタACMの整合テーブルを読み出す。整合するものが見つからない場合には、ボックス552で、プロセッサは、不揮発性メモリにエラーコード値を書き込んで、システムをリセットすることができる。一方で整合するものが見つかった場合には、ボックス554で、プロセッサは自身のキャッシュをCRAMモードで動作するよう構成して、マスタヘッダおよび整合する個々のACMを自身のキャッシュにロードする。
【0042】
ボックス556で、プロセッサは、マスタヘッダおよび整合するACMそれぞれをハッシュして、結果生じるハッシュ値を、マスタハッシュ、および、マスタACMから読み出した個々のACMハッシュと比較することにより、該マスタヘッダおよび整合するACMの認証を試みることができる。比較結果が整合しない場合には、ボックス552で、プロセッサは、不揮発性メモリにエラーコード値を書き込んで、システムをリセットすることができる。一方でマスタヘッダおよび整合するACMの両方の認証に成功した場合には、ボックス558で、マスタハッシュをトークン(例えばトークン170)に送信して、PCRに格納させ、後に計測起動環境またはセキュアなシステム環境における機密の情報の封印または封印を解くために備えさせることができる。
【0043】
ボックス560では、ボックス550からボックス558までの処理を、システム100の各他のプロセッサにより繰り返させてよい。ボックス562で、システム100の1以上のプロセッサが、自身のACMの実行を開始してよい。ボックス564で、ACMを実行しているプロセッサがMVMMを起動してよい。ボックス566で、計測起動環境(「MLE」)またはセキュアなシステム環境へのシステム100のエントリが完了してよい。
【0044】
ボックス598で方法500が終了してよい。
【0045】
方法500を異なる順序で実行すること、示されたブロックを同時に実行すること、示されたブロックを省くこと、ブロックを追加すること、またはこれら順序を変えること、ブロックの組み合わせ、省略、ブロックの追加を組み合わせること全てが本発明の範囲に含まれることに留意されたい。本発明の方法の実施形態には数多くの変形例が可能であるが、方法500の説明からは明らかではない場合もある。例えば、ボックス520から530のマスタACMの生成は、システム100内外いずれで行われてもよい。
【0046】
以上のように、複数の認証済みコードモジュールを利用してセキュアなコンピューティング環境に入るシステム、装置、および方法を記載してきた。特定の実施形態に限って説明、および図示してきたが、これら実施形態は広義の発明の例示であり限定は意図しておらず、当業者であれば様々な他の変形例を想到することが明らかであり、記載、図示してきた特定の構成および配置に本発明を限定することは意図されていないことに留意されたい。本技術分野は急速な進歩を遂げており、未来の技術進化を予測することは難しく、未来の技術進歩如何によって、本開示の原理または添付請求項の範囲を逸脱することなく、開示されている実施形態の配置、詳細等を修正可能になるであろうことは容易に予想がつく。
本発明の実施形態の例を項目として示す。
[項目1]
セキュアなエントリ命令を復号するデコーダと、
セキュアなエントリ命令が復号されると、
1以上のプロセッサのための1以上の認証済みコードモジュール、及び、認証済みコードモジュールと認証済みコードモジュールを実行するプロセッサとの対応関係を示すエントリを有する整合テーブル、並びに、マスタハッシュを含むマスタヘッダ、を有するマスタ認証済みコードモジュール中における整合テーブルから、自身のプロセッサに対応するエントリを見つけ、マスタ認証済みコードモジュールからマスタヘッダおよび見つけたエントリに示される個々の認証済みコードモジュールを読み出す制御論理と、
を備え、
認証済みコードモジュールの各々は対応するハッシュと、コード及びデータとを含み、マスタハッシュは、整合テーブル、及び、複数の認証済みコードモジュールの複数の対応するハッシュに基づいて生成される、
プロセッサ。
[項目2]
セキュアなモードに構成されるキャッシュをさらに備え、
制御論理は、マスタヘッダおよび個々の認証済みコードモジュールを、セキュアなモードに構成されたキャッシュへと読み込む項目1に記載のプロセッサ。
[項目3]
制御論理はさらに、マスタヘッダおよび個々の認証済みコードモジュールをキャッシュ内で認証する項目2に記載のプロセッサ。
[項目4]
制御論理はさらに、マスタヘッダおよび個々の認証済みコードモジュールを認証した後で、マスタハッシュをトークンに送信する項目3に記載のプロセッサ。
[項目5]
第1のプロセッサにより、
1以上のプロセッサのための1以上の認証済みコードモジュール、及び、認証済みコードモジュールと認証済みコードモジュールを実行するプロセッサとの対応関係を示すエントリを有する整合テーブル、並びに、マスタハッシュを含むマスタヘッダ、を有するマスタ認証済みコードモジュール中における整合テーブルから、第1のプロセッサに対応する第1のエントリを見つける段階と、
第1のプロセッサにより、マスタヘッダを、マスタ認証済みコードモジュールから第1のセキュアなメモリにロードする段階と、
第1のプロセッサにより、見つけたエントリに示される第1のプロセッサの第1の個々の認証済みコードモジュールを、マスタコードモジュールから第1のセキュアなメモリにロードする段階と
を備え、
認証済みコードモジュールの各々は対応するハッシュと、コード及びデータとを含み、マスタハッシュは、整合テーブル、及び、複数の認証済みコードモジュールの複数の対応するハッシュに基づいて生成される、
方法。
[項目6]
第1のプロセッサにより、セキュアなエントリ命令を受信する段階をさらに備え、
第1のエントリを見つける段階、マスタヘッダをロードする段階、および第1の個々の認証済みコードモジュールをロードする段階は、セキュアなエントリ命令を発行する段階が行われると行われる項目5に記載の方法。
[項目7]
第1のセキュアなメモリは、第1のプロセッサのキャッシュメモリである項目5又は6に記載の方法。
[項目8]
第1のプロセッサにより、マスタヘッダおよび第1の個々の認証済みコードモジュールを第1のセキュアなメモリ内で認証する段階をさらに備える項目5から7のいずれか1項に記載の方法。
[項目9]
第1のプロセッサにより、マスタヘッダおよび第1の個々の認証済みコードモジュールを認証する段階の後で、マスタハッシュをトークンに送信する段階をさらに備える項目8に記載の方法。
[項目10]
第2のプロセッサにより、マスタ認証済みコードモジュールの整合テーブルから、第2のプロセッサに対応する第2のエントリを見つける段階と、
第2のプロセッサにより、マスタヘッダを、マスタ認証済みコードモジュールから第2のセキュアなメモリにロードする段階と、
第2のプロセッサにより、第2のプロセッサの第2の個々の認証済みコードモジュールを、マスタコードモジュールから第2のセキュアなメモリにロードする段階とをさらに備える項目5から9のいずれか1項に記載の方法。
[項目11]
第2のセキュアなメモリは、第2のプロセッサのキャッシュメモリである項目10に記載の方法。
[項目12]
第2のプロセッサにより、マスタヘッダおよび第2の個々の認証済みコードモジュールを第2のセキュアなメモリ内で認証する段階をさらに備える項目10又は11に記載の方法。
[項目13]
第1のプロセッサと第2のプロセッサとを備えるシステムであって、
第1のプロセッサは、
セキュアなエントリ命令を復号するデコーダと、
セキュアなエントリメッセージを送信するメッセージング論理と、
セキュアなエントリ命令が復号されると、
1以上のプロセッサのための1以上の認証済みコードモジュール、及び、認証済みコードモジュールと認証済みコードモジュールを実行するプロセッサとの対応関係を示すエントリを有する整合テーブル、並びに、マスタハッシュを含むマスタヘッダ、を有するマスタ認証済みコードモジュール中における整合テーブルから、第1のプロセッサに対応する第1のエントリを見つけ、マスタ認証済みコードモジュールからマスタヘッダおよび見つけた第1のエントリに示される第1の個々の認証済みコードモジュールを読み出す第1の制御論理とを有し、
第2のプロセッサは、
セキュアなエントリメッセージを受信するメッセージング論理と、
セキュアなエントリメッセージが受信されると、マスタ認証済みコードモジュールの整合テーブルから、第2のプロセッサに対応する第2のエントリを見つけ、マスタ認証済みコードモジュールからマスタヘッダおよび見つけた第2のエントリに示される第2の個々の認証済みコードモジュールを読み出す第2の制御論理とを有し、
認証済みコードモジュールの各々は対応するハッシュと、コード及びデータとを含み、マスタハッシュは、整合テーブル及び複数の認証済みコードモジュールの複数の対応するハッシュに基づいて生成される、
システム。
[項目14]
マスタ認証済みコードモジュールを格納する不揮発性格納装置をさらに備える項目13に記載のシステム。
[項目15]
マスタ認証済みコードモジュールが不揮発性格納装置からロードされるシステムメモリをさらに備える項目14に記載のシステム。
[項目16]
マスタヘッダおよび第1の個々の認証済みコードモジュールを第1のプロセッサのセキュアなメモリ内で認証した後で、マスタ認証済みコードモジュールのマスタハッシュをロードするトークンをさらに備える項目15に記載のシステム。