JP2022522485A - 割り込み及び例外をセキュア仮想マシンにインジェクトする - Google Patents

割り込み及び例外をセキュア仮想マシンにインジェクトする Download PDF

Info

Publication number
JP2022522485A
JP2022522485A JP2021551766A JP2021551766A JP2022522485A JP 2022522485 A JP2022522485 A JP 2022522485A JP 2021551766 A JP2021551766 A JP 2021551766A JP 2021551766 A JP2021551766 A JP 2021551766A JP 2022522485 A JP2022522485 A JP 2022522485A
Authority
JP
Japan
Prior art keywords
secure
secure entity
entity
interrupt
computer
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
JP2021551766A
Other languages
English (en)
Other versions
JP7465046B2 (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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2022522485A publication Critical patent/JP2022522485A/ja
Application granted granted Critical
Publication of JP7465046B2 publication Critical patent/JP7465046B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/45562Creating, deleting, cloning virtual machine instances
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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
    • 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/45591Monitoring or debugging support
    • 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/45595Network integration; Enabling network access in virtual machine instances

Abstract

本発明の1つ又は複数の実施形態によると、コンピュータ実施方法が、ホスト・サーバ上で実行されている非セキュア・エンティティによって、セキュア・エンティティを開始することであって、非セキュア・エンティティは、セキュア・エンティティのあらゆるデータに直接アクセスすることが禁止されている、開始することを含む。方法は、ホスト・サーバによって生成される割り込みをセキュア・エンティティにインジェクトすることをさらに含む。インジェクトすることは、非セキュア・エンティティによって、割り込みについての情報を、セキュア・エンティティと関連付けられた非セキュア・ストレージの部分に追加することを含む。インジェクトすることは、ホスト・サーバのセキュア・インターフェース制御によって、割り込みをセキュア・エンティティにインジェクトすることをさらに含む。

Description

本出願は、コンピュータ・テクノロジーに関し、より具体的には、仮想マシン又はコンテナに関する。
クラウド・コンピューティングは、顧客がハードウェアを購入すること、又は物理サーバのためのフロアスペースを提供することを必要とせずに、顧客が迅速かつ容易に仮想マシンをプロビジョニングする能力を促進する。顧客は、好みの変化に応じて、仮想マシンを拡張又は縮小することができる。一般的に、クラウド・コンピューティング・プロバイダは、プロバイダのデータセンタに物理的に常駐する仮想マシンをプロビジョニングする。この環境においては、顧客の仮想マシンは、ゲストとして動作しており、クラウド・プロバイダは、ホストとして動作するハイパーバイザ・コードを用いて、異なる顧客に属する可能性がある複数の仮想マシン間でサーバ・リソースを仮想化する。
顧客は、多くの場合、仮想マシンにおけるデータのセキュリティについて懸念している。顧客は、自身のコード及びデータとクラウド・コンピューティング・プロバイダとの間のセキュリティ、又は、自身のデータ間のセキュリティだけでなく、自身のコード及びデータとプロバイダのサイトで動作している他のVMとの間のセキュリティを、要求することがある。プロバイダの管理者からのセキュリティ、並びにマシン上で動作している(ハイパーバイザ・コードを含む)他のコードにおける潜在的なセキュリティ違反に対するセキュリティが、顧客によって要求されることがある。これらの管理者及び他のコードは、悪意のある意図をもって行動していることがある。
一般に、ホスト・ハイパーバイザの制御下でゲストとして動作しているVMは、そのハイパーバイザに依存してそのゲストのための仮想化サービスをトランスペアレントに提供する。これらのサービスには、メモリ管理、命令エミュレーション及び割り込み処理が含まれる。
本発明の1つ又は複数の実施形態によると、コンピュータ実施方法が、ホスト・サーバ上で実行されている非セキュア・エンティティによって、セキュア・エンティティを開始することであって、非セキュア・エンティティは、セキュア・エンティティが明示的に共有していない、セキュア・エンティティのあらゆるデータに直接アクセスすることが禁止されている、開始することを含む。方法は、ホスト・サーバによって生成される割り込みをセキュア・エンティティにインジェクトすることをさらに含む。インジェクトすることは、非セキュア・エンティティによって、割り込みについての情報を、セキュア・エンティティと関連付けられた非セキュア・ストレージの部分に追加することを含む。インジェクトすることは、ホスト・サーバのセキュア・インターフェース制御によって、割り込みをセキュア・エンティティにインジェクトすることをさらに含む。1つ又は複数の例において、セキュア・エンティティは、セキュア仮想マシン、コンテナ、又はゲストである。1つ又は複数の例において、非セキュア・エンティティは、ハイパーバイザ、OS、又はホストである。
本発明の1つ又は複数の実施形態によると、方法は、インジェクトすることの前に、セキュア・インターフェース制御によって、割り込みをセキュア・エンティティにインジェクトすることが許可されているかどうかを判断することをさらに含み、インジェクトすることは、割り込みをセキュア・エンティティにインジェクトすることが許可されているとの判断に基づいて行われる。1つ又は複数の例において、セキュア・インターフェース制御は、セキュア・エンティティについての所定の許可可能な割り込みのリストに基づいて、割り込みをセキュア・エンティティにインジェクトすることが許可されていると判断する。許可可能な割り込みのリストは、そのセキュア・エンティティに固有のものである。
本発明の1つ又は複数の実施形態によると、割り込みについての情報は、割り込みをインジェクトするための識別子と、割り込みと関連付けられた1つ又は複数のパラメータとを含む。1つ又は複数の例において、方法は、インジェクトすることの前に、セキュア・インターフェース制御によって、割り込み及び1つ又は複数のパラメータをセキュア・エンティティにインジェクトすることが許可されているかどうかを判断することをさらに含み、インジェクトすることは、割り込み及び1つ又は複数のパラメータをセキュア・エンティティにインジェクトすることが許可されているとの判断に基づいて行われる。
1つ又は複数の例において、方法は、非セキュア・エンティティによってインジェクトする前に、セキュア・エンティティと関連付けられたプロセッサをアンディスパッチすることをさらに含む。さらに、非セキュア・エンティティによって割り込みについての情報を追加した後、仮想プロセッサを再ディスパッチしてセキュア・エンティティの動作を再開する。
本発明の1つ又は複数の実施形態によると、方法は、割り込みをセキュア・エンティティにインジェクトすることが許可されていないとの判断に応答して、セキュア・インターフェース制御によって、エラーを非セキュア・エンティティに示すことをさらに含む。
本発明の1つ又は複数の実施形態によると、セキュア・インターフェース制御は、ハードウェア、ミリコード、及び他の信頼できるファームウェアを含む。
さらに、本発明の1つ又は複数の実施形態によると、コンピュータ実施形態方法は、ホスト・サーバの非セキュア・エンティティ上で実行されているセキュア・エンティティによって、非セキュア・エンティティに転送される条件を生成する命令を実行することであって、非セキュア・エンティティは、セキュア・エンティティが明示的に共有していない、セキュア・エンティティのあらゆるデータに直接アクセスすることが禁止されている、実行することを含む。方法は、命令を実行したセキュア・エンティティと関連付けられたプロセッサをアンディスパッチし、次に、非セキュア・インティティが命令をエミュレートすることを含む。方法は、非セキュア・エンティティによって、割り込み又はプログラム例外をセキュア・エンティティに配信すべきかどうかを判断し、そのような判断に基づいて、セキュア・エンティティへの割り込み又はプログラム例外を、非セキュア・エンティティにインジェクトすることをさらに含む。割り込みをインジェクトすることは、割り込み又はプログラム例外が命令のエミュレーションによって発生することに基づいて、非セキュア・エンティティによって、割り込み又はプログラム例外についての情報をセキュア・エンティティと関連付けられた非セキュア・ストレージの部分に追加することを含む。割り込みをインジェクトすることは、セキュア・エンティティと関連付けられたプロセッサを再開してセキュア・エンティティの動作を再開することをさらに含む。
本発明の1つ又は複数の実施形態によると、方法は、インジェクトすることの前に、セキュア・インターフェース制御によって、セキュア・エンティティへのインジェクトのために、プログラム例外が有効かどうかを判断することをさらに含み、インジェクトすることは、セキュア・エンティティへのインジェクトのために、プログラム例外が有効であるとの判断に基づいて行われる。1つ又は複数の例において、セキュア・インターフェース制御は、命令に対応する所定の例外のリストに基づいて、プログラム例外が有効であることを判断する。1つ又は複数の例において、プログラム例外についての情報は、インジェクトされるプログラム例外についての識別子と、プログラム例外と関連付けられた1つ又は複数のパラメータとを含む。
上述の特徴は、少なくともシステム、コンピュータ・プログラム製品及びマシンによって提供することもできる。
付加的な技術的特徴及び利点が、本発明の技術を通じて実現される。本発明の実施形態及び態様は、本明細書において詳細に記載され、特許請求される主題の一部であると考えられる。よりよい理解のために、詳細な説明及び図面を参照されたい。
本明細書に記載された排他的権利の詳細は、明細書の結論部分にある特許請求の範囲において具体的に指摘され、明確に特許請求されている。本発明の実施形態の上記及び他の特徴と利点は、添付図面と共に以下の詳細な説明を読むことから明らかになる。
本発明の実施形態によるクラウド・コンピューティング環境を示す。 本発明の実施形態による抽象化モデル層を示す。 実施形態による、ホスティング・システムのための例示的システムを示す。 実施形態による、ホスティング・システムの例示的ブロック図を示す。 本発明の1つ又は複数の実施形態による、セキュア・インターフェース制御が、割り込みの通知をセキュアVMに与えるための例示的方法のフローチャートを示す。 本発明の1つ又は複数の実施形態による、セキュアVMが、非セキュア・エンティティにおいて例外を発生させるための例示的方法のフローチャートを示す。
本発明の種々の実施形態が、関連する図面を参照して本明細書で説明される。本発明の範囲から逸脱することなく、本発明の代替的な実施形態を考え出すこともできる。以下の説明及び図面においては、要素の間の種々の接続及び位置関係(例えば、上方(over)、下方(below)、隣接(adjacent)等)が述べられている。これらの接続もしくは位置関係又はその両方は、特に明記されていない限り、直接的なものであっても又は間接的なものであってもよく、本発明は、この点において限定的であることを意図するものではない。従って、エンティティの結合は、直接的結合であっても又は間接的結合であってもよく、エンティティ間の位置関係は、直接的な位置関係であっても又は間接的な位置関係であってもよい。さらに、本明細書に記載される様々なタスク及びプロセス・ステップは、本明細書で詳細に説明されていない付加的なステップ又は機能を有する、より包括的な手順又はプロセスに組み込むこともできる。
以下の定義及び略語が、特許請求の範囲及び明細書の解釈に用いられる。本明細書で用いられる場合、「含む(comprises)」、「含んでいる(comprising)」、「含む(includes)」、「含んでいる(including)」、「有する(has)」、「有している(having)」、「包含する(contains)」もしくは「包含している(containing)」という用語、又はそれらの任意の他の変形は、非排他的な包含をカバーすることが意図されている。例えば、要素のリストを含む組成物、混合物、プロセス、方法、物品、又は装置は、必ずしもそれらの要素のみに限定されるものではなく、明示的に列挙されていない他の要素、又は、そのような組成物、混合物、プロセス、方法、物品、もしくは装置に内在する他の要素を含むことができる。
さらに、「例示的」という用語は、本明細書では「例、実例、又は例証として機能する」ことを意味するように用いられる。「例示的」であるとして本明細書に記載されるいずれの実施形態又は設計も、他の実施形態又は設計と比較して、必ずしも、好適である又は有利であると解釈されるべきではない。「少なくとも1つ」及び「1つ又は複数」という用語は、1よりも大きい又は1に等しい任意の整数、すなわち1、2、3、4などを含むように理解することができる。「複数の」という用語は、2よりも大きい又は2に等しい任意の整数、すなわち2、3、4、5などを含むように理解することができる。「接続」という用語は、間接的「接続」及び直接的「接続」の両方を含むことができる。
「約(about)」、「実質的に(substantially)」、「およそ(approximately)」という用語及びそれらの変形は、本出願時に利用可能な機器に基づいて、特定の量の測定と関連した誤差の程度を含むように意図される。例えば、「約」は、所与の値の±8%又は5%、又は2%の範囲を含むことができる。
簡潔にするために、本発明の態様の作成及び使用に関連する従来の技術については、本明細書で詳細に説明される場合も又は説明されない場合もある。特に、本明細書で説明される種々の技術的特徴を実装するためのコンピューティング・システムの種々の態様及び特定のコンピュータ・プログラムは周知である。従って、簡略にするために、本明細書では、多くの従来の実装の詳細については、周知のシステムもしくはプロセスの詳細又はその両方を与えることなく、単に簡潔に述べられるか又は完全に省略される。
典型的なクラウド環境に関する技術的問題は、(例えば、クラウド・プロバイダ又はクラウド管理者による)VMデータ及びアルゴリズムへの潜在的に非セキュア(unsecure)で不必要なアクセスである。クラウド・プロバイダは、一般的に、ハイパーバイザ・コードをホストとして動作させ、顧客のVMはゲストとして動作する。このハイパーバイザ・コードは、複数のVMが単一の物理マシン上で実行されるのを可能にするために必要な仮想化機能を提供する。既存のシステムにおいて、ハイパーバイザ(多くの場合、その延長線上にあるクラウド管理者)は、仮想化機能を与えるために顧客のデータの制限された部分にアクセスしなければならない場合には、そのデータ及びアルゴリズムにアクセスすることができる。1つの仮想化の例は、ハイパーバイザによるI/O操作の処理である。これは、多数の仮想化ゲストについてのI/O操作を仮想化する複雑さのために必要である。この仮想化の第1の部分は、ゲストが、要求、例えばI/O要求xを開始するためにI/O命令を発行したときに始まる。これは、ハイパーバイザによる、I/O命令のゲスト・オペランド(レジスタ及びストレージの両方)へのアクセスを必要とする。この命令に応答して、ハイパーバイザは、適切な制御ブロック構造を更新してその要求を追跡し、ハードウェアにおけるI/O要求を開始する。これらの制御ブロック構造は、ハードウェア/ファームウェアによって使用され、関連したI/O割り込みxがディスパッチされる場合には、それをゲストに直接提示することができる。しかしながら、このI/O要求が完了するのを待っている間にゲストが使用可能な待機状態に入る場合には、このゲストはいずれのワークも行っていないため、ハイパーバイザは、行うべきワークを有する別のゲストをハードウェア上にディスパッチすることができる。これを行うために、ハイパーバイザは、(ハードウェア/ファームウェアの助けを借りて)I/O割り込みxがいつ保留になるかを監視し、仮想化の観点から該当する場合には、それをゲストに提示してゲストを再ディスパッチする。これを行うため、ハイパーバイザは、I/O割り込み情報を用いてゲストのプリフィックス・ページを更新し、ディスパッチする前にゲストのI/O割り込みハンドラを指し示すように、ゲストの命令アドレスを更新する。これには、ゲストのストレージ及びゲストの状態(命令アドレス)の両方にアクセスする必要がある。この機能及び同様の機能を提供するために、ハイパーバイザは、一般的に、マシン内のゲスト(VM)の状態及びストレージにアクセスする無制限の特権を有しており、この無制限の特権は、本明細書で説明されるように、非セキュアで信頼できない可能性があり、従って顧客にとっては好ましくない。しかしながら、ハイパーバイザは非セキュア・エンティティである可能性があり、VMはセキュア・エンティティである。1つ又は複数の例において、セキュア・エンティティは、仮想コンテナ又はゲストをさらに含むことができる。1つ又は複数の例において、非セキュア・エンティティは、VMにおいてインスタンス化されるオペレーティング・システムをさらに含むことができる。1つ又は複数の例において、ホスト10もまた、非セキュア・エンティティと見なすことができる。従って、本発明の1つ又は複数の実施形態は、ハイパーバイザの特権を制限し、セキュアなゲストのファシリティへのアクセスを許可することなくハイパーバイザによって処理される、I/O操作の場合のような操作の完了をさらに容易にする。
ホスト・ハイパーバイザの制御下でゲストとして実行されている仮想マシン(VM)は、そのハイパーバイザに依存してそのゲストのための仮想化サービスをトランスペアレントに提供する。これらのサービスは、これらに限定されるものではないが、メモリ管理、命令エミュレーション、及び割り込み処理を含むことができる。本発明の1つ又は複数の実施形態によって提供される技術的な解決法は、セキュア・エンティティと、従来、この他のエンティティによるセキュア・リソースへのアクセスを可能にする別の信頼できないエンティティとの間のあらゆるインターフェースに適用することができる。例えば、割り込み及び例外エミュレーションのために、ハイパーバイザは、一般的に、ゲストのプレフィックス領域(低コア)の読み取り若しくはプレフィックス領域への書き込み又はその両方を行う。本明細書で用いられる場合には、「仮想マシン」又は「VM」という用語は、物理マシン(コンピューティング・デバイス、プロセッサ等)及びその処理環境(オペレーティング・システム(OS)、ソフトウェア・リソース等)の論理表現を指す。仮想マシンの状態は、基盤となるホスト・マシン(物理プロセッサ又はプロセッサのセット)上で実行されるハイパーバイザによって維持される。ユーザ又はソフトウェア・リソースの観点から、仮想マシンは、それ自体の独立した物理マシンであるように見える。本明細書で用いられる場合には、「ハイパーバイザ」又は「VMモニタ(VMM)」という用語は、複数のVMを管理して、それらが同じホスト・マシン上の複数の(多くの場合、異なる)OSを用いて実行することを可能にする処理環境又はプラットフォーム・サービスを指す。VMをデプロイすることは、VMのインストール・プロセス及びVMのアクティブ化(又は開始)プロセスを含むことを理解されたい。別の例において、VMをデプロイすることは、VMのアクティブ化(又は開始)プロセスを含む(例えば、VMが既にインストールされている場合又は既に存在する場合)。
現在利用可能な技術的解決法において、ハイパーバイザ(例えば、IBM(登録商標)によるz/VM(登録商標)又はオープン・ソース・ソフトウェア・カーネル・ベースの仮想マシン(KVM))は、SIEエントリ・ミリコードを呼び出させるStart-Interpretive-Execution(SIE)命令を発行することによって、物理処理ユニット又はホスト・サーバ上に新しいVMの仮想CPU(vCPU)をディスパッチする。SIE命令のオペランドは、ゲストの状態を含む、状態記述(state description、SD)と呼ばれる制御ブロックである。既存の実装において、この状態記述は、ハイパーバイザ・ストレージ内にある。SIE Entryの際、このゲスト状態(汎用及び制御レジスタ、ゲスト命令・アドレス及びゲスト・プログラム状態語(PSW))が、ミリコードによってハードウェアにロードされる。これにより、ゲストvCPUが物理プロセッサ上で実行されることが可能になる。vCPUがハードウェア上で実行される間、ゲスト状態は、ハードウェアにおいて維持される。ある時点で、ハードウェア/ミリコードは、制御をハイパーバイザに戻さなくてはならない。これは、SIE Exitと呼ばれることが多い。これは、例えば、このvCPUがハイパーバイザによるエミュレーションを必要とする命令を実行する場合、又はvCPUのタイム・スライス(すなわち、このvCPUが物理プロセッサ上で実行されるために、このvCPUのために割り当てられた時間)が満了した場合に必要とされる場合がある。SIE Exitの際、ハードウェアは、任意の時点で単一のvCPUのみをサポートするためのリソースを有しており、ハイパーバイザ状態をハードウェアにロードしなければならないので、ミリコードは、現在のゲスト状態を状態記述に保存する。このvCPUがディパッチされない間、その状態は状態記述に維持される。この状態記述は、ハイパーバイザ・ストレージ内にあるので、このような場合、ハイパーバイザは、VMについてのデータを制御し、このような制御は、場合によっては、VM上で実行されている命令をエミュレートするために必要とされる。既存のハイパーバイザは、vCPUをディスパッチするために、SIE命令を通じたこのようなインターフェースの使用に依存する。
しかしながら、セキュア・ゲストを容易にするために、ホスティング・ノードなどのコンピュータ・サーバが、ハイパーバイザとセキュア・ゲストとの間のさらなるセキュリティを提供しなければならず、その結果、ハイパーバイザはVMからのデータにアクセスすることができず、従って、上述の方法でサービスを提供できないという、技術的問題が存在する。
幾つかの命令、例えば入力/出力(I/O)操作は、ハイパーバイザに委ねられる。従って、ハイパーバイザは、それらの命令の解釈を行わなければならず、そのことによって、多くの場合、例えば、無効なパラメータ又はオペランドが指定されたときに、ゲスト例外(プログラム割り込み)が発生する可能性がある。これは、ハイパーバイザだけが、どのパラメータ又はオペランドが有効であるかの知識を有するが、例外(プログラム例外)をセキュア・ゲスト、つまりセキュアVMに直接提示することができないという状況をもたらし、従って、ハイパーバイザによって、セキュア・インターフェース制御を通じて割り込みをゲストにインジェクトすることを可能にする新しいインターフェースが提供される。さらに、ハイパーバイザがセキュアVMの代わりに外部割り込み又はI/O割り込みを監視している幾つかの状況においては、ハイパーバイザはまた、外部割り込み又はI/O割り込みをVMに提示できなければならない。
本明細書で説明されるセキュア実行は、セキュア・ストレージと非セキュア・ストレージとの間だけでなく、異なるセキュア・ユーザに属するセキュア・ストレージの間の分離を保証するためのハードウェア機構を提供する。セキュア・ゲストに対しては、付加的なセキュリティが、「信頼できない」非セキュア・ハイパーバイザとセキュア・ゲストとの間に与えられる。これを行うために、ハイパーバイザが一般にゲストの代わりに行う機能の多くを、マシンに組み込むことが必要である。ハイパーバイザとセキュア・ゲストとの間のセキュア・インターフェースを提供する新しいセキュア・インターフェース制御が、本明細書で説明される。本明細書では、セキュア・インターフェース制御及びUVという用語は、交換可能に使用される。セキュア・インターフェース制御は、ハードウェアと協働して機能し、この付加的なセキュリティを提供する。さらに、下位レベルのハイパーバイザは、この信頼できないハイパーバイザのための仮想化を提供することができ、この下位レベルのハイパーバイザが信頼できるコードで実装される場合、それもまたセキュア・インターフェース制御の一部とすることができる。
一例では、セキュア・インターフェース制御は、内部のセキュアかつ信頼できるハードウェアもしくはファームウェア又はその両方で実装される。セキュア・ゲスト又はエンティティのために、セキュア・インターフェース制御は、セキュア環境の初期化及び保守、並びにハードウェア上のこれらのセキュア・エンティティのディスパッチの連携を提供する。セキュア・ゲストは、データをアクティブに使用し、ホスト・ストレージ内に常駐している間、セキュア・ストレージ内で「安全に(in the clear)」保持される。セキュア・ゲスト・ストレージには、その単一のセキュア・ゲストがアクセスすることができ、これは、ハードウェアによって厳格に実施される。つまり、ハードウェアは、あらゆる非セキュア・エンティティ(ハイパーバイザ又は他の非セキュア・ゲストを含む)又は異なるセキュア・ゲストがそのデータにアクセスするのを防止する。この例において、セキュア・インターフェース制御は、ファームウェアの最下位レベルの信頼できる部分として実行される。最下位レベル又はミリコードは、実際には、ハードウェアの延長であり、例えば、IBMのzArchitecture(登録商標)において定められる複雑な命令及び機能を実施するために使用される。ミリコードは、セキュア実行の文脈において、自身のセキュアUVストレージ、非セキュア・ハイパーバイザ・ストレージ、セキュア・ゲスト・ストレージ及び共有ストレージを含む、ストレージの全ての部分にアクセスすることができる。本明細書において、ストレージ及びメモリという用語は、交換可能に使用される。これにより、セキュア・ゲストが必要とする、又はそのゲストを支援するハイパーバイザが必要とする、あらゆる機能を与えることが可能になる。セキュア・インターフェース制御は、ハードウェアに直接アクセスすることもでき、それにより、ハードウェアが、セキュア・インターフェース制御によって確立された状況の制御下で、セキュリティ・チェックを効率的に提供することが可能になる。
本発明の1つ又は複数の実施形態は、ハードウェア又はファームウェアが割り込みをVMにインジェクトすることを可能にする新しいインターフェースを提供することによって、そうした技術的問題に対処する。さらに、本発明の1つ又は複数の実施形態は、ハイパーバイザがサービスをVMに提供することを依然として可能にしながら、そうしたさらなるセキュリティを提供する。このことは、セキュア・ゲスト・ファシリティにアクセスし、一般的にはゲストの代わりにハイパーバイザによって行われる機能又は機能の部分を、新しい「セキュア・インターフェース制御」に組み込むことによって行われる。本発明の1つ又は複数の実施形態によって使用されるインジェクト手法は、ハイパーバイザがインジェクトする必要があり得るあらゆる割り込みタイプに適用することができる。1つ又は複数の例において、そうした機能は、ミリコードもしくは他のハードウェア・モジュール又はその両方を用いて提供することができ、本説明では、まとめて、セキュア・インターフェース制御によって提供される機能と呼ぶ。ミリコードは、プロセッサ・ハードウェアの拡張として動作する信頼できるファームウェアである。従って、本発明の1つ又は複数の実施形態は、ハイパーバイザが、割り込みをセキュア・ゲストにセキュアにかつ安全にインジェクトし、このゲストによって処理される必要がある割り込み条件が発生したことを、セキュア・インターフェース制御を通じて通信するのを容易にする。
ここで背景技術の簡単な説明が続き、その後、割り込みもしくは例外又はその両方を、ハイパーバイザによってセキュアVMにインジェクトするための本発明の1つ又は複数の実施形態により使用される特定の特徴が説明される。本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載される教示の実装は、クラウド・コンピューティング環境に限定されないことが予め理解される。むしろ、本発明の実施形態は、現在知られている又は後に開発される任意の他のタイプのコンピューティング環境と関連して実施することが可能である。
クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及び解放することができる構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの、便利なオンデマンドのネットワークアクセスを可能にするためのサービス配信のモデルである。このクラウドモデルは、少なくとも5つの特徴、少なくとも3つのサービスモデル、及び少なくとも4つのデプロイメント・モデルを含むことができる。
特徴は、以下の通りである。
オンデマンド・セルフ・サービス:クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワークアクセス:機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービスを提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないという点で位置とは独立しているといえるが、より抽象化レベルの高い位置(例えば、国、州、又はデータセンタ)を特定できる場合がある。
迅速な弾力性:機能は、迅速かつ弾力的に、幾つかの場合自動的に、プロビジョニングして素早くスケールアウトし、迅速にリリースして素早くスケールインさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、多くの場合、無制限であり、いつでもどんな量でも購入できるように見える。
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザアカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
サービスモデルは以下の通りである。
Software as a Service(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
Platform as a Service(PaaS):プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上にデプロイするために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、デプロイされたアプリケーション、及び場合によってはアプリケーションホスティング環境構成に対して制御を有する。
Infrastructure as a Service(IaaS):コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアをデプロイ及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント(例えば、ホストのファイアウォール)選択の限定された制御を有する。
デプロイメント・モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
コミュニティ・クラウド:クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、オンプレミス又はオフプレミスに存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散のためのクラウドバースティング)によって結び付けられる2つ又はそれより多いクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
ここで図1を参照すると、例示的なクラウド・コンピューティング環境50が示される。図示のように、クラウド・コンピューティング環境50は、例えば、携帯情報端末(PDA)又は携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、もしくはコンピュータ・システム54N又はそれらの組み合わせなどのような、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスと通信することができる、1つ又は複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信することができる。これらのノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、又はこれらの組み合わせなど、1つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる(図示せず)。このことは、クラウド・コンピューティング環境50が、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のない、infrastructure as a service、platform as a service、もしくはsoftware as a service又はそれらの組み合わせを提供することを可能にする。図1に示されるコンピューティング・デバイス54A~Nのタイプは単に例示であることを意図し、コンピューティング・ノード10及びクラウド・コンピューティング環境50は、任意のタイプのネットワーク上でもしくはネットワーク・アドレス指定可能な接続(例えば、ウェブ・ブラウザを用いる)上で又はその両方で、任意のタイプのコンピュータ化されたデバイスと通信できることを理解されたい。
ここで図2を参照すると、クラウド・コンピューティング環境50(図1)によって提供される機能抽象化層のセットが示される。図2に示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
ハードウェア及びソフトウェア層60は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、メインフレーム61と、RISC(Reduced Instruction Set Computer(縮小命令セットコンピュータ))アーキテクチャ・ベースのサーバ62と、サーバ63と、ブレード・サーバ64と、ストレージ・デバイス65と、ネットワーク及びネットワーク・コンポーネント66と、が含まれる。幾つかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67と、データベース・ソフトウェア68とを含む。
仮想化層70は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーション及びオペレーティング・システム74、並びに仮想クライアント75を提供することができる。
一例においては、管理層80は、以下で説明される機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、これらのリソースの消費に対する課金又は請求とを提供する。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータル83は、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(Service Level Agreement、SLA)の計画及び履行85は、SLAに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
ワークロード層90は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例として、マッピング及びナビゲーション91、ソフトウェア開発及びライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、及びソース・コード・バージョニング96が挙げられる。これらが幾つかの例に過ぎず、他の実施形態において、層は異なるサービスを含み得ることを理解されたい。
図3は、本発明の1つ又は複数の実施形態による例示的なホスティング・ノード10を示す。ホスティング・ノード10は、ネットワーク165を介して、1つ又は複数のクライアント・デバイス20A~20Cと直接又は間接的に通信している。ホスティング・ノード10は、クラウド・コンピューティング・プロバイダのデータセンタ又はホスト・サーバとすることができる。ホスティング・ノード10は、ハイパーバイザ12を実行し、このハイパーバイザ12は、1つ又は複数の仮想マシン15(15A~15N)をデプロイすることを容易にする。ホスティング・ノード10は、ハイパーバイザ12が、セキュア・インターフェース制御11を含む仮想マシン15に1又は複数のサービスを提供することを容易にする1つ又は複数のハードウェア・モジュール及びミリコードを含むハードウェア層11をさらに含む。既存の技術的解決法においては、ハイパーバイザ12とハードウェア/ミリコード13との間、ハードウェア/ミリコード13と1つ又は複数のVM15との間、ハイパーバイザ12と1つ又は複数のVM15との間、及びハードウェア/ミリコード13を通じたハイパーバイザ12からVM15までの間で、通信が行われる。セキュアVM環境を容易にするために、本発明の1つ又は複数の実施形態によるホスティング・ノード10は、ハイパーバイザ12と1つ又は複数のVM15との間にいずれの直接通信も含まず、代わりに、セキュア・インターフェース制御11を通して通信を提供する。
例えば、ホスティング・ノード10は、クライアント・デバイス20Aが仮想マシン15A~15Nの1つ又は複数をデプロイするのを容易にすることができる。仮想マシン15A~15Nは、異なるクライアント・デバイス20A~20Cからのそれぞれの要求に応答してデプロイすることができる。例えば、クライアント・デバイス20Aは仮想マシン15Aをデプロイすることができ、クライアント・デバイス20Bは仮想マシン15Bをデプロイすることができ、クライアント・デバイス20Cは仮想マシン15Cをデプロイすることができる。ホスティング・ノード10はまた、クライアントが、(仮想マシンとして実行されることなく)物理サーバをプロビジョニングするのを容易にすることができる。本明細書で説明される例は、ホスティング・ノード10におけるリソースのプロビジョニングを「仮想マシン」の一部として具体化するが、説明される技術的解決法を適用して、リソースを物理サーバの一部としてプロビジョニングすることができる。
一例において、クライアント・デバイス20A~20Cは、人、企業、政府機関、会社内の部署、又は他のいずれかのエンティティなどの同一のエンティティに属するものとすることができ、ホスティング・ノード10は、エンティティのプライベート・クラウドとして運用することができる。この場合、ホスティング・ノード10は、エンティティに属するクライアント・デバイス20A~20Cによってデプロイされる仮想マシン15A~15Nだけをホストする。別の例では、クライアント・デバイス20A~20Cは、異なるエンティティに属するものとすることができる。例えば、第1のエンティティは、クライアント・デバイス20Aを所有することができ、一方、第2のエンティティは、クライアント・デバイス20Bを所有することができる。この場合、ホスティング・ノード10は、異なるエンティティからの仮想マシンをホストするパブリック・クラウドとして動作することができる。例えば、仮想マシン15A~15Nは、仮想マシン15Aが容易に仮想マシン15Bにアクセスができないシュラウド方式でデプロイすることができる。例えば、ホスティング・ノード10は、IBM zSystems(登録商標)プロセッサ・リソース/システム・マネージャ(PR/SM)論理パーティション(LPAR)フィーチャを用いて、仮想マシン15A~15Nを覆い隠すことができる。PR/SM LPARなどのこれらのフィーチャは、パーティション間の分離を提供し、よって、ホスティング・ノード10が、異なる論理パーティション内の同じ物理ホスティング・ノード10上に、異なるエンティティについての2つ又はそれより多い仮想マシン15A~15Nをデプロイすることを容易にする。
クライアント・デバイス20A~20Cのクライアント・デバイス20Aは、コンピュータ、スマートフォン、タブレット・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、サーバ・コンピュータなどの通信装置、又はホスティング・ノード10のハイパーバイザ12による仮想マシンのデプロイメントを要求する任意の他の通信装置である。クライアント・デバイス20Aは、ネットワーク165を介して、又は直接、ハイパーバイザによる受信要求を送ることができる。仮想マシン15A~15Nの仮想マシン15Aは、クライアント・デバイス20A~20Cのクライアント・デバイス20Aからの要求に応答してハイパーバイザ12がデプロイする仮想マシン・イメージである。ハイパーバイザ12は、仮想マシンを作成して実行するソフトウェア、ファームウェア、又はハードウェアとすることができる仮想マシン・モニタ(VMM)である。ハイパーバイザ12は、仮想マシン15Aがホスティング・ノード10のハードウェア・コンポーネントを使用してプログラムの実行若しくはデータの格納又はその両方を行うことを、容易にする。適切なフィーチャ及び修正を用いて、ハイパーバイザ12は、IBM zSystems(登録商標)、ORACLE VM SERVER(商標)、CITRIX XENSERVER(商標)、VMWARE ESX(商標)、MICROSOFT HYPER-V(商標)、KVM、又は任意の他のハイパーバイザとすることができる。ハイパーバイザ12は、ホスティング・ノード10上で直接実行されているネイティブ・ハイパーバイザ、又は別のハイパーバイザ上で実行されているホストされたハイパーバイザとすることができる。
図4は、本発明の1つ又は複数の実施形態による例示的なホスティング・ノードのコンポーネントを示す。ホスティング・ノード10は、サーバ・コンピュータ、デスクトップ・コンピュータ、タブレット・コンピュータ、スマートフォン、又はハイパーバイザ12を実行し、次に仮想マシン15A~15Nをデプロイする任意の他のコンピュータなどのコンピュータとすることができる。ホスティング・ノード10は、電子回路などのハードウェアを含むコンポーネントを含む。ホスティング・ノード10は、他のコンポーネントの中でも、プロセッサ105、メモリ・コントローラ115に結合されたメモリ110、及びローカルI/Oコントローラ135を介して通信可能に結合された、周辺機器又は制御デバイスなどの1つ又は複数の入力デバイス145もしくは出力デバイス140又はその両方を含む。これらのデバイス140及び145は、例えば、バッテリ・センサ、位置センサ(高度計40、加速度計42、GPS44)、インジケータ/識別灯などを含むことができる。従来のキーボード150及びマウス155などの入力デバイスは、I/Oコントローラ135に結合することができる。当技術分野で知られるように、I/Oコントローラ135は、例えば、1つ又は複数のバス又は他の有線若しくは無線接続とすることができる。I/Oコントローラ135は、コントローラ、バッファ(キャッシュ)、ドライバ、中継器、及び受信機などの付加的な要素を有することもでき、これらは、簡略にするために省略されている。
I/Oデバイス140、145は、例えば、ディスク及びテープ・ストレージ、ネットワーク・インターフェース・カード(NIC)、又は(他のファイル、デバイス、システム又はネットワークにアクセスするための)変調器/復調器、無線周波数(RF)又は他の送受信機、電話インターフェース、ブリッジ、ルータ等の、入力及び出力の両方を通信するデバイスをさらに含むことができる。
プロセッサ105は、特にメモリ110に格納されたハードウェア命令又はソフトウェアを実行するためのハードウェア・デバイスである。プロセッサ105は、特注又は市販のプロセッサ、中央処理ユニット(CPU)、ホスティング・ノード10と関連付けられた幾つかのプロセッサの中の補助プロセッサ、半導体ベースのマイクロプロセッサ(マイクロチップ又はチップセットの形の)、マクロプロセッサ、又は命令を実行するための他のデバイスとすることができる。プロセッサ105は、キャッシュ170を含むことができ、このキャッシュ170は、限定されるものではないが、実行可能命令のフェッチを高速化するための命令キャッシュ、データ・フェッチ及びストアを高速化するためのデータ・キャッシュ、並びに、実行可能命令及びデータの両方のための仮想アドレスから物理アドレスへの変換を高速化するのに使用される変換ルックアサイド・バッファ(TLB)を含むことができる。キャッシュ170は、より多くのキャッシュ・レベル(L1、L2など)の階層として編成することができる。
メモリ110は、揮発性メモリ要素(例えば、DRAM、SRAM、SDRAMなどのランダム・アクセス・メモリ(RAM))、不揮発性メモリ要素(例えば、フラッシュ・メモリ、ROM、消去可能プログラム可能読み取り専用メモリ(EPROM)、電気的消去可能プログラム可能読み出し専用メモリ(EEPROM)、プログラム可能読み出し専用メモリ(PROM)、テープ、コンパクト・ディスク読み出し専用メモリ(CD-ROM)、ディスク、ディスケット、カートリッジ、カセット等)のうちの1つ又は組み合わせを含むことができる。さらに、メモリ110は、電子、磁気、光学、又は他のタイプのストレージ媒体を組み込むことができる。メモリ110は、分散型アーキテクチャを有することができ、そこで、種々のコンポーネントは、互いから遠隔に配置されるが、プロセッサ105によってアクセスすることができる。
メモリ110内の命令は、1つ又は複数の別個のプログラムを含むことができ、その各々は、論理機能を実施するための実行可能命令の順序付けされたリストを含む。図2の例において、メモリ110内の命令は、ハイパーバイザ12を実行する好適なオペレーティング・システム(OS)を含む。オペレーティング・システムは、他のコンピュータ・プログラムの実行を制御することができ、スケジューリング、入力・出力制御、ファイル及びデータ管理、メモリ管理、並びに通信制御及び関連サービスを提供する。zSystem(商標)のような例において、ホスティング・ノード10の製造業者は、ハイパーバイザ12を提供することができる。ハイパーバイザ12がハードウェア製造業者によって提供されない、zSystemのものとは異なる構造を有するシステムの場合、提供されるクラウド・コンピューティングは、例えば、VMWARE(商標)、KVM、又は他のハイパーバイザ・プロバイダからのハイパーバイザ12を使用することができる。一例において、物理ホスティング・ノード10の管理者は、製造業者により提供されるサービスを適用するために必要とされる場合を除き、ハイパーバイザ12を修正することはできない。例えば、ハイパーバイザ12は、「ライセンス内部コード(Licensed Internal Code、LIC)」もしくはホスティング・ノード10のためのマイクロコード又はその両方の一部として提供することができる。
例えば、プロセッサ105に対する命令、又は他の取り出し可能情報を含む付加的なデータは、ハードディスク・ドライブ又はソリッド・ステート・ドライブなどのストレージ・デバイスとすることができるストレージ120内に格納することができる。メモリ110又はストレージ120内に格納された命令は、プロセッサが、本開示のシステム及び方法の1つ又は複数の態様を実行するのを可能にするものを含むことができる。
ホスティング・ノード10は、ユーザ・インターフェース又はディスプレイ130に結合されたディスプレイ・コントローラ125をさらに含むことができる。幾つかの実施形態において、ディスプレイ130は、LCDスクリーンとすることができる。他の実施形態において、ディスプレイ130は、複数のLED状態灯を含むことができる。幾つかの実施形態において、ホスティング・ノード10は、ネットワーク165に結合するためのネットワーク・インターフェース160をさらに含むことができる。ネットワーク165は、ブロードバンド接続を介して、ホスティング・ノード10と外部サーバ、クライアント等の間で通信するためのIPベースのネットワークとすることができる。実施形態において、ネットワーク165は、衛星ネットワークとすることができる。ネットワーク165は、ホスティング・ノード10と外部システムとの間でデータを送受信する。幾つかの実施形態において、ネットワーク165は、サービス・プロバイダによって管理されるマネージドIPネットワークとすることができる。ネットワーク165は、例えば、WiFi、WiMax、衛星又はいずれか他のものなどの無線プロトコル及び技術を用いて、無線方式で実装することができる。ネットワーク165はまた、ローカル・エリア・ネットワーク、広域ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット、又は他の同様のタイプのネットワーク環境のような、パケット交換網(packet-switched network)とすることもできる。ネットワーク165は、固定無線ネットワーク、無線ローカル・エリア・ネットワーク(LAN)、無線広域ネットワーク(WAN)、パーソナル・エリア・ネットワーク(PAN)、仮想プライベート・ネットワーク(VPN)、イントラネット又は他の好適なネットワーク・システムとすることができ、信号を受送信するための機器を含むことができる。
クライアント・デバイス20Aは、ホスティング・ノード10の特定のハードウェア・コンポーネントもしくはソフトウェア・コンポーネント又はその両方にアクセス可能な対応する仮想マシン15Aをデプロイするよう、ハイパーバイザ12に要求することがある。例えば、クライアント・デバイス20Aは、仮想マシン15Aが所定数のプロセッサ、所定量の揮発性メモリ(例えば、ランダム・アクセス・メモリ(RAM))、所定量の不揮発性メモリ(例えば、ストレージ空間)、又は任意の他のハードウェア・コンポーネントにアクセスできることを要求することがある。代替的に又はこれに加えて、クライアント・デバイス20Aは、仮想マシン15Aが対応する一意の識別子によって識別される、電子回路などの特定のハードウェア・コンポーネントにアクセスできることを要求することがある。例えば、クライアント・デバイス20Aは、仮想マシン15Aが特定のタイプのプロセッサ、コプロセッサ、ネットワークカード、又は任意の他のチップもしくは電子回路にアクセスできることを要求することがある。一例において、クライアント・デバイス20Aは、電子回路の製造業者によって提供される識別子を用いて、電子回路を識別することができる。一例において、識別子は、バージョン識別子と共に使用することができる。代替的に又はこれに加えて、クライアント・デバイス20Aは、仮想マシン15Aが、オペレーティング・システム、アプリケーション、基本入力/出力システム(BIOS)、ブートイメージ、又は任意の他のソフトウェア・コンポーネントにアクセスできることを要求することがある。要求されるソフトウェア・コンポーネントは、ホスティング・ノード10のハードウェア・コンポーネント内にファームウェア及び組み込みプログラムを含むことができる。クライアント・デバイス20Aは、それぞれのソフトウェア・コンポーネントの開発者/製造業者によって提供されるそれぞれの一意の識別子を用いて、要求されるソフトウェア・コンポーネントを識別することができる。一例において、識別子は、ソフトウェア・コンポーネントのバージョン識別子と共に使用することができる。
図5は、本発明の1つ又は複数の実施形態による、ハイパーバイザが、セキュア・インターフェース制御を通じて、割り込みの通知をセキュアVMに提供するための例示的方法のフローチャートを示す。方法は、SIE(Start Interpretive Execution)命令の実行により、セキュアVM 15A vCPUをディスパッチし、プロセッサ105及び他のコンピューティング・リソースをセキュアVM 15Aに割り当てることを含む。SIE命令は、プロセッサ105を、一般に状態記述子(SD)と呼ばれるメモリ110内の制御ブロックで定められたエミュレーション状態にする。一般的に、SIE命令は、SDをアドレス指定する1つのオペランドを有する。つまり、SDは、セキュアVM 15Aのためにクライアント・デバイス20Aによって要求される場合がある、プロセッサ105上でエミュレートされるハードウェア状態を定めるフィールドを含む。プロセッサ105は、セキュアVM 15Aを開始したクライアント20の要求を受けて別のプロセッサ・アーキテクチャの挙動をエミュレートするように指示され得るので、1つ又は複数の例において、プロセッサ105は仮想プロセッサとみなすことができる。
本発明の1つ又は複数の実施形態によると、SDフィールドは、(1)ゲストのページ・ゼロを特定するセキュアVMの(すなわち、ゲストの)実アドレス・ゼロが割り当てられる絶対メモリ・アドレスを含むオリジン・フィールド、(2)セキュアVM 15Aの現PSW(プログラム状態語)のためのフィールド、(3)セキュアVM 15Aの汎用レジスタ(GR)及び制御レジスタ(CR)のための保存領域、及び(4)他のゲストの状態のための様々な他のフィールドを含む。
方法は、505において、ホスト10が、割り込みをインジェクトすべきであると判断し、その割り込みをセキュアVM 15Aにインジェクトできるように生成することを含む。割り込みは、I/O割り込み、外部割込み、又は任意の他のタイプの割り込みとすることができる。先述のように、ハイパーバイザ12は、メモリ、レジスタ、又はセキュアVM 15Aの任意の他のデータに直接アクセスすることができず、ゲスト割り込み情報をVMプリフィックス・ページに直接保存して、再ディスパッチする前に割り込みの新PSWを現在のVM状態すなわちSDにロードすることによって、既存の技術的解決法で行うことができるようにハイパーバイザ12が割り込みをセキュアVM 15Aに直接インジェクトすることを防止する。
510において、必要に応じて、割り込みを受け取ることになるセキュアVM 15Aの仮想プロセッサが、ホスト10によってアンディスパッチされる。さらに、515において、ハイパーバイザ12は、インジェクトされる割り込みと割り込みに関連付けられた1つ又は複数のパラメータとを、仮想プロセッサのSDに追加する。1つ又は複数の例において、この追加は、代わりに、セキュア・インターフェース制御によって実施されるインジェクション命令をハイパーバイザ12が典型的な方法で発行することによって、実行することができる。ハイパーバイザ12によって要求されている命令を識別すると、セキュア・インターフェース制御は、割り込み条件をセキュアVM 15Aにインジェクトするか、又は次のディスパッチで処理するために関連するSDに割り込み情報をセキュアに追加することができる。520において、ハイパーバイザ12はさらに、セキュア仮想マシンを再ディスパッチすることによって、セキュアVM 15Aに割り当てられたプロセッサ105の動作を再開する。

この時点で、ハイパーバイザ12が、セキュアVM 15Aのために仮想プロセッサを再ディスパッチするとき、このvCPUを再ディスパッチするためのSIEエントリの間に、525において、セキュア・インターフェース制御11は、インジェクトされた割り込み及びそのパラメータが有効であるかどうか、及び、インジェクトされている割り込みのタイプ対してプロセッサ105が有効であるかどうかをチェックする。セキュアVM 15Aが開始されたときに、クライアント20又はデフォルト設定は、セキュアVM 15Aが受け取ることができる割り込みのリストを提供することができる。1つ又は複数の例において、特定のタイプの割り込み、例えばI/O割り込みは、例えばセキュリティ上の理由で、セキュアVM 15Aに到達することが制限されることがある。さらに、I/O割り込みと関連付けられたパラメータの1つ又は複数のタイプが、セキュアVM 15Aに到達することが制限されることがある。例えば、セキュアVM 15Aによって実行される、テキスト、メモリ・ポインタ若しくはスクリプトを含むパラメータ、又は他のいずれかのタイプのパラメータが、制限されることがある。1つ又は複数の例において、セキュア・インターフェース制御11は、セキュアVM 15Aについて制限される(又は許可される)割り込みタイプもしくはパラメータ・タイプ又はその両方のリストにアクセスすることができる。例えば、そうしたリストは、セキュア・インターフェース制御11に割り当てられたメモリのセキュア部分に格納することができる。1つ又は複数の例において、異なるリストを異なるセキュアVMに適用することができる。
割り込みタイプ及びパラメータ・タイプの検証が成功した場合、530及び535において、セキュア・インターフェース制御11は、割り込みをセキュアVM 15Aにインジェクトし、セキュアVM 15Aの実行が再開する。セキュア・インターフェース制御11は、割り込み及び対応するパラメータについての情報をセキュアVM 15Aのメモリ(プリフィックス・ページ)及びレジスタに追加することによって、割り込みをインジェクトする。さらに、535において、セキュアVM 15Aの実行が再開して、割り込みが発生する。
セキュア・インターフェース制御11によって検証されている割り込みもしくはパラメータ又はその両方の値が不適切である場合、540において、セキュア・インターフェース制御11は、例えば検証インターセプトを介して、エラーをハイパーバイザ12に示し、セキュアVM 15Aの実行は再開されない。セキュア・インターフェース制御11又はハイパーバイザ12は、検証インターセプトを受信すると、本明細書で説明されるようなセキュリティ侵害の可能性を示す警告を発することができる。
従って、上述の方法は、ハイパーバイザ12がセキュアVM 15Aと関連付けられたメモリ/レジスタ空間に直接アクセスできないときに、ハイパーバイザ12が割り込みをセキュアVM 15Aにインジェクトすることを容易にする。
さらに、本発明の1つ又は複数の実施形態は、セキュアVM 15Aが、ハイパーバイザ12において割り込み又はプログラム例外を発生させることを容易にする。
セキュアVM 15Aが、例えばセキュアVM 15Aで実行されているアプリケーションによって行われている動作の一部として、プログラム命令を実行するときに、及び、プログラム命令がインターセプトをハイパーバイザ12に要求する場合に、技術的問題が存在する。ハイパーバイザ12は、プログラム命令と関連付けられるが、例外をVMに提示するのに必要なセキュアVM 15Aと関連付けられたレジスタ/メモリのいずれにもアクセスすることができないゲスト例外があることを、ゲスト・プログラム命令のエミュレーションの一部として判断する。本明細書に説明される本発明の1つ又は複数の実施形態は、例外をVM 15Aにインジェクトすることを容易にする。
図6は、本発明の1つ又は複数の実施形態による、ハイパーバイザが、ゲスト命令のエミュレーションに応答して、セキュアVMにおいて例外を発生させる例示的方法のフローチャートを示す。方法は、605において、セキュアVM 15Aが、ハイパーバイザの介入を要求する命令を発行することを含む。例えば、命令は、ホスト10のI/Oチャネルに対する要求、非同期割り込みを可能にする命令、又はハイパーバイザ12にサービスすることを要求する他のいずれかのそうした命令とすることができる。
代わりに、本発明の1つ又は複数の実施形態において、セキュア・インターフェース制御11は、610において、例えば状態記述子を介して、命令及び他の限定されたゲスト状態情報をハイパーバイザ12に提示する。1つ又は複数の例において、ハードウェア又はセキュア・インターフェース制御は、セキュアVM 15Aによって実行されている命令がハイパーバイザによる介入を要求していることを識別し、それに応答して、命令をインターセプトする。つまり、ハードウェア又はセキュア・インターフェース制御は、VMによる命令の実行を停止し、現在のゲスト状態をセキュア・ストレージに保存する。セキュア・インターフェース制御11は、オペランド及びオペコードのような、命令エミュレーションに必要とされるゲスト状態の部分を、例えば情報を状態記述子にコピーすることによってハイパーバイザ12にセキュアに公開し、ゲスト・インターセプトを処理するハイパーバイザ・コードの実行を開始する。従って、命令は、セキュアVM 15Aからのいかなる文脈もなしに実行するためにハイパーバイザ12に渡されることに留意されたい。セキュア・インターフェース制御11は、このようにインターセプトされる所定の命令(又は命令のタイプ)のリストに基づいて、インターセプトされる命令を識別する。615において、ハイパーバイザ12は、命令をエミュレートする。
620において、ハイパーバイザ12は、命令のエミュレーションの際に例外が発生したかどうかを判断する。例外が発生しなかった場合、625において、ハイパーバイザ12は、セキュアVM 15Aの実行を再開する。それに応じて、630において、セキュアVM 15Aは、セキュアVM 15Aと関連付けられた状態記述子に従って、ゲスト状態を用いて動作を再開する。
代わりに、ゲスト命令のエミュレーションの際に例外が発生した場合、635において、ハイパーバイザ12は、どの例外をセキュアVM 15Aに提示するかを判断する。ハイパーバイザ12は、それに応じて、セキュアVM 15Aに報告される例外についての情報を、例えば状態記述子に含める。情報は、報告される例外に対応する1つ又は複数のパラメータと共に、報告される例外の識別子を含むことができる。1つ又は複数の例において、報告される例外は、命令の実行中に実際に発生した例外とは異なる場合がある。640において、ハイパーバイザ12は、状態記述子の更新を完了すると、SIE命令を用いてセキュアVM 15Aを再ディスパッチする。代替的に、ハイパーバイザ12は、命令を介してセキュア・インターフェース制御11を呼び出し、次のディスパッチにおいて例外をセキュアVM 15Aに提示すべきであることを示すことができ、セキュア・インターフェース制御は、状態記述子又は同様の制御ブロックに対して適切な更新を行うことができる。
SIEエントリの間、セキュア・インターフェース制御11は、セキュアVM 15Aの状態記述子をチェックし、ハイパーバイザ12によって追加された例外情報を識別する。645において、セキュア・インターフェース制御11は、例外をセキュアVM 15Aに渡すかどうかを判断する。セキュア・インターフェース制御11は、セキュアVM 15Aに渡すことが可能な例外のリストに基づいて、判断を行う。例外のリストは、セキュアVM 15Aに固有のものとすることができ、所定のリスト又はセキュアVM 15Aを開始したクライアントによって提供されるリスト等とすることができる。
さらに、1つ又は複数の例において、セキュア・インターフェース制御11は、実行のためにハイパーバイザ12に渡される命令に基づいて、セキュアVM 15Aに渡される例外が適切であるかどうかをチェックする。例えば、セキュア・インターフェース制御11は、ハイパーバイザ12に対してインターセプタされ得るゲスト命令のリストを持つことができ、各命令について、ハイパーバイザ12がセキュアVM 15Aに戻すことができる1つ又は複数の例外のセットを持つことができる。渡される例外が、セキュアVM 15Aによって実行されていた命令に対応する例外のセットからのものではない場合、650において、セキュア・インターフェース制御11は、本明細書で説明されるような警告を発することによって、例えば妥当性インターセプトを通じてエラーを示す。
さらに、645において、セキュア・インターフェース制御11は、例外と共に渡されるパラメータをチェックすることによって、セキュアVM 15Aに渡される例外の特性を判断する。パラメータが1つ又は複数の許可されたパラメータ・タイプと一致しない場合、650において、セキュア・インターフェース制御11は、エラー条件又は警告を発する。
代わりに、ハイパーバイザ12によってセキュアVM 15Aに渡される例外及びパラメータが有効である場合、655において、セキュア・インターフェース制御11は、例外をセキュアVM 15Aにインジェクトする。例外をセキュアVM 15Aにインジェクトすることは、例えば、例外が発生したVM 15Aのオペレーティング・システムに示す1つ又は複数のレジスタ値及びメモリ(低コア)値を変えることを含む。630において、セキュアVMの実行がさらに再開される。再開は、セキュアVM 15Aが、インターセプトされる前に実行されていた命令のために発生した例外を処理することを含む。
従って、本発明の1つ又は複数の実施形態は、ハイパーバイザ12によって例外をセキュアVM 15Aにインジェクトすることを容易にする。
本発明の1つ又は複数の実施形態によると、コンピュータ・サーバは、ハイパーバイザもしくはセキュアVMのコード/アーキテクチャ又はその両方を変える必要なく、セキュアVMに関連付けられたメモリ、レジスタ、及び他のデータにハイパーバイザがアクセスすることを禁止するセキュアVMをホストして、割り込みをハイパーバイザにインジェクトすること若しくは例外をセキュアVMにインジェクトすること及びその両方を行うことができる。代わりに、本発明の1つ又は複数の実施形態によると、ミリコードを含むセキュア・インターフェース制御は、状態記述子及びストレージ/メモリのセキュア部分を用いて割り込み/例外情報を通信することによって、そうしたインジェトを容易にする。さらに、セキュア・インターフェース制御は、割り込み/例外情報についての妥当性チェックを行ってセキュアVMとハイパーバイザとの間で悪意のある情報が渡されることを防止し、こうした方法でセキュアVMのセキュリティを維持し続ける。
本発明の1つ又は複数の実施形態は、コンピュータ技術、特に仮想マシン・ホスティング・コンピュータ・サーバに根差している。さらに本発明の1つ又は複数の実施形態は、ホスティング・コンピュータ・サーバがセキュアVMをホストするのを容易にすることによって、コンピュータ・テクノロジー自体、特に仮想マシン・ホスティング・コンピュータ・サーバの動作の改善を容易にし、そこでは、ハイパーバイザは、セキュアVMと関連付けられたメモリ、レジスタ及び他のそうしたデータにアクセスすることが禁止される。さらに、本発明の1つ又は複数の実施形態は、ミリコードを含むハードウェア層もしくはセキュア・インターフェース制御又はその両方を用いてセキュアVMとハイパーバイザとの分離を容易にし、コンピューティング・サーバによってホストされるVMのセキュリティを維持することによって、VMホスティング・コンピューティング・サーバの改善に向けた重要なステップを提供する。ハードウェア層は、本明細書に説明されるように割り込み若しくは例外又はその両方をインジェクトするために実質的にオーバーヘッドを追加することなく、セキュリティを容易にするための軽量な中間動作を提供する。
本発明は、システム、方法もしくはコンピュータ・プログラム製品又はそれらの組み合わせを、いずれかの可能な技術的詳細レベルで統合したものとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの、すなわち:ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカードもしくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジ・サーバを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語若しくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コード又はオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路を個別化することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図もしくはブロック図又はその両方を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図又は両方の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置もしくは他のデバイス又はその組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャートもしくはブロック図又は両方の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生産し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図又は両方の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の様々な実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又は両方の各ブロック、及びブロック図もしくはフローチャート図又はその両方におけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
本発明の種々の実施形態の説明は、説明のために提示されたものであるが、網羅的であること又は本発明を開示した形態に限定することを意図したものではない。当業者には、本発明の範囲及び趣旨から逸脱することなく、多くの修正及び変形が明らかになるであろう。本明細書で使用される用語は、実施形態の原理、実際の適用、又は市場で見られる技術に比べた技術的改善を最もよく説明するため、又は当業者が本明細書で開示される実施形態を理解できるように選択されたものである。

Claims (25)

  1. コンピュータ実施方法であって、
    ホスト・サーバ上で実行されている非セキュア・エンティティによってセキュア・エンティティを開始することであって、前記非セキュア・エンティティは、前記セキュア・エンティティのあらゆるデータに直接アクセスすることが禁止されている、開始することと、
    前記ホスト・サーバによって又は前記非セキュア・エンティティによって生成される割り込みを前記セキュア・エンティティにインジェクトすることと
    を含み、前記インジェクトすることは、
    前記非セキュア・エンティティによって、前記割り込みについての情報を前記セキュア・エンティティと関連付けられた非セキュア・ストレージの部分に追加することと、
    前記ホスト・サーバのセキュア・インターフェース制御によって、前記割り込みを前記セキュア・エンティティにインジェクトすることと
    を含む、コンピュータ実施方法。
  2. 前記非セキュア・エンティティはハイパーバイザであり、前記セキュア・エンティティはセキュア仮想マシンである、請求項1に記載のコンピュータ実施方法。
  3. 前記セキュア・エンティティはコンテナであり、前記非セキュア・エンティティはオペレーティング・システムである、請求項1又は請求項2に記載のコンピュータ実施方法。
  4. 前記インジェクトすることの前に、前記セキュア・インターフェース制御によって、前記割り込みを前記セキュア・エンティティにインジェクトすることが許可されているかどうかを判断することをさらに含み、前記インジェクトすることは、前記割り込みを前記セキュア・エンティティにインジェクトすることが許可されているとの判断に基づいて行われる、請求項1から請求項3までのいずれか1項に記載のコンピュータ実施方法。
  5. 前記セキュア・インターフェース制御は、前記セキュア・エンティティについての所定の許可可能な割り込みのリストに基づいて、前記割り込みを前記セキュア・エンティティにインジェクトすることが許可されていると判断する、請求項4に記載のコンピュータ実施方法。
  6. 前記許可可能な割り込みのリストは、前記セキュア・エンティティに固有のものである、請求項5に記載のコンピュータ実施方法。
  7. 前記方法は、
    前記割り込みを前記セキュア・エンティティにインジェクトすることが許可されていないとの判断に応答して、前記セキュア・インターフェース制御によって、エラーを前記非セキュア・エンティティに示すことをさらに含む、請求項4に記載のコンピュータ実施方法。
  8. 前記非セキュア・エンティティによってインジェクトする前に、前記セキュア・エンティティと関連付けられた仮想プロセッサをアンディスパッチすることをさらに含む、請求項1から請求項7までのいずれか1項に記載のコンピュータ実施方法。
  9. 前記インジェクトすることの前に、前記セキュア・インターフェース制御によって、前記割り込み及び1つ又は複数のパラメータを前記セキュア・エンティティにインジェクトすることが許可されているかどうかを判断することをさらに含み、前記インジェクトすることは、前記割り込み及び前記1つ又は複数のパラメータを前記セキュア・エンティティにインジェクトすることが許可されているとの判断に基づいて行われる、請求項1から請求項8までのいずれか1項に記載のコンピュータ実施方法。
  10. 前記割り込みについての前記情報を追加することは、
    前記非セキュア・エンティティによって、前記割り込みについての前記情報を前記セキュア・エンティティと関連付けられた状態記述子に格納すること、及び
    前記非セキュア・エンティティによって、前記割り込みについての前記情報を前記セキュア・エンティティと関連付けられた状態記述子に格納するための前記セキュア・インターフェース制御に対する命令を発行すること
    のうちの1つを含む、請求項1から請求項9までのいずれか1項に記載のコンピュータ実施方法。
  11. メモリと、
    セキュア・インターフェース制御と、
    前記メモリ及び前記セキュア・インターフェース制御と結合された処理ユニットと
    を含むシステムであって、
    前記処理ユニットは、1つ又は複数のセキュア・エンティティをホストする非セキュア・エンティティを実行するように構成され、前記非セキュア・エンティティは、セキュア・エンティティのあらゆるデータに直接アクセスすることが禁止されており、前記非セキュア・エンティティによって生成される割り込みを前記セキュア・エンティティにインジェクトする方法が、
    前記非セキュア・エンティティによって、前記割り込みについての情報を前記セキュア・エンティティと関連付けられた非セキュア・ストレージの部分に追加することと、
    前記セキュア・インターフェース制御によって、前記割り込みを前記セキュア・エンティティにインジェクトすることと
    を含む、システム。
  12. 前記方法は、
    前記非セキュア・エンティティによってインジェクトする前に、前記セキュア・エンティティと関連付けられたプロセッサをアンディスパッチすること
    をさらに含む、請求項11に記載のシステム。
  13. 前記方法は、
    前記非セキュア・エンティティによって前記割り込みについての前記情報を追加した後、仮想プロセッサを再ディスパッチして前記セキュア・エンティティの動作を再開すること
    をさらに含む、請求項12に記載のシステム。
  14. コンピュータ実行可能命令を含むコンピュータ可読ストレージ媒体を含むコンピュータ・プログラム製品であって、前記コンピュータ実行可能命令は、処理ユニットによって実行されるときに、
    ホスト・サーバ上で実行されている非セキュア・エンティティによってセキュア・エンティティを開始することであって、前記非セキュア・エンティティは、前記セキュア・エンティティのあらゆるデータに直接アクセスすることが禁止されている、開始することと、
    前記非セキュア・エンティティによって、前記ホスト・サーバによって生成される割り込みを前記セキュア・エンティティにインジェクトすることと
    を含み、前記インジェクトすることは、
    前記非セキュア・エンティティによって、前記割り込みについての情報を前記セキュア・エンティティと関連付けられた非セキュア・ストレージの部分に追加することと、
    前記非セキュア・エンティティによって、前記セキュア・エンティティと関連付けられたプロセッサを再開して前記セキュア・エンティティの動作を再開することと、
    セキュア・インターフェース制御によって、前記割り込みを前記セキュア・エンティティにインジェクトすることと
    を含む方法を前記処理ユニットに実行させる、コンピュータ・プログラム製品。
  15. 前記方法は、
    前記非セキュア・エンティティによってインジェクトする前に、前記セキュア・エンティティと関連付けられたプロセッサをアンディスパッチすること
    をさらに含む、請求項14に記載のコンピュータ・プログラム製品。
  16. 前記セキュア・インターフェース制御は、前記セキュア・エンティティについての所定の許可可能な割り込みのリストに基づいて、前記割り込みを前記セキュア・エンティティにインジェクトすることが許可されていると判断する、請求項15に記載のコンピュータ・プログラム製品。
  17. 前記方法は、
    前記非セキュア・エンティティによって前記割り込みについての前記情報を追加した後、仮想プロセッサを再ディスパッチして前記セキュア・エンティティの動作を再開すること
    をさらに含む、請求項15又は請求項16に記載のコンピュータ・プログラム製品。
  18. 前記割り込みについての前記情報は、前記割り込みをインジェクトするための識別子と、前記割り込みと関連付けられた1つ又は複数のパラメータとを含む、請求項14から請求項17までのいずれか1項に記載のコンピュータ・プログラム製品。
  19. コンピュータ実施方法であって、
    ホスト・サーバの非セキュア・エンティティ上で実行されているセキュア・エンティティによって、前記非セキュア・エンティティに転送されるプログラム例外を生成し、プログラム例外を生成する命令を実行することであって、前記非セキュア・エンティティは、前記セキュア・エンティティのあらゆるデータに直接アクセスすることが禁止されている、実行することと、
    セキュア・インターフェース制御によって、前記命令を前記非セキュア・エンティティに提示することと、
    前記非セキュア・エンティティによって、前記命令を実行することと、
    前記非セキュア・エンティティからの前記プログラム例外を前記セキュア・エンティティにインジェクトすることと
    を含み、前記インジェクトすることは、
    前記プログラム例外が前記命令のエミュレーションによって発生していることに基づいて、前記非セキュア・エンティティによって、前記プログラム例外についての情報を前記セキュア・エンティティと関連付けられた非セキュア・ストレージの部分に追加することと、
    前記非セキュア・エンティティによって、前記セキュア・エンティティと関連付けられたプロセッサを再開して前記セキュア・エンティティの動作を再開することと
    を含む、コンピュータ実施方法。
  20. 前記セキュア・インターフェース制御によって前記命令を前記非セキュア・エンティティに提示する前に、前記セキュア・エンティティと関連付けられたプロセッサをアンディスパッチすること
    をさらに含む、請求項19に記載のコンピュータ実施方法。
  21. 前記非セキュア・エンティティによって前記プログラム例外についての前記情報を追加した後、仮想プロセッサを再ディスパッチして前記セキュア・エンティティの動作を再開すること
    をさらに含む、請求項20に記載のコンピュータ実施方法。
  22. 前記プログラム例外についての前記情報は、インジェクトされる前記プログラム例外についての識別子と、前記プログラム例外と関連付けられた1つ又は複数のパラメータとを含む、請求項19又は請求項20に記載のコンピュータ実施方法。
  23. メモリと、
    セキュア・インターフェース制御と、
    前記メモリ及び前記セキュア・インターフェース制御と結合された処理ユニットと
    を含むシステムであって、
    前記処理ユニットは、複数のセキュア・エンティティをホストする非セキュア・エンティティを実行するように構成され、前記非セキュア・エンティティは、セキュア・エンティティのあらゆるデータに直接アクセスすることが禁止されており、前記システムは、前記非セキュア・エンティティからのプログラム例外を前記セキュア・エンティティにインジェクトする方法を実行するように構成され、前記方法は、
    前記セキュア・インターフェース制御によって、命令を前記非セキュア・エンティティに提示することと、
    前記非セキュア・エンティティによって、前記命令を実行することと、
    前記非セキュア・エンティティからの前記プログラム例外を前記セキュア・エンティティにインジェクトすることと
    を含み、前記インジェクトすることは、
    前記プログラム例外が前記命令のエミュレーションによって発生していることに基づいて、前記非セキュア・エンティティによって、前記プログラム例外についての情報を前記セキュア・エンティティと関連付けられた非セキュア・ストレージの部分に追加することと、
    前記非セキュア・エンティティによって、前記セキュア・エンティティと関連付けられたプロセッサを再開して前記セキュア・エンティティの動作を再開することと
    を含む、システム。
  24. 前記方法は、
    前記セキュア・インターフェース制御によって前記命令を前記非セキュア・エンティティに提示する前に、前記セキュア・エンティティと関連付けられたプロセッサをアンディスパッチすること
    をさらに含む、請求項23に記載のシステム。
  25. 前記方法は、
    前記非セキュア・エンティティによって前記プログラム例外についての前記情報を追加した後、仮想プロセッサを再ディスパッチして前記セキュア・エンティティの動作を再開すること
    をさらに含む、請求項23又は請求項24に記載のシステム。
JP2021551766A 2019-03-08 2020-02-27 割り込み及び例外をセキュア仮想マシンにインジェクトする Active JP7465046B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/296,332 US11347529B2 (en) 2019-03-08 2019-03-08 Inject interrupts and exceptions into secure virtual machine
US16/296,332 2019-03-08
PCT/EP2020/055127 WO2020182481A1 (en) 2019-03-08 2020-02-27 Inject interrupts and exceptions into secure virtual machine

Publications (2)

Publication Number Publication Date
JP2022522485A true JP2022522485A (ja) 2022-04-19
JP7465046B2 JP7465046B2 (ja) 2024-04-10

Family

ID=69740340

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021551766A Active JP7465046B2 (ja) 2019-03-08 2020-02-27 割り込み及び例外をセキュア仮想マシンにインジェクトする

Country Status (9)

Country Link
US (1) US11347529B2 (ja)
EP (1) EP3935494B1 (ja)
JP (1) JP7465046B2 (ja)
CN (1) CN113474758A (ja)
AU (1) AU2020233907B2 (ja)
CA (1) CA3132760A1 (ja)
IL (1) IL284903B2 (ja)
TW (1) TWI772747B (ja)
WO (1) WO2020182481A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11308215B2 (en) * 2019-03-08 2022-04-19 International Business Machines Corporation Secure interface control high-level instruction interception for interruption enablement
US10956188B2 (en) 2019-03-08 2021-03-23 International Business Machines Corporation Transparent interpretation of guest instructions in secure virtual machine environment
US20230061511A1 (en) * 2021-08-30 2023-03-02 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5896499A (en) 1997-02-21 1999-04-20 International Business Machines Corporation Embedded security processor
JP2007510198A (ja) 2003-10-08 2007-04-19 ユニシス コーポレーション ホストシステムのパーティション内に実装されているハイパーバイザを使用したコンピュータシステムの準仮想化
US20080059556A1 (en) 2006-08-31 2008-03-06 Egenera, Inc. Providing virtual machine technology as an embedded layer within a processing platform
WO2009123640A1 (en) 2008-04-04 2009-10-08 Hewlett-Packard Development Company, L.P. Virtual machine manager system and methods
US20090292931A1 (en) 2008-05-24 2009-11-26 Via Technology, Inc Apparatus and method for isolating a secure execution mode in a microprocessor
US9100548B2 (en) * 2008-07-17 2015-08-04 Cisco Technology, Inc. Feature enablement at a communications terminal
TWI525452B (zh) 2008-10-02 2016-03-11 美國博通公司 安全處理系統
US8555377B2 (en) 2010-04-29 2013-10-08 High Cloud Security Secure virtual machine
CN102262557B (zh) 2010-05-25 2015-01-21 运软网络科技(上海)有限公司 通过总线架构构建虚拟机监控器的方法及性能服务框架
US8856504B2 (en) 2010-06-07 2014-10-07 Cisco Technology, Inc. Secure virtual machine bootstrap in untrusted cloud infrastructures
CN102811239B (zh) 2011-06-03 2017-09-12 中兴通讯股份有限公司 一种虚拟机系统及其安全控制方法
KR101323858B1 (ko) 2011-06-22 2013-11-21 한국과학기술원 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법
US9218288B2 (en) * 2012-06-15 2015-12-22 International Business Machines Corporation Monitoring a value in storage without repeated storage access
WO2014000253A1 (en) 2012-06-29 2014-01-03 Intel Corporation Methods, systems and apparatus to capture error conditions in lightweight virtual machine managers
US8656482B1 (en) * 2012-08-20 2014-02-18 Bitdefender IPR Management Ltd. Secure communication using a trusted virtual machine
WO2014081611A2 (en) 2012-11-20 2014-05-30 Unisys Corporation Error recovery in securely partitioned virtualization system with dedicated resources
EP3028210B1 (en) 2013-08-02 2020-01-08 OLogN Technologies AG Secure server in a system with virtual machines
US9355050B2 (en) * 2013-11-05 2016-05-31 Qualcomm Incorporated Secure, fast and normal virtual interrupt direct assignment in a virtualized interrupt controller in a mobile system-on-chip
US9672058B2 (en) 2014-03-13 2017-06-06 Unisys Corporation Reduced service partition virtualization system and method
US9483639B2 (en) 2014-03-13 2016-11-01 Unisys Corporation Service partition virtualization system and method having a secure application
US9213569B2 (en) 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
KR20160033517A (ko) 2014-09-18 2016-03-28 한국전자통신연구원 인터럽트 컨트롤러를 위한 하이브리드 가상화 방법
GB2532415A (en) 2014-11-11 2016-05-25 Ibm Processing a guest event in a hypervisor-controlled system
JP6580138B2 (ja) 2014-12-15 2019-09-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation セキュア・オブジェクトをサポートするプロセッサ、方法およびコンピュータ・プログラム
US10235282B2 (en) * 2015-06-01 2019-03-19 Hitachi, Ltd. Computer system, computer, and method to manage allocation of virtual and physical memory areas
GB2539436B (en) 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
CN105184147B (zh) 2015-09-08 2017-11-24 成都博元科技有限公司 云计算平台中的用户安全管理方法
CN105184164B (zh) 2015-09-08 2017-11-24 成都博元科技有限公司 一种数据处理方法
US9792143B1 (en) 2015-10-23 2017-10-17 Amazon Technologies, Inc. Platform secure execution modes
US9841987B2 (en) 2015-12-17 2017-12-12 International Business Machines Corporation Transparent secure interception handling
CN107038128B (zh) * 2016-02-03 2020-07-28 华为技术有限公司 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置
US10303899B2 (en) * 2016-08-11 2019-05-28 Intel Corporation Secure public cloud with protected guest-verified host control
US20180165224A1 (en) 2016-12-12 2018-06-14 Ati Technologies Ulc Secure encrypted virtualization
US11200183B2 (en) * 2017-03-31 2021-12-14 Intel Corporation Scalable interrupt virtualization for input/output devices
WO2019070675A1 (en) 2017-10-03 2019-04-11 Rutgers, The State University Of New Jersey TRACKING INFORMATION FLOW BASED ON VALUES IN PROGICIELS
WO2019127080A1 (en) * 2017-12-27 2019-07-04 Intel Corporation Systems and methods of efficiently interrupting virtual machines
US11693952B2 (en) * 2018-10-31 2023-07-04 Vmware, Inc. System and method for providing secure execution environments using virtualization technology
US11347869B2 (en) 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US20200285501A1 (en) 2019-03-08 2020-09-10 International Business Machines Corporation Communication interface of a secure interface control
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11531627B2 (en) 2019-03-08 2022-12-20 International Business Machines Corporation Secure storage isolation
US11487906B2 (en) 2019-03-08 2022-11-01 International Business Machines Corporation Storage sharing between a secure domain and a non-secure entity
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11640361B2 (en) 2019-03-08 2023-05-02 International Business Machines Corporation Sharing secure memory across multiple security domains
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting

Also Published As

Publication number Publication date
AU2020233907B2 (en) 2022-03-03
WO2020182481A1 (en) 2020-09-17
US11347529B2 (en) 2022-05-31
US20200285495A1 (en) 2020-09-10
CN113474758A (zh) 2021-10-01
TW202101209A (zh) 2021-01-01
CA3132760A1 (en) 2020-09-17
IL284903A (en) 2021-08-31
TWI772747B (zh) 2022-08-01
AU2020233907A1 (en) 2021-06-17
IL284903B2 (en) 2024-03-01
IL284903B1 (en) 2023-11-01
EP3935494C0 (en) 2023-12-13
JP7465046B2 (ja) 2024-04-10
EP3935494A1 (en) 2022-01-12
EP3935494B1 (en) 2023-12-13

Similar Documents

Publication Publication Date Title
US10956188B2 (en) Transparent interpretation of guest instructions in secure virtual machine environment
GB2546609A (en) Transparent secure interception handling
TWI734379B (zh) 用於使用初始程式載入機制啟動安全客體之電腦實施方法、電腦系統及電腦程式產品
JP7465046B2 (ja) 割り込み及び例外をセキュア仮想マシンにインジェクトする
KR20210119466A (ko) 보안 인터페이스 컨트롤 보안 스토리지 하드웨어 태깅
AU2020234887B2 (en) Dispatch of a secure virtual machine
KR20210121197A (ko) 보안 인터페이스 컨트롤의 통신 인터페이스
TWI838460B (zh) 用於安全介面控制件之通信介面之電腦實施的方法、電腦系統及電腦程式產品

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210909

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220512

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220725

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230606

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240216

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240312

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20240312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240326

R150 Certificate of patent or registration of utility model

Ref document number: 7465046

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150