JP6804665B2 - ハイパーバイザと仮想マシンとの間のメモリページ遷移の監視 - Google Patents

ハイパーバイザと仮想マシンとの間のメモリページ遷移の監視 Download PDF

Info

Publication number
JP6804665B2
JP6804665B2 JP2019553102A JP2019553102A JP6804665B2 JP 6804665 B2 JP6804665 B2 JP 6804665B2 JP 2019553102 A JP2019553102 A JP 2019553102A JP 2019553102 A JP2019553102 A JP 2019553102A JP 6804665 B2 JP6804665 B2 JP 6804665B2
Authority
JP
Japan
Prior art keywords
memory
hypervisor
virtual machine
memory page
subset
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
JP2019553102A
Other languages
English (en)
Other versions
JP2020515969A5 (ja
JP2020515969A (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2020515969A publication Critical patent/JP2020515969A/ja
Publication of JP2020515969A5 publication Critical patent/JP2020515969A5/ja
Application granted granted Critical
Publication of JP6804665B2 publication Critical patent/JP6804665B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Description

(関連出願の相互参照)
本願は、2017年3月29日に出願された「PSP/HV Flows with SNP」という名称の米国仮特許出願第62/478,148号(代理人整理番号1458−17TEMP01−PR)に関連し、この優先権を主張するものであり、この内容が、引用することによって本明細書に援用される。
多くのプロセッサアプリケーションにおいて、情報のセキュリティは重要な機能である。例えば、プロセッサは、IAAS(Infrastructure As A Service)環境のサーバで使用され、このプロセッサは、1つ以上の仮想マシン(VM)を実行し、ハイパーバイザを実行して、サーバハードウェアをVM間で分割し、VMを互いに隔離する。異なるVMが異なる顧客のために実行される可能性があるので、各VMによって用いられる情報(命令及びデータ)が、他のVM及びハイパーバイザによるアクセスから保護されることが望ましい。しかしながら、ハイパーバイザに不具合(例えば、バグ)があると、ハイパーバイザ自体が不正利用され易くなり、ハイパーバイザ又はVMが別のVMの情報にアクセスできるようになる。
添付の図面を参照することによって、本発明をより良く理解することができ、その多くの特徴及び利点が当業者に明らかになるであろう。異なる図面で同じ符号を使用している場合、類似又は同一のアイテムを示している。
いくつかの実施形態による、VMとハイパーバイザとの間で遷移するメモリページの内容を検証するために、ハイパーバイザと共にセキュリティモジュールを使用する処理システムのブロック図である。 いくつかの実施形態による、VMとハイパーバイザとの間で遷移するメモリページのハッシュを生成して記憶する、図1の処理システムのセキュリティモジュールの一例を示すブロック図である。 いくつかの実施形態による、VMに割り当てられたメモリページのサブセットをハイパーバイザに割り当てる、図1の処理システムのセキュリティモジュールの一例を示すブロック図である。 いくつかの実施形態による、VMのバルーンプールに割り当てられたメモリページのサブセットをハイパーバイザに割り当てる、図1の処理システムのセキュリティモジュールの一例を示すブロック図である。 いくつかの実施形態による、VMに割り当てられたメモリページのサブセットの内容がVMとハイパーバイザとの間で遷移する場合に、当該内容を図1の処理システムのセキュリティモジュールで検証する方法を示すフロー図である。 いくつかの実施形態による、VMのバルーンプールに割り当てられたメモリページのサブセットをハイパーバイザに割り当てる方法を示すフロー図である。
図1〜図6は、メモリページの内容が、処理システムのプロセッサで実行する1つ以上の仮想マシン(VM)と、VMと処理システムのハードウェアとの間のインタフェースを提供するハイパーバイザと、の間で遷移する場合に、プロセッサのメモリアクセスパス内のセキュリティモジュールを用いてメモリページの内容を検証することによって、セキュア情報を処理システムのプロセッサで保護する技術を示している。ハイパーバイザを使用して、メモリページと呼ばれる連続するブロックに分割されたメモリの専用部分と、そのプライベート用途のための処理システムの他のリソースと、を各VMに割り当てることよって、VMを隔離する。いくつかの実施形態では、ハイパーバイザは、例えば、ハイパーバイザがメモリ不足である場合に、VMがメモリの専用部分のサブセットをハイパーバイザに戻すように要求してもよい。ハイパーバイザは、例えば、メモリのサブセットに対するVMによる要求に応じて、後に、メモリのサブセットをVMに戻すことができる。しかしながら、ハイパーバイザ内のバグ、又は、悪用の手段として悪意を持って変更されたハイパーバイザによって、ハイパーバイザ又は別のVMが、メモリのサブセット内の情報を調べたり、変更したりすることができる。本明細書に記載された技術を使用して、1つ以上のVMとハイパーバイザとの間でメモリページが遷移する場合に、プロセッサのセキュリティモジュールを用いて、ハイパーバイザ又は他のVMによって変更されたメモリページを遷移元のVMに戻すことができないようにメモリページを監視する。
いくつかの実施形態では、ハイパーバイザがメモリの一部をVMに割り当てる場合に、メモリの割り当てられた部分のサブセットを例えば暗号化してセキュアにし、メモリの割り当てられた部分の残り(例えば、「余分なメモリ(excess memory)」と呼ばれる、或る期間中にVMによって使用されることが予想されないメモリ)を、暗号化されていない形式(例えば、バルーンプール)で残す。余分なメモリページがVMによって書き込まれていないので、VMによって余分なメモリページに記憶される情報がハイパーバイザによって侵害される可能性があるというセキュリティ上のリスクがない。したがって、余分なメモリページが利用可能な場合、ハイパーバイザは、セキュリティモジュールが余分なメモリページを監視することなく、余分なメモリページを使用して戻すことが可能である。ハイパーバイザは、セキュリティモジュールによる監視をバイパスすることによって、VMに割り当てられたセキュアなメモリページを使用するよりも効率的に余分なメモリページを使用することができる。
図1は、いくつかの実施形態による、VMとハイパーバイザとの間で遷移するメモリページの監視をサポートする処理システム100を示す図である。処理システム100は、プロセッサ102と、メモリ120と、を含む。処理システム100は、例えば、サーバ、パーソナルコンピュータ、タブレット、セットトップボックス、ゲームシステム等の様々な電子デバイスの何れかに組み込まれてもよい。プロセッサ102は、概して、所定のタスクを実行するためにプロセッサ102の回路を操作する命令セット(例えば、コンピュータプログラム)を実行するように構成されている。メモリ120は、プロセッサ102によって使用されるデータを記憶することによって、これらのタスクの実行を容易にする。メモリ120は、ランダムアクセスメモリ(RAM)や、例えばフラッシュメモリ若しくはハードディスクドライブ(HDD)等の不揮発性メモリ等であってもよいし、これらの組み合わせであってもよい。
プロセッサ102は、命令セットを実行する過程において、データをメモリ120に記憶するための書き込み要求と、データをメモリ120から取得するための読み出し要求と、を含むメモリアクセス要求を生成する。各メモリアクセス要求は、メモリアクセス要求の対象となるメモリ120の位置を示すメモリアドレス(例えば、システムの物理アドレス)を含む。メモリ120は、読み出し要求に応じて、読み出し要求のメモリアドレスに対応する位置に記憶された情報(データ又は命令)を取得し、この情報をプロセッサ102に提供する。メモリ120は、書き込み要求に応じて、当該要求の書き込み情報を、当該要求のメモリアドレスに対応する位置に記憶する。
プロセッサ102は、暗号化モジュール115を含む。暗号化モジュール115は、汎用プロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、プロセッサコアの動作モード、又は、処理システム100のセキュリティ動作(プロセッサ102で実行されるエンティティ(例えば、仮想マシン、コンピュータプログラム等)の登録、実行されるエンティティのセキュリティキーの生成及び識別、セキュリティ動作に関する処理システム100の認証等を含む)を実行するように設計され構成された他のモジュールである。本明細書でさらに説明するように、暗号化モジュール115は、セキュリティキーを生成すること、処理システム100で実行するように登録されたエンティティを識別すること、及び、暗号隔離を有効にする他の動作によって、処理システム100での情報の暗号隔離をサポートする。
プロセッサ102は、命令の実行を容易にするために、1つ以上のプロセッサコア106と、キャッシュ108と、ノースブリッジ110と、セキュリティモジュール130と、を含む。図1には単一のプロセッサコア106のみが示されているが、処理システム100は、複数のプロセッサコアを含むことができる。プロセッサコア106は、命令を個別且つ同時に実行する処理ユニットである。いくつかの実施形態では、各プロセッサコア106は、命令をフェッチし、フェッチされた命令を対応する動作にデコードし、処理システム100のリソースを使用して、メモリアクセス要求を含む動作を実行する個別の命令パイプラインを含む。各プロセッサコア106は、各メモリアクセス要求を、メモリアクセス要求に対応する情報が暗号保護のために指定されていることを示すセキュアメモリアクセス要求、又は、メモリアクセス要求に対応する情報が暗号保護のために指定されていないことを示す非セキュアメモリアクセス要求の2つのタイプの何れかとして識別するように構成されている。
いくつかの実施形態では、処理システム100は、セキュリティスキームを実装することによって、情報のセキュリティ指定(情報を暗号で保護するかどうか)を、情報がメモリ120に記憶される場所に対応するか、情報のタイプ(例えば、命令やデータ)に対応するメモリアドレスに含まれる制御ビットに基づいて割り当てる。これにより、大量のデータをセキュアな情報として容易に分類することができるので、効率的な情報保護が可能になる。例えば、いくつかの実施形態では、命令情報、又は、メモリ120の物理アドレスへの仮想アドレスのマッピングを提供するページテーブル情報等の特定のタイプの情報がセキュアな情報として指定されるように、制御ビットが処理システム100によって設定され、これにより、後述するように、この情報を暗号によって保護する。例えば、データに割り当てられるアドレスの制御ビットを、プロセッサ102で実行するプログラムによって要求される指定に基づいて、きめのより細かい(more fine-grained)方法で指定することができる。このセキュリティスキームは、より一般的なデータについての柔軟性を依然として提供しながら、重要なデータの保護(例えば、仮想マシン又はそのプログラムの不正な実行等の防止)のために提供される。
いくつかの実施形態では、情報に割り当てられるセキュリティタイプは、当該情報の対応するメモリアドレスに基づいて指定されるので、処理システム100は、ページテーブル自体を使用して、各メモリアドレスのセキュリティタイプを示す。したがって、プロセッサコア106は、メモリアクセス要求に対応するメモリアドレスを識別する過程において、メモリアクセス要求のタイプを識別する。特に、メモリアドレスがセキュアな情報を記憶するものとして示される場合、対応するメモリアクセスは、セキュアなメモリアクセスとして識別される。同様に、メモリアドレスが非セキュアな情報を記憶するものとして示される場合、対応するメモリアクセスは、非セキュアなメモリアクセスとして識別される。
キャッシュ108は、メモリ120に記憶された情報のサブセットを記憶するメモリデバイスであり、これにより、プロセッサコア106は、各々の情報のサブセットに迅速にアクセスすることができる。図1には単一のキャッシュ108のみが示されているが、処理システム100は、プロセッサ102の異なるレベルのメモリ階層に存在する異なるキャッシュを含む、複数のキャッシュを含んでもよいことが理解されるであろう。キャッシュ108は、メモリアクセス要求を受信し、そのストレージアレイ(図1には示されていない)が、メモリアクセス要求の対象となる情報を記憶しているかどうかを識別する。記憶している場合、キャッシュ108は、キャッシュヒットを示し、ストレージアレイにおいてメモリアクセス要求を満たす。キャッシュ108は、対象となる情報を記憶していない場合に、キャッシュミスを示し、メモリアクセス要求をノースブリッジ110に提供する。
図1に示す例では、処理システム100のメモリアクセスパスは、キャッシュ108が、セキュアな情報を含む情報を非暗号化形式で記憶するようになっている。したがって、いくつかの実施形態では、キャッシュ108は、所定のサイズ(例えば、キャッシュライン)のストレージ位置毎に、ストレージ位置での情報へのアクセスが認可される特定のプログラム又は他のエンティティ(例えば、VM)を識別するエンティティタグ情報を記憶する。キャッシュ108は、ストレージアレイの位置に対するメモリアクセスに応じて、メモリアクセス要求を生成したエンティティの識別情報(identity)をエンティティタグ情報と比較し、ミスマッチに応じてキャッシュミスを示し、これにより、情報への不正なアクセスを防止する。
ノースブリッジ110は、メモリ120と通信するためのインタフェースをプロセッサ102に提供するメモリコントローラである。いくつかの実施形態では、ノースブリッジ110は、入出力コントローラ(例えば、サウスブリッジ、図示省略)とインタフェースし、異なるプロセッサコア106間のインタフェースを提供する等の他の機能を実行することができる。ノースブリッジ110は、メモリコントローラとしての能力において、キャッシュ108からメモリアクセス要求を受信し、これらの要求のメモリ120への供給を制御する。また、ノースブリッジ110は、メモリアクセス要求への応答をメモリ120から受信し、キャッシュ108への応答の供給を制御する。いくつかの実施形態では、ノースブリッジ110は、メモリアクセス要求(例えば、ダイレクトメモリアクセス要求)を処理システム100の入出力デバイス(図示省略)から受信し、これらのメモリ120への供給を制御することができる。
ノースブリッジ110は、情報の暗号隔離を提供するために、特定の暗号規格に従って、キー116,118に基づいて情報を暗号化及び復号化するように構成された暗号化モジュール115を含む。いくつかの実施形態では、暗号化モジュール115は、高度暗号化標準(AES)の暗号化及び復号化を用いるように構成されているが、他の実施形態では、暗号化モジュール115は、他の暗号化/復号化技術を用いることができる。ノースブリッジ110は、書き込み要求を受信したことに応じて、この要求がセキュアメモリアクセス要求であるか、非セキュアメモリアクセス要求であるかを識別する。書き込み要求が非セキュアメモリアクセス要求である場合、ノースブリッジ110は、暗号化モジュール115をバイパスし、書き込まれる情報を暗号化せずに、書き込み要求をメモリ120に提供する。書き込み要求がセキュアメモリアクセス要求である場合、ノースブリッジ110は、メモリアクセス要求を生成したエンティティ(例えば、プログラム、VM、ソフトウェアサービス等)に割り当てられたキー116,118のうち1つのキーを識別する。いくつかの実施形態では、セキュリティモジュール130は、プロセッサ102で現在実行されているエンティティに基づいて選択されるキーを識別する。暗号化モジュール115は、選択されたキーを用いて、書き込まれる情報を暗号化し、暗号化された情報を含む書き込み要求をストレージ用のメモリ120に提供する。いくつかの実施形態では、暗号化モジュール115は、選択されたキーと、対応する情報の暗号化及び復号化のためのメモリアクセス要求の物理アドレスと、の両方を使用し、これにより、ブロック移動攻撃(block move attacks)を防止する。いくつかの実施形態では、暗号化モジュール115は、プロセッサ102における制御ビット(図示省略)の状態に基づいて、暗号化及び復号化に物理アドレスを使用するかどうかを識別する。制御ビット状態は、セキュリティモジュール130によって設定可能である。
ノースブリッジ110は、読み出し要求を受信したことに応じて、当該要求をメモリ120に提供した後に、当該要求に応じた情報を受信する。ノースブリッジ110は、読み出し要求を非セキュアメモリアクセス要求として識別した場合に、暗号化モジュール115をバイパスし、読み出し情報を暗号化せずにキャッシュ108に提供する。ノースブリッジ110は、読み出し要求をセキュアメモリアクセス要求として識別した場合に、読み出しアクセス要求を生成したエンティティに割り当てられたキー116,118のうち1つのキーを識別し、暗号化モジュール115は、読み出し情報を復号化する。ノースブリッジ110は、復号化された読み出し情報を、ストレージ用のキャッシュ108に提供する。場合によっては、ノースブリッジ110は、キャッシュ108への情報の供給をバイパスし、復号化された読み出し情報を、対応する読み出しアクセス要求を生成したプロセッサコアに直接提供することができる。
ハイパーバイザ152は、メモリの専用部分と、そのプライベート用途のための処理システムの他のリソースと、を各VMに割り当てることによって、VM(VM−A150,VM−B151)を隔離するように構成されている。各VM150,151は、セキュアで隔離されたハードウェアエミュレーション環境を1つ以上の仮想プロセッサに提供し、これにより、各仮想プロセッサは、対応するゲストオペレーティングシステム(OS)(図示省略)を実行する。各ゲストOS/仮想プロセッサ及びハイパーバイザ152は、関連するアドレス空間を有する。各ゲストOSは、典型的に、本明細書では「ワールドID」と呼ばれる特定の識別子を使用して識別され、本明細書では「アドレス空間識別子」又は「ASID」と呼ばれる特定の識別子を使用して、ゲストOSによって管理される下位レベルのアドレス空間が識別される。
各VMに割り当てられたアドレス空間は、セキュアな情報(例えば、セキュアアドレス空間VM−A122、セキュアアドレス空間VM−B126)を記憶するように指定されてもよい。いくつかの実施形態では、各VMに割り当てられたアドレス空間は、セキュアな情報のために指定されておらず、バルーンプール(例えば、VM−Aバルーンプール124、VM−Bバルーンプール128)に保持された余分なメモリを含んでもよい。バルーンプール124,128は、所定の期間内に対応するVMによって書き込まれることが予想されないか、対応するVMによって価値が低いとみなされたVMに割り当てられた余分なメモリを保持する物理又は仮想メモリアドレス空間である。いくつかの実施形態では、ハイパーバイザ152は、例えば、ハイパーバイザ152自体又は別のVMが追加のメモリを必要とする場合に、VMがメモリの専用部分のサブセットをハイパーバイザ152に戻すように遷移することを要求することができる。ハイパーバイザ152は、例えば、メモリのサブセットに対するVMによる要求に応じて、後に、メモリのサブセットをVMに戻すことができる。
ハイパーバイザ152とVM150,151との間のメモリのセキュアな遷移を促進するために、セキュリティモジュール130は、メモリページがハイパーバイザ152とVM150,151との間で遷移する場合に、メモリページを選択的に監視するように構成されている。ハイパーバイザ152は、VMの起動時に、メモリをVM150,151に割り当て、各VMの割り当てられたメモリの物理アドレス及びASIDを指定する。いくつかの実施形態では、ハイパーバイザ152は、各VMの割り当てられたメモリの物理アドレス及びASIDを示すログ(図示省略)を維持する。また、ハイパーバイザ152は、割り当てられたメモリを不変メモリとして指定する。いくつかの実施形態では、ハイパーバイザ152は、ログに記憶された割り当て済みメモリに関連する不変ビットを設定することによって、割り当て済みメモリを不変として指定する。ハイパーバイザ152は、メモリをVM150,151に割り当てた後に、各VM150,151が各々の割り当てられたメモリ122,126に記憶するデータ及び命令を暗号化するように、暗号化モジュール115に信号を送る(また、当該データ及び命令を測定するように、セキュリティモジュール130に信号を送る)。いくつかの実施形態では、セキュリティモジュール130は、VMが起動した場合に、各VMに固有のランダムキーであるオフライン暗号化キーを生成して記憶する。いくつかの実施形態では、各VMの割り当てられたメモリに記憶されているデータが暗号化モジュール115によって暗号化され、セキュリティモジュール130によって測定された後に、セキュリティモジュール130は、例えば、ハイパーバイザ152によって維持されたログにおいてメモリと関連する検証済みビットを設定することによって、暗号化され測定されたデータを記憶するメモリが検証されたことを示し、不変ビットをクリアする。検証指示は、暗号化され測定されたデータを記憶するメモリにVMが書き込むことができることを、VMに知らせる。
VM150,151が1つ以上のメモリページをアドレス空間122,126のセキュアなページのVMのドメインからハイパーバイザ152に遷移(「スワップアウト」又はDRAMとディスク等の別の記憶媒体との間の移動)することをハイパーバイザ152が要求する場合、セキュリティモジュール130は、特性(スワップアウトされる1つ以上のメモリページ(例えば、メモリページの物理メモリアドレス範囲)のハッシュ、1つ以上のメモリページのプレーンテキスト、ノンス(nonce)、及び、1つ以上のメモリページに関連するメタデータを含む)を測定する。セキュリティモジュール130は、測定値を記憶し、要求された1つ以上のメモリページをハイパーバイザ152に提供する。いくつかの実施形態では、ハイパーバイザ152は、測定された特性(メモリページの物理メモリアドレス範囲、1つ以上のメモリページの暗号文、ノンス、及び、1つ以上のメモリページに関連するメタデータ等)も記憶する。
その後、ハイパーバイザ152は、メモリページを遷移したVM150,151に1つ以上のメモリページを戻す(「スワップイン」又はページをDRAMに戻す)準備ができていることを信号で伝えると、記憶されている測定された特性をセキュリティモジュール130に供給する。セキュリティモジュール130は、1つ以上のメモリページの記憶されたハッシュを取得し、スワップアウトされたメモリページの測定された特性を、ハイパーバイザ152がスワップインしている1つ以上のメモリページの特性と比較する。スワップアウトされたメモリページの測定された特性が、スワップインされたメモリページの特性と一致する場合、セキュリティモジュール130は、ハイパーバイザ152がメモリページをVM150,151に戻すことを可能にする。スワップアウトされたメモリページの測定された特性が、戻されたメモリページの特性と一致しない場合、セキュリティモジュール130は、ハイパーバイザ152がメモリページをVM150,151に戻すのを抑制する。このようにして、セキュリティモジュール130は、ハイパーバイザ152が、変更されたメモリページをVM150,151にスワップインするのを抑制する。
いくつかの実施形態では、VM150,151が1つ以上のメモリページをそのバルーンプール124,128からハイパーバイザ152にスワップアウトすることをハイパーバイザ152が要求する場合、セキュリティモジュール130は、メモリページの特性の測定をバイパスし、ハイパーバイザ152が、セキュリティの監視を行うことなく、メモリページをバルーンプール124,128からハイパーバイザ152に直接スワップアウトすることを可能にする。バルーンプール124,128に記憶されたメモリページは、使用されていない余分なメモリであるか価値の低いメモリであるため、このようなメモリページは、セキュリティモジュール130による内容の検証を必要としない。
図2は、いくつかの実施形態による、VM250とハイパーバイザ252との間を遷移するメモリページ240のハッシュ245を生成して記憶する、図1の処理システム100のセキュリティモジュール230の一例を示す図である。図示した例において、ハイパーバイザ252は、VM−A250に割り当てられたメモリの一部を要求する。セキュリティモジュール230は、メモリページがVM−A250とハイパーバイザ252との間を遷移する場合に、メモリページ240の内容を検証する。セキュリティモジュール230は、ハイパーバイザ252によってスワップイン及びスワップアウトされるメモリページの測定された特性を記憶するように構成されたセキュリティモジュールメモリ235を含む。
動作中、ハイパーバイザ252は、VM−A250から追加のメモリ240を要求する。セキュリティモジュール230は、ハイパーバイザ252からの要求を受信すると、1つ以上の要求されたメモリページ240が検証され、VM−A250に割り当てられたことを確認する。いくつかの実施形態では、セキュリティモジュール230は、メモリページ240に記憶されたページデータを読み出し、復号化し、ノンスを生成し、VMが起動したときに生成されたオフライン暗号化キー(図示省略)を使用してページデータを再暗号化する。セキュリティモジュール230は、メモリページ240,245(メモリページハッシュと呼ばれる)の特性を測定し、メモリページハッシュ245をVM−A250のページスワップのリスト(図示省略)内のセキュリティモジュールメモリ235に記憶する。いくつかの実施形態では、メモリページハッシュ245は、ノンス、再暗号化されたデータ、及び、ページメタデータのハッシュである。いくつかの実施形態では、セキュリティモジュール230は、スワップアウトされたメモリページ240を、VMへのメモリの割り当てを示すハイパーバイザ252によって維持されるログ(図示省略)において「有効でない」又は「無効である」としてマークする。スワップアウトされたメモリページ240を無効としてマークすることによって、セキュリティモジュール230は、スワップアウトされたメモリページがVM−A250の書き込みに利用できないことをVM−A250に示す。これにより、ハイパーバイザ252(又は、ハイパーバイザ252がスワップアウトされたメモリページを割り当てる別のVM)とVM−A250とが、同じメモリページに同時に書き込むことを防止する。いくつかの実施形態では、セキュリティモジュール230は、再暗号化されたデータ、ノンス、ページメタデータ、及び、メモリページ240のハッシュをハイパーバイザ252に提供し、メモリページ240をハイパーバイザ252に提供する。
その後、ハイパーバイザ252は、メモリページ240をスワップインすることを要求すると、再暗号化されたデータ、ノンス、ページメタデータ、及び、メモリページ240のハッシュをセキュリティモジュール230に提供する。セキュリティモジュール230は、スワップインされたメモリページ240のハイパーバイザ252によって供給された、再暗号化されたデータ、ノンス、及び、ページメタデータのハッシュを計算し、計算されたハッシュを、記憶されたハッシュ245と比較する。計算されたハッシュと記憶されたハッシュ245とが一致しない場合、セキュリティモジュール230は、メモリページ240をスワップインする要求を拒否する。計算されたハッシュと記憶されたハッシュ245とが一致する場合、セキュリティモジュール230は、ハイパーバイザ252がメモリページ240をスワップインすることを許可し、メモリページ240をVM−A250に戻す。
図3は、いくつかの実施形態による、VM−A350に割り当てられたメモリページ340のサブセット342をハイパーバイザ352に割り当てる、図1の処理システム100のセキュリティモジュール330の一例を示すブロック図である。図示した例では、セキュリティモジュール330は、暗号化モジュール315を含む。いくつかの実施形態では、暗号化モジュール315は、セキュリティモジュール330から分離されてもよい。
VM−A350の起動時に、ハイパーバイザ352は、メモリページ340をVM−A350に割り当てる。メモリページ340は、メモリ320の指定されたメモリセキュアアドレス空間VM−A322に記憶される。ハイパーバイザ352は、セキュリティモジュール330を呼び出して、VM−A350が暗号化キーA316を使用してメモリページ340に書き込むデータを暗号化し、VM−A350に一意に関連するオフライン暗号化キーB319を生成する。ハイパーバイザ352がメモリページ340のサブセット342を要求すると、セキュリティモジュール330は、メモリページ342のサブセットに記憶されたページデータを読み出して復号化し、ノンスを生成し、VMが起動したときに生成されたオフライン暗号化キーB319を使用してページデータを再暗号化する。セキュリティモジュール330は、ノンス、再暗号化されたデータ、及び、ページメタデータのハッシュを計算し、当該ハッシュを、VM−A350によってスワップアウトされたページのスワップリスト(図示省略)と共に記憶する。
図4は、いくつかの実施形態による、VM−A450のバルーンプール424に割り当てられたメモリページ442のサブセットをハイパーバイザ452に割り当てる、図1の処理システム100のセキュリティモジュール430の一例を示すブロック図である。図示した例では、メモリ420は、VM−A450のセキュアな情報を記憶するように設計された部分422と、或る期間に書き込まれることが予想されない又はVM−A450によって価値が低いとみなされた余分なメモリページを記憶するための、VM−A450に割り当てられたバルーンプール424と、を含む。
ハイパーバイザ452が、VM−Aバルーンプール424に記憶されたメモリページ442のサブセットを要求すると、セキュリティモジュール430は、メモリページ442のサブセットのハッシュを暗号化し、計算し、記憶することをバイパスする。メモリページ442のサブセットが使用されていないか、VM−A450によって価値が低いとみなされているので、ハイパーバイザ452は、メモリページ442のサブセットの変更に対してセキュリティモジュール430の保護を呼び出すことなく、メモリページをVM−Aバルーンプール424にスワップインし、VM−Aバルーンプール424からスワップアウトすることができる。
図5は、いくつかの実施形態による、メモリページのサブセットがVM−A150とハイパーバイザ152との間で遷移する場合に、VM−A150に割り当てられた当該メモリページのサブセットを図1の処理システムのセキュリティモジュール130で監視する方法500を示すフロー図である。ブロック502において、ハイパーバイザ152は、複数のメモリページを仮想マシン150に割り当てる。ブロック504において、暗号化モジュール115は、VM−A150によって書き込まれた複数のメモリページを第1キー116で暗号化する。ブロック506において、セキュリティモジュール130は、VM−A150に割り当てられたメモリページのサブセットに対するハイパーバイザ152からの要求を受信する。ブロック508において、セキュリティモジュールは、要求されたメモリページのサブセットを、VM−A150において無効として指定する。ブロック510において、セキュリティモジュールは、要求されたメモリページのサブセットを第2キーで暗号化する。ブロック512において、セキュリティモジュール130は、要求されたメモリページのサブセットの特性を測定し、記憶する。ブロック514において、セキュリティモジュール130は、要求されたメモリページのサブセットをハイパーバイザ152に提供する。
ブロック516において、セキュリティモジュール130は、メモリページのサブセットをVM−A150に戻すことを要求するハイパーバイザ152からの信号を受信する。ブロック518において、セキュリティモジュール130は、記憶されている測定されたメモリページのサブセットの特性を、ハイパーバイザ152が戻したメモリページの特性と比較する。記憶されている測定されたメモリページのサブセットの特性が、ハイパーバイザ152が戻したメモリページの特性と一致する場合、ブロック520において、セキュリティモジュールは、メモリページのサブセットをVM−A150に提供する。記憶されている測定されたメモリページのサブセットの特性が、ハイパーバイザ152が戻したメモリページの特性と一致しない場合、ブロック522において、セキュリティモジュール130は、メモリページのサブセットをスワップインする要求を拒否することによって、ハイパーバイザ152がメモリページのサブセットをVM−A150に提供するのを抑制する。いくつかの実施形態では、セキュリティモジュール130は、記憶されている測定された特性が、ハイパーバイザ152が戻したメモリページの特性と一致しないことに応じて、メモリページのサブセットを、VM−A150のキーを用いて復号化及び再暗号化する要求を拒否する。このようにして、セキュリティモジュール130は、ハイパーバイザ152がスワップインするためにVM−A150のキーを使用するのを制限することによって、ハイパーバイザ152がVM−A150のキーで暗号化されたデータをスワップインするのを抑制する。したがって、セキュリティモジュール130は、記憶されている測定された特性が、ハイパーバイザ152が戻そうとしているメモリページの特性と一致しない場合、メモリページのサブセットをセキュアページのVM−A150のドメインに戻すことを許可しない。
図6は、いくつかの実施形態による、VM−A150のバルーンプール124に割り当てられたメモリページのサブセットを、図1の処理システム100のハイパーバイザ152に割り当てる方法600を示すフロー図である。ブロック602において、ハイパーバイザ152は、メモリページをVM−A150に割り当てる。ブロック604において、ハイパーバイザは、割り当てられたメモリページの第1サブセットを、VM−A150に関連するセキュアアドレス空間122の第1メモリにおいて指定する。ブロック606において、ハイパーバイザは、割り当てられたメモリページの第2サブセットを、VM−A150に関連するバルーンプール124において指定する。ブロック608において、セキュリティモジュール130は、バルーンプール124からのメモリページに関するハイパーバイザ152からの要求を受信する。ブロック610において、セキュリティモジュール130は、少なくとも1つのメモリページを、バルーンプール124からハイパーバイザ152に提供する。ブロック612において、セキュリティモジュール130は、少なくとも1つのメモリページをVM−A150に戻すための信号をハイパーバイザ152から受信する。ブロック614において、セキュリティモジュール130は、少なくとも1つのメモリページをVMバルーンプール124に戻す。
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されないが、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、キャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし(例えば、システムRAM又はROM)、コンピュータシステムに固定的に取り付けられてもよいし(例えば、磁気ハードドライブ)、コンピュータシステムに着脱可能に取り付けられてもよいし(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい(例えば、ネットワークアクセス可能なストレージ(NAS))。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (25)

  1. 少なくとも1つのメモリページを、プロセッサにおいて実行する第1仮想マシンから前記プロセッサにおいて実行する第1ハイパーバイザに遷移させることと、
    前記プロセッサのセキュリティモジュールにおいて、前記少なくとも1つのメモリページを前記第1仮想マシンに戻すための要求を前記第1ハイパーバイザから受信することと、
    前記プロセッサのセキュリティモジュールにおいて、前記少なくとも1つのメモリページを前記第1ハイパーバイザから前記第1仮想マシンに戻すための要求に応じて、前記少なくとも1つのメモリページの内容を選択的に検証することと、
    前記第1仮想マシンによって書き込まれることが予想されないメモリページを保持するために、前記少なくとも1つのメモリページが、前記第1仮想マシンに関連するバルーンプールに割り当てられていることに応じて、前記第1ハイパーバイザが前記少なくとも1つのメモリページを戻すことを要求したことに応じて前記少なくとも1つのメモリページの内容を検証することをバイパスすることと、
    前記少なくとも1つのメモリページの内容を検証したことに応じて、又は、前記少なくとも1つのメモリページが、前記第1仮想マシンに関連する前記バルーンプールに割り当てられていることに応じて、前記少なくとも1つのメモリページを前記第1仮想マシンに提供することと、を含む、
    方法。
  2. 前記少なくとも1つのメモリページの内容を選択的に検証することは、
    前記少なくとも1つのメモリページが前記第1仮想マシンから前記第1ハイパーバイザに遷移したことに応じて、前記少なくとも1つのメモリページの少なくとも1つの特性を測定して、少なくとも1つの特性測定値を生成することと、
    前記少なくとも1つの特性測定値を前記セキュリティモジュールに記憶することと、
    前記第1ハイパーバイザが前記少なくとも1つのメモリページを戻したことに応じて、前記少なくとも1つの特性測定値を前記少なくとも1つのメモリページと比較することと、を含む、
    請求項1の方法。
  3. 前記少なくとも1つの特性測定値が前記少なくとも1つのメモリページと一致しないことに応じて、前記第1ハイパーバイザが前記少なくとも1つのメモリページを前記第1仮想マシンに提供するのを抑制することをさらに含む、
    請求項2の方法。
  4. 複数のメモリページを前記第1仮想マシンに割り当てることと、
    前記複数のメモリページの第1サブセットを、前記第1仮想マシンに関連する前記バルーンプールに記憶することであって、前記第1サブセットは、第1期間において前記第1仮想マシンによって書き込まれることが予想されないメモリページを含む、ことと、
    前記第1ハイパーバイザが少なくとも1つのメモリページを要求したことに応じて、前記複数のメモリページの前記第1サブセットの少なくとも1つのページを前記第1ハイパーバイザに提供することと、をさらに含む、
    請求項1の方法。
  5. 前記第1ハイパーバイザが、メモリページの第1サブセットの少なくとも1つのページを前記第1仮想マシンに関連する前記バルーンプールに戻すことを要求したことに応じて、メモリページの第1サブセットの少なくとも1つのページの内容を検証するのをバイパスすることをさらに含む、
    請求項4の方法。
  6. 複数のメモリページを前記第1仮想マシンに割り当てることと、
    少なくとも1つのメモリページに対する前記第1ハイパーバイザによる要求に応じて、前記複数のメモリページのサブセットを無効として指定することと、
    前記複数のメモリページのサブセットを前記第1ハイパーバイザに提供することと、をさらに含む、
    請求項1の方法。
  7. 前記複数のメモリページのサブセットの少なくとも1つの特性を測定して、少なくとも1つの特性測定値を生成することと、
    前記少なくとも1つの特性測定値を前記セキュリティモジュールに記憶することと、
    前記第1ハイパーバイザが前記複数のメモリページのサブセットを戻したことに応じて、前記少なくとも1つの特性測定値を前記複数のメモリページのサブセットと比較することと、
    前記少なくとも1つの特性測定値が前記複数のメモリページのサブセットと一致したことに応じて、前記複数のメモリページのサブセットを前記第1仮想マシンに提供することと、をさらに含む、
    請求項6の方法。
  8. 前記複数のメモリページを第1キーで暗号化することと、
    前記複数のメモリページのサブセットを第2キーで暗号化することと、をさらに含む、
    請求項6の方法。
  9. 前記第2キーは、前記複数のメモリページが前記第1仮想マシンに割り当てられたことに応じて生成される、
    請求項8の方法。
  10. 第1メモリページを、プロセッサにおいて実行する第1仮想マシンから前記プロセッサにおいて実行する第1ハイパーバイザに遷移させることと、
    前記プロセッサのセキュリティモジュールにおいて、前記第1ハイパーバイザが前記第1メモリページを前記第1仮想マシンに戻すことを要求したことに応じて、前記第1ハイパーバイザが戻すことを要求している前記第1メモリページの内容が、前記第1仮想マシンから前記第1ハイパーバイザに遷移した前記第1メモリページの内容と一致することを選択的に検証することと、
    前記第1仮想マシンによって書き込まれることが予想されないメモリページを保持するために、前記少なくとも1つのメモリページが、前記第1仮想マシンに関連するバルーンプールに割り当てられていることに応じて、前記第1ハイパーバイザが戻すことを要求している前記第1メモリページの内容が、前記第1仮想マシンから前記第1ハイパーバイザに遷移した前記第1メモリページの内容と一致するのを検証することをバイパスすることと、
    前記第1ハイパーバイザが戻すことを要求している前記第1メモリページの内容が、前記第1仮想マシンから前記第1ハイパーバイザに遷移した前記第1メモリページの内容と一致することを検証したことに応じて、又は、前記第1メモリページが、前記第1仮想マシンに関連する前記バルーンプールに割り当てられていることに応じて、前記第1メモリページを前記第1仮想マシンに提供することと、を含む、
    方法。
  11. 前記第1メモリページの内容を選択的に検証することは、
    前記第1メモリページが前記第1仮想マシンから前記第1ハイパーバイザに遷移したことに応じて、前記第1メモリページの少なくとも1つの特性を測定して、少なくとも1つの特性測定値を生成することと、
    前記少なくとも1つの特性測定値を前記セキュリティモジュールに記憶することと、
    前記第1ハイパーバイザが前記第1メモリページを戻したことに応じて、前記少なくとも1つの特性測定値を前記第1メモリページと比較することと、を含む、
    請求項10の方法。
  12. 前記少なくとも1つの特性測定値が前記第1メモリページと一致しないことに応じて、前記第1メモリページを前記第1仮想マシンに戻すための前記第1ハイパーバイザからの要求を拒否することをさらに含む、
    請求項11の方法。
  13. 複数のメモリページを前記第1仮想マシンに割り当てることと、
    前記複数のメモリページの第1サブセットを、前記第1仮想マシンに関連する前記バルーンプールに記憶することであって、前記第1サブセットは、前記第1仮想マシンによって書き込まれていないメモリページを含む、ことと、
    前記第1ハイパーバイザが少なくとも1つのメモリページを要求したことに応じて、前記複数のメモリページの前記第1サブセットの少なくとも1つのページを前記第1ハイパーバイザに提供することと、をさらに含む、
    請求項10の方法。
  14. メモリページの第1サブセットの少なくとも1つのページが前記第1ハイパーバイザから前記第1仮想マシンに遷移したことに応じて、さらに、前記第1ハイパーバイザが、メモリページの第1サブセットの少なくとも1つのページを、前記第1仮想マシンに関連するバルーンプールに提供したことに応じて、メモリページの第1サブセットの少なくとも1つのページの内容を検証するのをバイパスすることをさらに含む、
    請求項13の方法。
  15. 複数のメモリページを前記第1仮想マシンに割り当てることと、
    少なくとも1つのメモリページに対する前記第1ハイパーバイザによる要求に応じて、前記複数のメモリページのサブセットを無効として指定することと、
    前記複数のメモリページのサブセットを前記第1ハイパーバイザに提供することと、をさらに含む、
    請求項10の方法。
  16. 前記複数のメモリページのサブセットの少なくとも1つの特性を測定して、少なくとも1つの特性測定値を生成することと、
    前記少なくとも1つの特性測定値を前記セキュリティモジュールに記憶することと、
    前記第1ハイパーバイザが前記複数のメモリページのサブセットを戻したことに応じて、前記少なくとも1つの特性測定値を前記複数のメモリページのサブセットと比較することと、
    前記少なくとも1つの特性測定値が前記複数のメモリページのサブセットと一致したことに応じて、前記複数のメモリページのサブセットを前記第1仮想マシンに提供することと、をさらに含む、
    請求項15の方法。
  17. 前記複数のメモリページを第1キーで暗号化することと、
    前記複数のメモリページのサブセットを第2キーで暗号化することと、をさらに含む、
    請求項15の方法。
  18. 第1仮想マシンと、
    第1ハイパーバイザと、
    セキュリティモジュールと、を備え、
    前記セキュリティモジュールは、
    第1メモリページを前記第1仮想マシンに戻すための要求を前記第1ハイパーバイザから受信したことに応じて、前記第1ハイパーバイザが前記第1仮想マシンに戻すことを要求している前記第1メモリページの内容が、前記第1仮想マシンから前記第1ハイパーバイザに遷移した前記第1メモリページの内容と一致することを選択的に検証し、
    前記第1仮想マシンによって書き込まれることが予想されないメモリページを保持するために、前記少なくとも1つのメモリページが、前記第1仮想マシンに関連するバルーンプールに割り当てられていることに応じて、前記第1ハイパーバイザが戻すことを要求している前記第1メモリページの内容が、前記第1仮想マシンから前記第1ハイパーバイザに遷移した前記第1メモリページの内容と一致するのを検証することをバイパスすることと、
    前記第1ハイパーバイザが戻すことを要求している前記第1メモリページの内容が、前記第1仮想マシンから前記第1ハイパーバイザに遷移した前記第1メモリページの内容と一致することを検証したことに応じて、又は、前記第1メモリページが、前記第1仮想マシンに関連する前記バルーンプールに割り当てられていることに応じて、前記第1メモリページを前記第1仮想マシンに提供する、
    プロセッサ。
  19. 前記セキュリティモジュールは、
    前記第1メモリページが前記第1仮想マシンから前記第1ハイパーバイザに遷移したことに応じて、前記第1メモリページの少なくとも1つの特性を測定して、少なくとも1つの特性測定値を生成することと、
    前記少なくとも1つの特性測定値を前記セキュリティモジュールに記憶することと、
    前記第1ハイパーバイザが前記第1メモリページを戻すように要求したことに応じて、前記少なくとも1つの特性測定値を前記第1メモリページと比較することと、
    によって、前記第1メモリページの内容を選択的に検証する、
    請求項18のプロセッサ。
  20. 前記セキュリティモジュールは、
    前記少なくとも1つの特性測定値が前記第1メモリページと一致しないことに応じて、前記第1メモリページを前記第1仮想マシンに戻すための前記第1ハイパーバイザからの要求を拒否する、
    請求項19のプロセッサ。
  21. 前記セキュリティモジュールは、
    複数のメモリページを前記第1仮想マシンに割り当てることと、
    前記複数のメモリページの第1サブセットを、前記第1仮想マシンに関連する前記バルーンプールに記憶することであって、前記第1サブセットは、前記第1仮想マシンによって書き込まれていないメモリページを含む、ことと、
    前記第1ハイパーバイザが少なくとも1つのメモリページを要求したことに応じて、前記複数のメモリページの前記第1サブセットの少なくとも1つのページを前記第1ハイパーバイザに提供することと、を行う、
    請求項18のプロセッサ。
  22. 前記セキュリティモジュールは、
    前記第1ハイパーバイザが、メモリページの第1サブセットの少なくとも1つのページを前記第1仮想マシンに関連する前記バルーンプールに提供したことに応じて、メモリページの第1サブセットの少なくとも1つのページの内容を検証するのをバイパスする、
    請求項21のプロセッサ。
  23. 前記セキュリティモジュールは、
    複数のメモリページを前記第1仮想マシンに割り当てることと、
    少なくとも1つのメモリページに対する第1ハイパーバイザによる要求に応じて、前記複数のメモリページのサブセットを無効として指定することと、
    前記複数のメモリページのサブセットを前記第1ハイパーバイザに提供することと、を行う、
    請求項18のプロセッサ。
  24. 前記セキュリティモジュールは、
    前記第1メモリページの少なくとも1つの特性を測定して、少なくとも1つの特性測定値を生成することと、
    前記少なくとも1つの特性測定値を前記セキュリティモジュールに記憶することと、
    前記第1ハイパーバイザが前記第1メモリページを戻すことを要求したことに応じて、前記少なくとも1つの特性測定値を前記第1メモリページと比較することと、
    前記少なくとも1つの特性測定値が前記第1メモリページと一致したことに応じて、前記第1メモリページを前記第1仮想マシンに提供することと、を行う、
    請求項23のプロセッサ。
  25. 前記セキュリティモジュールは、
    前記複数のメモリページを第1キーで暗号化することと、
    前記複数のメモリページのサブセットを第2キーで暗号化することと、を行う、
    請求項23のプロセッサ。
JP2019553102A 2017-03-29 2017-08-24 ハイパーバイザと仮想マシンとの間のメモリページ遷移の監視 Active JP6804665B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762478148P 2017-03-29 2017-03-29
US62/478,148 2017-03-29
PCT/US2017/048471 WO2018182772A1 (en) 2017-03-29 2017-08-24 Monitoring of memory page transitions between a hypervisor and a virtual machine

Publications (3)

Publication Number Publication Date
JP2020515969A JP2020515969A (ja) 2020-05-28
JP2020515969A5 JP2020515969A5 (ja) 2020-10-01
JP6804665B2 true JP6804665B2 (ja) 2020-12-23

Family

ID=63669410

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019553102A Active JP6804665B2 (ja) 2017-03-29 2017-08-24 ハイパーバイザと仮想マシンとの間のメモリページ遷移の監視

Country Status (6)

Country Link
US (1) US10671422B2 (ja)
EP (1) EP3602376B1 (ja)
JP (1) JP6804665B2 (ja)
KR (1) KR102257320B1 (ja)
CN (1) CN110447032B (ja)
WO (1) WO2018182772A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10579439B2 (en) * 2017-08-29 2020-03-03 Red Hat, Inc. Batched storage hinting with fast guest storage allocation
US10686605B2 (en) * 2017-09-29 2020-06-16 Intel Corporation Technologies for implementing mutually distrusting domains
US11126553B2 (en) * 2019-01-31 2021-09-21 EMC IP Holding Company LLC Dynamic allocation of memory between containers
US11347869B2 (en) * 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11206128B2 (en) * 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
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
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11061711B2 (en) 2019-09-23 2021-07-13 Red Hat, Inc. Storage deduplication for virtual machines with encrypted storage
US11232030B2 (en) 2019-09-27 2022-01-25 Red Hat Inc. Storage deduplication for virtual machines with encrypted storage
US11656891B2 (en) 2019-09-27 2023-05-23 Red Hat, Inc. Copy-on-write for virtual machines with encrypted storage
US11436141B2 (en) 2019-12-13 2022-09-06 Red Hat, Inc. Free memory page hinting by virtual machines
US11494219B2 (en) * 2020-02-26 2022-11-08 Red Hat, Inc. Encryption and remote attestation of containers
US11782744B2 (en) * 2020-10-08 2023-10-10 Nxp B.V. Data processing system and method for accessing data in the data processing system
CN113688407A (zh) * 2021-07-30 2021-11-23 山东云海国创云计算装备产业创新中心有限公司 一种数据管理方法及相关装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9135038B1 (en) * 2010-05-28 2015-09-15 Bromium, Inc. Mapping free memory pages maintained by a guest operating system to a shared zero page within a machine frame
US8631212B2 (en) 2011-09-25 2014-01-14 Advanced Micro Devices, Inc. Input/output memory management unit with protection mode for preventing memory access by I/O devices
US9940228B2 (en) * 2012-06-14 2018-04-10 Vmware, Inc. Proactive memory reclamation for java virtual machines
CN103257929B (zh) * 2013-04-18 2016-03-16 中国科学院计算技术研究所 一种虚拟机内存映射方法及系统
US9459900B2 (en) * 2014-01-13 2016-10-04 Red Hat Israel, Ltd. Hypervisor-based balloon page initialization
US9778945B2 (en) * 2015-02-10 2017-10-03 Red Hat Israel, Ltd. Providing mode-dependent virtual machine function code
US9720721B2 (en) * 2015-07-01 2017-08-01 International Business Machines Corporation Protected guests in a hypervisor controlled system
US9536088B1 (en) * 2015-11-09 2017-01-03 AO Kaspersky Lab System and method for protection of memory in a hypervisor
US20170357592A1 (en) * 2016-06-09 2017-12-14 Vmware, Inc. Enhanced-security page sharing in a virtualized computer system

Also Published As

Publication number Publication date
EP3602376A4 (en) 2021-01-06
US20180285140A1 (en) 2018-10-04
EP3602376A1 (en) 2020-02-05
CN110447032B (zh) 2024-04-16
WO2018182772A1 (en) 2018-10-04
CN110447032A (zh) 2019-11-12
KR20190125985A (ko) 2019-11-07
US10671422B2 (en) 2020-06-02
KR102257320B1 (ko) 2021-05-27
JP2020515969A (ja) 2020-05-28
EP3602376B1 (en) 2022-03-30

Similar Documents

Publication Publication Date Title
JP6804665B2 (ja) ハイパーバイザと仮想マシンとの間のメモリページ遷移の監視
KR102107711B1 (ko) 처리 시스템에서의 직접 메모리 액세스 인가
US11520906B2 (en) Cryptographic memory ownership table for secure public cloud
JP6450775B2 (ja) 処理システムにおける情報の暗号保護
US10261919B2 (en) Selective memory encryption
US20170277898A1 (en) Key management for secure memory address spaces
US8689212B2 (en) Information processing device for controlling an application able to access a predetermined device, and control method using an information processing device for controlling an application able to access a predetermined device
US10372628B2 (en) Cross-domain security in cryptographically partitioned cloud
US10536274B2 (en) Cryptographic protection for trusted operating systems
US10938559B2 (en) Security key identifier remapping
TW201633154A (zh) 跨電源週期維持安全處理環境
KR101653193B1 (ko) 보안 처리 환경으로부터의 기능의 오프로딩
JP6672341B2 (ja) 仮想マシンの状態情報の保護

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200821

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200821

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200821

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20201027

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: 20201104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201202

R150 Certificate of patent or registration of utility model

Ref document number: 6804665

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250