JP6347831B2 - ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理するための方法、データ処理プログラム、コンピュータ・プログラム製品、およびデータ処理システム - Google Patents
ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理するための方法、データ処理プログラム、コンピュータ・プログラム製品、およびデータ処理システム Download PDFInfo
- Publication number
- JP6347831B2 JP6347831B2 JP2016522898A JP2016522898A JP6347831B2 JP 6347831 B2 JP6347831 B2 JP 6347831B2 JP 2016522898 A JP2016522898 A JP 2016522898A JP 2016522898 A JP2016522898 A JP 2016522898A JP 6347831 B2 JP6347831 B2 JP 6347831B2
- Authority
- JP
- Japan
- Prior art keywords
- guest
- memory
- hypervisor
- encrypted
- firmware
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 121
- 238000012545 processing Methods 0.000 title claims description 55
- 238000004590 computer program Methods 0.000 title claims description 13
- 230000008569 process Effects 0.000 claims description 56
- 230000008859 change Effects 0.000 claims description 31
- 230000006870 function Effects 0.000 claims description 30
- 238000012546 transfer Methods 0.000 claims description 11
- 239000000872 buffer Substances 0.000 claims description 4
- 238000004891 communication Methods 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 16
- 230000003287 optical effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Description
本発明は、一般にデータ処理システムに関し、詳細には、ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理するための方法およびシステムに関する。
顧客によるパブリック・クラウドの採用は、ミッション・クリティカルではないデータに限られている。非常に多くの場合、コア・ビジネス・データは、顧客にとって極めて重要な資産であり、データの秘匿性はビジネスの成功に不可欠である。顧客がクラウド環境を信頼しない限り、こうしたビジネス・センシティブ(business sensitive)な環境におけるクラウドの採用は最小限のままである。顧客の主な懸念の中には、クラウド・プロバイダやクラウドのセキュリティに対する信頼の欠如がある。
クラウド・プロバイダに対する信頼は不可欠であるが、これはプロバイダの管理者が顧客のワークロードやデータを十分に検査する能力を有するためである。スパイ活動に対するこのような潜在的な抜け穴(potential breach)は、多くの顧客が気乗りしない理由となっている。
クラウドのセキュリティに対する信頼は、ハイパーバイザの抜け穴(hypervisorbreach)、すなわち、攻撃者がハイパーバイザにアクセスした場合、顧客のワークロードやデータが、やはり危険にさらされるといった脅威に関連している。
秘匿性やプライバシーを保証する取組みは、現時点では入力/出力(I/O)に限られている。ソケット接続を暗号化するには、セキュア・ソケット・レイヤ(SSL)のようなネットワーク暗号化を使用することができ、ディスク・デバイス上のデータを暗号化するには、LINUX(R)のdm−cryptのようなディスク暗号化ツールを使用することができる。
顧客が自身のワークロードを動作させる時点でブート・チェーンが有効化されることを保証するために、トラステッド・プラットフォーム・モジュール(TPM)が開発されたが、これはクラウド環境にはまだ展開されていない。また、TPMは、せいぜいセットアップの完全性を保証するのみで、プライバシーを保証しない。
こうした技術はすべて、たとえ使用されたとしても、問題、すなわち、ハイパーバイザは常に、そのゲスト(ここで一般に、ゲストは、ハイパーバイザに制御されるシステム上の仮想マシンであり得る)を十分に検査し、ゲスト上で動作するイメージの、潜在的にセンシティブなデータを有するメモリ内容を読み取ることができるといったことには対処しない。こうした技術では、上述した懸念を取り除くことはできない。
米国特許出願公開第2011/0302400号は、複数の処理コアを有する中央処理装置(CPU)のトラスト・アンカによって仮想マシン(VM)イメージを受信することを全般的に含む方法を記載している。VMイメージは、受信されると、VMイメージ暗号化キーを使用して暗号化される。また、この方法は、VMイメージ暗号化キーを取得すること、およびVMイメージ暗号化キーによって第1の暗号化/復号ブロックを構成することを含む。また、この方法は、メモリ・セッション・キーを生成すること、およびメモリ・セッション・キーによって第2の暗号化/復号ブロックを構成することを含む。また、この方法は、複数の処理コアがアクセス可能なメモリにVMイメージの1つまたは複数のページをフェッチすることを含む。フェッチされた各ページは、VMイメージ暗号化キーを使用して第1の暗号化/復号ブロックによって復号され、次いで、メモリ・セッション・キーを使用して第2の暗号化/復号ブロックによって暗号化される。
本発明の一目的は、信頼できないクラウド環境においてゲスト・データをセキュアに処理するための方法を提供することである。
別の目的は、信頼できないクラウド環境においてゲスト・データをセキュアに処理するためのシステムを提供することである。
これらの目的は、独立請求項の特徴によって達成される。他の請求項、図面、および明細書は、本発明の有利な実施形態を開示する。
本発明の第1の態様によれば、ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理するための方法が提示され、この方法は、(i)ゲストに、ならびにゲスト・キーによって暗号化されたゲスト・ステートおよびゲスト・メモリに関連付けられたゲスト・イベントが、ファームウェアにおけるゲスト・イベントに特有な第1のファームウェア・サービスをトリガするステップと、(ii)ファームウェアが、ゲスト・ステートおよびゲスト・メモリの情報を含みゲスト・イベントに関連付けられた情報を処理し、ゲスト・ステートおよびゲスト・メモリの情報のサブセットのみを復号された形態でハイパーバイザに提示するステップであって、情報のサブセットは、ハイパーバイザがゲスト・イベントを処理するのに十分であるように選択される、提示するステップと、(iii)ファームウェアが、ゲスト・ステートおよびゲスト・メモリの情報のうちハイパーバイザに送信されていない部分を保持するステップと、(iv)ハイパーバイザが、ゲスト・ステートおよびゲスト・メモリの情報の受信したサブセットに基づいて、ゲスト・イベントを処理し、処理結果をファームウェアに送信し、ゲスト・イベントに特有な第2のファームウェア・サービスをトリガするステップと、(v)ファームウェアが、ゲスト・ステートおよびゲスト・メモリの情報のうちハイパーバイザに送信されなかった部分と併せて、受信した処理結果を処理し、ステートの変更またはメモリの変更あるいはその両方の変更を生成するステップと、(vi)ファームウェアが、ゲスト・イベントに関連付けられたステートの変更またはメモリの変更あるいはその両方の変更を暗号化された形態でゲスト・メモリにおいて実行するステップと、を含む。
第1のファームウェア・サービスは、好ましくは、ステップ(ii)および(iii)、すなわち、(ii)ファームウェアが、ゲスト・ステートおよびゲスト・メモリの情報を含みゲスト・イベントに関連付けられた情報を処理し、ゲスト・ステートおよびゲスト・メモリの情報のサブセットのみを復号された形態でハイパーバイザに提示するステップであって、情報のサブセットは、ハイパーバイザがゲスト・イベントを処理するのに十分であるように選択される、提示するステップと、(iii)ファームウェアが、ゲスト・ステートおよびゲスト・メモリの情報のうちハイパーバイザに送信されなかった部分を保持するステップと、を含むことができる。
第2のファームウェア・サービスは、好ましくは、ステップ(v)および(vi)、すなわち、(v)ファームウェアが、ゲスト・ステートおよびゲスト・メモリの情報のうちハイパーバイザに送信されなかった部分と併せて、受信した処理結果を処理し、ステートの変更またはメモリの変更あるいはその両方の変更を生成するステップと、(vi)ファームウェアが、ゲスト・イベントに関連付けられたステートの変更またはメモリの変更あるいはその両方の変更を暗号化された形態でゲスト・メモリにおいて実行するステップと、を含むことができる。
特に、ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理するための方法は、ゲストの秘匿性を保護する利点を示しながら記載される。したがって、本発明による方法は、全般的に、暗号化されたメモリおよびコンテンツ・データを含むリソースをそれぞれが有する1つまたは複数の仮想マシンを含むハイパーバイザに対して仮想マシンの内容のプライバシーを維持しながら仮想マシンをセキュアに管理すること、ハイパーバイザが仮想マシン・リソースおよび仮想マシン・ステートを管理すること、ならびにCPUにアシストされる仮想化によって、ハイパーバイザから仮想マシンのステート/メモリ/コンテキストへの制限されたアクセスがファームウェア・サービスを介して実現すること、を記載する。
特に、本発明による方法は、ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理することであって、ゲスト・データが、ハイパーバイザからアクセス不可であるゲスト・キーによって暗号化され、CPUおよびファームウェアが、ゲスト・コンテキストで動作する際に信頼できると判断されゲスト・キーにアクセスする、処理することを記載する。この文脈でのファームウェアは、特に、ハードウェア・ベースの環境において実装されるシステム・ソフトウェアを意味する。
上述のように、本発明による方法は、仮想マシン用に暗号化されたメモリから仮想マシンを動作させることを記載する。さらに、この方法は、ハイパーバイザが、そのゲスト、すなわち仮想マシン/イメージを常に十分に検査し、潜在的にセンシティブなデータを有するメモリの内容を読むことができる、ということを防止する。記載される方法が、(顧客)キー・サービスによるトラスト・アンカの認証のようなプロセスを使用せず、暗号化されたイメージをディスクからメモリにロードする際、(第2のキーを使用した)仮想マシン・イメージの再暗号化のような処理も使用しないことが利点である。この方法では、セキュアでない平文のカウンタ(CTR)モード暗号化を使用する必要がなく、代わりに、セキュアなciphertext stealing(XTS)モード暗号化によるXor−encrypt−xor(XEX)ベースのtweaked−codebookモードのようなCTRモード暗号化のバリアントの使用が推奨される。この方法は、割り込みまたはハイパーバイザのインターセプトに対処することが可能である。この方法は、認証されていないアクセスから暗号化されていないキャッシュ内容を守ることが可能であり、I/Oに対処することが可能である。記載された方法は、CPU上にアテステーション・モジュール(例えばTPM)を必要としない。
有利なことには、特にCPUアーキテクチャの仮想化環境を拡張することに関して、方法は、(i)CPUがゲスト・コンテキストにおいて動作する場合、CPUがゲスト・メモリを復号または暗号化するステップと、(ii)暗号化されていないメモリ範囲を介してゲストが外部と通信することを可能にするステップと、(iii)ゲスト・メモリの暗号化されたページをハイパーバイザがページングするステップと、をさらに含むことができる。CPUアーキテクチャの仮想化機構を拡張し、その結果、ゲストのメモリが常に暗号化されるようにしてもよい。これはCPUによる処理中に行うことが可能であり、ハイパーバイザが、メモリを読み取ること、またはクリア・テキストの内容を記録することが防止される。効率的な処理のために、キャッシュを暗号化しなくてもよい。しかし、ゲストのデータがCPUを離れるときは、その内容を暗号化してもよい。ゲスト実行中のゲスト・メモリの復号は、CPUを介して透過的に行ってもよいが、CPUがゲスト・コンテキストを実行中にしか行わなくてもよい。
さらに、特に仮想マシンのセキュアな展開および実行に関して、有利なことには、方法は、(i)CPUのキー・ストアに転送するために、CPUの秘密キーに関連付けられた公開キーによって暗号化されたゲスト・キーをゲストに準備するステップと、(ii)CPUに格納されており、暗号化されたゲスト・キーを復号するのに使用される秘密キーをCPUに準備するステップと、(iii)CPUがゲスト・コンテキストにおいてゲストまたはファームウェアのコードを動作させる間に、ゲスト・キーが、ゲスト・メモリを暗号化および復号するのに使用されるステップと、をさらに含む。したがって、ハイパーバイザに制御されるシステムにおける仮想マシンのセキュアな展開および実行が可能とされ得る。
各CPUは、キー・ペアを得ることができ、その秘密キーは、CPUのみに格納することができ、ゲスト・キーを復号するのに使用することができる。CPU公開キーは、CPUに対する秘密ゲスト・キーを暗号化(および転送)するのに使用することができ、CPUにおいて、ゲスト・キーはセキュアに格納および使用され得る。
ゲストは、キーを生成することもできる。ゲスト・キーは、CPUに転送される前に、CPU公開キーによって暗号化され得る。CPUは、このゲスト・キーを使用して、ゲストのメモリを暗号化することができる(しかし、CPU仮想化機能のコンテキストにおいてゲストを動作させるときのみに限られる)。また、ゲスト・キーは、クラウド環境においてゲストからのイメージを展開するのに使用され得る。
好適なことには、特にブート・イメージの生成および展開に関して、本発明による方法は、(i)クライアントまたは顧客がブート・イメージを生成するステップと、(ii)ブート・イメージをゲスト・キーによって暗号化するステップと、(iii)暗号化されたブート・イメージをブート・ディスクに転送するステップと、(iv)ハイパーバイザがゲストの暗号化されたブート・イメージをゲスト・メモリにロードするステップと、(v)CPUレベルで仮想マシンとしてゲストの実行を開始するステップと、をさらに含むことができる。ここで、ゲストは、暗号化されたメモリの領域、暗号化されていないメモリの領域、および暗号化されたゲスト・キーによって定義される。ゲスト・キーは、それぞれクライアントおよびゲスト、ならびにゲスト・コンテキストのCPUのみに知られてよく、CPUへの移送のために、ゲスト・キーは、CPUの秘密キーに関連付けられた公開キーによって暗号化され得る。これは、クラウド・オペレータまたはハイパーバイザに知られる必要はない。ゲスト・キーは、1つまたは複数のシステムまたはCPUのために暗号化され得る。
有利なことには、特にブート・イメージのブート・プロセスに関して、方法は、(i)CPUがゲスト・コンテキストにあるときに、ブート・イメージ上で実行される仮想マシンにおける実行スレッドをクリア・テキストに復号するステップと、(ii)CPUがゲスト・コンテキストおよびゲスト・ステートにある間にゲスト・メモリを復号するステップであって、ゲスト・コンテキストおよびゲスト・ステートの両方は、ハイパーバイザまたは他のゲストによるアクセスから保護される、復号するステップと、をさらに含むことができる。ハイパーバイザは、ブート・イメージの内容を、再配置することなくブート・ディスクからゲスト・メモリに読み取ることができる。ここで、ブート・ディスクの内容は、カーネル、パラメータ、初期RAMディスクを含むことができる。ブート・イメージをロードすることは、(例えば、通常適用されるLINUX(R)の暗号化ツールであるdm−cryptを介して)従来通りに暗号化されたルート・ファイル・システムをマウントすることを含んでもよい。さらに、ブート・ディスクの内容は、従来通りに暗号化されたターゲット・ブート・デバイスから新たなカーネルをロードするカーネル実行(kexec)環境を含んでもよい。
好適なことには、特に仮想マシンの実行に関して、方法は、(i)CPUの仮想化機能を拡張して、ゲスト・コンテキストにおいてゲスト・メモリの暗号化された領域が書き込まれるときにゲスト・メモリを暗号化するステップと、(ii)ゲスト・コンテキストにおいてゲスト・メモリの暗号化された領域が読み取られるときにゲスト・メモリを復号するステップと、(iii)ゲスト・メモリおよびゲスト・レジスタの暗号化された領域を、暗号化された形態においてのみハイパーバイザからアクセス可能に保持するステップと、をさらに含むことができる。CPUアーキテクチャを拡張して、ゲスト・ステートにアクセスするための明確な手段を提供してもよく、ここで、アクセス・メソッドが、ハイパーバイザにそのタスク(例えば、トラップのハンドリング)を行うのに必要な情報しか与えなくてもよい。ただし、ゲスト・メモリおよびレジスタ・ファイルには、このアクセス・メソッド以外ではアクセス不可としてよい。したがって、ハイパーバイザがゲスト・ステートもゲスト・データも完全には読み取ることができないため、ゲストの秘匿性を保護することができる。レジスタ・ファイルは、ハイパーバイザから直接アクセスできなくしてもよいが、保管しておき、ハイパーバイザ・サービスを介して復元させてもよい。ハイパーバイザが、暗号化されていないゲスト・メモリを認識しないことも可能であるが、ゲスト自身以外のコンテキストが、暗号化されたメモリ内容を認識のみすることも可能である。ゲスト・メモリのある領域は、ハイパーバイザまたはI/Oデバイスとデータを交換するために、暗号化されないままでよい。I/Oスクラッチ領域は、暗号化されたメモリ領域の外部にあってよい。
有利な実施形態において、特に仮想マシンとハイパーバイザとの対話に関して、方法は、(i)ゲスト・イベントに関連付けられたゲスト・メモリまたはレジスタの暗号化された範囲を、復号された形態においてハイパーバイザからアクセス不可に保持するステップと、(ii)アクセス・メソッドによって、CPUの仮想化機能をゲスト・イベントに関連付けられた特有なゲスト・データに拡張するステップと、をさらに含むことができる。このステップはハイパーバイザの動作にとっては有利となり得るが、ゲストのデータまたはコード(トラップする命令の理由および関連パラメータ以外)を明らかにせずに、ゲスト・イベントの実行を続けることができるようにしてもよい。いくつかのトラップは、ハイパーバイザがゲストにフル・アクセスするときのみ意味がある(例えば、シングル・ステップ)可能性があるため、完全に無効にしてもよい。
有利なことには、特にゲストのI/Oプロセスに関して、方法は、(i)ゲスト・メモリの暗号化された領域の外部に、ゲストのI/OバッファおよびI/O制御構造のための暗号化されていないメモリ領域を定義するステップと、(ii)ゲスト・メモリの暗号化されていない領域を使用して、ゲストによるI/Oプロセスを開始するステップと、(iii)CPUの仮想化機能がゲスト・イベントを生成するステップと、(iv)ハイパーバイザが、ゲスト・イベントの理由を読み取り、I/Oプロセスを実行するステップと、をさらに含むことができる。暗号化されたゲスト・メモリの外部にI/Oバッファを置くことによって、ハイパーバイザおよびI/Oデバイスは、I/O制御構造およびデータにアクセスすることができる。
好適なことには、特にハイパーバイザによるページング・プロセスに関して、方法は、(i)ハイパーバイザがゲスト・メモリのページをページアウトするステップと、(ii)ページアウトしたページへのアクセスの試みがあるとページ・フォールトを提供するステップであって、ページ・フォールトは、ハイパーバイザのページアウト動作がページ・フォールトを引き起こしたかどうかをハイパーバイザに示す、提供するステップと、(iii)ハイパーバイザをトリガして、ゲスト・メモリに対するページイン・プロセスを実行するステップと、をさらに含むことができる。ハイパーバイザは、ハイパーバイザが所有するスワップ・デバイス上にページを格納することができ、ここでは依然として、ページ内容が暗号化されていてよい。CPUの仮想化機能は、トラップすることができ、ここで、ハイパーバイザは、トラップの理由(例えば、「ページ・フォールト」)を読み取ることができ、ゲスト・アドレスを読み取ることもできる。このため、ハイパーバイザは、ページを同じゲスト・アドレスに戻すことができ、これによって、暗号化結果が再配置できないままであるときに、ゲスト・データの完全性が維持される。したがって、ハイパーバイザは、ゲストを再始動させることができる。
有利な実施形態において、特に、記載される方法に対する信頼を確立することに関して、方法は、ゲスト・キーを認識するチェック・プロセスによって、ゲストの完全性をチェックすることをさらに含むことができ、チェック・プロセスは、(i)ゲストが、ゲスト・メモリからクリア・テキストのメモリ内容を読み取り、ゲスト・メモリの任意の範囲をセキュアな通信パスを介してチェック・プロセスに転送するステップと、(ii)ハイパーバイザにゲスト・メモリの同じメモリ範囲を要求し、その範囲をチェック・プロセスに転送するステップと、(iii)ゲストから得られたメモリ内容を、ハイパーバイザから得られたメモリ内容を復号した結果と比較するステップと、(iv)2つのメモリ範囲の内容に応じて比較結果を送るステップと、(v)比較結果がゼロに等しい場合は肯定であり、その他の場合は否定であるチェック・プロセスの結果を返すステップと、を含む。ハイパーバイザは、ゲスト・メモリ復号/暗号化のためのキーを備えていないので、コードまたはデータの読み取り/挿入を行うことができないため、これらの方法ステップは、特に有利となり得る。
本発明のさらに有利な態様によれば、データ処理プログラムがコンピュータ上で動作するときに上述した方法を実行するための命令セットの実装を含む、データ処理システムにおいて実行されるデータ処理プログラムが提示される。
さらに、好適なコンピュータ・プログラム製品が提示され、このコンピュータ・プログラム製品は、コンピュータ可読プログラムを含むコンピュータ使用可能な媒体を備え、このコンピュータ可読プログラムは、コンピュータ上で実行されると、ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理するための方法をコンピュータに実行させ、この方法は、(i)ゲストに、ならびにゲスト・キーによって暗号化されたゲスト・ステートおよびゲスト・メモリに関連付けられたゲスト・イベントが、ファームウェアにおけるゲスト・イベントに特有な第1のファームウェア・サービスをトリガするステップと、(ii)ファームウェアが、ゲスト・ステートおよびゲスト・メモリの情報を含みゲスト・イベントに関連付けられた情報を処理し、ゲスト・ステートおよびゲスト・メモリの情報のサブセットのみを復号された形態でハイパーバイザに提示するステップであって、情報のサブセットは、ハイパーバイザがゲスト・イベントを処理するのに十分であるように選択される、提示するステップと、(iii)ファームウェアが、ゲスト・ステートおよびゲスト・メモリの情報のうちハイパーバイザに送信されていない部分を保持するステップと、(iv)ハイパーバイザが、ゲスト・ステートおよびゲスト・メモリの情報の受信したサブセットに基づいて、ゲスト・イベントを処理し、処理結果をファームウェアに送信し、ゲスト・イベントに特有な第2のファームウェア・サービスをトリガするステップと、(v)ファームウェアが、ゲスト・ステートおよびゲスト・メモリの情報のうちハイパーバイザに送信されなかった部分と併せて、受信した処理結果を処理し、ステートの変更またはメモリの変更あるいはその両方の変更を生成するステップと、(vi)ファームウェアが、ゲスト・イベントに関連付けられたステートの変更またはメモリの変更あるいはその両方の変更を、暗号化された形態でゲスト・メモリにおいて実行するステップと、を含む。
当業者には理解されることであるが、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または、ソフトウェアの態様とハードウェアの態様を組み合わせた実施形態の形を取ることができ、本明細書では、これらはすべて全体として、「回路」、「モジュール」、または「システム」と呼ばれることがある。
さらに、本発明の態様は、コンピュータ可読プログラム・コードをその上で具現化する1つまたは複数のコンピュータ可読媒体において具現化されるコンピュータ・プログラム製品の形を取ることができる。
1つまたは複数のコンピュータ可読媒体の任意の組合せが利用され得る。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体であってよい。コンピュータ可読ストレージ媒体は、例えば、電子、磁気、光、電磁気、赤外線、または半導体のシステム、装置、またはデバイス、あるいはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例(包括的ではないリスト)は、以下のもの、すなわち、1つまたは複数のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能なプログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD−ROM)、光ストレージ・デバイス、磁気ストレージ・デバイス、またはこれらの任意の適切な組合せを含むことになる。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令を実行するシステム、装置、もしくはデバイスによって、またはこれらに接続して使用するための、プログラムを含むまたは格納することができる任意の有形媒体であってよい。
コンピュータ可読信号媒体は、コンピュータ可読プログラム・コードがその中で具現化される伝播データ信号を、例えば、ベースバンド中に、または搬送波の一部として含むことができる。このような伝播信号は、電磁気、光、またはこれらの任意の適切な組合せを含むが、これらに限定されない、様々な形のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではないが、命令を実行するシステム、装置、もしくはデバイスによって、またはこれらに接続して使用するための、プログラムを通信、伝播、または移送することができる任意のコンピュータ可読媒体であってよい。
コンピュータ可読媒体上で具現化されるプログラム・コードは、無線、有線、光ファイバ・ケーブル、RFなど、またはこれらの任意の適切な組合せを含むが、これらに限定されない、任意の妥当な媒体を使用して伝送され得る。
本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラム言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書くことができる。プログラム・コードは、すべてをユーザのコンピュータ上で、一部をユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、一部をユーザのコンピュータ上かつ一部をリモート・コンピュータ上で、またはすべてをリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、あるいは、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部のコンピュータに接続されてもよい。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のブロック図を参照して、以下に記載される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ・プログラム命令によって実装され得ることが理解されよう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックに指定される機能/動作を実装するための手段をもたらすように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに与えられてマシンを作り出すものであってよい。
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に格納された命令が、ブロック図の1つまたは複数のブロックに指定される機能/動作を実装する命令を含む製品をもたらすように、コンピュータ可読媒体に格納されて、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに特定の方式で機能するように指示するものであってもよい。
コンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能な装置上で実行される命令が、ブロック図の1つまたは複数のブロックに指定される機能/動作を実装するためのプロセスを与えるように、コンピュータに実装されるプロセスを作り出すべく、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置、または他のデバイスで一連の動作ステップを実行させるものであってもよい。
本発明のさらなる態様によって、上述した方法を実行するためのソフトウェア・コード部分を含むデータ処理プログラムを実行するためのデータ処理システムが提示される。
本発明は、上述の目的および利点ならびに他の目的および利点と併せて、以下の実施形態の詳細な説明から最も良く理解され得るが、これらの実施形態に限定されない。
図面中、同様な要素は同一の参照番号によって示される。図面は単なる概略表現であって、本発明の具体的なパラメータを表すことを意図していない。また、図面は、本発明の典型的な実施形態のみを示すことを意図しており、したがって、本発明の範囲を限定するものとみなしてはならない。
図1は、従来技術によるハイパーバイザに制御されるシステムにおける、コンポーネントのスタックを示す。種々のコンポーネントは、1つまたは複数のゲスト20を含み、ゲスト20は、仮想サーバ・システムとしてハイパーバイザに制御されるシステム上で動作する仮想マシンとして実現され、仮想サーバ・システムは、ファームウェア70、例えば1つまたは複数のCPUとしてのハードウェア72、メモリ、ストレージ・ネットワーキングのためのI/Oデバイス74から構成される。ハイパーバイザ30は、ハードウェア72およびI/Oデバイス74のリソースを管理し、これらのリソースの妥当な部分をゲスト20に割り振る。クラウド環境において、ゲスト20はクライアントまたは顧客によって操作され、一方ハイパーバイザ30は、クライアントから信頼されない可能性のあるクラウド・プロバイダによって操作される。ファームウェア70およびハードウェア72は、信頼できると考えられる得るハードウェア・ベンダによって製造される。本発明の一目的は、クラウド・プロバイダが信頼されない可能性があるクラウド環境において、ゲスト20をセキュアに処理するための方法を提供することである。
要約すると、ハイパーバイザに制御されるシステム10においてゲスト・イベントを処理するための本発明による方法は、(i)ゲスト20に、ならびにゲスト・キー24によって暗号化されたゲスト・ステート52およびゲスト・メモリ22に関連付けられたゲスト・イベントが、ファームウェア70におけるゲスト・イベントに特有な第1のファームウェア・サービスをトリガするステップと、(ii)ファームウェア70が、ゲスト・ステート52およびゲスト・メモリ22の情報を含みゲスト・イベントに関連付けられた情報を処理し、ゲスト・ステート52およびゲスト・メモリ22の情報のサブセットのみを復号された形態でハイパーバイザ30に提示するステップであって、情報のサブセットは、ハイパーバイザ30がゲスト・イベントを処理するのに十分であるように選択される、提示するステップと、(iii)ファームウェア70が、ゲスト・ステート52およびゲスト・メモリ22の情報のうちハイパーバイザ30に送信されないでいる部分を保持するステップと、(iv)ハイパーバイザ30が、ゲスト・ステート52およびゲスト・メモリ22の情報の受信したサブセットに基づいて、ゲスト・イベントを処理し、処理結果をファームウェア70に送信し、ゲスト・イベントに特有な第2のファームウェア・サービスをトリガするステップと、(v)ファームウェア70が、ゲスト・ステートおよびゲスト・メモリの情報のうちハイパーバイザ30に送信されなかった部分と併せて、受信した処理結果を処理し、ステートの変更またはメモリの変更あるいはその両方の変更を生成するステップと、(vi)ファームウェア70が、ゲスト・イベントに関連付けられたステートの変更またはメモリの変更あるいはその両方の変更を、暗号化された形態でゲスト・メモリ22において実行するステップと、を含む。これらのステップは、以下の図における実施形態の記載において参照される。
1つの実施形態において、第1のファームウェア・サービスは、上述のステップ(ii)および(iii)の少なくとも1つを好ましくは含むことができ、ステップ(ii)は、ファームウェア70が、ゲスト・ステート52およびゲスト・メモリ22の情報を含みゲスト・イベントに関連付けられた情報を処理し、ゲスト・ステート52およびゲスト・メモリ22の情報のサブセットのみを復号された形態でハイパーバイザ30に提示することであって、情報のサブセットは、ハイパーバイザ30がゲスト・イベントを処理するのに十分であるように選択される、提示すること、を含む。ステップ(iii)は、ファームウェア70が、ゲスト・ステート52およびゲスト・メモリ22の情報のうちハイパーバイザ30に送信されないでいる部分を保持することを含む。
1つの実施形態において、第2のファームウェア・サービスは、上述のステップ(v)および(vi)の少なくとも1つを好ましくは含むことができ、ステップ(v)は、ファームウェア70が、ゲスト・ステートおよびゲスト・メモリの情報のうちハイパーバイザ30に送信されなかった部分と併せて、受信した処理結果を処理し、ステートの変更またはメモリの変更あるいはその両方の変更を生成することを含み、ステップ(vi)は、ファームウェア70が、ゲスト・イベントに関連付けられたステートの変更またはメモリの変更あるいはその両方の変更を、暗号化された形態でゲスト・メモリ22において実行することを含む。
図2は、本発明の一実施形態によるハイパーバイザに制御されるシステム10のセキュアでない環境における、ゲスト20のセキュアな実行のための方法の全般的な概略を示す。これは、非セキュアな媒体を介してセキュアな動作(すなわち、メッセージング)も実現されるセキュア・ソケット・レイヤと同様に実現され得る。信頼できないと考えられるハイパーバイザ30は、セキュアなゲスト20および非セキュアなゲスト40を同時に同じシステムにおいて制御することができる。ハイパーバイザ30およびゲスト20、40を動作させるCPU216は、セキュアなゲスト20それぞれに対して特有なコンテキスト42を、非セキュアなゲスト40それぞれに対して特有なコンテキスト44を、ハイパーバイザ30に対してコンテキスト46を、それぞれ維持する。セキュアなゲスト20の各コンテキスト42は、適合するセキュアなゲスト20に関連付けられたゲスト・キー24を含む。各セキュアなゲスト20のメモリは、適合するセキュアなゲスト20のゲスト・キー24によって暗号化される。こうしたゲスト20、40、およびハイパーバイザ30は、自身のコンテキスト42、44、46においてCPU216上で動作することができる。また、CPU216上には、自身のコンテキスト46で動作するハイパーバイザ30がある。CPU216は、あるコンテキストにおいて動作するときは、別のコンテキストによって維持される情報にはアクセスできない。CPU216は、セキュアなゲスト20のゲスト・コンテキスト42において動作するときは、このゲスト20のゲスト・キー24にアクセスして、このゲスト20のデータを暗号化および復号する。さらに、CPU216は、ゲスト20、40のコードを処理する場合にのみ、このゲスト20、40のコンテキストに入り、あるいはハイパーバイザ30のコードを処理する場合にのみ、このハイパーバイザ30のコンテキストに入る。
図3は、本発明の一実施形態によるセキュアでない環境におけるゲスト20のセキュアな実行のためのハイパーバイザに制御されるシステム10のシステム図を示す。図3に示されずに以下の記載において参照される番号は、図1および図2の対象を参照している。
まずは、図3における図を使用して、本発明の一実施形態によるセキュアでない環境におけるゲスト20の暗号化された実行の包括的な機能について説明し、その後、ゲスト・イベントによる割り込みまたはインターセプションをハンドルするためのハイパーバイザに制御されるシステムの挙動について論じる。
図3における図は、ハイパーバイザ30によって制御されるゲスト1からゲストnと呼ばれる1つまたは複数のゲスト20を示し、すべてのコンポーネントは、メモリ230に接続されたCPU216上で動作する。CPU216は、CPUの仮想化機能34のゲスト・コンテキストのステートのためのアクセス手段50を含み、ここで、CPU216が属しているコンテキストに基づいて、アクセスが制御される。こうしたアクセス手段50は、ハイパーバイザ30から隠され得るコンテキスト情報または制御ブロックあるいはその両方を含むゲスト・ステート52のストアから、ゲスト・ステート52または仮想CPUステートあるいはその両方のステートを読み取ることができる。ゲスト・ステート52のストアは、仮想化機能34が実行されてからのゲスト・ステート52を含む。命令実行ユニット54は、メモリ230からキャッシュ56にコードをフェッチし、そのコードを実行する。その結果、命令実行ユニット54によって実行されたメモリのフェッチおよび格納がトリガされ得る。こうしたメモリのフェッチおよび格納の要求が、キャッシュ56によってハンドルされるときは、こうしたフェッチおよび格納の要求に伴うデータは、クリア・テキストで存在する。メモリ230における暗号化されたゲスト・メモリ領域22までメモリ・フェッチが及ぶことを可能にするためには、仮想化機能34が、対応するゲスト20のコンテキストにおいてゲスト・キー24を使用して動作しているときに、暗号化ユニット58によって、キャッシュ56への転送の際にデータが復号されることになる。キャッシュ・ラインがメモリ230へと押し出されるときは、仮想化機能34が現在実行しているゲスト20の対応するゲスト・キー24を使用して、メモリ230までの転送の際に暗号化ユニット58がキャッシュ・ラインを暗号化することになる。
暗号化ユニット58は、キャッシュ56とメモリ230に接続するCPU216のメモリ・インターフェース60との間に配置される。CPU216がセキュアなゲスト20のコンテキストにおいて動作する場合、仮想化機能34は、暗号化ユニット58を制御64し、ゲスト・キー・ストア28からセキュアなゲスト20の暗号ゲスト・キー24を暗号化ユニット58に準備する。CPU216は、キー・ストア28に格納されており暗号化ユニット58に供給される、暗号化されたゲスト・キー24を復号するための秘密キー26を有している。ゲスト・キー・ストア28は、CPU216に送るための暗号化されたゲスト・キー24、および命令を実行するための復号されたゲスト・キーを含むことができる。キャッシュ56は、クリア・テキスト・データを含むことができるが、ゲスト・コンテキストにおいて動作していないプロセスは、このクリア・テキスト・データにアクセスしないことが可能である。したがって、キャッシュ56は、データを、このデータが属するゲスト20のコンテキストに関連付けることができる。メモリ230は、暗号化されたゲスト・メモリ領域22と、ゲスト・データをI/Oを介して外部システムと通信させるためのクリア・テキスト領域と、ハイパーバイザ30および非セキュアなゲストに属するメモリ領域とを含むことができる。
ゲスト・キー24によって暗号化された範囲、およびハイパーバイザ30から認識可能な他の範囲が存在するため、ハイパーバイザ30は、メモリ230におけるデータまたはコードあるいはその両方に対して、制限されたアクセスしかしない。
次に、本発明の一実施形態によるファームウェア70に実装されるサービスとしてのファームウェア・サービスによる割り込みまたはインターセプションのハンドリングを実現することについて説明する。簡単に記載すれば、ハイパーバイザに制御されるシステム10におけるゲスト・イベントの処理は、(i)第1のファームウェア・サービスをトリガするステップと、(ii)ファームウェア70が、ゲスト・イベントに関連付けられた情報を処理し、情報のサブセットのみを復号された形態でハイパーバイザ30に提示するステップと、(iii)ファームウェアが、ハイパーバイザ30に送信されていない情報の部分を保持するステップと、(iv)ハイパーバイザ30が、第2のファームウェア・サービスをトリガするステップと、(v)ファームウェアが、ゲスト・ステート52の変更またはゲスト・メモリ22の変更あるいはその両方の変更を生成するステップと、(vi)ファームウェアが、ゲスト・ステート52の変更またはゲスト・メモリ22の変更あるいはその両方の変更を実行するステップと、を含む。
この包括的な手法の具体的な特徴を、以下により詳細に記載する。
ゲスト20に、ならびにゲスト・キー24によって暗号化されたゲスト・ステート52およびゲスト・メモリ22に関連付けられた割り込みまたは命令インターセプションが発生する場合、この割り込みまたは命令インターセプションに関連付けられた第1および第2のファームウェア・サービスが、ゲスト・キー24によって暗号化されキャッシュ56において復号されるゲスト・ステート52およびゲスト・メモリ22、ならびに(暗号化されていない)ハイパーバイザ・メモリにアクセスすることになる。どちらのサービスも、このメモリ22をキャッシュ56に転送させ、これによってメモリ22をゲスト・キー24を使用して復号させることで、ゲスト20のゲスト・メモリ22を読み取ることが可能である。ファームウェア・サービスは、キャッシュ56からファームウェア・サービス専用のメモリに、またはハイパーバイザ30に、暗号化されていないデータを転送することができる。第2のファームウェア・サービスは、その専用メモリまたはハイパーバイザ・メモリから暗号化されたゲスト・メモリ22に関連付けられたキャッシュ領域に、暗号化されていないデータを転送し、次いでゲスト・キー24を使用してキャッシュ領域の内容を暗号化しながら、暗号化されたゲスト・メモリ22にこのキャッシュ領域の内容を転送することが可能である。
CPU216の仮想化環境は拡張され、CPU216がゲスト20のコンテキストにおいて動作する場合、CPU216がゲスト・メモリ22を復号または暗号化し、暗号化されていないメモリ範囲を介してゲスト20が外部と通信することを可能にし、ゲスト・メモリ22の暗号化されたページをハイパーバイザ30がページングする。
ゲスト20のセキュアな展開および実行は、CPU216のキー・ストア28に転送するために、CPU216の秘密キー26に関連付けられた公開キー32によって暗号化されたゲスト・キー24をゲスト20に準備すること、CPU216に格納されており、暗号化されたゲスト・キー24を復号するのに使用される秘密キー26をCPU216に準備すること、ならびにCPU216がゲスト20のコンテキストにおいてゲストまたはファームウェアのコードを動作させる間に、ゲスト・キー24が、ゲスト・メモリ22を暗号化および復号するのに使用されること、をさらに含む。
ブート・イメージの生成および展開プロセスは、ゲスト20のためにクライアントまたは顧客がブート・イメージを生成すること、ブート・イメージをゲスト・キー24によって暗号化すること、暗号化されたブート・イメージをブート・ディスクに転送すること、ハイパーバイザ30がゲスト20の暗号化されたブート・イメージをゲスト・メモリ22にロードすること、およびCPU216のレベルで仮想マシンとしてゲスト20の実行を開始すること、を含む。
ブート・イメージのブート・プロセスは、CPU216がゲスト20のコンテキストにある間に、ゲスト・メモリ22上で実行される仮想マシンにおける実行スレッドがクリア・テキストに復号されること、ならびにCPU216がゲスト20のコンテキストおよびゲスト・ステート52にある間にゲスト・メモリ22が復号され、ゲスト・メモリ22およびゲスト・ステート52の両方は、ハイパーバイザ30または他のゲストによるアクセスから保護されること、を含む。
ゲスト20のさらなる実行は、CPU216の仮想化機能34を拡張して、ゲスト20のコンテキストにおいてゲスト・メモリ22の暗号化された領域が書き込まれるときにゲスト・メモリ22を暗号化すること、およびゲスト20のコンテキストにおいてゲスト・メモリ22の暗号化された領域が読み取られるときにゲスト・メモリ22を復号すること、を含み、ゲスト・メモリ22およびゲスト・レジスタの暗号化された領域は、暗号化された形態においてのみハイパーバイザ30からアクセス可能である。
ゲスト20とハイパーバイザ30との対話は、ゲスト・イベントに関連付けられたゲスト・メモリ22またはレジスタの暗号化された範囲が、復号された形態においてハイパーバイザ30からアクセス不可とされること、および、アクセス・メソッドによって、CPU216の仮想化機能34をゲスト・イベントに関連付けられた特有なゲスト・データに拡張すること、をさらに含む。
ゲスト20のI/Oプロセスは、ゲスト・メモリ22の暗号化された領域の外部に、ゲスト20のI/OバッファおよびI/O制御構造のための暗号化されていないメモリ領域を定義すること、ゲスト・メモリ22の暗号化されていない領域を使用して、ゲスト20によるI/Oプロセスを開始すること、CPU216の仮想化機能34がゲスト・イベントを生成すること、ならびにハイパーバイザ30が、ゲスト・イベントの理由を読み取り、I/Oプロセスを実行すること、をさらに含む。
さらに、ページング・プロセスは、ハイパーバイザ30がゲスト・メモリ22のページをページアウトすること、ページアウトしたページへのアクセスの試みがあるとページ・フォールトを提供することであって、ページ・フォールトは、ハイパーバイザ30のページアウト動作がページ・フォールトを引き起こしたかどうかをハイパーバイザ30に示す、提供すること、およびハイパーバイザ30をトリガして、ゲスト・メモリ22に対するページイン・プロセスを実行すること、によって特徴付けられる。
チェック・プロセスによってゲストの完全性をさらにチェックする。このチェック・プロセスは、チェック・プロセスがゲスト・キー24を認識するステップと、ゲスト20が、ゲスト・メモリ22からクリア・テキストのメモリ内容を読み取り、ゲスト・メモリ22の任意の範囲をセキュアな通信パスを介してチェック・プロセスに転送するステップと、ハイパーバイザ30にゲスト・メモリ22の同じメモリ範囲を要求し、範囲をチェック・プロセスに転送するステップと、ゲスト20から得られたメモリ内容を、ハイパーバイザ30から得られたメモリ内容を復号した結果と比較するステップと、2つのメモリ範囲の内容に応じて比較結果を送るステップと、を含み、比較プロセスの結果は、比較結果がゼロに等しい場合が肯定であり、その他の場合が否定である。
図4において、ハイパーバイザ30およびCPU216の観点から、本発明の一実施形態により動作する暗号化されたゲストを実行させるための包括的なフローチャートを示す。図4および図5は、フローチャートにおいて、図2および図3の図に定めた対象を参照しており、そのため、使用される参照番号も図2および図3の対象を参照している。ステップS410で、暗号化されたゲスト20の動作を開始し、ここで、ハイパーバイザ30が、暗号化されたゲスト・キー24と併せて初期プログラム・ローダ(IPL)デバイスから暗号化されたゲスト・イメージを読み取る。次にステップS420において、ハイパーバイザ30が、暗号化されたゲスト・イメージをゲスト・メモリ22に格納する。ステップS430において、ハイパーバイザ30が、暗号化されたゲスト・キー24を含む初期のゲスト・ステート52を準備する。このように、ステップS410からS430は、ハイパーバイザに制御されるシステム10においてゲスト20を初期化するために働く。ステップS440において、セキュアなゲスト20の仮想マシンが、現在のゲスト・ステート52に従って始動される。次にステップS450において、CPU216が、現在のゲスト・ステート52に示されるようにセキュアなゲスト・コンテキスト42においてセキュアなゲスト20を動作させる。ステップS460において、割り込みまたは命令インターセプションの形でゲスト・イベントが発生する場合、ゲスト20は、この割り込みまたはインターセプションにより、更新されたゲスト・ステート52を有するゲスト・コンテキスト42を抜ける。ここで、ハイパーバイザ30は、ステップS470において、セキュアなゲスト20からデータを読み取るために第1のファームウェア・サービスを使用して、またはセキュアなゲスト20にデータを書き込むために第2のファームウェア・サービスを使用して、割り込みまたはインターセプションをハンドルすることが可能である。
概して、第1のファームウェア・サービスがトリガされ、(ii)ファームウェア70が、ゲスト・イベントに関連付けられた情報を処理し、ゲスト・ステート52およびゲスト・メモリ22の情報のサブセットのみを復号された形態でハイパーバイザ30に提示していること、ならびに(iii)ファームウェア70が、ハイパーバイザ30に送信されていない情報の部分を保持していること、をもたらすことができる。さらに、(iv)受信した情報のサブセットに基づき、ハイパーバイザ30は、第2のファームウェア・サービスをトリガし、(v)ゲスト20のステートの変更またはメモリの変更あるいはその両方の変更を生成し、(vi)暗号化された形態でゲスト・メモリ22におけるゲスト・イベントに関連付けられたステートの変更またはメモリの変更あるいはその両方の変更を実行することができる。
セキュアなゲスト20を終える場合、分岐S480において、全体のプロセスが終了する。セキュアなゲスト20を終えない場合、ステップS440へのループが閉じ、ハイパーバイザ30がセキュアなゲスト20を再度始動させる。
図5において、本発明の一実施形態により動作する暗号化されたゲストによるインターセプション・ハンドリングのための詳細なフローチャートを示す。ゲスト・イベントによってステップS510が開始され、ハイパーバイザ30によるインタープリテーションまたはサポートを要求する命令、例えば、ハイパーバイザ30によって通常は提供されるシステム環境パラメータを格納するための命令を、セキュアなゲスト20が発行すること、がもたらされる。次のステップS520において、仮想化機能34の実行が、ゲスト・コンテキスト42を抜け、CPU内部仮想化コードにイニシアティブを渡す。次いでステップS530において、CPU内部仮想化コードは、ゲスト20の終了の理由を検出する。例えば、システム環境パラメータを格納するための命令を識別する。ステップS540において、CPU内部仮想化コードは、ゲスト20の終了の理由に従って、ハイパーバイザ30が入出力パラメータにアクセスするためのハンドル(handle)を準備する。例えば、要求された情報のための格納位置をハンドルに関係付ける。次にステップS550において、CPU内部仮想化コードは、インターセプションを処理するのに必要ではない実行ステートの部分をマスクし、ハイパーバイザ30にイニシアティブを戻し、ゲスト20の終了、および入出力パラメータ・ハンドルのヒントを示す。例えば、レジスタおよびコンテキストのデータを、例えば暗号化することによってハイパーバイザ30から隠す。あるいは、ステップS520からS550におけるCPU内部仮想化コードは、第1のファームウェア・サービスとして実装されてもよい。次に、ステップS560において、CPU内部仮想化コードから理由表示を読み取ることによって、ハイパーバイザ30は、ゲスト20の終了の理由を検出する。例えば、システム環境パラメータを格納するための仮想サーバの要求を識別するための理由コードを読み取る。ハイパーバイザ30は、ステップS570において(必要であれば繰り返し)、ファームウェア・サービス(例えば、第1のファームウェア・サービス)をトリガして、入出力パラメータと共に機能し、ゲスト20の終了を処理する。これを実行するために、ハイパーバイザ30は、処理に必要なメモリ230およびレジスタの内容を参照するための手段として、事前に設定したハンドルを使用する。例えば、ハイパーバイザ30は、受信したハンドルを使用して、ファームウェア・サービス(例えば、第2のファームウェア・サービス)を介して仮想サーバのメモリにシステム環境パラメータを格納する。
このように、図5における暗号化されたゲストのインターセプション・ハンドリングのための詳細なフローチャートにおいて、ハイパーバイザに制御されるシステム10におけるゲスト・イベントを処理するために第1および第2のファームウェア・サービスがどのように使用されるか、(ii)ファームウェア70が、ゲスト・イベントに関連付けられた情報をどのように処理し、情報のサブセットのみを復号された形態でハイパーバイザ30にどのように提示するか、ならびに、(iii)ファームウェア70が、情報の部分を保持していること、および(iv)受信した情報のサブセットに基づいて、第2のファームウェア・サービスがトリガされ得ること、が記載される。
次に、ステップS580において、ハイパーバイザ30は、適合するCPU命令を発行することによって仮想化機能34の実行を再開し、ステップS590まで、CPU内部仮想化コードは、ゲスト20の過去の終了からハンドルをクリアし、仮想化機能34が実行するための仮想サーバの内容をマスク解除し、仮想サーバの実行を開始する。
したがって、ゲスト20のステートの変更またはメモリの変更あるいはその両方の変更は、暗号化された形態でゲスト・メモリ22において生成および実行され得る。
ここで図6を参照すると、データ処理システム210の一例の概略が示される。データ処理システム210は、適切なデータ処理システムの単なる1つの例に過ぎず、本明細書に記載される本発明の実施形態の使用または機能の範囲に関して何らかの限定を示唆するようには意図されていない。ともかく、データ処理システム210は、実装されることが可能であり、または本明細書において上述した機能のいずれかを実行することが可能であり、あるいはその両方が可能である。
データ処理システム210中には、多くの他の汎用または専用コンピューティング・システム環境または構成で動作可能なコンピュータ・システム/サーバ212がある。コンピュータ・システム/サーバ212と共に使用するのに適切であり得る周知のコンピューティング・システム、環境、または構成、あるいはこれらの組合せの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能な消費者向け電子機器、ネットワークPC、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらのシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
コンピュータ・システム/サーバ212は、コンピュータ・システムによって実行されるプログラム・モジュールなど、命令を実行可能なコンピュータ・システムの全般的な文脈で記載され得る。概して、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含むことができる。コンピュータ・システム/サーバ212は、分散クラウド・コンピューティング環境において実行されてよく、ここで、通信ネットワークを介してリンクされるリモートの処理デバイスによってタスクが実行される。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルおよびリモート両方のコンピュータ・システム・ストレージ媒体に配置されてよい。
図6に示されるように、データ処理システム210におけるコンピュータ・システム/サーバ212は、汎用コンピューティング・デバイスの形態で示される。コンピュータ・システム/サーバ212のコンポーネントは、1つまたは複数のプロセッサまたはCPU216と、システム・メモリ228と、システム・メモリ228を含む様々なシステム・コンポーネントをCPU216に接続するバス218とを含むことができるが、これらに限定されない。
バス218は、メモリ・バスまたはメモリ・コントローラ、周辺機器用バス、アクセラレーテッド・グラフィクス・ポート、および様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含むいくつかのタイプのバス・アーキテクチャのいずれかの1つまたは複数を表す。限定ではなく例として、このようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)バスを含む。
コンピュータ・システム/サーバ212は、典型的には、様々なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ212によってアクセス可能な任意の利用可能な媒体であってよく、揮発性媒体と不揮発性媒体、リムーバブル媒体と非リムーバブル媒体を共に含む。
システム・メモリ228は、ランダム・アクセス・メモリ(RAM)230またはキャッシュ・メモリ232あるいはその両方などの揮発性メモリの形態で、コンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ212は、他のリムーバブル/非リムーバブルな、揮発性/非揮発性の、コンピュータ・システム・ストレージ媒体をさらに含むことができる。例のみとして、ストレージ・システム234は、非リムーバブル不揮発性磁気媒体(図示せず、典型的には「ハード・ドライブ」と呼ばれる)から読み取り、ここに書き込むために提供され得る。図示されていないが、リムーバブル不揮発性磁気ディスク(例えば「フロッピー(R)ディスク」)から読み取り、ここに書き込む磁気ディスク・ドライブ、およびCD−ROM、DVD−ROMなどのリムーバブル不揮発性光ディスクから読み取り、ここに書き込む光ディスク・ドライブ、または他の光媒体が提供され得る。このような例において、それぞれは、1つまたは複数のデータ媒体インターフェースによってバス218に接続され得る。以下にさらに示され記載されるように、メモリ228は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
プログラム・モジュール242のセット(少なくとも1つ)を有するプログラム/ユーティリティ240は、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、限定ではなく一例として、メモリ228に格納してよい。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはいくつかのこれらの組合せのそれぞれは、ネットワーキング環境の実装を含むことができる。プログラム・モジュール242は、概して、本明細書に記載するような本発明の実施形態の機能または方法あるいはその両方を実行する。コンピュータ・システム/サーバ212は、キーボード、ポインティング・デバイス、ディスプレイ242などの1つまたは複数の外部デバイス214、ユーザにコンピュータ・システム/サーバ212との対話を可能にさせる1つまたは複数のデバイス、またはコンピュータ・システム/サーバ212に1つまたは複数のコンピューティング・デバイスとの対話を可能にさせる任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはこれらの組合せと通信することもできる。このような通信は、入力/出力(I/O)インターフェース222を介して行うことができる。さらにまた、コンピュータ・システム/サーバ212は、ネットワーク・アダプタ220を介して、ローカル・エリア・ネットワーク(LAN)、通常のワイド・エリア・ネットワーク(WAN)、または公衆ネットワーク(例えば、インターネット)、あるいはこれらの組合せなど、1つまたは複数のネットワークと通信することができる。上述のように、ネットワーク・アダプタ220は、バス218を介して、コンピュータ・システム/サーバ212の他のコンポーネントと通信する。図示されていないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方が、コンピュータ・システム/サーバ212と併せて使用され得ることを理解されたい。例には、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらに限定されない。
図面におけるブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関して、ブロック図の各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能な命令を含むモジュール、セグメント、またはコードの部分を表すことができる。いくつかの代替的な実装において、ブロックに示される機能は、図面に示される以外の順序で行うことができることにも留意されたい。例えば、連続して示される2つのブロックは、付随する機能に応じて、実際には、実質的に同時に実行されてよく、またはブロックが逆順で実行されることがあってもよい。ブロック図の各ブロック、ブロック図のブロックの組合せは、指定された機能もしくは動作を行う特定目的のハードウェアに基づくシステム、または特定目的のハードウェアとコンピュータ命令との組合せによって実装され得ることにも留意されたい。
Claims (13)
- ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理するための方法であって、
(i)ゲストに、ならびにゲスト・キーによって暗号化されたゲスト・ステートおよびゲスト・メモリに関連付けられた前記ゲスト・イベントが、ファームウェアにおける前記ゲスト・イベントに特有な第1のファームウェア・サービスをトリガするステップと、
(ii)前記ファームウェアが、前記ゲスト・ステートおよび前記ゲスト・メモリの情報を含み前記ゲスト・イベントに関連付けられた情報を処理し、前記ゲスト・ステートおよび前記ゲスト・メモリの前記情報のサブセットのみを復号された形態でハイパーバイザに提示するステップであって、前記情報の前記サブセットは、前記ハイパーバイザが前記ゲスト・イベントを処理するのに十分であるように選択される、前記提示するステップと、
(iii)前記ファームウェアが、前記ゲスト・ステートおよび前記ゲスト・メモリの前記情報のうち前記ハイパーバイザに送信されていない部分を保持するステップと、
(iv)前記ハイパーバイザが、前記ゲスト・ステートおよび前記ゲスト・メモリの前記情報の受信した前記サブセットに基づいて、前記ゲスト・イベントを処理し、処理結果を前記ファームウェアに送信し、前記ゲスト・イベントに特有な第2のファームウェア・サービスをトリガするステップと、
(v)前記ファームウェアが、前記ゲスト・ステートおよび前記ゲスト・メモリの前記情報のうち前記ハイパーバイザに送信されなかった前記部分と併せて、受信した前記処理結果を処理し、ステートの変更またはメモリの変更あるいはその両方の変更を生成するステップと、
(vi)前記ファームウェアが、前記ゲスト・イベントに関連付けられた前記ステートの変更または前記メモリの変更あるいは前記その両方の変更を、暗号化された形態で前記ゲスト・メモリにおいて実行するステップと、
を含む方法。 - (i)CPUがゲストのコンテキストにおいて動作する場合、前記CPUが前記ゲスト・メモリを復号または暗号化するステップと、
(ii)暗号化されていないメモリ範囲を介して前記ゲストが外部と通信することを可能にするステップと、
(iii)前記ゲスト・メモリの暗号化されたページを前記ハイパーバイザがページングするステップと、
をさらに含む、請求項1に記載の方法。 - (i)CPUのキー・ストアに転送するために、前記CPUの秘密キーに関連付けられた公開キーによって暗号化された前記ゲスト・キーを前記ゲストに準備するステップと、
(ii)前記CPUに格納されており、前記暗号化されたゲスト・キーを復号するのに使用される前記秘密キーを前記CPUに準備するステップと、
(iii)前記CPUがゲストのコンテキストにおいてゲストまたはファームウェアのコードを動作させる間に、前記ゲスト・キーが、前記ゲスト・メモリを暗号化および復号するのに使用されるステップと、
をさらに含む、請求項1または2に記載の方法。 - (i)クライアントがブート・イメージを生成するステップと、
(ii)前記ブート・イメージを前記ゲスト・キーによって暗号化するステップと、
(iii)前記暗号化されたブート・イメージをブート・ディスクに転送するステップと、
(iv)前記ハイパーバイザがゲストの前記暗号化されたブート・イメージを前記ゲスト・メモリにロードするステップと、
(v)CPUのレベルで仮想マシンとしてゲストの実行を開始するステップと、
をさらに含む、請求項1ないし3のいずれか一項に記載の方法。 - (i)CPUがゲストのコンテキストにある間に、前記ゲスト・メモリ上で実行される仮想マシンにおける実行スレッドをクリア・テキストに復号するステップと、
(ii)前記CPUがゲストのコンテキストおよび前記ゲスト・ステートにある間に前記ゲスト・メモリを復号するステップであって、前記ゲストのコンテキストおよび前記ゲスト・ステートの両方は、前記ハイパーバイザまたは他のゲストによるアクセスから保護される、前記復号するステップと、
をさらに含む、請求項1ないし4のいずれか一項に記載の方法。 - (i)CPUの仮想化機能を拡張して、ゲストのコンテキストにおいて前記ゲスト・メモリの暗号化された領域が書き込まれるときに前記ゲスト・メモリを暗号化するステップと、
(ii)ゲストのコンテキストにおいて前記ゲスト・メモリの前記暗号化された領域が読み取られるときに前記ゲスト・メモリを復号するステップと、
(iii)前記ゲスト・メモリおよびゲスト・レジスタの暗号化された領域を、暗号化された形態においてのみ前記ハイパーバイザからアクセス可能に保持するステップと、
をさらに含む、請求項1ないし5のいずれか一項に記載の方法。 - (i)前記ゲスト・イベントに関連付けられた前記ゲスト・メモリまたはレジスタの暗号化された範囲を、復号された形態において前記ハイパーバイザからアクセス不可に保持するステップと、
(ii)前記ゲスト・イベントに関連付けられた特有なゲスト・データに対するアクセス・メソッドによって、CPUの仮想化機能を拡張するステップと、
をさらに含む、請求項1ないし6のいずれか一項に記載の方法。 - (i)前記ゲスト・メモリの暗号化された領域の外部に、前記ゲストのI/OバッファおよびI/O制御構造のための暗号化されていないメモリ領域を定義するステップと、
(ii)前記ゲスト・メモリの暗号化されていない領域を使用して、前記ゲストによるI/Oプロセスを開始するステップと、
(iii)CPUの仮想化機能がゲスト・イベントを生成するステップと、
(iv)前記ハイパーバイザが、前記ゲスト・イベントの理由を読み取り、前記I/Oプロセスを実行するステップと、
をさらに含む、請求項1ないし7のいずれか一項に記載の方法。 - (i)前記ハイパーバイザが前記ゲスト・メモリのページをページアウトするステップと、
(ii)ページアウトしたページへのアクセスの試みがあるとページ・フォールトを提供するステップであって、前記ページ・フォールトは、前記ハイパーバイザのページアウト動作が前記ページ・フォールトを引き起こしたかどうかを前記ハイパーバイザに示す、前記提供するステップと、
(iii)前記ハイパーバイザをトリガして、前記ゲスト・メモリに対するページイン・プロセスを実行するステップと、
をさらに含む、請求項1ないし8のいずれか一項に記載の方法。 - 前記ゲスト・キーを認識するチェック・プロセスによって、ゲストの完全性をチェックするステップをさらに含み、前記チェック・プロセスは、
(i)前記ゲストが、前記ゲスト・メモリからクリア・テキストのメモリ内容を読み取り、前記ゲスト・メモリの任意の範囲をセキュアな通信パスを介して前記チェック・プロセスに転送するステップと、
(ii)前記ハイパーバイザに前記ゲスト・メモリの同じメモリ範囲を要求し、前記範囲を前記チェック・プロセスに転送するステップと、
(iii)前記ゲストから得られたメモリ内容を、前記ハイパーバイザから得られたメモリ内容を復号した結果と比較するステップと、
(iv)前記2つのメモリ範囲の前記内容に応じて比較結果を送るステップと、
(v)前記比較結果がゼロに等しい場合は肯定であり、その他の場合は否定である前記チェック・プロセスの結果を返すステップと、
を含む、請求項1ないし9のいずれか一項に記載の方法。 - データ処理システムにおいて実行するためのデータ処理プログラムであって、
前記データ処理プログラムがコンピュータ上で動作するときに請求項1ないし10のいずれか一項に記載の方法を実行するための命令セットの実装を含む、データ処理プログラム。 - コンピュータ可読プログラムであって、前記コンピュータ可読プログラムは、コンピュータ上で実行されると、ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理するための方法を前記コンピュータに実行させ、前記方法は、
(i)ゲストに、ならびにゲスト・キーによって暗号化されたゲスト・ステートおよびゲスト・メモリに関連付けられた前記ゲスト・イベントが、ファームウェアにおける前記ゲスト・イベントに特有な第1のファームウェア・サービスをトリガするステップと、
(ii)前記ファームウェアが、前記ゲスト・ステートおよび前記ゲスト・メモリの情報を含み前記ゲスト・イベントに関連付けられた情報を処理し、前記ゲスト・ステートおよび前記ゲスト・メモリの前記情報のサブセットのみを復号された形態でハイパーバイザに提示するステップであって、前記情報の前記サブセットは、前記ハイパーバイザが前記ゲスト・イベントを処理するのに十分であるように選択される、前記提示するステップと、
(iii)前記ファームウェアが、前記ゲスト・ステートおよび前記ゲスト・メモリの前記情報のうち前記ハイパーバイザに送信されていない部分を保持するステップと、
(iv)前記ハイパーバイザが、前記ゲスト・ステートおよび前記ゲスト・メモリの前記情報の受信した前記サブセットに基づいて、前記ゲスト・イベントを処理し、処理結果を前記ファームウェアに送信し、前記ゲスト・イベントに特有な第2のファームウェア・サービスをトリガするステップと、
(v)前記ファームウェアが、前記ゲスト・ステートおよび前記ゲスト・メモリの前記情報のうち前記ハイパーバイザに送信されなかった前記部分と併せて、受信した前記処理結果を処理し、ステートの変更またはメモリの変更あるいはその両方の変更を生成するステップと、
(vi)前記ファームウェアが、前記ゲスト・イベントに関連付けられた前記ステートの変更または前記メモリの変更あるいは前記その両方の変更を、暗号化された形態で前記ゲスト・メモリにおいて実行するステップと、
を含む、コンピュータ・プログラム。 - 請求項1ないし10のいずれか一項に記載の方法を実行するためのソフトウェア・コード部分を含むデータ処理プログラムを実行するためのデータ処理システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1311430.1 | 2013-06-27 | ||
GB1311430.1A GB2515536A (en) | 2013-06-27 | 2013-06-27 | Processing a guest event in a hypervisor-controlled system |
PCT/IB2014/059780 WO2014207581A2 (en) | 2013-06-27 | 2014-03-14 | Processing a guest event in a hypervisor-controlled system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016523421A JP2016523421A (ja) | 2016-08-08 |
JP6347831B2 true JP6347831B2 (ja) | 2018-06-27 |
Family
ID=48999042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016522898A Expired - Fee Related JP6347831B2 (ja) | 2013-06-27 | 2014-03-14 | ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理するための方法、データ処理プログラム、コンピュータ・プログラム製品、およびデータ処理システム |
Country Status (6)
Country | Link |
---|---|
US (1) | US9690947B2 (ja) |
JP (1) | JP6347831B2 (ja) |
CN (1) | CN105453034B (ja) |
DE (1) | DE112014000965T5 (ja) |
GB (2) | GB2515536A (ja) |
WO (1) | WO2014207581A2 (ja) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3036680B1 (en) * | 2013-08-21 | 2018-07-18 | Intel Corporation | Processing data privately in the cloud |
WO2016209915A1 (en) * | 2015-06-24 | 2016-12-29 | Advanced Micro Devices, Inc. | Protecting state information for virtual machines |
GB2532415A (en) * | 2014-11-11 | 2016-05-25 | Ibm | Processing a guest event in a hypervisor-controlled system |
US9875047B2 (en) * | 2015-05-27 | 2018-01-23 | Red Hat Israel, Ltd. | Exit-less host memory locking in a virtualized environment |
GB2539435B8 (en) | 2015-06-16 | 2018-02-21 | Advanced Risc Mach Ltd | Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level |
GB2539428B (en) | 2015-06-16 | 2020-09-09 | Advanced Risc Mach Ltd | Data processing apparatus and method with ownership table |
GB2539433B8 (en) * | 2015-06-16 | 2018-02-21 | Advanced Risc Mach Ltd | Protected exception handling |
GB2539429B (en) | 2015-06-16 | 2017-09-06 | Advanced Risc Mach Ltd | Address translation |
US9767318B1 (en) * | 2015-08-28 | 2017-09-19 | Frank Dropps | Secure controller systems and associated methods thereof |
CN105184154B (zh) * | 2015-09-15 | 2017-06-20 | 中国科学院信息工程研究所 | 一种在虚拟化环境中提供密码运算服务的系统和方法 |
US9894061B2 (en) * | 2015-10-16 | 2018-02-13 | International Business Machines Corporation | Method for booting and dumping a confidential image on a trusted computer system |
US10102151B2 (en) | 2015-11-06 | 2018-10-16 | International Business Machines Corporation | Protecting a memory from unauthorized access |
US10019279B2 (en) | 2015-12-17 | 2018-07-10 | International Business Machines Corporation | Transparent secure interception handling |
US9841987B2 (en) | 2015-12-17 | 2017-12-12 | International Business Machines Corporation | Transparent secure interception handling |
US9898326B2 (en) * | 2016-02-23 | 2018-02-20 | Red Hat Israel, Ltd. | Securing code loading in a virtual environment |
US11188651B2 (en) * | 2016-03-07 | 2021-11-30 | Crowdstrike, Inc. | Hypervisor-based interception of memory accesses |
US10348500B2 (en) * | 2016-05-05 | 2019-07-09 | Adventium Enterprises, Llc | Key material management |
US10243746B2 (en) | 2017-02-27 | 2019-03-26 | Red Hat, Inc. | Systems and methods for providing I/O state protections in a virtualized environment |
CN107240408B (zh) * | 2017-05-11 | 2019-05-10 | 中国科学院信息工程研究所 | 针对cd-rom光盘介质的读写管控系统 |
GB2563886B (en) | 2017-06-28 | 2019-12-25 | Advanced Risc Mach Ltd | Realm management unit-private memory regions |
US11687654B2 (en) | 2017-09-15 | 2023-06-27 | Intel Corporation | Providing isolation in virtualized systems using trust domains |
US10686605B2 (en) * | 2017-09-29 | 2020-06-16 | Intel Corporation | Technologies for implementing mutually distrusting domains |
US10757082B2 (en) * | 2018-02-22 | 2020-08-25 | International Business Machines Corporation | Transforming a wrapped key into a protected key |
US10949547B2 (en) * | 2018-10-05 | 2021-03-16 | Google Llc | Enclave fork support |
US11403409B2 (en) * | 2019-03-08 | 2022-08-02 | International Business Machines Corporation | Program interruptions for page importing/exporting |
US11443040B2 (en) * | 2019-03-08 | 2022-09-13 | International Business Machines Corporation | Secure execution guest owner environmental controls |
US11308215B2 (en) * | 2019-03-08 | 2022-04-19 | International Business Machines Corporation | Secure interface control high-level instruction interception for interruption enablement |
US10956188B2 (en) * | 2019-03-08 | 2021-03-23 | International Business Machines Corporation | Transparent interpretation of guest instructions in secure virtual machine environment |
US11354421B2 (en) * | 2019-03-08 | 2022-06-07 | International Business Machines Corporation | Secure execution guest owner controls for secure interface control |
US11743155B2 (en) * | 2019-11-14 | 2023-08-29 | Trideum Corporation | Systems and methods of monitoring and controlling remote assets |
US11475167B2 (en) | 2020-01-29 | 2022-10-18 | International Business Machines Corporation | Reserving one or more security modules for a secure guest |
CN111833108A (zh) * | 2020-07-17 | 2020-10-27 | 上海国际技贸联合有限公司 | 一种信息采集分析处理系统、方法以及存储介质 |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5404563A (en) * | 1991-08-28 | 1995-04-04 | International Business Machines Corporation | Scheduling normally interchangeable facilities in multiprocessor computer systems |
US5371867A (en) * | 1992-11-10 | 1994-12-06 | International Business Machines Corporation | Method of using small addresses to access any guest zone in a large memory |
JP2003051819A (ja) * | 2001-08-08 | 2003-02-21 | Toshiba Corp | マイクロプロセッサ |
US7024555B2 (en) * | 2001-11-01 | 2006-04-04 | Intel Corporation | Apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment |
CN100447736C (zh) * | 2004-05-08 | 2008-12-31 | 英特尔公司 | 包括固件接口运行时环境保护字段的设备和方法 |
US8627315B2 (en) * | 2004-12-31 | 2014-01-07 | Intel Corporation | Apparatus and method for cooperative guest firmware |
US7299337B2 (en) * | 2005-05-12 | 2007-11-20 | Traut Eric P | Enhanced shadow page table algorithms |
US20080059556A1 (en) * | 2006-08-31 | 2008-03-06 | Egenera, Inc. | Providing virtual machine technology as an embedded layer within a processing platform |
US8615643B2 (en) * | 2006-12-05 | 2013-12-24 | Microsoft Corporation | Operational efficiency of virtual TLBs |
US7788464B2 (en) * | 2006-12-22 | 2010-08-31 | Microsoft Corporation | Scalability of virtual TLBs for multi-processor virtual machines |
JP2008181228A (ja) * | 2007-01-23 | 2008-08-07 | Sony Corp | 管理システムおよび管理方法、端末装置、管理サーバ、並びにプログラム |
US8688920B2 (en) * | 2007-05-14 | 2014-04-01 | International Business Machines Corporation | Computing system with guest code support of transactional memory |
US8127292B1 (en) * | 2007-06-22 | 2012-02-28 | Parallels Holdings, Ltd. | Virtualization system with hypervisor embedded in bios or using extensible firmware interface |
JP4678396B2 (ja) * | 2007-09-25 | 2011-04-27 | 日本電気株式会社 | 仮想マシンモニタをモニタするコンピュータとその方法、および仮想マシンモニタモニタプログラム |
US8156298B1 (en) * | 2007-10-24 | 2012-04-10 | Adam Stubblefield | Virtualization-based security apparatuses, methods, and systems |
US8555081B2 (en) * | 2007-10-30 | 2013-10-08 | Vmware, Inc. | Cryptographic multi-shadowing with integrity verification |
CN101179379A (zh) | 2007-12-11 | 2008-05-14 | 中兴通讯股份有限公司 | 用于微波接入全球互通系统的固件安全管理方法 |
CN101470783B (zh) | 2007-12-25 | 2010-09-01 | 中国长城计算机深圳股份有限公司 | 一种基于可信平台模块的身份识别方法及装置 |
US8261028B2 (en) * | 2007-12-31 | 2012-09-04 | Intel Corporation | Cached dirty bits for context switch consistency checks |
US8364983B2 (en) * | 2008-05-08 | 2013-01-29 | Microsoft Corporation | Corralling virtual machines with encryption keys |
US8381032B2 (en) * | 2008-08-06 | 2013-02-19 | O'shantel Software L.L.C. | System-directed checkpointing implementation using a hypervisor layer |
JP4643702B2 (ja) * | 2008-10-27 | 2011-03-02 | 株式会社東芝 | マイクロプロセッサ |
US20100146267A1 (en) * | 2008-12-10 | 2010-06-10 | David Konetski | Systems and methods for providing secure platform services |
US8738932B2 (en) * | 2009-01-16 | 2014-05-27 | Teleputers, Llc | System and method for processor-based security |
US8538919B1 (en) * | 2009-05-16 | 2013-09-17 | Eric H. Nielsen | System, method, and computer program for real time remote recovery of virtual computing machines |
JP5592942B2 (ja) * | 2009-05-19 | 2014-09-17 | ヴイエムウェア インク | 仮想マシンシステムにおけるショートカット入出力 |
US20110041126A1 (en) * | 2009-08-13 | 2011-02-17 | Levy Roger P | Managing workloads in a virtual computing environment |
JP5484117B2 (ja) * | 2010-02-17 | 2014-05-07 | 株式会社日立製作所 | ハイパーバイザ及びサーバ装置 |
US9703586B2 (en) * | 2010-02-17 | 2017-07-11 | Microsoft Technology Licensing, Llc | Distribution control and tracking mechanism of virtual machine appliances |
US20110202765A1 (en) * | 2010-02-17 | 2011-08-18 | Microsoft Corporation | Securely move virtual machines between host servers |
JP5377748B2 (ja) * | 2010-02-18 | 2013-12-25 | 株式会社東芝 | プログラム |
US8793439B2 (en) * | 2010-03-18 | 2014-07-29 | Oracle International Corporation | Accelerating memory operations using virtualization information |
US8375437B2 (en) * | 2010-03-30 | 2013-02-12 | Microsoft Corporation | Hardware supported virtualized cryptographic service |
US8671405B2 (en) * | 2010-03-31 | 2014-03-11 | Microsoft Corporation | Virtual machine crash file generation techniques |
JP5574230B2 (ja) * | 2010-04-28 | 2014-08-20 | 株式会社日立製作所 | 障害処理方法および計算機 |
US8555377B2 (en) * | 2010-04-29 | 2013-10-08 | High Cloud Security | Secure virtual machine |
US8812871B2 (en) * | 2010-05-27 | 2014-08-19 | Cisco Technology, Inc. | Method and apparatus for trusted execution in infrastructure as a service cloud environments |
US8566613B2 (en) * | 2010-06-11 | 2013-10-22 | Intel Corporation | Multi-owner deployment of firmware images |
EP2588950A4 (en) * | 2010-07-01 | 2015-08-19 | Hewlett Packard Development Co | USER MANAGEMENT ARCHITECTURE FOR SEVERAL ENVIRONMENTS ON A DATA PROCESSING DEVICE |
US8239620B2 (en) * | 2010-09-27 | 2012-08-07 | Mips Technologies, Inc. | Microprocessor with dual-level address translation |
CA2825811A1 (en) * | 2011-01-27 | 2012-08-02 | L-3 Communications Corporation | Internet isolation for avoiding internet security threats |
US20140032753A1 (en) * | 2011-05-16 | 2014-01-30 | Hitachi, Ltd. | Computer system and node search method |
JP5365664B2 (ja) * | 2011-06-20 | 2013-12-11 | 富士通セミコンダクター株式会社 | セキュアプロセッサ |
US8984478B2 (en) * | 2011-10-03 | 2015-03-17 | Cisco Technology, Inc. | Reorganization of virtualized computer programs |
US9256552B2 (en) * | 2011-11-21 | 2016-02-09 | Cisco Technology, Inc. | Selective access to executable memory |
US9146847B2 (en) * | 2011-12-14 | 2015-09-29 | Vmware, Inc. | Optimizing for page sharing in virtualized java virtual machines |
US8918608B2 (en) * | 2012-01-09 | 2014-12-23 | Ravello Systems Ltd. | Techniques for handling memory accesses by processor-independent executable code in a multi-processor environment |
US8959577B2 (en) * | 2012-04-13 | 2015-02-17 | Cisco Technology, Inc. | Automatic curation and modification of virtualized computer programs |
US10152409B2 (en) * | 2012-04-30 | 2018-12-11 | Vmware, Inc. | Hybrid in-heap out-of-heap ballooning for java virtual machines |
US10063380B2 (en) * | 2013-01-22 | 2018-08-28 | Amazon Technologies, Inc. | Secure interface for invoking privileged operations |
US9503268B2 (en) * | 2013-01-22 | 2016-11-22 | Amazon Technologies, Inc. | Securing results of privileged computing operations |
JP6072084B2 (ja) * | 2013-02-01 | 2017-02-01 | 株式会社日立製作所 | 仮想計算機システムおよび仮想計算機システムのデータ転送制御方法 |
US9606818B2 (en) * | 2013-03-14 | 2017-03-28 | Qualcomm Incorporated | Systems and methods of executing multiple hypervisors using multiple sets of processors |
US9880773B2 (en) * | 2013-03-27 | 2018-01-30 | Vmware, Inc. | Non-homogeneous disk abstraction for data oriented applications |
-
2013
- 2013-06-27 GB GB1311430.1A patent/GB2515536A/en not_active Withdrawn
-
2014
- 2014-03-14 JP JP2016522898A patent/JP6347831B2/ja not_active Expired - Fee Related
- 2014-03-14 WO PCT/IB2014/059780 patent/WO2014207581A2/en active Application Filing
- 2014-03-14 US US14/899,166 patent/US9690947B2/en not_active Expired - Fee Related
- 2014-03-14 GB GB1600172.9A patent/GB2530225B/en active Active
- 2014-03-14 CN CN201480036373.2A patent/CN105453034B/zh not_active Expired - Fee Related
- 2014-03-14 DE DE112014000965.2T patent/DE112014000965T5/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US20160148001A1 (en) | 2016-05-26 |
WO2014207581A2 (en) | 2014-12-31 |
GB2530225B (en) | 2016-10-19 |
WO2014207581A3 (en) | 2015-04-09 |
US9690947B2 (en) | 2017-06-27 |
JP2016523421A (ja) | 2016-08-08 |
CN105453034A (zh) | 2016-03-30 |
GB2530225A (en) | 2016-03-16 |
CN105453034B (zh) | 2018-11-16 |
GB201311430D0 (en) | 2013-08-14 |
GB2515536A (en) | 2014-12-31 |
GB201600172D0 (en) | 2016-02-17 |
DE112014000965T5 (de) | 2015-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6347831B2 (ja) | ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理するための方法、データ処理プログラム、コンピュータ・プログラム製品、およびデータ処理システム | |
US10599489B2 (en) | Processing a guest event in a hypervisor-controlled system | |
EP3281146B1 (en) | Isolating guest code and data using multiple nested page tables | |
US9934407B2 (en) | Apparatus for and method of preventing unsecured data access | |
US7496768B2 (en) | Providing secure input and output to a trusted agent in a system with a high-assurance execution environment | |
US20100146267A1 (en) | Systems and methods for providing secure platform services | |
US9779032B2 (en) | Protecting storage from unauthorized access | |
US11755753B2 (en) | Mechanism to enable secure memory sharing between enclaves and I/O adapters | |
JP6955619B2 (ja) | セキュリティ・モジュールを備えた、コンピュータ・システム・ソフトウェア/ファームウェアおよび処理装置 | |
JP6682752B2 (ja) | セキュアエンクレーブを用いてデータ暗号化を強化するための技術 | |
US9832199B2 (en) | Protecting access to hardware devices through use of a secure processor | |
JP6580138B2 (ja) | セキュア・オブジェクトをサポートするプロセッサ、方法およびコンピュータ・プログラム | |
AU2020287873B2 (en) | Systems and methods for processor virtualization | |
US20160292086A1 (en) | Protecting contents of storage | |
US20230236870A1 (en) | Safe entropy source for encrypted virtual machines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170221 |
|
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: 20180508 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180529 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6347831 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |