JP2022522702A - 複数のセキュリティ・ドメインにわたるセキュア・メモリの共用 - Google Patents

複数のセキュリティ・ドメインにわたるセキュア・メモリの共用 Download PDF

Info

Publication number
JP2022522702A
JP2022522702A JP2021550114A JP2021550114A JP2022522702A JP 2022522702 A JP2022522702 A JP 2022522702A JP 2021550114 A JP2021550114 A JP 2021550114A JP 2021550114 A JP2021550114 A JP 2021550114A JP 2022522702 A JP2022522702 A JP 2022522702A
Authority
JP
Japan
Prior art keywords
secure
page
access
domain
virtual
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
JP2021550114A
Other languages
English (en)
Other versions
JPWO2020182528A5 (ja
JP7350868B2 (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 JP2022522702A publication Critical patent/JP2022522702A/ja
Publication of JPWO2020182528A5 publication Critical patent/JPWO2020182528A5/ja
Application granted granted Critical
Publication of JP7350868B2 publication Critical patent/JP7350868B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • 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/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

本発明の1つまたは複数の実施形態によれば、コンピュータ実施方法は、メモリのセキュア・ページに対するセキュア・アクセス・リクエストを、コンピュータ・システムのセキュア・インタフェース制御において受け取ることを含む。セキュア・インタフェース制御は、セキュア・ページに関連づけられた仮想アドレス比較無効化状態をチェックすることができる。セキュア・インタフェース制御は、複数の仮想アドレスから同じ絶対アドレスへのマッピングをサポートするため、もしくは、絶対アドレスを使用してアクセスされ、関連仮想アドレスを持たないセキュア・ページをサポートするため、またはその両方のために、仮想アドレス比較無効化状態がセットされていることに基づいて、セキュア・ページにアクセスする際の仮想アドレス・チェックを、セキュア・ページに対して無効化することができる。

Description

本発明は一般にコンピュータ技術に関し、より詳細には、複数のセキュリティ・ドメイン(security domain)にわたってセキュアな(secure)(以後、セキュア)メモリを共用することに関する。
クラウド・コンピューティングおよびクラウド・ストレージは、ユーザが所有するデータを第三者のデータ・センタに記憶し、それらのデータをそのデータ・センタで処理する能力をユーザに提供する。クラウド・コンピューティングは、ハードウェアを購入することまたは物理サーバのための床面積を提供することを顧客に要求することなしに、VMを迅速かつ簡単に顧客に提供する能力を容易にする。顧客は、顧客の嗜好または要件の変化に応じてVMを簡単に拡張または縮小することができる。クラウド・コンピューティングのプロバイダは通常、プロバイダのデータ・センタのサーバ上に物理的に存在するVMを提供する。顧客はしばしば、VM内のデータのセキュリティについて心配する。これは特に、コンピューティング・プロバイダがしばしば、同じサーバ上に2以上の顧客のデータを記憶しているためである。顧客は、顧客が所有するコード/データとクラウド・コンピューティング・プロバイダのコード/データとの間のセキュリティ、および顧客が所有するコード/データとプロバイダのサイトで動作している他のVMのコード/データとの間のセキュリティを要望することがある。さらに、顧客が、プロバイダの管理者からのセキュリティ、および機械上で動作している他のコードによる潜在的なセキュリティ侵害に対するセキュリティを要望することもある。
このような機密に関わる状況を取り扱うために、クラウド・サービス・プロバイダは、適正なデータ分離および論理ストレージ隔離を保証するためのセキュリティ制御を実装することがある。クラウド・インフラストラクチャを実装する際に仮想化が広範に使用されている結果、クラウド・サービスの顧客に対するセキュリティ上の特有の心配が生じている。これは、仮想化が、オペレーティング・システム(OS)と基礎をなすハードウェアとの間の関係を変化させるためである。このハードウェアは、コンピューティングもしくはストレージ・ハードウェアであることがあり、またはネットワーキング・ハードウェアであることさえある。これにより、仮想化は、それ自体が適正に構成、管理および防護されなければならない追加の層として導入される。
一般に、ホスト・ハイパーバイザの制御下でゲストとして動作しているVMは、ゲストに対する仮想化サービスをトランスペアレントに(transparently)提供することを、このハイパーバイザに頼っている。これらのサービスには、メモリ管理、命令エミュレーションおよび割込み処理が含まれる。
メモリ管理の場合、VMは、そのVMのデータを、メモリに存在するようにディスクから移動させ(ページイン)、さらに、そのVMのデータをディスクに戻す(ページアウト)ことができる。そのページがメモリに存在する間、VM(ゲスト)は、動的アドレス変換(dynamic address translation)(DAT)を使用して、メモリ内のページをゲスト仮想アドレスからゲスト絶対アドレスにマップする。さらに、ホスト・ハイパーバイザも、メモリ内のゲスト・ページに対するそれ自体の(ホスト仮想アドレスからホスト絶対アドレスへの)DATマッピングを有しており、ホスト・ハイパーバイザは、ゲストとは独立に、またゲストに対してトランスペアレントに、ゲスト・ページをメモリにページインすることおよびメモリからページアウトすることができる。ハイパーバイザは、2つの別個のゲストVM間でのゲスト・メモリのメモリ分離またはメモリ共用を、ホストDATテーブルによって提供する。ホストはさらに、必要に応じて、ゲストに代わって、ゲスト・メモリにアクセスして、ゲスト・オペレーションをシミュレートすることができる。
本発明の1つまたは複数の実施形態によれば、コンピュータ実施方法(computerimplemented method)は、メモリのセキュア・ページに対するセキュア・アクセス・リクエストを、コンピュータ・システムのセキュア・インタフェース制御(secure interface control)において受け取ることを含む。セキュア・インタフェース制御は、そのセキュア・ページに関連づけられた仮想アドレス比較無効化状態(disable virtual address compare state)をチェックすることができる。セキュア・インタフェース制御は、複数の仮想アドレスから同じ絶対アドレスへのマッピングをサポートするために、仮想アドレス比較無効化状態がセットされていることに基づいて、セキュア・ページにアクセスする際の仮想アドレス・チェックを、セキュア・ページに対して無効化することができる。利点は、複数のセキュリティ・ドメインにわたってセキュア・メモリを共用することを含みうる。
本発明の追加の実施形態または代替実施形態によれば、セキュア・インタフェース制御は、複数のセキュア・ドメインのうちのセキュア・ドメインが共用ページにアクセスすることが許可されていることを、ドメイン識別子に基づいて確認することができる。利点は、ドメイン識別子に基づいて共用を拘束することを含みうる。
本発明の追加の実施形態または代替実施形態によれば、共用ページにアクセスする許可を確かめるために、セキュア・ドメインのドメイン識別子を、共用を許すと識別されたセキュア・ドメインの複数のドメイン識別子と比較することができる。利点は、ドメイン識別子のリストのメンバーに共用を限定することを含みうる。
本発明の追加の実施形態または代替実施形態によれば、セキュア・インタフェース制御は、仮想アドレスを絶対アドレスにマップする動的アドレス変換テーブルの複数のグループがセキュアでないホストによって変更されていないことを確かめることができ、セキュアでないホストは、セキュア・ページにアクセスすることができる複数のセキュア・ドメインのうちのいずれかについて動的アドレス変換テーブルのグループのうちの1つまたは複数のグループを管理するように構成されている。仮想アドレスに対してマップするそれぞれのテーブルは、動的アドレス変換テーブルの1つまたは複数のグループの中の複数の関連テーブルを含む。動的アドレス変換テーブルの1つまたは複数のグループの中で変化を検出したことに基づいて、セキュア・アクセス・リクエストを終了することができる。利点は、セキュアでないホストが、セキュア・ページにアクセスするために使用されるアドレス・マッピングを変更しないことを確かめることを含みうる。
本発明の追加の実施形態または代替実施形態によれば、セキュア・ページに関連づけられたセキュア・ドメイン識別子、セキュア・ページに関連づけられた仮想アドレス・マッピング・データおよび仮想アドレス比較無効化状態を含むゾーン・セキュリティ・テーブルを通して、仮想アドレス比較無効化状態を記憶および更新することができる。利点は、メモリのセキュア・ドメインもしくはページまたはその両方ごとにオプションを追跡および構成することを含みうる。
本発明の追加の実施形態または代替実施形態によれば、セキュア・インタフェース制御を、ファームウェア、ハードウェアもしくは信頼できるソフトウェア、またはファームウェア、ハードウェアおよび信頼できるソフトウェアの組合せとすることができる。セキュア・ページを、ハイパーバイザまたはオペレーティング・システムによって管理されたセキュア仮想機械またはセキュア・コンテナ(secure container)に割り当てることができる。利点は、システム全体の性能に対する関連オペレーション影響が小さいセキュア・インタフェース制御を実現することを含みうる。
本発明の1つまたは複数の実施形態によれば、コンピュータ実施方法は、メモリのセキュア・ページに対するセキュア・アクセス・リクエストを、コンピュータ・システムのセキュア・インタフェース制御において受け取ることを含む。セキュア・インタフェース制御は、そのセキュア・ページに関連づけられた仮想アドレス比較無効化状態をチェックすることができる。セキュア・インタフェース制御は、セキュア・アクセス・リクエストを出したエンティティの許可ステータス、および仮想アドレス比較無効化状態がセットされていることに基づいて、仮想アドレスが指定されていないセキュア・ページへの絶対アドレス・アクセスを有効化することができる。利点は、セキュア・ページを共用するために絶対アドレス・アクセスをサポートすることを含みうる。
本発明の他の実施形態は、上述の方法の特徴を、コンピュータ・システムおよびコンピュータ・プログラム製品に実装する。
本開示の技法によって、追加の特徴および利益が実現される。本明細書には、本発明の他の実施形態および態様が詳細に記載されており、それらは、本発明の部分とみなされる。本発明ならびに本発明の利点および特徴をより十分に理解するためには、以下説明および図面を参照されたい。
本明細書に記載された独占権の詳細は、本明細書の末尾の特許請求の範囲に具体的に示されており、明確に主張されている。本発明の実施形態の上記の特徴および利点ならびにその他の特徴および利点は、添付図面とともに解釈される以下の詳細な説明から明らかである。
本発明の1つまたは複数の実施形態による、ゾーン・セキュリティのためのテーブルを示す図である。 本発明の1つまたは複数の実施形態による、DATを実行するための仮想アドレス空間および絶対アドレス空間を示す図である。 本発明の1つまたは複数の実施形態による、ハイパーバイザの下で動作している仮想機械(virtual machine)(VM)をサポートするネストされた(nested)マルチパートDATを示す図である。 本発明の1つまたは複数の実施形態による、セキュア・ゲスト・ストレージのマッピングを示す図である。 本発明の1つまたは複数の実施形態による、動的アドレス変換(DAT)オペレーションのシステム概略図を示す図である。 本発明の1つまたは複数の実施形態による、セキュア・インタフェース制御メモリのシステム概略図を示す図である。 本発明の1つまたは複数の実施形態による、インポート・オペレーションのプロセス・フローを示す図である。 本発明の1つまたは複数の実施形態による、インポート・オペレーションのプロセス・フローを示す図である。 本発明の1つまたは複数の実施形態による、供与メモリ・オペレーション(donated memory operation)のプロセス・フローを示す図である。 本発明の1つまたは複数の実施形態による、非セキュア(non-secure)ハイパーバイザ・ページからセキュア・インタフェース制御のセキュア・ページへの移行(transition)のプロセス・フローを示す図である。 本発明の1つまたは複数の実施形態による、セキュア・インタフェース制御によってなされたセキュア・ストレージ・アクセスのプロセス・フローを示す図である。 本発明の1つまたは複数の実施形態による、セキュア・インタフェース制御およびハードウェアによるアクセス・タグ付けのプロセス・フローを示す図である。 本発明の1つまたは複数の実施形態による、プログラムおよびセキュア・インタフェース制御によるセキュア・アクセスおよび非セキュア・アクセスをサポートする変換のプロセス・フローを示す図である。 本発明の1つまたは複数の実施形態による、プログラムおよびセキュア・インタフェース制御によるセキュア・ストレージ保護付きのDATのプロセス・フローを示す図である。 本発明の1つまたは複数の実施形態による、仮想アドレス・モード・チェッキングのためのプロセス・フローを示す図である。 本発明の1つまたは複数の実施形態による、アドレス変換によるページ共用のブロック図である。 本発明の1つまたは複数の実施形態による、アドレス変換およびページ複製によるページ共用のブロック図である。 本発明の1つまたは複数の実施形態による、複数のセキュリティ・ドメインにわたってセキュア・メモリを共用するためのプロセス・フローを示す図である。 本発明の1つまたは複数の実施形態によるクラウド・コンピューティング環境を示す図である。 本発明の1つまたは複数の実施形態による抽象化モデル層を示す図である。 本発明の1つまたは複数の実施形態によるシステムを示す図である。 本発明の1つまたは複数の実施形態による処理システムを示す図である。
本明細書に示された図は例示を目的としている。本発明の思想を逸脱しない、図および図に記載されたオペレーションに対する多くの変形態様が存在しうる。例えば、動作を異なる順序で実行することができ、または動作を追加、削除もしくは変更することができる。さらに、用語「結合された(coupled)」およびその変異語は、2つの要素間に通信経路を有することを示し、要素間に介在要素/接続がない要素間の直接接続を含意しない。これらの変形態様は全て本明細書の一部とみなされる。
本発明の1つまたは複数の実施形態は、追加のセキュリティを提供するために、ソフトウェアと機械との間の効率的で軽量のセキュア・インタフェース制御を強化する。
ホスト・ハイパーバイザの制御下でゲストとして動作している仮想機械(VM)は、ゲストに対する仮想化サービスをトランスペアレントに提供することを、このハイパーバイザに頼っている。これらのサービスは、セキュア・エンティティと信頼できない別のエンティティとの間のインタフェースに適用することができる。このインタフェースは従来、この別のエンティティによるセキュア・リソースへのアクセスを許している。前述のとおり、これらのサービスには、限定はされないが、メモリ管理、命令エミュレーションおよび割込み処理が含まれうる。例えば、割込みおよび例外インジェクション(exception injection)のために、ハイパーバイザは通常、ゲストのプレフィックス領域(ロー・コア(low core))に対する読出しもしくは書込みまたはその両方を実行する。本明細書で使用される用語「仮想機械」ないし「VM」は、物理機械(コンピューティング・デバイス、プロセッサなど)およびその処理環境(オペレーティング・システム(OS)、ソフトウェア・リソースなど)の論理表現のことを指している。VMは、基礎をなすホスト機械(物理プロセッサまたは一組のプロセッサ)上で実行されるソフトウェアとして維持される。ユーザまたはソフトウェア・リソースから見ると、VMは、それ自体の独立した物理機械であるように見える。本明細書で使用される用語「ハイパーバイザ」および「VMモニタ(VMM)」は、複数のVMを管理する処理環境またはプラットフォーム・サービスであって、それらのVMが、同じホスト機械上で複数の(時に異なる)OSを使用して実行されることを可能にする処理環境またはプラットフォーム・サービスのことを指している。VMをデプロイすることは、VMのインストール・プロセスおよびVMの起動(または始動)プロセスを含むことを理解すべきである。別の例では、VMをデプロイすることが、VMの起動(または始動)プロセスを含む(例えばVMが以前にインストールされた場合またはVMが既に存在する場合)。
セキュア・ゲストを容易にし、サポートするため、ハイパーバイザとセキュア・ゲストとの間の、ハイパーバイザに依存しない追加のセキュリティであって、ハイパーバイザが、VMからのデータにアクセスすることができず、したがって上で説明したやり方でサービスを提供することができないような態様の追加のセキュリティが求められているという、技術上の課題が存在している。
本明細書に記載されたセキュア実行(secure execution)は、セキュア・ストレージと非セキュア・ストレージの間の分離、および異なるセキュア・ユーザに属するセキュア・ストレージ間の分離を保証するハードウェア機構を提供する。セキュア・ゲストに関しては、「信頼できない」非セキュア・ハイパーバイザとセキュア・ゲストの間に追加のセキュリティが提供される。これを達成するためには、通常はゲストに代わってハイパーバイザが実行する機能の多くを機械に組み込む必要がある。ハイパーバイザとセキュア・ゲストの間にセキュア・インタフェースを提供するために、本明細書では「UV」とも呼ぶ新規のセキュア・インタフェース制御を説明する。本明細書では、用語セキュア・インタフェース制御とUVとが相互に交換可能に使用される。この追加のセキュリティを提供するために、セキュア・インタフェース制御はハードウェアと協力して働く。さらに、より低水準の(lower level)ハイパーバイザが、この信頼できないハイパーバイザに対して仮想化を提供していることがあり、このより低水準のハイパーバイザが、信頼できるコード(例えば信頼できるソフトウェア)の中に実装されている場合には、このハイパーバイザを、セキュア・インタフェース制御の部分とすることもできる。
一例では、セキュア・インタフェース制御が、内部の信頼できるセキュア・ハードウェアもしくはファームウェアまたはその両方の中に実装される。この信頼できるファームウェアは、例えばプロセッサ・ミリコードまたはPR/SM論理分割コード(logical partitioning code)を含むことができる。セキュア・ゲストまたはエンティティに関して、セキュア・インタフェース制御は、セキュア環境の初期化および維持、ならびにハードウェア上でのこれらのセキュア・エンティティのディスパッチの調整を提供する。セキュア・ゲストがデータを能動的に使用しており、セキュア・ゲストがホスト・ストレージに存在する間、セキュア・ゲストは、セキュア・ストレージ内で「妨げるものなしに(in the clear)」保たれる。セキュア・ゲスト・ストレージは、その単一のセキュア・ゲストによってアクセスされ得る。このことは、ハードウェアによって厳しく実行される。すなわち、ハードウェアは、(ハイパーバイザまたは他の非セキュア・ゲストを含む)非セキュア・エンティティまたは異なるセキュア・ゲストがそのデータにアクセスすることを防ぐ。この例では、セキュア・インタフェース制御が、最も低水準のファームウェアの信頼できる部分として動作する。最も低水準のファームウェアまたはミリコードは、実際にハードウェアの拡張であり、複雑な命令および機能、例えばIBMのzArchitecture(R)に定義された複雑な命令および機能を実施するために使用される。ミリコードは、ストレージの全ての部分にアクセスすることができ、セキュア実行の文脈では、この部分が、それ自体のセキュアUVストレージ、非セキュア・ハイパーバイザ・ストレージ、セキュア・ゲスト・ストレージおよび共用ストレージを含む。このことは、このミリコードが、セキュア・ゲストまたはそのゲストをサポートするハイパーバイザが必要とする機能を提供することを可能にする。セキュア・インタフェース制御はさらに、ハードウェアに直接にアクセスすることができ、このことは、ハードウェアが、セキュア・インタフェース制御によって確立された条件の制御の下で、セキュリティ・チェックを効率的に提供することを可能にする。
本発明の1つまたは複数の実施形態によれば、このソフトウェアは、UV呼出し(UVC)命令を使用して、特定の動作を実行するようセキュア・インタフェース制御に要求する。例えば、ハイパーバイザはこのUVC命令を使用して、セキュア・インタフェース制御を初期化すること、セキュア・ゲスト・ドメイン(例えばセキュア・ゲスト構成)を生成すること、およびそのセキュア構成内に仮想CPUを生成することができる。さらに、このUVC命令を使用して、ハイパーバイザ・ページイン・オペレーションまたはハイパーバイザ・ページアウト・オペレーションの部分として、セキュア・ゲスト・ページをインポートすること(復号し、セキュア・ゲスト・ドメインに割り当てること)およびエクスポートすること(暗号化し、セキュア・ゲスト・ページへのホスト・アクセスを許すこと)もできる。さらに、セキュア・ゲストは、ハイパーバイザと共用するストレージを定義し、セキュア・ストレージを共用し、共用ストレージをセキュアにする能力を有する。
多くの他のアーキテクテッド命令(architected instruction)と同様に、これらのUVCコマンドを機械ファームウェアによって実行することができる。この機械はセキュア・インタフェース制御モードには入らず、その代わりに、この機械が現在動作しているモードでセキュア・インタフェース制御の機能を実行する。ハードウェアは、ファームウェア状態とソフトウェア状態の両方を維持し、そのため、これらのオペレーションを取り扱うための文脈の切換え(switch of contexts)は起こらない。この低いオーバヘッドは、ソフトウェア、セキュア・インタフェース制御の複雑さを最小化し低減させ、それにもかかわらず必要なセキュリティ・レベルを提供するような形での、信頼できるファームウェアおよびハードウェアの異なる層間の緊密な協働を可能にする。
本発明の1つまたは複数の実施形態によれば、セキュア・ゲスト環境およびサポート・ハイパーバイザ環境を適正に維持するためにセキュア・インタフェース制御およびハードウェアが必要とする制御ブロック構造のサポートにおいて、ハイパーバイザは、セキュア・ゲスト環境を初期化する間に、セキュア・インタフェース制御にストレージを供与する。その結果として、ハイパーバイザは、1)セキュア・ゲストを動作するゾーンを初期化するため、2)セキュア・ゲスト・ドメインを生成するため、および3)それぞれのドメインで動作するセキュアCPUを生成するための準備において、とりわけ供与に必要なストレージの量を決定するために、照会UVC(query UVC)命令を発する。ストレージが供与された後、そのストレージにはセキュア・ストレージのマークが付けられ、そのストレージは、セキュア・インタフェース制御に属するものとして登録され、非セキュアまたはセキュア・ゲスト・エンティティによるアクセスが禁じられる。このことは、関連エンティティ(例えばセキュア・ゲストCPU、セキュア・ゲスト・ドメインまたはゾーン)が破壊されるときまで事実であり続ける。
一例では、ゾーン特定UV制御ブロックをサポートするUVストレージの第1のセクションが、初期化UVCの一部としてセキュア・インタフェース制御に供与され、このセクションは、本明細書ではUV2ストレージと呼ぶものの中に存在する。(それぞれのセキュア・ゲスト・ドメインに対する)ベース(base)セキュア・ゲスト構成制御ブロックおよび可変(variable)セキュア・ゲスト構成制御ブロックをサポートするUVストレージの第2および第3のセクションは、セキュア・ゲスト構成生成(create-secure-guest-configuration)UVCの一部として供与され、それらのセクションはそれぞれ、UVSおよびUVVストレージの中に存在する。セキュアCPU制御ブロックをサポートするUVストレージの第4のセクションおよび最終セクションもUVS空間に存在し、それらのセクションは、セキュア・ゲストCPU生成(create-secure-guest-CPU)UVCの一部として供与される。これらのそれぞれのエリアが供与されると、セキュア制御インタフェースは、(非セキュア・エンティティがそれらエリアにアクセスすることを防ぐために)それらのエリアにセキュアのマークを付け、さらに、(セキュア・ゲスト・エンティティがそれらのエリアにアクセスすることを防ぐために)それらのエリアを、ゾーン・セキュリティ・テーブルに、セキュア・インタフェース制御に属するものとして登録する。UV空間内のさらなる分離を提供するため、(特定のどのセキュア・ゲスト・ドメインにも関連づけられていない)UV2空間にさらに、固有のUV2セキュア・ドメインのタグが付けられ、その一方で、UVS空間とUVV空間の両方に、関連する特定のセキュア・ゲスト・ドメインのタグが付けられる。この例では、UVV空間がホスト仮想空間に存在し、したがって、ホスト仮想-ホスト絶対マッピングによってUVV空間をさらに識別することができる。
セキュア・インタフェース制御は、全てのストレージ(非セキュア・ストレージ、セキュア・ゲスト・ストレージおよびUVストレージ)にアクセスすることができるが、本発明の1つまたは複数の実施形態は、セキュア・インタフェース制御がUVストレージに非常に特異的にアクセスすることを可能にする機構を提供する。セキュア・ゲスト・ドメイン間の分離を提供する同じハードウェア機構を使用して、本発明の実施形態は、UVストレージ内の同様の分離を提供することができる。このことは、セキュア・インタフェース制御が、意図および指定されたときにUVストレージだけにアクセスすること、セキュア・インタフェース制御が、所望の指定されたセキュア・ゲストに対するセキュア・ゲスト・ストレージだけにアクセスすること、および、セキュア・インタフェース制御が、指定されたときに、非セキュア・ストレージだけにアクセスすることを保証する。すなわち、セキュア・インタフェース制御は、セキュア・インタフェース制御がアクセスしようと意図するストレージを非常に明確に指定することができ、そのため、ハードウェアは、セキュア・インタフェース制御がそのストレージに実際にアクセスすることを保証することができる。さらに、セキュア・インタフェース制御は、セキュア・インタフェース制御が、指定されたセキュア・ゲスト・ドメインに関連づけられたUVストレージだけにアクセスすることを意図していることをさらに指定することができる。
セキュリティを提供するため、ハイパーバイザが、セキュア・ゲスト・データをトランスペアレントにページインおよびページアウトしているときには、ハードウェアとともに働いているセキュア・インタフェース制御が、データの復号および暗号化を提供および保証する。これを達成するため、ハイパーバイザは、ゲスト・セキュア・データをページインおよびページアウトするときに、新たなUVCを発行する必要がある。これらの新たなUVC中にセキュア・インタフェース制御によってセットアップされた制御に基づいて、ハードウェアは、これらのUVCが実際にハイパーバイザによって発行されることを保証する。
この新規のセキュア環境では、ハイパーバイザがセキュア・ページをページアウトしているときにはいつでも、ハイパーバイザは、新たなセキュア・ストレージからの変換(convert from secure storage)(エクスポート)UVCを発行する必要がある。このエクスポートUVCに応答して、セキュア・インタフェース制御は、1)そのページがUVによって「ロックされている」ことを示し、2)そのページを暗号化し、3)そのページを非セキュアにセットし、4)UVロックをリセットする。このエクスポートUVCが完了した後、ハイパーバイザは次に、暗号化されたゲスト・ページをページアウトすることができる。
さらに、ハイパーバイザがセキュア・ページをページインしているときにはいつでも、ハイパーバイザは、新たなセキュア・ストレージへの変換(convert to secure storage)(インポート)UVCを発行しなければならない。このインポートUVCに応答して、UVないしセキュア・インタフェース制御は、1)ハードウェア内で、そのページにセキュア・ページのマークを付け、2)そのページがUVによって「ロックされている」ことを示し、3)そのページを復号し、4)特定のセキュア・ゲスト・ドメインに権限(authority)をセットし、5)UVロックをリセットする。セキュア・エンティティによってアクセスがなされているときにはいつでも、ハードウェアは、変換中にそのページに対する許可チェックを実行する。これらのチェックは、1)このページが実際に、このページにアクセスしようとしているセキュア・ゲスト・ドメインに属していることを確認するためのチェック、および2)このページがゲスト・メモリに存在している間、ハイパーバイザが、このページのホスト・マッピングを変更しなかったことを確かめるためのチェックを含む。ページにセキュア・ページのマークが付けられた後、ハードウェアは、ハイパーバイザまたは非セキュア・ゲストVMによるセキュア・ページへのアクセスを防ぐ。これらの追加の変換ステップは、別のセキュアVMによるアクセスを防ぎ、ハイパーバイザによる再マッピングを防ぐ。
セキュアVMまたはセキュア・コンテナなどのセキュア・エンティティに関して、メモリのそれぞれの絶対ページは通常、1つのセキュアVM(またはコンテナ)に割り当てられ、それらのページが、他のVM/コンテナないしハイパーバイザ/OSによってアクセスされること、または他のVM/コンテナないしハイパーバイザ/OSによって共用されることは許されない。ある種の動作環境では、さまざまなセキュアVM/コンテナ間で論理的に共用された共通のセキュア・メモリ(例えばセキュア・データベースまたはOSカーネル内のセキュア共用エリア)が存在しうる。異なるVM(またはコンテナ)を管理しているハイパーバイザ(またはOS)は、必要なメモリ分離を達成するために、動作しているそれぞれのVM(またはコンテナ)に対して異なるメモリ・アドレス空間を割り当てることができる。動作しているそれぞれのVM(またはコンテナ)は、動作している他のVM(または、コンテナ)から独立したそれ自体のアドレス空間を有するように見えることがある。これらのVM間で共通のストレージを共用するため、ハイパーバイザは、アドレス変換によって、動作しているさまざまなVMからの仮想アドレスを、同じ物理メモリにマップすることができる。セキュアVM/コンテナに関して、ハイパーバイザ/OSは信頼できないことがあり、さまざまなVMからの異なる仮想アドレスを単一の絶対アドレスにマップすることが普通は禁じられていることがある。仮想アドレスから物理アドレスへのマッピングが非セキュア・ハイパーバイザ/OSによって改竄されていないことを確認することに、セキュア・インタフェース制御が責任を負うようにすることができる。重複マッピングのないページ共用の可能な回避法は、複製コピーを使用し、動作しているそれぞれのVMまたはコンテナに1つのコピーを割り当てる方法である。複製イメージを管理する複雑さに共通のセキュア・データベースを共用する複雑さが加わるときには、数千ものVMまたはコンテナ・イメージを動作しているシステムに対してこの手法が実行可能でないことがある。
上述のとおり、セキュア・インタフェース制御が、とりわけアドレス変換完全性を保証することに責任を負うようにすることができる。セキュア・ゲスト・ストレージの他に、ハイパーバイザ・ストレージから供与され、セキュア・インタフェース制御に与えられたメモリ・エリアが存在しうる。これらのエリアには、セキュア・インタフェース制御だけがアクセス可能であることがある。これらのエリアを絶対メモリとして維持および参照することができ、これらのエリアは通常、動的アドレス変換を受けない。これらのセキュア絶対ページは、それらのページに関連づけられた仮想アドレス・マッピングを持たないことがある。本発明の実施形態は、動作しているセキュア・コンテナまたはセキュアVMに適用することができ、セキュアOSとセキュア・コンテナとの間またはハイパーバイザとセキュアVMとの間での共通のセキュア・エリアの共用を可能にする。動作している複数のセキュア・コンテナ/VM間で共用をサポートすることもできる。これについては本明細書でさらに説明される。
次に図1を参照すると、本発明の1つまたは複数の実施形態による、ゾーン・セキュリティのためのテーブル100が概括的に示されている。図1に示されたゾーン・セキュリティ・テーブル100は、セキュア・エンティティによってアクセスされたページへのセキュア・アクセスを保証するために、セキュア・インタフェース制御によって維持され、セキュア・インタフェース制御およびハードウェアによって使用される。ゾーン・セキュリティ・テーブル100は、ホスト絶対アドレス110によって索引付けされている。すなわち、ホスト絶対ストレージのページごとに1つのエントリが存在する。それぞれのエントリは、アクセスしているセキュア・エンティティにそのエントリが属していることを確認するために使用される情報を含む。
さらに、図1に示されているように、ゾーン・セキュリティ・テーブル100は、(このページに関連づけられたセキュア・ドメインを識別する)セキュア・ドメインID120、(このページが、セキュア・インタフェース制御に供与されたものであること、およびこのページが、セキュア・インタフェース制御によって所有されていることを示す)UVビット130、(ホスト絶対ページと定義されたセキュア・インタフェース制御ページが関連ホスト仮想アドレスを有していないときなどのある種の状況においてホスト・アドレス対比較を無効(ディスエーブル)にするために使用される)アドレス比較無効化(disable address compare)(DA)ビット140、(このページが非セキュア・ハイパーバイザによって共用されていることを示す)共用(shared)(SH)ビット150、および(ホスト・アドレス対と呼ばれる、このホスト絶対アドレスに対して登録されたホスト仮想アドレスを示す)ホスト仮想アドレス160を含む。ホスト・アドレス対は、ホスト絶対アドレスおよび登録された関連ホスト仮想アドレスを示すことに留意されたい。ホスト・アドレス対は、ハイパーバイザによってインポートされた後のこのページのマッピングを表し、この比較は、このページがゲストによって使用されている間、ホストがこのページをリマップしないことを保証する。
動的アドレス変換(DAT)は、仮想記憶を実ストレージにマップするために使用される。ハイパーバイザの制御下で、ゲストVMが、ページング可能なゲストとして動作しているとき、ゲストは、DATを使用して、ゲストのメモリに存在するページを管理する。さらに、ホストは、独立してDATを使用して、それらのページがホストのメモリに存在するときに、(ホスト自体のページとともに)それらのゲスト・ページを管理する。ハイパーバイザは、DATを使用して、異なるVM間でのストレージの分離もしくは共用またはその両方を提供し、ハイパーバイザ・ストレージへのゲスト・アクセスを防ぐ。ゲストが非セキュア・モードで動作しているとき、ハイパーバイザは、それらのゲストの全てのストレージにアクセスすることができる。
DATは、1つのアプリケーションを別のアプリケーションから分離することを可能にし、その一方で、それでも、それらのアプリケーションが共通のリソースを共用することを許す。さらに、DATは、VMの実装を可能にする。VMは、OSの新しいバージョンの設計および試験、ならびにアプリケーション・プログラムの並行処理に使用されることがある。仮想アドレスは、仮想ストレージ内の位置を識別する。アドレス空間は、連続する一連の仮想アドレスであり、それらの仮想アドレスは、(DATテーブルを含む)特定の変換パラメータとともに、それぞれの仮想アドレスを関連絶対アドレスに変換することを可能にする。この関連絶対アドレスは、ストレージ内のバイト位置によってそのアドレスを識別する。
DATは、マルチテーブル・ルックアップ(例えば変換ごとの一群のDATテーブル)を使用して、仮想アドレスを関連絶対アドレスに変換する。このテーブル構造は通常、ストレージ・マネージャによって定義および維持される。このストレージ・マネージャは、1つのページをページアウトして例えば別のページを持ち込むことによって、複数のプログラム間で絶対ストレージをトランスペアレントに共用する。そのページがページアウトされたとき、ストレージ・マネージャは、例えば、関連ページ・テーブル内の無効ビットをセットする。1つのプログラムが、ページアウトされたページにアクセスしようとすると、ハードウェアは、しばしばページ・フォールト(page fault)と呼ばれるプログラム割込みをストレージ・マネージャに提示する。これに応答して、ストレージ・マネージャは、リクエストされたページをページインし、無効ビットをリセットする。これは全て、そのプログラムに対してトランスペアレントに実行され、これによって、ストレージ・マネージャは、そのストレージを仮想化し、さまざまな異なるユーザ間でそのストレージを共用することができる。
主ストレージにアクセスするためにCPUによって仮想アドレスが使用されるとき、その仮想アドレスは最初にDATによって実アドレスに変換され、次いでプレフィックス変換(prefixing)によって絶対アドレスに変換される。特定のアドレス空間に対する最も高水準のテーブルの指示(designation)(起点および長さ)は、アドレス空間制御要素(address-space-controlelement)(ASCE)と呼ばれ、この指示が関連アドレス空間を定義する。
本発明の1つまたは複数の実施形態によれば、セキュア・ページにアクセスするためにセキュア・インタフェース制御によってなされる仮想アドレス・チェックを無効化するために、図1のゾーン・セキュリティ・テーブル100内のDAビット140をそれぞれのセキュア・ページに関連づけることができる。DAビット140は、セキュア・インタフェース制御の制御下にあるフィールドとすることができる。DAビット140は、ゾーン・セキュリティ・テーブルにセキュア・ページを登録し、そのセキュア・ページをセキュア・ドメインに割り当てるときに、適切にセットすることができる。セキュア・インタフェース制御がセキュア・ページにアクセスしているときにそのアクセスが許されているかどうかを判定するためにセキュア・インタフェース制御によって実行されるセキュリティ・チェッキングの部分として、DAビットを使用することができる。DAビットが0のとき、セキュア・ページへのアクセスがなれているときにセキュア・インタフェース制御によって実行されるセキュリティ・チェックのこの部分は、そのセキュア・ページに対するDAT変換テーブルが、セキュア・インタフェース制御が知らないうちに変更されていることがないことを保証することである。セキュア・ドメインにページが与えられた後、(ホスト絶対アドレスと結合してホスト・アドレス対を生成する)ホスト仮想アドレス160が、関連セキュア・ドメインID120およびそのセキュア・ページに関連した図1に示された他の属性とともに、そのページに対する図1のゾーン・セキュリティ・テーブル100に登録される。そのページにアクセスするたびに、セキュア・インタフェース制御は、アクセスしている仮想/絶対ホスト・アドレス対とアクセスしているセキュア・ドメインIDの両方を、以前に登録されたアドレス対およびドメインIDと比較することによって、そのアクセスを確認することができる。不一致が存在する場合、セキュア・インタフェース制御は、例外を報告することができる。したがって、DA=0のとき、所与のホスト絶対アドレスには1つのホスト仮想アドレスだけがマップすることができる。
本発明の1つまたは複数の実施形態において説明されているとおり、DAビットのマーク付け(marking)は、それがセットされているときに、多くのホスト仮想アドレスを同じ1つのホスト絶対アドレスにマップすることを可能にすることができる。このDAビット・マーク付けは、セキュア・インタフェース制御の制御下に置くことができ、このDAビット・マーク付けは、他のドメインとページを共用することが許可されたドメイン、およびセキュア共通ページとしてマーク付けされたホスト仮想ページに対してのみセットすることができる。したがって、DA=1のときには、さまざまなセキュア・ドメインにわたって、固有の1対1の仮想アドレス-絶対アドレス・マッピングまたは同じ1対1の仮想アドレス-絶対アドレス・マッピングが存在することができ、それぞれの1対1マッピングは、1つのセキュア・ドメインによって所有されうる。ハイパーバイザによってセキュア・インタフェース制御に供与され、絶対アドレスとして定義された(例えば仮想アドレスが指定されていない)ホスト絶対ページに対してDAビットをセットすることもできる。この両方の使用をサポートして、セキュア・インタフェース制御もしくは他のシステム構成要素またはその両方は、DA=1とマーク付けされたページに対する仮想アドレス・チェックを無視することができる。特定のページにこのマーク付けを関連づけることができ、このマーク付けは、必ずしもセキュア・ドメイン全体に適用されない。さらに、そのページがセキュア・ページであるとき、システムは、許可されたコンテナ/VMだけがその共用セキュア・ページにアクセスすることができることを確認することができる。
次に図2を参照すると、本発明の1つまたは複数の実施形態による、DATを実行するための例示的な仮想アドレス空間202、204および絶対アドレス空間206が概括的に示されている。図2に示された例には、2つの仮想アドレス空間、すなわち(アドレス空間制御要素(ASCE)A 208によって定義された)仮想アドレス空間202、および(ASCE B 210によって定義された)仮想アドレス空間204が存在する。仮想ページA1.V 212a1、A2.V 212a2およびA3.V 212a3は、ストレージ・マネージャによって、マルチテーブル(セグメント230およびページ・テーブル232a、232b)ルックアップにおいて、ASCE A 208を使用して、絶対ページA1.A 220a1、A2.A 220a2およびA3.A 220a3にマップされる。同様に、仮想ページB1.V 214b1およびB2.V 214b2は、2テーブル234および236ルックアップにおいて、ASCE B 210を使用して、それぞれ絶対ページB1.A 222b1およびB2.A 222b2にマップされる。
次に図3を参照すると、本発明の1つまたは複数の実施形態による、ハイパーバイザの下で動作しているVMをサポートするために使用されるネストされたマルチパートDAT変換の一例が概括的に示されている。図3に示された例では、(ゲストASCE(GASCE)A 304によって定義された)ゲストA仮想アドレス空間A 302と(GASCEB 308によって定義された)ゲストB仮想アドレス空間B 306がともに、共用ホスト(ハイパーバイザ)仮想アドレス空間325内に存在する。示されているように、ゲストAに属する仮想ページA1.GV 310a1、A2.GV 310a2およびA3.GV 310a3はそれぞれ、ゲストAストレージ・マネージャによって、GASCEA 304を使用して、ゲスト絶対ページA1.HV 340a1、A2.HV 340a2およびA3.HV 340a3にマップされている。ゲストBに属する仮想ページB1.GV 320b1およびB2.GV 320b2はそれぞれ、独立して、ゲストBストレージ・マネージャによって、GASCEB 308を使用して、ゲスト絶対ページB1.HV 360b1およびB2.HV 360b2にマップされている。この例では、これらのゲスト絶対ページが、共用ホスト仮想アドレス空間325内に直接にマップし、続いて、追加のホストDAT変換を経て、ホスト絶対アドレス空間330にマップする。示されているように、ホスト仮想アドレスA1.HV 340a1、A3.HV 340a3およびB1.HV 360b1は、ホスト・ストレージ・マネージャによって、ホストASCE(HASCE)350を使用して、A1.HA 370a1、A3.HA 370a3およびB1.HA 370b1にマップされている。ゲストAに属するホスト仮想アドレスA2.HV 340a2とゲストBに属するB2.HV 360b2はともに、同じホスト絶対ページAB2.HA 380にマップされている。これによって、これらの2つのゲスト間でデータを共用することができる。ゲストDAT変換の間、それぞれのゲスト・テーブル・アドレスはゲスト絶対アドレスとして取り扱われ、追加のネストされたホストDAT変換を受ける。
本明細書に記載された本発明の実施形態は、セキュア・ゲストおよびUVストレージ保護を提供する。非セキュア・ゲストおよびハイパーバイザによるセキュア・ストレージへのアクセスは禁じられる。ハイパーバイザは、存在する所与のセキュア・ゲスト・ページに関して以下のことが起こることを規定している。関連するホスト絶対アドレスには、単一のハイパーバイザ(ホスト)DATマッピングによってのみアクセス可能である。すなわち、セキュア・ゲストに割り当てられた所与のホスト絶対アドレスにマップする単一のホスト仮想アドレスが存在する。所与のセキュア・ゲスト・ページに関連した(ホスト仮想アドレスからホスト絶対アドレスへの)ハイパーバイザDATマッピングは、そのページがページインされている間、変化しない。セキュア・ゲスト・ページに関連したホスト絶対ページは、単一のセキュア・ゲストに対してマップされる。
本発明の1つまたは複数の実施形態によれば、セキュア・ゲスト間のストレージの共用も禁じられる。ストレージは、単一のセキュア・ゲストとハイパーバイザとの間で、そのセキュア・ゲストの制御下で共用される。UVストレージはセキュア・ストレージであり、セキュア・インタフェース制御によるアクセスは可能だが、ゲスト/ホストはアクセスできない。ストレージは、ハイパーバイザによってセキュア・インタフェース制御に割り振られる。本発明の1つまたは複数の実施形態によれば、これらの規則の違反の企ては、ハードウェアおよびセキュア・インタフェース制御によって禁じられる。
次に図4を参照すると、本発明の1つまたは複数の実施形態による、セキュア・ゲスト・ストレージのマッピングの一例が概括的に示されている。図4は図3に似ているが、図4の例は、セキュア・ゲストAとセキュア・ゲストBとの間のストレージの共用を許さない点が異なる。図3の非セキュア例では、ゲストAに属するホスト仮想アドレスA2.HV 340a2およびゲストBに属するB2.HV 360b2がともに、同じホスト絶対ページAB2.HA 380にマップされている。図4のセキュア・ゲスト・ストレージ例では、ゲストAに属するホスト仮想アドレスA2.HV 340a2がホスト絶対アドレスA2.HA 490aにマップしており、ゲストBに属するB2.HV 360b2がそれ自体のB2.HA 490bにマップしている。この例では、セキュア・ゲスト間の共用がない。
ディスク上にある間、セキュア・ゲスト・ページは暗号化されている。ハイパーバイザがセキュア・ゲスト・ページをページインするとき、ハイパーバイザは、UV呼出し(UVC)を発行する。このUVCは、(共用されていない場合に)そのページにセキュア・ページのマークを付けること、(共用されていない場合に)そのページを復号すること、およびそのページを、適切なセキュア・ゲスト(例えばゲストA)に属しているとして(ゾーン・セキュリティ・テーブルに)登録することを、セキュア・インタフェース制御に実行させる。さらに、セキュア・インタフェース制御は、関連するホスト仮想アドレス(例えばA3.HV 340a3)を、そのホスト絶対ページ(ホスト・アドレス対と呼ばれる)に登録する。正しいUVCを発行することにハイパーバイザが失敗した場合、ハイパーバイザは、そのセキュア・ゲスト・ページにアクセスしようとしたときに例外を受け取る。ハイパーバイザがゲスト・ページをページアウトするときにも、同様のUVCが発行される。このUVCは、(共用されていない場合に)ゲスト・ページを暗号化し、その後、そのゲスト・ページに非セキュア・ページのマークを付け、そのゲスト・ページを、ゾーン・セキュリティ・テーブルに非セキュア・ページとして登録する。
5つの所与のホスト絶対ページK、P、L、MおよびNを有する一例では、ハイパーバイザがそれらのページをページインするときに、セキュア・インタフェース制御によって、それぞれのホスト絶対ページにセキュア・ページのマークが付けられる。このことは、非セキュア・ゲストおよびハイパーバイザがそれらのページにアクセスすることを防ぐ。ホスト絶対ページK、PおよびMは、ハイパーバイザがそれらのページをページインするときに、ゲストAに属するものとして登録され、ホスト絶対ページLおよびNは、ハイパーバイザによってページインされるときに、ゲストBに登録される。共用ページ、すなわち単一のセキュア・ゲストとハイパーバイザとの間で共用されたページは、ページング中に暗号化もまたは復号もされない。それらのページにはセキュア・ページのマークが付けられていない(それらのページはハイパーバイザによるアクセスを許す)が、それらのページは、単一のセキュア・ゲスト・ドメインとともに、ゾーン・セキュリティ・テーブルに登録される。
本発明の1つまたは複数の実施形態によれば、非セキュア・ゲストまたはハイパーバイザが、セキュア・ゲストによって所有されたページにアクセスしようとすると、ハイパーバイザが、セキュア・ストレージ・アクセス(PIC3D)例外を受け取る。これを決定するのに追加の変換ステップは必要ない。
1つまたは複数の実施形態によれば、セキュア・エンティティがページにアクセスしようとすると、ハードウェアが、ストレージが実際にその特定のセキュア・ゲストに属していることを確認する追加の変換チェックを実行する。その特定のセキュア・ゲストに属していない場合には、ハイパーバイザに、非セキュア・アクセス(PIC3E)例外が提示される。さらに、変換中のホスト仮想アドレスが、ゾーン・セキュリティ・テーブル内の登録されたホスト・アドレス対のホスト仮想アドレスと一致しない場合には、セキュア・ストレージ違反(‘3F’x)例外が認識される。ハイパーバイザによる共用を可能にするため、セキュア・ゲストは、変換チェックがアクセスを許す限り、セキュア・ストレージのマークが付けられていないストレージにアクセスすることができる。
次に図5を参照すると、本発明の1つまたは複数の実施形態による、DATオペレーションのシステム概略図500が概括的に示されている。システム概略図500は、ホスト・プライマリ(primary)仮想アドレス空間510およびホスト・ホーム(home)仮想アドレス空間520を含み、これらの空間のページが、ハイパーバイザ(ホスト)絶対アドレス空間530に変換される(例えばホストDAT変換525参照。点線は、DAT変換525によるマッピングを表していることに留意されたい)。例えば、図5は、2つの異なるホスト仮想アドレス空間によるホスト絶対ストレージの共用、2つのゲスト間での、それらのホスト仮想アドレスのうちの1つのホスト仮想アドレスの共用、および、ホスト自体による、それらのホスト仮想アドレスのうちの1つのホスト仮想アドレスの共用を示している。この点に関して、ホスト・プライマリ仮想アドレス空間510およびホスト・ホーム仮想アドレス空間520は、2つのホスト仮想アドレス空間の例であり、これらの2つのホスト仮想アドレス空間はそれぞれ、別個のASCE、すなわちホスト・プライマリASCE(HPASCE)591およびホスト・ホームASCE(HHASCE)592によってアドレスされる。セキュア・インタフェース制御ストレージ(仮想ストレージと実ストレージの両方)は全てハイパーバイザによって供与されたものであり、それらのストレージにはセキュア・ストレージのマークが付けられていることに留意されたい。供与された後、セキュア・インタフェース制御ストレージには、関連するセキュア・エンティティが存在する限り、セキュア・インタフェース制御だけがアクセスすることができる。
示されているとおり、ホスト・プライマリ仮想アドレス空間510は、ゲストA絶対ページA1.HV、ゲストA絶対ページA2.HV、ゲストB絶対ページB1.HVおよびホスト仮想ページH3.HVを含む。ホスト・ホーム仮想アドレス空間520は、セキュア・インタフェース制御仮想ページU1.HV、ホスト仮想ページH1.HVおよびホスト仮想ページH2.HVを含む。
本発明の1つまたは複数の実施形態によれば、全てのセキュア・ゲスト(例えばセキュア・ゲストAおよびセキュア・ゲストB)ストレージが、本明細書に記載されたゾーン・セキュリティ・テーブルに、セキュア・ゲスト構成に属するものとして登録され、さらに、関連するホスト仮想アドレス(例えばA1.HV、A2.HV、B1.HV)が、ホスト・アドレス対の部分として登録される。1つまたは複数の実施形態では、全てのセキュア・ゲスト・ストレージが、ホスト・プライマリ仮想空間でマップされる。さらに、全てのセキュア・インタフェース制御ストレージが、やはりゾーン・セキュリティ・テーブルに、セキュア・インタフェース制御に属するものとして登録され、さらに、全てのセキュア・インタフェース制御ストレージを、関連するセキュア・ゲスト・ドメインに基づいて、ゾーン・セキュリティ・テーブル内で区別することができる。本発明の1つまたは複数の実施形態によれば、UV仮想ストレージがホスト・ホーム仮想空間でマップされ、関連するホスト仮想アドレスが、ホスト・アドレス対の部分として登録される。1つまたは複数の実施形態によれば、UV実ストレージは、関連するホスト仮想マッピングを有しておらず、このことを示すために、(仮想アドレス比較が無効化されていることを示す)ゾーン・セキュリティ・テーブル内のDAビットがセットされる。ホスト・ストレージには非セキュア・ストレージのマークが付けられ、さらに、ホスト・ストレージは、ゾーン・セキュリティ・テーブルに、非セキュア・ストレージとして登録される。
したがって、「ゲスト絶対=ホスト仮想」である場合には、(HPASCE 591によって定義された)ハイパーバイザ(ホスト)プライマリDATテーブルが、ホスト・プライマリ仮想アドレス空間510のページを以下のように変換する。ゲストA絶対ページA1.HVが、セキュア・ゲストAに属するホスト絶対A1.HAにマップされ、ゲストA絶対ページA2.HVが、セキュア・ゲストAに属するホスト絶対A2.HAにマップされ、ゲストB絶対ページB1.HVが、セキュア・ゲストBに属するホスト絶対B1.HAにマップされ、ホスト仮想ページH3.HVが、ホスト絶対ページH3.HA非セキュア・ホストにマップされる(このページは非セキュア・ページであるためホスト・アドレス対は存在しない)。さらに、(HHASCE 592によって定義された)ハイパーバイザ(ホスト)ホームDATテーブルが、ホスト・ホーム仮想アドレス空間520のページを以下のように変換する。セキュア・インタフェース制御仮想ページU1.HVが、セキュアUV仮想ページとして定義されたホスト絶対ページU1.HAにマップされ、ホスト仮想ページH1.HVが、非セキュア・ページとして定義されたホスト絶対ページH1.HAにマップされ、ホスト仮想ページH2.HVが、非セキュア・ページとして定義されたホスト絶対ページH2.HAにマップされる。H1.HAまたはH2.HAは非セキュア・ページであるため、それらのページに関連づけられたホスト・アドレス対は存在しない。
オペレーションの際、セキュア・ゲストが、セキュア・インタフェース制御に割り当てられたセキュア・ページにアクセスしようとした場合には、ハードウェアによって、ハイパーバイザに、セキュア・ストレージ違反(‘3F’X)例外が提示される。非セキュア・ゲストまたはハイパーバイザが、セキュア・ページ(セキュア・インタフェース制御に割り当てられたセキュア・ページを含む)にアクセスしようとした場合には、ハードウェアによって、ハイパーバイザに、セキュア・ストレージ・アクセス(‘3D’X)例外が提示される。あるいは、セキュア・インタフェース制御空間に対して試みられたアクセスに対して、エラー条件を提示することもできる。セキュア・インタフェース制御アクセスに関して、ハードウェアが、セキュア割当ての不整合を検出した場合(例えば、ストレージが、セキュア・インタフェース制御に属するものとしてではなく、セキュア・ゲストに属するものとしてゾーン・セキュリティ・テーブルに登録されている場合、または使用されているホスト・アドレス対と登録された対との間に不整合がある場合)には、チェックが提示される。
言い換えると、ホスト・プライマリ仮想アドレス空間510は、(セキュア・ゲストAに属する)ホスト仮想ページA1.HVおよびA2.HV、ならびに(セキュア・ゲストBに属する)B1.HVを含み、それらのページはそれぞれ、ホスト絶対A1.HA、A2.HAおよびB1.HAにマップする。さらに、ホスト・プライマリ仮想アドレス空間510はホスト(ハイパーバイザ)ページH3.HVを含み、このページは、ホスト絶対H3.HAにマップする。ホスト・ホーム仮想空間520は、2つのホスト仮想ページH1.HVおよびH2.HVを含み、それらのページは、ホスト絶対ページH1.HAおよびH2.HAにマップする。ホスト・プライマリ仮想アドレス空間510とホスト・ホーム仮想アドレス空間520はともに単一のホスト絶対アドレス空間530にマップする。セキュア・ゲストAおよびセキュア・ゲストBに属するストレージ・ページにはセキュア・ページのマークが付けられ、図1に示されたゾーン・セキュリティ・テーブル100に、それらのセキュア・ドメインおよび関連ホスト仮想アドレスとともに登録される。他方、ホスト・ストレージには非セキュアのマークが付けられる。ハイパーバイザがセキュア・ゲストを定義しているとき、ハイパーバイザは、これらのセキュア・ゲストのサポートにおいて必要とされるセキュア制御ブロックに対して使用するために、セキュア・インタフェース制御にホスト・ストレージを供与しなければならない。このストレージは、ホスト絶対空間またはホスト仮想空間に定義することができ、一例では、特に、ホスト・ホーム仮想空間に定義することができる。図5に戻る。ホスト絶対ページU1.HAおよびU2.HAセキュアUV絶対は、ホスト絶対ストレージとして定義されたセキュア・インタフェース制御ストレージである。その結果として、これらのページにはセキュア・ページのマークが付けられ、これらのページは、図1に示されたゾーン・セキュリティ・テーブル100に、セキュア・インタフェース制御に属するものとして、関連するセキュア・ドメインとともに登録される。それらのページはホスト絶対アドレスとして定義されているため、関連するホスト仮想アドレスは存在せず、そのため、ゾーン・セキュリティ・テーブル100内のDAビットがセットされる。
この変換後のハイパーバイザ(ホスト)絶対アドレス空間530の一例が図6に示されている。図6には、本発明の1つまたは複数の実施形態による、セキュア・インタフェース制御メモリに関するシステム概略図600が示されている。システム概略図600は、ハイパーバイザ(ホスト)絶対アドレス空間630を示しており、ハイパーバイザ(ホスト)絶対アドレス空間630は、ホスト絶対ページA2.HAセキュア・ゲストA(A2.HVに対するもの)、ホスト絶対ページB1.HAセキュア・ゲストB(B1.HVに対するもの)、ホスト絶対ページH1.HA非セキュア(ホスト)、ホスト絶対ページH2.HA非セキュア(ホスト)、ホスト絶対ページU3.HAセキュアUV実(HVマッピングなし)、ホスト絶対ページU1.HAセキュアUV仮想(U1.HVに対するもの)、およびホスト絶対ページA1.HAセキュア・ゲストA(A1.HVに対するもの)を含む。
次に図7を参照すると、本発明の1つまたは複数の実施形態による、インポート・オペレーションのためのプロセス・フロー700が概括的に示されている。セキュア・ゲストが、ハイパーバイザによってページアウトされたページにアクセスすると、そのページを再びセキュアにページインするために、プロセス・フロー700に示されたイベントなどの一連のイベントが実行される。プロセス・フロー700はブロック705から始まり、ブロック705で、セキュア・ゲストがゲスト仮想ページにアクセスする。このページは例えば無効であるため、ハードウェアは、プログラム割込みコード(program-interruption-code)11(PIC11)によって示された、ホスト・ページ・フォールトをハイパーバイザに提示する(ブロック715参照)。これを受けて、ハイパーバイザは、このゲスト・ページに対する使用可能な非セキュア・ホスト絶対ページを識別し(ブロック720参照)、暗号化されたゲスト・ページを、識別されたホスト絶対ページにページインする(ブロック725参照)。
次いで、ブロック730で、このホスト絶対ページを、(ホスト仮想アドレスに基づいて)適切なホストDATテーブルにマップする。次いで、ブロック735で、ハイパーバイザ・ホストが、セキュア・ゲストを再びディスパッチする。ブロック740で、セキュア・ゲストが、ゲスト・セキュア・ページに再びアクセスする。ページ・フォールトはもはや存在しないが、このセキュア・ゲスト・アクセスおよびページは、図1のゾーン・セキュリティ・テーブル100内でセキュアのマークが付けられていないため、ブロック745で、ハードウェアは、ハイパーバイザに、非セキュア・ストレージ例外(PIC3E)を提示する。このPIC3Eは、必要なインポートが発行されるまで、ゲストがこのセキュア・ページにアクセスすることを防ぐ。次に、プロセス・フロー700は、図8に接続された「A」に進む。
次に図8を参照すると、本発明の1つまたは複数の実施形態による、インポート・オペレーションを実行するためのプロセス・フロー800が概括的に示されている。行儀のよい(well-behaved)ハイパーバイザ(例えば期待されるやり方でエラーなく実行するハイパーバイザ)は、このPIC3Eに応答して、インポートUVCを発行する(ブロック805参照)。この時点で、インポートするページには、非セキュアのマークが付けられており、このページには、ハイパーバイザ、他の非セキュア・エンティティおよびセキュア・インタフェース制御だけがアクセスできることに留意されたい。セキュア・ゲストはこのページにアクセスできない。
このインポートUVCの一部として、セキュア・インタフェース制御の役目を果たす信頼できるファームウェアが、このページがセキュア・インタフェース制御によって既にロックされているかどうかを知るためのチェックを実行する(判断ブロック810参照)。ロックされている場合、プロセス・フロー800はブロック820に進む。ブロック820で、ハイパーバイザに「使用中(busy)」リターン・コードが返され、ハイパーバイザは、それに応答して遅延し(ブロック825参照)、インポートUVCを再発行する(プロセス・フロー800はブロック805に戻る)。ページがまだロックされていない場合、プロセス・フロー800は判断ブロック822に進む。
判断ブロック822で、セキュア・インタフェース制御は、そのページが、非セキュア・ハイパーバイザによって共用されているページであるかどうかを知るためのチェックを実行する。そのページが共用されている場合には(プロセス・フロー800は判断ブロック824に進み)、セキュア・インタフェース制御が、ホスト絶対アドレスを、関連セキュア・ゲスト・ドメイン、ホスト仮想アドレスとともに、ゾーン・セキュリティ・テーブルに、共用されているとして、登録する。このページは、非セキュアのマークが付けられたままである。これによってインポートUVCは完了し、このページは、この時点で、ゲストによるアクセスに対して使用可能である。処理は進んで、ハイパーバイザがゲストを再びディスパッチし(ブロック830)、セキュア・ゲストは、成功のうちにこのページにアクセスする(ブロック835)。
インポートするホスト仮想ページがハイパーバイザによって共用されていない場合、(プロセス・フロー800はブロック840に進み、)セキュア・インタフェース制御が、そのページにセキュアのマークを付け、もはやハイパーバイザがそのページにアクセスできないようにする。ブロック845で、セキュア・インタフェース制御はそのページをロックし、他のUVCがページ・ステータスを変更できないようにする。ロックをセットした後、(ブロック850で、)セキュア・インタフェース制御は、ゲスト・ページが暗号化される間にゲスト・ページの内容が変化しなかったことを確認する。ゲスト・ページの内容が変化した場合には、ハイパーバイザにエラー・リターン・コードが返され、変化しなかった場合には、セキュア・インタフェース制御がセキュア・ページを復号する。
ブロック855で、セキュア・インタフェース制御は、ページのロックを解除して、他のUVCによるアクセスを可能にし、そのページを、ゾーン・セキュリティ・テーブルに、セキュアとして登録し、適切なゲスト・ドメインおよびホスト仮想アドレスに関連づけて、ホスト・アドレスHV→HA対を完成させる。これによって、ゲストによるアクセスが可能になり、UVCが完了する。
次に図9を参照すると、本発明の1つまたは複数の実施形態による、供与メモリ・オペレーションに関するプロセス・フロー900が概括的に示されている。プロセス・フロー900はブロック905から始まり、ブロック905で、ハイパーバイザが、セキュア・インタフェース制御に照会UVCを発行する。ブロック910で、セキュア・インタフェース制御は、データ(例えば照会UVC)を返す。このデータは、必要なベース・ゾーン特定(zone-specific)ホスト絶対ストレージの量、必要なベース・セキュア・ゲスト・ドメイン特定(secure-guest-domain-specific)ホスト絶対ストレージの量、MBごとに必要な可変セキュア・ゲスト・ドメイン特定(secure-guest-domain-specific)ホスト仮想ストレージの量、もしくは必要なベース・セキュア・ゲストCPU特定(secure-guest-CPU-specific)ホスト絶対ストレージの量、またはこれらの組合せを含むことができる。
ブロック915で、ハイパーバイザが、ベース・ホスト絶対ゾーン特定ストレージを(例えば照会UVCによって返されたサイズに基づいて)予約する。ブロック920で、ハイパーバイザは、セキュア・インタフェース制御に初期化を発行する。この点に関して、ハイパーバイザは、ゾーン全体に対するセキュア・ゲスト構成間の調整に必要なUV制御ブロックのための供与されたストレージ(以後、供与ストレージ)を提供する初期化UVCを発行することができる。この初期化UVCは、ベース・ゾーン特定ストレージ起点を指定する。
ブロック925で、セキュア・インタフェース制御は、供与ストレージをUVに登録し、供与ストレージにセキュアのマークを付けることにより、初期化(例えば初期化UVC)を実施する。この初期化UVCに関して、セキュア・インタフェース制御は、供与ストレージにセキュアのマークを付け、その供与ストレージの一部をゾーン・セキュリティ・テーブルに割り当て、その供与ストレージを、UVが使用するために、ゾーン・セキュリティ・テーブルに、固有のセキュア・ドメインとともに、関連セキュア・ゲスト・ドメインは含めずに、関連ホスト仮想アドレス対を持たないものとして、登録することができる。
ブロック930で、ハイパーバイザは、ストレージ(例えばベースおよび可変セキュア・ゲスト・ドメイン特定ストレージ)を予約する。例えば、ハイパーバイザは、ベースおよび(例えばセキュア・ゲスト・ドメイン・ストレージのサイズに基づく)可変セキュア・ゲスト・ドメイン特定ストレージ(例えば照会UVCによって返されたサイズ)を予約する。ブロック935で、ハイパーバイザは、構成生成(create configuration)をセキュア・インタフェース制御に発行する。この点に関して、ハイパーバイザは、ベースおよび可変セキュア・ゲスト・ドメイン特定ストレージ起点を指定するセキュア・ゲスト構成生成UVCを発行することができる。さらに、このセキュア・ゲスト構成生成UVCは、このセキュア・ゲスト構成をサポートするために必要なUV制御ブロックのための供与ストレージを提供する。
ブロック940で、セキュア・インタフェース制御は、構成生成(例えばセキュア・ゲスト構成生成UVC)を実施する。このセキュア・ゲスト構成生成UVCに関して、セキュア・インタフェース制御は、供与ストレージにセキュアのマークを付け、この供与ストレージを、UVが使用するために、ゾーン・セキュリティ・テーブルに登録し、この供与ストレージを、関連セキュア・ゲスト・ドメインとともに登録することができる。ベース(ホスト絶対)供与ストレージは、関連ホスト仮想アドレス対を持たないものとして登録される。可変(ホスト仮想)供与ストレージは、関連ホスト仮想アドレス対とともに登録される。
ブロック945で、ハイパーバイザが、ベース・セキュア・ゲストCPU特定ストレージ(例えば照会UVによって返されたサイズ)を予約する。ブロック950で、ハイパーバイザはストレージ起点を指定する。例えば、ハイパーバイザは、ベース・セキュア・ゲストCPU特定ストレージ起点を指定するセキュア・ゲストCPU生成を、UVに発行する。ブロック955で、セキュア・インタフェース制御が、CPU生成(例えばセキュア・ゲストCPU生成UVC)を実施する。このセキュア・ゲストCPU生成UVCに関して、セキュア・インタフェース制御は、供与ストレージにセキュアのマークを付け、その供与ストレージを、UVが使用するために、ゾーン・セキュリティ・テーブルに、関連セキュア・ゲスト・ドメインなしで、関連ホスト仮想アドレス対を持たないものとして、登録することができる。
次に図10を参照すると、本発明の1つまたは複数の実施形態による、非セキュア・ハイパーバイザ・ページからセキュア・インタフェース制御のセキュア・ページへの移行に関するプロセス・フロー1000が概括的に示されている。プロセス・フロー1000には、3つのハイパーバイザ・ページ(例えば非セキュア・ハイパーバイザ・ページA、非セキュア・ハイパーバイザ・ページBおよび非セキュア・ハイパーバイザ・ページC)が示されている。
ハイパーバイザ(非セキュア)ページA、BおよびCには、(ハイパーバイザを含む)非セキュア・エンティティがアクセスすることができる。さらに、ハイパーバイザ(非セキュア)ページA、BおよびCには、非セキュア(NS)のマークが付けられており、ハイパーバイザ(非セキュア)ページA、BおよびCは、ゾーン・セキュリティ・テーブル(例えば図1に示されたゾーン・セキュリティ・テーブル100)に、非セキュアおよび非共用として登録されている。矢印1005において、初期化UVCが発行される。この初期化UVCは、ゲスト・ページAを、ゾーン全体に関連したセキュア・インタフェース制御実ストレージ・ページ(UV2)1010に移行させる。セキュア・インタフェース制御実ストレージ1010にセキュアのマークを付けることができ、セキュア・インタフェース制御実ストレージ1010を、ゾーン・セキュリティ・テーブル(例えば図1に示されたゾーン・セキュリティ・テーブル100)に、UVとして、セキュア・ゲスト・ドメインおよびハイパーバイザ-ホスト絶対(HV→HA)マッピングなしで登録することができる。その代わりに、セキュア・インタフェース制御実ストレージ1010は、固有のUV2セキュア・ドメインとともに登録され、DAビットが1にセットされる。セキュア・インタフェース制御実ストレージ1010には、セキュア・インタフェース制御が実ストレージとしてアクセスすることができることに留意されたい。
矢印1025において、ハイパーバイザ(非セキュア)ページBから、SG構成生成UVCまたはSG CPU生成UVCが発行される。このUVCは、このページを、セキュア・ゲスト・ドメインに関連したセキュア・インタフェース制御実ストレージ(UVS)1030に移行させる。セキュア・インタフェース制御実ストレージ1030にセキュアのマークを付けることができ、セキュア・インタフェース制御実ストレージ1030を、ゾーン・セキュリティ・テーブル(例えば図1に示されたゾーン・セキュリティ・テーブル100)に、UVとして、関連セキュア・ゲスト・ドメインとともに、ハイパーバイザ-ホスト絶対(HV→HA)マッピングなし(すなわちDAビット=1)で登録することができる。セキュア・インタフェース制御実ストレージ1030には、セキュア・ゲスト・ドメインに代わって、セキュア・インタフェース制御が実ストレージとしてアクセスすることができることに留意されたい。
矢印1045において、ハイパーバイザ(非セキュア)ページCから、SG構成生成UVCが発行される。このUVCは、このページを、セキュア・ゲスト・ドメインに関連したセキュア・インタフェース制御仮想ストレージ(UVV)1050に移行させる。セキュア・インタフェース制御仮想ストレージ1050にセキュアのマークを付けることができ、セキュア・インタフェース制御仮想ストレージ1050を、ゾーン・セキュリティ・テーブル(例えば図1に示されたゾーン・セキュリティ・テーブル100)に、UVとして、セキュア・ゲスト・ドメインおよびハイパーバイザ-ホスト絶対(HV→HA)マッピングとともに登録することができる。セキュア・インタフェース制御仮想ストレージ1050には、セキュア・ゲスト・ドメインに代わって、UV仮想ストレージとしてアクセスすることができることに留意されたい。
次に図11を参照すると、1つまたは複数の実施形態による、プログラムまたはセキュア・インタフェース制御によってなされたセキュア・ストレージ・アクセスに関するプロセス・フロー1100が示されている。この図は、セキュア・インタフェース制御が、ゲスト・ストレージまたはセキュア・インタフェース制御ストレージにアクセスしようとしており、そのアクセスのセキュリティをハードウェアが確認することを可能にするために、そのアクセスに正しくタグ付けしなければならない状況を表している。プロセス・フロー1100は、セキュア・インタフェース制御によるストレージ・アクセスのこのタグ付けを示している。プロセス・フロー1100はブロック1110から始まり、ブロック1110で、セキュア・インタフェース制御は、セキュア・インタフェース制御がセキュア・インタフェース制御ストレージにアクセスしているかどうかを判定する。
このアクセスが、セキュア・インタフェース制御ストレージへのアクセスでない場合、プロセス・フロー1100は、(いいえの矢印によって示されているように)判断ブロック1112に進む。判断ブロック1112で、セキュア・インタフェース制御は、セキュア・インタフェース制御がセキュア・ゲスト・ストレージにアクセスしているかどうかを判定する。このアクセスが、セキュア・ゲスト・ストレージへのアクセスでない場合、プロセス・フロー1100は、非セキュア・アクセスのためのデフォルト設定を使用する(図12のプロセス・フロー1200に接続された)「B」に進む。このアクセスが、セキュア・ゲスト・ストレージへのアクセスである場合、プロセス・フロー1100は判断ブロック1113に進み、判断ブロック1113で、セキュア・インタフェース制御は、デフォルト・セキュア・ゲスト・ドメインが使用されているどうかを判定する。はいの場合、プロセス・フロー1100は、セキュア・ゲスト・アクセスのためのデフォルト設定を使用する(図12のプロセス・フロー1200に接続された)「B」に進む。いいえの場合、プロセス・フロー1100はブロック1114に進む。ブロック1114で、適切なセキュア・ゲスト・ドメインをSGセキュア・ドメイン・レジスタにロードする(プロセス・フロー1100は、図12のプロセス・フロー1200に接続された「B」に進む)。
このアクセスが、セキュア・インタフェース制御ストレージへのアクセスである場合、プロセス・フロー1100は、(はいの矢印によって示されているように)ブロック1120に進む。ブロック1120で、そのアクセスにセキュアUVのタグを付ける(例えば、そのアクセスはUVセキュア・ドメイン・レジスタを使用する)。
プロセス・フロー1100は次いで判断ブロック1130に進み、判断ブロック1130で、セキュア・インタフェース制御は、このアクセスが、UVV空間(例えばSG構成可変テーブル(SG-Config Variable Table))へのアクセスであるかどうかを判定する。このアクセスがUVV空間へのアクセスである場合、プロセス・フロー1100は、(はいの矢印によって示されているように)ブロック1134に進む。ブロック1134で、そのアクセスに仮想アクセスのタグを付ける。ブロック1136で、適用可能なセキュア・ゲスト・ドメインをUVセキュア・ドメイン・レジスタにロードする。ブロック1138では、DAT変換およびストレージ・アクセスが始まる準備ができている。判断ブロック1130に戻る。このアクセスが、UVV空間へのアクセスではない場合、プロセス・フロー1100は、(いいえの矢印によって示されているように)ブロック1140に進む。ブロック1140で、そのアクセスに実アクセスのタグを付ける。
判断ブロック1150で、セキュア・インタフェース制御は、このアクセスが、UVS空間(例えばSG構成またはCPUテーブル)へのアクセスであるかどうかを判定する。このアクセスがUVS空間へのアクセスである場合、プロセス・フロー1100は、(はいの矢印によって示されているように)ブロック1136に進む。このアクセスがUVS空間へのアクセスではない場合、プロセス・フロー1100は、(いいえの矢印によって示されているように)ブロック1170に進む。このアクセスはUV2空間(例えばゾーン・セキュリティ・テーブル)へのアクセスであるということになる。ブロック1170で、固有のUV2セキュア・ドメインをUVセキュア・ドメイン・レジスタにロードする。
図12は、本発明の1つまたは複数の実施形態によるプロセス・フロー1200を示している。ゲストがディスパッチされると、SIE Entryファームウェアは、ゲストが動作していること(例えばゲスト・モードがアクティブであること)をハードウェアに示すことができ、そのゲストがセキュアであるかどうかを示すことができる。ゲストがセキュアである場合、関連セキュア・ゲスト・ドメインをハードウェアに(例えばSGセキュア・ドメイン・レジスタに)ロードすることができる。プログラムがストレージにアクセスしているとき、ハードウェアは、そのアクセスの時点におけるプログラムの現在の状態に基づいて、そのアクセスにタグを付けることができる。図12は、プロセス・フロー1200の中のこのプロセスの一例を示している。ブロック1205で、ハードウェアは、機械が現在、ゲスト・モードで動作しているかどうかを判定することができ、ゲスト・モードで動作していない場合には、ブロック1210で、そのアクセスに、ホスト・アクセスであるとのタグを付けることができ、ブロック1215で、そのアクセスに、非セキュア・アクセスであるとのタグを付けることができる。ブロック1205で、機械がゲスト・モードで動作している場合、ブロック1220で、そのアクセスに、ゲスト・アクセスのタグを付けることができ、さらに、ブロック1225で、現在のゲストがセキュア・ゲストであるかどうかを判定することができる。ゲストがセキュアでない場合、ブロック1215で、そのアクセスに、非セキュアのタグを付けることができる。ゲストがセキュアである場合、ブロック1230で、ハードウェアは、そのゲストに、セキュアのタグを付けることができ、それによって、そのセキュア・ゲストを、そのセキュア・ゲストがディスパッチされたときにロードされたSGセキュア・ドメイン・レジスタに関連づけることができる。非セキュア・ゲストとセキュア・ゲストの両方に関して、ブロック1235で、DATステータスをチェックすることができる。DATがオフの場合、ブロック1240で、そのアクセスに、実アクセスのタグを付けることができる。DATがオンの場合、ブロック1245で、そのアクセスに、仮想アクセスのタグを付けることができる。DATがオフの場合に、ブロック1240で、そのアクセスに、実アクセスのタグを付けた後、またはDATがオンの場合に、ブロック1245で、そのアクセスに、仮想アクセスのタグを付けた後に、ブロック1250において、ハードウェアは、変換を開始し、ストレージにアクセスする準備ができている。これについては図13でさらに説明する。
図13は、本発明の1つまたは複数の実施形態による、セキュア・アクセスと非セキュア・アクセスの両方をサポートするためにプロセス・フロー1300においてハードウェアによって実行される変換の一例を示している。ブロック1305で、ハードウェアは、そのアクセスにゲスト変換のタグが付けられているかどうかを判定することができ、ゲスト変換のタグが付けられており、ブロック1310で、そのアクセスが仮想アクセスである場合、ブロック1315で、ゲストDATを実行することができる。ゲストDAT変換の間、ゲストDATテーブルのためのネストされた介在フェッチが存在しうる。それらのテーブル・フェッチに、ゲスト実フェッチのタグを付けることができ、元の変換にセキュアのタグが付けられた場合には、それらのテーブル・フェッチにセキュア・フェッチのタグを付けることができる。それらのテーブル・フェッチはさらに、プロセス・フロー1300の変換プロセスに従うことができる。ブロック1315でゲスト仮想アクセスのタグが付けられたアクセスに対して、ゲストDATが実行された後、およびブロック1310でゲスト実アクセスのタグが付けられたアクセス(仮想=いいえ)に対して、ブロック1320で、ゲスト・プレフィックス変換およびゲスト・メモリ・オフセットを適用することができる。このゲスト変換プロセスが完了したら、ブロック1325で、結果として生じたアドレスに、ホスト仮想アドレスのタグを付けることができ、元のゲスト変換にセキュアのタグが付けられた場合には、結果として生じたアドレスに、セキュア・アドレスのタグを付けることができる。ホスト仮想アクセスのタグが付けられた任意のアクセスに対して、プロセス1300を続けることができる。ブロック1305で、元のアクセスがホスト・アクセスであり(ゲスト=いいえ)、ブロック1330で、元のアクセスが仮想アクセスである場合、ブロック1335で、ホストDATを実行することができる。ブロック1335で、ホスト・テーブル・フェッチに、非セキュア・フェッチのマークを付けることができる。ブロック1335でホストDATを実行した後、またはブロック1330で、元のホスト・アクセスに実アクセスのタグが付けられた場合(仮想=いいえ)、ブロック1340で、ホスト・プレフィックス変換を適用することができる。ブロック1345で、結果として生じたアドレスはホスト絶対アドレスでありうる。
図14は、本発明の1つまたは複数の実施形態による、プロセス・フロー1400においてハードウェアによって実行することができるセキュア・ストレージ保護付きのDAT変換の一例を示している。図13のブロック1345から続いて、ブロック1405で、セキュアUVアクセスが識別された場合、ハードウェアは、ブロック1410で、ストレージが、セキュアUVストレージとして登録されているかどうかを確認することができ、セキュアUVストレージとして登録されていない場合には、ブロック1415で、エラーを提示する。UVストレージにアクセスするときには、セキュア・インタフェース制御によってセキュアUVアクセスを実行することができる。ブロック1410で、ストレージが、セキュアUVストレージとして登録されている場合、保護チェックを続けることができ、(セキュアUVアクセスを実行する前にセキュア・インタフェース制御によってセットアップされた)UVセキュア・ドメイン・レジスタを、処理が続く場合にブロック1420で実行されるドメイン・チェックのための指定されたセキュア・ドメインとして使用することができることを除いて、この保護チェックは、任意のセキュア・アクセスに対して実行することができる。さらに、ブロック1425でUVアクセスに対して検出された違反(入口点D)を、ブロック1430で、エラーとして提示することができ、ブロック1425でのセキュア・ゲスト違反(セキュアUV=いいえ)に対しては、ブロック1435で、ハイパーバイザに例外を提示することができる。
ブロック1405でセキュアUVアクセスのタグが付けられていなかったアクセスについて、ハードウェアは、ブロック1440で、そのアクセスがセキュア・ゲスト・アクセスであるかどうかを判定し、そのアクセスがセキュア・ゲスト・アクセスではなく、ブロック1445で、そのページにセキュアのマークが付けられている場合、ブロック1435で、ハイパーバイザに例外を提示することができる。一方、ブロック1440で、そのアクセスがセキュア・ゲスト・アクセスでなく、ブロック1445で、そのページにセキュアのマークが付けられていない場合、ブロック1450で、変換は成功となる。
ブロック1440で、そのアクセスがセキュア・ゲスト・アクセスである場合、または、そのアクセスが、ブロック1410でセキュアUVストレージとして登録されたストレージへのセキュアUVアクセスである場合、ハードウェアは、ブロック1420で、そのストレージが、そのアクセスに関連したセキュア・エンティティに登録されていることを確かめるためのチェックを実行することができる。このアクセスがセキュアUVアクセスである場合、(アクセスされているセキュアUVストレージに基づいてセキュア・インタフェース制御によってロードされた)UVセキュア・ドメイン・レジスタから、指定されたセキュア・ドメインを取得することができ、セキュア・ゲスト・アクセスに関して、指定されたセキュア・ドメインは、(セキュア・エンティティがディスパッチされたときにロードされた)SGセキュア・ドメイン・レジスタから取得される。ブロック1420で、アクセスされているストレージが、指定されたセキュア・ドメインに登録されていない場合、ゾーン・セキュリティ・テーブル・インタフェース1485に関する図15に示された副プロセス1500が実行される。
副プロセス1500では、ブロック1510で、複数のセキュア・ドメインにわたる仮想アドレス共用が許されているかどうかを判定するためのチェックを実行する。このチェックは、ゾーンまたはパーティションに関連したレジスタ値に基づいて実行することができる。ブロック1520で、複数のセキュア・ドメインにわたる共用が許されており、現在のセキュア・ドメインによる共用が許されている場合、ブロック1530で、仮想アドレス・チェッキングが無効化されているかどうかのチェックを実行することができる。現在のセキュア・ドメインによって共用が許されているかどうかのチェックは、ゾーン・セキュリティ・テーブル内でのセキュア・ドメインに対するレジスタ・アクセスまたはテーブル・ルックアップによって実行することができ、これは、このホスト絶対ページに対して特定とすることができる。仮想アドレス・チェッキングが無効化されているかどうかのチェックは、仮想アドレス比較無効化状態(DA)を調べることによって実行することができ、マークが付けられたページ(例えばDA=1)は、仮想アドレス・チェッキングの無効化に帰着する。ブロック1510で、複数のセキュア・ドメインにわたる仮想アドレス共用が許されていない場合、またはブロック1520で、現在のセキュア・ドメインによる共用が許されていない場合、またはブロック1530で、仮想アドレス・チェッキングが無効化されていない(例えばDA=0)場合、ブロック1435で、ハイパーバイザに例外を提示することができる。あるいは、ブロック1520で、仮想アドレス・チェッキングが無効化されていない(DA=0)場合、セキュア・インタフェース制御は、このホスト絶対ページおよびセキュア・ゲスト・ドメインについて、登録されたホスト仮想アドレスをチェックすることができ、アクセス・ホスト・アドレス対が、登録されたホスト・アドレス対と一致した場合、ブロック1450で、変換は成功のうちに完了となり、これらの対が一致しなかった場合、ブロック1435で、ハイパーバイザに例外が提示されることになる。一方、ブロック1530で、仮想アドレス・チェッキングが無効化されている場合、ブロック1450で、変換は成功し、副プロセス1500は終了することができる。
図14のプロセス1400に戻る。ブロック1440およびブロック1410におけるストレージに対するセキュア・アクセスであって、ブロック1420で、指定されたセキュア・ドメインに登録されたセキュア・アクセス関して、ブロック1455で、仮想アドレス・チェックが無効化されており、すなわちDAビット=1であり、かつ、ブロック1460でそのアクセスが実アクセスである場合、ブロック1450で、変換は完了となる。しかしながら、ブロック1455ではDAビット=1だが、ブロック1460で、そのアクセスが仮想アクセスであり(実アクセス=いいえ)、ブロック1465で、仮想アドレス(VA)共用が許されている場合には、ブロック1450で、変換は完了となる。しかしながら、ブロック1455でDAビット=1、ブロック1460で、そのアクセスが仮想アクセスであり(実アクセス=いいえ)、ブロック1465で、VA共用が許されていない場合には、2つのオプションのうちの一方のオプションを実行することができる。オプション1では、続いて、ブロック1470で、ホスト仮想-ホスト絶対の一致が判定され、オプション2では、ブロック1425でのセキュアUVアクセスに関して、ブロック1430でエラーが提示され、ブロック1425でのセキュア・ゲスト・アクセス(セキュアUVアクセス=いいえ)に関して、ブロック1435で、ハイパーバイザに例外が提示される。ブロック1455でDAビット=0、ブロック1475で、そのアクセスが仮想アクセスである場合、ハードウェアは、ブロック1470で、そのアクセスのホスト仮想-ホスト絶対マッピングが、このホスト絶対アドレスに対して登録されているマッピングと一致するかどうかを判定することができる。一致する場合、ブロック1450で、変換は成功のうちに完了となる。ブロック1470で、このマッピングが一致しない場合、ブロック1425でのセキュアUVがアクセスに関しては、ブロック1430でエラーが提示され、ブロック1425でのセキュア・ゲスト・アクセス(セキュアUVアクセス=いいえ)に関しては、ブロック1435で、ハイパーバイザに例外が提示される。ブロック1475で、DAビット=0であり、そのアクセスが実アクセスである(仮想アクセス=いいえ)場合、ブロック1425でのセキュアUVがアクセスに関しては、ブロック1430でエラーが提示され、ブロック1425でのセキュア・ゲスト・アクセス(セキュアUVアクセス=いいえ)に関しては、ブロック1435で、ハイパーバイザに例外が提示され(オプション2)、あるいは、ブロック1450で、変換は成功のうちに完了となる(オプション1)。ブロック1480でのI/Oサブシステムによるアクセスは、ブロック1445でそのページにセキュア・ページのマークが付けられているかどうかを知るためのチェックを実行することができる。そのページがセキュア・ページである場合、ブロック1435で、ハイパーバイザに例外を提示することができ、そのページにセキュア・ページのマークが付けられていない場合、ブロック1450で、変換は成功となる。
ゾーン・セキュリティ・テーブル・インタフェースによって、ストレージ登録およびマッピングのさまざまなチェックを集合的に管理することができる1485。例えば、ブロック1410、1420、1455、1470および1475は、さまざまなアクセスを管理するために、同じゾーンに関連づけられたゾーン・セキュリティ・テーブルとインタフェースすることができる。同様に、図15のブロック1510、1520および1530は、さまざまなアクセスを管理するために、同じゾーンに関連づけられたゾーン・セキュリティ・テーブルとインタフェースすることができる。
さらなる例として、図16および17は、マッピング・プロセスのオプションを示している。前述のとおり、セキュア・ドメインまたはセキュア・インタフェース制御からのそれぞれのメモリ・アクセスに、セキュア・ドメイン、ホスト・アドレス対およびDAマーク付けのタグを付けることができる。ホスト・アドレス対は、仮想アドレスおよび関連絶対アドレスを含むことができる。それぞれのエンティティ、例えばセキュア・コンテナまたはVMは、それ自体のセキュア・ドメインIDを有することができる。以下の例では、いくつかの用語が定義される。すなわち、V=メモリ・アクセスの仮想アドレス。A=メモリ・アクセスの絶対アドレス。D=セキュア・ドメインID。DA=仮想アドレス比較無効化ビット。通常のオペレーティング・セキュア・ドメインについては、アクセス時にページインされ確認されたときに全てのメモリ・アクセスを登録することができる。一例として、セキュア・ドメインXが、メモリ内に3つのページを所有しているとする。それらのページは、以下の登録されたホスト・アドレス対および関連情報を有する。すなわち、1つのページについては(V1x,A1x)、DA=0(共用なし)、D=X、別のページについては(V2x,A2x)、DA=0(共用なし)、D=X、第3のページについては(V3x,A3x)、DA=0(共用なし)、D=Xである。これらのホスト・アドレス対およびセキュア・ゲスト・ドメインが、例えば図1のゾーン・セキュリティ・テーブル100の中で一致していない場合には、これらのページへのアクセスが許されないことがある。別のセキュア・ドメインYが動作することもでき、このセキュア・ドメインは、以下の2つのホスト・アドレス対および関連情報とともに登録された2つのページをメモリ内に所有することができる。すなわち、1つのページについては(V1y,A1y)、DA=0(共用なし)、D=Y、別のページについては(V2y,A2y)、DA=0(共用なし)、D=Yである。このアクセスに関するホスト・アドレス対およびセキュア・ゲスト・ドメインが、このページに関して登録されたホスト・アドレス対およびセキュア・ゲスト・ドメインと一致していない場合には、これらのページへのアクセスが許されないことがある。セキュア・ドメインXおよびYはともに、対応する絶対アドレスが固有である限り、同じ仮想アドレス値によってマップされたページを有することができる。例えば、これらの全てのページでDA=0であるため、V1xとV2yは等しくてもよいが、A1xは、A2x、A3x、A1yまたはA2yのいずれとも異なっていなければならない。仮想アドレスとともに登録された絶対ページの共用を可能にするため、または(仮想アクセスではなく)絶対アクセスを可能にするために、図1のDAビット140がセットされる。
以下の例は、2つのセキュア・ドメイン間のページの共用を示している。上記のものと同じ2つのセキュア・ドメインXおよびYに関して、A1xとA1yとを共用することができ、そのためA1x=A1y=A1である。セキュア・エンティティXおよびYに対する登録されたホスト・アドレス対および関連情報は、(V1x,A1)、DA=1(共用ページ)、D=X、(V2x,A2x)、DA=0(共用なし)、D=X、(V3x,A3x)、DA=0(共用なし)、D=X、(V1y,A1)、DA=1(共用ページ)、D=Y、および(V2y,A2y)、DA=0(共用なし)、D=Yとなりうる。共用絶対ページA1へのアクセスは、ドメインXおよびYに対してのみ許されていることがあり、一例では、DA=1であるため、仮想アドレスに対する一致チェックが飛ばされる。別のケースでは、それぞれのドメインXおよびYが、それぞれの共用ページに対して別個の(固有のまたは一致した)仮想アドレスを登録することができる。複数のセキュア・ドメイン間のページ・リクエストの共用は、1つまたは複数のセキュア・ドメインによって開始し、残りのドメインによって確認することができる。
別の例として、セキュア・インタフェース制御は、セキュアUVページが、仮想アドレス・チェックが実行されないことを示すDA=1とともに登録されている場合、絶対アドレスを使用してそのページにアクセスすることができる。このケースでは、このページが、ホスト仮想アドレスを問題としないホスト・アドレス対(-,A1as)、DA=1およびD=AS(aux-secure。これは、そのページが、セキュア・インタフェース制御に属していることを示す)とともに登録されている。セキュア・インタフェース制御は、このページへのアクセスがセキュア・インタフェース制御だけに許されていることを保証するために、セキュア・ドメインを比較することができる。DA=1であるため、仮想アドレス・チェックは実行されない。
図16は、2つのセキュア・ドメイン間のページの共用の実施態様の一例を、DA=1(共用)を有する一例として示している。この例では、仮想アドレス空間1602から絶対アドレス空間1604へのホスト・アドレス対が(V1,A2)、(V2,A1)、(V3,A2)、(V4,A3)、(V5,A2)である。3つの異なる仮想アドレス間で絶対アドレスA2を共用することができる1606。V1およびV5は、同じセキュア・ゲスト・ドメイン1608からのものであり、V3は、別のセキュア・ドメイン1610からのものである。仮想アドレス空間1602から絶対アドレス空間1604へのこの変換は、信頼できないハイパーバイザまたはOSによって所有されうる。このような共用は、ある種の状況下では有益となりうる。しかしながら、ドメイン1608、1610間の同じ絶対アドレスA2の共用は、ドメイン1608、1610がともに、共用されている1606同じ絶対アドレスA2にアクセスすることができる場合に、セキュリティ上の問題を引き起こしうる。
本発明の1つまたは複数の実施形態によれば、図17は、図16の例を変更したものを、DA=1(共用)を有する別の例として示しており、ホスト・アドレス対は、(V1,A2)、(V2,A1)、(V4,A3)、(V5,A2)である。注目すべきは、アドレス変換対(V3,A2)が、仮想アドレス空間1602から絶対アドレス空間1704へのマッピングにおいて直接には使用可能でないことである。セキュア・コンテナ/VMに対してページの共用が許されないことがある。(V3,A2)は(V3,A2’)に変更されており、このことは、それぞれのコンテナ/VMに対して1つの固有のコピーを有するために物理A2ページを複製することを含みうる。したがって、ドメイン1608、1610によるアクセスはともに、A2の別個のコピーを見ることができるが、A2の内容を変更しようとする試みはいずれも、異なる絶対ページA2、A2’上で実行される。図1のDAビット140を使用して、2つの異なる仮想アドレス(例えばドメイン1608のV1およびドメイン1610のV3)を使用している2つの異なるセキュア・ドメイン1608、1610間での1つの絶対ページの共用を可能にすることができる。
次に図18を参照すると、本発明の1つまたは複数の実施形態による、複数のセキュリティ・ドメインにわたってセキュア・メモリを共用するためのプロセス・フロー1800が概括的に示されている。ブロック1805で、コンピュータ・システムのセキュア・インタフェース制御は、メモリのセキュア・ページに対するセキュア・アクセス・リクエストを受け取ることができる。ブロック1810で、セキュア・インタフェース制御は、そのセキュア・ページに関連づけられた仮想アドレス(例えばDAビット140)比較無効化状態をチェックすることができる。ブロック1815で、セキュア・インタフェース制御は、複数の仮想アドレスから同じ絶対アドレスへのマッピングをサポートするために、仮想アドレス比較無効化状態がセットされていること(例えばDA=1であること)に基づいて、セキュア・ページにアクセスする際の仮想アドレス・チェックを、セキュア・ページに対して無効化することができる。セキュア・アクセス・リクエストを出したエンティティの許可ステータス、および仮想アドレス比較無効化状態がセットされていること(例えばDA=1であること)に基づいて、仮想アドレスが指定されていないセキュア・ページへの絶対アドレス・アクセスを有効化することができる。セキュア・インタフェース制御は、複数のセキュア・ドメインのうちのセキュア・ドメインが共用ページにアクセスすることが許可されていることを、ドメイン識別子に基づいて確認することができる。共用ページにアクセスする許可を確かめるために、セキュア・ドメインのドメイン識別子を、共用を許すと識別されたセキュア・ドメインの複数のドメイン識別子と比較することができる。
セキュア・インタフェース制御は、セキュア・ドメインに関して、セキュア・ページの登録ステータスをチェックすることができる。セキュア・インタフェース制御は、そのセキュア・ページが、セキュア・ドメインとともに登録されていないと判定したことに基づいて、そのセキュア・ドメインによる共用が許されているかどうかを判定することができる。セキュア・ドメインによる共用が許されていると判定したことに基づいて、仮想アドレス比較無効化状態をチェックすることができる。セキュア・インタフェース制御は、複数のセキュリティ・ドメインにわたって仮想アドレス共用が許されていることを確かめることができる。例えば、セキュア・インタフェース制御は、仮想アドレスを絶対アドレスにマップするDATテーブルの複数のグループがセキュアでないホストによって変更されていないことを確かめることができ、セキュアでないホストは、セキュア・ページにアクセスすることができる複数のセキュア・ドメインのうちのいずれかに対して1つまたは複数のDATテーブルのグループを管理するように構成されている。仮想アドレスに対してマップするそれぞれのテーブルは、DATテーブルの1つまたは複数のグループの中の複数の関連テーブルを含むことができる。DATテーブルの1つまたは複数のグループの中で変化を検出したことに基づいて、セキュア・アクセス・リクエストを終了することができる。
セキュア・ページの仮想-絶対アドレス対を、セキュア・ドメイン識別子とともに、例えば図1のゾーン・セキュリティ・テーブル100に登録することができる。セキュア・アクセス・リクエストに関連づけられたアドレスを確認することができ、セキュア・アクセス・リクエストに応答して、仮想-絶対アドレス対およびセキュア・ドメイン識別子を有するアクセスしているセキュア・ドメインを確認することができる。仮想アドレス比較無効化状態は、セキュア・ページに関連づけられたセキュア・ドメイン識別子、セキュア・ページに関連づけられた仮想アドレス・マッピング・データおよび仮想アドレス比較無効化状態を含むゾーン・セキュリティ・テーブル100を通して記憶および更新することができる。セキュア・ページは、ハイパーバイザまたはオペレーティング・システムによって管理されたセキュア仮想機械またはセキュア・コンテナに割り当てることができる。
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実施態様はクラウド・コンピューティング環境だけに限定されないことを理解されたい。本発明の実施形態は、現在知られているまたは後に開発される他の任意のタイプのコンピューティング環境において実施することができる。
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの最小限のインタラクションで迅速に供給およびリリースすることができる構成可能なコンピューティング・リソース(例えばネットワーク、ネットワーク帯域、サーバ、処理、メモリ、ストレージ、アプリケーション、VMおよびサービス)の共用プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするサービス配信モデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント(deployment)モデルを含むことができる。
特徴は以下のとおりである。
オンデマンド・セルフサービス:クラウド・コンシューマは、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を、このサービスのプロバイダとのヒューマン・インタラクションを必要とすることなく必要に応じて自動的に一方的に供給することができる。
ブロード・ネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシンまたはシック・クライアント・プラットフォーム(例えば移動電話、ラップトップおよびPDA)による使用を促進する標準的機構を通してアクセスされる。
リソース・プーリング(resource pooling):マルチテナント・モデルを使用して複数のコンシューマにサービスを提供するために、プロバイダのコンピューティング・リソースがプールされており、要求に応じて、異なる物理的および仮想リソースが動的に割当ておよび再割当てされる。コンシューマは一般に、提供されたリソースの正確な位置を制御できずまたは正確な位置を知らないが、より高次の抽象化レベル(例えば国、州またはデータセンタ)で位置を指定することができるという意味で、位置独立の感覚がある。
ラピッド・エラスティシティ(rapid elasticity):機能は、素早くスケールアウトするために迅速かつ弾力的に、場合によっては自動的に供給することができ、素早くスケールインするために迅速にリリースすることができる。コンシューマにとって、供給に利用可能な機能はしばしば無限であるように見え、いつでも好きな量だけ購入することができる。
メジャード・サービス(measured service):クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域および使用中ユーザ・アカウント)に対して適切なある抽象化レベルで計測機能に介入することによって、リソースの使用状況を自動的に制御および最適化する。リソースの使用状況を監視、制御および報告して、利用されているサービスのプロバイダとコンシューマの両方に透明性を提供することができる。
サービス・モデルは以下のとおりである。
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供されるこの機能は、クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用する機能である。ウェブ・ブラウザなどのシン・クライアント・インタフェース(例えばウェブ・ベースの電子メール)を通してさまざまなクライアント・デバイスからアプリケーションにアクセス可能である。場合によっては可能な限られたユーザ固有のアプリケーション構成の設定を除けば、コンシューマは、ネットワーク、サーバ、オペレーティング・システム、ストレージまたは個々のアプリケーション機能を含む基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしない。
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供されるこの機能は、クラウド・インフラストラクチャ上で、プロバイダがサポートするプログラム言語およびツールを使用して作成されたコンシューマ作成または取得のアプリケーションをデプロイする機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システムまたはストレージを含む基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしないが、デプロイされたアプリケーションおよび場合によってはアプリケーション・ホスティング環境構成は制御することができる。
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供されるこの機能は、処理、ストレージ、ネットワークおよび他の基本的なコンピューティング・リソースを供給する機能であり、コンシューマは任意のソフトウェアをデプロイおよび動作することができ、これらのソフトウェアは、オペレーティング・システムおよびアプリケーションを含むことができる。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしないが、オペレーティング・システム、ストレージおよびデプロイされたアプリケーションは制御することができ、場合によっては、選択されたネットワーク構成要素(例えばホスト・ファイアウォール)を限定的に制御することができる。
デプロイメント・モデルは以下のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、組織体のためだけに運営される。インフラストラクチャは、その組織体または第三者が管理することができ、オンプレミス(on-premises)またはオフプレミス(off-premises)で存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、いくつかの組織体によって共有され、利害(例えばミッション、セキュリティ要件、ポリシーおよびコンプライアンス上の問題)を共有する特定のコミュニティをサポートする。インフラストラクチャは、その組織体または第三者が管理することができ、オンプレミスまたはオフプレミスで存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般大衆または大きな産業グループが利用可能であり、クラウド・サービスを販売している組織体によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、固有のエンティティを維持しているが、データおよびアプリケーション・ポータビリティを可能にする標準化された技術または独占技術(例えばクラウド間のロード・バランシングのためのクラウド・バースティング(cloud bursting))によって1つに結合された2つ以上のクラウド(プライベート、コミュニティまたはパブリック)の合成体である。
クラウド・コンピューティング環境は、ステートレス性、低結合、モジュール性および意味論的相互運用性(semantic interoperability)に重きを置くサービス指向の環境である。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
次に図19を参照すると、例示的なクラウド・コンピューティング環境50が示されている。示されているとおり、クラウド・コンピューティング環境50は1つまたは複数のクラウド・コンピューティング・ノード10を含み、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイス、例えばパーソナル・ディジタル・アシスタント(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54Cまたは自動車コンピュータ・システム54Nあるいはこれらの組合せは、これらのノードと通信することができる。ノード10は互いに通信することができる。それらのノードは、上で説明したプライベート、コミュニティ、パブリックまたはハイブリッド・クラウドまたはこれらの組合せなどの1つまたは複数のネットワークに、物理的にまたは仮想的にグループ分けされていることがある(図示せず)。これによって、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組合せをサービスとして提供することができ、そのため、クラウド・コンシューマは、ローカル・コンピューティング・デバイス上にリソースを維持する必要がない。図19に示されたタイプのコンピューティング・デバイス54A~Nは単なる例であることが意図されていること、ならびにコンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワーク上もしくはアドレス指定可能なネットワーク接続上またはその両方で(例えばウェブ・ブラウザを使用して)、コンピュータ化された任意のタイプのデバイスと通信することができることが理解される。
次に図20を参照すると、クラウド・コンピューティング環境50(図19)によって提供される一組の機能抽象化層が示されている。図20に示された構成要素、層および機能は単なる例であることが意図されており、本発明の実施形態はそれらに限定されないことを予め理解しておくべきである。図示のとおり、以下の層および対応する機能が提供される。
ハードウェアおよびソフトウェア層60は、ハードウェア構成要素およびソフトウェア構成要素を含む。ハードウェア構成要素の例は、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ(blade server)64、ストレージ・デバイス65ならびにネットワークおよびネットワーキング構成要素66を含む。いくつかの実施形態では、ソフトウェア構成要素が、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
仮想化層70は抽象化層を提供し、この層から、仮想エンティティの以下の例を提供することができる:仮想サーバ71、仮想ストレージ72、仮想専用ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75。
一例では、管理層80が以下の機能を提供することができる。リソース供給(Resource provisioning)81は、クラウド・コンピューティング環境内でタスクを実行する目的に利用されるコンピューティング・リソースおよびその他のリソースの動的調達を提供する。計量および価格決定(Metering and Pricing)82は、クラウド・コンピューティング環境内でリソースが利用されたときの費用追跡、およびこれらのリソースの消費に対する課金または請求を提供する。一例では、これらのリソースがアプリケーション・ソフトウェア・ライセンスを含むことがある。セキュリティは、クラウド・コンシューマおよびタスクの識別確認ならびにデータおよび他のリソースの保護を提供する。ユーザ・ポータル83は、コンシューマおよびシステム管理者に、クラウド・コンピューティング環境へのアクセスを提供する。サービス水準管理84は、必要なサービス水準が達成されるようなクラウド・コンピューティング・リソースの割振りおよび管理を提供する。サービス水準合意(Service Level Agreement)(SLA)計画および履行85は、SLAによって将来必要になると予想されるクラウド・コンピューティング・リソースの事前調整および調達を提供する。
ワークロード層90は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ解析処理94、トランザクション処理95、および仮想機械に関連づけられたセキュア・ストレージへのアクセスの制御96を含む。これらは一部の例でしかないこと、および他の実施形態ではこれらの層が異なるサービスを含みうることが理解される。
次に図21を参照すると、本発明の1つまたは複数の実施形態によるシステム2100が示されている。システム2100は、1つまたは複数のクライアント・デバイス20A~20Eと直接にまたは間接的に、例えばネットワーク165を介して間接的に通信する例示的なノード10(例えばホスティング・ノード)を含む。ノード10は、クラウド・コンピューティング・プロバイダのデータセンタまたはホスト・サーバとすることができる。ノード10は、ハイパーバイザ12を実行する。ハイパーバイザ12は、1つまたは複数のVM15(15A~15N)のデプロイを容易にする。ノード10はさらに、セキュア・インタフェース制御11を含むハードウェア/ファームウェア層13を含む。セキュア・インタフェース制御11は、ハイパーバイザ12が1つまたは複数のサービスを仮想機械15に提供するのを容易にする1つまたは複数のハードウェア・モジュールおよびファームウェアを含む。既存の技術的ソリューションでは、ハイパーバイザ12とセキュア・インタフェース制御11の間、セキュア・インタフェース制御11と1つまたは複数のVM15の間、およびハイパーバイザ12と1つまたは複数のVM15の間の通信、ならびにセキュア・インタフェース制御11を通したハイパーバイザ12からVM15への通信が存在する。セキュアVM環境を容易にするため、本発明の1つまたは複数の実施形態によるホスティング・ノード10は、ハイパーバイザ12と1つまたは複数のVM15との間の直接通信を一切含まない。
例えば、ホスティング・ノード10は、VM15A~15Nのうちの1つまたは複数のVMをクライアント・デバイス20Aがデプロイするのを容易にすることができる。VM15A~15Nは、異なるクライアント・デバイス20A~20Eからのそれぞれのリクエストに応答してデプロイすることができる。例えば、VM15Aは、クライアント・デバイス20Aによってデプロイすることができ、VM15Bは、クライアント・デバイス20Bによってデプロイすることができ、VM15Cは、クライアント・デバイス20Cによってデプロイすることができる。ノード10はさらに、クライアントが、(VMとして動作しない)物理サーバを供給するのを容易にすることができる。本明細書に記載された例は、ノード10内のリソースをVMの一部として供給することを実施するが、記載された技術的ソリューションを適用して、それらのリソースを物理サーバの一部として供給することもできる。
一例では、クライアント・デバイス20A~20Eが、同じエンティティ、例えば同じ人間、ビジネス、政府機関、企業内の部門または他のエンティティに属していてもよく、そのエンティティのプライベート・クラウドとしてノード10を動作させることができる。その場合、ノード10は単に、そのエンティティに属するクライアント・デバイス20A~20EによってデプロイされたVM15A~15Nのホストの役目を果たす。別の例では、クライアント・デバイス20A~20Eが異なるエンティティに属していてもよい。例えば、第1のエンティティは、クライアント・デバイス20Aを所有することができ、その一方で、第2のエンティティは、クライアント・デバイス20Bを所有することができる。その場合には、異なるエンティティからのVMのホストの役目を果たすパブリック・クラウドとしてノード10を動作させることができる。例えば、VM15AがVM15Bへのアクセスを容易にしないシュラウドされた(shrouded)方式で、VM15A~15Nをデプロイすることができる。例えば、ノード10は、IBM z Systems(R) Processor Resource/Systems Manager(PR/SM)Logical Partition(LPAR)フィーチャを使用して、VM15A~15をシュラウドすることができる。PR/SM LPARなどのこれらのフィーチャは、パーティション間の分離を提供し、したがって、ノード10が、異なる論理パーティション内の同じ物理ノード10上の異なるエンティティに対して2つ以上のVM15A~15Nをデプロイすることを容易にする。PR/SM LPARハイパーバイザは、この分離を提供するための特定のハードウェアを有する信頼できる内部ファームウェア内に実装される。
クライアント・デバイス20A~20Eからのクライアント・デバイス20Aは、ノード10のハイパーバイザ12によるVMのデプロイメントをリクエストする、コンピュータ、スマートフォン、タブレット・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、サーバ・コンピュータまたは他の通信装置などの通信装置である。クライアント・デバイス20Aは、ネットワーク165を介してハイパーバイザが受け取るリクエストを送ることができる。VM15A~15NからのVM15Aは、クライアント・デバイス20A~20Eからのクライアント・デバイス20Aからのリクエストに応答してハイパーバイザ12がデプロイするVMイメージである。ハイパーバイザ12はVMモニタ(VMM)であり、そのVMMは、VMを生成および動作するソフトウェア、ファームウェアまたはハードウェアとすることができる。ハイパーバイザ12は、VM15Aが、ノード10のハードウェア構成要素を使用して、プログラムの実行もしくはデータの記憶またはその両方を実施することを容易にする。適切なフィーチャおよび変更がある場合、ハイパーバイザ12は、IBM z Systems(R)、オラクル(Oracle)のVM Server、シトリックス(Citrix)のXenServer、VmwareのESX、Microsoft Hyper-Vハイパーバイザ、または他の任意のハイパーバイザとすることができる。ハイパーバイザ12は、ノード10上で直接に実行されるネイティブのハイパーバイザ、または別のハイパーバイザ上で実行されるホステッド(hosted)・ハイパーバイザとすることができる。
次に図22を参照すると、本発明の1つまたは複数の実施形態による、本明細書の教示を実施するためのノード10が示されている。ノード10は、本明細書に記載されたさまざまな通信技術を利用する任意の数および組合せのコンピューティング・デバイスおよびネットワークを含み、もしくはそのようなコンピューティング・デバイスおよびネットワークを使用し、またはそのようなコンピューティング・デバイスおよびネットワークを含み、使用する、電子コンピュータ・フレームワークとすることができる。ノード10は、異なるサービスに変化する能力または他から独立していくつかのフィーチャを再構成する能力を有したまま、簡単にスケーリング、拡張、およびモジュール化することができる。
この実施形態では、ノード10がプロセッサ2201を有し、プロセッサ2201は、1つまたは複数の中央処理ユニット(CPU)2201a、2201b、2201cなどを含むことができる。処理回路、マイクロプロセッサ、コンピューティング・ユニットとも呼ばれるプロセッサ2201は、システム・バス2202を介してシステム・メモリ2203および他のさまざまな構成要素に結合されている。システム・メモリ2203は、リード・オンリー・メモリ(ROM)2204およびランダム・アクセス・メモリ(RAM)2205を含む。ROM2204は、システム・バス2202に結合されており、基本入出力システム(BIOS)を含むことができ、BIOSは、ノード10のある種の基本機能を制御する。RAMは、プロセッサ2201によって使用されるためにシステム・バス2202に結合された読出し-書込みメモリである。
図22のノード10はハードディスク2207を含む。ハードディスク2207は、プロセッサ2201が読み、実行することができる有形のストレージ媒体の例である。ハードディスク2207は、ソフトウェア2208およびデータ2209を記憶している。ソフトウェア2208は、(図1~21を参照して説明したプロセスなどのプロセスを実行するために)プロセッサ2201によってノード10上で実行される命令として記憶されている。データ2209は、ソフトウェア2208のオペレーションをサポートするように、およびソフトウェア2208のオペレーションによって使用されるようにさまざまなデータ構造で編成された定性的または定量的変量の一組の値を含む。
図22のノード10は、プロセッサ2201、システム・メモリ2203、ハードディスク2207およびノード10の他の構成要素(例えば周辺および外部デバイス)を相互接続し、それらの構成要素間の通信をサポートする1つまたは複数のアダプタ(例えばハードディスク・コントローラ、ネットワーク・アダプタ、グラフィクス・アダプタなど)を含む。本発明の1つまたは複数の実施形態では、この1つまたは複数のアダプタを、介在するバス・ブリッジを介してシステム・バス2202に接続された1つまたは複数のI/Oバスに接続することができ、この1つまたは複数のI/Oバスは、ペリフェラル・コンポーネント・インターコネクト(Peripheral Component Interconnect)(PCI)などの一般的なプロトコルを利用することができる。
示されているとおり、ノード10は、キーボード2221、マウス2222、スピーカ2223およびマイクロフォン2224をシステム・バス2202に相互接続するインタフェース・アダプタ2220を含む。ノード10は、システム・バス2202をディスプレイ2231に相互接続するディスプレイ・アダプタ2230を含む。ディスプレイ・アダプタ2230(もしくはプロセッサ2201またはその両方)は、GUI2232の表示および管理などのグラフィクス性能を提供するグラフィクス・コントローラを含むことができる。通信アダプタ2241が、システム・バス2202をネットワーク2250に相互接続し、ノード10が、サーバ2251やデータベース2252などの他のシステム、デバイス、データおよびソフトウェアと通信することを可能にする。本発明の1つまたは複数の実施形態では、ソフトウェア2208およびデータ2209のオペレーションを、ネットワーク2250上で、サーバ2251およびデータベース2252によって実施することができる。例えば、ソフトウェア2208およびデータ2209の内部反復を、プラットフォーム・アズ・ア・サービス、ソフトウェア・アズ・ア・サービスもしくはインフラストラクチャ・アズ・ア・サービスまたはこれらの組合せとして(例えば分散システム内のウェブ・アプリケーションとして)提供するために、ネットワーク2250、サーバ2251およびデータベース2252を結合することができる。
本明細書に記載された実施形態は必然的に、コンピュータ技術、特にVMのホストの役目を果たすコンピュータ・サーバに根差したものである。さらに、本発明の1つまたは複数の実施形態は、VMのホストの役目を果たすコンピュータ・サーバが、ハイパーバイザでさえもセキュアVMに関連づけられたメモリ、レジスタおよび他のデータにアクセスすることが禁じられているセキュアVMのホストの役目を果たすことを容易にすることによって、コンピューティング技術のオペレーション自体の改良、特にVMのホストの役目を果たすコンピュータ・サーバのオペレーションの改良を容易にする。さらに、本発明の1つまたは複数の実施形態は、ハードウェア、ファームウェア(例えばミリコード)またはこれらの組合せを含むセキュア・インタフェース制御(本明細書では「UV」とも呼ばれる)を使用して、セキュアVMとハイパーバイザとの分離を容易にすることによって、したがって、コンピューティング・サーバがホストの役目を果たしているVMのセキュリティを維持することによって、VMホスティング・コンピューティング・サーバの改良に向けてのかなりのステップを提供する。セキュア・インタフェース制御は、本明細書に記載されたとおり、VMの初期化/終了時のセキュアVM状態に重大なオーバヘッドを追加することなく、セキュリティを容易にするための軽量の介在オペレーションを提供する。
本明細書に開示された本発明の実施形態は、VMのセキュア・ストレージへのアクセスを制御するシステム、方法もしくはコンピュータ・プログラム製品(本明細書ではシステム)またはこれらの組合せを含むことがある。それぞれの説明に関して、要素の識別子は、異なる図の他の類似の要素に対して再使用されていることに留意されたい。
本明細書では、本発明のさまざまな実施形態が関連図を参照して説明される。本発明の範囲を逸脱することなく本発明の代替実施形態を考案することができる。以下の説明および図面には、要素間のさまざまな接続および位置関係(例えば上、下、隣りなど)が示されている。これらの接続もしくは位置関係またはその両方は、特に指定されていない限り、直接的なものであることまたは間接的なものであることができ、本発明は、この点に関して限定を意図したものではない。したがって、実体の結合は、直接結合または間接結合であることができ、実体間の位置関係は、直接的位置関係または間接的位置関係であることができる。さらに、本明細書には詳細に記載されていない追加のステップまたは機能を有するより包括的な手順またはプロセスに、本明細書に記載されたさまざまなタスクおよびプロセス・ステップを組み込むことができる。
特許請求の範囲および本明細書の解釈のために、以下の定義および略語が使用される。本明細書で使用されるとき、用語「備える(comprises)」、「備える(comprising)」、「含む(includes)」、「含む(including)」、「有する(has)」、「有する(having)」、「含有する(contains)」もしくは「含有する(containing)」、またはこれらの用語の他の変異語は、非排他的包含(non-exclusive inclusion)をカバーすることが意図されている。例えば、要素のリストを含む組成物、混合物、プロセス、方法、物品または装置は、必ずしもそれらの要素だけに限定されるわけではなく、明示的にはリストに入れられていない他の要素、あるいはこのような組成物、混合物、プロセス、方法、物品または装置に固有の他の要素を含みうる。
さらに、本明細書では、用語「例示的な」が、「例、事例または実例として役立つ」ことを意味するものとして使用されている。本明細書に「例示的」として記載された実施形態または設計は必ずしも、他の実施形態または設計よりも好ましいまたは有利であるとは解釈されない。用語「少なくとも1つの」および「1つまたは複数の」は、1以上の任意の整数、すなわち1、2、3、4などを含むと理解してもよい。用語「複数の」は、2以上の任意の整数、すなわち2、3、4、5などを含むと理解してもよい。用語「接続」は、間接「接続」と直接「接続」の両方を含むことがある。
用語「約」、「実質的に」、「およそ」およびこれらの用語の変異語は、特定の数量の大きさに関連した、本出願の提出時に利用可能な機器に基づく誤差の程度を含むことが意図されている。例えば、「約」は、所与の値の±8%、5%または2%の範囲を含みうる。
本発明は、インテグレーションの可能な技術的詳細レベルにおいて、システム、方法もしくはコンピュータ・プログラム製品、またはこれらの組合せであることができる。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含むことができる。
このコンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形のデバイスとすることができる。このコンピュータ可読ストレージ媒体は例えば、限定はされないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたはこれらの適当な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能なプログラマブル・リード・オンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、ディジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、機械的にコード化されたデバイス、例えばパンチカードまたはその上に命令が記録された溝の中の一段高くなった構造体、およびこれらの適当な組合せを含む。本明細書で使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が一過性の信号、例えば電波もしくは他の自由に伝搬する電磁波、ウェーブガイドもしくは他の伝送体内を伝搬する電磁波(例えば光ファイバ・ケーブル内を通る光パルス)、または電線を通して伝送される電気信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から対応するそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、またはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはそれらの組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードすることができる。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバ、またはこれらの組合せを含むことができる。それぞれのコンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、それらのコンピュータ可読プログラム命令を、対応するそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、もしくは集積回路用の構成データであってもよく、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同種のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードであってもよい。このコンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されてもよく、一部がユーザのコンピュータ上で実行されてもよく、独立型ソフトウェア・パッケージとして実行されてもよく、一部がユーザのコンピュータ上で、一部が遠隔コンピュータ上で実行されてもよく、または全体が遠隔コンピュータもしくは遠隔サーバ上で実行されてもよい。上記の最後のシナリオでは、遠隔コンピュータが、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、またはこの接続が、外部コンピュータに対して(例えばインターネット・サービス・プロバイダを使用してインターネットを介して)実施されてもよい。いくつかの実施形態では、本発明の態様を実施するために、例えばプログラム可能論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)またはプログラム可能論理アレイ(PLA)を含む電子回路が、このコンピュータ可読プログラム命令の状態情報を利用してその電子回路をパーソナライズすることにより、このコンピュータ可読プログラム命令を実行してもよい。
本明細書では、本発明の態様が、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品の流れ図もしくはブロック図またはその両方の図を参照して説明される。それらの流れ図もしくはブロック図またはその両方の図のそれぞれのブロック、およびそれらの流れ図もしくはブロック図またはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実施することができることが理解される。
これらのコンピュータ可読プログラム命令は、機械を形成する汎用コンピュータ、専用コンピュータまたは他のプログラム可能データ処理装置のプロセッサに、それらのコンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行されるこれらの命令が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施する手段を生成するような態様で、提供することができる。これらのコンピュータ可読プログラム命令はさらに、特定の方式で機能するようにコンピュータ、プログラム可能データ処理装置もしくは他のデバイスまたはこれらの組合せに指図することができるコンピュータ可読ストレージ媒体に、その中に命令が記憶されたコンピュータ可読ストレージ媒体が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作の態様を実施する命令を含む製品を含むような態様で、記憶することができる。
これらのコンピュータ可読プログラム命令はさらに、コンピュータ、他のプログラム可能装置または他のデバイス上で一連の動作ステップを実行させて、コンピュータによって実施されるプロセスを生み出すために、このコンピュータ、他のプログラム可能データ処理装置または他のデバイス上に、このコンピュータ、他のプログラム可能装置または他のデバイス上で実施されるこれらの命令が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施するような態様で、ロードすることができる。
添付図中の流れ図およびブロック図は、本発明のさまざまな実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能および動作を示す。この点に関して、それらの流れ図またはブロック図のそれぞれのブロックは、指定された論理機能を実施する1つまたは複数の実行可能命令を含む、命令のモジュール、セグメントまたは部分を表すことがある。いくつかの代替実施態様では、ブロックに示された機能を、図に示された順序とは異なる順序で実行することができる。例えば、連続して示された2つのブロックが、実際は、実質的に同時に実行されることがあり、または、含まれる機能によってはそれらのブロックが逆の順序で実行されることもある。それらのブロック図もしくは流れ図またはその両方の図のそれぞれのブロック、ならびにそれらのブロック図もしくは流れ図またはその両方の図のブロックの組合せを、指定された機能もしくは動作を実行しまたは専用ハードウェアとコンピュータ命令の組合せを実施するハードウェアベースの専用システムによって実施することができることにも留意すべきである。
本明細書で使用される用語の目的は特定の実施形態を説明することだけであり、それらの用語が限定を目的とすることは意図されていない。文脈からそうでないことが明らかである場合を除き、本明細書で使用されるとき、単数形の「a」、「an」および「the」は複数形も含むことが意図されている。本明細書で使用されるとき、用語「備える(comprises)」もしくは「備える(comprising)」またはその両方は、明示された特徴、完全体(integer)、ステップ、動作、要素もしくは構成要素またはこれらの組合せの存在を指定するが、他の1つもしくは複数の特徴、完全体、ステップ、動作、要素、構成要素もしくはこれらのグループ、またはこれらの組合せの存在または追加を排除しないことも理解される。
本明細書のさまざまな実施形態の説明は例示のために提示されたものであり、それらの説明が網羅的であること、または開示された実施形態に限定されることは意図されていない。当業者には、記載された実施形態の範囲および思想を逸脱しない多くの変更および変形が明白になるであろう。本明細書で使用されている用語は、実施形態の原理、実際的用途、もしくは市場に出ている技術には見られない技術的改良を最もうまく説明するように、または本明細書に開示された実施形態を他の当業者が理解することができるように選択した。

