JP7428770B2 - コンピュータプログラム、コンピュータ可読記憶媒体及び装置 - Google Patents

コンピュータプログラム、コンピュータ可読記憶媒体及び装置 Download PDF

Info

Publication number
JP7428770B2
JP7428770B2 JP2022163723A JP2022163723A JP7428770B2 JP 7428770 B2 JP7428770 B2 JP 7428770B2 JP 2022163723 A JP2022163723 A JP 2022163723A JP 2022163723 A JP2022163723 A JP 2022163723A JP 7428770 B2 JP7428770 B2 JP 7428770B2
Authority
JP
Japan
Prior art keywords
guest
workload
address
memory
physical address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022163723A
Other languages
English (en)
Other versions
JP2023015049A (ja
Inventor
エム. ダーハム デイビッド
チャブラ シッダールタ
エル. サヒタ ラヴィ
イー. ハントリー バリー
ネイガー ギルバート
ゲルゾン ギデオン
ヴイ. パテル バイジュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2023015049A publication Critical patent/JP2023015049A/ja
Application granted granted Critical
Publication of JP7428770B2 publication Critical patent/JP7428770B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Description

本出願は、2017年2月28日出願の「Secure Public Cloud with Protected Guest-Verified Host Control」と題する米国特許出願第15/444,771号に基づく優先権を主張するものであり、当該米国特許出願は、2016年10月14日出願の「Secure Public Cloud」と題する米国特許出願第15/293,967号に基づく優先権を主張するものであり、当該米国特許出願は、2016年8月11日出願の「Secure Public Cloud」と題する米国仮特許出願第62/373,627号に基づく優先権を主張するものであり、これらの各開示は、参照により本明細書に組み込まれるものとする。
今日のクラウドサービス環境において、クラウドサービスプロバイダのホストワークロード管理ソフトウェア(仮想化環境における仮想マシンモニタ(VMM)など)は、ホストワークロード管理ソフトウェアがクラウドサービスのコンシューマに代わって管理するゲストワークロード(ゲスト仮想マシンなど)を完全に制御する。ホストワークロード管理ソフトウェアは、ゲストメモリに対する読み出し又は書き込み、ゲストワークロードを実行するソフトウェアの制御フローの変更、ゲストレジスタ状態の読み出し又は変更、レジスタ値などのゲスト制御構造の読み出し又は変更などができる。ゲストワークロードの実行をこのように完全に制御することは、ホストワークロード管理ソフトウェアが危険に晒され、ゲストワークロード内にあるコンシューマの秘密及びデータが公開されるようにゲストワークロードを変更し得るというセキュリティリスクを有する。
典型的な仮想マシン環境を示すブロック図である。
実施形態を実現するのに用いられ得るクラウドサービス環境のブロック図である。
実施形態を実現するのに用いられ得るサーバ環境を示す略図である。
実施形態に従って、コンシューマエージェントとサーバ環境の構成要素との間のデータフローを示す略図である。
実施形態に従って、コンシューマエージェントとサーバ環境の構成要素との間のデータフローを示す略図である。
実施形態に従って、サーバ環境の構成要素間のデータフローを示す略図である。 実施形態に従って、サーバ環境の構成要素間のデータフローを示す略図である。
実施形態に従って、サーバ環境の構成要素間のデータフローを示す略図である。
実施形態に従って実行される方法のフローチャートである。
実施形態に従って実行される方法のフローチャートである。
実施形態によるメモリオーナーシップテーブルを示す略図である。
仮想化クラウド環境において、仮想マシンモニタ(VMM)はホストワークロード管理ソフトウェアとして機能し、ゲストワークロードは「仮想マシン」と呼ばれる。本明細書で提供される技法は、VMM及びゲストVMの観点から説明されるが、これらの技法は一般に、オペレーティングシステムなどの他の種類のホストワークロード管理ソフトウェアや、アプリケーションなどの他の種類のゲストワークロードにも適用される。
リソースを最大限に活用するために、クラウドで実行するホストワークロード管理ソフトウェアは、あるコンシューマ(ゲストワークロードの所有者、又はクラウドサービスプロバイダのサーバ環境のテナントと呼ばれることがある)が所有するゲストワークロードから、別のコンシューマが所有する別のゲストワークロードに実行を切り替えてよい。あるゲストワークロードから別のゲストワークロードに切り替えると、ゲストワークロードの実行状態に関するデータ構造が、ホストワークロード管理ソフトウェアによって変更されることがある。これらのデータ構造は、メモリマッピング(例えば、ページテーブル及び拡張ページテーブル(EPT))と、ゲストワークロードの実行を制御するのに用いられる制御構造(仮想マシン制御構造など)とを含んでよい。
ページテーブルは、コンピュータのオペレーティングシステムのメモリシステムによって用いられ、仮想/リニアアドレスと物理アドレスとの間のマッピングを格納するデータ構造である。仮想/リニアアドレスは、アクセスプロセスによって用いられ、物理アドレスはハードウェアによって用いられる。どのプロセスも、プロセスのワークロードを実行するのにメモリの大きな連続した部分が用いられているという印象を与えられる。しかしながら、物理的には、各プロセスのメモリは物理メモリの異なる領域に分散してよく、又は別の記憶装置、通常はハードディスクドライブに移される(ページアウトされる)ことがある。あるプロセスがメモリ内のデータへのアクセスを要求した場合、オペレーティングシステムは、このプロセスによって提供された仮想/リニアアドレスを、データが格納されている実際のメモリ位置の物理アドレスにマッピングする。
しかしながら、仮想化環境において、ゲストVMのオペレーティングシステムは物理ハードウェアアドレスにアクセスできない。したがって、ゲストVMは、ゲストオペレーティングシステム独自のページテーブルを用いて、ゲスト仮想/リニアアドレス(VA)とゲスト物理メモリアドレス(GPA)との間の独自のメモリマッピングを形成する。これらのメモリマッピングは、Intel(登録商標)の拡張ページテーブル(Extended Page Table:EPT)技術を用いてもよい。この技術では、変換索引バッファ(translation lookaside buffer:TLB)キャッシュが、ゲストオペレーティングシステムに見られるように、仮想メモリ及び物理メモリを追跡する。EPTの目的は、ゲスト物理アドレスにアクセスする場合、各ゲスト仮想マシンに、ゲストVM自体がメモリハードウェアを管理していると思わせることである。しかしながら、ゲスト物理アドレスは実際にはVMMによって管理されており、VMMによって実際のハードウェア物理アドレスに変換されている。このように、現実には、物理システムがソフトウェアの別の層、つまりVMMによって管理されているときに、VMソフトウェアが物理システムを管理しているという錯覚を、VMMはVMソフトウェアに与える。
個々のVMは、アドレス空間識別子(ASID)を各VMに割り当てることで、TLBによって追跡される。アドレス空間識別子を用いると、TLBは、各仮想マシンの物理ハードウェアアドレスにマッピングする仮想マシンアドレス空間を追跡できる。ASIDは、別のVMに切り替える場合に、ゲストVM状態を以前のVMのTLBからフラッシュする必要がないように、TLBにタグを付けるのに用いられる。その代わりに、TLBは、異なるVMエントリを分けておくためにタグを用い、現在実行中のVMにだけタグを用いる一方で、非アクティブのVMの状態を今まで通りキャッシュする。
仮想化環境において、仮想マシン制御構造(VMCSとは、これまでホストVMMによって管理されていたメモリ内のデータ構造である。VMCSは、ゲストVM及びホストVMMの両方のプロセッサレジスタ状態を保持する。VMCSは、各ゲストVMの論理プロセッサごとに1つ存在し、ゲストVMはホストVMMによって管理される。マルチプロセッサシステムでは、ゲストVMを同時に実行する各プロセッサが、独自のVMCSを有してよい。異なるVM間の実行コンテキストが変わるたびに、対応するVMCSは現在実行中のVM用に復元され、VMの仮想プロセッサの状態を規定する。実行コンテキストがゲストVMから切り替わって(VMExit)ホストVMMに戻った場合、ホストの保存されたプロセッサ状態をVMCSのホスト状態領域から復元するのに、同じVMCS構造が用いられる。
本明細書に提示される開示によって、ホストVMMを供給するクラウドサービスプロバイダがクラウドサービスプロバイダのリソースの使用を制御するように、ホストVMMはメモリマッピング/ページテーブルを制御し続けることが可能となる。これに対して、仮想マシン制御構造(VMCS)の管理はゲストVMに移される。ホストVMMは、ゲストが作成した又はゲストが変更したVMCSを今まで通り測定し確認してよいが、ホストVMMは、VMCSが用いられる前に、VMCSをホストが必要とし得るように変更するようゲストVMに要求してよい。
本開示において、コンシューマのワークロード及び秘密を危険に晒されたクラウドサービスプロバイダのハードウェア又はソフトウェアから守り、またクラウドサービスプロバイダのハードウェア及びソフトウェアを危険に晒されたコンシューマワークロードから守るという概念が、さらに展開される。これらの概念は、上述した2017年2月28日出願の「Secure Public Cloud with Protected Guest-Verified Host Control」と題する米国特許出願第15/444,771号を含む同時係属中の特許出願に取り入れられている。当該米国特許出願は、2016年10月14日出願の「Secure Public Cloud」と題する米国特許出願第15/293,967号に基づく優先権を主張するものであり、当該米国特許出願は、2016年8月11日出願の「Secure Public Cloud」と題する米国仮特許出願第62/373,627号に基づく優先権を主張する。
上記の特許出願において、コンシューマのワークロード及び秘密を危険に晒されたクラウドサービスプロバイダのハードウェア又はソフトウェアから守り、またクラウドサービスプロバイダのハードウェア及びソフトウェアを危険に晒されたコンシューマワークロードから守ることは、キードメインの概念に基づいている。キードメインは、メモリから暗号的に分かれた部分であり、キードメインに属するメモリ位置に格納されたデータにアクセスするには、関連するキードメインキーを用いてデータを復号する必要がある。ハードウェアがキードメインに属するメモリ位置にデータを書き込む場合、データはキードメインキーを用いて暗号化される。ハードウェアがキードメインに属するメモリ位置からデータを読み出す場合、データはキードメインキーを用いて復号される。キードメインに属する物理メモリ位置のコンテンツが、間違ったキードメインキーを用いて復号された場合、得られる平文にはエラーが含まれ得る、及び/又はインテグリティ違反が報告され得る。インテグリティ違反に応じて、誤って用いたキードメインキーは無効にされてよい。
キードメインを用いると、ゲストVMは、ホストVMMでもアクセスできないメモリの保護領域内で実行される。これは、キードメインが、コンシューマ提供の(テナント提供の)キードメインキーで暗号化されており、このキードメインキーはホストVMMに知られていないからである。別の実施形態において、メモリの保護領域は範囲レジスタを用いて実装される。指定レジスタは、ホストVMM(及び他のソフトウェア)がゲストVMの保護メモリ領域にアクセスできないようにする。本開示のために、ゲストVMの保護メモリ領域はキードメインに関して説明されることになるが、本明細書に説明される技法は、コンシューマのゲストVMをホストVMMにアクセスできなくする他の技法を用いて実装される保護メモリ領域にも適用可能である。ゲストVMは、VMMによって制御されたメモリマッピングがゲストVMを危険に晒さないことを保証することもできる。
本開示によれば、ゲストVMの実行状態に関する仮想化データ構造(例えば、VMCS)はまた、保護メモリ領域(キードメイン)に配置される。これらの仮想化データ構造は、キードメインキーで暗号化される。ホストVMM及び他のゲストVMは、他のキードメイン用のキードメインキーを持っていないので、これらの制御構造を変更できず、また保護メモリ領域にアクセスできない。しかしながら、ホストのセキュリティをゲストが危険に晒すことができないことを保証するために、ハードウェアによってホストVMMがこれらの制御構造のコンテンツを確認することを可能にする方法が提供される。
VMM又はOSカーネルなどの、クラウドサービスプロバイダのメモリマネージャが、異なるキードメインを用いて、異なる所有者/コンシューマ/テナントに属するデータを暗号的に分別してよい。例えば、クラウドサービス環境では、バンキングサービスなどのクラウドサービスの異なるコンシューマに属するデータを暗号的に分別するのに、異なるキードメインが用いられてよい。仮想化環境では、異なる仮想マシンに属するデータを分別するのに、異なるキードメインが用いられてよい。それぞれの仮想マシンに属するデータは、例えば、各仮想マシンに属するコンシューマの秘密(銀行の口座番号、社会保障番号など)を含むことがある。それぞれの仮想マシンに属するデータは、クラウドサービスプロバイダの環境内でそれぞれの仮想マシンの秘密を守るために実行されるコンピュータコード(コードイメージ又は単にイメージとも呼ばれる)も含むことがある。
あるコンシューマが、自分のワークロードが実行されているキードメインを所有する。キードメインキーは、キードメインを所有するコンシューマによって作成され、クラウドサービスプロバイダのメモリマネージャ/VMM/OSカーネルを介した通信を必要とすることなく、直接クラウドサービスプロバイダのサーバハードウェアにセキュアに提供される。他の実施形態において、コンシューマは、別のエンティティ(クラウドサービスプロバイダのサーバなど)によって提供されたキーを、キードメインに属するメモリ位置を暗号化するのに用いられる別のキーに変換してよい。さらに他の実施形態において、キードメインに属する異なるIPブロック(メモリ位置のセット)を暗号化するのに、異なるキーが用いられてよい。例えば、他のコンシューマの秘密を暗号化するのに用いられたキーと異なるキーが、コンシューマVMイメージのコードを含むIPブロックを暗号化するのに用いられてよい。本明細書の実施形態の説明を簡略化するために、本出願は、キードメインに属する各物理メモリ位置のコンテンツを、キードメインを所有するコンシューマによって作成されたキードメインキーで暗号化されるものとして説明するが、他の実施形態も本発明の範囲内に含まれる。
1つの実施形態において、キードメインが未使用の物理アドレスビットを用いて識別される。ハードウェアは、識別されたキードメインの識別子(本明細書では選択子とも呼ばれる)を未使用のアドレスビット(又はキャッシュを通過した他のメタデータ)に追加する。例えば、システムにインストールされた物理メモリ位置は、64ビット物理メモリアドレスを用いてアドレス指定され得るより少ない可能性があるので、未使用の最上位アドレスビットが、異なるキードメインを選択するのに用いられ得る。2つの異なるキードメインアドレスが、同じ物理メモリ位置に別名を付けることができる。しかしながら、この物理メモリ位置のデータがキャッシュに読み出された場合、キャッシュは完全アドレス解決(例えば、全64ビット物理メモリアドレスを含む)でキードメインアドレスを独立して保持する。全64ビット物理メモリアドレスの未使用の物理アドレスビットを考慮した場合、一意に識別されるキードメインアドレスは、物理メモリ位置が属するキードメインを決定する。物理メモリ位置が属するキードメインを識別することで、この物理メモリ位置のコンテンツを復号するのに用いられ得るキードメインキーも識別される。他の実施形態は、メモリアドレスに基づいて検索されるキー又はキー識別子のテーブルを用いることがある。他の実施形態は、キャッシュの前のプロセッサでメモリを暗号化し得る。メモリ暗号化ロジックは、メモリ階層のどのレベルにあってもよい。
1つの実施形態において、仮想マシンモニタは、VMの実行をもたらし、終了し、再開する能力を有する特権コードを含む。これらの特権は、仮想マシンの実行を終了するか又は再開する能力を含み得る(VMexit/VMresume及びVMLaunch)。
コンシューマのVMイメージはゲストVMとして実行され、VMMによってマッピングされて権限を与えられたメモリだけにアクセスできる。VMはページテーブルを用いて、仮想/リニアアドレスとゲスト物理アドレスとの間のマッピングを格納する。第2レベルのアドレス変換(ネステッドページングとしても知られる)が実行されて、ゲスト物理アドレス(GPA)をホスト物理アドレス(HPA)に変換する。アドレス変換の文脈において、ゲスト仮想/リニアアドレスは単に「仮想アドレス」と呼ばれることがあり、ゲスト物理アドレスは単に「ゲストアドレス」と呼ばれることがあり、ホスト物理アドレスは「ハードウェア物理アドレス」と呼ばれることがある。1つの実施形態において、第2レベルのアドレス変換は拡張ページテーブル(EPT)で追跡される。
本開示によると、VMMはEPTの制御を維持するが、暗号化されたコンシューマドメインイメージは、コンシューマの仮想マシンに固有の暗号化されたコンシューマドメイン制御構造を含み得る。通常であればホストVMMによって提供される仮想マシン制御構造(VMCS)は、今ではコンシューマ又はコンシューマが信頼する仲介者によってクラウドサービスプロバイダに提供される暗号化されたコンシューマドメインイメージにも含まれる。
コンシューマのVMプロセッサ状態を設定する制御構造を提供することによって、コンシューマは、ホスト仮想マシンモニタに頼ることなくコンシューマワークロードの制御を維持し、コンシューマのワークロード及びデータを守る。さらに、ホストVMMがアクセスできず、またホストVMMが暗号化キーを持っていない暗号化されたメモリ内の制御構造を提供するによって、コンシューマのワークロード及びデータが、危険に晒されたホストVMMからさらに守られる。一方、ホストVMMは、今まで通りハードウェアメカニズム(先述した特許出願に説明されているハッシュキードメイン(HashKD)命令など)を使用して、ホストVMMが関連VMをインスタンス化するか又は実行する前に、VM制御構造(及びコンシューマによって提供される他の構造)のコンテンツを評価し確認してよい。
ホストVMMが、ゲストVMの制御構造を直接変更することなく、ゲストVMの実行を管理することを可能にするために、別の種類のゲストVM、又は本明細書で「ゲストエージェントVM」若しくは単に「エージェント」と呼ばれるVM内のソフトウェアコンポーネントが用いられてよい。ホストVMMはエージェントを起動し、ゲストVMが実行される保護キードメインの中で動作する。エージェントはゲストVMと共に動作し、ゲストVMを不正変更から守る。1つの実施形態において、仮想化環境によって、エージェントが、ホストVMMに代わって他のゲストVMの実行フロー及びレジスタ状態を制御する制御構造にアクセスして、これを変更することを可能にするポリシーが実現される。別のゲストVMの制御構造を変更することで、エージェントは、コンシューマによって供給されたイメージをゲストVMに読み込み、保護メモリ領域/キードメイン内の複数のゲストVMのために、追加のVMCSを作成するか又は変更するなどの機能を実行できる。なお、従来の仮想化環境においてホストVMMにより提供されるVMCS機能は、ホストVMMによる要求に応じて、代わりにエージェントによって実現され、エージェントを、コンシューマの暗号化されたキードメイン内で動作するホストVMMの仲介者にする。ハードウェアによって、ホストVMMは、VMが実行される前にVMCS(及び関連構造)のコンテンツを確認し(読み出すが変更しない)、この構造のコンテンツが正しく、またホストVMMを危険に晒さないことを保証することが可能になり得る。
さらに、ホストVMMとゲストVMとの間の仲介者としてエージェントを用いると、エージェントはVMMがゲストVMを誤って設定して、機密データを漏洩したり、コード又はデータを注入したり、ゲストVMの実行フローを変更したりすることがないことを確認するのが可能になる。ゲストVMは、独自のメモリ暗号化キー(キードメインキー)を用いて、メモリ構造を暗号化してよい。ゲストVMは次に、ゲストVMに代わってホストVMMの制御下で、ホストVMM指定のメモリ位置にインストールするために、得られる暗号文をホストVMMに返す。ゲストVMがこれらのメモリ位置にまだアクセスできないことを想定すると、VMMはVMに代わって暗号文をインストールできる。
エージェントは、VMMによって制御されたメモリマッピング/ページテーブルがゲストVMの独自のメモリマッピングに適合することも保証できる。例えば、エージェントは、逆マッピングテーブル(RMT)とも呼ばれるメモリオーナーシップテーブル(MOT)を用いてよく、MOTは、ゲストアドレス(ゲスト仮想アドレス及び/又はゲスト物理アドレスのいずれか)から期待ハードウェア物理アドレスへのマッピングを提供する。これらのマッピングはゲストVMによってMOTに取り込まれ、これによりゲストVMは、ゲストVMの暗号化されたメモリがVMMによるリマッピング攻撃を受けていないことが保証され得る。ここで、VMは(VMの秘密メモリ暗号化キー/キードメインキーで暗号化された)MOTの暗号文エントリを生成してよい。VMはこれらの暗号文エントリをVMMに提供してよく、VMMはこれらのエントリを(メモリ上のデータ構造として管理され得る)MOTテーブルにインストールしてよい。
1つの実施形態において、特定のゲストVMをインスタンス化する前に、ホストVMMに代わって作動するエージェントが、特定のゲスト仮想マシンのためにVMCSを初期化する。特定のゲストVMがインスタンス化された場合、ホストVMMは、(例えば、VMポインタロード(VMPTRLD)命令を介して)VMCSを読み込ませる。別の実施形態において、コンシューマは、この同じ方法を用いてイメージを遠隔で作成(例えば、エージェントVMを作成)してよい。エージェントがメモリに読み込まれ、実行できるようになると、エージェントはVMMに代わって、VMCS及び他の制御構造の作成及び変更を続けることができる。
ホストVMMは、ゲストVMのイメージが読み込まれているメモリ位置の少なくとも1つのハードウェア物理アドレスをコンシューマに提供する。このハードウェア物理アドレスは、コンシューマが初期の暗号化メモリイメージを作成する場合はコンシューマに提供されてよく、又は、ゲストVMをインスタンス化する前はコンシューマVMのエージェントに提供されてよく、又は、コンシューマのゲストVMがインスタンス化されると、コンシューマのゲストVMに提供されてよい。初期の命令ポインタがゲストVMのVMCSに設定され、ゲストVMのイメージが読み込まれるVMM提供のハードウェア物理アドレスを指し示す。ホストVMMにより提供されたハードウェア物理アドレスを開始点として用い、ゲストVMは、実行中にゲストVMによってアクセスされる他の期待ハードウェア物理アドレスを決定する。VMCSの追加フィールドが、これらの期待ハードウェア物理アドレスの値で更新されてよい。
1つの実施形態において、ゲストVMが、実行中にアクセスされる期待ハードウェア物理アドレスを決定すると、ゲストVMは、ゲストVMのページテーブルのゲストアドレスからこれらの期待ハードウェア物理アドレスへのマッピングを確立する。ゲストVMのページテーブルのゲストアドレスからこれらの期待ハードウェア物理アドレスへのゲストVMのマッピングは、メモリオーナーシップテーブル(MOT)に格納される。1つの実施形態において、ゲストVMはそのメモリオーナーシップテーブルエントリを、ゲストVMのキードメインを暗号化するのに用いられる同じキードメインキーで暗号化する。ゲストVMのMOTエントリをゲストVMのキードメインキーで暗号化することによって、そのキードメインキーの所有者だけが、そのゲストVMの暗号化されたメモリの有効なマッピングをメモリオーナーシップテーブルに確立できる。
遠隔コンシューマは、コンシューマの初期の暗号化されたコンシューマイメージを作成する場合、サーバハードウェア(又はサーバハードウェアの基本的な保護プロセッサ/マイクロコード/ファームウェア)だけが、キードメインキーを復号して、キードメインキーをメモリ暗号化エンジンにインストールできるように、コンシューマがサーバの公開鍵と共に用いたいと望むキードメインキーを暗号化する。キードメイン作成命令(CreateKD)(先述した特許出願に説明されている)は、コンシューマの暗号化されたキードメインキーをサーバハードウェアに渡すのに用いられる。ホストVMMは、キードメインの関連するキー識別子(KeyID)を決定してよい。ホストVMMは暗号化されたキードメインキーにしかアクセスできないので、ゲストVMの保護キードメインを復号できない。ホストVMMはCreateKDコマンドをプロセッサに発行し、暗号化されたキードメインキー及びその関連するキー識別子(KeyID)を提供する。CreateKDコマンドを受け取ったことに応答して、プロセッサは、プロセッサと関連付けられた秘密鍵を用いて暗号化されたキードメインキーを復号する。プロセッサはまた、キードメイン識別子を含む各メモリアドレスに対して復号されたキードメインキーを使用するようにメモリ暗号化エンジンをプログラムする。
プロセッサハードウェアが現在実行中のゲストVMのメモリ読み出しコマンド又はメモリ書き込みコマンドを処理する場合、プロセッサハードウェア(例えば、ページミスハンドラ(PMH))は、現在実行中のゲストVMによって提供された仮想/リニアアドレスをオペレーティングシステムのページテーブルで検索し、ゲスト物理アドレスを取得する。プロセッサは、VMのページテーブルにアクセスする場合、VMのキードメインキーを用い、読み出しコマンド又は書き込みコマンドによってアクセスされる仮想/リニアアドレスのゲスト物理アドレスを決定する。プロセッサは次に、(VMMのKeyIDをアドレスに設定するか、又はそうでなければキーがないことを示すことによって)VMMのキードメインキーを用い、ゲスト物理アドレス(GPA)に対するホスト物理アドレス(HPA又はハードウェア物理アドレス)をVMMによって管理される拡張ページテーブルから取得する。キャッシュされたマッピング内でゲスト物理アドレス(GPA)を探し出すことができない場合、ページミスハンドラ(PMH)が拡張ページテーブル(EPT)を暗号化されていないメモリから(又はそうでなければVMMのKeyIDを用いて)読み込む。PMHはEPTのページウォークを実行して、ゲスト仮想/リニアアドレスからハードウェア物理アドレスへのマッピングを探し出す。
1つの実施形態において、PMHによるEPTウォークは、所与のゲスト物理アドレスに対応する探し出されたハードウェア物理アドレスが、ゲストVMの期待ハードウェア物理アドレスと一致することを確認することによって終了する。この確認は、メモリオーナーシップテーブル(MOT)を用いて行われる。プロセッサハードウェアは、現在実行中のゲストVMのメモリ暗号化キー(キードメインキー)を用いて、メモリオーナーシップテーブルエントリを復号し、期待ハードウェア物理アドレスを決定する。
メモリオーナーシップテーブルは、テーブルとして、アクセスされているページの物理アドレスで索引付けされてよい。MOTは、キャッシュされていない(まだTLB内にない)メモリアクセスが何もないか確認され得る。そのようなメモリアクセスには、ページングを介さず直接物理アドレスにアクセスすることが含まれる。ページングを介さず直接物理アドレスにアクセスすることは、VMポインタロード(VMPTRLD)命令で実行されるように、VMCS内のアドレスにアクセスすること、及びVMCSを読み込むのに用いられるアドレスにアクセスすることを含む。この確認は、探し出されたハードウェア物理アドレスを、現在実行中のゲストVMに対応するメモリオーナーシップテーブルのエントリ内で検索することにより行われる。1つの実施形態において、プロセッサハードウェアは、VMCSを読み込む場合に提供されるハードウェア物理アドレス(VMPTRLD命令と共に用いられる物理アドレスなど)の最上位ビットから、現在実行中のゲストVMのキードメイン識別子(KD_ID)を決定する。MOTは、ゲストVMに関する限り、VMPTRLD命令で提供される物理アドレスがVMCSであるかどうかを示してもよい(なぜならば、コンシューマ、ゲスト、又はそのエージェントだけが、キードメインキーで暗号化されたVMCSを作成するからである)。
メモリオーナーシップテーブルエントリが適切に復号され、エラーがない場合、EPTエントリの探し出されたハードウェア物理アドレスは、ゲスト物理アドレスのメモリオーナーシップテーブルに格納された期待ハードウェア物理アドレスと比較される。EPTのハードウェア物理アドレスがゲストVMの期待ハードウェア物理アドレスと一致する場合、プロセッサハードウェアは、メモリ読み出し又は書き込みを進めてよい。1つの実施形態において、仮想/リニアアドレスからハードウェア物理アドレスへのマッピングは、変換索引バッファ及び/又はキャッシュに保存される。
EPTのハードウェア物理アドレスがゲストVMの期待ハードウェア物理アドレスと一致しない場合、ゲストVMは強制的に終了させられてよく、又はプロセッサはメモリ読み出し又は書き込みの試みをアボートしてよい。
これらの技法によって、コンシューマのワークロードは、ホストVMMによるアクセス又は操作から守られるが、それでもホストVMMはプラットフォームの完全な制御を維持し、プラットフォーム上で作動するゲスト仮想マシンを管理することが可能になる。メモリ暗号化技術によって、ゲストVMのワークロードは物理的な攻撃から守られ、ホストVMMがVMの(暗号化された)メモリにアクセスすることが阻止される。クラウドサービスプロバイダのサーバに物理的にアクセスできるクラウドサービスプロバイダのソフトウェアも、管理者も、他のだれであっても、保護されたゲストVMにアクセスすることも、これを変更することもできない。本明細書で説明される技法を用いて提供される保護は、コンシューマが(構内にある)プライベートクラウドで同じワークロードを実行した場合と同じレベルの機密性及びセキュリティを効果的に提供する。
ここで図1を参照すると、典型的な仮想マシン環境100の構成要素を示すブロック図が示されている。クラウドサービスプロバイダのサーバにおいて提供される仮想マシン環境の典型的な実装例が示されている。サーバハードウェア110は、メモリ112とメモリ暗号化エンジン114とを含む。
仮想マシンモニタ(VMM)層120がサーバハードウェア110上で作動している。図示された典型的な仮想マシン環境100において、VMM層120は、VM1(130)、VM2(130)、及びVM3(130)などの仮想マシン(VM)をクラウドサービスプロバイダのサーバハードウェア110上で作成し実行するコンピュータソフトウェア又はファームウェアである。これらのVM、つまり、VM1(130)、VM2(130)、及びVM3(130)のそれぞれは、図1では独立したブロックとして示されており、異なるVMの全てが共通のVMM層120の制御下にあることを表している。VMM層120は、サーバハードウェア110などのサーバリソースへのアクセスを、VMMが制御するこれらのVMに提供する。
VMM層120は、VM制御構造(VMCS)124及び拡張ページテーブル(EPT)126などのデータ構造を用いて、VMの実行を制御する。VMCSはメモリ内のデータ構造であり、これはVMごとに1つ存在し、VMMによって管理される。異なるVM間の実行コンテキストが変わるたびに、VMCSは現在のVM用に復元され、VMの仮想プロセッサの状態を規定する。拡張ページテーブル(EPT)が、VMの仮想プロセッサのメモリを、ゲストによって用いられるゲスト物理アドレスからホストによって管理される物理アドレスにリマッピングするのに用いられ、ホストは、どのメモリリソース/位置がゲストに利用可能かを割り当てることが可能になる。
VMM層120のソフトウェア又はファームウェアは、クラウドサービスプロバイダによって提供され、各VMの信頼できるコンピュータ処理基盤(Trusted Computing Base:TCB)の一部である。今日のオペレーティングシステムは、TCBのサイズを減らそうと努力しており、これにより、TCBコードベースの包括的な検査が(手動又はコンピュータ支援によるソフトウェア監査又はプログラム確認によって)実現可能になる。
図1の通常の仮想マシン環境100において、クラウドサービスプロバイダによって提供されたVMM122は、これらのVM,つまりVM1(130)、VM2(130)、及びVM3(130)のそれぞれのTCBに存在する。VMM122をTCBに含めることで、この特定のVMを制御するVMM122をVM1(130)などの特定のVMに認識させない、測定させない、又は信頼させないようにする。クラウドサービスプロバイダは、VMであるVM1(130)の所有者の知らない間に、いつでもVMM122を変更できる。さらに、暗号的な分離はVM間に存在しない。VMMが危険に晒されている場合、エラーのあるVMは、危険に晒されているにもかかわらず第2のVMに信頼されているVMMを介して、第2のVMのプライベートデータにアクセスできる。
コンシューマのプロセス/VMを制御するVMMが信頼できるという保証をコンシューマが得るために、最も知られている技法がハードウェアを用いてクラウドの遠隔マシンで作動するソフトウェア/ファームウェア(この場合は、VMM122)を測定し、クラウドの遠隔マシンで作動しているソフトウェア/ファームウェアはコンシューマが期待するソフトウェア/ファームウェアのバージョンであるという証明をコンシューマに返す。パブリッククラウドサービスプロバイダのVMMがコンシューマのTCBに含まれていると、コンシューマは、パブリッククラウドサービスプロバイダによって行われた信頼性の証明を独立して評価することができず、コンシューマは、測定が行われた後に、VMMが危険に晒されていないままであることを知ることもできない。
ここで図2を参照すると、本発明の一実施形態によるクラウドサービス環境のブロック図が示されている。図2に示すように、コンシューマが仮想化サービスを含むサービスをパブリッククラウドサービスプロバイダに要求することを可能にするために、ネットワーク200が用いられ得る。ここに見られるように、ネットワーク200は、任意の種類の通信ネットワークに対応でき、インターネット220などの所与のネットワークを介して相互接続された多くの異なる種類のコンピュータ処理装置を含むことができる。
クラウドストレージ210が、様々なコンピュータ処理装置、記憶装置などを含むデータセンタの一部として提供され得る。1つの例として、クラウドストレージ210は、ディスクなどの複数のストレージコンポーネント、光学ベース又は半導体ベースのストレージを含む記憶装置であってよい。クラウドストレージ210は、例えば、仮想マシンをインスタンス化してコンシューマの要求に応じたサービスを提供する仮想マシンモニタ(VMM)アプリケーションを含む様々なアプリケーションのマスターコピーのレポジトリとして機能し得る。図2に示す実施形態において、VMMアプリケーションのマスターコピーがVMMイメージ212の形で格納される。VMMイメージ212は、仮想マシンモニタ(VMM)の形で仮想マシンプラットフォームを提供するように設計されたソフトウェアスタックを含むソフトウェアイメージである。
したがって、図2にさらに見られるように、同じ場所に、例えば、同じデータセンタの一部として、パブリッククラウドプロバイダサーバ215及び215などの1つ又は複数のパブリッククラウドサービスプロバイダサーバが、クラウドストレージ210に結合され得る。様々な実施形態において、パブリッククラウドサービスプロバイダサーバは、仮想化要求を含むコンシューマサービス要求に応えるのに用いられ得る。例えば、各パブリッククラウドサービスプロバイダサーバは、コンシューマに代わって、1つ又は複数の仮想マシンをホストしてよい。図2に示す例において、パブリッククラウドプロバイダサーバ215は、VM1(240)及びVM2(240)という2つの仮想マシンをホストする。同様に、パブリッククラウドプロバイダサーバ215は、VM1(240)及びVM2(240)という2つの仮想マシンをホストする。図示した実施形態において、パブリッククラウドプロバイダサーバ215及び215のそれぞれはまた、VMMイメージ212のそれぞれのVMMインスタンスをVMM222及びVMM222として実行する。
図2に示すように、様々なコンシューマデバイス、例えば、クラウドサービスコンシューマデバイス230及び230が存在し得る。そのようなクラウドサービスコンシューマデバイスは、所与のユーザのパーソナルデバイス、例えば、スマートフォン、タブレットコンピュータ、デスクトップコンピュータなどであってよい。あるいは、クラウドサービスコンシューマデバイスは、クラウドサービスを利用する組織のサーバであってもよい。さらに、クラウドサービスコンシューマデバイスは、ソフトウェアを介してエミュレートされても、仮想マシン(VM)内で実行されてもよい。換言すれば、コンシューマがクラウドプロバイダのハードウェアのエミュレータをコンシューマのデバイス上で実行し得るように、エミュレータ又はシミュレータが、クラウドプロバイダのハードウェアをソフトウェアでエミュレートすることができる。
クラウドサービスコンシューマデバイス230及び230のそれぞれは、それぞれのクラウドサービスコンシューマ231及び231並びにそれぞれのVMイメージ232及び232を提供する。クラウドサービスコンシューマ231及び231は、例えば、クラウドサービスを要求するのに用いられるクラウドサービスアプリケーションのクライアント側コンポーネントであってよい。クラウドサービスコンシューマ231及び231などのクラウドサービスコンシューマは、本明細書において「コンシューマ」として参照される。VMイメージ232および232は、それぞれのクラウドサービスコンシューマデバイス230及び230に結合されたストレージ(不図示)に格納されてよい。これらのVMイメージは、コンシューマによってクラウドサービスプロバイダに提供され、クラウドプロバイダのサーバ215で作動するVM1(240)などのセキュアなVMを作成するのに用いられる。
セキュアなVMが、本明細書で説明される技法に従って、クラウドサービスプロバイダのサーバに確立されている場合、コンシューマは次に、このVMをコンシューマの秘密鍵と共に用い、コンシューマに代わって追加のVMを作成してよい。こうして、1つのコンシューマVMがクラウドサービスプロバイダのクラウドにセキュアに確立され得ると、このVMは次に、追加のセキュアなVMを作成することを含む、図2のコンシューマデバイスの全てのオペレーションを実行できる。同様に、コンシューマは、セキュアなVMを複数のクラウドサービスプロバイダと確立することができ、これらのセキュアなVMは、セキュアな通信チャネルを介し、コンシューマの秘密鍵を用いてセキュアに情報を交換できる。
図3を参照すると、本開示に適合する環境300が提示されている。環境300は、ハードウェア層310と、ゲストワークロード層(すなわち、仮想マシンモニタ(VMM)層320)と、メモリ312とを含む。メモリ暗号化エンジン314がハードウェア310の一部として示されている。メモリ暗号化エンジン314はメモリ312に隣接して示されており、メモリ暗号化エンジン314がメモリ312の暗号化及び/又は復号に用いられることを例示している。メモリ暗号化エンジン314は、メモリオーナーシップテーブル(MOT)380にも隣接して示されており、メモリ暗号化エンジン314がMOT380の暗号化及び/又は復号に用いられることを示している。VMM層320内では、VMM322が仮想マシンを管理し、拡張ページテーブル(EPT)326を維持する。
メモリ暗号化エンジン314を含むハードウェア層310と、VMM層320とが、メモリオーナーシップテーブル(MOT)380を共有する。メモリオーナーシップテーブル380は、ゲストVMのゲストアドレスを実際のハードウェア物理アドレス(HPA)にマッピングするのに用いられる。1つの実施形態において、ゲストVMがMOT380を用いて、所与のゲスト物理アドレス用にホストVMMによって用いられている物理アドレス(本明細書では、「ワークロードマネージャ提供のハードウェア物理アドレス」と呼ばれる)がゲストVMのメモリマッピングに適合することを確認できる。
いくつかの実施形態において、暗号化されたゲストイメージ(例えば、メモリページ)の部分が特定の物理メモリアドレスに暗号的に結び付けられてよい。この結び付きによって、ゲスト/コンシューマの知らない間に、暗号化されたメモリイメージを代替のメモリ位置に単にコピー又は移すことはできないことが保証される。ゲストVMは、メモリオーナーシップテーブル380を用いて、暗号化されたメモリイメージにアクセスするのに用いられるゲスト物理アドレス(GPA)が正しいメモリコンテンツにマッピングされていることを確認できる。MOTはゲストのGPAをホストのハードウェア物理アドレス(HPA)に関連させることができるので、ゲストVMは、期待される/正しい暗号化されたメモリコンテンツをゲストアドレスが参照することを保証され得る。
ゲストワークロードのマッピングをコンシューマ提供のキーで暗号化することで、マッピングのそれぞれの元のゲストアドレスは、マッピングのそれぞれの元のハードウェア物理アドレスに結び付けられる。さらに、ゲストワークロードによって書き込まれたコンテンツをコンシューマ提供のキーで暗号化することで、マッピングのそれぞれの元のゲストアドレスは、マッピングのそれぞれの元のハードウェア物理アドレスの暗号化されたコンテンツに結び付けられる。
メモリ312は2つの部分を含むものとして例示されている。1つは、キードメイン350の外側のメモリを表す暗号化されていない(又は、別のキードメインに属しているので、異なるキーを用いて暗号化された可能性がある)メモリ部分312Uであり、もう1つは、キードメイン350内のメモリを表す暗号化されたメモリ部分312Eである。仮想マシン330及び330がキードメイン350内に示されている。仮想マシン330及び330は、対応する仮想マシン制御構造(VMCS)324及び324を有する。なお、VMCS324及び324は両方ともキードメイン350内に存在するので、キードメイン350用のキードメインキーで暗号化されている。
各コンシューマは、暗号化されたメモリに独自のキーを提供し、(KD1として示される)キードメインID(KD_ID)を割り当てられる。コンシューマのキードメインキーで暗号化された、コンシューマの割り振られたメモリは、VMCS構造を含む複数のVMを含んでよい。VMMは、コンシューマのメモリが暗号化されているので、コンシューマのメモリにアクセスできないが、VMMは、暗号化されたメモリ領域内のVMCSを用いてVMを起動することができる。VMMは実行するコンシューマのメモリを今まで通りリマッピングできるので、メモリオーナーシップテーブルはまた、ホストVMMによって用いられるメモリマッピング(「ワークロードマネージャ提供のホスト物理アドレス」)がコンシューマのゲストVMの期待ハードウェア物理アドレスと一致し、コンシューマのキーで暗号化されたメモリイメージコンテンツに対応することを確認するのに用いられる。
1つの実施形態において、tweak可能なブロック暗号と呼ばれる暗号化技法が用いられる。tweak可能なブロック暗号は、暗号化される平文又は暗号文の入力と共に、tweakと呼ばれる第2の入力を受け取る。tweakは、キーと共に、暗号によって計算された順列を選択する。コンシューマイメージを暗号化する際に、コンシューマイメージが読み込まれることになるサーバのハードウェア物理アドレスがtweakとして用いられ、得られる暗号化されたコンシューマイメージをメモリ位置依存にする。暗号化されたコンシューマイメージは、メモリ位置依存であると説明される。これは、暗号化されたコンシューマイメージが正確に復号され得る前に、暗号化されたコンシューマイメージはクラウドサービスプロバイダのサーバのVMM指定の正しいハードウェア物理アドレスに読み込まれる必要があるからである。
1つの実施形態において、コンシューマイメージは、暗号文窃盗(ciphertext stealing:XTS)を伴うXEXベースのtweakされたコードブックモードを用いて暗号化される。コンシューマは、ページアドレスtweak及びキードメインキーを用いて、メモリ位置依存XTSモードでコンシューマイメージを暗号化する。コンシューマイメージが読み込まれる場所の正しい物理アドレスは、暗号化された各ブロックのXTSのtweakに含まれる。LRW(Liskov、Rivest、及びWagner)方式又はカウンタモードの暗号などの、他のtweak可能な暗号も他の実施形態において用いられてよい。
コンシューマイメージはメモリ位置依存の「tweakされた」暗号を用いて暗号化されるので、敵対者がコンシューマイメージの一部をメモリ内で移動させることはできない。ページテーブルは、コンシューマイメージのプログラム及びデータをクラウドサービスプロバイダのサーバの正しい物理メモリアドレスにマッピングするので、コンシューマイメージが正しい物理メモリ位置に暗号的に結び付けられていることを考えれば、悪意をもってプログラムの挙動を変更することはできない。換言すれば、コンシューマイメージがクラウドサービスプロバイダのサーバの正しい物理メモリ位置に読み込まれていない場合、コンシューマイメージを正確に復号することはできない。さらに、インテグリティチェック値(例えば、メモリコンテンツのSHA2/3セキュアハッシュアルゴリズムに基づくメッセージ認証コード(MAC)、又はハッシュMAC(HMAC))が、コンシューマイメージコンテンツ、及び/又はコンシューマイメージが読み込まれているメモリの位置を変更するあらゆる試みを検出するのに用いられ得る。
コンシューマのイメージは物理アドレス位置に暗号的に結び付けられてよいので、メモリオーナーシップテーブル(MOT)は、イメージが暗号的に結び付けられた期待ハードウェア物理アドレス(HPA)にゲスト物理アドレス(GPA)をマッピングする。このMOTマッピングによって、ゲストVMは、VMが特定のGPAのメモリにアクセスする場合、ゲストVMが同じゲスト物理アドレスの期待メモリイメージコンテンツにアクセスすることを保証することが可能になる。
図4を参照すると、ゲストワークロード/仮想マシン(VM)にメモリの保護領域を提供するデータフローが、コンシューマエージェント/VMと、ホスト管理ソフトウェア/仮想マシンモニタ(VMM)と、ハードウェアとの間に示されている。コンシューマ/エージェント430が、様々な実施形態において、コンシューマによって所有される遠隔マシン、コンシューマに代わって作動するエージェント、コンシューマのゲストVM、コンシューマに代わってコンシューマイメージを作成する信頼できる第三者、又は信頼できる埋め込みシステム(例えば、Intel(登録商標)が提供するConverged Security and Manageability Engine(CSME))を表してよい。動作4.1において、コンシューマエージェント/VM430は、クラウドサービスプロバイダにサービスを要求する。これによって、コンシューマのワークロードを管理する仮想マシンのインスタンス化がもたらされる。動作4.2.1において、VMM422がコンシューマエージェント/VM430の暗号化されていない(共有)メモリ412Uから空間(すなわちページ)412VMを割り振る。動作4.2.2において、VMM422は、コンシューマエージェント/VMのメモリオーナーシップテーブル480にエントリを割り振る。メモリオーナーシップテーブル480は、コンシューマエージェント/VM430のゲスト物理アドレスとコンシューマエージェント/VMの期待ハードウェア物理アドレスとの間のマッピングを確認するのに用いられることになる。コンシューマエージェント/VM430の期待ハードウェア物理アドレスの決定が、以下でさらに詳細に説明される。
動作4.3において、VMM422は、動作4.2.1でコンシューマエージェント/VM430に割り振られたメモリ位置412VMのハードウェア物理アドレス(HPA)をコンシューマエージェント/VM430に通知する。これらのハードウェア物理アドレスは、メモリ内のページ(コンシューマイメージが読み込まれるページなど)のハードウェア物理アドレス、ページテーブルのハードウェア物理アドレス、割り込み記述子テーブルレジスタ情報、及びコンシューマの要求に応えているサーバの他のハードウェア物理アドレスを含んでよい。VMのメモリイメージのページを構築する(XTS暗号化を行う)のに用いられる物理アドレスに加えて、コンシューマは、VMCS構造及びMOTエントリをポピュレートする物理アドレスを用いることになる。前述したように、これらのハードウェア物理アドレスは、特定の種類のデータ(例えば、ページテーブル)がコンシューマエージェント/VMのサーバおいてVMM指定の正しいハードウェア物理アドレスに読み込まれて適切に実行される必要があるので、本明細書ではメモリ位置依存アドレス情報と呼ばれる。
動作4.4において、コンシューマエージェント/VM430は、コンシューマ生成の独自のキードメインキーを用いて、暗号化されたコンシューマイメージを作成する。1つの実施形態において、コンシューマエージェント/VMは、クラウドサービスプロバイダのVMM422によって提供されるハードウェア物理アドレスを用いて、コンシューマイメージを暗号化する。
動作4.5において、コンシューマは、コンシューマのゲストVMを適切に起動するために、サーバ/VMMの仕様書に従って構成されたVMCS構造を、暗号化されたコンシューマイメージに含めてよい。例えば、VMCSは、仮想マシンの仮想プロセッサの状態を規定する。上述したように、コンシューマのVMイメージが読み込まれるページの位置は、クラウドサービスプロバイダによってメモリ位置依存アドレス情報として提供されたので、コンシューマのイメージをサーバ上のVMM指定の正しいハードウェア物理アドレスに読み込むことができ、コンシューマエージェント/VMを適切に実行することが可能になる。VMCS構造は、すでに暗号化されているコンシューマイメージを更新するのに用いられてよい。
動作4.6において、メモリオーナーシップテーブルエントリはまた、コンシューマイメージと関連付けられた期待ハードウェア物理アドレス用に計算される。これらのメモリオーナーシップテーブルエントリは、特定のVMと関連付けられ、VMのページテーブルの各ゲスト物理アドレス(GPA)からクラウドサービスプロバイダのサーバにあるVMの期待ハードウェア物理アドレス(期待HPA)へのマッピングを含む。所与のゲスト物理アドレス(GPA)にマッピングされた仮想/リニアアドレスのデータを取り出すようVMが要求した場合、データが取り出されることになる実際のVMM指定の(ワークロードマネージャ提供の)ハードウェア物理アドレス(HPA)が確認され得る。この確認は、GPAに対応する期待ハードウェア物理アドレス(HPA)を、コード/データが取り出されることになる実際のワークロードマネージャ提供のハードウェア物理アドレス(HPA)と比較することによって行われてよい。期待HPAが所与のGPAの実際のHPAと一致しない場合、要求VMは、VMMが危険に晒されているとみなし、読み出しコマンド又は書き込みコマンドをアボートし、処理を終了してよい。さらに、キードメインキーは破棄されてよい。期待HPAが所与のGPAの実際のHPAと一致しない場合、要求VMは、例外/デフォルトハンドラを実行し、メモリオーナーシップテーブルエントリを要求VMのキードメインキーで暗号化してよい。
動作4.7において、コンシューマは、コンシューマイメージを暗号化するのに用いられる対称鍵(すなわち、キードメインキー)をクラウドサービスプロバイダサーバの公開鍵で暗号化することによって、クラウドサービスプロバイダのサーバとメモリ暗号化キーを確立する。サーバハードウェアは次に、クラウドサービスプロバイダ、クラウドサービスプロバイダのVMM、及び他の可能性のある敵対者に対して、キードメインキーを開示しないようにする。
動作4.8において、コンシューマエージェント/VM430は、暗号化されたキードメインキー、VMCS及び関連構造を含む暗号化されたコンシューマイメージ、並びに暗号化されたメモリオーナーシップテーブルエントリをVM422に提供する。
動作4.9において、VMM422は、キードメイン作成(CreateKD)コマンドをハードウェア410の中のプロセッサ(不図示)に発行することによって、コンシューマエージェント/VMのキードメインを作成する。
動作4.10において、VMM422は暗号化されたコンシューマイメージをクラウドサービスプロバイダのサーバの正しいメモリ位置に(動作4.2.1でコンシューマエージェント/VM430に割り振られ、動作4.3でコンシューマエージェント/VM430に伝達されたハードウェア物理アドレスに)読み込む。
動作4.11において、VM422は、コンシューマエージェント/VM430によって提供された暗号化されたメモリオーナーシップテーブルエントリを、動作4.2.2でコンシューマエージェント/VM430に割り振られたメモリオーナーシップテーブル480のエントリにコピーする。結果として、メモリオーナーシップテーブル480は、コンシューマエージェント/VM430によって用いられるゲスト物理アドレスからクラウドサービスプロバイダのサーバメモリ412Uの期待ハードウェア物理アドレスへのマッピングを含む。
クラウドサービスプロバイダは、新規提供の暗号化されたキードメインキーのキードメイン識別子KD_IDを選択又は生成することができる。Create_KD命令を実行すると、キードメインを作成するハードウェア410内のCPUは、以前に用いられたコンシューマエージェント/VM430の全てのキードメイン識別子をメモリからフラッシュする。CPUは、以前に用いられた全てのキードメインと関連付けられているキャッシュもフラッシュし、新たに生成されたキードメイン識別子と関連付けられるキードメインキーを用いてメモリ暗号化エンジンをプログラムする。
図5を参照すると、クラウドサービスプロバイダが代替方法としてセキュアなエンクレーブを用い、コンシューマのワークロードを実行するためのメモリの保護領域を提供し得る。図5は、図4の動作4.2.1に関連して上述したように、コンシューマエージェント/VM530の空間512VMが暗号化されていないメモリ512Uに割り振られている時点を示す。さらに、VMM522も、図4の動作4.2.2に関連して上述したように、メモリオーナーシップテーブル580にエントリを割り振っている。
図5は、クラウドサービスプロバイダのメモリの保護領域に、コンシューマのゲストワークロードを確立するための一実施形態を示す。1つの実施形態において、コンシューマは、クラウドサービスプロバイダのサーバで作動するエンクレーブに暗号化されたイメージを提供する。コンシューマのイメージは、クラウドサービスプロバイダがイメージを読み出すことができないように暗号化されている。1つの実施形態において、コンシューマのイメージは、エンクレーブの内部で終了するTLS/SSL/IPSecなどのセキュアネットワークプロトコルを介して、コンシューマの暗号化されていないイメージを送信することによって暗号化されてよい。エンクレーブは、ローカルサーバのイメージを再暗号化し、ローカルに実行される暗号化されたメモリイメージを作成する。
メモリの保護領域をコンシューマワークロードに提供するために、動作5.1において、VMM522はハードウェア510内のプロセッサ514の信頼できる実行環境サポート516の機能を用いて、共有された暗号化されていないメモリ512Uにセキュアなエンクレーブ504を確立する。エンクレーブ504内で、実行コードが測定され、確認され、及び/又は別な方法で本物であると判定されてよい。さらに、エンクレーブ504に含まれるコード及びデータが暗号化されるか、又はエンクレーブ504の外側で実行するコードによってアクセスされないように別な方法で保護されてよい。例えば、セキュアなエンクレーブ504に含まれるコード及びデータは、実行されている間、又はプロセッサ514の特定の保護キャッシュメモリに格納されている間、プロセッサ514のハードウェア保護メカニズムによって保護されてよい。セキュアなエンクレーブ504に含まれるコード及びデータは、共有キャッシュ又はメインメモリに格納された場合も暗号化されてよい。信頼できる実行環境サポート516は、プロセッサ514がメモリ内に1つ又は複数のセキュアなエンクレーブを確立することを可能にする一連のプロセッサ命令拡張として具現化されてよい。例えば、信頼できる実行環境サポート516は、Intel(登録商標)Software Guard Extensions(SGX)技術として具現化されてよい。あるいは、信頼できる埋め込み実行環境(例えば、Intel(登録商標)Converged Security and Manageability Engine(CSME))又はセキュアモードのオペレーションを提供する他の環境(例えば、システム管理モード(SMM)/Intel(登録商標)Trusted Execution Technology(TXT))が、同様のオペレーションを実行して、初期の暗号化メモリイメージを提供してよい。
動作5.2において、コンシューマエージェント/VM530は、エンクレーブ504から証明書を取得し、この証明書を確認する。エンクレーブ504を認証した後に、コンシューマエージェント/VM530は、エンクレーブ504へのセキュアな通信チャネルを確立し、セキュアな通信チャネルを介してコンシューマイメージ502をエンクレーブ504に提供する。
動作5.3において、エンクレーブ504は、前もってVMM522からコンシューマエージェント/VM530に割り振られたメモリ位置512VMのハードウェア物理アドレス(HPA)を取得する。メモリ位置512VMのこれらのハードウェア物理アドレスは、コンシューマイメージ502の暗号化されたコードと共に読み込まれることになる。
動作5.4において、エンクレーブ504は、コンシューマエージェント/VM530のキードメインを構成するメモリ位置/ハードウェア物理アドレスを暗号化するのに用いられることになるローカルのキードメインキーをプログラムする。キードメインキーは、キードメインキーがエンクレーブ504と同じサーバのメモリ位置を暗号化するのに用いられるという意味で、エンクレーブ504に対してローカルである。
動作5.5において、エンクレーブ504はキードメイン作成(Create_KD)命令を、プロセッサ514などの、ハードウェア510内のプロセッサに発行する。
動作5.6において、エンクレーブ504はコンシューマエージェント/VM530のVMCSを作成する。VMCSは、動作5.3でVMM522によって提供された特定のハードウェア物理アドレス/メモリ位置に格納されることになる。
動作5.7において、エンクレーブ504は、キードメインキーを用いてコンシューマイメージ502を暗号化し、暗号化されたコンシューマイメージ502Eを生成する。図4の動作4.4に関連して上述したように、tweak可能なブロック暗号が用いられる。コンシューマイメージを暗号化する際に、コンシューマイメージが読み込まれることになるサーバのハードウェア物理アドレスがtweakとして用いられ、得られる暗号化されたコンシューマイメージをメモリ位置依存にする。暗号化されたコンシューマイメージは、メモリ位置依存であると説明される。これは、暗号化されたコンシューマイメージが正確に復号され得る前に、暗号化されたコンシューマイメージはクラウドサービスプロバイダのサーバのVMM指定の正しいハードウェア物理アドレスに読み込まれる必要があるからである。
動作5.8において、エンクレーブ504は、暗号化されたコンシューマイメージ502Eのメモリオーナーシップテーブルエントリを、キードメインキーを用いて計算する。これらのメモリオーナーシップテーブルエントリによって、ゲストVMのページテーブルから、暗号化されたコンシューマイメージが読み込まれるとエンクレーブ504が期待する期待ハードウェア物理アドレスに、ゲスト物理アドレスがマッピングされる。これらの期待ハードウェア物理アドレスは、動作5.3でVMM522によって提供されたハードウェア物理アドレスに基づいている。
動作5.9において、エンクレーブ504は、暗号化されたコンシューマイメージ、暗号化されたメモリオーナーシップテーブルエントリ、及び暗号化されたキードメインキーをVMM522に提供する。あるいは、動作5.9において、エンクレーブ504は、暗号化されたコンシューマイメージをVMM522に提供するのではなく、暗号化されたコンシューマイメージをVMM522によって指定された正しいメモリ位置に直接書き込んでよい。
動作5.10において、VMM522は暗号化されたコンシューマイメージ502Eを、動作5.3でエンクレーブ504によってVMM522から取得されたメモリ位置に読み込む。
動作5.11において、VMM522は、暗号化されたコンシューマイメージのメモリオーナーシップテーブルエントリをメモリオーナーシップテーブル580に書き込む。
図6Aを参照すると、ゲストワークロード/ゲストVMによって提供された元のゲストアドレスから、ワークロードマネージャ提供の元のハードウェア物理アドレスへのマッピングのためにメモリオーナーシップテーブル(MOT)エントリを確立するデータフローが示されている。元のゲストアドレスは、ゲストワークロード630の性質及びワークロードマネージャ622の性質に応じて、ゲスト仮想アドレスでもゲスト物理アドレスでもよい。動作6.1において、ゲストワークロード630は元のゲストアドレスをワークロードマネージャ622に提供する、動作6.2において、信頼できないワークロードマネージャ622はワークロードマネージャ提供の元のハードウェア物理アドレスを元のゲストアドレスに割り当てる。動作6.3において、信頼できないワークロードマネージャ622は、ワークロードマネージャ提供の元のハードウェア物理アドレスを元のゲストアドレスと共にページテーブル604に格納する。例えば、信頼できないワークロードマネージャ622がVMMである場合、ページテーブル604は第2レベルのアドレス変換を提供する拡張ページテーブルであってよい。
動作6.4において、信頼できないワークロードマネージャ622は、ゲストワークロード/ゲストVM630から受け取った元のゲストアドレスをプロセッサ614に提供する。動作6.5において、プロセッサ614は、ページテーブル604内の元のゲストアドレスを検索し、ワークロードマネージャ提供の元のハードウェア物理アドレスを取得する。動作6.6において、プロセッサ614は、元のゲストアドレスの、ワークロードマネージャ提供の元のハードウェア物理アドレスを返す。動作6.7.1において、ゲストワークロード630は、ワークロードマネージャ提供の元のハードウェア物理アドレスをメモリオーナーシップテーブル680内の索引として用い、元のゲストアドレスに関連したエントリを格納する。ゲストワークロード630は、動作6.7.2でワークロードマネージャ提供の元のハードウェア物理アドレスを期待HPAフィールド682に書き込み、動作6.7.3で元のゲストアドレスを期待ゲストアドレス684に書き込むことによって、MOTテーブル680にエントリを作成する。ゲストワークロードは、VMMに知られていないゲストワークロードの秘密のキードメインキー(メモリ暗号化キー)を用いてエントリを暗号化してもよい。MOTエントリをゲストワークロードのキードメインキーで暗号化することによって、ゲストワークロード630は、MOTエントリが危険に晒されたホストワークロードマネージャ/VMMによって偽造されてしまうことを防ぐ。
ゲストワークロード630によって割り当てられた元のゲストアドレスの値を、信頼できないワークロードマネージャ622によって提供されたワークロードマネージャ提供の元のハードウェア物理アドレスと共にエントリに格納することによって、メモリオーナーシップテーブル680は、後で参照できるように、最初に割り当てられた値を保持する。具体的には、最初に割り当てられた値は、ワークロードマネージャ提供の元のハードウェア物理アドレスによって索引付けされたエントリの期待HPA及び期待ゲストアドレスの値になる。HPA及びゲストアドレスの期待値は、動作6.6で受け取った値と比較され、動作6.6で受け取った値を確認するのに用いられ得る。
図6Bを参照すると、要求されたゲストアドレスのメモリオーナーシップテーブル680内のエントリを取り出すデータフローが示されている。動作6.8において、ゲストワークロード630は、要求されたゲストアドレスを信頼できないワークロードマネージャ622に提供する。動作6.9において、信頼できないワークロードマネージャ622は、要求されたゲストアドレスを、ワークロードマネージャ提供のハードウェア物理アドレスに変換するためにプロセッサ614に渡す。動作6.10において、ページテーブル604を用いて、プロセッサ614は、要求されたゲストアドレスをワークロードマネージャ提供の変換後のハードウェア物理アドレスに変換する。動作6.11において、プロセッサ614は、ワークロードマネージャ提供の変換後のハードウェア物理アドレスに対応するエントリを求めてメモリオーナーシップテーブル680を検索する。メモリオーナーシップテーブル680において、ワークロードマネージャ提供の変換後のハードウェア物理アドレスに対応するエントリが探し出された場合、実行ゲストワークロード630用のキードメインキー/メモリ暗号化キーが、探し出されたMOTエントリを復号する試みに用いられる。
動作6.12において、プロセッサ614は、ワークロードマネージャ提供の変換後のハードウェア物理アドレスがゲストワークロード630によって期待される値を有することを確認する。1つの実施形態において、ワークロードマネージャ提供の変換後のハードウェア物理アドレスは、以下の条件を満たすかどうかを確認される。その条件とは、(i)MOTエントリが、実行中のゲストワークロードのキードメインキー(メモリ暗号化キー)を用いて正確に復号されること、(ii)期待ハードウェア物理アドレス682が、MOT680内の索引として用いられるワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致すること、及び(iii)要求されたゲストアドレスが同じ索引の期待ゲストアドレス684と一致することである。動作6.13において、プロセッサ614は、確認されたワークロードマネージャ提供の変換後のハードウェア物理アドレスを、要求されたゲストアドレスのハードウェア物理アドレスとしてゲストワークロード630に提供する。プロセッサ614がワークロードマネージャ提供の変換後のハードウェア物理アドレスを確認できない場合、プロセッサ614は次に、割り込みハンドラ又はエラーハンドラを呼び出してゲストワークロード630を終了させるか、又は他のエラー処理プロセスを実行してもよい。
ここで図7を参照すると、使用するときに、パブリッククラウドプロバイダが、パブリッククラウドプロバイダサーバ715にインスタンス化されたゲストワークロードを保護するための環境700を確立し得る。実例となる環境700は、仮想マシンモニタ(VMM)722と、1つ又は複数の仮想マシン(VM)730と、メモリマネージャ760と、メモリページフォールト検出器770とを含む。この環境の構成要素の一部は、ハードウェア、ファームウェア、ソフトウェア、又はこれらの組み合わせとして具現化されてよい。このように、いくつかの実施形態において、環境700の構成要素のうち1つ又は複数は、回路又は電気デバイスの集まり(例えば、メモリマネージャ回路760、メモリページフォールト検出器回路770など)として具現化されてよい。そのような実施形態において、メモリマネージャ回路760及び/又はメモリページフォールト検出器回路770のうち1つ又は複数は、計算エンジン、プロセッサ、I/Oサブシステム、通信サブシステム、及び/又はパブリッククラウドプロバイダサーバ715の他の構成要素のうち1つ又は複数の一部を形成してよいことを理解されたい。さらに、いくつかの実施形態において、環境700の実例となる構成要素のうち1つ又は複数は、別の構成要素の一部を形成してもよく、及び/又は実例となる構成要素のうち1つ又は複数は、互いから独立していてもよい。さらに、いくつかの実施形態において、環境700の構成要素のうち1つ又は複数は、仮想化されたハードウェアコンポーネント又はエミュレートされたアーキテクチャとして具現化されてよく、これらは、パブリッククラウドプロバイダサーバ715の計算エンジン又は他の構成要素によって確立され維持されてよい。
仮想マシンモニタ(VMM)722は、仮想マシン730iをパブリッククラウドプロバイダサーバ715にインスタンス化するように構成される。VMM722は、ハードウェア物理アドレスを各仮想マシン730に割り振る。VMM722は、(VMによって割り当てられた)ゲスト物理アドレスを取得する拡張ページテーブル(EPT)を作成し、これらのゲスト物理アドレスを、ハードウェアによって用いられる実際の物理アドレス(HPA)にマッピングする。1つの実施形態において、ハードウェア物理アドレスがメモリページ(固定サイズのメモリチャンク)として割り当てられる。
1つの実施形態において、各仮想マシン(VM)730は、仮想マシンがインスタンス化されるコンシューマによって提供されたコンシューマイメージを実行するように構成される。各仮想マシン730は、VMページテーブル702を確立し、仮想マシンの仮想/リニアアドレス(VA)と、仮想マシンモニタ722によってVM730に割り振られたハードウェア物理アドレスに対応するゲスト物理アドレス(GPA)との間の変換マッピングを格納する。そうするために、仮想マシン704はVA→GPAのマッピングを生成し、これを用いて仮想/リニアアドレスをゲスト物理アドレスに変換してよい。VMM722は、拡張ページテーブル(EPT)を用いて、GPAをハードウェア物理アドレス(HPA)にマッピングしてよい。
1つの実施形態において、割り当てられたゲスト物理アドレス範囲を有するVM730を追跡するために、VMM722はさらに、各VM730と関連付けられた仮想マシン識別子(VM_ID)を生成し、VM_ID→GPA→HPAのエントリをVMMページテーブル704に含めてよい。VM_ID識別子は、パブリッククラウドプロバイダサーバ715にインスタンス化された各仮想マシン730を一意に識別する。アドレス空間識別子又はキードメイン識別子などの、仮想マシン730を識別する他の手段も用いられてよい。
上述したように、場合によっては、仮想マシンモニタ722は危険に晒されることがあり、VMのゲスト物理アドレスからホスト物理アドレスへのマッピングを、悪意をもって変更しようとすることがある。パブリッククラウドプロバイダサーバ715が悪意をもって危険に晒されないことを保証するために、VM730は、メモリオーナーシップテーブル706に保存されるエントリを提供してよい。メモリオーナーシップテーブルエントリ706および706は、VM730iのキードメインキーで暗号化された、GPA→期待HPAの元のマッピングを保持する。したがって、メモリオーナーシップテーブル706は、キードメインキー→GPA→期待HPAのマッピングエントリを指定する暗号化されたエントリを含む。VM_ID又はKD_IDは、MOTエントリを復号するのに用いられるキードメインキーを選択するのに用いられる。
メモリマネージャ760は、仮想マシン730からのメモリ要求を管理するとともに、仮想マシン730の仮想メモリにセキュリティを提供するように構成される。使用するときに、メモリマネージャ760は、仮想/リニアアドレスを含むメモリアクセス要求を仮想マシン730から受け取るように構成される。メモリアクセス要求に応答して、メモリマネージャ760は、要求仮想マシン730と関連付けられたVMページテーブル702と、仮想マシンモニタ722と関連付けられたVMMページテーブル(拡張ページテーブル(EPT)とも呼ばれる)704とを用いて、パブリッククラウドプロバイダサーバ715の変換後のハードウェア物理アドレスへの仮想/リニアアドレスの変換を行う。
仮想マシン730の仮想メモリにセキュリティを提供するために、メモリマネージャ760は、変換後のハードウェア物理アドレスへのゲストアドレスの変換を確認するように構成されてよい。1つの実施形態において、この確認は、所与のゲスト物理アドレスの変換後のハードウェア物理アドレスと、メモリオーナーシップテーブル706に格納された、その所与のゲスト物理アドレス(GPA)の期待ホスト物理アドレスとの比較に基づいている。
メモリページフォールト検出器770は、メモリページフォールトを検出するように構成され、メモリページフォールトは、仮想マシン730又は仮想マシンモニタ722と関連付けられたページテーブルを用いたアドレス変換の間に起こることがある。例えば、メモリページフォールト検出器770は、変換後の物理アドレス(例えば、変換後のゲスト物理アドレス及び/又は変換後のハードウェア物理アドレス)が対応するページテーブルに存在しない場合に、メモリページフォールトを検出し得る。例えば、メモリマネージャ770が仮想マシン730の仮想/リニアアドレスを変換後のゲスト物理アドレスに変換する場合、メモリページフォールト検出器770は、変換後のゲスト物理アドレスが仮想マシン730と関連付けられたVMページテーブル702に存在するかどうかを判定する。変換後のゲスト物理アドレスがVMページテーブル702に存在しない場合、メモリページフォールト検出器770はメモリページフォールトを生成する。さらに、メモリマネージャ760が変換後のゲスト物理アドレスを変換後のハードウェア物理アドレスに変換する場合、メモリページフォールト検出器770は、変換後のハードウェア物理アドレスが仮想マシンモニタ722と関連付けられたVMMページテーブル704に存在するかどうかを判定する。変換後のハードウェア物理アドレスがVMMページテーブル704に存在しない場合、メモリページフォールト検出器770はメモリページフォールト又はVMExitを生成し、ゲストVMを終了する。いくつかの実施形態において、メモリページフォールト検出器770は、パブリッククラウドプロバイダサーバ715が危険に晒されていることをユーザに警告してよく、又は、VMMがVMを実行し続けることができないように、キードメインキーを破棄してよい。
図8を参照すると、フローチャートが、本発明の1つの実施形態に従ってメモリオーナーシップテーブルを確立するために、クラウドサービスプロバイダサーバによって行われ得る方法800を例示する。「仮想マシンモニタ(VMM)を初期化する」というブロック810において、仮想マシンモニタの形をしたホストワークロードマネージャが、クラウドサービスプロバイダサーバで初期化される。上述したように、ホストワークロードマネージャは、非仮想化環境のオペレーティングシステムに対応してよい。本明細書において、ホストワークロードマネージャとしてのVMMの説明は、非仮想化環境のオペレーティングシステム又は他のワークロードマネージャに等しく適用される。
図8のVMMは、ゲストワークロードをゲスト仮想マシン(VM)の形でインスタンス化し、クラウドサービスを要求コンシューマに提供してよい。「新たなVMをインスタンス化するか?」という判断ポイント814において、新たなゲストワークロード/ゲストVMをインスタンス化するかどうかという判定が、ホストワークロードマネージャ/VMMによって行われる。例えば、クラウドサービスの新たな要求をコンシューマから受け取った場合、新たなゲストワークロード/ゲストVMがインスタンス化されてよい。「新たなVMをインスタンス化するか?」という判断ポイント814において、新たなVMがインスタンス化されない場合、制御が「新たなVMをインスタンス化するか?」という判断ポイント814へ戻り、VMMは、新たなゲストワークロード/ゲストVMがインスタンス化される必要性を待ち続ける。「新たなVMをインスタンス化するか?」という判断ポイント814において、新たなゲストワークロード/ゲストVMがインスタンス化される場合、制御は「VMMはハードウェア物理アドレス(HPA)(ページ)を新たなVMに割り振る」というブロック816に進む。
「VMMはハードウェア物理アドレス(HPA)(ページ)を新たなVMに割り振る」というブロック816において、ホストワークロードマネージャ/VMMは、図4、図5、及び図6Aに関連して上述したように、ゲストワークロード/ゲストVMが用いるためにハードウェア物理アドレスを割り振る。VMMは、仮想マシン識別子(VM_ID)もゲストワークロード/ゲストVMに割り当ててよい。
「VMMはハードウェア物理アドレス(HPA)(ページ)を新たなVMに割り振る」というブロック816から、制御は次に「VMMは新たなVMを起動し、割り振られたHPA(ページ)の情報を提供する」というブロック822に進む。ここで、ホストワークロードマネージャ/VMMは、新たなゲストワークロード/ゲストVMを起動し、割り振られたHPA(ページ)の情報を新たなゲストワークロード/ゲストVMに提供する。例えば、ホストワークロードマネージャ/VMMは、メモリ位置依存アドレス情報をゲストワークロード/ゲストVMに提供してよい。このメモリ位置依存アドレス情報は、メモリ内のページ(コンシューマイメージが読み込まれるページなど)のハードウェア物理アドレス、割り込み記述子テーブルレジスタ情報、及びコンシューマの要求に応えているサーバの他のハードウェア物理アドレスを含んでよい。これらのハードウェア物理アドレスは、特定の種類のデータ(例えば、ページテーブル)がコンシューマエージェント/VMのサーバにおいてVMM指定の正しいハードウェア物理アドレスに読み込まれて適切に実行される必要があるので、本明細書ではメモリ位置依存アドレス情報と呼ばれる。VMMは、仮想マシン識別子VM_IDもゲストワークロード/ゲストVMに提供してよい。制御は、「VMMは新たなVMを起動し、割り振られたHPA(ページ)の情報を提供する」というブロック822から、「新たなVMはVMCSを初期化し、期待HPAを決定する」というブロック824に進む。
「新たなVMはVMCSを初期化し、期待HPAを決定する」というブロック824において、新たなゲストワークロード/ゲストVMは、ゲストワークロードがどのように実行されるかを決定する制御構造を初期化する。例えば、ゲストVMの場合、仮想マシン制御構造(VMCS)は、ゲストワークロード/ゲストVMの実行中に用いられるハードウェア物理アドレスを指定するように初期化される。これらのハードウェア物理アドレスは、メモリ内のページ(コンシューマイメージが読み込まれるページなど)のハードウェア物理アドレスと、ゲストVMのページテーブルのハードウェア物理アドレスとを含んでよい。初期化されたVMCS内のハードウェア物理アドレスから、ゲストVMは、後の実行サイクル中にVMCSに含まれるべき期待ハードウェア物理アドレスの値も決定できる。例えば、VMCSは拡張ページテーブルルート(EPTP又は拡張ページテーブルポインタ)の位置などの、複数のホスト物理アドレスを含む。VMCSは、MSR終了テーブル、VM情報テーブル、ページ変更ログなどの、ページテーブルを通じて変換されないデータ構造のハードウェア物理アドレスも含んでよい。これらのVMCSアドレスはページテーブルを通じて変換されないので、これらのVMCSアドレスは、正しいハードウェア物理メモリアドレスで構成される。いくつかの実施形態は、セキュリティを危険に晒すことも、VMの挙動を変更することもない、VMWriteオペレーションを選択されたフィールドに対してVMMが実行することを選択的に可能にすることにより、VMMがVMCSの選択されたフィールド(EPTP又はホスト状態領域など)を変更することを可能にし得る。「新たなVMはVMCSを初期化し、期待HPAを決定する」というブロック824から、制御は「新たなVMはVA→GPAのマッピングを用いてVMページテーブルを設定する」というブロック826に進む。
「新たなVMはVA→GPAのマッピングを用いてVMページテーブルを設定する」というブロック826において、新たに確立されたゲストワークロード/VMは、仮想アドレス(VA)からゲスト物理アドレス(GPA)へのマッピングを用いてVMページテーブルを設定する。ゲスト物理アドレス(GPA)は、VMMによって拡張ページテーブル(EPT)を用いてホスト物理アドレス(HPA)にマッピングされる。「新たなVMはVA→GPAのマッピングを用いてVMページテーブルを設定する」というブロック826において、ゲストワークロード/ゲストVMは、ゲストVMによって選択されたゲスト物理アドレス(GPA)に仮想/リニアアドレスを割り当てる。ホストVMMは、EPTを用いて、ゲストのGPAをホストのHPAに変換する。「新たなVMはVA→GPAのマッピングを用いてVMページテーブルを設定する」というブロック826から、制御は次に「新たなVMはMOTエントリをGPA→期待HPAとして保存する」というブロック830に進む。
「新たなVMはMOTエントリをGPA→期待HPAとして保存する」というブロック830において、新たなVMは、GPAと期待HPAとの間のマッピングをメモリオーナーシップテーブルエントリとして指定する。メモリオーナーシップテーブルエントリは次に、ゲストワークロード/ゲストVMによって用いられ、ホストワークロードマネージャ/VMMによって後で提供されるアドレスが、暗号化されたイメージコンテンツへの最初に提供されたマッピングに適合しており、危険に晒されていないことを確認することができる。「新たなVMはMOTエントリをGPA→期待HPAとして保存する」というブロック830から、制御は次に、「新たなVMはMOTエントリをキードメインキーで暗号化し、MOTエントリをVMMに提供する」というブロック832に進む。
「新たなVMはMOTエントリをキードメインキーで暗号化し、MOTエントリをVMMに提供する」というブロック832において、新たなゲストワークロード/ゲストVMは、メモリオーナーシップテーブル(MOT)エントリを、新たなゲストワークロード/ゲストVMに割り当てられたメモリを暗号化するのに用いられるキードメインキーで暗号化する。MOTエントリを暗号化する場合、VMは、暗号化された暗号文に対するtweakとして、MOTテーブル内のエントリのハードウェア物理アドレスも用いてよい。この暗号化プロトコルは、ハードウェア物理メモリアドレスがtweakとして用いられる場合、MOTテーブル自体もメモリに格納されているので、XTSメモリ暗号化を用いることとの整合性を維持する。MOTエントリをキードメインキーで暗号化することによって、ゲストワークロード/ゲストVMは、ホストワークロードマネージャ/VMMがMOTエントリを読み出すことも、変更することも、偽造することもできないことを保証する。「新たなVMはMOTエントリをキードメインキーで暗号化し、MOTエントリをVMMに提供する」というブロック832から、制御は次に「VMMは暗号化されたMOTエントリをメモリオーナーシップテーブルに書き込む」というブロック834に進む。
「VMMは暗号化されたMOTエントリをメモリオーナーシップテーブルに書き込む」というブロック834において、ホストワークロードマネージャ/VMMは、ゲストワークロード/ゲストVMによって提供される暗号化されたMOTエントリを、MOTエントリの期待ハードウェア物理アドレスに対応するテーブル内の位置でメモリオーナーシップテーブルに書き込む。1つの実施形態において、ゲストワークロード/ゲストVM識別子(VM_ID)も、メモリオーナーシップテーブルに取り込まれる。
図9を参照すると、フローチャートが、ゲストワークロードからの要求に応答してメモリ内のデータにアクセスする方法900を例示する。「ゲストアドレスへのアクセスを求める要求を受け取る」というブロック902において、プロセッサは、ゲストワークロード/ゲストVMからの要求を受け取り、ゲストVMによって提供されるゲストアドレスのデータにアクセスする。要求されたゲストアドレスは、ゲスト仮想/リニアアドレスであっても、ゲスト物理アドレスであってもよく、プロセッサは、要求されたゲストアドレスに対応する実際のハードウェア物理アドレスを検索する。「ワークロードマネージャ提供のハードウェア物理アドレス」という用語は、本明細書において、ゲストアドレスの実際のハードウェア物理アドレスへの最低レベルの変換を指すのに用いられる。仮想化環境において、ゲストアドレスの実際のハードウェア物理アドレスへの最低レベルの変換は、VMMによって管理される拡張ページテーブルを用いて提供されてよい。非仮想化環境において、ゲストアドレスの実際のハードウェア物理アドレスへの最低レベルの変換は、オペレーティングシステムによって管理されるページテーブルを用いて提供されてよい。
「ゲストアドレスへのアクセスを求める要求を受け取る」というブロック902から、制御は次に「要求されたゲストアドレスにマッピングされるワークロードマネージャ提供のHPAを探し出す」というブロック904に進む。1つの実施形態において、HPAは、ホストワークロードマネージャ/VMMのページテーブル内でプロセッサによって探し出されるか、又は、ホストワークロードマネージャ/VMMの拡張ページテーブル内でプロセッサのページミスハンドラによって探し出される。1つの実施形態において、プロセッサ(ページミスハンドラ/PMH)は、要求されたゲストアドレスをハードウェア物理アドレス(HPA)に変換するためにページテーブルを「ウォーク」する。これにより、メモリアクセス(読み込み/格納/実行)が完了し得る。プロセッサ/PMHは、ページテーブル/EPTにおいて要求されたゲストアドレスを検索し、要求されたゲストアドレスにマッピングされる「ワークロードマネージャ提供のハードウェア物理アドレス(HPA)」を探し出す。「ワークロードマネージャ提供のハードウェア物理アドレス」という用語は、ハードウェア物理アドレスがホストワークロードマネージャ又はVMMによって提供されるので、ゲストワークロード/ゲストVMによって信頼されないことを示すのに用いられる。危険に晒されたVMMがゲストワークロード/ゲストVMの制御フローを変更しようとするならば、危険に晒されたVMMは、要求されたゲストアドレス用にゲストワークロード/ゲストVMに提供されたハードウェア物理アドレスを変更することがある。この理由から、ワークロードマネージャ提供のハードウェア物理アドレスは、次の段階で確認される。
1つの実施形態において、ワークロードマネージャ提供のハードウェア物理アドレスを探し出した後に、ゲストワークロードは、要求されたゲストアドレスからワークロードマネージャ提供のHPAへのメモリマッピングをメモリオーナーシップテーブルに格納してよい。さらに、後で使えるようにメモリマッピングを保持するために、要求されたゲストアドレスは、ワークロードマネージャ提供のHPAの期待ゲストアドレスとして格納されてよい。期待ゲストアドレスを格納することで、プロセッサは、要求されたゲストアドレスを、アクセスを要求するゲストワークロード/ゲストVMの、MOT内にある期待ゲストアドレスと比較することが可能になる。「要求されたゲストアドレスにマッピングされるワークロードマネージャ提供のHPAを探し出す」というブロック904から、制御は次に「ワークロードマネージャ提供のHPAを確認する」というブロック906に進む。
「ワークロードマネージャ提供のHPAを確認する」というブロック906において、要求されたゲストアドレス用に探し出されたハードウェア物理アドレスが確認される。1つの実施形態において、HPAは、上述したメモリオーナーシップテーブルを用いて確認される。「WM提供のHPAマッピングのMOTエントリを読み出し、復号キーを決定する」というブロック908において、ページテーブルで探し出されたワークロードマネージャ提供の変換後のHPAに対応する暗号化されたMOTエントリが復号される。例えば、MOTはメモリ内のテーブルであり、MOTエントリは、アクセスされているページのHPAに基づいて索引付けされる(例えば、ページHPA0がMOTテーブル又は第1のエントリの索引0であり、ページHPA1がMOTテーブル、第2のエントリなどの索引1である)。
1つの実施形態において、復号キーは、HPAの最上位物理ビットに格納されているキードメイン識別子(KD_ID)を用いて決定される。キードメイン識別子(KD_ID)が認識されると、キードメインキーは識別され、メモリオーナーシップテーブル(MOT)に格納されたデータを復号できるメモリ暗号化エンジンに提供され得る。メモリ暗号化エンジンは、MOTエントリのハードウェア物理アドレスもtweakとして用いてよい。MOTエントリがワークロードマネージャ提供の正しいハードウェア物理アドレスに読み込めない場合、MOTエントリは適切に復号されることはない。そのような実施形態は、期待ハードウェア物理アドレスがHPAに対応するMOTエントリに重複して格納されることを必要としなくてよい。
「WM提供のHPAマッピングのMOTエントリを読み出し、復号キーを決定する」というブロック908から、制御は次に「WM提供のHPAが要求されたゲストアドレスのMOTの期待HPAと一致し、且つMOTの期待ゲストアドレスが要求されたゲストアドレスと一致するか?」という判断ポイント910に進む。ワークロードマネージャ提供の変換後のHPAがMOTエントリの期待HPAフィールド(図10の1004)と一致しない、及び/又は、要求されたゲストアドレスがMOTエントリの期待ゲストアドレスフィールド(図10の1006)と一致しない場合、制御は「エラー処理/VMExitを実行する」というブロック912に進む。「エラー処理/VMExitを実行する」というブロック912において、エラー処理が行われてよく、ゲストワークロード/ゲストVMは終了させられてよい。
「WM提供のHPAが要求されたゲストアドレスのMOTの期待HPAと一致し、且つMOTの期待ゲストアドレスが要求されたゲストアドレスと一致するか?」という判断ポイント910において、ワークロードマネージャ提供のHPA、及びプロセッサ/PMHがページテーブルをウォークすることで探し出されたゲストアドレスは、復号されたMOTエントリ内の期待HPA及び期待ゲストアドレスと一致する必要がある。ワークロードマネージャ提供のHPAがMOTの期待HPA(図10の1004)と一致し、且つMOTエントリの期待ゲストアドレスフィールド(図10の1006)がページウォーク中に探し出された実際の変換後のゲストアドレスと一致した場合、制御は「復号キーを用いて、探し出されたHPAにあるデータにアクセスする」というブロック914に進む。
「復号キーを用いて、ワークロードマネージャ提供のHPAにあるデータにアクセスする」というブロック914において、ゲストVMによって要求されたデータがアクセスされる。復号キーは、ブロック908で識別されたキードメインキーである。
図10を参照すると、メモリオーナーシップテーブル1000の一例が示されている。列1002は行索引を含み、行索引は、ここでは説明のためだけに用いられているので点線で示されている。行索引は、メモリオーナーシップテーブルの一部として格納されているわけではない。図6A及び図6Bで説明された実施形態などの1つの実施形態において、ゲストVMに割り振られたワークロードマネージャ提供の元のハードウェア物理アドレスが、索引としてテーブルに用いられている。ハードウェア物理アドレスのゲストVMへの割り振りが、図4及び図5に関連して前もって説明された。この実施形態はハードウェア物理アドレス/HPAによって索引付けされたメモリオーナーシップテーブルを用いるが、他の実施形態は、リスト、ツリー、ハッシュテーブル、グラフなどの任意の形の検索可能な構造を用いて、変換後のハードウェア物理アドレスに与えられるゲストアドレスを探し出してよい。
列1004は期待ホスト物理アドレスを含み、列1006は期待ゲストアドレスを含む。これらの列は、図6A及び図8に関連して説明したように、ゲストワークロード/ゲストVMが最初に作成されたときにホストワークロードマネージャによって提供された元のマッピングを、ゲストワークロード/ゲストVMによって保持するのに用いられる。
列1008は、ゲストアドレスに格納されたページの状態を含み、列1010は「0000」のデータ値を含む。列1010は、品質保証メカニズムとして、適切なキーがMOTエントリを復号するのに用いられていることを保証するのに用いられてよい。間違った復号キーが列1010を復号するのに用いられた場合、得られるデータは「0000」以外の値になる。これは、間違ったキーを用いることで、MOTエントリのフィールド1004、1006、1008、及び1010がランダムな(エラーのある)値に復号されることになり、0000という特定の値になる可能性がなく、したがってエラーを示すからである。
列1008に関しては、状態フィールドが「大きい(Large)」、「アクティブ(Active)」、「共有(Shared)」、及び「無効(Inval)」の値で示されている。「共有」という値は、コンシューマ/ゲストVMが共有されるページを意図していることを示す。プロセッサが、そのような「共有」されたMOTエントリを解釈した場合、プロセッサは、そのページの物理メモリアドレスにあるVMMのKD_IDを用いることになる(又はそうでなければキーがないことを示す)。これにより、関連するメモリページのメモリコンテンツが暗号化されることはない(又は、VMM及び特定のゲストVMによって共有された共通鍵で暗号化されることになる)。VMのメモリページが、VMMと選択的に共有され/VMMに公開され、ゲストVMとホストVMMとの間の通信が可能になり得る。
列1008の状態フィールドは、「大きい」という値又は「非常に大きい」という値を含んでよい。通常の(基本的な)ページサイズは4KBである。Intel(登録商標)プロセッサは、4MBという大きいページ、及び4GBという非常に大きいページをサポートする。メモリオーナーシップテーブルは期待ページサイズを示して、ページサイズ(ページテーブルウォークで判定される)が期待通りであることを保証するので、VMMはページサイズを誤って伝えることができない。
なお、網掛けされた行はキーK1を用いて暗号化され及び復号され、あるゲストワークロード/ゲスト仮想マシンに対応する。網掛けの無い行はキーK2を用いて暗号化され及び復号され、別のゲストワークロード/ゲスト仮想マシンに対応する。MOTテーブル全体は、任意の数の別個のキードメイン/VMに属する任意の数のエントリを有してよく、各MOTエントリは、対応するキードメインキーで暗号化される。
列1012が点線で示されているのは、MOTエントリ用のメモリ暗号化キー/キードメインキーをメモリオーナーシップテーブルの一部として格納する必要がないからである。MOTエントリ用のキードメインキーは、MOTテーブル1000のエントリを暗号化及び復号するために識別され用いられる。1つの実施形態において、キードメイン識別子は、MOTエントリにアクセスするプロセッサによって用いられるハードウェア物理アドレスの最上位物理アドレスビットに存在し、キードメイン識別子は、MOTエントリを(メモリ書き込みで)暗号化又は(メモリ読み出しで)復号するのに用いられるキードメインキーを決定するために用いられ得る。
この例において、図10のメモリオーナーシップテーブル1000では、VMMが拡張ページテーブルを提供し、拡張ページテーブルは、期待HPA0、2、4、6のそれぞれをゲストアドレス8、10、12、14にマッピングし、期待HPA1、3、5、7のそれぞれをゲストアドレス9、11、13、15にマッピングする。プロセッサはメモリオーナーシップテーブル1000を用いて、ワークロードマネージャ提供の変換後のHPAが期待HPAと一致しないこと、及びVMMが危険に晒されているかもしれないことを判定できる。例えば、HPA1、3、5、7のそれぞれを9、11、13、15以外のゲストアドレスにマッピングするページテーブルをVMMが提供した場合、プロセッサはまた、メモリオーナーシップテーブル1000を用いて、ワークロードマネージャ提供の変換後のHPAが期待HPAと一致しないこと、及びVMMが危険に晒されているかもしれないことを判定できる。
いくつかの実施形態において、メモリオーナーシップテーブルは、物理メモリページがVMCSを含むかどうかを示すフィールドを含んでよい。このように、コンシューマ/VMはMOTエントリを用いて、コンシューマ/VMの暗号化されたイメージの、VMCS構造を含む部分を識別することができる。VMCSフィールドは、悪意のあるVMMが偽のVMCSをVMに(例えば、通信チャネルを介して)注入しようとすること、及び偽のVMCSをVMの許可されたVMCSとして読み込もうとすることを阻止するのに用いられ得る。プロセッサがVMPTRLD命令を実行した場合、プロセッサはVMPTRLD用のEAXレジスタにおいて指定された物理アドレスHPAのMOTテーブルにアクセスしてよい。例えば、VMCSのHPAがMOTエントリの期待HPAと一致することを想定すると、VMPTRLDのHPAのMOTエントリが真(TRUE)(ブール型フィールド)と設定されたVMCSフィールドを有する場合、プロセッサはVMCSの読み込みに進む。VMCSフィールドが偽(FALSE)の場合、プロセッサは終了してエラーをVMMに報告する。プロセッサは、MOTエントリにアクセスする場合、VMPTRLDに用いられるアドレスの一部として指定されたKD_IDを用いる。これにより、指定されたKD_IDに対応するキーがメモリ暗号化エンジンによって用いられ、対応するMOTエントリを復号する。
MOTエントリに含まれ得る別の追加フィールドは、ゲストVMの仮想/リニアアドレス(VA、これは図10に示されていない)である。プロセッサ/PMHは、ページテーブルをウォークすることによって、VAを用いてゲスト物理アドレスを検索でき、またゲスト物理アドレスを用いてワークロードマネージャ提供のHPAを検索できるので、MOTエントリは、VAがMOTエントリ内で探し出されたVAと一致することも必要となり得る。VAフィールドは、VMワークロードがそのGPAを異なるVAに再び割り当てた後に、メモリコンテンツのリプレイを防止するのに用いられてよい。
同様に、期待されるCR3プロセッサレジスタ値(不図示)がMOTのフィールドであってよい。CR3プロセッサレジスタによって、プロセッサは、現在のタスク/ワークロードのページディレクトリ及びページテーブルの位置を特定することによって、仮想/リニアアドレスをハードウェア物理アドレスに変換することが可能になる。通常、CR3の上位20ビットはページディレクトリベースレジスタ(PDBR)になり、これは、第1のページディレクトリエントリのハードウェア物理アドレスを格納する。期待されるCR3プロセッサレジスタ値をMOTに格納することで、プロセッサ/PMHは、実際のCR3ページディレクトリベースレジスタの値が、対応するMOTエントリに格納された期待CR3値と一致することを確認することが可能になる。この段落及び以前の段落で説明されたMOTのVAフィールド及び期待CR3フィールドは、CR3又はVAの任意の値が許容できることを示す「任意」という値も含んでよい。この方法は、以前のタスク/プロセスに属するメモリマッピングのリプレイを防止するために、ゲストワークロードによって用いられ得る。これは、新たなMOTエントリが新たなタスク/プロセスのために作成されるからである。
他のフィールドは、コンシューマ/VMによって期待されるように、EPT構造の権限及び/又はEPT構造のメモリタイプが、MOTエントリの期待権限及びメモリタイプと一致することを確認してよい。ゲストワークロードがプロセッサにゲストワークロードの期待値と比較して確認することを要求する任意の他のプロセッサ状態/情報が、追加フィールドとしてMOTエントリに含まれてよい。
[実施例]
以下の実施例は、さらなる実施形態に関する。
実施例1において、パブリッククラウドサービスプロバイダ環境内のゲストワークロードを守る装置が、プロセッサと、プロセッサに結合されたメモリとを含み、プロセッサは、信頼できないワークロードマネージャを実行して少なくとも1つのゲストワークロードの実行を管理し、信頼できないワークロードマネージャは、(i)少なくとも1つのゲストワークロードのうちのあるゲストワークロードにメモリの領域を割り振り、(ii)メモリの領域のそれぞれのメモリ位置と関連付けられたそれぞれの元のハードウェア物理アドレスを、ゲストワークロードによって提供されたそれぞれの元のゲストアドレスに割り当て、ゲストワークロードは、ゲストワークロードに割り振られたメモリ領域のそれぞれの元のゲストアドレスからゲストワークロードのそれぞれの元のハードウェア物理アドレスへのそれぞれのマッピングを格納する。ゲストワークロードから、要求されたゲストアドレスを用いてメモリにアクセスする要求を受け取ったことに応答して、プロセッサはさらに、(i)信頼できないワークロードマネージャから、ワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得して要求されたゲストアドレスに対応し、(ii)格納されたマッピングがワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定し、(iii)格納されたマッピングを探し出したことに応答して、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致するかどうかを判定し、(iv)格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致した場合、ゲストワークロードがワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする。
実施例2において、実施例1のプロセッサはさらに、格納されたマッピングの格納された期待ハードウェア物理アドレスがワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを判定し、ゲストワークロードがワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にすることは、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致し、且つ格納されたマッピングの格納された期待ハードウェア物理アドレスがワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、ゲストワークロードを有効にすることを含む。
実施例3において、実施例1及び2のゲストワークロードはさらに、(i)ゲストワークロードによってメモリの領域のそれぞれのメモリ位置に書き込まれたコンテンツをゲストワークロード用のコンシューマ提供のキーで暗号化させ、(ii)ゲストワークロード用のそれぞれのマッピングをコンシューマ提供のキーで暗号化させる。
実施例4において、ゲストワークロードのマッピングをコンシューマ提供のキーで暗号化させる実施例1から3のゲストワークロードは、マッピングのそれぞれの元のゲストアドレスをマッピングのそれぞれの元のハードウェア物理アドレスに結び付ける。
実施例5において、ゲストワークロードによって書き込まれたコンテンツをコンシューマ提供のキーで暗号化させる実施例1から3のゲストワークロードはさらに、マッピングのそれぞれの元のゲストアドレスを、マッピングのそれぞれの元のハードウェア物理アドレスの暗号化されたコンテンツに結び付ける。
実施例6において、実施例1から5のゲストワークロードはさらに、それぞれのマッピングをメモリオーナーシップテーブルのそれぞれのエントリとして格納する。
実施例7において、実施例1から6のゲストワークロードはさらに、ゲストワークロードのそれぞれの元のゲストアドレスからゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングをメモリオーナーシップテーブルに格納し、実施例1から6のプロセッサはさらに、ゲストワークロードからの、それぞれの元のゲストアドレスに格納されたデータにアクセスする要求に応答して、(i)それぞれの元のゲストアドレスに対応するメモリオーナーシップテーブルのエントリを識別し、(ii)メモリオーナーシップテーブルのエントリの期待される元の仮想アドレスがそれぞれの元の仮想アドレスと一致することを、それぞれの元のゲストアドレスに格納されたデータにアクセスする前に確認する。
実施例8において、実施例1から7のゲストワークロードはさらに、ゲストワークロードの期待レジスタ値を格納して、プロセッサがゲストワークロードのページディレクトリ及びページテーブルの位置を特定することを可能にし、実施例1から7のプロセッサは、ワークロードマネージャ提供のレジスタ値がゲストワークロードの期待レジスタ値と一致することを、ゲストワークロードのページディレクトリ及びページテーブルにアクセスする前に確認する。
実施例9において、実施例1から8のゲストワークロードはさらに、(i)元の制御構造ハードウェア物理アドレスからゲストワークロードの期待される制御構造ハードウェア物理アドレスへの制御構造マッピングを格納し、(ii)制御構造マッピングと共に制御構造標識を格納し、元の制御構造ハードウェア物理アドレスのコンテンツがゲストワークロードの制御構造を含む場合、制御構造標識は真(TRUE)に設定され、実施例1から8のプロセッサはさらに、ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスがゲストワークロードの期待される制御構造ハードウェア物理アドレスと一致すること、且つ制御構造標識が真であることを、ゲストワークロードの制御構造をワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認する。
実施例10において、実施例1から9のゲストワークロードはさらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値を格納し、期待コンテンツ確認値は、特定の元のハードウェア物理アドレスのコンテンツをハッシュすることによって決定され、実施例1から9のプロセッサは、期待コンテンツ確認値が特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する。
実施例11はパブリッククラウドサービスプロバイダ環境内のゲストワークロードを守るコンピュータ実装方法であり、本方法はプロセッサによって実行され、本方法は、信頼できないワークロードマネージャを実行して、少なくとも1つのゲストワークロードの実行を管理する段階と、少なくとも1つのゲストワークロードのうちのあるゲストワークロードから、要求されたゲストアドレスを用いてメモリにアクセスする要求を受け取る段階と、信頼できないワークロードマネージャから、要求されたゲストアドレスに対応するワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得する段階と、格納されたマッピングがワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定する段階と、格納されたマッピングを探し出したことに応答して、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致するかどうかを判定する段階と、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致した場合、ゲストワークロードがワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする段階とを含む。
実施例12において、実施例11のコンピュータ実装方法はさらに、格納されたマッピングの格納された期待ハードウェア物理アドレスがワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを判定する段階をさらに含み、ゲストワークロードがワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする段階は、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致し、且つ格納されたマッピングの格納された期待ハードウェア物理アドレスがワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、ゲストワークロードを有効にする段階を含む。
実施例13において、実施例11から12のコンピュータ実装方法はさらに、ゲストワークロードのそれぞれの元のゲストアドレスからゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを含むメモリオーナーシップテーブルのエントリを識別する段階と、メモリオーナーシップテーブルのエントリの期待される元のゲスト仮想アドレスがエントリのそれぞれの元の仮想アドレスと一致することを、それぞれの元のゲストアドレスに格納されたデータにアクセスする前に確認する段階とを含む。
実施例14において、実施例11から13のコンピュータ実装方法はさらに、ゲストワークロードの格納された期待レジスタ値を識別して、ゲストワークロードのページディレクトリ及びページテーブルの位置を特定する段階と、ワークロードマネージャ提供のレジスタ値がゲストワークロードの格納された期待レジスタ値と一致することを、ゲストワークロードのページディレクトリ及びページテーブルにアクセスする前に確認する段階とを含む。
実施例15において、実施例11から14のコンピュータ実装方法はさらに、(i)元の制御構造ハードウェア物理アドレスからゲストワークロードの期待される制御構造ハードウェア物理アドレスへの格納された制御構造マッピングと、(ii)制御構造マッピングと関連付けられた格納された制御構造標識とを識別する段階であって、元の制御構造ハードウェア物理アドレスのコンテンツがゲストワークロードの制御構造を含む場合、制御構造標識は真に設定される、段階と、ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスがゲストワークロードの期待される制御構造ハードウェア物理アドレスと一致すること、且つ制御構造標識が真であることを、ゲストワークロードの制御構造をワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認する段階とを含む。
実施例16において、実施例11から15のコンピュータ実装方法はさらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値を識別する段階と、期待コンテンツ確認値が特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する段階とを含む。
実施例17において、少なくとも1つのコンピュータ可読媒体が、プロセッサによって実行された場合、実施例11から16の方法をマシンに実行させる命令を含む。
実施例18において、パブリッククラウドサービスプロバイダ環境内のゲストワークロードを守る装置が、信頼できないワークロードマネージャを実行して、少なくとも1つのゲストワークロードの実行を管理するための手段と、少なくとも1つのゲストワークロードのうちのあるゲストワークロードから、要求されたゲストアドレスを用いてメモリにアクセスする要求を受け取るための手段と、信頼できないワークロードマネージャから、要求されたゲストアドレスに対応するワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得するための手段と、格納されたマッピングがワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定するための手段と、格納されたマッピングを探し出したことに応答して、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致するかどうかを判定するための手段と、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致する場合、ゲストワークロードがワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にするための手段とを含む。
実施例19において、実施例18の装置はさらに、格納されたマッピングの格納された期待ハードウェア物理アドレスがワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを判定するための手段を含み、ゲストワークロードがワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にするための手段は、格納されたマッピングの格納された期待ゲストアドレスが要求されたゲストアドレスと一致し、且つ格納されたマッピングの格納された期待ハードウェア物理アドレスがワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、ゲストワークロードを有効にするための手段を含む。
実施例20において、実施例18から19の装置はさらに、ゲストワークロードのそれぞれの元のゲストアドレスからゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを含むメモリオーナーシップテーブルのエントリを識別するための手段と、メモリオーナーシップテーブルのエントリの期待される元のゲスト仮想アドレスがエントリのそれぞれの元の仮想アドレスと一致することを、それぞれの元のゲストアドレスに格納されたデータにアクセスする前に確認するための手段とを含む。
実施例21において、実施例18から20の装置はさらに、ゲストワークロードの格納された期待レジスタ値を識別して、ゲストワークロードのページディレクトリ及びページテーブルの位置を特定するための手段と、ワークロードマネージャ提供のレジスタ値がゲストワークロードの格納された期待レジスタ値と一致することを、ゲストワークロードのページディレクトリ及びページテーブルにアクセスする前に確認するための手段とを含む。
実施例22において、実施例18から21の装置はさらに、元の制御構造ハードウェア物理アドレスからゲストワークロードの期待される制御構造ハードウェア物理アドレスへの格納された制御構造マッピングを識別するための手段と、制御構造マッピングと関連付けられた格納された制御構造標識を識別するための手段であって、元の制御構造ハードウェア物理アドレスのコンテンツがゲストワークロードの制御構造を含む場合、制御構造標識は真に設定される、手段と、ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスがゲストワークロードの期待される制御構造ハードウェア物理アドレスと一致すること、且つ制御構造標識が真であることを、ゲストワークロードの制御構造をワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認するための手段とを含む。
実施例23において、実施例18から22の装置はさらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値を識別するための手段と、期待コンテンツ確認値が特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認するための手段とを含む。
実施例24において、少なくとも1つのコンピュータ可読媒体が、プロセッサによって実行された場合、実施例11から16の方法をマシンに実行させる命令を含む。
実施例25において、パブリッククラウドサービスプロバイダ環境内のゲストワークロードを守るコンピュータ実装方法がプロセッサによって実行され、信頼できないワークロードマネージャによって管理された複数のゲストワークロードのうちのあるゲストワークロードをプロセッサによって実行する段階と、信頼できないワークロードマネージャから、メモリの領域の割り振りをゲストワークロードによって受け取る段階と、メモリの領域のそれぞれのメモリ位置にそれぞれの元のゲストアドレスをゲストワークロードによって提供する段階と、それぞれの元のゲストアドレスに割り当てられたそれぞれの元のハードウェア物理アドレスをゲストワークロードによって受け取る段階と、それぞれの元のゲストアドレスからそれぞれの元のハードウェア物理アドレスへのそれぞれのマッピングをゲストワークロードによって格納する段階とを含む。
実施例26において、実施例25のコンピュータ実装方法はさらに、ゲストワークロードによってメモリの領域のそれぞれのメモリ位置に書き込まれたコンテンツを、ゲストワークロード用のコンシューマ提供のキーでゲストワークロードによって暗号化させる段階と、ゲストワークロードのそれぞれのマッピングをコンシューマ提供のキーでゲストワークロードによって暗号化させる段階とを含む。
実施例27において、実施例25から26のコンピュータ実装方法では、ゲストワークロードのマッピングをコンシューマ提供のキーで暗号化させる段階は、マッピングのそれぞれの元のゲストアドレスをマッピングのそれぞれの元のハードウェア物理アドレスに結び付ける。
実施例28において、実施例25から27のコンピュータ実装方法では、ゲストワークロードによって書き込まれたコンテンツをコンシューマ提供のキーで暗号化させる段階はさらに、マッピングのそれぞれの元のゲストアドレスを、マッピングのそれぞれの元のハードウェア物理アドレスの暗号化されたコンテンツに結び付ける。
実施例29において、実施例25から28のコンピュータ実装方法はさらに、それぞれのマッピングをメモリオーナーシップテーブルのそれぞれのエントリとしてゲストワークロードによって格納する段階を含む。
実施例30において、実施例25から29のコンピュータ実装方法はさらに、ゲストワークロードのそれぞれの元のゲストアドレスからゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングをメモリオーナーシップテーブルにゲストワークロードによって格納する段階と、ゲストワークロードからの、それぞれの元のゲストアドレスに格納されたデータにアクセスする要求に応答して、それぞれの元のゲストアドレスに対応するメモリオーナーシップテーブルのエントリをプロセッサによって識別する段階と、メモリオーナーシップテーブルのエントリの期待される元の仮想アドレスがそれぞれの元の仮想アドレスと一致することを、それぞれの元のゲストアドレスに格納されたデータにアクセスする前にプロセッサによって確認する段階とを含む。
実施例31において、実施例25から30のコンピュータ実装方法はさらに、ゲストワークロードの期待レジスタ値をゲストワークロードによって格納し、プロセッサがゲストワークロードのページディレクトリ及びページテーブルの位置を特定することを可能にする段階と、ワークロードマネージャ提供のレジスタ値がゲストワークロードの期待レジスタ値と一致することを、ゲストワークロードのページディレクトリ及びページテーブルにアクセスする前にプロセッサによって確認する段階とを含む。
実施例32において、実施例25から31のコンピュータ実装方法はさらに、元の制御構造ハードウェア物理アドレスからゲストワークロードの期待される制御構造ハードウェア物理アドレスへの制御構造マッピングをゲストワークロードによって格納する段階と、制御構造マッピングと共に制御構造標識をゲストワークロードによって格納する段階であって、元の制御構造ハードウェア物理アドレスのコンテンツがゲストワークロードの制御構造を含む場合、制御構造標識は真に設定される、段階と、ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスがゲストワークロードの期待される制御構造ハードウェア物理アドレスと一致すること、且つ制御構造標識が真であることを、ゲストワークロードの制御構造をワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前にプロセッサによって確認する段階とを含む。
実施例33において、実施例25から32のコンピュータ実装方法はさらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値をゲストワークロードによって格納する段階であって、期待コンテンツ確認値は、特定の元のハードウェア物理アドレスのコンテンツをハッシュすることによって決定される、段階と、期待コンテンツ確認値が特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前にプロセッサによって確認する段階とを含む。
なお、実施例1から33のプロセッサは、様々な手段を用いて実装されてよい。
実施例34において、実施例1から33のプロセッサは、仮想プロセッサとして実装される。
実施例35において、実施例1から33のプロセッサは、ユーザ機器のタッチ式デバイスに組み込まれたシステムオンチップ(SoC)を含む。
実施例36において、実施例1から33のプロセッサであって、システムは表示装置及びメモリを備え、上記実施例のうち1つ又は複数のプロセッサを含む。
実施例37において、データを含むコンピュータ可読媒体が少なくとも1つのマシンによって用いられ、上記実施例のうちいずれか1つの方法を実行する少なくとも1つの集積回路を製造する。
実施例38において、装置が上記実施例のうちいずれか1つの方法を実行する手段を備える。
上記実施例の様々な組み合わせが可能であることを理解されたい。
なお、「circuit(回路)」及び「circuitry(回路)」という用語は、本明細書では同じ意味で用いられる。本明細書では、これらの用語及び「logic(ロジック)」という用語は、アナログ回路、デジタル回路、ハードワイヤード回路、プログラム可能回路、プロセッサ回路、マイクロコントローラ回路、ハードウェアロジック回路、ステートマシン回路、及び/又は任意の他の種類の物理ハードウェアコンポーネントを単独で、又は任意の組み合わせで指すのに用いられる。各実施形態は、多くの異なる種類のシステムに用いられてよい。例えば、1つの実施形態において、本明細書で説明された様々な方法及び技法を実行するように通信デバイスが構成されてよい。もちろん、本発明の範囲は通信デバイスに限定されない。その代わり、他の実施形態が、命令を処理するための他の種類の装置、あるいはコンピュータ処理装置で実行されることに応答して、本明細書で説明された方法及び技法のうち1つ又は複数をデバイスに実行させる命令を含む1つ又は複数のマシン可読媒体を対象とすることができる。
各実施形態はコードで実装されてよく、命令を実行するようにシステムをプログラムするのに用いられ得る命令を格納した非一時的記憶媒体に格納されてよい。各実施形態はデータで実装されてもよく、また非一時的記憶媒体に格納されてよい。非一時的記憶媒体は、少なくとも1つのマシンによって用いられた場合、1つ又は複数のオペレーションを実行する少なくとも1つの集積回路を少なくとも1つのマシンに製造させる。さらなる実施形態が、SoC又は他のプロセッサとして製造された場合、1つ又は複数のオペレーションを実行するようにSoC又は他のプロセッサを構成する情報を含むコンピュータ可読記憶媒体で実装されてよい。記憶媒体は、限定されないが、フロッピーディスク、光ディスク、ソリッドステートドライブ(SSD)、コンパクトディスクリードオンリメモリ(CD-ROM)、コンパクトディスクリライタブル(CD-RW)、磁気光ディスクを含む任意の種類のディスク、リードオンリメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)やスタティックランダムアクセスメモリ(SRAM)などのランダムアクセスメモリ(RAM)、消去可能プログラム可能リードオンリメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラム可能リードオンリメモリ(EEPROM)などの半導体デバイス、磁気カード若しくは光カード、又は電子命令を格納するのに好適な任意の他の種類の媒体を含んでよい。
本発明は、限られた数の実施形態に関して説明されているが、当業者であれば、そこから多くの修正形態及び改変形態を理解するであろう。添付の特許請求の範囲は、本発明の真の精神及び範囲に含まれるそのような修正形態及び改変形態の全てを包含することが意図されている。
[他の可能性のあるクレーム]
(項目1)
プロセッサと、
上記プロセッサに結合されたメモリと
を備える装置であって、
上記プロセッサは、信頼できないワークロードマネージャを実行して、少なくとも1つのゲストワークロードの実行を管理し、
上記信頼できないワークロードマネージャは、(i)上記少なくとも1つのゲストワークロードのうちのあるゲストワークロードに上記メモリのある領域を割り振り、(ii)上記メモリの上記領域のそれぞれのメモリ位置と関連付けられたそれぞれの元のハードウェア物理アドレスを、上記ゲストワークロードによって提供されたそれぞれの元のゲストアドレスに割り当て、
上記ゲストワークロードは、上記ゲストワークロードに割り振られたメモリの上記領域のそれぞれの元のゲストアドレスから上記ゲストワークロードのそれぞれの上記元のハードウェア物理アドレスへのそれぞれのマッピングを格納し、
上記ゲストワークロードから、要求されたゲストアドレスを用いて上記メモリにアクセスする要求を受け取ったことに応答して、上記プロセッサはさらに、(i)上記信頼できないワークロードマネージャから、上記要求されたゲストアドレスに対応するワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得し、(ii)格納されたマッピングが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定し、(iii)上記格納されたマッピングを探し出したことに応答して、上記格納されたマッピングの格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致するかどうかを判定し、(iv)上記格納されたマッピングの上記格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致した場合、上記ゲストワークロードが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする、装置。
(項目2)
上記プロセッサはさらに、
上記格納されたマッピングの格納された期待ハードウェア物理アドレスが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを判定し、
上記ゲストワークロードが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にすることは、上記格納されたマッピングの上記格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致し、且つ上記格納されたマッピングの上記格納された期待ハードウェア物理アドレスが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、上記ゲストワークロードを有効にすることを含む、項目1に記載の装置。
(項目3)
上記ゲストワークロードはさらに、
(i)上記ゲストワークロードによって上記メモリの上記領域のそれぞれのメモリ位置に書き込まれたコンテンツを、上記ゲストワークロード用のコンシューマ提供のキーで暗号化させ、
(ii)上記ゲストワークロードのそれぞれのマッピングを上記コンシューマ提供のキーで暗号化させる、項目1に記載の装置。
(項目4)
上記ゲストワークロードのマッピングを上記コンシューマ提供のキーで暗号化させることは、上記マッピングのそれぞれの上記元のゲストアドレスを、上記マッピングのそれぞれの上記元のハードウェア物理アドレスに結び付ける、項目3に記載の装置。
(項目5)
上記ゲストワークロードによって書き込まれた上記コンテンツを上記コンシューマ提供のキーで暗号化させることはさらに、上記マッピングのそれぞれの上記元のゲストアドレスを、上記マッピングのそれぞれの上記元のハードウェア物理アドレスの暗号化されたコンテンツに結び付ける、項目3に記載の装置。
(項目6)
上記ゲストワークロードはさらに、メモリオーナーシップテーブルのそれぞれのエントリとして、それぞれのマッピングを格納する、項目1に記載の装置。
(項目7)
上記ゲストワークロードはさらに、上記ゲストワークロードのそれぞれの元のゲストアドレスから上記メモリオーナーシップテーブルの上記ゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを格納し、
上記プロセッサはさらに、上記ゲストワークロードからの、それぞれの上記元のゲストアドレスに格納されたデータにアクセスする要求に応答して、(i)それぞれの上記元のゲストアドレスに対応する上記メモリオーナーシップテーブルのエントリを識別し、(ii)上記メモリオーナーシップテーブルの上記エントリの期待される元の仮想アドレスがそれぞれの上記元の仮想アドレスと一致することを、それぞれの上記元のゲストアドレスに格納されたデータにアクセスする前に確認する、項目6に記載の装置。
(項目8)
上記ゲストワークロードはさらに、上記ゲストワークロードの期待レジスタ値を格納して、上記プロセッサが上記ゲストワークロードのページディレクトリ及びページテーブルの位置を特定することを可能にし、
上記プロセッサは、ワークロードマネージャ提供のレジスタ値が上記ゲストワークロードの上記期待レジスタ値と一致することを、上記ゲストワークロードの上記ページディレクトリ及び上記ページテーブルにアクセスする前に確認する、項目1に記載の装置。
(項目9)
上記ゲストワークロードはさらに、(i)元の制御構造ハードウェア物理アドレスから上記ゲストワークロードの期待される制御構造ハードウェア物理アドレスへの制御構造マッピングを格納し、(ii)上記制御構造マッピングと共に制御構造標識を格納し、上記元の制御構造ハードウェア物理アドレスのコンテンツが上記ゲストワークロードの制御構造を含む場合、上記制御構造標識は真(TRUE)に設定され、
上記プロセッサはさらに、上記ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスが上記ゲストワークロードの上記期待される制御構造ハードウェア物理アドレスと一致すること、且つ上記制御構造標識が真であることを、上記ゲストワークロードの上記制御構造を上記ワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認する、項目1に記載の装置。(項目10)
上記ゲストワークロードはさらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値を格納し、上記期待コンテンツ確認値は、上記特定の元のハードウェア物理アドレスのコンテンツをハッシュすることによって決定され、
上記プロセッサは、上記期待コンテンツ確認値が上記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、上記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する、項目1に記載の装置。
(項目11)
命令を含む少なくとも1つのコンピュータ可読媒体であって、実行された場合、
信頼できないワークロードマネージャを実行して、少なくとも1つのゲストワークロードの実行を管理することと、
上記信頼できないワークロードマネージャによって管理されるゲストワークロードから、要求されたゲストアドレスを用いてメモリにアクセスする要求を受け取ることと、
上記信頼できないワークロードマネージャから、上記要求されたゲストアドレスに対応するワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得することと、
格納されたマッピングが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定することと、
上記格納されたマッピングを探し出したことに応答して、上記格納されたマッピングの格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致するかどうかを判定することと、
上記格納されたマッピングの上記格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致した場合、上記ゲストワークロードが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にすることと
をプロセッサに行わせる命令を備える、少なくとも1つのコンピュータ可読媒体。
(項目12)
上記命令はさらに、
上記格納されたマッピングの格納された期待ハードウェア物理アドレスが、上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを上記プロセッサに判定させる命令を含み、
上記ゲストワークロードが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にすることは、上記格納されたマッピングの上記格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致し、且つ上記格納されたマッピングの上記格納された期待ハードウェア物理アドレスが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、上記ゲストワークロードを有効にすることを含む、項目11に記載の少なくとも1つのコンピュータ可読媒体。
(項目13)
上記命令はさらに、
上記ゲストワークロードのそれぞれの元のゲストアドレスから上記ゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを含むメモリオーナーシップテーブルのエントリを識別することと、
上記メモリオーナーシップテーブルの上記エントリの期待される元のゲスト仮想アドレスが上記エントリのそれぞれの上記元の仮想アドレスと一致することを、それぞれの上記元のゲストアドレスに格納されたデータにアクセスする前に確認することと
を上記プロセッサに行わせる、項目10に記載の少なくとも1つのコンピュータ可読媒体。
(項目14)
上記命令はさらに、
上記ゲストワークロードの格納された期待レジスタ値を識別して、上記プロセッサが上記ゲストワークロードのページディレクトリ及びページテーブルの位置を特定することを可能にすることと、
ワークロードマネージャ提供のレジスタ値が上記ゲストワークロードの上記格納された期待レジスタ値と一致することを、上記ゲストワークロードの上記ページディレクトリ及び上記ページテーブルにアクセスする前に確認することと
を上記プロセッサに行わせる、項目11に記載の少なくとも1つのコンピュータ可読媒体。
(項目15)
上記命令はさらに、
(i)元の制御構造ハードウェア物理アドレスから上記ゲストワークロードの期待される制御構造ハードウェア物理アドレスへの格納された制御構造マッピングと、(ii)上記制御構造マッピングと関連付けられた格納された制御構造標識とを識別することであって、上記元の制御構造ハードウェア物理アドレスのコンテンツが上記ゲストワークロードの制御構造を含む場合、上記制御構造標識は真に設定される、識別することと、
上記ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスが上記ゲストワークロードの上記期待される制御構造ハードウェア物理アドレスと一致すること、且つ上記制御構造標識が真であることを、上記ゲストワークロードの上記制御構造を上記ワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認することと
を上記プロセッサに行わせる、項目11に記載の少なくとも1つのコンピュータ可読媒体。
(項目16)
上記命令はさらに、
特定の元のハードウェア物理アドレスの期待コンテンツ確認値を識別することと、
上記期待コンテンツ確認値が上記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、上記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認することと
を上記プロセッサに行わせる、項目11に記載の少なくとも1つのコンピュータ可読媒体。
(項目17)
命令を含む少なくとも1つのコンピュータ可読媒体であって、実行された場合、
信頼できないワークロードマネージャによって管理された複数のゲストワークロードのうちのあるゲストワークロードをプロセッサに実行させる命令を備え、
上記ゲストワークロードは、(i)上記信頼できないワークロードマネージャから、メモリの領域の割り振りを受け取り、(ii)上記メモリの上記領域のそれぞれのメモリ位置にそれぞれの元のゲストアドレスを提供し、(iii)それぞれの上記元のゲストアドレスに割り当てられたそれぞれの元のハードウェア物理アドレスを受け取り、(iv)それぞれの上記元のゲストアドレスからそれぞれの上記元のハードウェア物理アドレスへのそれぞれのマッピングを格納する、少なくとも1つのコンピュータ可読媒体。
(項目18)
上記ゲストワークロードはさらに、
(i)上記ゲストワークロードによって上記メモリの上記領域のそれぞれのメモリ位置に書き込まれたコンテンツを、上記ゲストワークロード用のコンシューマ提供のキーで暗号化させ、
(ii)上記ゲストワークロードのそれぞれのマッピングを上記コンシューマ提供のキーで暗号化させる、項目17に記載の少なくとも1つのコンピュータ可読媒体。
(項目19)
上記ゲストワークロードのマッピングを上記コンシューマ提供のキーで暗号化させることは、上記マッピングのそれぞれの上記元のゲストアドレスを、上記マッピングのそれぞれの上記元のハードウェア物理アドレスに結び付ける、項目18に記載の少なくとも1つのコンピュータ可読媒体。
(項目20)
上記ゲストワークロードによって書き込まれた上記コンテンツを上記コンシューマ提供のキーで暗号化させることはさらに、上記マッピングのそれぞれの上記元のゲストアドレスを、上記マッピングのそれぞれの上記元のハードウェア物理アドレスの暗号化されたコンテンツに結び付ける、項目18に記載の少なくとも1つのコンピュータ可読媒体。
(項目21)
上記ゲストワークロードはさらに、メモリオーナーシップテーブルのそれぞれのエントリとして、それぞれのマッピングを格納する、項目17に記載の少なくとも1つのコンピュータ可読媒体。
(項目22)
上記ゲストワークロードはさらに、上記ゲストワークロードのそれぞれの元のゲストアドレスから上記メモリオーナーシップテーブルの上記ゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを格納し、
上記プロセッサはさらに、上記ゲストワークロードからの、それぞれの上記元のゲストアドレスに格納されたデータにアクセスする要求に応答して、(i)それぞれの上記元のゲストアドレスに対応する上記メモリオーナーシップテーブルのエントリを識別し、(ii)上記メモリオーナーシップテーブルの上記エントリの期待される元の仮想アドレスがそれぞれの上記元の仮想アドレスと一致することを、それぞれの上記元のゲストアドレスに格納されたデータにアクセスする前に確認する、項目17に記載の少なくとも1つのコンピュータ可読媒体。
(項目23)
上記ゲストワークロードはさらに、上記ゲストワークロードの期待レジスタ値を格納して、上記プロセッサが上記ゲストワークロードのページディレクトリ及びページテーブルの位置を特定することを可能にし、
上記プロセッサは、ワークロードマネージャ提供のレジスタ値が上記ゲストワークロードの上記期待レジスタ値と一致することを、上記ゲストワークロードの上記ページディレクトリ及び上記ページテーブルにアクセスする前に確認する、項目17に記載の少なくとも1つのコンピュータ可読媒体。
(項目24)
上記ゲストワークロードはさらに、(i)元の制御構造ハードウェア物理アドレスから上記ゲストワークロードの期待される制御構造ハードウェア物理アドレスへの制御構造マッピングを格納し、(ii)上記制御構造マッピングと共に制御構造標識を格納し、上記元の制御構造ハードウェア物理アドレスのコンテンツが上記ゲストワークロードの制御構造を含む場合、上記制御構造標識は真(TRUE)に設定され、
上記プロセッサはさらに、上記ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスが上記ゲストワークロードの上記期待される制御構造ハードウェア物理アドレスと一致すること、且つ上記制御構造標識が真であることを、上記ゲストワークロードの上記制御構造を上記ワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認する、項目17に記載の少なくとも1つのコンピュータ可読媒体。
(項目25)
上記ゲストワークロードはさらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値を格納し、上記期待コンテンツ確認値は、上記特定の元のハードウェア物理アドレスのコンテンツをハッシュすることによって決定され、
上記プロセッサは、上記期待コンテンツ確認値が上記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、上記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する、項目17に記載の少なくとも1つのコンピュータ可読媒体。
(項目26)
プロセッサによって実行されるコンピュータ実装方法であって、
信頼できないワークロードマネージャを実行して、少なくとも1つのゲストワークロードの実行を管理する段階と、
上記少なくとも1つのゲストワークロードのうちのあるゲストワークロードから、要求されたゲストアドレスを用いてメモリにアクセスする要求を受け取る段階と、
上記信頼できないワークロードマネージャから、上記要求されたゲストアドレスに対応するワークロードマネージャ提供の変換後のハードウェア物理アドレスを取得する段階と、
格納されたマッピングが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレス用に存在するかどうかを判定する段階と、
上記格納されたマッピングを探し出したことに応答して、上記格納されたマッピングの格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致するかどうかを判定する段階と、
上記格納されたマッピングの上記格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致した場合、上記ゲストワークロードが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする段階と
を備えるコンピュータ実装方法。
(項目27)
上記格納されたマッピングの格納された期待ハードウェア物理アドレスが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致するかどうかを判定する段階をさらに備え、
上記ゲストワークロードが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする段階は、上記格納されたマッピングの上記格納された期待ゲストアドレスが上記要求されたゲストアドレスと一致し、且つ上記格納されたマッピングの上記格納された期待ハードウェア物理アドレスが上記ワークロードマネージャ提供の変換後のハードウェア物理アドレスと一致した場合、上記ゲストワークロードを有効にする段階を含む、項目26に記載のコンピュータ実装方法。
(項目28)
上記ゲストワークロードのそれぞれの元のゲストアドレスから上記ゲストワークロードのそれぞれの元の仮想アドレスへの仮想マッピングを含むメモリオーナーシップテーブルのエントリを識別する段階と、
上記メモリオーナーシップテーブルの上記エントリの期待される元のゲスト仮想アドレスが上記エントリのそれぞれの上記元の仮想アドレスと一致することを、それぞれの上記元のゲストアドレスに格納されたデータにアクセスする前に確認する段階と
をさらに備える、項目26に記載のコンピュータ実装方法。
(項目29)
上記ゲストワークロードの格納された期待レジスタ値を識別して、上記ゲストワークロードのページディレクトリ及びページテーブルの位置を特定する段階と、
ワークロードマネージャ提供のレジスタ値が上記ゲストワークロードの上記格納された期待レジスタ値と一致することを、上記ゲストワークロードの上記ページディレクトリ及び上記ページテーブルにアクセスする前に確認する段階と
をさらに備える、項目26に記載のコンピュータ実装方法。
(項目30)
(i)元の制御構造ハードウェア物理アドレスから上記ゲストワークロードの期待される制御構造ハードウェア物理アドレスへの格納された制御構造マッピングと、(ii)上記制御構造マッピングと関連付けられた格納された制御構造標識とを識別する段階であって、上記元の制御構造ハードウェア物理アドレスのコンテンツが上記ゲストワークロードの制御構造を含む場合、上記制御構造標識は真に設定される、段階と、
上記ゲストワークロードのワークロードマネージャ提供の制御構造ハードウェア物理アドレスが上記ゲストワークロードの上記期待される制御構造ハードウェア物理アドレスと一致すること、且つ上記制御構造標識が真であることを、上記ゲストワークロードの上記制御構造を上記ワークロードマネージャ提供の制御構造ハードウェア物理アドレスから読み込む前に確認する段階と
をさらに備える、項目26に記載のコンピュータ実装方法。
(項目31)
特定の元のハードウェア物理アドレスの期待コンテンツ確認値を識別する段階と、
上記期待コンテンツ確認値が上記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、上記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する段階と
をさらに備える、項目26に記載のコンピュータ実装方法。

Claims (23)

  1. プロセッサに、
    信頼できないワークロードマネージャにより管理されているゲストワークロードを実行する手順であって、前記ゲストワークロードは、前記ゲストワークロードに対するメモリオーナーシップ構造のメモリオーナーシップエントリを作成し、前記メモリオーナーシップエントリは、元のゲストアドレスをそれぞれの元のハードウェア物理アドレスにマッピングする、手順と、
    前記信頼できないワークロードマネージャにより管理されている前記ゲストワークロードから、要求されたゲストアドレスを用いてメモリにアクセスする要求を受け取る手順と、
    前記信頼できないワークロードマネージャにより管理されている前記ゲストワークロードから、前記要求されたゲストアドレスを用いてメモリにアクセスする前記要求を受け取った後に、前記要求されたゲストアドレスに対応する変換後のハードウェア物理アドレスを取得する手順と、
    前記ゲストワークロードに対する前記メモリオーナーシップ構造が、前記変換後のハードウェア物理アドレスに対するメモリオーナーシップエントリを含むかどうかを判定する手順と、
    前記ゲストワークロードに対する前記メモリオーナーシップ構造が、前記変換後のハードウェア物理アドレスに対する前記メモリオーナーシップエントリを含む場合、前記メモリオーナーシップエントリからの格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致するかどうかを判定する手順と、
    前記メモリオーナーシップエントリからの前記格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致する場合、前記ゲストワークロードが前記変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする手順と、
    前記メモリオーナーシップエントリからの前記格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致しない場合、前記ゲストワークロードからの、メモリにアクセスする前記要求をアボートする手順と
    を実行させるためのコンピュータプログラム。
  2. 前記プロセッサに、さらに、
    前記変換後のハードウェア物理アドレスに対する前記メモリオーナーシップエントリからの前記格納された期待ハードウェア物理アドレスが前記変換後のハードウェア物理アドレスと一致するかどうかを判定する手順を実行させ、
    前記ゲストワークロードが前記変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする手順は、(a)前記メモリオーナーシップエントリからの格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致し、且つ、(b)前記メモリオーナーシップエントリからの前記格納された期待ハードウェア物理アドレスが前記変換後のハードウェア物理アドレスと一致した場合、前記ゲストワークロードを有効にする手順を含む、請求項1に記載のコンピュータプログラム。
  3. 前記メモリオーナーシップエントリは、元のゲストアドレスをそれぞれの元のハードウェア物理アドレスにマッピングする、請求項1又は2に記載のコンピュータプログラム。
  4. 前記プロセッサに、さらに、
    前記ゲストワークロードに対する格納された期待レジスタ値を識別して、前記プロセッサが、前記ゲストワークロードに対するページディレクトリ及びページテーブルの位置を特定することを可能にする手順と、
    ワークロードマネージャ提供のレジスタ値が前記ゲストワークロードの前記格納された期待レジスタ値と一致することを、前記ゲストワークロードに対する前記ページディレクトリ及び前記ページテーブルにアクセスする前に確認する手順と
    を実行させる、請求項1から3のいずれか一項に記載のコンピュータプログラム。
  5. 前記プロセッサに、さらに、
    前記ゲストワークロードに対する制御構造のハードウェア物理アドレスを前記ワークロードマネージャから受け取ったことに応答して、前記ゲストワークロードに対する前記メモリオーナーシップ構造内の前記ハードウェア物理アドレスに対するメモリオーナーシップエントリ内の制御構造標識が真であるかどうかを、前記ハードウェア物理アドレスから前記ゲストワークロードに対する前記制御構造を読み込む前に判定する手順を実行させる、請求項1から4のいずれか一項に記載のコンピュータプログラム。
  6. 前記プロセッサに、さらに、
    特定の元のハードウェア物理アドレスの期待コンテンツ確認値を識別する手順と、
    前記期待コンテンツ確認値が前記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、前記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する手順を実行させる、請求項1から5のいずれか一項に記載のコンピュータプログラム。
  7. 請求項1から6のいずれか一項に記載のコンピュータプログラムを格納するコンピュータ可読記憶媒体。
  8. プロセッサに、
    信頼できないワークロードマネージャにより管理されているゲストワークロードを実行する手順であって、前記ゲストワークロードは、
    (i)前記信頼できないワークロードマネージャから、メモリの領域の割り振りを受け取り、
    (ii)前記メモリの前記領域のメモリ位置に対する元のゲストアドレスを提供し、
    (iii)前記元のゲストアドレスに割り当てられた元のハードウェア物理アドレスを受け取り、
    (iv)前記ゲストワークロードに対するメモリオーナーシップ構造のメモリオーナーシップエントリを作成し、前記メモリオーナーシップエントリは、前記元のハードウェア物理アドレスを前記元のゲストアドレスにマッピングする、手順と、
    要求されたゲストアドレスを用いてメモリにアクセスする要求を前記ゲストワークロードから受け取ったことに応答して、前記要求されたゲストアドレスに対応する変換後のハードウェア物理アドレスを取得する手順と、
    前記ゲストワークロードに対する前記メモリオーナーシップ構造が、前記要求されたゲストアドレスと一致する格納された期待ゲストアドレスを含む前記変換後のハードウェア物理アドレスに対するメモリオーナーシップエントリを含むかどうかを判定する手順と、
    前記ゲストワークロードに対する前記メモリオーナーシップ構造が、前記要求されたゲストアドレスと一致する前記格納された期待ゲストアドレスを含む前記変換後のハードウェア物理アドレスに対するメモリオーナーシップエントリを含んでいない場合、前記ゲストワークロードからの、メモリにアクセスする前記要求をアボートする手順と
    を実行させるためのコンピュータプログラム。
  9. 前記ゲストワークロードは、さらに、
    前記ゲストワークロードによって前記メモリの前記領域に書き込まれたコンテンツを、前記ゲストワークロード用のコンシューマ提供のキーを用いて暗号化させ、
    前記ゲストワークロードに対するそれぞれのメモリオーナーシップエントリを前記コンシューマ提供のキーを用いて暗号化させる、請求項8に記載のコンピュータプログラム。
  10. 前記ゲストワークロードに対する前記メモリオーナーシップエントリを前記コンシューマ提供のキーを用いて暗号化させることは、前記メモリオーナーシップエントリの前記元のゲストアドレスを、前記メモリオーナーシップエントリの前記元のハードウェア物理アドレスに結び付ける、請求項9に記載のコンピュータプログラム。
  11. 前記ゲストワークロードによって書き込まれた前記コンテンツを前記コンシューマ提供のキーを用いて暗号化させることは、さらに、前記メモリオーナーシップエントリの前記元のゲストアドレスを、前記メモリオーナーシップエントリの前記元のハードウェア物理アドレスの暗号化されたコンテンツに結び付ける、請求項9又は10に記載のコンピュータプログラム。
  12. 前記ゲストワークロードは、さらに、前記ゲストワークロードに対する前記メモリオーナーシップ構造に格納される前記信頼できないワークロードマネージャに前記メモリオーナーシップエントリを提供する、請求項8から11のいずれか一項に記載のコンピュータプログラム。
  13. 前記メモリオーナーシップエントリは、前記元のハードウェア物理アドレスを元のゲスト物理アドレスにマッピングする、請求項8から12のいずれか一項に記載のコンピュータプログラム。
  14. 前記ゲストワークロードは、さらに、前記プロセッサが前記ゲストワークロードに対するページディレクトリ及びページテーブルの位置を特定することが可能になるように、前記ゲストワークロードに対する期待レジスタ値を格納し、
    前記コンピュータプログラムは、前記プロセッサに、
    ワークロードマネージャ提供のレジスタ値が前記ゲストワークロードに対する前記期待レジスタ値と一致することを、前記ゲストワークロードに対する前記ページディレクトリ及び前記ページテーブルにアクセスする前に確認する手順を実行させる、請求項8から13のいずれか一項に記載のコンピュータプログラム。
  15. 前記プロセッサに、
    前記ゲストワークロードに対する制御構造のハードウェア物理アドレスを前記ワークロードマネージャから受け取ったことに応答して、前記ゲストワークロードに対する前記メモリオーナーシップ構造内の前記ハードウェア物理アドレスに対するメモリオーナーシップエントリ内の制御構造標識が真であるかどうかを、前記ハードウェア物理アドレスから前記ゲストワークロードに対する前記制御構造を読み込む前に判定する手順をさらに実行させる、請求項8から14のいずれか一項に記載のコンピュータプログラム。
  16. 前記ゲストワークロードは、さらに、特定の元のハードウェア物理アドレスの期待コンテンツ確認値を格納し、前記期待コンテンツ確認値は、前記特定の元のハードウェア物理アドレスのコンテンツをハッシュすることにより決定され、
    前記コンピュータプログラムは、前記プロセッサに、
    前記期待コンテンツ確認値が前記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、前記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する手順を実行させる、請求項8から15のいずれか一項に記載のコンピュータプログラム。
  17. 請求項8から16のいずれか一項に記載のコンピュータプログラムを格納するコンピュータ可読記憶媒体。
  18. メモリと、
    前記メモリに結合されたプロセッサと、
    前記プロセッサに結合されたコンピュータ可読記憶媒体と
    を備え、前記コンピュータ可読記憶媒体は、実行されるときに、前記プロセッサが、
    信頼できないワークロードマネージャにより管理されているゲストワークロードを実行する手順であって、前記ゲストワークロードは、前記ゲストワークロードに対するメモリオーナーシップ構造のメモリオーナーシップエントリを作成し、前記メモリオーナーシップエントリは、元のゲストアドレスをそれぞれの元のハードウェア物理アドレスにマッピングする、手順と、
    要求されたゲストアドレスを用いて前記メモリにアクセスする要求を前記ゲストワークロードから受け取る手順と、
    前記要求されたゲストアドレスを用いて前記メモリにアクセスする前記要求を前記ゲストワークロードから受け取った後に、前記要求されたゲストアドレスに対応する変換後のハードウェア物理アドレスを取得する手順と、
    前記ゲストワークロードに対する前記メモリオーナーシップ構造が、前記変換後のハードウェア物理アドレスに対するメモリオーナーシップエントリを含むかどうかを判定する手順と、
    前記ゲストワークロードに対する前記メモリオーナーシップ構造が、前記変換後のハードウェア物理アドレスに対するメモリオーナーシップエントリを含む場合、前記メモリオーナーシップエントリからの格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致するかどうかを判定する手順と、
    前記メモリオーナーシップエントリからの前記格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致する場合、前記ゲストワークロードが前記変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする手順と、
    前記メモリオーナーシップエントリからの前記格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致しない場合、前記ゲストワークロードからの、前記メモリにアクセスする前記要求をアボートする手順と
    を有する操作を実行することを可能にする命令を有する、装置。
  19. 前記命令は、前記プロセッサが、
    前記変換後のハードウェア物理アドレスに対する前記メモリオーナーシップエントリからの格納された期待ハードウェア物理アドレスが前記変換後のハードウェア物理アドレスと一致するかどうかを判定する手順を有するさらなる操作を実行することを可能にし、
    前記ゲストワークロードが前記変換後のハードウェア物理アドレスのコンテンツにアクセスすることを可能にする手順は、(a)前記メモリオーナーシップエントリからの前記格納された期待ゲストアドレスが前記要求されたゲストアドレスと一致し、且つ、(b)前記メモリオーナーシップエントリからの前記格納された期待ハードウェア物理アドレスが前記変換後のハードウェア物理アドレスと一致した場合、前記ゲストワークロードを有効にする手順を含む、請求項18に記載の装置。
  20. 前記メモリオーナーシップエントリは、元のゲスト物理アドレスをそれぞれの元のハードウェア物理アドレスにマッピングする、請求項18又は19に記載の装置。
  21. 前記命令は、前記プロセッサが、
    前記ゲストワークロードに対する格納された期待レジスタ値を識別して、前記ゲストワークロードに対するページディレクトリ及びページテーブルの位置を特定する手順と、
    ワークロードマネージャ提供のレジスタ値が前記ゲストワークロードの前記格納された期待レジスタ値と一致することを、前記ゲストワークロードに対する前記ページディレクトリ及び前記ページテーブルにアクセスする前に確認する手順と
    を有するさらなる操作を実行することを可能にする、請求項18から20のいずれか一項に記載の装置。
  22. 前記命令は、前記プロセッサが、
    前記ゲストワークロードに対する制御構造のハードウェア物理アドレスを前記ワークロードマネージャから受け取ったことに応答して、前記ゲストワークロードに対する前記メモリオーナーシップ構造内の前記ハードウェア物理アドレスに対するメモリオーナーシップエントリ内の制御構造標識が真であるかどうかを、前記ハードウェア物理アドレスから前記ゲストワークロードに対する前記制御構造を読み込む前に判定する手順を有するさらなる操作を実行することを可能にする、請求項18から21のいずれか一項に記載の装置。
  23. 前記命令は、前記プロセッサが、
    特定の元のハードウェア物理アドレスの期待コンテンツ確認値を識別する手順と、
    前記期待コンテンツ確認値が前記特定の元のハードウェア物理アドレスのコンテンツのハッシュ値と一致することを、前記特定の元のハードウェア物理アドレスに格納されたデータにアクセスする前に確認する手順と
    を有するさらなる操作を実行することを可能にする、請求項18から22のいずれか一項に記載の装置。
JP2022163723A 2017-11-10 2022-10-12 コンピュータプログラム、コンピュータ可読記憶媒体及び装置 Active JP7428770B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/808,986 2017-11-10
US15/808,986 US10671737B2 (en) 2017-11-10 2017-11-10 Cryptographic memory ownership table for secure public cloud
JP2018190245A JP7158985B2 (ja) 2017-11-10 2018-10-05 セキュアなパブリッククラウドのための暗号メモリオーナーシップテーブル

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2018190245A Division JP7158985B2 (ja) 2017-11-10 2018-10-05 セキュアなパブリッククラウドのための暗号メモリオーナーシップテーブル

Publications (2)

Publication Number Publication Date
JP2023015049A JP2023015049A (ja) 2023-01-31
JP7428770B2 true JP7428770B2 (ja) 2024-02-06

Family

ID=65230509

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2018190245A Active JP7158985B2 (ja) 2017-11-10 2018-10-05 セキュアなパブリッククラウドのための暗号メモリオーナーシップテーブル
JP2022163723A Active JP7428770B2 (ja) 2017-11-10 2022-10-12 コンピュータプログラム、コンピュータ可読記憶媒体及び装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2018190245A Active JP7158985B2 (ja) 2017-11-10 2018-10-05 セキュアなパブリッククラウドのための暗号メモリオーナーシップテーブル

Country Status (4)

Country Link
US (3) US10671737B2 (ja)
JP (2) JP7158985B2 (ja)
CN (1) CN109783188B (ja)
DE (1) DE102018123710A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11693792B2 (en) * 2018-01-04 2023-07-04 Google Llc Infernal storage in cloud disk to support encrypted hard drive and other stateful features
US10802983B2 (en) * 2018-05-31 2020-10-13 Vmware, Inc. Programmable block storage addressing using embedded virtual machines
US11106441B2 (en) * 2018-09-14 2021-08-31 Microsoft Technology Licensing, Llc Secure device-bound edge workload delivery
US11341281B2 (en) * 2018-09-14 2022-05-24 International Business Machines Corporation Providing differential privacy in an untrusted environment
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
US11455398B2 (en) * 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11550903B1 (en) * 2019-04-26 2023-01-10 Joseph Alan Epstein System and method for trustworthiness, reputation, provenance, and measurement of software
US11720384B2 (en) * 2020-06-05 2023-08-08 Nxp B.V. Program code protection in a data processing system
EP4226573A1 (en) 2020-10-05 2023-08-16 Redcom Laboratories, Inc. Zkmfa: zero-knowledge based multi-factor authentication system
US11782744B2 (en) * 2020-10-08 2023-10-10 Nxp B.V. Data processing system and method for accessing data in the data processing system
CN114490450A (zh) * 2020-11-12 2022-05-13 华为技术有限公司 一种地址转换关系的配置方法及计算机系统
CN112817780B (zh) * 2021-02-01 2022-03-11 上海交通大学 一种实现安全与高性能进程间通信的方法和系统
US11809607B2 (en) 2021-08-05 2023-11-07 International Business Machines Corporation Customization of multi-part metadata of a secure guest
US11829495B2 (en) 2021-08-05 2023-11-28 International Business Machines Corporation Confidential data provided to a secure guest via metadata
CN114124883B (zh) * 2021-10-12 2023-09-12 鸬鹚科技(深圳)有限公司 基于云存储地址的数据访问方法、装置、计算机设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090248950A1 (en) 2008-03-25 2009-10-01 Masaru Tamaki User data protection method in server apparatus, server apparatus and computer program
US20130054934A1 (en) 2011-08-29 2013-02-28 International Business Machines Corporation Method and Apparatus for Performing Mapping Within a Data Processing System Having Virtual Machines

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069413B1 (en) * 2003-01-29 2006-06-27 Vmware, Inc. Method and system for performing virtual to physical address translations in a virtual machine monitor
CN100472452C (zh) * 2006-06-23 2009-03-25 联想(北京)有限公司 一种虚拟机系统及其硬件设备的切换方法
US20080065854A1 (en) * 2006-09-07 2008-03-13 Sebastina Schoenberg Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor
US8738932B2 (en) 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
US8954959B2 (en) * 2010-09-16 2015-02-10 Red Hat Israel, Ltd. Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU
US9336036B2 (en) * 2011-03-31 2016-05-10 Intel Corporation System method for memory virtualization control logic for translating virtual memory in space of guest memory based on translated codes in response to memory failure
CN102855450B (zh) * 2011-06-28 2015-10-28 上海网技信息技术有限公司 用于对虚拟计算环境进行隔离保护的方法及系统
US9804870B2 (en) * 2011-10-28 2017-10-31 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
US8819455B2 (en) 2012-10-05 2014-08-26 Intel Corporation Parallelized counter tree walk for low overhead memory replay protection
US9355032B2 (en) * 2012-10-08 2016-05-31 International Business Machines Corporation Supporting multiple types of guests by a hypervisor
US9286152B2 (en) 2013-06-14 2016-03-15 Microsoft Technology Licensing, Llc Securely obtaining memory content after device malfunction
US9563455B2 (en) 2013-10-28 2017-02-07 Intel Corporation Virtualization exceptions
US9213653B2 (en) 2013-12-05 2015-12-15 Intel Corporation Memory integrity
CN103731353B (zh) * 2013-12-26 2017-07-14 华为技术有限公司 虚拟机的物理地址获取方法
KR101541350B1 (ko) * 2014-03-04 2015-08-05 주식회사 윈스 클라우드 서비스 네트워크에서 트래픽 제어를 통한 클라우드 보안 서비스 제공 방법 및 시스템
US9792222B2 (en) * 2014-06-27 2017-10-17 Intel Corporation Validating virtual address translation by virtual machine monitor utilizing address validation structure to validate tentative guest physical address and aborting based on flag in extended page table requiring an expected guest physical address in the address validation structure
US9335943B2 (en) 2014-06-30 2016-05-10 Intel Corporation Method and apparatus for fine grain memory protection
US9684605B2 (en) * 2015-02-23 2017-06-20 Intel Corporation Translation lookaside buffer for guest physical addresses in a virtual machine
US9772962B2 (en) * 2015-05-28 2017-09-26 Red Hat Israel, Ltd. Memory sharing for direct memory access by a device assigned to a guest operating system
US9904782B2 (en) * 2015-10-27 2018-02-27 Mcafee, Llc Synchronous execution of designated computing events using hardware-assisted virtualization
US10255196B2 (en) * 2015-12-22 2019-04-09 Intel Corporation Method and apparatus for sub-page write protection
US10185679B2 (en) * 2016-02-24 2019-01-22 Red Hat Israel, Ltd. Multi-queue device assignment to virtual machine groups
US10169244B2 (en) * 2016-07-29 2019-01-01 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US10013199B2 (en) * 2016-11-15 2018-07-03 Red Hat Israel, Ltd. Translation bypass by host IOMMU for systems with virtual IOMMU

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090248950A1 (en) 2008-03-25 2009-10-01 Masaru Tamaki User data protection method in server apparatus, server apparatus and computer program
JP2009230596A (ja) 2008-03-25 2009-10-08 Hitachi Ltd サーバ装置のユーザデータ保護方法、サーバ装置及びコンピュータプログラム
US20130054934A1 (en) 2011-08-29 2013-02-28 International Business Machines Corporation Method and Apparatus for Performing Mapping Within a Data Processing System Having Virtual Machines
WO2013031446A1 (ja) 2011-08-29 2013-03-07 インターナショナル・ビジネス・マシーンズ・コーポレーション 論理アドレスを物理アドレスに変換する装置及び方法

Also Published As

Publication number Publication date
CN109783188A (zh) 2019-05-21
DE102018123710A1 (de) 2019-05-16
US20200349266A1 (en) 2020-11-05
US11520906B2 (en) 2022-12-06
US20200293668A1 (en) 2020-09-17
CN109783188B (zh) 2024-04-09
US20190042764A1 (en) 2019-02-07
JP2023015049A (ja) 2023-01-31
JP2019091430A (ja) 2019-06-13
US10671737B2 (en) 2020-06-02
JP7158985B2 (ja) 2022-10-24
US11651085B2 (en) 2023-05-16

Similar Documents

Publication Publication Date Title
JP7428770B2 (ja) コンピュータプログラム、コンピュータ可読記憶媒体及び装置
US11775447B2 (en) System, apparatus and method for page granular, software controlled multiple key memory encryption
CN108509250B (zh) 具有受保护的访客机验证主机控制的安全公共云
US11520611B2 (en) Secure public cloud using extended paging and memory integrity
US20220019698A1 (en) Secure Public Cloud with Protected Guest-Verified Host Control
US11841806B1 (en) System, apparatus and method for integrity protecting tenant workloads in a multi-tenant computing environment
US9784260B2 (en) System and method for processor-based security
US10684945B2 (en) System, apparatus and method for providing key identifier information in a non-canonical address space
JP2019532438A (ja) 処理システムにおけるダイレクトメモリアクセス認可
US10545883B2 (en) Verification bit for one-way encrypted memory
Tadokoro et al. Preventing information leakage from virtual machines' memory in iaas clouds
EP4202702A1 (en) Method and apparatus to set guest physical address mapping attributes for trusted domain
Chhabra Towards Performance, System and Security Issues in Secure Processor Architectures

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221111

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231226

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240125

R150 Certificate of patent or registration of utility model

Ref document number: 7428770

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150