[go: up one dir, main page]

JP2022522849A - セキュア仮想マシンのディスパッチ - Google Patents

セキュア仮想マシンのディスパッチ Download PDF

Info

Publication number
JP2022522849A
JP2022522849A JP2021552188A JP2021552188A JP2022522849A JP 2022522849 A JP2022522849 A JP 2022522849A JP 2021552188 A JP2021552188 A JP 2021552188A JP 2021552188 A JP2021552188 A JP 2021552188A JP 2022522849 A JP2022522849 A JP 2022522849A
Authority
JP
Japan
Prior art keywords
virtual machine
secure
state
mode
memory
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
JP2021552188A
Other languages
English (en)
Other versions
JP7388804B2 (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 JP2022522849A publication Critical patent/JP2022522849A/ja
Application granted granted Critical
Publication of JP7388804B2 publication Critical patent/JP7388804B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/6227Protecting 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 where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本発明の1つまたは複数の実施形態によれば、コンピュータ実装方法は、ホスト・サーバ上で実行されているハイパーバイザによって、仮想マシンのディスパッチのリクエストを受信することを含む。この方法は、ホスト・サーバのセキュア・インターフェース・コントロールによって、仮想マシンのセキュリティ・モードを決定することにより、仮想マシンがセキュア仮想マシンであるとの判定に基づいて、ハイパーバイザがセキュア仮想マシンの任意のデータに直接アクセスできないようにすることをさらに含む。セキュリティ・モードが第1のモードであることに基づいて、セキュア・インターフェース・コントロールは、メモリの非セキュア部分に格納された第1の状態記述子から、仮想マシン状態をロードする。セキュリティ・モードが第2のモードであることに基づいて、セキュア・インターフェース・コントロールは、メモリのセキュア部分に格納された第2の状態記述子から、仮想マシン状態をロードする。

Description

本願は、コンピュータ技術に関し、より詳細には、仮想マシンに関する。
クラウド・コンピューティングは、顧客によるハードウェアの購入も、物理的なサーバの据え付けスペースの提供も必要とすることなく、顧客が仮想マシンを迅速かつ容易に設定できるようにする。顧客は、選好の変化に応じて、仮想マシンを拡大するようにしてもよいし、縮小するようにしてもよい。通常、クラウド・コンピューティングの提供者は、当該提供者のデータセンタに物理的に存在する仮想マシンを設定する。この環境において、顧客の仮想マシンは、ゲストとして動作しており、クラウド提供者は、ホストとして動作するハイパーバイザ・コードを用いて、場合により異なる顧客に属する複数の仮想マシン間でサーバ・リソースを仮想化する。
顧客は、仮想マシン中のデータのセキュリティに不安を感じることが多い。クラウド事業者の信頼性が高くない場合もあるため、顧客は、(ハイパーバイザのような)悪質コードもしくは破損コードによる不正アクセスまたは悪意あるシステム管理者によるデータセンタの運用、あるいはその両方のリスクなく、作業を展開したいと考える。顧客は、そのコードおよびデータとクラウド・コンピューティング提供者との間のほか、そのコードおよびデータと提供者の拠点で動作する他のVMとの間のセキュリティ、ならびに、提供者の管理者に対するセキュリティのほか、マシン上で動作する他のコードにおける潜在的なセキュリティ侵害に対する保護を望ましいと考える。たとえば、顧客は、米国(U.S.)企業等のクラウド・コンピューティング提供者が、場合により召喚状によって、機密文書または私有文書を転用せざるを得なくなる可能性を抑制または回避するために、クラウド提供者がそれぞれのデータにアクセスできないようにすることを求めるかもしれない。
本発明の1つまたは複数の実施形態によれば、コンピュータ実装方法は、ホスト・サーバ上で実行されているハイパーバイザによって、仮想マシンのディスパッチのリクエストを受信することを含む。この方法は、仮想マシンがセキュア仮想マシンであるとの判定に基づいて、ハイパーバイザがセキュア仮想マシンの任意のデータに直接アクセスできないようにすることをさらに含む。この方法は、ホスト・サーバのセキュア・インターフェース・コントロールによって、仮想マシンのセキュリティ・モードを決定することをさらに含む。さらに、セキュリティ・モードが第1のモードであることに基づいて、セキュア・インターフェース・コントロールは、メモリの非セキュア部分に格納された仮想マシンの第1の状態記述子から、仮想マシン状態をロードする。さらに、セキュリティ・モードが第2のモードであることに基づいて、セキュア・インターフェース・コントロールは、メモリのセキュア部分に格納された仮想マシンの第2の状態記述子から、仮想マシン状態をロードする。
1つまたは複数の例において、第2の状態記述子は、セキュア・インターフェース・コントロールによってのみアクセス可能であり、ハイパーバイザはアクセス不可能である。1つまたは複数の例において、第1の状態記述子は、第2の状態記述子へのポインタを含む。1つまたは複数の例において、セキュア・インターフェース・コントロールは、第2の状態記述子に保存されたマスクで条件付きの(qualified with masks)1つまたは複数のセキュア・インターフェース・コントロール制御に基づいて、仮想マシンのセキュリティ・モードを決定する。さらに、1つまたは複数の例において、セキュア・インターフェース・コントロールは、第1の状態記述子および第2の状態記述子中の値の比較によって、仮想マシン状態の正確性を確認する。
本発明の1つまたは複数の実施形態によれば、この方法は、仮想マシンの終了条件の発生を検出することと、セキュア・インターフェース・コントロールによって、セキュリティ・モードが第1のモードであることに基づいて、メモリの非セキュア部分に格納された第1の状態記述子に仮想マシン状態を格納することと、をさらに含む。この方法は、セキュリティ・モードが第2のモードであることに基づいて、メモリのセキュア部分に格納された第2の状態記述子に仮想マシン状態を格納することをさらに含む。
本発明の1つまたは複数の実施形態によれば、この方法は、セキュリティ・モードが第3のモードであることに基づいて、メモリのセキュア部分に格納された第2の状態記述子に仮想マシン状態を格納するとともに、メモリの非セキュア部分に格納された第1の状態記述子に仮想マシン状態からの1つまたは複数の選択パラメータを格納することをさらに含む。
1つまたは複数の例において、セキュア・インターフェース・コントロールは、ミリコードを含む。
本発明の1つまたは複数の実施形態によれば、コンピュータ実装方法は、ホスト・マシン上で実行されているハイパーバイザによって、セキュア仮想マシンをディスパッチすることであって、ハイパーバイザがセキュア仮想マシンの任意のデータに直接アクセスできない、ディスパッチすることを含む。この方法は、セキュア仮想マシンの終了条件の発生に基づいて、ホスト・サーバのセキュア・インターフェース・コントロールによって、セキュア仮想マシンのセキュリティ・モードを決定することをさらに含む。さらに、セキュリティ・モードが第1のモードであることに基づいて、セキュア・インターフェース・コントロールは、メモリの非セキュア部分に格納された第1の状態記述子にセキュア仮想マシンの仮想マシン状態を格納する。さらに、セキュリティ・モードが第2のモードであることに基づいて、セキュア・インターフェース・コントロールは、ハイパーバイザがアクセス不可能なメモリのセキュア部分に格納された第2の状態記述子に仮想マシン状態を格納する。
1つまたは複数の例において、この方法は、セキュリティ・モードが第3のモードであることに基づいて、メモリのセキュア部分に格納された第2の状態記述子に仮想マシン状態を格納するとともに、メモリの非セキュア部分に格納された第1の状態記述子に仮想マシン状態からの1つまたは複数の選択パラメータを格納することを含む。1つまたは複数の例において、セキュア・インターフェース・コントロールは、第2の状態記述子に保存されたマスクで条件付きの1つまたは複数のセキュア・インターフェース・コントロール制御に基づいて、セキュア仮想マシンのセキュリティ・モードを決定する。
上述の特徴は、少なくともシステム、コンピュータ・プログラム製品、およびマシンによっても同様に提供可能である。
本明細書に記載の特徴は、コンピュータ技術を改良し、特に、セキュア仮想マシン(VM)のホスティングの容易化によって、VMをホスティングするコンピュータ・サーバを改良する。ハイパーバイザがもはやVMのデータの制御で信頼されないセキュアVMの場合でも、動作を継続する既存のハイパーバイザとの互換性のため、既存のコンピュータ・サーバと同じハイパーバイザ・インターフェースを通じてセキュアVMをディスパッチすることが依然として好ましい(場合によっては、必要な)オプションである。したがって、本発明の1つまたは複数の実施形態は、ハイパーバイザ・コードが変更を不要とするように容易化し、通常の非セキュアVMのほか、ホスト・コンピュータ・サーバにおいてハイパーバイザのデータ・アクセスを禁止するセキュアVMのディスパッチに(既存のハイパーバイザの)同じコードを使用可能とする。
その他の技術的特徴および利益については、本発明の技術によって実現される。本発明の実施形態および態様を本明細書において詳しく説明するが、これらは、特許請求の範囲に係る主題の一部と考えられる。より深い理解のため、詳細な説明および図面を参照する。
本明細書に記載の独占権の明細は、本明細書の最後の特許請求の範囲において詳細に示すとともに明確に請求する。本発明の実施形態の上記および他の特徴および利点については、添付の図面と併用する以下の詳細な説明から明らかである。
本発明の1つまたは複数の実施形態に係る、クラウド・コンピューティング環境を示した図である。 本発明の1つまたは複数の実施形態に係る、抽象モデル・レイヤを示した図である。 本発明の1つまたは複数の実施形態に係る、システムのブロック図である。 本発明の1つまたは複数の実施形態に係る、ホスト・システムのブロック図である。 本発明の1つまたは複数の実施形態に係る、ハイパーバイザがセキュア仮想マシンを開始する例示的な方法のフローチャートである。 本発明の1つまたは複数の実施形態に係る、状態記述子の例示的な構造を示した図である。 本発明の1つまたは複数の実施形態に係る、状態記述子フィールドの例示的な構造を示した図である。 本発明の1つまたは複数の実施形態に係る、選択セキュリティ・モードに応じてセキュア仮想マシンの終了を容易化する方法のフローチャートである。
本明細書においては、関連する図面を参照して、本発明の種々実施形態を説明する。本発明の範囲から逸脱することなく、本発明の代替実施形態を考案可能である。以下の説明および図面においては、さまざまな接続および位置関係(たとえば、上方(over)、下方(below)、隣接(adjacent)等)が要素間に規定される。これらの接続または位置関係あるいはその両方は、別段の指定のない限り、直接的でも間接的でも可能であり、この点に関して、本発明は何らの制限も意図していない。したがって、エンティティの結合は、直接的または間接的な結合を表すことができ、エンティティ間の位置関係としては、直接的または間接的な位置関係が可能である。さらに、本明細書に記載のさまざまなタスクおよびプロセス・ステップは、本明細書に詳しく記載していない付加的なステップまたは機能を有するより包括的な手順またはプロセスに組み込み可能である。
以下の定義および略語は、特許請求の範囲および本明細書の解釈のために使用するものとする。本明細書において、用語「備える(comprise、comprising)」、「具備する(include、including)」、「有する(have、having)」、「含む(contain、containing)」、またはこれらのその他任意の変形は、非排他的な包含を網羅することが意図される。たとえば、要素の一覧を含む組成物、混合物、プロセス、方法、品目、または装置は、必ずしもこれらの要素だけに限定されず、このような組成物、混合物、プロセス、方法、品目、または装置に対して明示的に一覧化もされていなければ固有でもない他の要素を含み得る。
また、本明細書において、用語「例示的な(exemplary)」は、「一例、事例、または実例として機能する」を意味するものとして使用している。本明細書で「例示的(exemplary)」として記載する如何なる実施形態も設計も、他の実施形態または設計より好ましいものまたは有利なものとしては必ずしも解釈されないものとする。用語「少なくとも1つ(at least one)」および「1つまたは複数(one or more)」は、1以上の任意の整数すなわち1、2、3、4等を含むものと理解可能である。用語「複数(a plurality)」は、2以上の任意の整数すなわち2、3、4、5等を含むものと理解可能である。用語「接続(connection)」は、間接的な「接続(connection)」および直接的な「接続(connection)」の両者を含み得る。
用語「およそ(about)」、「実質的に(substantially)」、「約(approximately)」、およびこれらの変形は、本願の出願時点で利用可能な機器に基づく特定の量の測定と関連付けられた誤差の程度を含むことが意図される。たとえば、「およそ(about)」は、所与の値の±8%、5%、または2%の範囲を含み得る。
簡素化のため、本発明の態様の構成および使用と関連する従来の技術は、本明細書において詳しく説明する場合もあれば、詳しく説明しない場合もある。特に、本明細書に記載のさまざまな技術的特徴を実装するコンピュータ・システムおよび特定のコンピュータ・プログラムのさまざまな態様がよく知られている。したがって、本明細書においては簡素化のため、従来の多くの実施態様詳細について、周知のシステムまたはプロセス、あるいはその両方の詳細を提供することなく、簡単に述べるのみとするか、または、全体を省略する。
通常のクラウド環境に関する技術的課題は、(たとえば、クラウド提供者またはクラウド管理者による)データおよびアルゴリズムに対する潜在的に非セキュアかつ不要なアクセスである。クラウド提供者は通常、ゲストとして動作する顧客のVMを備えたホストとしてハイパーバイザ・コードを実行する。このハイパーバイザ・コードは、複数のVMを単一の物理マシン上で動作させ得るのに必要な仮想化機能を提供する。既存のシステムにおいて、ハイパーバイザ(および、その延長として、クラウド管理者であることが多い)は、顧客のデータおよびアルゴリズムの制限された部分にアクセスして仮想化機能を提供することが必要な状況の場合、当該顧客のデータおよびアルゴリズムにアクセス可能である。ハイパーバイザは、ゲスト・データにアクセスして、ゲスト命令を解釈するとともに、ゲストに代わってI/O動作を実行することを求められる場合が多い。ゲストの機能的な正確性のためには、ハイパーバイザのゲスト・メモリへのアクセスが求められる。したがって、本発明の1つまたは複数の実施形態は、非信頼ハイパーバイザを用いてセキュアVMをディスパッチする方法を提供する。
ホスト・ハイパーバイザの制御下でゲストとして動作する仮想マシンは、当該ゲストの仮想化サービスを透過的に提供するため、当該ハイパーバイザに依拠する。これらのサービスとしては、メモリ管理、命令エミュレーション、および中断処理が挙げられるが、これらに限定されない。本発明の1つまたは複数の実施形態は、セキュア・エンティティと、別の非信頼エンティティとの間で慣例的にこの他方のエンティティによるセキュア・リソースへのアクセスを可能にする任意のインターフェースに適用し得る。たとえば、中断および例外エミュレーションの場合、ハイパーバイザは、通常、ゲストのプレフィックス・エリア(ローコア)に対する読み出しまたは書き込み、あるいはその両方を行う。本明細書において、用語「仮想マシン(VM:virtual machine)」は、物理マシン(コンピュータ機器、プロセッサ等)およびその処理環境(オペレーティング・システム(OS)、ソフトウェア・リソース等)の論理的表現を表す。仮想マシン状態は、下層のホスト・マシン(物理的なプロセッサまたはプロセッサ集合)上で実行されるハイパーバイザにより維持される。ユーザまたはソフトウェア・リソースの観点から、仮想マシンは、それ自体の独立した物理マシンに見える。本明細書において、用語「ハイパーバイザ(hypervisor)」および「VMモニタ(VMM:VM Monitor)」は、同じホスト・マシン上の複数の(および、場合により異なる)OSを用いた複数のVMの実行を管理・許可する処理環境またはプラットフォーム・サービスを表す。VMのディスパッチには、VMの導入プロセスおよびVMの起動(または、開始)プロセスが含まれることを理解されたい。別の例において、VMのディスパッチには、VMの起動(または、開始)プロセスが含まれる(たとえば、VMが過去に導入されて既に存在する場合)。
ただし、セキュア・ゲストを容易化するには技術的課題が存在し、ホスト・ノード等のコンピュータ・サーバが、ハイパーバイザがVMからのデータにアクセスできず、それにより上記のようなサービスを提供できなくなるように、ハイパーバイザとセキュア・ゲストとの間にセキュリティを追加する必要がある。
現時点で利用可能な技術的解決手段において、ハイパーバイザ(たとえば、IBM(登録商標)によるz/VM(登録商標)、またはオープン・ソース・ソフトウェアであるカーネル・ベースの仮想マシン(KVM))は、Start-Interpretive-Execution(SIE)エントリ・ミリコードを呼び出すSIE命令の発行によって、物理的な処理ユニットすなわちホスト・サーバ上で新たなVM仮想CPU(vCPU)をディスパッチする。ミリコードは、プロセッサ・ハードウェアへの拡張として動作する信頼性が高いファームウェアである。SIE命令のオペランドは、状態記述と称する制御ブロックであって、ゲスト状態を含む。既存の実施態様において、この状態記述は、ハイパーバイザのストレージに存在する。SIEエントリ時には、このゲスト状態(汎用および制御レジスタ、ゲスト命令アドレス、およびゲスト・プログラム・ステータス・ワード(PSW)を含む)がミリコードによってハードウェアにロードされる。これにより、ゲストvCPUは、物理的なプロセッサ上で動作可能となる。vCPUがハードウェア上で動作している間、ゲスト状態は、ハードウェアに維持される。ある時点で、ハードウェア/ミリコードは、制御をハイパーバイザに戻す必要がある。これは、SIEイグジットと称することが多い。これが必要となり得るのは、たとえば、このvCPUがハイパーバイザによるエミュレーションを要する命令を実行する場合またはvCPUタイムスライス(すなわち、このvCPUが物理的なプロセッサ上で動作するために割り当てられる時間)が満了となった場合である。SIEイグジット時、任意の所与の時間に単一のvCPUのみをサポートするリソースをハードウェアが有し、その時点ではハイパーバイザ状態をハードウェアにロードする必要があることから、ミリコードは、現時点のゲスト状態を状態記述に保存する。このvCPUがディスパッチされない間、その状態は、状態記述に維持される。この状態記述がハイパーバイザのストレージ内に存在することから、ハイパーバイザは、このような場合、VMに対するデータを制御しており、場合によっては、VM上で実行されている命令を解釈するため、このような制御が必要となる。既存のハイパーバイザは、SIE命令を通じてこのようなインターフェースを使用することによりvCPUをディスパッチすることに依拠する。
ハイパーバイザがもはやVMのデータの制御で信頼されないセキュアVMの場合でも、既存のハイパーバイザとの互換性のため、既存のSIE命令を用いることにより同じハイパーバイザ・インターフェースを通じてセキュアVMをディスパッチすることが依然として好ましい(場合によっては、必要な)オプションである。本発明の1つまたは複数の実施形態は、ハイパーバイザ・コードに対する制限された変更を容易化することによってこのような技術的課題に対処し、同じハイパーバイザ・インフラが、通常の非セキュアvCPUのほか、ハイパーバイザのデータ・アクセスを禁止するセキュアvCPUをディスパッチために使用可能である。本発明の1つまたは複数の実施形態は、ハードウェア上でのセキュアvCPUのディスパッチをサポートするセキュア・インターフェース・コントロール(たとえば、ミリコード)におけるSIE命令の改良された基礎となる実装を使用することにより、既存のハイパーバイザによる既存のSIE命令を用いたセキュアvCPUの開始を容易化する。
1つまたは複数の例において、このような機能は、ミリコードまたは他のハードウェア・モジュール、あるいはその両方を用いることによって提供可能であり、本明細書においては、ハードウェア・モジュールおよびミリコードを「セキュア・インターフェース・コントロール」と総称する。したがって、本発明の1つまたは複数の実施形態は、現時点で非セキュアvCPUのディスパッチおよびアンディスパッチに用いられている同じSIEインターフェースをハイパーバイザがセキュアかつ安全に使用し、セキュアvCPUのディスパッチおよびアンディスパッチをすることを容易化する。
ここで、背景技術を簡単に説明した後、ハイパーバイザによるセキュアVMのディスパッチのために本発明の1つまたは複数の実施形態で使用する特定の特徴を説明する。本開示は、クラウド・コンピューティングに関する詳細な説明を含むが、本明細書に挙げる教示内容の実装は、クラウド・コンピューティング環境に限定されないことが予め了解される。むしろ、本発明の実施形態は、その他任意の種類の既知のコンピューティング環境または今後開発されるコンピューティング環境と併せて実現可能である。
クラウド・コンピューティングは、最小限の管理労力またはサービス提供者との相互作用で迅速に設定および解除し得る設定可能なコンピューティング・リソース(たとえば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの簡便なオンデマンド・ネットワーク・アクセスを可能にするサービス提供のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含み得る。
特性は、以下の通りである。
オンデマンド・セルフサービス:クラウド利用者は、サービス提供者との人間の相互作用の必要なく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージ等のコンピューティング機能を一方的に設定可能である。
広範なネットワーク・アクセス:各機能は、ネットワーク上で利用可能であり、シン/シックを問わず異種クライアント・プラットフォーム(たとえば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソース・プーリング:マルチテナント・モデルを用いることにより、複数の利用者に対して、提供者のコンピューティング・リソースがプールされる。その際、要求に応じて、さまざまな物理的リソースおよび仮想的リソースが動的に割り当ておよび再割り当てされる。利用者は一般的に、提供されるリソースの正確な場所を制御も把握もできないが、より高い抽象化レベル(たとえば、国、州、またはデータセンタ)では、場所を特定し得る点において、ある意味で場所の独立性が存在する。
迅速な柔軟性:各機能は、場合によっては自動的に、高速スケール・アウトするように迅速かつ柔軟に設定され、高速スケール・インするように迅速に解除され得る。利用者にとって、設定に利用可能な機能は、見かけ上は制限なく、いつでも如何なる量でも購入可能である。
サービス測定:クラウド・システムは、サービスの種類(たとえば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適した抽象化レベルでの測定機能を利用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用量は、モニタリング、制御、および報告によって、利用サービスの提供者および利用者の両者に透明性をもたらし得る。
サービス・モデルは、以下の通りである。
サービスとしてのソフトウェア(SaaS):利用者に提供される機能は、クラウド・インフラ上で動作する提供者のアプリケーションを使用する。これらのアプリケーションは、ウェブ・ブラウザ等のシン・クライアント・インターフェースを通じて、さまざまなクライアント機器からアクセス可能である(たとえば、ウェブベースの電子メール)。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、あるいは個々のアプリケーション機能等、下層のクラウド・インフラを管理も制御もしない。ただし、ユーザ固有の限定されたアプリケーション構成の設定については、この限りではない。
サービスとしてのプラットフォーム(PaaS):利用者に提供される機能は、提供者がサポートするプログラミング言語およびツールを用いて作成された利用者作成または取得アプリケーションをクラウド・インフラ上に展開する。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージ等、下層のクラウド・インフラを管理も制御もしない。ただし、展開されたアプリケーションと、場合によっては、アプリケーション・ホスティング環境の構成とを制御する。
サービスとしてのインフラ(IaaS):利用者に提供される機能は、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースを設定するが、利用者は、オペレーティング・システムおよびアプリケーション等、任意のソフトウェアを展開および実行可能である。利用者は、下層のクラウド・インフラを管理も制御もしない。ただし、オペレーティング・システム、ストレージ、展開されたアプリケーションを制御するとともに、場合によっては、選択されたネットワーク・コンポーネント(たとえば、ホストのファイアウォール)を限定的に制御する。
展開モデルは、以下の通りである。
プライベート・クラウド:このクラウド・インフラは、ある組織のために単独で運用される。また、当該組織またはサード・パーティにより管理され、オンプレミスまたはオフプレミスとして存在し得る。
コミュニティ・クラウド:このクラウド・インフラは、複数の組織により共有され、懸案事項(たとえば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス事項)を共有する特定のコミュニティをサポートする。また、当該組織またはサード・パーティにより管理され、オンプレミスまたはオフプレミスとして存在し得る。
パブリック・クラウド:このクラウド・インフラは、一般の人々または大規模な業界団体が利用可能で、クラウド・サービスを販売する組織により所有される。
ハイブリッド・クラウド:このクラウド・インフラは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の組み合わせであり、それぞれに固有のエンティティは維持する一方、データおよびアプリケーションの移植性(たとえば、クラウド間の負荷分散のためのクラウド・バースティング)を実現する標準または個別の技術により結合される。
クラウド・コンピューティング環境は、ステートレス性、低結合、モジュール方式、およびセマンティック相互運用性に焦点を当てたサービス指向型である。クラウド・コンピューティングの中心には、相互接続ノードのネットワークを含むインフラがある。
ここで図1を参照して、この図は、例示的なクラウド・コンピューティング環境50を示している。図示のように、クラウド・コンピューティング環境50は、たとえば個人用デジタル補助装置(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組み合わせ等、クラウド利用者が使用するローカルのコンピュータ機器の通信を可能にする1つまたは複数のクラウド・コンピューティング・ノード10を具備する。ノード10は、互いに通信するようにしてもよい。これらは、上述のプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはその組み合わせ等、1つまたは複数のネットワークにおいて物理的または仮想的にグループ化されていてもよい(図示せず)。これにより、クラウド・コンピューティング環境50は、クラウド利用者がローカルのコンピュータ機器上でリソースを維持する必要のないサービスとしてのインフラ、プラットフォーム、またはソフトウェア、あるいはその組み合わせを提供することができる。図1に示すコンピュータ機器54A~54Nの種類は、例示を意図したものに過ぎず、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、(たとえば、ウェブ・ブラウザを用いることにより)任意の種類のネットワークまたはネットワーク・アドレス指定可能な接続、あるいはその両方において、任意の種類のコンピュータ機器と通信可能であることが了解される。
ここで図2を参照して、この図は、クラウド・コンピューティング環境50(図1)が提供する一組の機能的抽象化レイヤを示している。図2に示すコンポーネント、レイヤ、および機能は、例示を意図したものに過ぎず、本発明の実施形態はこれらに限定されないことが予め了解されるものとする。図示のように、以下のレイヤおよび対応する機能が提供される。
ハードウェア・ソフトウェア・レイヤ60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、記憶装置65、およびネットワーク/ネットワーキング・コンポーネント66が挙げられる。いくつかの実施形態において、ソフトウェア・コンポーネントとしては、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68が挙げられる。
仮想化レイヤ70は、抽象化レイヤを提供し、考え得る仮想エンティティの例としては、仮想マシン71、仮想ストレージ72、仮想ネットワーク73(仮想プライベート・ネットワークを含む)、仮想アプリケーション/オペレーティング・システム74、および仮想クライアント75が挙げられる。
一例において、管理レイヤ80は、後述の機能を提供するようにしてもよい。リソース設定81は、クラウド・コンピューティング環境におけるタスクの実行に利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。測定・価格設定82は、クラウド・コンピューティング環境においてリソースが利用される場合のコスト追跡ならびにこれらリソースの消費に対する請求もしくはインボイスを提供する。一例において、これらのリソースには、アプリケーション・ソフトウェア・ライセンスが含まれ得る。セキュリティは、クラウド利用者およびタスクの識別情報確認のほか、データおよび他のリソースの保護を提供する。ユーザ・ポータル83は、利用者およびシステム管理者に対してクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、所要サービス・レベルを満足するように、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル合意(SLA)計画・実行85は、SLAに従って将来的な要件が見込まれるクラウド・コンピューティング・リソースの事前の取り決めおよび調達を提供する。
ワークロード・レイヤ90は、クラウド・コンピューティング環境を利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発・ライフサイクル管理92、仮想教室教育提供93、データ解析処理94、トランザクション処理95、およびソース・コード・バージョニング96が挙げられる。これらは、一部の例に過ぎず、他の実施形態においては各レイヤに異なるサービスを含み得ることが了解される。
図3は、本発明の1つまたは複数の実施形態に係る、例示的なホスト・ノード10を示している。ホスト・ノード10は、ネットワーク165を介して、1つまたは複数のクライアント機器20A~20Cと連通している。また、クライアント機器20A~20Cは、ホスト・ノード10と直接通信可能である。ホスト・ノード10としては、クラウド・コンピューティング提供者のデータセンタまたはホスト・サーバが可能である。ホスト・ノード10は、1つまたは複数の仮想マシン15(15A~15N)の展開を容易化するハイパーバイザ12を実行する。ホスト・ノード10は、セキュア・インターフェース・コントロール11を含むハードウェア・レイヤまたはミリコード・レイヤ13をさらに具備する。セキュア・インターフェース・コントロール11は、ハイパーバイザ12による仮想マシン15への1つまたは複数のサービスの提供を容易化する1つまたは複数のハードウェア・モジュールおよびミリコードを含む。既存の技術的解決手段においては、ハイパーバイザ12とセキュア・インターフェース・コントロール11との間、セキュア・インターフェース・コントロール11と1つまたは複数のVM15との間、ハイパーバイザ12と1つまたは複数のVM15との間、およびセキュア・インターフェース・コントロール11を通じたハイパーバイザ12からVM15への通信が存在する。セキュアVM環境を容易化するため、本発明の1つまたは複数の実施形態に係るホスト・ノード10は、ハイパーバイザ12と1つまたは複数のVM15との間の如何なる直接通信も含まない。
たとえば、ホスト・ノード10は、クライアント機器20Aによる仮想マシン15A~15Nのうちの1つまたは複数の展開を容易化し得る。仮想マシン15A~15Nは、異なるクライアント機器20A~20Cからの各リクエストに応じて展開されるようになっていてもよい。たとえば、仮想マシン15Aがクライアント機器20Aにより展開され、仮想マシン15Bがクライアント機器20Bにより展開され、仮想マシン15Cがクライアント機器20Cにより展開されるようになっていてもよい。また、ホスト・ノード10は、クライアントによる物理的なサーバの設定(仮想マシンとしては動作しない)を容易化し得る。本明細書に記載の各例では、「仮想マシン」の一部として、ホスト・ノード10におけるリソースの設定を具現化するが、上記技術的解決手段の適用により、物理的なサーバの一部としてリソースを設定可能である。
一例において、クライアント機器20A~20Cは、人物、事業、政府機関、企業内の部署、またはその他任意のエンティティ等、同じエンティティに属していてもよく、また、ホスト・ノード10は、エンティティのプライベート・クラウドとして運用されるようになっていてもよい。この場合、ホスト・ノード10は、エンティティに属するクライアント機器20A~20Cにより展開された仮想マシン15A~15Nを単独でホスティングする。別の例において、クライアント機器20A~20Cは、異なるエンティティに属していてもよい。たとえば、第1のエンティティがクライアント機器20Aを所有する一方、第2のエンティティがクライアント機器20Bを所有していてもよい。この場合、ホスト・ノード10は、異なるエンティティの仮想マシンをホスティングするパブリック・クラウドとして運用されるようになっていてもよい。たとえば、仮想マシン15A~15Nは、仮想マシン15Aが仮想マシン15Bへのアクセスを容易化しないシュラウド(被覆)状態(shrouded manner)にて展開されていてもよい。たとえば、ホスト・ノード10は、IBM z Systems(登録商標)Processor Resource/Systems Manager(PR/SM)Logical Partition(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 z Systems(登録商標)、ORACLE VM SERVER(登録商標)、CITRIX XENSERVER(登録商標)、VMWARE ESX(登録商標)、MICROSOFT HYPER-V(登録商標)、またはその他任意のハイパーバイザであってもよい。ハイパーバイザ12は、ホスト・ノード10上で直接実行されるネイティブ・ハイパーバイザであってもよいし、別のハイパーバイザ上で実行されるホスト・ハイパーバイザであってもよい。
図4は、本発明の1つまたは複数の実施形態に係る、例示的なホスト・ノードの構成要素を示している。ホスト・ノード10は、サーバ・コンピュータ、デスクトップ・コンピュータ、タブレット・コンピュータ、スマートフォン等のコンピュータ、またはハイパーバイザ12を実行し、そして、ハイパーバイザ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は、コントローラ、バッファ(キャッシュ)、ドライバ、リピータ、およびレシーバ等、通信を可能にする付加的な要素(簡素化のため省略)を有していてもよい。
入出力装置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)、ディスク、ディスケット、カートリッジ、カセット等)の一方または組み合わせを含んでいてもよい。さらに、メモリ110は、電子的、磁気的、光学的、または他種の記憶媒体を内蔵していてもよい。なお、メモリ110は、さまざまな構成要素が相互に離れて配置される一方でプロセッサ105によりアクセス可能な分散アーキテクチャを有していてもよい。
メモリ110中の命令には、1つまたは複数の別個のプログラムが含まれていてもよく、プログラムはそれぞれ、論理的機能を実装する実行可能命令の順序付き一覧表を備える。図2の例において、メモリ110中の命令には、ハイパーバイザ12を実行する好適なオペレーティング・システム(OS)が含まれる。オペレーティング・システムは、他のコンピュータ・プログラムの実行を制御するようにしてもよく、また、スケジューリング、入出力制御、ファイルおよびデータ管理、メモリ管理、ならびに通信制御および関連サービスを提供する。一例においては、z System(登録商標)等、ホスト・ノード10の製造業者がハイパーバイザ12を提供するようにしてもよい。z System(登録商標)とは異なる構造のシステムの場合は、ハイパーバイザ12がハードウェア製造業者により提供されることはないが、提供されるクラウド・コンピューティングがVMWARE等のハイパーバイザ提供者からのハイパーバイザ12を使用するようにしてもよい。一例において、物理的なホスト・ノード10の管理者は、製造業者が提供するサービスの適用に必要な場合を除いて、ハイパーバイザ12を修正することはできない。たとえば、ハイパーバイザ12は、ホスト・ノード10の「認定内部コード(LIC:Licensed Internal Code)」またはマイクロコード、あるいはその両方の一部として提供されるようになっていてもよい。
たとえばプロセッサ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は、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット、または他の類似種類のネットワーク環境等のパケット交換網であってもよい。ネットワーク165は、固定無線ネットワーク、無線ローカル・エリア・ネットワーク(LAN)、無線ワイド・エリア・ネットワーク(WAN)、パーソナル・エリア・ネットワーク(PAN)、仮想プライベート・ネットワーク(VPN)、インターネット、または他の好適なネットワーク・システムであってもよく、また、信号を送受信する機器を具備していてもよい。
クライアント機器20Aは、ホスト・ノード10の特定のハードウェアまたはソフトウェア・コンポーネント、あるいはその両方へのアクセスと併せて、対応する仮想マシン15Aの展開をハイパーバイザ12に要求するようにしてもよい。たとえば、クライアント機器20Aは、所定数のプロセッサ、所定量の揮発性メモリ(ランダム・アクセス・メモリ(RAM)等)、所定量の不揮発性メモリ(ストレージ空間等)、またはその他任意のハードウェア・コンポーネントに仮想マシン15Aがアクセスできるように要求してもよい。この代替または追加として、クライアント機器20Aは、対応する一意の識別子により識別される電子回路等の特定のハードウェア・コンポーネントに仮想マシン15Aがアクセスできるように要求してもよい。たとえば、クライアント機器20Aは、特定種類のプロセッサ、コプロセッサ、ネットワーク・カード、またはその他任意のチップもしくは電子回路に仮想マシン15Aがアクセスできるように要求してもよい。一例において、クライアント機器20Aは、電子回路の製造業者が提供する識別子を用いて電子回路を識別するようにしてもよい。一例において、識別子は、バージョン識別子と併用されるようになっていてもよい。この代替または追加として、クライアント機器20Aは、オペレーティング・システム、アプリケーション、基本入出力システム(BIOS)、ブート・イメージ等の特定のソフトウェア・コンポーネント、またはその他任意のソフトウェア・コンポーネントに仮想マシン15Aがアクセスできるように要求してもよい。要求されるソフトウェア・コンポーネントには、ホスト・ノード10のハードウェア・コンポーネント中のファームウェアおよび組み込みプログラムが含まれていてもよい。クライアント機器20Aは、各ソフトウェア・コンポーネントの開発業者/製造業者が提供する一意の識別子を用いて、要求されるソフトウェア・コンポーネントを識別するようにしてもよい。一例において、識別子は、ソフトウェア・コンポーネントのバージョン識別子と併用されるようになっていてもよい。
上述の通り、セキュアVMとなる仮想マシン15Aの場合は、当該仮想マシン15Aと関連付けられたメモリ110、ストレージ120、レジスタ、およびその他任意のデータの部分へのすべての非セキュア・ゲストおよびハイパーバイザ12によるアクセスが禁止される。1つまたは複数の例において、ハイパーバイザ12は、任意所与の常駐セキュア・ゲスト・ページについて、単一のハイパーバイザ(ホスト)DATマッピングによってのみ、関連するホスト絶対アドレスがアクセス可能となるように保証する。すなわち、セキュアVM15Aに割り当てられた任意所与のホスト絶対アドレスに対して、単一のホスト仮想アドレスがマッピングされる。さらに、任意所与のセキュア・ゲスト・ページと関連付けられたハイパーバイザDATマッピング(ホスト仮想-ホスト絶対)は、ページインの間は変化しない。さらに、任意のセキュア・ゲスト・ページと関連付けられたホスト絶対ページは、単一のセキュア・ゲストに対してのみマッピングされる。また、特にセキュアVM15Aの場合は、仮想マシン15間でメモリ/レジスタが共有されない。さらに、1つまたは複数の例において、ハイパーバイザ12は、ストレージ120のセキュア部分をセキュア・インターフェース・コントロール11に割り当てる。このストレージ120のセキュア部分は、セキュア・インターフェース・コントロール11のみが、割り当てられた場合にアクセス可能である。セキュア部分がセキュア・インターフェース・コントロール11に割り当てられた場合は、仮想マシン15またはハイパーバイザ12、あるいはその両方がセキュア部分の内容にアクセスできない。
これらのルールに対する如何なる未遂の違反も、セキュア・インターフェース・コントロール11およびホスト・ノード10により禁止され、警報を発することができる。この警報は、1人または複数の担当者への通知の送信、ホスト・ノード10の動作の停止、1つまたは複数のクライアント機器20からのリクエストの遮断、セキュアVM15(および、その他任意のセキュアVM)の動作の停止等によって発することができる。
図5は、本発明の1つまたは複数の実施形態に係る、ハイパーバイザがセキュアVMを開始する例示的な方法のフローチャートである。この方法は、501において、クライアント機器20AからセキュアVM15Aの開始のリクエストを受信することを含み得る。1つまたは複数の例において、このリクエストは、別のVM15B~15N、ハイパーバイザ12が実行しているコンピュータ・アプリケーション、管理者等のその他任意のソースから受信されるようになっていてもよい。
この方法は、505において、SIE(Start Interpretive Execution)命令のオペランドとして状態記述子(SD)を生成することを含む。SDは、セキュアVMに割り当てられたプロセッサ105上のエミュレーション対象のセキュアvCPU状態、クライアント機器20Aによるリクエストに基づくvCPU状態を規定するフィールドを含む。1つまたは複数の例において、プロセッサ105は、セキュアVM15Aを開始したクライアント20の要求に応じて別のプロセッサ・アーキテクチャの動作をエミュレートとするように指示可能であることから、仮想プロセッサと考えられる。
図6は、本発明の1つまたは複数の実施形態に係る、SDの例示的な構造を示している。1つまたは複数の例においては、セキュアVMおよび非セキュアVMの両者に同じSDフォーマットが用いられる。
本発明の1つまたは複数の実施形態によれば、状態記述子(SD)600は、ディスパッチ対象のVMがセキュアであるか非セキュアであるかを示すのに用いられるモード制御フィールド602を含む。1つまたは複数の例において、モード制御フィールド602としては、ビットで有り得る。
さらに、SD600がセキュアVM用であることをモード制御フィールド602が示す場合は、ディスパッチ対象の特定のセキュアVM15Aのセキュア・ゲスト・ドメインIDを一意識別指定子604が与える。非セキュアVMの場合は、一意識別指定子604が使用されず、ゼロ(または、当該フィールドが使用対象外であることを示すその他任意の値)等のデフォルト値を含み得る。
さらに、SD600(ここでは、親SDと称する)は、セキュアSDブロックへのポインタ608を含む。親SDおよびその対応するセキュアSDは、状態記述対と呼ばれる。セキュアSDへのポインタ608は、セキュアVMの場合は有効値を含み、非セキュアVMがディスパッチ対象である場合はヌル値に設定される。セキュアSDへの有効なポインタ608は、セキュアSDブロック650の記憶場所を指定する。セキュアSDブロック650は、セキュア・インターフェース・コントロール11のみによりアクセスされるように割り当てられたメモリ110のセキュア部分に存在する。セキュアSDブロック650は、親SD600に戻るポインタ658を含む。セキュアSDに用いられるメモリのセキュア部分は、セキュアVM15Aを確立したハイパーバイザ12によって、セキュア・インターフェース・コントロール11への提供/割り当てがなされたものである。メモリのセキュア部分は、セキュア・インターフェース・コントロール11によってのみアクセス可能であり、ハイパーバイザ12はアクセス不可能である。また、関連するゲスト・ドメインIDがタグ付けされていてもよい。他の例においては、メモリのセキュア部分および非セキュア部分間の内容の分離が異なるやり方で実行可能であることに留意するものとする。
さらに、SD600は、1つまたは複数のSDフィールド606を含む。1つまたは複数の例において、セキュアSD650が使用されている場合は、別の一組のSDフィールド606もセキュアSD650に維持される。セキュアSD650からのSDフィールド606は、セキュア・インターフェース・コントロール11によってのみアクセス可能である。
図7は、本発明の1つまたは複数の実施形態に係る、SDフィールドの例示的な構造を示している。これに関連して、用語「状態記述子(state descriptor)」は、状態記述自体のみならず、ポインタが状態記述中に存在し、拡張機能として作用するサテライト・ブロックも含む。図7に示すように、SDフィールド606は、VM汎用レジスタ(GR)402、アクセスレジスタ(AR)404、制御レジスタ(CR)406、VMタイマー408(クロック・コンパレータおよびCPUタイマーを含む)、VMプレフィックス・レジスタ410、論理区画番号(LPN)432、仮想CPU番号(VCN)412、スレッド有効性マスク(TVM)430、プログラム・ステータス・ワード(PSW)、および命令アドレス(IA)414を含み得る。また、特定の命令(たとえば、ロード・プログラム・ステータス・ワード(LPSW)および無効ページ・テーブル・エントリ(IPTE))がホストへのインターセプトを要求するかを示すインターセプト制御(IC)ビット420等の制御情報を含み得る。図示のSDフィールド606は例示であり、本発明の1つまたは複数の実施形態においては異なっていてもよく、たとえば、他のVM状態に対して、他のさまざまなフィールドを含む。
図5のフローチャートを再び参照して、ハイパーバイザ12は、SD600をオペランドとするSIE命令(その実行は、セキュア・インターフェース・コントロール11により行われる)を発行する。SIE(Start Interpretive Execution)命令は、VM15の開始ならびにプロセッサ105および他のコンピューティング・リソースのVM15への割り当てに使用される。510において、セキュア・インターフェース・コントロール11は、SD600のモード制御フィールド602に基づいて、ディスパッチ対象のVMがセキュアであるかを判定する。この場合のように、非セキュアVMがディスパッチ対象であるときには、515において、SD600のSDフィールド606が用いられて非セキュアVM15Bをディスパッチする。SIE命令は、プロセッサ105を、SDに規定のエミュレーション状態とする。
あるいは、セキュアVMがディスパッチ対象である場合(510)、セキュア・インターフェース・コントロール11は、520において、セキュアVMの正確性を確認する。これは、対となっているセキュアSD650と親SD600との間でSDフィールド606に格納されたさまざまな値の整合性を確保することにより実行される。1つまたは複数の例において、SDフィールド606は、整合性確認を受ける情報(たとえば、キー、ハンドル)を含む。たとえば、セキュアSDアドレスは、非セキュアな親SD600から取得される。対をなすセキュア状態記述(650)から取得された親SDアドレス(658)は、元のSIEオペランド・アドレス(すなわち、非セキュアSD600へのポインタ)に一致することが予想される。ドメインIDのような他の情報についても、セキュアSDおよび非セキュアSDの両者に保存されており、両者の値が等しくなるように確認可能である。
セキュアVMがディスパッチ対象であり、非セキュアな親SD600と対をなすセキュアSD650との整合性確認に失敗してセキュアVM15Aの状態が無効と考えられる場合は、ディスパッチが中断され、視聴覚的な通知、メッセージ等の対応する通知(図示せず)が送られる。VM状態の正確性が520で確認された場合、セキュア・インターフェース・コントロール11は、525において、1つまたは複数のビットをハードウェアに設定することにより、セキュア・モードでセキュアVM15Aに割り当てられるものとしてコンピューティング・リソースを構成する。
さらに、530においては、セキュア・ゲスト・ドメインID604がハードウェアおよび他のコンピューティング・リソースにロードされ、セキュアVM15Aのセキュア実行環境が確立される。セキュア実行環境にはさまざまなモードが存在し、通常は、ディスパッチ対象のセキュアVM15Aの状態へのハイパーバイザ12によるアクセスに対する様々な制限を提供する。1つまたは複数の例において、このようなモードは、セキュアVM15Aが関与するワークフローのデバッグを容易化するが、本発明の1つまたは複数の実施形態においては、別の用途も可能である。
たとえば、セキュアVM15Aのセキュア実行環境に関して、透過モード、半透過モード、および全透過モードという3つのデバッグ・セキュリティ動作モードを考える。透過デバッグ・モードは、ハイパーバイザ12がVM15のレジスタのみを確認でき、VM15と関連付けられたセキュア・メモリについては確認できないようにするために使用される。このモードにおいては、非セキュアな親SD600がVM15に対してレジスタを保持し、他のモードで確認(520)に用いられることになるセキュアSD650は使用されない。半透過モードにおいては、VM15のレジスタがセキュアSD650に保存されているものの、命令のインターセプトまたはVM15の中断に際して、セキュア・インターフェース・コントロール11は、非セキュアな親SD600へのレジスタのコピーによって、ハイパーバイザ12に見せるレジスタを決定する。不透過モードにおいては、ゲスト・レジスタが全くハイパーバイザ12に見えず、セキュアSD650においてのみ維持される。
この方法(図5)では、535において、セキュア・インターフェース・コントロール制御に基づいて選択されたデバッグ・セキュリティ・モードを決定する。これらの動作モードを提供するハードウェア制御は、セキュアSD650に保存されたデバッグマスク・フィールドによってマスクされる。すなわち、セキュアSD650は、3つのデバッグ・モードのうちの許可されるものを示す情報を有する。セキュア・インターフェース・コントロール11は、必要に応じて、実行時にセキュアSD650のデバッグマスクを変更可能である。全透過モードが選択された場合は、540において、VM15のディスパッチに非セキュアSD600のSDフィールド606が使用される。この場合、ハイパーバイザは、ディスパッチされたVM15のレジスタ状態全体にアクセス可能である。半透過モードまたは不透過モードが選択された場合は、545および550においてそれぞれ、セキュアSD650のSDフィールド606を用いてセキュアVM15Aがディスパッチされる。その後、終了条件に達するまで(565)、ディスパッチされたVMが実行される(560)。終了条件としては、命令または中断解釈、VMの終了を求めるユーザ・リクエスト等が挙げられる。
図8は、本発明の1つまたは複数の実施形態に係る、選択されたデバッグ・セキュリティ・モードに応じてセキュアVMの終了を容易化する方法のフローチャートである。この方法は、801において、VMの終了条件の発生により開始となる。セキュア・インターフェース・コントロール11は、805において、ディスパッチされたときにVMに対して選択されたデバッグ・セキュリティ・モードを確認する。
全透過モードが選択された場合(805)、VM状態は、非セキュア状態記述600のSDフィールド606に格納される。すなわち、既存の解決手段のように、810において、非セキュアVMと同様にVMが終了となる。VM15と関連付けられたコンピューティング・リソースは、当該コンピューティング・リソースの1つまたは複数のパラメータの設定によって、ハイパーバイザ・モードとなるように構成されている(850)。SD600のSDフィールド606は、非セキュア・メモリに存在し、ハイパーバイザ12がアクセス可能である。
不透過デバッグ・セキュリティ・モードが選択された場合(805)は、VM15がセキュアVMとして終了となり、ハイパーバイザは、VM終了後であれ、如何なるデータ/メモリにもVM状態の他のパラメータにもアクセスできない。したがって、セキュア・インターフェース・コントロール11は、820において、VM状態をセキュアSD650のSDフィールド606に保存するが、これはメモリ110のセキュア部分に存在し、ハイパーバイザ12によるアクセスが不可能である。さらに、セキュア・インターフェース・コントロール11は、822において、VM15と関連付けられたコンピューティング・リソースが非セキュア・モードで動作するように再設定する。
半透過デバッグ・セキュリティ・モードが選択された場合、セキュア・インターフェース・コントロール11は、830において、VM15と関連付けられたタスクの完了にハイパーバイザの補助が要求されたかを判定する。このような補助の要求は、たとえばVM15と関連付けられた1つもしくは複数の値がハイパーバイザ12を介したアクセスを受けてデバッグされる場合またはその他任意のこのようなタスクの場合になされ得る。ハイパーバイザの補助が要求された場合、セキュア・インターフェース・コントロール11は、832において、VM15の終了に際してハイパーバイザがアクセス可能となるVM15と関連付けられたデータを決定する。1つまたは複数の例において、補助の要求には、ハイパーバイザ12がアクセス可能となるべきVM15のレジスタの指定が含まれる。この代替または追加として、補助の要求には、VM15の終了に際してハイパーバイザ12がアクセス可能となるべきVM状態のその他任意のパラメータの指定が含まれていてもよい。
セキュア・インターフェース・コントロール11は、834において、ハイパーバイザ12がアクセス可能となるべきVM状態の決定したパラメータ/データを非セキュアSD600のSDフィールド606に格納する。したがって、SD600がメモリ110の非セキュア部分に存在することから、格納されたデータにハイパーバイザ12がアクセス可能となる。さらに、820において、セキュア・インターフェース・コントロール11は、VM状態をセキュアSD650のSDフィールド606に保存するが、これはメモリ110のセキュア部分に存在し、ハイパーバイザ12によるアクセスが不可能である。さらに、セキュア・インターフェース・コントロール11は、822において、VM15と関連付けられたコンピューティング・リソースが非セキュア・モードで動作するように再設定するとともに、ハイパーバイザ状態をハードウェアにロードする。
ハイパーバイザの補助が要求されない場合(830)、セキュア・インターフェース・コントロール11は、820において、VM状態をセキュアSD650のSDフィールド606に保存するが、これはハイパーバイザ12によるアクセスが不可能である。さらに、セキュア・インターフェース・コントロール11は、822において、VM15と関連付けられたコンピューティング・リソースが非セキュア・モードで動作するように再設定する。
3つのデバッグ・セキュリティ・モードすべてについて、VM状態を保存した後、セキュア・インターフェース・コントロール11は、850において、終了となってハイパーバイザ12に戻り、ホスト・ノード10の別の動作を継続する。
したがって、本発明の1つまたは複数の実施形態は、セキュアVMまたは非セキュアVMとしてのVMのディスパッチおよび終了(アンディスパッチ)を容易化し、さらに、ハイパーバイザまたはシステムの他のVM、あるいはその両方によるアクセスからデータをセキュアに保つ。
本発明の1つまたは複数の実施形態によれば、セキュアVMをディスパッチするためのハイパーバイザまたはセキュアVMコード/アーキテクチャ、あるいはその両方の変更の必要なく、関連付けられたメモリ、レジスタ、および他のデータへのハイパーバイザのアクセスを禁止するセキュアVMをコンピュータ・サーバがホスティング可能である。代替として、本発明の1つまたは複数の実施形態によれば、ミリコードを含むセキュア・インターフェース・コントロールが、状態記述子の改良された構造およびストレージ/メモリのセキュア部分の使用により、データの保護を容易化する。また、当該セキュア・インターフェース・コントロールは、デバッグ・セキュリティ・モードに基づいて、VM状態からのデータを格納し、1つまたは複数のパラメータへのハイパーバイザによるアクセスを可能とするべき場合に、セキュア・インターフェース・コントロール(ミリコード)がそれを実行可能となるようにする。
本発明の1つまたは複数の実施形態は、コンピュータ技術、特に、仮想マシンをホスティングするコンピュータ・サーバに基づく。さらに、本発明の1つまたは複数の実施形態は、VMをホスティングするコンピュータ・サーバによるセキュアVM(ハイパーバイザでさえ、セキュアVMに関連付けられたメモリ、レジスタ、および他のデータへのアクセスが禁止されている)のホスティングを容易化することによって、コンピュータ技術自体、特に、仮想マシンをホスティングするコンピュータ・サーバの動作の改善を容易化する。また、本発明の1つまたは複数の実施形態は、セキュアVMおよびハイパーバイザの分離を容易化するミリコードを含むセキュア・インターフェース・コントロールを使用することにより、コンピュータ・サーバがホスティングするVMのセキュリティを維持することによって、VMをホスティングするコンピュータ・サーバの改善に向けた大きなステップを提供する。セキュア・インターフェース・コントロールは、本明細書に記載の通り、VMの初期化/終了時にVM状態保護への大幅なオーバヘッドの追加なく、セキュリティを容易化する軽い中間動作を提供する。
本発明は、考え得る任意の技術的詳細統合レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるコンピュータ可読プログラム命令が格納された(1つまたは複数の)コンピュータ可読記憶媒体を具備していてもよい。
コンピュータ可読記憶媒体としては、命令実行デバイスが使用する命令を保持および格納し得る有形デバイスが可能である。コンピュータ可読記憶媒体は、たとえば電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意好適な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的な一覧には、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去・プログラム可能リード・オンリー・メモリ(EPROMもしくはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピ(登録商標)・ディスク、パンチカードもしくは命令が記録された溝中の隆起構造等の機械的符号化デバイス、ならびにこれらの任意好適な組み合わせが含まれる。本明細書において、コンピュータ可読記憶媒体は、電波等の自由伝搬電磁波、導波路等の送信媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて送信される電気信号等、本質的に一時的な信号としては解釈されないものとする。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピュータ/処理機器にダウンロードすることも可能であるし、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組み合わせを介して外部コンピュータまたは外部記憶装置にダウンロードすることも可能である。ネットワークには、送信銅ケーブル、送信光ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせが含まれていてもよい。各コンピュータ/処理機器のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を転送して、各コンピュータ/処理機器内のコンピュータ可読記憶媒体に格納する。
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の設定データ、あるいはSmalltalk(登録商標)、C++等のオブジェクト指向プログラミング言語ならびに「C」プログラミング言語もしくは類似のプログラミング言語等の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、独立型ソフトウェア・パッケージとして全部または一部をユーザのコンピュータ上で実行するようにしてもよいし、一部をユーザのコンピュータ上、一部をリモート・コンピュータ上で実行するようにしてもよいし、全部をリモート・コンピュータまたはサーバ上で実行するようにしてもよい。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)等、任意の種類のネットワークを通じてリモート・コンピュータをユーザのコンピュータに接続するようにしてもよいし、(たとえば、インターネット・サービス・プロバイダを用いることによりインターネットを通じて)外部コンピュータに接続するようにしてもよい。いくつかの実施形態においては、本発明の態様を実行するため、コンピュータ可読プログラム命令の状態情報を利用して電子回路をカスタマイズすることにより、たとえばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路がコンピュータ可読プログラム命令を実行するようにしてもよい。
本明細書においては、本発明の実施形態に係る方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本発明の態様を説明している。フローチャート図またはブロック図あるいはその両方の各ブロックならびにフローチャート図またはブロック図あるいはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令により実装可能であることが了解される。
これらのコンピュータ可読プログラム命令は、コンピュータ等のプログラム可能データ処理装置のプロセッサを介した実行によって、フローチャート図またはブロック図あるいはその両方の1つまたは複数のブロックに規定の機能/動作を実装する手段を生成するように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを生成していてもよい。また、これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体が、フローチャート図またはブロック図あるいはその両方の1つまたは複数のブロックに規定の機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ、プログラム可能データ処理装置、または他の機器、あるいはその組み合わせに対して特定の様態で機能するように指示し得る当該コンピュータ可読記憶媒体に格納されていてもよい。
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他の機器上での実行によって、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに規定の機能/動作を実装するように、コンピュータ、他のプログラム可能データ処理装置、または他の機器へのロードによって、一連の動作ステップをコンピュータ、他のプログラム可能装置、または他の機器上で実行させることにより、コンピュータ実装プロセスを生成するようにしてもよい。
図中のフローチャートおよびブロック図は、本発明の種々実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の考え得る実施態様のアーキテクチャ、機能、および動作を示している。この点、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装する1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部を表していてもよい。いくつかの代替実施態様において、ブロックに記載の機能は、図面に記載の順序から外れて発生するようになっていてもよい。たとえば、連続して示す2つのブロックは実際のところ、関与する機能に応じて、実質的に同時に実行されるようになっていてもよいし、場合により逆の順序で実行されるようになっていてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロックならびにブロック図またはフローチャート図あるいはその両方のブロックの組み合わせは、特定の機能または動作を実行する専用ハードウェアベースのシステムにより実装することも可能であるし、専用ハードウェアおよびコンピュータ命令の組み合わせを実行することも可能である。
本発明の種々実施形態の説明は、例示を目的として提示しているものの、何ら網羅的でもなければ、開示の実施形態に限定されることを意図したものでもない。上記実施形態の範囲および思想から逸脱することなく、当業者には、多くの改良および変形が明らかとなるであろう。本明細書において使用する専門用語は、上記実施形態の原理、実際の用途、もしくは市場において見られる技術の技術的改良を最もよく説明すること、または、当業他者が本明細書に開示の実施形態を理解できるようにすることを目的として選定したものである。

Claims (25)

  1. コンピュータ実装方法であって、
    ホスト・サーバ上で実行されているハイパーバイザによって、仮想マシンのディスパッチのリクエストを受信することと、
    前記仮想マシンがセキュア仮想マシンであるとの判定に基づいて、前記ハイパーバイザが前記セキュア仮想マシンの任意のデータに直接アクセスできないようにすることと、
    前記ホスト・サーバのセキュア・インターフェース・コントロールによって、
    前記仮想マシンのセキュリティ・モードを決定すること、
    前記セキュリティ・モードが第1のモードであることに基づいて、メモリの非セキュア部分に格納された前記仮想マシンの第1の状態記述子から、仮想マシン状態をロードすること、および
    前記セキュリティ・モードが第2のモードであることに基づいて、前記メモリのセキュア部分に格納された前記仮想マシンの第2の状態記述子から、前記仮想マシン状態をロードすること、
    を実行することと、
    を含むコンピュータ実装方法。
  2. 前記第2の状態記述子が、前記セキュア・インターフェース・コントロールによってのみアクセス可能であり、前記ハイパーバイザはアクセス不可能である、請求項1に記載のコンピュータ実装方法。
  3. 前記第1の状態記述子が、前記第2の状態記述子へのポインタを含む、請求項1または2に記載のコンピュータ実装方法。
  4. 前記セキュア・インターフェース・コントロールが、前記第2の状態記述子に保存されたマスクで条件付きの1つまたは複数のセキュア・インターフェース・コントロール制御に基づいて、前記仮想マシンの前記セキュリティ・モードを決定する、請求項1ないし3のいずれか一項に記載のコンピュータ実装方法。
  5. 前記セキュア・インターフェース・コントロールが、前記第1の状態記述子および前記第2の状態記述子中の値の比較によって、前記仮想マシン状態の正確性を確認する、請求項1ないし4のいずれか一項に記載のコンピュータ実装方法。
  6. 前記仮想マシンの終了条件の発生を検出することと、
    前記セキュア・インターフェース・コントロールによって、
    前記セキュリティ・モードが前記第1のモードであることに基づいて、前記メモリの前記非セキュア部分に格納された前記第1の状態記述子に前記仮想マシン状態を格納すること、および
    前記セキュリティ・モードが前記第2のモードであることに基づいて、前記メモリの前記セキュア部分に格納された前記第2の状態記述子に前記仮想マシン状態を格納すること、
    を実行することと、
    をさらに含む、請求項1ないし5のいずれか一項に記載のコンピュータ実装方法。
  7. 前記セキュリティ・モードが第3のモードであることに基づいて、前記メモリの前記セキュア部分に格納された前記第2の状態記述子に前記仮想マシン状態を格納するとともに、前記メモリの前記非セキュア部分に格納された前記第1の状態記述子に前記仮想マシン状態からの1つまたは複数の選択パラメータを格納することをさらに含む、請求項6に記載のコンピュータ実装方法。
  8. 前記セキュア・インターフェース・コントロールが、ミリコードを含む、請求項1ないし7のいずれか一項に記載のコンピュータ実装方法。
  9. システムであって、
    メモリと、
    セキュア・インターフェース・コントロールと、
    前記メモリおよび前記セキュア・インターフェース・コントロールと結合され、複数の仮想マシンをホスティングするハイパーバイザを実行するように構成された処理ユニットであって、前記ハイパーバイザが、セキュア仮想マシンの任意のデータへの直接アクセスを禁止され、前記仮想マシンの開始および終了を管理する方法を実行するように構成された、前記処理ユニットとを備え、前記方法が、
    前記ハイパーバイザによって、仮想マシンのディスパッチのリクエストを受信することと、
    前記仮想マシンがセキュア仮想マシンであるとの判定に基づいて、前記ハイパーバイザが前記セキュア仮想マシンの任意のデータに直接アクセスできないようにすることと、
    前記セキュア・インターフェース・コントロールによって、
    前記仮想マシンのセキュリティ・モードを決定すること、
    前記セキュリティ・モードが第1のモードであることに基づいて、メモリの非セキュア部分に格納された前記仮想マシンの第1の状態記述子から、仮想マシン状態をロードすること、および
    前記セキュリティ・モードが第2のモードであることに基づいて、前記メモリのセキュア部分に格納された前記仮想マシンの第2の状態記述子から、前記仮想マシン状態をロードすること、
    を実行することと、
    を含むシステム。
  10. 前記第2の状態記述子が、前記セキュア・インターフェース・コントロールによってのみアクセス可能であり、前記ハイパーバイザはアクセス不可能である、請求項9に記載のシステム。
  11. 前記第1の状態記述子が、前記第2の状態記述子へのポインタを含む、請求項9または10に記載のシステム。
  12. 前記セキュア・インターフェース・コントロールが、前記第2の状態記述子に保存されたマスクで条件付きの1つまたは複数のセキュア・インターフェース・コントロール制御に基づいて、前記仮想マシンの前記セキュリティ・モードを決定する、請求項9ないし11のいずれか一項に記載のシステム。
  13. 前記セキュア・インターフェース・コントロールが、前記第1の状態記述子および前記第2の状態記述子中の値の比較によって、前記仮想マシン状態を確認する、請求項9ないし12のいずれか一項に記載のシステム。
  14. 前記方法が、
    前記仮想マシンの終了条件の発生を検出することと、
    前記セキュア・インターフェース・コントロールによって、
    前記セキュリティ・モードが前記第1のモードであることに基づいて、前記メモリの前記非セキュア部分に格納された前記第1の状態記述子に前記仮想マシン状態を格納すること、および
    前記セキュリティ・モードが前記第2のモードであることに基づいて、前記メモリの前記セキュア部分に格納された前記第2の状態記述子に前記仮想マシン状態を格納すること、
    を実行することと、
    をさらに含む、請求項9ないし13のいずれか一項に記載のシステム。
  15. 前記方法が、前記セキュリティ・モードが第3のモードであることに基づいて、前記メモリの前記セキュア部分に格納された前記第2の状態記述子に前記仮想マシン状態を格納するとともに、前記メモリの前記非セキュア部分に格納された前記第1の状態記述子に前記仮想マシン状態からの1つまたは複数の選択パラメータを格納することをさらに含む、請求項14に記載のシステム。
  16. コンピュータ可読記憶媒体を含むコンピュータ・プログラム製品であって、前記コンピュータ可読記憶媒体が、
    処理ユニットにより実行された場合に、
    ホスト・サーバ上で実行されているハイパーバイザによって、仮想マシンのディスパッチのリクエストを受信することと、
    前記仮想マシンがセキュア仮想マシンであるとの判定に基づいて、前記ハイパーバイザが前記セキュア仮想マシンの任意のデータに直接アクセスできないようにすることと、
    前記ホスト・サーバのセキュア・インターフェース・コントロールによって、
    前記仮想マシンのセキュリティ・モードを決定すること、
    前記セキュリティ・モードが第1のモードであることに基づいて、メモリの非セキュア部分に格納された前記仮想マシンの第1の状態記述子から、仮想マシン状態をロードすること、および
    前記セキュリティ・モードが第2のモードであることに基づいて、前記メモリのセキュア部分に格納された前記仮想マシンの第2の状態記述子から、前記仮想マシン状態をロードすること、
    を実行することと、
    を含む方法を前記処理ユニットに実行させるコンピュータ実行可能命令を含む、コンピュータ・プログラム製品。
  17. 前記第2の状態記述子が、前記セキュア・インターフェース・コントロールによってのみアクセス可能であり、前記ハイパーバイザはアクセス不可能である、請求項16に記載のコンピュータ・プログラム製品。
  18. 前記第1の状態記述子が、前記第2の状態記述子へのポインタを含む、請求項16または17に記載のコンピュータ・プログラム製品。
  19. 前記方法が、
    前記仮想マシンの終了条件の発生を検出することと、
    前記セキュア・インターフェース・コントロールによって、
    前記セキュリティ・モードが前記第1のモードであることに基づいて、前記メモリの前記非セキュア部分に格納された前記第1の状態記述子に前記仮想マシン状態を格納すること、および
    前記セキュリティ・モードが前記第2のモードであることに基づいて、前記メモリの前記セキュア部分に格納された前記第2の状態記述子に前記仮想マシン状態を格納すること、
    を実行することと、
    をさらに含む、請求項16ないし18のいずれか一項に記載のコンピュータ・プログラム製品。
  20. 前記方法が、前記セキュリティ・モードが第3のモードであることに基づいて、前記メモリの前記セキュア部分に格納された前記第2の状態記述子に前記仮想マシン状態を格納するとともに、前記メモリの前記非セキュア部分に格納された前記第1の状態記述子に前記仮想マシン状態からの1つまたは複数の選択パラメータを格納することをさらに含む、請求項19に記載のコンピュータ・プログラム製品。
  21. コンピュータ実装方法であって、
    ホスト・マシン上で実行されているハイパーバイザによって、セキュア仮想マシンをディスパッチすることであって、前記ハイパーバイザが前記セキュア仮想マシンの任意のデータに直接アクセスできない、前記ディスパッチすることと、
    前記セキュア仮想マシンの終了条件の発生に基づいて、前記ホスト・サーバのセキュア・インターフェース・コントロールによって、
    前記セキュア仮想マシンのセキュリティ・モードを決定すること、
    前記セキュリティ・モードが第1のモードであることに基づいて、メモリの非セキュア部分に格納された第1の状態記述子に前記セキュア仮想マシンの仮想マシン状態を格納すること、および
    前記セキュリティ・モードが第2のモードであることに基づいて、前記ハイパーバイザがアクセス不可能な前記メモリのセキュア部分に格納された第2の状態記述子に前記仮想マシン状態を格納すること、
    を実行することと、
    を含むコンピュータ実装方法。
  22. 前記セキュリティ・モードが第3のモードであることに基づいて、前記メモリの前記セキュア部分に格納された前記第2の状態記述子に前記仮想マシン状態を格納するとともに、前記メモリの前記非セキュア部分に格納された前記第1の状態記述子に前記仮想マシン状態からの1つまたは複数の選択パラメータを格納することをさらに含む、請求項21に記載のコンピュータ実装方法。
  23. システムであって、
    メモリと、
    セキュア・インターフェース・コントロールと、
    前記メモリおよび前記セキュア・インターフェース・コントロールと結合され、複数の仮想マシンをホスティングするハイパーバイザを実行するように構成された処理ユニットであって、前記ハイパーバイザが、セキュア仮想マシンの任意のデータへの直接アクセスを禁止され、前記仮想マシンの開始および終了を管理する方法を実行するように構成された、前記処理ユニットとを備え、前記方法が、
    前記ハイパーバイザによって、前記セキュア仮想マシンをディスパッチすることであって、前記ハイパーバイザが前記セキュア仮想マシンの任意のデータに直接アクセスできない、前記ディスパッチすることと、
    前記セキュア仮想マシンの終了条件の発生を検出することと、
    前記セキュア・インターフェース・コントロールによって、
    前記セキュア仮想マシンのセキュリティ・モードを決定すること、
    前記セキュリティ・モードが第1のモードであることに基づいて、メモリの非セキュア部分に格納された第1の状態記述子に前記セキュア仮想マシンの仮想マシン状態を格納すること、および
    前記セキュリティ・モードが第2のモードであることに基づいて、前記ハイパーバイザがアクセス不可能な前記メモリのセキュア部分に格納された第2の状態記述子に前記仮想マシン状態を格納すること、
    を実行することと、
    を含むシステム。
  24. 前記方法が、前記セキュリティ・モードが第3のモードであることに基づいて、前記メモリの前記セキュア部分に格納された前記第2の状態記述子に前記仮想マシン状態を格納するとともに、前記メモリの前記非セキュア部分に格納された前記第1の状態記述子に前記仮想マシン状態からの1つまたは複数の選択パラメータを格納することをさらに含む、請求項23に記載のシステム。
  25. 前記セキュア・インターフェース・コントロールが、前記第2の状態記述子に保存されたマスクで条件付きの1つまたは複数のセキュア・インターフェース・コントロール制御に基づいて、前記セキュア仮想マシンの前記セキュリティ・モードを決定する、請求項23または24に記載のシステム。
JP2021552188A 2019-03-08 2020-02-28 セキュア仮想マシンのディスパッチ Active JP7388804B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/296,336 US11029991B2 (en) 2019-03-08 2019-03-08 Dispatch of a secure virtual machine
US16/296,336 2019-03-08
PCT/EP2020/055311 WO2020182496A1 (en) 2019-03-08 2020-02-28 Dispatch of a secure virtual machine

Publications (2)

Publication Number Publication Date
JP2022522849A true JP2022522849A (ja) 2022-04-20
JP7388804B2 JP7388804B2 (ja) 2023-11-29

Family

ID=69723951

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021552188A Active JP7388804B2 (ja) 2019-03-08 2020-02-28 セキュア仮想マシンのディスパッチ

Country Status (9)

Country Link
US (1) US11029991B2 (ja)
EP (1) EP3935531A1 (ja)
JP (1) JP7388804B2 (ja)
CN (1) CN113544663B (ja)
AU (1) AU2020234887B2 (ja)
BR (1) BR112021017779A2 (ja)
CA (1) CA3132750A1 (ja)
IL (1) IL284851B2 (ja)
WO (1) WO2020182496A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220269524A1 (en) * 2021-02-19 2022-08-25 Volodimir Burlik Method and apparatus for secure data access during machine learning training
US12020059B2 (en) * 2021-08-30 2024-06-25 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution
CN115145696B (zh) * 2022-08-30 2022-11-29 统信软件技术有限公司 确定进程虚拟机运行差异的方法、系统及计算设备
US20240241744A1 (en) * 2023-01-17 2024-07-18 Mediatek Inc. Virtual machine operating system configuration system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090216992A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Dynamic address translation with translation exception qualifier
JP2018502371A (ja) * 2014-12-15 2018-01-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation セキュア・オブジェクトをサポートするプロセッサ、方法およびコンピュータ・プログラム
US20190042296A1 (en) * 2018-08-22 2019-02-07 Prashant Dewan Technologies For Securing Data Structures For Controlling Virtual Machines

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1678583A4 (en) 2003-10-08 2008-04-30 Unisys Corp VIRTUAL DATA CENTER FOR ALLOCATING AND MANAGING SYSTEM RESOURCES BY MULTIPLE NODES
US7401230B2 (en) 2004-03-31 2008-07-15 Intel Corporation Secure virtual machine monitor to tear down a secure execution environment
US8689213B2 (en) 2009-12-14 2014-04-01 Citrix Systems, Inc. Methods and systems for communicating between trusted and non-trusted virtual machines
US8812871B2 (en) 2010-05-27 2014-08-19 Cisco Technology, Inc. Method and apparatus for trusted execution in infrastructure as a service cloud environments
US20140006776A1 (en) 2012-06-29 2014-01-02 Mark Scott-Nash Certification of a virtual trusted platform module
US8700898B1 (en) 2012-10-02 2014-04-15 Ca, Inc. System and method for multi-layered sensitive data protection in a virtual computing environment
US20140143372A1 (en) 2012-11-20 2014-05-22 Unisys Corporation System and method of constructing a memory-based interconnect between multiple partitions
US9065854B2 (en) 2013-10-28 2015-06-23 Citrix Systems, Inc. Systems and methods for managing a guest virtual machine executing within a virtualized environment
US9223574B2 (en) 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
GB2532415A (en) 2014-11-11 2016-05-25 Ibm Processing a guest event in a hypervisor-controlled system
US9880871B2 (en) 2016-02-23 2018-01-30 Red Hat Israel, Ltd. Protection from guest interrupts in a virtual machine function
US9930029B2 (en) 2016-02-25 2018-03-27 Nutanix, Inc. Hypervisor agnostic bidirectional secure channel for guest agent transport
US10057069B2 (en) 2016-02-29 2018-08-21 Red Hat Israel, Ltd. Securing code loading by a guest in a virtual environment
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
US10942757B2 (en) 2017-02-27 2021-03-09 Red Hat, Inc. Virtual machine security through guest-side emulation
US10296741B2 (en) * 2017-07-27 2019-05-21 International Business Machines Corporation Secure memory implementation for secure execution of virtual machines
US10657071B2 (en) * 2017-09-25 2020-05-19 Intel Corporation System, apparatus and method for page granular, software controlled multiple key memory encryption
US11520611B2 (en) * 2018-08-20 2022-12-06 Intel Corporation Secure public cloud using extended paging and memory integrity

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090216992A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Dynamic address translation with translation exception qualifier
JP2018502371A (ja) * 2014-12-15 2018-01-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation セキュア・オブジェクトをサポートするプロセッサ、方法およびコンピュータ・プログラム
US20190042296A1 (en) * 2018-08-22 2019-02-07 Prashant Dewan Technologies For Securing Data Structures For Controlling Virtual Machines

Also Published As

Publication number Publication date
CA3132750A1 (en) 2020-09-17
AU2020234887A1 (en) 2021-06-17
AU2020234887B2 (en) 2022-12-15
JP7388804B2 (ja) 2023-11-29
WO2020182496A1 (en) 2020-09-17
IL284851B2 (en) 2024-03-01
IL284851B1 (en) 2023-11-01
BR112021017779A2 (pt) 2021-11-16
US20200285500A1 (en) 2020-09-10
IL284851A (en) 2021-08-31
CN113544663B (zh) 2025-05-02
CN113544663A (zh) 2021-10-22
EP3935531A1 (en) 2022-01-12
US11029991B2 (en) 2021-06-08

Similar Documents

Publication Publication Date Title
JP7386882B2 (ja) セキュア仮想マシン環境におけるゲスト命令の透過的解釈
CN113544645B (zh) 在安全虚拟机环境中测试存储保护硬件
KR102551936B1 (ko) 보안 인터페이스 컨트롤 스토리지를 위한 호스트 가상 주소 공간
TWI734379B (zh) 用於使用初始程式載入機制啟動安全客體之電腦實施方法、電腦系統及電腦程式產品
AU2020234887B2 (en) Dispatch of a secure virtual machine
JP7465046B2 (ja) 割り込み及び例外をセキュア仮想マシンにインジェクトする
CN113544655A (zh) 安全接口控件安全存储硬件标记
JP7398472B2 (ja) 割り込みイネーブルのためのセキュア・インターフェース制御ハイレベル命令インターセプト
JP7525234B2 (ja) セキュア・インターフェース・コントロールの通信インターフェース
HK40057239A (en) Dispatch of a secure virtual machine
HK40057235A (en) Inject interrupts and exceptions into secure virtual machine
HK40057635A (en) Starting a secure guest using an initial program load mechanism

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210914

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20210902

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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230801

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231019

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20231031

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231114

R150 Certificate of patent or registration of utility model

Ref document number: 7388804

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150