JP2014532201A - 仮想ゲストのメモリ保護の方法、システムおよびコンピュータプログラム - Google Patents

仮想ゲストのメモリ保護の方法、システムおよびコンピュータプログラム Download PDF

Info

Publication number
JP2014532201A
JP2014532201A JP2014517066A JP2014517066A JP2014532201A JP 2014532201 A JP2014532201 A JP 2014532201A JP 2014517066 A JP2014517066 A JP 2014517066A JP 2014517066 A JP2014517066 A JP 2014517066A JP 2014532201 A JP2014532201 A JP 2014532201A
Authority
JP
Japan
Prior art keywords
virtual
guest
machine manager
runtime memory
virtual machine
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.)
Granted
Application number
JP2014517066A
Other languages
English (en)
Other versions
JP5736090B2 (ja
Inventor
アルジェシ、クリストファー、ジェイ
フォンテノット、ネイサン、ディー
グリム、ライアン、ピー
ショップ、ジョエル、エイチ
ストロセイカー、マイケル、ティー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/272,780 external-priority patent/US8782351B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2014532201A publication Critical patent/JP2014532201A/ja
Application granted granted Critical
Publication of JP5736090B2 publication Critical patent/JP5736090B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Abstract

【課題】 仮想ゲストのメモリを保護する方法を提供すること。【解決手段】 仮想ゲストのメモリを保護する方法は、ホスト・コンピューティング・システム上の仮想ゲストを初期化することを含む。ホスト・コンピューティング・システムは、仮想ゲストの動作を管理する仮想マシン・マネージャを含む。仮想ゲストは、仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む。本方法は、仮想ゲストに対するランタイム・メモリ割当てを受取ることを含み、ランタイム・メモリの割当ては、ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む。本方法は、仮想ゲストによって、ランタイム・メモリの割当ての少なくとも一部分を仮想マシン・マネージャによるアクセスができないように設定することを含む。【選択図】 図4

Description

本明細書で開示される主題は、仮想化及び仮想ゲストに関し、より具体的には仮想ゲストのメモリを保護することに関する。
ハードウェアの仮想化は、アプリケーション、プログラム、さらには完全なオペレーティング・システムでさえもホスト・コンピューティング・プラットフォームの「仮想ゲスト」として実行することができる1つ又は複数のコンピュータ環境をシミュレーションすることを含む、コンピューティング・プラットフォームの抽象化を可能にする。通常、ホスト上のハイパーバイザ又は仮想マシン・マネージャなどのアプリケーションが、これらの仮想コンピュータ環境を管理し及び/又は提供する。
現在の仮想化では、仮想ゲストは、典型的には、危険にさらされたホスト(例えば、ハイパーバイザ又は仮想マシン・マネージャ)に対して脆弱である。さらに、仮想ゲストがクラウド・コンピューティング環境で動作しているとき、仮想ゲストは、クラウド・プロバイダがそのホストをセキュリティ保護しており、そのアクセスを悪用しないことを信頼しなければならない。その結果として、機密調査又はその他の機密扱いのデータをホストするような多くの仮想ゲストは、パブリック・クラウド・コンピューティング環境では、ホストが仮想ゲストの機密データにアクセスする可能性があり得るので、実行することはできないであろう。
仮想ゲスト・メモリを保護する方法が提供される。この方法は、ホスト・コンピューティング・システム上の仮想ゲストを初期化することを含む。ホスト・コンピューティング・システムは、仮想ゲストの動作を管理する仮想マシン・マネージャを含む。仮想ゲストは、仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む。本方法は、仮想ゲストに対するランタイム・メモリの割当てを受取ることを含む。ランタイム・メモリの割当ては、ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む。本方法は、仮想ゲストによって、ランタイム・メモリの割当ての少なくとも一部分を仮想マシン・マネージャによるアクセスができないように設定することを含む。
仮想ゲスト・メモリを保護するための装置には、提示された方法に関する上記のことを機能的に実行するように構成された複数のモジュールが設けられる。これらのモジュールは、説明される実施形態において、初期化モジュール、受信モジュール、及び保護モジュールを含む。初期化モジュールは、ホスト・コンピューティング・システム上の仮想ゲストを初期化する。ホスト・コンピューティング・システムは、仮想ゲストの動作を管理する仮想マシン・マネージャを含む。仮想ゲストは、仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む。受信モジュールは、仮想ゲストに対するランタイム・メモリの割当てを受けとる。ランタイム・メモリの割当ては、ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む。保護モジュールは、仮想ゲストによって、ランタイム・メモリの割当ての少なくとも一部分を仮想マシン・マネージャによってアクセスできないように設定する。
仮想ゲスト・メモリを保護するためのシステムが提供される。このシステムは、ホスト・コンピューティング・システムのための仮想動作プラットフォームを提供する仮想マシン・マネージャと、プロセッサと、プロセッサによる実行のためのモジュールを格納するメモリとを含む。メモリは、ホスト・コンピューティング・システム上の仮想ゲストを初期化する初期化モジュールを含む。ホスト・コンピューティング・システムは、仮想ゲストの動作を管理する仮想マシン・マネージャを含む。仮想ゲストは、仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む。受信モジュールは、仮想ゲストに対するランタイム・メモリの割当てを受取る。ランタイム・メモリの割当ては、ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む。保護モジュールは、仮想ゲストによって、ランタイム・メモリの割当ての少なくとも一部分を仮想マシン・マネージャによるアクセスができないように設定する。
仮想ゲスト・メモリを保護するためのコンピュータ・プログラム製品が提供される。このコンピュータ・プログラム製品は、具体化されたコンピュータ可読プログラム・コードを有するコンピュータ可読記憶媒体を含む。コンピュータ可読プログラム・コードは、ホスト・コンピューティング・システム上の仮想ゲストを初期化するためのものである。ホスト・コンピューティング・システムは、仮想ゲストの動作を管理する仮想マシン・マネージャを含む。仮想ゲストは、仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む。コンピュータ可読プログラム・コードは、仮想ゲストに対するランタイム・メモリの割当てを受取るためのものである。ランタイム・メモリの割当ては、ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む。コンピュータ可読プログラム・コードは、仮想ゲストによって、ランタイム・メモリの割当ての少なくとも一部分を仮想マシン・マネージャによるアクセスができないように設定するためのものである。
別の方法が提供される。この方法は、仮想ゲスト・セキュリティ装置をホスト・コンピューティング・システム上に配備することを含む。仮想ゲスト・セキュリティ装置は、ホスト・コンピューティング・システム上の仮想ゲストを初期化することが可能である。ホスト・コンピューティング・システムは、仮想ゲストの動作を管理する仮想マシン・マネージャを含む。仮想ゲストは、仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む。仮想ゲスト・セキュリティ装置は、仮想ゲストに対するランタイム・メモリの割当てを受取ることが可能である。ランタイム・メモリの割当ては、ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む。仮想ゲスト・セキュリティ装置は、仮想ゲストによって、ランタイム・メモリの割当ての少なくとも一部分を仮想マシン・マネージャによってアクセスできないように設定することが可能である。
機密調査又は他の機密扱いのデータをホストするような多くの仮想ゲストをパブリック・クラウド・コンピューティング環境内で実行させることが、ホストがその仮想ゲストの機密データにアクセスできないので、可能になる。
本発明の実施形態の利点を容易に理解できるように、上で簡単に説明した実施形態のより具体的な説明を、添付の図面に示される特定の実施形態を参照しながら提供する。これらの図面は幾つかの実施形態のみを示したものであり、それゆえに範囲を限定するものであると見なすべきではないことを理解した上で、添付の図面を使用しながら、実施形態をさらに具体性かつ詳細に記載し、説明する。
本発明による、仮想ゲスト・メモリを保護するためのシステムの一実施形態を示す略ブロック図である。 本発明による、仮想ゲスト・メモリを保護するためのシステムの第2の実施形態を示す略ブロック図である。 本発明による、仮想ゲスト・メモリを保護するためのシステムの第3の実施形態を示す略ブロック図である。 本発明による、仮想ゲスト・メモリを保護するための装置の一実施形態を示す略ブロック図である。 本発明による、仮想ゲスト・メモリを保護するための装置の別の実施形態を示す詳細な略ブロック図である。 本発明による、仮想ゲスト・メモリを保護する方法の一実施形態を示す略フローチャート図である。 本発明による、仮想ゲスト・メモリを保護する方法の別の実施形態を示す略フローチャート図である。 本発明による、仮想ゲスト・セキュリティ装置を配備する方法の一実施形態を示す略フローチャート図である。 本発明による、仮想ゲスト・セキュリティ装置を配備する方法の一実施形態を示す図8の続きである。
本明細書を通して、特徴、利点、及び同様の言葉についての言及は、特徴及び利点の全てがいずれかの単一の実施形態において実現できることを意味しない。むしろ、特徴及び利点に言及する言葉は、特定の特徴、利点、又は特性が少なくとも1つの実施形態に含まれることを意味するものと理解される。従って、特徴及び利点、並びに同様の言葉についての議論は、本明細書を通して、必ずではないが、同じ実施形態に言及するものであり得る。
さらに、実施形態の説明される特徴、利点、及び特性は、任意の適切な様式で組み合せることができる。当業者であれば、実施形態は、特定の実施形態の特定の特徴又は利点のうちの1つ又は複数を用いずに実施することができることを認識するであろう。他の場合には、必ずしも全ての実施形態で提示されるわけではない付加的な特徴及び利点を特定の実施形態において認識することができる。
実施形態のこれらの特徴及び利点は、以下の説明及び添付の特許請求の範囲からさらに十分に明白となり、又は以下に説明するような実施形態の実践によって習得することができる。当業者であれば理解するように、本発明の態様は、システム、方法、及び/又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、又はソフトウェア態様とハードウェア態様を組合せた実施形態の形をとることができ、これらを本明細書では全て一般的に「回路」、「モジュール」、又は「システム」と呼ぶことができる。さらに、本発明の態様は、その上に具体化されたコンピュータ可読プログラム・コードを有する1つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形をとることができる。
本明細書において説明される機能ユニットの多くは、それらの実装の独立性をより具体的に強調するために、モジュールと呼ばれている。例えば、モジュールは、特注のVLSI回路又はゲート・アレイ、論理チップ、トランジスタなど市販の半導体、又は他の個別の構成要素を含む、ハードウェア回路として実装することができる。モジュールは、フィールド・プログラム可能ゲート・アレイ、プログラム可能アレイ論理、プログラム可能論理デバイスなどのプログラム可能ハードウェア・デバイス内で実装することもできる。
モジュールは、種々の型式のプロセッサによる実行のためのソフトウェア内で実装することもできる。コンピュータ可読プログラム・コードの識別されるモジュールは、例えば、例えばオブジェクト、プロシージャ、又は関数として組織化することができるコンピュータ命令の1つ又は複数の物理ブロック又は論理ブロックを含むことができる。とはいえ、識別されるモジュールの実行プログラムは、物理的に一緒に配置される必要はなく、異なる位置に格納されたばらばらの命令を含むことができ、これらは論理的に一緒に連結されると、モジュールを構成して、モジュールの言明された目的を達成する。
実際には、コンピュータ可読プログラム・コードのモジュールは、単一の命令又は多数の命令とすることができ、さらには、幾つかの異なるコード・セグメント上、異なるプログラム間、及び幾つかのメモリデバイスにわたって分散させることもできる。同様に、動作データは、本明細書ではモジュール内で識別し及び示すことができ、任意の適切な形で具体化することができ、任意の適切な型式のデータ構造体内で組織化することができる。動作データは、単一のデータ・セットとして集めることができ、又は、異なる記憶デバイス上を含めて異なる位置にわたって分散させることができ、少なくとも部分的に、単にシステム又はネットワーク上の電子信号として存在することができる。モジュール又はモジュールの一部分がソフトウェア内で実装される場合、コンピュータ可読プログラム・コードは、1つ又は複数のコンピュータ可読媒体上に格納すること及び/又はその上で伝搬させることができる。
コンピュータ可読媒体は、コンピュータ可読プログラム・コードを格納する有形のコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外、ホログラフィック、マイクロメカニカル、若しくは半導体のシステム、装置、若しくはデバイス、又はこれらの任意の適切な組合せとすることができるが、それらに限定されない。
コンピュータ可読記憶媒体のより具体的な例としては、それらに限定されないが、携帯用コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、携帯用コンパクト・ディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、光記憶デバイス、磁気記憶デバイス、ホログラフィック記憶媒体、マイクロメカニカル記憶デバイス、又はこれらの任意の適切な組合せを挙げることができる。本明細書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、又はデバイスによって及び/又はそれらと接続して使用するための、コンピュータ可読プログラム・コードを収容及び/又は記憶することができる任意の有形媒体とすることができる。
コンピュータ可読媒体はまた、コンピュータ可読信号媒体とすることもできる。コンピュータ可読信号媒体は、具体化されたコンピュータ可読プログラム・コードを例えばベースバンド内に又は搬送波の一部分として有する伝搬データ信号を含むことができる。そのような伝搬信号は、それらに限定されないが、電気、電磁気、磁気、光、又はこれらの任意の適切な組合せを含む様々な形態のいずれかをとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、又はデバイスにより又はそれらと接続して使用するためのコンピュータ可読プログラム・コードを伝達し、伝搬し、又は搬送することができる、任意のコンピュータ可読媒体とすることができる。コンピュータ可読信号媒体上に具体化されたコンピュータ可読プログラム・コードは、それらに限定されないが、有線、光ファイバ、無線周波数(RF)など、又はこれらの任意の組合せを含む任意の適切な媒体を用いて伝送することができる。
一実施形態において、コンピュータ可読媒体は、1つ又は複数のコンピュータ可読記憶媒体及び1つ又は複数のコンピュータ可読信号媒体の組合せを含むことができる。例えば、コンピュータ可読プログラム・コードを、プロセッサによる実行のために、電磁気信号として光ファイバケーブルを通して伝搬するとともに、プロセッサによる実行のためにRAM記憶デバイス上に格納することができる。
本発明の態様の動作を実行するためのコンピュータ可読プログラム・コードは、JaVA、Smalltalk、C++、PHPなどのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語又は類似のプログラミング言語などの通常の手続きプログラミング言語を含む、1つ又は複数のプログラミング言語の任意の組合せで記述することができる。コンピュータ可読プログラム・コードは、完全にユーザのコンピュータ上で又は部分的にユーザのコンピュータ上で独立型ソフトウェア・パッケージとして、又は部分的にユーザのコンピュータ上かつ部分的に遠隔コンピュータ上で、又は完全に遠隔コンピュータ若しくはサーバ上で、実行することができる。後者のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)又は広域ネットワーク(WAN)を含む任意の型式のネットワークを通してユーザのコンピュータに接続することができ、又は接続は外部コンピュータに対して行うことができる(例えば、インターネット・サービス・プロバイダを用いてインターネットを通して)。
本明細書を通して、「1つの実施形態」、「一実施形態」、又は類似の言葉に対する言及は、その実施形態に関連して説明される特定の特徴、構造、又は特性が少なくとも1つの実施形態に含まれることを意味する。従って、本明細書を通じて「1つの実施形態において」、「一実施形態において」又は類似の言葉の出現は、必ずではないが、全て同じ実施形態を指すこともあるが、しかし、特に明示的に断らない限り、「1つ又は複数のしかし全てではない実施形態」を意味する。用語「含む」、「備える」、「有する」及びそれらの変形は、特に明示的に断らない限り、「含むがそれらに限定されない」ことを意味する。項目の列挙リストは、特に明示的に断らない限り、項目のいずれか又は全てが相互排除的であること及び/又は相互包含的であることを意味しない。「1つの(a)」、「1つの(an)」及び「その(the)」という用語は、特に明示的に断らない限り、「1つ又は複数」を指す。
さらに、説明される実施形態の特徴、構造、又は特性は任意の適切な様式で組み合せることができる。以下の説明において、実施形態の十分な理解を与えるために、多数の具体的な詳細、例えば、プログラミング、ソフトウェア・モジュール、ユーザ選択、ネットワーク・トランザクション、データベース・クエリ、データベース構造体、ハードウェア・モジュール、ハードウェア回路、ハードウェア・チップなどの例が与えられる。しかし、当業者であれば、実施形態は、具体的な詳細のうちの1つ又は複数がなくても、又は他の方法、構成要素、材料などを用いて、実施することができることを認識するであろう。他の事例では、周知の構造、材料、又は動作は、実施形態の態様を不明瞭にしないために、詳細に示さず又は説明しない。
以下で、本発明の実施形態による方法、装置、システム、及びコンピュータ・プログラム製品の略フローチャート図及び/又は略ブロック図を参照しながら、実施形態の態様を説明する。略フローチャート図及び/又は略ブロック図の各ブロック、及び略フローチャート図及び/又は略ブロック図内のブロックの組合せは、コンピュータ可読プログラム・コードによって実装することができることを理解されたい。コンピュータ可読プログラム・コードを、汎用コンピュータ、専用コンピュータ、シーケンサ、又は他のプログラム可能データ処理装置のプロセッサに与えて、マシンを生成し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、略フローチャート図及び/又は略ブロック図の1つ又は複数ブロック内で指定された機能/動作を実装するための手段を作成するようにすることができる。
コンピュータ可読プログラム・コードを、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスに特定の方式で機能するように指示することができるコンピュータ可読媒体内に格納して、その結果、コンピュータ可読媒体内に格納された命令が、略フローチャート図及び/又は略ブロック図の1つ又は複数ブロック内で指定された機能/動作を実装する命令を含む製品を製造するようにすることもできる。
コンピュータ可読プログラム・コードを、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスにロードして、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で実行されるコンピュータ実施プロセスを生成する一連の動作ステップを生じさせ、その結果、コンピュータ又は他のプログラム可能装置上で実行されるプログラム・コードが、フローチャート図及び/又はブロック図の1つ又は複数ブロック内で指定された機能/動作を実装するプロセスを与えるようにすることもできる。
図面内の略フローチャート図及び/又は略ブロック図は、本発明の種々の実施形態による装置、システム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、及び動作を示す。この点に関して、略フローチャート図及び/又は略ブロック図内の各々のブロックは、指定された論理機能を実装するためのプログラム・コードの1つ又は複数の実行可能命令を含むモジュール、セグメント、又はコードの一部分を表すことができる。
幾つかの代替的な実装において、ブロック内に記された機能を、図中で記された順序とは異なる順序で行われてもよいことに留意されたい。例えば、関与する機能に応じて、連続して示された2つのブロックが実際には実質的に同時に実行されることもあり、又は、ブロックは、ときには逆の順序で実行されることもある。図に示された1つ又は複数のブロック、又はそれらの一部分と、機能、論理又は効果において均等な他のステップ及び方法を考案することができる。
フローチャート図及び/又はブロック図には種々の矢印型式及びの線の型式が用いられているが、これらは、対応する実施形態の範囲を限定するものではないと理解される。実際、幾つかの矢印又は他の連結記号は、図示した実施形態の論理フローを示すためだけに使用されている場合がある。例えば、矢印は、図示した実施形態の列挙されたステップ間の指定されていない継続期間の待ち時間又は監視時間を示すことができる。さらに、ブロック図及び/又はフローチャート図の各々のブロック、並びに、ブロック図及び/又はフローチャート図内のブロックの組合せは、指定された機能又は動作を実行する専用ハードウェアに基づくシステム、又は専用ハードウェアとコンピュータ可読プログラム・コードとの組合せによって実装することができることに留意されたい。
図1は、仮想ゲスト・メモリを保護するためのシステム100の一実施形態を示す略ブロック図である。図示した実施形態において、システム100は、複数の仮想ゲスト120a、120bのための複数の仮想マシン115a、115bを提供する仮想マシン・マネージャ110を有する、ホスト・コンピューティング・システム105を含む。ホスト・コンピューティング・システム105は、ネットワーク125を通じて1つ又は複数のクライアント130a、130b、130cと通信する。
ホスト・コンピューティング・システム105は、サーバ・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、モバイル機器、セットトップボックス、又は他の機器によって具体化することができる。一実施形態において、ホスト・コンピューティング・システム105は、及び/又は付加的なコンピューティング・システムと共同で動作するホスト・コンピューティング・システム105は、クライアント130a、130b、130cによるネットワーク125上でのオンデマンド・アクセスのためのアプリケーション、ドキュメント、及びデータをホストし、格納し、及び/又は提供する、クラウド・コンピューティング・プラットフォームを提供する。クライアント130aは、ネットワーク125を通じて仮想ゲスト120aと通信し対話することができる。例えば、仮想ゲスト・オペレーティング・システム120aは、クラウド・コンピューティング・サーバ上に常駐することができる。仮想ゲスト・オペレーティング・システム120aは、ワードプロセッサ・アプリケーションを実行することができ、ユーザは、その上で、クライアントを通じてワードプロセッサ文書にアクセスすることができる。
ホスト・コンピューティング・システム105は、プロセッサと、コンピュータ可読プログラムを格納するメモリとを含むことができる。メモリは、動的ランダム・アクセス・メモリ(「DRAM」)、静的ランダム・アクセス・メモリ(「SRAM」)などの揮発性メモリ、又は他の適切な揮発性メモリによって具体化することができる。当業者には周知のように、プロセッサはコンピュータ可読プログラムを実行する。コンピュータ可読プログラムは、ホスト・コンピューティング・システム105内の記憶装置に有形に格納することができる。記憶装置としては、ソリッド・ステート・ドライブ(「SSD」)、ハード・ディスク・ドライブ(「HDD」)、光記憶装置、ホログラフィック記憶装置、マイクロメカニカル記憶装置、又は他の不揮発性データ記憶装置を挙げることができる。
ネットワーク125は、インターネット、ローカル・エリア・ネットワーク(「LAN」)、無線LAN(「WLAN」)、インターネット上で通信する複数のLAN、又は他の任意の同様の通信ネットワークなどの、通信ネットワークを含むことができる。各クライアント130a、130b、130cは、ネットワーク125を介してホスト・コンピューティング・システム105と通信する。一実施形態において、クライアント130aは、デスクトップ・コンピュータ、ポータブル・コンピュータ、サーバ、メインフレーム・コンピュータ、手持ち式コンピューティング機器、タッチ機器、PDA、タブレット・コンピュータ、電子書籍リーダ、携帯電話、スマートフォンなどとして具体化することができる。
仮想マシン・マネージャ110は、ハイパーバイザ又は仮想マシン・モニタとしても知られ、内部で仮想ゲスト120aが動作するための仮想マシン115aすなわち仮想動作プラットフォームを提供する。当業者には知られているように、仮想マシン150aはホスト・コンピューティング・システム105の実際のハードウェア特性を抽象化したものであり、仮想ゲスト120が使用するためのコンピューティング・リソースの仮想表現を与える。仮想ゲスト120aは、仮想マシン115a内で、あたかもホスト・コンピューティング・システム105上で直接動作しているかのように実行されるが、但し、仮想マシン・マネージャ110が、仮想ゲスト120aの実行を管理し、種々のシステム・リソースへのアクセスを制限することができる。仮想マシン・マネージャ110は、下層のホスト・コンピューティング・システム105のリソースの一部分、例えば、下層のマシン、カーネル・コール、ハードウェア・レジスタなどのホスト・コンピューティング・システム105の命令セットのサブセットを、各々の仮想ゲスト120a、120bに与えることができる。
図示した実施形態において、仮想マシン・マネージャ110は、各々が仮想ゲスト120a、120bを伴う2つの仮想マシン115a、115bを含む。しかし、任意の適切な数の仮想マシン115a、115b及び仮想ゲスト120a、120bを使用することができる。各々の仮想ゲスト120a、120bは、アプリケーション又はプログラムとすることができる。一実施形態において、仮想ゲスト120aはオペレーティング・システムである。仮想ゲスト・オペレーティング・システム120aは、ホスト・コンピューティング・システム105のハードウェアと直接通信していると仮定することができる。例えば、仮想ゲスト・オペレーティング・システム120aは、メモリ上の物理アドレスと、アプリケーションなどのクライアントからプロセッサが受取る論理アドレスとの間のマッピングを格納するページ・テーブルを保持することができる。仮想ゲスト・オペレーティング・システム120aは、そのページ・テーブル内の物理アドレスがメモリ上の実際の物理アドレスであること、及び、仮想ゲスト・オペレーティング・システム120aがホスト・コンピューティング・システム105のプロセッサ又は他のハードウェア・データ構造体と実際に通信することを仮定することができる。しかし、仮想ゲスト・オペレーティング・システム120aは、プロセッサの代わりに実際には仮想マシン・マネージャ110と通信することができ、想定された物理アドレスは仮想マシン・マネージャ110によって仮想アドレスとして扱われ、仮想マシン・マネージャ110は、各々の想定された物理アドレスをホスト・コンピューティング・システムのメモリの実際の物理アドレスにマッピングするための別の層のマッピングを行う。
図2は、仮想ゲスト・メモリを保護するためのシステム200の別の実施形態を示す略ブロック図である。具体的には、図2は、図1のホスト・コンピューティング・システム105、仮想マシン・マネージャ110、仮想マシン115、及び仮想ゲスト120の一実施形態を示す。仮想ゲスト120は、仮想ゲスト・メモリ装置205を含み、ホスト・コンピューティング・システム105は、ランタイム・メモリ210及びプロセッサ215を含む。
従来の仮想マシン・マネージャ110は、プロセッサ・リソース、I/Oリソース、及びホスト・コンピューティング・システム105上で動作する仮想ゲスト120のためのランタイム・メモリ210を管理し、これには各々の仮想ゲスト120に対するホスト・コンピューティング・システム105のランタイム・メモリ210の一部分のメモリ割当てが含まれる。従来の仮想マシン・マネージャ110は、従来の仮想ゲストのランタイム・メモリ210にアクセスすることができる。その結果として、従来の仮想マシン・マネージャ110上で実行される従来の仮想ゲストは、その仮想ゲストのためのランタイム・メモリ210への仮想マシン・マネージャ110のアクセスに対する制御権を有しない。さらに、ユーザは、従来の仮想マシン・マネージャ110がランタイム・メモリ210へのアクセスを試みないこと、又は、ランタイム・メモリ210にアクセスしようとする攻撃者を含まないことの保証を何ら有さない。従って、機密扱いのデータを伴うアプリケーションは、多くの場合、パブリック・クラウド・コンピューティング・システムのような検証できないホスト・コンピューティング・システム105上にはホストされない。このような機密扱いのアプリケーションをホストする機会は限られることになる。
従って、仮想ゲスト・メモリ装置205は、仮想ゲスト120のランタイム・メモリ210を、ホスト・コンピューティング・システム105/仮想マシン・マネージャ110から保護する。具体的には、仮想ゲスト・メモリ装置205は、仮想ゲスト120が、そのランタイム・メモリ210を仮想マシン・マネージャ110がアクセスできないように設定することによってランタイム・メモリ210を保護することを可能にする。一実施形態において、仮想ゲスト・メモリ装置205は、仮想ゲスト120がそのランタイム・メモリ210の一部分を仮想マシン・マネージャ110と共有することを可能にする。例えば、仮想マシン・マネージャ110は、そのランタイム・メモリ210の一部分を、ホスト又は他のゲストによる読み出し及び/又は書込みのためにアクセスできるように設定することができる。これにより、幾らかのランタイム・メモリ210はネットワーキング及び他のI/Oのために使用されることが可能になるが、大部分の仮想ゲスト・メモリは完全に非公開のままにされる。その結果、ユーザは、特定のホスト・コンピューティング・システム105上にホストされたアプリケーション及びデータが安全であることの保証を有することができるので、データのセキュリティが懸念される場合に利用可能なホストの数を大幅に増やすことができる。
さらに、仮想ゲスト・メモリ装置205は、仮想ゲスト120を、ホスト・コンピューティング・システム105又は仮想マシン・マネージャ110が危険にさらされる種々の状況から保護することができる。例えば、仮想ゲスト120が実行されているときに仮想マシン・マネージャ110が悪意のあるソフトウェア又はハッカーによって危険にさらされたとしても、仮想マシン・マネージャ110は仮想ゲスト・メモリにアクセスできないので、いかなるデータも危険にさらすことはあり得ない。
一実施形態において、仮想ゲスト・メモリ装置205は、従来の仮想マシン・マネージャ110と共に作業する。他の実施形態において、仮想マシン・マネージャ110は、メモリ・ダンプ・データ又は仮想ゲスト移送(例えば、仮想ゲスト120を別のコンピューティング・システムにコピーすること)といった特定の状況のための、仮想ゲスト・ランタイム・メモリ210への付加的なアクセスを要求するように構成することができる。例えば、仮想ゲスト120上でアプリケーションがクラッシュしたならば、仮想マシン・マネージャ110は、アプリケーション・クラッシュに関係したメモリ・ダンプ・データを取得するために付加的なアクセスを要求することができる。仮想ゲスト・メモリ装置205は、所定の基準を満たす付加的な要求を承諾することができ、特定の実施形態においては、アクセスが許可される前に機密扱いのデータを保護するアクションを取る。
一実施形態において、仮想ゲスト・メモリ装置205は、それがホスト・コンピューティング・システム105のプロセッサ215(例えば、プロセッサ215、及びトランザクション・ルックアサイド・バッファ「TLB」など、他のプロセッサ関連構造体)と直接通信することを検証する。図3を参照すると、一実施形態において、仮想ゲスト・メモリ装置205は、仮想ゲスト120が、そのランタイム・メモリ210のアクセス許可を、プロセッサ215を通じて直接に(305)、仮想マシン・マネージャとは無関係に、設定することを可能にする。同様に、一実施形態において、仮想ゲスト・メモリ装置205は、仮想ゲスト120が、プロセッサ215と直接通信することによって、仮想マシン・マネージャ110がアクセス310するためのランタイム・メモリ210の共有メモリ部分315を設定することを可能にする。
再び図2を参照すると、図示した実施形態において、仮想ゲスト・メモリ装置205は仮想ゲスト120内で実行され、仮想ゲスト120と通信し、及び/又は仮想ゲスト120の一部分である。例えば、仮想ゲスト・メモリ装置205は、仮想ゲスト120の実行の際に走らせる実行可能コードを含むことができる。幾つかの実施形態において、仮想ゲスト・メモリ装置205の一部分は、仮想マシン・マネージャ110の一部分とすることができる。例えば、仮想ゲスト120及び仮想マシン・マネージャ110の両方が、各々、仮想ゲスト・メモリ装置205の一部分ずつを含むことができる。一実施形態において、仮想ゲスト・メモリ装置205の一部分は、プロセッサ215の一部分であり、及び/又はプロセッサ215と通信し、及び/又はホスト・コンピューティング・システム105の関連するハードウェア構成要素である。例えば、プロセッサ215は、以下で説明するように、ランタイム・メモリ210を特定の仮想ゲスト120に関連付け、他のエンティティからの要求がランタイム・メモリ210にアクセスすることを防ぐために、仮想ゲスト・メモリ装置205の一部分(例えば、プロセッサ215と通信するファームウェア上)を含むことができる。
図4は、仮想ゲスト・メモリを保護するための装置205の一実施形態を示す略ブロック図である。装置205は、図2−図3の仮想ゲスト・メモリ装置205の一実施形態であり、初期化モジュール405、受信モジュール410、及び保護モジュール415のうちの1つ又は複数を含む。
初期化モジュール405は、一実施形態において、ホスト・コンピューティング・システム105上の仮想ゲスト120を初期化する。ホスト・コンピューティング・システム105は、図1−図3に関連して上述した仮想マシン・マネージャ110を含む。初期化モジュール405は、仮想ゲスト120内のコードを実行して仮想ゲスト120をブートすることによって仮想ゲスト120を初期化する。例えば、ホスト・コンピューティング・システム105は、初期化モジュール405に仮想ゲスト120を初期化するよう信号を送る仮想マシン・モジュール110をブートすることができる。
受信モジュール410は、一実施形態において、仮想ゲスト120に対するランタイム・メモリ210の割当てを受取る。ランタイム・メモリ210の割当ては、ホスト・コンピューティング・システム105のランタイム・メモリ210の一部分を含む。例えば、ひとたび仮想マシン・マネージャ110がブートされ、初期化モジュール405が仮想ゲスト120を初期化すると、受信モジュール410は、仮想ゲスト120が実行中に使用することができるランタイム・メモリ210の一部分を受取ることができる。一実施形態において、仮想マシン・マネージャ110が、仮想ゲスト120に対するランタイム・メモリ210の割当てを割り当てる。例えば、仮想マシン・マネージャ110は、仮想ゲスト120がランタイム・メモリ210のある特定の部分を割り当てられることになることを決定することができ、仮想マシン・マネージャ110は、その割当てを仮想ゲストが使用できるようにすることができる。受信モジュール410は、使用可能なランタイム・メモリ210の割当てを検出することができる。
保護モジュール415は、仮想ゲスト120によって、ランタイム・メモリ210の割当ての少なくとも一部分を仮想マシン・マネージャ110によるアクセスができないように設定する。例えば、一実施形態において、保護モジュール415は、仮想ゲスト120の一部分であり、及び/又は仮想ゲスト120と通信し、仮想ゲスト120が、そのランタイム・メモリ210の割当てに対するアクセス許可を設定することを可能にする。従って、一実施形態において、ランタイム・メモリ210の割当てに対するアクセスは、仮想ゲスト120によって決定される。一実施形態において、保護モジュール415が、仮想ゲスト120によって、ランタイム・メモリ210の割当ての少なくとも一部分を仮想マシン・マネージャ110によるアクセスができないように設定することは、さらに、仮想ゲスト120によって、仮想マシン・マネージャ110とは無関係にプロセッサ215と直接に通信して、仮想ゲスト120のランタイム・メモリ210の割当てに対するアクセス許可を設定することを含む。一実施形態において、保護モジュール415は、そのランタイム・メモリ210の割当てに対する種々のレベルのアクセス許可を設定することができる。例えば、保護モジュール415は、ある特定の仮想ゲスト120及び/又は仮想マシン・マネージャ110に対して、読み出しのみのアクセス、読み出し/書込みアクセスなどを設定することができる。
保護モジュール415は、一実施形態において、プロッセサ215と直接に通信して、そのメモリの割当てに対するアクセス許可を設定する。本明細書において用いる場合、プロセッサ215と通信することは、プロセッサ215及び/又はその他のランタイム・メモリ210の管理に関連するホスト・コンピューティング・システム105のハードウェア構成要素と通信するソフトウェア又はファームウェアと通信することを意味する。一実施形態において、保護モジュール415は、ランタイム・メモリ210の特定の部分に対するアクセス許可を設定する所定のコマンドをプロセッサ215に対して発行する。特定の部分は、メモリ内のデータ・ページのアドレス範囲によって指定することができるが、メモリの任意の適切な単位を使用することができる。当技術分野で知られているように、データ・ページは、仮想メモリのアドレス指定のために用いられる主メモリの単位である。データ・ページは、主メモリと2次記憶装置との間でアプリケーション・データをスワップするためにオペレーティング・システムによって行われるメモリ割当てのためのデータの最小単位を含むことができる。保護モジュール415は、保護されるデータ・ページの特定の範囲を指定するためのコマンドを呼び出すことができる。
一実施形態において、保護モジュール415は、さらに、仮想マシン・マネージャ110によるアクセスのための、仮想ゲスト120のランタイム・メモリ210の割当ての共有メモリ部分を確立する。保護モジュール415は、一実施形態において、プロセッサ215と直接に通信して共有メモリ部分を確立することもできる。例えば、保護モジュール415は、特定のデータ・ページ範囲を仮想マシン・マネージャ110及び/又は他の仮想ゲスト120のような特定のエンティティと共有するための所定のコマンドを呼び出すことができる。保護モジュール415は、仮想マシン・マネージャ110との対話のために必要とされる場合があるネットワーキング・データ又は他のI/Oデータといった機密扱いではないデータのための共有メモリ部分を指定することができる。
一実施形態において、以下で説明するように、プロセッサ215は、仮想ゲスト120によって設定される許可を、特定のインテル(商標)プロセッサの場合には仮想プロセス識別子(「VPID:Virtual Process Identifier」)又はランタイム・メモリ210のデータ・ページを一意に識別する類似の識別子を介して、特定の仮想ゲスト120に関連付けるように強制することができる。ページ・テーブル及び拡張ページ・テーブル(仮想化を最適化するために特定のプロセッサ実装によってサポートされる付加的なページ・テーブル)内のエントリは、そのエントリが属する仮想ゲスト120を識別するVPIDを含む。さらに、仮想マシン・マネージャ110もまた、典型的には、それ自体の一意のVPIDを有する。
図5は、仮想ゲスト・メモリを保護するための装置205の別の実施形態を示す詳細な略ブロック図である。図示した実施形態において、仮想ゲスト・メモリ装置205は、初期化モジュール405、受信モジュール410、及び保護モジュール415を含み、これらは図4に関連して説明したものと実質的に同様である。この実施形態において、仮想ゲスト・メモリ装置205は、検証モジュール505、要求送信モジュール510、要求受信モジュール515、判断モジュール520、アクセス・モジュール525、暗号化モジュール530、検出モジュール535、無効化(destroying)コマンド・モジュール540、無効化モジュール545、関連付けモジュール550、及びアクセス要求モジュール555のうちの1つ又は複数をさらに含み、これらを以下で説明する。
検証モジュール505は、一実施形態において、仮想ゲスト120が、仮想マシン・マネージャ110とは無関係に、ホスト・コンピューティング・システムのプロセッサ215と直接通信することを検証する。別の実施形態において、このことは、検証モジュール505が、ホスト・コンピューティング・システム105と通信する及び/又はホスト・コンピューティング・システム105内に常駐するトラステッド・プラットフォーム・モジュール(「TPM」)からのメトリクスを使用することを意味する。当技術分野において知られているように、TPMは、トラステッド・コンピューティング・グループ(「TCG」)の仕様に従ってコンピューティング・システムのためのシステム・セキュリティを実装する。TCGは、クライアント側のシステム・セキュリティを伴うトラステッド・コンピューティング仕様を保守する。当技術分野において知られているように、トラスティング・コンピューティングは、データ保護、プラットフォーム承認(plat form recognition)、認証などを規定する。ホスト・コンピューティング・システム105は、署名及び暗号鍵を格納するため、及び、コンピューティング・システムの完全性を計測するためにTPMを用いることができる。具体的にはTPMは、ホスト・コンピューティング・システム105内のソフトウェア及びハードウェアの完全性を計測して、コンピューティング機器内の特定のコンピューティング環境が検証モジュール505によって承認できるものとすることを許可にする。
TPMは、コンピューティング・システム内の完全性を計測して、コンピューティング・システム内の特定の動作環境102に一意の署名を与え、特定の動作環境102を承認できるものとすること許可する。システムの完全性を計測するために、TPMは、典型的には、ブートタイム又はプレブートタイムに、コンピューティング機器特性のメトリクスを取得する。これらのメトリクスは、BIOS、コンピューティング機器ファームウェア、及びカーネルなどの実行可能コードの計測値を含むことができる。これらのメトリクスは、ハードウェア構成要素の計測値も含むことができる。TPMは、これらのメトリクスのPCRダイジェスト値と呼ばれるインジケータを、PCRと呼ばれる特別なレジスタ内に格納することができる。
コンピューティング環境が、TPMの完全性計測値が承認された環境と整合しない(例えば、検証モジュール505が、これがホスト・コンピューティング・システムのプロセッサ215と直接通信していることを検証できない)ために承認されない場合、特定のソフトウェアが未承認環境内で動作することを制限することができ、又は特定のデータへのアクセスをブロックすることができる。
一実施形態において、TPMは、ハードウェア・チップ、集積回路、又は、ハードウェア若しくはハードウェア及びソフトウェアを含む他の物理的構成要素である。別の実施形態において、TPMは、コンピュータ可読記憶媒体上に格納された実行可能ソフトウェア・コードを含む。別の実施形態において、単一のハードウェアTPMを仮想化して、各々の仮想マシンに共通TPMへのアクセス権を与えることができる。この仮想化されたTPM(「vTPM」)は、当技術分野で知られているように、複数の仮想ゲスト120が単一のTPMハードウェア・チップからのメトリクスを使用することを可能にする。
一実施形態において、検証モジュール505は、vTPMのメトリクスを所定の署名に対して計測する(これは、仮想マシン・マネージャ110が直接ハードウェア通信をスプーフィングするのとは対照的に、検証モジュール505がプロセッサ215と直接通信していることを示す)。検証モジュール505が、メトリクスが所定の署名と一致すると判断すると、検証モジュール505は、仮想ゲスト120がプロセッサ215と直接通信していることを検証する。そうでない場合には、検証モジュール505は、直接通信を検証しない。別の実施形態において、検証モジュール505は、警告メッセージをトリガし、及び/又は仮想ゲスト120のさらなる初期化を中止する。
要求送信モジュール510は、一実施形態において、仮想マシン・マネージャ110から仮想ゲスト120(例えば、下記の要求受信モジュール515)に、アクセスできないランタイム・メモリ210の少なくとも一部分へのアクセスを求める要求を送る。別の実施形態において、要求送信モジュール510は、仮想マシン・マネージャ110の一部分であるか又は仮想マシン・マネージャ110と通信する。要求送信モジュール510は、特定の仮想ゲスト120上でのアプリケーション・クラッシュの検出といった1つ又は複数の所定のイベント、及び/又は、記憶装置及び/又はホスト・コンピューティング・システム105内の1つの位置から別の位置への保留状態の仮想ゲスト移送、等に応答して、付加的なアクセスの必要性を判断することができる。
要求受信モジュール515は、一実施形態において、仮想マシン・マネージャ110から、アクセスできないランタイム・メモリ210の少なくとも一部分へのアクセスを求める要求を受取る。上述のように、特定の実施形態において、仮想マシン・マネージャ110は、メモリ・ダンプ・データに関しての(例えば、アプリケーション・クラッシュに応答して)仮想ゲスト・メモリに対する付加的なアクセス、及び/又は、仮想ゲスト移送に関する要求を要求することができる。要求受信モジュール515は、仮想マシン・マネージャ110がそれを通じて付加的なアクセスを要求することができるインタフェースを提供することができる。別の実施形態において、要求受信モジュール515は、所望のデータのインジケータ、及び/又は、要求の理由のインジケータ、等を受入れることもできる。別の実施形態において、要求受信モジュール515は、仮想マシン・マネージャ110と通信し、及び/又は仮想マシン・マネージャ110の一部分であり、要求送信モジュール510からコマンドを受取る。
判断モジュール520は、一実施形態において、仮想マシン・マネージャ110からの付加的なアクセスを求める要求が1つ又は複数の所定の基準を満たすかどうか判断する。別の実施形態において、1つ又は複数の所定の基準は、メモリ・ダンプ・データに関するする要求及び/又は仮想ゲスト移送に関する要求を含む。別の実施形態において、判断モジュール520は、要求が所定の基準を満たすかどうかを、要求受信モジュール515が受け取った、アクセスが所望されるデータ及び/又は要求の理由を示す識別子に基づいて判断する。
アクセス・モジュール525は、一実施形態において、アクセスできないランタイム・メモリ210の少なくとも一部分へのアクセスを仮想マシン・マネージャ110に対して承諾するか又は拒否する。具体的には、アクセス・モジュール525は、要求が1つ又は複数の所定の基準を満たすと判断モジュール520が判断したことに応答してアクセスを承諾することができ、要求が所定の基準を満たさないと判断モジュール520が判断したことに応答してアクセスを拒否することができる。
暗号化モジュール530は、一実施形態において、アクセス・モジュール525がアクセスできないランタイム・メモリ210の少なくとも一部分へのアクセスを仮想マシン・マネージャ110に対して承諾する前に、アクセスできないランタイム・メモリ210の特定のデータを暗号化する。暗号化モジュール530は、機密扱いのデータの完全性を保持するために、アクセス・モジュール525がアクセスを承諾する前に機密扱いのデータを暗号化することができる。別の実施形態において、暗号化モジュール530が暗号化するデータのアドレス範囲及び/又は識別性は、仮想ゲスト120及び/又はユーザによって予め決定される。例えば、仮想マシン・マネージャ110は、特定のアプリケーションに関連付けられるデータを暗号化するように指定することができる。仮想マシン・マネージャ110は、第1のホスト・コンピューティング・システム105上のストレージが所定の閾値に達したことに応答して、第2のホスト・コンピューティング・システム105への仮想ゲストの移送を行うための付加的なアクセスを要求することができる。暗号化モジュール530は、特定のアプリケーションに付随するデータを暗号化することができ、アクセス・モジュール525は、仮想マシン・マネージャ110に対してアクセスを承諾することができる。仮想ゲストの移送が完了した後、暗号化モジュール530は、対象データを復号することができる。暗号化モジュール530は、任意の適切な暗号化アルゴリズムを用いて、割当てられたメモリ部分のデータを暗号化することができる。
検出モジュール535は、一実施形態において、仮想ゲスト120が応答しない(例えば、仮想ゲスト120がクラッシュしたか又はそれ以外の理由で機能しない)ことを検出する。別の実施形態において、検出モジュール535は、仮想マシン・マネージャ110と通信し、及び/又は仮想マシン・マネージャ110の一部分である。検出モジュール535は、仮想ゲスト120が所定の時間内に応答しないことに応じて、仮想ゲスト120が応答しないことを検出することができる。仮想マシン・マネージャ110は、ランタイム・メモリ210の割当てに対するアクセス権を有しないので、仮想マシン・マネージャ110は、仮想ゲスト120に対するランタイム・メモリ210を直接に割当解除することができない。
従って、無効化コマンド・モジュール540は、一実施形態において、仮想ゲスト120に対するランタイム・メモリ210の割当てを、仮想マシン・マネージャ110がランタイム・メモリ210の割当てにアクセスすることなく無効化するための所定のコマンドを呼び出す。検出モジュール535と同様に、無効化コマンド・モジュール540は、仮想マシン・マネージャ110と通信し、及び/又は仮想マシン・マネージャ110の一部分とすることができる。無効化コマンド・モジュール540は、特定の仮想ゲスト120に関連付けられたランタイム・メモリ210を無効化するために、ホスト・コンピューティング・システム105の所定のコマンドを呼び出すことができる。ホスト・コンピューティング・システム105は、無効化コマンド・モジュール540が所定のコマンドを呼び出したことに応答して、ランタイム・メモリ210の割当てを無効化する。別の実施形態において、無効化コマンド・モジュール540は、無効化するためのコマンドを、そのランタイム・メモリ210が無効化される仮想ゲスト120の識別子と共に発行する。別の実施形態において、識別子は、上記のような、仮想ゲスト120のVPIDである。例えば、無効化コマンドの1つの非限定的な実施形態は、「VPID_DESTROY(vpid)」とすることができ、ホスト・コンピューティング・システム105に対して、提出されたパラメータのVPIDを有する仮想ゲスト120に関連付けられたランタイム・メモリ210を無効化する(例えば、割当解除する)ように指示する。
無効化モジュール545は、一実施形態において、仮想マシン・マネージャ110から、仮想ゲスト120に対するランタイム・メモリ210の割当てを無効化するための所定のコマンドに対する呼び出しを受取る。無効化モジュール545は、別の実施形態において、所定のコマンドに対する呼び出しを受取ることに応答して、ランタイム・メモリ210の割当てを無効化する。別の実施形態において、無効化モジュール545は、ホスト・コンピューティング・システム105のプロセッサ215などのハードウェアと通信しており、仮想ゲスト120に関連付けられたランタイム・メモリ210を無効化する(割当解除する)ことができる。上述のように、所定のコマンドは、そのランタイム・メモリ210が無効化される仮想ゲスト120のVPIDを指定するパラメータを含むことができる。無効化モジュール545は、所定のコマンドと共に渡されたVPIDを有するデータ・ページを無効化し、VPID実行コンテキストを無効化し、この特定のVPIDに関するページ・テーブル及び拡張ページ・テーブルのエントリを消去することができる。
関連付けモジュール550は、一実施形態において、1つ又は複数の仮想ゲスト識別子を、ランタイム・メモリ210の割当ての特定のランタイム・メモリ210ページに関連付ける。別の実施形態において、少なくとも1つの仮想ゲスト識別子が、仮想ゲストを識別する。別の実施形態において、関連付けモジュール550は、ホスト・コンピューティング・システム105のプロセッサ215と通信する(例えば、プロセッサ215に付随するファームウェア内で)。
仮想ゲスト識別子は、上記のようなVPIDを含むことができ、これが、特定の仮想ゲスト120に関連付けられたランタイム・メモリ210のデータ・ページを一意に識別する。関連付けモジュール550は、上記の保護モジュール415から所定のコマンドを受取ることができ、1つ又は複数の仮想ゲスト識別子をランタイム・メモリ210の割当ての特定のランタイム・メモリ210ページに関連付けることができる。例えば、関連付けモジュール550は、保護モジュール415によって要求されるデータ・ページに関する仮想ゲストのVPIDを設定することによって、仮想ゲスト識別子を仮想ゲスト120に対するメモリの割当ての1つ又は複数のページに関連づけることができる。一実施形態において、関連付けモジュール550はまた、仮想マシン・マネージャ110のVPIDを、保護モジュール415が仮想マシン・マネージャ110と共有するように要求したデータ・ページに関連づける。従って、特定のデータ・ページは、仮想ゲスト120を識別するとともに、アクセス権を有するものとして仮想マシン・マネージャ110を識別する、VPIDを含むことができる。
アクセス要求モジュール555は、一実施形態において、仮想ゲスト120のランタイム・データ・ページにプロセッサ・レベルのアクセス保護を提供する。別の実施形態において、アクセス要求モジュール555は、リクエスタからの特定のランタイム・メモリ210データ・ページに対するアクセス要求を、リクエスタがその特定のランタイム・メモリ210ページに関する対応する仮想ゲスト識別子を有していることに応答して承諾する。同様に、アクセス要求モジュール555は、リクエスタからの特定のランタイム・メモリ210ページに対するアクセス要求を、リクエスタがその特定のランタイム・メモリ210ページに関する対応する仮想ゲスト識別子を有していないことに応答して拒否する。別の実施形態において、アクセス要求モジュール555は、リクエスタのVPIDを特定のデータ・ページに関する1つ又は複数のVPIDに対して照合し、リクエスタのVPIDが特定のデータ・ページに関連付けられている場合には、リクエスタに対してアクセスを承諾する。さらに別の実施形態において、アクセス要求モジュール555は、アクセス要求モジュール555がそれに対して照合するためのビットマップを使用して、特定のVPID(例えば、リクエスタの)に対して承諾するアクセスのレベルを決定する。
図6は、仮想ゲスト・メモリを保護する方法600の一実施形態を示す略フローチャート図である。方法600が開始すると、初期化モジュール405は、ハイパーバイザなどの仮想マシン・マネージャ110を含むホスト・コンピューティング・システム105上の仮想ゲスト120を初期化する(605)。仮想マシン・マネージャ110は、仮想ゲスト120の動作を管理し、仮想ゲスト120は、仮想マシン・マネージャ110によって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む。
受信モジュール410は、仮想ゲスト120に対するランタイム・メモリ210の割当てを受取る(610)。ランタイム・メモリ210の割当ては、ホスト・コンピューティング・システム105のランタイム・メモリ210の一部分を含む。次に保護モジュール415は、仮想ゲスト120によって、ランタイム・メモリ210の割当ての少なくとも一部分を仮想マシン・マネージャ110によるアクセスができないように設定する(615)。次いで、方法600は終了する。
図7は、仮想ゲスト・メモリを保護する方法700の別の実施形態を示す略フローチャート図である。方法700が開始すると、初期化モジュール405は、ハイパーバイザなどの仮想マシン・マネージャ110を含むホスト・コンピューティング・システム105上の仮想ゲスト120を初期化する(705)。検証モジュール505は、仮想ゲスト120が仮想マシン・マネージャ110とは無関係にホスト・コンピューティング・システム105のプロセッサ215と直接通信していることを検証する(710)。例えば、検証モジュール505は、承認されたコンピューティング環境を、TPMを用いて検証することができる。検証モジュール505が、仮想ゲスト120がプロセッサ215と直接通信していないと判断した場合(710)、方法700は終了する。検証モジュール505が、仮想ゲスト120がプロセッサ215と直接通信していると判断した場合(710)、受信モジュール410は、仮想ゲスト120に対するランタイム・メモリ210の割当てを受取る(715)。
次に、保護モジュール415は、仮想ゲスト120によって、ランタイム・メモリ210の割当ての少なくとも一部分を仮想マシン・マネージャ110によるアクセスができないように設定する(720)。一実施形態において、仮想ゲスト120は、ホスト・コンピューティング・システム105のプロセッサ215と直接に通信して所定のコマンドを呼び出すことによって、ランタイム・メモリ210の割当ての一部分をアクセスできないように設定する。関連付けモジュール550は、仮想ゲスト120が所定のコマンドを呼び出したことに応答して、ランタイム・メモリ210のデータ・ページに仮想ゲスト120のVPIDを関連づけることができる。次に、保護モジュール415は、仮想マシン・マネージャ110によるアクセスのための共有メモリ部分315を確立(725)する。共有メモリ部分315は、仮想ゲスト120のランタイム・メモリ210の割当ての一部分を含み、保護モジュール415は、同様にコマンドをプロセッサ215に対して直接に呼び出すことにより、共有メモリ部分315を確立することができる。
受信モジュール410が、仮想マシン・マネージャ110から、アクセスできないランタイム・メモリ210にアクセスすることを求める要求を受取らない場合(730)、方法700は終了する。受信モジュール410が、仮想マシン・マネージャ110から、アクセスできないランタイム・メモリ210の少なくとも一部分にアクセスすることを求める要求を受け取った場合(730)、判断モジュール520は、その要求が1つ又は複数の所定の基準を満たすかどうか判断する(735)。判断モジュール520が、要求が1つ又は複数の所定の基準を満たすと判断した場合(735)、アクセス・モジュール525は、仮想マシン・マネージャ110に対して、アクセスできないランタイム・メモリ210の一部分へのアクセスを承諾する(740)。満たさないと判断した場合には、アクセス・モジュール525は、アクセスできないランタイム・メモリ210の一部分に対するアクセスを拒否する(745)。次いで、方法700は終了する。
図8は、仮想ゲスト・メモリ装置205を配備する方法800の一実施形態を示す略フローチャート図である。仮想ゲスト・メモリ装置205を具体化するプロセス・ソフトウェアは、CD、DVDなどの記憶媒体を装填することにより、クライアント、サーバ及びプロキシ・コンピュータに手動で直接ロードすることができることが理解されるが、プロセス・ソフトウェアは、該プロセス・ソフトウェアを中央サーバ又は中央サーバ群に送信することによってコンピュータ・システムに自動的又は半自動的に配備することもできる。次にプロセス・ソフトウェアは、該プロセス・ソフトウェアを実行することになるクライアント・コンピュータ内にダウンロードされる。あるいは、プロセス・ソフトウェアは、電子メールを介してクライアントシステムに直接送信される。プロセス・ソフトウェアは次に、プロセス・ソフトウェアを切り離してディレクトリに入れるプログラムを実行する電子メール上のボタンにより、切り離されてディレクトリに入れられ、又はディレクトリ内にロードされる。別の選択肢は、プロセス・ソフトウェアを、クライアント・コンピュータのハード・ディスク上のディレクトリに直接送信することである。プロキシ・サーバが存在する場合、プロセスは、プロキシ・サーバ・コードを選択し、プロキシ・サーバ・コードを配置するコンピュータを決定し、プロキシ・サーバ・コードを伝送し、次いでプロキシ・サーバ・コードをプロキシ・コンピュータ上にインストールすることになる。プロセス・ソフトウェアをプロキシ・サーバに伝送することができ、次いでこれをプロキシ・サーバ上に格納することができる。
プロセス・ソフトウェアを配備する方法800が開始すると、そのプロセス・ソフトウェアが実行されると1つ又は複数のサーバ上に常駐することになるなんらかのプログラムが存在するかどうかの判断がなされる(802)。存在する場合、図9を参照すると、実行プログラム(executables)を収容することになるサーバが識別される(836)。1つ又は複数のサーバのためのプロセス・ソフトウェアが、FTP又は他のなんらかのプロトコルを介して、又は共有ファイル・システムの使用を通じてコピーすることにより、サーバの記憶装置に直接に伝送される。プロセス・ソフトウェアは次に、サーバにインストールされる(840)。
次に、再び図8を参照すると、プロセス・ソフトウェアを、ユーザが1つ又は複数のサーバ上のプロセス・ソフトウェアにアクセスすることによって配備すべきか否かの判断がなされる(804)。ユーザがサーバ上のプロセス・ソフトウェアにアクセスすることになる場合、そのプロセス・ソフトウェアを格納することになるサーバ・アドレスが識別される(806)。そのプロセス・ソフトウェアを格納するためにプロキシ・サーバを構築すべきかどうかの判断がなされる(808)。プロキシ・サーバは、ウェブ・ブラウザなどのクライアント・アプリケーションと実サーバとの間に位置するサーバである。プロキシ・サーバは、実サーバへの全ての要求を傍受して、自身がその要求を満たすことができるかどうかを調べる。できなければ、プロキシ・サーバは要求を実サーバに転送する。プロキシ・サーバの2つの主要な利点は、性能を向上させること、及び要求をフィルターにかけることである。プロキシ・サーバが必要であれば、プロキシ・サーバがインストールされる(810)。プロセス・ソフトウェアは、FTPなどのプロトコルを介して、又はファイル共有によりソース・ファイルからサーバ・ファイルへと直接コピーされて、サーバに送られる(812)。別の実施形態は、プロセス・ソフトウェアを含むサーバにトランザクションを送信し、サーバにトランザクションを処理させ、次にプロセス・ソフトウェアを受取ってサーバのファイル・システムにコピーする。ひとたびプロセス・ソフトウェアがサーバに格納されると、ユーザは次に自身のクライアント・コンピュータを介してサーバ上のプロセス・ソフトウェアにアクセス(814)し、自身のクライアント・コンピュータのファイル・システムにコピーする。別の実施形態は、サーバがプロセス・ソフトウェアを各クライアントに自動的にコピーするようにさせ、次いでプロセス・ソフトウェアのインストール・プログラムを各クライアント・コンピュータにおいて実行することである。ユーザは、プロセス・ソフトウェアを自身のクライアント・コンピュータ上にインストールするプログラムを実行し(816)、次いで方法800は終了する。
ステップ818において、プロセス・ソフトウェアを、電子メールを介してプロセス・ソフトウェアをユーザに送信することによって配備すべきか否かの判断がなされる。プロセス・ソフトウェアが配備されることになるユーザの集団が、ユーザのクライアント・コンピュータのアドレスと共に識別される(820)。プロセス・ソフトウェアは、電子メールを介して各々のユーザのクライアント・コンピュータに送信される。次いでユーザがその電子メールを受取り(824)、プロセス・ソフトウェアを電子メールから切り離して自身のクライアント・コンピュータ上のディレクトリに入れる。ユーザは、プロセス・ソフトウェアを自身のクライアント・コンピュータ上にインストールするプログラムを実行し(816)、次いで方法800は終了する。
最後に、プロセス・ソフトウェアを、ユーザのクライアント・コンピュータ上のユーザのディレクトリに直接送信するか否かの判断がなされる(828)。送信する場合には、ユーザ・ディレクトリが識別される(830)。プロセス・ソフトウェアは、ユーザのクライアント・コンピュータのディレクトリに直接伝送される(832)。このことは、ファイル・システム・ディレクトリを共有化し、次いで送信側のファイル・システムから受信側ユーザのファイル・システムにコピーすること、又は代替的にファイル転送プロトコル(FTP)などの転送プロトコルを用いることなど、幾つかの方法で行うことができるが、それらに限定されない。ユーザは、プロセス・ソフトウェアのインストールに備えて自身のクライアント・ファイル・システム上のディレクトリにアクセスする(834)。ユーザは、プロセス・ソフトウェアを自身のクライアント・コンピュータ上にインストールするプログラムを実行し(816)、次いで方法800は終了する。
実施形態は、他の特定の形態で実施することができる。説明した実施形態は、あらゆる点で単に例証的なものと見なすべきであり、限定的なものと見なすべきではない。従って、本発明の範囲は、前述の説明によるのではなく添付の特許請求の範囲によって示される。特許請求の範囲の均等の意味及び範囲に入る全ての変更は、その範囲内に包含されるものとする。
本発明は、仮想化及び仮想ゲストに適用することができ、より具体的には仮想ゲストのメモリを保護することに適用することができる。
100:システム
105:ホスト・コンピューティング・システム
110:仮想マシン・マネージャ
115a、115b:仮想マシン
120a、120b:仮想ゲスト
130a、130b、130c:クライアント
125:ネットワーク

