(57)【要約】      （修正有）【課題】ゲストコンシューマのデータをセキュアに処理するパブリッククラウド環境を提供する。【解決手段】各ゲストコンシューマのワークロードがクラウドサービスプロバイダ（ＣＳＰ）のサーバメモリに、ＣＳＰのワークロード管理ソフトウェアに知られていないコンシューマ提供のキーを用いて暗号化され、サーバメモリの中の、ＣＳＰのワークロード管理ソフトウェアによって指定されたメモリ位置に読み込まれる。ＣＳＰ指定のメモリ位置に基づいて、ゲストワークロードは、メモリオーナーシップテーブル（ＭＯＴ）で指定されるメモリマッピング構造及び他の種類のコンシューマデータが読み込まれるべき期待ハードウェア物理アドレスを決定する。ＭＯＴは、その後、ＣＳＰ指定のメモリマッピングが期待通りであることを確認するのに用いられる。メモリオーナーシップテーブルエントリも、ＣＳＰに知られていないコンシューマ提供のキーによって暗号化される。【選択図】図８
2019091430.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
前記プロセッサに結合されたメモリと
を備える装置であって、
前記プロセッサは、信頼できないワークロードマネージャを実行して、少なくとも１つのゲストワークロードの実行を管理し、
前記信頼できないワークロードマネージャは、（ｉ）前記少なくとも１つのゲストワークロードのうちのあるゲストワークロードに前記メモリのある領域を割り振り、（ｉｉ）前記メモリの前記領域のそれぞれのメモリ位置と関連付けられたそれぞれの元のハードウェア物理アドレスを、前記ゲストワークロードによって提供されたそれぞれの元のゲストアドレスに割り当て、
前記ゲストワークロードは、前記ゲストワークロードに割り振られた前記メモリの前記領域のそれぞれの元のゲストアドレスから前記ゲストワークロードのそれぞれの前記元のハードウェア物理アドレスへのそれぞれのマッピングを格納し、
前記ゲストワークロードから、要求されたゲストアドレスを用いて前記メモリにアクセスする要求を受け取ったことに応答して、前記プロセッサはさらに、（ｉ）前記信頼できないワークロードマネージャから、前記要求されたゲストアドレスに対応するワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得し、（ｉｉ）格納されたマッピングが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定し、（ｉｉｉ）前記格納されたマッピングを探し出したことに応答して、前記格納されたマッピングの格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致するかどうかを判定し、（ｉｖ）前記格納されたマッピングの前記格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致した場合、前記ゲストワークロードが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする、装置。
【請求項２】
前記プロセッサはさらに、
前記格納されたマッピングの格納された期待ハードウェア物理アドレスが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを判定し、
前記ゲストワークロードが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にすることは、前記格納されたマッピングの前記格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致し、且つ前記格納されたマッピングの前記格納された期待ハードウェア物理アドレスが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、前記ゲストワークロードを有効にすることを含む、請求項１に記載の装置。
【請求項３】
前記ゲストワークロードはさらに、
（ｉ）前記ゲストワークロードによって前記メモリの前記領域のそれぞれのメモリ位置に書き込まれたコンテンツを、前記ゲストワークロード用のコンシューマ提供のキーで暗号化させ、
（ｉｉ）前記ゲストワークロードのそれぞれのマッピングを前記コンシューマ提供のキーで暗号化させる、請求項１又は２に記載の装置。
【請求項４】
前記ゲストワークロードのマッピングを前記コンシューマ提供のキーで暗号化させることは、前記マッピングのそれぞれの前記元のゲストアドレスを、前記マッピングのそれぞれの前記元のハードウェア物理アドレスに結び付ける、請求項３に記載の装置。
【請求項５】
前記ゲストワークロードによって書き込まれた前記コンテンツを前記コンシューマ提供のキーで暗号化させることはさらに、前記マッピングのそれぞれの前記元のゲストアドレスを、前記マッピングのそれぞれの前記元のハードウェア物理アドレスの暗号化されたコンテンツに結び付ける、請求項３に記載の装置。
【請求項６】
前記ゲストワークロードはさらに、メモリオーナーシップテーブルのそれぞれのエントリとして、それぞれのマッピングを格納する、請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記ゲストワークロードはさらに、前記ゲストワークロードのそれぞれの元のゲストアドレスから前記メモリオーナーシップテーブルの前記ゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを格納し、
前記プロセッサはさらに、前記ゲストワークロードからの、それぞれの前記元のゲストアドレスに格納されたデータにアクセスする要求に応答して、（ｉ）それぞれの前記元のゲストアドレスに対応する前記メモリオーナーシップテーブルのエントリを識別し、（ｉｉ）前記メモリオーナーシップテーブルの前記エントリの期待される元の仮想アドレスがそれぞれの前記元の仮想アドレスと一致することを、それぞれの前記元のゲストアドレスに格納されたデータにアクセスする前に確認する、請求項６に記載の装置。
【請求項８】
前記ゲストワークロードはさらに、前記ゲストワークロードの期待レジスタ値を格納して、前記プロセッサが前記ゲストワークロードのページディレクトリ及びページテーブルの位置を特定することを可能にし、
前記プロセッサは、ワークロードマネージャ提供のレジスタ値が前記ゲストワークロードの前記期待レジスタ値と一致することを、前記ゲストワークロードの前記ページディレクトリ及び前記ページテーブルにアクセスする前に確認する、請求項１から７のいずれか一項に記載の装置。
【請求項９】
前記ゲストワークロードはさらに、（ｉ）元の制御構造ハードウェア物理アドレスから前記ゲストワークロードの期待される制御構造ハードウェア物理アドレスへの制御構造マッピングを格納し、（ｉｉ）前記制御構造マッピングと共に制御構造標識を格納し、前記元の制御構造ハードウェア物理アドレスのコンテンツが前記ゲストワークロードの制御構造を含む場合、前記制御構造標識は真（ＴＲＵＥ）に設定され、
前記プロセッサはさらに、前記ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスが前記ゲストワークロードの前記期待される制御構造ハードウェア物理アドレスと一致すること、且つ前記制御構造標識が真であることを、前記ゲストワークロードの前記制御構造を前記ワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認する、請求項１から８のいずれか一項に記載の装置。
【請求項１０】
前記ゲストワークロードはさらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値を格納し、前記期待コンテンツ確認値は、前記特定の元のハードウェア物理アドレスのコンテンツをハッシュすることによって決定され、
前記プロセッサは、前記期待コンテンツ確認値が前記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、前記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する、請求項１から９のいずれか一項に記載の装置。
【請求項１１】
信頼できないワークロードマネージャを実行して、少なくとも１つのゲストワークロードの実行を管理する段階と、
前記少なくとも１つのゲストワークロードのうちのあるゲストワークロードから、要求されたゲストアドレスを用いてメモリにアクセスする要求を受け取る段階と、
前記信頼できないワークロードマネージャから、前記要求されたゲストアドレスに対応するワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得する段階と、
格納されたマッピングが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定する段階と、
前記格納されたマッピングを探し出したことに応答して、前記格納されたマッピングの格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致するかどうかを判定する段階と、
前記格納されたマッピングの前記格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致した場合、前記ゲストワークロードが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする段階と
を備えるコンピュータ実装方法。
【請求項１２】
前記格納されたマッピングの格納された期待ハードウェア物理アドレスが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを判定する段階をさらに備え、
前記ゲストワークロードが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする段階は、前記格納されたマッピングの前記格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致し、且つ前記格納されたマッピングの前記格納された期待ハードウェア物理アドレスが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、前記ゲストワークロードを有効にする段階を含む、請求項１１に記載のコンピュータ実装方法。
【請求項１３】
前記ゲストワークロードのそれぞれの元のゲストアドレスから前記ゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを含むメモリオーナーシップテーブルのエントリを識別する段階と、
前記メモリオーナーシップテーブルの前記エントリの期待される元のゲスト仮想アドレスが前記エントリのそれぞれの前記元の仮想アドレスと一致することを、それぞれの前記元のゲストアドレスに格納されたデータにアクセスする前に確認する段階と
をさらに備える、請求項１１又は１２に記載のコンピュータ実装方法。
【請求項１４】
前記ゲストワークロードの格納された期待レジスタ値を識別して、前記ゲストワークロードのページディレクトリ及びページテーブルの位置を特定する段階と、
ワークロードマネージャ提供のレジスタ値が前記ゲストワークロードの前記格納された期待レジスタ値と一致することを、前記ゲストワークロードの前記ページディレクトリ及び前記ページテーブルにアクセスする前に確認する段階と
をさらに備える、請求項１１から１３のいずれか一項に記載のコンピュータ実装方法。
【請求項１５】
（ｉ）元の制御構造ハードウェア物理アドレスから前記ゲストワークロードの期待される制御構造ハードウェア物理アドレスへの格納された制御構造マッピングと、（ｉｉ）前記制御構造マッピングと関連付けられた格納された制御構造標識とを識別する段階であって、前記元の制御構造ハードウェア物理アドレスのコンテンツが前記ゲストワークロードの制御構造を含む場合、前記制御構造標識は真に設定される、段階と、
前記ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスが前記ゲストワークロードの前記期待される制御構造ハードウェア物理アドレスと一致すること、且つ前記制御構造標識が真であることを、前記ゲストワークロードの前記制御構造を前記ワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認する段階と
をさらに備える、請求項１１から１４のいずれか一項に記載のコンピュータ実装方法。
【請求項１６】
特定の元のハードウェア物理アドレスの期待コンテンツ確認値を識別する段階と、
前記期待コンテンツ確認値が前記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、前記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する段階と
をさらに備える、請求項１１から１５のいずれか一項に記載のコンピュータ実装方法。
【請求項１７】
プロセッサによって実行された場合、請求項１１から１６のいずれか一項に記載のコンピュータ実装方法をマシンに実行させる命令を含む、少なくとも１つのコンピュータ可読媒体。
【請求項１８】
請求項１１から１６のいずれか一項に記載のコンピュータ実装方法を実行する手段を備えた、コンピュータ実装装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１７年２月２８日出願の「Ｓｅｃｕｒｅ  Ｐｕｂｌｉｃ  Ｃｌｏｕｄ  ｗｉｔｈ  Ｐｒｏｔｅｃｔｅｄ  Ｇｕｅｓｔ−Ｖｅｒｉｆｉｅｄ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌ」と題する米国特許出願第１５／４４４，７７１号に基づく優先権を主張するものであり、当該米国特許出願は、２０１６年１０月１４日出願の「Ｓｅｃｕｒｅ  Ｐｕｂｌｉｃ  Ｃｌｏｕｄ」と題する米国特許出願第１５／２９３，９６７号に基づく優先権を主張するものであり、当該米国特許出願は、２０１６年８月１１日出願の「Ｓｅｃｕｒｅ  Ｐｕｂｌｉｃ  Ｃｌｏｕｄ」と題する米国仮特許出願第６２／３７３，６２７号に基づく優先権を主張するものであり、これらの各開示は、参照により本明細書に組み込まれるものとする。
【背景技術】
【０００２】
今日のクラウドサービス環境において、クラウドサービスプロバイダのホストワークロード管理ソフトウェア（仮想化環境における仮想マシンモニタ（ＶＭＭ）など）は、ホストワークロード管理ソフトウェアがクラウドサービスのコンシューマに代わって管理するゲストワークロード（ゲスト仮想マシンなど）を完全に制御する。ホストワークロード管理ソフトウェアは、ゲストメモリに対する読み出し又は書き込み、ゲストワークロードを実行するソフトウェアの制御フローの変更、ゲストレジスタ状態の読み出し又は変更、レジスタ値などのゲスト制御構造の読み出し又は変更などができる。ゲストワークロードの実行をこのように完全に制御することは、ホストワークロード管理ソフトウェアが危険に晒され、ゲストワークロード内にあるコンシューマの秘密及びデータが公開されるようにゲストワークロードを変更し得るというセキュリティリスクを有する。
【図面の簡単な説明】
【０００３】
【図１】典型的な仮想マシン環境を示すブロック図である。
【０００４】
【図２】実施形態を実現するのに用いられ得るクラウドサービス環境のブロック図である。
【０００５】
【図３】実施形態を実現するのに用いられ得るサーバ環境を示す略図である。
【０００６】
【図４】実施形態に従って、コンシューマエージェントとサーバ環境の構成要素との間のデータフローを示す略図である。
【０００７】
【図５】実施形態に従って、コンシューマエージェントとサーバ環境の構成要素との間のデータフローを示す略図である。
【０００８】
【図６Ａ】実施形態に従って、サーバ環境の構成要素間のデータフローを示す略図である。
【図６Ｂ】実施形態に従って、サーバ環境の構成要素間のデータフローを示す略図である。
【０００９】
【図７】実施形態に従って、サーバ環境の構成要素間のデータフローを示す略図である。
【００１０】
【図８】実施形態に従って実行される方法のフローチャートである。
【００１１】
【図９】実施形態に従って実行される方法のフローチャートである。
【００１２】
【図１０】実施形態によるメモリオーナーシップテーブルを示す略図である。
【発明を実施するための形態】
【００１３】
仮想化クラウド環境において、仮想マシンモニタ（ＶＭＭ）はホストワークロード管理ソフトウェアとして機能し、ゲストワークロードは「仮想マシン」と呼ばれる。本明細書で提供される技法は、ＶＭＭ及びゲストＶＭの観点から説明されるが、これらの技法は一般に、オペレーティングシステムなどの他の種類のホストワークロード管理ソフトウェアや、アプリケーションなどの他の種類のゲストワークロードにも適用される。
【００１４】
リソースを最大限に活用するために、クラウドで実行するホストワークロード管理ソフトウェアは、あるコンシューマ（ゲストワークロードの所有者、又はクラウドサービスプロバイダのサーバ環境のテナントと呼ばれることがある）が所有するゲストワークロードから、別のコンシューマが所有する別のゲストワークロードに実行を切り替えてよい。あるゲストワークロードから別のゲストワークロードに切り替えると、ゲストワークロードの実行状態に関するデータ構造が、ホストワークロード管理ソフトウェアによって変更されることがある。これらのデータ構造は、メモリマッピング（例えば、ページテーブル及び拡張ページテーブル（ＥＰＴ））と、ゲストワークロードの実行を制御するのに用いられる制御構造（仮想マシン制御構造など）とを含んでよい。
【００１５】
ページテーブルは、コンピュータのオペレーティングシステムのメモリシステムによって用いられ、仮想／リニアアドレスと物理アドレスとの間のマッピングを格納するデータ構造である。仮想／リニアアドレスは、アクセスプロセスによって用いられ、物理アドレスはハードウェアによって用いられる。どのプロセスも、プロセスのワークロードを実行するのにメモリの大きな連続した部分が用いられているという印象を与えられる。しかしながら、物理的には、各プロセスのメモリは物理メモリの異なる領域に分散してよく、又は別の記憶装置、通常はハードディスクドライブに移される（ページアウトされる）ことがある。あるプロセスがメモリ内のデータへのアクセスを要求した場合、オペレーティングシステムは、このプロセスによって提供された仮想／リニアアドレスを、データが格納されている実際のメモリ位置の物理アドレスにマッピングする。
【００１６】
しかしながら、仮想化環境において、ゲストＶＭのオペレーティングシステムは物理ハードウェアアドレスにアクセスできない。したがって、ゲストＶＭは、ゲストオペレーティングシステム独自のページテーブルを用いて、ゲスト仮想／リニアアドレス（ＶＡ）とゲスト物理メモリアドレス（ＧＰＡ）との間の独自のメモリマッピングを形成する。これらのメモリマッピングは、Ｉｎｔｅｌ（登録商標）の拡張ページテーブル（Ｅｘｔｅｎｄｅｄ  Ｐａｇｅ  Ｔａｂｌｅ：ＥＰＴ）技術を用いてもよい。この技術では、変換索引バッファ（ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ：ＴＬＢ）キャッシュが、ゲストオペレーティングシステムに見られるように、仮想メモリ及び物理メモリを追跡する。ＥＰＴの目的は、ゲスト物理アドレスにアクセスする場合、各ゲスト仮想マシンに、ゲストＶＭ自体がメモリハードウェアを管理していると思わせることである。しかしながら、ゲスト物理アドレスは実際にはＶＭＭによって管理されており、ＶＭＭによって実際のハードウェア物理アドレスに変換されている。このように、現実には、物理システムがソフトウェアの別の層、つまりＶＭＭによって管理されているときに、ＶＭソフトウェアが物理システムを管理しているという錯覚を、ＶＭＭはＶＭソフトウェアに与える。
【００１７】
個々のＶＭは、アドレス空間識別子（ＡＳＩＤ）を各ＶＭに割り当てることで、ＴＬＢによって追跡される。アドレス空間識別子を用いると、ＴＬＢは、各仮想マシンの物理ハードウェアアドレスにマッピングする仮想マシンアドレス空間を追跡できる。ＡＳＩＤは、別のＶＭに切り替える場合に、ゲストＶＭ状態を以前のＶＭのＴＬＢからフラッシュする必要がないように、ＴＬＢにタグを付けるのに用いられる。その代わりに、ＴＬＢは、異なるＶＭエントリを分けておくためにタグを用い、現在実行中のＶＭにだけタグを用いる一方で、非アクティブのＶＭの状態を今まで通りキャッシュする。
【００１８】
仮想化環境において、仮想マシン制御構造（ＶＭＣＳとは、これまでホストＶＭＭによって管理されていたメモリ内のデータ構造である。ＶＭＣＳは、ゲストＶＭ及びホストＶＭＭの両方のプロセッサレジスタ状態を保持する。ＶＭＣＳは、各ゲストＶＭの論理プロセッサごとに１つ存在し、ゲストＶＭはホストＶＭＭによって管理される。マルチプロセッサシステムでは、ゲストＶＭを同時に実行する各プロセッサが、独自のＶＭＣＳを有してよい。異なるＶＭ間の実行コンテキストが変わるたびに、対応するＶＭＣＳは現在実行中のＶＭ用に復元され、ＶＭの仮想プロセッサの状態を規定する。実行コンテキストがゲストＶＭから切り替わって（ＶＭＥｘｉｔ）ホストＶＭＭに戻った場合、ホストの保存されたプロセッサ状態をＶＭＣＳのホスト状態領域から復元するのに、同じＶＭＣＳ構造が用いられる。
【００１９】
本明細書に提示される開示によって、ホストＶＭＭを供給するクラウドサービスプロバイダがクラウドサービスプロバイダのリソースの使用を制御するように、ホストＶＭＭはメモリマッピング／ページテーブルを制御し続けることが可能となる。これに対して、仮想マシン制御構造（ＶＭＣＳ）の管理はゲストＶＭに移される。ホストＶＭＭは、ゲストが作成した又はゲストが変更したＶＭＣＳを今まで通り測定し確認してよいが、ホストＶＭＭは、ＶＭＣＳが用いられる前に、ＶＭＣＳをホストが必要とし得るように変更するようゲストＶＭに要求してよい。
【００２０】
本開示において、コンシューマのワークロード及び秘密を危険に晒されたクラウドサービスプロバイダのハードウェア又はソフトウェアから守り、またクラウドサービスプロバイダのハードウェア及びソフトウェアを危険に晒されたコンシューマワークロードから守るという概念が、さらに展開される。これらの概念は、上述した２０１７年２月２８日出願の「Ｓｅｃｕｒｅ  Ｐｕｂｌｉｃ  Ｃｌｏｕｄ  ｗｉｔｈ  Ｐｒｏｔｅｃｔｅｄ  Ｇｕｅｓｔ−Ｖｅｒｉｆｉｅｄ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌ」と題する米国特許出願第１５／４４４，７７１号を含む同時係属中の特許出願に取り入れられている。当該米国特許出願は、２０１６年１０月１４日出願の「Ｓｅｃｕｒｅ  Ｐｕｂｌｉｃ  Ｃｌｏｕｄ」と題する米国特許出願第１５／２９３，９６７号に基づく優先権を主張するものであり、当該米国特許出願は、２０１６年８月１１日出願の「Ｓｅｃｕｒｅ  Ｐｕｂｌｉｃ  Ｃｌｏｕｄ」と題する米国仮特許出願第６２／３７３，６２７号に基づく優先権を主張する。
【００２１】
上記の特許出願において、コンシューマのワークロード及び秘密を危険に晒されたクラウドサービスプロバイダのハードウェア又はソフトウェアから守り、またクラウドサービスプロバイダのハードウェア及びソフトウェアを危険に晒されたコンシューマワークロードから守ることは、キードメインの概念に基づいている。キードメインは、メモリから暗号的に分かれた部分であり、キードメインに属するメモリ位置に格納されたデータにアクセスするには、関連するキードメインキーを用いてデータを復号する必要がある。ハードウェアがキードメインに属するメモリ位置にデータを書き込む場合、データはキードメインキーを用いて暗号化される。ハードウェアがキードメインに属するメモリ位置からデータを読み出す場合、データはキードメインキーを用いて復号される。キードメインに属する物理メモリ位置のコンテンツが、間違ったキードメインキーを用いて復号された場合、得られる平文にはエラーが含まれ得る、及び／又はインテグリティ違反が報告され得る。インテグリティ違反に応じて、誤って用いたキードメインキーは無効にされてよい。
【００２２】
キードメインを用いると、ゲストＶＭは、ホストＶＭＭでもアクセスできないメモリの保護領域内で実行される。これは、キードメインが、コンシューマ提供の（テナント提供の）キードメインキーで暗号化されており、このキードメインキーはホストＶＭＭに知られていないからである。別の実施形態において、メモリの保護領域は範囲レジスタを用いて実装される。指定レジスタは、ホストＶＭＭ（及び他のソフトウェア）がゲストＶＭの保護メモリ領域にアクセスできないようにする。本開示のために、ゲストＶＭの保護メモリ領域はキードメインに関して説明されることになるが、本明細書に説明される技法は、コンシューマのゲストＶＭをホストＶＭＭにアクセスできなくする他の技法を用いて実装される保護メモリ領域にも適用可能である。ゲストＶＭは、ＶＭＭによって制御されたメモリマッピングがゲストＶＭを危険に晒さないことを保証することもできる。
【００２３】
本開示によれば、ゲストＶＭの実行状態に関する仮想化データ構造（例えば、ＶＭＣＳ）はまた、保護メモリ領域（キードメイン）に配置される。これらの仮想化データ構造は、キードメインキーで暗号化される。ホストＶＭＭ及び他のゲストＶＭは、他のキードメイン用のキードメインキーを持っていないので、これらの制御構造を変更できず、また保護メモリ領域にアクセスできない。しかしながら、ホストのセキュリティをゲストが危険に晒すことができないことを保証するために、ハードウェアによってホストＶＭＭがこれらの制御構造のコンテンツを確認することを可能にする方法が提供される。
【００２４】
ＶＭＭ又はＯＳカーネルなどの、クラウドサービスプロバイダのメモリマネージャが、異なるキードメインを用いて、異なる所有者／コンシューマ／テナントに属するデータを暗号的に分別してよい。例えば、クラウドサービス環境では、バンキングサービスなどのクラウドサービスの異なるコンシューマに属するデータを暗号的に分別するのに、異なるキードメインが用いられてよい。仮想化環境では、異なる仮想マシンに属するデータを分別するのに、異なるキードメインが用いられてよい。それぞれの仮想マシンに属するデータは、例えば、各仮想マシンに属するコンシューマの秘密（銀行の口座番号、社会保障番号など）を含むことがある。それぞれの仮想マシンに属するデータは、クラウドサービスプロバイダの環境内でそれぞれの仮想マシンの秘密を守るために実行されるコンピュータコード（コードイメージ又は単にイメージとも呼ばれる）も含むことがある。
【００２５】
あるコンシューマが、自分のワークロードが実行されているキードメインを所有する。キードメインキーは、キードメインを所有するコンシューマによって作成され、クラウドサービスプロバイダのメモリマネージャ／ＶＭＭ／ＯＳカーネルを介した通信を必要とすることなく、直接クラウドサービスプロバイダのサーバハードウェアにセキュアに提供される。他の実施形態において、コンシューマは、別のエンティティ（クラウドサービスプロバイダのサーバなど）によって提供されたキーを、キードメインに属するメモリ位置を暗号化するのに用いられる別のキーに変換してよい。さらに他の実施形態において、キードメインに属する異なるＩＰブロック（メモリ位置のセット）を暗号化するのに、異なるキーが用いられてよい。例えば、他のコンシューマの秘密を暗号化するのに用いられたキーと異なるキーが、コンシューマＶＭイメージのコードを含むＩＰブロックを暗号化するのに用いられてよい。本明細書の実施形態の説明を簡略化するために、本出願は、キードメインに属する各物理メモリ位置のコンテンツを、キードメインを所有するコンシューマによって作成されたキードメインキーで暗号化されるものとして説明するが、他の実施形態も本発明の範囲内に含まれる。
【００２６】
１つの実施形態において、キードメインが未使用の物理アドレスビットを用いて識別される。ハードウェアは、識別されたキードメインの識別子（本明細書では選択子とも呼ばれる）を未使用のアドレスビット（又はキャッシュを通過した他のメタデータ）に追加する。例えば、システムにインストールされた物理メモリ位置は、６４ビット物理メモリアドレスを用いてアドレス指定され得るより少ない可能性があるので、未使用の最上位アドレスビットが、異なるキードメインを選択するのに用いられ得る。２つの異なるキードメインアドレスが、同じ物理メモリ位置に別名を付けることができる。しかしながら、この物理メモリ位置のデータがキャッシュに読み出された場合、キャッシュは完全アドレス解決（例えば、全６４ビット物理メモリアドレスを含む）でキードメインアドレスを独立して保持する。全６４ビット物理メモリアドレスの未使用の物理アドレスビットを考慮した場合、一意に識別されるキードメインアドレスは、物理メモリ位置が属するキードメインを決定する。物理メモリ位置が属するキードメインを識別することで、この物理メモリ位置のコンテンツを復号するのに用いられ得るキードメインキーも識別される。他の実施形態は、メモリアドレスに基づいて検索されるキー又はキー識別子のテーブルを用いることがある。他の実施形態は、キャッシュの前のプロセッサでメモリを暗号化し得る。メモリ暗号化ロジックは、メモリ階層のどのレベルにあってもよい。
【００２７】
１つの実施形態において、仮想マシンモニタは、ＶＭの実行をもたらし、終了し、再開する能力を有する特権コードを含む。これらの特権は、仮想マシンの実行を終了するか又は再開する能力を含み得る（ＶＭｅｘｉｔ／ＶＭｒｅｓｕｍｅ及びＶＭＬａｕｎｃｈ）。
【００２８】
コンシューマのＶＭイメージはゲストＶＭとして実行され、ＶＭＭによってマッピングされて権限を与えられたメモリだけにアクセスできる。ＶＭはページテーブルを用いて、仮想／リニアアドレスとゲスト物理アドレスとの間のマッピングを格納する。第２レベルのアドレス変換（ネステッドページングとしても知られる）が実行されて、ゲスト物理アドレス（ＧＰＡ）をホスト物理アドレス（ＨＰＡ）に変換する。アドレス変換の文脈において、ゲスト仮想／リニアアドレスは単に「仮想アドレス」と呼ばれることがあり、ゲスト物理アドレスは単に「ゲストアドレス」と呼ばれることがあり、ホスト物理アドレスは「ハードウェア物理アドレス」と呼ばれることがある。１つの実施形態において、第２レベルのアドレス変換は拡張ページテーブル（ＥＰＴ）で追跡される。
【００２９】
本開示によると、ＶＭＭはＥＰＴの制御を維持するが、暗号化されたコンシューマドメインイメージは、コンシューマの仮想マシンに固有の暗号化されたコンシューマドメイン制御構造を含み得る。通常であればホストＶＭＭによって提供される仮想マシン制御構造（ＶＭＣＳ）は、今ではコンシューマ又はコンシューマが信頼する仲介者によってクラウドサービスプロバイダに提供される暗号化されたコンシューマドメインイメージにも含まれる。
【００３０】
コンシューマのＶＭプロセッサ状態を設定する制御構造を提供することによって、コンシューマは、ホスト仮想マシンモニタに頼ることなくコンシューマワークロードの制御を維持し、コンシューマのワークロード及びデータを守る。さらに、ホストＶＭＭがアクセスできず、またホストＶＭＭが暗号化キーを持っていない暗号化されたメモリ内の制御構造を提供するによって、コンシューマのワークロード及びデータが、危険に晒されたホストＶＭＭからさらに守られる。一方、ホストＶＭＭは、今まで通りハードウェアメカニズム（先述した特許出願に説明されているハッシュキードメイン（ＨａｓｈＫＤ）命令など）を使用して、ホストＶＭＭが関連ＶＭをインスタンス化するか又は実行する前に、ＶＭ制御構造（及びコンシューマによって提供される他の構造）のコンテンツを評価し確認してよい。
【００３１】
ホストＶＭＭが、ゲストＶＭの制御構造を直接変更することなく、ゲストＶＭの実行を管理することを可能にするために、別の種類のゲストＶＭ、又は本明細書で「ゲストエージェントＶＭ」若しくは単に「エージェント」と呼ばれるＶＭ内のソフトウェアコンポーネントが用いられてよい。ホストＶＭＭはエージェントを起動し、ゲストＶＭが実行される保護キードメインの中で動作する。エージェントはゲストＶＭと共に動作し、ゲストＶＭを不正変更から守る。１つの実施形態において、仮想化環境によって、エージェントが、ホストＶＭＭに代わって他のゲストＶＭの実行フロー及びレジスタ状態を制御する制御構造にアクセスして、これを変更することを可能にするポリシーが実現される。別のゲストＶＭの制御構造を変更することで、エージェントは、コンシューマによって供給されたイメージをゲストＶＭに読み込み、保護メモリ領域／キードメイン内の複数のゲストＶＭのために、追加のＶＭＣＳを作成するか又は変更するなどの機能を実行できる。なお、従来の仮想化環境においてホストＶＭＭにより提供されるＶＭＣＳ機能は、ホストＶＭＭによる要求に応じて、代わりにエージェントによって実現され、エージェントを、コンシューマの暗号化されたキードメイン内で動作するホストＶＭＭの仲介者にする。ハードウェアによって、ホストＶＭＭは、ＶＭが実行される前にＶＭＣＳ（及び関連構造）のコンテンツを確認し（読み出すが変更しない）、この構造のコンテンツが正しく、またホストＶＭＭを危険に晒さないことを保証することが可能になり得る。
【００３２】
さらに、ホストＶＭＭとゲストＶＭとの間の仲介者としてエージェントを用いると、エージェントはＶＭＭがゲストＶＭを誤って設定して、機密データを漏洩したり、コード又はデータを注入したり、ゲストＶＭの実行フローを変更したりすることがないことを確認するのが可能になる。ゲストＶＭは、独自のメモリ暗号化キー（キードメインキー）を用いて、メモリ構造を暗号化してよい。ゲストＶＭは次に、ゲストＶＭに代わってホストＶＭＭの制御下で、ホストＶＭＭ指定のメモリ位置にインストールするために、得られる暗号文をホストＶＭＭに返す。ゲストＶＭがこれらのメモリ位置にまだアクセスできないことを想定すると、ＶＭＭはＶＭに代わって暗号文をインストールできる。
【００３３】
エージェントは、ＶＭＭによって制御されたメモリマッピング／ページテーブルがゲストＶＭの独自のメモリマッピングに適合することも保証できる。例えば、エージェントは、逆マッピングテーブル（ＲＭＴ）とも呼ばれるメモリオーナーシップテーブル（ＭＯＴ）を用いてよく、ＭＯＴは、ゲストアドレス（ゲスト仮想アドレス及び／又はゲスト物理アドレスのいずれか）から期待ハードウェア物理アドレスへのマッピングを提供する。これらのマッピングはゲストＶＭによってＭＯＴに取り込まれ、これによりゲストＶＭは、ゲストＶＭの暗号化されたメモリがＶＭＭによるリマッピング攻撃を受けていないことが保証され得る。ここで、ＶＭは（ＶＭの秘密メモリ暗号化キー／キードメインキーで暗号化された）ＭＯＴの暗号文エントリを生成してよい。ＶＭはこれらの暗号文エントリをＶＭＭに提供してよく、ＶＭＭはこれらのエントリを（メモリ上のデータ構造として管理され得る）ＭＯＴテーブルにインストールしてよい。
【００３４】
１つの実施形態において、特定のゲストＶＭをインスタンス化する前に、ホストＶＭＭに代わって作動するエージェントが、特定のゲスト仮想マシンのためにＶＭＣＳを初期化する。特定のゲストＶＭがインスタンス化された場合、ホストＶＭＭは、（例えば、ＶＭポインタロード（ＶＭＰＴＲＬＤ）命令を介して）ＶＭＣＳを読み込ませる。別の実施形態において、コンシューマは、この同じ方法を用いてイメージを遠隔で作成（例えば、エージェントＶＭを作成）してよい。
エージェントがメモリに読み込まれ、実行できるようになると、エージェントはＶＭＭに代わって、ＶＭＣＳ及び他の制御構造の作成及び変更を続けることができる。
【００３５】
ホストＶＭＭは、ゲストＶＭのイメージが読み込まれているメモリ位置の少なくとも１つのハードウェア物理アドレスをコンシューマに提供する。このハードウェア物理アドレスは、コンシューマが初期の暗号化メモリイメージを作成する場合はコンシューマに提供されてよく、又は、ゲストＶＭをインスタンス化する前はコンシューマＶＭのエージェントに提供されてよく、又は、コンシューマのゲストＶＭがインスタンス化されると、コンシューマのゲストＶＭに提供されてよい。初期の命令ポインタがゲストＶＭのＶＭＣＳに設定され、ゲストＶＭのイメージが読み込まれるＶＭＭ提供のハードウェア物理アドレスを指し示す。ホストＶＭＭにより提供されたハードウェア物理アドレスを開始点として用い、ゲストＶＭは、実行中にゲストＶＭによってアクセスされる他の期待ハードウェア物理アドレスを決定する。ＶＭＣＳの追加フィールドが、これらの期待ハードウェア物理アドレスの値で更新されてよい。
【００３６】
１つの実施形態において、ゲストＶＭが、実行中にアクセスされる期待ハードウェア物理アドレスを決定すると、ゲストＶＭは、ゲストＶＭのページテーブルのゲストアドレスからこれらの期待ハードウェア物理アドレスへのマッピングを確立する。ゲストＶＭのページテーブルのゲストアドレスからこれらの期待ハードウェア物理アドレスへのゲストＶＭのマッピングは、メモリオーナーシップテーブル（ＭＯＴ）に格納される。１つの実施形態において、ゲストＶＭはそのメモリオーナーシップテーブルエントリを、ゲストＶＭのキードメインを暗号化するのに用いられる同じキードメインキーで暗号化する。ゲストＶＭのＭＯＴエントリをゲストＶＭのキードメインキーで暗号化することによって、そのキードメインキーの所有者だけが、そのゲストＶＭの暗号化されたメモリの有効なマッピングをメモリオーナーシップテーブルに確立できる。
【００３７】
遠隔コンシューマは、コンシューマの初期の暗号化されたコンシューマイメージを作成する場合、サーバハードウェア（又はサーバハードウェアの基本的な保護プロセッサ／マイクロコード／ファームウェア）だけが、キードメインキーを復号して、キードメインキーをメモリ暗号化エンジンにインストールできるように、コンシューマがサーバの公開鍵と共に用いたいと望むキードメインキーを暗号化する。キードメイン作成命令（ＣｒｅａｔｅＫＤ）（先述した特許出願に説明されている）は、コンシューマの暗号化されたキードメインキーをサーバハードウェアに渡すのに用いられる。ホストＶＭＭは、キードメインの関連するキー識別子（ＫｅｙＩＤ）を決定してよい。ホストＶＭＭは暗号化されたキードメインキーにしかアクセスできないので、ゲストＶＭの保護キードメインを復号できない。ホストＶＭＭはＣｒｅａｔｅＫＤコマンドをプロセッサに発行し、暗号化されたキードメインキー及びその関連するキー識別子（ＫｅｙＩＤ）を提供する。ＣｒｅａｔｅＫＤコマンドを受け取ったことに応答して、プロセッサは、プロセッサと関連付けられた秘密鍵を用いて暗号化されたキードメインキーを復号する。プロセッサはまた、キードメイン識別子を含む各メモリアドレスに対して復号されたキードメインキーを使用するようにメモリ暗号化エンジンをプログラムする。
【００３８】
プロセッサハードウェアが現在実行中のゲストＶＭのメモリ読み出しコマンド又はメモリ書き込みコマンドを処理する場合、プロセッサハードウェア（例えば、ページミスハンドラ（ＰＭＨ））は、現在実行中のゲストＶＭによって提供された仮想／リニアアドレスをオペレーティングシステムのページテーブルで検索し、ゲスト物理アドレスを取得する。プロセッサは、ＶＭのページテーブルにアクセスする場合、ＶＭのキードメインキーを用い、読み出しコマンド又は書き込みコマンドによってアクセスされる仮想／リニアアドレスのゲスト物理アドレスを決定する。プロセッサは次に、（ＶＭＭのＫｅｙＩＤをアドレスに設定するか、又はそうでなければキーがないことを示すことによって）ＶＭＭのキードメインキーを用い、ゲスト物理アドレス（ＧＰＡ）に対するホスト物理アドレス（ＨＰＡ又はハードウェア物理アドレス）をＶＭＭによって管理される拡張ページテーブルから取得する。キャッシュされたマッピング内でゲスト物理アドレス（ＧＰＡ）を探し出すことができない場合、ページミスハンドラ（ＰＭＨ）が拡張ページテーブル（ＥＰＴ）を暗号化されていないメモリから（又はそうでなければＶＭＭのＫｅｙＩＤを用いて）読み込む。ＰＭＨはＥＰＴのページウォークを実行して、ゲスト仮想／リニアアドレスからハードウェア物理アドレスへのマッピングを探し出す。
【００３９】
１つの実施形態において、ＰＭＨによるＥＰＴウォークは、所与のゲスト物理アドレスに対応する探し出されたハードウェア物理アドレスが、ゲストＶＭの期待ハードウェア物理アドレスと一致することを確認することによって終了する。この確認は、メモリオーナーシップテーブル（ＭＯＴ）を用いて行われる。プロセッサハードウェアは、現在実行中のゲストＶＭのメモリ暗号化キー（キードメインキー）を用いて、メモリオーナーシップテーブルエントリを復号し、期待ハードウェア物理アドレスを決定する。
【００４０】
メモリオーナーシップテーブルは、テーブルとして、アクセスされているページの物理アドレスで索引付けされてよい。ＭＯＴは、キャッシュされていない（まだＴＬＢ内にない）メモリアクセスが何もないか確認され得る。そのようなメモリアクセスには、ページングを介さず直接物理アドレスにアクセスすることが含まれる。ページングを介さず直接物理アドレスにアクセスすることは、ＶＭポインタロード（ＶＭＰＴＲＬＤ）命令で実行されるように、ＶＭＣＳ内のアドレスにアクセスすること、及びＶＭＣＳを読み込むのに用いられるアドレスにアクセスすることを含む。この確認は、探し出されたハードウェア物理アドレスを、現在実行中のゲストＶＭに対応するメモリオーナーシップテーブルのエントリ内で検索することにより行われる。１つの実施形態において、プロセッサハードウェアは、ＶＭＣＳを読み込む場合に提供されるハードウェア物理アドレス（ＶＭＰＴＲＬＤ命令と共に用いられる物理アドレスなど）の最上位ビットから、現在実行中のゲストＶＭのキードメイン識別子（ＫＤ＿ＩＤ）を決定する。ＭＯＴは、ゲストＶＭに関する限り、ＶＭＰＴＲＬＤ命令で提供される物理アドレスがＶＭＣＳであるかどうかを示してもよい（なぜならば、コンシューマ、ゲスト、又はそのエージェントだけが、キードメインキーで暗号化されたＶＭＣＳを作成するからである）。
【００４１】
メモリオーナーシップテーブルエントリが適切に復号され、エラーがない場合、ＥＰＴエントリの探し出されたハードウェア物理アドレスは、ゲスト物理アドレスのメモリオーナーシップテーブルに格納された期待ハードウェア物理アドレスと比較される。ＥＰＴのハードウェア物理アドレスがゲストＶＭの期待ハードウェア物理アドレスと一致する場合、プロセッサハードウェアは、メモリ読み出し又は書き込みを進めてよい。１つの実施形態において、仮想／リニアアドレスからハードウェア物理アドレスへのマッピングは、変換索引バッファ及び／又はキャッシュに保存される。
【００４２】
ＥＰＴのハードウェア物理アドレスがゲストＶＭの期待ハードウェア物理アドレスと一致しない場合、ゲストＶＭは強制的に終了させられてよく、又はプロセッサはメモリ読み出し又は書き込みの試みをアボートしてよい。
【００４３】
これらの技法によって、コンシューマのワークロードは、ホストＶＭＭによるアクセス又は操作から守られるが、それでもホストＶＭＭはプラットフォームの完全な制御を維持し、プラットフォーム上で作動するゲスト仮想マシンを管理することが可能になる。メモリ暗号化技術によって、ゲストＶＭのワークロードは物理的な攻撃から守られ、ホストＶＭＭがＶＭの（暗号化された）メモリにアクセスすることが阻止される。クラウドサービスプロバイダのサーバに物理的にアクセスできるクラウドサービスプロバイダのソフトウェアも、管理者も、他のだれであっても、保護されたゲストＶＭにアクセスすることも、これを変更することもできない。本明細書で説明される技法を用いて提供される保護は、コンシューマが（構内にある）プライベートクラウドで同じワークロードを実行した場合と同じレベルの機密性及びセキュリティを効果的に提供する。
【００４４】
ここで図１を参照すると、典型的な仮想マシン環境１００の構成要素を示すブロック図が示されている。クラウドサービスプロバイダのサーバにおいて提供される仮想マシン環境の典型的な実装例が示されている。サーバハードウェア１１０は、メモリ１１２とメモリ暗号化エンジン１１４とを含む。
【００４５】
仮想マシンモニタ（ＶＭＭ）層１２０がサーバハードウェア１１０上で作動している。図示された典型的な仮想マシン環境１００において、ＶＭＭ層１２０は、ＶＭ１（１３０１）、ＶＭ２（１３０２）、及びＶＭ３（１３０３）などの仮想マシン（ＶＭ）をクラウドサービスプロバイダのサーバハードウェア１１０上で作成し実行するコンピュータソフトウェア又はファームウェアである。これらのＶＭ、つまり、ＶＭ１（１３０１）、ＶＭ２（１３０２）、及びＶＭ３（１３０３）のそれぞれは、図１では独立したブロックとして示されており、異なるＶＭの全てが共通のＶＭＭ層１２０の制御下にあることを表している。ＶＭＭ層１２０は、サーバハードウェア１１０などのサーバリソースへのアクセスを、ＶＭＭが制御するこれらのＶＭに提供する。
【００４６】
ＶＭＭ層１２０は、ＶＭ制御構造（ＶＭＣＳ）１２４及び拡張ページテーブル（ＥＰＴ）１２６などのデータ構造を用いて、ＶＭの実行を制御する。ＶＭＣＳはメモリ内のデータ構造であり、これはＶＭごとに１つ存在し、ＶＭＭによって管理される。異なるＶＭ間の実行コンテキストが変わるたびに、ＶＭＣＳは現在のＶＭ用に復元され、ＶＭの仮想プロセッサの状態を規定する。拡張ページテーブル（ＥＰＴ）が、ＶＭの仮想プロセッサのメモリを、ゲストによって用いられるゲスト物理アドレスからホストによって管理される物理アドレスにリマッピングするのに用いられ、ホストは、どのメモリリソース／位置がゲストに利用可能かを割り当てることが可能になる。
【００４７】
ＶＭＭ層１２０のソフトウェア又はファームウェアは、クラウドサービスプロバイダによって提供され、各ＶＭの信頼できるコンピュータ処理基盤（Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｂａｓｅ：ＴＣＢ）の一部である。今日のオペレーティングシステムは、ＴＣＢのサイズを減らそうと努力しており、これにより、ＴＣＢコードベースの包括的な検査が（手動又はコンピュータ支援によるソフトウェア監査又はプログラム確認によって）実現可能になる。
【００４８】
図１の通常の仮想マシン環境１００において、クラウドサービスプロバイダによって提供されたＶＭＭ１２２は、これらのＶＭ，つまりＶＭ１（１３０１）、ＶＭ２（１３０２）、及びＶＭ３（１３０３）のそれぞれのＴＣＢに存在する。ＶＭＭ１２２をＴＣＢに含めることで、この特定のＶＭを制御するＶＭＭ１２２をＶＭ１（１３０１）などの特定のＶＭに認識させない、測定させない、又は信頼させないようにする。クラウドサービスプロバイダは、ＶＭであるＶＭ１（１３０１）の所有者の知らない間に、いつでもＶＭＭ１２２を変更できる。さらに、暗号的な分離はＶＭ間に存在しない。ＶＭＭが危険に晒されている場合、エラーのあるＶＭは、危険に晒されているにもかかわらず第２のＶＭに信頼されているＶＭＭを介して、第２のＶＭのプライベートデータにアクセスできる。
【００４９】
コンシューマのプロセス／ＶＭを制御するＶＭＭが信頼できるという保証をコンシューマが得るために、最も知られている技法がハードウェアを用いてクラウドの遠隔マシンで作動するソフトウェア／ファームウェア（この場合は、ＶＭＭ１２２）を測定し、クラウドの遠隔マシンで作動しているソフトウェア／ファームウェアはコンシューマが期待するソフトウェア／ファームウェアのバージョンであるという証明をコンシューマに返す。パブリッククラウドサービスプロバイダのＶＭＭがコンシューマのＴＣＢに含まれていると、コンシューマは、パブリッククラウドサービスプロバイダによって行われた信頼性の証明を独立して評価することができず、コンシューマは、測定が行われた後に、ＶＭＭが危険に晒されていないままであることを知ることもできない。
【００５０】
ここで図２を参照すると、本発明の一実施形態によるクラウドサービス環境のブロック図が示されている。図２に示すように、コンシューマが仮想化サービスを含むサービスをパブリッククラウドサービスプロバイダに要求することを可能にするために、ネットワーク２００が用いられ得る。ここに見られるように、ネットワーク２００は、任意の種類の通信ネットワークに対応でき、インターネット２２０などの所与のネットワークを介して相互接続された多くの異なる種類のコンピュータ処理装置を含むことができる。
【００５１】
クラウドストレージ２１０が、様々なコンピュータ処理装置、記憶装置などを含むデータセンタの一部として提供され得る。１つの例として、クラウドストレージ２１０は、ディスクなどの複数のストレージコンポーネント、光学ベース又は半導体ベースのストレージを含む記憶装置であってよい。クラウドストレージ２１０は、例えば、仮想マシンをインスタンス化してコンシューマの要求に応じたサービスを提供する仮想マシンモニタ（ＶＭＭ）アプリケーションを含む様々なアプリケーションのマスターコピーのレポジトリとして機能し得る。図２に示す実施形態において、ＶＭＭアプリケーションのマスターコピーがＶＭＭイメージ２１２の形で格納される。ＶＭＭイメージ２１２は、仮想マシンモニタ（ＶＭＭ）の形で仮想マシンプラットフォームを提供するように設計されたソフトウェアスタックを含むソフトウェアイメージである。
【００５２】
したがって、図２にさらに見られるように、同じ場所に、例えば、同じデータセンタの一部として、パブリッククラウドプロバイダサーバ２１５１及び２１５２などの１つ又は複数のパブリッククラウドサービスプロバイダサーバが、クラウドストレージ２１０に結合され得る。様々な実施形態において、パブリッククラウドサービスプロバイダサーバは、仮想化要求を含むコンシューマサービス要求に応えるのに用いられ得る。例えば、各パブリッククラウドサービスプロバイダサーバは、コンシューマに代わって、１つ又は複数の仮想マシンをホストしてよい。図２に示す例において、パブリッククラウドプロバイダサーバ２１５１は、ＶＭ１（２４０１）及びＶＭ２（２４０２）という２つの仮想マシンをホストする。同様に、パブリッククラウドプロバイダサーバ２１５２は、ＶＭ１（２４０３）及びＶＭ２（２４０４）という２つの仮想マシンをホストする。図示した実施形態において、パブリッククラウドプロバイダサーバ２１５１及び２１５２のそれぞれはまた、ＶＭＭイメージ２１２のそれぞれのＶＭＭインスタンスをＶＭＭ２２２１及びＶＭＭ２２２２として実行する。
【００５３】
図２に示すように、様々なコンシューマデバイス、例えば、クラウドサービスコンシューマデバイス２３０１及び２３０２が存在し得る。そのようなクラウドサービスコンシューマデバイスは、所与のユーザのパーソナルデバイス、例えば、スマートフォン、タブレットコンピュータ、デスクトップコンピュータなどであってよい。あるいは、クラウドサービスコンシューマデバイスは、クラウドサービスを利用する組織のサーバであってもよい。さらに、クラウドサービスコンシューマデバイスは、ソフトウェアを介してエミュレートされても、仮想マシン（ＶＭ）内で実行されてもよい。換言すれば、コンシューマがクラウドプロバイダのハードウェアのエミュレータをコンシューマのデバイス上で実行し得るように、エミュレータ又はシミュレータが、クラウドプロバイダのハードウェアをソフトウェアでエミュレートすることができる。
【００５４】
クラウドサービスコンシューマデバイス２３０１及び２３０２のそれぞれは、それぞれのクラウドサービスコンシューマ２３１１及び２３１２並びにそれぞれのＶＭイメージ２３２１及び２３２２を提供する。クラウドサービスコンシューマ２３１１及び２３１２は、例えば、クラウドサービスを要求するのに用いられるクラウドサービスアプリケーションのクライアント側コンポーネントであってよい。クラウドサービスコンシューマ２３１１及び２３１２などのクラウドサービスコンシューマは、本明細書において「コンシューマ」として参照される。ＶＭイメージ２３２１および２３２２は、それぞれのクラウドサービスコンシューマデバイス２３０１及び２３０２に結合されたストレージ（不図示）に格納されてよい。これらのＶＭイメージは、コンシューマによってクラウドサービスプロバイダに提供され、クラウドプロバイダのサーバ２１５１で作動するＶＭ１（２４０１）などのセキュアなＶＭを作成するのに用いられる。
【００５５】
セキュアなＶＭが、本明細書で説明される技法に従って、クラウドサービスプロバイダのサーバに確立されている場合、コンシューマは次に、このＶＭをコンシューマの秘密鍵と共に用い、コンシューマに代わって追加のＶＭを作成してよい。こうして、１つのコンシューマＶＭがクラウドサービスプロバイダのクラウドにセキュアに確立され得ると、このＶＭは次に、追加のセキュアなＶＭを作成することを含む、図２のコンシューマデバイスの全てのオペレーションを実行できる。同様に、コンシューマは、セキュアなＶＭを複数のクラウドサービスプロバイダと確立することができ、これらのセキュアなＶＭは、セキュアな通信チャネルを介し、コンシューマの秘密鍵を用いてセキュアに情報を交換できる。
【００５６】
図３を参照すると、本開示に適合する環境３００が提示されている。環境３００は、ハードウェア層３１０と、ゲストワークロード層（すなわち、仮想マシンモニタ（ＶＭＭ）層３２０）と、メモリ３１２とを含む。メモリ暗号化エンジン３１４がハードウェア３１０の一部として示されている。メモリ暗号化エンジン３１４はメモリ３１２に隣接して示されており、メモリ暗号化エンジン３１４がメモリ３１２の暗号化及び／又は復号に用いられることを例示している。メモリ暗号化エンジン３１４は、メモリオーナーシップテーブル（ＭＯＴ）３８０にも隣接して示されており、メモリ暗号化エンジン３１４がＭＯＴ３８０の暗号化及び／又は復号に用いられることを示している。ＶＭＭ層３２０内では、ＶＭＭ３２２が仮想マシンを管理し、拡張ページテーブル（ＥＰＴ）３２６を維持する。
【００５７】
メモリ暗号化エンジン３１４を含むハードウェア層３１０と、ＶＭＭ層３２０とが、メモリオーナーシップテーブル（ＭＯＴ）３８０を共有する。メモリオーナーシップテーブル３８０は、ゲストＶＭのゲストアドレスを実際のハードウェア物理アドレス（ＨＰＡ）にマッピングするのに用いられる。１つの実施形態において、ゲストＶＭがＭＯＴ３８０を用いて、所与のゲスト物理アドレス用にホストＶＭＭによって用いられている物理アドレス（本明細書では、「ワークロードマネージャ提供のハードウェア物理アドレス」と呼ばれる）がゲストＶＭのメモリマッピングに適合することを確認できる。
【００５８】
いくつかの実施形態において、暗号化されたゲストイメージ（例えば、メモリページ）の部分が特定の物理メモリアドレスに暗号的に結び付けられてよい。この結び付きによって、ゲスト／コンシューマの知らない間に、暗号化されたメモリイメージを代替のメモリ位置に単にコピー又は移すことはできないことが保証される。ゲストＶＭは、メモリオーナーシップテーブル３８０を用いて、暗号化されたメモリイメージにアクセスするのに用いられるゲスト物理アドレス（ＧＰＡ）が正しいメモリコンテンツにマッピングされていることを確認できる。ＭＯＴはゲストのＧＰＡをホストのハードウェア物理アドレス（ＨＰＡ）に関連させることができるので、ゲストＶＭは、期待される／正しい暗号化されたメモリコンテンツをゲストアドレスが参照することを保証され得る。
【００５９】
ゲストワークロードのマッピングをコンシューマ提供のキーで暗号化することで、マッピングのそれぞれの元のゲストアドレスは、マッピングのそれぞれの元のハードウェア物理アドレスに結び付けられる。さらに、ゲストワークロードによって書き込まれたコンテンツをコンシューマ提供のキーで暗号化することで、マッピングのそれぞれの元のゲストアドレスは、マッピングのそれぞれの元のハードウェア物理アドレスの暗号化されたコンテンツに結び付けられる。
【００６０】
メモリ３１２は２つの部分を含むものとして例示されている。１つは、キードメイン３５０の外側のメモリを表す暗号化されていない（又は、別のキードメインに属しているので、異なるキーを用いて暗号化された可能性がある）メモリ部分３１２Ｕであり、もう１つは、キードメイン３５０内のメモリを表す暗号化されたメモリ部分３１２Ｅである。仮想マシン３３０１及び３３０２がキードメイン３５０内に示されている。仮想マシン３３０１及び３３０２は、対応する仮想マシン制御構造（ＶＭＣＳ）３２４１及び３２４２を有する。なお、ＶＭＣＳ３２４１及び３２４２は両方ともキードメイン３５０内に存在するので、キードメイン３５０用のキードメインキーで暗号化されている。
【００６１】
各コンシューマは、暗号化されたメモリに独自のキーを提供し、（ＫＤ１として示される）キードメインＩＤ（ＫＤ＿ＩＤ）を割り当てられる。コンシューマのキードメインキーで暗号化された、コンシューマの割り振られたメモリは、ＶＭＣＳ構造を含む複数のＶＭを含んでよい。ＶＭＭは、コンシューマのメモリが暗号化されているので、コンシューマのメモリにアクセスできないが、ＶＭＭは、暗号化されたメモリ領域内のＶＭＣＳを用いてＶＭを起動することができる。ＶＭＭは実行するコンシューマのメモリを今まで通りリマッピングできるので、メモリオーナーシップテーブルはまた、ホストＶＭＭによって用いられるメモリマッピング（「ワークロードマネージャ提供のホスト物理アドレス」）がコンシューマのゲストＶＭの期待ハードウェア物理アドレスと一致し、コンシューマのキーで暗号化されたメモリイメージコンテンツに対応することを確認するのに用いられる。
【００６２】
１つの実施形態において、ｔｗｅａｋ可能なブロック暗号と呼ばれる暗号化技法が用いられる。ｔｗｅａｋ可能なブロック暗号は、暗号化される平文又は暗号文の入力と共に、ｔｗｅａｋと呼ばれる第２の入力を受け取る。ｔｗｅａｋは、キーと共に、暗号によって計算された順列を選択する。コンシューマイメージを暗号化する際に、コンシューマイメージが読み込まれることになるサーバのハードウェア物理アドレスがｔｗｅａｋとして用いられ、得られる暗号化されたコンシューマイメージをメモリ位置依存にする。暗号化されたコンシューマイメージは、メモリ位置依存であると説明される。これは、暗号化されたコンシューマイメージが正確に復号され得る前に、暗号化されたコンシューマイメージはクラウドサービスプロバイダのサーバのＶＭＭ指定の正しいハードウェア物理アドレスに読み込まれる必要があるからである。
【００６３】
１つの実施形態において、コンシューマイメージは、暗号文窃盗（ｃｉｐｈｅｒｔｅｘｔ  ｓｔｅａｌｉｎｇ：ＸＴＳ）を伴うＸＥＸベースのｔｗｅａｋされたコードブックモードを用いて暗号化される。コンシューマは、ページアドレスｔｗｅａｋ及びキードメインキーを用いて、メモリ位置依存ＸＴＳモードでコンシューマイメージを暗号化する。コンシューマイメージが読み込まれる場所の正しい物理アドレスは、暗号化された各ブロックのＸＴＳのｔｗｅａｋに含まれる。ＬＲＷ（Ｌｉｓｋｏｖ、Ｒｉｖｅｓｔ、及びＷａｇｎｅｒ）方式又はカウンタモードの暗号などの、他のｔｗｅａｋ可能な暗号も他の実施形態において用いられてよい。
【００６４】
コンシューマイメージはメモリ位置依存の「ｔｗｅａｋされた」暗号を用いて暗号化されるので、敵対者がコンシューマイメージの一部をメモリ内で移動させることはできない。ページテーブルは、コンシューマイメージのプログラム及びデータをクラウドサービスプロバイダのサーバの正しい物理メモリアドレスにマッピングするので、コンシューマイメージが正しい物理メモリ位置に暗号的に結び付けられていることを考えれば、悪意をもってプログラムの挙動を変更することはできない。換言すれば、コンシューマイメージがクラウドサービスプロバイダのサーバの正しい物理メモリ位置に読み込まれていない場合、コンシューマイメージを正確に復号することはできない。さらに、インテグリティチェック値（例えば、メモリコンテンツのＳＨＡ２／３セキュアハッシュアルゴリズムに基づくメッセージ認証コード（ＭＡＣ）、又はハッシュＭＡＣ（ＨＭＡＣ））が、コンシューマイメージコンテンツ、及び／又はコンシューマイメージが読み込まれているメモリの位置を変更するあらゆる試みを検出するのに用いられ得る。
【００６５】
コンシューマのイメージは物理アドレス位置に暗号的に結び付けられてよいので、メモリオーナーシップテーブル（ＭＯＴ）は、イメージが暗号的に結び付けられた期待ハードウェア物理アドレス（ＨＰＡ）にゲスト物理アドレス（ＧＰＡ）をマッピングする。このＭＯＴマッピングによって、ゲストＶＭは、ＶＭが特定のＧＰＡのメモリにアクセスする場合、ゲストＶＭが同じゲスト物理アドレスの期待メモリイメージコンテンツにアクセスすることを保証することが可能になる。
【００６６】
図４を参照すると、ゲストワークロード／仮想マシン（ＶＭ）にメモリの保護領域を提供するデータフローが、コンシューマエージェント／ＶＭと、ホスト管理ソフトウェア／仮想マシンモニタ（ＶＭＭ）と、ハードウェアとの間に示されている。コンシューマ／エージェント４３０が、様々な実施形態において、コンシューマによって所有される遠隔マシン、コンシューマに代わって作動するエージェント、コンシューマのゲストＶＭ、コンシューマに代わってコンシューマイメージを作成する信頼できる第三者、又は信頼できる埋め込みシステム（例えば、Ｉｎｔｅｌ（登録商標）が提供するＣｏｎｖｅｒｇｅｄ  Ｓｅｃｕｒｉｔｙ  ａｎｄ  Ｍａｎａｇｅａｂｉｌｉｔｙ  Ｅｎｇｉｎｅ（ＣＳＭＥ））を表してよい。動作４．１において、コンシューマエージェント／ＶＭ４３０は、クラウドサービスプロバイダにサービスを要求する。これによって、コンシューマのワークロードを管理する仮想マシンのインスタンス化がもたらされる。動作４．２．１において、ＶＭＭ４２２がコンシューマエージェント／ＶＭ４３０の暗号化されていない（共有）メモリ４１２Ｕから空間（すなわちページ）４１２ＶＭを割り振る。動作４．２．２において、ＶＭＭ４２２は、コンシューマエージェント／ＶＭのメモリオーナーシップテーブル４８０にエントリを割り振る。メモリオーナーシップテーブル４８０は、コンシューマエージェント／ＶＭ４３０のゲスト物理アドレスとコンシューマエージェント／ＶＭの期待ハードウェア物理アドレスとの間のマッピングを確認するのに用いられることになる。コンシューマエージェント／ＶＭ４３０の期待ハードウェア物理アドレスの決定が、以下でさらに詳細に説明される。
【００６７】
動作４．３において、ＶＭＭ４２２は、動作４．２．１でコンシューマエージェント／ＶＭ４３０に割り振られたメモリ位置４１２ＶＭのハードウェア物理アドレス（ＨＰＡ）をコンシューマエージェント／ＶＭ４３０に通知する。これらのハードウェア物理アドレスは、メモリ内のページ（コンシューマイメージが読み込まれるページなど）のハードウェア物理アドレス、ページテーブルのハードウェア物理アドレス、割り込み記述子テーブルレジスタ情報、及びコンシューマの要求に応えているサーバの他のハードウェア物理アドレスを含んでよい。ＶＭのメモリイメージのページを構築する（ＸＴＳ暗号化を行う）のに用いられる物理アドレスに加えて、コンシューマは、ＶＭＣＳ構造及びＭＯＴエントリをポピュレートする物理アドレスを用いることになる。前述したように、これらのハードウェア物理アドレスは、特定の種類のデータ（例えば、ページテーブル）がコンシューマエージェント／ＶＭのサーバおいてＶＭＭ指定の正しいハードウェア物理アドレスに読み込まれて適切に実行される必要があるので、本明細書ではメモリ位置依存アドレス情報と呼ばれる。
【００６８】
動作４．４において、コンシューマエージェント／ＶＭ４３０は、コンシューマ生成の独自のキードメインキーを用いて、暗号化されたコンシューマイメージを作成する。１つの実施形態において、コンシューマエージェント／ＶＭは、クラウドサービスプロバイダのＶＭＭ４２２によって提供されるハードウェア物理アドレスを用いて、コンシューマイメージを暗号化する。
【００６９】
動作４．５において、コンシューマは、コンシューマのゲストＶＭを適切に起動するために、サーバ／ＶＭＭの仕様書に従って構成されたＶＭＣＳ構造を、暗号化されたコンシューマイメージに含めてよい。例えば、ＶＭＣＳは、仮想マシンの仮想プロセッサの状態を規定する。上述したように、コンシューマのＶＭイメージが読み込まれるページの位置は、クラウドサービスプロバイダによってメモリ位置依存アドレス情報として提供されたので、コンシューマのイメージをサーバ上のＶＭＭ指定の正しいハードウェア物理アドレスに読み込むことができ、コンシューマエージェント／ＶＭを適切に実行することが可能になる。ＶＭＣＳ構造は、すでに暗号化されているコンシューマイメージを更新するのに用いられてよい。
【００７０】
動作４．６において、メモリオーナーシップテーブルエントリはまた、コンシューマイメージと関連付けられた期待ハードウェア物理アドレス用に計算される。これらのメモリオーナーシップテーブルエントリは、特定のＶＭと関連付けられ、ＶＭのページテーブルの各ゲスト物理アドレス（ＧＰＡ）からクラウドサービスプロバイダのサーバにあるＶＭの期待ハードウェア物理アドレス（期待ＨＰＡ）へのマッピングを含む。所与のゲスト物理アドレス（ＧＰＡ）にマッピングされた仮想／リニアアドレスのデータを取り出すようＶＭが要求した場合、データが取り出されることになる実際のＶＭＭ指定の（ワークロードマネージャ提供の）ハードウェア物理アドレス（ＨＰＡ）が確認され得る。この確認は、ＧＰＡに対応する期待ハードウェア物理アドレス（ＨＰＡ）を、コード／データが取り出されることになる実際のワークロードマネージャ提供のハードウェア物理アドレス（ＨＰＡ）と比較することによって行われてよい。期待ＨＰＡが所与のＧＰＡの実際のＨＰＡと一致しない場合、要求ＶＭは、ＶＭＭが危険に晒されているとみなし、読み出しコマンド又は書き込みコマンドをアボートし、処理を終了してよい。さらに、キードメインキーは破棄されてよい。期待ＨＰＡが所与のＧＰＡの実際のＨＰＡと一致しない場合、要求ＶＭは、例外／デフォルトハンドラを実行し、メモリオーナーシップテーブルエントリを要求ＶＭのキードメインキーで暗号化してよい。
【００７１】
動作４．７において、コンシューマは、コンシューマイメージを暗号化するのに用いられる対称鍵（すなわち、キードメインキー）をクラウドサービスプロバイダサーバの公開鍵で暗号化することによって、クラウドサービスプロバイダのサーバとメモリ暗号化キーを確立する。サーバハードウェアは次に、クラウドサービスプロバイダ、クラウドサービスプロバイダのＶＭＭ、及び他の可能性のある敵対者に対して、キードメインキーを開示しないようにする。
【００７２】
動作４．８において、コンシューマエージェント／ＶＭ４３０は、暗号化されたキードメインキー、ＶＭＣＳ及び関連構造を含む暗号化されたコンシューマイメージ、並びに暗号化されたメモリオーナーシップテーブルエントリをＶＭ４２２に提供する。
【００７３】
動作４．９において、ＶＭＭ４２２は、キードメイン作成（ＣｒｅａｔｅＫＤ）コマンドをハードウェア４１０の中のプロセッサ（不図示）に発行することによって、コンシューマエージェント／ＶＭのキードメインを作成する。
【００７４】
動作４．１０において、ＶＭＭ４２２は暗号化されたコンシューマイメージをクラウドサービスプロバイダのサーバの正しいメモリ位置に（動作４．２．１でコンシューマエージェント／ＶＭ４３０に割り振られ、動作４．３でコンシューマエージェント／ＶＭ４３０に伝達されたハードウェア物理アドレスに）読み込む。
【００７５】
動作４．１１において、ＶＭ４２２は、コンシューマエージェント／ＶＭ４３０によって提供された暗号化されたメモリオーナーシップテーブルエントリを、動作４．２．２でコンシューマエージェント／ＶＭ４３０に割り振られたメモリオーナーシップテーブル４８０のエントリにコピーする。結果として、メモリオーナーシップテーブル４８０は、コンシューマエージェント／ＶＭ４３０によって用いられるゲスト物理アドレスからクラウドサービスプロバイダのサーバメモリ４１２Ｕの期待ハードウェア物理アドレスへのマッピングを含む。
【００７６】
クラウドサービスプロバイダは、新規提供の暗号化されたキードメインキーのキードメイン識別子ＫＤ＿ＩＤを選択又は生成することができる。Ｃｒｅａｔｅ＿ＫＤ命令を実行すると、キードメインを作成するハードウェア４１０内のＣＰＵは、以前に用いられたコンシューマエージェント／ＶＭ４３０の全てのキードメイン識別子をメモリからフラッシュする。ＣＰＵは、以前に用いられた全てのキードメインと関連付けられているキャッシュもフラッシュし、新たに生成されたキードメイン識別子と関連付けられるキードメインキーを用いてメモリ暗号化エンジンをプログラムする。
【００７７】
図５を参照すると、クラウドサービスプロバイダが代替方法としてセキュアなエンクレーブを用い、コンシューマのワークロードを実行するためのメモリの保護領域を提供し得る。図５は、図４の動作４．２．１に関連して上述したように、コンシューマエージェント／ＶＭ５３０の空間５１２ＶＭが暗号化されていないメモリ５１２Ｕに割り振られている時点を示す。さらに、ＶＭＭ５２２も、図４の動作４．２．２に関連して上述したように、メモリオーナーシップテーブル５８０にエントリを割り振っている。
【００７８】
図５は、クラウドサービスプロバイダのメモリの保護領域に、コンシューマのゲストワークロードを確立するための一実施形態を示す。１つの実施形態において、コンシューマは、クラウドサービスプロバイダのサーバで作動するエンクレーブに暗号化されたイメージを提供する。コンシューマのイメージは、クラウドサービスプロバイダがイメージを読み出すことができないように暗号化されている。１つの実施形態において、コンシューマのイメージは、エンクレーブの内部で終了するＴＬＳ／ＳＳＬ／ＩＰＳｅｃなどのセキュアネットワークプロトコルを介して、コンシューマの暗号化されていないイメージを送信することによって暗号化されてよい。エンクレーブは、ローカルサーバのイメージを再暗号化し、ローカルに実行される暗号化されたメモリイメージを作成する。
【００７９】
メモリの保護領域をコンシューマワークロードに提供するために、動作５．１において、ＶＭＭ５２２はハードウェア５１０内のプロセッサ５１４の信頼できる実行環境サポート５１６の機能を用いて、共有された暗号化されていないメモリ５１２Ｕにセキュアなエンクレーブ５０４を確立する。エンクレーブ５０４内で、実行コードが測定され、確認され、及び／又は別な方法で本物であると判定されてよい。さらに、エンクレーブ５０４に含まれるコード及びデータが暗号化されるか、又はエンクレーブ５０４の外側で実行するコードによってアクセスされないように別な方法で保護されてよい。例えば、セキュアなエンクレーブ５０４に含まれるコード及びデータは、実行されている間、又はプロセッサ５１４の特定の保護キャッシュメモリに格納されている間、プロセッサ５１４のハードウェア保護メカニズムによって保護されてよい。セキュアなエンクレーブ５０４に含まれるコード及びデータは、共有キャッシュ又はメインメモリに格納された場合も暗号化されてよい。信頼できる実行環境サポート５１６は、プロセッサ５１４がメモリ内に１つ又は複数のセキュアなエンクレーブを確立することを可能にする一連のプロセッサ命令拡張として具現化されてよい。例えば、信頼できる実行環境サポート５１６は、Ｉｎｔｅｌ（登録商標）Ｓｏｆｔｗａｒｅ  Ｇｕａｒｄ  Ｅｘｔｅｎｓｉｏｎｓ（ＳＧＸ）技術として具現化されてよい。あるいは、信頼できる埋め込み実行環境（例えば、Ｉｎｔｅｌ（登録商標）Ｃｏｎｖｅｒｇｅｄ  Ｓｅｃｕｒｉｔｙ  ａｎｄ  Ｍａｎａｇｅａｂｉｌｉｔｙ  Ｅｎｇｉｎｅ（ＣＳＭＥ））又はセキュアモードのオペレーションを提供する他の環境（例えば、システム管理モード（ＳＭＭ）／Ｉｎｔｅｌ（登録商標）Ｔｒｕｓｔｅｄ  Ｅｘｅｃｕｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ（ＴＸＴ））が、同様のオペレーションを実行して、初期の暗号化メモリイメージを提供してよい。
【００８０】
動作５．２において、コンシューマエージェント／ＶＭ５３０は、エンクレーブ５０４から証明書を取得し、この証明書を確認する。エンクレーブ５０４を認証した後に、コンシューマエージェント／ＶＭ５３０は、エンクレーブ５０４へのセキュアな通信チャネルを確立し、セキュアな通信チャネルを介してコンシューマイメージ５０２をエンクレーブ５０４に提供する。
【００８１】
動作５．３において、エンクレーブ５０４は、前もってＶＭＭ５２２からコンシューマエージェント／ＶＭ５３０に割り振られたメモリ位置５１２ＶＭのハードウェア物理アドレス（ＨＰＡ）を取得する。メモリ位置５１２ＶＭのこれらのハードウェア物理アドレスは、コンシューマイメージ５０２の暗号化されたコードと共に読み込まれることになる。
【００８２】
動作５．４において、エンクレーブ５０４は、コンシューマエージェント／ＶＭ５３０のキードメインを構成するメモリ位置／ハードウェア物理アドレスを暗号化するのに用いられることになるローカルのキードメインキーをプログラムする。キードメインキーは、キードメインキーがエンクレーブ５０４と同じサーバのメモリ位置を暗号化するのに用いられるという意味で、エンクレーブ５０４に対してローカルである。
【００８３】
動作５．５において、エンクレーブ５０４はキードメイン作成（Ｃｒｅａｔｅ＿ＫＤ）命令を、プロセッサ５１４などの、ハードウェア５１０内のプロセッサに発行する。
【００８４】
動作５．６において、エンクレーブ５０４はコンシューマエージェント／ＶＭ５３０のＶＭＣＳを作成する。ＶＭＣＳは、動作５．３でＶＭＭ５２２によって提供された特定のハードウェア物理アドレス／メモリ位置に格納されることになる。
【００８５】
動作５．７において、エンクレーブ５０４は、キードメインキーを用いてコンシューマイメージ５０２を暗号化し、暗号化されたコンシューマイメージ５０２Ｅを生成する。図４の動作４．４に関連して上述したように、ｔｗｅａｋ可能なブロック暗号が用いられる。コンシューマイメージを暗号化する際に、コンシューマイメージが読み込まれることになるサーバのハードウェア物理アドレスがｔｗｅａｋとして用いられ、得られる暗号化されたコンシューマイメージをメモリ位置依存にする。暗号化されたコンシューマイメージは、メモリ位置依存であると説明される。これは、暗号化されたコンシューマイメージが正確に復号され得る前に、暗号化されたコンシューマイメージはクラウドサービスプロバイダのサーバのＶＭＭ指定の正しいハードウェア物理アドレスに読み込まれる必要があるからである。
【００８６】
動作５．８において、エンクレーブ５０４は、暗号化されたコンシューマイメージ５０２Ｅのメモリオーナーシップテーブルエントリを、キードメインキーを用いて計算する。これらのメモリオーナーシップテーブルエントリによって、ゲストＶＭのページテーブルから、暗号化されたコンシューマイメージが読み込まれるとエンクレーブ５０４が期待する期待ハードウェア物理アドレスに、ゲスト物理アドレスがマッピングされる。これらの期待ハードウェア物理アドレスは、動作５．３でＶＭＭ５２２によって提供されたハードウェア物理アドレスに基づいている。
【００８７】
動作５．９において、エンクレーブ５０４は、暗号化されたコンシューマイメージ、暗号化されたメモリオーナーシップテーブルエントリ、及び暗号化されたキードメインキーをＶＭＭ５２２に提供する。あるいは、動作５．９において、エンクレーブ５０４は、暗号化されたコンシューマイメージをＶＭＭ５２２に提供するのではなく、暗号化されたコンシューマイメージをＶＭＭ５２２によって指定された正しいメモリ位置に直接書き込んでよい。
【００８８】
動作５．１０において、ＶＭＭ５２２は暗号化されたコンシューマイメージ５０２Ｅを、動作５．３でエンクレーブ５０４によってＶＭＭ５２２から取得されたメモリ位置に読み込む。
【００８９】
動作５．１１において、ＶＭＭ５２２は、暗号化されたコンシューマイメージのメモリオーナーシップテーブルエントリをメモリオーナーシップテーブル５８０に書き込む。
【００９０】
図６Ａを参照すると、ゲストワークロード／ゲストＶＭによって提供された元のゲストアドレスから、ワークロードマネージャ提供の元のハードウェア物理アドレスへのマッピングのためにメモリオーナーシップテーブル（ＭＯＴ）エントリを確立するデータフローが示されている。元のゲストアドレスは、ゲストワークロード６３０の性質及びワークロードマネージャ６２２の性質に応じて、ゲスト仮想アドレスでもゲスト物理アドレスでもよい。動作６．１において、ゲストワークロード６３０は元のゲストアドレスをワークロードマネージャ６２２に提供する、動作６．２において、信頼できないワークロードマネージャ６２２はワークロードマネージャ提供の元のハードウェア物理アドレスを元のゲストアドレスに割り当てる。動作６．３において、信頼できないワークロードマネージャ６２２は、ワークロードマネージャ提供の元のハードウェア物理アドレスを元のゲストアドレスと共にページテーブル６０４に格納する。例えば、信頼できないワークロードマネージャ６２２がＶＭＭである場合、ページテーブル６０４は第２レベルのアドレス変換を提供する拡張ページテーブルであってよい。
【００９１】
動作６．４において、信頼できないワークロードマネージャ６２２は、ゲストワークロード／ゲストＶＭ６３０から受け取った元のゲストアドレスをプロセッサ６１４に提供する。動作６．５において、プロセッサ６１４は、ページテーブル６０４内の元のゲストアドレスを検索し、ワークロードマネージャ提供の元のハードウェア物理アドレスを取得する。動作６．６において、プロセッサ６１４は、元のゲストアドレスの、ワークロードマネージャ提供の元のハードウェア物理アドレスを返す。動作６．７．１において、ゲストワークロード６３０は、ワークロードマネージャ提供の元のハードウェア物理アドレスをメモリオーナーシップテーブル６８０内の索引として用い、元のゲストアドレスに関連したエントリを格納する。ゲストワークロード６３０は、動作６．７．２でワークロードマネージャ提供の元のハードウェア物理アドレスを期待ＨＰＡフィールド６８２に書き込み、動作６．７．３で元のゲストアドレスを期待ゲストアドレス６８４に書き込むことによって、ＭＯＴテーブル６８０にエントリを作成する。ゲストワークロードは、ＶＭＭに知られていないゲストワークロードの秘密のキードメインキー（メモリ暗号化キー）を用いてエントリを暗号化してもよい。ＭＯＴエントリをゲストワークロードのキードメインキーで暗号化することによって、ゲストワークロード６３０は、ＭＯＴエントリが危険に晒されたホストワークロードマネージャ／ＶＭＭによって偽造されてしまうことを防ぐ。
【００９２】
ゲストワークロード６３０によって割り当てられた元のゲストアドレスの値を、信頼できないワークロードマネージャ６２２によって提供されたワークロードマネージャ提供の元のハードウェア物理アドレスと共にエントリに格納することによって、メモリオーナーシップテーブル６８０は、後で参照できるように、最初に割り当てられた値を保持する。具体的には、最初に割り当てられた値は、ワークロードマネージャ提供の元のハードウェア物理アドレスによって索引付けされたエントリの期待ＨＰＡ及び期待ゲストアドレスの値になる。ＨＰＡ及びゲストアドレスの期待値は、動作６．６で受け取った値と比較され、動作６．６で受け取った値を確認するのに用いられ得る。
【００９３】
図６Ｂを参照すると、要求されたゲストアドレスのメモリオーナーシップテーブル６８０内のエントリを取り出すデータフローが示されている。動作６．８において、ゲストワークロード６３０は、要求されたゲストアドレスを信頼できないワークロードマネージャ６２２に提供する。動作６．９において、信頼できないワークロードマネージャ６２２は、要求されたゲストアドレスを、ワークロードマネージャ提供のハードウェア物理アドレスに変換するためにプロセッサ６１４に渡す。動作６．１０において、ページテーブル６０４を用いて、プロセッサ６１４は、要求されたゲストアドレスをワークロードマネージャ提供の変換後のハードウェア物理アドレスに変換する。動作６．１１において、プロセッサ６１４は、ワークロードマネージャ提供の変換後のハードウェア物理アドレスに対応するエントリを求めてメモリオーナーシップテーブル６８０を検索する。メモリオーナーシップテーブル６８０において、ワークロードマネージャ提供の変換後のハードウェア物理アドレスに対応するエントリが探し出された場合、実行ゲストワークロード６３０用のキードメインキー／メモリ暗号化キーが、探し出されたＭＯＴエントリを復号する試みに用いられる。
【００９４】
動作６．１２において、プロセッサ６１４は、ワークロードマネージャ提供の変換後のハードウェア物理アドレスがゲストワークロード６３０によって期待される値を有することを確認する。１つの実施形態において、ワークロードマネージャ提供の変換後のハードウェア物理アドレスは、以下の条件を満たすかどうかを確認される。その条件とは、（ｉ）ＭＯＴエントリが、実行中のゲストワークロードのキードメインキー（メモリ暗号化キー）を用いて正確に復号されること、（ｉｉ）期待ハードウェア物理アドレス６８２が、ＭＯＴ６８０内の索引として用いられるワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致すること、及び（ｉｉｉ）要求されたゲストアドレスが同じ索引の期待ゲストアドレス６８４と一致することである。動作６．１３において、プロセッサ６１４は、確認されたワークロードマネージャ提供の変換後のハードウェア物理アドレスを、要求されたゲストアドレスのハードウェア物理アドレスとしてゲストワークロード６３０に提供する。プロセッサ６１４がワークロードマネージャ提供の変換後のハードウェア物理アドレスを確認できない場合、プロセッサ６１４は次に、割り込みハンドラ又はエラーハンドラを呼び出してゲストワークロード６３０を終了させるか、又は他のエラー処理プロセスを実行してもよい。
【００９５】
ここで図７を参照すると、使用するときに、パブリッククラウドプロバイダが、パブリッククラウドプロバイダサーバ７１５にインスタンス化されたゲストワークロードを保護するための環境７００を確立し得る。実例となる環境７００は、仮想マシンモニタ（ＶＭＭ）７２２と、１つ又は複数の仮想マシン（ＶＭ）７３０ｉと、メモリマネージャ７６０と、メモリページフォールト検出器７７０とを含む。この環境の構成要素の一部は、ハードウェア、ファームウェア、ソフトウェア、又はこれらの組み合わせとして具現化されてよい。このように、いくつかの実施形態において、環境７００の構成要素のうち１つ又は複数は、回路又は電気デバイスの集まり（例えば、メモリマネージャ回路７６０、メモリページフォールト検出器回路７７０など）として具現化されてよい。そのような実施形態において、メモリマネージャ回路７６０及び／又はメモリページフォールト検出器回路７７０のうち１つ又は複数は、計算エンジン、プロセッサ、Ｉ／Ｏサブシステム、通信サブシステム、及び／又はパブリッククラウドプロバイダサーバ７１５の他の構成要素のうち１つ又は複数の一部を形成してよいことを理解されたい。さらに、いくつかの実施形態において、環境７００の実例となる構成要素のうち１つ又は複数は、別の構成要素の一部を形成してもよく、及び／又は実例となる構成要素のうち１つ又は複数は、互いから独立していてもよい。さらに、いくつかの実施形態において、環境７００の構成要素のうち１つ又は複数は、仮想化されたハードウェアコンポーネント又はエミュレートされたアーキテクチャとして具現化されてよく、これらは、パブリッククラウドプロバイダサーバ７１５の計算エンジン又は他の構成要素によって確立され維持されてよい。
【００９６】
仮想マシンモニタ（ＶＭＭ）７２２は、仮想マシン７３０ｉをパブリッククラウドプロバイダサーバ７１５にインスタンス化するように構成される。ＶＭＭ７２２は、ハードウェア物理アドレスを各仮想マシン７３０ｉに割り振る。ＶＭＭ７２２は、（ＶＭによって割り当てられた）ゲスト物理アドレスを取得する拡張ページテーブル（ＥＰＴ）を作成し、これらのゲスト物理アドレスを、ハードウェアによって用いられる実際の物理アドレス（ＨＰＡ）にマッピングする。１つの実施形態において、ハードウェア物理アドレスがメモリページ（固定サイズのメモリチャンク）として割り当てられる。
【００９７】
１つの実施形態において、各仮想マシン（ＶＭ）７３０ｉは、仮想マシンがインスタンス化されるコンシューマによって提供されたコンシューマイメージを実行するように構成される。各仮想マシン７３０ｉは、ＶＭページテーブル７０２ｉを確立し、仮想マシンの仮想／リニアアドレス（ＶＡ）と、仮想マシンモニタ７２２によってＶＭ７３０ｉに割り振られたハードウェア物理アドレスに対応するゲスト物理アドレス（ＧＰＡ）との間の変換マッピングを格納する。そうするために、仮想マシン７０４はＶＡ→ＧＰＡのマッピングを生成し、これを用いて仮想／リニアアドレスをゲスト物理アドレスに変換してよい。ＶＭＭ７２２は、拡張ページテーブル（ＥＰＴ）を用いて、ＧＰＡをハードウェア物理アドレス（ＨＰＡ）にマッピングしてよい。
【００９８】
１つの実施形態において、割り当てられたゲスト物理アドレス範囲を有するＶＭ７３０ｉを追跡するために、ＶＭＭ７２２はさらに、各ＶＭ７３０ｉと関連付けられた仮想マシン識別子（ＶＭ＿ＩＤ）を生成し、ＶＭ＿ＩＤ→ＧＰＡ→ＨＰＡのエントリをＶＭＭページテーブル７０４に含めてよい。ＶＭ＿ＩＤ識別子は、パブリッククラウドプロバイダサーバ７１５にインスタンス化された各仮想マシン７３０ｉを一意に識別する。アドレス空間識別子又はキードメイン識別子などの、仮想マシン７３０ｉを識別する他の手段も用いられてよい。
【００９９】
上述したように、場合によっては、仮想マシンモニタ７２２は危険に晒されることがあり、ＶＭのゲスト物理アドレスからホスト物理アドレスへのマッピングを、悪意をもって変更しようとすることがある。パブリッククラウドプロバイダサーバ７１５が悪意をもって危険に晒されないことを保証するために、ＶＭ７３０ｉは、メモリオーナーシップテーブル７０６に保存されるエントリを提供してよい。メモリオーナーシップテーブルエントリ７０６１および７０６２は、ＶＭ７３０ｉのキードメインキーで暗号化された、ＧＰＡ→期待ＨＰＡの元のマッピングを保持する。したがって、メモリオーナーシップテーブル７０６は、キードメインキー→ＧＰＡ→期待ＨＰＡのマッピングエントリを指定する暗号化されたエントリを含む。ＶＭ＿ＩＤ又はＫＤ＿ＩＤは、ＭＯＴエントリを復号するのに用いられるキードメインキーを選択するのに用いられる。
【０１００】
メモリマネージャ７６０は、仮想マシン７３０ｉからのメモリ要求を管理するとともに、仮想マシン７３０ｉの仮想メモリにセキュリティを提供するように構成される。使用するときに、メモリマネージャ７６０は、仮想／リニアアドレスを含むメモリアクセス要求を仮想マシン７３０ｉから受け取るように構成される。メモリアクセス要求に応答して、メモリマネージャ７６０は、要求仮想マシン７３０ｉと関連付けられたＶＭページテーブル７０２ｉと、仮想マシンモニタ７２２と関連付けられたＶＭＭページテーブル（拡張ページテーブル（ＥＰＴ）とも呼ばれる）７０４とを用いて、パブリッククラウドプロバイダサーバ７１５の変換後のハードウェア物理アドレスへの仮想／リニアアドレスの変換を行う。
【０１０１】
仮想マシン７３０ｉの仮想メモリにセキュリティを提供するために、メモリマネージャ７６０は、変換後のハードウェア物理アドレスへのゲストアドレスの変換を確認するように構成されてよい。１つの実施形態において、この確認は、所与のゲスト物理アドレスの変換後のハードウェア物理アドレスと、メモリオーナーシップテーブル７０６に格納された、その所与のゲスト物理アドレス（ＧＰＡ）の期待ホスト物理アドレスとの比較に基づいている。
【０１０２】
メモリページフォールト検出器７７０は、メモリページフォールトを検出するように構成され、メモリページフォールトは、仮想マシン７３０ｉ又は仮想マシンモニタ７２２と関連付けられたページテーブルを用いたアドレス変換の間に起こることがある。例えば、メモリページフォールト検出器７７０は、変換後の物理アドレス（例えば、変換後のゲスト物理アドレス及び／又は変換後のハードウェア物理アドレス）が対応するページテーブルに存在しない場合に、メモリページフォールトを検出し得る。例えば、メモリマネージャ７７０が仮想マシン７３０ｉの仮想／リニアアドレスを変換後のゲスト物理アドレスに変換する場合、メモリページフォールト検出器７７０は、変換後のゲスト物理アドレスが仮想マシン７３０ｉと関連付けられたＶＭページテーブル７０２ｉに存在するかどうかを判定する。変換後のゲスト物理アドレスがＶＭページテーブル７０２ｉに存在しない場合、メモリページフォールト検出器７７０はメモリページフォールトを生成する。さらに、メモリマネージャ７６０が変換後のゲスト物理アドレスを変換後のハードウェア物理アドレスに変換する場合、メモリページフォールト検出器７７０は、変換後のハードウェア物理アドレスが仮想マシンモニタ７２２と関連付けられたＶＭＭページテーブル７０４に存在するかどうかを判定する。変換後のハードウェア物理アドレスがＶＭＭページテーブル７０４に存在しない場合、メモリページフォールト検出器７７０はメモリページフォールト又はＶＭＥｘｉｔを生成し、ゲストＶＭを終了する。いくつかの実施形態において、メモリページフォールト検出器７７０は、パブリッククラウドプロバイダサーバ７１５が危険に晒されていることをユーザに警告してよく、又は、ＶＭＭがＶＭを実行し続けることができないように、キードメインキーを破棄してよい。
【０１０３】
図８を参照すると、フローチャートが、本発明の１つの実施形態に従ってメモリオーナーシップテーブルを確立するために、クラウドサービスプロバイダサーバによって行われ得る方法８００を例示する。「仮想マシンモニタ（ＶＭＭ）を初期化する」というブロック８１０において、仮想マシンモニタの形をしたホストワークロードマネージャが、クラウドサービスプロバイダサーバで初期化される。上述したように、ホストワークロードマネージャは、非仮想化環境のオペレーティングシステムに対応してよい。本明細書において、ホストワークロードマネージャとしてのＶＭＭの説明は、非仮想化環境のオペレーティングシステム又は他のワークロードマネージャに等しく適用される。
【０１０４】
図８のＶＭＭは、ゲストワークロードをゲスト仮想マシン（ＶＭ）の形でインスタンス化し、クラウドサービスを要求コンシューマに提供してよい。「新たなＶＭをインスタンス化するか？」という判断ポイント８１４において、新たなゲストワークロード／ゲストＶＭをインスタンス化するかどうかという判定が、ホストワークロードマネージャ／ＶＭＭによって行われる。例えば、クラウドサービスの新たな要求をコンシューマから受け取った場合、新たなゲストワークロード／ゲストＶＭがインスタンス化されてよい。「新たなＶＭをインスタンス化するか？」という判断ポイント８１４において、新たなＶＭがインスタンス化されない場合、制御が「新たなＶＭをインスタンス化するか？」という判断ポイント８１４へ戻り、ＶＭＭは、新たなゲストワークロード／ゲストＶＭがインスタンス化される必要性を待ち続ける。「新たなＶＭをインスタンス化するか？」という判断ポイント８１４において、新たなゲストワークロード／ゲストＶＭがインスタンス化される場合、制御は「ＶＭＭはハードウェア物理アドレス（ＨＰＡ）（ページ）を新たなＶＭに割り振る」というブロック８１６に進む。
【０１０５】
「ＶＭＭはハードウェア物理アドレス（ＨＰＡ）（ページ）を新たなＶＭに割り振る」というブロック８１６において、ホストワークロードマネージャ／ＶＭＭは、図４、図５、及び図６Ａに関連して上述したように、ゲストワークロード／ゲストＶＭが用いるためにハードウェア物理アドレスを割り振る。ＶＭＭは、仮想マシン識別子（ＶＭ＿ＩＤ）もゲストワークロード／ゲストＶＭに割り当ててよい。
【０１０６】
「ＶＭＭはハードウェア物理アドレス（ＨＰＡ）（ページ）を新たなＶＭに割り振る」というブロック８１６から、制御は次に「ＶＭＭは新たなＶＭを起動し、割り振られたＨＰＡ（ページ）の情報を提供する」というブロック８２２に進む。ここで、ホストワークロードマネージャ／ＶＭＭは、新たなゲストワークロード／ゲストＶＭを起動し、割り振られたＨＰＡ（ページ）の情報を新たなゲストワークロード／ゲストＶＭに提供する。例えば、ホストワークロードマネージャ／ＶＭＭは、メモリ位置依存アドレス情報をゲストワークロード／ゲストＶＭに提供してよい。このメモリ位置依存アドレス情報は、メモリ内のページ（コンシューマイメージが読み込まれるページなど）のハードウェア物理アドレス、割り込み記述子テーブルレジスタ情報、及びコンシューマの要求に応えているサーバの他のハードウェア物理アドレスを含んでよい。これらのハードウェア物理アドレスは、特定の種類のデータ（例えば、ページテーブル）がコンシューマエージェント／ＶＭのサーバにおいてＶＭＭ指定の正しいハードウェア物理アドレスに読み込まれて適切に実行される必要があるので、本明細書ではメモリ位置依存アドレス情報と呼ばれる。ＶＭＭは、仮想マシン識別子ＶＭ＿ＩＤもゲストワークロード／ゲストＶＭに提供してよい。制御は、「ＶＭＭは新たなＶＭを起動し、割り振られたＨＰＡ（ページ）の情報を提供する」というブロック８２２から、「新たなＶＭはＶＭＣＳを初期化し、期待ＨＰＡを決定する」というブロック８２４に進む。
【０１０７】
「新たなＶＭはＶＭＣＳを初期化し、期待ＨＰＡを決定する」というブロック８２４において、新たなゲストワークロード／ゲストＶＭは、ゲストワークロードがどのように実行されるかを決定する制御構造を初期化する。例えば、ゲストＶＭの場合、仮想マシン制御構造（ＶＭＣＳ）は、ゲストワークロード／ゲストＶＭの実行中に用いられるハードウェア物理アドレスを指定するように初期化される。これらのハードウェア物理アドレスは、メモリ内のページ（コンシューマイメージが読み込まれるページなど）のハードウェア物理アドレスと、ゲストＶＭのページテーブルのハードウェア物理アドレスとを含んでよい。初期化されたＶＭＣＳ内のハードウェア物理アドレスから、ゲストＶＭは、後の実行サイクル中にＶＭＣＳに含まれるべき期待ハードウェア物理アドレスの値も決定できる。例えば、ＶＭＣＳは拡張ページテーブルルート（ＥＰＴＰ又は拡張ページテーブルポインタ）の位置などの、複数のホスト物理アドレスを含む。ＶＭＣＳは、ＭＳＲ終了テーブル、ＶＭ情報テーブル、ページ変更ログなどの、ページテーブルを通じて変換されないデータ構造のハードウェア物理アドレスも含んでよい。これらのＶＭＣＳアドレスはページテーブルを通じて変換されないので、これらのＶＭＣＳアドレスは、正しいハードウェア物理メモリアドレスで構成される。いくつかの実施形態は、セキュリティを危険に晒すことも、ＶＭの挙動を変更することもない、ＶＭＷｒｉｔｅオペレーションを選択されたフィールドに対してＶＭＭが実行することを選択的に可能にすることにより、ＶＭＭがＶＭＣＳの選択されたフィールド（ＥＰＴＰ又はホスト状態領域など）を変更することを可能にし得る。「新たなＶＭはＶＭＣＳを初期化し、期待ＨＰＡを決定する」というブロック８２４から、制御は「新たなＶＭはＶＡ→ＧＰＡのマッピングを用いてＶＭページテーブルを設定する」というブロック８２６に進む。
【０１０８】
「新たなＶＭはＶＡ→ＧＰＡのマッピングを用いてＶＭページテーブルを設定する」というブロック８２６において、新たに確立されたゲストワークロード／ＶＭは、仮想アドレス（ＶＡ）からゲスト物理アドレス（ＧＰＡ）へのマッピングを用いてＶＭページテーブルを設定する。ゲスト物理アドレス（ＧＰＡ）は、ＶＭＭによって拡張ページテーブル（ＥＰＴ）を用いてホスト物理アドレス（ＨＰＡ）にマッピングされる。「新たなＶＭはＶＡ→ＧＰＡのマッピングを用いてＶＭページテーブルを設定する」というブロック８２６において、ゲストワークロード／ゲストＶＭは、ゲストＶＭによって選択されたゲスト物理アドレス（ＧＰＡ）に仮想／リニアアドレスを割り当てる。ホストＶＭＭは、ＥＰＴを用いて、ゲストのＧＰＡをホストのＨＰＡに変換する。「新たなＶＭはＶＡ→ＧＰＡのマッピングを用いてＶＭページテーブルを設定する」というブロック８２６から、制御は次に「新たなＶＭはＭＯＴエントリをＧＰＡ→期待ＨＰＡとして保存する」というブロック８３０に進む。
【０１０９】
「新たなＶＭはＭＯＴエントリをＧＰＡ→期待ＨＰＡとして保存する」というブロック８３０において、新たなＶＭは、ＧＰＡと期待ＨＰＡとの間のマッピングをメモリオーナーシップテーブルエントリとして指定する。メモリオーナーシップテーブルエントリは次に、ゲストワークロード／ゲストＶＭによって用いられ、ホストワークロードマネージャ／ＶＭＭによって後で提供されるアドレスが、暗号化されたイメージコンテンツへの最初に提供されたマッピングに適合しており、危険に晒されていないことを確認することができる。「新たなＶＭはＭＯＴエントリをＧＰＡ→期待ＨＰＡとして保存する」というブロック８３０から、制御は次に、「新たなＶＭはＭＯＴエントリをキードメインキーで暗号化し、ＭＯＴエントリをＶＭＭに提供する」というブロック８３２に進む。
【０１１０】
「新たなＶＭはＭＯＴエントリをキードメインキーで暗号化し、ＭＯＴエントリをＶＭＭに提供する」というブロック８３２において、新たなゲストワークロード／ゲストＶＭは、メモリオーナーシップテーブル（ＭＯＴ）エントリを、新たなゲストワークロード／ゲストＶＭに割り当てられたメモリを暗号化するのに用いられるキードメインキーで暗号化する。ＭＯＴエントリを暗号化する場合、ＶＭは、暗号化された暗号文に対するｔｗｅａｋとして、ＭＯＴテーブル内のエントリのハードウェア物理アドレスも用いてよい。この暗号化プロトコルは、ハードウェア物理メモリアドレスがｔｗｅａｋとして用いられる場合、ＭＯＴテーブル自体もメモリに格納されているので、ＸＴＳメモリ暗号化を用いることとの整合性を維持する。ＭＯＴエントリをキードメインキーで暗号化することによって、ゲストワークロード／ゲストＶＭは、ホストワークロードマネージャ／ＶＭＭがＭＯＴエントリを読み出すことも、変更することも、偽造することもできないことを保証する。「新たなＶＭはＭＯＴエントリをキードメインキーで暗号化し、ＭＯＴエントリをＶＭＭに提供する」というブロック８３２から、制御は次に「ＶＭＭは暗号化されたＭＯＴエントリをメモリオーナーシップテーブルに書き込む」というブロック８３４に進む。
【０１１１】
「ＶＭＭは暗号化されたＭＯＴエントリをメモリオーナーシップテーブルに書き込む」というブロック８３４において、ホストワークロードマネージャ／ＶＭＭは、ゲストワークロード／ゲストＶＭによって提供される暗号化されたＭＯＴエントリを、ＭＯＴエントリの期待ハードウェア物理アドレスに対応するテーブル内の位置でメモリオーナーシップテーブルに書き込む。１つの実施形態において、ゲストワークロード／ゲストＶＭ識別子（ＶＭ＿ＩＤ）も、メモリオーナーシップテーブルに取り込まれる。
【０１１２】
図９を参照すると、フローチャートが、ゲストワークロードからの要求に応答してメモリ内のデータにアクセスする方法９００を例示する。「ゲストアドレスへのアクセスを求める要求を受け取る」というブロック９０２において、プロセッサは、ゲストワークロード／ゲストＶＭからの要求を受け取り、ゲストＶＭによって提供されるゲストアドレスのデータにアクセスする。要求されたゲストアドレスは、ゲスト仮想／リニアアドレスであっても、ゲスト物理アドレスであってもよく、プロセッサは、要求されたゲストアドレスに対応する実際のハードウェア物理アドレスを検索する。「ワークロードマネージャ提供のハードウェア物理アドレス」という用語は、本明細書において、ゲストアドレスの実際のハードウェア物理アドレスへの最低レベルの変換を指すのに用いられる。仮想化環境において、ゲストアドレスの実際のハードウェア物理アドレスへの最低レベルの変換は、ＶＭＭによって管理される拡張ページテーブルを用いて提供されてよい。非仮想化環境において、ゲストアドレスの実際のハードウェア物理アドレスへの最低レベルの変換は、オペレーティングシステムによって管理されるページテーブルを用いて提供されてよい。
【０１１３】
「ゲストアドレスへのアクセスを求める要求を受け取る」というブロック９０２から、制御は次に「要求されたゲストアドレスにマッピングされるワークロードマネージャ提供のＨＰＡを探し出す」というブロック９０４に進む。１つの実施形態において、ＨＰＡは、ホストワークロードマネージャ／ＶＭＭのページテーブル内でプロセッサによって探し出されるか、又は、ホストワークロードマネージャ／ＶＭＭの拡張ページテーブル内でプロセッサのページミスハンドラによって探し出される。１つの実施形態において、プロセッサ（ページミスハンドラ／ＰＭＨ）は、要求されたゲストアドレスをハードウェア物理アドレス（ＨＰＡ）に変換するためにページテーブルを「ウォーク」する。これにより、メモリアクセス（読み込み／格納／実行）が完了し得る。プロセッサ／ＰＭＨは、ページテーブル／ＥＰＴにおいて要求されたゲストアドレスを検索し、要求されたゲストアドレスにマッピングされる「ワークロードマネージャ提供のハードウェア物理アドレス（ＨＰＡ）」を探し出す。「ワークロードマネージャ提供のハードウェア物理アドレス」という用語は、ハードウェア物理アドレスがホストワークロードマネージャ又はＶＭＭによって提供されるので、ゲストワークロード／ゲストＶＭによって信頼されないことを示すのに用いられる。危険に晒されたＶＭＭがゲストワークロード／ゲストＶＭの制御フローを変更しようとするならば、危険に晒されたＶＭＭは、要求されたゲストアドレス用にゲストワークロード／ゲストＶＭに提供されたハードウェア物理アドレスを変更することがある。この理由から、ワークロードマネージャ提供のハードウェア物理アドレスは、次の段階で確認される。
【０１１４】
１つの実施形態において、ワークロードマネージャ提供のハードウェア物理アドレスを探し出した後に、ゲストワークロードは、要求されたゲストアドレスからワークロードマネージャ提供のＨＰＡへのメモリマッピングをメモリオーナーシップテーブルに格納してよい。さらに、後で使えるようにメモリマッピングを保持するために、要求されたゲストアドレスは、ワークロードマネージャ提供のＨＰＡの期待ゲストアドレスとして格納されてよい。期待ゲストアドレスを格納することで、プロセッサは、要求されたゲストアドレスを、アクセスを要求するゲストワークロード／ゲストＶＭの、ＭＯＴ内にある期待ゲストアドレスと比較することが可能になる。「要求されたゲストアドレスにマッピングされるワークロードマネージャ提供のＨＰＡを探し出す」というブロック９０４から、制御は次に「ワークロードマネージャ提供のＨＰＡを確認する」というブロック９０６に進む。
【０１１５】
「ワークロードマネージャ提供のＨＰＡを確認する」というブロック９０６において、要求されたゲストアドレス用に探し出されたハードウェア物理アドレスが確認される。１つの実施形態において、ＨＰＡは、上述したメモリオーナーシップテーブルを用いて確認される。「ＷＭ提供のＨＰＡマッピングのＭＯＴエントリを読み出し、復号キーを決定する」というブロック９０８において、ページテーブルで探し出されたワークロードマネージャ提供の変換後のＨＰＡに対応する暗号化されたＭＯＴエントリが復号される。例えば、ＭＯＴはメモリ内のテーブルであり、ＭＯＴエントリは、アクセスされているページのＨＰＡに基づいて索引付けされる（例えば、ページＨＰＡ０がＭＯＴテーブル又は第１のエントリの索引０であり、ページＨＰＡ１がＭＯＴテーブル、第２のエントリなどの索引１である）。
【０１１６】
１つの実施形態において、復号キーは、ＨＰＡの最上位物理ビットに格納されているキードメイン識別子（ＫＤ＿ＩＤ）を用いて決定される。キードメイン識別子（ＫＤ＿ＩＤ）が認識されると、キードメインキーは識別され、メモリオーナーシップテーブル（ＭＯＴ）に格納されたデータを復号できるメモリ暗号化エンジンに提供され得る。メモリ暗号化エンジンは、ＭＯＴエントリのハードウェア物理アドレスもｔｗｅａｋとして用いてよい。ＭＯＴエントリがワークロードマネージャ提供の正しいハードウェア物理アドレスに読み込めない場合、ＭＯＴエントリは適切に復号されることはない。そのような実施形態は、期待ハードウェア物理アドレスがＨＰＡに対応するＭＯＴエントリに重複して格納されることを必要としなくてよい。
【０１１７】
「ＷＭ提供のＨＰＡマッピングのＭＯＴエントリを読み出し、復号キーを決定する」というブロック９０８から、制御は次に「ＷＭ提供のＨＰＡが要求されたゲストアドレスのＭＯＴの期待ＨＰＡと一致し、且つＭＯＴの期待ゲストアドレスが要求されたゲストアドレスと一致するか？」という判断ポイント９１０に進む。ワークロードマネージャ提供の変換後のＨＰＡがＭＯＴエントリの期待ＨＰＡフィールド（図１０の１００４）と一致しない、及び／又は、要求されたゲストアドレスがＭＯＴエントリの期待ゲストアドレスフィールド（図１０の１００６）と一致しない場合、制御は「エラー処理／ＶＭＥｘｉｔを実行する」というブロック９１２に進む。「エラー処理／ＶＭＥｘｉｔを実行する」というブロック９１２において、エラー処理が行われてよく、ゲストワークロード／ゲストＶＭは終了させられてよい。
【０１１８】
「ＷＭ提供のＨＰＡが要求されたゲストアドレスのＭＯＴの期待ＨＰＡと一致し、且つＭＯＴの期待ゲストアドレスが要求されたゲストアドレスと一致するか？」という判断ポイント９１０において、ワークロードマネージャ提供のＨＰＡ、及びプロセッサ／ＰＭＨがページテーブルをウォークすることで探し出されたゲストアドレスは、復号されたＭＯＴエントリ内の期待ＨＰＡ及び期待ゲストアドレスと一致する必要がある。ワークロードマネージャ提供のＨＰＡがＭＯＴの期待ＨＰＡ（図１０の１００４）と一致し、且つＭＯＴエントリの期待ゲストアドレスフィールド（図１０の１００６）がページウォーク中に探し出された実際の変換後のゲストアドレスと一致した場合、制御は「復号キーを用いて、探し出されたＨＰＡにあるデータにアクセスする」というブロック９１４に進む。
【０１１９】
「復号キーを用いて、ワークロードマネージャ提供のＨＰＡにあるデータにアクセスする」というブロック９１４において、ゲストＶＭによって要求されたデータがアクセスされる。復号キーは、ブロック９０８で識別されたキードメインキーである。
【０１２０】
図１０を参照すると、メモリオーナーシップテーブル１０００の一例が示されている。列１００２は行索引を含み、行索引は、ここでは説明のためだけに用いられているので点線で示されている。行索引は、メモリオーナーシップテーブルの一部として格納されているわけではない。図６Ａ及び図６Ｂで説明された実施形態などの１つの実施形態において、ゲストＶＭに割り振られたワークロードマネージャ提供の元のハードウェア物理アドレスが、索引としてテーブルに用いられている。ハードウェア物理アドレスのゲストＶＭへの割り振りが、図４及び図５に関連して前もって説明された。この実施形態はハードウェア物理アドレス／ＨＰＡによって索引付けされたメモリオーナーシップテーブルを用いるが、他の実施形態は、リスト、ツリー、ハッシュテーブル、グラフなどの任意の形の検索可能な構造を用いて、変換後のハードウェア物理アドレスに与えられるゲストアドレスを探し出してよい。
【０１２１】
列１００４は期待ホスト物理アドレスを含み、列１００６は期待ゲストアドレスを含む。これらの列は、図６Ａ及び図８に関連して説明したように、ゲストワークロード／ゲストＶＭが最初に作成されたときにホストワークロードマネージャによって提供された元のマッピングを、ゲストワークロード／ゲストＶＭによって保持するのに用いられる。
【０１２２】
列１００８は、ゲストアドレスに格納されたページの状態を含み、列１０１０は「００００」のデータ値を含む。列１０１０は、品質保証メカニズムとして、適切なキーがＭＯＴエントリを復号するのに用いられていることを保証するのに用いられてよい。間違った復号キーが列１０１０を復号するのに用いられた場合、得られるデータは「００００」以外の値になる。これは、間違ったキーを用いることで、ＭＯＴエントリのフィールド１００４、１００６、１００８、及び１０１０がランダムな（エラーのある）値に復号されることになり、００００という特定の値になる可能性がなく、したがってエラーを示すからである。
【０１２３】
列１００８に関しては、状態フィールドが「大きい（Ｌａｒｇｅ）」、「アクティブ（Ａｃｔｉｖｅ）」、「共有（Ｓｈａｒｅｄ）」、及び「無効（Ｉｎｖａｌ）」の値で示されている。「共有」という値は、コンシューマ／ゲストＶＭが共有されるページを意図していることを示す。プロセッサが、そのような「共有」されたＭＯＴエントリを解釈した場合、プロセッサは、そのページの物理メモリアドレスにあるＶＭＭのＫＤ＿ＩＤを用いることになる（又はそうでなければキーがないことを示す）。これにより、関連するメモリページのメモリコンテンツが暗号化されることはない（又は、ＶＭＭ及び特定のゲストＶＭによって共有された共通鍵で暗号化されることになる）。ＶＭのメモリページが、ＶＭＭと選択的に共有され／ＶＭＭに公開され、ゲストＶＭとホストＶＭＭとの間の通信が可能になり得る。
【０１２４】
列１００８の状態フィールドは、「大きい」という値又は「非常に大きい」という値を含んでよい。通常の（基本的な）ページサイズは４ＫＢである。Ｉｎｔｅｌ（登録商標）プロセッサは、４ＭＢという大きいページ、及び４ＧＢという非常に大きいページをサポートする。メモリオーナーシップテーブルは期待ページサイズを示して、ページサイズ（ページテーブルウォークで判定される）が期待通りであることを保証するので、ＶＭＭはページサイズを誤って伝えることができない。
【０１２５】
なお、網掛けされた行はキーＫ１を用いて暗号化され及び復号され、あるゲストワークロード／ゲスト仮想マシンに対応する。網掛けの無い行はキーＫ２を用いて暗号化され及び復号され、別のゲストワークロード／ゲスト仮想マシンに対応する。ＭＯＴテーブル全体は、任意の数の別個のキードメイン／ＶＭに属する任意の数のエントリを有してよく、各ＭＯＴエントリは、対応するキードメインキーで暗号化される。
【０１２６】
列１０１２が点線で示されているのは、ＭＯＴエントリ用のメモリ暗号化キー／キードメインキーをメモリオーナーシップテーブルの一部として格納する必要がないからである。ＭＯＴエントリ用のキードメインキーは、ＭＯＴテーブル１０００のエントリを暗号化及び復号するために識別され用いられる。１つの実施形態において、キードメイン識別子は、ＭＯＴエントリにアクセスするプロセッサによって用いられるハードウェア物理アドレスの最上位物理アドレスビットに存在し、キードメイン識別子は、ＭＯＴエントリを（メモリ書き込みで）暗号化又は（メモリ読み出しで）復号するのに用いられるキードメインキーを決定するために用いられ得る。
【０１２７】
この例において、図１０のメモリオーナーシップテーブル１０００では、ＶＭＭが拡張ページテーブルを提供し、拡張ページテーブルは、期待ＨＰＡ０、２、４、６のそれぞれをゲストアドレス８、１０、１２、１４にマッピングし、期待ＨＰＡ１、３、５、７のそれぞれをゲストアドレス９、１１、１３、１５にマッピングする。プロセッサはメモリオーナーシップテーブル１０００を用いて、ワークロードマネージャ提供の変換後のＨＰＡが期待ＨＰＡと一致しないこと、及びＶＭＭが危険に晒されているかもしれないことを判定できる。例えば、ＨＰＡ１、３、５、７のそれぞれを９、１１、１３、１５以外のゲストアドレスにマッピングするページテーブルをＶＭＭが提供した場合、プロセッサはまた、メモリオーナーシップテーブル１０００を用いて、ワークロードマネージャ提供の変換後のＨＰＡが期待ＨＰＡと一致しないこと、及びＶＭＭが危険に晒されているかもしれないことを判定できる。
【０１２８】
いくつかの実施形態において、メモリオーナーシップテーブルは、物理メモリページがＶＭＣＳを含むかどうかを示すフィールドを含んでよい。このように、コンシューマ／ＶＭはＭＯＴエントリを用いて、コンシューマ／ＶＭの暗号化されたイメージの、ＶＭＣＳ構造を含む部分を識別することができる。ＶＭＣＳフィールドは、悪意のあるＶＭＭが偽のＶＭＣＳをＶＭに（例えば、通信チャネルを介して）注入しようとすること、及び偽のＶＭＣＳをＶＭの許可されたＶＭＣＳとして読み込もうとすることを阻止するのに用いられ得る。プロセッサがＶＭＰＴＲＬＤ命令を実行した場合、プロセッサはＶＭＰＴＲＬＤ用のＥＡＸレジスタにおいて指定された物理アドレスＨＰＡのＭＯＴテーブルにアクセスしてよい。例えば、ＶＭＣＳのＨＰＡがＭＯＴエントリの期待ＨＰＡと一致することを想定すると、ＶＭＰＴＲＬＤのＨＰＡのＭＯＴエントリが真（ＴＲＵＥ）（ブール型フィールド）と設定されたＶＭＣＳフィールドを有する場合、プロセッサはＶＭＣＳの読み込みに進む。ＶＭＣＳフィールドが偽（ＦＡＬＳＥ）の場合、プロセッサは終了してエラーをＶＭＭに報告する。プロセッサは、ＭＯＴエントリにアクセスする場合、ＶＭＰＴＲＬＤに用いられるアドレスの一部として指定されたＫＤ＿ＩＤを用いる。これにより、指定されたＫＤ＿ＩＤに対応するキーがメモリ暗号化エンジンによって用いられ、対応するＭＯＴエントリを復号する。
【０１２９】
ＭＯＴエントリに含まれ得る別の追加フィールドは、ゲストＶＭの仮想／リニアアドレス（ＶＡ、これは図１０に示されていない）である。プロセッサ／ＰＭＨは、ページテーブルをウォークすることによって、ＶＡを用いてゲスト物理アドレスを検索でき、またゲスト物理アドレスを用いてワークロードマネージャ提供のＨＰＡを検索できるので、ＭＯＴエントリは、ＶＡがＭＯＴエントリ内で探し出されたＶＡと一致することも必要となり得る。ＶＡフィールドは、ＶＭワークロードがそのＧＰＡを異なるＶＡに再び割り当てた後に、メモリコンテンツのリプレイを防止するのに用いられてよい。
【０１３０】
同様に、期待されるＣＲ３プロセッサレジスタ値（不図示）がＭＯＴのフィールドであってよい。ＣＲ３プロセッサレジスタによって、プロセッサは、現在のタスク／ワークロードのページディレクトリ及びページテーブルの位置を特定することによって、仮想／リニアアドレスをハードウェア物理アドレスに変換することが可能になる。通常、ＣＲ３の上位２０ビットはページディレクトリベースレジスタ（ＰＤＢＲ）になり、これは、第１のページディレクトリエントリのハードウェア物理アドレスを格納する。期待されるＣＲ３プロセッサレジスタ値をＭＯＴに格納することで、プロセッサ／ＰＭＨは、実際のＣＲ３ページディレクトリベースレジスタの値が、対応するＭＯＴエントリに格納された期待ＣＲ３値と一致することを確認することが可能になる。この段落及び以前の段落で説明されたＭＯＴのＶＡフィールド及び期待ＣＲ３フィールドは、ＣＲ３又はＶＡの任意の値が許容できることを示す「任意」という値も含んでよい。この方法は、以前のタスク／プロセスに属するメモリマッピングのリプレイを防止するために、ゲストワークロードによって用いられ得る。これは、新たなＭＯＴエントリが新たなタスク／プロセスのために作成されるからである。
【０１３１】
他のフィールドは、コンシューマ／ＶＭによって期待されるように、ＥＰＴ構造の権限及び／又はＥＰＴ構造のメモリタイプが、ＭＯＴエントリの期待権限及びメモリタイプと一致することを確認してよい。ゲストワークロードがプロセッサにゲストワークロードの期待値と比較して確認することを要求する任意の他のプロセッサ状態／情報が、追加フィールドとしてＭＯＴエントリに含まれてよい。
［実施例］
【０１３２】
以下の実施例は、さらなる実施形態に関する。
【０１３３】
実施例１において、パブリッククラウドサービスプロバイダ環境内のゲストワークロードを守る装置が、プロセッサと、プロセッサに結合されたメモリとを含み、プロセッサは、信頼できないワークロードマネージャを実行して少なくとも１つのゲストワークロードの実行を管理し、信頼できないワークロードマネージャは、（ｉ）少なくとも１つのゲストワークロードのうちのあるゲストワークロードにメモリの領域を割り振り、（ｉｉ）メモリの領域のそれぞれのメモリ位置と関連付けられたそれぞれの元のハードウェア物理アドレスを、ゲストワークロードによって提供されたそれぞれの元のゲストアドレスに割り当て、ゲストワークロードは、ゲストワークロードに割り振られたメモリ領域のそれぞれの元のゲストアドレスからゲストワークロードのそれぞれの元のハードウェア物理アドレスへのそれぞれのマッピングを格納する。ゲストワークロードから、要求されたゲストアドレスを用いてメモリにアクセスする要求を受け取ったことに応答して、プロセッサはさらに、（ｉ）信頼できないワークロードマネージャから、ワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得して要求されたゲストアドレスに対応し、（ｉｉ）格納されたマッピングがワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定し、（ｉｉｉ）格納されたマッピングを探し出したことに応答して、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致するかどうかを判定し、（ｉｖ）格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致した場合、ゲストワークロードがワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする。
【０１３４】
実施例２において、実施例１のプロセッサはさらに、格納されたマッピングの格納された期待ハードウェア物理アドレスがワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを判定し、ゲストワークロードがワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にすることは、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致し、且つ格納されたマッピングの格納された期待ハードウェア物理アドレスがワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、ゲストワークロードを有効にすることを含む。
【０１３５】
実施例３において、実施例１及び２のゲストワークロードはさらに、（ｉ）ゲストワークロードによってメモリの領域のそれぞれのメモリ位置に書き込まれたコンテンツをゲストワークロード用のコンシューマ提供のキーで暗号化させ、（ｉｉ）ゲストワークロード用のそれぞれのマッピングをコンシューマ提供のキーで暗号化させる。
【０１３６】
実施例４において、ゲストワークロードのマッピングをコンシューマ提供のキーで暗号化させる実施例１から３のゲストワークロードは、マッピングのそれぞれの元のゲストアドレスをマッピングのそれぞれの元のハードウェア物理アドレスに結び付ける。
【０１３７】
実施例５において、ゲストワークロードによって書き込まれたコンテンツをコンシューマ提供のキーで暗号化させる実施例１から３のゲストワークロードはさらに、マッピングのそれぞれの元のゲストアドレスを、マッピングのそれぞれの元のハードウェア物理アドレスの暗号化されたコンテンツに結び付ける。
【０１３８】
実施例６において、実施例１から５のゲストワークロードはさらに、それぞれのマッピングをメモリオーナーシップテーブルのそれぞれのエントリとして格納する。
【０１３９】
実施例７において、実施例１から６のゲストワークロードはさらに、ゲストワークロードのそれぞれの元のゲストアドレスからゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングをメモリオーナーシップテーブルに格納し、実施例１から６のプロセッサはさらに、ゲストワークロードからの、それぞれの元のゲストアドレスに格納されたデータにアクセスする要求に応答して、（ｉ）それぞれの元のゲストアドレスに対応するメモリオーナーシップテーブルのエントリを識別し、（ｉｉ）メモリオーナーシップテーブルのエントリの期待される元の仮想アドレスがそれぞれの元の仮想アドレスと一致することを、それぞれの元のゲストアドレスに格納されたデータにアクセスする前に確認する。
【０１４０】
実施例８において、実施例１から７のゲストワークロードはさらに、ゲストワークロードの期待レジスタ値を格納して、プロセッサがゲストワークロードのページディレクトリ及びページテーブルの位置を特定することを可能にし、実施例１から７のプロセッサは、ワークロードマネージャ提供のレジスタ値がゲストワークロードの期待レジスタ値と一致することを、ゲストワークロードのページディレクトリ及びページテーブルにアクセスする前に確認する。
【０１４１】
実施例９において、実施例１から８のゲストワークロードはさらに、（ｉ）元の制御構造ハードウェア物理アドレスからゲストワークロードの期待される制御構造ハードウェア物理アドレスへの制御構造マッピングを格納し、（ｉｉ）制御構造マッピングと共に制御構造標識を格納し、元の制御構造ハードウェア物理アドレスのコンテンツがゲストワークロードの制御構造を含む場合、制御構造標識は真（ＴＲＵＥ）に設定され、実施例１から８のプロセッサはさらに、ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスがゲストワークロードの期待される制御構造ハードウェア物理アドレスと一致すること、且つ制御構造標識が真であることを、ゲストワークロードの制御構造をワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認する。
【０１４２】
実施例１０において、実施例１から９のゲストワークロードはさらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値を格納し、期待コンテンツ確認値は、特定の元のハードウェア物理アドレスのコンテンツをハッシュすることによって決定され、実施例１から９のプロセッサは、期待コンテンツ確認値が特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する。
【０１４３】
実施例１１はパブリッククラウドサービスプロバイダ環境内のゲストワークロードを守るコンピュータ実装方法であり、本方法はプロセッサによって実行され、本方法は、信頼できないワークロードマネージャを実行して、少なくとも１つのゲストワークロードの実行を管理する段階と、少なくとも１つのゲストワークロードのうちのあるゲストワークロードから、要求されたゲストアドレスを用いてメモリにアクセスする要求を受け取る段階と、信頼できないワークロードマネージャから、要求されたゲストアドレスに対応するワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得する段階と、格納されたマッピングがワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定する段階と、格納されたマッピングを探し出したことに応答して、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致するかどうかを判定する段階と、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致した場合、ゲストワークロードがワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする段階とを含む。
【０１４４】
実施例１２において、実施例１１のコンピュータ実装方法はさらに、格納されたマッピングの格納された期待ハードウェア物理アドレスがワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを判定する段階をさらに含み、ゲストワークロードがワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする段階は、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致し、且つ格納されたマッピングの格納された期待ハードウェア物理アドレスがワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、ゲストワークロードを有効にする段階を含む。
【０１４５】
実施例１３において、実施例１１から１２のコンピュータ実装方法はさらに、ゲストワークロードのそれぞれの元のゲストアドレスからゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを含むメモリオーナーシップテーブルのエントリを識別する段階と、メモリオーナーシップテーブルのエントリの期待される元のゲスト仮想アドレスがエントリのそれぞれの元の仮想アドレスと一致することを、それぞれの元のゲストアドレスに格納されたデータにアクセスする前に確認する段階とを含む。
【０１４６】
実施例１４において、実施例１１から１３のコンピュータ実装方法はさらに、ゲストワークロードの格納された期待レジスタ値を識別して、ゲストワークロードのページディレクトリ及びページテーブルの位置を特定する段階と、ワークロードマネージャ提供のレジスタ値がゲストワークロードの格納された期待レジスタ値と一致することを、ゲストワークロードのページディレクトリ及びページテーブルにアクセスする前に確認する段階とを含む。
【０１４７】
実施例１５において、実施例１１から１４のコンピュータ実装方法はさらに、（ｉ）元の制御構造ハードウェア物理アドレスからゲストワークロードの期待される制御構造ハードウェア物理アドレスへの格納された制御構造マッピングと、（ｉｉ）制御構造マッピングと関連付けられた格納された制御構造標識とを識別する段階であって、元の制御構造ハードウェア物理アドレスのコンテンツがゲストワークロードの制御構造を含む場合、制御構造標識は真に設定される、段階と、ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスがゲストワークロードの期待される制御構造ハードウェア物理アドレスと一致すること、且つ制御構造標識が真であることを、ゲストワークロードの制御構造をワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認する段階とを含む。
【０１４８】
実施例１６において、実施例１１から１５のコンピュータ実装方法はさらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値を識別する段階と、期待コンテンツ確認値が特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する段階とを含む。
【０１４９】
実施例１７において、少なくとも１つのコンピュータ可読媒体が、プロセッサによって実行された場合、実施例１１から１６の方法をマシンに実行させる命令を含む。
【０１５０】
実施例１８において、パブリッククラウドサービスプロバイダ環境内のゲストワークロードを守る装置が、信頼できないワークロードマネージャを実行して、少なくとも１つのゲストワークロードの実行を管理するための手段と、少なくとも１つのゲストワークロードのうちのあるゲストワークロードから、要求されたゲストアドレスを用いてメモリにアクセスする要求を受け取るための手段と、信頼できないワークロードマネージャから、要求されたゲストアドレスに対応するワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得するための手段と、格納されたマッピングがワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定するための手段と、格納されたマッピングを探し出したことに応答して、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致するかどうかを判定するための手段と、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致する場合、ゲストワークロードがワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にするための手段とを含む。
【０１５１】
実施例１９において、実施例１８の装置はさらに、格納されたマッピングの格納された期待ハードウェア物理アドレスがワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを判定するための手段を含み、ゲストワークロードがワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にするための手段は、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致し、且つ格納されたマッピングの格納された期待ハードウェア物理アドレスがワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、ゲストワークロードを有効にするための手段を含む。
【０１５２】
実施例２０において、実施例１８から１９の装置はさらに、ゲストワークロードのそれぞれの元のゲストアドレスからゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを含むメモリオーナーシップテーブルのエントリを識別するための手段と、メモリオーナーシップテーブルのエントリの期待される元のゲスト仮想アドレスがエントリのそれぞれの元の仮想アドレスと一致することを、それぞれの元のゲストアドレスに格納されたデータにアクセスする前に確認するための手段とを含む。
【０１５３】
実施例２１において、実施例１８から２０の装置はさらに、ゲストワークロードの格納された期待レジスタ値を識別して、ゲストワークロードのページディレクトリ及びページテーブルの位置を特定するための手段と、ワークロードマネージャ提供のレジスタ値がゲストワークロードの格納された期待レジスタ値と一致することを、ゲストワークロードのページディレクトリ及びページテーブルにアクセスする前に確認するための手段とを含む。
【０１５４】
実施例２２において、実施例１８から２１の装置はさらに、元の制御構造ハードウェア物理アドレスからゲストワークロードの期待される制御構造ハードウェア物理アドレスへの格納された制御構造マッピングを識別するための手段と、制御構造マッピングと関連付けられた格納された制御構造標識を識別するための手段であって、元の制御構造ハードウェア物理アドレスのコンテンツがゲストワークロードの制御構造を含む場合、制御構造標識は真に設定される、手段と、ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスがゲストワークロードの期待される制御構造ハードウェア物理アドレスと一致すること、且つ制御構造標識が真であることを、ゲストワークロードの制御構造をワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認するための手段とを含む。
【０１５５】
実施例２３において、実施例１８から２２の装置はさらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値を識別するための手段と、期待コンテンツ確認値が特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認するための手段とを含む。
【０１５６】
実施例２４において、少なくとも１つのコンピュータ可読媒体が、プロセッサによって実行された場合、実施例１１から１６の方法をマシンに実行させる命令を含む。
【０１５７】
実施例２５において、パブリッククラウドサービスプロバイダ環境内のゲストワークロードを守るコンピュータ実装方法がプロセッサによって実行され、信頼できないワークロードマネージャによって管理された複数のゲストワークロードのうちのあるゲストワークロードをプロセッサによって実行する段階と、信頼できないワークロードマネージャから、メモリの領域の割り振りをゲストワークロードによって受け取る段階と、メモリの領域のそれぞれのメモリ位置にそれぞれの元のゲストアドレスをゲストワークロードによって提供する段階と、それぞれの元のゲストアドレスに割り当てられたそれぞれの元のハードウェア物理アドレスをゲストワークロードによって受け取る段階と、それぞれの元のゲストアドレスからそれぞれの元のハードウェア物理アドレスへのそれぞれのマッピングをゲストワークロードによって格納する段階とを含む。
【０１５８】
実施例２６において、実施例２５のコンピュータ実装方法はさらに、ゲストワークロードによってメモリの領域のそれぞれのメモリ位置に書き込まれたコンテンツを、ゲストワークロード用のコンシューマ提供のキーでゲストワークロードによって暗号化させる段階と、ゲストワークロードのそれぞれのマッピングをコンシューマ提供のキーでゲストワークロードによって暗号化させる段階とを含む。
【０１５９】
実施例２７において、実施例２５から２６のコンピュータ実装方法では、ゲストワークロードのマッピングをコンシューマ提供のキーで暗号化させる段階は、マッピングのそれぞれの元のゲストアドレスをマッピングのそれぞれの元のハードウェア物理アドレスに結び付ける。
【０１６０】
実施例２８において、実施例２５から２７のコンピュータ実装方法では、ゲストワークロードによって書き込まれたコンテンツをコンシューマ提供のキーで暗号化させる段階はさらに、マッピングのそれぞれの元のゲストアドレスを、マッピングのそれぞれの元のハードウェア物理アドレスの暗号化されたコンテンツに結び付ける。
【０１６１】
実施例２９において、実施例２５から２８のコンピュータ実装方法はさらに、それぞれのマッピングをメモリオーナーシップテーブルのそれぞれのエントリとしてゲストワークロードによって格納する段階を含む。
【０１６２】
実施例３０において、実施例２５から２９のコンピュータ実装方法はさらに、ゲストワークロードのそれぞれの元のゲストアドレスからゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングをメモリオーナーシップテーブルにゲストワークロードによって格納する段階と、ゲストワークロードからの、それぞれの元のゲストアドレスに格納されたデータにアクセスする要求に応答して、それぞれの元のゲストアドレスに対応するメモリオーナーシップテーブルのエントリをプロセッサによって識別する段階と、メモリオーナーシップテーブルのエントリの期待される元の仮想アドレスがそれぞれの元の仮想アドレスと一致することを、それぞれの元のゲストアドレスに格納されたデータにアクセスする前にプロセッサによって確認する段階とを含む。
【０１６３】
実施例３１において、実施例２５から３０のコンピュータ実装方法はさらに、ゲストワークロードの期待レジスタ値をゲストワークロードによって格納し、プロセッサがゲストワークロードのページディレクトリ及びページテーブルの位置を特定することを可能にする段階と、ワークロードマネージャ提供のレジスタ値がゲストワークロードの期待レジスタ値と一致することを、ゲストワークロードのページディレクトリ及びページテーブルにアクセスする前にプロセッサによって確認する段階とを含む。
【０１６４】
実施例３２において、実施例２５から３１のコンピュータ実装方法はさらに、元の制御構造ハードウェア物理アドレスからゲストワークロードの期待される制御構造ハードウェア物理アドレスへの制御構造マッピングをゲストワークロードによって格納する段階と、制御構造マッピングと共に制御構造標識をゲストワークロードによって格納する段階であって、元の制御構造ハードウェア物理アドレスのコンテンツがゲストワークロードの制御構造を含む場合、制御構造標識は真に設定される、段階と、ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスがゲストワークロードの期待される制御構造ハードウェア物理アドレスと一致すること、且つ制御構造標識が真であることを、ゲストワークロードの制御構造をワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前にプロセッサによって確認する段階とを含む。
【０１６５】
実施例３３において、実施例２５から３２のコンピュータ実装方法はさらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値をゲストワークロードによって格納する段階であって、期待コンテンツ確認値は、特定の元のハードウェア物理アドレスのコンテンツをハッシュすることによって決定される、段階と、期待コンテンツ確認値が特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前にプロセッサによって確認する段階とを含む。
【０１６６】
なお、実施例１から３３のプロセッサは、様々な手段を用いて実装されてよい。
【０１６７】
実施例３４において、実施例１から３３のプロセッサは、仮想プロセッサとして実装される。
【０１６８】
実施例３５において、実施例１から３３のプロセッサは、ユーザ機器のタッチ式デバイスに組み込まれたシステムオンチップ（ＳｏＣ）を含む。
【０１６９】
実施例３６において、実施例１から３３のプロセッサであって、システムは表示装置及びメモリを備え、上記実施例のうち１つ又は複数のプロセッサを含む。
【０１７０】
実施例３７において、データを含むコンピュータ可読媒体が少なくとも１つのマシンによって用いられ、上記実施例のうちいずれか１つの方法を実行する少なくとも１つの集積回路を製造する。
【０１７１】
実施例３８において、装置が上記実施例のうちいずれか１つの方法を実行する手段を備える。
【０１７２】
上記実施例の様々な組み合わせが可能であることを理解されたい。
【０１７３】
なお、「ｃｉｒｃｕｉｔ（回路）」及び「ｃｉｒｃｕｉｔｒｙ（回路）」という用語は、本明細書では同じ意味で用いられる。本明細書では、これらの用語及び「ｌｏｇｉｃ（ロジック）」という用語は、アナログ回路、デジタル回路、ハードワイヤード回路、プログラム可能回路、プロセッサ回路、マイクロコントローラ回路、ハードウェアロジック回路、ステートマシン回路、及び／又は任意の他の種類の物理ハードウェアコンポーネントを単独で、又は任意の組み合わせで指すのに用いられる。各実施形態は、多くの異なる種類のシステムに用いられてよい。例えば、１つの実施形態において、本明細書で説明された様々な方法及び技法を実行するように通信デバイスが構成されてよい。もちろん、本発明の範囲は通信デバイスに限定されない。その代わり、他の実施形態が、命令を処理するための他の種類の装置、あるいはコンピュータ処理装置で実行されることに応答して、本明細書で説明された方法及び技法のうち１つ又は複数をデバイスに実行させる命令を含む１つ又は複数のマシン可読媒体を対象とすることができる。
【０１７４】
各実施形態はコードで実装されてよく、命令を実行するようにシステムをプログラムするのに用いられ得る命令を格納した非一時的記憶媒体に格納されてよい。各実施形態はデータで実装されてもよく、また非一時的記憶媒体に格納されてよい。非一時的記憶媒体は、少なくとも１つのマシンによって用いられた場合、１つ又は複数のオペレーションを実行する少なくとも１つの集積回路を少なくとも１つのマシンに製造させる。さらなる実施形態が、ＳｏＣ又は他のプロセッサとして製造された場合、１つ又は複数のオペレーションを実行するようにＳｏＣ又は他のプロセッサを構成する情報を含むコンピュータ可読記憶媒体で実装されてよい。記憶媒体は、限定されないが、フロッピーディスク、光ディスク、ソリッドステートドライブ（ＳＳＤ）、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）、磁気光ディスクを含む任意の種類のディスク、リードオンリメモリ（ＲＯＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）やスタティックランダムアクセスメモリ（ＳＲＡＭ）などのランダムアクセスメモリ（ＲＡＭ）、消去可能プログラム可能リードオンリメモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラム可能リードオンリメモリ（ＥＥＰＲＯＭ）などの半導体デバイス、磁気カード若しくは光カード、又は電子命令を格納するのに好適な任意の他の種類の媒体を含んでよい。
【０１７５】
本発明は、限られた数の実施形態に関して説明されているが、当業者であれば、そこから多くの修正形態及び改変形態を理解するであろう。添付の特許請求の範囲は、本発明の真の精神及び範囲に含まれるそのような修正形態及び改変形態の全てを包含することが意図されている。
［他の可能性のあるクレーム］
（項目１）
プロセッサと、
上記プロセッサに結合されたメモリと
を備える装置であって、
上記プロセッサは、信頼できないワークロードマネージャを実行して、少なくとも１つのゲストワークロードの実行を管理し、
上記信頼できないワークロードマネージャは、（ｉ）上記少なくとも１つのゲストワークロードのうちのあるゲストワークロードに上記メモリのある領域を割り振り、（ｉｉ）上記メモリの上記領域のそれぞれのメモリ位置と関連付けられたそれぞれの元のハードウェア物理アドレスを、上記ゲストワークロードによって提供されたそれぞれの元のゲストアドレスに割り当て、
上記ゲストワークロードは、上記ゲストワークロードに割り振られたメモリの上記領域のそれぞれの元のゲストアドレスから上記ゲストワークロードのそれぞれの上記元のハードウェア物理アドレスへのそれぞれのマッピングを格納し、
上記ゲストワークロードから、要求されたゲストアドレスを用いて上記メモリにアクセスする要求を受け取ったことに応答して、上記プロセッサはさらに、（ｉ）上記信頼できないワークロードマネージャから、上記要求されたゲストアドレスに対応するワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得し、（ｉｉ）格納されたマッピングが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定し、（ｉｉｉ）上記格納されたマッピングを探し出したことに応答して、上記格納されたマッピングの格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致するかどうかを判定し、（ｉｖ）上記格納されたマッピングの上記格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致した場合、上記ゲストワークロードが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする、装置。
（項目２）
上記プロセッサはさらに、
上記格納されたマッピングの格納された期待ハードウェア物理アドレスが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを判定し、
上記ゲストワークロードが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にすることは、上記格納されたマッピングの上記格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致し、且つ上記格納されたマッピングの上記格納された期待ハードウェア物理アドレスが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、上記ゲストワークロードを有効にすることを含む、項目１に記載の装置。
（項目３）
上記ゲストワークロードはさらに、
（ｉ）上記ゲストワークロードによって上記メモリの上記領域のそれぞれのメモリ位置に書き込まれたコンテンツを、上記ゲストワークロード用のコンシューマ提供のキーで暗号化させ、
（ｉｉ）上記ゲストワークロードのそれぞれのマッピングを上記コンシューマ提供のキーで暗号化させる、項目１に記載の装置。
（項目４）
上記ゲストワークロードのマッピングを上記コンシューマ提供のキーで暗号化させることは、上記マッピングのそれぞれの上記元のゲストアドレスを、上記マッピングのそれぞれの上記元のハードウェア物理アドレスに結び付ける、項目３に記載の装置。
（項目５）
上記ゲストワークロードによって書き込まれた上記コンテンツを上記コンシューマ提供のキーで暗号化させることはさらに、上記マッピングのそれぞれの上記元のゲストアドレスを、上記マッピングのそれぞれの上記元のハードウェア物理アドレスの暗号化されたコンテンツに結び付ける、項目３に記載の装置。
（項目６）
上記ゲストワークロードはさらに、メモリオーナーシップテーブルのそれぞれのエントリとして、それぞれのマッピングを格納する、項目１に記載の装置。
（項目７）
上記ゲストワークロードはさらに、上記ゲストワークロードのそれぞれの元のゲストアドレスから上記メモリオーナーシップテーブルの上記ゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを格納し、
上記プロセッサはさらに、上記ゲストワークロードからの、それぞれの上記元のゲストアドレスに格納されたデータにアクセスする要求に応答して、（ｉ）それぞれの上記元のゲストアドレスに対応する上記メモリオーナーシップテーブルのエントリを識別し、（ｉｉ）上記メモリオーナーシップテーブルの上記エントリの期待される元の仮想アドレスがそれぞれの上記元の仮想アドレスと一致することを、それぞれの上記元のゲストアドレスに格納されたデータにアクセスする前に確認する、項目６に記載の装置。
（項目８）
上記ゲストワークロードはさらに、上記ゲストワークロードの期待レジスタ値を格納して、上記プロセッサが上記ゲストワークロードのページディレクトリ及びページテーブルの位置を特定することを可能にし、
上記プロセッサは、ワークロードマネージャ提供のレジスタ値が上記ゲストワークロードの上記期待レジスタ値と一致することを、上記ゲストワークロードの上記ページディレクトリ及び上記ページテーブルにアクセスする前に確認する、項目１に記載の装置。
（項目９）
上記ゲストワークロードはさらに、（ｉ）元の制御構造ハードウェア物理アドレスから上記ゲストワークロードの期待される制御構造ハードウェア物理アドレスへの制御構造マッピングを格納し、（ｉｉ）上記制御構造マッピングと共に制御構造標識を格納し、上記元の制御構造ハードウェア物理アドレスのコンテンツが上記ゲストワークロードの制御構造を含む場合、上記制御構造標識は真（ＴＲＵＥ）に設定され、
上記プロセッサはさらに、上記ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスが上記ゲストワークロードの上記期待される制御構造ハードウェア物理アドレスと一致すること、且つ上記制御構造標識が真であることを、上記ゲストワークロードの上記制御構造を上記ワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認する、項目１に記載の装置。
（項目１０）
上記ゲストワークロードはさらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値を格納し、上記期待コンテンツ確認値は、上記特定の元のハードウェア物理アドレスのコンテンツをハッシュすることによって決定され、
上記プロセッサは、上記期待コンテンツ確認値が上記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、上記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する、項目１に記載の装置。
（項目１１）
命令を含む少なくとも１つのコンピュータ可読媒体であって、実行された場合、
信頼できないワークロードマネージャを実行して、少なくとも１つのゲストワークロードの実行を管理することと、
上記信頼できないワークロードマネージャによって管理されるゲストワークロードから、要求されたゲストアドレスを用いてメモリにアクセスする要求を受け取ることと、
上記信頼できないワークロードマネージャから、上記要求されたゲストアドレスに対応するワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得することと、
格納されたマッピングが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定することと、
上記格納されたマッピングを探し出したことに応答して、上記格納されたマッピングの格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致するかどうかを判定することと、
上記格納されたマッピングの上記格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致した場合、上記ゲストワークロードが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にすることと
をプロセッサに行わせる命令を備える、少なくとも１つのコンピュータ可読媒体。
（項目１２）
上記命令はさらに、
上記格納されたマッピングの格納された期待ハードウェア物理アドレスが、上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを上記プロセッサに判定させる命令を含み、
上記ゲストワークロードが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にすることは、上記格納されたマッピングの上記格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致し、且つ上記格納されたマッピングの上記格納された期待ハードウェア物理アドレスが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、上記ゲストワークロードを有効にすることを含む、項目１１に記載の少なくとも１つのコンピュータ可読媒体。
（項目１３）
上記命令はさらに、
上記ゲストワークロードのそれぞれの元のゲストアドレスから上記ゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを含むメモリオーナーシップテーブルのエントリを識別することと、
上記メモリオーナーシップテーブルの上記エントリの期待される元のゲスト仮想アドレスが上記エントリのそれぞれの上記元の仮想アドレスと一致することを、それぞれの上記元のゲストアドレスに格納されたデータにアクセスする前に確認することと
を上記プロセッサに行わせる、項目１０に記載の少なくとも１つのコンピュータ可読媒体。
（項目１４）
上記命令はさらに、
上記ゲストワークロードの格納された期待レジスタ値を識別して、上記プロセッサが上記ゲストワークロードのページディレクトリ及びページテーブルの位置を特定することを可能にすることと、
ワークロードマネージャ提供のレジスタ値が上記ゲストワークロードの上記格納された期待レジスタ値と一致することを、上記ゲストワークロードの上記ページディレクトリ及び上記ページテーブルにアクセスする前に確認することと
を上記プロセッサに行わせる、請求項１１に記載の少なくとも１つのコンピュータ可読媒体。
（項目１５）
上記命令はさらに、
（ｉ）元の制御構造ハードウェア物理アドレスから上記ゲストワークロードの期待される制御構造ハードウェア物理アドレスへの格納された制御構造マッピングと、（ｉｉ）上記制御構造マッピングと関連付けられた格納された制御構造標識とを識別することであって、上記元の制御構造ハードウェア物理アドレスのコンテンツが上記ゲストワークロードの制御構造を含む場合、上記制御構造標識は真に設定される、識別することと、
上記ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスが上記ゲストワークロードの上記期待される制御構造ハードウェア物理アドレスと一致すること、且つ上記制御構造標識が真であることを、上記ゲストワークロードの上記制御構造を上記ワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認することと
を上記プロセッサに行わせる、項目１１に記載の少なくとも１つのコンピュータ可読媒体。
（項目１６）
上記命令はさらに、
特定の元のハードウェア物理アドレスの期待コンテンツ確認値を識別することと、
上記期待コンテンツ確認値が上記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、上記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認することと
を上記プロセッサに行わせる、項目１１に記載の少なくとも１つのコンピュータ可読媒体。
（項目１７）
命令を含む少なくとも１つのコンピュータ可読媒体であって、実行された場合、
信頼できないワークロードマネージャによって管理された複数のゲストワークロードのうちのあるゲストワークロードをプロセッサに実行させる命令を備え、
上記ゲストワークロードは、（ｉ）上記信頼できないワークロードマネージャから、メモリの領域の割り振りを受け取り、（ｉｉ）上記メモリの上記領域のそれぞれのメモリ位置にそれぞれの元のゲストアドレスを提供し、（ｉｉｉ）それぞれの上記元のゲストアドレスに割り当てられたそれぞれの元のハードウェア物理アドレスを受け取り、（ｉｖ）それぞれの上記元のゲストアドレスからそれぞれの上記元のハードウェア物理アドレスへのそれぞれのマッピングを格納する、少なくとも１つのコンピュータ可読媒体。
（項目１８）
上記ゲストワークロードはさらに、
（ｉ）上記ゲストワークロードによって上記メモリの上記領域のそれぞれのメモリ位置に書き込まれたコンテンツを、上記ゲストワークロード用のコンシューマ提供のキーで暗号化させ、
（ｉｉ）上記ゲストワークロードのそれぞれのマッピングを上記コンシューマ提供のキーで暗号化させる、項目１７に記載の少なくとも１つのコンピュータ可読媒体。
（項目１９）
上記ゲストワークロードのマッピングを上記コンシューマ提供のキーで暗号化させることは、上記マッピングのそれぞれの上記元のゲストアドレスを、上記マッピングのそれぞれの上記元のハードウェア物理アドレスに結び付ける、項目１８に記載の少なくとも１つのコンピュータ可読媒体。
（項目２０）
上記ゲストワークロードによって書き込まれた上記コンテンツを上記コンシューマ提供のキーで暗号化させることはさらに、上記マッピングのそれぞれの上記元のゲストアドレスを、上記マッピングのそれぞれの上記元のハードウェア物理アドレスの暗号化されたコンテンツに結び付ける、項目１８に記載の少なくとも１つのコンピュータ可読媒体。
（項目２１）
上記ゲストワークロードはさらに、メモリオーナーシップテーブルのそれぞれのエントリとして、それぞれのマッピングを格納する、項目１７に記載の少なくとも１つのコンピュータ可読媒体。
（項目２２）
上記ゲストワークロードはさらに、上記ゲストワークロードのそれぞれの元のゲストアドレスから上記メモリオーナーシップテーブルの上記ゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを格納し、
上記プロセッサはさらに、上記ゲストワークロードからの、それぞれの上記元のゲストアドレスに格納されたデータにアクセスする要求に応答して、（ｉ）それぞれの上記元のゲストアドレスに対応する上記メモリオーナーシップテーブルのエントリを識別し、（ｉｉ）上記メモリオーナーシップテーブルの上記エントリの期待される元の仮想アドレスがそれぞれの上記元の仮想アドレスと一致することを、それぞれの上記元のゲストアドレスに格納されたデータにアクセスする前に確認する、項目１７に記載の少なくとも１つのコンピュータ可読媒体。
（項目２３）
上記ゲストワークロードはさらに、上記ゲストワークロードの期待レジスタ値を格納して、上記プロセッサが上記ゲストワークロードのページディレクトリ及びページテーブルの位置を特定することを可能にし、
上記プロセッサは、ワークロードマネージャ提供のレジスタ値が上記ゲストワークロードの上記期待レジスタ値と一致することを、上記ゲストワークロードの上記ページディレクトリ及び上記ページテーブルにアクセスする前に確認する、項目１７に記載の少なくとも１つのコンピュータ可読媒体。
（項目２４）
上記ゲストワークロードはさらに、（ｉ）元の制御構造ハードウェア物理アドレスから上記ゲストワークロードの期待される制御構造ハードウェア物理アドレスへの制御構造マッピングを格納し、（ｉｉ）上記制御構造マッピングと共に制御構造標識を格納し、上記元の制御構造ハードウェア物理アドレスのコンテンツが上記ゲストワークロードの制御構造を含む場合、上記制御構造標識は真（ＴＲＵＥ）に設定され、
上記プロセッサはさらに、上記ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスが上記ゲストワークロードの上記期待される制御構造ハードウェア物理アドレスと一致すること、且つ上記制御構造標識が真であることを、上記ゲストワークロードの上記制御構造を上記ワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認する、項目１７に記載の少なくとも１つのコンピュータ可読媒体。
（項目２５）
上記ゲストワークロードはさらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値を格納し、上記期待コンテンツ確認値は、上記特定の元のハードウェア物理アドレスのコンテンツをハッシュすることによって決定され、
上記プロセッサは、上記期待コンテンツ確認値が上記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、上記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する、項目１７に記載の少なくとも１つのコンピュータ可読媒体。
（項目２６）
プロセッサによって実行されるコンピュータ実装方法であって、
信頼できないワークロードマネージャを実行して、少なくとも１つのゲストワークロードの実行を管理する段階と、
上記少なくとも１つのゲストワークロードのうちのあるゲストワークロードから、要求されたゲストアドレスを用いてメモリにアクセスする要求を受け取る段階と、
上記信頼できないワークロードマネージャから、上記要求されたゲストアドレスに対応するワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得する段階と、
格納されたマッピングが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定する段階と、
上記格納されたマッピングを探し出したことに応答して、上記格納されたマッピングの格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致するかどうかを判定する段階と、
上記格納されたマッピングの上記格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致した場合、上記ゲストワークロードが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする段階と
を備えるコンピュータ実装方法。
（項目２７）
上記格納されたマッピングの格納された期待ハードウェア物理アドレスが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを判定する段階をさらに備え、
上記ゲストワークロードが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする段階は、上記格納されたマッピングの上記格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致し、且つ上記格納されたマッピングの上記格納された期待ハードウェア物理アドレスが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、上記ゲストワークロードを有効にする段階を含む、項目２６に記載のコンピュータ実装方法。
（項目２８）
上記ゲストワークロードのそれぞれの元のゲストアドレスから上記ゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを含むメモリオーナーシップテーブルのエントリを識別する段階と、
上記メモリオーナーシップテーブルの上記エントリの期待される元のゲスト仮想アドレスが上記エントリのそれぞれの上記元の仮想アドレスと一致することを、それぞれの上記元のゲストアドレスに格納されたデータにアクセスする前に確認する段階と
をさらに備える、項目２６に記載のコンピュータ実装方法。
（項目２９）
上記ゲストワークロードの格納された期待レジスタ値を識別して、上記ゲストワークロードのページディレクトリ及びページテーブルの位置を特定する段階と、
ワークロードマネージャ提供のレジスタ値が上記ゲストワークロードの上記格納された期待レジスタ値と一致することを、上記ゲストワークロードの上記ページディレクトリ及び上記ページテーブルにアクセスする前に確認する段階と
をさらに備える、項目２６に記載のコンピュータ実装方法。
（項目３０）
（ｉ）元の制御構造ハードウェア物理アドレスから上記ゲストワークロードの期待される制御構造ハードウェア物理アドレスへの格納された制御構造マッピングと、（ｉｉ）上記制御構造マッピングと関連付けられた格納された制御構造標識とを識別する段階であって、上記元の制御構造ハードウェア物理アドレスのコンテンツが上記ゲストワークロードの制御構造を含む場合、上記制御構造標識は真に設定される、段階と、
上記ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスが上記ゲストワークロードの上記期待される制御構造ハードウェア物理アドレスと一致すること、且つ上記制御構造標識が真であることを、上記ゲストワークロードの上記制御構造を上記ワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認する段階と
をさらに備える、項目２６に記載のコンピュータ実装方法。
（項目３１）
特定の元のハードウェア物理アドレスの期待コンテンツ確認値を識別する段階と、
上記期待コンテンツ確認値が上記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、上記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する段階と
をさらに備える、項目２６に記載のコンピュータ実装方法。
【図１】
2019091430.tif 000003
【図２】
2019091430.tif 000004
【図３】
2019091430.tif 000005
【図４】
2019091430.tif 000006
【図５】
2019091430.tif 000007
【図６Ａ】
2019091430.tif 000008
【図６Ｂ】
2019091430.tif 000009
【図７】
2019091430.tif 000010
【図８】
2019091430.tif 000011
【図９】
2019091430.tif 000012
【図１０】
2019091430.tif 000013
【手続補正書】
【提出日】平成30年12月4日(2018.12.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサと、
前記プロセッサに結合されたメモリと
を備える装置であって、
前記プロセッサは、信頼できないワークロードマネージャを実行して、少なくとも１つのゲストワークロードの実行を管理し、
前記信頼できないワークロードマネージャは、（ｉ）前記少なくとも１つのゲストワークロードのうちのあるゲストワークロードに前記メモリのある領域を割り振り、（ｉｉ）前記メモリの前記領域のそれぞれのメモリ位置と関連付けられたそれぞれの元のハードウェア物理アドレスを、前記ゲストワークロードによって提供されたそれぞれの元のゲストアドレスに割り当て、
前記ゲストワークロードは、前記ゲストワークロードに割り振られた前記メモリの前記領域のそれぞれの元のゲストアドレスから前記ゲストワークロードのそれぞれの前記元のハードウェア物理アドレスへのそれぞれのマッピングを格納し、
前記ゲストワークロードから、要求されたゲストアドレスを用いて前記メモリにアクセスする要求を受け取ったことに応答して、前記プロセッサはさらに、（ｉ）前記信頼できないワークロードマネージャから、前記要求されたゲストアドレスに対応するワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得し、（ｉｉ）格納されたマッピングが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定し、（ｉｉｉ）前記格納されたマッピングを探し出したことに応答して、前記格納されたマッピングの格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致するかどうかを判定し、（ｉｖ）前記格納されたマッピングの前記格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致した場合、前記ゲストワークロードが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする、装置。
【請求項２】
前記プロセッサはさらに、
前記格納されたマッピングの格納された期待ハードウェア物理アドレスが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを判定し、
前記ゲストワークロードが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にすることは、前記格納されたマッピングの前記格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致し、且つ前記格納されたマッピングの前記格納された期待ハードウェア物理アドレスが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、前記ゲストワークロードを有効にすることを含む、請求項１に記載の装置。
【請求項３】
前記ゲストワークロードはさらに、
（ｉ）前記ゲストワークロードによって前記メモリの前記領域のそれぞれのメモリ位置に書き込まれたコンテンツを、前記ゲストワークロード用のコンシューマ提供のキーで暗号化させ、
（ｉｉ）前記ゲストワークロードのそれぞれのマッピングを前記コンシューマ提供のキーで暗号化させる、請求項１又は２に記載の装置。
【請求項４】
前記ゲストワークロードのマッピングを前記コンシューマ提供のキーで暗号化させることは、前記マッピングのそれぞれの前記元のゲストアドレスを、前記マッピングのそれぞれの前記元のハードウェア物理アドレスに結び付ける、請求項３に記載の装置。
【請求項５】
前記ゲストワークロードによって書き込まれた前記コンテンツを前記コンシューマ提供のキーで暗号化させることはさらに、前記マッピングのそれぞれの前記元のゲストアドレスを、前記マッピングのそれぞれの前記元のハードウェア物理アドレスの暗号化されたコンテンツに結び付ける、請求項３に記載の装置。
【請求項６】
前記ゲストワークロードはさらに、メモリオーナーシップテーブルのそれぞれのエントリとして、それぞれのマッピングを格納する、請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記ゲストワークロードはさらに、前記ゲストワークロードのそれぞれの元のゲストアドレスから前記メモリオーナーシップテーブルの前記ゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを格納し、
前記プロセッサはさらに、前記ゲストワークロードからの、それぞれの前記元のゲストアドレスに格納されたデータにアクセスする要求に応答して、（ｉ）それぞれの前記元のゲストアドレスに対応する前記メモリオーナーシップテーブルのエントリを識別し、（ｉｉ）前記メモリオーナーシップテーブルの前記エントリの期待される元の仮想アドレスがそれぞれの前記元の仮想アドレスと一致することを、それぞれの前記元のゲストアドレスに格納されたデータにアクセスする前に確認する、請求項６に記載の装置。
【請求項８】
前記ゲストワークロードはさらに、前記ゲストワークロードの期待レジスタ値を格納して、前記プロセッサが前記ゲストワークロードのページディレクトリ及びページテーブルの位置を特定することを可能にし、
前記プロセッサは、ワークロードマネージャ提供のレジスタ値が前記ゲストワークロードの前記期待レジスタ値と一致することを、前記ゲストワークロードの前記ページディレクトリ及び前記ページテーブルにアクセスする前に確認する、請求項１から７のいずれか一項に記載の装置。
【請求項９】
前記ゲストワークロードはさらに、（ｉ）元の制御構造ハードウェア物理アドレスから前記ゲストワークロードの期待される制御構造ハードウェア物理アドレスへの制御構造マッピングを格納し、（ｉｉ）前記制御構造マッピングと共に制御構造標識を格納し、前記元の制御構造ハードウェア物理アドレスのコンテンツが前記ゲストワークロードの制御構造を含む場合、前記制御構造標識は真（ＴＲＵＥ）に設定され、
前記プロセッサはさらに、前記ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスが前記ゲストワークロードの前記期待される制御構造ハードウェア物理アドレスと一致すること、且つ前記制御構造標識が真であることを、前記ゲストワークロードの前記制御構造を前記ワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認する、請求項１から８のいずれか一項に記載の装置。
【請求項１０】
前記ゲストワークロードはさらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値を格納し、前記期待コンテンツ確認値は、前記特定の元のハードウェア物理アドレスのコンテンツをハッシュすることによって決定され、
前記プロセッサは、前記期待コンテンツ確認値が前記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、前記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する、請求項１から９のいずれか一項に記載の装置。
【請求項１１】
信頼できないワークロードマネージャを実行して、少なくとも１つのゲストワークロードの実行を管理する段階と、
前記少なくとも１つのゲストワークロードのうちのあるゲストワークロードから、要求されたゲストアドレスを用いてメモリにアクセスする要求を受け取る段階と、
前記信頼できないワークロードマネージャから、前記要求されたゲストアドレスに対応するワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得する段階と、
格納されたマッピングが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定する段階と、
前記格納されたマッピングを探し出したことに応答して、前記格納されたマッピングの格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致するかどうかを判定する段階と、
前記格納されたマッピングの前記格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致した場合、前記ゲストワークロードが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする段階と
を備えるコンピュータ実装方法。
【請求項１２】
前記格納されたマッピングの格納された期待ハードウェア物理アドレスが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを判定する段階をさらに備え、
前記ゲストワークロードが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする段階は、前記格納されたマッピングの前記格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致し、且つ前記格納されたマッピングの前記格納された期待ハードウェア物理アドレスが前記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、前記ゲストワークロードを有効にする段階を含む、請求項１１に記載のコンピュータ実装方法。
【請求項１３】
前記ゲストワークロードのそれぞれの元のゲストアドレスから前記ゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを含むメモリオーナーシップテーブルのエントリを識別する段階と、
前記メモリオーナーシップテーブルの前記エントリの期待される元のゲスト仮想アドレスが前記エントリのそれぞれの前記元の仮想アドレスと一致することを、それぞれの前記元のゲストアドレスに格納されたデータにアクセスする前に確認する段階と
をさらに備える、請求項１１又は１２に記載のコンピュータ実装方法。
【請求項１４】
前記ゲストワークロードの格納された期待レジスタ値を識別して、前記ゲストワークロードのページディレクトリ及びページテーブルの位置を特定する段階と、
ワークロードマネージャ提供のレジスタ値が前記ゲストワークロードの前記格納された期待レジスタ値と一致することを、前記ゲストワークロードの前記ページディレクトリ及び前記ページテーブルにアクセスする前に確認する段階と
をさらに備える、請求項１１から１３のいずれか一項に記載のコンピュータ実装方法。
【請求項１５】
（ｉ）元の制御構造ハードウェア物理アドレスから前記ゲストワークロードの期待される制御構造ハードウェア物理アドレスへの格納された制御構造マッピングと、（ｉｉ）前記制御構造マッピングと関連付けられた格納された制御構造標識とを識別する段階であって、前記元の制御構造ハードウェア物理アドレスのコンテンツが前記ゲストワークロードの制御構造を含む場合、前記制御構造標識は真に設定される、段階と、
前記ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスが前記ゲストワークロードの前記期待される制御構造ハードウェア物理アドレスと一致すること、且つ前記制御構造標識が真であることを、前記ゲストワークロードの前記制御構造を前記ワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認する段階と
をさらに備える、請求項１１から１４のいずれか一項に記載のコンピュータ実装方法。
【請求項１６】
特定の元のハードウェア物理アドレスの期待コンテンツ確認値を識別する段階と、
前記期待コンテンツ確認値が前記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、前記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する段階と
をさらに備える、請求項１１から１５のいずれか一項に記載のコンピュータ実装方法。
【請求項１７】
請求項１１から１６のいずれか一項に記載のコンピュータ実装方法をマシンに実行させるためのプログラム。
【請求項１８】
請求項１１から１６のいずれか一項に記載のコンピュータ実装方法を実行する手段を備えた、コンピュータ実装装置。
【請求項１９】
請求項１７に記載のプログラムを格納するコンピュータ可読記録媒体。
【外国語明細書】
2019091430000001.pdf