Claims (25)

  1. メモリのセキュア・ページに対するセキュア・アクセス・リクエストを、コンピュータ・システムのセキュア・インタフェース制御において受け取ること、
    前記セキュア・インタフェース制御によって、前記セキュア・ページに関連づけられた仮想アドレス比較無効化状態をチェックすること、および
    複数の仮想アドレスから同じ絶対アドレスへのマッピングをサポートするために、前記セキュア・インタフェース制御によって、前記仮想アドレス比較無効化状態がセットされていることに基づいて、前記セキュア・ページにアクセスする際の仮想アドレス・チェックを、前記セキュア・ページに対して無効化すること
    を含む、方法。
  2. 前記セキュア・インタフェース制御によって、複数のセキュア・ドメインのうちのセキュア・ドメインが共用ページにアクセスすることが許可されていることを、ドメイン識別子に基づいて確認すること
    をさらに含む、請求項1に記載の方法。
  3. 前記共用ページにアクセスする許可を確かめるために、前記セキュア・ドメインの前記ドメイン識別子が、共用を許すと識別された前記セキュア・ドメインの複数のドメイン識別子と比較される、請求項2に記載の方法。
  4. 仮想アドレスを絶対アドレスにマップする動的アドレス変換テーブルの複数のグループがセキュアでないホストによって変更されていないことを確かめることであって、前記セキュアでないホストは前記セキュア・ページにアクセスすることができる複数のセキュア・ドメインのうちのいずれかについて前記動的アドレス変換テーブルの前記グループのうちの1つまたは複数のグループを管理するように構成されており、仮想アドレスに対してマップするそれぞれのテーブルが前記動的アドレス変換テーブルの前記1つまたは複数のグループの中の複数の関連テーブルを含む、確かめること、および
    前記動的アドレス変換テーブルの前記1つまたは複数のグループの中で変化を検出したことに基づいて、前記セキュア・アクセス・リクエストを終了すること
    を含む、請求項2に記載の方法。
  5. 前記仮想アドレス比較無効化状態が、前記セキュア・ページに関連づけられたセキュア・ドメイン識別子、前記セキュア・ページに関連づけられた仮想アドレス・マッピング・データおよび前記仮想アドレス比較無効化状態を含むゾーン・セキュリティ・テーブルを通して記憶および更新される、請求項1に記載の方法。
  6. 前記セキュア・インタフェース制御がファームウェア、ハードウェアもしくは信頼できるソフトウェア、またはファームウェア、ハードウェアおよび信頼できるソフトウェアの組合せを含み、前記セキュア・ページがハイパーバイザまたはオペレーティング・システムによって管理されたセキュア仮想機械またはセキュア・コンテナに割り当てられる、請求項1に記載の方法。
  7. システムであって、
    メモリと、
    処理ユニットと、
    複数のオペレーションを実行するように構成されたセキュア・インタフェース制御と
    を備え、前記複数のオペレーションが、
    前記処理ユニット上で実行しているエンティティからの前記メモリのセキュア・ページに対するセキュア・アクセス・リクエストに関連づけられた仮想アドレス比較無効化状態をチェックすること、および
    複数の仮想アドレスから同じ絶対アドレスへのマッピングをサポートするために、前記仮想アドレス比較無効化状態がセットされていることに基づいて、前記セキュア・ページにアクセスする際の仮想アドレス・チェックを、前記セキュア・ページに対して無効化すること
    を含む、システム。
  8. 前記セキュア・インタフェース制御が、オペレーションを実行するように構成されており、前記オペレーションが、
    複数のセキュア・ドメインのうちのセキュア・ドメインが共用ページにアクセスすることが許可されていることを、ドメイン識別子に基づいて確認すること
    を含む、請求項7に記載のシステム。
  9. 前記共用ページにアクセスする許可を確かめるために、前記セキュア・ドメインの前記ドメイン識別子が、共用を許すと識別された前記セキュア・ドメインの複数のドメイン識別子と比較される、請求項8に記載のシステム。
  10. 前記セキュア・インタフェース制御が、オペレーションを実行するように構成されており、前記オペレーションが、
    仮想アドレスを絶対アドレスにマップする動的アドレス変換テーブルの複数のグループがセキュアでないホストによって変更されていないことを確かめることであって、前記セキュアでないホストは前記セキュア・ページにアクセスすることができる複数のセキュア・ドメインのうちのいずれかについて前記動的アドレス変換テーブルの前記グループのうちの1つまたは複数のグループを管理するように構成されており、仮想アドレスに対してマップするそれぞれのテーブルが前記動的アドレス変換テーブルの前記1つまたは複数のグループの中の複数の関連テーブルを含む、確かめること、および
    前記動的アドレス変換テーブルの前記1つまたは複数のグループの中で変化を検出したことに基づいて、前記セキュア・アクセス・リクエストを終了すること
    を含む、請求項8に記載のシステム。
  11. 前記仮想アドレス比較無効化状態が、前記セキュア・ページに関連づけられたセキュア・ドメイン識別子、前記セキュア・ページに関連づけられた仮想アドレス・マッピング・データおよび前記仮想アドレス比較無効化状態を含むゾーン・セキュリティ・テーブルを通して記憶および更新される、請求項7に記載のシステム。
  12. 前記セキュア・インタフェース制御が、ファームウェア、ハードウェアもしくは信頼できるソフトウェア、またはファームウェア、ハードウェアおよび信頼できるソフトウェアの組合せを含み、前記セキュア・ページが、ハイパーバイザまたはオペレーティング・システムによって管理されたセキュア仮想機械またはセキュア・コンテナに割り当てられる、請求項7に記載のシステム。
  13. コンピュータ可読ストレージ媒体を含むコンピュータ・プログラム製品であって、前記コンピュータ可読ストレージ媒体がコンピュータ実行可能命令を含み、前記コンピュータ実行可能命令が、処理ユニットのセキュア・インタフェース制御によって実行されたときに、前記処理ユニットに方法を実行させ、前記方法が、
    前記処理ユニット上で実行しているエンティティからのメモリのセキュア・ページに対するセキュア・アクセス・リクエストに関連づけられた仮想アドレス比較無効化状態をチェックすること、および
    複数の仮想アドレスから同じ絶対アドレスへのマッピングをサポートするために、前記仮想アドレス比較無効化状態がセットされていることに基づいて、前記セキュア・ページにアクセスする際の仮想アドレス・チェックを、前記セキュア・ページに対して無効化すること
    を含む、コンピュータ・プログラム製品。
  14. 前記実行可能な命令がさらに、前記処理ユニットに、
    前記セキュア・インタフェース制御によって、複数のセキュア・ドメインのうちのセキュア・ドメインが共用ページにアクセスすることが許可されていることを、ドメイン識別子に基づいて確認すること
    を実行させる、請求項13に記載のコンピュータ・プログラム製品。
  15. 前記共用ページにアクセスする許可を確かめるために、前記セキュア・ドメインの前記ドメイン識別子が、共用を許すと識別された前記セキュア・ドメインの複数のドメイン識別子と比較される、請求項14に記載のコンピュータ・プログラム製品。
  16. 前記実行可能な命令がさらに、前記処理ユニットに、
    仮想アドレスを絶対アドレスにマップする動的アドレス変換テーブルの複数のグループがセキュアでないホストによって変更されていないことを確かめることであって、前記セキュアでないホストは前記セキュア・ページにアクセスすることができる複数のセキュア・ドメインのうちのいずれかについて前記動的アドレス変換テーブルの前記グループのうちの1つまたは複数のグループを管理するように構成されており、仮想アドレスに対してマップするそれぞれのテーブルが前記動的アドレス変換テーブルの前記1つまたは複数のグループの中の複数の関連テーブルを含む、確かめること、および
    前記動的アドレス変換テーブルの前記1つまたは複数のグループの中で変化を検出したことに基づいて、前記セキュア・アクセス・リクエストを終了すること
    を実行させる、請求項14に記載のコンピュータ・プログラム製品。
  17. 前記仮想アドレス比較無効化状態が、前記セキュア・ページに関連づけられたセキュア・ドメイン識別子、前記セキュア・ページに関連づけられた仮想アドレス・マッピング・データおよび前記仮想アドレス比較無効化状態を含むゾーン・セキュリティ・テーブルを通して記憶および更新される、請求項13に記載のコンピュータ・プログラム製品。
  18. 前記セキュア・ページが、ハイパーバイザまたはオペレーティング・システムによって管理されたセキュア仮想機械またはセキュア・コンテナに割り当てられる、請求項13に記載のコンピュータ・プログラム製品。
  19. メモリのセキュア・ページに対するセキュア・アクセス・リクエストを、コンピュータ・システムのセキュア・インタフェース制御において受け取ること、
    前記セキュア・インタフェース制御によって、前記セキュア・ページに関連づけられた仮想アドレス比較無効化状態をチェックすること、および
    前記セキュア・アクセス・リクエストを出したエンティティの許可ステータス、および前記仮想アドレス比較無効化状態がセットされていることに基づいて、仮想アドレスが指定されていない前記セキュア・ページへの絶対アドレス・アクセスを有効化すること
    を含む、方法。
  20. 前記セキュア・インタフェース制御によって、複数のセキュア・ドメインのうちのセキュア・ドメインが共用ページにアクセスすることが許可されていることを、ドメイン識別子に基づいて確認すること
    をさらに含む、請求項19に記載の方法。
  21. 前記共用ページにアクセスする許可を確かめるために、前記セキュア・ドメインの前記ドメイン識別子が、共用を許すと識別された前記セキュア・ドメインの複数のドメイン識別子と比較される、請求項20に記載の方法。
  22. 前記セキュア・インタフェース制御がファームウェアもしくはハードウェア、またはファームウェアとハードウェアの組合せを含み、前記セキュア・ページがハイパーバイザまたはオペレーティング・システムによって管理されたセキュア・コンテナまたはセキュア仮想機械に割り当てられる、請求項19に記載の方法。
  23. システムであって、
    メモリと、
    処理ユニットと、
    複数のオペレーションを実行するように構成されたセキュア・インタフェース制御と
    を備え、前記複数のオペレーションが、
    前記処理ユニット上で実行しているエンティティからの前記メモリのセキュア・ページに対するセキュア・アクセス・リクエストに関連づけられた仮想アドレス比較無効化状態をチェックすること、および
    前記セキュア・アクセス・リクエストを出したエンティティの許可ステータス、および前記仮想アドレス比較無効化状態がセットされていることに基づいて、仮想アドレスが指定されていない前記セキュア・ページへの絶対アドレス・アクセスを有効化すること
    を含む、システム。
  24. 前記セキュア・インタフェース制御が、オペレーションを実行するように構成されており、前記オペレーションが、
    複数のセキュア・ドメインのうちのセキュア・ドメインが共用ページにアクセスすることが許可されていることを、ドメイン識別子に基づいて確認すること
    を含む、請求項23に記載のシステム。
  25. 前記共用ページにアクセスする許可を確かめるために、前記セキュア・ドメインの前記ドメイン識別子が、共用を許すと識別された前記セキュア・ドメインの複数のドメイン識別子と比較される、請求項24に記載のシステム。