Claims (25)

  1. ホスト・コンピューティング・システム上の仮想ゲストを初期化することであって、前記ホスト・コンピューティング・システムは、仮想マシン・マネージャを含み、前記仮想マシン・マネージャは、前記仮想ゲストの動作を管理し、前記仮想ゲストは、前記仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む、初期化することと、
    前記仮想ゲストに対するランタイム・メモリの割当てを受取ることであって、前記ランタイム・メモリの割当てが、前記ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む、受け取ることと、
    前記仮想ゲストによって、前記ランタイム・メモリの割当ての少なくとも一部分を前記仮想マシン・マネージャによるアクセスができないように設定することと、
    を含む方法。
  2. 前記仮想マシン・マネージャによるアクセスのための共有メモリ部分を確立することをさらに含み、前記共有メモリ部分は、前記仮想ゲストの前記ランタイム・メモリの割当ての一部分を含む、請求項1に記載の方法。
  3. 前記ランタイム・メモリの割当てに対するアクセスが、前記仮想ゲストによって決定される、請求項2に記載の方法。
  4. 前記仮想ゲストが、前記仮想マシン・マネージャとは無関係に、前記ホスト・コンピューティング・システムのプロセッサと直接通信していることを検証することをさらに含む、請求項1に記載の方法。
  5. 前記仮想ゲストが前記ホスト・コンピューティング・システムのプロセッサと直接通信していることを検証することは、前記ホスト・コンピューティング・システムと通信するトラステッド・プラットフォーム・モジュール(「TPM」)からのメトリクスに基づいて、前記仮想ゲストが前記プロセッサと直接通信していることを検証することをさらに含む、請求項4に記載の方法。
  6. 前記仮想ゲストによって、前記ランタイム・メモリの割当ての少なくとも一部分を前記仮想マシン・マネージャによるアクセスができないように設定することは、前記仮想ゲストによって、前記仮想マシン・マネージャとは無関係に、前記プロセッサと直接に通信して、前記仮想ゲストの前記ランタイム・メモリの割当てのアクセス許可を設定することをさらに含む、請求項1に記載の方法。
  7. 前記仮想ゲストによって、前記ランタイム・メモリの割当ての少なくとも一部分を前記仮想マシン・マネージャによるアクセスができないように設定することは、1つ又は複数の仮想ゲスト識別子を、前記ランタイム・メモリの割当ての特定のランタイム・メモリ・ページに関連付けることをさらに含み、前記前記仮想ゲスト識別子の少なくとも1つは、前記仮想ゲストを識別するものであり、前記プロセッサは、リクエスタからの前記特定のランタイム・メモリ・ページへのアクセス要求を、前記リクエスタが前記特定のランタイム・メモリ・ページに関する対応する仮想ゲスト識別子を有しないことに応答して拒否する、請求項1に記載の方法。
  8. 前記仮想マシン・マネージャから前記仮想ゲストに、前記アクセスできないランタイム・メモリの少なくとも一部分にアクセスする要求を送ることをさらに含む、請求項1に記載の方法。
  9. 前記仮想マシン・マネージャから、前記アクセスできないランタイム・メモリの少なくとも一部分にアクセスする要求を受取ることと、
    前記要求が1つ又は複数の所定の基準を満たすことを判断することと、
    前記要求が前記1つ又は複数の所定の基準を満たすとの判断に応答して、前記仮想マシン・マネージャに対して、前記アクセスできないランタイム・メモリの少なくとも一部分へのアクセスを承諾することと、
    をさらに含む。請求項1に記載の方法。
  10. 前記1つ又は複数の所定の基準は、メモリ・ダンプ・データに関する要求及び仮想ゲスト移動に関する要求の1つ又は複数を含む、請求項9に記載の方法。
  11. 前記仮想マシン・マネージャに対して前記アクセスできないランタイム・メモリの少なくとも一部分のアクセスを承諾する前に、前記アクセスできないランタイム・メモリの特定のデータを暗号化することをさらに含む、請求項9に記載の方法。
  12. 前記仮想ゲストに対する前記ランタイム・メモリの割当てを、前記仮想マシン・マネージャが前記ランタイム・メモリの割当てにアクセスすることなく無効化するための所定のコマンドを呼び出すことをさらに含み、前記ホスト・コンピューティング・システムは、前記所定のコマンドの呼び出しに応答して前記ランタイム・メモリの割当てを無効化する、請求項1に記載の方法。
  13. 前記仮想ゲストが応答しないことを検出することをさらに含み、前記所定のコマンドを呼び出すことは、前記仮想ゲストが応答しないことの検出に応じて前記所定のコマンドを呼び出すことをさらに含む、請求項12に記載の方法。
  14. ホスト・コンピューティング・システム上の仮想ゲストを初期化する初期化モジュールであって、前記ホスト・コンピューティング・システムは、仮想マシン・マネージャを含み、前記仮想マシン・マネージャは、前記仮想ゲストの動作を管理し、前記仮想ゲストは、前記仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む、初期化モジュールと、
    前記仮想ゲストに対するランタイム・メモリの割当てを受取る受信モジュールであって、前記ランタイム・メモリの割当てが、前記ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む、受信モジュールと、
    前記仮想ゲストによって、前記ランタイム・メモリの割当ての少なくとも一部分を前記仮想マシン・マネージャによるアクセスができないように設定する保護モジュールと、
    を含む装置。
  15. 前記保護モジュールはさらに、前記仮想マシン・マネージャによるアクセスのための共有メモリ部分を確立し、前記共有メモリ部分は、前記仮想ゲストの前記ランタイム・メモリの割当ての一部分を含む、請求項14に記載の装置。
  16. 前記仮想ゲストが、前記仮想マシン・マネージャとは無関係に、前記ホスト・コンピューティング・システムのプロセッサと直接通信していることを検証する検証モジュールをさらに含む、請求項14に記載の装置。
  17. 前記仮想マシン・マネージャから、前記アクセスできないランタイム・メモリの少なくとも一部分にアクセスする要求を受取る要求受信モジュールと、
    前記要求が1つ又は複数の所定の基準をみたすことを判断する判断モジュールと、
    前記要求が前記1つ又は複数の所定の基準をみたすとの判断に応答して、前記仮想マシン・マネージャに対して、前記アクセスできないランタイム・メモリの少なくとも一部分へのアクセスを承諾するアクセス・モジュールと、
    をさらに含む、請求項14に記載の装置。
  18. 前記仮想ゲストに対する前記ランタイム・メモリの割当てを、前記仮想マシン・マネージャが前記ランタイム・メモリの割当てにアクセスすることなく無効化するための所定のコマンドを呼び出す無効化コマンド・モジュールをさらに含み、前記ホスト・コンピューティング・システムは、前記無効化コマンド・モジュールが前記所定のコマンドを呼び出したことに応答して前記ランタイム・メモリの割当てを無効化する、
    請求項17に記載の装置。
  19. ホスト・コンピューティング・システムの仮想動作プラットフォームを提供する仮想マシン・マネージャと、
    プロセッサと、
    前記プロセッサによる実行のためのモジュールを格納するメモリと、
    を含むシステムであって、
    前記メモリが、
    前記ホスト・コンピューティング・システム上の仮想ゲストを初期化する初期化モジュールであって、前記ホスト・コンピューティング・システムは、前記仮想マシン・マネージャを含み、前記仮想マシン・マネージャは、前記仮想ゲストの動作を管理し、前記仮想ゲストは、前記仮想マシン・マネージャによって提供される前記仮想動作プラットフォーム内で実行される別個の動作環境を含む、初期化モジュールと、
    前記仮想ゲストに対するランタイム・メモリの割当てを受取る受信モジュールであって、前記ランタイム・メモリの割当てが、前記ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む、受信モジュールと、
    前記仮想ゲストによって、前記ランタイム・メモリの割当ての少なくとも一部分を前記仮想マシン・マネージャによるアクセスができないように設定する保護モジュールと、
    を含む、
    システム。
  20. 前記仮想ゲストが応答しないことを検出する検出モジュールと、
    前記検出モジュールが、前記仮想ゲストが応答しないことを検出したことに応答して、前記仮想ゲストに対する前記ランタイム・メモリの割当てを、前記仮想マシン・マネージャが前記ランタイム・メモリの割当てにアクセスすることなく、無効化するための所定のコマンドを呼び出す無効化コマンド・モジュールと、
    をさらに含み、前記ホスト・コンピューティング・システムは、前記無効化モジュールが前記所定のコマンドを呼び出したことに応答して、前記ランタイム・メモリの割当てを無効化する、請求項19に記載のシステム。
  21. 1つ又は複数の仮想ゲスト識別子を、前記ランタイム・メモリの割当ての特定のランタイム・メモリ・ページに関連づける関連付けモジュールであって、少なくとも1つの前記仮想ゲスト識別子が前記仮想ゲストを識別する、関連付けモジュールと、
    リクエスタからの前記特定のランタイム・メモリ・ページへのアクセス要求を、前記リクエスタが前記特定のランタイム・メモリ・ページに関する対応する仮想ゲスト識別子を有することに応答して承諾するアクセス要求モジュールと、
    をさらに含む、請求項19に記載のシステム。
  22. 前記仮想マシン・マネージャから、前記仮想ゲストに対する前記ランタイム・メモリの割当てを無効化するための所定のコマンドに対する呼び出しを受取り、前記所定のコマンドに対する呼び出しを受け取ったことに応答して前記ランタイム・メモリの割当てを無効化する無効化モジュールをさらに含む、請求項19に記載のシステム。
  23. ホスト・コンピューティング・システム上の仮想ゲストを初期化することであって、前記ホスト・コンピューティング・システムは、仮想マシン・マネージャを含み、前記仮想マシン・マネージャは、前記仮想ゲストの動作を管理し、前記仮想ゲストは、前記仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む、初期化すること、
    前記仮想ゲストに対するランタイム・メモリの割当てを受取ることであって、前記ランタイム・メモリの割当てが、前記ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む、受け取ること、及び
    前記仮想ゲストによって、前記ランタイム・メモリの割当ての少なくとも一部分を前記仮想マシン・マネージャによるアクセスができないように設定すること
    を前記ホスト・コンピューティング・システムに実行させるためのコンピュータ可読プログラム・コードを含む、コンピュータ・プログラム。
  24. 前記仮想マシン・マネージャによるアクセスのための共有メモリ部分を確立することのためのコンピュータ可読プログラム・コードをさらに含み、前記共有メモリ部分は、前記仮想ゲストの前記ランタイム・メモリの割当ての一部分を含む、請求項23に記載のコンピュータ・プログラム。
  25. 仮想ゲスト・セキュリティ装置をホスト・コンピューティング・システム上に配備することを含む方法であって、前記仮想ゲスト・セキュリティ装置は、
    ホスト・コンピューティング・システム上の仮想ゲストを初期化することであって、前記ホスト・コンピューティング・システムは、仮想マシン・マネージャを含み、前記仮想マシン・マネージャは、前記仮想ゲストの動作を管理し、前記仮想ゲストは、前記仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む、初期化すること、
    前記仮想ゲストに対するランタイム・メモリの割当てを受取ることであって、前記ランタイム・メモリの割当てが、前記ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む、受け取ること、及び
    前記仮想ゲストによって、前記ランタイム・メモリの割当ての少なくとも一部分を前記仮想マシン・マネージャによるアクセスができないように設定すること
    が可能である、方法。
