(57)【特許請求の範囲】
【請求項１】
コンピューティングのための装置であって、
プロセッサと、
前記プロセッサに連結された、複数の命令が格納されるメモリと、を備え、前記複数の命令は、プロセッサによって動作させられることにより、前記装置に、
前記装置の第１のセキュアエンクレーブに管理ＶＭ（ＭＶＭ）を提供し、
前記装置のゲスト仮想マシン（ゲストＶＭ）のための仮想マシントラステッドプラットフォームモジュール（ｖＴＰＭ）を提供し、前記ｖＴＰＭは、前記第１のセキュアエンクレーブと異なる前記装置の第２のセキュアエンクレーブに提供され、
前記ｖＴＰＭにおいて、前記ｖＴＰＭのプラットフォーム構成レジスタ（ＰＣＲ）に格納された値を変更するコマンドを受信し、
前記ｖＴＰＭにおいて、前記コマンドが許可されたことを示すモディファイヤを、セキュアチャネルを介して前記ＭＶＭから受信し、
前記モディファイヤを受信した後で、前記ＰＣＲに格納された前記値を変更させる、装置。
【請求項２】
前記モディファイヤは、前記ＰＣＲに関連付けられたＶＭのライフサイクルイベントを代表する、請求項１に記載の装置。
【請求項３】
前記ＰＣＲに格納された前記値を変更する前記コマンドは、前記ＰＣＲに格納された前記値を、前記ＰＣＲに関連付けられたＶＭリソースの整合性測定の値の暗号ハッシュで拡張するコマンドである、請求項１または２に記載の装置。
【請求項４】
前記ＭＶＭは、測定のための仮想マシンの信頼の起点（ｖＲＴＭ）を含む、請求項１から３のいずれか１項に記載の装置。
【請求項５】
前記複数の命令は、前記プロセッサによって動作させられることにより、前記装置に、
測定のための仮想マシンの信頼の起点（ｖＲＴＭ）を前記装置の第３のセキュアエンクレーブに提供し、前記第３のセキュアエンクレーブは、前記第１及び第２のセキュアエンクレーブと異なり、
前記ｖＲＴＭと前記ゲストＶＭのリソースとの間の複数の整合性測定のチェーンを開始させる、請求項１から４のいずれか１項に記載の装置。
【請求項６】
コンピューティングプラットフォーム上で複数の整合性測定のチェーンを開始する方法であって、
前記コンピューティングプラットフォームの第１のセキュアエンクレーブにおける測定のための仮想マシンの信頼の起点（ｖＲＴＭ）を、前記コンピューティングプラットフォームに提供する段階であって、前記コンピューティングプラットフォームは、第２のセキュアエンクレーブの整合性測定を実行する、段階と、
前記第１のセキュアエンクレーブの外部にあるゲスト仮想マシン（ゲストＶＭ）のための仮想マシントラステッドプラットフォームモジュール（ｖＴＰＭ）を、前記コンピューティングプラットフォームに提供する段階と、
前記ｖＲＴＭと前記ゲストＶＭのリソースとの間の複数の整合性測定のチェーンを、前記コンピューティングプラットフォーム上で開始する段階と、
を備える、方法。
【請求項７】
前記第１のセキュアエンクレーブは、前記コンピューティングプラットフォームのメモリ領域を備え、前記メモリ領域は、前記メモリ領域の外部に配置された複数の実行された命令を介してはアクセス不可能である、請求項６に記載の方法。
【請求項８】
前記ｖＲＴＭと前記ゲストＶＭの前記リソースとの間の前記複数の整合性測定のチェーンの整合性測定の値を、前記ｖＴＰＭに格納する段階をさらに備える、請求項６または７に記載の方法。
【請求項９】
前記コンピューティングプラットフォームに、前記第１のセキュアエンクレーブの外部にあるゲストＶＭのためのｖＴＰＭを提供する段階は、前記コンピューティングプラットフォームに、前記コンピューティングプラットフォームの第２のセキュアエンクレーブにおけるゲストＶＭのためのｖＴＰＭを提供する段階を含み、前記第２のセキュアエンクレーブは、前記第１のセキュアエンクレーブと異なる、請求項６から８のいずれか１項に記載の方法。
【請求項１０】
前記ゲストＶＭは、前記第２のセキュアエンクレーブの外部にある、請求項９に記載の方法。
【請求項１１】
前記複数の整合性測定のチェーンは、前記ｖＴＰＭの整合性測定を含む、請求項６から１０のいずれか１項に記載の方法。
【請求項１２】
前記複数の整合性測定のチェーンは、前記ゲストＶＭにサービスを提供するサポートＶＭの整合性測定を含む、請求項６から１１のいずれか１項に記載の方法。
【請求項１３】
前記第１のセキュアエンクレーブの整合性測定を実行することは、前記第１のセキュアエンクレーブの前記整合性測定を実行し、前記第１のセキュアエンクレーブの前記整合性測定の値をハードウェアレジスタに格納する、前記第１のセキュアエンクレーブに関連付けられたマイクロコードを有することを含む、請求項６から１２のいずれか１項に記載の方法。
【請求項１４】
前記ｖＴＰＭは、第１のｖＴＰＭであり、前記ゲストＶＭは、第１のゲストＶＭであり、前記方法は、
第２のゲストＶＭのための第２のｖＴＰＭを、前記コンピューティングプラットフォームに提供する段階と、
前記ｖＲＴＭと前記第２のゲストＶＭのリソースとの間の複数の整合性測定のチェーンを、前記コンピューティングプラットフォーム上で開始する段階と、
をさらに備える、請求項６から１３のいずれか１項に記載の方法。
【請求項１５】
整合性測定の値を受信する方法であって、
第２のコンピューティングプラットフォームのセキュアエンクレーブの整合性測定の値をレポートするコマンドを、第１のコンピューティングプラットフォームによって前記第２のコンピューティングプラットフォームの処理デバイスに送信する段階であって、前記セキュアエンクレーブは、測定のための仮想マシンの信頼の起点（ｖＲＴＭ）と、前記セキュアエンクレーブの外部に配置されるゲスト仮想マシン（ゲストＶＭ）のリソースとの間の複数の整合性測定のチェーンの測定のための信頼の起点として、前記ｖＲＴＭを含む、段階と、
前記セキュアエンクレーブの整合性測定の値を、前記第１のコンピューティングプラットフォームによって、前記第２のコンピューティングプラットフォームから受信する段階と、
を備える、方法。
【請求項１６】
前記第１のコンピューティングプラットフォームによって、前記セキュアエンクレーブの前記整合性測定の値を、予測値と比較する段階をさらに備える、請求項１５に記載の方法。
【請求項１７】
前記比較の結果が、前記セキュアエンクレーブの前記整合性測定の値が前記予測値と一致することを示したことに応答して、前記第１のコンピューティングプラットフォームによって、前記ゲストＶＭの前記リソースと通信を行う段階をさらに備える、請求項１６に記載の方法。
【請求項１８】
前記予測値は、前記ｖＲＴＭを定義する機械可読コードの予測されるセットに基づく、請求項１６または１７に記載の方法。
【請求項１９】
前記セキュアエンクレーブの前記整合性測定の値は、前記第２のコンピューティングプラットフォームに関連付けられた鍵による署名付きである、請求項１５から１８のいずれか１項に記載の方法。
【請求項２０】
コンピューティングプラットフォームの処理デバイスによる実行に応答して、前記コンピューティングプラットフォームに、請求項６から１４のいずれか１項に記載の方法を実行させる、プログラム。
【請求項２１】
コンピューティングプラットフォームの処理デバイスによる実行に応答して、前記コンピューティングプラットフォームに、請求項１５から１９のいずれか１項に記載の方法を実行させる、プログラム。
【請求項２２】
複数の整合性測定のチェーンを開始する装置であって、
コンピューティングプラットフォームの第１のセキュアエンクレーブにおける測定のための仮想マシンの信頼の起点（ｖＲＴＭ）を提供する手段であって、前記コンピューティングプラットフォームは、第２のセキュアエンクレーブの整合性測定を実行する、手段と、
前記第１のセキュアエンクレーブの外部にあるゲスト仮想マシン（ゲストＶＭ）のための仮想マシントラステッドプラットフォームモジュール（ｖＴＰＭ）を提供する手段と、
前記ｖＲＴＭと前記ゲストＶＭのリソースとの間の複数の整合性測定のチェーンを開始する手段と、
を備える、装置。
【請求項２３】
前記ｖＲＴＭと前記ゲストＶＭの前記リソースとの間の前記複数の整合性測定のチェーンの整合性測定の値を、前記ｖＴＰＭに格納する手段をさらに備える、請求項２２に記載の装置。
【請求項２４】
整合性測定の値を受信する装置であって、
第２のコンピューティングプラットフォームの処理デバイスに、前記第２のコンピューティングプラットフォームのセキュアエンクレーブの整合性測定の値をレポートするコマンドを送信する手段であって、前記装置は、第１のコンピューティングプラットフォームであり、前記セキュアエンクレーブは、測定のための仮想マシンの信頼の起点（ｖＲＴＭ）と、前記セキュアエンクレーブの外部に配置されるゲスト仮想マシン（ゲストＶＭ）のリソースとの間の複数の整合性測定のチェーンの測定のための信頼の起点として、前記ｖＲＴＭを含む、手段と、
前記第２のコンピューティングプラットフォームから、前記セキュアエンクレーブの整合性測定の値を受信する手段と、
を備える、装置。
【請求項２５】
前記セキュアエンクレーブの前記整合性測定の値を、予測値と比較する手段をさらに備える、請求項２４に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、コンピューティングシステムの分野に関し、より詳細には、セキュアなコンピューティングプラットフォームに関する。
【背景技術】
【０００２】
いくつかのセキュリティモデルにおいて、１つまたは複数の信頼の起点は、信頼されたコンピューティングプラットフォームをサポートするために用いられる。例えば、トラステッドコンピューティンググループによって提供される複数のセキュリティモデルのいくつかにおいては、３つの信頼の起点、すなわち、ストレージの信頼の起点（ＲＴＳ）、レポートの信頼の起点（ＲＴＲ）及び測定の信頼の起点（ＲＴＭ）が用いられる。コンピューティングプラットフォーム内におけるこれらの信頼の起点の位置は、異なることがある。いくつかのコンピューティングプラットフォームは、例えば、トラステッドプラットフォームモジュール（ＴＰＭ）においてＲＴＲ及びＲＴＳを含み、これらは、ハードウェア及びソフトウェア構成の改ざんを検出するように機能する物理的コンポーネント（典型的にはチップ）である。このようなプラットフォームのＲＴＭは、しかしながら、プラットフォームファームウェアによって提供されることがある。特に、このようなコンピューティングプラットフォームがブートを開始した場合、デバイスのプレＢＩＯＳにおけるＲＯＭのような不変の形で実装されるコアＲＴＭ（ｃＲＴＭ）は、実行されるべき次のコードのセットを測定し、この測定値の暗号化ハッシュを計算し、ハッシュダイジェスト値をＴＰＭに格納する。制御は、次のコードのセットに移され、次に、後続のコードのセットを測定し、測定値のハッシュダイジェスト値をＴＰＭに格納する。この測定のチェーンは、ブートが完了し、ＯＳがロードされるまで続く。複数のブートステージの構成における複数の変更（例えば、マルウェアまたは改ざんによる）は、ＴＰＭに格納された複数のハッシュ値をこれらの複数の前の値と比較することによって検出可能である。ｃＲＴＭは、初期測定コンポーネントとして、実行前に測定されず、設計として正確であると仮定される。
【０００３】
仮想化環境において、ゲスト仮想マシン（ゲストＶＭ）は、ハイパーバイザとも称される仮想マシンマネージャ（ＶＭＭ）によって提供されるソフトウェアベースの環境で動作する。環境は、これらは、ハードウェア用の複数のドライバのような、従来のコンピューティングプラットフォームの多数の物理的コンポーネントが仮想化されたバージョンを提供する複数のＶＭと、ゲストＶＭのメモリを操作可能なＶＭのような、ＶＭのメンテナンスのための複数のサポート機能を提供する複数のＶＭとを含んでもよい。いくつかの以前の研究は、ＴＰＭのコンセプトを仮想化された複数のシステムに適用し、仮想マシンＴＰＭ（ｖＴＰＭ）を開発した。いくつかのこのようなシステムにおいて、各ゲストＶＭは、自己のｖＴＰＭに関連付けられてもよく、これは、関連付けられたゲストＶＭの複数の測定のチェーンに対して、ＲＴＳ及びＲＴＲとして機能する。ＲＴＭは、複数のＶＭ及びｖＴＰＭをサポートする他の複数のソフトウェアコンポーネントを測定してもよく、同じハイパーバイザにおけるＶＭとして実装されてもよい。しかしながら、ＲＴＭは、まさにｖＴＰＭのように改ざんされやすく、ハイパーバイザの信頼性に完全に依存している。この結果、トラステッドコンピューティングベースが過剰に大規模化し、結果として、ハイパーバイザまたは複数の他のコンポーネントにおけるセキュリティ違反への脆弱性をもたらす。
【図面の簡単な説明】
【０００４】
複数の実施形態は、以下の詳細な説明を複数の添付図面と併せて参照することによって、容易に理解される。この説明を容易にするために、同様の参照番号は、同様の構造要素を指定する。複数の実施形態は、添付図面の複数の図において、限定としてではなく、例として示されるものである。
【図１】様々な実施形態に係るセキュアエンクレーブ（ＳＥ）における測定の仮想マシンの信頼の起点（ｖＲＴＭ）を含むコンピューティングプラットフォームのブロック図である。
【図２】様々な実施形態に係るＳＥにおけるｖＲＴＭとゲストＶＭのリソースとの間の複数の整合性測定のチェーンを開始する例示的な処理のフロー図である。
【図３】様々な実施形態に係るｖＲＴＭの整合性測定を格納する例示的な処理のフロー図である。
【図４】様々な実施形態に係るＳＥにおけるｖＲＴＭを有するコンピューティングプラットフォームと通信を行う例示的な処理のフロー図である。
【図５】様々な実施形態に係るプラットフォーム構成レジスタに格納された複数の値を修正する例示的な処理のフロー図である。
【図６】様々な実施形態に係る複数の開示された実施形態を実施するために適切な例示的コンピューティングプラットフォームのブロック図である。
【発明を実施するための形態】
【０００５】
複数の仮想マシン（ＶＭ）の測定のための信頼の起点（ＲＴＭ）に関連付けられた複数の技術及びシステムの複数の実施形態が開示される。いくつかの実施形態において、コンピューティングプラットフォームは、コンピューティングプラットフォームの第１のセキュアエンクレーブ（ＳＥ）において、仮想マシンのＲＴＭ（ｖＲＴＭ）を提供してもよい。コンピューティングプラットフォームは、第１のＳＥの整合性測定を実行するように構成されてもよい。コンピューティングプラットフォームは、仮想マシントラステッドプラットフォームモジュール（ｖＴＰＭ）を、コンピューティングプラットフォームの第１のＳＥの外部にあるゲストＶＭに提供してもよい。コンピューティングプラットフォームは、ｖＲＴＭとゲストＶＭのリソースとの間における複数の整合性測定のチェーンを開始してもよい。
【０００６】
以下の詳細な説明において、本明細書の一部を構成する添付図面を参照し、ここで、同様の番号は全体を通して同様の部分を指定し、実施可能な実施形態が例として示される。複数の他の実施形態が利用可能であり、本開示の範囲を逸脱することなく、構造的または論理的な複数の変更を加えることが可能であることを理解すべきである。従って、以下の詳細な説明は限定的意味に解釈されるべきではなく、複数の実施形態の範囲は、添付の特許請求の範囲及びこれらの均等物によって定義される。
【０００７】
様々な動作は、複数の別個のアクションまたは動作として、その結果として、特許請求の範囲に記載された主題の理解に最も有用な態様で、説明されてもよい。
【０００８】
しかしながら、説明の順序は、これらの動作が必ず順序に依存することを示唆するものとして解釈されてはならない。特に、これらの動作は、記載の順序で実行されなくてもよい。説明される複数の動作は、説明された実施形態と異なる順序で実行されてもよい。様々な追加の動作が、実行されてもよく、及び／または、説明される複数の動作は、追加の複数の実施形態において省略されてもよい。
【０００９】
本開示の目的のために、「Ａ及び／またはＢ」という表現は、（Ａ）、（Ｂ）または（Ａ及びＢ）を意味する。本開示の目的のために、「Ａ、Ｂ及び／またはＣ」という表現は、（Ａ）、（Ｂ）、（Ｃ）、（Ａ及びＢ）、（Ａ及びＣ）、（Ｂ及びＣ）または（Ａ、Ｂ及びＣ）を意味する。
【００１０】
説明は、「実施形態において」または「複数の実施形態において」という表現を用いるが、これらは各々、同じまたは異なる複数の実施形態のうち１つまたは複数を指す。さらに、「備える」、「含む」、「有する」等の用語は、本開示の複数の実施形態に関して用いられるように、類義語である。本明細書で用いられるように、「モジュール」または「ロジック」という用語は、１つまたは複数のソフトウェアまたはファームウェアプログラムを実行する特定用途集積回路（ＡＳＩＣ）、電子回路、プロセッサ（共有、専用またはグループ）及び／またはメモリ（共有、専用またはグループ）、組み合わせロジック回路、及び／または、説明される機能を提供する他の適切な複数のコンポーネントの一部であるか、または、これらを含むことを指す。
【００１１】
ここで図１を参照すると、様々な実施形態に係るＳＥにおけるｖＲＴＭを含むコンピューティングプラットフォームが示される。
【００１２】
コンピューティングプラットフォーム１００は、ハードウェア１０２を含んでもよい。ハードウェア１０２は、例えば、１つまたは複数の処理デバイス及びメモリデバイス（例えば、システムメモリ、キャッシュメモリ、マイクロプロセッサベースのメモリ、プロセッサ内部メモリ、プロセッサ外部メモリ）を含んでもよい。いくつかの実施形態において、コンピューティングプラットフォーム１００は、通信インタフェースを含んでもよく、これを介して、コンピューティングプラットフォーム１００は、複数の他のコンピューティングプラットフォームまたはデバイスと通信を行ってもよい。コンピューティングプラットフォーム１００のハードウェア１０２に含まれ得るハードウェアのさらなる複数の例が、図６を参照して後述される。ハードウェア１０２は、コンピューティングプラットフォーム１００のファームウェア及びマイクロコードをさらに含んでもよい。例えば、マイクロコードは、複数のアセンブリ言語命令の動作を定義してもよく、これにより、コンピューティングプラットフォーム１００のエンドユーザによって修正不可能な態様で、複数のハードウェアコンポーネントの動作に影響することがある。
【００１３】
コンピューティングプラットフォーム１００は、仮想マシン（ＶＭＭ）１０４を含んでもよい。
【００１４】
ＶＭＭ１０４は、複数の仮想動作プラットフォームを提供するようにコンピューティングプラットフォーム１００のハードウェア１０２を仮想化することにより、複数のＶＭ（ｖＲＴＭ１２０、ｖＴＰＭ１０６、ゲストＶＭ１１０等のような）がコンピューティングプラットフォーム１００上で同時に実行、すなわち動作することを可能にしてもよい。ＶＭＭ１０４上で実行する各ＶＭは、その仮想動作プラットフォームを、物理プラットフォームとして認識してもよい。コンピューティングプラットフォーム１００の特定の複数のコンポーネントは、「ゲストＶＭ」として説明されることがあるが、「ゲストＶＭ」という用語は、ＶＭＭ１０４上で実行し、ｖＲＴＭ１２０（例えば、複数のサポートＶＭ１２２を含む）によって測定可能な任意のＶＭを含んでもよい。
【００１５】
コンピューティングプラットフォーム１００は、ｖＴＰＭ１０６を含んでもよい。いくつかの実施形態において、コンピューティングプラットフォーム１００は、ｖＴＰＭ１０６同様の複数のｖＴＰＭを含んでもよく、その各々は、ゲストＶＭ１１０（後述）同様の１つまたは複数のゲストＶＭに関連付けられてもよい。説明の簡略化のために、本開示の多くは、単一のｖＴＰＭを説明するが、本明細書で開示された複数のシステム及び複数の技術の全ては、複数のｖＴＰＭと共に用いるのに適している。ｖＴＰＭ１０６は、ゲストインタフェースモジュール１０８を含んでもよく、これは、ｖＴＰＭ１０６とゲストＶＭ１１０との間の通信を容易にするように構成されてもよい。ｖＴＰＭ１０６は、管理インタフェースモジュール１１６を含んでもよく、これは、ｖＴＰＭ１０６と管理ＶＭ（ＭＶＭ）１１８（後述）との間の通信を容易にするように構成されてもよい。ｖＰＭ１０６は、ＳＥ１３４に配置される。本明細書で用いられるように、ＳＥ（ＳＥ１３４のような）は、複数のメモリ位置のセットを含んでもよく、これらは、モジュール（ＶＭのような）が機械可読コードの複数の命令を実行し、データを格納することができる安全な場所を提供する。ＳＥは、そこで、コンピューティングプラットフォーム１００のハードウェア１０２が特定の複数のメモリ位置（ＳＥ１３４のｖＴＰＭ１０６のような）を保護するためのメカニズムを提供してもよい。特に、ＳＥ１３４は、ｖＴＰＭ１０６の複数の秘密を、コンピューティングプラットフォーム１００のあらゆるファームウェア、ＶＭＭ１０４及び／またはコンピューティングプラットフォーム１００上で実行する他の複数の処理から保護してもよい。複数のＳＥの内容は、当該内容への複数の変更が容易に検出され得るように、さらに測定及び格納されてもよい。複数のＳＥの多数の例示的な実施形態が、ここで説明される。いくつかの実施形態において、ＳＥにおける複数のＶＭは、エンクレーブページキャッシュから動作されてもよく、複数のエンクレーブページは、コンピューティングプラットフォーム１００のオペレーティングシステム（ＯＳ）によって、エンクレーブページキャッシュにロードされてもよい。いくつかの実施形態において、ＳＥはＶＭＭまたはＶＭＭ上で実行するＶＭ（例えば、Ｘｅｎハイパーバイザのドメイン０）によって初期化されてもよい。ＳＥにおけるＶＭのページがエンクレーブページキャッシュから除去された場合は常に、暗号による複数の保護が用いられることにより、ページの機密性を保護し、ページがエンクレーブページキャッシュに再びロードされた場合に、改ざんを検出してもよい。エンクレーブページキャッシュ内部において、エンクレーブデータは、ハードウェア１０２の複数の処理デバイスによって提供される複数のアクセス制御メカニズムを用いて保護されてもよく、ページキャッシュの複数のページは、さらに暗号化されてもよい。
【００１６】
いくつかの実施形態において、ＳＥにおけるＶＭコードは、暗号化された状態で、一時的にエンクレーブページキャッシュに格納されてもよい。ＶＭコードは、エンクレーブページキャッシュからフェッチされ、復号化されて、処理デバイスキャッシュに配置されてもよく、ここから、コードは取得及び実行されてもよく、ここで、エンクレーブデータは、コンピューティングプラットフォーム１００の処理デバイスによってアクセスされる。いくつかの実施形態において、エンクレーブページキャッシュは、コンピューティングプラットフォーム１００の物理アドレス空間内に配置されてもよく、エンクレーブページキャッシュは、ハードウェア１０２の処理デバイスによって実行される複数の命令のサブセットである複数のＳＥ命令を用いることのみによって、アクセスされてもよい。エンクレーブページキャッシュは、多数の異なるＳＥからの複数のページを含んでもよく、複数のアクセス制御メカニズムを提供することにより、複数のページの整合性及び機密性を保護してもよい。エンクレーブページキャッシュは、コヒーレンシプロトコルを維持してもよく、これは、コンピューティングプラットフォームにおけるコヒーレントな複数の物理メモリアクセスを保持するために使用可能なものと同様のものである。
【００１７】
いくつかの実施形態において、エンクレーブページキャッシュは、エンクレーブページマップを用いてもよく、これは、エンクレーブページキャッシュにおける各ページに関連付けられた状態情報を含んでもよい。状態情報は、所与のページが属する特定のエンクレーブ、ロードされたページの状態などのような情報を示してもよい。ページがエンクレーブページキャッシュから除去された場合、整合性測定は、エンクレーブページマップから（複数の暗号化技術を用いて）状態情報をエクスポート及び保護することによって、ＳＥ上で実行されてもよい。同様に、所与のエンクレーブページがエンクレーブページキャッシュにリロードされた場合、状態情報は、検証されてもよい。様々な実施形態において、エンクレーブページキャッシュは、複数の異なるタイプのメモリに、（例えば、特定の処理デバイスの静的ランダムアクセスメモリ（ＳＲＡＭ）に搭載され、及び／または、処理デバイス上に配置されるもしくはこれとは別個の動的ランダムアクセスメモリ（ＤＲＡＭ）の一部として）格納されてもよい。様々な実施形態において、エンクレーブページキャッシュは、コンピューティングプラットフォーム１００の複数の他のコンポーネントがエンクレーブページキャッシュにコヒーレントかつセキュアにアクセスすることを可能としつつ、コンピューティングプラットフォーム１００外部からの承認されていない複数のアクセスから保護されてもよい。
【００１８】
いくつかの実施形態において、エンクレーブページキャッシュは、暗号メモリアパーチャであってもよく、これは、暗号で保護されるＤＲＡＭを用いた揮発性ストレージを形成する相対的にコスト効率の良いメカニズムを提供し得る。暗号メモリアパーチャは、ハードウェア１０２の中央処理装置（ＣＰＵ）の処理コアの外部領域に戦略的に配置された１つまたは複数の暗号ユニットを用いることにより、複数の異なるレベルの保護を提供してもよい。処理コア外部の様々なエージェントは、暗号メモリアパーチャへの複数のメモリアクセスを認識し、これらのアクセスを処理コアに配置された暗号コントローラにルーティングするように修正されてもよい。暗号コントローラは、所望の保護レベルに応じて、プラットフォームＤＲＡＭへの１つまたは複数のメモリアクセスを生成することにより、暗号テキストをフェッチしてもよい。フェッチテキストは、次に、暗号コントローラによって処理されることにより、元の暗号メモリアパーチャ要求を満たすように、プレーンテキストを生成してもよい。
【００１９】
いくつかの実施形態において、エンクレーブページキャッシュは、別個のコンテナとして保持されてもよく、これは、ハードウェア１０２に含まれるマイクロコードによって管理されてもよい。このように、コンテナは、ＳＥ外部で実行される場合には、アクセス可能でなくてもよい。ＳＥ（ＳＥ１３４のような）が入った場合、別個のコンテナに含まれ得るエンクレーブページキャッシュ内部のエンクレーブコードに制御が移されてもよい。ＳＥ内部での実行中に生じたあらゆるページフォルトまたは例外は、マイクロコードによって、コンピューティングプラットフォーム１００のＯＳ及び／またはＶＭＭ１０４に反映されてもよい。コンピューティングプラットフォーム１００があらゆるＳＥの外部で実行している場合、エンクレーブページキャッシュへのアクセス制御は、ハードウェア１０２のＳＥレンジレジスタによって提供されてもよい。コンピューティングプラットフォーム１００は、そこで、マイクロコード内部で実行する場合に、実行中のＳＥに属さない複数の他のＳＥページキャッシュエントリへのアクセスを防止するページテーブルレベルの複数の保護を提供してもよい。いくつかの実施形態において、ＳＥの実装は、複数の命令と、ハードウェア１０２の処理デバイスのマイクロコード能力を用いた複数の保護とを実装することを含んでもよい。
【００２０】
複数のＳＥの様々な実施形態の上述された複数の利点及び複数の特徴に加え、多数の設計における考慮により、コンピューティングプラットフォームにおける複数のＳＥの使用可能な態様を、さらに知ることができる。例えば、第三者のハードウェア及び複数のデバイス（例えば、ネットワークインタフェースカード）は、複数のＶＭまたは複数のＳＥ内部で実行する他の複数のアプリケーションと通信を行うように構成されていないことがあり、そこで、このようなデバイスが、複数のＶＭ及びＳＥ外部で実行する複数のアプリケーションと正確にインタフェースを取る場合であっても、このようなデバイスは、複数のＶＭまたは複数のＳＥ内部で実行する他の複数のアプリケーションと正確にインタフェースを取らないことがある。さらに、複数のＳＥの様々な実施形態における複数のセキュリティ機能は、大きなオーバヘッド（例えば、鍵管理のためのメモリ及びプロセッササイクルに関して）と、そのために、場合によってはこれらの選択とを必要とすることがあり、ＳＥに適切に含まれ得る複数のＶＭまたは他の複数のアプリケーションは、スピード、メモリアクセス及び他の複数の問題を考慮する必要に迫られることがある。
【００２１】
図１をさらに参照すると、いくつかの実施形態において、コンピューティングプラットフォーム１００は、ｖＴＰＭ１０６同様の複数のｖＴＰＭを含んでもよく、これらの各々は、異なるＳＥに配置されてもよい。いくつかの実施形態において、ｖＴＰＭは、ＳＥに配置されなくてもよい。ｖＴＰＭ１０６は、暗号情報を格納するように構成されてもよい。いくつかの実施形態において、ｖＴＰＭ１０６は、秘密及び公開鍵のペア（Ｒｉｖｅｓｔ−Ｓｈａｍｉｒ−Ａｄｅｌｍａｎ（ＲＳＡ）鍵のペア、すなわち秘密及び公開認証鍵のペア）のうち秘密鍵を格納してもよく、これらは、ｖＴＰＭ１０６及び／またはこのような複数の鍵による署名付き証明書を一意に特定し得る。ｖＴＰＭ１０６の複数の鍵は、ＳＥ１３４の複数の境界を残さなくてもよい。ｖＴＰＭ１０６に関連付けられたゲストＶＭ（例えば、ゲストＶＭ１１０）が移行された場合、ｖＴＰＭ１０６は、複数のプラットフォーム間で暗号情報を伝えてもよい。ｖＴＰＭ１０６は、複数のプラットフォーム構成レジスタ（ＰＣＲ）１３６を含んでもよい。いくつかの実施形態において、複数のＰＣＲ１３６は、ｖＲＴＭ１２０（後述）とｖＴＰＭ１０６によってサポートされる複数のゲストＶＭ（例えば、後述のゲストＶＭ１１０）の１つまたは複数のリソースとの間における、複数の整合性測定のチェーンの１つまたは複数の整合性測定の値を格納するように構成されてもよい。特定のゲストＶＭリソースの整合性測定が実行された場合、整合性測定の値は、当該ゲストＶＭリソースに関連付けられた特定のＰＣＲに格納されてもよい。複数の整合性測定のチェーンが再び開始された場合、ｖＴＰＭ１０６は、（例えば、ｖＲＴＭ１２０から）コマンドを受信することにより、特定のＰＣＲに格納された値を変更してもよい。いくつかの実施形態において、このようなコマンドは、特定のＰＣＲに格納された値を、新たな整合性測定の値の暗号ハッシュで拡張するコマンドを含んでもよい。本明細書で用いられるように、既存の値を新たな値で「拡張」することは、既存の値を新たな値と結合し、（例えば、ＳＨＡ−１ハッシュを用いて）その結果のハッシュを求めることを含んでもよい。このように、複数のゲストＶＭリソースに対する整合性測定の値の履歴は、複数のＰＣＲ１３６に維持されてもよい。いくつかの実施形態において、複数のＰＣＲ１３６のうち１つまたは複数に格納された値は、後述されるように、ＭＶＭ１１８によって許可された場合にのみ変更されてもよい。
【００２２】
コンピューティングプラットフォーム１００は、ゲストＶＭ１１０を含んでもよい。いくつかの実施形態において、コンピューティングプラットフォーム１００は、ゲストＶＭ１１０同様の複数のゲストＶＭを含んでもよい。本開示の多くは、説明の簡略化のために、単一のゲストＶＭを説明する。ゲストＶＭ１１０は、ｖＴＰＭドライバ１１４を含んでもよく、これは、ゲストＶＭ１１０とｖＴＰＭ１０６のゲストインタフェースモジュール１０８との間の通信を容易にするように構成されてもよい。いくつかの実施形態において、ｖＴＰＭドライバ１１４とゲストインタフェースモジュール１０８との間の通信は、ＶＭＭ１０４を介して行われてもよい。ｖＴＰＭドライバ１１４は、ゲストＶＭ１１０上で動作可能なオペレーティングシステム（ＯＳ）１１２によって制御されてもよい。ＯＳ１１２は、複数の物理的及び／または仮想デバイス（例えば、物理的及び／または仮想プリンタ、表示デバイスまたは通信デバイス）用の多数の他のドライバを制御してもよい。ＯＳ１１２は、ゲストＶＭ１１０が別個の物理的な機械であるかのようにゲストＶＭ１１０上で動作可能な多数のアプリケーションを、さらにサポートしてもよい。いくつかの実施形態において、１つまたは複数の追加のＶＭが、ゲストＶＭ１１０上で動作してもよい。本明細書で用いられるように、ゲストＶＭの「リソース」は、ドライバ、ＯＳ、アプリケーション及び他の複数のＶＭのような、ゲストＶＭ上で実行する任意のモジュール、またはゲストＶＭによってサポートされる他のデータを含む。
【００２３】
コンピューティングプラットフォーム１００は、ＭＶＭ１１８を含んでもよい。ＭＶＭ１１８は、１つまたは複数のｖＴＰＭ（ｖＴＰＭ１０６のような）に関連付けられてもよく、１つまたは複数のｖＴＰＭのライフサイクルを管理するように構成されてもよい。いくつかの実施形態において、ＭＶＭ１１８は、それが関連付けられる複数のｖＴＰＭ（例えば、ｖＴＰＭ１０６）の秘密鍵を格納してもよく、他のコンピューティングプラットフォームが、例えば、ゲストＶＭ１１０のようなゲストＶＭのリソースのセキュリティの検証を要求した場合に、署名付きの証明書が認証の証拠として利用可能となるように、秘密鍵を用いることにより、関連付けられた複数のｖＴＰＭの証明書を認証するように構成されてもよい。
【００２４】
ＭＶＭ１１８は、ＳＥ１３２に配置されてもよい。ＳＥ１３２は、（ｖＴＰＭ１０６が配置される）ＳＥ１３４と異なるＳＥであってもよい。ＭＶＭ１１８は、ｖＴＰＭ１０６の管理インタフェースモジュール１０８を介してｖＴＰＭ１０６と通信を行ってもよい。いくつかの実施形態において、ＭＶＭ１１８と管理インタフェースモジュール１０８との間の通信は、ＶＭＭ１０４を介して行われてもよい。上述されたように、いくつかの実施形態において、ＭＶＭ１１８は、ｖＴＰＭ１０６の複数のＰＣＲ１３６のどれが（例えば、ｖＲＴＭ１２０によって）変更可能であるかを制御してもよい。特に、ＭＶＭ１１８は、ｖＴＰＭ１０６にモディファイヤを提供してもよく、これは、複数のＰＣＲ１３６の特定の１つが変更可能か否か、及び、結果的に、複数のＰＣＲ１３６の特定の１つまたは複数を変更させるｖＴＰＭ１０６への複数のコマンドが許可されるか否かを示す。いくつかの実施形態において、ｖＴＰＭ１０６は、複数のＰＣＲ１３６の特定の１つの値を変更することを、このような変更が許可されたことを示すモディファイヤをＭＶＭ１１８から受信した後でのみ、可能としてもよい。ＭＶＭ１１８は、複数のＰＣＲ値の複数の変更を許可する複数のモディファイヤを、特定の複数の条件下、例えば、ゲストＶＭに関連付けられたライフサイクルイベントが生じた場合にのみ、提供してもよい。いくつかの実施形態において、ＭＶＭ１１８は、ｖＲＴＭ１２０（後述）と通信を行ってもよい。いくつかの実施形態において、ＭＶＭ１１８及びｖＲＴＭ１２０は、共通のＳＥに含まれてもよく、いくつかのこのような実施形態において、ＭＶＭ１１８は、ｖＲＴＭであってもよく、ｖＲＴＭ１２０の機能を含んでもよい。いくつかの実施形態において、ＭＶＭ１１８のモディファイヤ提供機能は、ｖＲＴＭ１２０に含まれてもよく、ｖＲＴＭ１２０は、複数のモディファイヤを、セキュアチャネルを介して、複数のｖＴＰＭ（ｖＴＰＭ１０６のような）に提供してもよい。前述の複数の実施形態は、複数のＰＣＲ１３６における複数の値の修正を、ＳＥ１３２のＭＶＭ１１８（またはＳＥ１３０のｖＲＴＭ１２０）から許可された場合にのみ可能とすることによって、例えば、ＶＭＭ１０４における悪意のある複数の処理による修正から、複数のＰＣＲ１３６を保護してもよい。いくつかの実施形態において、ＭＶＭ１１８は、多数のサポートＶＭ１２２（後述）のいずれかと通信を行ってもよい。
【００２５】
コンピューティングプラットフォーム１００は、ｖＲＴＭ１２０を含んでもよい。ｖＲＴＭ１２０は、ゲストＶＭ１１０のようなＶＭＭ１０４上で実行する複数のＶＭの複数のリソースの整合性測定のＲＴＭとして機能するように構成されてもよい。いくつかの実施形態において、ｖＲＴＭ１２０は、ＶＭのリソースの複数の整合性測定のチェーンを開始するように構成されてもよい。整合性測定の値は、例えば、ＶＭのリソースを定義する機械可読コードのハッシュを含んでもよい。いくつかの実施形態において、ｖＲＴＭ１２０は、ハッシュ値を複数のＰＣＲ１３６の１つ（例えば、その機械可読コードのハッシュが計算されたゲストＶＭリソースに関連付けられた複数のＰＣＲ１３６の１つ）に格納するコマンドをｖＴＰＭ１０６に発行してもよい。いくつかの実施形態において、ハッシュ値を格納するコマンドは、複数のＰＣＲ１３６の適切な１つを、（例えば、ｖＴＰＭ１２０が、以前に、前のチェーンの複数の整合性測定の値の格納を開始及び命令した後で、複数の測定の他のチェーンを開始した場合に）ハッシュ値で拡張するコマンドであってもよい。ｖＲＴＭ１２０は、ＳＥ１３０に配置されてもよい。ＳＥ１３０は、ＳＥ１３２（ＭＶＭ１１８が配置される）及びＳＥ１３４（ｖＴＰＭ１０６が配置される）と異なるＳＥであってもよい。上述されたように、コンピューティングデバイス１００は、ＳＥ１３０を含む１つまたは複数のＳＥの複数の整合性測定を実行するように構成されてもよい。いくつかの実施形態において、複数のＳＥ１３０（そこで、及びｖＲＴＭ１２０）の複数の測定は、ＳＥ１３０に関連付けられた測定レジスタにおけるこれらの初期の格納からレポートされてもよく、各ｖＴＰＭの複数のＰＣＲ（ｖＴＰＭ１０６のＰＣＲ１３６のような）に拡張されてもよい。いくつかの実施形態において、ｖＲＴＭ１２０は、ゲストインタフェースモジュール１０８を介してｖＴＰＭ１０６と通信を行ってもよい。いくつかの実施形態において、ｖＲＴＭ１２０とｖＴＰＭ１０６との間の通信は、ＶＭＭ１０４を介して行われてもよい。上述されたように、いくつかの実施形態において、ｖＴＰＭ１０６は、ＳＥに配置されなくてもよく、特に、ｖＲＴＭ１２０が配置されるＳＥ１３０の外部に配置されてもよい。
【００２６】
コンピューティングプラットフォームは、１つまたは複数のサポートＶＭ１２２を含んでもよい。いくつかの実施形態において、複数のサポートＶＭ１２２は、複数のサービスを複数のｖＴＰＭ（ｖＴＰＭ１０６のような）及び複数のゲストＶＭ（ゲストＶＭ１１０のような）に提供してもよい。図１に示される複数のサポートＶＭの複数の例は、移行エージェントＶＭ１２４、ドメインビルダＶＭ１２６及びヘルパーＶＭ１２８を含む。いくつかの実施形態において、移行エージェントＶＭ１２４は、例えば、コンピューティングプラットフォーム１００からゲストＶＭが移行されている他のコンピューティングプラットフォームへのゲストＶＭのコピーを管理し、ゲストＶＭが移行された後、ゲストＶＭのコピーを削除することによって、複数のゲストＶＭ（例えば、ゲストＶＭ１１０）の移行を管理するように構成されてもよい。いくつかの実施形態において、ドメインビルダＶＭ１２６は、複数のゲストＶＭの複数のＯＳを初期化し、複数のゲストＶＭにメモリを割り当て、及び／または他の複数の初期化タスクを行うことによって、複数のゲストＶＭ（ゲストＶＭ１１０のような）のための複数の環境を初期化するように構成されてもよい。ヘルパーＶＭ１２８は、複数のゲストＶＭ（ゲストＶＭ１１０のような）に、複数の仮想化されたドライバサービスのような複数のサービスを提供し得る１つまたは複数のサポートＶＭを表してもよい。いくつかの実施形態において、複数のサポートＶＭ１２２のうち１つまたは複数は、ｖＲＴＭ１２０とゲストＶＭ１１０との間の複数の整合性測定のチェーン（及び結果的に、複数のｖＲＴＭ１２０と、ゲストＶＭ１１０の複数のリソースのような、ｖＴＰＭ１０６に関連付けられたゲストＶＭの複数のリソースとの間の複数の整合性測定のチェーン）の一部として測定されてもよい。いくつかの実施形態において、ｖＴＰＭ１０６がＳＥに配置されない場合、ｖＲＴＭ１２０によって開始される複数の整合性測定のチェーンは、ｖＴＰＭ１０６の測定自体を含んでもよく、ｖＰＭ１０６がＳＥに配置された場合、ｖＴＰＭ１０６が配置されるＳＥ（例えば、ＳＥ１３４）の測定は、ｖＴＰＭ１０６を有効化するサービスを提供してもよい。
【００２７】
ここで図２を参照すると、様々な実施形態に係るＳＥにおけるｖＲＴＭとゲストＶＭのリソースとの間の複数の整合性測定のチェーンを開始する処理２００のフロー図が提供される。処理２００（及び本明細書で説明される他の複数の処理）の複数の動作は、特定の順序で構成され、各々が一度示され、様々な実施形態において、複数の動作のうち１つまたは複数は、反復されてもよく、省略されてもよく、またはアウトオブオーダで実行されてもよいことが認識されよう。例示目的のために、処理２００の複数の動作は、コンピューティングプラットフォーム１００によって実行されるものとして説明されてもよいが、処理２００の複数の動作は、処理２００の個別の動作も含めて、コンピューティングプラットフォーム１００の任意の適宜構成されたコンポーネントまたは複数のコンポーネントの組み合わせによって実行されてもよい。
【００２８】
処理２００は、動作２０２において開始してもよく、ここで、コンピューティングプラットフォーム１００は、ＳＥ（ＳＥ１３０のような）においてｖＲＴＭ（ｖＲＴＭ１２０のような）を提供してもよい。上述されたように、ＳＥは、コンピューティングプラットフォーム１００のメモリ領域を含んでもよく、これは、メモリ領域の外部に配置された複数の実行された命令を介してはアクセス不可能である。いくつかの実施形態において、コンピューティングプラットフォーム１００は、ｖＲＴＭが配置される第１のＳＥの整合性測定を実行するように構成されてもよい。
【００２９】
動作２０４において、コンピューティングプラットフォーム１００は、ｖＴＰＭ（ｖＴＰＭ１０６のような）を、ｖＲＴＭが配置されるＳＥの外部にあるゲストＶＭ（ゲストＶＭ１１０のような）に提供してもよい。いくつかの実施形態において、コンピューティングプラットフォーム１００は、動作２０４において、ＳＥ（ＳＥ１３４のような）にｖＴＰＭを提供してもよい。動作２０４においてｖＴＰＭが提供され得るＳＥは、動作２０２においてｖＲＴＭが提供されるＳＥと異なってもよい。
【００３０】
動作２０６において、コンピューティングプラットフォーム１００は、（動作２０２の）ｖＲＴＭとゲストＶＭのリソース（例えば、ゲストＶＭ上で実行するアプリケーション）との間の複数の整合性測定のチェーンを開始してもよい。いくつかの実施形態において、ゲストＶＭは、ｖＴＰＭが配置されるＳＥの外部に配置されてもよい。複数の整合性測定のチェーンは、ｖＴＰＭの測定を含んでもよく、ブートまたは他の初期化シーケンスにあるｖＴＰＭの前に生じる１つまたは複数のサポートＶＭの整合性測定を含んでもよい。例えば、いくつかの実施形態において、１つまたは複数のサポートＶＭは、１回目にインスタンス化されてもよく、複数のサポートＶＭによって提供される複数のサービスを用いるゲストＶＭは、数週間または数か月後、２回目にインスタンス化されてもよい。このような実施形態において、複数の整合性測定のチェーンは、１回目またはその頃に実行された複数のサポートＶＭの複数の整合性測定と、２回目またはその頃に実行されたゲストＶＭの複数の整合性測定とを含んでもよい。
【００３１】
動作２０８において、コンピューティングプラットフォーム１００は、複数の整合性測定が実行されるべき追加のゲストＶＭの有無を判断してもよい。これがある場合、コンピューティングプラットフォーム１００は、動作２０４に進み、ｖＴＰＭに追加のゲストＶＭを提供し、上述されたように続けてもよい。コンピューティングプラットフォーム１００が、動作２０８において、整合性測定が実行されるべき追加のゲストＶＭがないと判断した場合、次に処理４００は終了してもよい。上述されたように、処理４００の複数の動作の順序は、純粋に例示的なものであり、例えば、いくつかの実施形態において、全てのゲストＶＭの複数のｖＴＰＭは、並列または続いて確立されてもよく、その後、複数のゲストＶＭリソースの複数の整合性測定が、（再び、並列にまたは続いて）なされてもよい。
【００３２】
ここで図３を参照すると、様々な実施形態に係るｖＲＴＭの整合性測定の値を格納する処理３００のフロー図が提供される。ｖＲＴＭ１２０及びＳＥ１３０を参照して上述されたように、いくつかの実施形態において、コンピューティングプラットフォーム１００は、ｖＲＴＭが配置されるＳＥのようなＳＥの整合性測定を実行するように構成されてもよい。ｖＲＴＭを含むＳＥの整合性測定を実行し、この整合性測定の値をコンピューティングプラットフォーム１００（例えば、ハードウェア１０２、ファームウェアまたはコンピューティングプラットフォーム１００及び／またはＶＭＭ１０４のＯＳによってはアクセス不可能な他の位置）に格納することによって、ｖＲＴＭとゲストＶＭのリソースとの間の複数の整合性測定のチェーンは、（例えば、図２の動作２０６で開始されたように）コンピューティングプラットフォーム１００においてＶＭＭ１０４下で起点とされてもよい。このより深い起点は、複数の整合性測定の信頼性を向上させることができる。さらに、ｖＲＴＭ自体の整合性が測定されてもよいため、ｖＲＴＭによる改ざん検出が可能となり、そこで、コンピューティングプラットフォーム１００のセキュリティをさらに向上させ得る。例示目的のために、処理３００の複数の動作は、コンピューティングプラットフォーム１００によって実行されるものとして説明されてもよいが、処理３００の複数の動作は、処理３００の個別の動作も含め、コンピューティングプラットフォーム１００の任意の適宜構成されたコンポーネントまたは複数のコンポーネントの組み合わせによって実行されてもよい。
【００３３】
処理３００は、動作３０２において開始してもよく、ここで、コンピューティングプラットフォーム１００は、ｖＲＴＭ（例えば、ｖＲＴＭ１２０）の整合性測定の値を格納してもよい。いくつかの実施形態において、ｖＲＴＭの整合性測定は、マイクロコードによって実行されてもよく、コンピューティングプラットフォーム１００は、ｖＲＴＭの整合性測定の値を、ｖＲＴＭが配置されるＳＥのマイクロコード（例えば、ＳＥ１３０に関連付けられたマイクロコード）に関連付けられたハードウェアレジスタに格納してもよい。いくつかの実施形態において、コンピューティングプラットフォーム１００は、整合性測定の値をｖＴＰＭ１０６の複数のＰＣＲ１３６の１つにさらに格納してもよい。
【００３４】
動作３０４において、コンピューティングプラットフォーム１００は、動作３０２において格納されたｖＲＴＭの整合性測定の値にデータのセットをシールしてもよい。ここで用いられるように、整合性測定の値「にデータのセットをシールする」とは、基本的な測定されたコンポーネント（ｖＲＴＭのような）が、元々ＳＥに固定されていたため変更していないことを、整合性測定の値が示す場合にのみ、データのセットが復号化され得るように、データのセットを暗号化することを指してもよい。いくつかの実施形態において、データのセット（鍵のような）は、ｖＲＴＭの整合性測定の値にシールされることにより、ｖＲＴＭの整合性が最初に検証されない限り、当該データが復号化されることを防止してもよい。例えば、銀行口座のパスワードを表すデータのセットは、ｖＲＴＭの整合性測定の値が予測または初期値と同じ場合にのみ、パスワードが復号化され得るように、ｖＲＴＭの整合性測定の値にシールされてもよい。さもなければ、ｖＲＴＭは、改ざんされた可能性があり、パスワードは、暗号化されたままであってもよい。処理３００は、次に終了してもよい。
【００３５】
ここで図４を参照すると、様々な実施形態に係るＳＥにおいてｖＲＴＭを有するコンピューティングプラットフォーム（例えば、ＳＥ１３０においてｖＲＴＭ１２０を有するコンピューティングプラットフォーム１００）と通信を行う処理４００のフロー図が提供され、いくつかの実施形態において、処理４００は、例えば、整合性測定のチェーンがｖＲＴＭによってなされ、ｖＴＰＭに格納されたことの確認を望む第１のコンピューティングプラットフォームによって実行されてもよく、第２のコンピューティングプラットフォームのゲストＶＭのリソースは、第２のコンピューティングプラットフォームのゲストＶＭのリソースが改ざんされていないことを示す。
【００３６】
例えば、いくつかの実施形態において、第１のコンピューティングプラットフォームは、銀行または病院のサーバであってもよく、第２のコンピューティングプラットフォームは、複数の財務または医療記録を含み、第１のコンピューティングプラットフォームが慎重に扱うべき情報を第２のコンピューティングプラットフォームと交換する前に、第１のコンピューティングプラットフォームは、第２のコンピューティングプラットフォームの特定の複数のリソースが損なわれていないことを検証することを望んでもよい。いくつかの実施形態において、第１のコンピューティングプラットフォームは、第２のコンピューティングプラットフォームのｖＲＴＭ自体が損なわれていないことの検証を望んでもよい。第１のコンピューティングプラットフォームは、第２のコンピューティングプラットフォームの外部にあるエンティティ（例として、アプリケーションまたはインターネットサーバ）であってもよく、またはこれを含んでもよく、第２のコンピューティングプラットフォームによって信頼されていなくてもよい。
【００３７】
以下の処理４００の説明において、第２のコンピューティングプラットフォームは、コンピューティングプラットフォーム１００について本明細書で説明された複数の実施形態のいずれかに従って、セキュアエンクレーブにｖＲＴＭを有するように構成されてもよい。いくつかの実施形態において、第１のコンピューティングプラットフォームは、コンピューティングプラットフォーム１００について本明細書で説明されるように構成されてもよく、または、コンピューティングプラットフォーム１００同様の複数のコンピューティングプラットフォームと通信を行うように構成される汎用目的のコンピューティングプラットフォームであってもよい。
【００３８】
処理４００は、動作４０２において開始してもよく、ここで、第１のコンピューティングプラットフォームは、第２のコンピューティングプラットフォームの処理デバイスにコマンドを送信することにより、ｖＲＴＭを含む第２のコンピューティングプラットフォームのＳＥ（例えば、コンピューティングプラットフォーム１００のｖＲＴＭ１２０を含むＳＥ１３０）の整合性測定をレポートする。上述されたように、ＳＥにおけるｖＲＴＭは、ｖＲＴＭと第２のコンピューティングプラットフォームのゲストＶＭ（例えば、コンピューティングプラットフォーム１００のゲストＶＭ１１０）のリソースとの間の複数の整合性測定のチェーンのためのＲＴＭとして構成されてもよい。いくつかの実施形態において、ゲストＶＭは、ｖＲＴＭを含むＳＥの外部に配置されてもよい。
【００３９】
動作４０４において、第１のコンピューティングプラットフォームは、第２のコンピューティングプラットフォームから、ｖＲＴＭを含むＳＥの整合性測定の値を受信してもよい。いくつかの実施形態において、（例えば、ｖＴＰＭ１０６の複数のＰＣＲ１３６のうち１つまたは複数から取得された）整合性測定の値は、第２のコンピューティングプラットフォームのｖＴＰＭから送信されてもよい。いくつかの実施形態において、動作４０４において受信されたＳＥの整合性測定の値は、第２のコンピューティングプラットフォームに関連付けられた鍵を有する暗号署名付きであってもよい。例えば、鍵は、ハードウェアプラットフォーム鍵であってもよく、これは、信頼される機関（例えば、ハードウェアの１つまたは複数のコンポーネントの製造者）によって検証可能であってもよい。暗号署名を用いて、第１のコンピューティングプラットフォームは、整合性測定の値が正しいコンピューティングプラットフォームからレポートされ、途中で改ざんされていないことを確認してもよい。
【００４０】
動作４０６において、第１のコンピューティングプラットフォームは、ＳＥの整合性測定の値（動作４０４において受信された）を予測値と比較してもよい。いくつかの実施形態において、予測値は、ｖＲＴＭを定義する機械可読コードの予測されるセットに基づいてもよい。例えば、予測値は、ｖＲＴＭを定義する機械可読コードの予測されるセットのハッシュであってもよい。第１のコンピューティングプラットフォームが、動作４０６において、ＳＥの整合性測定の値が予測値と一致しないと判断した場合、第１のコンピューティングプラットフォームは、動作４１０に進み、第１のコンピューティングプラットフォームの他のコンポーネント（例えば、セキュリティイベントロギングソフトウェア）、他のコンピューティングプラットフォーム（例えば、セキュリティイベントロギングサーバ）及び／または第２のコンピューティングプラットフォームに、（例えば、それに、セキュリティ違反の可能性を通知するために）不一致のインジケータを提供してもよい。処理４００は、次に、終了してもよい。
【００４１】
第１のコンピューティングプラットフォームが、動作４０６において、ＳＥの整合性測定の値が予測値に一致すると判断した場合、第１のコンピューティングプラットフォームは、動作４０８に進み、第２のコンピューティングプラットフォームのゲストＶＭのリソースと通信を行ってもよい。いくつかの実施形態において、動作４０８において第２のコンピューティングプラットフォームのゲストＶＭのリソースと通信を行う前に、第１のコンピューティングプラットフォームは、ｖＲＴＭと第２のコンピューティングプラットフォームのゲストＶＭのリソースとの間の複数の整合性測定のチェーンを代表するデータ（例えば、チェーンの複数の整合性測定の値の１つまたは複数のハッシュ値）が、予測値または複数の予測値に一致するか否かを判断してもよく、一致を確認した場合にのみ、第２のコンピューティングプラットフォームのゲストＶＭのリソースとの通信を進めてもよい。処理４００は、次に終了してもよい。
【００４２】
ここで図５を参照すると、様々な実施形態に係るＰＣＲ（ＰＣＲ１３６のような）に格納された複数の値を修正する処理５００のフロー図が提供される。例示目的のために、処理５００の複数の動作は、コンピューティングプラットフォーム１００によって実行されるものとして説明されてもよいが、処理５００の複数の動作は、処理５００の個別の動作も含め、コンピューティングプラットフォーム１００の任意の適宜構成されたコンポーネントまたは複数のコンポーネントの組み合わせによって実行されてもよい。
【００４３】
処理５００は、動作５０２において開始されてもよく、ここで、コンピューティングプラットフォーム１００は、コンピューティングプラットフォーム１００の第１のＳＥ（ＳＥ１３２のような）にＭＶＭ（ＭＶＭ１１８のような）を提供してもよい。動作５０４において、コンピューティングプラットフォーム１００は、ｖＴＰＭ（ｖＴＰＭ１０６のような）を、コンピューティングプラットフォーム１００の第２のＳＥ（ＳＥ１３４のような）におけるゲストＶＭ（ゲストＶＭ１１０のような）に提供してもよい。（動作５０４の）第２のＳＥは、（動作５０２の）第１のＳＥと異なってもよい。動作５０６において、コンピューティングプラットフォーム１００は、ｖＲＴＭ（ｖＲＴＭ１２０のような）を、コンピューティングプラットフォーム１００の第３のＳＥ（ＳＥ１３０のような）に提供してもよく、第３のＳＥは、第１及び第２のＳＥと異なる。いくつかの実施形態において、動作５０２で提供されたＭＶＭは、ｖＲＴＭ（例えば、ｖＲＴＭ１２０の機能）を含んでもよく、そこで、動作５０６は、実行されなくてもよい。
【００４４】
動作５０８において、コンピューティングプラットフォーム１００は、ｖＲＴＭ（例えば、ｖＲＴＭ１２０またはＭＶＭ１１８に含まれるｖＲＴＭ）とゲストＶＭのリソースとの間の複数の整合性測定のチェーンを開始してもよい。動作５１０において、コンピューティングプラットフォーム１００は、（動作５０４で提供される）ｖＴＰＭにおいて、ｖＴＰＭのＰＣＲに格納された値を変更するコマンドを受信してもよく、ＰＣＲは、ゲストＶＭのリソースに関連付けられる。いくつかの実施形態において、ＰＣＲに格納された値を変更するコマンドは、動作５０８において開始された複数の整合性測定のチェーンに応答してなされてもよい。いくつかの実施形態において、ＰＣＲに格納された値を変更するコマンドは、複数の整合性測定の値に起因してもよいが、他のソース（例えば、他の処理）に起因してもよい。いくつかの実施形態において、動作５１０で受信されたコマンドは、ＰＣＲに格納された値を、ＰＣＲに関連付けられたゲストＶＭリソースの整合性測定の値の暗号ハッシュで拡張するコマンドを含んでもよい。動作５１０で受信されたコマンドは、ＰＣＲの構成によって異なってもよく、例えば、いくつかのＰＣＲは、ｖＴＰＭがリセットされた場合にのみ値に初期化されてもよく、または、任意の値に設定されるのではなく、拡張のみされてもよい。
【００４５】
動作５１２において、コンピューティングプラットフォーム１００は、（動作５１０で受信された）変更コマンドが許可されたことを示すＭＶＭからのモディファイヤが、ｖＴＰＭにおいて受信されたか否かを判断してもよく、いくつかの実施形態において、ＭＶＭ及びｖＴＰＭは、動作５１２において、セキュアチャネルを介して通信を行ってもよい。ＭＶＭ及びｖＴＰＭの各々は、セキュアエンクレーブに配置されるため（従って、検証及び信頼できるため）、２つの信頼された点の間にセキュアチャネルを確立するための、当分野で公知の多数の技術はいずれも、ＭＶＭとｖＴＰＭとの間にセキュアチャネルを確立するために用いられてもよい。いくつかの実施形態において、モディファイヤは、ＰＣＲに関連付けられたゲストＶＭのライフサイクルイベントを代表してもよい。適切なモディファイヤが受信されなかった場合、処理５００は、終了してもよく、ＰＣＲへの変更はなされなくてもよい。コンピューティングプラットフォーム１００が、動作５１０において、モディファイヤが受信されたと判断した場合、コンピューティングプラットフォーム１００は、動作５１４に進み、ＰＣＲに格納された値を変更してもよい。処理５００は、次に、終了してもよい。
【００４６】
ここで図６を参照すると、複数の開示された実施形態（例えば、図１のコンピューティングプラットフォーム１００を参照して上述された複数の実施形態、及び図４を参照して上述された第１及び第２のコンピューティングプラットフォーム）の実施に適した例示的なコンピューティングプラットフォーム６００のブロック図が提供される。コンピューティングプラットフォーム６００は、多数のコンピューティングシステム、例えば、デスクトップコンピュータ、ポータブルコンピュータ、タブレットコンピュータ、サーバ、クライアント、シンクライアント、携帯電話またはスマートフォンのいずれかを含んでもよく、またはその一部であってもよい。
【００４７】
図示されるように、コンピューティングデバイス６００は、多数の処理デバイス６０２及びシステムメモリ６０４を含む。複数の処理デバイス６０２は、１つまたは複数の処理コアまたは他の複数の処理デバイスを含んでもよい。さらに、コンピューティングプラットフォーム６００は、複数の大容量ストレージデバイス６０６（ソリッドステートドライブ、ディスケット、ハードドライブ、コンパクトディスクリードオンリメモリ（ＣＤＲＯＭ）など）、複数の入力／出力デバイス６０８（ディスプレイ、キーボード、カーソル制御、カメラ、マイクロフォン、ＧＰＳ受信機、動作検出器など）及び複数の通信インタフェース６１０（ネットワークインタフェースカード、モデム、ＷｉＦｉデバイス、Ｂｌｕｅｔｏｏｔｈ（登録商標）デバイスなど）を含んでもよい。複数の要素は、１つまたは複数のバスを表すシステムバス６１２を介して、互いに連結可能である。複数のバスの場合、これらは、１つまたは複数のバスブリッジ（不図示）によってブリッジされてもよい。本明細書で説明された複数の技術及び複数のシステムは、これらのデバイスまたは経路のうち１つまたは複数によって導入された脆弱性に対して、コンピューティングプラットフォームの複数のリソースをセキュアにするために用いられてもよい。
【００４８】
これらの要素の各々は、当分野で公知のその従来の複数の機能を実行してもよい。特に、システムメモリ６０４及び大容量ストレージ６０６は、本明細書においてロジック６２２として集合的に示された個々の処理デバイス６０２によって実行された場合に、図２−５のいずれかの方法、またはこれらの一部を実装する複数のプログラミング命令のワーキングコピー及び永久コピーを格納するために用いられてもよい。様々なコンポーネントが、複数のアセンブラ命令によって実装されてもよく、これらは、複数の処理デバイス６０２、または、このような複数の命令にコンパイル可能な、例えばＣのような複数の高レベル言語によってサポートされる。
【００４９】
複数のプログラミング命令の永久コピーは、工場の永久ストレージ６０６に、または、当分野では、例えば、コンパクトディスク（ＣＤ）のように機械がアクセス可能な配布媒体（不図示）によって、または（例えば、配布サーバ（不図示）からの）通信インタフェース６１０によって、配置されてもよい。すなわち、エージェントプログラムの実装を有する１つまたは複数の配布媒体は、エージェント及びプログラムを様々なコンピューティングデバイスに配布するために用いられてもよい。要素６０２−６１２の構成は、公知であり、従って、さらなる説明は行わない。
【００５０】
上述された複数の技術を実行するための、機械がアクセス可能な媒体（非一時的機械可読媒体を含む）、複数の方法、複数のシステム及び複数のデバイスは、本明細書で開示された複数の実施形態の複数の例示的な実施例である。さらに、上述された複数のインタラクションにおける他の複数のデバイスは、様々な開示された技術を実行するように構成されてもよい。
【００５１】
［実施例］  例１Ａは、コンピューティングプラットフォーム上で複数の整合性測定のチェーンを開始する方法であり、これは、コンピューティングプラットフォームに、コンピューティングプラットフォームの第１のセキュアエンクレーブにおけるｖＲＴＭを提供する段階であって、コンピューティングプラットフォームは、第２のセキュアエンクレーブの整合性測定を実行するように構成される、段階と、コンピューティングプラットフォームに、第１のセキュアエンクレーブの外部にあるゲストＶＭのためのｖＴＰＭを提供する段階と、コンピューティングプラットフォーム上で、ｖＲＴＭとゲストＶＭのリソースとの間の複数の整合性測定のチェーンを開始する段階とを含む。
【００５２】
例１Ｂは、例１Ａの主題を含んでもよく、第１のセキュアエンクレーブが、コンピューティングプラットフォームのメモリ領域を含み、メモリ領域は、メモリ領域の外部に配置された複数の実行された命令を介してはアクセス不可能であることをさらに規定する。
【００５３】
例１Ｃは、例１Ａ−１Ｂのいずれかに記載の主題を含んでもよく、ｖＲＴＭとゲストＶＭのリソースとの間の複数の整合性測定のチェーンの整合性測定の値を、ｖＴＰＭに格納する段階をさらに含む。
【００５４】
例１Ｄは、例１Ａ−１Ｃの主題を含んでもよく、コンピューティングプラットフォームに、第１のセキュアエンクレーブの外部にあるゲストＶＭのためのｖＴＰＭを提供する段階は、コンピューティングプラットフォームに、コンピューティングプラットフォームの第２のセキュアエンクレーブのゲストＶＭのためのｖＴＰＭを提供する段階を含み、第２のセキュアエンクレーブは、第１のセキュアエンクレーブと異なることをさらに規定する。
【００５５】
例１Ｅは、例１Ｄの主題を含んでもよく、ゲストＶＭは、第２のセキュアエンクレーブの外部にあることをさらに規定する。
【００５６】
例１Ｆは、例１Ａ−１Ｅのいずれかに記載の主題を含んでもよく、複数の整合性測定のチェーンは、ｖＴＰＭの整合性測定を含むことをさらに規定する。
【００５７】
例は、例１Ｆの主題を含んでもよく、複数の整合性測定のチェーンは、ゲストＶＭにサービスを提供するサポートＶＭの整合性測定を含むことをさらに規定する。
【００５８】
例１Ｈは、例１Ａ−１Ｇのいずれかに記載の主題を含んでもよく、第１のセキュアエンクレーブの整合性測定を実行するように構成されることは、第１のセキュアエンクレーブの整合性測定を実行するように構成される第１のセキュアエンクレーブに関連付けられたマイクロコードを有することと、第１のセキュアエンクレーブの整合性測定の値をハードウェアレジスタに格納することとを含むことをさらに規定する。
【００５９】
例１Ｉは、例１Ａ−１Ｈのいずれかに記載の主題を含んでもよく、ｖＴＰＭは、第１のｖＴＰＭであり、ゲストＶＭは、第１のゲストＶＭであることをさらに規定し、方法は、第２のゲストＶＭのための第２のｖＴＰＭをコンピューティングプラットフォームに提供する段階と、ｖＲＴＭと第２のゲストＶＭのリソースとの間の複数の整合性測定のチェーンをコンピューティングプラットフォーム上で開始する段階とをさらに含む。
【００６０】
例１Ｊは、１つまたは複数の機械可読媒体であり、コンピューティングプラットフォームの処理デバイスによって実行されたことに応答して、コンピューティングプラットフォームに、例１Ａ−１Ｉのいずれかに記載の方法を実行させる複数の命令を含む。
【００６１】
例１Ｋは、１つまたは複数の処理デバイスと、複数の命令を含む１つまたは複数の機械可読媒体とを含む装置であり、複数の命令は、１つまたは複数の処理デバイスによって実行されたことに応答して、装置に、例１Ａ−１Ｉのいずれかに記載の方法を実行させる。
【００６２】
例１Ｌは、例１Ａ−１Ｉのいずれかに記載の方法の複数の動作を実行するための、１つまたは複数の手段を含む装置である。
【００６３】
例２Ａは、コンピューティング方法であり、コンピューティングプラットフォームに、コンピューティングプラットフォームの第１のセキュアエンクレーブにおけるＭＶＭを提供する段階と、コンピューティングプラットフォームのゲストＶＭのためのｖＴＰＭをコンピューティングプラットフォームに提供する段階であって、ｖＴＰＭは、第１のセキュアエンクレーブと異なるコンピューティングプラットフォームの第２のセキュアエンクレーブに提供される、段階と、ｖＴＰＭにおいて、ｖＴＰＭのＰＣＲに格納された値を変更するコマンドを受信する段階と、ｖＴＰＭにおいて、コマンドが許可されたことを示すモディファイヤを、セキュアチャネルを介してＭＶＭから受信する段階と、モディファイヤを受信した後で、ＰＣＲに格納された値をコンピューティングプラットフォームによって変更する段階と、を含む。
【００６４】
例２Ｂは、例２Ａの主題を含んでもよく、モディファイヤは、ＰＣＲに関連付けられたＶＭのライフサイクルイベントを代表することをさらに規定する。
【００６５】
例２Ｃは、例２Ａ−２Ｂのいずれかに記載の主題を含んでもよく、ＰＣＲに格納された値を変更するコマンドは、ＰＣＲに関連付けられたＶＭリソースの整合性測定の暗号ハッシュで、ＰＣＲに格納された値を拡張するコマンドであることをさらに規定する。
【００６６】
例２Ｄは、例２Ａ−２Ｃのいずれかに記載の主題を含んでもよく、ＭＶＭは、ｖＲＴＭを含むことをさらに規定する。
【００６７】
例２Ｅは、例２Ａ−２Ｄのいずれかに記載の主題を含んでもよく、コンピューティングプラットフォームの第３のセキュアエンクレーブにおけるｖＲＴＭを、コンピューティングプラットフォームに提供する段階であって、第３のセキュアエンクレーブは、第１及び第２のセキュアエンクレーブ異なる、段階と、ｖＲＴＭとゲストＶＭのリソースとの間の複数の整合性測定のチェーンを、コンピューティングプラットフォーム上で開始する段階と、をさらに含む。
【００６８】
例２Ｆは、１つまたは複数の機械可読媒体であり、コンピューティングプラットフォームの処理デバイスによって実行されたことに応答して、コンピューティングプラットフォームに、例２Ａ−２Ｅのいずれかに記載の方法を実行させる複数の命令を含む。
【００６９】
例２Ｇは、１つまたは複数の処理デバイスと、複数の命令を含む１つまたは複数の機械可読媒体とを含む装置であり、複数の命令は、１つまたは複数の処理デバイスによって実行されたことに応答して、装置に、例２Ａ−２Ｅのいずれかに記載の方法を実行させる。
【００７０】
例２Ｈは、例２Ａ−２Ｅのいずれかに記載の方法の複数の動作を実行するための、１つまたは複数の手段を含む装置である。
【００７１】
例３Ａは、整合性測定の値を受信する方法であり、第２のコンピューティングプラットフォームのセキュアエンクレーブの整合性測定の値をレポートするコマンドを、第１のコンピューティングプラットフォームによって、第２のコンピューティングプラットフォームの処理デバイスに送信する段階であって、セキュアエンクレーブは、ｖＲＴＭと、セキュアエンクレーブの外部に配置されるゲストＶＭのリソースとの間の複数の整合性測定のチェーンの測定の信頼の起点として構成されるｖＲＴＭを含む、段階と、第１のコンピューティングプラットフォームによって、第２のコンピューティングプラットフォームから、セキュアエンクレーブの整合性測定の値を受信する段階と、を含む。
【００７２】
例３Ｂは、例３Ａの主題を含んでもよく、第１のコンピューティングプラットフォームによって、セキュアエンクレーブの整合性測定の値を予測値と比較する段階をさらに含む。
【００７３】
例３Ｃは、例３Ｂの主題を含んでもよく、セキュアエンクレーブの整合性測定の値が予測値と一致することを示す比較の結果に応答して、第１のコンピューティングプラットフォームによって、ゲストＶＭのリソースと通信を行う段階をさらに含む。
【００７４】
例３Ｄは、例３Ｂ−３Ｃのいずれかに記載の主題を含んでもよく、予測値は、ｖＲＴＭを定義する機械可読コードの予測されるセットに基づくことをさらに規定する。
【００７５】
例３Ｅは、例３Ａ−３Ｄのいずれかに記載の主題を含んでもよく、セキュアエンクレーブの整合性測定の値は、コンピューティングプラットフォームに関連付けられた鍵による署名付きであることをさらに規定する。
【００７６】
例３Ｆは、１つまたは複数の機械可読媒体であり、コンピューティングプラットフォームの処理デバイスによって実行されたことに応答して、コンピューティングプラットフォームに、例３Ａ−３Ｅのいずれかに記載の方法を実行させる複数の命令を含む。
【００７７】
例３Ｇは、１つまたは複数の処理デバイスと、複数の命令を含む１つまたは複数の機械可読媒体とを含む装置であり、複数の命令は、１つまたは複数の処理デバイスによって実行されたことに応答して、装置に、例３Ａ−３Ｅのいずれかに記載の方法を実行させる。
【００７８】
例３Ｈは、例３Ａ−３Ｅのいずれかに記載の方法の複数の動作を実行するための、１つまたは複数の手段を含む装置である。
【図１】
0006055561.tif 000002
【図２】
0006055561.tif 000003
【図３】
0006055561.tif 000004
【図４】
0006055561.tif 000005
【図５】
0006055561.tif 000006
【図６】
0006055561.tif 000007