JP2021550114A 2019-03-08 2020-03-02 複数のセキュリティ・ドメインにわたるセキュア・メモリの共用 Active JP7350868B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/296,306 US11640361B2 (en) 2019-03-08 2019-03-08 Sharing secure memory across multiple security domains
US16/296,306 2019-03-08
PCT/EP2020/055469 WO2020182528A1 (en) 2019-03-08 2020-03-02 Sharing secure memory across multiple security domains

Publications (3)

Publication Number Publication Date
JP2022522702A true JP2022522702A (ja) 2022-04-20
JPWO2020182528A5 JPWO2020182528A5 (ja) 2022-08-12
JP7350868B2 JP7350868B2 (ja) 2023-09-26

Family

ID=69743236

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021550114A Active JP7350868B2 (ja) 2019-03-08 2020-03-02 複数のセキュリティ・ドメインにわたるセキュア・メモリの共用

Country Status (9)

Country Link
US (1) US11640361B2 (ja)
EP (1) EP3935496B1 (ja)
JP (1) JP7350868B2 (ja)
KR (1) KR20210118153A (ja)
CN (1) CN113544644A (ja)
MX (1) MX2021010590A (ja)
SG (1) SG11202105431VA (ja)
TW (1) TWI751492B (ja)
WO (1) WO2020182528A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347529B2 (en) 2019-03-08 2022-05-31 International Business Machines Corporation Inject interrupts and exceptions into secure virtual machine
US11308215B2 (en) * 2019-03-08 2022-04-19 International Business Machines Corporation Secure interface control high-level instruction interception for interruption enablement
CN112256394B (zh) * 2020-10-23 2022-11-18 海光信息技术股份有限公司 一种进程安全方法、装置、cpu、芯片及计算机设备
US20230267196A1 (en) * 2022-02-22 2023-08-24 Mellanox Technologies, Ltd. Confidential Computing with Device Memory Isolation
US20230401081A1 (en) * 2022-06-10 2023-12-14 Microsoft Technology Licensing, Llc Software isolation of virtual machine resources
CN116933271A (zh) * 2023-08-02 2023-10-24 北京火山引擎科技有限公司 数据处理方法、装置、设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190042463A1 (en) * 2018-09-28 2019-02-07 Vedvyas Shanbhogue Apparatus and method for secure memory access using trust domains

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4787031A (en) 1985-01-04 1988-11-22 Digital Equipment Corporation Computer with virtual machine mode and multiple protection rings
JP3657665B2 (ja) 1995-02-14 2005-06-08 富士通株式会社 共用メモリに結合される複数の計算機システム及び共用メモリに結合される複数の計算機システムの制御方法
US6314501B1 (en) 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
AU2003276399A1 (en) 2002-11-18 2004-06-15 Arm Limited Virtual to physical memory address mapping within a system having a secure domain and a non-secure domain
AU2004280976A1 (en) 2003-10-08 2005-04-21 Unisys Corporation Computer system para-virtualization using a hypervisor that is implemented in a partition of the host system
US20050102670A1 (en) 2003-10-21 2005-05-12 Bretl Robert F. Shared object memory with object management for multiple virtual machines
US10768958B2 (en) 2004-11-17 2020-09-08 Vmware, Inc. Using virtual local area networks in a virtual computer system
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US7814307B2 (en) 2006-03-16 2010-10-12 Microsoft Corporation Fast booting a computing device to a specialized experience
US7610481B2 (en) 2006-04-19 2009-10-27 Intel Corporation Method and apparatus to support independent systems in partitions of a processing system
JP4952308B2 (ja) 2007-03-09 2012-06-13 日本電気株式会社 メモリ共有システム、方法、及び、プログラム
US20090113111A1 (en) 2007-10-30 2009-04-30 Vmware, Inc. Secure identification of execution contexts
US8527715B2 (en) 2008-02-26 2013-09-03 International Business Machines Corporation Providing a shared memory translation facility
GB2460393B (en) * 2008-02-29 2012-03-28 Advanced Risc Mach Ltd A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry
US8041877B2 (en) 2008-06-09 2011-10-18 International Business Machines Corporation Distributed computing utilizing virtual memory having a shared paging space
US8006043B2 (en) 2008-10-06 2011-08-23 Vmware, Inc. System and method for maintaining memory page sharing in a virtual environment
US20100161879A1 (en) 2008-12-18 2010-06-24 Lsi Corporation Efficient and Secure Main Memory Sharing Across Multiple Processors
US8738932B2 (en) 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
US9405700B2 (en) * 2010-11-04 2016-08-02 Sonics, Inc. Methods and apparatus for virtualization in an integrated circuit
US8984478B2 (en) 2011-10-03 2015-03-17 Cisco Technology, Inc. Reorganization of virtualized computer programs
AU2013297064B2 (en) 2012-08-03 2016-06-16 North Carolina State University Methods, systems, and computer readable medium for active monitoring, memory protection and integrity verification of target devices
US10198572B2 (en) 2013-09-17 2019-02-05 Microsoft Technology Licensing, Llc Virtual machine manager facilitated selective code integrity enforcement
US9117081B2 (en) 2013-12-20 2015-08-25 Bitdefender IPR Management Ltd. Strongly isolated malware scanning using secure virtual containers
US10599565B2 (en) * 2013-12-24 2020-03-24 Hewlett-Packard Development Company, L.P. Hypervisor managing memory addressed above four gigabytes
US9483639B2 (en) 2014-03-13 2016-11-01 Unisys Corporation Service partition virtualization system and method having a secure application
US9652631B2 (en) 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access
KR20150128328A (ko) 2014-05-09 2015-11-18 한국전자통신연구원 증거 수집 도구 제공 방법, 도메인 분리 기반 모바일 기기에서 증거 자료 확보 장치 및 방법
US9792222B2 (en) * 2014-06-27 2017-10-17 Intel Corporation Validating virtual address translation by virtual machine monitor utilizing address validation structure to validate tentative guest physical address and aborting based on flag in extended page table requiring an expected guest physical address in the address validation structure
WO2016006806A1 (ko) 2014-07-08 2016-01-14 김진숙 임산부용 팬티
US9454497B2 (en) 2014-08-15 2016-09-27 Intel Corporation Technologies for secure inter-virtual-machine shared memory communication
US10599458B2 (en) 2015-01-23 2020-03-24 Unisys Corporation Fabric computing system having an embedded software defined network
US10503405B2 (en) 2015-02-10 2019-12-10 Red Hat Israel, Ltd. Zero copy memory reclaim using copy-on-write
US9870324B2 (en) 2015-04-09 2018-01-16 Vmware, Inc. Isolating guest code and data using multiple nested page tables
KR102327782B1 (ko) * 2015-05-29 2021-11-18 한국과학기술원 전자 장치 및 커널 데이터 접근 방법
GB2539435B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
US20170063544A1 (en) 2015-08-26 2017-03-02 Rubicon Labs, Inc. System and method for sharing data securely
US9792143B1 (en) 2015-10-23 2017-10-17 Amazon Technologies, Inc. Platform secure execution modes
US20170357592A1 (en) 2016-06-09 2017-12-14 Vmware, Inc. Enhanced-security page sharing in a virtualized computer system
US10585805B2 (en) 2016-07-29 2020-03-10 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US10303899B2 (en) 2016-08-11 2019-05-28 Intel Corporation Secure public cloud with protected guest-verified host control
US10713177B2 (en) 2016-09-09 2020-07-14 Intel Corporation Defining virtualized page attributes based on guest page attributes
KR102511451B1 (ko) 2016-11-09 2023-03-17 삼성전자주식회사 리치 실행 환경에서 보안 어플리케이션을 안전하게 실행하는 컴퓨팅 시스템
US10169088B2 (en) 2016-11-29 2019-01-01 Red Hat Israel, Ltd. Lockless free memory ballooning for virtual machines
US10447717B2 (en) 2017-01-28 2019-10-15 Qualcomm Incorporated Network attack detection using multi-path verification
DE112019005604T5 (de) 2018-11-08 2021-09-09 Intel Corporation Function-as-a-service-system-verbesserungen (faas-system-verbesserungen)
US11461244B2 (en) 2018-12-20 2022-10-04 Intel Corporation Co-existence of trust domain architecture with multi-key total memory encryption technology in servers
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190042463A1 (en) * 2018-09-28 2019-02-07 Vedvyas Shanbhogue Apparatus and method for secure memory access using trust domains

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SEONGWOOK JIN; ET AL: "ARCHITECTURAL SUPPORT FOR SECURE VIRTUALIZATION UNDER A VULNERABLE HYPERVISOR", PROCEEDINGS OF THE 44TH ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE, JPN5022006370, 2011, US, pages 272 - 283, XP033064886, ISSN: 0005139172, DOI: 10.1145/2155620.2155652 *