JP2014517066A 2011-10-13 2012-10-11 仮想ゲストのメモリ保護の方法、システムおよびコンピュータプログラム Active JP5736090B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13/272,780 2011-10-13
US13/272,780 US8782351B2 (en) 2011-10-13 2011-10-13 Protecting memory of a virtual guest
US13/482,782 2012-05-29
US13/482,782 US8788763B2 (en) 2011-10-13 2012-05-29 Protecting memory of a virtual guest
PCT/JP2012/006528 WO2013054528A1 (en) 2011-10-13 2012-10-11 Protecting memory of a virtual guest

Publications (2)

Publication Number Publication Date
JP2014532201A true JP2014532201A (ja) 2014-12-04
JP5736090B2 JP5736090B2 (ja) 2015-06-17

Family

ID=48081595

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014517066A Active JP5736090B2 (ja) 2011-10-13 2012-10-11 仮想ゲストのメモリ保護の方法、システムおよびコンピュータプログラム

Country Status (6)

Country Link
US (1) US8788763B2 (ja)
JP (1) JP5736090B2 (ja)
CN (1) CN103858113B (ja)
DE (1) DE112012003988B4 (ja)
GB (1) GB2508553B (ja)
WO (1) WO2013054528A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017042860A1 (ja) * 2015-09-07 2017-03-16 三菱電機株式会社 実行制御装置及び実行制御方法及び実行制御プログラム
CN107690628A (zh) * 2015-06-16 2018-02-13 Arm 有限公司 具有所有权表的数据处理装置和方法
CN107690621A (zh) * 2015-06-16 2018-02-13 Arm 有限公司 受保护的异常处置
KR20180017093A (ko) * 2015-06-16 2018-02-20 에이알엠 리미티드 공유 페이지
US10936504B2 (en) 2015-06-16 2021-03-02 Arm Limited Apparatus and method for address translation and control of whether an access request is rejected based on an ownership table indicating an owner process for a block of physical addresses
JP7386882B2 (ja) 2019-03-08 2023-11-27 インターナショナル・ビジネス・マシーンズ・コーポレーション セキュア仮想マシン環境におけるゲスト命令の透過的解釈

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304945B2 (en) * 2013-01-24 2016-04-05 Raytheon Company Synchronizing parallel applications in an asymmetric multi-processing system
US8793628B1 (en) * 2013-03-11 2014-07-29 Cadence Design Systems, Inc. Method and apparatus of maintaining coherency in the memory subsystem of an electronic system modeled in dual abstractions
US9563569B2 (en) 2014-01-28 2017-02-07 Red Hat Israel, Ltd. Memory transformation in virtual machine live migration
US9785378B2 (en) 2014-01-28 2017-10-10 Red Hat Israel, Ltd. Tracking transformed memory pages in virtual machine chain migration
US9792448B2 (en) 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
CN103995732B (zh) * 2014-05-26 2017-02-22 华为技术有限公司 一种虚拟可信平台模块功能实现方法和管理设备
GB2539436B (en) * 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
US20160371106A1 (en) * 2015-06-18 2016-12-22 Microsoft Technology Licensing, Llc Virtual machine data protected from host
KR102584506B1 (ko) * 2015-06-24 2023-10-04 어드밴스드 마이크로 디바이시즈, 인코포레이티드 가상 기계들을 위한 상태 정보 보호
US10075296B2 (en) * 2015-07-02 2018-09-11 Intel Corporation Loading and virtualizing cryptographic keys
US10102151B2 (en) 2015-11-06 2018-10-16 International Business Machines Corporation Protecting a memory from unauthorized access
US9841987B2 (en) 2015-12-17 2017-12-12 International Business Machines Corporation Transparent secure interception handling
US10019279B2 (en) 2015-12-17 2018-07-10 International Business Machines Corporation Transparent secure interception handling
CN106997315B (zh) * 2016-01-25 2021-01-26 阿里巴巴集团控股有限公司 一种用于虚拟机的内存转储的方法和装置
US10963280B2 (en) * 2016-02-03 2021-03-30 Advanced Micro Devices, Inc. Hypervisor post-write notification of control and debug register updates
CN107203411B (zh) * 2017-04-18 2020-02-28 中国科学院计算技术研究所 一种基于远程ssd的虚拟机内存扩展方法及系统
CN109144403B (zh) * 2017-06-19 2021-10-01 阿里巴巴集团控股有限公司 一种用于云盘模式切换的方法与设备
CN107392043A (zh) * 2017-06-30 2017-11-24 天脉聚源(北京)传媒科技有限公司 一种保护系统中用户的私人对象的方法及装置
CN109815001A (zh) * 2017-11-20 2019-05-28 阿里巴巴集团控股有限公司 应用处理方法、装置及托管系统
CN109739613B (zh) * 2018-11-22 2021-08-13 海光信息技术股份有限公司 嵌套页表的维护方法、访问控制方法及相关装置
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11283800B2 (en) * 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
CN112965789B (zh) * 2021-03-25 2024-05-03 绿盟科技集团股份有限公司 一种虚拟机内存空间处理方法、装置、设备和介质
US11900142B2 (en) 2021-06-16 2024-02-13 Red Hat, Inc. Improving memory access handling for nested virtual machines
US20230044731A1 (en) * 2021-08-05 2023-02-09 International Business Machines Corporation Attestation of a secure guest
WO2023191195A1 (ko) * 2022-03-31 2023-10-05 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005535005A (ja) * 2002-03-29 2005-11-17 インテル コーポレイション 安全な環境を初期化する命令を実行するシステムおよび方法
JP2007510198A (ja) * 2003-10-08 2007-04-19 ユニシス コーポレーション ホストシステムのパーティション内に実装されているハイパーバイザを使用したコンピュータシステムの準仮想化
JP2008250387A (ja) * 2007-03-29 2008-10-16 Toshiba Corp 情報処理装置
WO2011040192A1 (ja) * 2009-09-30 2011-04-07 ブラザー工業株式会社 仮想マシン、仮想マシンのプログラム、アプリケーションサービス提供システム及びアプリケーションサービス提供方法
JP2011076505A (ja) * 2009-09-30 2011-04-14 Brother Industries Ltd 情報処理システム及び情報処理方法
WO2011081535A1 (en) * 2009-12-14 2011-07-07 Business Intelligence Solutions Safe B.V. An improved method and system for calculating breakpoints in a data visualization system
US20110225459A1 (en) * 2010-03-09 2011-09-15 Microsoft Corporation Generating a debuggable dump file for a virtual machine

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US7103529B2 (en) * 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation
US7278030B1 (en) 2003-03-03 2007-10-02 Vmware, Inc. Virtualization system for computers having multiple protection mechanisms
US7975117B2 (en) 2003-03-24 2011-07-05 Microsoft Corporation Enforcing isolation among plural operating systems
US8079034B2 (en) * 2003-09-15 2011-12-13 Intel Corporation Optimizing processor-managed resources based on the behavior of a virtual machine monitor
US7424601B2 (en) 2004-07-07 2008-09-09 Yongyong Xu Methods and systems for running multiple operating systems in a single mobile device
US7281102B1 (en) 2004-08-12 2007-10-09 Vmware, Inc. Restricting memory access to protect data when sharing a common address space
US7886126B2 (en) 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
JP2007004661A (ja) 2005-06-27 2007-01-11 Hitachi Ltd 仮想計算機の制御方法及びプログラム
US7748037B2 (en) * 2005-09-22 2010-06-29 Intel Corporation Validating a memory type modification attempt
US20070067590A1 (en) * 2005-09-22 2007-03-22 Uday Savagaonkar Providing protected access to critical memory regions
US8380987B2 (en) * 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
US8769207B2 (en) * 2008-01-16 2014-07-01 Via Technologies, Inc. Caching method and apparatus for a vertex shader and geometry shader
US8099541B2 (en) 2008-01-22 2012-01-17 Globalfoundries Inc. Minivisor entry point in virtual machine monitor address space
US8886838B2 (en) 2008-02-29 2014-11-11 Oracle America, Inc. Method and system for transferring packets to a guest operating system
CN101593258B (zh) * 2008-05-28 2010-09-08 北京飞天诚信科技有限公司 一种在软件保护装置中实现.Net虚拟机的系统和方法
US8954897B2 (en) 2008-08-28 2015-02-10 Microsoft Corporation Protecting a virtual guest machine from attacks by an infected host
US9213566B2 (en) 2008-11-26 2015-12-15 Red Hat, Inc. Implementing security in process-based virtualization
US8799879B2 (en) 2009-06-30 2014-08-05 Oracle America, Inc. Method and apparatus for protecting translated code in a virtual machine
EP3002703B1 (en) 2009-12-14 2017-08-30 Citrix Systems Inc. Methods and systems for communicating between trusted and non-trusted virtual machines

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005535005A (ja) * 2002-03-29 2005-11-17 インテル コーポレイション 安全な環境を初期化する命令を実行するシステムおよび方法
JP2007510198A (ja) * 2003-10-08 2007-04-19 ユニシス コーポレーション ホストシステムのパーティション内に実装されているハイパーバイザを使用したコンピュータシステムの準仮想化
JP2008250387A (ja) * 2007-03-29 2008-10-16 Toshiba Corp 情報処理装置
WO2011040192A1 (ja) * 2009-09-30 2011-04-07 ブラザー工業株式会社 仮想マシン、仮想マシンのプログラム、アプリケーションサービス提供システム及びアプリケーションサービス提供方法
JP2011076505A (ja) * 2009-09-30 2011-04-14 Brother Industries Ltd 情報処理システム及び情報処理方法
WO2011081535A1 (en) * 2009-12-14 2011-07-07 Business Intelligence Solutions Safe B.V. An improved method and system for calculating breakpoints in a data visualization system
US20110225459A1 (en) * 2010-03-09 2011-09-15 Microsoft Corporation Generating a debuggable dump file for a virtual machine

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNG201100548006; 江川 友寿: '管理VMへのキーボード入力情報漏洩の防止' 情報処理学会研究報告 2011(平成23)年度(2) [CD-ROM] No.118, 20110815, 第1-8頁, 一般社団法人情報処理学会 *
JPN6014040541; 江川 友寿: '管理VMへのキーボード入力情報漏洩の防止' 情報処理学会研究報告 2011(平成23)年度(2) [CD-ROM] No.118, 20110815, 第1-8頁, 一般社団法人情報処理学会 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10802729B2 (en) 2015-06-16 2020-10-13 Arm Limited Apparatus and method for sharing pages including enforcing ownership rights independently of privilege level
US10936504B2 (en) 2015-06-16 2021-03-02 Arm Limited Apparatus and method for address translation and control of whether an access request is rejected based on an ownership table indicating an owner process for a block of physical addresses
CN107690628A (zh) * 2015-06-16 2018-02-13 Arm 有限公司 具有所有权表的数据处理装置和方法
CN107690621A (zh) * 2015-06-16 2018-02-13 Arm 有限公司 受保护的异常处置
KR102517506B1 (ko) * 2015-06-16 2023-04-04 에이알엠 리미티드 공유 페이지
CN107771323A (zh) * 2015-06-16 2018-03-06 Arm 有限公司 共享页
CN107771323B (zh) * 2015-06-16 2022-07-22 Arm 有限公司 共享页
JP2018523209A (ja) * 2015-06-16 2018-08-16 エイアールエム リミテッド 所有権テーブルを用いたデータ処理装置及び方法
KR20180017093A (ko) * 2015-06-16 2018-02-20 에이알엠 리미티드 공유 페이지
US10838877B2 (en) 2015-06-16 2020-11-17 Arm Limited Protected exception handling
JP2018523211A (ja) * 2015-06-16 2018-08-16 エイアールエム リミテッド 保護された例外処理
CN107690628B (zh) * 2015-06-16 2022-01-18 Arm 有限公司 具有所有权表的数据处理装置和方法
US11314658B2 (en) 2015-06-16 2022-04-26 Arm Limited Apparatus and method including an ownership table for indicating owner processes for blocks of physical addresses of a memory
JPWO2017042860A1 (ja) * 2015-09-07 2017-09-07 三菱電機株式会社 実行制御装置及び実行制御方法及び実行制御プログラム
WO2017042860A1 (ja) * 2015-09-07 2017-03-16 三菱電機株式会社 実行制御装置及び実行制御方法及び実行制御プログラム
JP7386882B2 (ja) 2019-03-08 2023-11-27 インターナショナル・ビジネス・マシーンズ・コーポレーション セキュア仮想マシン環境におけるゲスト命令の透過的解釈

