(58)【調査した分野】(Int.Cl.,DB名)
前記PCRに格納された前記値を変更する前記コマンドは、前記PCRに格納された前記値を、前記PCRに関連付けられたVMリソースの整合性測定の値の暗号ハッシュで拡張するコマンドである、請求項1または2に記載の装置。
前記第1のセキュアエンクレーブは、前記コンピューティングプラットフォームのメモリ領域を備え、前記メモリ領域は、前記メモリ領域の外部に配置された複数の実行された命令を介してはアクセス不可能である、請求項6に記載の方法。
前記vRTMと前記ゲストVMの前記リソースとの間の前記複数の整合性測定のチェーンの整合性測定の値を、前記vTPMに格納する段階をさらに備える、請求項6または7に記載の方法。
前記コンピューティングプラットフォームに、前記第1のセキュアエンクレーブの外部にあるゲストVMのためのvTPMを提供する段階は、前記コンピューティングプラットフォームに、前記コンピューティングプラットフォームの第2のセキュアエンクレーブにおけるゲストVMのためのvTPMを提供する段階を含み、前記第2のセキュアエンクレーブは、前記第1のセキュアエンクレーブと異なる、請求項6から8のいずれか1項に記載の方法。
前記第1のセキュアエンクレーブの整合性測定を実行することは、前記第1のセキュアエンクレーブの前記整合性測定を実行し、前記第1のセキュアエンクレーブの前記整合性測定の値をハードウェアレジスタに格納する、前記第1のセキュアエンクレーブに関連付けられたマイクロコードを有することを含む、請求項6から12のいずれか1項に記載の方法。
前記第1のコンピューティングプラットフォームによって、前記セキュアエンクレーブの前記整合性測定の値を、予測値と比較する段階をさらに備える、請求項15に記載の方法。
前記比較の結果が、前記セキュアエンクレーブの前記整合性測定の値が前記予測値と一致することを示したことに応答して、前記第1のコンピューティングプラットフォームによって、前記ゲストVMの前記リソースと通信を行う段階をさらに備える、請求項16に記載の方法。
前記セキュアエンクレーブの前記整合性測定の値は、前記第2のコンピューティングプラットフォームに関連付けられた鍵による署名付きである、請求項15から18のいずれか1項に記載の方法。
コンピューティングプラットフォームの処理デバイスによる実行に応答して、前記コンピューティングプラットフォームに、請求項6から14のいずれか1項に記載の方法を実行させる、プログラム。
コンピューティングプラットフォームの処理デバイスによる実行に応答して、前記コンピューティングプラットフォームに、請求項15から19のいずれか1項に記載の方法を実行させる、プログラム。
前記vRTMと前記ゲストVMの前記リソースとの間の前記複数の整合性測定のチェーンの整合性測定の値を、前記vTPMに格納する手段をさらに備える、請求項22に記載の装置。
【発明を実施するための形態】
【0005】
複数の仮想マシン(VM)の測定のための信頼の起点(RTM)に関連付けられた複数の技術及びシステムの複数の実施形態が開示される。いくつかの実施形態において、コンピューティングプラットフォームは、コンピューティングプラットフォームの第1のセキュアエンクレーブ(SE)において、仮想マシンのRTM(vRTM)を提供してもよい。コンピューティングプラットフォームは、第1のSEの整合性測定を実行するように構成されてもよい。コンピューティングプラットフォームは、仮想マシントラステッドプラットフォームモジュール(vTPM)を、コンピューティングプラットフォームの第1のSEの外部にあるゲストVMに提供してもよい。コンピューティングプラットフォームは、vRTMとゲストVMのリソースとの間における複数の整合性測定のチェーンを開始してもよい。
【0006】
以下の詳細な説明において、本明細書の一部を構成する添付図面を参照し、ここで、同様の番号は全体を通して同様の部分を指定し、実施可能な実施形態が例として示される。複数の他の実施形態が利用可能であり、本開示の範囲を逸脱することなく、構造的または論理的な複数の変更を加えることが可能であることを理解すべきである。従って、以下の詳細な説明は限定的意味に解釈されるべきではなく、複数の実施形態の範囲は、添付の特許請求の範囲及びこれらの均等物によって定義される。
【0007】
様々な動作は、複数の別個のアクションまたは動作として、その結果として、特許請求の範囲に記載された主題の理解に最も有用な態様で、説明されてもよい。
【0008】
しかしながら、説明の順序は、これらの動作が必ず順序に依存することを示唆するものとして解釈されてはならない。特に、これらの動作は、記載の順序で実行されなくてもよい。説明される複数の動作は、説明された実施形態と異なる順序で実行されてもよい。様々な追加の動作が、実行されてもよく、及び/または、説明される複数の動作は、追加の複数の実施形態において省略されてもよい。
【0009】
本開示の目的のために、「A及び/またはB」という表現は、(A)、(B)または(A及びB)を意味する。本開示の目的のために、「A、B及び/またはC」という表現は、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)または(A、B及びC)を意味する。
【0010】
説明は、「実施形態において」または「複数の実施形態において」という表現を用いるが、これらは各々、同じまたは異なる複数の実施形態のうち1つまたは複数を指す。さらに、「備える」、「含む」、「有する」等の用語は、本開示の複数の実施形態に関して用いられるように、類義語である。本明細書で用いられるように、「モジュール」または「ロジック」という用語は、1つまたは複数のソフトウェアまたはファームウェアプログラムを実行する特定用途集積回路(ASIC)、電子回路、プロセッサ(共有、専用またはグループ)及び/またはメモリ(共有、専用またはグループ)、組み合わせロジック回路、及び/または、説明される機能を提供する他の適切な複数のコンポーネントの一部であるか、または、これらを含むことを指す。
【0011】
ここで
図1を参照すると、様々な実施形態に係るSEにおけるvRTMを含むコンピューティングプラットフォームが示される。
【0012】
コンピューティングプラットフォーム100は、ハードウェア102を含んでもよい。ハードウェア102は、例えば、1つまたは複数の処理デバイス及びメモリデバイス(例えば、システムメモリ、キャッシュメモリ、マイクロプロセッサベースのメモリ、プロセッサ内部メモリ、プロセッサ外部メモリ)を含んでもよい。いくつかの実施形態において、コンピューティングプラットフォーム100は、通信インタフェースを含んでもよく、これを介して、コンピューティングプラットフォーム100は、複数の他のコンピューティングプラットフォームまたはデバイスと通信を行ってもよい。コンピューティングプラットフォーム100のハードウェア102に含まれ得るハードウェアのさらなる複数の例が、
図6を参照して後述される。ハードウェア102は、コンピューティングプラットフォーム100のファームウェア及びマイクロコードをさらに含んでもよい。例えば、マイクロコードは、複数のアセンブリ言語命令の動作を定義してもよく、これにより、コンピューティングプラットフォーム100のエンドユーザによって修正不可能な態様で、複数のハードウェアコンポーネントの動作に影響することがある。
【0013】
コンピューティングプラットフォーム100は、仮想マシン(VMM)104を含んでもよい。
【0014】
VMM104は、複数の仮想動作プラットフォームを提供するようにコンピューティングプラットフォーム100のハードウェア102を仮想化することにより、複数のVM(vRTM120、vTPM106、ゲストVM110等のような)がコンピューティングプラットフォーム100上で同時に実行、すなわち動作することを可能にしてもよい。VMM104上で実行する各VMは、その仮想動作プラットフォームを、物理プラットフォームとして認識してもよい。コンピューティングプラットフォーム100の特定の複数のコンポーネントは、「ゲストVM」として説明されることがあるが、「ゲストVM」という用語は、VMM104上で実行し、vRTM120(例えば、複数のサポートVM122を含む)によって測定可能な任意のVMを含んでもよい。
【0015】
コンピューティングプラットフォーム100は、vTPM106を含んでもよい。いくつかの実施形態において、コンピューティングプラットフォーム100は、vTPM106同様の複数のvTPMを含んでもよく、その各々は、ゲストVM110(後述)同様の1つまたは複数のゲストVMに関連付けられてもよい。説明の簡略化のために、本開示の多くは、単一のvTPMを説明するが、本明細書で開示された複数のシステム及び複数の技術の全ては、複数のvTPMと共に用いるのに適している。vTPM106は、ゲストインタフェースモジュール108を含んでもよく、これは、vTPM106とゲストVM110との間の通信を容易にするように構成されてもよい。vTPM106は、管理インタフェースモジュール116を含んでもよく、これは、vTPM106と管理VM(MVM)118(後述)との間の通信を容易にするように構成されてもよい。vPM106は、SE134に配置される。本明細書で用いられるように、SE(SE134のような)は、複数のメモリ位置のセットを含んでもよく、これらは、モジュール(VMのような)が機械可読コードの複数の命令を実行し、データを格納することができる安全な場所を提供する。SEは、そこで、コンピューティングプラットフォーム100のハードウェア102が特定の複数のメモリ位置(SE134のvTPM106のような)を保護するためのメカニズムを提供してもよい。特に、SE134は、vTPM106の複数の秘密を、コンピューティングプラットフォーム100のあらゆるファームウェア、VMM104及び/またはコンピューティングプラットフォーム100上で実行する他の複数の処理から保護してもよい。複数のSEの内容は、当該内容への複数の変更が容易に検出され得るように、さらに測定及び格納されてもよい。複数のSEの多数の例示的な実施形態が、ここで説明される。いくつかの実施形態において、SEにおける複数のVMは、エンクレーブページキャッシュから動作されてもよく、複数のエンクレーブページは、コンピューティングプラットフォーム100のオペレーティングシステム(OS)によって、エンクレーブページキャッシュにロードされてもよい。いくつかの実施形態において、SEはVMMまたはVMM上で実行するVM(例えば、Xenハイパーバイザのドメイン0)によって初期化されてもよい。SEにおけるVMのページがエンクレーブページキャッシュから除去された場合は常に、暗号による複数の保護が用いられることにより、ページの機密性を保護し、ページがエンクレーブページキャッシュに再びロードされた場合に、改ざんを検出してもよい。エンクレーブページキャッシュ内部において、エンクレーブデータは、ハードウェア102の複数の処理デバイスによって提供される複数のアクセス制御メカニズムを用いて保護されてもよく、ページキャッシュの複数のページは、さらに暗号化されてもよい。
【0016】
いくつかの実施形態において、SEにおけるVMコードは、暗号化された状態で、一時的にエンクレーブページキャッシュに格納されてもよい。VMコードは、エンクレーブページキャッシュからフェッチされ、復号化されて、処理デバイスキャッシュに配置されてもよく、ここから、コードは取得及び実行されてもよく、ここで、エンクレーブデータは、コンピューティングプラットフォーム100の処理デバイスによってアクセスされる。いくつかの実施形態において、エンクレーブページキャッシュは、コンピューティングプラットフォーム100の物理アドレス空間内に配置されてもよく、エンクレーブページキャッシュは、ハードウェア102の処理デバイスによって実行される複数の命令のサブセットである複数のSE命令を用いることのみによって、アクセスされてもよい。エンクレーブページキャッシュは、多数の異なるSEからの複数のページを含んでもよく、複数のアクセス制御メカニズムを提供することにより、複数のページの整合性及び機密性を保護してもよい。エンクレーブページキャッシュは、コヒーレンシプロトコルを維持してもよく、これは、コンピューティングプラットフォームにおけるコヒーレントな複数の物理メモリアクセスを保持するために使用可能なものと同様のものである。
【0017】
いくつかの実施形態において、エンクレーブページキャッシュは、エンクレーブページマップを用いてもよく、これは、エンクレーブページキャッシュにおける各ページに関連付けられた状態情報を含んでもよい。状態情報は、所与のページが属する特定のエンクレーブ、ロードされたページの状態などのような情報を示してもよい。ページがエンクレーブページキャッシュから除去された場合、整合性測定は、エンクレーブページマップから(複数の暗号化技術を用いて)状態情報をエクスポート及び保護することによって、SE上で実行されてもよい。同様に、所与のエンクレーブページがエンクレーブページキャッシュにリロードされた場合、状態情報は、検証されてもよい。様々な実施形態において、エンクレーブページキャッシュは、複数の異なるタイプのメモリに、(例えば、特定の処理デバイスの静的ランダムアクセスメモリ(SRAM)に搭載され、及び/または、処理デバイス上に配置されるもしくはこれとは別個の動的ランダムアクセスメモリ(DRAM)の一部として)格納されてもよい。様々な実施形態において、エンクレーブページキャッシュは、コンピューティングプラットフォーム100の複数の他のコンポーネントがエンクレーブページキャッシュにコヒーレントかつセキュアにアクセスすることを可能としつつ、コンピューティングプラットフォーム100外部からの承認されていない複数のアクセスから保護されてもよい。
【0018】
いくつかの実施形態において、エンクレーブページキャッシュは、暗号メモリアパーチャであってもよく、これは、暗号で保護されるDRAMを用いた揮発性ストレージを形成する相対的にコスト効率の良いメカニズムを提供し得る。暗号メモリアパーチャは、ハードウェア102の中央処理装置(CPU)の処理コアの外部領域に戦略的に配置された1つまたは複数の暗号ユニットを用いることにより、複数の異なるレベルの保護を提供してもよい。処理コア外部の様々なエージェントは、暗号メモリアパーチャへの複数のメモリアクセスを認識し、これらのアクセスを処理コアに配置された暗号コントローラにルーティングするように修正されてもよい。暗号コントローラは、所望の保護レベルに応じて、プラットフォームDRAMへの1つまたは複数のメモリアクセスを生成することにより、暗号テキストをフェッチしてもよい。フェッチテキストは、次に、暗号コントローラによって処理されることにより、元の暗号メモリアパーチャ要求を満たすように、プレーンテキストを生成してもよい。
【0019】
いくつかの実施形態において、エンクレーブページキャッシュは、別個のコンテナとして保持されてもよく、これは、ハードウェア102に含まれるマイクロコードによって管理されてもよい。このように、コンテナは、SE外部で実行される場合には、アクセス可能でなくてもよい。SE(SE134のような)が入った場合、別個のコンテナに含まれ得るエンクレーブページキャッシュ内部のエンクレーブコードに制御が移されてもよい。SE内部での実行中に生じたあらゆるページフォルトまたは例外は、マイクロコードによって、コンピューティングプラットフォーム100のOS及び/またはVMM104に反映されてもよい。コンピューティングプラットフォーム100があらゆるSEの外部で実行している場合、エンクレーブページキャッシュへのアクセス制御は、ハードウェア102のSEレンジレジスタによって提供されてもよい。コンピューティングプラットフォーム100は、そこで、マイクロコード内部で実行する場合に、実行中のSEに属さない複数の他のSEページキャッシュエントリへのアクセスを防止するページテーブルレベルの複数の保護を提供してもよい。いくつかの実施形態において、SEの実装は、複数の命令と、ハードウェア102の処理デバイスのマイクロコード能力を用いた複数の保護とを実装することを含んでもよい。
【0020】
複数のSEの様々な実施形態の上述された複数の利点及び複数の特徴に加え、多数の設計における考慮により、コンピューティングプラットフォームにおける複数のSEの使用可能な態様を、さらに知ることができる。例えば、第三者のハードウェア及び複数のデバイス(例えば、ネットワークインタフェースカード)は、複数のVMまたは複数のSE内部で実行する他の複数のアプリケーションと通信を行うように構成されていないことがあり、そこで、このようなデバイスが、複数のVM及びSE外部で実行する複数のアプリケーションと正確にインタフェースを取る場合であっても、このようなデバイスは、複数のVMまたは複数のSE内部で実行する他の複数のアプリケーションと正確にインタフェースを取らないことがある。さらに、複数のSEの様々な実施形態における複数のセキュリティ機能は、大きなオーバヘッド(例えば、鍵管理のためのメモリ及びプロセッササイクルに関して)と、そのために、場合によってはこれらの選択とを必要とすることがあり、SEに適切に含まれ得る複数のVMまたは他の複数のアプリケーションは、スピード、メモリアクセス及び他の複数の問題を考慮する必要に迫られることがある。
【0021】
図1をさらに参照すると、いくつかの実施形態において、コンピューティングプラットフォーム100は、vTPM106同様の複数のvTPMを含んでもよく、これらの各々は、異なるSEに配置されてもよい。いくつかの実施形態において、vTPMは、SEに配置されなくてもよい。vTPM106は、暗号情報を格納するように構成されてもよい。いくつかの実施形態において、vTPM106は、秘密及び公開鍵のペア(Rivest−Shamir−Adelman(RSA)鍵のペア、すなわち秘密及び公開認証鍵のペア)のうち秘密鍵を格納してもよく、これらは、vTPM106及び/またはこのような複数の鍵による署名付き証明書を一意に特定し得る。vTPM106の複数の鍵は、SE134の複数の境界を残さなくてもよい。vTPM106に関連付けられたゲストVM(例えば、ゲストVM110)が移行された場合、vTPM106は、複数のプラットフォーム間で暗号情報を伝えてもよい。vTPM106は、複数のプラットフォーム構成レジスタ(PCR)136を含んでもよい。いくつかの実施形態において、複数のPCR136は、vRTM120(後述)とvTPM106によってサポートされる複数のゲストVM(例えば、後述のゲストVM110)の1つまたは複数のリソースとの間における、複数の整合性測定のチェーンの1つまたは複数の整合性測定の値を格納するように構成されてもよい。特定のゲストVMリソースの整合性測定が実行された場合、整合性測定の値は、当該ゲストVMリソースに関連付けられた特定のPCRに格納されてもよい。複数の整合性測定のチェーンが再び開始された場合、vTPM106は、(例えば、vRTM120から)コマンドを受信することにより、特定のPCRに格納された値を変更してもよい。いくつかの実施形態において、このようなコマンドは、特定のPCRに格納された値を、新たな整合性測定の値の暗号ハッシュで拡張するコマンドを含んでもよい。本明細書で用いられるように、既存の値を新たな値で「拡張」することは、既存の値を新たな値と結合し、(例えば、SHA−1ハッシュを用いて)その結果のハッシュを求めることを含んでもよい。このように、複数のゲストVMリソースに対する整合性測定の値の履歴は、複数のPCR136に維持されてもよい。いくつかの実施形態において、複数のPCR136のうち1つまたは複数に格納された値は、後述されるように、MVM118によって許可された場合にのみ変更されてもよい。
【0022】
コンピューティングプラットフォーム100は、ゲストVM110を含んでもよい。いくつかの実施形態において、コンピューティングプラットフォーム100は、ゲストVM110同様の複数のゲストVMを含んでもよい。本開示の多くは、説明の簡略化のために、単一のゲストVMを説明する。ゲストVM110は、vTPMドライバ114を含んでもよく、これは、ゲストVM110とvTPM106のゲストインタフェースモジュール108との間の通信を容易にするように構成されてもよい。いくつかの実施形態において、vTPMドライバ114とゲストインタフェースモジュール108との間の通信は、VMM104を介して行われてもよい。vTPMドライバ114は、ゲストVM110上で動作可能なオペレーティングシステム(OS)112によって制御されてもよい。OS112は、複数の物理的及び/または仮想デバイス(例えば、物理的及び/または仮想プリンタ、表示デバイスまたは通信デバイス)用の多数の他のドライバを制御してもよい。OS112は、ゲストVM110が別個の物理的な機械であるかのようにゲストVM110上で動作可能な多数のアプリケーションを、さらにサポートしてもよい。いくつかの実施形態において、1つまたは複数の追加のVMが、ゲストVM110上で動作してもよい。本明細書で用いられるように、ゲストVMの「リソース」は、ドライバ、OS、アプリケーション及び他の複数のVMのような、ゲストVM上で実行する任意のモジュール、またはゲストVMによってサポートされる他のデータを含む。
【0023】
コンピューティングプラットフォーム100は、MVM118を含んでもよい。MVM118は、1つまたは複数のvTPM(vTPM106のような)に関連付けられてもよく、1つまたは複数のvTPMのライフサイクルを管理するように構成されてもよい。いくつかの実施形態において、MVM118は、それが関連付けられる複数のvTPM(例えば、vTPM106)の秘密鍵を格納してもよく、他のコンピューティングプラットフォームが、例えば、ゲストVM110のようなゲストVMのリソースのセキュリティの検証を要求した場合に、署名付きの証明書が認証の証拠として利用可能となるように、秘密鍵を用いることにより、関連付けられた複数のvTPMの証明書を認証するように構成されてもよい。
【0024】
MVM118は、SE132に配置されてもよい。SE132は、(vTPM106が配置される)SE134と異なるSEであってもよい。MVM118は、vTPM106の管理インタフェースモジュール108を介してvTPM106と通信を行ってもよい。いくつかの実施形態において、MVM118と管理インタフェースモジュール108との間の通信は、VMM104を介して行われてもよい。上述されたように、いくつかの実施形態において、MVM118は、vTPM106の複数のPCR136のどれが(例えば、vRTM120によって)変更可能であるかを制御してもよい。特に、MVM118は、vTPM106にモディファイヤを提供してもよく、これは、複数のPCR136の特定の1つが変更可能か否か、及び、結果的に、複数のPCR136の特定の1つまたは複数を変更させるvTPM106への複数のコマンドが許可されるか否かを示す。いくつかの実施形態において、vTPM106は、複数のPCR136の特定の1つの値を変更することを、このような変更が許可されたことを示すモディファイヤをMVM118から受信した後でのみ、可能としてもよい。MVM118は、複数のPCR値の複数の変更を許可する複数のモディファイヤを、特定の複数の条件下、例えば、ゲストVMに関連付けられたライフサイクルイベントが生じた場合にのみ、提供してもよい。いくつかの実施形態において、MVM118は、vRTM120(後述)と通信を行ってもよい。いくつかの実施形態において、MVM118及びvRTM120は、共通のSEに含まれてもよく、いくつかのこのような実施形態において、MVM118は、vRTMであってもよく、vRTM120の機能を含んでもよい。いくつかの実施形態において、MVM118のモディファイヤ提供機能は、vRTM120に含まれてもよく、vRTM120は、複数のモディファイヤを、セキュアチャネルを介して、複数のvTPM(vTPM106のような)に提供してもよい。前述の複数の実施形態は、複数のPCR136における複数の値の修正を、SE132のMVM118(またはSE130のvRTM120)から許可された場合にのみ可能とすることによって、例えば、VMM104における悪意のある複数の処理による修正から、複数のPCR136を保護してもよい。いくつかの実施形態において、MVM118は、多数のサポートVM122(後述)のいずれかと通信を行ってもよい。
【0025】
コンピューティングプラットフォーム100は、vRTM120を含んでもよい。vRTM120は、ゲストVM110のようなVMM104上で実行する複数のVMの複数のリソースの整合性測定のRTMとして機能するように構成されてもよい。いくつかの実施形態において、vRTM120は、VMのリソースの複数の整合性測定のチェーンを開始するように構成されてもよい。整合性測定の値は、例えば、VMのリソースを定義する機械可読コードのハッシュを含んでもよい。いくつかの実施形態において、vRTM120は、ハッシュ値を複数のPCR136の1つ(例えば、その機械可読コードのハッシュが計算されたゲストVMリソースに関連付けられた複数のPCR136の1つ)に格納するコマンドをvTPM106に発行してもよい。いくつかの実施形態において、ハッシュ値を格納するコマンドは、複数のPCR136の適切な1つを、(例えば、vTPM120が、以前に、前のチェーンの複数の整合性測定の値の格納を開始及び命令した後で、複数の測定の他のチェーンを開始した場合に)ハッシュ値で拡張するコマンドであってもよい。vRTM120は、SE130に配置されてもよい。SE130は、SE132(MVM118が配置される)及びSE134(vTPM106が配置される)と異なるSEであってもよい。上述されたように、コンピューティングデバイス100は、SE130を含む1つまたは複数のSEの複数の整合性測定を実行するように構成されてもよい。いくつかの実施形態において、複数のSE130(そこで、及びvRTM120)の複数の測定は、SE130に関連付けられた測定レジスタにおけるこれらの初期の格納からレポートされてもよく、各vTPMの複数のPCR(vTPM106のPCR136のような)に拡張されてもよい。いくつかの実施形態において、vRTM120は、ゲストインタフェースモジュール108を介してvTPM106と通信を行ってもよい。いくつかの実施形態において、vRTM120とvTPM106との間の通信は、VMM104を介して行われてもよい。上述されたように、いくつかの実施形態において、vTPM106は、SEに配置されなくてもよく、特に、vRTM120が配置されるSE130の外部に配置されてもよい。
【0026】
コンピューティングプラットフォームは、1つまたは複数のサポートVM122を含んでもよい。いくつかの実施形態において、複数のサポートVM122は、複数のサービスを複数のvTPM(vTPM106のような)及び複数のゲストVM(ゲストVM110のような)に提供してもよい。
図1に示される複数のサポートVMの複数の例は、移行エージェントVM124、ドメインビルダVM126及びヘルパーVM128を含む。いくつかの実施形態において、移行エージェントVM124は、例えば、コンピューティングプラットフォーム100からゲストVMが移行されている他のコンピューティングプラットフォームへのゲストVMのコピーを管理し、ゲストVMが移行された後、ゲストVMのコピーを削除することによって、複数のゲストVM(例えば、ゲストVM110)の移行を管理するように構成されてもよい。いくつかの実施形態において、ドメインビルダVM126は、複数のゲストVMの複数のOSを初期化し、複数のゲストVMにメモリを割り当て、及び/または他の複数の初期化タスクを行うことによって、複数のゲストVM(ゲストVM110のような)のための複数の環境を初期化するように構成されてもよい。ヘルパーVM128は、複数のゲストVM(ゲストVM110のような)に、複数の仮想化されたドライバサービスのような複数のサービスを提供し得る1つまたは複数のサポートVMを表してもよい。いくつかの実施形態において、複数のサポートVM122のうち1つまたは複数は、vRTM120とゲストVM110との間の複数の整合性測定のチェーン(及び結果的に、複数のvRTM120と、ゲストVM110の複数のリソースのような、vTPM106に関連付けられたゲストVMの複数のリソースとの間の複数の整合性測定のチェーン)の一部として測定されてもよい。いくつかの実施形態において、vTPM106がSEに配置されない場合、vRTM120によって開始される複数の整合性測定のチェーンは、vTPM106の測定自体を含んでもよく、vPM106がSEに配置された場合、vTPM106が配置されるSE(例えば、SE134)の測定は、vTPM106を有効化するサービスを提供してもよい。
【0027】
ここで
図2を参照すると、様々な実施形態に係るSEにおけるvRTMとゲストVMのリソースとの間の複数の整合性測定のチェーンを開始する処理200のフロー図が提供される。処理200(及び本明細書で説明される他の複数の処理)の複数の動作は、特定の順序で構成され、各々が一度示され、様々な実施形態において、複数の動作のうち1つまたは複数は、反復されてもよく、省略されてもよく、またはアウトオブオーダで実行されてもよいことが認識されよう。例示目的のために、処理200の複数の動作は、コンピューティングプラットフォーム100によって実行されるものとして説明されてもよいが、処理200の複数の動作は、処理200の個別の動作も含めて、コンピューティングプラットフォーム100の任意の適宜構成されたコンポーネントまたは複数のコンポーネントの組み合わせによって実行されてもよい。
【0028】
処理200は、動作202において開始してもよく、ここで、コンピューティングプラットフォーム100は、SE(SE130のような)においてvRTM(vRTM120のような)を提供してもよい。上述されたように、SEは、コンピューティングプラットフォーム100のメモリ領域を含んでもよく、これは、メモリ領域の外部に配置された複数の実行された命令を介してはアクセス不可能である。いくつかの実施形態において、コンピューティングプラットフォーム100は、vRTMが配置される第1のSEの整合性測定を実行するように構成されてもよい。
【0029】
動作204において、コンピューティングプラットフォーム100は、vTPM(vTPM106のような)を、vRTMが配置されるSEの外部にあるゲストVM(ゲストVM110のような)に提供してもよい。いくつかの実施形態において、コンピューティングプラットフォーム100は、動作204において、SE(SE134のような)にvTPMを提供してもよい。動作204においてvTPMが提供され得るSEは、動作202においてvRTMが提供されるSEと異なってもよい。
【0030】
動作206において、コンピューティングプラットフォーム100は、(動作202の)vRTMとゲストVMのリソース(例えば、ゲストVM上で実行するアプリケーション)との間の複数の整合性測定のチェーンを開始してもよい。いくつかの実施形態において、ゲストVMは、vTPMが配置されるSEの外部に配置されてもよい。複数の整合性測定のチェーンは、vTPMの測定を含んでもよく、ブートまたは他の初期化シーケンスにあるvTPMの前に生じる1つまたは複数のサポートVMの整合性測定を含んでもよい。例えば、いくつかの実施形態において、1つまたは複数のサポートVMは、1回目にインスタンス化されてもよく、複数のサポートVMによって提供される複数のサービスを用いるゲストVMは、数週間または数か月後、2回目にインスタンス化されてもよい。このような実施形態において、複数の整合性測定のチェーンは、1回目またはその頃に実行された複数のサポートVMの複数の整合性測定と、2回目またはその頃に実行されたゲストVMの複数の整合性測定とを含んでもよい。
【0031】
動作208において、コンピューティングプラットフォーム100は、複数の整合性測定が実行されるべき追加のゲストVMの有無を判断してもよい。これがある場合、コンピューティングプラットフォーム100は、動作204に進み、vTPMに追加のゲストVMを提供し、上述されたように続けてもよい。コンピューティングプラットフォーム100が、動作208において、整合性測定が実行されるべき追加のゲストVMがないと判断した場合、次に処理400は終了してもよい。上述されたように、処理400の複数の動作の順序は、純粋に例示的なものであり、例えば、いくつかの実施形態において、全てのゲストVMの複数のvTPMは、並列または続いて確立されてもよく、その後、複数のゲストVMリソースの複数の整合性測定が、(再び、並列にまたは続いて)なされてもよい。
【0032】
ここで
図3を参照すると、様々な実施形態に係るvRTMの整合性測定の値を格納する処理300のフロー図が提供される。vRTM120及びSE130を参照して上述されたように、いくつかの実施形態において、コンピューティングプラットフォーム100は、vRTMが配置されるSEのようなSEの整合性測定を実行するように構成されてもよい。vRTMを含むSEの整合性測定を実行し、この整合性測定の値をコンピューティングプラットフォーム100(例えば、ハードウェア102、ファームウェアまたはコンピューティングプラットフォーム100及び/またはVMM104のOSによってはアクセス不可能な他の位置)に格納することによって、vRTMとゲストVMのリソースとの間の複数の整合性測定のチェーンは、(例えば、
図2の動作206で開始されたように)コンピューティングプラットフォーム100においてVMM104下で起点とされてもよい。このより深い起点は、複数の整合性測定の信頼性を向上させることができる。さらに、vRTM自体の整合性が測定されてもよいため、vRTMによる改ざん検出が可能となり、そこで、コンピューティングプラットフォーム100のセキュリティをさらに向上させ得る。例示目的のために、処理300の複数の動作は、コンピューティングプラットフォーム100によって実行されるものとして説明されてもよいが、処理300の複数の動作は、処理300の個別の動作も含め、コンピューティングプラットフォーム100の任意の適宜構成されたコンポーネントまたは複数のコンポーネントの組み合わせによって実行されてもよい。
【0033】
処理300は、動作302において開始してもよく、ここで、コンピューティングプラットフォーム100は、vRTM(例えば、vRTM120)の整合性測定の値を格納してもよい。いくつかの実施形態において、vRTMの整合性測定は、マイクロコードによって実行されてもよく、コンピューティングプラットフォーム100は、vRTMの整合性測定の値を、vRTMが配置されるSEのマイクロコード(例えば、SE130に関連付けられたマイクロコード)に関連付けられたハードウェアレジスタに格納してもよい。いくつかの実施形態において、コンピューティングプラットフォーム100は、整合性測定の値をvTPM106の複数のPCR136の1つにさらに格納してもよい。
【0034】
動作304において、コンピューティングプラットフォーム100は、動作302において格納されたvRTMの整合性測定の値にデータのセットをシールしてもよい。ここで用いられるように、整合性測定の値「にデータのセットをシールする」とは、基本的な測定されたコンポーネント(vRTMのような)が、元々SEに固定されていたため変更していないことを、整合性測定の値が示す場合にのみ、データのセットが復号化され得るように、データのセットを暗号化することを指してもよい。いくつかの実施形態において、データのセット(鍵のような)は、vRTMの整合性測定の値にシールされることにより、vRTMの整合性が最初に検証されない限り、当該データが復号化されることを防止してもよい。例えば、銀行口座のパスワードを表すデータのセットは、vRTMの整合性測定の値が予測または初期値と同じ場合にのみ、パスワードが復号化され得るように、vRTMの整合性測定の値にシールされてもよい。さもなければ、vRTMは、改ざんされた可能性があり、パスワードは、暗号化されたままであってもよい。処理300は、次に終了してもよい。
【0035】
ここで
図4を参照すると、様々な実施形態に係るSEにおいてvRTMを有するコンピューティングプラットフォーム(例えば、SE130においてvRTM120を有するコンピューティングプラットフォーム100)と通信を行う処理400のフロー図が提供され、いくつかの実施形態において、処理400は、例えば、整合性測定のチェーンがvRTMによってなされ、vTPMに格納されたことの確認を望む第1のコンピューティングプラットフォームによって実行されてもよく、第2のコンピューティングプラットフォームのゲストVMのリソースは、第2のコンピューティングプラットフォームのゲストVMのリソースが改ざんされていないことを示す。
【0036】
例えば、いくつかの実施形態において、第1のコンピューティングプラットフォームは、銀行または病院のサーバであってもよく、第2のコンピューティングプラットフォームは、複数の財務または医療記録を含み、第1のコンピューティングプラットフォームが慎重に扱うべき情報を第2のコンピューティングプラットフォームと交換する前に、第1のコンピューティングプラットフォームは、第2のコンピューティングプラットフォームの特定の複数のリソースが損なわれていないことを検証することを望んでもよい。いくつかの実施形態において、第1のコンピューティングプラットフォームは、第2のコンピューティングプラットフォームのvRTM自体が損なわれていないことの検証を望んでもよい。第1のコンピューティングプラットフォームは、第2のコンピューティングプラットフォームの外部にあるエンティティ(例として、アプリケーションまたはインターネットサーバ)であってもよく、またはこれを含んでもよく、第2のコンピューティングプラットフォームによって信頼されていなくてもよい。
【0037】
以下の処理400の説明において、第2のコンピューティングプラットフォームは、コンピューティングプラットフォーム100について本明細書で説明された複数の実施形態のいずれかに従って、セキュアエンクレーブにvRTMを有するように構成されてもよい。いくつかの実施形態において、第1のコンピューティングプラットフォームは、コンピューティングプラットフォーム100について本明細書で説明されるように構成されてもよく、または、コンピューティングプラットフォーム100同様の複数のコンピューティングプラットフォームと通信を行うように構成される汎用目的のコンピューティングプラットフォームであってもよい。
【0038】
処理400は、動作402において開始してもよく、ここで、第1のコンピューティングプラットフォームは、第2のコンピューティングプラットフォームの処理デバイスにコマンドを送信することにより、vRTMを含む第2のコンピューティングプラットフォームのSE(例えば、コンピューティングプラットフォーム100のvRTM120を含むSE130)の整合性測定をレポートする。上述されたように、SEにおけるvRTMは、vRTMと第2のコンピューティングプラットフォームのゲストVM(例えば、コンピューティングプラットフォーム100のゲストVM110)のリソースとの間の複数の整合性測定のチェーンのためのRTMとして構成されてもよい。いくつかの実施形態において、ゲストVMは、vRTMを含むSEの外部に配置されてもよい。
【0039】
動作404において、第1のコンピューティングプラットフォームは、第2のコンピューティングプラットフォームから、vRTMを含むSEの整合性測定の値を受信してもよい。いくつかの実施形態において、(例えば、vTPM106の複数のPCR136のうち1つまたは複数から取得された)整合性測定の値は、第2のコンピューティングプラットフォームのvTPMから送信されてもよい。いくつかの実施形態において、動作404において受信されたSEの整合性測定の値は、第2のコンピューティングプラットフォームに関連付けられた鍵を有する暗号署名付きであってもよい。例えば、鍵は、ハードウェアプラットフォーム鍵であってもよく、これは、信頼される機関(例えば、ハードウェアの1つまたは複数のコンポーネントの製造者)によって検証可能であってもよい。暗号署名を用いて、第1のコンピューティングプラットフォームは、整合性測定の値が正しいコンピューティングプラットフォームからレポートされ、途中で改ざんされていないことを確認してもよい。
【0040】
動作406において、第1のコンピューティングプラットフォームは、SEの整合性測定の値(動作404において受信された)を予測値と比較してもよい。いくつかの実施形態において、予測値は、vRTMを定義する機械可読コードの予測されるセットに基づいてもよい。例えば、予測値は、vRTMを定義する機械可読コードの予測されるセットのハッシュであってもよい。第1のコンピューティングプラットフォームが、動作406において、SEの整合性測定の値が予測値と一致しないと判断した場合、第1のコンピューティングプラットフォームは、動作410に進み、第1のコンピューティングプラットフォームの他のコンポーネント(例えば、セキュリティイベントロギングソフトウェア)、他のコンピューティングプラットフォーム(例えば、セキュリティイベントロギングサーバ)及び/または第2のコンピューティングプラットフォームに、(例えば、それに、セキュリティ違反の可能性を通知するために)不一致のインジケータを提供してもよい。処理400は、次に、終了してもよい。
【0041】
第1のコンピューティングプラットフォームが、動作406において、SEの整合性測定の値が予測値に一致すると判断した場合、第1のコンピューティングプラットフォームは、動作408に進み、第2のコンピューティングプラットフォームのゲストVMのリソースと通信を行ってもよい。いくつかの実施形態において、動作408において第2のコンピューティングプラットフォームのゲストVMのリソースと通信を行う前に、第1のコンピューティングプラットフォームは、vRTMと第2のコンピューティングプラットフォームのゲストVMのリソースとの間の複数の整合性測定のチェーンを代表するデータ(例えば、チェーンの複数の整合性測定の値の1つまたは複数のハッシュ値)が、予測値または複数の予測値に一致するか否かを判断してもよく、一致を確認した場合にのみ、第2のコンピューティングプラットフォームのゲストVMのリソースとの通信を進めてもよい。処理400は、次に終了してもよい。
【0042】
ここで
図5を参照すると、様々な実施形態に係るPCR(PCR136のような)に格納された複数の値を修正する処理500のフロー図が提供される。例示目的のために、処理500の複数の動作は、コンピューティングプラットフォーム100によって実行されるものとして説明されてもよいが、処理500の複数の動作は、処理500の個別の動作も含め、コンピューティングプラットフォーム100の任意の適宜構成されたコンポーネントまたは複数のコンポーネントの組み合わせによって実行されてもよい。
【0043】
処理500は、動作502において開始されてもよく、ここで、コンピューティングプラットフォーム100は、コンピューティングプラットフォーム100の第1のSE(SE132のような)にMVM(MVM118のような)を提供してもよい。動作504において、コンピューティングプラットフォーム100は、vTPM(vTPM106のような)を、コンピューティングプラットフォーム100の第2のSE(SE134のような)におけるゲストVM(ゲストVM110のような)に提供してもよい。(動作504の)第2のSEは、(動作502の)第1のSEと異なってもよい。動作506において、コンピューティングプラットフォーム100は、vRTM(vRTM120のような)を、コンピューティングプラットフォーム100の第3のSE(SE130のような)に提供してもよく、第3のSEは、第1及び第2のSEと異なる。いくつかの実施形態において、動作502で提供されたMVMは、vRTM(例えば、vRTM120の機能)を含んでもよく、そこで、動作506は、実行されなくてもよい。
【0044】
動作508において、コンピューティングプラットフォーム100は、vRTM(例えば、vRTM120またはMVM118に含まれるvRTM)とゲストVMのリソースとの間の複数の整合性測定のチェーンを開始してもよい。動作510において、コンピューティングプラットフォーム100は、(動作504で提供される)vTPMにおいて、vTPMのPCRに格納された値を変更するコマンドを受信してもよく、PCRは、ゲストVMのリソースに関連付けられる。いくつかの実施形態において、PCRに格納された値を変更するコマンドは、動作508において開始された複数の整合性測定のチェーンに応答してなされてもよい。いくつかの実施形態において、PCRに格納された値を変更するコマンドは、複数の整合性測定の値に起因してもよいが、他のソース(例えば、他の処理)に起因してもよい。いくつかの実施形態において、動作510で受信されたコマンドは、PCRに格納された値を、PCRに関連付けられたゲストVMリソースの整合性測定の値の暗号ハッシュで拡張するコマンドを含んでもよい。動作510で受信されたコマンドは、PCRの構成によって異なってもよく、例えば、いくつかのPCRは、vTPMがリセットされた場合にのみ値に初期化されてもよく、または、任意の値に設定されるのではなく、拡張のみされてもよい。
【0045】
動作512において、コンピューティングプラットフォーム100は、(動作510で受信された)変更コマンドが許可されたことを示すMVMからのモディファイヤが、vTPMにおいて受信されたか否かを判断してもよく、いくつかの実施形態において、MVM及びvTPMは、動作512において、セキュアチャネルを介して通信を行ってもよい。MVM及びvTPMの各々は、セキュアエンクレーブに配置されるため(従って、検証及び信頼できるため)、2つの信頼された点の間にセキュアチャネルを確立するための、当分野で公知の多数の技術はいずれも、MVMとvTPMとの間にセキュアチャネルを確立するために用いられてもよい。いくつかの実施形態において、モディファイヤは、PCRに関連付けられたゲストVMのライフサイクルイベントを代表してもよい。適切なモディファイヤが受信されなかった場合、処理500は、終了してもよく、PCRへの変更はなされなくてもよい。コンピューティングプラットフォーム100が、動作510において、モディファイヤが受信されたと判断した場合、コンピューティングプラットフォーム100は、動作514に進み、PCRに格納された値を変更してもよい。処理500は、次に、終了してもよい。
【0046】
ここで
図6を参照すると、複数の開示された実施形態(例えば、
図1のコンピューティングプラットフォーム100を参照して上述された複数の実施形態、及び
図4を参照して上述された第1及び第2のコンピューティングプラットフォーム)の実施に適した例示的なコンピューティングプラットフォーム600のブロック図が提供される。コンピューティングプラットフォーム600は、多数のコンピューティングシステム、例えば、デスクトップコンピュータ、ポータブルコンピュータ、タブレットコンピュータ、サーバ、クライアント、シンクライアント、携帯電話またはスマートフォンのいずれかを含んでもよく、またはその一部であってもよい。
【0047】
図示されるように、コンピューティングデバイス600は、多数の処理デバイス602及びシステムメモリ604を含む。複数の処理デバイス602は、1つまたは複数の処理コアまたは他の複数の処理デバイスを含んでもよい。さらに、コンピューティングプラットフォーム600は、複数の大容量ストレージデバイス606(ソリッドステートドライブ、ディスケット、ハードドライブ、コンパクトディスクリードオンリメモリ(CDROM)など)、複数の入力/出力デバイス608(ディスプレイ、キーボード、カーソル制御、カメラ、マイクロフォン、GPS受信機、動作検出器など)及び複数の通信インタフェース610(ネットワークインタフェースカード、モデム、WiFiデバイス、Bluetooth(登録商標)デバイスなど)を含んでもよい。複数の要素は、1つまたは複数のバスを表すシステムバス612を介して、互いに連結可能である。複数のバスの場合、これらは、1つまたは複数のバスブリッジ(不図示)によってブリッジされてもよい。本明細書で説明された複数の技術及び複数のシステムは、これらのデバイスまたは経路のうち1つまたは複数によって導入された脆弱性に対して、コンピューティングプラットフォームの複数のリソースをセキュアにするために用いられてもよい。
【0048】
これらの要素の各々は、当分野で公知のその従来の複数の機能を実行してもよい。特に、システムメモリ604及び大容量ストレージ606は、本明細書においてロジック622として集合的に示された個々の処理デバイス602によって実行された場合に、
図2−5のいずれかの方法、またはこれらの一部を実装する複数のプログラミング命令のワーキングコピー及び永久コピーを格納するために用いられてもよい。様々なコンポーネントが、複数のアセンブラ命令によって実装されてもよく、これらは、複数の処理デバイス602、または、このような複数の命令にコンパイル可能な、例えばCのような複数の高レベル言語によってサポートされる。
【0049】
複数のプログラミング命令の永久コピーは、工場の永久ストレージ606に、または、当分野では、例えば、コンパクトディスク(CD)のように機械がアクセス可能な配布媒体(不図示)によって、または(例えば、配布サーバ(不図示)からの)通信インタフェース610によって、配置されてもよい。すなわち、エージェントプログラムの実装を有する1つまたは複数の配布媒体は、エージェント及びプログラムを様々なコンピューティングデバイスに配布するために用いられてもよい。要素602−612の構成は、公知であり、従って、さらなる説明は行わない。
【0050】
上述された複数の技術を実行するための、機械がアクセス可能な媒体(非一時的機械可読媒体を含む)、複数の方法、複数のシステム及び複数のデバイスは、本明細書で開示された複数の実施形態の複数の例示的な実施例である。さらに、上述された複数のインタラクションにおける他の複数のデバイスは、様々な開示された技術を実行するように構成されてもよい。
【0051】
[実施例] 例1Aは、コンピューティングプラットフォーム上で複数の整合性測定のチェーンを開始する方法であり、これは、コンピューティングプラットフォームに、コンピューティングプラットフォームの第1のセキュアエンクレーブにおけるvRTMを提供する段階であって、コンピューティングプラットフォームは、第2のセキュアエンクレーブの整合性測定を実行するように構成される、段階と、コンピューティングプラットフォームに、第1のセキュアエンクレーブの外部にあるゲストVMのためのvTPMを提供する段階と、コンピューティングプラットフォーム上で、vRTMとゲストVMのリソースとの間の複数の整合性測定のチェーンを開始する段階とを含む。
【0052】
例1Bは、例1Aの主題を含んでもよく、第1のセキュアエンクレーブが、コンピューティングプラットフォームのメモリ領域を含み、メモリ領域は、メモリ領域の外部に配置された複数の実行された命令を介してはアクセス不可能であることをさらに規定する。
【0053】
例1Cは、例1A−1Bのいずれかに記載の主題を含んでもよく、vRTMとゲストVMのリソースとの間の複数の整合性測定のチェーンの整合性測定の値を、vTPMに格納する段階をさらに含む。
【0054】
例1Dは、例1A−1Cの主題を含んでもよく、コンピューティングプラットフォームに、第1のセキュアエンクレーブの外部にあるゲストVMのためのvTPMを提供する段階は、コンピューティングプラットフォームに、コンピューティングプラットフォームの第2のセキュアエンクレーブのゲストVMのためのvTPMを提供する段階を含み、第2のセキュアエンクレーブは、第1のセキュアエンクレーブと異なることをさらに規定する。
【0055】
例1Eは、例1Dの主題を含んでもよく、ゲストVMは、第2のセキュアエンクレーブの外部にあることをさらに規定する。
【0056】
例1Fは、例1A−1Eのいずれかに記載の主題を含んでもよく、複数の整合性測定のチェーンは、vTPMの整合性測定を含むことをさらに規定する。
【0057】
例は、例1Fの主題を含んでもよく、複数の整合性測定のチェーンは、ゲストVMにサービスを提供するサポートVMの整合性測定を含むことをさらに規定する。
【0058】
例1Hは、例1A−1Gのいずれかに記載の主題を含んでもよく、第1のセキュアエンクレーブの整合性測定を実行するように構成されることは、第1のセキュアエンクレーブの整合性測定を実行するように構成される第1のセキュアエンクレーブに関連付けられたマイクロコードを有することと、第1のセキュアエンクレーブの整合性測定の値をハードウェアレジスタに格納することとを含むことをさらに規定する。
【0059】
例1Iは、例1A−1Hのいずれかに記載の主題を含んでもよく、vTPMは、第1のvTPMであり、ゲストVMは、第1のゲストVMであることをさらに規定し、方法は、第2のゲストVMのための第2のvTPMをコンピューティングプラットフォームに提供する段階と、vRTMと第2のゲストVMのリソースとの間の複数の整合性測定のチェーンをコンピューティングプラットフォーム上で開始する段階とをさらに含む。
【0060】
例1Jは、1つまたは複数の機械可読媒体であり、コンピューティングプラットフォームの処理デバイスによって実行されたことに応答して、コンピューティングプラットフォームに、例1A−1Iのいずれかに記載の方法を実行させる複数の命令を含む。
【0061】
例1Kは、1つまたは複数の処理デバイスと、複数の命令を含む1つまたは複数の機械可読媒体とを含む装置であり、複数の命令は、1つまたは複数の処理デバイスによって実行されたことに応答して、装置に、例1A−1Iのいずれかに記載の方法を実行させる。
【0062】
例1Lは、例1A−1Iのいずれかに記載の方法の複数の動作を実行するための、1つまたは複数の手段を含む装置である。
【0063】
例2Aは、コンピューティング方法であり、コンピューティングプラットフォームに、コンピューティングプラットフォームの第1のセキュアエンクレーブにおけるMVMを提供する段階と、コンピューティングプラットフォームのゲストVMのためのvTPMをコンピューティングプラットフォームに提供する段階であって、vTPMは、第1のセキュアエンクレーブと異なるコンピューティングプラットフォームの第2のセキュアエンクレーブに提供される、段階と、vTPMにおいて、vTPMのPCRに格納された値を変更するコマンドを受信する段階と、vTPMにおいて、コマンドが許可されたことを示すモディファイヤを、セキュアチャネルを介してMVMから受信する段階と、モディファイヤを受信した後で、PCRに格納された値をコンピューティングプラットフォームによって変更する段階と、を含む。
【0064】
例2Bは、例2Aの主題を含んでもよく、モディファイヤは、PCRに関連付けられたVMのライフサイクルイベントを代表することをさらに規定する。
【0065】
例2Cは、例2A−2Bのいずれかに記載の主題を含んでもよく、PCRに格納された値を変更するコマンドは、PCRに関連付けられたVMリソースの整合性測定の暗号ハッシュで、PCRに格納された値を拡張するコマンドであることをさらに規定する。
【0066】
例2Dは、例2A−2Cのいずれかに記載の主題を含んでもよく、MVMは、vRTMを含むことをさらに規定する。
【0067】
例2Eは、例2A−2Dのいずれかに記載の主題を含んでもよく、コンピューティングプラットフォームの第3のセキュアエンクレーブにおけるvRTMを、コンピューティングプラットフォームに提供する段階であって、第3のセキュアエンクレーブは、第1及び第2のセキュアエンクレーブ異なる、段階と、vRTMとゲストVMのリソースとの間の複数の整合性測定のチェーンを、コンピューティングプラットフォーム上で開始する段階と、をさらに含む。
【0068】
例2Fは、1つまたは複数の機械可読媒体であり、コンピューティングプラットフォームの処理デバイスによって実行されたことに応答して、コンピューティングプラットフォームに、例2A−2Eのいずれかに記載の方法を実行させる複数の命令を含む。
【0069】
例2Gは、1つまたは複数の処理デバイスと、複数の命令を含む1つまたは複数の機械可読媒体とを含む装置であり、複数の命令は、1つまたは複数の処理デバイスによって実行されたことに応答して、装置に、例2A−2Eのいずれかに記載の方法を実行させる。
【0070】
例2Hは、例2A−2Eのいずれかに記載の方法の複数の動作を実行するための、1つまたは複数の手段を含む装置である。
【0071】
例3Aは、整合性測定の値を受信する方法であり、第2のコンピューティングプラットフォームのセキュアエンクレーブの整合性測定の値をレポートするコマンドを、第1のコンピューティングプラットフォームによって、第2のコンピューティングプラットフォームの処理デバイスに送信する段階であって、セキュアエンクレーブは、vRTMと、セキュアエンクレーブの外部に配置されるゲストVMのリソースとの間の複数の整合性測定のチェーンの測定の信頼の起点として構成されるvRTMを含む、段階と、第1のコンピューティングプラットフォームによって、第2のコンピューティングプラットフォームから、セキュアエンクレーブの整合性測定の値を受信する段階と、を含む。
【0072】
例3Bは、例3Aの主題を含んでもよく、第1のコンピューティングプラットフォームによって、セキュアエンクレーブの整合性測定の値を予測値と比較する段階をさらに含む。
【0073】
例3Cは、例3Bの主題を含んでもよく、セキュアエンクレーブの整合性測定の値が予測値と一致することを示す比較の結果に応答して、第1のコンピューティングプラットフォームによって、ゲストVMのリソースと通信を行う段階をさらに含む。
【0074】
例3Dは、例3B−3Cのいずれかに記載の主題を含んでもよく、予測値は、vRTMを定義する機械可読コードの予測されるセットに基づくことをさらに規定する。
【0075】
例3Eは、例3A−3Dのいずれかに記載の主題を含んでもよく、セキュアエンクレーブの整合性測定の値は、コンピューティングプラットフォームに関連付けられた鍵による署名付きであることをさらに規定する。
【0076】
例3Fは、1つまたは複数の機械可読媒体であり、コンピューティングプラットフォームの処理デバイスによって実行されたことに応答して、コンピューティングプラットフォームに、例3A−3Eのいずれかに記載の方法を実行させる複数の命令を含む。
【0077】
例3Gは、1つまたは複数の処理デバイスと、複数の命令を含む1つまたは複数の機械可読媒体とを含む装置であり、複数の命令は、1つまたは複数の処理デバイスによって実行されたことに応答して、装置に、例3A−3Eのいずれかに記載の方法を実行させる。
【0078】
例3Hは、例3A−3Eのいずれかに記載の方法の複数の動作を実行するための、1つまたは複数の手段を含む装置である。