Also Published As

Publication number Publication date
EP3935496C0 (en) 2024-02-14
EP3935496A1 (en) 2022-01-12
SG11202105431VA (en) 2021-06-29
KR20210118153A (ko) 2021-09-29
TW202038105A (zh) 2020-10-16
MX2021010590A (es) 2021-10-13
TWI751492B (zh) 2022-01-01
US11640361B2 (en) 2023-05-02
EP3935496B1 (en) 2024-02-14
JP7350868B2 (ja) 2023-09-26
CN113544644A (zh) 2021-10-22
US20200285594A1 (en) 2020-09-10
WO2020182528A1 (en) 2020-09-17

Similar Documents

Publication Publication Date Title
JP7350868B2 (ja) 複数のセキュリティ・ドメインにわたるセキュア・メモリの共用
JP7373578B2 (ja) セキュア仮想マシン環境におけるストレージ保護ハードウェアのテスト方法、システム、プログラム
JP7379512B2 (ja) セキュア・ドメインと非セキュア・エンティティとの間のストレージ共用
JP7379516B2 (ja) セキュア・インターフェース制御ストレージのためのホスト仮想アドレス空間使用方法、システム、プログラム
JP7379517B2 (ja) セキュア・インターフェース制御セキュア・ストレージ・ハードウェアのタグ付け方法、システム、プログラム
US11182192B2 (en) Controlling access to secure storage of a virtual machine
JP7393846B2 (ja) セキュア・インターフェイス制御の高レベルのページ管理
JP7410161B2 (ja) ページ変更検出によるセキュアなページング
JP7398472B2 (ja) 割り込みイネーブルのためのセキュア・インターフェース制御ハイレベル命令インターセプト
CN113544646B (zh) 安全存储隔离
JP2022522679A (ja) セキュア・インターフェース・コントロールの通信インターフェース

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220512

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220803

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220824

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230816

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230829

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230913

R150 Certificate of patent or registration of utility model

Ref document number: 7350868

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150