(57)【特許請求の範囲】
【請求項１】
コンピューティング環境において、ホストに対する信頼を確立するための方法であって、
ホストアテステーションサービスが、物理マシン上に展開されたホストから、前記ホストが満たすある特徴の検証可能な指標を受けるステップと、
前記ある特徴の前記指標から、前記ホストがある要件を満たすことの判定を試みるステップと、
前記ホストが信頼実行環境（ＴＥＥ）を含むという要件を少なくとも満たすことを含む前記ある要件を前記ホストが満たす場合に、前記ホストアテステーションサービスが、前記ホストアテステーションサービスと信頼関係を有する１つまたは複数のエンティティに対する認証を行うために前記ホストが使用できる証明書を前記ホストに発行するステップと
を含み、前記証明書は、鍵を、前記ホストアテステーションサービスと信頼関係を有するキー分配サービスから、前記証明書が前記キー分配サービスに提供されることに応答して取得するために前記ホストが使用するように構成され、前記鍵は、遮蔽型ゲスト仮想マシンを復号化するために前記ホストが使用するように構成され、前記遮蔽型ゲスト仮想マシンは、仮想マシンマネージャーによって、ゲスト仮想マシンが前記ホスト上で実行可能となるように前記ホストに対するテナントの要求時に展開される、方法。
【請求項２】
請求項１に記載の方法であって、前記ある要件がさらに、前記ホストを実施する物理マシン上のＴＰＭ（信頼プラットフォームモジュール）に関連する要件を含む、方法。
【請求項３】
請求項１に記載の方法であって、前記ホストを実施する前記物理マシンが前記ある要件を検証可能な形で満たすことの判定に失敗した結果として、前記ホストが前記ある要件を満たさない旨を、前記仮想マシンマネージャーへ通知するステップをさらに含む方法。
【請求項４】
請求項１に記載の方法であって、前記ホストが前記ある要件を検証可能な形で満たすことの判定に失敗した結果として、前記ホストが遮蔽型ゲスト仮想マシンの展開に利用可能でない旨を、前記仮想マシンマネージャーへ通知するステップをさらに含む方法。
【請求項５】
請求項１に記載の方法であって、前記ある要件がさらに、前記ホストを実施する物理ホストマシンに、侵害されずに起動が発生したことを検証するための、適正かつ信頼に値するＵＥＦＩ（統一拡張ファームウェアインターフェース）報告が提供されるという要件を含む、方法。
【請求項６】
請求項１に記載の方法であって、前記ある要件がさらに、前記ホストが適正なＨＶＣＩ（ハイパーバイザー強制型コード整合性）ポリシー妥当性確認を含むという検証可能な指標が提供されるという要件を含む、方法。
【請求項７】
請求項１に記載の方法であって、前記ある要件がさらに、前記ホストが特定の地理的位置に所在するという要件を含む、方法。
【請求項８】
請求項１に記載の方法であって、前記ある要件がさらに、前記ホストがセキュアなネットワークに連結されるという要件を含む、方法。
【請求項９】
請求項１に記載の方法であって、前記ホストアテステーションサービスと、前記ホストが前記証明書の提示によってキーを取得できる前記キー分配サービスとの間で、信頼関係をつくるステップをさらに含む、方法。
【請求項１０】
請求項１に記載の方法であって、ファブリック管理システムを有する環境において前記ホストアテステーションサービスが実施される環境で実行され、前記ファブリック管理システムは、ホストオペレーティングシステム、ホスト構成、ＨＶＣＩホワイトリスト、ＨＶＣＩ取消リスト、ＵＥＦＩホワイトリストまたはＵＥＦＩ取消リストのうち少なくとも１つを管理するよう構成され、前記ファブリック管理システムの管理者の認証に使用されるものとは異なる認証および認可の一方または双方のサービスが、前記ホストアテステーションサービスの管理者の認証に使用される、方法。
【請求項１１】
請求項１に記載の方法であって、前記仮想マシンマネージャーを有する環境において前記ホストアテステーションサービスが実施される環境で実行され、前記仮想マシンマネージャーは、遮蔽型ゲスト仮想マシンを前記ホストに展開するように構成されるが、前記仮想マシンマネージャーは、前記遮蔽型ゲスト仮想マシンを復号化できない、方法。
【請求項１２】
請求項１１に記載の方法であって、前記仮想マシンマネージャーの管理者の認証に使用されるものとは異なる認証サービスが、前記ホストアテステーションサービスの管理者の認証に使用される環境で実行される方法。
【請求項１３】
コンピューティング環境において、ホストに対する信頼を確立するための方法であって、
物理マシンを用いて実施されたホストが、前記ホストのある特徴の検証可能な指標をホストアテステーションサービスに送るステップと、
ある特徴の前記指標を評価する前記ホストアテステーションサービスが判定した、前記ホストが信頼実行環境（ＴＥＥ）を含むという要件を少なくとも満たすことを含むある要件を前記ホストが満たすことの結果として、前記ホストが、前記ホストアテステーションサービスから、前記ホストアテステーションサービスと信頼関係を有する１つまたは複数のエンティティに対する認証を行うために前記ホストが使用できる証明書を受けるステップと、
前記ホストが、鍵を、キー分配サービスから、前記証明書を前記キー分配サービスに提供することに応答して取得するステップであって、前記キー分配サービスは、前記ホストアテステーションサービスを、前記キー分配サービスが前記ホストアテステーションサービスによって署名された証明書を受け入れるという点で信頼する、ステップと、
前記ホストが、前記鍵を使用して、仮想マシンマネージャーによって展開される遮蔽型ゲスト仮想マシンを、ゲスト仮想マシンが前記ホスト上で実行可能となるように前記ホストに対するテナントの要求時に復号化するステップと
を含む方法。
【請求項１４】
請求項１３に記載の方法であって、前記ある要件がさらに、
（ａ）前記ホストを実施する前記物理マシン上のＴＰＭ（信頼プラットフォームモジュール）に関連する要件、
（ｂ）前記ホストが実施される前記物理マシンに、適正かつ信頼に値するＵＥＦＩ（統一拡張ファームウェアインターフェース）報告が提供されるという要件、
（ｃ）前記ホストが適正なＨＶＣＩ（ハイパーバイザー強制型コード整合性）ポリシー妥当性確認を含むという検証可能な指標が提供されるという要件、
（ｄ）前記ホストが特定の地理的位置に所在するという要件、および
（ｅ）前記ホストがセキュアなネットワークに連結されるという要件
を含む群から選択される要件を含む、方法。
【請求項１５】
請求項１３に記載の方法であって、
前記ホストが、前記ゲスト仮想マシンの前記展開のセキュリティ上の詳細に関する暗号化メッセージを作成するステップであって、前記暗号化メッセージは、前記仮想マシンマネージャーによる復号化が不可能であるが、前記テナントによる復号化が可能である、ステップと、
前記ホストが、前記暗号化メッセージを前記仮想マシンマネージャーに送るステップであって、前記暗号化メッセージは、前記仮想マシンマネージャーによる前記暗号化メッセージの読み取りを可能とすることなく前記テナントに転送可能である、ステップと
を含む方法。
【請求項１６】
ホストが実施される物理マシンを含むコンピューティングシステムであって、前記ホストは、前記ホストに対する信頼を確立するための方法を実行し、前記方法は、
前記ホストが、前記ホストのある特徴の検証可能な指標をホストアテステーションサービスに送るステップと、
ある特徴の前記指標を評価する前記ホストアテステーションサービスが判定した、前記ホストが信頼実行環境（ＴＥＥ）を含むという要件を少なくとも満たすことを含むある要件を前記ホストが満たすことの結果として、前記ホストが、前記ホストアテステーションサービスから、前記ホストアテステーションサービスと信頼関係を有する１つまたは複数のエンティティに対する認証を行うために前記ホストが使用できる証明書を受けるステップと、
前記ホストが、鍵を、キー分配サービスから、前記証明書を前記キー分配サービスに提供することに応答して取得するステップであって、前記キー分配サービスは、前記ホストアテステーションサービスを、前記キー分配サービスが前記ホストアテステーションサービスによって署名された証明書を受け入れるという点で信頼する、ステップと、
前記ホストが、前記鍵を使用して、仮想マシンマネージャーによって展開される遮蔽型ゲスト仮想マシンを、ゲスト仮想マシンが前記ホスト上で実行可能となるように前記ホストに対するテナントの要求時に復号化するステップと
を含む、コンピューティングシステム。
【請求項１７】
請求項１６に記載のコンピューティングシステムであって、前記方法は、
前記ホストが、前記ゲスト仮想マシンの前記展開のセキュリティ上の詳細に関する暗号化メッセージを作成するステップであって、前記暗号化メッセージは、前記仮想マシンマネージャーによる復号化が不可能であるが、前記テナントによる復号化が可能である、ステップと、
前記ホストが、前記暗号化メッセージを前記仮想マシンマネージャーに送るステップであって、前記暗号化メッセージは、前記仮想マシンマネージャーによる前記暗号化メッセージの読み取りを可能とすることなく前記テナントに転送可能である、ステップと
を含む、コンピューティングシステム。
【請求項１８】
請求項１６に記載のコンピューティングシステムであって、前記ある要件が、前記ホストを実施する前記物理マシン上のＴＰＭ（信頼プラットフォームモジュール）に関連する要件を含む、コンピューティングシステム。
【請求項１９】
請求項１６に記載のコンピューティングシステムであって、前記ある要件が、前記ホストが実施される前記物理マシンに、適正かつ信頼に値するＵＥＦＩ（統一拡張ファームウェアインターフェース）報告が提供されるという要件を含む、コンピューティングシステム。
【請求項２０】
請求項１６に記載のコンピューティングシステムであって、前記ある要件が、前記ホストが適正なＨＶＣＩ（ハイパーバイザー強制型コード整合性）ポリシー妥当性確認を含むという検証可能な指標が提供されるという要件を含む、コンピューティングシステム。
【請求項２１】
請求項１６に記載のコンピューティングシステムであって、前記ある要件が、前記ホストが特定の地理的位置に所在するという要件を含む、コンピューティングシステム。
【請求項２２】
請求項１６に記載のコンピューティングシステムであって、前記ある要件が、前記ホストがセキュアなネットワークに連結されるという要件を含む、コンピューティングシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]コンピューティングシステムの相互接続は、いわゆる「クラウド」コンピューティングシステムなど、分散型コンピューティングシステムを推進してきた。この説明において、「クラウドコンピューティング」とは、管理労力またはサービスプロバイダーとの相互作用を軽減した状態で準備および解放し得る、設定変更可能なコンピューティングリソースの共有プール（例：ネットワーク、サーバー、ストレージ、アプリケーション、サービスなど）への、普遍的で便利なオンデマンドネットワークアクセスを可能にするシステムまたはリソースを指すものと考えられる。クラウドモデルは様々な特徴（例：オンデマンドセルフサービス、広域ネットワークアクセス、リソースプーリング、高速伸縮性、従量制サービスなど）、サービスモデル（例：サービスとしてのソフトウェア（「ＳａａＳ」）、サービスとしてのプラットフォーム（「ＰａａＳ」）、サービスとしてのインフラストラクチャ（「ＩａａＳ」））、および展開モデル（例：プライベートクラウド、コミュニティクラウド、パブリッククラウド、ハイブリッドクラウドなど）で構成され得る。
【０００２】
[0002]クラウドおよびリモートベースのサービスアプリケーションが普及している。そのようなアプリケーションはクラウドなどパブリックおよびプライベートの遠隔システム上でホストされ、また通常、クライアントと連絡を取り合うための一連のウェブベースサービスを提供する。
【０００３】
[0003]法人用コンピューティングシステムは、金銭的損害、知的財産流出または破壊活動に繋がる侵害のリスクの増大に曝されている。特に、仮想マシン内で稼働するデータセンター内のワークロードに対し、それらの稼働基盤であるホスティングファブリック（仮想化ホスト、ストレージおよびネットワーキングシステム）や、ファブリックおよび仮想マシンの管理に使用される管理システムから脅威が発生し得る。
【０００４】
[0004]この脅威は、パブリッククラウドまたはサービスプロバイダーの側でワークロードを運用するテナントにとって関連性があり、つまり、テナントはサービスプロバイダーを機関として信頼し得る一方、その信頼をサービスプロバイダーの職員にまで拡大することを望まず、何故ならそれら職員が個人的な犯罪の動機を背景に悪意を抱いているか、あるいは外部攻撃者から賄賂を受け取っている、または徴用されている人物である可能性がある、あるいはそれら職員の認証情報（ｃｒｅｄｅｎｔｉａｌｓ）が外部攻撃者により、「フィッシング」を含む多様な種類の攻撃のうち１つを使用して盗まれている可能性があるからである。一方、それは企業の内部運用にとっても関連性があり、つまり、企業独自のＩＴ担当職員も同じように自分の認証情報を盗まれてしまっているか、または他の理由により悪意を抱いている可能性がある。現在の慣行では、ホスティングファブリックを運用する特権を有するＩＴ担当職員はすべてのワークロードに対して幅広く、ほぼ無限にアクセスできる。
【０００５】
[0005]こうした脅威の増大は、資本および運用コストの低減や、大規模で可用性の高い地球規模の到達範囲を目的に、最新のコンピューティングにおいて自動化を活用する場合に発生する。しかし、この自動化や規模拡大は、攻撃者が自動化技法を利用することや、多数の正当な行為に自分の痕跡を紛れ込ませることを可能にすることにより、リスクも増大させる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
[0006]したがって、仮想化されたワークロードとファブリックの双方において自動化された管理ワークフローを可能にする一方で、ファブリックを運用するＩＴ担当職員からワークロードを保護することが、有用であると考えられる。課題としては、現在の慣行において、仮想マシン管理（ＶＭＭ）システムが仮想マシン（ＶＭ）の準備および管理に能動的役割を果たし、また同様にファブリック管理（ＦＭ）システムがファブリックの準備および管理に能動的役割を果たすものの、どちらかを「信頼コンピューティング基盤」、すなわち信頼できるコンピューティングが構築される基礎の一部にすると問題が生じるおそれがあり、これは少なくとも次に挙げる２つの理由、すなわち管理システムが大規模かつ複雑であるため、典型的にセキュアな状態にする、またはセキュアであることを証明することができないこと、およびテナントがサービスプロバイダー側のＶＭＭおよびＦＭの運用担当職員にまで信頼を拡大することを望まないということによるものである。
【０００７】
[0007]本明細書における特許請求対象事項は、何らかの不利点を解決する実施形態、あるいは前述のような環境に限り機能する実施形態に限定されるわけではない。むしろ、この背景情報は、本明細書に記載の一部の実施形態が実践され得る１つの模範的技術分野を例示する目的で提示されるに過ぎない。
【課題を解決するための手段】
【０００８】
[0008]本明細書において例示されるある実施形態は、本明細書において例示される信頼エンティティ上で暗号化エンティティを展開する方法を含む。１つの方法は、信頼エンティティ側にて、一定の（ｃｅｒｔａｉｎ；ある）要件を満たす信頼エンティティの一定の（ｃｅｒｔａｉｎ；ある）特徴について検証可能な指標を提供する結果として、ある権限者から該信頼エンティティが信頼される場合、非信頼エンティティから暗号化エンティティを受け取ることを含む。非信頼エンティティは、該権限者から信頼されない。信頼エンティティ側にて、キー分配サービスからキーを取得するために該権限者からの信頼認証情報が使用される。キー分配サービスは権限者の一部であってもよく、あるいは権限者を信頼するものであってもよい。キーは、暗号化エンティティが信頼エンティティ側にて展開されることを可能にするために、暗号化エンティティの暗号解読（復号）に使用される。
【０００９】
[0009]この「発明の概要」は、下記の「発明を実施するための形態」で詳述される一連の概念を簡略化された形で紹介する目的で提示される。この「発明の概要」は、特許請求対象事項の主要な特徴または本質的特徴を特定することを意図するものではなく、また特許請求対象事項の範囲を判断する際の支援手段として使用されることも意図していない。
【００１０】
[0010]付加的な特徴および優位性は後述の説明に記載され、また部分的に説明から明白となるか、または本明細書に記載の教示の実践によって学習され得る。本発明の特徴および優位性は、添付の請求項において特に指摘される機器および組み合わせを手段として実現および獲得され得る。本発明の特徴は、後述の説明および添付の請求項から、より全面的に明らかとなるか、または後述する通り、本発明の実践によって学習され得る。
【００１１】
[0011]上記および他の優位性や特徴を獲得可能な方法を記述するため、上記にて簡潔に記載の対象事項に関する、より詳しい記述が、添付の図面において例示される特定の実施形態を参照することにより表現される。これらの図面は典型的な実施形態だけを描写するものであるため、範囲を制限するものと解釈してはならないことを理解しつつ、実施形態は付加的な特異性および詳細と併せて、下記の添付図面の使用を通じて記述および説明される。
【図面の簡単な説明】
【００１２】
【図１】[0012]セキュリティデバイスに連結された処理装置を例示する図である。
【図２】[0013]本明細書に記載の対象事項の態様に従って構成されるシステムの模範的コンポーネントを全般的に表わすブロック図である。
【図３】[0014]１つまたは複数の実施形態に従って本明細書において論じられる技法を実装するコンピューティングデバイスの一例を例示するブロック図である。
【図４】[0015]１つまたは複数の実施形態に従う多重仮想信頼レベルの一例を例示する図である。
【図５】[0016]１つまたは複数の実施形態に従う多重仮想信頼レベルを実装するシステムの一例を例示する図である。
【図６】[0017]１つまたは複数の実施形態に従って仮想マシン向けの仮想セキュアモードを有効化するプロセスの一例を例示するフローチャートである。
【図７】[0018]ホストに対する信頼を確立する方法を例示するフローチャートである。
【図８】[0019]ホストに対する信頼を確立する別の方法を例示するフローチャートである。
【図９】[0020]暗号化エンティティを信頼エンティティ上で展開する別の方法を例示するフローチャートである。
【発明を実施するための形態】
【００１３】
[0021]本発明の実施形態は、展開および移行など、仮想マシン（ＶＭ）上での管理動作の自動化に使用されるパターンを実装し得る。特に、実施形態はホストが一定のポリシー要件を満たすことを判定し得る。ホストが一定のポリシー要件を満たす場合、証明書がホスト宛に発行され得、ホストはこの証明書を、様々な展開活動を実施するために使用し得る。特に、要件のうち少なくとも１つは、ホストが信頼実行環境（ＴＥＥ）を含むことであってもよい。様々な異なるＴＥＥが併用または選択的に使用され得る。一実施形態において、これはホストＶＭのカーネル内で稼働する機能として実装され得る。別の実施形態ではそれをハイパーバイザー内で稼働することができる。他の実施形態ではそれは、プロセッサーのメモリーマッピング能力を使用するハイパーバイザーによって強制される別個のアドレス空間として実装されることができる。他の実施形態ではそれは、プロセッサーによって強制される別個の実行領域として実装されることができる（例：ＡＲＭアーキテクチャーのＴｒｕｓｔＺｏｎｅ、カリフォルニア州サンタクララのＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎが記述した新たなＳＧＸ能力、または信頼プラットフォームモジュール（ＴＰＭ）技術など）。これらの異なる実装が、暗号化動作、認証情報保存、コードまたはデータの整合性の妥当性確認、そして秘密保護を実行する能力など、類似する機能性を提供し得る。ただし、それらは提供するセキュリティ特性が異なっていてもよい。一部の実施形態は、本明細書において仮想セキュアモード（ＶＳＭ）と呼ばれる、以下にて詳述される機能性の使用により、信頼実行環境（ＴＥＥ）を含み得る。
【００１４】
[0022]上記にて例示のパターンは、セキュアネットワーキング向けのＩＰｓｅｃ設定、ＶＭより小さい軽量コンテナ内でのワークロード稼働など、セキュアな展開または構成または移行に応じて変わる、他の多数のシナリオに合わせて一般化され得る。
【００１５】
[0023]次に、図面を参考に詳細を例示する。
[0024]図１では、処理装置１２０がハードウェアセキュリティデバイス１２２に接続され得る。セキュリティデバイス１２２は、コンピューター１１０の様々な態様の保安に使用され得る暗号化キーを生成および安全に保存する能力を有するものであってもよい。一実施形態において、セキュリティデバイス１２２は信頼プラットフォームモジュール（ＴＰＭ）セキュリティデバイス、または同種のものを含み得る。
【００１６】
[0025]本書全体を通じ、信頼プラットフォームモジュール（ＴＰＭ）という用語が頻繁に使用される。ＴＰＭは当業者に十分理解されている。ただし、ＴＰＭという用語の使用は、本明細書に記載の対象事項の態様を、ＴＰＭの実装に関する１つまたは複数のバージョンの標準に適合するデバイスだけに限定することを意図するものではない。むしろ、この用語は、本明細書に記載の対象事項の態様に従って使用され得るセキュリティコンポーネントの一例として使用される。
【００１７】
[0026]他の実施形態において、セキュリティ機能性を提供する他のセキュリティコンポーネントも、本明細書に記載の対象事項の態様の精神または範囲から逸脱することなく、使用され得る。様々なセキュリティデバイスが、以下のような特徴を有し得る。
【００１８】
[0027]１．保護メモリー（多数のＴＰＭアプリケーションにおいて「遮蔽された位置」と呼ばれる）。セキュリティデバイスは、該セキュリティデバイスからのみ書き込むことができるメモリーを有し得る。このメモリーは、測定結果の保存、封印および封印解除を、他の暗号化機能および他の様々な機能向けに行うために使用され得る。
【００１９】
[0028]２．セキュリティデバイスの識別、および他のデバイスでは暗号解除できない暗号化ストレージの提供のための手段。例えば、セキュリティデバイスは、該デバイスだけが知り、該デバイスを他のデバイスと区別する、秘密を含み得る。
【００２０】
[0029]３．アテステーション（ａｔｔｅｓｔａｔｉｏｎ；認証）を実施する手段。セキュリティデバイスは、該セキュリティデバイスによって制御される任意の資産に関する信頼メッセージの作成に使用され得る、プロセッサーまたは他の回路を有し得る。セキュリティデバイスによって制御される模範的資産の例として、暗号化オブジェクト、封印済みブロブ、該セキュリティデバイスが関連付けられるプラットフォームの状態、または同種のものが挙げられ得る。
【００２１】
[0030]セキュリティデバイスは別個の孤立コンポーネントとして捉えられることが多いが、これは要件ではない。例えば、一実装において、プロセッサーと連結されたファームウェアがセキュリティデバイスとして使用され得る。
【００２２】
[0031]本明細書においてＴＰＭという用語が使用される場合、それは他のセキュリティデバイス（本明細書において言及されるものを含む）の選択的実装も、本明細書に記載の対象事項の態様の精神または範囲から逸脱することなく使用され得るという意味であると理解されなければならない。
【００２３】
[0032]仮想マシンを使用する場合、使用者は仮想マシンおよびホスティング環境の整合性が保証されることを希望し得る。図２は、本明細書に記載の対象事項の態様に従って構成されるシステムの模範的コンポーネントを全般的に表わすブロック図である。図２にて例示のコンポーネントは模範的なものであり、必要とされ得るコンポーネントまたは含まれ得るコンポーネントをすべて網羅するという意味ではない。さらに、他の実施形態において、コンポーネントの数は、本明細書に記載の対象事項の態様の精神または範囲から逸脱しなければ、異なっていてもよい。一部の実施形態において、図２と併せて記載のコンポーネントが、本明細書に記載の対象事項の態様の精神または範囲から逸脱することなく、他のコンポーネント（記載か不記載かのいずれを問わない）に含まれ得るか、またはサブコンポーネント内に配置され得る。一部の実施形態において、図２と併せて記載のコンポーネントおよび／または機能が、複数のデバイスにまたがって分配され得る。
【００２４】
[0033]図２を参考に、システム２００はホスト２３０、キー分配サービス２３５、および他のコンポーネント（不記載）を含み得る。ホスト２３０は、ＶＨＤ２０５〜２０７と関連付けられ得る１つまたは複数の仮想マシン２０８〜２１０のホスティングに適するものであってもよい。ホスト２３０は１つまたは複数の仮想マシン（例：ゲスト仮想マシン２０８〜２１０）をホストし得る。仮想マシンは１つまたは複数のＶＨＤ（例：ＶＨＤ２０５〜２０７のうち１つまたは複数）と関連付けられ得る。ゲスト仮想マシン２０８〜２１０は、オペレーティングシステム機能性をホスト２３０に提供する「ルート」ＶＭ２３１とは対照的に、複数のホスト間で移行し得る。ホスト２３０は、ハイパーバイザー２１５と、孤立状態の信頼プラットフォームモジュール２６１または他のセキュリティデバイスとを含み得る。
【００２５】
[0034]ハイパーバイザー２１５は、仮想マシン２０８〜２１０およびルートＶＭ２３１が動作し得る仮想環境を作成するコンポーネントである。ハイパーバイザー２１５は、ソフトウェア、ファームウェア、ハードウェア、これらのうち２つ以上の組み合わせ、または同種のものに実装され得る。ハイパーバイザー２１５は、ホスト２３０のハードウェア上で直接実行し得るか、またはホスト２３０上でホストされるオペレーティングシステム環境内で実行し得る。
【００２６】
[0035]一実装において、ハイパーバイザー２１５は１つまたは複数の仮想ＴＰＭ（ｖＴＰＭ）２２０〜２２２を管理し得る。各ｖＴＰＭは、１つの仮想マシン（例：仮想マシン２０８〜２１０のうち１つ）と関連付けられ得る。この実装において、ハイパーバイザー２１５は、ハイパーバイザー２１５外のコンポーネントに対しては利用可能でないハイパーバイザー２１５のセキュアなメモリー内に、ｖＴＰＭを表わすデータを保存し得る。攻撃者は、ｖＴＰＭへのアクセスを得るには、ハイパーバイザー２１５自体を制御できる状態となる必要があると考えられる。別の実装において、ホスト２３０はｖＴＰＭ２２０〜２２２を管理し得る。この実装において、管理者特権を有する使用者およびプロセスは、ｖＴＰＭ２２０〜２２２へのアクセス権を有し得る。さらに別の実装において、ホスト２３０外のサービスが、ｖＴＰＭ２２０〜２２２を管理し得る。さらに別の実装において、図２では幻影として記載されているｖＴＰＭによって例示されている通り、ｖＴＰＭはルートＶＭ２３１のＶＳＭ２６５内に実装され得る。
【００２７】
[0036]一実装において、キー分配サービス２３５は、ホスト２３０外でホストされ得る。
[0037]ｖＴＰＭの暗号解読に使用可能なキーは、様々な形で分配され得る。例えば、一実装において、キーは、ホストの状態がポリシーを満たすことが判明した後に随時、分配され得る。例えば、ポリシーを満たす状態にホスト２３０を設定した後、ＴＰＭの１つまたは複数のレジスタの状態がＴＰＭ２６１によって署名され、そしてキー分配サービス２３５へ送られ得る。これを受信した後、キー分配サービス２３５は即座に、またはその後随時、ホスト２３０がポリシーを満たす状態にある場合に限りホスト２３０がキーの暗号を解読し得るという形で、暗号化またはラップされたキーをホスト２３０へ送信し得る。この形でのキー暗号化は、あるホストのＴＰＭのパブリックキーによるキーの暗号化のほか、（該ホストのＴＰＭによる測定に応じた）ポリシーを満たす状態への封印化も関係し得る。
【００２８】
[0038]別の実装において、キー分配サービス２３５は、キーを提供する前に、キーがリクエストされるまで待機し得る。この実装において、キー分配サービス２３５は、キーを提供する前に、リクエストを出したマシンの状態を検証し得る。キーがポリシーを満たせば、キーはキー分配サービス２３５によって提供され得る。そうでない場合、キー分配サービス２３５はリクエスターへのキー提供を保留し得る。
【００２９】
[0039]上記のキー分配例は、単に模範的なものに過ぎない。本明細書における教示に基づき、当業者であれば、本明細書に記載の対象事項の態様の精神または範囲から逸脱することなく使用され得る、他のキー分配手段も認識し得る。
【００３０】
[0040]上記の教示は、セキュアなマシンであるがセキュリティデバイスを有していないマシン、または旧型のセキュリティデバイスを有するマシンに適用され得る。例えば、ＴＰＭを全く有しないマシンが存在し得る。他にも、ＴＰＭを有するが、そのＴＰＭが古いＴＰＭ標準に従って実装され得るマシンも存在し得る。一部のオペレーティングシステムは、一定以上のバージョンに従って実装されたＴＰＭにアクセスできない限り、実行不可能な場合がある。
【００３１】
[0041]上記のようなプラットフォームを是正するため、ハイパーバイザーを使用してプラットフォームを設定することができる。その場合、ハイパーバイザーを使用して、オペレーティングシステムを仮想環境内で実行することができる。オペレーティングシステムがＴＰＭへのアクセスをリクエストする場合、ハイパーバイザーは適切なバージョンの仮想ＴＰＭを供給し得る。ハイパーバイザーは、該ハイパーバイザーに限り仮想ＴＰＭの保護メモリーを変更できるよう、仮想ＴＰＭをセキュアな状態にし得る。オペレーティングシステムに関する範囲で言えば、仮想ＴＰＭは孤立状態の物理的ＴＰＭのように見える。
【００３２】
[0042]さらに、仮想ＴＰＭの作成に使用される種となる秘密は、キーボードまたは他の入力デバイス経由で入力され、そしてＵＳＢまたはその他、種となる秘密の使用後に接続解除される外部ストレージデバイスまたは同種のものから読み取られ得る。
【００３３】
[0043]マシンをセキュアな状態にするための上記の方法の１つの優位性は、マシンの高速ハードウェア（例：ＣＰＵ）を使用してｖＴＰＭの機能を遂行させることができるという点にある。これはマシンの暗号化機能を大幅に高速化し得る。
【００３４】
[0044]旧バージョンのＴＰＭがマシン上で利用可能な状態である場合、この旧バージョンのＴＰＭを使用して、マシンはｖＴＰＭキーへのアクセスを得ることを許可される状態であるという証拠を提供し得る。これは新バージョンのＴＰＭをマシン上に有し、この新バージョンのＴＰＭを使用してｖＴＰＭキーへのアクセスを得ることに比べると、理想的とは言えないが、非ＴＰＭソリューションよりは良いと考えられる。
【００３５】
[0045]次に、一連のＶＭ２０８、２０９および２１０を有し、既にデータセンター環境内に存在する、初期状況を考察する。暗号化用キーは各々、仮想信頼プラットフォームモジュール（ｖＴＰＭ）２２０、２２１および２２２によって保護される。
【００３６】
[0046]仮想マシン２０８〜２１０は、データセンターを介して１つまたは複数のテナントへ提供され得る。テナントは、仮想マシン２０８〜２１０のうち１つまたは複数に関連付けられ得る。遮蔽型ＶＭはデータセンターのストレージシステム２５０内に保存されるが、ここで考察する脅威モデルの下ではテナントがストレージシステム２５０のアクセス制御機構を信頼せず、何故なら管理者特権を有するサービスプロバイダー職員がこれらの制御を迂回し得るからである。
【００３７】
[0047]テナントの例として、仮想マシンのうち１つまたは複数へのアクセス権を有する使用者、企業または他のエンティティが挙げられる。マルチテナント環境における「テナント」は、ＶＭ向けに通常想定される通り、別々の企業であってもよい。一方、テナントは単一企業内の複数部門、または複数の使用者、または別々のアプリケーションであってもよいが、いかなる種類の区分も他の区分と区別される状態に保たれるべきである。一部の事例において、企業がそのようなコンテナにおける比較的弱い隔離を、企業内部の使用者、部門およびアプリケーションの運用を許可するが、他の、潜在的に敵対するエンティティからの保護を目的に、より強力なＶＭ隔離を使用することによって管理し得る。
【００３８】
[0048]一シナリオにおいて、ＶＭ２０８、２０９および２１０はファブリック内の複数のホスト２３０のうち１つへと展開される。ここで例示される実施形態において、「ホスト」は仮想化プラットフォームを指す。ホストは、例示される一部の例において、ハードウェア（サーバー２５１として例示）上で展開されるハイパーバイザー２１５に加え、ハイパーバイザー２１５上で展開されるホストＶＭ２３１をも含む。ただし、ホストは他の形でも実装され得るという点が理解されるべきである。例えば、時々、ホストＶＭを有していないハイパーバイザー２１５内にホストが実装されることもあり得る。したがって、本明細書において使用される「ホスト」という用語は、構築され得る形態の如何を問わず、単に仮想化プラットフォームを指す。展開措置は、ＶＭＭ２５３で表わされるセルフサービス管理ポータルを使用するテナントか、またはプログラミングインターフェース経由で行動するテナントか、または別のインターフェースによって講じられ得る。このシナリオの別の変形において、展開措置は、テナントが指定するスケジュールに基づく展開など、ＶＭＭ２５３の自動化機能によって、またはホスト障害への対応としてのフェイルオーバー動作によって講じられ得る。このシナリオの別の変形において、展開措置は、サービスプロバイダーの運用担当職員により、ホスト保守またはリソース配分など運用業務を円滑化するために講じられ得る。ＶＭ２０８、２０９および２１０の保護は、措置の発端である行為者の身元に対する信頼に基づくわけではなく、何故ならシステムはサービスプロバイダーの運用担当職員による措置、または自動化されたＦＭ２５４による措置を許可し、さらにはテナントにより開始された措置の場合でさえ、悪意を抱く職員が傍受（ｉｎｔｅｒｃｅｐｔｉｎｇ）および侵害を行う可能性、または係る措置を偽装する可能性があるからである。
【００３９】
[0049]遮蔽型ＶＭがホスト上で展開されると、図２にて例示のＶＭ２０８、２０９および２１０のうち、斜線が描かれていないものによって例示される通り、ホストが暗号を解読する。典型的なシナリオにおいて、ＶＭの仮想ハードドライブ（ＶＨＤ）は、例えばワシントン州レドモンドのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なＭｉｃｒｏｓｏｆｔのＢｉｔＬｏｃｋｅｒ機構を使用して暗号化され、そして上記にて全般的に論じられている通り、仮想ＴＰＭ（例：ｖＴＰＭ２２０、２２１および２２２）により、暗号化された物理的ハードドライブが物理的ＴＰＭによってキーを保護されるのと概ね同じ形で、暗号化キーを保護される。物理的事例において、ハードドライブおよび物理的ＴＰＭはいずれも同じ物理的コンピューターに属し、そして静的に有効化され、また物理的マシン上における各々の物理的コロケーションに基づいて相互に信頼し合うが、任意の物理的マシン上で展開され得る仮想マシンの場合、仮想ＴＰＭは、それ自体が暗号化されるソフトウェアおよびデータの構成である。したがって、遮蔽型ＶＭの暗号解読はホスト２３０によるｖＴＰＭ２２０、２２１および２２２の暗号解読から始まり、そしてそこから、ゲストＶＭが測定をｖＴＰＭへと拡大して、データ暗号解読プロセスを開始するためのキーを回収する。それを実行するため、ホストはｖＴＰＭ２２０、２２１および２２２を解錠するためのキーを回収する必要がある。この場合、ホストは遮蔽型ｖＴＰＭデータの暗号を解読して、ｖＴＰＭの実行を有効化する。ＶＭのＴＰＭ（ホストから露呈されるｖＴＰＭ）はＶＭ内のコードにより、データの暗号解読のために使用される。
【００４０】
[0050]本明細書において使用される「仮想ハードドライブ」という用語は、単に模範的なものに過ぎない。他の選択肢において、仮想フロッピー、仮想ソリッドステートストレージなど他の仮想ストレージデバイス、または他の仮想読み書き媒体、仮想ＣＤ  ＲＯＭ、ＤＶＤ、または他の仮想媒体を、本明細書に記載の対象事項の態様の精神または範囲から逸脱しない範囲で代用してもよい。「仮想ストレージデバイス」という用語は、例えば上記のものを含む任意の種類の仮想ストレージデバイスを対象に含める意味で使用される。
【００４１】
[0051]仮想ストレージデバイスは、ハイパーバイザー２１５による使用を意図されるメタデータを含むか、または係るメタデータに関連付けられ得る。一部の実装において（以下にて詳述）、このメタデータは隠され、ハイパーバイザー２１５によってホストされる仮想マシンから見えない状態であってもよい。このビューは、ハイパーバイザー２１５による使用を意図されるメタデータを除外する。これらの実装において、ｖＴＰＭを使用する仮想マシンは、ビュー内に存在する要素に限り暗号化または暗号解読し得る。
【００４２】
[0052]他の実装において（以下にて詳述）、ｖＴＰＭが存在しない場合、ハイパーバイザーによる使用を意図されるメタデータを含む仮想ストレージデバイス全体が暗号化され得る。これらの実装において、キー分配サービスからキーを取得した後、ハイパーバイザーは、ハイパーバイザーによる使用を意図されるメタデータを含む仮想ストレージデバイス全体の暗号を解読し得る。
【００４３】
[0053]図２に戻り、システム２００はパブリッククラウド内またはプライベートクラウド内でホストされ得る。クラウドは、計算、ソフトウェア、データアクセス、ストレージおよび他のリソースが何らかのネットワークに接続されたエンティティにより提供され得、使用者においてはそれらのリソースを提供する計算インフラストラクチャの所在または他の詳細を知る必要がない、という発想に基づく用語である。
【００４４】
[0054]テナントは自らの仮想マシンに対し、他のテナント、クラウドホスティング運用者、攻撃者または他のエンティティがアクセスを得ることを望まない場合がある。またテナントは、テナントの仮想マシンをホストしているホストが一定のポリシー（例：ホストの構成がテナントによって定義された一連の１つまたは複数の状態にあること）を満たすという保証をクラウドホスティング運用者から得ることも希望し得る。
【００４５】
[0055]ポリシーが満たされることを確保するため、一実装において、テナントは仮想マシン２０８、２０９および２１０各々に関連付けられた仮想ハードドライブ２０５、２０６および２０７の全部または一部が秘密キーによって暗号化されることを要求し得る。暗号化された仮想ハードドライブは、秘密キーが既知である場合に限り、非暗号化され得る。関連付けられた仮想ハードドライブが存在しないと、仮想マシンは実行不能となり得る。
【００４６】
[0056]ポリシーに関して、本明細書に記載の動作は、ポリシーという用語が使用されるか否かを問わず、１つまたは複数のポリシーに適用され得ることが理解されなければならない。例えば、封印されたキーは、ホストが一連の許容可能なポリシーのうちいずれかに適合する場合（あるいは一部の事例においてホストがポリシーのすべてまたは一定のサブセットに適合する場合）、封印解除され得る。同様に、ホストが一連の許容可能なポリシーのうちいずれかを満たすという証拠をハイパーバイザーが提供する場合（あるいはホストの状態がポリシーの全部または一定のサブセットを満たす場合）、キー分配サービスはｖＴＰＭにアクセスするためのキーを提供し得る。例えば、ハイパーバイザーはホストのＴＰＭによってホスト状態のアテステーションを提供することにより、この証拠を提供し得る。一部の実施形態において、実装され得るそのようなポリシーの一例として、ＶＳＭ２６５など、ホストにおけるセキュアなサブシステムを使用してホストが一定の証明を行うよう指定するポリシー、あるいはホストにおけるセキュアなサブシステムを使用してホストが処理を実行する能力があることを指定するポリシーが挙げられる。前述の通り、ＶＳＭに関する詳細情報が後述される。
【００４７】
[0057]一実装において、ＶＨＤの暗号解読に使用され得る秘密キーは、キー分配サービス２３５によって提供されるキーと同じであってもよい。この実装の場合、ｖＴＰＭ２２０〜２２２は必要とされなくてもよい。秘密キーがキー分配サービス２３５から取得された後、このキーはＶＨＤの暗号解読に使用され得る。
【００４８】
[0058]別の実装において、ある仮想マシンのＶＨＤの暗号を解読可能な秘密キーは、該仮想マシンに関連付けられたｖＴＰＭへと封印され得る。封印にはｖＴＰＭにおける１つまたは複数のレジスタが関係し得る。一連のレジスタは、テナントが選択するポリシーを強制できるよう選択され得る。キーがｖＴＰＭを介して封印される場合、キーの封印に使用されるレジスタがキーの封印時に使用したものと同じデータを含む場合に限り、ｖＴＰＭからキーを取得し得る。
【００４９】
[0059]さらに、ｖＴＰＭは、該ｖＴＰＭについて適正なキーｋを有するホストのみアクセスできる状態となるような形で保護され得る。ｖＴＰＭはキーｋによって保護され得、またＫＤＳはキーｋを、封印済みブロブ内のホストに送ることができる。封印済みブロブは、選択された一連のＰＣＲレジスタが所望の値を有する場合に限りＴＰＭが暗号解読することになるような形で構成され得る。一実装において、ＫＤＳはこれを達成するために標準化されたＴＰＭフォーマットを使用し、ホストはＴＰＭの封印解除動作を使用してキーｋの暗号を解読するためにＴＰＭを使用する。
【００５０】
[0060]封印解除動作はホスト２３０により、下記の通りのキー分配に基づいて実行され得る。封印解除動作が分配サービス２３５によって実行される場合、ホストは、ＴＰＭによって署名されたパッケージ内のＴＰＭ２６１によって測定されたデータを、キー分配サービス２３５に渡すことができる。封印解除動作がホスト２３０によって実行される場合、ホストは、ホスト２３０が（ＴＰＭ２６１による測定結果に応じて）ポリシーを満たす状態であれば、ホスト２３０上に限り封印解除され得る、既に分配済みのキーを使用し得る。
【００５１】
[0061]すべてのレジスタが適正な状態であれば（つまり、ホスト２３０がポリシーを満たす状態である）、封印解除が成功し、ホスト２３０は仮想マシンのｖＴＰＭの暗号を解読するためのキー、またはＶＨＤの暗号を直接解読するためのキーを提供される。この段階で仮想マシンが起動し得るが、それは仮想マシンのＶＨＤの暗号解読に必要なキーを封印解除するためにｖＴＰＭが利用可能であるからである。起動後のｖＴＰＭの状態がテナントのポリシーに従っていれば、解錠が発生する。仮想マシンは解錠されることから、現在のｖＴＰＭの状態に基づくアテステーションの実行を求めることもできる。このアテステーションにより、仮想マシンはテナントポリシーに適合していることを他のテナントリソースに対して実証し得る。
【００５２】
[0062]この段階で、以下に挙げる目標が達成されたことになる。
[0063]１．仮想マシンの実行によって行われるアテステーションを通じ、テナントは、テナントが設定した仮想マシンポリシーに仮想マシンが適合している状態であることを保証される。
【００５３】
[0064]２．仮想マシンのＶＨＤを暗号化するキーの封印により、テナントは、ＶＨＤの内容が修正されていないことを保証される。
[0065]３．ホストのＴＰＭおよびアテステーションにより、テナントは、ホストに関して設定されたポリシーに適合するホスト上で仮想マシンが稼働している状態であることを保証される。
【００５４】
[0066]ＶＭのコンポーネント（例：ＶＨＤ、デバイスの状態、ＶＭメモリーなど）がランタイム中に修正されることを防ぐ目的でも、コード整合性ポリシーがホスト上に実装され得る。
【００５５】
[0067]選択的な一実装において、封印動作を実行するキー分配サービス２３５に代わり、キー分配サービス２３５は単純に、ＶＨＤの暗号解読キーを提供し得る。例えば、ホスト２３０はＴＰＭによって署名されたパッケージ内でＴＰＭ２６１によって測定されたデータをキー分配サービス２３５に渡すことができ、またキー分配サービス２３５はＶＨＤの暗号解読キーをホストに提供することで応答し得る。
【００５６】
[0068]一実装において、キー分配サービス２３５はテナントによって制御され得る。別の実装において、キー分配サービス２３５はホスター（例：ホスト２３０を運用するクラウド運用者）によって制御され得る。最初の実装において、テナントはｖＴＰＭ（およびそれを通じた仮想マシン）の暗号解読に必要なキーに対して完全な制御を維持するが、仮想マシンを起動可能にするためにホスターへの接続を維持する負担を負う必要が生じ得る。２番目の実装において、テナントはホスター（例：ホスター組織における別の部分）がキー分配サービス２３５を稼働することを許可し得る。一実装において、これはホスター組織内の少なくとも２つのエンティティがテナントのｖＴＰＭキーｋにアクセスするために協力するよう要求されるような形で行うことができる。
【００５７】
[0069]ＶＭＭ２５３またはその運用担当職員を信頼することを妨げる状況が原因で、ＶＭＭ２５３は、典型的な実施形態において、遮蔽型ＶＭ２０８、２０９および２１０の解錠に必要なキーの提供に際し、セキュリティクリティカルな役割を有さない。しかし、それは自動化された効率的な運用にとって、またテナント向けのセルフサービス運用を有効化するために、ＶＭＭ２５３が複数の動作を指揮することができれば、非常に有用である。本発明における、これらの要件を組み合わせる一部の実施形態の一パターンは以下のようなものである。
【００５８】
[0070]１．ＶＭＭ２５３がゲストＶＭ（例：ＶＭ２０８）を適切なホスト２３０へ、従来的な形で、キーの展開に関してはセキュリティクリティカルなことを何も行わずに展開する。ＶＭＭ２５３は通常の管理動作を、スケジュール設定、配置やリソース配分の最適化など通常の検討事項および措置と併せて実行することができ、その際、ＶＭ２０８において保護される性質を背景に、有意な変化を伴わない（いくつかの軽微な拡大については後述する）。ＶＭ２０８は、そのメタデータの一部として、暗号化されたｖＴＰＭ２２０を含むほか、セキュアな動作のための必要に応じて暗号化されるｖＴＰＭ２２０向けの保護キー２５５も含むが、このメタデータはすべて、ＶＭＭによる特別なセキュリティ関連の取扱いを伴わずに、標準的な展開動作の一部として一体的に扱われる。
【００５９】
[0071]２．ホスト２３０は、これが遮蔽型ＶＭであることを検出すると（すべてのＶＭが遮蔽されるわけではない）、ＫＤＳ２３５にまで範囲を拡大して、ｖＴＰＭ２２０を解錠するためのキーを回収する。このリクエスト２５６の一環として、ホストはサービスプロバイダーのポリシーに適合する有効なホストであることを示す、ホストアテステーションサービス（ＨＡＳ）２５８から提供されるアテステーション証明書２５７を含む。例えば、ホストは、ホストがセキュアなサブシステムを使用して証明書をリクエストしたことを示す、ホストアテステーション証明書を提供し得る。ＫＤＳ２３５は、アテステーション証明書２５７がポリシー要件を満たすかどうか検証する。ＫＤＳ２３５は次いで、これはＫＤＳのキーで暗号化されたｖＴＰＭマスターキーの暗号を解読し、それをホストにおける１つまたは複数のパブリックキーへと再暗号化し、それをホスト上の適切なセキュリティソフトウェアへ安全に転送する。これはホストのパブリックキーか、またはホスト内のＴＥＥであってもよい。ホストは提供されたｖＴＰＭマスターキーを使用してｖＴＰＭを解錠し、そしてｖＴＰＭをサービスとしてゲストＶＭに提供し、ゲストＶＭはｖＴＰＭから、遮蔽型ＶＭ２０８の暗号解読プロセスの開始に必要なキーを回収し得る。暗号学的に信頼に値するメッセージが、セキュリティインフラストラクチャから、動作の成否を確認する形で送信される。これらの工程のいずれにおいてもＶＭＭ２５３は関係しない。
【００６０】
[0072]３．セキュリティクリティカルな、ＶＭ２０８の暗号解読プロセスの終了段階で、ＶＭＭ２５３は通常の展開および構成動作を継続する。ＶＭＭ２５３は動作の成否を通知され、これは通常動作の場合に有用な情報であり、ＶＭＭ２５３によって他のあらゆる通知と同様に扱われるが、ＶＭＭ２５３は信頼に値しないことから、慎重なテナントであればセキュアなメッセージの受信も確認することになる。
【００６１】
[0073]この説明から明らかとなる通り、ＶＭＭ２５３は、ホストアテステーションやキー分配など、セキュリティクリティカルな動作には参加しない。ＶＭＭ２５３は自動化された指揮を提供するが、セキュリティはセキュリティインフラストラクチャによって保護され、またＶＭＭ２５３の動作に対する脆弱性はない。
【００６２】
[0074]本発明の一部の実施形態の下では、セキュリティクリティカルな機能とは切り離されるが係る機能と協調的である管理および自動化のパターンが、展開以外のＶＭ動作と、ＶＭに該当しない動作にも適用され得る。係るパターンは、ＶＭが稼働する「ファブリック」、一連のサーバー、ストレージ、ネットワークおよび管理システムの管理にも適用され得る。
【００６３】
他のＶＭ動作へのパターンの適用
[0075]ＶＭ２０８のライフサイクルの間、ＶＭＭ２５３は展開以外の多数の動作を指揮する。同じ信頼関係、そして同じ運用およびキー管理のパターンが、場合によっては特別な検討事項を伴いつつ、これらのシナリオすべてにわたり横断的に当てはまる。
【００６４】
ホストからストレージへのＶＭの移行
[0076]このシナリオは上記の展開シナリオの逆である。本発明における、これらの要件を組み合わせる一部の実施形態の一パターンは以下の要領で実装され得る。
【００６５】
[0077]１．ＶＭＭ２５３は従来的な決定を下し、そして従来的な命令をホストＶＭ２３１へ送り、ＶＭ２０８を一時停止または停止させる。
[0078]２．ホスト２３０は、この動作中にＶＭ２０８を保護するために必要な措置を行う。これの例として、ＶＭ２０８を表わすメタデータなど他のＶＭアーチファクト、プロセッサーの状態、メモリーおよび仮想メモリーファイルの内容の暗号化が挙げられ、こうした他のアーチファクトにも同じキー転送機構が使用される。これが達成され得る方法の一例に関する詳細については、下記の「仮想マシン保証」と題するセクションを参照のこと。
【００６６】
[0079]３．この保護プロセスが完了すると、ホスト２３０はＶＭ２０８を一時停止または停止し、併せてｖＴＰＭ２２０によってＶＭ２０８のデータがすべて暗号化および必要なキーが保護され、次いでｖＴＰＭ２２０が暗号化および保護され、ＶＭＭ２５３は通常の保存プロセスおよび保存された内容の通常管理に進む。例えば、ＶＭＭ２５３は遮蔽型ＶＭ２０８をストレージシステム２０８に保存させることができる。
【００６７】
[0080]ＶＭ展開プロセス同様、ＶＭＭ２５３はセキュリティクリティカルな動作から完全に外され、つまり、ＶＭＭ２５３は暗号化プロセスおよびキー交換に参加しないだけでなく、保存するデータが暗号化により保護され、またＶＭ２０８の保護成功に至る証明過程にも参加しない。
【００６８】
別のホストへのＶＭの移行
[0081]最新の仮想化プラットフォームは、あるホストから別のホストへＶＭを移行させる様々な形態に対応し、つまり、ライブ移行はＶＭの実行を中断なく維持する。非ライブ移行にはサービス中断が関係するが、環境要件の厳格さは低くなる。非ライブ移行は、仮想化プラットフォーム、ならびにストレージシステムおよびネットワークシステムの性質に基づいて、様々な形で行うことができる。ＶＭＭ２５３は、任意のファブリック内で実行可能な移行形態を理解し、そして係る措置の開始および指揮の方法を知る。遮蔽型ＶＭの移行の場合、本発明における、これらの要件を組み合わせる一部の実施形態の一パターンは以下のようなものである。
【００６９】
[0082]１．ＶＭＭ２５３は移行の種類および行先に関する従来的な決定を下した後、ソースホスト２３０に対し、選択されたターゲットホスト２５９への移行開始を指示する。
[0083]２．ソースホスト２３０は、ＶＭ２０８とそのｖＴＰＭ２２０の暗号化および必要なキー交換を開始するための、ＫＤＳ２３５とのセキュアな会話を行い、そしてターゲットホスト２５９はＫＤＳ２３５に対して、ＶＭ２０８のｖＴＰＭ２２０の解錠キーを取得するためのセキュアなリクエストを行う。ＶＨＤ２０８はＶＨＤ２０５自体の暗号化を担当するだけでなく、実行中のプロセスやページファイルのメモリー状態など他のＶＭアーチファクトを確保することができ、また同じキー転送機構を、ＶＭ、プロセッサー状態およびメモリーや仮想メモリーファイルの内容を記述するメタデータなど他のアーチファクトにも使用することができ、また同じキー転送機構がこれら他のアーチファクトにも使用される。
【００７０】
[0084]３．キーが一致する状態になると、ホスト２３０および２５９は移行を進める準備が整っているという信号を出し、そしてＶＭＭ２５３は実行予定の移行の種類について、ホスト２３０および２５９へ従来的なコマンドを送る。一部の実施形態において、ＶＭＭ２５３は送信元ホストに命令を与え、該ホストが他を担当する結果、ＶＭＭは移行の細かい部分には関与しないが、移行コードオーナーと共に二重チェックを行うことができる。上記は段階的プロセスを暗に意味する一方、ライブ移行など一部の移行技法では暗号化と移行が一体的に動作し、様々な要素を漸進的に暗号化する。したがって、本明細書に記載の通り、動作を逐次的に稼働する別々の工程に分けることはできない。例えば、当業者にとっては周知の標準的な手順を使用して、移行手順による要求に応じて動作のセグメント単位で暗号化と移行が行われるよう、動作を交互配置し得る。したがって、本発明の実施形態の範囲内で移行を達成するために、様々な選択肢を埋め込むことができる。
【００７１】
[0085]上記の通り、ＶＭＭの指揮に対して生じる変化は最小限であり、またＶＭＭ２５３はいかなるセキュリティクリティカルなワークフローにも参加しない。成否に関するセキュアな通知はセキュアなインフラストラクチャによって行われる一方、ＶＭＭ２５３は従来的な通知を受け取り、それらに対して従来的な形で応答する。
【００７２】
クラスター内でのフェイルオーバー
[0086]特殊な移行事例は、クラスター内でのフェイルオーバーである。あるコンポーネントが障害になった場合にサービスが迅速にトラフィックを正常なシステムへと切り替えることを可能にするよう、保存と管理の双方が設定される。産業内で周知のクラスター化形態が多数存在する。
【００７３】
[0087]アプリケーションクラスターを構成するＶＭが遮蔽される場合、フェイルオーバーが発生すると、キーはターゲットシステム上で利用可能となる。すべてのシステムがアクティブである場合、原初の展開の時点でキーがホストへ準備され、またフェイルオーバー中に特別な処理は要求されない。しかし、アクティブ／パッシブ構成の場合、複数の選択肢が用意される。例えば、そのようなフェイルオーバーを移行として処理することができ、ターゲットホスト２５９は上記と同種のキー提供リクエストを行うが、フェイルオーバー時点でのキー分配など導入活動は、可用性と応答性とを低減し得る。一部の実装において、キーは、上記の展開プロセスを使用して、アクティブであるか否かを問わず、クラスター内の該当するホストすべてに対して、ＶＭと一緒に準備される。これによりクラスター管理ソフトウェアは通常の管理技法または制御技法を用いて、ＶＭＭ２５３による関与の有無を問わず、フェイルオーバー動作を実行することができ、ＶＭ保護実行方法には影響を及ぼさない。この配列は、上記の展開シナリオや移行シナリオと同じ形で、ＶＭをＶＭＭ２５３およびクラスター管理ソフトウェアの双方から保護する。
【００７４】
別のデータセンターへの移行
[0088]テナントが業務上またはコンプライアンス上の理由から、あるいは業務継続または災害復旧を目的に、別の場所へ移動することを希望する場合、別のデータセンターへの移行が発生し得る。このプロセスはＶＭＭ２５３または他の管理システムによって、従来的な事例における想定と同じ形で行われるが、あるデータセンターから他のデータセンターへのセキュアなキー交換のための要件は、上記の移行事例よりも複雑になり得る。
【００７５】
[0089]・２つのデータセンターがＨＡＳ２５８およびＫＤＳ２３５などセキュアなホスティングサービスを共有する場合、データセンター横断的移行は上記の移行事例と同じ形で管理動作とセキュリティ動作とを組み合わせるが、アーチファクトの物理的移行は、長距離転送向けに一般的に使用されるような他の技法を使用し得る。
【００７６】
[0090]・２つのデータセンターが別々のセキュアなホスティングサービスを有する場合、２つのサービスは信頼される仕組みを使用してキー交換を行う。１つの解決策は、セキュアな複数のホスティングサービス間に連合または他の信頼関係を確立させ、それらが直接キー交換を行うことができるようにし、場合によっては産業標準プロトコルを活用することである。
【００７７】
[0091]・２つのセキュアなホスティングサービスが信頼関係を有さない場合、テナントまたは補助的サービスはＶＭ２０８およびそれに該当するキーを回収し、そしてそれらを、後述する通り、最初のＶＭがデータセンターへ転送された際の形に似たプロセスでターゲットデータセンターへ転送する。
【００７８】
[0092]移行が２つの別々のデータセンター建物間で発生するか否か、あるいは物理的距離の度合いに焦点を当てるよりむしろ、実施形態においてはソースホストおよびターゲットホストが１つのセキュアなホスティングサービスを共有するか、あるいは信頼関係が確立された別々のセキュアなホスティングサービスを有するか、あるいはそのような信頼関係を伴わない別々のホスティングサービスを有するかに焦点を当てる。これらの変形すべての例は、単一のデータセンター内の複数セクション間、単一のサービスプロバイダーが運用する複数のデータセンター間、複数のサービスプロバイダー間、またはテナントとサービスプロバイダーとの間に存在し得る。これらすべての事例において、ＶＭＭ２５３とセキュアなホスティングサービスとの間における別々であるが協力する関係を表わす、本発明の実施形態について例示されるパターンは引き続き有効であり、キー交換および物理的転送の詳細だけが異なる。
【００７９】
テナントがプライベートアーチファクトに基づいて遮蔽型ＶＭを作成する場合
[0093]テナントは普通の非保護アーチファクトから遮蔽型ＶＭを作成できるが、テナントが最初から、プライベートコンピューティング環境内の適切なＶＭ作成プロセスを経由し、このプライベート環境内でＶＭおよびそのＶＨＤをＭｉｃｒｏｓｏｆｔ  ＢｉｔＬｏｃｋｅｒなど標準的なツールを使用して暗号化することによって、アーチファクトを保護することが可能であれば、有用である。その場合、これらの保護されたアーチファクトを、従来的なファイル転送機構を使用してサービスプロバイダーのデータデンターへ転送し、ＶＭストレージライブラリーに保存し、そしてＶＭＭ２５３を使用してＶＭとして開始し得る。遮蔽型ＶＭを開始可能にするため、テナントの保護キーはサービスプロバイダーへ転送され、ＫＤＳ２３５に提供される。一実施形態において、テナントはサービスプロバイダーのＫＤＳパブリックキーを、アカウント準備プロセスの間に、または別の適切な時点で、セキュアな転送を使用して提供される。ＶＭ保護キーはｖＴＰＭの保護ストレージ階層内に保存され、次いでこの階層がＫＤＳパブリックキーによって保護される。サービスプロバイダーへの転送後、結果的に保護されたこの遮蔽型ＶＭパッケージをＫＤＳによって暗号解読することができ、次いで本明細書に記載の技法を使用して処理し得る。
【００８０】
テナントがテンプレートに基づいて遮蔽型ＶＭを作成する場合
[0094]クラウドコンピューティングにおいては、サービスプロバイダー、独立系ソフトウェアベンダー（ＩＳＶ）、システムインテグレーターまたは他のサードパーティプロバイダーから提供される一連のテンプレートを、サービスプロバイダーが用意するのが一般的である。そのようなテンプレートは完全または部分的なＶＭの定義であるが、まだテナントの要件に合わせて調整された状態ではなく、またアカウント識別情報、管理者パスワード、ソフトウェアまたは他のセンシティブデータもまだ準備されていない状態である。そのようなシステムの一般化およびその後におけるシステムの特殊化は、Ｍｉｃｒｏｓｏｆｔ社のｓｙｓｐｒｅｐというユーティリティまたは他の適切なユーティリティを、起動管理ツールなど他のツールと組み合わせて使用することによって行うことができる。
【００８１】
[0095]テナントがそのようなテンプレートから遮蔽型ＶＭを作成することが可能であれば、有用である。これを行う場合、後でＶＭに攻撃を仕掛けることを可能にするマルウェアまたは構成をサービスプロバイダーの職員が挿入することによってテンプレートが不正操作された状態になっていないことの検証など、テナントがテンプレートの整合性を検証することが可能であれば、有用である。ＶＨＤおよび他のＶＭアーチファクトの整合性は、例えばデジタル署名を通じて検証することができ、またテナントは遮蔽型ＶＭを作成するためのリクエストの中で、ＶＭコンポーネントの整合性を検証するための信頼できる手段を指定し得る。
【００８２】
[0096]他のシナリオでは、テンプレートはソフトウェア、データまたは外部サービス接続用認証情報など秘密情報を含む場合があり、暗号化を通じてテンプレートを保護することが有用である。しかし、この暗号化はテンプレートの作者に帰属するキーを使用して行われることから、仮想ストレージデバイスは、ＶＭ特有の、また結果的にテナント特有のキーを使用して再施錠される（例：暗号解除および異なるキーでの再暗号化）。この暗号解読および異なるキーでの再暗号化は、完全な暗号解読／再暗号化を伴わない１つのキーの変更向けのハードウェアサポートの使用など、他の再施錠シナリオに置き換えることができる。
【００８３】
[0097]テンプレートリソースの妥当性確認および遮蔽型ＶＭの作成のプロセス、またはＶＭ  ＶＨＤを作成するためのテンプレートＶＨＤの暗号解読および再暗号化のプロセスにおいて、情報は１つの連続的な流れで処理されるが、時を問わず非暗号化形態で保存されるわけではない。このプロセスは、データセンター内の何らかのシステム上で動作するセキュアプロセスによって実行される。一部の実施形態において、セキュアプロセスは仮想化ホスト上で動作し、また一部の実施形態においてこれは遮蔽ＶＭ自体の内部で発生し得る。
【００８４】
[0098]遮蔽型ＶＭをテンプレートから作成する場合、各ＶＭが固有のキーによって保護されるのが一般的であるが、妥当性確認および暗号化、または再暗号化の工程は一定量の時間を要し、また大規模アプリケーションを作成する場合にはこの遅延をＶＭの各々について回避することが、特に増大した負荷に対する対応策としてＶＭを自動的に準備する場合に有用となり得る。ＶＭを他のテナントおよびサービスプロバイダーから保護したいが、各ＶＭについて遅延を回避したい場合、妥当性確認および暗号化、または妥当性確認および再暗号化の工程を、テンプレートを特殊化することなく実行して、テナント特有のキーで暗号化されたテンプレートを作成することができ、その結果、遮蔽型ＶＭをこのテンプレートから、個々の遮蔽型ＶＭについて時間の掛かる暗号化作業を要せず作成することが可能となる。
【００８５】
[0099]このＶＭおよびテナントがＶＭに注入する任意の秘密をサービスプロバイダー職員から保護するため、ＶＭＭとセキュアインフラストラクチャとの間の関係は、本発明の実施形態の別の部分で使用されるパターンに従い、つまり、テナントは作成に必要な情報を含むタスク定義を作成し、このタスク定義をデジタル署名、暗号化または署名と暗号化の組み合わせを通じて保護し、そしてこの保護されたタスク定義は暗号化または改竄が不可能なＶＭＭ２５３へ転送され、保護されたタスク定義は、本発明の実施形態の別の部分で使用される形でタスク定義を解錠するためのキーをＫＤＳ２３５にリクエストするセキュアプロセスへ転送され、そして中央での妥当性確認および暗号化のタスクまたは暗号解読および暗号化のタスクはセキュアプロセスによって、ＶＭＭ２５３による割り込みまたは修正が不可能なアトミックタスクとして実行される。ＶＭＭ２５３はセキュアな作成の前後に他の有用なタスクを従来的な形で行い、例としてテナントのアカウントの検証および課金、遮蔽型ＶＭの保存、ＶＭの展開、そして動作結果のテナントへの通知が挙げられる。タスク完了を確認するメッセージは信頼に値し、何故ならそれはセキュアプロセスに対してのみ既知である情報を含み、またサービスプロバイダーのプライベートキーを根源とする証明書を使用してセキュアプロセスによってデジタル署名され、その結果、サービスプロバイダーの職員による不正操作を防止するからである。
【００８６】
[00100]テナントはプライベートクラウド内または別のサービスプロバイダーにて実行するための遮蔽型ＶＭの展開および回収を希望する場合がある。セキュアなホスティングサービスでＶＭを保護するため、同様のホスティングファブリックを伴うデータセンターをテナントが有する場合、上記のようなデータセンター内転送が使用され得る。サービスプロバイダーとテナントが信頼関係を確立している場合、転送は上記の通り進行し得る。信頼関係が確立していない場合、テナントはＶＭが通常の形で暗号化されることをリクエストすることができ、ｖＴＰＭマスターキーはテナントに帰属するキーに対して暗号化され、これによりＶＭを従来的なデータ転送機構で転送し、テナントに開いてもらうことが可能となる。このアプローチは、ＶＭとテナントのパブリックキーとの間の関連性がセキュアかつ不正操作防止の状態にあり、攻撃者がテナントに成りすますことを防ぎ、別のパブリックキーを代用してｖＴＰＭマスターキーを回収するという状況で実装される。この関連性を暗号化により保護するため、複数の既知の技法が存在しており、つまり、テナントのパブリックキーを、ｖＴＰＭによって暗号化および保護されるＶＭメタデータ内に含め、その結果、ＫＤＳまたは承認されたホストからアクセス可能となるが、攻撃者からはアクセス不能とすることができ、あるいはテナントＩＤを同様の形で保護することができ、テナントＩＤからテナントのパブリックキーを識別するための検索表がＫＤＳに対して利用可能となる。一実装において、ＶＭメタデータはテナントのパブリックキーに対して暗号化されたｖＴＰＭマスターキーを含み、これによりＶＭを、ＫＤＳまたは他のセキュリティ関連サービスを関与させることなく、単純なデータ転送機構を使用してテナントへ転送することが可能となる。
【００８７】
[00101]本発明の実施形態では管理動作とセキュリティ動作とを、従来的な転送技法を使用可能な形で分離し、ＶＭＭまたは他のツールに指揮させ、さらには保存媒体の物理的転送を含む一方、ＶＭの内容およびキーはセキュリティ機構によって保護される。
【００８８】
補助的技法
[00102]本発明の実施形態では運用向けに多数の補助的活動を実装し、これは自動化の推進およびセキュアな基礎の形成の双方が目的である。本発明の一部の実施形態は、効果的な保護のために必要な規律のあるプロセスにおいてサービスプロバイダーおよびテナントを支援するための、様々な補助的活動をも含む。
【００８９】
ホストの準備、構成およびアテステーション
[00103]ＶＭのセキュリティはホストの整合性に依存し、ホストは「ルートキット」などマルウェアや、脆弱性を伴う旧バージョンのソフトウェアを伴わない、適正なソフトウェアのみ実行すべきであり、また適正な構成設定と適正なポリシーを有するべきである。これらのホストは典型的に従来的なファブリック管理システム（ＦＭ２５４など）と併せて準備および設定され、また本発明の一部の実施形態における脅威モデルの下ではＦＭ２５４が信頼コンピューティング基盤の要素ではなく、その理由はＶＭＭ２５３について論じられた理由と同じであり、つまり、ＦＭ２５４は大規模かつ複雑なシステムで、テナントはＦＭ２５４の運用担当職員にまで信頼を拡大することを望まない。本発明の一部の実施形態では既存のＦＭ２５４を特別なツールまたは技法に置き換えることを必要とせず、つまり、そのような変更は、既存のプロセスの基礎を既存のツールに置くサービスプロバイダーのＩＴ担当職員にとって面倒と考えられ、またいかなる場合も手に余るほどの既存のツールやインターフェースの使用を妨げることは難題と思われる。こうした理由から、本発明の一部の実施形態は、誤った構成または侵害の防止を試みることを基本とするものではない。むしろ、これらの実施形態は、ホストの誤設定または侵害の検出、そのような誤設定または侵害されたホストがホスティングファブリックに参加する状況の排除、そして侵害されない正常な動作の確認に基づく。
【００９０】
[00104]ホスト２３０が遮蔽型ＶＭ２０８を受け取り、ｖＴＰＭキーを回収するためのリクエスト２５６をＫＤＳ２３５に対して行う場合、ホスト２３０は一定のポリシーに適合することを実証するアテステーション証明書２５７を含む。例えば、アテステーション証明書は、ホスト２３０がファブリックの既知の構成要素であり、適正なソフトウェアを実行中であり、そして適正なセキュリティ関連ポリシーが有効であることを示し得る。システムは一般的に、独自の健全性を信頼できる形でアテステーションする（ａｔｔｅｓｔ）わけではない。このアテステーション証明書を取得するため、ホスト２３０はホストアテステーションサービス（ＨＡＳ）に対してリクエスト２６０を行う。このリクエストは、ホストの整合性に対する信頼に関連する様々な断片的情報を含み得る。一実装において、リクエストは以下のうち１つまたは複数などの情報を含む。
【００９１】
[00105]・ホスト２３０の物理的な信頼プラットフォームモジュール（ＴＰＭ）２６１から派生する、是認キーなどのキー。このキーは、サーバー２５１がデータセンターに納入された時点で準備された、既知のサーバーキーのリストと比較される。サーバーキーのリストは、サーバー納入と同時に安全に納入されるマニフェストに記載される。別の識別方法も可能である。
【００９２】
[00106]・統一拡張ファームウェアインターフェース（ＵＥＦＩ）モジュール２６２または他の起動ソフトウェアにより提供され、ＴＰＭ２６１により署名された通りの、起動プロセスに含まれるソフトウェアの測定結果。
【００９３】
[00107]・リクエストがホストのセキュアなソフトウェアサブシステムに由来するものであることを特定する証明書。そのようなセキュアなサブシステムを実装するための複数の方法が、当業者にとっては既知である。一実施形態において、このサブシステムをホストＶＭのカーネル内で稼働する機能として実装することができる。別の実施形態ではそれをハイパーバイザー内で稼働させることができる。他の実施形態ではそれを、プロセッサーのメモリーマッピング能力を使用するハイパーバイザーによって強制される別個のアドレス空間として実装することができる。他の実施形態ではそれを、プロセッサーによって強制される別個の実行領域として実装することができる（ＡＲＭアーキテクチャーのＴｒｕｓｔＺｏｎｅ、またはＩｎｔｅｌ社が記述した新たなＳＧＸ能力など）。これらの異なる実装が、暗号化動作、認証情報保存、コードまたはデータの整合性の妥当性確認、そして秘密保護を実行する能力など、類似する機能性を、ｖＴＰＭの場合と同様の形で提供し得る。それらは提供するセキュリティの強度が異なっていてもよい。本発明の実施形態は、セキュリティ強度ではなく機能性に依存することから、様々な実施形態にまたがって同等に動作し得る。
【００９４】
[00108]・ハイパーバイザー強制型コード整合性（ＨＣＶＩ）２６３およびＡｐｐＬｏｃｋｅｒを含む、ホストのコード整合性ポリシーに関する署名証明書（これらはＶＭをホストによる侵入から保護する）。あるいは、実施形態においてはホストＶＭを有していない他の仮想化配列も認識し得る。例えば、ＨＶＣＩおよびＡｐｐＬｏｃｋｅｒ（ワシントン州レドモンドのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ製）は、ホストのコード整合性妥当性確認の例である。他の選択肢も代替的に使用することができる。
【００９５】
[00109]・ＨＡＳ２５８がホストとのセキュアな通信を確率することを可能にする、セキュアなソフトウェアコンポーネントのパブリックキー。
[00110]他の実装または構成において、この情報の一部を省略してもよく、例えばある企業が自社のデータセンターはセキュアな状態であると確信し、侵害を防止する強固なプロセスを整備している場合がそうである。実際、それをすべて省略し、本発明の実施形態をアテステーション工程抜きで運用することができる。特定のデータセンターにおけるアテステーション要件は、アテステーションポリシーによって定義される。
【００９６】
[00111]他の実施形態において、他のポリシーの裏付けとして他の情報を追加することができ、例として、データ支配権規制を遵守するためのホストの地理的位置に関する検証可能な証拠、またはデータセンター内のロックされたケージ内でのホストの配置に関する検証可能な証拠、または物理的サーバーおよびそれらの供給網の来歴におけるコンポーネントの検証可能な識別情報、またはホストがセキュアなネットワークに接続されている旨の検証可能な追認などが挙げられる。産業および政府機関はそのような情報を暗号学的に強固な形で提供するための技法を実装し、そのような情報はホスト上で入手可能であればアテステーション工程内で使用され得る。あるいは、サービスプロバイダーはこの種の、サービスプロバイダーの公的証明書と併せてデジタル署名された情報、または暗号学的にＴＰＭキーに基づく証明書と併せて署名された情報、またはその両方に対してアサートするステートメントを配置することができ、そのようなステートメントは、たとえ技術的に強固でなくても規制遵守目的には十分となり得る。
【００９７】
[00112]ＨＡＳ２５８はこの情報を、アテステーションポリシー２６４における仕様と比較し、ポリシー２６４と合致すれば、ＨＡＳ２５８による署名を経たアテステーション証明書２５７を返す。ホスト情報がポリシー２６４に適合せず、したがってホストが誤設定または侵害された状態である場合、アテステーションサービスがこれを検出し、アテステーション証明書２５７の提供を拒否する、つまり、ホスト２３０はｖＴＰＭ２２０の解錠および結果的なＶＭ２０８の解錠に必要なキー２５５を受け取らない。
【００９８】
[00113]したがって、本発明の実施形態は、ホストの準備および設定のための標準的なＦＭツーリングを可能にする。ホストの整合性はＨＡＳ２５８によって監視され、アテステーション証明書２５７によって追認される。このアテステーション証明書２５７はＫＤＳ２３５により、ＶＭＭ２５３の制御下での遮蔽型ＶＭの展開および移行を可能にする目的で使用され、またＶＭＭ２５３とＦＭ２５４の双方が成否に関する通知を受け、これらの成果を標準的な管理ポリシーおよび手順に従って扱い、例えば、ポリシー２６４に適合する別のホスト上にＶＭ２０８を配置することによって、ホストアテステーション失敗に対応する。
【００９９】
[00114]ＦＭ２５４およびＶＭＭ２５３は他にも、アテステーション失敗や侵害の可能性を発見した場合にホスト２３０を隔離または是正するための措置を講じることができる。例えば、サービスプロバイダーは、アテステーションに合格するが後で不合格となると予想された既知のホストへの対策を決定するためのポリシーを有する場合があり、つまり、慎重なアプローチとしては、ホストを「検疫」して、ネットワークまたはホスティングファブリックへの接続許可を拒否することが挙げられ、より実用的なアプローチとして考えられるのは、ホストをホスティングから除外するが、トラブルシューティングおよび移行のためにネットワーク内に残しておくことである。
【０１００】
[00115]したがって、ＦＭ２５４とセキュアなホスティングサービスとの間での責任分離は、ＶＭＭ２５３とセキュアなホスティングサービスとの間での分離と同じ形で作用して同様の便益をもたらし、つまり、ＦＭ２５４はファブリック管理の自動化および指揮を提供して費用効率、速度および信頼性に貢献するが、ファブリックのセキュリティクリティカルな態様はセキュアなホスティングサービスによって提供され、ＦＭ２５４または運用資格を有する職員には曝されない。
【０１０１】
遮蔽型ＶＭに全面的に対応するＶＭＭに加えられる変更
[00116]ＶＭＭ２５３を運用する場合、遮蔽型ＶＭの運用を補助するために既に存在するＶＭＭからの大幅な変更は必要ないが、テナントおよびサービスプロバイダーによる使用を補助するために軽微な変更が導入され得る。例えば、セキュアなホスティングプロセスは新たな種類の障害、例えばホストのアテステーション失敗や、その結果としての不合格ホストへのＶＭの展開または移行、といった障害の可能性をもたらす。他の障害モードの場合と同様に、ＶＭＭ２５３はそのような障害メッセージを理解すべきであり、また別の展開用ホストの発見、サービスプロバイダー職員に是正を求めるための障害報告、自動是正が不可能な場合あるいはサービス悪化またはサービスレベル合意の遵守不履行が発生した場合におけるテナントへの障害通知（レポートに記載の事象を含む）、そして不合格ホストが是正されるまでの先々の措置からの除外など、是正措置を講じるべきである。
【０１０２】
[00117]ＶＭＭ２５３は、ユーザーインターフェースおよびプログラミングインターフェースにおいて、ＶＭのアップローディング、作成および回収ワークフローにおける保護を有効化するためのオプションを提示することもできる。またＶＭＭ２５３は、サービスプロバイダーが遮蔽型ＶＭに異なる価格を付け、同様の業務事案を統合することを可能にする機能を提供し得る。
【０１０３】
[00118]本発明の一部の実施形態では、ＶＭの保護が非信頼ＶＭＭではなくセキュアなホスティングインフラストラクチャに依存することから、これらの有用な機能はセキュリティクリティカルではない。ＶＭＭまたはそのデータベースが侵害されると、データセンター内の運用効率およびサービスレベルが阻害されるが、ＶＭのセキュリティは損なわれない。
【０１０４】
セキュリティ対応型ホスト上での遮蔽型ＶＭの配置
[00119]典型的なデータセンターにおいて、セキュアな運用に必要なハードウェアやオペレーティングシステムを備えた複数のホストが、そのような能力のない複数の従来的ホストと共存し得る。そのような混合環境は、データセンターがハードウェア更新サイクルを経るにつれ、複数年にわたり存在し得る。当初は、セキュリティ対応型ホストは希少なリソースとなり得る。
【０１０５】
[00120]同様の遷移期間中、一部のＶＭが遮蔽されるが他は遮蔽されない場合があり、何故ならそれらのワークロードが保護の労力または費用を正当化するほど十分にセンシティブでないと見なされる、あるいはテナントがすべてのワークロードを保護するためのプロセスまたはポリシー遷移をまだ経ていないからである。
【０１０６】
[00121]そのような不均一なホストおよび不均一なワークロードの環境にある場合、ＶＭＭ２５３は保護されたワークロードのセキュリティ対応型ホスト、例えばホスト２３０への配置を、ＶＭ２０８の始動失敗が予想される絶望的な配置を避けるよう管理する必要がある。加えて、非保護ワークロードは、サービスプロバイダーのリソース活用の最適化と、望ましい場合は保護対象実行についてサービスプロバイダーがより高い価格を課金することを可能にすることを目的に、従来的ホスト上に優先的に配置され得る。典型的なＶＭＭは、最適なリソース活用または他の事業目標のための配置指針となる、ホストおよび使用ポリシーの特徴と併せて、広範なリソース要件と合致する。その特徴リストに保護能力を加え、それを配置決定に含めることは、簡単である。ＶＭＭ２５３はこれらの属性を、データセンター内に所有するホスト目録内で維持する。実際、これは保護能力を有するホストを識別するための発見機構が関係する。この目録はＨＡＳ２５８と連動すべきであり、つまり、ホストはハードウェア能力を有することが既知であり得るが、どこかの段階で場合によっては侵害されてしまったことが原因でアテステーションプロセスに不合格となると、保護対応型ホストのリストから一時的に除外される。
【０１０７】
[00122]しかし、ＶＭＭ２５３およびその運用担当職員が信頼されないことから、この配置は、管理者特権を有するサービスプロバイダー職員がＶＭＭ２５３内のホスト目録データベースを改竄する能力、または配置決定アルゴリズムを侵害する能力を有する可能性があるとしても、保護を保全する形で行われる。自動化された目録管理および配置アルゴリズムは、データセンターにおける信頼性と効率性のある運用に重要な役割を果たすが、ワークロード保護において果たす役割はない。上記の説明から、これは以下のように対処されることが明らかとなるはずである：ＶＭＭ２５３が侵害され、無効なホストに遮蔽型ＶＭを展開するよう誘導される場合、該ホストはＫＤＳと共にキー分配プロセスに参加できなくなり、また遮蔽型ＶＭの解錠および起動もできなくなるため、テナントのデータは全く侵害されない。
【０１０８】
ホストにおけるポリシー変更への対応
[00123]様々な時点で、ホスト上のセキュリティポリシー、例えばコード整合性（ＣＩ）妥当性確認ポリシー（本明細書では時々、ハイパーバイザー強制型コード整合性（ＨＶＣＩ）ポリシーとも言う）の変更が必要となる。例えば、ＦＭ２５４によって管理される通りのソフトウェア更新を考察してみると、サービスプロバイダーは、あるドライバーの旧バージョンがセキュリティ脆弱性を含むと判明したために、新バージョンがリリースされているという通知を受けている場合がある。この場合、許可ソフトウェアのリストに新バージョンが追加されるべきであり、旧バージョンは不許可ソフトウェアのリストに追加されるべきである。これらの事例において重要となり得るのは、ドライバーの更新と同時にＣＩポリシーも更新されることであり、つまり、ポリシーが更新済みとなる前にドライバーがまず更新されると、ドライバーは実行を許可されず、システムは機能不全となり得る。このプロセスが適正に管理されないと、広範なソフトウェア更新によりデータセンター全体が無効化されるおそれがある。こうした理由から、ソフトウェアおよびポリシーの更新が調整される。一実装において、ポリシー更新はソフトウェア更新（「パッチ」）としてパッケージ化および配布され、優先関係は、従来的なパッチ処理ソフトウェアがソフトウェア更新に先立ってポリシー更新を展開し、そして最終的に、ポリシー２６４およびドライバーの更新の有効化に必要な再起動をトリガーするよう、定義される。既存のパッチ処理ソフトウェアに依拠することにより、ＦＭは、広範なサービス割り込みを回避するための一連のホストにまたがる「巡回式更新」の指揮、あるいは各ホストの更新および再起動に先立つ別のホストへのＶＭのライブ移行など、既存の自動化を活用することができる。
【０１０９】
[00124]しかし、調整される変更がもう１つあり、つまり、ＨＡＳ２５８は適正なＣＩポリシーが有効であることの妥当性確認を行い、その結果、再び、アテステーションポリシー２６４は更新されず、更新後のＣＩポリシーの認識および許容に至ると、サーバー２５１はアテステーションに合格せず、ファブリックへの参加を許可されない。プロセスは、受け取った情報に基づいて、パッチおよび更新後のＣＩポリシーの定義から始まる。新たなＣＩポリシーが、アテステーションポリシー２６４に追加される。その後、何らかの制御された順序で、パッチが複数のサーバーへと展開適用される。そして最終的に、すべてのサーバーの更新が完了し、ＨＡＳ２５８が旧ＣＩポリシーに準ずるアテステーションリクエストを受け取らなくなると、旧ＣＩポリシーはアテステーションポリシー２６４から削除することができる。このプロセスは、サービスプロバイダーのＩＴ担当職員の制御下に置かれ、これらの職員が更新を承認し、適用スケジュールを設定する。この技術は、秩序正しいセキュアなプロセスを支援するが、職員の管理統制に関する要件を排除するものではない。
【０１１０】
[00125]本発明の一部の実施形態において、従来的なＦＭツールでのこれらの変更の管理は、セキュリティインフラストラクチャによって保証されるデータセンターのセキュリティから切り離される。円滑かつ効率的な運用のためには協力が有益であるが、管理システムの侵害がＶＭを侵害に曝すわけではない。
【０１１１】
セキュリティ関連の状態および障害の報告
[00126]本発明の一部の実施形態において、ＶＭＭ２５３はセキュリティクリティカルな動作から完全に外れ、つまり、ＶＭＭ２５３は暗号化プロセスおよびキー交換に参加しないだけではない。ＶＭＭ２５３は遮蔽型ＶＭ２０８の保護成功の証明にも参加しない。保護された展開でも、多数のセキュリティ関連の理由により障害に陥る可能性があり、例えば、ホスト２３０は侵害されてしまったためにアテステーションに失敗する可能性がある、あるいはポリシー２６４が後に変更され、元来の展開となったことから、ＨＡＳ２５８またはＫＤＳ２３５が侵害されてしまった、または障害に陥ってしまった可能性がある。ＶＭＭ２５３はこの障害に関する通知を受け取り、そしてそれを、従来的な非セキュリティ関連の障害を扱う場合と同様に報告する。しかしＶＭＭ２５３はセキュリティ関連障害を報告するに当たり信頼されず、何故なら悪意のあるＶＭＭ管理者が、たとえ侵害が原因で保護が失敗していたとしても、成功メッセージを偽装するおそれがあるからである。したがって、ＶＭＭ２５３は日々の運用に有用なベストエフォート型レポートを作成する一方、セキュアなホスティングサービスも障害事象通知を送信し、これが信頼に値する事象報告システムに送られる。この追認メッセージは暗号学的に強固で、ホスト２３０およびＫＤＳ２３５のセキュリティインフラストラクチャによって署名される。
【０１１２】
複数のＩＴ担当職員間での特権の分離
[00127]本発明の一部の実施形態では一般的な管理システム（ＶＭＭ２５３およびＦＭ２５４）を、データセンターのセキュリティにおけるいかなる役割からも除外する一方、ＨＡＳ２５８およびＫＤＳ２３５はむしろ、一部の実施形態において、重要な役割を担う。特に、ＨＡＳ２５８は、例示される一部の例において、ホストに対する信頼の源泉であり、つまり、アテステーションポリシーが侵害され、悪意のあるソフトウェアがホスト上で許可されると、セキュリティモデル全体が失敗し得る。
【０１１３】
[00128]したがって、ＨＡＳ２５８およびＫＤＳ２３５は侵害から保護される。対処可能な脅威のうち１つは、ホスト、ＶＭＭ２５３またはＦＭ２５４へのアクセス権を有する悪意のある管理者の脅威であることから、ＨＡＳ２５８およびＫＤＳ２３５についての管理者特権は、一般的なホストまたはファブリックの管理者の特権から切り離された状態に保たれる。具体的に、ＨＡＳ２５８およびＫＤＳ２３５は、ＶＭＭ２５３またはＦＭ２５４によって管理されない。これらがホストと同じドメインまたはフォレストに加えられないことも望ましい。
【０１１４】
[00129]この特権分離は、攻撃を成功させるには正規の管理者と、アテステーションポリシーを担当する特別な、高い特権を有する管理者との間での結託が必要であるという状況の確保に役立つ。
【０１１５】
[00130]したがって、総体的なシステムアーキテクチャー、具体的にはＨＡＳ２５８およびＫＤＳ２３５は、一方でのＨＡＳ２５８およびＫＤＳ２３５と、他方でのホスト、ＦＭ２５４およびＶＭＭ２５３との間で、共通する管理を一切必要としないように構成され得る。それらは同じドメインまたはフォレストに属する必要はない。
【０１１６】
[00131]本発明の一部の実施形態は、これらの特権が分離された状態に保たれることを必ずしも確保するわけではなく、むしろサービスプロバイダーのプロセスと規律に委ねる一方、それでもなお、実施形態は特にそのような特権分離を可能にするよう構成され得る。
【０１１７】
拡大
[00132]本発明の実施形態は、付加的能力を提供する形で、あるいは付加的な保護要件または適合要件を満たす形で拡大され得る。
【０１１８】
テナント特有のＫＤＳマスターキー
[00133]一実装において、ＫＤＳ２３５はｖＴＰＭキーを、ＫＤＳ２３５に属するマスターキーで暗号化することによって保護する。しかし、保護および隔離を強化するため、または規制遵守要件を満たすために、ｖＴＰＭキーをテナント毎に別々のマスターキーで暗号化することもできる。ＫＤＳ２３５のマスターキーはＴＰＭによって保護され得るが、ハードウェアセキュリティモジュール（ＨＳＭ）内にテナント特有のキーを保存することが望ましい場合もあり、これはテナントの環境とサービスプロバイダーのＨＳＭとの間でのキーのセキュアな相互交換を提供するからであると共に、他にも便益がある中で特に、テナント主導によるマスターキーの除去に役立つからである。
【０１１９】
[00134]ファブリックがテナント特有のマスターキーを使用または対応する場合、本発明の一部の実施形態がこれに適応および対応し、セキュリティクリティカルな機能からの管理自動化の分離を提供する。ＶＭＭ２５３、ＦＭ２５４、ＨＡＳ２５８、ＫＤＳ２３５またはホストの間における相互作用を大幅に変える必要はない。運用上の便宜のため、ＶＭＭ２５３は、報告および通知におけるテナント識別情報の反映など、軽微な運用支援機能を提供すべきであり、またテナントＩＤの不一致など、付加的な障害条件を認識し、対処すべきである。
【０１２０】
[00135]実施形態において、上記のＶＭ動作ではＨＳＭの使用に対応する１つの大幅な変更を使用し、つまり、ＶＭ２０８およびそのメタデータはホスト２３０が非暗号化形態で利用可能なテナントＩＤを含むことから、ホストはＫＤＳ２３５へ送る解錠リクエストにテナントＩＤを含めることができる。少なくとも一部の実施形態において、ＶＭ２０８とテナントＩＤとの間におけるこの関連性は、管理自動化を可能にし、および／またはユーザーインターフェースや報告など便利な機能を可能にするが、セキュリティクリティカルではなく、また不正操作防止型である必要はなく、何故なら偽のテナントＩＤが代用されると、誤った暗号化キーが提供され、ｖＴＰＭ２２０の暗号は解読不能となるからである。
【０１２１】
テナント保有キー
[00136]システムの実施形態は、テナントが、場合によっては独自のデータセンター内で、ＫＤＳ２３５を稼働する責任を負い、そしてテナントがＶＭ運用を実施するためにキーが必要な場合は常にサービスプロバイダーのセキュアなホスティングサービスをテナントにまで拡大してもらうことができるよう、設定され得る。別の実装において、テナントはサードパーティプロバイダーと契約を交わし、ホスティングサービスプロバイダーから隔離されたＫＤＳ２３５をテナントの代わりに運用してもらうことができる。
【０１２２】
[00137]本発明の実施形態は、そのようなシナリオに対応できるよう、容易に拡大することができる。ＫＤＳ２３５は、暗号化されていない形でＶＭ２０８と一緒に保存されたテナントＩＤを使用し、検査表に記載されたネットワークアドレスを検索することになる。同じく、ＶＭ２０８とテナントＩＤとの間におけるこの関連性は、管理自動化を可能にし、またユーザーインターフェースや報告など便利な機能を可能にするが、必ずしもセキュリティクリティカルではなく、つまり、攻撃者が無効なテナントＩＤを代用すると、ＫＤＳ２３５は誤ったテナントのＫＤＳに範囲を広げ、無効なキーを回収するか、または何も回収しないことになる。
【０１２３】
[00138]ｖＴＰＭキー２５５をテナントから回収する場合であっても、ホストの整合性を検証する必要性は残り、これはＨＡＳ２５８を使用して行うことができる。ホスト構成の一部の態様の妥当性確認を目的にテナントがＨＡＳ２５８を提供することは可能である一方、ホスト構成における他の態様、例えば既知のサーバーの識別キーなどは、テナントが利用できるわけではない。したがって、一実装において２つの工程を使用し、つまり、第１に、ホスト２３０、ＨＡＳ２５８およびＫＤＳ２３５の間でのセキュアな会話が本明細書に記載の通り進行して、ホスト２３０の健全性の妥当性確認を行い、ＶＭ２０８の解錠に必要な第１のキーを解除し、そして第２に、ＫＤＳ２３５またはホスト２３０がテナントのサービスにまで範囲を拡大して、完了キーを、場合によってはアテステーション情報を含め、回収する。サービスプロバイダーのキーとテナントのキーの双方が提供されると、ＶＭの暗号を解読することができる。
【０１２４】
[00139]以下の争点の考察を、そのような実装において考慮に入れることができる。
[00140]・地理的に遠く離れたリクエストは、上記のような局所的運用と比べ、障害を起こしやすい、つまり、ネットワーク停止が発生する可能性があり、テナントのサービスが停止する可能性があり、あるいはセキュアな会話の確立に必要なセキュリティキーおよび証明書が失効してしまっている可能性がある。実務上有用となるよう、そのような遠隔キー回収はトラブルシューティングの材料となる。
【０１２５】
[00141]・テナント保有キーの目的は、テナントがリクエストの妥当性確認を行い、適宜、それらを否認できることである。これは手動で行うか、または自動化されたポリシーを使用して行うことができる。これは、有効なリクエストは運用に関して十分な、サービスプロバイダーのセキュアなホスティングサービスによって暗号化署名されたメタデータを含むことにより、そのような決定を下すことが可能になることを意味する。このメタデータは、アテステーション証明書と、アテステーションリクエストへと進行したホストに関する情報をも含み得る。
【０１２６】
ＫＤＳにおける複雑なポリシー
[00142]ｖＴＰＭキー２５５の解除を決定する場合、ＫＤＳ２３５はホストのアテステーション証明書２５７しか見ない、つまり、ホストが有効かつ健全であれば、キーを解除する。
【０１２７】
[00143]本発明の実施形態は、キーを解錠すべきか否か判定するための、より複雑な、リクエスト２５６、ＶＭ２０８およびテナントに関する他の情報を考慮するポリシーを実装するよう、容易に拡大することができる。例えば、システムは、サービスプロバイダーが信頼関係を有する相手方である別の施設への、ＶＭの転送に対応する。しかし、テナントは、国家的データ支配権または他の規制遵守、または全般的留意の範囲である理由により、そのような動きの制限を希望する場合がある。そのようなポリシーは自動ポリシーシステム経由で実装するか、または人間による承認ワークフローが関係し得る。
【０１２８】
[00144]ＫＤＳ２３５はそのようなポリシーに対応することができ、テナント保有キーの場合について論じた通り、ＶＭ運用に関する十分なメタデータがリクエスト２５６に応じて提供されることのみ必要とし、実際、目標と実装は本質的に同じである。しかし、ＫＤＳ２３５はサービスプロバイダーのマルチテナント施設で動作することから、ポリシーの整合性は暗号学的強度に応じて保護されている。推奨される実装は、テナントに、またはサービスプロバイダーの特権を付与された管理者に、ポリシーに署名してもらい、そしてＫＤＳ２３５がテナントまたはサービスプロバイダーの既知の証明書に照らして署名証明書を検証することである。
【０１２９】
[00145]ＶＭＭ２５３は、テナントがポリシーを入力し、そしてＶＭ運用がポリシーによって許可されない場合に障害メッセージを提示することを可能にするための拡大を含み得る。
【０１３０】
他のシナリオに対する一般化
[00146]上記の説明では、暗号化されたｖＴＰＭによってキーが保護された状態で、遮蔽型ＶＭ上でセキュアな運用を行うことに焦点を当てている。しかし、本発明の実施形態は他のシナリオでも適用することができ、標準的なツールを使用する管理自動化をセキュリティインフラストラクチャを使用するセキュリティ保証と組み合わせる場合と同じ便益がもたらされる。
【０１３１】
秘密のセキュアな転送が必要となり得る他の事項
[00147]他にも、暗号化またはセキュアな通信を使用し、そしてキー、証明書または他の秘密の、インフラストラクチャまたは管理システムの侵害に対して、または悪意のある職員に対して脆弱でない形でのセキュアな転送を必要とするシステムが存在する。
【０１３２】
[00148]例えば、分散型アプリケーションサービスなど、関心の的となる何らかの空間内で、テナントはＩＰｓｅｃまたは他の技術の使用によるネットワーク通信の保護を希望する場合がある。これらの技術はコンポーネントシステムへのキーの転送を必要とする。これを行う手段は多数存在するが、従来的な技法でこれらのキーのセキュアな転送を管理することは困難または厄介で、特に、アプリケーションサービスの規模や構成が頻繁に変化する仮想化環境、例えばトラフィック負荷の変化への対応時がそうである。またＶＭＭ２５３のような管理ツールを使用しての、ネットワークの構成およびキーの分配の自動化は、悪意のある管理者による侵害にシステムを曝すことになる。本発明の実施形態は、ＶＭ暗号化キーを保護するｖＴＰＭを使用して、いかなる種類のキーまたは他の秘密も保護するよう一般化することができ、これにより本発明の実施形態を使用して、そのようは秘密の分配を安全に自動化することが可能となる。
【０１３３】
[00149]このシナリオへの拡大要素の例として（ａ）分散型システム内のコンポーネントへのキー、証明書または他の秘密のセキュアな配布を必要とする機構、（ｂ）ＨＡＳ２５８およびＫＤＳ２３５のものと似た機能を有するセキュアなサービス、（ｃ）ＶＭＭ２５３と似た機能を有する管理自動化システム、そして（ｄ）それらの間における、上記にて例示のパターンに沿った協力、すなわち管理システムがプロセスを調整するがセキュリティクリティカルな動作には関与しない状況、が挙げられる。
【０１３４】
妥当性確認済みまたは秘密のデータ転送を必要とする他のシナリオ
[00150]同様に、関心の的となる空間内のシステム、例えば分散型アプリケーションが、構成、ポリシーまたはビジネスデータのセキュアな配布を必要とする状況は、一般的である。「セキュア」はこの場合、情報が秘密であるか、漏洩から保護されるか、整合性の妥当性が確認されるか、あるいはこれらの任意の組み合わせを意味すると考えられる。いずれの場合も、暗号化技術を応用できる。
【０１３５】
[00151]例えば、あるサービス内で複数のシステムが、外部サービスへのアクセスを許可する秘密認証情報の提供を、所有者がテナントであるか、または金融機関など第三者であるかを問わず、受けることを必要とする場合がある。この場合、構成データはプライベートの状態に保たれる。
【０１３６】
[00152]別の例では、あるサービス内のシステムにおいて、システム自体および他のコンポーネントを過負荷から保護するため、費用を抑制するため、システム過負荷を防止するため、あるいはサービス妨害攻撃を阻止するため、規模やトラフィック量を制限する状態に設定される必要がある。これらの場合、情報は、秘密性ではなく侵害防止のための整合性妥当性確認を必要とする（ただし慎重なＩＴ担当職員は限度も秘密に保つことを選好し得る）。
【０１３７】
[00153]別の例では、あるビジネスサービス内のシステムが価格表およびカタログデータを提供される。これらは典型的に業務上の理由から秘密とされるが、それらの整合性も保護され、何故なら侵害された価格表が詐欺取引に使われるおそれがあるからである。多数のシステムにおいて、そのようなデータは、セキュアな管理が簡潔明瞭である集中型データベース内で維持されるが、一部の分散型アーキテクチャーではそのようなセンシティブデータが幅広く配布されてしまい、セキュリティ管理上の課題をもたらすおそれがある。
【０１３８】
[00154]そのような構成データは、何らかの専用フォーマットでのバイナリーファイル、ＸＭＬファイルまたはＪＳＯＮファイルなど、多数の形式を取り得る。フォーマットを問わず、それらの秘密性および整合性を、暗号化技術を使用して保護することができ、また上記のパターンを使用してキーを保護および分配することができる。
【０１３９】
[00155]同じく、標準的な管理システムを使用して、そのような構成またはポリシーデータの配布を自動化することができるが、前述の通り、そうするとそれらをファブリックまたはファブリック管理担当職員からの侵害に曝すことになる。
【０１４０】
[00156]このシナリオへの拡大要素は、（ａ）分散型システム内のコンポーネントへの配布過程で情報の妥当性確認または秘密維持のために暗号化技術を使用する機構、（ｂ）ＨＡＳ２５８およびＫＤＳ２３５のものと似た機能を有するセキュアなサービス、（ｃ）ＶＭＭ２５３と似た機能を有する管理自動化システム、そして（ｄ）それらの間における、上記にて例示のパターンに沿った協力、すなわち管理システムがプロセスを調整するがセキュリティクリティカルな動作には関与しない状況である。
【０１４１】
ＶＭ以外のコンテナの保護
[00157]コンピューター処理用コンテナはＶＭだけではない。他のコンテナの使用も増えつつあるが、ＶＭより小さく、ＶＭに含まれるものが多い。そのような小型コンテナは大抵、例えばウェブサイトのホスティングなど、低コストホスティングに使用される。それらは他のコンテナと比べ、提供する秘密性またはリソース隔離が弱い場合があるが、これは魅力的な、低コストとの引き換えになり得る。
【０１４２】
[00158]別の例はリモートデスクトップサービスであり、これはターミナルサービスとしても知られ、１つのＯＳ環境内で複数のユーザーセッションがホストされるが、各々のセッションが、一般的なコンピューター上の「マイドキュメント」フォルダーに相当する１つの仮想コンテナ内に独自のデータストレージを有する。
【０１４３】
[00159]別の例は、複数のテナントからの情報を含むファイルまたはストレージサービスを、「ストレージアカウント」と呼ばれ得る区分内で配列および管理するものである。
[00160]別の例は、複数のテナントからの情報を含み、データベースと呼ばれるコンテナ内で配列および管理する、データベースサービスである。
【０１４４】
[00161]これらのようなサービスは多くの場合、分散型の「スケールアウト」構成で展開され、複数のサーバー、多くはＶＭが、管理インフラストラクチャの制御下で負荷の取扱いを協働する。
【０１４５】
[00162]そのようなコンテナに収められた情報は、前述のＶＭと同種の保護に値し得る。本発明の実施形態は、遮蔽型ＶＭの場合と同じ形で適用され得る。ＶＭＭ２５３の役割は、アプリケーションホスティングシステムにおけるタスクマネージャー、ＲＤＳ向けの「ブローカー」、またはデータベース向けの分散型データベース管理システムなど、軽量コンテナを展開および管理する同等の管理システムが果たし、またＶＭＭ２５３の場合と同様に、多くの場合、コンテナ管理者およびその運用担当職員は信頼されるべきではない（注意点として、コンテナ管理者およびコンテナホスティングは単一のホストＶＭに制約されるのではなく、多数のＶＭにまたがって分散すると考えられる）。ＶＭの場合におけるホスト２３０の役割は、マシンインスタンス、物理的マシンおよび／またはＶＭが果たし、これらはＶＭの場合におけるＫＤＳ２３５とのセキュアな相互交換と同種の交換に関与し得るが、アテステーションの技術的詳細が異なる可能性があり、それはこの場合における「ホスト」の整合性が、物理的ＴＰＭまたはＵＥＦＩから直接派生するのではなく、ＶＭの整合性から派生するからである。本発明の実施形態をそのような軽量コンテナに当てはめる場合、キー管理システムはｖＴＰＭではない可能性があり、何故なら現在の慣行において、マシンインスタンスは仮想か否かを問わず、１つのＴＰＭしか有することができないからである。同様の保護機構を、各コンテナ毎のキーを保護し、次いでその情報をゲストＯＳ  ｖＴＰＭ経由で保護するよう、定義することができる。また暗号化技法は、Ｍｉｃｒｏｓｏｆｔ社のＢｉｔＬｏｃｋｅｒなど全量暗号化ではなく、よりきめ細かい暗号化技法をファイルレベルで、複数ファイルの集合体へ、またはＲＤＳの場合の「マイドキュメント」フォルダーまたはデータベースサーバーの場合のデータベースなど、別のコンテナへ、適用すればよい。保護機構の細目は、特定の環境に依存する。本明細書に記載のパターンは引き続き有効であり、管理システムは自動化を提供するがセキュリティクリティカルな作業には参加せず、そしてセキュアなホスティングサービスが保証を提供し、そしてコンテナの場合は「信頼コンピューティング基盤」がゲストのＶＳＭ２６６を経由してホスト２６５のＶＳＭに至り、ハードウェア機能に到達する。
【０１４６】
[00163]このシナリオへの拡大要素は、（ａ）分散型システム内のコンポーネントへのキー、証明書または他の秘密のセキュアな配布を必要とするようなコンテナ内での情報保護機構、（ｂ）ＨＡＳ２５８およびＫＤＳ２３５のものと似た機能を有するセキュアなサービス、（ｃ）ＶＭＭ２５３と似た機能を有する管理自動化システム、そして（ｄ）それらの間における、上記にて例示のパターンに沿った協力、すなわち管理システムがプロセスを調整するがセキュリティクリティカルな動作には関与しない状況である。
【０１４７】
ＶＳＭ
[00164]ここでは仮想マシン向けの仮想セキュアモード（ＶＳＭ）について論ずる。ハイパーバイザーは、仮想マシンの仮想プロセッサーが利用できる複数の異なる仮想信頼レベルを構成する、仮想セキュアモードを実装する。メモリーの読み取り、書き込み、および／または実行能力など、様々なメモリーアクセス保護を、メモリーにおいて個々の仮想信頼レベル毎に異なる部分（例：メモリーページ）に関連付けることができる。仮想信頼レベルは１つの階層として編成され、上位の仮想信頼レベルは下位の仮想信頼レベルより多くの特権が付与され、プログラムは下位の仮想信頼レベルのメモリーアクセス保護を変更する能力のある、上位の仮想信頼レベルで稼働する。仮想信頼レベルの数は変動し得、また異なる仮想マシン毎に変動し得るほか、同じ仮想マシン内でも異なる仮想プロセス毎に変動し得る。
【０１４８】
[00165]図３は、１つまたは複数の実施形態に従って本明細書において論じられる技法を実装するコンピューティングデバイス３００の一例を例示するブロック図である。コンピューティングデバイス３００は、多種多様なデバイスのどれであってもよい。例えば、コンピューティングデバイス３００は、デスクトップコンピューター、サーバーコンピューター、ラップトップまたはネットブックコンピューター、タブレットまたはノートパッドコンピューター、モバイルステーション、娯楽用機器、セットトップボックスをディスプレイデバイス、テレビジョンまたは他のディスプレイデバイスに連通連結したもの、携帯電話機または他の無線電話機、ゲームコンソール、自動車コンピューター、ウェアラブルコンピューターなどであってもよい。
【０１４９】
[00166]コンピューティングデバイス３００は、ハイパーバイザーとも呼ばれるハイパーバイザー３０２と、１つまたは複数のコンポーネント３０４とを含む。ハイパーバイザー３０２は、コンポーネント３０４によって提供される機能性へのアクセスを管理する。あるいは、ハイパーバイザー３０２はホストオペレーティングシステム（不記載）上で稼働することもでき、この場合、ホストオペレーティングシステムが、コンポーネント３０４によって提供される機能性へのアクセスを管理する。
【０１５０】
[00167]コンポーネント３０４は、多種多様なプロセッサーコンポーネント、入力／出力（Ｉ／Ｏ）コンポーネント、および／または他のコンポーネントまたはデバイスであってもよい。例えば、コンポーネント３０４は、１つまたは複数のプロセッサーまたはプロセッサーコア、１つまたは複数のメモリーコンポーネント（例：揮発性および／または不揮発性メモリー）、１つまたは複数のストレージデバイス（例：光学および／または磁気ディスク、フラッシュメモリードライブ）、１つまたは複数の通信コンポーネント（例：有線および／または無線ネットワークアダプター）、これらの組み合わせなどを含み得る。コンピューティングデバイス３００の要素として例示されているが、コンポーネント３０４のうち１つまたは複数（例：１つまたは複数のストレージデバイス）を、コンピューティングデバイス３００の外部に実装してもよい。コンピューティングデバイス３００上で稼働する様々なコンポーネントまたはモジュールが、ハイパーバイザー５０２を含め、コンポーネント３０４によって直接および／または他のコンポーネントまたはモジュール経由で間接的に提供される、この機能性にアクセスすることができる。
【０１５１】
[00168]ハイパーバイザー３０２は、仮想マシン３０６がコンピューティングデバイス３００上で稼働することを可能にする。単一の仮想マシン３０６がコンピューティングデバイス３００内に例示されているが、代替的に複数の仮想マシンもコンピューティングデバイス３００上で稼働し得る。仮想マシンとは、物理的コンピューティングデバイスに類似するプログラムを実行可能な、物理的コンピューティングデバイス（あるいは他のマシンまたはシステム）のソフトウェア実装を指す。仮想マシンは、コンポーネント３０４に似た（ただしコンポーネント３０４のソフトウェア実装である）１つまたは複数の仮想コンポーネントを含む。オペレーティングシステムならびに他のアプリケーションも、仮想プロセッサーまたは仮想プロセッサーコア上での稼働、仮想メモリーへのアクセスなどを含め、コンポーネント３０４を使用する場合と同様に、仮想コンポーネントを使用して実行することができる。仮想マシン３０６内で実行されるオペレーティングシステムおよび他のアプリケーションは、仮想マシン内で実行中であることを知る必要が全くなく、また典型的に全く知らない。
【０１５２】
[00169]仮想マシン３０６は、オペレーティングシステム３１２、１つまたは複数のアプリケーション３１４、そして１つまたは複数の仮想コンポーネント３１６を含む。オペレーティングシステム３１２は、含まれる１つまたは複数の仮想プロセッサーまたは仮想プロセッサーコアを、コンポーネント３１６のうち１つまたは複数として稼働または実行し、そしてアプリケーション３１４の実行を管理する。
【０１５３】
[00170]ハイパーバイザー３０２は仮想マシン（ＶＭ）制御モジュール３２２および仮想セキュアモード（ＶＳＭ）モジュール３２４を含む。仮想マシン制御モジュール３２２は、コンポーネント３０４への仮想コンポーネント３１６のマッピングを、物理的プロセッサーまたはプロセッサーコア上での仮想プロセッサーまたはプロセッサーコアの実行スケジュール設定を含め、管理する。仮想セキュアモードモジュール３２４は、仮想マシン３０６向けの仮想セキュアモードを管理し、以下にて詳述する通り、仮想コンポーネント３１６向けの様々な仮想信頼レベルを提供する。仮想信頼レベルは仮想プロセッサー向けの実行環境であり、各仮想プロセッサーが、他のどの仮想プロセッサーとも無関係に１つの仮想信頼レベルに入ったり出たりすることができる。２つの別々のモジュールとして例示されているが、注意すべき点として、モジュール３２２および３２４の機能性を単一モジュールに統合することができる（例：仮想セキュアモードモジュール３２４の機能性を、ＶＭ制御モジュール３２２に含めることができる）。
【０１５４】
[00171]仮想セキュアモードモジュール３２４は、仮想セキュアモードが仮想マシン３０６向けに有効化される場合、仮想マシン３０６の仮想プロセッサー（１つまたは複数の仮想コンポーネント３１６）が複数の異なる仮想信頼レベル（ＶＴＬ）を利用できるようにする。仮想セキュアモードは様々な形で、例えば仮想プロセッサー上で稼働中のプログラム（例：仮想セキュアモードローダー）からのリクエストへの応答として、またはハイパーバイザー３０２の構成設定への応答として、またはコンピューティングデバイス３００の管理者または使用者から提供される入力への応答として、有効化または無効化することができる。コンピューティングデバイス３００は場合により複数の仮想マシンを含んでいてもよく、また仮想セキュアモードは異なる仮想マシンについて独立的に有効化または無効化することができる。したがって、任意の時点で仮想セキュアモードをコンピューティングデバイス３００の１つまたは複数の仮想マシンについて有効化し、そしてコンピューティングデバイス３００における他の１つまたは複数の仮想マシンについて無効化することができる。
【０１５５】
[00172]ハイパーバイザー３０２は、オペレーティングシステム３１２が仮想セキュアモードに対するサポートの存在のほか、サポートされる仮想信頼レベルの数など仮想セキュアモードに関する他の情報も検出する手段となり得る機構を提供する。一例として、ハイパーバイザー３０２は仮想セキュアモードに対するサポートの存在および仮想信頼レベルの数について、オペレーティングシステム３１２が読み取ることができるレポートを、仮想レジスタ経由（例：ＣＰＵＩＤリーフ経由）で報告することができる。
【０１５６】
[00173]オペレーティングシステム３１２およびハイパーバイザー３０２は、メモリーページ（または単にページ）と呼ばれる複数のブロックまたは部分で構成されるメモリーの保存およびメモリーへのアクセスを管理する。メモリーは、例えば揮発性メモリー（例：ＲＡＭ）または不揮発性メモリー（例：フラッシュメモリー）など、どのような種類のＣＰＵ（中央処理装置）アドレス可能メモリーであってもよい。異なるプログラムにメモリーページを割り当てることができ、これらのプログラムはアプリケーション３１４、オペレーティングシステム３１２のプログラム、あるいは他のコンポーネントまたはモジュールであってもよい。
【０１５７】
[00174]オペレーティングシステム３１２およびハイパーバイザー３０２は、プログラムによるメモリーページへの異なる種類のアクセス、例えば読み取りアクセス、書き込みアクセスおよび実行アクセスなどを許可し得る。読み取りアクセス（読み取りパーミッションとも呼ばれる）があるメモリーページに付与される場合、該メモリーページの内容の読み取り（例：特定の１つまたは複数のプログラムによる読み取り）が許可される。書き込みアクセス（書き込みパーミッションとも呼ばれる）があるメモリーページに付与される場合、該メモリーページへの内容の書き込み（例：特定の１つまたは複数のプログラムによる書き込み）が許可される。実行アクセス（実行パーミッションとも呼ばれる）があるメモリーページに付与される場合、該メモリーページに保存されているコードの実行が許可される。
【０１５８】
[00175]コンピューティングデバイス３００は仮想メモリーを採用し、これは別のアドレス空間（例：物理メモリー）にマッピングされたアドレス空間である。アプリケーションは仮想メモリー空間を割り当てられ、その空間内でアプリケーションコードが実行され、データが保存される。メモリーマネージャー（例：プロセッサーのメモリーマネージャー）は、仮想メモリー空間内の仮想メモリーアドレスの、他のメモリー空間内のアドレスへのマッピングを管理する。仮想メモリーアドレスを仮想メモリー空間から別のメモリー空間へマッピングする場合、アドレス変換が行われる。アドレス変換表はこのマッピングの実行に使用され、これを本明細書において論じられている技法の実装に活用することができる。
【０１５９】
[00176]図４は、１つまたは複数の実施形態に従う多重仮想信頼レベルの一例を例示する図である。仮想プロセッサー４０２は、図３の仮想コンポーネント３１６でもよいが、これは任意の数（ｘ）の異なる仮想信頼レベル４０４（０）、・・・、４０４（ｘ）にて稼働し得る。仮想信頼レベル４０４は、図３の仮想セキュアモードモジュール３２４によって提供される仮想セキュアモードの一部として含まれる。１つまたは複数の実施形態において、仮想プロセッサー４０２は通常モード（例：ＶＴＬ０）およびセキュアモード（例：ＶＴＬ１）と呼ばれる２つの異なる仮想信頼レベルで稼働し得る。
【０１６０】
[00177]各仮想信頼レベルは、各々に関連付けられた一連のメモリーアクセス保護４０６を有する。異なる仮想信頼レベルが異なる一連のアクセス保護を有することができ、ある仮想信頼レベルの一連のアクセス保護は、仮想プロセッサーが該仮想信頼レベルにおいて稼働中にアクセスできるメモリーおよび／またはメモリーへのアクセス方法の制限に使用され得る。
【０１６１】
[00178]各仮想信頼レベルは、各々に関連付けられた仮想プロセッサー状態４０８も有する。仮想プロセッサー状態は、仮想プロセッサー４０２における多種多様なレジスタ設定、構成値などを指す。異なる仮想信頼レベルに対して別々の仮想プロセッサー状態４０８が維持されることにより、ある仮想信頼レベルが別の仮想信頼レベルのプロセッサー状態にアクセスすることを防ぐ。異なる仮想信頼レベル毎に何らかの仮想プロセッサー状態（プライベートプロセッサー状態とも呼ばれる）が別々に維持されるが、他のプロセッサー状態（共有プロセッサー状態とも呼ばれる）は、以下にて詳述する通り、複数の仮想信頼レベルにまたがって共有され得る。
【０１６２】
[00179]各仮想信頼レベルは、各々に関連付けられた割り込みサブシステム４１０も有する。割り込みサブシステムは、仮想プロセッサー４０２における割り込みを管理するための様々なモジュール、プログラム、設定などを指す。異なる仮想信頼レベル毎に別々の割り込みサブシステム４１０が維持されることにより、割り込みを１つの仮想信頼レベルで安全に管理することが可能となる一方、別の（以下にて詳述する通り、下位の）仮想信頼レベルで稼働中のプログラムが予期せぬ割り込みを生じる事態または割り込みを隠してしまう事態を防ぐことができる。
【０１６３】
[00180]仮想信頼レベルは１つの階層として編成され、上位の仮想信頼レベルは下位の仮想信頼レベルより多くの特権が付与され、下位の仮想信頼レベルは上位の仮想信頼レベルよりも付与される特権が少ない。別の仮想信頼レベルより多くの特権が付与される仮想信頼レベルで動作中の仮想プロセッサー４０２上で稼働中のプログラムは、他の仮想信頼レベルで動作中のプログラムまたはデバイスによるメモリー記憶位置へのアクセスを制限することができる。仮想プロセッサー４０２上で稼働中のプログラムは、場合により、仮想プロセッサー４０２が稼働している仮想信頼レベルについて、メモリーアクセス保護を変更することもできる。ただし、別の仮想信頼レベルよりも付与される特権が少ない仮想信頼レベルで動作中の仮想プロセッサー４０２上で稼働中のプログラムは、他の仮想信頼レベルで動作中のプログラムまたはデバイスによるメモリー記憶位置へのアクセスを制限することができない。１つまたは複数の実施形態において、仮想信頼レベルは整数値（例：０、１、２、など）で分類され、付与された整数値が大きい仮想信頼レベルは、付与された整数値が小さい仮想信頼レベルよりも上位の仮想信頼レベルとなる。あるいは、付与された整数値が小さい仮想信頼レベルを、付与された整数値がより大きい仮想信頼レベルよりも上位の仮想信頼レベルとするか、または他の分類技法を用いてもよい（例：文字または記号など）。
【０１６４】
[00181]１つまたは複数の実施形態において、メモリーアクセス保護はページ単位（メモリーページ単位）に基づいて実装される。各メモリーページは関連付けられたメモリーアクセス保護を有し、あるメモリーページのメモリーアクセス保護を、他のメモリーページのメモリーアクセス保護と無関係に変更することができる。メモリーアクセス保護は、特定のページまたは隣接アドレス範囲が同じメモリーアクセス保護を有する旨のいかなる要件とも無関係に行うこともできる。本明細書ではページ単位に基づいて実装されるメモリーアクセス保護に言及するが、注意すべき点として、メモリーアクセス保護は代替的に、メモリーページの一部、複数のメモリーページ、アドレス範囲など、メモリーアドレスから成る他の区分またはブロックにおいて実装することもできる。
【０１６５】
[00182]ある仮想信頼レベルのメモリーアクセス保護は、多種多様な形で変更することができる。１つまたは複数の実施形態において、仮想セキュアモードモジュール３２４は、仮想プロセッサー４０２上で稼働中のプログラムによって、ある仮想信頼レベルのメモリーアクセス保護を変更するために呼び出されるインターフェース（例：機能呼び出し）を顕在化させ、変更対象となるメモリーアクセス保護を特定する。呼び出されるインターフェースへの応答として、仮想セキュアモジュール３２４はメモリーアクセス保護をリクエスト通りに変更する（変更は下位の（または場合により同じ）仮想信頼レベルが対象であると想定する）。
【０１６６】
[00183]仮想プロセッサー４０２は、任意の時点で１つの仮想信頼レベルでしか稼働または動作することができず、また特定の時点でプロセッサー４０２が稼働中または動作中である仮想信頼レベルは、その特定の時点でのプロセッサー４０２のアクティブ仮想信頼レベルと呼ばれる。仮想プロセッサー４０２は、ある仮想信頼レベルから別の仮想信頼レベルへと、様々な形で、例えば特定の事象（例：割り込み、特定のコードシーケンスの実行など）への応答として転換し得る。
【０１６７】
[00184]図３に戻り、コンポーネント３０４に当たる物理プロセッサーは、仮想コンポーネント３１６に当たる仮想プロセッサーに仮想マシンメモリー空間を割り当て、アドレス変換表を維持する。アドレス変換表は、仮想マシン３０６に割り当てられた仮想マシンメモリー空間内のアドレスを、物理メモリー空間（コンポーネント３０４に当たる物理メモリー）内のアドレスにマッピングする。任意の時点で物理メモリー空間のアドレスのうち、仮想マシンメモリー空間内の特定のアドレスにマッピングされるアドレスは変わる可能性があり、またメモリーマネージャー（例：物理プロセッサーの一部）によって制御される。メモリーマネージャーはマッピングを変更することができ、様々な公開技法および／または専用技法を用いて、複数の異なる仮想プロセッサーが物理メモリー空間を共有すること、および／または仮想マシンメモリー空間を物理メモリー空間より大きくすることが可能となる。
【０１６８】
[00185]仮想セキュアモードモジュール３２４は、仮想マシンメモリー空間の各メモリーページのメモリーアクセス保護を維持し、仮想マシン３０６における個々の仮想プロセッサーの仮想信頼レベル毎にメモリーアクセス保護を特定する。仮想セキュアモードモジュール３２４はメモリーページのメモリーアクセス保護を、多種多様な形で維持することができる。１つまたは複数の実施形態において、仮想セキュアモードモジュール３２４は、仮想マシン３０６における個々の仮想プロセッサーの仮想信頼レベル毎のメモリーアクセス保護に関する表、リストまたは他の記録を維持する。あるいは、仮想セキュアモードモジュール３２４はメモリーアクセス保護を他の形で、例えば仮想マシン３０６に割り当てられた仮想マシンメモリー空間内のアドレスを物理メモリー空間内のアドレスにマッピングするアドレス変換表の一部として、維持することもできる。
【０１６９】
[00186]１つまたは複数の実施形態において、物理プロセッサーは、仮想から物理への多様な変換層に対応し得る。各仮想マシンは独自の仮想からゲストの物理ページへのマッピングを管理することができる。ハイパーバイザーは、ゲストの物理ページから真の物理ページへのマッピングを管理する。加えて、各仮想信頼レベルは、このマシン物理ページへの最終マッピングを、任意の下位の仮想信頼レベルへの適用状況に応じて編集することができる。
【０１７０】
[00187]図５は、１つまたは複数の実施形態に従って複数の仮想信頼レベルを実装するシステム例５００を例示する図である。システム例５００は２つの仮想プロセッサー、すなわち仮想プロセッサー５０２および仮想プロセッサー５０４を含む。仮想プロセッサー５０２および５０４は各々、図３の仮想コンポーネント３１６および／または図４の仮想プロセッサー４０２であってもよい。
【０１７１】
[00188]仮想プロセッサー５０２および５０４は、ＶＴＬ０およびＶＴＬ１と呼ばれる２つの異なる仮想信頼レベルを実装する。各仮想プロセッサーの各仮想信頼レベルは独自の局所割り込みサブシステムを有し、これらは高度プログラマブル割り込み制御装置（ＡＰＩＣ）５０６（仮想プロセッサー５０２のＶＴＬ０向けの割り込み制御装置）、ＡＰＩＣ５０８（仮想プロセッサー５０２のＶＴＬ１向けの割り込み制御装置）、ＡＰＩＣ５１０（仮想プロセッサー５０４のＶＴＬ０向けの割り込み制御装置）、およびＡＰＩＣ５１２（仮想プロセッサー５０４のＶＴＬ１向けの割り込み制御装置）として例示される。任意の時点で、仮想プロセッサー５０２および５０４の動作中における仮想信頼レベルは、同じかまたは異なっていてもよい。したがって、複数の仮想プロセッサーが同時に、異なる仮想信頼レベルで稼働中であってもよい。
【０１７２】
[00189]システム５００はＶＴＬ０におけるメモリーアクセス保護５１４の記録のほか、ＶＴＬ１におけるメモリーアクセス保護５１６の記録も維持する。ハイパーバイザー（例：図３の仮想セキュアモードモジュール３２４）は、メモリーアクセス保護５１４および５１６を維持する。仮想プロセッサー５０２または５０４から、あるメモリーページのアドレスへのアクセスが発生する都度、ＶＴＬ０で稼働中の場合、ハイパーバイザーはアクセス中のアドレスを含むメモリーページについて、ＶＴＬ０のアクセスメモリー保護５１４をチェックする。ＶＴＬ０のアクセスメモリー保護５１４がアクセス許可を示す場合、ゲストの物理メモリーからシステムの物理メモリーへのマップ５１８が、アドレスをシステムの物理メモリー５２０のメモリーアドレスにマッピングするために使用され、リクエストされたアクセスが実行される。ゲストの物理メモリーからシステムの物理メモリーへのマップ５１８は、例えば、前述の通り、仮想マシンメモリー空間内のアドレス（ゲストの物理アドレス（ＧＰＡ））を物理メモリー空間内のアドレス（システムの物理アドレス（ＳＰＡ））にマッピングするアドレス変換表である。一方、ＶＴＬ０のアクセスメモリー保護５１４がアクセス不許可を示す場合、リクエストされたアクセスは拒否される（実行されない）。リクエストされたアクセスが拒否されると、アドレスを物理メモリー５２０のメモリーアドレスにマッピングする必要はない。
【０１７３】
[00190]同様に、仮想プロセッサー５０２または５０４から、あるメモリーページのアドレスへのアクセスが発生する都度、ＶＴＬ１で稼働中の場合、ハイパーバイザーはアクセス中のアドレスを含むメモリーページについて、ＶＴＬ１のアクセスメモリー保護５１６をチェックする。ＶＴＬ１のアクセスメモリー保護５１６がアクセス許可を示す場合、ゲストの物理メモリーからシステムの物理メモリーへのマップ５１８が、アドレスをシステムの物理メモリー５２０のメモリーアドレスにマッピングするために使用され、リクエストされたアクセスが実行される。一方、ＶＴＬ１のアクセスメモリー保護５１６がアクセス不許可を示す場合、リクエストされたアクセスは拒否される（実行されない）。リクエストされたアクセスが拒否されると、アドレスを物理メモリー５２０のメモリーアドレスにマッピングする必要はない。
【０１７４】
[00191]多種多様なメモリーアクセス保護が、メモリーアクセス保護５１４および５１６として特定され得る。例えば、メモリーアクセス保護は以下の保護を含み得る：アクセス不可（メモリーページ上のアドレスの読み取り、書き込み、または実行は不可）。読み取り専用、実行不可（メモリーページ上のアドレスの読み取りはできるが、書き込みまたは実行は不可）。読み取り専用、実行可（メモリーページ上のアドレスの読み取りまたは実行はできるが、書き込みは不可）。読み取り／書き込み、実行不可（メモリーページ上のアドレスの読み取りまたは書き込みはできるが、実行は不可）、および読み取り／書き込み、実行可（メモリーページ上のアドレスの読み取り、書き込み、または実行が可能である）。
【０１７５】
[00192]これらの異なるメモリーアクセス保護は、多種多様な使用シナリオに対応する。例えば、ＶＴＬ１で稼働中の場合、あるメモリーページにおけるＶＴＬ０のメモリーアクセス保護を「アクセス不可」に設定することができる。この設定は該メモリーページを「セキュア」モードに置き、該メモリーページはＶＴＬ０の仮想プロセッサー５０２および／または５０４上で稼働中のプログラムにとってアクセス不可となる。別の例を挙げると、ＶＴＬ１で稼働中の場合、あるメモリーページにおけるＶＴＬ０のメモリーアクセス保護を「読み取り専用、実行可」に設定することができる。この設定は該メモリーページを、ＶＴＬ０の仮想プロセッサー５０２および／または５０４上で稼働中のプログラムによる読み取りおよび実行は可能であるが、ＶＴＬ０の仮想プロセッサー５０２および／または５０４上で稼働中のプログラムによる変更は不可のモードに置く。したがって、様々なコード整合性プログラムまたは他のセキュリティプログラムを、ＶＴＬ１のメモリーページに保存し、そしてＶＴＬ０のプログラムによって稼働させる一方、ＶＴＬ０で稼働中のプログラムによるプログラムの変更は不可であることを保証できる。
【０１７６】
[00193]場合により付加的デバイスを、特定の仮想信頼レベルに関連付けることもできる。メモリーページにアクセスする（例：直接メモリーアクセス（ＤＭＡ）を行う）任意の付加的デバイスを、仮想信頼レベルに関連付けることができる。システム５００は、デバイス例５２２および５２４を含む。デバイス５２２はＶＴＬ０に関連付けられ、デバイス５２２は、ＶＴＬ０で稼働中の仮想プロセッサー５０２および５０４と同様に、ＶＴＬ０のメモリーアクセス保護５１４に従ってメモリーページへのアクセスを許可される。同様に、デバイス５２４はＶＴＬ１に関連付けられ、デバイス５２４は、ＶＴＬ１で稼働中の仮想プロセッサー５０２および５０４と同様に、ＶＴＬ１のメモリーアクセス保護５１６に従ってメモリーページへのアクセスを許可される。
【０１７７】
[00194]１つまたは複数の実施形態において、デバイス５２２および５２４は各々、最下位の仮想信頼レベル（例：ＶＴＬ０）で動作するよう初期化される。仮想プロセッサー５０２または５０４は、あるデバイスの構成を、アクティブＶＴＬに関連付けるか、または場合により下位のＶＴＬに関連付けるよう設定することができる。仮想プロセッサー５０２または５０４は、あるデバイスの構成を、様々な形で、例えばハイパーバイザー３０２によって顕在化される呼び出し（例：ある機能）の起動によって、特定のＶＴＬに関連付けるよう設定することができる。
【０１７８】
[00195]図３の仮想セキュアモードモジュール３２４は、どのデバイスがどの仮想信頼レベルに関連付けられるかに関する記録を維持する。モジュール３２４は、どの仮想信頼レベルがどのデバイスに関連付けられるかの変化を反映する形で、記録を更新する。仮想セキュアモードモジュール３２４は、任意の時点で個々の仮想プロセッサー５０２および５０４がどの仮想信頼レベルで動作中であるかに関する記録も維持する。仮想プロセッサー５０２および５０４は、ある仮想信頼レベルから別の仮想信頼レベルへと、様々な形で転換することができ、またそのような転換が発生する都度、仮想信頼レベルの転換先の指標が、モジュール３２４によって維持される記録に記載される。
【０１７９】
[00196]例示されているシステム例５００において、メモリーアクセス保護５１４および５１６は異なる仮想信頼レベルについて別々に実装され、また共通のメモリーマップ５１８は、すべての仮想信頼レベルによって共有される。あるいは、メモリーアクセス保護５１４および５１６は、メモリーマップ５１８の一部として実装され得る。そのような状況の場合、単一のメモリーマップ５１８は、すべての仮想信頼レベルのメモリーアクセス保護を含む形で、あるいは個々のメモリーマップが異なる仮想信頼レベルのメモリーアクセス保護を含む別々のメモリーマップ（メモリーマップ５１８に似たマップ）を含む形で実装され得る。
【０１８０】
[00197]図３に戻り、１つまたは複数の実施形態において、仮想マシン３０６の仮想プロセッサーは、ＶＴＬ０など、単一の仮想信頼レベルで稼働するよう初期化される。仮想信頼レベルが１つしかない場合、仮想マシン３０６は、仮想マシン３０６については有効化されない仮想セキュアモードとも呼ばれ得る。上位の仮想信頼レベルで稼働するため、仮想マシン３０６は１つまたは複数の上位の仮想信頼レベルについて有効化される（仮想マシン３０６の仮想セキュアモードの有効化とも呼ばれる）。上位の仮想信頼レベルが有効化された後、上位の仮想信頼レベルで稼働中のプログラムは、下位の仮想信頼レベルのメモリーアクセス保護を変更することができる。
【０１８１】
[00198]１つまたは複数の実施形態において、１つまたは複数の上位の仮想信頼レベルを様々な時点で、仮想マシン３０６について有効化することができる。例えば、１つまたは複数の上位の仮想信頼レベルを、仮想マシン３０６の作成過程、および／または仮想マシン３０６の起動が完了し、一定の基準時間にわたり（例：数分または数時間）稼働させた後、ハイパーバイザー３０２の起動過程で、仮想マシン３０６について有効化することができる。
【０１８２】
[00199]図６は、１つまたは複数の実施形態に従って仮想マシン向けの仮想セキュアモードを有効化するプロセス例６００を例示するフローチャートである。プロセス６００は、仮想マシン内で稼働中のプログラムおよびハイパーバイザー、例えば図３の仮想マシン３０６内で稼働中のプログラムおよび図３のハイパーバイザー３０２によって実行され、またソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせにおいて実装され得る。プロセス６００は一連の行為として示されており、様々な行為の操作の実施について示されている順序に限定されるわけではない。プロセス６００は、仮想マシンの仮想セキュアモードを有効化するプロセスの一例であり、仮想マシンの仮想セキュアモードの有効化に関する付加的議論は本明細書において、様々な図面を参照する形で記載される。
【０１８３】
[00200]プロセス６００において、仮想マシン内で稼働中のプログラムは仮想セキュアモードイメージをメモリーにロードする（行為６０２）。プログラムは（仮想セキュアモードがまだ有効化されていないとしても）最下位の仮想信頼レベルで稼働中であると捉えることができる。プログラムが稼働中である仮想信頼レベルは、開始仮想信頼レベルとも呼ばれる。１つまたは複数の実施形態において、仮想セキュアモードイメージは、仮想マシンの仮想メモリー空間のメモリーページに仮想セキュアモードイメージをコピーまたは別段に配置するプログラム（仮想セキュアモードローダーとも呼ばれ得る）によって、メモリーにロードされる。仮想セキュアモードイメージとは、実行されると仮想セキュアモードを実装するコードおよびデータを指す（例：プロセッサーによって実行可能なオブジェクトコード）。
【０１８４】
[00201]仮想セキュアモードイメージがロードされるメモリーページについて、ハイパーバイザーも（例：仮想セキュアモードイメージをロードするプログラムによって）通知を受ける。ハイパーバイザーは様々な形で、例えば仮想セキュアモードローダーから通知を受け、ハイパーバイザーによって顕在化される呼び出し（ハイパーコールとも呼ばれる）を起動し、そしてハイパーコールのパラメーターとして、仮想セキュアモードイメージがロードされるメモリーページの指標を提供し得る。ハイパーコールの例として、ＨｖＬｏａｄＶｓｍＩｍａｇｅ（）というハイパーコールが挙げられる。
【０１８５】
[00202]仮想セキュアモードイメージがロードされるメモリーページの通知への応答として、ハイパーバイザーはこれらのメモリーページを、開始仮想信頼レベルにとってアクセス不能にする（行為６０４）。ハイパーバイザーはこれらのメモリーページを、開始仮想信頼レベルよりも下位に当たる仮想信頼レベル（存在する場合）からもアクセス不能にする。メモリーページは様々な形で、例えば開始仮想信頼レベルについて（および開始仮想信頼レベルよりも下位に当たる仮想信頼レベルが存在する場合はそれについても）メモリーページのメモリーアクセス保護を「アクセス不可」にするといった形で、アクセス不能にすることができる。
【０１８６】
[00203]加えて、ハイパーバイザーは仮想セキュアモードイメージを準備する（行為６０６）。仮想セキュアモードイメージの準備とは、仮想セキュアモードイメージの実行および検証が可能な状態にハイパーバイザーを置くことを指す。この準備は、仮想セキュアモードイメージの保存場所（例：メモリーページ）に関する様々な内部状態の記録と、仮想セキュアモードイメージのハッシュ値の生成も含み得る。上位の仮想信頼レベルが仮想プロセッサー上で有効化された後での最初の上位の仮想信頼レベルへの進入後、仮想プロセッサーは適切に定義された状態で実行されることになると予想される。これにより、初期のプログラムまたは上位の仮想信頼レベルで稼働中のプログラムが適正に動作することが保証される。初期プログラムまたは上位の仮想信頼レベルで稼働するプログラムはこの情報を、上位の仮想信頼レベルでの実行環境をブートストラップする時点で使用することができる。
【０１８７】
[00204]仮想セキュアモードイメージのハッシュ値は、セキュアハッシュアルゴリズム（ＳＨＡ）ファミリーのハッシング関数のいずれかなど、様々な公開および／または専用のハッシング関数のいずれかを使用して、生成することができる。ハッシュ値は、すべてのメモリーページにまたがる仮想セキュアモードイメージのハッシュ値であるか、または仮想セキュアモードイメージの少なくとも一部がロードされるメモリーページ各々のハッシュ値の集合であってもよい。ハッシュ値は、例えば後でハイパーバイザーにより、仮想セキュアモードイメージがメモリーにロードされた後に改竄されていないことを検証する目的で使用され得る。ハッシュ値の別の用途は、ＶＴＬのソフトウェア構成をＴＰＭがアテステーションできるよう、ＰＣＲレジスタ状態に追加するためにＴＰＭへ送ることである。
【０１８８】
[00205]ハイパーバイザーは次いでターゲット仮想信頼レベルを、開始仮想プロセッサー上で有効化する（行為６０８）。ターゲット仮想信頼レベルとは、開始仮想信頼レベルより上位の仮想信頼レベルを指す。開始仮想プロセッサーとは、仮想セキュアモードローダーを稼働中の仮想プロセッサーを指す。１つまたは複数の実施形態において、ハイパーバイザーは、仮想セキュアモードローダーによって起動中のハイパーバイザーによって顕在化されたハイパーコールへの応答として、開始仮想プロセッサー上でターゲット仮想信頼レベルを有効化する。ハイパーコールの例として、ＨｖＥｎａｂｌｅＶｔｌ（）というハイパーコールが挙げられる。
【０１８９】
[00206]ハイパーバイザーは次いで、仮想マシン内の他の仮想プロセッサー上でターゲット仮想信頼レベルを有効化する（行為６１０）。１つまたは複数の実施形態において、ハイパーバイザーは、仮想セキュアモードローダーによって起動中のハイパーバイザーによって顕在化されたハイパーコールへの応答として、他の仮想プロセッサー上でターゲット仮想信頼レベルを有効化する。仮想セキュアモードローダーは、ハイパーコールのパラメーターとして、ターゲット仮想信頼レベルが有効化されることになる仮想プロセッサーの識別子を提供し得るか、あるいは代替的に、ハイパーコールは仮想マシン内の他のすべての仮想プロセッサー上でターゲット仮想信頼レベルを有効化するよう指示し得る。また仮想セキュアモードローダーは場合により、ターゲット仮想信頼レベルが有効化されている他の仮想プロセッサーのターゲット仮想信頼レベル向けに使用するための、初期の仮想プロセッサーコンテキストをも提供し得る。ハイパーコールの例として、ＨｖＥｎａｂｌｅＶｔｌ（）というハイパーコールが挙げられる。
【０１９０】
[00207]３つ以上の仮想信頼レベルが実装される実施形態において、行為６０８および６１０は有効化されることになる付加的な上位の仮想信頼レベル各々について反復され得る。上位の仮想信頼レベル各々について、ハイパーバイザーによって顕在化されるハイパーコールは仮想セキュアモードローダー（または他の、有効化されているターゲット仮想信頼レベルより下位の仮想信頼レベルで稼働中のプログラム）によって起動される。
【０１９１】
[00208]１つまたは複数の実施形態において、仮想マシンの仮想信頼レベルをそれぞれ別々に有効化および無効化することができる。仮想信頼レベルは、仮想信頼レベルが無効化されることになる仮想プロセッサーを特定するハイパーバイザーのコール（例：ＨｖＤｉｓａｂｌｅＶｔｌＶｐというハイパーコール）の起動により、プロセッサー上で無効化され得る。コールは、無効化されている仮想信頼レベルで動作中の仮想プロセッサーによって起動される。コールへの応答として、ハイパーバイザーは該仮想信頼レベルを、特定された仮想プロセッサー上で無効化する。ハイパーバイザーは場合により、特定された仮想プロセッサーが下位の仮想信頼レベルで稼働中の状態となるよう、特定された仮想プロセッサー上で下位の仮想信頼レベルへの退出をトリガーする。
【０１９２】
[00209]加えて、１つまたは複数の実施形態において、仮想マシンにおける上位の仮想信頼レベルをすべて無効化し、事実上、仮想マシンの仮想セキュアモードを排除することもできる。仮想マシンの１つの仮想プロセッサー（最終仮想プロセッサーと呼ばれる）を除くすべての仮想プロセッサー上で、最下位を除くすべての仮想信頼レベルを無効化することにより、仮想マシンから仮想セキュアモードを排除することができる。上位の仮想信頼レベルは、上位の仮想信頼レベルが無効化されることになる仮想プロセッサーを特定するハイパーバイザーのコール（例：ＨｖＤｉｓａｂｌｅＶｔｌＶｐというハイパーコール）の起動により、プロセッサー上で無効化され得る。コールは、無効化されている上位の仮想信頼レベルで動作中の仮想プロセッサーによって起動される。コールへの応答として、ハイパーバイザーは最下位を除くすべての仮想信頼レベルを、特定された仮想プロセッサー上で無効化する。
【０１９３】
[00210]次いで、最下位を除くすべての仮想信頼レベルが、仮想マシンの最終仮想プロセッサー上で無効化される。上位の仮想信頼レベルは、ハイパーバイザーのコール（例：ＨｖＤｉｓａｂｌｅＶＴＬというハイパーコール）の起動によって無効化される。コールは、無効化されている上位の仮想信頼レベルで動作中の最終仮想プロセッサーによって起動される。コールへの応答として、ハイパーバイザーは最下位の仮想信頼レベルへの退出を、最終仮想プロセッサー上でトリガーする。この段階で、仮想マシン内の仮想プロセッサーはすべて、最下位の仮想信頼レベルで稼働中である。次いで、仮想セキュアモードイメージが、ハイパーバイザーのコール（例：ＨｖＵｎｌｏａｄＶｓｍというハイパーコール）の起動によってアンロードされる。このコールへの応答として、すべてのメモリーアクセス保護が各々の元来の状態に戻される結果、メモリーページは、アクセス可能な仮想セキュアモードイメージを保存しているメモリーページ（例：行為６０４でアクセス不能にされたメモリー）を含め、最下位の仮想信頼レベルにとってアクセス可能となる。
【０１９４】
[00211]代替的実施形態において、ハイパーバイザーは仮想ＣＰＵを最高特権ＶＴＬで始動し、そこに存在するコードが下位のＶＴＬレベルを始動する。これは同様の系統を進むが、一部の実施形態では下位のＶＴＬレベルに誤りが生じないよう上位のＶＴＬレベルが信頼され得ることから、簡略化され得る。
【０１９５】
[00212]図４に戻り、仮想プロセッサー４０２は、アクティブ仮想信頼レベルを様々な形で変えることができる。下位の仮想信頼レベルから上位の仮想信頼レベルへの転換または変更は、上位の仮想信頼レベルへの進入とも呼ばれ、また上位の仮想信頼レベルから下位の仮想信頼レベルへの転換または変更は、上位の仮想信頼レベルからの退出とも呼ばれる。
【０１９６】
[00213]１つまたは複数の実施形態において、仮想プロセッサー４０２は下位の仮想信頼レベルから上位の仮想信頼レベルへと、１つまたは複数の事象発生、例えば仮想信頼レベルコール、上位の仮想信頼レベルに代わる割り込み、トラップ（例：ページフォールトなど、下位の仮想信頼レベルに代わり一定種類の障害を上位の仮想信頼レベルが処理することの許可）、または上位の仮想信頼レベルのインターセプトなどへの応答として、転換または変更し得る。仮想信頼レベルコールとは、特定の１つまたは複数の命令（例：特定の命令順序）が、現在の仮想信頼レベルから上位の仮想信頼レベルへと遷移する形で実行されることを指す。上位の仮想信頼レベルに代わる割り込みとは、現在の仮想信頼レベルより上位の仮想信頼レベルに対する（目標とする）割り込みを受けることを指す。上位の仮想信頼レベルのインターセプトとは、上位の仮想信頼レベルの保護されたアドレスまたは保護されたコンポーネント、例えば上位の仮想信頼レベルのレジスタ、上位の仮想信頼レベルに関連付けられたＩ／Ｏポート、または上位の仮想信頼レベルに関連付けられたメモリーページなどにアクセスする動作を指す。
【０１９７】
[00214]仮想プロセッサー４０２における何らかのプロセッサー状態が、異なる仮想信頼レベルにまたがって共有され、これは共有プロセッサー状態とも呼ばれる。共有プロセッサー状態は、アクティブ仮想信頼レベルが変化し、変化する仮想信頼レベルの効率性が向上する場合は変化する必要はない。しかし、仮想プロセッサー４０２における他のプロセッサー状態は、異なる仮想信頼レベルにまたがって共有されず、これはプライベートプロセッサー状態とも呼ばれる。プライベートプロセッサー状態は、仮想プロセッサー状態４０８として例示される通り、アクティブ仮想信頼レベルが変化すると変わる。
【０１９８】
[00215]注意すべき点として、アクティブ仮想信頼レベルが変化しても共有プロセッサー状態は不変のままであるが、ある仮想信頼レベルで稼働中のプログラムは、仮想信頼レベルがアクティブとなった理由次第では共有プロセッサー状態の扱い方に関して異なるポリシーを有し得る。例えば、仮想信頼レベルコールにより、ある仮想信頼レベルがアクティブとなる場合、新たなアクティブ仮想信頼レベルで稼働中のプログラムは共有プロセッサー状態を保存しなくてもよく、それは従前の仮想信頼レベル（新たなアクティブ仮想信頼レベルに対するコールを起動した仮想信頼レベル）でのプログラムが、共有プロセッサー状態の変化を許容し得るからである。一方、ある仮想信頼レベルが割り込みによりアクティブとなる場合、従前の仮想信頼レベル（割り込まれた仮想信頼レベル）で稼働中のプログラムは、仮想信頼レベルの変化が発生したことに気付いていないことから、共有プロセッサー状態の変化を許容できないと考えられる。この場合、新たなアクティブ仮想信頼レベルで稼働中のプログラムは、共有プロセッサー状態を変える前に共有プロセッサー状態を保存できることから、新たなアクティブ仮想信頼レベルで稼働中のプログラムは、割り込み処理の完了後に共有プロセッサー状態を回復することができる（その結果、従前の仮想信頼レベルは元来の状態で再開可能となり、従前の仮想信頼レベルで稼働中のプログラムに対して割り込みを透明化する）。
【０１９９】
[00216]１つまたは複数の実施形態において、プライベートプロセッサー状態は、命令ポインター（またはプログラムカウンター）レジスタおよびスタックポインターレジスタを含む。アクティブ仮想信頼レベルのプライベートプロセッサー状態は、ハイパーバイザーにより、アクティブ仮想信頼レベルが変わる際に保存され、また変更対象である仮想信頼レベルのプライベートプロセッサー状態に置き換わる。変更対象である仮想信頼レベルのプライベートプロセッサー状態は、デフォルト／初期化状態（仮想信頼レベルが過去に入られたことがない場合）、または仮想信頼レベルについて過去に保存されたプライベートプロセッサー状態（仮想プロセッサー４０２が最後に仮想信頼レベルから離脱して変化する前に保存された状態）であってもよい。
【０２００】
[00217]１つまたは複数の実施形態において、ハイパーバイザーは各仮想信頼レベル４０４（最下位の仮想信頼レベルを除く）について、ハイパーバイザーと仮想信頼レベルで稼働中のプログラムとの間での双方向型通信に使用される制御ページを維持する。制御ページは、仮想信頼レベルに入った理由の指標（例：上位の仮想信頼レベルに入った原因を生じた事象）、従前の仮想信頼レベルの指標（上位の仮想信頼レベルに入る原因を生じた事象の時点でのアクティブ仮想信頼レベル）、そして場合により、上位の仮想信頼レベルに入った原因を生じた事象を記述する、またはそれに関連する付加的情報を含み得る。
【０２０１】
[00218]１つまたは複数の実施形態において、仮想プロセッサー４０２は、ある仮想信頼レベルから、次に上位の仮想信頼レベルに限り転換し得る。例えば、仮想プロセッサー４０２はＶＴＬ０からＶＴＬ１へ、ＶＴＬ１からＶＴＬ２へ、ＶＴＬ２からＶＴＬ３へ、といった形で転換し得るが、ＶＴＬ０からＶＴＬ３へは転換できない。あるいは、仮想プロセッサーはある仮想信頼レベルから、どの上位の仮想信頼レベルにでも転換し得る。例えば、仮想信頼レベルコールにおいて、仮想プロセッサー４０２は、転換先となる上位の仮想信頼レベルを指定することができ、ＶＴＬ０からＶＴＬ３への転換が可能となる。
【０２０２】
[00219]下位の仮想信頼レベルから上位の仮想信頼レベルへの転換後、仮想プロセッサー４０２は、多種多様な事象への応答として、下位の仮想信頼レベルに戻る形で転換または変化し得る（上位の仮想信頼レベルを退出する）。１つまたは複数の実施形態において、仮想プロセッサー４０２は１つまたは複数の措置を実施し（例：１つまたは複数の動作の実施、割り込みの取扱いなど）、その後、下位の仮想信頼レベルに戻る。仮想プロセッサー４０２は、現在の仮想信頼レベルから下位の仮想信頼レベルへと遷移するための特定の１つまたは複数の命令（例：特定の命令順序）の実行により、下位の仮想信頼レベルに戻る。これらの命令は、場合により、仮想信頼レベル退出コードページと呼ばれるメモリーページに保存され、これによりハイパーバイザーは仮想信頼レベルを転換するためのコードシーケンスを抽出することができる。１つまたは複数の実施形態において、仮想プロセッサー４０２は、アクティブ仮想信頼レベルに入る前の下位の仮想信頼レベルに戻るが、代替的に仮想プロセッサー４０２は異なる仮想信頼レベルに戻ることもできる。
【０２０３】
[00220]共有プロセッサー状態の場合、プロセッサー状態は仮想信頼レベルが変わっても変化しないため、共有プロセッサー状態を使用する仮想信頼レベル間で情報を渡すことが可能となる。プライベートプロセッサー状態の場合、各仮想信頼レベルは、該仮想信頼レベルのみアクセスできる、独自のプロセッサー状態のインスタンスを有する（例：レジスタ）。ハイパーバイザーはそのようなプロセッサー状態（例：レジスタの内容）の、仮想信頼レベル間での転換時における保存および復元を管理する。仮想信頼レベル４０４に入る際、プライベートプロセッサー状態は、仮想プロセッサー４０２が最後に仮想信頼レベル４０２で稼働した際と同じである（例：レジスタは同じ値を格納する）。
【０２０４】
[00221]概して、ある仮想信頼レベルに入った後にその仮想信頼レベルでコードが実行されるよう、適切に構成されることになるレジスタは、プライベートプロセッサー状態である。上位の仮想信頼レベルは、下位の仮想信頼レベルによる変更が不可能な、適切に定義された状態の仮想プロセッサーの実行制御を確実に得られることを保証される。したがって、キー制御レジスタおよび実行フローの制御に重要なレジスタは、各仮想信頼レベルについてプライベートプロセッサー状態である。ある仮想信頼レベルに入った後でもコードフローを直接変更しない、汎用レジスタ状態は、共有プロセッサー状態またはプライベートプロセッサー状態のどちらでもよい。
【０２０５】
[00222]１つまたは複数の実施形態において、汎用レジスタ、ベクトルレジスタ、および浮動小数点レジスタは、命令ポインター（またはプログラムカウンター）レジスタおよびスタックポインターレジスタを除き、共有プロセッサー状態である。命令ポインター（またはプログラムカウンター）レジスタおよびスタックポインターレジスタは、プライベートプロセッサー状態である。制御レジスタもプライベートプロセッサー状態であるが、ページフォールトレジスタは例外である。ページフォールトレジスタ（例：Ｘ６４アーキテクチャープロセッサー用ＣＲ２レジスタ）は共有プロセッサー状態である。
【０２０６】
[00223]表Ｉでは、共有プロセッサー状態であるレジスタの例（表Ｉでは「共有」の種類として列記）、およびプライベートプロセッサー状態であるレジスタの例（表Ｉでは「プライベート」の種類として列記）を例示している。表Ｉに例示されているレジスタは、Ｘ６４アーキテクチャープロセッサー向けの例である。これらのレジスタは例であり、すべてのプロセッサーアーキテクチャーがこれらのレジスタをすべて含むわけではなく、また異なるプロセッサーアーキテクチャーが異なる（ただし場合により類似する）レジスタを含み得るという点が理解されなければならない。
【０２０７】
【表１】
0006484255.tif 000002
【０２０８】
[00224]１つまたは複数の実施形態において、ハイパーバイザーは、仮想レジスタとも呼ばれる多種多様なマシン状態レジスタ（ＭＳＲ）も維持し、これらの一部は共有プロセッサー状態、一部はプライベートプロセッサー状態である。表ＩＩでは、共有プロセッサー状態であるＭＳＲの例（表ＩＩでは「共有」の種類として列記）、およびプライベートプロセッサー状態であるＭＳＲの例（表ＩＩでは「プライベート」の種類として列記）を例示している。表ＩＩにおいて、接頭文字「ＨＶ＿Ｘ６４」が付くレジスタは、ワシントン州レドモンドのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なＨｙｐｅｒ−Ｖ（登録商標）仮想化ソフトウェア内のレジスタを指す一方、表ＩＩにおいて接頭文字「ＨＶ＿Ｘ６４」が付かないレジスタは、標準のＸ６４アーキテクチャーレジスタを指す。表ＩＩに例示されているＭＳＲは、Ｘ６４アーキテクチャープロセッサー上で稼働する仮想マシン向けの例である。これらのＭＳＲは例であり、すべての仮想セキュアモードがこれらのＭＳＲをすべて含む必要があるわけではなく、また異なるプロセッサーアーキテクチャーが異なる（ただし場合により類似する）レジスタを含み得るという点が理解されなければならない。加えて、各ＭＳＲの分類も単なる例示であり、様々な実施形態において異なり得る。
【０２０９】
【表２】
0006484255.tif 000003
【０２１０】
[00225]加えて、前述の通り、仮想信頼レベル４０４は別個の割り込みサブシステムを有し、各仮想信頼レベル４０４が独自の割り込みサブシステム４１０を有する。別個の割り込みサブシステム４１０は、ある仮想信頼レベルで稼働中のプログラムが下位の仮想信頼レベルから干渉されることなく、仮想プロセッサー間で安全にプロセッサー間割り込みを送信することを可能にする。別個の割り込みサブシステム６１０も、ある仮想信頼レベルの割り込みサブシステムが同じ仮想信頼レベルに関連付けられたデバイスからの割り込みを、下位の仮想信頼レベルで稼働中のプログラムから干渉されることなく安全に受けることを可能にする。別個の割り込みサブシステム４１０は、各割り込みサブシステム４１０が、下位の仮想信頼レベルで稼働中のプログラムによる干渉を受けることが不可能な、セキュアなタイマー機能を有することも可能にする。別個の割り込みサブシステム４１０は、下位の仮想信頼レベルに対する割り込み（目標とする割り込み）を受けた場合に、仮想信頼レベル間での割り込みの協調的スケジューリングを可能にするよう、割り込みサブシステム４１０が通知を受けることも可能にする。
【０２１１】
[00226]アクティブ仮想信頼レベルの場合、割り込みは、アクティブ仮想信頼レベル、アクティブ仮想信頼レベルより上位の仮想信頼レベル（アクティブ仮想信頼レベルが仮想マシンの最上位仮想信頼レベルである場合を除く）、またはアクティブ仮想信頼レベルより下位の仮想信頼レベル（アクティブ仮想信頼レベルが仮想マシンの最下位仮想信頼レベルである場合を除く）の、ハイパーバイザーによって受けられ得る。１つまたは複数の実施形態において、割り込みは、割り込み対象（割り込みの目標）である仮想信頼レベルの指標を含む。アクティブ仮想信頼レベルを目標とする割り込みを受けた場合の応答として、アクティブ仮想信頼レベルの割り込みサブシステム４１０が割り込みに対処する。
【０２１２】
[00227]アクティブ仮想信頼レベルより上位の仮想信頼レベルを目標とする割り込みを受けた場合の応答として、ハイパーバイザーは多種多様な措置を講じ得る。１つまたは複数の実施形態において、インターセプト制御ＭＳＲ（例：ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＳＭ＿ＩＮＴＥＲＣＥＰＴ＿ＣＴＬ  ＭＳＲ）は、講じるべき措置を判定する割り込みＶＴＬ退出設定を含む。割り込みＶＴＬ退出設定の値が１つである（例：常に退出することを示す）場合、ハイパーバイザーはアクティブ仮想信頼レベルを上位の仮想信頼レベルへと転換し、上位の仮想信頼レベルの割り込みサブシステム４１０が割り込みに対処する。一方、割り込みＶＴＬ退出設定が別の値を有する（例：割り込み可能性をチェックするよう指示する）場合、ハイパーバイザーは、上位の仮想信頼レベルが割り込みを受ける可能性があることを上位の仮想信頼レベルのプロセッサー状態が示唆する場合に限り、アクティブ仮想信頼レベルを上位の仮想信頼レベルへと転換する。あるいは、割り込みＶＴＬ退出設定は、アクティブ仮想信頼レベル（または上位の仮想信頼レベル）の制御ページなど、他の場所で維持され得る。
【０２１３】
[00228]あるいは、講じるべき措置は異なる形で判定され得る。例えば、ハイパーバイザーは、上位の仮想信頼レベルの割り込みサブシステム４１０による割り込みへの対処向けに、アクティブ仮想信頼レベルから上位の仮想信頼レベルへの転換をトリガーすることになる特定の割り込みベクトルを上位の仮想信頼レベルが指定することを可能にする機構を提供し得る。あるいは、多種多様な状態基準がハイパーバイザーによって適用され得、またハイパーバイザーは、アクティブ仮想信頼レベルによって状態基準が満たされる場合に限り、上位の仮想信頼レベルの割り込みサブシステム４１０による割り込みへの対処向けに、アクティブ仮想信頼レベルを上位の仮想信頼レベルへと転換し得る。
【０２１４】
[00229]アクティブ仮想信頼レベルより下位の仮想信頼レベルを目標とする割り込みを受けた場合の応答として、ハイパーバイザーは、下位の仮想信頼レベルの割り込みサブシステム４１０に後で送るための、割り込み記録を維持する。１つまたは複数の実施形態において、割り込みは、アクティブ仮想信頼レベルの仮想プロセッサー４０２の動作に先回りしない。むしろ、ハイパーバイザーは、下位の仮想信頼レベルの割り込みサブシステム４１０に対し、仮想プロセッサー４０２が次に、下位の仮想信頼レベルでの動作へと転換する際、割り込みを提供する。
【０２１５】
[00230]注意すべき点として、下位の仮想信頼レベルが割り込みを送られた場合に上位の仮想信頼レベルが通知を受けることが望ましいという状況が発生し得る。これは例えば、割り込みに対処するために仮想プロセッサーが下位の仮想信頼レベルに戻れるようにすることを上位の仮想信頼レベルのプログラムが望む、という状況において、望ましいと考えられる。１つまたは複数の実施形態において、下位の仮想信頼レベルが割り込みを送られた場合に上位の仮想信頼レベルへの通知を円滑化するため、割り込み通知機能が提供される。この割り込み通知機能は、制御ＭＳＲ（例：ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＣＴＬ  ＭＳＲ）など、様々な形で提供され得る。この割り込み通知機能は、下位の仮想信頼レベル向けの割り込み処理を上位の仮想信頼レベルが長期間にわたり遅延してしまう事態を防止し得る。
【０２１６】
[00231]アクティブ仮想信頼レベルより下位の仮想信頼レベルを目標とする割り込みを受けた場合の応答として、割り込み通知機能を使用する場合、ハイパーバイザーは、下位の仮想信頼レベルのプライベートプロセッサー状態および割り込みサブシステム４１０の状態を評価して、下位の仮想信頼レベルの割り込みサブシステム４１０に割り込みを提示可能かどうか判定する。様々なプライベートプロセッサー状態または割り込みサブシステム４１０の状態が原因で、下位の仮想信頼レベルの割り込みサブシステム４１０に割り込みを提示できない場合、割り込みは保留として表記され、割り込みに対するさらなる措置は講じられない。一方、下位の仮想信頼レベルの割り込みサブシステム４１０に割り込みを提示できる場合、ハイパーバイザーは前述の通り、下位の仮想信頼レベルの割り込みサブシステム４１０に後で送るための、割り込み記録を維持し、そしてアクティブ仮想信頼レベルで割り込みを生成する。アクティブ仮想信頼レベルで割り込みが生成される（例：ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＣＴＬ  ＭＳＲにおいて指定される割り込みベクトルへの割り込み）結果、アクティブ仮想信頼レベルで稼働中のプログラムが、割り込みへの対処法を決定する。プログラムはハイパーバイザーを上位の仮想信頼レベルから退出させることができるため、下位の仮想信頼レベルは、下位の仮想信頼レベルを目標とする割り込みに対処できるようになる。ただし、ハイパーバイザーは上位の仮想信頼レベルを退出する必要はなく、あるいはプログラムが様々な長さの期間、ハイパーバイザーを上位の仮想信頼レベルから退出させるのを遅らせることができる。
【０２１７】
[00232]加えて、前述の通り、ハイパーバイザーは、上位の仮想信頼レベルへのインターセプトに対する応答として、上位の仮想信頼レベルへと転換し得る。１つまたは複数の実施形態において、ハイパーバイザーは、下位の仮想信頼レベルのプログラムに対してロックされアクセス不可となる特定のリソースまたはコンポーネントを、上位の仮想信頼レベルが指定することを許可する。ハイパーバイザーは、例えば、特定の入力／出力（Ｉ／Ｏ）ポートアクセス制御、ＭＳＲアクセス制御、メモリーアクセス制御、および／または制御レジスタを上位の仮想信頼レベルがロックしおよびアクセス不能にすることを、許可し得る。上位の仮想信頼レベルは（例えば様々なＭＳＲ設定経由または他の形で）、ロックされる特定のＩ／Ｏポートアクセス制御、ＭＳＲアクセス制御、メモリーアクセス制御、および／または制御レジスタを指定し得る。上位の仮想信頼レベルによってロックされたリソースまたはコンポーネントにアクセスするために（例：プログラムまたはデバイスによって）為された試みへの応答として、上位の仮想信頼レベルへのインターセプトが生成される。インターセプトへの応答として、ハイパーバイザーは仮想プロセッサーを上位の仮想信頼レベル（あるいは仮想プロセッサーが対応する最上位の仮想信頼レベル）へと転換する。
【０２１８】
[00233]上位の仮想信頼レベルはインターセプトに対し、多種多様な形で応答することができる。例えば、上位の仮想信頼レベルのプログラムはアクセスを致命的と見なし、何らかの障害指標をトリガーし得る。別の例を挙げると、上位の仮想信頼レベルのプログラムは、リソースまたはコンポーネントへのアクセスをエミュレートすることができる。そのようなエミュレーションを有効化するため、ハイパーバイザーは、結果的にインターセプトに至った下位の仮想信頼レベルのコンテキストの操作に使用可能な、ハイパーコールを提供する。別の例を挙げると、上位の仮想信頼レベルのプログラムは、リソースまたはコンポーネントへのアクセスを代理実行することができる。さらに別の例を挙げると、上位の仮想信頼レベルのプログラムは、下位の仮想信頼レベルに対するセキュアなインターセプトを反映することができる。
【０２１９】
[00234]１つまたは複数の実施形態において、仮想プロセッサー４０２が３つ以上の仮想信頼レベルを有する場合、セキュアなインターセプト機能のネスト化に対応するよりむしろ、ハイパーバイザーは、すべての仮想信頼レベルにまたがって共有される１組のアクセス制御ＭＳＲを提供する。アクセス制御ＭＳＲの使用に望ましい仮想信頼レベルのプログラムは、定義された独自のインターフェースを使用して協力するか、あるいは最上位の仮想信頼レベルのプログラムは下位の仮想信頼レベルに対するインターセプト機能の支援をエミュレートすることができる（例：上位の仮想信頼レベルがセキュアなインターセプトを下位の仮想信頼レベルへ注入する）。あるいは、セキュアなインターセプト機能のネスト化はハイパーバイザーによって対応可能で、また別個のアクセス制御ＭＳＲを、異なる仮想信頼レベル向けに使用することができる。
【０２２０】
[00235]多種多様なＭＳＲにハイパーバイザーが対応する。以下は、ハイパーバイザーが対応し得る様々なＭＳＲの例である。ＭＳＲ特有のフィールドが列記される。ただし、これらのＭＳＲは例であり、他のレジスタ、レジスタのビットレイアウト、フィールドなどを選択的に使用することができるという点が理解されるべきある。
【０２２１】
[00236]表ＩＩＩでは、個々の上位の仮想信頼レベル（最下位の仮想信頼レベルを除くすべて）毎に各仮想プロセッサー上で利用可能な、ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＣＴＬ  ＭＳＲを例示している。個々の上位の仮想信頼レベルは、ＶＴＬ０の場合を除き、独自のＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＣＴＬ  ＭＳＲのインスタンスを有する。ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＣＴＬ  ＭＳＲは、上位の仮想信頼レベルにおけるＶＳＭの動作形態に関する様々な属性を制御する。
【０２２２】
【表３】
0006484255.tif 000004
【０２２３】
[00237]表ＩＶでは、ＶＴＬコールコードページのマッピング先となるＧＰＡページの特定に使用されるＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＣＡＬＬ  ＭＳＲを例示している。ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＣＡＬＬ  ＭＳＲは、仮想マシン全体にまたがって共有される。個々の仮想信頼レベル毎に（最上位の仮想信頼レベルを除く）、ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＣＡＬＬ  ＭＳＲのインスタンスが１つずつ、仮想マシン内に存在する。ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＣＡＬＬ  ＭＳＲが有効化されると、コードページＧＰＡのフィールドで指定されたアドレスに、仮想信頼レベルコールコードページが重ね合わされる（前述の通り、ハイパーバイザーと仮想信頼レベルで稼働中のプログラムとの間での双方向型通信に使用される制御ページ）。
【０２２４】
【表４】
0006484255.tif 000005
【０２２５】
[00238]表Ｖでは、仮想プロセッサーの仮想信頼レベル状態に関する情報を提供する、ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＳＴＡＴＵＳ  ＭＳＲを例示している。ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＳＴＡＴＵＳ  ＭＳＲは個々の仮想プロセッサーが対象であり、また仮想プロセッサーの仮想信頼レベル毎にＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＳＴＡＴＵＳ  ＭＳＲのインスタンスが１つずつ存在する。
【０２２６】
【表５】
0006484255.tif 000006
【０２２７】
[00239]表ＶＩでは、仮想信頼レベル退出コードページのマッピング先となるＧＰＡページの特定に使用されるＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＥＸＩＴ  ＭＳＲを例示している。ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＥＸＩＴ  ＭＳＲは、仮想マシン全体にまたがって共有される。個々の仮想信頼レベル毎に（最下位の仮想信頼レベルを除く）、ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＥＸＩＴ  ＭＳＲのインスタンスが１つずつ、仮想マシン内に存在する。ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＴＬ＿ＥＸＩＴ  ＭＳＲが有効化されると、ＶＴＬ退出コードページＧＰＡのフィールドで指定されたアドレスに、仮想信頼レベル退出コードページが重ね合わされる
【０２２８】
【表６】
0006484255.tif 000007
【０２２９】
[00240]表ＶＩＩでは、上位の仮想信頼レベルへの進入をトリガーするインターセプトの種類を制御する、ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＳＭ＿ＩＮＴＥＲＣＥＰＴ＿ＣＴＬ  ＭＳＲを例示している。ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＳＭ＿ＩＮＴＥＲＣＥＰＴ＿ＣＴＬ  ＭＳＲは個別の仮想プロセッサーが対象であり、仮想プロセッサーの仮想信頼レベルによって共有される（ただしＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＳＭ＿ＩＮＴＥＲＣＥＰＴ＿ＣＴＬ  ＭＳＲは最下位の仮想信頼レベルでは利用できない）。
【０２３０】
【表７】
0006484255.tif 000008
【０２３１】
[00241]表ＶＩＩＩでは、最上位（または上位）の仮想信頼レベルに対するインターセプトをトリガーするＩ／Ｏポートアクセスの種類を制御する、＿Ｘ６４＿ＭＳＲ＿ＶＳＭ＿ＩＯＰＯＲＴ＿ＣＴＬ  ＭＳＲを例示している。２つのＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＳＭ＿ＩＯＰＯＲＴ＿ＣＴＬ  ＭＳＲが含まれ得、フィールドは同じで、ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＳＭ＿ＩＯＰＯＲＴ＿ＣＴＬ０  ＭＳＲおよびＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＳＭ＿ＩＯＰＯＲＴ＿ＣＴＬｌ  ＭＳＲと呼ばれる。これら２つのＭＳＲは個々の仮想プロセッサーが対象であり、各々が仮想プロセッサーの仮想信頼レベルによって共有される（これら２つのＭＳＲは最下位の仮想信頼レベルでは利用できない）。
【０２３２】
【表８】
0006484255.tif 000009
【０２３３】
[00242]表ＩＸでは、上位の仮想信頼レベルに対するインターセプトをトリガーするＭＳＲアクセスの種類を制御する、ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＳＭ＿ＭＳＲ＿ＣＴＬ  ＭＳＲを例示している。ＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＳＭ＿ＭＳＲ＿ＣＴＬ  ＭＳＲは個々の仮想プロセッサーが対象であり、仮想プロセッサーの仮想信頼レベルによって共有される（ただしＨＶ＿Ｘ６４＿ＭＳＲ＿ＶＳＭ＿ＭＳＲ＿ＣＴＬ  ＭＳＲは最下位の仮想信頼レベルでは利用できない）。
【０２３４】
【表９】
0006484255.tif 000010
【０２３５】
[00243]注意すべき点として、本明細書において論じられる技法の一態様は、上位の仮想信頼レベルが下位の仮想信頼レベルに先回りされることはあり得ないということである。したがって、仮想プロセッサーが上位の仮想信頼レベルで稼働中である場合、仮想プロセッサーが下位の仮想信頼レベルへと転換し得る唯一の形は、ソフトウェアが自発的に、ＶＴＬ退出の実行によって下位の仮想信頼レベルへと転換する場合である。外部事象（例：割り込みなど）は、上位の仮想信頼レベルから下位の仮想信頼レベルへの自動転換をトリガーし得ない。
【０２３６】
[00244]さらに注意すべき点として、本明細書において論じられる技法を使用して実装される仮想信頼レベルは、コンピューティングデバイス３００の物理プロセッサーによって実装されるいかなる保護リングまたは他の保護機構とも無関係である。本明細書において論じられる技法は、物理プロセッサーアーキテクチャーと無関係であり、したがって任意の数の様々なプロセッサーアーキテクチャーにまたがって実装され得る。さらに、本明細書において論じられる技法は、同じおよび／または異なる仮想マシンにおける異なる仮想プロセッサーの異なる数の仮想信頼レベルを含め、いかなる数の仮想信頼レベルにも対応し得る。
【０２３７】
[00245]同じく注意すべき点として、コンピューティングデバイス３００の１つまたは複数の仮想プロセッサーは、少なくとも１つのカーネルモード（カーネル−モード、スーパーバイザーモード、またはスーバーバイザー−モードとも呼ばれる）および使用者モード（使用者−モードとも呼ばれる）を含む、多種多様なモードでのコード実行に対応し得る。本明細書において論じられる技法は、仮想プロセッサー内でコードがどのモードで実行中であるかを問わない。本明細書において論じられるメモリーアクセス保護は、仮想プロセッサーが動作中の仮想信頼レベルに基づいて適用され、また仮想プロセッサーがコードをカーネルモードまたは使用者モードのどちらで実行中であるかを問わず適用される。したがって、仮想プロセッサーがたとえカーネルモードでコードを実行中であっても、仮想信頼レベルのメモリーアクセス保護は、前述の通り、アクティブ仮想信頼レベルに基づく仮想セキュアモードモジュールによってのみ変更され得る（仮想プロセッサーがコードをカーネルモードまたは使用者モードのどちらで実行中であるかを問わない）。仮想プロセッサーがコードを実行中のモード（例：使用者またはカーネル）に基づいて、仮想プロセッサーによる付加的保護が提供され得るが、係る保護は、仮想信頼レベルに基づいて適用される、本明細書において論じられるメモリーアクセス保護と無関係である。
【０２３８】
[00246]したがって、本明細書において論じられる技法は、カーネルモードで稼働中のオペレーティングシステムよりも特権の多い環境を提供する。例えば、ＶＴＬ１で稼働中の場合、あるメモリーページにおけるＶＴＬ０のメモリーアクセス保護を「アクセス不可」に設定することができ、データまたはコードをメモリーページ内に保存することができる。この設定は該メモリーページを「セキュア」モードに置き、該メモリーページはＶＴＬ０で稼働中のプログラムにとってアクセス不可となる。したがって、オペレーティングシステムがたとえカーネルモードで稼働中であっても、メモリーページ内に保存されたデータまたはコードは、オペレーティングシステムがＶＴＬ０で稼働中の場合、オペレーティングシステムにとってアクセス不能である。
【０２３９】
[00247]しかし、本明細書において論じられる技法は、異なるモードでの実行または保護リングに対応する仮想プロセッサーと併用され得る。例えば、仮想プロセッサーは独自のカーネルモードおよび使用者モードをＶＴＬ１の状態にすることができ、また独自のカーネルモードおよび使用者モードをＶＴＬ０の状態にすることもできる。したがって、ＶＴＬ１の状態のアドレス空間は、ＶＴＬ１のカーネルモードによって許可されない限り、ＶＴＬ１の状態にある別のアドレス空間にアクセスできない。一方、ＶＴＬ０のカーネルモードはＶＴＬ１の状態にあるアドレス空間に一切アクセスできない（ＶＴＬ１の状態にあるアドレス空間のメモリーページが相応に表記済みであると想定）。
【０２４０】
[00248]次に、以下の議論では、実施され得る多数の方法および方法行為に言及する。方法行為については一定の順序で論ずるか、または特定の順序で発生する通りにフローチャートで例示することができるが、具体的に言明または要求されない限り、特定の順序付けは必要なく、何故なら行為は実行中の行為の前に完了される別の行為次第であるからである。
【０２４１】
[00249]今度は図７を参考に、方法７００を例示する。方法７００はコンピューティング環境内で実践することができ、またホストに対する信頼を確立するための行為を含む。方法７００は、ホストアテステーションサービスが、物理マシン上に展開されたホストから、ホストが満たす一定の特徴に関して検証可能な指標を受け取ることを含む（行為７０２）。例えば、図２は、ＨＡＳ２５８によって受信されるリクエスト２６０を送信する、ホスト２３０を例示する図である。リクエストは、一定のホストの特徴に関する検証可能な証拠を含み得る。
【０２４２】
[00250]方法７００はさらに、一定の特徴の指標を基に、ホストが一定の要件を満たすことの判定の試みをも含む（行為７０４）。例えば、ＨＡＳ２５８は、リクエスト２６０に含まれる証拠の検証を試み得る。
【０２４３】
[00251]ホストが信頼実行環境（ＴＥＥ）を含む旨の要件を少なくとも満たすことを含む一定の要件をホストが満たす場合、ホストアテステーションサービスはホストへ証明書を発行し、ホストはこれを使用して、ホストアテステーションサービスに対して信頼関係を有する１つまたは複数のエンティティを認証する（ａｕｔｈｅｎｔｉｃａｔｅ）ことができる（行為７０６）。したがって、図２で例示されている通り、ＨＡＳ２５８は証明書２５７を発行し、ホスト２３０はこれを使用して、様々なキーまたは他の特権を取得することができる。
【０２４４】
[00252]方法７００は、一定の要件がさらに、ホストを実装する物理マシン上のＴＰＭ（信頼プラットフォームモジュール）に関連する要件をも含む場合に実践され得る。例えば、実施形態では、ホストを実装する物理マシン側にＴＰＭがインストールされること、および／またはＴＰＭが特定の形で、もしくは特定の目的に使用されることを要求し得る。代替的または付加的に、一定の要件はさらに、ＡＲＭ  ＴｒｕｓｔＺｏｎｅおよび／またはＩｎｔｅｌ  ＳＧＸ能力に関連する要件をも含む。
【０２４５】
[00253]方法７００はさらに、ホストを実装する物理マシンが一定の要件を検証可能な形で満たすことの判定に失敗した結果として、ホストが一定の要件を満たさない旨の、ゲスト仮想マシンを展開するよう構成された仮想マシンマネージャー（ＶＭＭ）への通知をも含み得る。そのような一部の実施形態において、これは前述の通り、信頼されないホストへの絶望的な仮想マシン展開を防ぐよう、ＶＭＭがゲスト仮想マシンをホスト上に展開することを回避し得る形で行うことができる。
【０２４６】
[00254]方法７００はさらに、ホストが一定の要件を検証可能な形で満たすことの判定に失敗した結果として、ホストはゲスト仮想マシンの展開に利用可能でない旨の、仮想マシンマネージャー（ＶＭＭ）への通知をも含み得る。
【０２４７】
[00255]方法７００は、一定の要件がさらに、ホストを実装する物理ホストマシン向けに、侵害されずに起動が発生したことを検証するための、適正かつ信頼に値するＵＥＦＩ（統一拡張ファームウェアインターフェース）報告が提供される旨の要件をも含む場合に実践され得る。例えば、これはルートキットがホストにインストールされていないことを検証する形で行うことができる。
【０２４８】
[00256]方法７００は、一定の要件がさらに、ホストが適正なＨＶＣＩ（ハイパーバイザー強制型コード整合性）ポリシー妥当性確認を含むという検証可能な指標が提供される旨の要件をも含む場合に実践され得る。
【０２４９】
[00257]方法７００は、一定の要件がさらに、ホストが特定の地理的位置に所在する旨の要件をも含む場合に実践され得る。例えば、政治的理由、ポリシー遵守上の理由または他の理由により、一定のエンティティが、仮想マシンを展開可能な領域の制限を希望し得る。これは、ホストが特定の地理的位置に所在しない状況を含み得る。特に、この要件は、何らかの除外される地理的位置に該当しない特定の地理的位置にホストが所在することを意味し得る。したがって、方法７００は、一定の要件がさらに、ホストが特定の地理的位置に所在しない旨の要件をも含む場合に実践され得る。
【０２５０】
[00258]方法７００は、一定の要件がさらに、ホストがセキュアなネットワークに連結される旨の要件をも含む場合に実践され得る。実施形態において、セキュアなネットワークは、物理的および／または論理的に隔離されていること、任意の物理的建物内に所在すること、ケルベロスを使用して保安されていること、ネットワークアクセス保護を使用して保安されていること、既知の方法を使用する盗聴攻撃に対して保安されていること、および既知の方法を使用するリプレイ攻撃に対して保安されていることなど、１つまたは複数の特性を特徴とし得る。方法７００は、一定の要件がさらに、セキュアな起動ポリシーの合致、起動デバッガーの不存在、カーネルデバッガーの不存在、デバッギング機能性の不存在、およびプリＯＳ起動スタックでのソフトウェアの既定の構成から成る群から選択される要件をも含む場合に実践され得る。
【０２５１】
[00259]方法７００はさらに、ホストアテステーションサービスと、ホストが証明書の提示によってキーを取得できる元となるキー分配サービスとの間での、信頼関係の創出をも含み得る。
【０２５２】
[00260]方法７００は、ファブリック管理システムを有する環境にホストアテステーションサービスが実装される環境で方法が実施され、ファブリック管理システムがホストオペレーティングシステム、ホスト構成、ＨＶＣＩホワイトリスト、ＨＶＣＩ取消リスト、ＵＥＦＩホワイトリストまたはＵＥＦＩ取消リストのうち少なくとも１つを管理するよう構成される場合に実践され得る。そのような一部の実施形態において、ファブリック管理システムの管理者の認証に使用されるものとは異なる認証（ａｕｔｈｅｎｔｉｃａｔｉｏｎ）および／または認可サービスが、ホストアテステーションサービスの管理者の認証に使用される。この管理の分離は、セキュリティ侵害に影響を及ぼす管理者の結託を必要とすることによって、セキュリティの「内部犯行」侵害防止に役立ち得る。
【０２５３】
[00261]方法７００は、仮想マシンマネージャーを有する環境にホストアテステーションサービスが実装される環境で方法が実施され、仮想マシンマネージャーが遮蔽型ゲスト仮想マシンをホストに展開するよう構成されるが、仮想マシンマネージャーは遮蔽型ゲスト仮想マシンの暗号を解読することができない場合に実践され得る。したがって、仮想マシンはＶＭＭにより展開され得るが、引き続き、ＶＭＭからは秘密の状態に保たれ得る。そのような一部の実施形態において、方法７００は、仮想マシンマネージャーの管理者の認証に使用されるものとは異なる認証サービスが、ホストアテステーションサービスの管理者の認証に使用される環境で実践され得る。これも同じく、セキュリティ侵害を犯すには結託を必要とすることにより、そのような侵害の防止に役立ち得る。一部の実施形態において、同じ認証サービスであるがセキュリティ構成が異なるサービスが使用され得る。例えば、単一の認証サービスにおいて、通常のパスワードベースの認証システムと、スマートカードベースのシステムとを提供し得る。
【０２５４】
[00262]今度は図８を参考に、方法８００を例示する。方法８００は、コンピューティング環境において実践され得る。該方法は、ホストに対する信頼を確立するための行為を含む。該方法は、物理マシンを使用して実装されるホストが、ホストの一定の特徴に関して検証可能な指標をホストアテステーションサービスへ送ることを含む（行為８０２）。
【０２５５】
[00263]ホストアテステーションサービスが一定の特徴の指標を評価することによって判定される、ホストが信頼実行環境（ＴＥＥ）を含む旨の要件を少なくとも満たすことを含む一定の要件をホストが満たす結果、方法８０２は、ホストアテステーションサービスに対して信頼関係を有する１つまたは複数のエンティティを認証するためにホストが使用できる証明書を、ホストがホストアテステーションサービスから受け取ることを含む（行為８０４）。
【０２５６】
[00264]方法８００は、一定の要件がさらに、ホストを実装する物理マシン上のＴＰＭ（信頼プラットフォームモジュール）に関連する要件をも含む場合に実践され得る。代替的または付加的に、一定の要件はさらに、ＡＲＭ  ＴｒｕｓｔＺｏｎｅおよび／またはＩｎｔｅｌ  ＳＧＸ能力に関連する要件をも含む。
【０２５７】
[00265]方法８００は、一定の要件がさらに、ホストが実装されている物理マシンに、適正かつ信頼に値するＵＥＦＩ（統一拡張ファームウェアインターフェース）報告が提供される旨の要件をも含む場合に実践され得る。
【０２５８】
[00266]方法８００は、一定の要件がさらに、ホストが適正なＨＶＣＩ（ハイパーバイザー強制型コード整合性）ポリシー妥当性確認を含むという検証可能な指標が提供される旨の要件をも含む場合に実践され得る。
【０２５９】
[00267]方法８００は、一定の要件がさらに、ホストが特定の地理的位置に所在する旨の要件をも含む場合に実践され得る。これは、ホストが特定の地理的位置に所在しない状況を含み得る。特に、この要件は、何らかの除外される地理的位置に該当しない特定の地理的位置にホストが所在することを意味し得る。したがって、方法８００は、一定の要件がさらに、ホストが特定の地理的位置に所在しない旨の要件をも含む場合に実践され得る。
【０２６０】
[00268]方法８００は、一定の要件がさらに、ホストがセキュアなネットワークに連結される旨の要件をも含む場合に実践され得る。
[00269]方法８００は、ホストアテステーションサービスと、ホストが証明書の提示によってキーを取得できる元となるキー分配サービスとの間に信頼関係が存在する環境において実践され得る。そのような一部の実施形態において、方法８００は、テナントからホストへのリクエストに応じて遮蔽型ゲスト仮想マシンが仮想マシンマネージャーによって展開されるが、仮想マシンマネージャーは遮蔽型ゲスト仮想マシンの暗号を解読することができない場合に実践され得る。該方法はさらに、ホストアテステーションサービスによって署名された証明書をキー分配サービスが許容するという意味でホストアテステーションサービスを信頼するキー分配サービスからキーを取得するために、ホストが証明書を使用することをも含み得る。ホストがその後、キーを使用して遮蔽型ゲスト仮想マシンの暗号を解読する結果、ゲスト仮想マシンはホスト上で稼働可能となる。そのような一部の実施形態において、ホストは、ゲスト仮想マシンの展開におけるセキュリティ上の詳細に関する暗号化メッセージを作成する（例：展開がセキュアな形または暗号化された形で行われたことを示す、テナント宛の証明メッセージ）。暗号化メッセージは仮想マシンマネージャーによる解読は不可能であるが、テナントによる解読は可能である。ホストは暗号化メッセージを仮想マシンマネージャーへ送り、この暗号化メッセージは仮想マシンマネージャーが読むことができない状態でテナントへ転送され得る。
【０２６１】
[00270]今度は図９を参考に、方法９００を例示する。方法９００はコンピューティング環境において実践することができ、また暗号化エンティティを信頼エンティティ上で展開するための行為を含む。方法９００は、信頼エンティティ側にて、一定の要件を満たす信頼エンティティの一定の特徴について検証可能な指標を提供する結果として、ある権限者から該信頼エンティティが信頼される場合、権限者から信頼されない非信頼エンティティから暗号化エンティティを受け取ることを含む（行為９０２）。方法１００はさらに、信頼エンティティ側にて、権限者から信頼されるキー分配サービスからキーを取得するために権限者からの信頼認証情報を使用することを含む（行為９０４）。該方法はさらに、暗号化エンティティが信頼エンティティ側にて展開されることを可能にするために、キーを使用して暗号化エンティティを暗号解読することも含む（行為９０６）。
【０２６２】
[00271]方法９００は、一定の要件が、信頼エンティティが信頼実行環境（ＴＥＥ）を有する仮想マシンであるという要件を含む場合に実践され得る。
[00272]方法９００は、一定の要件が、信頼エンティティを実装する物理マシン上のＴＰＭ（信頼プラットフォームモジュール）に関連する要件を含む場合に実践され得る。代替的または付加的に、一定の要件はさらに、ＡＲＭ  ＴｒｕｓｔＺｏｎｅおよび／またはＩｎｔｅｌ  ＳＧＸ能力に関連する要件をも含む。
【０２６３】
[00273]方法９００は、一定の要件が、信頼エンティティが適正かつ信頼に値するＵＥＦＩ報告を有する物理マシンを使用して実装される旨の要件を含む場合に実践され得る。
[00274]方法９００は、一定の要件が、信頼エンティティが適正なＨＶＣＩ（ハイパーバイザー強制型コード整合性）ポリシー妥当性確認を含む旨の要件を含む場合に実践され得る。
【０２６４】
[00275]方法９００は、一定の要件が、信頼エンティティが物理的に特定の地理的位置に所在する旨の要件を含む場合に実践され得る。これは、信頼エンティティが特定の地理的位置に所在しない状況を含み得る。特に、この要件は、何らかの除外される地理的位置に該当しない特定の地理的位置に信頼エンティティが所在することを意味し得る。したがって、方法９００は、一定の要件が、信頼エンティティが物理的に特定の地理的位置に所在しない旨の要件を含む場合に実践され得る。
【０２６５】
[00276]方法９００は、一定の要件が、信頼エンティティがセキュアなネットワークに連結される旨の要件をも含む場合に実践され得る。
[00277]方法９００は、暗号化エンティティが、信頼エンティティ上に展開されることになる端末サーバーである場合に実践され得る。
【０２６６】
[00278]方法９００は、暗号化エンティティが、信頼エンティティ上に展開されることになるネットワーク変換情報を含む場合に実践され得る。
[00279]方法９００は、暗号化エンティティが、信頼エンティティ上に展開されることになるセンシティブデータ（価格表、企業戦略、秘密個人情報など）を含む場合に実践され得る。
【０２６７】
[00280]方法９００は、暗号化エンティティが、信頼エンティティまたは信頼エンティティ上に展開されることになる他のエンティティの構成に使用される構成データを含む場合に実践され得る。
【０２６８】
[00281]方法９００は、暗号化エンティティが他の複数の暗号化エンティティと一緒に、サービスモデル展開の一環として展開される場合に実践され得る。
[00282]さらに、該方法は、１つまたは複数のプロセッサーやコンピューターメモリーなどコンピューター可読媒体を含む、コンピューターシステムによって実践され得る。特に、コンピューターメモリーは、１つまたは複数のプロセッサーによって実行された場合に、実施形態にて言及の行為など様々な機能を遂行させる、コンピューター実行可能命令を保存し得る。
【０２６９】
[00283]本発明の実施形態は、以下にて詳述する通り、コンピューターハードウェアを含む専用または汎用のコンピューターを含むかまたは活用し得る。本発明の範囲内の実施形態は、コンピューター実行可能な命令および／またはデータ構造を運搬または保存するための、物理的および他のコンピューター可読媒体をも含む。そのようなコンピューター可読媒体は、汎用または専用のコンピューターシステムからアクセスできる、利用可能ないかなる媒体であってもよい。コンピューター実行可能命令を保存するコンピューター可読媒体は、物理的保存媒体である。コンピューター実行可能命令を運搬するコンピューター可読媒体は、伝送媒体である。したがって、例を挙げると、制限なく、本発明の実施形態は少なくとも２種類の特徴的なコンピューター可読媒体、すなわち物理的コンピューター可読保存媒体と、コンピューター可読伝送媒体とを含み得る。
【０２７０】
[00284]物理的コンピューター可読保存媒体の例として、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光学ディスクストレージ（ＣＤ、ＤＶＤなど）、磁気ディスクストレージまたは他の磁気ストレージデバイス、またはその他、所望のプログラムコード手段をコンピューター実行可能な命令またはデータ構造の形で保存するために使用可能かつ汎用または専用のコンピューターからアクセス可能な媒体が挙げられる。
【０２７１】
[00285]「ネットワーク」は、コンピューターシステムおよび／またはモジュールおよび／または他の電子デバイスの間での電子データ輸送を可能にする、１つまたは複数のデータリンクとして定義される。コンピューターに至るネットワーク上または別の通信接続（有線、無線、または有線もしくは無線の組み合わせのいずれか）上で情報が転送または提供される場合、コンピューターは適切に、接続を伝送媒体として捉える。伝送媒体の例として、所望のプログラムコード手段をコンピューター実行可能な命令またはデータ構造の形で運搬するために使用可能かつ汎用または専用のコンピューターからアクセス可能な、ネットワークおよび／またはデータリンクが挙げられる。上記を組み合わせたものも、コンピューター可読媒体の範囲に含まれる。
【０２７２】
[00286]さらに、様々なコンピューターシステムコンポーネントに到達後、コンピューター実行可能な命令またはデータ構造の形であるプログラムコード手段は、コンピューター可読伝送媒体から物理的コンピューター可読保存媒体へと（または逆方向）自動的に転送され得る。例えば、コンピューター実行な命令またはデータ構造は、ネットワーク上またはデータリンク上で受信された後、ネットワークインターフェースモジュール（例：「ＮＩＣ」）内のＲＡＭにおいてバッファー処理され、その後、最終的に、コンピューターシステムのＲＡＭおよび／またはコンピューターシステム側の低揮発性コンピューター可読物理保存媒体へと転送され得る。したがって、コンピューター可読物理保存媒体は、伝送媒体も活用（さらには主として活用）するコンピューターシステムコンポーネントに含まれ得る。
【０２７３】
[00287]コンピューター実行可能命令の例として、汎用コンピューター、専用コンピューター、または専用処理デバイスに対し、一定の機能または機能群を遂行させる命令およびデータが挙げられる。コンピューター実行可能命令の例として、アセンブリー言語など２進法、中間フォーマットの命令、さらにはソースコードも挙げられる。対象事項は構造的特徴および／または方法論的行為に特有の言語で記述されているが、添付の請求項において定義される対象事項は、記載の特徴または上記の行為に必ずしも限定されるわけではないことが、理解されなければならない。むしろ、記載の特徴および行為は、請求項の実施形態の例として開示される。
【０２７４】
[00288]当業者であれば、本発明はパーソナルコンピューター、デスクトップコンピューター、ラップトップコンピューター、メッセージプロセッサー、携帯端末、マルチプロセッサーシステム、マイクロプロセッサーベースまたはプログラム設定可能な家庭用電化製品、ネットワークＰＣ、ミニコンピューター、メインフレームコンピューター、携帯電話機、ＰＤＡ、ポケットベル、ルーター、スイッチなどを含む、多数の種類のコンピューターシステム構成を有するネットワークコンピューティング環境において実践され得ることを、理解することになる。本発明は、ネットワーク経由で（有線データリンク、無線データリンクまたは有線および無線の複合型データリンクにより）連動するローカルおよびリモートのコンピューターシステムがいずれも作業を遂行する、分散型システム環境においても実践され得る。分散型システム環境において、プログラムモジュールはローカルおよびリモート双方のメモリーストレージデバイスに配置され得る。
【０２７５】
[00289]代替的または付加的に、本明細書に記載の機能性は、少なくとも部分的に、１つまたは複数のハードウェアロジックコンポーネントによって遂行され得る。使用され得る典型的種類のハードウェアロジックコンポーネントの例として、制限なく、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、特定用途向け標準製品（ＡＳＳＰ）、システムオンチップ（ＳＯＣ）システム、結合プログラム可能論理回路（ＣＰＬＤ）などが挙げられる。
【０２７６】
[00290]本発明は、その精神または特徴から逸脱することなく、他の特異的形態でも具現化され得る。記載の実施形態は、あらゆる態様において、単なる例示であり、制限的ではないと解釈されなければならない。したがって、本発明の範囲は、前述の説明によるのではなくむしろ、添付の請求項によって示される。請求項の同等性の意味および範囲に該当する変更はすべて、それらの範囲に含まれることになる。
【図１】
0006484255.tif 000011
【図２】
0006484255.tif 000012
【図３】
0006484255.tif 000013
【図４】
0006484255.tif 000014
【図５】
0006484255.tif 000015
【図６】
0006484255.tif 000016
【図７】
0006484255.tif 000017
【図８】
0006484255.tif 000018
【図９】
0006484255.tif 000019