特許第5905586号(P5905586)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

特許5905586仮想マシンおよびネストにされた仮想マシンマネージャの認証されたランチ
<>
  • 特許5905586-仮想マシンおよびネストにされた仮想マシンマネージャの認証されたランチ 図000002
  • 特許5905586-仮想マシンおよびネストにされた仮想マシンマネージャの認証されたランチ 図000003
  • 特許5905586-仮想マシンおよびネストにされた仮想マシンマネージャの認証されたランチ 図000004
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5905586
(24)【登録日】2016年3月25日
(45)【発行日】2016年4月20日
(54)【発明の名称】仮想マシンおよびネストにされた仮想マシンマネージャの認証されたランチ
(51)【国際特許分類】
   G06F 21/57 20130101AFI20160407BHJP
   G06F 21/44 20130101ALI20160407BHJP
   G06F 9/46 20060101ALI20160407BHJP
【FI】
   G06F21/57 320
   G06F21/44
   G06F9/46 350
【請求項の数】18
【全頁数】16
(21)【出願番号】特願2014-533261(P2014-533261)
(86)(22)【出願日】2011年9月30日
(65)【公表番号】特表2014-528604(P2014-528604A)
(43)【公表日】2014年10月27日
(86)【国際出願番号】US2011054126
(87)【国際公開番号】WO2013048425
(87)【国際公開日】20130404
【審査請求日】2014年5月7日
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】スミス、ネッド エム.
(72)【発明者】
【氏名】サヒタ、ラビ エル.
【審査官】 青木 重徳
(56)【参考文献】
【文献】 特開2007−035045(JP,A)
【文献】 特開2011−134320(JP,A)
【文献】 米国特許出願公開第2009/0204964(US,A1)
【文献】 宗藤 誠治、須崎 有康,”特集 Linuxのセキュリティ機能5 高信頼を実現するLinuxの新しい機能”,情報処理,日本,一般社団法人情報処理学会,2010年10月15日,第51巻、第10号,p.1284−1293
【文献】 諏訪 公洋、平野 学、奥田 剛、河合 栄治、山口 英,“ユーザとOS環境をアクセス主体とする仮想計算機環境でのポリシ強制機構”,情報処理学会研究報告,日本,社団法人情報処理学会,2008年 3月 6日, Vol.2008、No.23,p.31−36
【文献】 山市 良、大原 久樹、森若 和雄,“仮想化テクノロジー・アップデート Part3 マイクロソフトの「Viridian」/「インテルTXT」/Linuxカーネル標準「KVM」 新世代仮想化技術の実力を探る”,COMPUTERWORLD Get Technology Right,日本,(株)IDGジャパン,2008年 1月 1日,第5巻、第1号,p.58−65
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G06F 9/46
G06F 21/44
(57)【特許請求の範囲】
【請求項1】
ステムにおいて実行されるプログラムであって、
前記システムのプロセッサが、第1の仮想マシンマネージャ(VMM)をランチすること、
前記プロセッサが、第2のVMMのランチを認証すること、
前記プロセッサが、前記第1のVMMの内部で前記第2のVMMをネストにすること、
前記プロセッサが、第1の仮想マシン(VM)のランチを認証すること、および
前記プロセッサが、前記第1のVMMおよび前記第2のVMMの1つを用いて前記第1のVMを管理すること、
を実行させるためのプログラム。
【請求項2】
前記第1のVMMは、リエントラントでないセキュアなブートによってランチされるルートVMMである、請求項に記載のプログラム。
【請求項3】
前記第2のVMMの前記ランチを認証することは、前記プロセッサが、(a)第2のランチコントロールポリシーモジュール(LCPM)を呼び出すことと、(b)ハードウェアセキュリティ証明モジュールを用いることとの両方を行いながら、前記第1のVMMを迂回することを含む、請求項1または2に記載のプログラム。
【請求項4】
前記ハードウェアセキュリティ証明モジュールは、トラステッドプラットフォームモジュール(TPM)を含む、請求項に記載のプログラム。
【請求項5】
前記プロセッサが、前記第2のVMMと関連付けられる第2のランチコントロールポリシー(LCP)を第2のランチコントロールポリシーモジュール(LCPM)によって評価することを実行させるための、請求項1からのいずれか1項に記載のプログラム。
【請求項6】
前記プロセッサが、前記第2のLCPMによって前記第2のVMMの完全性測定を実行し、前記第2のLCPによって前記測定を認証することを実行させるための、請求項に記載のプログラム。
【請求項7】
前記プロセッサが、
前記測定をトラステッドプラットフォームモジュール(TPM)に含まれるプラットフォーム構成レジスタ(PCR)に拡張すること、および
前記測定を前記PCRに拡張することにもとづいてログを更新すること
を実行させるための、請求項に記載のプログラム。
【請求項8】
前記プロセッサが、ルートVMM特権を有する前記第2のLCPMを保護されたメモリにロードすること、および前記第2のLCPMを実行することを実行させるための、請求項に記載のプログラム。
【請求項9】
前記プロセッサが、VMMに固有であるがVMに固有でない前記第2のLCPに含まれるホワイトリストを前記第2のLCPMによって認証することを実行させるための、請求項に記載のプログラム。
【請求項10】
前記プロセッサが、前記第1のVMMと関連付けられる第1のLCPにもとづいて前記第1のVMMをブートしながら、前記第2のLCPを認証することを実行させるための、請求項に記載のプログラム。
【請求項11】
前記プロセッサが、特に前記第2のVMMのために構成されてはおらずかつVMMとネストにされたVMMとの両方とインタフェース接続するように構成されたセキュアなインタフェースによって、前記第2のVMMの前記ランチを認証することを実行させるための、請求項1から10のいずれか1項に記載のプログラム。
【請求項12】
プロセッサが、第1の仮想マシンマネージャ(VMM)をランチすること、
前記プロセッサが、第2のVMMのランチを認証すること
前記プロセッサが、前記第1のVMMの内部で前記第2のVMMをネストにすること
前記プロセッサが、第1の仮想マシン(VM)のランチを認証すること、および
前記プロセッサが、前記第1のVMMおよび前記第2のVMMの1つを用いて前記第1のVMを管理すること、
を含む方法。
【請求項13】
前記第2のVMMの前記ランチを認証することは、前記プロセッサが、(a)第2のランチコントロールポリシーモジュール(LCPM)を呼び出すことと、(b)ハードウェアセキュリティ証明モジュールを用いることとの両方を行いながら、前記第1のVMMを迂回することを含む、請求項12に記載の方法。
【請求項14】
前記プロセッサが、前記第2のVMMと関連付けられる第2のランチコントロールポリシー(LCP)を第2のランチコントロールポリシーモジュール(LCPM)によって評価することを含む、請求項12または13に記載の方法。
【請求項15】
前記プロセッサが、前記第2のLCPMによって前記第2のVMMの完全性測定を実行すること、および前記第2のLCPによって前記測定を認証することを含む、請求項14に記載の方法。
【請求項16】
メモリ、及び、
前記メモリに結合され、(a)第1の仮想マシンマネージャ(VMM)をランチし、(b)第2のVMMのランチを認証し、(c)前記第1のVMMの内部で前記第2のVMMをネストにし、第1の仮想マシン(VM)のランチを認証し、前記第1のVMMおよび前記第2のVMMの1つを用いて前記第1のVMを管理するプロセッサ、
を含むシステム。
【請求項17】
前記プロセッサは、前記第2のVMMと関連付けられる2のランチコントロールポリシー(LCP)を第2のランチコントロールポリシーモジュール(LCPM)によって評価する、請求項16に記載のシステム。
【請求項18】
前記プロセッサは、前記第2のLCPMによって前記第2のVMMの完全性測定を実行し、前記第2のLCPによって前記測定を認証する、請求項17に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
「ランチコントロール」またはランチコントロールポリシー(LCP:launch control policy)は、総合的なエンドポイント保護ソルーションの一部である。従来のアンチウイルススキャンは、既知の「悪い」ソフトウェアを特定することを目的とする「ブラックリスト作成」技法を使用する。スキャンエンジンがプラットフォームリソースを検索する際には、攻撃シグネチャーがスキャンエンジンの指針となる。感染したリソースは修復のためにフラグを立てられる。「ホワイトリスト作成」は、既知の「善い」ソフトウェアのリストを作り出すことを含む。このリストはスキャンエンジンに供給され、スキャンエンジンはリストに載っていないリソースに修復のためのフラグを立てる。ブラックリスト作成およびホワイトリスト作成は、一緒に機能することでシステムのすべてのリソースを仕分けすることができる。ランチコントロールは、ホワイトリストスキャンエンジンをシステムランチ手順に統合して、マルウェアがシステムで実行される機会を獲得しないようにする。たとえば、ホワイトリストは、実行環境(たとえば動的にランチされる環境)をブートまたはランチするために用いられるコードおよびデータ(たとえばハッシュ)の参照測定を含んでよい。したがって、ランチコントロールは、「トラステッドブート」が行われることを確実にするために用いることができる。
【背景技術】
【0002】
トラステッドブート使用は、ブートフローのすべての段階に影響を及ぼしてよく、「ルートオブトラスト(roots−of−trust)」としても知られるトラステッドハードウェアにもとづいてよい。トラステッド実行テクノロジー(TXT:Trusted Execution Technology)は、仮想環境のためのトラステッドブート使用を実装するために用いることができるランチコントロールおよびルートオブトラストテクノロジーの一例である。ハードウェアルートオブトラストの助けにより、トラステッドブート使用がマルウェアが上のレイヤに対して正当なハードウェアを偽装する可能性を取り除くかまたは低くする。TXTは、ランチコントロールポリシーを使用してトラステッド環境だけがランチされることを確実にする動的な測定のためのルートオブトラスト(RTM:root of trust for measurement)を実装する。言い換えると、TXTは、プラットフォーム内のさまざまな実行環境について実行される一連の完全性チェックにおける出発点であってよい。従って、TXTは、マイクロコードにおけるセキュアな出発点を提供してよい。たとえば、さまざまなランチコントロール、たとえばTXTランチコントロールは、仮想マシンマネージャ(VMM:virtual machine manager)ランチャーが信頼に値することを確実にする。
【0003】
VMMは、コンピュータが複数の実行環境をサポートすることを可能にするホストプログラムを含んでよい。たとえば、VMMは、単一の物理マシン(たとえばサーバ)を分割し、複数のオペレーティングシステムが同じCPU上でセキュアに実行され、CPU利用率を増加させることを可能にする手段をエミュレーションによって提供してよい。VMMは、VMを管理することができる。VMは、命令を物理マシンのように実行する、マシン(すなわちコンピュータ)のソフトウェア実装を含んでよい。
【0004】
再びTXTランチコントロールに関して、そのようなランチコントロールは、後に続いてランチされるVMMインフラストラクチャ(たとえば仮想マシン(VM:virtual machine)、ネストにされたVMM、ネストにされたVM、およびオペレーティングシステム(OS:operating system)環境)も信頼に値することを確実にするわけではない。従って、ランチコントロールは、実際には単一のVMMをランチするために用いることができる。しかし、VMMが実行されると、TXTモデル固有レジスタ(MSR:model specific register)は、VMXルート(VMX−root)を用いるVMMがアクティブである間はTXTが呼び出されないように設定される。従って、ネストにされたVMMがランチされると、TXTは利用可能でなく(たとえばGETSEC(SENTER)コマンドは無効である)、ネストにされたVMMはセキュアにランチされない。このときVMおよびネストにされたVMMは、ランチコントロールポリシーを適用しないでロードされ、それによってセキュリティ侵害の機会の可能性が生まれる。
本発明の実施形態の特徴および利点は、添付の特許請求の範囲、以下の1つ以上の例示実施形態の詳細な記載、および対応する図面から自明となる。
【図面の簡単な説明】
【0005】
図1】本発明の実施形態の概略フローチャートを含む。
図2】本発明の実施形態のさまざまな側面の組織を示すブロック図を含む。
図3】本発明の実施形態で用いられるシステムを含む。
【発明を実施するための形態】
【0006】
以下の記載においては、多数の特定の詳細が示されるが、本発明の実施形態はこれらの特定の詳細を用いずに実施されてよい。本記載の理解が不明瞭にならないように、周知の回路、構造物および技法は詳しくは示されない。「実施形態」、「さまざまな実施形態」などは、そう記載される実施形態が特定の特徴、構造物または特性を含んでよいことを示すが、必ずしもすべての実施形態が特定の特徴、構造物または特性を含むわけではない。いくつかの実施形態が他の実施形態について記載された特徴の一部、すべてを有してよく、あるいはまったくもたなくてよい。「第1の」、「第2の」、「第3の」などは共通のオブジェクトを記載し、同様なオブジェクトの異なるインスタンスが参照されることを示す。そのような形容詞はそう記載されるオブジェクトが、時間的に、空間的に、順位的に、または他の任意の様式的に所定のシークエンスでなければならないことを意味しない。「接続された」は、要素が互いに物理的または電気的に直接接触していることを示してよく、「結合された」は、要素が互いに協力するかまたは相互作用するが、要素は物理的または電気的に直接接触していてもいなくてもよいことを示してよい。また、異なる図の中で同じまたは類似の部品を示すために類似の数字または同じ数字が用いられてよいが、そうすることは類似の数字または同じ数を含むすべての図が単一の実施形態または同じ実施形態を構成することを意味するわけではない。
【0007】
本発明の実施形態は、VMおよび/またはネストにされたVMMの認証されたランチを提供する。実施形態は、VMおよびネストにされたVMMのためのVMM保護されたランチコントロール機構を呼び出すインタフェースを用いてそのようにしてよい。インタフェースは、アーキテクチャとしてジェネリックであってよい。いくつかの実施形態は、VMおよびVMMを包含するように拡張されたTXTランチコントロールポリシーを用いてよい。
【0008】
図1は、本発明の実施形態の概略フローチャートを含む。図2は、本発明の実施形態のさまざまな側面の組織を示すブロック図を含む。図1および図2は、互いに関連させられて下記で考察されるが、各図の実施形態は必ずしも互いに一緒に機能するようには限定されない。
【0009】
図2は組織図200を含む。簡潔には、組織図200は、イメージ201と、イメージ201に対応する代表ホワイトリストを有するランチコントロールポリシー211と、候補コードイメージ201をホワイトリスト211中の測定と対比して認証するコードを含む検証コードモジュール(たとえばランチコントロールモジュール(LCPM:launch control module))221と、の集まりを含む。組織図200は、下記でもっと十分に説明される。実施形態において、LCPMは、ルートVMM特権で実行される動的なモジュール式コードオブジェクトである。プラットフォーム構成レジスタ(PCR:platform configuration register)231がイメージ測定を記憶する。
【0010】
最初にルートVMM(VMM0)155がブートされる。このブートは、任意の数のセキュアなブート機構によって実装されたセキュアなブートであってよい。上記で取り上げられた1つのそのような機構はTXTランチコントロールを含む。TXTランチコントロールに関する情報は、http://software-intel-com/en-us/articles/intel-trusted-execution-technology-a-primer/, http://download-intel-com/technology/security/downloads/315168-pdfならびに他の一般に利用可能なロケーションにおいて最小限利用可能である。
【0011】
ルートVMM(VMM0)をセキュアにランチすることは、いくつかのアクションを含んでよい。TXT 226は、特定のイメージ、たとえばSINIT ACM 206が真正であることを確実にするランチコントロールポリシーとして動作してよい。SINIT ACMは、セキュアなブートプロセスにおいて用いられる認証されたコードモジュールに関係する。SINIT ACM 206の測定は、PCR 17(236)に記憶される。PCRは、セキュリティ関連情報の暗号ハッシュ(たとえばVMMのようなトラステッド実行環境によって実行されるコードおよびそれをランチするために用いられるローダコードのハッシュ)を含むトラステッドプラットフォームモジュール(TPM:trusted platform module)レジスタである。
【0012】
VMM0のセキュアなランチ時に、ブロック225においてSINIT ACMを用いてLCP0 215がルートVMM0 205イメージと比較されてよい。LCP0 215およびSINIT ACM 225は、LCPM1、LCPM2、LCPM3 205イメージを認証するためにも用いられてよい。これらのイメージの一部は、下記で考察される後の段階(たとえばネストにされたVMMブート)において用いられてよい。これらの測定は、VMM0についてはPCR18に、LCPM1、LCPM2、LCPM3についてはPCR19、20、21にそれぞれ記憶される。
【0013】
少々横道に逸れると、ストレージのために用いられる正確なPCRが構成可能であり、他の実施形態においては変化してよい。たとえば、PCRアロケーション指針は、仕様に概略が記載されてよい。そのような仕様は、トラステッドコンピューティンググループ(TCG)PCクライアント仕様およびTPM仕様を含む。これらの仕様は、PCR17、18、19、20、および21を動的ルートオブトラスト(たとえばTXT)による使用のために予約する。PCR17は、SENTERによってACMを測定するために用いられてよい。ACMは、VMMランチャーを測定するためにPCR18を用いてよい。VMMランチャーは、VMMを測定するためにPCR18を用いてよく、任意選択としてPCR19を用いてよい。VMMはTPMを仮想化してよく、したがってVM(およびそれに関連付けられるLCPM)を測定するために他のPCRを用いてよい。VMMは、PCR20および21も利用可能であってよい。さらに、複数のLCPM測定が同じPCRに含まれてよい。したがって、PCRの使用は構成可能であり、実施形態の変化とともに変化してよい。
【0014】
図1に戻り、ブートストラップされたローダ、たとえばVM0 105がブロック110によって仮想ブートされる。ブロック115は、仮想マシンVM1 104(図2の要素204にある)のような実体(Entity)をブートするプロセスを開始する。(「実体」は、ネストにされたVMMでもあってよいが、この例においては説明を目的としてVM1が用いられる。)VM1 104がランチされると、ブートストラップローダVM0 105は命令、たとえばVM1 104をランチするLCPM1 124(図2の224)に至るリーフを指定するVMFUNCインタフェース命令を呼び出す。VMFUNCインタフェースは、割り込みを防止するかまたはVMコントロールビットをセットしてよく、したがってLCPM1 224は、測定プロセスの割り込みをまったく受けずに実行することが許可される。このインタフェースは、システム上の他のプロセッサも静止させてよく、その結果、測定は他のプロセッサから干渉されずに行われることができる。さらに、VMFUNCは、たとえばTXTの使用にもとづいてマイクロコードが完全性チェックおよび完全性チェッキングコントロールを実行する安全な場所と既にみなされることを承認してよい。VMFUNCは下記でさらに考察される。
【0015】
したがって、実行管理は、ブロック130によってLCPM1 124(図2の要素224)に渡される。実施形態において、LCPM1はVM1上で実行されるVMとして動作する。LCPM1 124は、メモリ中のVM1 104の位置を特定し、LCP1 114(図2の要素214)にもとづいてLCPM1のために意図される完全性測定を実行し、計算された測定がLCP1のポリシーの1つによって受け入れられることを検証する。LCPはホワイトリストを含んでよく、ホワイトリストはおそらくはトラステッドサーバに確保された、予測されるソフトウェアイメージを記載する。詳しくは、実施形態において、LCPM1はLCP1をメモリ、たとえば拡張ページテーブル(EPT:extended page table)に配置された保護メモリに読み込む。EPTは、下記でVMFUNCインタフェースに関してもっと詳しく考察される。
【0016】
ブロック140において、VM1の測定はPCR(たとえばPCR8)234に拡張される。PCR234はTPM145または他のそのようなハードウェア証明モジュールに含まれる。TPMは、セキュアなストレージおよびセキュアなレポーティングに関連付けられるさまざまなセキュリティ機能を実装するセキュリティコプロセッサである。TPMのような暗号プロセッサに関する詳細は、少なくともサンディープ・バジカ(Sundeep Bajikar)による「ノートブックPCのトラステッドプラットフォームモジュール(TPM)利用セキュリティ 白書("Trusted Platform Module (TPM) based Security on Notebook PCs − White Paper")」、http://www-intel-com/design/mobile/platform/downloads/Trusted_Platform_Module_White_Paper-pdfにある。ブロック160において、PCRログが更新される。実施形態は、VMFUNC、TPM等を用いる動作に限定されないが、そのような要素は例を示す目的のため用いられているだけである。次に、ルートVMM 155(図2の要素205に含まれる)による実行のためにVM1がスケジュールされる。ブロック165においてVMFUNC(エグジット)が実行される。
【0017】
上記のプロセス実施形態(図1および図2に関する)は、説明を目的として用いられたVM1の代わりに、ネストにされたVMMにも適用可能である。この趣旨に沿って、図2のブロック204にはVM(たとえばVM1)とネストにされたVMMとの両方が含まれる。言い換えると、図1は、VM1のセキュアなブートを記載しているが、ネストにされたVMMをセキュアにブートするために同じプロセスを用いることができるであろう。
【0018】
図2に示されるように、追加の仮想化レイヤがセキュアにされてよい。たとえば、ネストにされたVM203がLCPM2 223によって測定され、LCP2 213に含まれる測定と比較されてよい。測定は、PCR233によって記憶されてよい。さらに、LCPM3 221によって、ドライバ、ライブラリおよび実行可能コード202が測定され、LCP3 212に含まれる測定と比較されてよい。測定は、PCR232によって記憶されてよい。
【0019】
ネストにされたVMに関するより具体的な例として、ブートストラップされたローダVM0 105がブロック110によって仮想的にブートされる。ネストにされたVM2 203をブートするプロセスをブロック115が開始する。VM2 203がランチされると、ブートストラップローダVM0 105は、命令、たとえば、VM2 203をランチするLCPM2 223に至るリーフを指定するVMFUNCインタフェース命令を呼び出す。ブロック130によって、実行管理はLCPM2 223に渡される。LCPM2 223はメモリ内のVM2 203の位置を特定し、LCPM2のために意図されたLCP2 213にもとづいて完全性測定を実行し、計算された測定がLCP2内のポリシーの1つによって受け入れられることを検証する。ブロック140において、VM2の測定は、TPMに含まれるPCR233に拡張される。ブロック160において、PCRログが更新される。次に、ブロック155において、VM2の実行がルートVMM155によってスケジュールされる。ブロック165において、VMFUNC(エグジット)が実行される。
【0020】
すぐ上で(図1および図2に関して)記載されたプロセス実施形態は、別の実体内にさらにネストにされた、ネストにされたVMMにも適用可能である。
【0021】
したがって、ブロック110は、LCPM(225)をランチするルートVMM(105)に通じる。LCPMは、保護されたメモリにロードされるVMのためのイメージを用いてLCPを評価するためにある。同様に、ネストにされたVMMのためのLCPMも(これは図1には特に示されていないが)ロードされてよい。ルートVMM LCPは、LCPMの完全性を検証するために用いられる。さらに、VMまたはネストにされたVMMは、VMまたはネストにされたVMMが、セキュアにブートされたルートVMMであってもルートVMMからランチされるときより、セキュアにランチされる。その代わり、ルートVMMは直接依存されず(すなわちバイパスされ)、その代わり、VMまたはネストにされたVMMをブートするためにTXTハードウェア利用シークエンス(または他のハードウェア証明モジュール利用方法)が依存される。一実施形態において、通常はルートVMMとともに機能するように限定されるランチコントロール機構、ツールおよびインフラストラクチャがVMおよびVMMとともに働くように拡張される。たとえば、次に、ランチコントロールがTXTおよび同様なセキュリティ技法を超えて拡張される。実施形態は、たとえばTXTランチコントロールおよび/またはBIOSトラステッドブート機構によってキックオフされたホワイトリストチェッキングプロセスをネストにされたVMMおよびVM環境に続行する。トラステッドシステムブート、トラステッドルートVMMブート、およびネストにされたトラステッドVMMおよび/またはVMブートにもとづいて、実施形態は、さかのぼってルートオブトラストに達する途切れのないチェーンオブトラストを有するトラステッドブローカーサービスを提供してよい。このチェーンオブトラストは、たとえばPCRログの内容にもとづいて構築されてよい。
【0022】
VMFUNC命令に関して、通常、VMおよびネストにされたVMMは、ランチコントロールポリシーを適用されずにロードされる。さらに、VMMベンダーは、ランチコントロールのための普通のアーキテクチャインタフェースに依存しない。しかし、本発明のさまざまな実施形態では、ルートVMMは、上記のように、ランチコントロールポリシーモジュールを呼び出すVMFUNCコール(またはその機能均等物)を用いることができる。LCPMは、LCPポリシーに含まれるホワイトリストをどのようにパースし、検証するかを理解している。LCPポリシーは、ロードされるイメージの種類(たとえばVMまたはネストにされたVMM)に固有であってよい。LCPMは、ルートVMMを適切に保護して実行される。VMFUNCコールは、VMおよびネストにされたVMMがベンダーに依存しない確実な方法によって呼び出されることを確実にし、これによって、LCPオーサーはVMMおよびVMのさまざまなベンダー実装を網羅するかまたはさまざまなベンダー実装にわたって確実に機能するLCPを構築することができる。したがって、VMMベンダーは、ルートVMMまたはネストにされたVMMのどちらかとして機能するVMMのために、顕著に異なる製品/装置の最小在庫管理単位(SKU:stock keeping unit)を維持しなくてよい。
【0023】
さらに、VMFUNCに関して、VMFUNCは、EPTメモリ保護を用いるアーキテクチャインタフェースである。EPTは、メモリ管理ユニット(MMU:memory management unit)のための仮想化技術である。この特徴がアクティブであるとき、普通のIA−32ページテーブル(コントロールレジスタCR3によって参照される)は、線形アドレスからゲスト物理アドレスに翻訳される。別個の組のページテーブル(すなわちEPTテーブル)は、ゲスト物理アドレスからメモリにアクセスするために用いられるホスト物理アドレスに翻訳される。その結果、ゲストソフトウェアがそれ自体のIA−32ページテーブルを変更し、ページフォールトを直接取り扱うことが可能になり得る。これによって、EPTを用いない仮想化オーバーヘッドの主なソースであるページテーブル仮想化と関連付けられたVMエグジットをVMMが回避することが可能になる。VMFUNCは、たとえばEPTを用いてLCP1(114)およびLCPM1(124)を分離することによってEPTを利用する。その際に、LCPM1は、VMFUNCエントリポイントの外部に由来する書き込み動作から保護される。そのとき、測定は、TPM内に含まれるレジスタに記憶されることができる。さらに、EPTは、特定のハードウェアスレッド上だけでアクティブであってよく、したがって、他のハードウェアスレッド上で実行され得る他のソフトウェアがLCP1の測定を不正に変更するか又は妨げることを許さない。
【0024】
実施形態において、EPTは、LCPMのためのメモリ内の境界を指定するために用いられてよい。VMがロードされるときにLCPMコードを再チェックする(すべてのVMMコードをチェックすることなく)と有利なことがある。たとえばLCPMコードはポリシーエンフォースメントルールを固有に実装するからである。このチェックは、VMMコードを再ロードしない。その代わりに、チェックはインメモリチェックである(たとえばEPT内のメモリページが再ハッシュされ、インメモリイメージに対応するホワイトリストと比較される)。これらの再測定のためにPCR19、20、21が用いられ得る。それらのPCRは(PCR18に含まれてよい)VMMの全測定を含まないからである。
【0025】
より詳しくは、実施形態において、特別なプロパティおよび/または用途を有するメモリページの群を定義するためにEPTが用いられる。この実施形態は、LCPM(たとえばコード)およびLCP(たとえばデータ)機能を実装するVMMコードおよびデータページのサブセットを構築するためにEPTを用いる。VMFUNCが制御をVMMに向けると、LCPMを含むEPTを検証するためにVMFUNCの新しいリーフが用いられることができ、LCPページは最初にランチされてから変化していない。実施形態は、これをアドレス範囲に類似した方法で実装してよい。LCPMページは、それらが移動されず、長くされず、および/または短くされていないことを確実とするためにチェック/検証されてよい。完全性ポリシーを強制するためにVMFUNCが用いられると、予測されるLCPMおよびLCP測定は、新しいリーフへのパラメータとしてVMFUNCに渡されることができる。次に、VMFUNCは、LCPMコードに実行を渡す前にEPT測定を比較することができる。VMFUNCは、比較が一致しなければフォールトを示してよい。
【0026】
実施形態において、ルートVMM機能は、VMFUNCの呼出しがRing0において行われ、LCPMの実行がRing1において行われるように、CPUリング構造にしたがって配分されてよい。VMM機能の残りは、Ring2およびRing3において実装されることができる。この実装によって、ハードウェア機構がLCPMおよびVMFUNC呼出しを保護/堅固化することが可能になる。LCPMをサポートするためのVMFUNCリーフは、この特定のリーフがring0においてゲストVMMによってだけ呼び出されることができるように強制してよい。実施形態において、ルートVMMはTXTを用いるであろう。たとえば、VMM/VMMランチャーをランチするためにTXTが用いられるであろう。ランチされたら、ゲストをランチするためにVMM内のLCPMが用いられるであろう。したがって、リングは、ランチ機能をVMMおよびVMMインフラストラクチャ内のセキュリティに関連しない他の機能からさらに分離し、孤立させるために用いられることができるであろう。
【0027】
実施形態は、検証されたブート環境および測定されたブート環境を含むいくつかの環境に適している。
【0028】
検証されたブートは、予測されるソフトウェアイメージを記載するホワイトリストをトラステッドサーバから受け取る。クライアントプラットフォームのトラステッドコンポーネントは、実行される前のソフトウェアイメージを検査し、ホワイトリストと比較する。一致すれば、コンポーネントは実行することを許可される。一致しなければ、修復アクションが実行される。この動作を行うコンポーネントは、ときに検証用ルートオブトラストと呼ばれる。これは、ハードウェア証明モジュール(たとえばTPM)を必要としないことがある。
【0029】
しかし、測定されたブートは、実行される前のソフトウェアイメージを検査し、セキュアなストレージロケーションに保存する。測定されたブートは、ブートを制約するかまたは変化させるホワイトリストを有さなくてよい。その代わりに、ホワイトリストは、クライアントがアクセスすることを望むリソースをホストするサーバに保持される。サーバがアクセスを許可する前提条件として、ソフトウェアの完全性レポートがサーバに送達される。サーバへのレポートの提示は、ときに証明(Attestation)と呼ばれる。サーバは、クライアントが顕著なリスクをもたらすかを判断するために証明レポートをホワイトリストと比較する。クライアントがリスクをもたらすなら、ネットワーク接続は閉じられる。これは、ハードウェア証明モジュール(たとえばTPM)を利用してよい。
【0030】
さらに詳しくは、さまざまな実施形態において、検証されたブートは完全性ポリシーを直接強制する(すなわち、完全性ポリシーを満たさないコードの実行を妨げてよい)。しかし、測定されたブートは完全性ポリシーを満たさないコードの実行を可能にしてよい。たとえば、完全性ポリシーは実際にはリモートサーバにあってよく、クライアントに知られていないことがあるからである。したがって、クライアントは測定をセキュアに記憶(たとえばTPM PCRに)してよく、測定は、後で「引用され」、「証明」の一部としてサーバに送達される。サーバは、証明において見いだされる測定をホワイトリストのそのローカルコピー上の測定と比較することができる。ネットワーク接続を切断することによって、または更新サービスがクライアント(たとえばPC)を再構成しようとする修復ネットワークにクライアントを配置することによって、エンフォースメントはサーバにより適用されることができる。
【0031】
したがって、実施形態は、第1のVMMをランチし、第2のVMMのランチを認証し、第1のVMMの内部で第2のVMMをネストにする。ネストにされたVMMの認証されたブートの代わりに、またはネストにされたVMMの認証されたブートに加えて、実施形態は、第1のVMのランチを認証し、第1のVMM(たとえばルートVMM)またはネストにされたVMMを用いて第1のVMを管理してよい。直前のシナリオのうちのどちらかにおいて、ルートVMM、または別のVMMをホストするVMM、あるいはVM、そのルートVMMまたはホストVMMは、リエントラントでないセキュアなブートによって(たとえばTXTランチによって)ブートされてよい。
【0032】
実施形態は、(a)第2のLCPMを呼び出すことと、(b)ハードウェアセキュリティ証明モジュール(例えばTPMであるがこれに限定されない)を用いることとの両方を行いながらルートVMMを迂回することによって第2のVMMのランチを認証してよい。
【0033】
ルートVMMを「迂回する」ための例に関して、ルートVMMは、ネストにされたVMMをあたかもVMであるかのように処理してよい。したがって、VMとVMMとの両方のランチコントロールは、ルートVMMから見れば同様であろう。ネストにされたVMMに焦点を合わせる。ネストにされたVMMが実行されると、それはロードするVMを特定する。ネストにされたVMMを測定するためのLCPMコードは、ネストにされたVMMページ範囲に含まれる。したがって、VMFUNCは、ネストにされたVMMを記載するEPTがルートVMMを記載するEPTと異なることを確実にしてよい。従って、ルートVMMが受諾(opt−in)すれば、ルートVMMは、この動作についてはある程度迂回されることができる。これは、たとえばEPT使用ならびにVMFUNCおよびネストにされたVMMをブートするためのブートストラップされたVM0(図1参照)の使用にもとづいてよい。
【0034】
実施形態は、ネストにされた第2のVMMと関連付けられる第2のLCPを第2のLCPMによって評価してよい。実施形態は、第2のLCPMによって第2のVMMの完全性測定を行い、第2のLCPによって測定を認証してよい。実施形態は、測定をTPMまたは他のハードウェア証明モジュールに含まれるPCRに拡張し、測定をPCRに拡張することにもとづいてログを更新してよい。
【0035】
実施形態は、第2のLCPMを保護されたメモリ(たとえばEPT)にロードし、第2のLCPMを実行してよく、第2のLCPMはルートVMM特権を有する。実施形態は、システムが第2のLCPに含まれるホワイトリストを第2のLCPMによって認証することを可能にしてよく、第2のLCPはVMMに固有であるがVMに固有ではない。実施形態は、第1のVMMと関連付けられる第1のLCPにもとづいて第1のVMMをブートしながら第2のLCPも認証してよい。さらに、実施形態は、第2のVMMのために特に構成されたわけではなく(例えばアーキテクチャ的に中立またはベンダー中立)、VMMとネストにされたVMMとの両方とインタフェース接続するように構成されたセキュアなインタフェースによって、第2のVMMのランチを認証してよい。
【0036】
実施形態は、多数の異なるシステム型において実装されてよい。次に図3を参照すると、本発明の実施形態によるシステムのブロック図が示される。マルチプロセッサシステム500は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続550によって結合された第1のプロセッサ570および第2のプロセッサ580を含む。プロセッサ570および580のそれぞれは、マルチコアプロセッサであってよい。用語「プロセッサ」は、レジスタおよび/またはメモリからの電子的なデータを処理してその電子的なデータをレジスタおよび/またはメモリに記憶されてよい他の電子的なデータに変換する任意のデバイスまたはデバイスの一部を指してよい。第1のプロセッサ570は、メモリコントローラハブ(MCH:memory controller hub)およびポイントツーポイント(P−P:point−to−point)インタフェースを含んでよい。同様に、第2のプロセッサ580は、MCHおよびP−Pインタフェースを含んでよい。MCHは、プロセッサをそれぞれのメモリ、すなわちメモリ532およびメモリ534と結合させてよい。メモリ532およびメモリ534は、それぞれのプロセッサに局所的に取り付けられたメインメモリ(たとえばダイナミックランダムアクセスメモリ(DRAM:dynamic random access memory))の一部であってよい。第1のプロセッサ570および第2のプロセッサ580は、P−P相互接続によってチップセット590にそれぞれ結合されてよい。チップセット590は、たとえばRSAアクセラレータ、乱数発生器、キー、証明書、PCR、スタティックRAM、フラッシュメモリ、モノトニックカウンタ、デジタルシグネチャーアルゴリズム等を含むTPMまたは暗号プロセッサを含んでよい。そのようなチップセットの一例に関する詳細は、少なくともhttp://www-intel-com/design/mobile/platform/downloads/Trusted_Platform_Module_White_Paper-pdfにおいて入手可能である。実施形態は、いずれか一種類のセキュリティエンジンまたは暗号プロセッサとともに機能することに限定されるわけではなく、その代わりに、さまざまなベンダーからのさまざまなアーキテクチャを有するさまざまな離散型および/または統合型セキュリティエンジンとともに機能してよい。チップセット590は、P−Pインタフェースを含んでよい。さらに、チップセット590は、インタフェースによって第1のバス516に結合されてよい。第1のバス516を第2のバス520に結合させるバスブリッジ518とともに、さまざまな入力/出力(I/O:input/output)デバイス514が第1のバス516に結合されてよい。たとえば一実施形態において、キーボード/マウス522、通信デバイス526、および、コード530を含んでよいディスクドライブまたは他のマスストレージデバイスのようなデータストレージユニット528、を含むさまざまなデバイスが第2のバス520に結合されてよい。さらに、オーディオI/O524が第2のバス520に結合されてよい。
【0037】
実施形態は、コードに実装されてよく、命令を記憶してある非一時的ストレージ媒体に記憶されてよい。命令は、命令を実行するようにシステムをプログラムするために用いられることができる。ストレージ媒体は、フロッピー(登録商標)ディスク、光ディスク、ソリッドステートドライブ(SSD:solid state drive)、読み取り専用コンパクトディスク(CD−ROM:compact disk read−only memory)、繰り返し書き込み可能コンパクトディスク(CD−RW:compact disk rewritable)、および光磁気ディスクを含む任意の種類のディスク、半導体デバイス、たとえば読み取り専用メモリ(ROM:read−only memory)、ランダムアクセスメモリ(RAM:random access memory)、たとえばダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM:static random access memory)、消去可能なプログラマブル読み取り専用メモリ(EPROM:erasable programmable read−only memory)、フラッシュメモリ、電気的に消去可能なプログラマブル読み取り専用メモリ(EEPROM:electrically erasable programmable read−only memory)、磁気カードまたは光カード、あるいは電子的な命令を記憶するのに適している任意の他の種類の媒体を含んでよいが、これに限定されるものではない。本発明の実施形態は、データ、たとえば命令、ファンクション、手続き(procedure)、データ構造、アプリケーションプログラム、構成セッティング、コード等への参照とともに本明細書に記載されてよい。データがマシンによってアクセスされると、マシンは、本明細書により詳しく記載されるように、タスクを実行し、抽象データ型を定義し、低レベルハードウェアコンテキストを規定し、および/または他の動作を実行することによって応答してよい。データは、揮発性および/または不揮発性データストレージに記憶されてよい。用語「コード」または「プログラム」は、アプリケーション、ドライバ、プロセス、ルーチン、メソッド、モジュール、およびサブプログラムを含む広い範囲のコンポーネントおよびコンストラクトを包含し、処理システムによって実行されると所望の1または複数の動作を実行する命令のいずれかの集まりを指してよい。さらに、代替実施形態は、開示された動作のすべてより数の少ない動作を用いるプロセス、追加の動作を用いるプロセス、同じ動作群を異なる順番で用いるプロセス、および本明細書に開示される個々の動作が組み合わされるか、再分割されるか、または他の変化を施されるプロセスを含んでよい。コンポーネントまたはモジュールは、望みに応じて組み合わされるかまたは分離され、デバイスの1つ以上の部分に配置されてよい。
【0038】
本発明を、限られた数の実施形態に関して記載してきたが、実施形態からの多数の変更形および変化形が当業者には自明である。添付の特許請求の範囲はそのようなすべての変更形および変化形を本発明の真の技術思想および適用範囲に属するとして包含するものとする。
本実施形態の例を下記の各項目として示す。
[項目1]
実行されるとシステムが、
第1の仮想マシンマネージャ(VMM)をランチすること、
第2のVMMのランチを認証すること、および、
前記第1のVMMの内部で前記第2のVMMをネストにすること、
ができるようにする命令を含むプログラム。
[項目2]
前記システムが、
第1の仮想マシン(VM)のランチを認証すること、および
前記第1のVMMおよび前記第2のVMMの1つを用いて前記第1のVMを管理すること、 ができるようにする命令を含む、項目1に記載のプログラム。
[項目3]
前記第1のVMMは、リエントラントでないセキュアなブートによってランチされるルートVMMである、項目1又は2に記載のプログラム。
[項目4]
前記第2のVMMの前記ランチを認証することは、(a)第2のランチコントロールポリシーモジュール(LCPM)を呼び出すことと、(b)ハードウェアセキュリティ証明モジュールを用いることとの両方を行いながら、前記第1のVMMを迂回することを含む、項目1から3のいずれか1項に記載のプログラム。
[項目5]
前記ハードウェアセキュリティ証明モジュールは、トラステッドプラットフォームモジュール(TPM)を含む、項目4に記載のプログラム。
[項目6]
前記システムが、前記第2のVMMと関連付けられる第2のランチコントロールポリシー(LCP)を第2のランチコントロールポリシーモジュール(LCPM)によって評価することができるようにする命令を含む、項目1から5のいずれか1項に記載のプログラム。
[項目7]
前記システムが、前記第2のLCPMによって前記第2のVMMの完全性測定を実行し、前記第2のLCPによって前記測定を認証することができるようにする命令を含む、項目6に記載のプログラム。
[項目8]
前記システムが、
前記測定をトラステッドプラットフォームモジュール(TPM)に含まれるプラットフォーム構成レジスタ(PCR)に拡張すること、および
前記測定を前記PCRに拡張することにもとづいてログを更新すること
ができるようにする命令を含む、項目7に記載のプログラム。
[項目9]
前記システムが、前記第2のLCPMを保護されたメモリにロードすること、および前記第2のLCPMを実行することができるようにする命令を含み、前記第2のLCPMはルートVMM特権を有する、項目6に記載のプログラム。
[項目10]
前記システムが、前記第2のLCPに含まれるホワイトリストを前記第2のLCPMによって認証することができるようにする命令を含み、前記第2のLCPはVMMに固有であるがVMに固有でない、項目6に記載のプログラム。
[項目11]
前記システムが、前記第1のVMMと関連付けられる第1のLCPにもとづいて前記第1のVMMをブートしながら、前記第2のLCPを認証することができるようにする命令を含む、項目6に記載のプログラム。
[項目12]
前記システムが、特に前記第2のVMMのために構成されてはおらずかつVMMとネストにされたVMMとの両方とインタフェース接続するように構成されたセキュアなインタフェースによって、前記第2のVMMの前記ランチを認証することができるようにする命令を含む、項目1から11のいずれか1項に記載のプログラム。
[項目13]
第1の仮想マシンマネージャ(VMM)をランチすること、
第2のVMMのランチを認証すること、および、
前記第1のVMMの内部で前記第2のVMMをネストにすること
を含む方法。
[項目14]
第1の仮想マシン(VM)のランチを認証すること、および
前記第1のVMMおよび前記第2のVMMの1つを用いて前記第1のVMを管理すること、
を含む、項目13に記載の方法。
[項目15]
前記第2のVMMの前記ランチを認証することは、(a)第2のランチコントロールポリシーモジュール(LCPM)を呼び出すことと、(b)ハードウェアセキュリティ証明モジュールを用いることとの両方を行いながら、前記第1のVMMを迂回することを含む、項目13又は14に記載の方法。
[項目16]
前記第2のVMMと関連付けられる第2のランチコントロールポリシー(LCP)を第2のランチコントロールポリシーモジュール(LCPM)によって評価することを含む、項目13から15のいずれか1項に記載の方法。
[項目17]
前記第2のLCPMによって前記第2のVMMの完全性測定を実行すること、および前記第2のLCPによって前記測定を認証することを含む、項目16に記載の方法。
[項目18]
メモリ、及び、
前記メモリに結合され、(a)第1の仮想マシンマネージャ(VMM)をランチし、(b)第2のVMMのランチを認証し、(c)前記第1のVMMの内部で前記第2のVMMをネストにするプロセッサ、
を含むシステム。
[項目19]
前記プロセッサは、
第1の仮想マシン(VM)のランチを認証し、
前記第1のVMMおよび前記第2のVMMの1つを用いて前記第1のVMを管理する、
項目18に記載のシステム。
[項目20]
前記プロセッサは、前記第2のVMMと関連付けられる前記第2のランチコントロールポリシー(LCP)を第2のランチコントロールポリシーモジュール(LCPM)によって評価する、項目18又は19に記載のシステム。
[項目21]
前記プロセッサは、前記第2のLCPMによって前記第2のVMMの完全性測定を実行し、前記第2のLCPによって前記測定を認証する、項目20に記載のシステム。
図1
図2
図3