(57)【特許請求の範囲】
【請求項１】
部分的に接続されたトポロジー又は完全に接続されたトポロジーを有するシステムでセキュアカーネルを起動する方法であって、
前記システムは、それぞれのノードが複数のプロセッサを含む複数のノードを有しており、
前記システム内に設けられ、前記複数のノードのそれぞれによりアクセス可能な記憶手段に信頼できるエージェント及びセキュアなカーネルをロードし、所定のノードに含まれる所定のプロセッサでセキュアな起動を発するステップと、
複数のツリー構造のレベルで前記所定のノードに関して前記システムの全ての他のノードを識別するスパニングツリーを前記所定のプロセッサにより構築するステップと、
前記所定のプロセッサにより前記スパニングツリーで識別された前記他のノードにセキュアな起動メッセージを送出するステップと、
前記他のノードからの前記セキュアな起動メッセージの応答に応じて、ハッシュ計算を実行し、前記ハッシュ計算の結果を記憶されているハッシュ値と比較することで、前記所定のプロセッサにより、前記記憶手段にロードされた前記信頼できるエージェントを評価するステップと、
前記所定のプロセッサにより、前記他のノードのそれぞれに含まれる他のプロセッサに前記信頼できるエージェントの評価結果を送出するステップと、
前記記憶手段にロードされた前記信頼できるエージェントにアクセスして、前記他のノードに含まれる前記他のプロセッサにより前記信頼できるエージェントを個々に評価することで得られた評価結果である、前記他のノードに含まれる前記他のプロセッサからの評価結果に応答して、複数のバリアポジションを有するバリアメカニズムであって、前記所定のプロセッサがそれぞれのバリアポジションでの前記信頼できるエージェントのオプコード及びデータを含むブロードキャストメッセージを発するバリアメカニズムを使用して、前記所定のプロセッサにより前記スパニングツリーで識別された全てのノードで前記信頼できるエージェントの実行を制御するステップと、
前記信頼できるエージェントの実行後、前記所定のプロセッサにより前記記憶手段にロードされた前記セキュアカーネルを起動するステップと、
を含むことを特徴とする方法。
【請求項２】
コンピュータに、それぞれのノードが複数のプロセッサを含む複数のノードを有するシステムであって、部分的に接続されたトポロジー又は完全に接続されたトポロジーを有するシステムでセキュアカーネルを起動する方法を実行させるためのプログラムを記憶した記憶媒体であって、
当該方法は、
前記システム内に設けられ、前記複数のノードのそれぞれによりアクセス可能な記憶手段に信頼できるエージェント及びセキュアなカーネルをロードし、所定のノードに含まれる所定のプロセッサでセキュアな起動を発するステップと、
複数のツリー構造のレベルで前記所定のノードに関して前記システムの全ての他のノードを識別するスパニングツリーを前記所定のプロセッサにより構築するステップと、
前記所定のプロセッサにより前記スパニングツリーで識別された前記他のノードにセキュアな起動メッセージを送出するステップと、
前記他のノードからの前記セキュアな起動メッセージの応答に応じて、ハッシュ計算を実行し、前記ハッシュ計算の結果を記憶されているハッシュ値と比較することで、前記所定のプロセッサにより、前記記憶手段にロードされた前記信頼できるエージェントを評価するステップと、
前記所定のプロセッサにより、前記他のノードのそれぞれに含まれる他のプロセッサに前記信頼できるエージェントの評価結果を送出するステップと、
前記記憶手段にロードされた前記信頼できるエージェントにアクセスして、前記他のノードに含まれる前記他のプロセッサにより前記信頼できるエージェントを個々に評価することで得られた評価結果である、前記他のノードに含まれる前記他のプロセッサからの評価結果に応答して、複数のバリアポジションを有するバリアメカニズムであって、前記所定のプロセッサがそれぞれのバリアポジションでの前記信頼できるエージェントのオプコード及びデータを含むブロードキャストメッセージを発するバリアメカニズムを使用して、前記所定のプロセッサにより前記スパニングツリーで識別された全てのノードで前記信頼できるエージェントの実行を制御するステップと、
前記信頼できるエージェントの実行後、前記所定のプロセッサにより前記記憶手段にロードされた前記セキュアカーネルを起動するステップと、
を含むことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関し、より詳細には、コンピュータシステムでのセキュアオペレーションの始動に関する。
【背景技術】
【０００２】
リンクベースシステムのトポロジーは、ポイントツーポイントリンクにより接続される多数のノードを含んでいる。トポロジーは、完全に接続されてなく、すなわち、所与のノードは、全ての他のノードにダイレクトに接続されていないが、いずれかのノードは、設定されたルーティングメカニズムに基づいて、多数のリンクを介していずれかの他のノードに到達する。例として、ノードは、プロセッサ、入力／出力（Ｉ／Ｏ）ハブ、又は別のかかる装置である。
【０００３】
システム動作のはじめで、プロセッサハードウェアは、指定されたように動作することが信頼され、リンクメカニズムは、一方のリンクコントローラから別のリンクコントローラにハードウェアにより送出されるリンクレイヤメッセージを転送することが信頼できる。さらに、リンクメカニズムは、リンクのそれぞれのエンドにあるハードウェアコンポーンネントに関する信頼できる情報を提供する。同様に、Ｉ／Ｏハブのハードウェアメカニズムは、指定されたように動作することが信頼される。
【特許文献１】欧州ＥＰ００２８８１７号  ０５／２０／１９８１
【特許文献２】欧州ＥＰ０３８１６４５号  ０８／０８／１９９０
【特許文献３】欧州ＥＰ０７９４６４０号  ０３／０３／１９９９
【特許文献４】英国ＧＢ２４０４０５０号  ０１／１９／２００５
【発明の開示】
【発明が解決しようとする課題】
【０００４】
所定の実現では、別々の物理的なメモリが存在するものの、システムファブリックで実行されている所与のプロトコルは、メモリにアクセスし、メモリ全体のコヒーレントな概観及び振る舞いを単一の物理的なアドレス空間として維持するために使用される。しかし、このコヒーレントな動作は、信頼されないソフトウェアにより設定されるアドレスデコーディング及びルーティングメカニズムに依存する。したがって、設定が評価されるまで、メモリに正確にアクセスするために、かかるプロトコルを信頼することができない。特に、かかるプロトコルは、メモリのエイリアス、すなわち同じ物理アドレスを異なるマッピングで使用することのような、コンフィギュレーションエラーすなわち不適切な動作がないとして信頼することができない。したがって、かかるシステムにおいて信頼できる環境を始動することが必要とされる。
【発明を実施するための最良の形態】
【０００５】
様々な実施の形態では、システムトポロジーにおける全てのプロセッサで実行するセキュアカーネル（ｓｅｃｕｒｅ  ｋｅｒｎｅｌ）が確実に起動される。さらに、セキュアカーネルのアイデンティティが判断され、起動プロセスで使用される１以上のソフトウェアエージェントと協力して、確実なやり方で記録される。かかるやり方では、該セキュアカーネルを起動するために使用されるハードウェアに定着される推移する信頼（ｔｒａｎｓｉｔｉｖｅ  ｔｒｕｓｔ）のチェインが記録される。
【０００６】
所定の実施の形態では、信頼できるハードウェアは、マスターＩ／Ｏハブを含んでおり、このマスターＩ／Ｏハブにマスターの信頼できるプラットフォームモジュール（ＴＰＭ：  Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）が取り付けられる。（ノンセキュアな）オペレーティングシステム（ＯＳ）は、このトポロジーの見地に関する情報を有する。さらに、信頼できるソフトウェアエージェントは、その実行がいずれかの方法によっても抑制することができないように実行される。
【０００７】
ユーザ又はシステム管理者は、セキュアカーネルをシステムにロードすることを望む。本実施の形態で言及されるように、用語「セキュア」とは、システムを後に検査し、所与のカーネルがロードされたかを判定するための能力をいう。さらに、ユーザ又は第三者は、カーネルがセキュアなメモリ環境にロードされたかを更に判定する。したがって、１実施の形態では、外部のエージェントは、信頼を確立するか、又はセキュアな環境におけるソフトウェアを検査するための能力が提供されたことで、セキュアな環境内に含まれるカーネルを信頼することを決定する。１実施の形態では、検査する全体の領域を露出することよりはむしろ、セキュアなメモリ領域を表す暗号のハッシュ値（たとえば、ソフトウェアの識別値）が検査される。１実施の形態では、デジタル署名されたセキュアなソフトウェアの識別値が、外部エージェントによりハードウェアがアクセス可能なように記憶される。
【０００８】
図１Ａを参照して、本発明の１実施の形態に係るマルチプロセッサシステム上でセキュアカーネルを起動する方法に関するフローチャートが示されている。図１Ａに示されるように、本方法１００は、信頼できるエージェント及びセキュアカーネルをメモリにロードすることで開始する（ブロック１１０）。１実施の形態では、信頼されないＯＳは、信頼できるエージェント及びセキュアカーネルをシステムメモリの安全な領域にロードする。信頼できるエージェント及びセキュアカーネルは、ディスクドライブのような大容量の記憶装置に記憶され、システムの多数のプロセッサによりアクセスされるシステムメモリにロードされる。さらに、ＯＳは、セキュアカーネルと信頼できるエージェントをアドレス指定するためのページテーブルを構築する。１実施の形態では、これらページテーブルのアドレス及び長さは、システムのマスターＩ／Ｏハブにおける特定の位置に記憶される。また、ＯＳは、モジュールを認証するために使用される公開鍵を記憶する。１実施の形態では、信頼できるエージェントは、システムのコンフィギュレーション、より詳細には、システムのメモリのコンフィギュレーション（設定）を評価するために使用されるセキュア認証コードである。信頼できるエージェントは、セキュアカーネルの実行を始動するために更に使用される。
【０００９】
つぎに、ＯＳは、始動論理プロセッサ（ＩＬＰ：Ｉｎｉｔｉａｔｉｎｇ  Ｌｏｇｉｃａｌ  Ｐｒｏｃｅｓｓｏｒ）で確実な起動を発する（ブロック１２０）。かかる確実な起動は、確実なエンターを始動するためのセキュアエンター（ＳＥＮＴＥＲ）命令である。ＳＥＮＴＥＲ命令の実行により、ＩＬＰは、そのソケット及び他のプロセッサソケットの両者内での特定のバスメッセージを発し、次いで、その後のシステム動作のためのかなりの時間間隔を待つ。
【００１０】
１実施の形態では、ＩＬＰは、マスターＩ／Ｏハブにダイレクトに接続されており、このマスターＩ／Ｏハブは、マスターＴＰＭにダイレクトに接続されている。かかる実施の形態では、ＩＬＰは、ＩＬＰがマスターＴＰＭへの信頼できるパスを有しているかを評価する。たとえば、ＩＬＰソケットにおける信頼できるリンクパラメータが調べられる。かかるパスは、ファームウェア又はソフトウェアにより初期化される必要がない信頼できるハードウェアパスである。本方法の実行におけるこの点で、ＩＬＰがマイクロプロセッサソケットの一部である実施の形態では、ＩＬＰにより、ソケットにおける他の論理プロセッサ（ＯＬＰ）が停止される。
【００１１】
つぎに、ＩＬＰは、スパニングツリーを構築する（ブロック１３０）。かかるスパニングツリーは、所望のアルゴリズムに従って構築される。スパニングツリーは、ツリー構造の複数のレベルにおけるＩＬＰノードに関して、システムの全ての他のノードを識別するために使用され、ＩＬＰは、ツリーのルートとしての役割を果たす。ＩＬＰにダイレクト接続されるノードは、第二のレベルのノードであり、これら第二のレベルのノードにダイレクトに接続されるノードは、第三のレベルのノードである等である。かかるスパニングツリーは、システムの適切なコンフィギュレーションを評価し、リンクベースのメッセージの異なるノードへのルーティングを可能にするために使用される。信頼できるハードウェア及びリンクのみがスパニングツリーを構築するために使用される。所定の実施の形態では、スパニングツリーは、これによりＩＬＰが各プロセッサソケットにメッセージを送出することができる信頼できるブロードキャストメカニズム、それぞれのプロセッサソケットについてブロードキャストされたメッセージに応答し、これらの応答についてＩＬＰに戻ってツリーを通過するときに要約する手段、及びＩＬＰが次のブロードキャストされたメッセージを続ける前に、全てのプロセッサソケットが既知の状態に到達したことを保証するバリアメカニズムを提供する。
【００１２】
図１Ａを更に参照して、ブロック１４０で、確実な起動のメッセージは、スパニングツリーの他のソケットに送出される。１実施の形態では、かかるメッセージは、ルートレベルから次のレベル（すなわち、ダウンリンクノード）にメッセージを送出するスパニングツリープロトコルを使用して送出され、この次のレベルは、順次、次の低いレベルにメッセージを送出する等である。これに応じて、それぞれのレベルは、その送信レベル（すなわち、アップリンクノード）に応答パケットを送る。したがって、全てのノードがメッセージ及び応答を適切に受信するとき、最後の要約的な応答パケットは、ルートノードに送られる。本方法の実行におけるこの点で、ソケットのそれぞれにある応答論理プロセッサ（ＲＬＰ：Ｒｅｓｐｏｎｄｉｎｇ  Ｌｏｇｉｃａｌ  Ｐｒｏｃｅｓｓｏｒ）は、ソケットにあるＯＬＰを停止させる。
【００１３】
ここで図１Ｂを参照して、ＩＬＰは、全ての他のノードが適切に受信し、ＳＥＮＴＥＲ命令に応答したことを示す要約的な応答を受信したとき、ＩＬＰは、信頼できるエージェントを評価する（ブロック１５０）。かかる評価は、たとえば、ハッシュ計算を実行すること、結果を予め記憶されているハッシュ値と比較することを含んでいる。次いで、かかる評価情報は、ＲＬＰに送出される（ブロック１６０）。ＲＬＰは、ＲＬＰが保護されているメモリ位置における信頼できるエージェントにアクセスし、該信頼できるエージェントを評価することを、それぞれ個々に評価する。（ブロック１７０）。
【００１４】
評価に関する要約的な応答がＲＬＰのそれぞれのＩＬＰにより受信されたとき、次いで、ＩＬＰは、システムの全てのソケット上の信頼できるエージェントの実行を制御する（ブロック１８０）。たとえば、１実施の形態では、ＩＬＰは、信頼できるエージェントの一部を始動し、信頼できるエージェントの該一部を実行したことの指示をそれぞれのソケットから待ち、次いで、次の部分に進むためにバリアメカニズムを使用する。かかる指示は、先に説明されたスパニングツリーのプロトコルを使用して送出される。
【００１５】
このように、ハードウェアは、各プロセッサソケットにある同一の信頼できるエージェントを起動するためにスパニングツリーを使用する。信頼できるエージェントは、調整されたＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）タイプの実行で、各プロセッサソケットで同時に実行する。これらの信頼できるエージェントの実行は、調整及びＩＬＰと通信するためにスパニングツリーを使用して、トポロジーのメモリ設定を完全に評価するために協力する。信頼できるエージェントが設定を効果的に評価するとき、ＩＬＰでの信頼できるエージェントの実行は、セキュアカーネルをアドレス指定し、カーネルのハッシュを計算し、該ハッシュをマスターＴＰＭに記録するために使用されるページテーブルを評価する。
【００１６】
信頼できるエージェントの実行後、ＩＬＰは、セキュアカーネルを起動する（ブロック１９０）。かかる時間で、セキュアカーネルはシステム動作に取って代わり、セキュアカーネル内のコードに従って実行する（ブロック１９５）。たとえば、セキュアカーネルは、システムの全てのソケットにわたり実行される。
【００１７】
ここで図２を参照して、本発明の１実施の形態に係るシステムのブロック図が示されている。図２に示されているように、システム２００は、任意の、部分的に接続されたポイントツーポイントアーキテクチャを有するマルチプロセッサシステムである。すなわち、システム２００の所定のノードは、互いにダイレクトに接続されており、他のノードは、その間に接続される中間ノードを介して通信する。他の実施の形態では、システム２００は、完全に接続されたトポロジーを有している。１実施の形態では、システム２００は、本発明の範囲はそのように限定されるものではないが、同時のマルチプロセッシング（ＳＭＰ：Ｓｉｍｕｌｔａｎｅｏｕｓ  ＭｕｌｔｉＰｒｏｃｅｓｓｉｎｇ）サーバコンピュータである。
【００１８】
すなわち、図２にはサーバプラットフォームとして示されているが、他の実施の形態では、システムは、所望のデスクトップ、モバイル、サーバ又は他のかかるプラットフォームのいずれか１つであることを理解されたい。所定の実施の形態では、図２の異なるコンポーネント間の相互接続は、システム２００内にコヒーレントな共有メモリを提供するポイントツーポイント相互接続であり、１つのかかる実施の形態では、その間で通信するために使用される相互接続及びプロトコルは、コモンシステムインタフェース（ＣＳＩ）を形成する。かかるやり方では、マルチプルプロセッサ、メモリ、及びシステム２００の他のコンポーネントは、お互いにコヒーレントにインタフェースする。
【００１９】
図２の実施の形態では、システム２００の全てのコンポーネントは、コヒーレントシステムを集合的に形成する。かかるコヒーレントシステムは、トランザクションが流れるチャネル間のいずれかのオーダーリング（順序付け）なしに、コヒーレントトランザクション（ｃｏｈｅｒｅｎｔ  ｔｒａｎｓａｃｔｉｏｎ）を受け入れる。コヒーレントシステムとして本実施の形態では説明されているが、コヒーレント及びノンコヒーレントトランザクションの両者が通過され、システム内のコンポーネントにより作用されることを理解されたい。たとえば、システム２００に関連されるメモリの１つ、一部又は全部の領域は、ノンコヒーレントトランザクションのために予約されている。また、本発明の実施の形態は、コヒーレントシステムに限定されるものではないことを理解されたい。
【００２０】
図２に示されるように、第一のプロセッサソケット２１０は、複数のプロセッシングコア２１２ａ，２１２ｂ，２１２ｃ及び２１２ｄを含んでいる。図２の実施の形態では、４つのかかるプロセッシングコアを含むとして示されているが、他の実施の形態では、プロセッサソケットは、多かれ少なかれかかるコアを含んでいることを理解されたい。図２に更に示されるように、プロセッサコアは、バス又はリング２１５を介して互いに接続される。ＣＳＩプロトコルに従う実施の形態のような所定の実施の形態では、プロセッサソケットは、メモリコントローラ機能、ＣＳＩパケット生成及びルーティングメカニズムのような、追加のロジック機能を含んでいる。
【００２１】
例として、図２においてプロセッサソケット２１０内には、ロジック機能２１６が示されており、このロジック機能は、メモリコントローラ及び他のロジック機能を含んでいる。ロジック機能２１６は、ノード識別子（ＮＩＤ）をプロセッサソケットと関連付けする。図２において示されるように、プロセッサソケット２１０は、１実施の形態では始動論理プロセッサであることを示す１つのノード識別子を有する。ロジック機能２１６は、物理メモリマップの全てのアイテムについて対応するノード（たとえばＮＩＤ）にアドレスをマッピングするソースアドレスデコーダを含んでいる。適切なコンフィギュレーションが行われている場合、それぞれのプロセッサソケットは、ソースアドレスデコーダを有するロジック機能を含んでおり、このソースアドレスデコーダは、同じアドレスを同じノードに対応付けする。１実施の形態では、ＮＩＤは、システムの初期化に応じて信頼されないファームウェアにより割り当てられ、したがって固有なものではない。このように所定の実施の形態では、信頼できるエージェントは、それぞれのノードのＮＩＤが実際に固有であるかを判定するために使用される。所定の実施の形態では、ロジック機能２１６は、ターゲットアドレスデコーダを含んでおり、このデコーダは、たとえば、所与のプロセッサソケットにダイレクトに接続されている物理メモリといった、物理メモリにアドレスをマッピングする。
【００２２】
メモリ２１８は、プロセッサソケット２１０にダイレクトに接続される。メモリ２１８がプロセッサソケット２１０にダイレクトに接続されているが、様々な実施の形態では、システム２００内のいずれかのプロセッサソケットがメモリ２１８にアクセスすることを理解されたい。メモリ２１８は、ロジック機能２１６内にあるメモリコントローラ機能を使用して、プロセッサソケット２１０とインタフェースすることを理解されたい。さらに、図２には示されていないが、それぞれのプロセッサソケットは、該ソケットに関連される１以上のメモリを有していることを理解されたい。それぞれのソケットが該ソケットにダイレクト接続される物理メモリを有するが、キャッシュのような追加のメモリ素子がプロセッサソケット内の個々のプロセッシングコアと関連される。１実施の形態では、多数のかかるメモリが存在し、それぞれのメモリが異なるプロセッサソケットにダイレクトに接続されるが、システム内の全てのメモリは、単一の物理的なアドレス空間としてアドレス指定される。
【００２３】
図２に更に示されるように、プロセッサソケット２１０は、プロセッサソケット２２０、プロセッサソケット２５０及びプロセッサソケット２６０にダイレクトに接続されている。さらに、プロセッサソケット２１０は、マスターＩ／Ｏハブ２９０にダイレクト接続され、このマスターＩ／Ｏハブは、順次、マスターＴＰＭ２９２に接続される。本実施の形態では詳細に説明されていないが、プロセッサソケット２３０，２４０，２７０及び２８０（及びソケット２２０，２５０及び２６０）は、プロセッサソケット２１０に関して説明されたように、同じプロセッシングコア、バス、リング及びロジック機能を有している。最後に、図２には、第二のＩ／Ｏハブ２９５が示されており、この第二のＩ／Ｏハブは、プロセッサソケット２５０，２６０，２７０及び２８０にダイレクトに接続されている。
【００２４】
Ｉ／Ｏハブ２９０及び２９５は、該ハブにダイレクトに接続されるＩ／Ｏ装置とインタフェースするために複数のポートをそれぞれ含む。たとえば、所定の実施の形態では、かかるＩ／Ｏ装置は、１以上のバススキームに準拠した装置である。１実施の形態では、かかるＩ／Ｏ装置は、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ  Ｂａｓｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．０ａ（２００２年７月発表）に準拠したＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）ＥｘｐｒｅｓｓＴＭ装置である。マスターＴＰＭ２９２は、Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｐｌａｔｆｏｒｍ  Ａｌｌｉａｎｃｅ（ＴＣＰＡ）Ｍａｉｎ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．１ｂ（２００２年２月２２日発表）に準拠した信頼できるプラットフォームモジュールである。マスターＴＰＭ２９２は、セキュアな動作環境をつくり、かつ維持するために関連されるデータを保護する。特定の実施の形態では、マスターＴＰＭ２９２は、特定の暗号、復号及び／又は評価プロセスのための鍵を含む。マスターＴＰＭ２９２は、セキュアな環境で使用されるダイジェスト値及び他の情報を保持するための記憶空間を含んでいる。１実施の形態では、マスターＴＰＭ２９２における記憶空間は、電力ロスの場合にその内容を保持するための不揮発性メモリ（たとえば、フラッシュメモリ）を含んでいる。
【００２５】
図２の実施の形態では、それぞれのプロセッサソケットについて４又は５のダイレクト接続を含むものとして示されているが、他の実施の形態は、異なるソケット間で多かれ少なかれダイレクト接続を有する。さらに、異なる実施の形態では、多かれ少なかれソケットが存在しているが、それぞれのソケットは異なる数のコア及び異なる量のロジック機能を有していることを理解されたい。たとえば、単一のプロセッサシステムは単一のＩ／Ｏハブ、及び該ハブに接続される関連されるＩ／Ｏ装置を有して実現される。代替的に、（４，８，１６又は３２のような）異なる数のマルチプロセッサを有するマルチプロセッサシステムが実現され、適切な数のＩ／Ｏハブ及び他のコンポーネントが該プロセッサに接続される。いずれかのかかるプラットフォームトポロジーは、システムのコヒーレントな部分内にコヒーレンシーを提供するために、及びシステムに接続されるＩ／Ｏ装置間でのノンコヒーレントなペアツーペアトランザクションを許容するために、ポイントツーポイント相互接続を利用する。さらに、所定の実施の形態では、クロスバー、ルータ等のような更なるコンポーネントがシステム２００に存在する。
【００２６】
ここで図３を参照して、本発明の１実施の形態に係るスパニングツリーのブロック図が示されている。図３に示されるように、スパニングツリー３００は、ＩＬＰにより構築されるスパニングツリーのグラフィック表現である。より詳細には、スパニングツリー３００は、プロセッサソケット２１０がＩＬＰを含んでいる図２のシステム２００のスパニングツリーに対応している。なお、スパニングツリーのそれぞれのノードは、図２のマッチングプロセッサソケットのノード識別子に対応するノード識別子を有している。図３に示されるように、ルートレベルノード３１０は、参照符号１のノード識別子を有しており、図２のプロセッサソケット２１０に対応している。レベル２のノードは、プロセッサソケット２１０にダイレクト接続されるノードを含んでいる。特に、図３に示されるように、レベル２のノードは、ノード３１５，３２０，３２５及び３３０を含んでおり、それぞれのノードは、プロセッサソケット２１０にダイレクトに接続されるシステム２００のノードに対応しており、すなわち、プロセッサソケット２２０，２５０及び２６０、並びにマスターＩ／Ｏハブ２９０である。
【００２７】
第三のレベルのノードは、ノード３３５，３４０及び３５０を含んでいる。これらのノードのそれぞれは、第二のレベルのノードにダイレクトに接続されるノードに対応している。たとえば、（たとえば、Ｉ／Ｏハブ２９５に対応する）ノード３３５は、プロセッサソケット２５０にダイレクトに接続され、ノード３４０（すなわち、プロセッサソケット２７０に対応する）は、プロセッサソケット２６０にダイレクトに接続されており、ノード３５０（すなわち、プロセッサソフトウェア２３０に対応する）は、プロセッサソケット２２０にダイレクトに接続されている。最後に、第四のレベルのノードは、ノード３５５及び３６０を含んでおり、その両者は第三のレベルのノード、すなわちノード３４０にダイレクトに接続されている。
【００２８】
このように、スパニングツリーは、システム内の関与するソケットの番号を識別する。システムにおける（ルートソケットを除く）それぞれのソケットは、アップリンクとして識別される１つのリンクを有する。ＩＬＰにより生成されたブロードキャストメッセージは、そのアップリンクからＲＬＰにより受信される。さらに、リーフ（たとえば、図３の第四のレベルのノード）であるノードを除く全てのソケットは、ダウンリンクとして識別されるリンクを有している。それぞれのソケットは、それらのダウンリンクにブロードキャストされたメッセージを伝播する。所定の実施の形態では、ルックアップテーブル、又は図３に示されるグラフィック表現に対応する他のデータ構造が、ＩＬＰによる使用のためにプロセッサソケット２１０と関連付けされるメモリに記憶される。
【００２９】
このように、スパニングツリーの構築の終りで、スパニングツリーは、ノード数及び該ノードのレベルに関する情報を含んでいる。スパニングツリーの列挙の結果、固有の識別子がそれぞれのノードに割り当てられ、所与のノード以下のノードのカウントが決定され記憶される。このように、図３に示されるように、それぞれのノードのノード識別子（図２にも示される）に加えて、更なるスパニングツリーの固有の識別子が存在する（たとえば、ノードＩＤ  １はスパニングツリー識別子１を有しており、ノードＩＤ  ５はスパニングツリー識別子２を有している）。
【００３０】
ここで図４を参照して、本発明の１実施の形態に係る信頼できるリンクハードウェアのブロック図が示されている。かかる信頼できるリンクハードウェアは、信頼できるエージェントの実行の終了前に使用するためにプロセッサソケット内で信頼できるハードウェアリンクを提供するために使用される。かかる信頼できるハードウェアリンクは、動作及びリンクに沿ったメッセージの送信のためにファームウェア又はソフトウェアが必要とされないために信頼される。これは、信頼できるリンクハードウェア４５５ａ及び４５５ｂは、プロセッサソケット（すなわち、ソケット４１０ａ及び４１０ｂ）内に含まれている。２つのかかるソケットが図４に示されているが、ソケット４１０ａ及びそのコンポーネントが本実施の形態で説明される。図４に示されるように、ハードウェアリンク４５５ａは、プロセッサコア４２０ａとリンクコントローラ４５０ａとの間に接続されている。信頼できるハードウェアリンク４５５ａを使用することで、信頼できるリンクメッセージが送出され、ソフトウェア又はファームウェアに依存することなしにコア４２０ａから受信される。
【００３１】
対照的に、通常のシステムのメッセージング及びパケット送信について、リンクベースのメッセージは、コアインタフェース４３０ａ及びプロトコルエンジン４３５ａを通してバス又はリング４２５ａを介して、コア４２０ａに伝わり、又は該コア４２０ａから伝わる。１実施の形態では、プロトコルエンジン４３５ａは、データ及びメッセージをＣＳＩパケットにフォーマットするＣＳＩプロトコルエンジンである。さらに、バス４４０ａは、クロスバー４４５ａを通してプロトコルエンジン４３５ａを接続する。そこから、データ及びメッセージは、他のノード、プロセッサソケットと関連されるメモリ、リンクコントローラ４５０ａ、又は他の所望の位置に送出される。
【００３２】
コアインタフェース４３０ａ、プロトコルエンジン４３５ａ、及びクロスバー４４５ａを含むコンポーネントは信頼されないファームウェアによりセットアップされるため、このパスは、信頼できるエージェントの実行を終了する前に、だましのないアクセスパスを提供しない。したがって、様々な実施の形態では、ハードウェアリンク４５５ａは、コア４２０ａとリンクコントローラ４５０ａとの間にだましのないアクセスパスを提供し、このことは、信頼できるエージェントによるシステムの評価前に使用のために特に適している。たとえば、評価の前に、リンクコントローラ４５０ａ及び４５０ｂのようなリンクコントローラは、コアからの特定の命令を使用してリンクメッセージを生成するために使用される。受信リンクコントローラは、リンクメッセージの内容を取得し、信頼できるハードウェアリンク４５５ａのような信頼できるハードウェアリンクを介してプロセッサコアを直接利用可能にする。所定の実施の形態では、コアにおけるマイクロコードに、信頼できるハードウェアリンク上に新たなリンクメッセージが到達したことが通知されるように、リンクコントローラからプロセッサコアへのイベントメカニズムが行われる。リンク初期化の間、近隣のノードに関する情報は、リンクコントローラにより取得され、プロトコルエンジン及びプロセッサコアの両者が利用可能となる。かかる実施の形態では、かかる情報は、近隣のノードのノードタイプ及びノード識別子を含んでいる。
【００３３】
図４に更に示されるように、プロセッサソケット４１０ａに関して先に説明された対応するコンポーネントがプロセッサソケット４１０ｂに見られる。さらに、２つのプロセッサ間の信頼できるリンクは、リンクコントローラ４５０ａとリンクコントローラ４５０ｂの間に接続されるハードウェアリンク４６０を介して作用される。この信頼できるリンクは、信頼できるエージェントによるシステムの評価前に、プロセッサソケット間でリンクベースのメッセージを送出するために使用される。
【００３４】
ここで図５を参照して、ＩＬＰによりビューされたときの、本発明の１実施の形態に係るセキュアな起動に関するタイミングチャートが示されている。図５に示されるように、セキュアな起動５００は、信頼できるエージェント及びセキュアカーネルをメモリにロードすることで開始する（セグメント５０２）。先に説明されたように、１実施の形態では、信頼されないＯＳは、かかるロード動作を実行する。次いで、ＳＥＮＴＥＲ命令は、所望のＩＬＰを含むプロセッサソケットに送出される（セグメント５０４）。たとえば、かかる命令は、信頼されないＯＳにより発せられる。
【００３５】
ＩＬＰがＳＥＮＴＥＲ命令を受信したとき、ＩＬＰはそのソケット内の他の論理プロセッサ及び他のプロセッサ、より詳細には、それぞれのプロセッサソケットにおいて１つ存在する応答論理プロセッサ（ＲＬＰ）に同じ命令を発する。どの論理プロセッサがＩＬＰ及び／又はＲＬＰであるかに関する判定は、異なる実施の形態において変換し、ソフトウェア又はファームウェアの決定に基づく。たとえば、１実施の形態では、ＩＬＰは、ＯＳにより選択される。さらに、他のプロセッサソケット内のＲＬＰは、所与のソケットにおける全ての論理プロセッサにより選択される。時間５１０で、ＩＬＰは、該ＩＬＰがマスターＩ／Ｏハブにダイレクトに接続されたことを調べる。その後、時間５１５で、ＩＬＰは、ＳＥＮＴＥＲバスメッセージをそのソケット内のＯＬＰにブロードキャストし、それぞれのＯＬＰは、ＳＥＮＴＥＲ命令に応答する（時間５２０）。
【００３６】
この時間で、ＳＥＮＴＥＲローカルイベントが開始される（セグメント５２２）。時間５２５で、それぞれのＯＬＰは、確認応答（ＡＣＫ）を発し、待ち状態に入る。かかる待ち状態は、ＩＬＰにより待ち状態を離れることを後に命令されるまで、ＯＬＰにより維持される。
【００３７】
その後、ＳＥＮＴＥＲグローバル命令フェースに入る（セグメント５２８）。はじめに、ＩＬＰは、システム内のノードからの確認応答（ＡＣＫ）を求めるメッセージを送出する。ＡＣＫがＩＬＰにより受信されたとき、ＩＬＰは、継続命令を送出する（時間５３０）。この時間で、ＩＬＰは、スパニングツリーを構築する。
【００３８】
スパニングツリーの構築が異なる形式をとるが、１実施の形態では、スパニングツリーは、次のより低いレベルへとツリーの下へブロードキャストされるリンクレベルメッセージであるパルスを送出し、ツリーをバックアップする累積された結果を含むリンクレベルメッセージであるリターンパルスを受信することで構築される。かかるやり方では、パルスメッセージを受信するそれぞれのＲＬＰは、該パルスメッセージをそのダウンリンクに送出し、該ダウンリンクからリターンメッセージを受信する。送出されたスパニングツリーのリンクベースメッセージにより、ソケットは、それぞれのソケットにレベルを設定する。次いで、固有の識別子がそれぞれのノードに割り当てられるスパニングツリーの列挙が行われる。したがって、スパニングツリーの終了に応じて、それぞれのソケットには固有な識別子及びレベルが割り当てられ、ＩＬＰに関するその相対的な位置、並びにソケットからの、及びソケットへのアップリンク接続及びダウンリンク接続がさらに示される。
【００３９】
スパニングツリーの評価及び終了に応じて、ＩＬＰは、ＳＥＮＴＥＲ命令を全ての他のプロセッサソケットに送出する（時間５３５）。つぎに、ＩＬＰは、スパニングツリー上のノードから受信された要約的な応答をマージする（時間５４０）。ツリーにわたるアルゴリズムは、ソフトウェアのトポロジー設定がそれぞれのノードにシステムのルーティングプロトコルで使用される固有な識別子を与えたことを調べる。
【００４０】
次いで、ＩＬＰは、該ＩＬＰがマスターＩ／Ｏハブにおける指定されたアドレスで見つける信頼できるエージェントを評価（たとえば、計算及びハッシュ）及び認証（署名を確認）し、信頼できるエージェントのハッシュ値、ベースアドレス及び長さ、並びに他のプロセッサソケットへの署名を調べるために使用される公開鍵のハッシュ値をブロードキャストする（時間５５０）。かかるブロードキャストは、スパニングツリープロトコルを使用して行われる。他のソケットが信頼できるエージェントを評価したとき、他のソケットは応答メッセージを送出し、この応答メッセージは、時間５５５でＩＬＰによりマージされる。各ソケットが肯定の応答を送出する場合、ステップ５６０で、ＩＬＰは、信頼できるエージェントのハッシュをロードして（たとえば、マスターＴＰＭに）記録し、該信頼できるエージェントを起動する。１以上のソケットが肯定応答できない場合、所定の実施の形態では、セキュアな起動が終了する。図５に示される実施の形態では、信頼できるエージェントは、本発明の範囲はそのように限定されないが、（たとえば、ＳＩＮＩＴ−ＡＣ：Ｓｅｃｕｒｅ  ＩＮＩＴｉａｌｉｚａｔｉｏｎ−Ａｕｔｈｅｎｔｉｃａｔｅｄ  Ｃｏｄｅである）セキュアな信頼できるエージェント（ｓｅｃｕｒｅ  ｔｒｕｓｔｅｄ  ａｇｅｎｔ）である。
【００４１】
次いで、信頼できるエージェントが実行されている（セグメント５７２）。１実施の形態では、信頼できるエージェントの実行は、ゆるいロックステップのＳＩＭＤ実行（ｌｏｏｓｅｌｙ  ｌｏｃｋ−ｓｔｅｐ  ＳＩＭＤ  ｅｘｅｃｕｔｉｏｎ）で行われる。すなわち、同じ信頼できるエージェントは、全てのソケットで実行し、コード内の特定のバリアで同期される。たとえば、ＩＬＰは、全てのリンクに関するオプコード及びデータを含むブロードキャストメッセージを発する。それぞれのＲＬＰは、データを取得し、もしあれば、メッセージをそのダウンリンクに送出し、データを処理する。ＲＬＰがツリーのリーフである場合、ＲＬＰは、そのアップリンクに応答メッセージを送出する。ＲＬＰが中間のノードである場合、ＲＬＰは、そのダウンリンクから全ての応答を待ち、オプコードを使用して全ての応答データを要約し、要約された応答をそのアップリンクに送出する。最後に、ＩＬＰは、全ての他のソケットから要約された応答を取得したとき、同様のやり方で次のバリア位置に実行が継続される。
【００４２】
実行の間、信頼できるエージェントは、それぞれのプロセッサソケットにあるローカルコンフィギュレーション及びアドレスデコーダを評価する（時間５７０）。さらに、信頼できるエージェントは、それぞれのプロセッサソケットのノード識別子のそれぞれの固有さを評価する（時間５７５）。たとえば、信頼できるエージェントは、ソースアドレスデコーダに対してＩＬＰに送出させる（時間５８０）。次いで、ＩＬＰは、ソースアドレスデコーダの比較の結果をマージ及び分析する（時間５８５）。次いで、信頼できるエージェントは、セキュアカーネルを評価、ロード、記録及び起動することで終了する（時間５９０）。かかる評価の情報（たとえば、ハッシュ値）は、所定の実施の形態では、マスターＴＰＭに記憶される。１実施の形態では、セキュアカーネルは、本発明の範囲がそのように限定されるものではないが、セキュアな仮想マシンモニタ（ＳＶＭＭ：Ｓｅｃｕｒｅ  Ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ  ｍｏｎｉｔｏｒ）である。
【００４３】
更に図５を参照して、モニタ初期化（セグメント５９２）は、ＩＬＰに全てのソケットにおける全てのプロセッサコアを特別な命令で起動させ、全てのプロセッサにそれらの待ち状態から脱出させる。したがって、セグメント５９６で、全てのモニタが結合され、時間５９８で、全てのプロセッサコアが関与し、セキュアカーネル動作が開始する（セグメント５９９）。
【００４４】
ここで図６を参照して、本発明の１実施の形態に係るセキュアな起動に関するタイミングチャートが示されている。より詳細には、図６は、応答論理プロセッサ（ＲＬＰ）によりビューされたときの、セキュアな起動に関するタイミングチャートを示している。したがって、図６に見られるセキュアな起動６００は、図５のタイミングチャートで行われる動作に密に対応している。はじめに、ＳＥＮＴＥＲであるドアベルのイベントが行われる（セグメント６０４）。かかるイベントの間、ＲＬＰは、ＩＬＰからのＳＥＮＴＥＲのドアベルの命令により割込みされる（時間６０５）。その後、時間６１０で、ＲＬＰは、ＳＥＮＴＥＲダウンリンクメッセージをそのダウンリンクノードに（もしあれば）送出する。時間６１５で、ＲＬＰは、そのソケット内で全てのプロセッサ（すなわち、ＯＬＰ）にＳＥＮＴＥＲメッセージをブロードキャストする。ソケットにおけるそれぞれの他の論理プロセッサは、ＳＥＮＴＥＲサイクルに応答する（時間６２０）。次いで、ＳＥＮＴＥＲローカルイベントが行われ（セグメント６２２）、それぞれのＯＬＰがＩＬＰにＡＣＫを発し、ＯＬＰは待ち状態に入る（時間６２５）。
【００４５】
次いで、セグメント６２８で、ＳＥＮＴＥＲドアベルのグルーバルイベントが行われる。ダウンリンクノードからの全てのＡＣＫがＲＬＰにより受信されたとき、ＲＬＰは、継続メッセージをＩＬＰに送出する（時間６３０）。時間６３５で、ＲＬＰは、かかる継続メッセージをマージする。次いで、時間６４０で、ＲＬＰは、評価情報をＩＬＰから受信する。１実施の形態では、ＩＬＰは、信頼できるエージェントのハッシュ値、ベース、サイズ及び公開鍵のハッシュに関する情報を送出する。さらに、この時間で、ＲＬＰは、この情報をそのダウンリンクのノードに送出する。時間６４５で、ＲＬＰは、受信されたハッシュをその信頼できるエージェントのハッシュと比較する。
【００４６】
時間６５０で、ＲＬＰは、そのダウンストリームノードから評価メッセージを受信し、それらの結果をマージする。また、ＲＬＰは、要約的な応答をそのアップストリームのノードを通してＩＬＰに送出する。次いで、ＩＬＰから受信された情報に基づいて、ＲＬＰは、信頼できるエージェントの署名をロード、認証、チェックし、信頼できるエージェントを起動する（時間６５５）。
【００４７】
全てのプロセッサソケットがこのポイントに到達した場合、信頼できるエージェントは実行する（セグメント６７２）。特に、信頼できるエージェントは、それぞれのローカルコンフィギュレーション及びノードＩＤを評価し（時間６６０）、ソケット内のソースアドレスデコーダをチェック及び評価する（時間６６５及び６７０）。ＲＬＰは、ダウンリンクソケットからのこの評価の結果を受信し、該結果をそのアップリンクのプロセッサすなわちＩＬＰに送出する（時間６７５）。次いで、ＲＬＰソケットは、特別の待ち状態に入る（時間６８０）。
【００４８】
このポイントで、はじめに、ＩＬＰソケット上でセキュアカーネルが起動される（セグメント６９２）。次いで、時間６８５で、ＩＬＰ上のセキュアカーネルは、全てのソケット上の全てのプロセッサコアを特別の起動命令で起動する。この時間で、セキュアカーネルは、システムのプロセッサの一部又は全部でその実行を継続する。たとえば、セキュアンな起動に続いて、仮想マシン環境が創られ、ＳＶＭＭはシステム内の最優先コードとして動作し、仮想マシン内のＯＳ又はアプリケーションにより所定のシステムリソースへのダイレクトアクセスを許可又は否定するために使用される。
【００４９】
かかるやり方で、本発明の実施の形態は、信頼されないソフトウェア及びファームウェアによりコンフィギュレーションされている任意のコンプレックスサーバハードウェアトポロジーで、信頼できるセキュアカーネルを記録及び起動する。次いで、カーネルは、構築、記録及び認証するために信頼できるサーバ実行環境に進む。さらに、所定の実施の形態では、信頼できるエージェントは、サーバトポロジーにおいて全てのプロセッサソケット上でＳＩＭＤスタイルにより実行され、信頼できるバリア／ブロードキャストメカニズムを使用することで、任意のコンプレックスサーバトポロジーのコンフィギュレーションが評価され、ハードウェアから信頼できるエージェントへの推移する信頼により、セキュアな環境が記録及び起動することができる。
【００５０】
本実施の形態はコードで実現され、命令を実行するためにコンピュータシステムをプログラムするために使用される記憶されている命令を有する記憶媒体に記憶されている。記憶媒体は、限定されるものではないが、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、コンパクトディスクリライタブル（ＣＤ−ＲＯＭ）及び光磁気ディスクを含むいずれかのタイプのディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能なプログラマブルリードオンリメモリ（ＥＰＲＯＭ）、フラッシュメモリ及び電気的に消去可能なプログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）のような半導体デバイス、磁気又は光カード、若しくは電子的な命令を記憶するために適したいずれかのタイプのメディアを含んでいる。
【００５１】
本発明が制限された数の実施の形態に関して説明されたが、当業者であれば、これらの実施の形態から様々な変更及び変形を理解されるであろう。添付された特許請求の範囲は、本発明の真の精神及び範囲に包含されるとして全てのかかる変更及び変形をカバーすることが意図される。
【図面の簡単な説明】
【００５２】
【図１Ａ】本発明の１実施の形態に係る方法に関するフローチャートである。
【図１Ｂ】図１Ａのフローチャートに続くフローチャートである。
【図２】本発明の１実施の形態に係るシステムに関するブロック図である。
【図３】本発明の実施の形態に従って構築されるスパニングツリーに関するブロック図である。
【図４】本発明の実施の形態に係る信頼されたハードウェアリンクのブロック図である。
【図５】始動論理プロセッサによるビューとしての、本発明の１実施の形態に係るセキュア起動に関するタイミングチャートである。
【図６】応答論理プロセッサによるビューとしての、本発明の１実施の形態に係るセキュア起動に関するタイミングチャートである。
【符号の説明】
【００５３】
２００：システム
２１０，２２０，２３０，２４０，２５０，
２６０，２７０，２８０：プロセッサソケット
２１２ａ〜２１２ｄ：プロセッシングコア
２１５：バス又はリング
２１６：ロジック機能
２１８：メモリ
２９０：マスターＩ／Ｏハブ
２９２：マスターＴＰＭ
２９５：第二のＩ／Ｏハブ
【図１Ａ】
0004065444.tif 000002
【図１Ｂ】
0004065444.tif 000003
【図２】
0004065444.tif 000004
【図３】
0004065444.tif 000005
【図４】
0004065444.tif 000006
【図５】
0004065444.tif 000007
【図６】
0004065444.tif 000008