Also Published As

Publication number Publication date
DE112012003988T5 (de) 2014-06-18
US8788763B2 (en) 2014-07-22
GB2508553A (en) 2014-06-04
CN103858113A (zh) 2014-06-11
WO2013054528A1 (en) 2013-04-18
DE112012003988B4 (de) 2021-09-02
JP5736090B2 (ja) 2015-06-17
GB201404280D0 (en) 2014-04-23
US20130097392A1 (en) 2013-04-18
CN103858113B (zh) 2016-02-24
GB2508553B (en) 2014-09-10

Similar Documents

Publication Publication Date Title
JP5736090B2 (ja) 仮想ゲストのメモリ保護の方法、システムおよびコンピュータプログラム
US8782351B2 (en) Protecting memory of a virtual guest
US10831886B2 (en) Virtual machine manager facilitated selective code integrity enforcement
Jang et al. Heterogeneous isolated execution for commodity gpus
CN109783188B (zh) 用于安全公共云的密码存储器所有权表
US7836299B2 (en) Virtualization of software configuration registers of the TPM cryptographic processor
US8220029B2 (en) Method and system for enforcing trusted computing policies in a hypervisor security module architecture
Li et al. A trusted virtual machine in an untrusted management environment
US10685119B2 (en) Trusted malware scanning
US20180046479A1 (en) On-demand disposable virtual work system
Li et al. Secure virtual machine execution under an untrusted management OS
Peinado et al. NGSCB: A trusted open system
US9424430B2 (en) Method and system for defending security application in a user's computer
US8213618B2 (en) Protecting content on client platforms
US8464252B2 (en) Per process virtual machines
US7693838B2 (en) Method and apparatus for securely accessing data
EP2973171B1 (en) Context based switching to a secure operating system environment
Litty et al. Manitou: a layer-below approach to fighting malware
Vasudevan et al. Lockdown: Towards a safe and practical architecture for security applications on commodity platforms
Rocha et al. Defense-in-depth against malicious insiders in the cloud
US20180341529A1 (en) Hypervisor-based secure container
Sani et al. The case for I/O-device-as-a-service
Zhang Detection and mitigation of security threats in cloud computing
US20230401081A1 (en) Software isolation of virtual machine resources
Gutstein Towards Efficient and Effective IOMMU-based Protection from DMA Attacks

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20140916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141120

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141120

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20141120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150226

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150226

TRDD Decision of grant or rejection written
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150325

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20150325

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150325

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150417

R150 Certificate of patent or registration of utility model

Ref document number: 5736090

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250