JP2024533120A - セキュア仮想マシンの診断状態の格納 - Google Patents
セキュア仮想マシンの診断状態の格納 Download PDFInfo
- Publication number
- JP2024533120A JP2024533120A JP2024513747A JP2024513747A JP2024533120A JP 2024533120 A JP2024533120 A JP 2024533120A JP 2024513747 A JP2024513747 A JP 2024513747A JP 2024513747 A JP2024513747 A JP 2024513747A JP 2024533120 A JP2024533120 A JP 2024533120A
- Authority
- JP
- Japan
- Prior art keywords
- virtual machine
- memory
- diagnostic
- obtaining
- request
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims description 102
- 238000000034 method Methods 0.000 claims description 41
- 238000006243 chemical reaction Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 15
- 230000000977 initiatory effect Effects 0.000 claims description 12
- 238000004891 communication Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 description 28
- 230000008569 process Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 12
- 230000000875 corresponding effect Effects 0.000 description 9
- 238000013519 translation Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000009795 derivation Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012517 data analytics Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- 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/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- 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/52—Monitoring 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/53—Monitoring 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
-
- 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/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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
- Crushing And Grinding (AREA)
- Debugging And Monitoring (AREA)
Abstract
仮想マシンの診断状態を格納するための少なくとも1つの要求が取得される。少なくとも1つの要求を取得することに基づいて、仮想マシンの格納された診断状態を提供するために、仮想マシンの診断状態の格納が実行される。格納を実行することは、暗号化されずに格納されている仮想マシンの診断状態を暗号化し、暗号化されずに格納されている仮想マシンの診断状態を暗号化する前の、信頼できない実体による仮想マシンの診断状態の読み取りを防ぐことを含む。
Description
1つまたは複数の態様は、一般に、コンピューティング環境内の処理を容易にすることに関連しており、特に、そのような処理を改善することに関連している。
仮想マシンの診断状態の格納(仮想マシン・ダンプとも呼ばれる)は、その後の分析のために、仮想マシンの状態をファイルで提供する。この格納は、多くの場合、仮想マシンの不具合の根本原因を見つけるために使用される。仮想マシンの状態は、例えば、仮想マシンのメモリのコピーに加えて、仮想マシンの1つまたは複数の中央処理装置の選ばれたレジスタのコピーを含む。
一部の仮想マシンはセキュア仮想マシンであり、セキュア仮想マシンでは、コンピュータ・システムのハードウェアおよびファームウェアが、仮想マシンが共有として能動的に指定する特殊なメモリ領域を除いて、セキュア仮想マシンの状態へのアクセスを拒否する。そのような仮想マシンは、通常は可能であると思われるような、ハイパーバイザによっても、仮想マシンをホストするオペレーティング・システムの管理者によっても、アクセスされ得ない。仮想マシンの状態へのアクセスは、ホスト・システム上の許可された実体が、暗号鍵または秘密文書のような機密情報を仮想マシンのメモリから読み取ることができるということを意味し、これはセキュリティ・リスクになる。
セキュア仮想マシンなどの仮想マシンの診断状態を格納することを含む、仮想マシンに関連する処理が、容易にされるべきである。
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品の提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、方法を実行するために1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを含む。この方法は、仮想マシンの診断状態を格納するための少なくとも1つの要求を取得することを含む。少なくとも1つの要求を取得することに基づいて、仮想マシンの格納された診断状態を提供するために、仮想マシンの診断状態の格納が実行される。格納を実行することは、暗号化されずに格納されている仮想マシンの診断状態を暗号化し、暗号化されずに格納されている仮想マシンの診断状態を暗号化する前の、信頼できない実体による仮想マシンの診断状態の読み取りを防ぐことを含む。
診断の目的で格納されている仮想マシンの状態のセキュリティを維持しながら、仮想マシン(例えば、セキュア仮想マシン)の診断状態が格納されてよい。
例として、仮想マシンの格納された診断状態は、仮想マシンのメモリの内容を含み、または仮想マシンの格納された診断状態は、仮想マシンの1つまたは複数のプロセッサ・レジスタの内容を含み、あるいはその両方である。
1つの例では、仮想マシンの診断状態の格納を開始するための診断状態格納開始要求が取得される。診断状態格納開始要求は、暗号化されずに格納されている仮想マシンの診断状態の少なくとも一部を暗号化することにおいて使用される第1の暗号鍵を取得するために使用される。
1つの例では、少なくとも1つの要求を取得することは、診断プロセッサ状態格納要求を取得することを含む。診断プロセッサ状態格納要求を取得することに基づいて、診断状態の格納を実行することは、例えば、第1の暗号鍵を使用して、仮想マシンの少なくとも1つのプロセッサの少なくとも選ばれた内容を暗号化し、暗号化されたプロセッサの内容を提供することと、暗号化されたプロセッサの内容を格納することとを含む。
1つの例では、少なくとも1つの要求を取得することは、セキュア・メモリからの変換要求を取得することを含む。セキュア・メモリからの変換要求を取得することに基づいて、診断状態の格納を実行することは、例えば、第2の暗号鍵を使用して、暗号化されていない仮想マシンのメモリの少なくとも選ばれた内容を暗号化し、メモリの暗号化された内容を提供することと、メモリの暗号化された内容を格納することとを含む。
例として、セキュア・メモリからの変換要求を取得することに基づいて、診断状態の格納を実行することは、例えば、格納される内容のメモリの単位が暗号化されているかどうかを判定することと、メモリの単位が暗号化されていないということの決定に基づいて、第2の暗号鍵を使用してメモリの単位を暗号化することとを含み、暗号化されているメモリの単位は、再暗号化されない。
暗号化されていない内容を暗号化すること(および暗号化された状態を再暗号化しないこと)によって、処理サイクルおよび複雑さが減らされ、システム性能を改善する。
1つの例では、格納された診断状態は、メモリの暗号化された内容を含む。さらに、1つの例では、診断メモリ状態格納要求が取得され、診断メモリ状態格納要求を取得することに基づいて、メモリの暗号化された内容を復号するために使用されるメタデータが格納される。
例として、このメタデータは、メモリの暗号化された内容を復号するために使用される1つまたは複数の選ばれた値を作成するために使用される1つまたは複数の選ばれた構成要素値を含む。
1つの例では、診断状態の格納を完了するための完了要求が取得され、完了要求を取得することに基づいて、仮想マシンの暗号化されて格納された診断状態を復号するために使用されるデータが提供される。
例として、このデータは、メモリの暗号化された内容の復号において使用される第2の暗号鍵と、暗号化において使用される1つまたは複数の選ばれた値を作成するために使用されるノンス値とを含む。さらに、1つの例では、データの少なくとも一部が暗号化される。
1つまたは複数の態様に関連するコンピュータ実装方法およびシステムも本明細書に記載され、請求される。さらに、1つまたは複数の態様に関連するサービスも本明細書に記載され、請求されてよい。
さらなる特徴および利点が、本明細書に記載された技術によって実現される。他の実施形態および態様は、本明細書において詳細に説明され、請求される態様の一部と見なされる。
1つまたは複数の態様は、本明細書の最後にある特許請求の範囲において例として具体的に指摘され、明確に請求される。前述の内容、ならびに1つまたは複数の態様の目的、特徴、および利点は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にするための能力が提供される。例として、この能力は、格納されている仮想マシンの状態のセキュリティを維持しながら仮想マシン(例えば、セキュア仮想マシン)の診断状態が格納され得る(ダンプされるとも呼ばれる)技術を含む。例として、診断状態は、信頼できない実体(例えば、ハイパーバイザ)によって読み取り可能になる前に、暗号化される。
1つの例では、診断分析のために格納される(すなわち、ダンプされる)仮想マシンのメモリの内容が、例えば、ダンプ鍵と呼ばれる選択された鍵(第1の暗号鍵とも呼ばれる)を使用することによって、暗号化されてよい。例えば、ページアウトされ、ページング鍵(第2の暗号鍵とも呼ばれる)を使用して現在暗号化されているメモリが、選択された鍵を使用して復号され、再暗号化される。別の例として、本発明の態様に従って、複雑さおよび使用される中央処理装置のサイクル数を減らすために、暗号化された(ページング鍵を使用して暗号化された)メモリを再暗号化する代わりに、メモリの単位(例えば、メモリのページ)のための選ばれた一意の値(例えば、微調整値)が提供され、選択された鍵を使用してページング鍵が暗号化される。したがって、ページアウトされたページが、ダンプするために再暗号化される必要はなく、まだ暗号化されていないページのみが、ダンプするために再暗号化される。さらに説明するために、メモリの各単位に、微調整値または選ばれた一意の値と呼ばれる、例えば符号なし整数である値が与えられる。これらの値は、任意の整数から始まり、連続的に割り当てられる。この値は、例えば、リトルエンディアン・バイト配列に変換されてよく、例えば、AES(Advanced Encryption Standard:高度暗号化標準)アルゴリズムを使用して、この値の暗号化が実行されてよい。
1つまたは複数の態様では、仮想マシン(例えば、セキュア仮想マシン)のダンプまたは診断の格納を安全に容易にするために、ウルトラバイザ呼び出し(Ultravisor Call)と呼ばれる命令を使用するアプリケーション・プログラミング・インターフェイスが提供されて使用される。ウルトラバイザ呼び出し命令は、セキュア仮想マシンの診断状態を格納するために使用される1つまたは複数のコマンドを開始するために使用される。これらのコマンドは、例えば、構成ダンプ開始コマンド、中央処理装置状態ダンプ・コマンド、セキュア・ストレージからの変換コマンド、構成ストレージ状態ダンプ・コマンド、および構成ダンプ完了コマンドを含み、これらのコマンドの各々が、下でさらに説明される。
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の1つの実施形態が、図1を参照して説明される。例として、コンピューティング環境は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/Architecture(R)命令セット・アーキテクチャに基づく。z/Architecture命令セット・アーキテクチャの1つの実施形態は、“z/Architecture Principles of Operation," IBM Publication No.SA22-7832-12, Thirteenth Edition, September 2019という公開文献に記載されており、この公開文献は本明細書において参照によってその全体が本明細書に組み込まれている。しかし、z/Architecture命令セット・アーキテクチャは1つの例示的なアーキテクチャにすぎず、International Business Machines Corporationまたは他の実体あるいはその両方の、他のアーキテクチャまたは他の種類のコンピューティング環境あるいはその両方が、本発明の1つまたは複数の態様を含むか、または使用するか、あるいはその両方であってよい。z/ArchitectureおよびIBMは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
図1を参照すると、1つの例では、コンピューティング環境100は中央処理装置複合体(CPC:central processor complex)102を含む。中央処理装置複合体102は、例えば、IBM Z(R)サーバ(または、International Business Machines Corporationもしくは他の実体によって提供される他のサーバもしくはマシン)であり、例えば、1つまたは複数のプロセッサ・ユニット(プロセッサとも呼ばれる)110および入出力(I/O:input/output)サブシステム111に結合されたメモリ104(システム・メモリ、メイン・メモリ、主記憶装置、中央記憶装置、ストレージとも呼ばれる)などの、複数のコンポーネントを含んでいる。プロセッサ・ユニット110の例としては、1つまたは複数の汎用プロセッサ(セントラル・プロセッサまたは中央処理装置(CPU:central processing units)としても知られている)または1つまたは複数の他のプロセッサあるいはその両方が挙げられる。IBM Zは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
I/Oサブシステム111は、中央処理装置複合体の一部であるか、または中央処理装置複合体から分離することができる。I/Oサブシステム111は、主記憶装置104と、中央処理装置複合体に結合された入出力制御ユニット108および入出力(I/O)デバイス106との間の情報の流れを方向付ける。
多くの種類のI/Oデバイスが使用されてよい。1つの特定の種類は、データ・ストレージ・デバイス140である。データ・ストレージ・デバイス140は、1つまたは複数のプログラム142、1つまたは複数のコンピュータ可読プログラム命令144、またはデータ、あるいはその組合せなどを格納することができる。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成され得る。
中央処理装置複合体102は、取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であることができる。例えば、中央処理装置複合体102は、取り外し不可、不揮発性の磁気媒体(通常は、「ハード・ドライブ」と呼ばれる)、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、あるいはCD-ROM、DVD-ROM、または他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りまたは書き込みを行うための光ディスク・ドライブ、あるいはその組合せを含むか、またはこれらに結合されるか、あるいはその両方であることができる。他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、中央処理装置複合体102と併用できるということが理解されるべきである。その例として、マイクロコードまたはミリコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
さらに、中央処理装置複合体102は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用され得る。中央処理装置複合体102での使用に適し得る周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例としては、パーソナル・コンピュータ(PC:personal computer)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらのシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
中央処理装置複合体102は、1つまたは複数の実施形態では仮想化をサポートし、仮想化のサポートでは、例えば、メモリ104が、1つまたは複数の仮想マシン112(ゲストとも呼ばれる)、仮想マシンを管理するハイパーバイザ114などの仮想マシン・マネージャ、信頼できる実行環境115、およびプロセッサ・ファームウェア116を含む。ハイパーバイザ114の1つの例は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/VM(R)ハイパーバイザである。ハイパーバイザは、ホストと呼ばれることがある。z/VMは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
1つまたは複数の実施形態では、信頼できる実行環境115は、例えば、本明細書に記載されているようなプロセスを実行するように構成されたハードウェアまたはファームウェアあるいはその両方において少なくとも部分的に実装されてよい。信頼できる実行環境は、メモリ保護ハードウェアを利用してメモリ保護を実施する、信頼できるファームウェア(ウルトラバイザと呼ばれる)またはハードウェアあるいはその両方である。ゲストの所有者は、ホスト鍵文書に埋め込まれた公開ホスト鍵を使用することによって、(例えば、IBM Secure Executionを使用して)情報を信頼できる実行環境に安全に渡すことができる。機密情報を処理するために、信頼できる実行環境は、一致する秘密ホスト鍵を使用する。秘密ホスト鍵は、サーバ(例えば、IBM Z(R)サーバ)に固有であり、ハードウェア保護される。
プロセッサ・ファームウェア116は、例えば、プロセッサのマイクロコードまたはミリコードを含む。プロセッサ・ファームウェア116は、例えば、上位レベルのマシン・コードの実装において使用される、ハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。1つの実施形態では、プロセッサ・ファームウェア116は、例えば、信頼できるソフトウェアを含んでいるマイクロコードまたはミリコード、基盤になるハードウェアに固有のマイクロコードまたはミリコードとして通常は提供され、システムのハードウェアへのオペレーティング・システムのアクセスを制御する、独自のコードを含む。
中央処理装置複合体の仮想マシンのサポートは、多数の仮想マシン(ゲストとも呼ばれる)112を操作する能力を提供し、各仮想マシン112は、異なるプログラム120と共に動作し、Linux(R)オペレーティング・システムなどのゲスト・オペレーティング・システム122を実行することができる。各仮想マシン112は、別々のシステムとして機能することができる。すなわち、各仮想マシンは、独立してリセットされ、ゲスト・オペレーティング・システムを実行し、異なるプログラムと共に動作することができる。仮想マシン内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように見えるが、実際は、その一部のみが利用可能である。z/VMおよびLinuxが例として提供されているが、本発明の1つまたは複数の態様に従って、他の仮想マシン・マネージャまたはオペレーティング・システムあるいはその両方が使用されてよい。Linux Foundation(世界規模での商標の所有者であるLinus Torvaldsの専用実施権者)からのサブライセンスに従って、登録商標Linux(R)が使用される。
1つの実施形態では、1つまたは複数の仮想マシン112がセキュア仮想マシンである。セキュア仮想マシンは、ハイパーバイザがセキュア仮想マシンの状態(例えば、メモリ、レジスタなど)を観察できない方法で、ハイパーバイザ(例えば、ハイパーバイザ114)によって開始される。例えば、機密コンピューティングの1つの実施形態では、ハイパーバイザは、セキュア仮想マシンを開始/停止することができ、ハイパーバイザは、セキュア仮想マシンを開始するために使用されるデータがどこにあるかを識別するが、実行中のセキュア仮想マシンの中を見ることはできない。セキュア仮想マシンを読み込む/開始するために使用されるデータは、ハイパーバイザがセキュア・マシンを見ることができない方法で暗号化されてよい。セキュア仮想マシン・イメージの所有者は、機密データをセキュア・ゲスト・メタデータ内に配置し、その後、セキュア仮想マシン・イメージをセキュア・ゲスト・メタデータと共に生成する。セキュア仮想マシンが読み込まれた後に、セキュア仮想マシントの状態とのすべての情報のやりとりが、信頼できる実行環境115などの信頼できる実行環境によって処理される。
本発明の態様に従って、仮想マシンの状態のセキュリティを維持しながら、セキュア仮想マシンの診断状態が格納されてよい(すなわち、セキュア仮想マシンがダンプされてよい)。1つの例では、診断状態は、信頼できない実体(例えば、ハイパーバイザ)によって読み取り可能になる前に、暗号化される。セキュア仮想マシンのダンプを安全に容易にするために、1つまたは複数の態様に従って、ハードウェアおよびファームウェアとのアプリケーション・プログラミング・インターフェイスが使用される。このアプリケーション・プログラミング・インターフェイスは、ハイパーバイザが暗号化されたバージョンの仮想マシンの状態にアクセスすることを可能にし、この状態が、仮想マシンの所有者に渡され得る。次に、この所有者は、この所有者が暗号化されたダンプの復号鍵を持っているインスタンス(例えば、唯一のインスタンス)であるため、この状態を(例えば、排他的に)復号し、分析のための暗号化されていない仮想マシンのダンプを取得することができる。例えば、仮想マシンを開始するために使用されるメタデータは、本明細書では所有者鍵または通信鍵と呼ばれる機密鍵を含み、この機密鍵は、例えば、信頼できるファームウェアのみが機密の所有者鍵を取得できるように保護される。この鍵は、暗号化された診断データを復号するために、例えば排他的に使用される。
1つの例として、アプリケーション・プログラミング・インターフェイスは、例えば、構成ダンプ開始コマンド、中央処理装置状態ダンプ・コマンド、セキュア・ストレージからの変換コマンド、構成ストレージ状態ダンプ・コマンド、および構成ダンプ完了コマンドを含む、複数のコマンドのための複数のウルトラバイザ呼び出しに分割される。例えば、各コマンドは、1つの実施形態では、ウルトラバイザ呼び出し動作を指定するオペコードおよび複数のオペランドを含むウルトラバイザ呼び出し命令の実行において指定される。例として、命令の第3のオペランド(例えば、即時フィールド)が0を指定する場合、通常のコマンドが指定され、命令の第2のオペランド(例えば、レジスタ)が、ウルトラバイザ(または他の信頼できる実体)によって実行されるコマンドを指定する、ストレージ内のウルトラバイザ制御ブロックを指し示す。
ウルトラバイザ呼び出し命令によって指定され得る、診断状態を格納するために使用される例示的なコマンドおよび制御ブロックが、図2~図6を参照して説明される。例えば、本発明の1つまたは複数の態様に従って、図2は、コマンドを使用する処理フローを示しており、図3~図6は、コマンドによって使用されるさまざまな制御ブロック/情報を示している。
最初に図2参照すると、構成ダンプ開始コマンド(診断格納開始要求とも呼ばれる)が呼び出される(200)。例えば、ウルトラバイザ呼び出し命令が、例えばハイパーバイザ(例えば、ハイパーバイザ114)によって発行され、このウルトラバイザ呼び出し命令は、例えば、ウルトラバイザなどの信頼できる実体によって実行される、構成ダンプ開始コマンドを含んでいる制御ブロックへのポインタを指定する。そのような制御ブロックの例が、図3を参照して説明される。
1つの例では、構成ダンプ開始ウルトラバイザ制御ブロック300は、例えば以下のフィールドを含む。
長さ302:このフィールド(例えば、バイト0~1)は、例えば符号なし2進整数(例えば、16ビット)を含み、この値は、制御ブロック(パラメータ・ブロックとも呼ばれる)の長さをバイト単位で指定する。この長さは、選ばれた値(例えば、16進数40)を指定するべきであり、そうでない場合、選ばれた応答コード(例えば、16進数0005)が適用される。
コマンド・コード304:このフィールド(例えば、バイト2~3)は、符号なし2進整数(例えば、16ビット)を含み、この値は、構成ダンプ開始ウルトラバイザ呼び出しコマンドのコマンド・コードを指定する。
応答コード306:このフィールド(例えば、バイト4~5)は、符号なし2進整数(例えば、16ビット)を含み、この値は、応答コードを指定する。この値は、動作が完了するときに格納される。
復帰理由コード(Return Reason Code)308:このフィールド(例えば、バイト6~7)は、復帰理由コードを含む。
セキュア構成コンテキスト・ハンドル310:このフィールド(例えば、バイト24~31)は、ダンプ・プロセスを初期化するべきセキュア構成(例えば、仮想マシン)を識別する値(例えば、64ビット値)を含む。
特殊な条件が存在する場合、選ばれたコード(例えば、16進数0001)以外の応答コードがウルトラバイザ呼び出し制御ブロックに格納される。構成ダンプ開始ウルトラバイザ呼び出しの特殊な条件は、例えば以下を含む。
16進数0003:正常に実行された初期化ウルトラバイザ呼び出しコマンドを発行しなかった構成で、構成ダンプ開始ウルトラバイザ呼び出しコマンドが発行された。
16進数0005:構成ダンプ開始ウルトラバイザ呼び出しコマンドが、選ばれた値(例えば、16進数40)に等しくない長さで発行された。
16進数0020:セキュア構成コンテキスト・ハンドルが、定義されたセキュア構成の有効なハンドルでない。
16進数0101:構成が、ダンプすることを許可しなかった。
16進数0102:指定された構成のアンパック済みイメージ検証ウルトラバイザ呼び出しが、正常に完了しなかった。
16進数0103:構成のダンプがすでに進行中である。
指定されたセキュア構成(例えば、セキュア仮想マシン)のダンプ・プロセスを初期化するために、構成ダンプ開始ウルトラバイザ呼び出しが使用される。この初期化の一部として、選ばれたセキュア構成データ(例えば、暗号化されたプロセッサの状態)をダンプするために、一意のダンプ鍵(例えば、明確にするために、本明細書では第1の暗号鍵と呼ばれる暗号鍵)が導出される。例として、コマンドは、保存された顧客通信鍵(customer communication key)(例えば、所有者鍵)および鍵導出シードから、ダンプ鍵を導出する。この鍵は、保存され、他のコマンドを介して提供されたデータを暗号化するために後で使用されてよい。
1つの例では、指定された構成を対象にするアンパック済みイメージ検証ウルトラバイザ呼び出し(セキュアな暗号解読済みイメージであるアンパック済みイメージの完全性を検証するために使用される)は、正常に完了しているべきであり、そうでない場合、動作が実行されず、選択された応答コード(例えば、16進数0101)が格納される。構成ダンプ完了ウルトラバイザ呼び出しが正常に完了せずに、指定された構成の別の構成ダンプ開始ウルトラバイザ呼び出しが正常に完了した場合、動作が実行されず、選択された応答コード(例えば、16進数0102)が格納される。
1つの例では、第1の命令が実行される時点まで、仮想マシンの状態が所有者に知られているため、セキュア仮想マシンがまだ設定プロセス中である場合、ダンプ・プロセスは開始されるべきではない。さらに、示されるように、このコマンドはダンプ・プロセスを開始し、他のアプリケーション・プログラミング・インターフェイス・コマンドがハイパーバイザによって呼び出されることを可能にする。ダンプ・プロセスが開始された後に、現在のプロセスが完了するまで、このセキュア仮想マシンの第2のダンプ・プロセスが開始されるべきでない。したがって、1つの例では、構成ダンプ開始コマンドを実行することに基づいて、選ばれた構成(例えば、仮想マシン)のダンプ(診断状態格納とも呼ばれる)がすでに進行中であるかどうかに関する判定が行われる(210)。構成のダンプがすでに進行中である場合、1つの例では、この処理に関してエラーが示される(212)。しかし、構成のダンプがまだ進行中でない場合、本明細書において説明されるように処理が続く。
例えば、構成ダンプを開始することに基づいて、仮想マシンの状態がダンプされるべきかどうかに関する判定が行われる。図2に戻り、1つまたは複数の中央処理装置の状態がダンプされるべきかどうかに関する照会が行われる(220)。1つまたは複数の中央処理装置の状態がダンプされるべきである場合、中央処理装置状態ダンプ・コマンド(診断プロセッサ状態格納要求とも呼ばれる)が開始される(230)。例えば、ウルトラバイザ呼び出し命令が、例えばハイパーバイザによって発行され、このウルトラバイザ呼び出し命令は、例えば信頼できる実体によって実行される中央処理装置状態ダンプ・コマンドを含んでいる制御ブロックへのポインタを指定する。そのような呼び出し制御ブロックの例が、図4Aを参照して説明される。
1つの例では、中央処理装置状態ダンプ・ウルトラバイザ呼び出し制御ブロック400は、例えば以下のフィールドを含む。
長さ402:このフィールド(例えば、バイト0~1)は、例えば符号なし2進整数(例えば、16ビット)を含み、この値は、制御ブロックの長さをバイト単位で指定する。この長さは、選ばれた値(例えば、16進数50)を指定するべきであり、そうでない場合、選ばれた応答コード(例えば、16進数0005)が適用される。
コマンド・コード404:このフィールド(例えば、バイト2~3)は、符号なし2進整数(例えば、16ビット)を含み、この値は、中央処理装置状態ダンプ・ウルトラバイザ呼び出しコマンドのコマンド・コードを指定する。
応答コード406:このフィールド(例えば、バイト4~5)は、符号なし2進整数(例えば、16ビット)を含み、この値は、応答コードを指定する。この値は、動作が完了するときに格納される。
復帰理由コード408:このフィールド(例えば、バイト6~7)は、復帰理由コードを含む。中央処理装置状態ダンプ・ウルトラバイザ呼び出しコマンドの場合、このフィールドは例えば0である。
セキュア中央処理装置コンテキスト・ハンドル410:このフィールド(例えば、バイト24~31)は、ダンプされるべき状態を有するセキュア中央処理装置を識別する値(例えば、64ビット値)を含む。
セキュア中央処理装置ダンプ領域始点412:選ばれた数(例えば、12個)の0が追加されたこのフィールド(例えば、バイト32~39のビット0~51)は、セキュア中央処理装置のダンプ領域の論理アドレス(例えば、64ビットの論理アドレス)を含む。
特殊な条件が存在する場合、選ばれたコード(例えば、16進数0001)以外の応答コードがウルトラバイザ呼び出し制御ブロックに格納される。中央処理装置状態ダンプ・ウルトラバイザ呼び出しの特殊な条件は、例えば以下を含む。
16進数0003:正常に実行された初期化ウルトラバイザ呼び出しコマンドを発行しなかった構成で、中央処理装置状態ダンプ・ウルトラバイザ呼び出しコマンドが発行された。
16進数0005:中央処理装置状態ダンプ・ウルトラバイザ呼び出しコマンドが、選ばれた値(例えば、16進数50)に等しくない長さで発行された。
16進数0021:セキュア中央処理装置コンテキスト・ハンドルが、定義されたセキュア中央処理装置の有効なハンドルでない。
16進数0101:指定されたセキュア中央処理装置を含んでいるセキュア構成で、構成ダンプ開始ウルトラバイザ呼び出しが完了しなかった。
16進数0102:指定された中央処理装置の中央処理装置状態がすでにダンプされている。
16進数0103:指定されたセキュア中央処理装置が、現在実行中である。
16進数0104:セキュア中央処理装置ダンプ領域にアクセスしようとしているときに、アクセス例外が認識された。
セキュア中央処理装置ダンプ領域の形式の1つの例が、図4Bを参照して説明される。例として、セキュア中央処理装置ダンプ領域420は以下を含む。
セキュア中央処理装置ダンプ領域バージョン422:このフィールド(例えば、バイト0~3)は、符号なし2進整数(例えば、32ビット)を含み、この値は、ウルトラバイザによって書き込まれたセキュア中央処理装置ダンプ領域のバージョンを指定する。このバージョン番号は、セキュア中央処理装置ダンプ領域内の他のフィールドのレイアウトを定義する。
セキュア中央処理装置ダンプ領域長424:このフィールド(例えば、バイト4~7)は、符号なし2進整数(例えば、32ビット)を含み、この値は、ウルトラバイザによってセキュア中央処理装置ダンプ領域に書き込まれたデータのバイト数を指定する。
初期化ベクトル426:このフィールド(例えば、バイト8~19)は、例えば、セキュア中央処理装置ダンプ領域のAES256-GCM(ガロア/カウンタ・モード)暗号化を実行するときにウルトラバイザによって使用される一意の初期化ベクトルを含む。
汎用レジスタ428:このフィールド(例えば、バイト32~159)は、指定されたセキュア中央処理装置の選ばれた汎用レジスタ(例えば、汎用レジスタ0~15)の内容を含む。
現在のプログラム状態ワード430:このフィールド(例えば、バイト160~175)は、指定されたセキュア中央処理装置の現在のプログラム状態ワードの内容を含む。
プレフィックス432:このフィールド(例えば、バイト184~187)は、指定されたセキュア中央処理装置のプレフィックス・レジスタの選ばれたビット(例えば、ビット32~63)を含む。
浮動小数点制御レジスタ434:このフィールド(例えば、バイト188~191)は、指定されたセキュア中央処理装置の浮動小数点制御レジスタを含む。
時刻(TOD:Time-of-Day)プログラム可能レジスタ436:このフィールド(例えば、バイト196~199)は、指定されたセキュア中央処理装置の時刻プログラム可能レジスタを含む。
中央処理装置タイマー438:このフィールド(例えば、バイト200~207)は、指定されたセキュア中央処理装置の中央処理装置タイマーを含む。
クロック比較器440:このフィールド(例えば、バイト209~215)は、指定されたセキュア中央処理装置のクロック比較器の選ばれたビット(例えば、ビット0~55)を含む。
アクセス・レジスタ442:このフィールド(例えば、バイト224~287)は、指定されたセキュア中央処理装置の選ばれたアクセス・レジスタ(例えば、アクセス・レジスタ0~15)の内容を含む。
制御レジスタ444:このフィールド(例えば、バイト288~415)は、指定されたセキュア中央処理装置の選ばれた制御レジスタ(例えば、制御レジスタ0~15)の内容を含む。
ベクトル・レジスタ446:このフィールド(例えば、バイト416~927)は、指定されたセキュア中央処理装置の選ばれたベクトル・レジスタ(例えば、ベクトル・レジスタ0~31)の内容を含む。
保護ストレージ指定レジスタ448:このフィールド(例えば、バイト1448~1455)は、指定されたセキュア中央処理装置の保護ストレージ指定レジスタの内容を含む。
保護ストレージ・セクション・マスク・レジスタ(Guarded Storage Section Mask Register)450:このフィールド(例えば、バイト1456~1463)は、指定されたセキュア中央処理装置の保護ストレージ・セクション・マスク・レジスタの内容を含む。
保護ストレージ・イベント・パラメータ・リスト・アドレス・レジスタ(Guarded Storage Event Parameter List Address Register)452:このフィールド(例えば、バイト1464~1471)は、指定されたセキュア中央処理装置の保護ストレージ・イベント・パラメータ・リスト・アドレス・レジスタの内容を含む。
ダンプ・フラグ454:このフィールド(例えば、バイト1536~1537)は、ダンプされた中央処理装置の内容に関する情報を伝達するフラグを含む。例示的なフラグ(例えば、ビット0)は、未解決セキュア命令傍受処理インジケータ(outstanding secure instruction interception processing indicator)を含む。このフラグが設定された場合、部分的な命令の結果が、ダンプされた中央処理装置状態に含まれてよい。
セキュア中央処理装置ダンプ領域タグ456:このフィールド(例えば、セキュア中央処理装置ダンプ領域の最後の16バイト)は、この領域の内容の信頼性を検証するために使用される認証タグを含む。
1つの例では、フィールド422~426が認証され、フィールド428~454が暗号化される。
仮想マシンの中央処理装置(または中央処理装置のサブセット)ごとに、中央処理装置ダンプ・ウルトラバイザ・コマンドが実行されてよく、中央処理装置の暗号化された状態を生み出す。仮想マシンの状態の暗号化は、例えばダンプ鍵を使用して実行される。暗号化された中央処理状態は、汎用レジスタ、制御レジスタ、浮動小数点レジスタ、ベクトル・レジスタの内容に加えて、タイマー、浮動小数点制御レジスタ、または現在の命令アドレス、あるいはその組合せを含んでよいが、これらに限定されない。さらに、1つの例では、暗号化された中央処理状態は、暗号化されていない領域を含む。この領域には、例として、データの暗号化に使用される初期化ベクトルに加えて、その後のダンプ・データの復号および解釈を容易にするための長さおよびバージョンの指示が保存される。
このコマンドは、指定されたセキュア中央処理装置(または別のプロセッサ・ユニット)の暗号化された内容をダンプするために使用される。セキュア中央処理装置ダンプ領域は、例えば、バージョン情報、暗号化データのサイズ、および中央処理装置状態の暗号化に使用される初期化ベクトルを含んでいる、プレーン・テキスト・ヘッダーを含む。中央処理装置状態は、例えば、256ビットのダンプ鍵と共にAES-GCMを使用して暗号化される。暗号化された中央処理装置ダンプ領域の認証タグが、暗号化された領域の直後に格納される。セキュア中央処理装置ダンプ領域の長さは、例えば、問い合わせウルトラバイザ呼び出しコマンドによって返される、例えば、セキュア中央処理装置のストレージ長以下である。
構成ダンプ開始ウルトラバイザ呼び出しコマンドは、中央処理装置状態ダンプ・ウルトラバイザ呼び出しコマンドを発行する前に正常に完了しているべきであり、そうでない場合、選ばれた応答コード(例えば、16進数0101)が格納される。構成ダンプ開始ウルトラバイザ呼び出しコマンドと構成ダンプ完了ウルトラバイザ呼び出しコマンドの間に、指定されたセキュア中央処理装置コンテキスト・ハンドルに関して、中央処理装置状態ダンプ・ウルトラバイザ呼び出しコマンドが2回以上発行された場合、選ばれた応答コード(例えば、16進数0102)が格納される。指定されたセキュア中央処理装置が現在実行中である場合、選ばれた応答コード(例えば、16進数0103)が格納される。
図2に戻り、1つの例では、構成ダンプを開始すること(200)に基づいて、仮想マシンのメモリがダンプされるべきかどうかに関する判定も行われる(222)。メモリがダンプされるべきである場合、1つの例では、ページアウト・プロセス中にダンプが発生する。例えば、ダンプされているメモリがセキュア構成(例えば、セキュア仮想マシン)に現在マッピングされているかどうかに関する判定が行われる(224)。ダンプされているメモリがセキュア構成にマッピングされている場合、1つの例では、セキュア・ストレージからの変換コマンドが開始される(226)。例えば、ハイパーバイザが、例えばウルトラバイザによって実行されるセキュア・ストレージからの変換コマンドを指定するセキュア・ストレージからの変換制御ブロックを指定することによって、例えば、ウルトラバイザ呼び出し命令が発行される。そのような制御ブロックの1つの例が、図4Cを参照して説明される。
1つの例では、セキュア・ストレージからの変換ウルトラバイザ呼び出し制御ブロック470は、例えば以下のフィールドを含む。
長さ472:このフィールド(例えば、バイト0~1)は、例えば符号なし2進整数(例えば、16ビット)を含み、この値は、制御ブロックの長さをバイト単位で指定する。この長さは、選ばれた値(例えば、16進数20)を指定するべきであり、そうでない場合、選ばれた応答コード(例えば、16進数0005)が適用される。
コマンド・コード474:このフィールド(例えば、バイト2~3)は、符号なし2進整数(例えば、16ビット)を含み、この値は、セキュア・ストレージからの変換ウルトラバイザ呼び出しコマンドのコマンド・コードを指定する。
応答コード476:このフィールド(例えば、バイト4~5)は、符号なし2進整数(例えば、16ビット)を含み、この値は、応答コードを指定する。この値は、動作が完了するときに格納される。
復帰理由コード478:このフィールド(例えば、バイト6~7)は、復帰理由コードを含む。例えば16進数「0001」の応答コードが格納された場合、メモリの指定された単位(例えば、ストレージのブロック)のセキュリティ・プロパティが変更されるときに、例えば16進数「0000」の復帰理由コードが格納される。メモリの指定された単位のセキュリティ・プロパティが望ましい状態にすでに設定されている場合、復帰理由コード、例えば「0001」が格納される。
ホスト絶対アドレス480:選ばれた数、例えば、12個の0ビットが右側に追加されたこのフィールド(例えば、バイト32~39のビット0~51)は、非セキュア・ストレージに変換するためのメモリの単位(例えば、ストレージの4Kバイト・ブロック)の絶対アドレスを形成する。
特殊な条件が存在する場合、選ばれたコード(例えば、16進数0001)以外の応答コードがウルトラバイザ呼び出し制御ブロックに格納される。セキュア・ストレージからの変換ウルトラバイザ呼び出しの特殊な条件は、例えば以下を含む。
16進数0003:正常に実行された初期化ウルトラバイザ呼び出しコマンドを発行しなかった構成で、セキュア・ストレージからの変換ウルトラバイザ呼び出しコマンドが発行された。
16進数0005:セキュア・ストレージからの変換ウルトラバイザ呼び出しコマンドが、選ばれた値(例えば、16進数20)に等しくない長さで発行された。
16進数0030:ホーム・アドレス空間制御要素のRビット(例えば、ビット58)が、例えば1に設定されている。
16進数0031:構成の変数ストレージ領域にアクセスしようとするときの変換例外。
16進数0032:セキュア・ゲストの変数ストレージ領域が、リージョン-フレーム絶対アドレス(region-frame absolute address)またはセグメント-フレーム絶対アドレス(segment-frame absolute address)に変換される仮想アドレスを含んでいる。
16進数0103:ホスト構成において、ホスト絶対アドレスを使用できない。
16進数0104:ホスト絶対アドレスがウルトラバイザのストレージである。
16進数0105:対応するホスト仮想アドレスが、セキュア・ストレージから何度も変換され過ぎた。
1つの例として、セキュア・ストレージからの変換ウルトラバイザ・コマンドは、セキュア・メモリをダンプするために使用され、このダンプでは、ダンプされているメモリの単位(例えば、メモリのページ)が、例えばページング鍵を使用して暗号化されて、格納される。セキュア・ストレージからの変換コマンドは、非セキュア・ストレージになるように、セキュア構成に関連付けられたメモリの単位(例えば、ストレージの4Kバイト・ブロック)のセキュリティ・プロパティを変更する。メモリの指定された単位が、非セキュア・ストレージになるようにすでに定義されている場合、動作が、さらなるアクションおよび選ばれた応答コード(例えば、16進数「0001」)を伴わずに完了し、選ばれた復帰理由コード(例えば、16進数「0001」)が格納される。メモリの単位が定義された共有ストレージでない場合、メモリの単位の内容からダイジェストが作成される。1つの例では、このダイジェストは信頼できる実体(例えば、ウルトラバイザ)によって維持される。メモリの単位の内容が(例えば、ページング鍵を使用して)暗号化され、その後、メモリの単位が非セキュアにされる。メモリの単位が定義された共有ストレージである場合、メモリの単位は、メモリの単位の内容に対する変更なしで、非セキュアにされる。
指定されたホスト絶対アドレスが、信頼できる実体によって所有されている場合、メモリの指定された単位が変更されず、選択された応答コード(例えば、16進数「0104」)が格納される。
図2を参照すると、セキュア・ストレージからの変換の後に、処理が照会224に続く。ダンプされるメモリが、セキュア構成に現在マッピングされていない場合、構成ストレージ状態ダンプ・コマンド(診断メモリ状態格納要求とも呼ばれる)が開始される(232)。例えば、ハイパーバイザが、例えばウルトラバイザによって実行される構成ストレージ状態ダンプ・コマンドを指定する構成ストレージ状態ダンプ制御ブロックへのポインタを指定することによって、例えば、ウルトラバイザ呼び出し命令が発行される。そのような制御ブロックの1つの例が、図5を参照して説明される。
1つの例では、構成ストレージ状態ダンプ・ウルトラバイザ呼び出し制御ブロック500は、例えば以下のフィールドを含む。
長さ502:このフィールド(例えば、バイト0~1)は、例えば符号なし2進整数(例えば、16ビット)を含み、この値は、制御ブロックの長さをバイト単位で指定する。この長さは、選ばれた値(例えば、16進数58)を指定するべきであり、そうでない場合、選ばれた応答コード(例えば、16進数0005)が適用される。
コマンド・コード504:このフィールド(例えば、バイト2~3)は、符号なし2進整数(例えば、16ビット)を含み、この値は、構成ストレージ状態ダンプ・ウルトラバイザ呼び出しコマンドのコマンド・コードを指定する。
応答コード506:このフィールド(例えば、バイト4~5)は、符号なし2進整数(例えば、16ビット)を含み、この値は、応答コードを指定する。この値は、動作が完了するときに格納される。
復帰理由コード508:このフィールド(例えば、バイト6~7)は、復帰理由コードを含む。構成ストレージ状態ダンプ・ウルトラバイザ呼び出しコマンドの場合、このフィールドは例えば0である。
セキュア構成コンテキスト・ハンドル510:このフィールド(例えば、バイト24~31)は、ダンプされるべき状態を有するセキュア構成を識別する値(例えば、64ビット値)を含む。
セキュア構成ストレージ・ダンプ領域始点512:選ばれた数(例えば、12個)の0が追加されたこのフィールド(例えば、バイト32~39のビット0~51)は、セキュア構成ストレージのダンプ領域の論理アドレス(例えば、64ビットの論理アドレス)を含む。
セキュア構成絶対アドレス514:選ばれた数(例えば、20個)の0が追加されたこのフィールド(例えば、バイト40~47のビット0~43)は、選ばれた一意の構成要素(例えば、微調整構成要素(tweak components))を格納するためのストレージの例えば256フレームのうちの最初のフレームの、セキュア構成の絶対アドレス(例えば、64ビットのアドレス)を含む。
特殊な条件が存在する場合、選ばれたコード(例えば、16進数0001)以外の応答コードがウルトラバイザ呼び出し制御ブロックに格納される。構成ストレージ状態ダンプ・ウルトラバイザ呼び出しの特殊な条件は、例えば以下を含む。
16進数0003:正常に実行された初期化ウルトラバイザ呼び出しコマンドを発行しなかった構成で、構成ストレージ状態ダンプ・ウルトラバイザ呼び出しコマンドが発行された。
16進数0005:構成ストレージ状態ダンプ・ウルトラバイザ呼び出しコマンドが、選ばれた値(例えば、16進数50)に等しくない長さで発行された。
16進数0020:セキュア構成コンテキスト・ハンドルが、定義されたセキュア構成の有効なハンドルでない。
16進数0031:構成の仮想ストレージ領域にアクセスしようとするときの変換例外。
16進数0101:指定されたセキュア構成で、構成ダンプ開始ウルトラバイザ呼び出しが完了しなかった。
16進数0102:セキュア構成ストレージ・ダンプ領域にアクセスするときに、アクセス例外が認識された。
16進数0103:セキュア構成の絶対アドレスが、例えば、セキュア構成ストレージの長さより大きい。
特殊な選ばれた一意の構成要素(例えば、特殊な微調整構成要素)が格納される場合、選ばれたバイト(例えば、バイト14~15)が、対応するメモリの単位(例えば、ストレージの4Kバイト・ブロック)を解釈する方法に関する情報を提供するフラグを含む。例示的なフラグは以下を含む。
ビット 説明
15 ゼロ・ページ
対応するメモリの単位(ストレージの4Kバイト・ブロック)が、セキュア構成によって格納されておらず、その内容が、0(または別の選ばれた値)であると仮定されてよい。
14 共有ページ
対応するメモリの単位(ストレージの4Kバイト・ブロック)が、定義された共有ストレージであり、暗号化されていない。
13 マッピングされたページ
対応するメモリの単位(ストレージの4Kバイト・ブロック)が、セキュア・ページへの有効なマッピングを有する。
構成ストレージ状態ダンプ・コマンドが、特定の量のゲスト・メモリのページごとに、選ばれた一意の構成要素値(例えば、微調整構成要素値)および状態フラグをダンプする。
1つの例では、構成ストレージ状態ダンプ・ウルトラバイザ呼び出しコマンドは、セキュア構成の絶対アドレスによって指定されたメモリの単位(例えば、ストレージの4Kバイト・ブロック)に関して、例えば256個の選ばれた一意の構成要素値(例えば、微調整構成要素値)を、選ばれた一意の値(例えば、微調整)から開始して、セキュア構成のダンプ領域に格納する。指定された構成のダンプ領域のサイズは、例えば、ウルトラバイザ情報問い合わせウルトラバイザ呼び出しコマンドから取得され得る。
構成ストレージ状態ダンプ・ウルトラバイザ呼び出しは、セキュア構成ストレージのメモリの単位(例えば、4Kバイト・ブロック)の内容を暗号化または復号するときに使用される選ばれた一意の値(例えば、微調整値)を導出するために使用される、例えば16バイトの選ばれた一意の構成要素値(例えば、微調整構成要素値)をダンプするために使用される。選ばれた一意の構成要素値は、セキュア構成内の例えば絶対アドレス0から始まるメモリの単位に対応する値から開始して、順番に出力される。例えば、選ばれた一意の構成要素値のバイト0~3が例えば16進数「FFFFFFFF」である場合、メモリの単位は、指定された選ばれた一意の値を含まず、選ばれた一意の構成要素値の例えばバイト14~15が、対応するメモリの単位が解釈されるべき方法に関するさらなる情報を提供するフラグを含む。選ばれた一意の構成要素値が任意の他の値である場合、選ばれた一意の構成要素値と、例えば構成ダンプ完了ウルトラバイザ呼び出しから取得された、復号された選ばれた一意のノンス値(例えば、微調整ノンス(tweak nonce))との論理和が、AES-XTS動作のための選ばれた一意の値として使用される。
図2および特に照会220、222に戻り、ダンプするべき中央処理装置がそれ以上ない場合、またはダンプするべきメモリがそれ以上ない場合、構成ダンプ完了呼び出し(完了要求とも呼ばれる)が行われる(240)。例えば、ハイパーバイザが、ウルトラバイザによって実行される構成ダンプ完了コマンドを指定する構成ダンプ完了制御ブロックを指定することによって、例えば、ウルトラバイザ呼び出し命令が発行される。そのような制御ブロックの1つの例が、図6を参照して説明される。
1つの例では、構成ダンプ完了ウルトラバイザ呼び出し制御ブロック600は、例えば以下のフィールドを含む。
長さ602:このフィールド(例えば、バイト0~1)は、例えば符号なし2進整数(例えば、16ビット)を含み、この値は、制御ブロックの長さをバイト単位で指定する。この長さは、選ばれた値(例えば、64+Nバイトの値)を指定するべきであり、そうでない場合、選ばれた応答コード(例えば、16進数0005)が適用される。値Nは、例えば、ウルトラバイザ情報問い合わせウルトラバイザ呼び出しコマンドによって返される構成終了ダンプ長(configuration finalize dump length)から取得されてよい。
コマンド・コード604:このフィールド(例えば、バイト2~3)は、符号なし2進整数(例えば、16ビット)を含み、この値は、構成状態ダンプ完了ウルトラバイザ呼び出しコマンドのコマンド・コードを指定する。
応答コード606:このフィールド(例えば、バイト4~5)は、符号なし2進整数(例えば、16ビット)を含み、この値は、応答コードを指定する。この値は、動作が完了するときに格納される。
復帰理由コード608:このフィールド(例えば、バイト6~7)は、復帰理由コードを含む。構成ダンプ完了ウルトラバイザ呼び出しコマンドの場合、このフィールドは例えば0である。
セキュア構成コンテキスト・ハンドル609:このフィールド(例えば、バイト24~31)は、ダンプが完了されるべきセキュア構成を識別する値(例えば、64ビット値)を含む。
鍵導出シード610:このフィールド(例えば、バイト64~127)は、中央処理装置状態に加えて、この制御ブロック内のデータを暗号化するために使用されるダンプ鍵を導出するために使用されるシードを含む。
初期化ベクトル612:このフィールド(例えば、バイト128~143)は、このウルトラバイザ呼び出しによって格納されるデータを暗号化するときに使用される初期化ベクトルを含む。
微調整ノンス(選ばれた一意のノンスとしても知られている)614:このフィールド(例えば、バイト144~159)は、選ばれた一意の値(例えば、微調整値)に使用されるノンス値を含む。この値は、メモリの単位(例えば、ストレージの4Kバイト・ブロック)を暗号化するために使用される選ばれた一意の値を作成するために、各非特殊な選ばれた一意の構成要素(例えば、微調整構成要素)との論理和が計算される。
ストレージ暗号鍵1(616):このフィールド(例えば、バイト160~191)は、選ばれた一意の値(例えば、微調整値)を暗号化するために使用される第1のAES-256 XTS鍵を含み、その後、これらの選ばれた一意の値は、ダンプされたメモリの単位(例えば、ストレージの4Kバイト・ブロック)を復号するために使用される。
ストレージ暗号鍵2(618):このフィールド(例えば、バイト192~223)は、メモリの単位(例えば、ストレージの4Kバイト・ブロック)を復号するために、暗号化された選ばれた一意の値(例えば、微調整値)と共に使用される、第2のAES-256 XTS鍵を含む。1つの例では、ストレージ暗号鍵1がストレージ暗号鍵2と組み合わせられて、ページング鍵になる。
認証タグ620:このフィールド(例えば、バイト256~271)は、認証される値(例えば、バイト64~143)を追加認証データとして使用し、次に、暗号化されたフィールド(例えば、バイト144~255)からタグの残りの部分を計算することから導出される、AES-GCM認証タグを含む。
特殊な条件が存在する場合、選ばれたコード(例えば、16進数0001)以外の応答コードがウルトラバイザ呼び出し制御ブロックに格納される。構成ダンプ完了ウルトラバイザ呼び出しの特殊な条件は、例えば以下を含む。
16進数0003:正常に実行された初期化ウルトラバイザ呼び出しコマンドを発行しなかった構成で、構成ダンプ完了ウルトラバイザ呼び出しコマンドが発行された。
16進数0005:構成ダンプ完了ウルトラバイザ呼び出しコマンドが、選ばれた値(例えば、16進数130)に等しくない長さで発行された。
16進数0020:セキュア構成コンテキスト・ハンドルが、定義されたセキュア構成の有効なハンドルでない。
16進数0101:指定されたセキュア構成で、構成ダンプ開始ウルトラバイザ呼び出しが完了しなかった。
指定されたセキュア構成のダンプ処理を完了するために、構成ダンプ完了ウルトラバイザ呼び出しが使用される。この呼び出しは、ダンプを復号し、その完全性をチェックするために顧客によって使用されるデータを返す。また、この呼び出しは、ダンプ・プロセスを完了し、したがって、構成ダンプ開始呼び出しによる新しいダンプ・プロセスの開始を可能にする。この呼び出しは、例えば、ダンプ鍵を作成するために使用された鍵導出シードを含み、そのため仮想マシンの所有者は、ダンプ鍵自体を計算することができる。また、この呼び出しは、返されたデータの暗号化された部分を暗号化するために使用される初期化ベクトル、および認証されて暗号化されたデータの内容を検証するために使用されるべきである認証タグを含む。暗号化された部分は、例えば、メモリ状態ダンプ呼び出しからの選ばれた一意の値の各々との論理和が計算される選択された一意のノンス値に加えて、それらの選ばれた一意の値を暗号化するために使用されるAES XTS(高度暗号化標準XEX Tweakable Block Cipher with Ciphertext Stealing)鍵を含む。
本明細書において説明されているように、ダンプを、信頼できない実体によって読み取り可能になる前に暗号化することによって、ダンプされる仮想マシンの状態のセキュリティを維持しながら、セキュア仮想マシンがダンプされてよい。セキュア仮想マシンのダンプを安全に容易にするために、ダンプ・アプリケーション・プログラミング・インターフェイスが採用される。このインターフェイスは、複数の呼び出しを使用し、各呼び出しが制御ブロックを指し示し、制御ブロックの例が本明細書において説明されている。本明細書に記載された各制御ブロック/領域は、1つまたは複数の実施形態では、追加のフィールド、より少ないフィールド、または他のフィールド、あるいはその組合せを含んでよい。さらに、各フィールドは、制御ブロック/領域内の異なる位置にあってよく、または異なるサイズもしくはデータ型のフィールドであってよく、あるいはその両方であってよい。さらに、制御ブロック/領域は、1つまたは複数の予備フィールドを含んでよい。多くの変形が可能である。
1つまたは複数の態様では、複数の技術を使用して仮想マシンのメモリがダンプされてよい。例えば、1つの技術は、ダンプ鍵を使用してメモリを直接暗号化することを含む。中央処理装置メモリ暗号化(central processing unit memory encryption)と呼ばれるこの技術を使用して、セキュア仮想マシンのページが暗号化される。セキュア仮想マシンの鍵とハイパーバイザの鍵は異なっているため、ハイパーバイザが結果を読み取るか、または書き込む場合、結果がランダムなデータになる。最適なセキュリティのために、暗号鍵は、中央処理装置のメモリ・コントローラから決して離れず、したがって、仮想マシンが現在実行されている中央処理装置のみがページを復号することができるため、暗号鍵は、セキュア仮想マシンのメモリをダンプするために使用され得ない。さらに、セキュア仮想マシンが停止されるときに、鍵が消去される。
セキュア仮想マシンのメモリにアクセスするために使用される鍵が通常はエクスポートされ得ないため、この保護メカニズムは、セキュア仮想マシンのメモリをダンプするために、エクスポートできないアクセス鍵を置き換えるためにエクスポートされ得る特殊なダンプ鍵を使用してメモリを暗号化するという1つの技術を残している。ページがディスクにスワップされた場合、このページは、ページを復号して再暗号化するため、ゲストのメモリに戻される。これは、さらなるメモリ負荷を引き起こし、暗号化/復号の負担をプロセッサ・サイクルにかける。
1つまたは複数の態様に従って、セキュア仮想マシンのメモリをダンプするために使用される別の技術は、メモリ保護と呼ばれ、メモリ保護は、ハイパーバイザによるファームウェアに対する要求の後にページが暗号化されるまで、ページが属しているセキュア仮想マシンおよび信頼できるファームウェア(例えば、ウルトラバイザ)を除いて、セキュア仮想マシンのページへのアクセスを拒否する。暗号化の後に、ページは、セキュア仮想マシンによってもはや使用不可能になるが、ハイパーバイザによってディスクに書き込まれ得る。同様に、ファームウェアに対する要求は、暗号化されたページを復号し、完全性をチェックし、セキュア仮想マシンに再びマッピングするために使用され、そのためセキュア仮想マシンは、ページに再びアクセスすることができる。
この保護メカニズムは、ダンプのためにスワップするためにページを暗号化するときに使用される鍵と同じ鍵を使用することができる。これは、ページが暗号化された後に、ゲストがページに再びアクセスしたい場合にのみ、ページがゲストに戻される必要があるということを意味する。まだ暗号化されていないページは暗号化されるが、すでに暗号化されているページは、ページがまだメモリ内にあるか、またはすでにディスク上にあるかにかかわらず、ダンプに直接書き込まれ得る。これは、ページがすでにディスクにページングされている場合に、ダンプに必要とされるCPUサイクルにおける大幅な減少をもたらす。ダンプを調べるときにページを後で復号するために、暗号化に固有のデータがエクスポートされるべきである。そのようなデータは、例えば、メモリのページごとの選ばれた一意の値(例えば、微調整値)を含むことができる。
仮想マシンの内部の故障したカーネルによって書き込まれた診断状態の格納とは対照的に、本明細書において1つまたは複数の態様で説明されたように、診断状態の格納は、ハイパーバイザによって仮想マシンの外部で生成される。この生成は、仮想マシンの所有者によってトリガーされるか、またはハイパーバイザが、仮想マシンが故障しており、コードを正常に実行していないということを決定したときに、自動的にトリガーされる。
本発明の1つまたは複数の態様は、コンピュータ技術に密接に関係しており、コンピュータ内の処理を容易にし、その性能を改善する。セキュリティを維持しながら、あまり複雑でなく、より少ない処理サイクルを使用して性能を改善する方法で仮想マシン(例えば、セキュア仮想マシン)の診断状態を安全に格納することによって、処理が容易にされる。
コンピューティング環境内の処理が、本発明の1つまたは複数の態様に関連しているため、その処理を容易にする1つの実施形態のさらなる詳細が、図7A~図7Cを参照して説明される。
図7Aを参照すると、1つの実施形態では、仮想マシンの診断状態を格納するための少なくとも1つの要求が取得される(700)。少なくとも1つの要求を取得することに基づいて、仮想マシンの格納された診断状態を提供するために、仮想マシンの診断状態の格納が実行される(702)。格納を実行することは、例えば、暗号化されずに格納されている仮想マシンの診断状態を暗号化し、暗号化されずに格納されている仮想マシンの診断状態を暗号化する前の、信頼できない実体による仮想マシンの診断状態の読み取りを防ぐことを含む(704)。
診断の目的で格納されている仮想マシンの状態のセキュリティを維持しながら、仮想マシン(例えば、セキュア仮想マシン)の診断状態が格納されてよい。
例として、仮想マシンの格納された診断状態は、仮想マシンのメモリの内容を含み(706)、または仮想マシンの格納された診断状態は、仮想マシンの1つまたは複数のプロセッサ・レジスタの内容を含み(708)、あるいはその両方である。
1つの例では、仮想マシンの診断状態の格納を開始するための診断状態格納開始要求が取得される(710)。診断状態格納開始要求は、暗号化されずに格納されている仮想マシンの診断状態の少なくとも一部を暗号化することにおいて使用される第1の暗号鍵を取得するために使用される(712)。
1つの例では、図7Bを参照すると、少なくとも1つの要求を取得することは、診断プロセッサ状態格納要求を取得することを含む(720)。診断プロセッサ状態格納要求を取得することに基づいて、診断状態の格納を実行することは、例えば、第1の暗号鍵を使用して、仮想マシンの少なくとも1つのプロセッサの少なくとも選ばれた内容を暗号化し、暗号化されたプロセッサの内容を提供することと(722)、暗号化されたプロセッサの内容を格納することと(724)を含む。
1つの例では、少なくとも1つの要求を取得することは、セキュア・メモリからの変換要求を取得することを含む(726)。セキュア・メモリからの変換要求を取得することに基づいて、診断状態の格納を実行することは、例えば、第2の暗号鍵を使用して、暗号化されていない仮想マシンのメモリの少なくとも選ばれた内容を暗号化し、メモリの暗号化された内容を提供することと(730)、メモリの暗号化された内容を格納することと(732)を含む。
例として、セキュア・メモリからの変換要求を取得することに基づいて、診断状態の格納を実行することは、例えば、格納される内容のメモリの単位が暗号化されているかどうかを判定することと(736)、メモリの単位が暗号化されていないということの決定に基づいて、第2の暗号鍵を使用してメモリの単位を暗号化することとを含み、暗号化されているメモリの単位は、再暗号化されない(738)。
暗号化されていない内容を暗号化すること(および暗号化された状態を再暗号化しないこと)によって、処理サイクルおよび複雑さが減らされ、システム性能を改善する。
1つの例では、図7Cを参照すると、格納された診断状態は、メモリの暗号化された内容を含む(750)。さらに、1つの例では、診断メモリ状態格納要求が取得され(752)、診断メモリ状態格納要求を取得することに基づいて、メモリの暗号化された内容を復号するために使用されるメタデータが格納される(754)。
例として、このメタデータは、メモリの暗号化された内容を復号するために使用される1つまたは複数の選ばれた値を作成するために使用される1つまたは複数の選ばれた構成要素値を含む(756)。
1つの例では、診断状態の格納を完了するための完了要求が取得され(760)、完了要求を取得することに基づいて、仮想マシンの暗号化されて格納された診断状態を復号するために使用されるデータが提供される(762)。
例として、このデータは、メモリの暗号化された内容の復号において使用される第2の暗号鍵と、暗号化において使用される1つまたは複数の選ばれた値を作成するために使用されるノンス値とを含む(770)。さらに、1つの例では、データの少なくとも一部が暗号化される(772)。
他の変形および実施形態が可能である。
本発明の態様は、多くの種類のコンピューティング環境によって使用されてよい。本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の実施形態が、図8Aを参照して説明される。この例では、コンピューティング環境36は、例えば、1つまたは複数のバス40または他の接続あるいはその両方を介して互いに結合された、ネイティブ中央処理装置(CPU)37、メモリ38、および1つまたは複数の入出力デバイスまたはインターフェイスあるいはその両方39を含む。例として、コンピューティング環境36は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるPowerPC(R)プロセッサ、ヒューレット・パッカード社(カリフォルニア州パロアルト市)によって提供されるインテル(R)Itanium(R)IIプロセッサ内蔵HP Superdome、あるいはInternational Business Machines Corporation、ヒューレット・パッカード社、インテル社、Oracle社、もしくは他の企業、またはその組合せによって提供されるアーキテクチャに基づく他のマシン、あるいはその組合せを含んでよい。PowerPCは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。インテルおよびItaniumは、米国および他の国における、インテル社またはその子会社の商標または登録商標である。
ネイティブ中央処理装置37は、環境内で処理中に使用される1つまたは複数の汎用レジスタまたは1つまたは複数の専用レジスタあるいはその両方などの、1つまたは複数のネイティブ・レジスタ41を含む。これらのレジスタは、いずれかの特定の時点での環境の状態を表す情報を含む。
さらに、ネイティブ中央処理装置37は、メモリ38に格納された命令およびコードを実行する。1つの特定の例では、中央処理装置は、メモリ38に格納されたエミュレータ・コード42を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が、別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード42は、z/Architecture命令セット・アーキテクチャ以外のアーキテクチャに基づくマシン(PowerPCプロセッサ、HP Superdomeサーバなど)が、z/Architecture命令セット・アーキテクチャをエミュレートし、z/Architecture命令セット・アーキテクチャに基づいて開発されたソフトウェアおよび命令を実行できるようにする。
エミュレータ・コード42に関連するさらなる詳細が、図8Bを参照して説明される。メモリ38に格納されたゲスト命令43は、ネイティブCPU37のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発された(例えば、マシン命令と相互関係がある)ソフトウェア命令を含む。例えば、ゲスト命43は、z/Architecture命令セット・アーキテクチャに基づくプロセッサ上で実行するように設計されていてよいが、代わりに、例えばインテルItanium IIプロセッサであってよい、ネイティブCPU37上でエミュレートされる。1つの例では、エミュレータ・コード42は、メモリ38から1つまたは複数のゲスト命令43を取得するため、および取得された命令のローカル・バッファリングを任意選択的に提供するための命令フェッチ・ルーチン44を含む。エミュレータ・コード42は、取得されたゲスト命令の種類を決定するため、およびゲスト命令を、1つまたは複数の対応するネイティブ命令46に変換するための命令変換ルーチン45も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別すること、およびこの機能を実行するためのネイティブ命令を選択することを含む。
さらに、エミュレータ・コード42は、ネイティブ命令の実行を引き起こすためのエミュレーション制御ルーチン47を含む。エミュレーション制御ルーチン47は、ネイティブCPU37に、1つまたは複数のすでに取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終了時に、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに返してよい。ネイティブ命令46の実行は、データをメモリ38からレジスタに読み込むこと、データをレジスタからメモリに再び格納すること、あるいは変換ルーチンによって決定されたとおりに、何らかの種類の算術演算または論理演算を実行することを含んでよい。
例えば、各ルーチンは、メモリに格納されてネイティブ中央処理装置37によって実行されるソフトウェアにおいて実装される。他の例では、ルーチンまたは動作のうちの1つまたは複数は、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組合せにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ41を使用して、またはメモリ38内の位置を使用することによって、エミュレートされてよい。実施形態では、ゲスト命令43、ネイティブ命令46、およびエミュレータ・コード42は、同じメモリ内に存在してよく、または異なるメモリ・デバイス間で分配されてよい。
エミュレートされ得る命令、コマンドまたは呼び出しは、本発明の1つまたは複数の態様に従って、本明細書に記載されたウルトラバイザ呼び出しを含む。さらに、他の命令、コマンド、機能、動作、呼び出しまたは本発明の1つまたは複数の態様、あるいはその組合せが、本発明の1つまたは複数の態様に従ってエミュレートされてよい。
前述のコンピューティング環境は、使用可能なコンピューティング環境の例にすぎない。分割されない環境、分割された環境、クラウド環境、またはエミュレートされた環境、あるいはその組合せを含むが、これらに限定されない、他の環境が使用されてよく、実施形態はいずれか1つの環境に限定されない。本明細書ではコンピューティング環境のさまざまな例が説明されるが、本発明の1つまたは複数の態様が、多くの種類の環境と共に使用されてよい。本明細書で提供されるコンピューティング環境は、例にすぎない。
各コンピューティング環境は、本発明の1つまたは複数の態様を含むように構成されることが可能である。
1つまたは複数の態様がクラウド・コンピューティングに関連してよい。
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において列挙された内容の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の実施形態は、現在既知であるか、または今後開発される任意の他の種類のコンピューティング環境と組み合わせて実装され得る。
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含んでよい。
特徴は、次のとおりである。
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを通じてアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
リソース・プール:プロバイダの計算リソースは、プールされて、マルチテナント・モデルを使用して複数の利用者に提供され、さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高いレベルの抽象化では、場所(例えば、国、州、またはデータセンター)を指定できることがある。
迅速な順応性:能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用状況は、監視、制御、および報告されることが可能であり、利用されるサービスのプロバイダと利用者の両方に透明性を提供する。
サービス・モデルは、次のとおりである。
サービスとしてのソフトウェア(SaaS):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
サービスとしてのプラットフォーム(PaaS):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
サービスとしてのインフラストラクチャ(IaaS):利用者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選ばれたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
デプロイメント・モデルは、次のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
ここで図9を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード52を含んでいる。ノード52は、互いに通信してよい。ノード52は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組合せなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはソフトウェアあるいはその組合せをサービスとして提供できる。図9に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード52およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
ここで図10を参照すると、クラウド・コンピューティング環境50(図9)によって提供される機能的抽象レイヤのセットが示されている。図10に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
1つの例では、管理レイヤ80は、以下で説明される機能を提供してよい。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよび他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書またはインボイスの送付を行う。1つの例では、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよび他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、およびセキュア仮想マシンのダンプ処理96が挙げられる。
本発明の態様は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいる1つまたは複数のコンピュータ可読ストレージ媒体を含んでよい。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、電波または他の自由に伝搬する電磁波、導波管または他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの、それ自体が一過性の信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、あるいはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはその組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行し、電子回路をカスタマイズしてよい。
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成する他のデバイス上で実行させる。
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、1つのステップとして実現されるか、同時に実行されるか、時間的に部分的または完全に重複する方法で実質的に同時に実行されるか、あるいは場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、あるいは専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
上記に加えて、顧客の環境の管理を提供するサービス・プロバイダによって、1つまたは複数の態様が提供されること、提示されること、デプロイされること、管理されること、サービス提供されることなどが行われてよい。例えば、サービス・プロバイダは、1人または複数の顧客のために1つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成すること、維持すること、サポートすることなどを行うことができる。その見返りとして、サービス・プロバイダは、例えばサブスクリプションまたは料金契約あるいはその両方に従って、顧客から支払いを受け取ってよい。追加または代替として、サービス・プロバイダは、1つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってよい。
1つの態様では、1つまたは複数の実施形態を実行するために、アプリケーションがデプロイされてよい。1つの例として、アプリケーションのデプロイは、1つまたは複数の実施形態を実行するよう機能するコンピュータ・インフラストラクチャを提供することを含む。
さらなる態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャがデプロイされてよく、このコンピューティング・インフラストラクチャでは、コンピューティング・システムと組み合わせたコードが、1つまたは複数の実施形態を実行できる。
さらなる態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含んでいる、コンピューティング・インフラストラクチャを統合するためのプロセスが提供されてよい。コンピュータ・システムは、コンピュータ可読媒体を備え、このコンピュータ可読媒体では、コンピュータ媒体が1つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、1つまたは複数の実施形態を実行できる。
上ではさまざまな実施形態が説明されたが、それらは単なる例である。例えば、1つまたは複数の態様を組み込むため、または1つまたは複数の態様を使用するため、あるいはその両方のために、他のアーキテクチャのコンピューティング環境が使用され得る。さらに、さまざまな命令、コマンド、機能、呼び出しまたは動作、あるいはその組合せが使用されてよい。多くの変形が可能である。
本明細書では、さまざまな態様が説明される。さらに、本発明の態様の思想から逸脱することなく、多くの変形が可能である。本明細書に記載された各態様または特徴およびその変形を、特に矛盾しない限り、任意の他の態様または特徴と組み合わせることができるということに、注意するべきである。
さらに、他の種類のコンピューティング環境が、恩恵を受けることができ、使用され得る。例として、プログラム・コードの格納または実行あるいはその両方を行うのに適した、システム・バスを介して直接的または間接的にメモリ素子に結合された少なくとも2つのプロセッサを含んでいる、データ処理システムを使用できる。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、バルク・ストレージ、および実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
入出力デバイスまたはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、および他の記憶媒体などを含むが、これらに限定されない)は、直接的に、または介在するI/Oコントローラを通じて、システムに結合され得る。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、文脈で特に明示的に示されない限り、複数形も含むよう意図されている。「備える」または「備えている」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を示すが、1つまたは複数の他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組合せの存在または追加を除外していないということが、さらに理解されるであろう。
下の特許請求の範囲内のすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および等価なものは、もしあれば、具体的に請求されるとき、他の請求される要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。1つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。多くの変更および変形が、当業者にとって明らかであろう。さまざまな態様および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態を理解できるようにするために、実施形態が選択されて説明された。
Claims (20)
- コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを備え、前記プログラム命令が、
仮想マシンの診断状態を格納するための少なくとも1つの要求を取得することと、
前記少なくとも1つの要求を取得することに基づいて、前記仮想マシンの格納された診断状態を提供するために、前記仮想マシンの診断状態の格納を実行することとを含む方法を実行し、前記格納を前記実行することが、暗号化されずに格納されている前記仮想マシンの前記診断状態を暗号化し、暗号化されずに格納されている前記仮想マシンの前記診断状態を暗号化する前の、信頼できない実体による前記仮想マシンの前記診断状態の読み取りを防ぐことを含む、コンピュータ・プログラム製品。 - 前記仮想マシンの前記格納された診断状態が、前記仮想マシンのメモリの内容を含む、請求項1に記載のコンピュータ・プログラム製品。
- 前記仮想マシンの前記格納された診断状態が、前記仮想マシンの1つまたは複数のプロセッサ・レジスタの内容を含む、請求項1または2に記載のコンピュータ・プログラム製品。
- 前記方法が、前記仮想マシンの診断状態の格納を開始するための診断状態格納開始要求を取得することをさらに含み、前記診断状態格納開始要求が、暗号化されずに格納されている前記仮想マシンの前記診断状態の少なくとも一部を暗号化することにおいて使用される第1の暗号鍵を取得するために使用される、請求項1ないし3のいずれか一項に記載のコンピュータ・プログラム製品。
- 前記少なくとも1つの要求を前記取得することが、診断プロセッサ状態格納要求を取得することを含み、前記診断プロセッサ状態格納要求を取得することに基づいて、前記診断状態の前記格納を前記実行することが、
前記第1の暗号鍵を使用して、前記仮想マシンの少なくとも1つのプロセッサの少なくとも選ばれた内容を暗号化し、暗号化されたプロセッサの内容を提供することと、
前記暗号化されたプロセッサの内容を格納することとを含む、請求項4に記載のコンピュータ・プログラム製品。 - 前記少なくとも1つの要求を前記取得することが、セキュア・メモリからの変換要求を取得することを含み、前記セキュア・メモリからの変換要求を取得することに基づいて、前記診断状態の前記格納を前記実行することが、
第2の暗号鍵を使用して、暗号化されていない前記仮想マシンのメモリの少なくとも選ばれた内容を暗号化し、メモリの暗号化された内容を提供することと、
前記メモリの暗号化された内容を格納することとを含む、請求項1ないし5のいずれか一項に記載のコンピュータ・プログラム製品。 - 前記セキュア・メモリからの変換要求を取得することに基づいて、前記診断状態の前記格納を前記実行することが、
格納される内容のメモリの単位が暗号化されているかどうかを判定することと、
前記メモリの単位が暗号化されていないということを決定することに基づいて、前記第2の暗号鍵を使用して前記メモリの単位を暗号化することとを含み、暗号化されているメモリの単位が再暗号化されない、請求項6に記載のコンピュータ・プログラム製品。 - 前記格納された診断状態が、メモリの暗号化された内容を含み、前記方法が、
診断メモリ状態格納要求を取得することと、
前記診断メモリ状態格納要求を取得することに基づいて、前記メモリの暗号化された内容を復号するために使用されるメタデータを格納することとをさらに含む、請求項1ないし7のいずれか一項に記載のコンピュータ・プログラム製品。 - 前記メタデータが、前記メモリの暗号化された内容を復号するために使用される1つまたは複数の選ばれた値を作成するために使用される1つまたは複数の選ばれた構成要素値を含む、請求項8に記載のコンピュータ・プログラム製品。
- 前記方法が、
診断状態の前記格納を完了するための完了要求を取得することと、
前記完了要求を取得することに基づいて、前記仮想マシンの暗号化されて格納された診断状態を復号するために使用されるデータを提供することとをさらに含む、請求項1ないし9のいずれか一項に記載のコンピュータ・プログラム製品。 - 前記データが、メモリの暗号化された内容の復号において使用される第2の暗号鍵と、暗号化において使用される1つまたは複数の選ばれた値を作成するために使用されるノンス値とを含み、前記データの少なくとも一部が暗号化される、請求項10に記載のコンピュータ・プログラム製品。
- コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信する少なくとも1つのプロセッサとを備え、前記コンピュータ・システムが方法を実行するように構成されており、前記方法が、
仮想マシンの診断状態を格納するための少なくとも1つの要求を取得することと、
前記少なくとも1つの要求を取得することに基づいて、前記仮想マシンの格納された診断状態を提供するために、前記仮想マシンの診断状態の格納を実行することとを含み、前記格納を前記実行することが、暗号化されずに格納されている前記仮想マシンの前記診断状態を暗号化し、暗号化されずに格納されている前記仮想マシンの前記診断状態を暗号化する前の、信頼できない実体による前記仮想マシンの前記診断状態の読み取りを防ぐことを含む、コンピュータ・システム。 - 前記方法が、前記仮想マシンの診断状態の格納を開始するための診断状態格納開始要求を取得することをさらに含み、前記診断状態格納開始要求が、暗号化されずに格納されている前記仮想マシンの前記診断状態の少なくとも一部を暗号化することにおいて使用される第1の暗号鍵を取得するために使用される、請求項12に記載のコンピュータ・システム。
- 前記少なくとも1つの要求を前記取得することが、診断プロセッサ状態格納要求を取得することを含み、前記診断プロセッサ状態格納要求を取得することに基づいて、前記診断状態の前記格納を前記実行することが、
前記第1の暗号鍵を使用して、前記仮想マシンの少なくとも1つのプロセッサの少なくとも選ばれた内容を暗号化し、暗号化されたプロセッサの内容を提供することと、
前記暗号化されたプロセッサの内容を格納することとを含む、請求項13に記載のコンピュータ・システム。 - 前記少なくとも1つの要求を前記取得することが、セキュア・メモリからの変換要求を取得することを含み、前記セキュア・メモリからの変換要求を取得することに基づいて、前記診断状態の前記格納を前記実行することが、
第2の暗号鍵を使用して、暗号化されていない前記仮想マシンのメモリの少なくとも選ばれた内容を暗号化し、メモリの暗号化された内容を提供することと、
前記メモリの暗号化された内容を格納することとを含む、請求項12ないし14のいずれか一項に記載のコンピュータ・システム。 - 前記格納された診断状態が、メモリの暗号化された内容を含み、前記方法が、
診断メモリ状態格納要求を取得することと、
前記診断メモリ状態格納要求を取得することに基づいて、前記メモリの暗号化された内容を復号するために使用されるメタデータを格納することとをさらに含む、請求項12ないし15のいずれか一項に記載のコンピュータ・システム。 - コンピューティング環境内の処理を容易にするコンピュータ実装方法であって、前記コンピュータ実装方法が、
仮想マシンの診断状態を格納するための少なくとも1つの要求を取得することと、
前記少なくとも1つの要求を取得することに基づいて、前記仮想マシンの格納された診断状態を提供するために、前記仮想マシンの診断状態の格納を実行することとを含み、前記格納を前記実行することが、暗号化されずに格納されている前記仮想マシンの前記診断状態を暗号化し、暗号化されずに格納されている前記仮想マシンの前記診断状態を暗号化する前の、信頼できない実体による前記仮想マシンの前記診断状態の読み取りを防ぐことを含む、コンピュータ実装方法。 - 前記方法が、前記仮想マシンの診断状態の格納を開始するための診断状態格納開始要求を取得することをさらに含み、前記診断状態格納開始要求が、暗号化されずに格納されている前記仮想マシンの前記診断状態の少なくとも一部を暗号化することにおいて使用される第1の暗号鍵を取得するために使用される、請求項17に記載のコンピュータ実装方法。
- 前記少なくとも1つの要求を前記取得することが、診断プロセッサ状態格納要求を取得することを含み、前記診断プロセッサ状態格納要求を取得することに基づいて、前記診断状態の前記格納を前記実行することが、
前記第1の暗号鍵を使用して、前記仮想マシンの少なくとも1つのプロセッサの少なくとも選ばれた内容を暗号化し、暗号化されたプロセッサの内容を提供することと、
前記暗号化されたプロセッサの内容を格納することとを含む、請求項18に記載のコンピュータ実装方法。 - 前記少なくとも1つの要求を前記取得することが、セキュア・メモリからの変換要求を取得することを含み、前記セキュア・メモリからの変換要求を取得することに基づいて、前記診断状態の前記格納を前記実行することが、
第2の暗号鍵を使用して、暗号化されていない前記仮想マシンのメモリの少なくとも選ばれた内容を暗号化し、メモリの暗号化された内容を提供することと、
前記メモリの暗号化された内容を格納することとを含む、請求項17ないし19のいずれか一項に記載のコンピュータ実装方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/474,220 US12019772B2 (en) | 2021-09-14 | 2021-09-14 | Storing diagnostic state of secure virtual machines |
US17/474,220 | 2021-09-14 | ||
PCT/EP2022/075220 WO2023041462A1 (en) | 2021-09-14 | 2022-09-12 | Storing diagnostic state of secure virtual machines |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024533120A true JP2024533120A (ja) | 2024-09-12 |
Family
ID=83322570
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2024513747A Pending JP2024533120A (ja) | 2021-09-14 | 2022-09-12 | セキュア仮想マシンの診断状態の格納 |
Country Status (8)
Country | Link |
---|---|
US (1) | US12019772B2 (ja) |
EP (1) | EP4402570A1 (ja) |
JP (1) | JP2024533120A (ja) |
KR (1) | KR20240038774A (ja) |
CN (1) | CN117940900A (ja) |
CA (1) | CA3217891A1 (ja) |
TW (1) | TWI806622B (ja) |
WO (1) | WO2023041462A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230102111A1 (en) * | 2021-09-30 | 2023-03-30 | Lenovo Global Technology (United States) Inc. | Securing customer sensitive information on private cloud platforms |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5224206A (en) * | 1989-12-01 | 1993-06-29 | Digital Equipment Corporation | System and method for retrieving justifiably relevant cases from a case library |
US5699505A (en) * | 1994-08-08 | 1997-12-16 | Unisys Corporation | Method and system for automatically collecting diagnostic information from a computer system |
US6738928B1 (en) * | 2000-06-19 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | Method and expert system for analysis of crash dumps |
US6671687B1 (en) * | 2000-09-29 | 2003-12-30 | Ncr Corporation | Method and apparatus for protecting data retrieved from a database |
US8375386B2 (en) | 2005-06-29 | 2013-02-12 | Microsoft Corporation | Failure management for a virtualized computing environment |
US9354927B2 (en) * | 2006-12-21 | 2016-05-31 | Vmware, Inc. | Securing virtual machine data |
JP5255348B2 (ja) * | 2007-07-16 | 2013-08-07 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | クラッシュダンプ用のメモリアロケーション |
US9251339B2 (en) * | 2007-12-29 | 2016-02-02 | International Business Machines Corporation | Core dump privacy during application failure |
US20090240953A1 (en) | 2008-03-19 | 2009-09-24 | Safenet, Inc. | On-disk software image encryption |
US9383970B2 (en) * | 2009-08-13 | 2016-07-05 | Microsoft Technology Licensing, Llc | Distributed analytics platform |
JP6142008B2 (ja) | 2013-03-15 | 2017-06-07 | インテル コーポレイション | モバイル・コンピューティング・デバイス技術、並びに同技術を用いるシステム及び方法 |
US9286152B2 (en) | 2013-06-14 | 2016-03-15 | Microsoft Technology Licensing, Llc | Securely obtaining memory content after device malfunction |
US9792448B2 (en) | 2014-02-28 | 2017-10-17 | Advanced Micro Devices, Inc. | Cryptographic protection of information in a processing system |
US10296413B2 (en) | 2016-05-02 | 2019-05-21 | Microsoft Technology Licensing, Llc | Recovery environment for a virtual machine |
US10270596B2 (en) | 2016-09-16 | 2019-04-23 | International Business Machnines Corporation | Generating memory dumps |
US10366227B2 (en) | 2016-11-15 | 2019-07-30 | International Business Machines Corporation | Secure debugging in a trustable computing environment |
US10496425B2 (en) | 2017-02-21 | 2019-12-03 | Red Hat, Inc. | Systems and methods for providing processor state protections in a virtualized environment |
US9892256B1 (en) | 2017-04-10 | 2018-02-13 | Bracket Computing, Inc. | Threat defense techniques |
US20180341768A1 (en) * | 2017-05-26 | 2018-11-29 | Microsoft Technology Licensing, Llc | Virtual machine attestation |
US10848474B2 (en) | 2018-02-26 | 2020-11-24 | Red Hat, Inc. | Firmware validation for encrypted virtual machines |
US10698716B2 (en) * | 2018-03-15 | 2020-06-30 | Nutanix, Inc. | Virtual machine state recorder |
US11308215B2 (en) * | 2019-03-08 | 2022-04-19 | International Business Machines Corporation | Secure interface control high-level instruction interception for interruption enablement |
CN112860380A (zh) | 2021-03-04 | 2021-05-28 | 中国科学院信息工程研究所 | 一种基于内置安全芯片的虚拟机可信迁移方法 |
-
2021
- 2021-09-14 US US17/474,220 patent/US12019772B2/en active Active
-
2022
- 2022-05-24 TW TW111119202A patent/TWI806622B/zh active
- 2022-09-12 CN CN202280062038.4A patent/CN117940900A/zh active Pending
- 2022-09-12 JP JP2024513747A patent/JP2024533120A/ja active Pending
- 2022-09-12 CA CA3217891A patent/CA3217891A1/en active Pending
- 2022-09-12 WO PCT/EP2022/075220 patent/WO2023041462A1/en active Application Filing
- 2022-09-12 EP EP22770028.3A patent/EP4402570A1/en active Pending
- 2022-09-12 KR KR1020247006343A patent/KR20240038774A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
KR20240038774A (ko) | 2024-03-25 |
CA3217891A1 (en) | 2023-03-23 |
US12019772B2 (en) | 2024-06-25 |
WO2023041462A1 (en) | 2023-03-23 |
CN117940900A (zh) | 2024-04-26 |
EP4402570A1 (en) | 2024-07-24 |
TW202311945A (zh) | 2023-03-16 |
TWI806622B (zh) | 2023-06-21 |
US20230083083A1 (en) | 2023-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7546675B2 (ja) | セキュア・ゲストへのセキュリティ・モジュールのセキュア・オブジェクトのバインディング | |
KR102551935B1 (ko) | 보안 운영 체제 이미지의 점진적 복호화 및 무결성 검증 | |
TW202034655A (zh) | 以加密金鑰指令計算數位簽章驗證標記 | |
TWI743654B (zh) | 用於計算數位簽章認證驗證指令之電腦程式產品、電腦系統及電腦實施方法 | |
TW202040966A (zh) | 計算數位簽章認證標記指令 | |
JP2024533120A (ja) | セキュア仮想マシンの診断状態の格納 | |
JP2024528930A (ja) | セキュア・ゲストの証明 | |
EP4381400A1 (en) | Confidential data provided to a secure guest via metadata | |
EP3925158B1 (en) | Perform cryptographic computation scalar multiply instruction | |
US11372983B2 (en) | Employing a protected key in performing operations | |
US11201730B2 (en) | Generating a protected key for selective use | |
TWI808749B (zh) | 用於安全客體映像及後設資料更新之電腦程式產品、電腦系統及電腦實施方法 | |
US12130953B2 (en) | Secure guest image and metadata update |