JP2023510773A - セキュア・アプリケーション・プロセスを実行するためのプロセスベース仮想化システム - Google Patents
セキュア・アプリケーション・プロセスを実行するためのプロセスベース仮想化システム Download PDFInfo
- Publication number
- JP2023510773A JP2023510773A JP2022542092A JP2022542092A JP2023510773A JP 2023510773 A JP2023510773 A JP 2023510773A JP 2022542092 A JP2022542092 A JP 2022542092A JP 2022542092 A JP2022542092 A JP 2022542092A JP 2023510773 A JP2023510773 A JP 2023510773A
- Authority
- JP
- Japan
- Prior art keywords
- secure
- memory component
- secure application
- application
- data processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 247
- 230000008569 process Effects 0.000 title claims abstract description 209
- 238000012545 processing Methods 0.000 claims abstract description 97
- 238000013519 translation Methods 0.000 claims description 60
- 238000005192 partition Methods 0.000 claims description 41
- 238000004590 computer program Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 8
- 230000009466 transformation Effects 0.000 claims description 6
- 230000001052 transient effect Effects 0.000 claims description 2
- 230000014616 translation Effects 0.000 claims 17
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 8
- 230000007704 transition Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000012706 support-vector machine Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 102100022286 DNA repair-scaffolding protein Human genes 0.000 description 2
- 101000825159 Homo sapiens DNA repair-scaffolding protein Proteins 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/74—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
本開示は、データ処理ユニットを含むプロセスベース仮想化システムに関する。システムは、コンピュータ可読記憶媒体を含み、コンピュータ可読記憶媒体の第1のメモリ・コンポーネントは、OS、セキュア・アプリケーションおよび非セキュア・アプリケーション、ならびにファームウェアによるアクセスのために構成され、コンピュータ可読記憶媒体の第2のメモリ・コンポーネントは、ファームウェアによる、かつOSおよび非セキュア・アプリケーションによるものではないアクセスのために構成される。データ処理ユニットは、OSを用いて非セキュア・アプリケーション・プロセスを実行する第1の動作モードで動作するように、かつファームウェアを用いてセキュア・アプリケーションを実行する第2の動作モードで動作するように構成され、それにより第2のメモリ・コンポーネントを用いてアプリケーション・コードを実行する。
Description
本発明は、デジタル・コンピュータ・システムの分野に関し、より詳細には、プロセスベース仮想化システム(process-based virtualization system)に関する。
ドッカー(Docker)などのコンテナ・マネージャは、オペレーティング・システム・レベル仮想化を用いてコンテナと呼ばれるパッケージでソフトウェアを開発および配信する、結合されたサービスとしてのソフトウェア(software-as-a-service)およびサービスとしてのプラットフォーム(platform-as-a-service)製品のセットである。しかしながら、コンテナの実行は、コンテナが展開されるオペレーティング・システムにそれらが依存することに起因して脆弱である場合がある。
様々な実施形態が、独立請求項の主題によって記述される、セキュア・アプリケーション(secure application)を実行する方法、プロセスベース仮想化システム、およびコンピュータ・プログラム製品を提供する。有利な実施形態が、従属請求項において記述されている。本発明の実施形態は、それらが相互排他的ではない場合に、互いに自由に組み合わせられ得る。
1つの態様において、本発明は、コンピュータ可読記憶媒体(または機械可読媒体)を含む、プロセスベース仮想化システムに関し、コンピュータ可読記憶媒体の第1のメモリ・コンポーネントは、プロセスベース仮想化システムのオペレーティング・システム(OS)、セキュア・アプリケーションおよび非セキュア・アプリケーション(non-secure application)、ならびにファームウェアによるアクセスのために構成され、コンピュータ可読記憶媒体の第2のメモリ・コンポーネントは、ファームウェアおよびセキュア・アプリケーションによる、かつOSおよび非セキュア・アプリケーションによるものではないアクセスのために構成され、データ処理ユニットは、OSを用いて非セキュア・アプリケーションを実行する第1の動作モードで動作するように構成され、データ処理ユニットは、ファームウェアを用いてセキュア・アプリケーションを実行する第2の動作モードで動作するように構成され、それにより第2のメモリ・コンポーネントを用いてセキュア・アプリケーションのアプリケーション・コードを実行する。
1つの態様において、本発明は、コンピュータ可読記憶媒体を提供することであって、コンピュータ可読記憶媒体の第1のメモリ・コンポーネントが、OS、セキュア・アプリケーションおよび非セキュア・アプリケーション、ならびにファームウェアによるアクセスのために構成され、コンピュータ可読記憶媒体の第2のメモリ・コンポーネントが、ファームウェアおよびセキュア・アプリケーションによる、かつOSおよび非セキュア・アプリケーションによるものではないアクセスのために構成される、提供することと、OSを用いて非セキュア・アプリケーションを実行する第1の動作モードで動作するように構成される、データ処理ユニットを提供することと、ファームウェアを用いてセキュア・アプリケーションを実行する第2の動作モードで動作するようにデータ処理ユニットを構成することと、を含み、それにより第2のメモリ・コンポーネントを用いてセキュア・アプリケーションのアプリケーション・コードを実行する、方法に関する。
別の態様では、本発明は、具現化されるコンピュータ可読プログラム・コードを有するコンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品に関し、コンピュータ可読プログラム・コードは、前述した実施形態による方法の全てのステップを実施するように構成される。
さらに、本発明の構成要素のいずれかが、コンピュータ・システムにおいてプロセスベース仮想化を実施するように提案するサービス・プロバイダによって、展開され、管理され、サービスされるなどであり得る。本発明の実施形態は、関連システム、方法、またはプログラム製品、あるいはそれらの組み合わせも提供し、かつ包含する。
本発明のこれらの特徴および他の特徴は、添付図面と併せて用いられる、以下の本発明の様々な態様の詳細な説明からさらに容易に理解されるであろう。
以下では、本発明の実施形態が、単なる例として、図面を参照してさらに詳細に説明される。
本発明の詳細な実施形態が、添付図面を参照して本明細書に開示される。図面において、類似の番号は、類似の要素を表す。開示される実施形態は、本発明の潜在的実施形態の単なる例示であり、様々な形態を取り得ることを理解されたい。加えて、様々な実施形態に関連して与えられる実施例のそれぞれが、限定ではなく例示であるように意図される。さらに、図面は、必ずしも縮尺通りではなく、いくつかの特徴が、特定の構成要素の詳細を示すために強調されることがある。したがって、本明細書に開示される特定の構造的かつ機能的詳細は、限定として解釈されるべきではなく、単に本発明を様々に採用するように当業者に教示するための代表的な基礎として、解釈されるべきである。
「一実施形態」、「実施形態」、「例としての実施形態」などへの明細書中の参照は、説明される実施形態が、特定の特徴、構造、または特性を含み得るが、あらゆる実施形態が必ずしも特定の特徴、構造、または特性を含まない場合があることを示している。さらに、そのような語句は、必ずしも同一の実施形態に言及していない。さらに、特定の特徴、構造、または特性が、実施形態に関連して説明されるとき、それは、明示的に説明されるか否かに関わらず、他の実施形態に関連するそのような特徴、構造、または特性に影響を及ぼす当業者の知識の範囲内にあると考えられる。
本発明の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であること、または開示された実施形態に限定することを意図するものではない。多くの修正および変形が、説明された実施形態の範囲および思想から逸脱することなく当業者には明らかであろう。本明細書で使用される専門用語は、実施形態の原理、実際の用途、もしくは市場で見出される技術に対する技術的改善を最もよく説明するため、または本明細書で開示された実施形態を他の当業者が理解可能にするために、選択された。
オープンソース・オペレーティング・システムの基礎となるコードは、誰もが見て修正するように自由に利用可能である。しかしながら、これは、典型的には数百万行のコードを有するそのようなOSを実行中のコンピュータ・システムを、潜在的なセキュリティ脆弱性に晒すことがある。特に、コンテナのインスタンスなど、OSに依拠するプロセスは、名前空間およびコントロール・グループ(別名、cgroups)のようなソフトウェア概念のみを通して隔離されるため、セキュリティ脆弱性に晒される場合がある。本主題は、コンピュータ・システム/ファームウェアが、セキュア・アプリケーションのプロセスをOSから独立してセキュアな方法で、かつハードウェアを用いてセキュア・アプリケーションを他のアプリケーションから隔離して実行することを可能にし得る。セキュア・アプリケーション・プロセスには、非セキュア・アプリケーション・プロセスとは異なった扱いがされる。例えば、アドレス空間は、OSの代わりにファームウェアによって、セキュア・アプリケーションについてセットアップされる。加えて、ファームウェアが、OSの代わりにセキュア・アプリケーションの実行を制御する。一方、信頼されないアプリケーションは、OSの制御下で実行され得る。これは、セキュア・アプリケーションを実施するために必要な取り組みに起因して、通常セキュア・アプリケーションの数が非セキュア・アプリケーションの数よりもはるかに少ないため、特に有利であり得る。したがって、セキュア・アプリケーションに対してシステムを適合することは、既存システムとなおシームレスに統合しつつ、データへのアクセスをセキュアにし得る。例えば、ファームウェアは、OSがセキュア・アプリケーションの暗号化データを用いて行うことができないタスクを行うだけでよいため、OSと比較してはるかに少ない行数のコードを有し得る。
本主題は、プロセスベース仮想化システムのユーザにプロセスの透明な実行を提供し得る。即ち、ユーザは、ユーザのセキュア・アプリケーションの実行と非セキュア・アプリケーションの実行との差に気付かないことがある。プロセスは、実行されているコンピュータ・プログラムのインスタンスであってもよい。セキュア・アプリケーション・プロセスは、実行されているセキュア・アプリケーションのインスタンスであってもよい。非セキュア・アプリケーション・プロセスは、実行されている非セキュア・アプリケーションのインスタンスであってもよい。セキュア・アプリケーションおよび非セキュア・アプリケーションは、ユーザ定義されていてもよく、例えば、ユーザが、アプリケーションをセキュア・アプリケーションまたは非セキュア・アプリケーションとして定義していてもよい。
プロセスベース仮想化システムは、例えば、コンテナベース仮想化システムであってもよい。プロセスベース仮想化システムは、コンピュータ・システムであってもよい。プロセスベース仮想化システムは、オペレーティング・システム・レベル仮想化を可能にし得る。OSレベル仮想化は、複数の隔離された名前空間の存在を可能にするプロセスベース仮想化システムのカーネルによって可能にされ得る。コンテナは、そのような名前空間のうちの1つであり得る。コンテナは、ライブラリおよび他の依存関係などの、必要とする全ての部品を有するアプリケーションを含み得る。コンテナ・マネージャは、コンテナを管理(例えば、生成、削除、開始など)するために、プロセスベース仮想化システムにインストールされ得る。コンテナ・マネージャは、例えば、ドッカーまたはLXCであってもよい。OSレベル仮想化は、コンテナが仮想機械(VM)において実行中である場合に、ゲストOSレベル仮想化であり得る。仮想機械は、プロセスベース仮想化システムのゲストOSを含む。別の実施例では、OSレベル仮想化は、プロセスベース仮想化システムが仮想機械を含まない場合にホストOSレベル仮想化であり得る。
一実施形態によれば、ファームウェアは、プロセスからシステム・コール(例えば、説明を明確にするために「scall」と名付ける)を受信し、システム・コールが、セキュア・アプリケーションが暗号化フォーマットで第1のメモリ・コンポーネントに記憶されている(第1のメモリ・コンポーネントが暗号化セキュア・アプリケーションを記憶する)ことを示し、システム・コールを受信すると、第2の動作モードで動作するようにデータ処理ユニットを構成し、第2のメモリ・コンポーネントに暗号化されたセキュア・アプリケーションをコピーまたは移動し、第2のメモリ・コンポーネントにおいてコピーまたは移動されたセキュア・アプリケーションを復号し、復号されたセキュア・アプリケーションによる第2のメモリ・コンポーネントおよび第1のメモリ・コンポーネント内のデータへのアクセスを可能にするためにアドレス変換構造(address translation structure)をセットアップし、復号されたセキュア・アプリケーションを実行し、実行することが、アドレス変換構造を用いて第2のメモリ・コンポーネントにアクセスすることを含むように構成される。
scallを送信するプロセスは、非セキュア・アプリケーションの非セキュア・アプリケーション・プロセスであってもよい。非セキュア・アプリケーション・プロセスのシステム・コールscallは、第1のメモリ・コンポーネント内のセキュア・アプリケーションを指し示し得る。例えば、非セキュア・アプリケーション・プロセスのシステム・コールscallは、第1のメモリ・コンポーネント内のセキュア・アプリケーションの完全性保護されたコード部分および暗号により保護されたコード部分を指し示し得る。ロードされたセキュア・アプリケーションのコードが暗号によって保護され、かつ完全性保護されるため、システム・コールscallは、セキュアでない部分から行われ得る。ファームウェアは、完全性保護されたコード部分および暗号により保護されたコード部分を第2のメモリ・コンポーネントにコピーし得る。復号および完全性チェックは、第2のメモリ・コンポーネントにおいて行われ得る。それらのチェックをパスする(即ち成功する)場合、セキュア・アプリケーションのコードが、セキュア・プロセスとして実行され得る。別の実施例では、セキュア・アプリケーションは、セキュア・コンテナの一部であってもよく、scallを送信するプロセスは、セキュア・コンテナの一部であってもよい。例えば、システム・コールscallは、セキュア・コンテナのライブラリOSによって送信され得る。さらなる実施例では、scallを送信するプロセスは、セキュアVM(SVM)の一部であってもよい。セキュア・アプリケーション・プロセスは、第2のメモリ・コンポーネント内の復号され、完全性チェックされたコードを直接指し示し得る。
一実施形態によれば、ファームウェアは、プロセス初期化システム・コール(process initialization system call)をプロセスから受信し、コールが、セキュア・アプリケーションが暗号化フォーマットで第1のメモリ・コンポーネントに記憶されることを示し、プロセス初期化システム・コールを受信すると、第2の動作モードで動作するようにデータ処理ユニットを構成し、暗号化されたセキュア・アプリケーションを第2のメモリ・コンポーネントに移動またはコピーし、その後、第2のメモリ・コンポーネント内の移動またはコピーされたセキュア・アプリケーションを復号し、復号されたセキュア・アプリケーションによる第2のメモリ・コンポーネントおよび第1のメモリ・コンポーネント内のデータへのアクセスを可能にするためにアドレス変換構造をセットアップするように構成される。アドレス変換構造は、復号されたセキュア・アプリケーションがライブラリOSコールを使用することが可能にされ得るように、セットアップされ得る。初期化システム・コールを送信するプロセスは、非セキュア・アプリケーションの非セキュア・アプリケーション・プロセスであってもよい。
セキュア・アプリケーション・プロセスの実行が、初期化段階およびセキュア・アプリケーション実行段階によって可能にされ得る。本実施形態は、初期化段階を可能にし得る。初期化段階の間、ファームウェアは、実行時にセキュア・アプリケーションによって使用され得るメモリまたはインターフェースあるいはその両方をセットアップし得る。初期化段階をセキュア・アプリケーション実行段階から分離することによって、セキュア・アプリケーションのコード変更なしにセキュア・アプリケーションを実行することが可能となり得る。セキュア・アプリケーション実行段階の間、入力データまたは出力データが第1のメモリ・コンポーネントにおいて読み出され、または記憶され得るように、セキュア・アプリケーションの入力データの復号およびセキュア・アプリケーションの出力データの暗号化が、ライブラリOSコールによって行われ得る。データ処理ユニットは、初期化段階において第1のセキュア状態(本明細書で説明される)であってもよく、セキュア・アプリケーション実行段階において第2のセキュア状態であってもよい。
一実施形態によれば、アドレス変換構造は、パーティション・テーブル(partition table)およびセキュア・プロセスのためのセキュア・プロセス・テーブル(secure process table)を含み、パーティション・テーブルおよびセキュア・プロセス・テーブルが、第2のメモリ・コンポーネントに記憶され、アドレス変換構造をセットアップすることが、パーティション・エントリをパーティション・テーブルに追加することであって、追加されるパーティション・エントリがセキュア・プロセス・テーブルを指し示す、追加することと、セキュア・アプリケーションのセキュア・アプリケーション・プロセスに関連付けられたセキュア・プロセス・テーブルにプロセス・エントリを追加することであって、追加されるプロセス・エントリが、セキュア・アプリケーション・アドレス変換ツリーを指し示し、セキュア・アプリケーション・アドレス変換ツリーが有効アドレスの第2のメモリ・コンポーネントの物理アドレスへの変換を可能にするように構成される、追加することと、を含む。
セキュア・アプリケーション変換ツリーは、単一レベル・パーティション・スコープ指定基数変換ツリーであってもよく、その一例が、図6Dにおいて624と付番される。追加されたプロセス・エントリは、セキュア・アプリケーション・アドレス変換ツリーのページ・ディレクトリおよびページ・テーブルを位置特定することを可能にし得る。
一実施形態によれば、ファームウェアは、復号およびコピーを実行するためのアドレスを用いて、第1のメモリ・コンポーネント内の暗号化されたセキュア・アプリケーションの記憶位置を示すアドレスをさらに受信するように構成される。
セキュア・アプリケーションの命令を第1のメモリ・コンポーネントから第2のメモリ・コンポーネントへ移動することによって、例えばOSおよび非セキュア・アプリケーションによる、第2のメモリ・コンポーネント内の命令へのアクセスが妨げられ得る。これは、また、既存システムとの本主題のシームレスな統合を可能にし得るため、例えばセキュア・アプリケーションが第1のメモリ・コンポーネントにおいて任意の他のアプリケーションとして開始するため、有利であり得る。
受信したアドレスは、例えば、受信したプロセス初期化システム・コールまたは受信したシステム・コール(scall)の一部であってもよい。
一実施形態によれば、暗号化されていないセキュア・アプリケーションは、セキュア・アプリケーションのコンテンツを示すハッシュ値に関連付けられ、ファームウェアは、ハッシュ値を用いて、セキュア・アプリケーションの暗号化されていないコンテンツの完全性チェックを実行するようにさらに構成される。完全性チェックが成功した場合、復号およびコピーが実行される。完全性チェックは、ハッシュ値が、なおセキュア・アプリケーションの現在のコンテンツを表すかどうかを判定することを含み得る。ハッシュ値がセキュア・アプリケーションの現在のコンテンツを表す場合、復号およびコピーが実行され得る。代替実施形態では、完全性チェックが復号と同時に行われる。復号は、完全性チェックにパスした場合に成功し、そうでない場合、失敗する。
本実施形態は、セキュア・アプリケーションの実行を開始する前でさえ、セキュア・アプリケーションのコードへのアクセスを妨げ得るため、本主題のセキュアな態様をさらに向上させ得る。これは、例えば、ファームウェアによって実行される前にセキュア・アプリケーションの悪意のある修正を防止し得る。
一実施形態によれば、データ処理ユニットは、パーティション・テーブルを含み、パーティション・テーブルは、論理プロセス識別子によってインデックス付与され、パーティション・テーブルは、セキュア・プロセス・テーブルを指し示すエントリを含み、前記エントリは、固定値によってインデックス付与され、セキュア・プロセス・テーブルは、セキュア・プロセス識別子(SPID)によってインデックス付与され、データ処理ユニットは、セキュア・アプリケーション・プロセスのSPIDの値を含むセキュア・レジスタを含み、セキュア・アプリケーション・プロセスは、固定値を用いてセキュア・プロセス・テーブルを識別し、セキュア・レジスタの読み出し値に関連付けられたセキュア・プロセス・テーブルのエントリを用いてアドレス変換を実行するためにセキュア・レジスタに記憶された値を使用/読み出しするように構成される。読み出し値は、セキュア・レジスタに記憶されたSPID値である。
固定値は、予約された有効LPID、effLPID=「FFF」xであってもよい。
セキュア・プロセス・テーブルは、ファームウェアによって維持されるテーブルであり、メモリ内のプロセスを記述する。セキュア・プロセスには、ファームウェアおよびセキュア・アプリケーション・プロセス自体によってのみアクセスされ得るIDが割り当てられ得るため、セキュア・プロセスのSPIDによりセキュア・プロセス・テーブルにインデックス付与することによって、本主題のセキュアな態様がさらに強化され得る。例えば、SPIDは、セキュア・アプリケーション・プロセスに関連付けられたメモリ・テーブルを見つけるために使用される。このメモリ・テーブルは、セキュア・メモリ(第2のメモリ・コンポーネント)内にあり、ファームウェア(およびアドレス変換ハードウェア)によってのみアクセス可能である。メモリ・テーブル内の位置は、セキュア・アプリケーション・プロセスおよびファームウェアによってアクセス可能である。セキュア・アプリケーション・プロセスがセキュア・モード(第2の動作モード)で実行中である場合、ハードウェアは、このメモリ・テーブルを利用することが可能にされる。
一実施形態によれば、変換構造のセットアップ後、ファームウェアは、アプリケーション開始システム・コールをプロセスから受信し、アプリケーション開始システム・コールがアドレスを含み、アプリケーション開始システム・コールを受信すると、復号されたセキュア・アプリケーションを実行し、実行することが、アドレス変換構造を用いて第2のメモリ・コンポーネントにアクセスすることを含むようにさらに構成される。本実施形態は、セキュア・アプリケーション実行段階を可能にし得る。アプリケーション開始システム・コールを送信するプロセスは、非セキュア・アプリケーションであってもよい。
一実施形態によれば、データ処理ユニットは、第2の動作モードの少なくとも2つのセキュア状態を有し、2つのセキュア状態の第1のセキュア状態が、データ処理ユニットがファームウェアの実行を可能にするファームウェア状態であり、2つのセキュア状態の第2のセキュア状態が、データ処理ユニットがセキュア・アプリケーション・プロセスの実行を可能にするセキュア・アプリケーション・プロセス状態である。
一実施形態によれば、データ処理ユニットは、プロセス初期化システム・コールまたは割り込み要求を受信すると第1のセキュア状態に切り替え、アプリケーション開始システム・コールを受信すると第2のセキュア状態に切り替えるように構成される。
受信した(単一の)システム・コールscallの場合、データ処理ユニットは、システム・コール(scall)を受信するとセキュア・アプリケーションをセキュア・メモリ(第2のメモリ・コンポーネント)に移動もしくはコピーするように構成され、または割り込み要求を受信するように、かつ変換構造をセットアップすると第2のセキュア状態でプロセスが実行を開始もしくは再開することを可能にするように構成される。セキュア・アプリケーションの暗号化または完全性チェックが失敗した場合、セキュア・プロセスは、実行するために開始されなくてもよい。
一実施形態によれば、データ処理ユニットは、マシン状態レジスタ(machine state register)(MSR)を含み、MSRはセキュア・ビットを含み、セキュア・ビットは、第1の値に設定されて第1の動作モードで動作するようにデータ処理ユニットに示され、セキュア・ビットは、第2の値に設定されて第2の動作モードで動作するようにデータ処理ユニットに示される。例えば、データ処理ユニットが第1の動作モードで動作するとき、コンピュータ可読記憶媒体に書き込まれたデータが、第1のメモリ・コンポーネントに書き込まれ、データ処理ユニットが第2の動作モードで動作するとき、コンピュータ可読記憶媒体は、第1のメモリ・コンポーネントおよび第2のメモリ・コンポーネントのデータへのアクセスを可能にするように構成される。
一実施形態によれば、セキュア・アプリケーション・プロセスは、セキュア・アプリケーションを含むコンテナの実行可能インスタンスである。
一実施形態によれば、コンテナは、プロセスベース仮想化システムの仮想機械において実行中である。
図1Aは、本主題の実施例による、プロセスベース仮想化システム100のブロック図である。プロセスベース仮想化システム100は、ホスト・オペレーティング・システム(ハイパーバイザ)110、ファームウェア120、ハードウェア130、セキュア仮想機械(SVM)140、およびVM150を含む。ハードウェア130は、例えば、本主題の実施例によるデータ処理ユニット(例えば、プロセッサ・コア)を含み得る。プロセスベース仮想化システム100の構成要素は、ネットワーク(図示せず)、例えばローカル・エリア・ネットワーク(LAN)、インターネットなどのワイド・エリア・ネットワーク(WAN)、またはその2つの組み合わせを介して相互接続されてもよく、有線、無線、または光ファイバ接続を含んでもよい。プロセスベース仮想化システム100は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、専用コンピュータ・サーバ、または当技術分野において既知の任意の他のコンピュータ・システムであってもよい。ある実施形態において、プロセスベース仮想化システム100は、クラスタ化コンピュータおよびコンポーネントを利用して、ネットワークを通してアクセスされた際のシームレスなリソースの単一プールとして機能する、コンピュータ・システムを表し得る。例えば、そのような実施形態は、データ・センタ、クラウド・コンピューティング、ストレージ・エリア・ネットワーク(SAN)、ワイド・エリア・ネットワーク(WAN)、およびネットワーク・アタッチト・ストレージ(NAS)・アプリケーションにおいて使用され得る。概して、本明細書で説明されるコンピューティング・システムは、本主題の実施例による機械可読プログラム命令を実行可能な、電子デバイス、または電子デバイスの組み合わせを表す。
ハイパーバイザ110は、SVM140およびVM150を管理、生成、および実行するように構成される仮想機械モニタ(VMM)などの、システム・ソフトウェアを表す。ハイパーバイザ110は、信頼されないシステム・ソフトウェア・コンポーネントであってもよい。ハイパーバイザ110は、システム100のコンピュータ可読記憶媒体の第1のメモリ・コンポーネントにアクセスおよび管理するように構成され得る。
ファームウェア120は、信頼されるハードウェア130によって実行されるデータを提供、制御、モニタリング、および操作するように構成された、信頼されるシステム・ソフトウェア・コンポーネントを表す。本実施形態では、ファームウェア120は、システム100のコンピュータ可読記憶媒体の第2のメモリ・コンポーネントを管理する。さらにSVM140およびセキュア・コンテナ(またはセキュア・アプリケーション)のそれぞれが、第2のメモリ・コンポーネントに割り当てられ得る。ファームウェア120は、ウルトラバイザ・モードで動作し、ウルトラバイザ・モードは、ハイパーバイザ110モードより上の特権レベルである。ウルトラバイザは、ファームウェアを参照し得る。ウルトラバイザ・モードでは、ファームウェア120は、第1のメモリ・コンポーネントと第2のメモリ・コンポーネントとの間の分離を維持するためのハードウェア130と共に、レギュラー・パーティション・スコープ指定アドレス変換機構を制御するように構成される。加えて、ファームウェア120は、第2のメモリ・コンポーネント(図3Bおよび図3Cは第1のメモリ・コンポーネントおよび第2のメモリ・コンポーネントの例としてのコンテンツを示す)内のSVM140およびセキュア・コンテナそれぞれの分離を維持するように構成される。例えば、第2のメモリ・コンポーネントは、ファームウェアおよびセキュア・アプリケーションによるアクセスのために構成される。第2のメモリ・コンポーネントは、第2のメモリ・コンポーネントがOSおよび非セキュア・アプリケーションによってアクセスされないように構成される。
ハードウェア130の機構は、2つのメモリ・コンポーネント間の移行が発生するたびにファームウェア120を呼び出すために使用されてもよく、したがって、1つのメモリ・コンポーネント内のプロセスの状態が他のメモリ・コンポーネント内のプロセスの状態から適切に隔離されることを、ファームウェア120が保証することを可能にする。
プロセスベース仮想化システム100のサブシステム(図示せず)は、プロセッサなどのハードウェア130のコンポーネントから独立してプロセスベース仮想化システム100のメモリと対話し得る。これらのサブシステムは、全ての信頼されないデバイス(例えば、入力/出力(I/O)デバイス)が第2のメモリ・コンポーネントにアクセスできないように修正され得る。セキュアな、かつセキュア・アプリケーションによって使用されるサブシステム・データは、第1のメモリ・コンポーネントに暗号化フォーマットで記憶され得る。さらに、ウルトラバイザ・モードで動作するファームウェア120は、暗号化データを第2のメモリ・コンポーネントに移動またはコピーし、それを復号し得る。別の実施例では、ハードウェアは、ファームウェア120の指示の下で暗号化/復号を行い得る。第2のメモリ・コンポーネントのセキュア・データは、ハイパーバイザ110/VM150のメモリ領域、即ち第1のメモリ・コンポーネントに記憶される前に、暗号化されてもよく、セキュア・ハッシュが追加されてもよい。暗号化されたデータは、その後、ハイパーバイザ110によってディスク・ストレージにページ・アウトされ得る。したがって、SVM140およびセキュア・コンテナに関連するデータおよび状態情報は、第2のメモリ・コンポーネント外部のクリア・テキスト・フォーマットでなくてもよく、セキュア・ハッシュにより完全性保護される。
ハードウェア130は、システム100のためのハードウェア・コンポーネントを表す。本実施形態では、SMF対応プロセッサ(例えば、データ処理ユニットは、SMF対応プロセッサであり得る)は、ハードウェア130に含まれ、非対称鍵のセットを有し、SVM140またはセキュア・アプリケーションあるいはその両方によって処理されるセキュア・データを保護するために使用される、関連する対称鍵を有し得る。
SVM140は、VM150に類似である。加えて、SVM140およびセキュア・アプリケーションは、ターゲット・プロセッサの公開SMF鍵で暗号化されたセキュア・データと共にSMFについてパッケージ化され得る。秘密SMF鍵は、トラステッド・プラットフォーム・モジュール(TPM)によって保護されてもよく、正しいファームウェア120がブート中にロードされるときにのみ利用可能となってもよい。本実施形態では、SMF対応プロセッサを製造および供給する信頼できるエンティティは、それらの公開鍵についての証明書を発行し得る。
SVMは、SVMの内部で実行中のアプリケーションのセキュアな実行を可能にし得る。そのために、SVMは、ハイパーバイザではなく所与のOS(例えば、ゲストOS160)を信頼する。しかしながら、通常のVMの内部で実行中のアプリケーションは、OSが信頼できない場合、セキュアにされる必要があり得る。即ち、セキュア・アプリケーションは、OSおよび存在すればハイパーバイザ110の両方を信頼できない。本主題は、そのようなアプリケーションをセキュアにすることが可能であり得る。プロセスベース仮想化システム100のVMおよびSVMのそれぞれが、例えば、コンテナを有効にしてもよく、コンテナは、セキュア・コンテナまたは非セキュア・コンテナあるいはその両方であってもよい。セキュア・コンテナは、バンキング・オペレーションなどのセキュア・アプリケーションを表す。例えば、VM150は、コンテナ180A~Nを開発、配信、インストール、および実行するためにゲスト・オペレーティング・システム160によって少なくとも一部実行されるコンテナ・マネージャ170を含み、コンテナ180A~Nは、本明細書において、コンテナ180Aおよびセキュア・コンテナ180Nの組み合わせを示している。本明細書でコンテナ180Bと示されるコンテナの別のセットも存在し、コンテナ180Bは、コンテナ180Aに含まれるアプリケーションおよびライブラリ・オペレーティング・システムのコピーを含むことに留意されたい。これに対して、セキュア・コンテナ180Nは、アプリケーションおよびセキュア・ライブラリ・オペレーション・システムのセキュア・バージョンを含む。本明細書で用いられる、セキュア・コンテナ180Nのアプリケーションおよびセキュア・ライブラリ・オペレーション・システムのセキュア・バージョンは、コンテナ180Aおよびコンテナ180Bにおいて見つけられるアプリケーションおよびライブラリ・オペレーション・システムのバージョンと比較したときに、より高いレベルのセキュリティを有する。コンテナ・マネージャ170は、例えば、ドッカーまたはLXCであってもよい。コンテナ180A~Nのコンテナは、コンテナ・マネージャ170を用いて生成され得る。コンテナは、例えば、アプリケーションおよび必要なライブラリを含み得る。セキュア・コンテナ180Nは、第1のメモリ・コンポーネントおよび第2のメモリ・コンポーネント内のデータにアクセスするためにセキュア・ライブラリ・コールを実行し得る、セキュア・アプリケーションを含み得る。
コンテナ・マネージャ170は、例えば、ゲスト・オペレーティング・システム160におけるインスタンス化、インストール、または実行、あるいはそれらの組み合わせのためのコンテナ・イメージを受信するように構成され得る。例えば、コンテナ・イメージは、ドッカー・レジストリなどのコンテナ・リポジトリから取得したドッカー・イメージであってもよい。例えば、コンテナ・イメージは、コンテナを生成するための命令を用いた読み取り専用テンプレートであってもよい。コンテナ・イメージを用いると、コンテナ180A~Nは、ゲスト・オペレーティング・システム160における1つまたは複数のプロセスとしての実行のためにコンテナ・マネージャ170によってインスタンス化され得る。
プロセスベース仮想化システム100は、VM内で実行中のコンテナを用いて仮想化を可能にする。
図1Bは、本主題の実施例による、プロセスベース仮想化システム190のブロック図である。
プロセスベース仮想化システム190は、図1Aを参照して説明されるように、ホスト・オペレーティング・システム(OS)195、ファームウェア196、およびハードウェア197を含む。ハードウェア197は、例えば、本主題の実施例によるデータ処理ユニット(例えば、プロセッサ・コア)を含み得る。
プロセスベース仮想化システム190は、例えばVMを使用することなく(即ちハイパーバイザを使用することなく)、コンテナのみを使用して仮想化を提供する。
プロセスベース仮想化システム190は、コンテナを有効にし得る。コンテナは、セキュア・コンテナまたは非セキュア・コンテナあるいはその両方であってもよい。例えば、プロセスベース仮想化システム190は、コンテナ192A~Nを開発、配信、インストール、および実行するためにホスト・オペレーティング・システム(OS)195によって少なくとも一部実行されるコンテナ・マネージャ191を含む。コンテナ180Aおよび180Bと同様に、コンテナ192Aおよび192Bは、アプリケーションおよびライブラリ・オペレーティング・システムのコピーを含むことが理解される。さらに、セキュア・コンテナ180Nと同様に、セキュア・コンテナ192Nは、アプリケーションおよびライブラリ・オペレーティング・システムのよりセキュアなバージョンを含む。コンテナ・マネージャ191は、例えば、ドッカーまたはLXCであってもよい。コンテナ192A~Nのコンテナは、コンテナ・マネージャ191を用いて生成され得る。
図2は、本主題の実施例による、データ処理ユニットのマシン状態を示すMSRからのビットのテーブルである。異なるマシン状態が、第1の動作モードおよび第2の動作モードのために提供される。本実施例では、典型的な第1の動作モード210は、MSR(S)ビット220を用いて第2の動作モードと共に拡張される。MSR(S)ビット220は、例えばセキュア・ビットである。
第1の動作モード210において、データ処理ユニットは、4つの異なるマシン状態251~254を有し得る。4つのマシン状態251~254のそれぞれが、ハイパーバイザ110などの対応するコンポーネントおよび非セキュア・アプリケーションのためのデータ処理ユニットのデータおよびリソースへのアクセスを可能にする。例えば、信頼されないアプリケーションおよびハイパーバイザ110は、MSR(S)ビット220が0に設定されている場合に動作され得る。状態252は、データ処理ユニットがプロセスベース仮想化システム100の一部である場合にハイパーバイザ110に関連付けられ、データ処理ユニットがプロセスベース仮想化システム190の一部である場合にホストOS195に関連付けられる。状態252は、本明細書において説明の簡略化のためにハイパーバイザ状態と呼ばれる。
第2の動作モード210は、MSR(S)ビット220が1に設定されている場合にアクティブであり得る。例えば、MSR(S)ビット220は、セキュア・アプリケーションに対して1に設定される。第2の動作モードでは、データ処理ユニットは、マシン状態241~244を有し得る。少なくとも2つの状態241~242は、セキュア・アプリケーションの実行を可能にするために使用され得る。(例えば、VM150において)実行されるセキュア・アプリケーションが変更なしで動作され得ることを可能にするために、2つの状態が、1に等しいMSR(S)ビット220を用いてサポートされる。
マシン状態241~244および251~254の各マシン状態が、MSRのビットのセットの値のそれぞれの組み合わせによって定義され得る。ビットのセットは、例えば、ファームウェアによって維持/設定され得る。ビットのセットは、セキュア・ビットを含む。ビットのセットは、MSR(HV)およびMSR(PR)ビットをさらに含み得る。第2の動作モードにおいて、ファームウェア状態(またはウルトラバイザ状態)が、MSR(S)ビット220、MSR(HV)ビット230、およびMSR(PR)ビット240をそれぞれ1、1、および0に設定することによって定義される。セキュア・アプリケーションを実行するために、MSR(PR)ビットは、データ処理ユニットが状態0b111であるように反転されてもよい。したがって、セキュア・アプリケーションのコードのコード変更なしに、ファームウェアは、そうでなければハイパーバイザ状態252に入ったときにハイパーバイザ110(またはホストOS195)の代わりに制御を維持し得る。これは、ファームウェアがハイパーバイザ110(またはホストOS195)に対する制御を与える前に、セキュア・データおよび状態情報を保存およびクリアすることを可能にする。ファームウェア状態からハイパーバイザ状態への状態の遷移は、割り込みダブル・ワード命令から戻るファームウェアによってMSR(S)ビット220を0にリセットすることによって実行され得る。これは、例としての実施態様を提供し、代替の等価な機構が当業者によって実施され得る。
データ処理ユニットは、それが切り替えられる状態に関連付けられたコンポーネントによるデータへのアクセスを可能にするために、状態241~244と状態251~254との間で切り替えまたは遷移するように構成され得る。例えば、状態241(MSR(S、HV、PR)=0b111)において、セキュア・アプリケーションが実行されてもよく、セキュア・メモリに記憶されたデータにアクセスすることを可能にされてもよい。ハードウェア130は、ファームウェアのみがMSR(S)ビットを設定可能であるように構成され得る。ファームウェア120が、セキュア状態と非セキュア状態との間の遷移を制御するため、およびSVMまたはセキュア・プロセス/コンテナのセキュリティを保証するために、ファームウェア120は、MSR(S)ビットを制御し、または状態がハードウェアによって自動的に変更されるたびに制御を受ける。
図3Aは、セキュア・アプリケーションの実行を可能にするための方法のフローチャートである。セキュア・アプリケーションは、例えばセキュア・コンテナ180Nの一部であってもよい。セキュア・アプリケーション・プロセスの実行は、図1Aまたは図1Bのシステムにおいて実施され得るが、それは、その実施態様に限定されない。
データ処理ユニットは、ステップ301において、例えばセキュア・ビットを1に設定することによって、第2の動作モードで動作するように構成され得る。ステップ301は、例えば、ファームウェア120によってプロセス初期化システム・コールまたは別のシステム・コール(例えば、scallという)を所与のプロセスから受信すると、実行され得る。所与のプロセスは、非セキュア・アプリケーションのプロセスであってもよい。ファームウェア120は、例えば、データ処理ユニットが第2の動作モードで動作し得るようにセキュア・ビットMSR(S)を設定し得る。
受信したプロセス初期化システム・コール(または受信したscall)は、第1のメモリ・コンポーネント内の暗号化フォーマットのセキュア・コンテナ180Nのセキュア・アプリケーションを含む暗号化ファイルを指し示し得る。図3Bおよび図3Cは、プロセスベース仮想化システム100および190それぞれについての第1のメモリ・コンポーネントおよび第2のメモリ・コンポーネントの例としてのコンテンツを示す。プロセスベース仮想化システム100の第1のメモリ・コンポーネント(本明細書では通常メモリ310Aと呼ばれる)は、暗号化セキュア・アプリケーションおよびセキュア・ライブラリ・オペレーティング・システム302、ドッカー・エンジンを含み得るVM150、ゲストOS160、ならびにセキュア・コンテナを暗号化フォーマットで含む。プロセスベース仮想化システム190の第1のメモリ・コンポーネント310Bは、コンテナ・マネージャ191、ホストOS195、ならびに暗号化セキュア・アプリケーションおよびライブラリ・オペレーティング・システム302を含む、暗号化フォーマットを用いたセキュア・コンテナを含む。
ステップ303において、ファームウェア120は、暗号化セキュア・アプリケーションを第2のメモリ・コンポーネントに移動する。ステップ304において、ファームウェア120は、セキュア・アプリケーションを復号し得る。一実施例では、ファームウェアは、復号されたセキュア・アプリケーションの完全性チェックを実行し得る。完全性チェックは、セキュア・アプリケーションの暗号化されていないコンテンツに関連付けられたハッシュを用いて、例えばコードに何も変更がない(例えば、ビットが反転されている)ことを確認するために、実行され得る。完全性チェックが失敗である場合、セキュア・プロセス/コンテナへの遷移は失敗し、第2のメモリ・コンポーネントは、復帰の前にクリアされる。この場合、ステップ305~307は、実行されない。図3Bに示されるように、第2のメモリ・コンポーネント312Aは、プロセスベース仮想化システム100のセキュア・メモリであり、変換:基数ツリー309と、effLPID=FFFであるファームウェア120と、セキュア・アプリケーションおよびセキュア・ライブラリOSを暗号化されていないフォーマットで含むセキュア・コンテナ308と、を含む。第2のメモリ・コンポーネント312Aは、SVM140を暗号化されていないフォーマットでさらに含み得る。図3Bに示されるように、プロセスベース仮想化システム190の第2のメモリ・コンポーネントは、本明細書ではセキュア・メモリ312Bと呼ばれ、変換:基数ツリー309と、ファームウェア196と、セキュア・コンテナを暗号化されていないフォーマットで含むセキュア・コンテナ308と、を含む。
ステップ305において、ファームウェア120は、セキュア・アプリケーションによる第2のメモリ・コンポーネント内のデータへのアクセスを可能にするために、第2のメモリ・コンポーネントにおいて変換構造をセットアップする。変換構造は、図6Dに示されるように、パーティション・テーブルおよびプロセス・テーブルを含み得る。セットアップは、セキュア・プロセス・テーブルを指し示すパーティション・テーブル内の新たなエントリを生成することによって実行され得る。エントリは、また、変換ツリー、例えば、図3Bおよび図3Cの変換:基数ツリー309などのセキュア・プロセス・スコープ指定基数ツリーにセキュア・アプリケーションを関連付けるセキュア・プロセス・テーブルに追加され得る。即ち、ファームウェア120は、パーティション・テーブルを有し、変換ツリーを用いてアドレス変換のためにセットアップする。例えば、プロセスベース仮想化システム100および190の第2のメモリ・コンポーネント312Aおよび312Bは、セキュア・アプリケーション・アドレス変換ツリーを記憶し得る。
一実施例では、図3Aの方法は、セキュア・アプリケーションを開始するステップ307をさらに含み得る。一実施例では、セキュア・アプリケーションの開始は、プロセス初期化システム・コールの受信後、アプリケーション開始システム・コールを受信することに応答して実行され得る。即ち、ステップ301~305は、受信したプロセス初期化システム・コールに応答して実行されてもよく、ステップ307は、受信したアプリケーション開始システム・コールに応答して実行されてもよい。別の実施例では、ステップ301~307は、受信した他のシステム・コール(scall)に応答して実行され得る。
図4は、セキュア・アプリケーションを実行するための方法のフローチャートである。セキュア・アプリケーションは、例えばコンテナ、例えばセキュア・コンテナ180Nに含まれるコンテナの一部であってもよい。
ステップ401において、ファームウェア120は、例えば、非セキュア・アプリケーションのプロセスからアプリケーション開始システム・コールを受信し得る。アプリケーション開始システム・コールは、セキュア・アプリケーション・アドレス変換ツリーを示すアドレスを含む。
アプリケーション開始システム・コールを受信すると、ファームウェア120は、ステップ403においてセキュア・アプリケーションを実行し得る。セキュア・アプリケーションの実行は、セキュア・アプリケーション・アドレス変換ツリーを用いて第2のメモリ・コンポーネントにアクセスすることを含む。
図5は、セキュア・コンテナ、例えばセキュア・コンテナ180Nに含まれるコンテナを実行するための方法のフローチャートである。
ステップ501において、レベルlev=2を有するシステム・コール(例えば、ucall)が受信され得る。システム・コールは、セキュア・コンテナのセキュア・アプリケーションを開始するために受信される。システム・コールは、データ処理ユニットがファームウェア状態0b110である間に受信され得る。
ステップ503において、セキュア・アプリケーションが(例えば、urfidまたはhrifd命令を用いて)開始し得る。セキュア・アプリケーションの実行は、状態MSR(S、HV、PR)=0b111において実行され得る。
セキュア・アプリケーションによって引き起こされる、またはトリガされる割り込みは、ステップ505~509を参照して説明されるように処理され得る。例えば、セキュア・アプリケーションが、例えば、ディスクからデータを読み出すためのOS対応動作を必要とする場合、データ処理ユニットは、ステップ505において、状態242(MSR(S、HV、PR)=0b110)に切り替え得る。状態242において、ファームウェアは、セキュア・アプリケーションの代理としてOS動作を管理し得る。ファームウェアのコードの行数が限定された状態を保つために、ファームウェアは、セキュア・アプリケーションの要求された動作を実行するために、OSを使用し得る。ファームウェアは、ステップ507~509においてOSが動作を実行することを可能にする所与の状態に、データ処理ユニットを切り替え得る。所与の状態は、セキュア・アプリケーションが図1Aのプロセスベース仮想化システム100の一部である場合に状態254であり、セキュア・アプリケーションが図1Bのプロセスベース仮想化システム190の一部である場合に状態252である。動作の要求されたデータは、第1のメモリ・コンポーネントに記憶される前に暗号化されてもよく、例えば、データは、セキュア・アプリケーションによって要求され得るように、暗号化フォーマットでディスクに提供または(事前)記憶されてもよい。動作が行われた後、データ処理ユニットは、再びファームウェア状態242に切り替える。OSが動作を完了すると、OSがセキュア・アプリケーションを再開することを選択する場合に、ファームウェア120に戻り、ファームウェア120は、セキュア状態0b111(241)を復元し、制御をセキュア・アプリケーションに渡す。セキュア・アプリケーションが事前処理されたデータを用いて実行を続けるように、ファームウェアは、状態241に切り替える前に、例えば要求されたデータまたは動作の結果を事前処理し得る。事前処理は、例えば、セキュア・アプリケーションの出力データの暗号化またはセキュア・アプリケーションの入力データの復号を含み得る。セキュア・アプリケーションに関連せず、セキュア・アプリケーションが実行されている間に受信された割り込みは、確実にOSに反映され得る。
一実施例では、データ処理ユニットは、ステップ505において状態241 0b111から状態242 0b110に切り替え得る。データ処理ユニットは、ステップ507およびステップ509において状態242 0b110からハイパーバイザ状態に切り替えて、ホストOSが割り込みを処理することを可能にし得る。
図6A~図6Dは、本主題の実施例による、第2のメモリ・コンポーネントに記憶されたデータへのアクセスを可能にする、データ・コンポーネントを示す。図6Aおよび図6Bは、異なる受信有効アドレスに対するデータ処理ユニットの異なる状態を示すデータ構造601および610を示す。データ構造601および610は、プロセスベース仮想化システム100および190それぞれについての所与の受信有効アドレス(EA)に、どの変換ツリーが使用され得るかを示す。
データ構造601および610は、セルを有するテーブルとして説明されてもよく、各セルが、2つの変数V1およびV2の別個の値の対によって定義される。変数V1は、データ構造の第1の列によって示される有効アドレスの最初の2つのビットの値を指し、変数V2は、MSR(S、HV、PR)ビットの値を指す。本主題は、V1のそれぞれの別個の値に関連付けられたデータ処理ユニットの状態を定義するために、有効アドレスの最初の2つのビットを利用する。
データ構造の各セルは、2つの識別子の値を含む、2つのレジスタを示す。2つの識別子は、プロセス識別子および論理パーティション識別子(またはVM識別子)である。例えば、受信アドレスが象限0にあり(即ち、EA(0:1)=00)かつMSR(S、HV、PR)=0b111である場合、対応するセルは、プロセス(所与のアドレスを送信する)の識別子およびプロセスが実行中の論理パーティションの識別子から名付けられたレジスタ(例えば、SPIDR)を示す。アドレス変換機構は、示されたレジスタのコンテンツおよび図6Dに示されるパーティション・テーブルを用いて、所与のアドレスを変換する(プロセスが正しいモードで実行中の場合)。
MSR(S、HV、PR)ビットの値は、MSRレジスタから読み出され得る。MSRレジスタは、図6Cに示されるデータ処理ユニット615の一部である。MSRレジスタは、例えば、データ処理ユニット615の命令順序付けユニット(ISU)616の一部であってもよい。加えて、SPIDRなどのデータ構造のセルにおいて示されるレジスタは、例えば、図6Cに示されるようにデータ処理ユニットのロード・ストア・ユニット(LSU)/メモリ管理ユニット(MMU)617の一部であってもよい。
図6Dに示されるように、図6Aのデータ構造601および図6Bのデータ構造610の各セル内の2つのレジスタの値は、変換が実行され得るようにファームウェアによって制御されるパーティション・テーブルのインデックスとして使用され得る。例えば、セキュア・コンテナについて、2つのインデックスは、図6Dに示されるようにパーティション・スコープ指定ツリーを用いて所与のアドレスを変換することが可能であり得る。
図6Dに示されるように、パーティション・テーブル620は、論理パーティションID毎のエントリを含む。パーティション・テーブル620の各エントリが、対応するプロセス・テーブルを参照する。例えば、FFFに等しい論理パーティションIDによってインデックス付与されるエントリは、図6Dに示されるように、セキュア・プロセス・テーブル621を指し示してもよい。また、0に等しい論理パーティションIDによってインデックス付与されるエントリは、図6Dに示されるように、通常プロセス・テーブル622を指し示してもよい。セキュア・プロセス・テーブル621は、セキュア・プロセス毎のエントリを含み、セキュア・プロセスIDによってインデックス付与される。セキュア・プロセス・テーブル621の各エントリは、ページ・ディレクトリの位置および変換ツリー623のページ・テーブルを指し示す。変換ツリー623は、図6Dに示されるようなパーティション・スコープ指定変換ツリーであってもよい。変換ツリー623は、図6Dに示されるように、受信した有効アドレスを変換するために使用され得る。例えば、変換ツリー623の階層型変換テーブルの最高次数変換テーブルの原点は、例えば、セキュア・アプリケーション・プロセスに関連付けられたセキュア・プロセス・テーブルのエントリによって提供される。有効アドレスは、階層型変換テーブルの各テーブルにインデックス付与するために使用されて、次のテーブルの原点アドレスを判断して、例えば、物理メモリのページのアドレスを有するページ・テーブル・エントリ(PTE)が位置特定される。
いくつかの実施形態が、プロセスベース仮想化のための方法、コンピュータ・システム、およびコンピュータ・プログラム製品のうちの1つまたは複数を提供する。少なくとも1つのそのような実施形態は、プロセスベース仮想化システムのオペレーティング・システム、セキュア・アプリケーション、非セキュア・アプリケーション、およびファームウェアにコンピュータ可読記憶媒体の第1のメモリ・コンポーネントへのアクセスを認可することを含み、ファームウェアおよびセキュア・アプリケーションが、コンピュータ可読記憶媒体の第2のメモリ・コンポーネントへのアクセスを許可され、オペレーティング・システムおよび非セキュア・アプリケーションが、第2のメモリ・コンポーネントにアクセスすることを禁止される。実施形態は、データ処理ユニットがオペレーティング・システムを用いて非セキュア・アプリケーションを実行するように、第1の動作モードで動作するようにデータ処理ユニットを修正することを含む。実施形態は、データ処理ユニットがファームウェアを用いてセキュア・アプリケーションを実行し、かつセキュア・アプリケーションのアプリケーション・コードが第2のメモリ・コンポーネントを用いて実行されるように、第2の動作モードで動作するようにデータ処理ユニットを修正することを含む。
少なくとも1つのそのような実施形態は、プロセスからシステム・コールを受信することを含み、システム・コールが、セキュア・アプリケーションが暗号化フォーマットで第1のメモリ・コンポーネントに記憶されていることを示す。少なくとも1つのそのような実施形態は、第2の動作モードで動作するようにデータ処理ユニットを修正することによって、システム・コールの受信に応答することを含む。少なくとも1つのそのような実施形態は、暗号化されたセキュア・アプリケーションを第2のメモリ・コンポーネントにコピーすることを含む。少なくとも1つのそのような実施形態は、第2のメモリ・コンポーネント内のセキュア・アプリケーションを復号することを含む。少なくとも1つのそのような実施形態は、復号されたセキュア・アプリケーションによる第2のメモリ・コンポーネントおよび第1のメモリ・コンポーネント内のデータへのアクセスを提供するアドレス変換構造を生成することを含む。少なくとも1つのそのような実施形態は、第2のメモリ・コンポーネントがアドレス変換構造を用いてアクセスされるように、復号されたセキュア・アプリケーションを実行することを含む。
少なくとも1つのそのような実施形態は、方法を実行するプログラム命令を含むファームウェアを含む。方法は、セキュア・アプリケーションが暗号化フォーマットで第1のメモリ・コンポーネントに記憶されていることを示すプロセス初期化システム・コールをプロセスから受信することを含む。方法は、プロセス初期化システム・コールの受信に応答することを含む。方法は、第2の動作モードで動作するようにデータ処理ユニットを構成することを含む。方法は、暗号化されたセキュア・アプリケーションを第2のメモリ・コンポーネントにコピーすることを含む。方法は、第2のメモリ・コンポーネント内のセキュア・アプリケーションを復号することを含む。方法は、復号されたセキュア・アプリケーションに第2のメモリ・コンポーネントおよび第1のメモリ・コンポーネント内のデータへのアクセスを認可するアドレス変換構造を生成することを含む。
少なくとも1つの実施形態において、アドレス変換構造は、パーティション・テーブルおよびセキュア・プロセス・テーブルを含む。少なくとも1つの実施形態において、パーティション・テーブルおよびセキュア・プロセス・テーブルは、第2のメモリ・コンポーネントに記憶される。少なくとも1つの実施形態において、アドレス変換構造を生成することは、パーティション・テーブルに(i)セキュア・プロセス・テーブルを指し示すパーティション・エントリおよび(ii)セキュア・アプリケーションのセキュア・アプリケーション・プロセスに関連付けられたプロセス・エントリを追加することを含み、プロセス・エントリが、有効アドレスの物理アドレスへの変換を可能にするセキュア・アプリケーション・アドレス変換ツリーを指し示す。
少なくとも1つの実施形態は、方法を実行するプログラム命令を含むファームウェアを含む。方法は、第1のメモリ・コンポーネント内のセキュア・アプリケーションの記憶位置を示すアドレスを受信することを含む。方法は、アドレスを使用して、暗号化されたセキュア・アプリケーションをコピーし、かつセキュア・アプリケーションを復号することを含む。
少なくとも1つの実施形態において、暗号化セキュア・アプリケーションは、暗号化セキュア・アプリケーションのコンテンツに関連付けられたハッシュ値に関連付けられる。少なくとも1つの実施形態において、ファームウェアを介して実行され得る方法は、ハッシュ値を用いて暗号化セキュア・アプリケーションの完全性チェックを実行することを含む。
少なくとも1つの実施形態において、アドレス変換構造は、パーティション・テーブルおよびセキュア・プロセス・テーブルを含み、パーティション・テーブルは、論理プロセス識別子によってインデックス付与される。少なくとも1つの実施形態において、パーティション・テーブルは、セキュア・プロセス・テーブルを指し示すエントリを含み、セキュア・プロセス・テーブルを指し示すエントリは、固定値によってインデックス付与される。少なくとも1つの実施形態において、セキュア・プロセス・テーブルは、セキュア・プロセス識別子によってインデックス付与される。少なくとも1つの実施形態において、データ処理ユニットは、セキュア・アプリケーションのセキュア・アプリケーション・プロセスのセキュア・プロセス識別子の値を含む、セキュア・レジスタを含む。少なくとも1つの実施形態において、セキュア・アプリケーション・プロセスは、固定値を用いてセキュア・プロセス・テーブルを識別し、セキュア・レジスタの値に関連付けられたセキュア・プロセス・テーブルのエントリを用いてアドレス変換を実行するために、セキュア・レジスタに記憶された値を用いる。
少なくとも1つの実施形態は、方法を実行するプログラム命令を含むファームウェアを含む。方法は、変換構造が生成されていると判断することを含む。方法は、プロセスからアプリケーション開始システム・コールを受信することを含む。方法は、アプリケーション開始システム・コールを受信すると、アドレス変換構造を用いて第2のメモリ・コンポーネントにアクセスすることによって、復号されたセキュア・アプリケーションを実行することを含む。
少なくとも1つの実施形態において、データ処理ユニットは、第2の動作モードにおいて少なくとも第1のセキュア状態および第2のセキュア状態を含む。少なくとも1つの実施形態において、第1のセキュア状態は、データ処理ユニットがファームウェアの実行を可能にするファームウェア状態を含み、第2のセキュア状態は、データ処理ユニットがセキュア・アプリケーションの実行を可能にするセキュア・アプリケーション・プロセス状態を含む。
少なくとも1つの実施形態において、方法は、プロセス初期化システム・コールまたは割り込み要求を受信することに応答して、第1のセキュア状態に切り替えることを含む。少なくとも1つの実施形態において、方法は、アプリケーション開始システム・コールを受信することに応答して、第2のセキュア状態に切り替えることを含む。
少なくとも1つの実施形態において、データ処理ユニットは、値が第1のセキュア状態および第2のセキュア状態を示すビットのセットを含む。
少なくとも1つの実施形態において、データ処理ユニットは、ビットのセットが、データ処理ユニットについての動作モードを示すマシン状態レジスタ・ビットと、ハイパーバイザ状態を示すマシン状態レジスタ・ビットと、マシン状態レジスタの特権状態(privileged state)または問題状態(problem state)を示すマシン状態レジスタ・ビットと、を含むマシン状態レジスタを含む。
少なくとも1つの実施形態において、データ処理ユニットは、セキュア・ビットを含むマシン状態レジスタを含み、第1の値に設定されているセキュア・ビットが、データ処理ユニットを第1の動作モードで動作させ、第2の値に設定されているセキュア・ビットが、データ処理ユニットを第2の動作モードで動作させる。少なくとも1つの実施形態において、第1の動作モードにおいて、データ処理ユニットが、コンピュータ可読記憶媒体に書き込まれるデータを第1のメモリ・コンポーネントに書き込む。少なくとも1つの実施形態において、第2の動作モードにおいて、コンピュータ可読記憶媒体が、第1のメモリ・コンポーネントおよび第2のメモリ・コンポーネントに含まれるデータにアクセスするように修正される。
少なくとも1つの実施形態において、セキュア・アプリケーションのセキュア・アプリケーション・プロセスが、セキュア・アプリケーションを含むコンテナの実行可能インスタンスである。少なくとも1つの実施形態において、コンテナは、プロセスベース仮想化システムの仮想機械の中で実行中である。
本発明は、任意の可能な統合の技術的詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し、記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令をその上に記録させる溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組み合わせを含む。本明細書で用いられるコンピュータ可読記憶媒体は、電波もしくは他の自由伝播する電磁波、導波管もしくは他の伝送媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通って伝送される電気信号などの、一過性信号それ自体であると解釈されるべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組み合わせを介して外部コンピュータまたは外部記憶デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体の記憶用にコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通してユーザのコンピュータに接続されてもよく、または、接続は、(例えば、インターネット・サービス・プロバイダを用いてインターネットを通して)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を用いて電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
本発明の態様は、発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組み合わせが、コンピュータ可読プログラム命令によって実施され得ると理解されたい。
コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段を作り出すように、これらのコンピュータ可読プログラム命令は、コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってもよい。コンピュータ可読記憶媒体に記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはそれらの組み合わせに特定の方式で機能するように指示し得るものであってもよい。
コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ可読プログラム命令は、コンピュータ実施されるプロセスを作り出すために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実施態様のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替実施態様において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される2つのブロックが、実際には、同時に、実質的に同時に、部分的または全体的に時間的に重複して実行されて、1つのステップとして実現されてもよく、または、ブロックが、関係する機能性次第で逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェア・ベース・システムによって実施され得ることにも留意されたい。
Claims (20)
- プロセスベース仮想化のためのコンピュータ・システムであって、
1つまたは複数のコンピュータ・プロセッサと、
一過性信号自体ではない少なくとも1つのコンピュータ可読記憶媒体と、
前記少なくとも1つのコンピュータ可読記憶媒体上に記憶されたプログラム命令であって、前記1つまたは複数のコンピュータ・プロセッサの少なくとも1つのコンピュータ・プロセッサによって、前記少なくとも1つのコンピュータ・プロセッサに、
プロセスベース仮想化システムのオペレーティング・システム、セキュア・アプリケーション、非セキュア・アプリケーション、およびファームウェアにコンピュータ可読記憶媒体の第1のメモリ・コンポーネントへのアクセスを認可することであって、前記ファームウェアおよび前記セキュア・アプリケーションが、前記コンピュータ可読記憶媒体の第2のメモリ・コンポーネントへのアクセスを許可され、前記オペレーティング・システムおよび前記非セキュア・アプリケーションが、前記第2のメモリ・コンポーネントにアクセスすることを禁止される、前記認可すること、
データ処理ユニットが前記オペレーティング・システムを用いて前記非セキュア・アプリケーションを実行するように、第1の動作モードで動作するように前記データ処理ユニットを修正すること、および
前記データ処理ユニットが前記ファームウェアを用いて前記セキュア・アプリケーションを実行し、かつ前記セキュア・アプリケーションのアプリケーション・コードが前記第2のメモリ・コンポーネントを用いて実行されるように、第2の動作モードで動作するように前記データ処理ユニットを修正すること、
を含む方法を実行させるように実行可能である、前記プログラム命令と、
を備える、コンピュータ・システム。 - 前記ファームウェアが、
プロセスからシステム・コールを受信するプログラム命令であって、前記システム・コールが、前記セキュア・アプリケーションが暗号化フォーマットで前記第1のメモリ・コンポーネントに記憶されていることを示す、前記プログラム命令と、
前記第2の動作モードで動作するように前記データ処理ユニットを修正することによって、前記システム・コールの受信に応答するプログラム命令と、
暗号化された前記セキュア・アプリケーションを前記第2のメモリ・コンポーネントにコピーするプログラム命令と、
前記第2のメモリ・コンポーネント内の前記セキュア・アプリケーションを復号するプログラム命令と、
復号された前記セキュア・アプリケーションによる前記第2のメモリ・コンポーネントおよび前記第1のメモリ・コンポーネント内のデータへのアクセスを提供するアドレス変換構造を生成するプログラム命令と、
前記第2のメモリ・コンポーネントが前記アドレス変換構造を用いてアクセスされるように、前記復号されたセキュア・アプリケーションを実行するプログラム命令と、
を含む、請求項1に記載のシステム。 - 前記ファームウェアが、
前記セキュア・アプリケーションが暗号化フォーマットで前記第1のメモリ・コンポーネントに記憶されていることを示すプロセス初期化システム・コールをプロセスから受信するプログラム命令と、
前記第2の動作モードで動作するように前記データ処理ユニットを構成して、前記プロセス初期化システム・コールの受信に応答するプログラム命令と、
暗号化された前記セキュア・アプリケーションを前記第2のメモリ・コンポーネントにコピーし、前記第2のメモリ・コンポーネント内の前記セキュア・アプリケーションを復号するプログラム命令と、
復号された前記セキュア・アプリケーションに前記第2のメモリ・コンポーネントおよび前記第1のメモリ・コンポーネント内のデータへのアクセスを認可するアドレス変換構造を生成するプログラム命令と、
を含む、請求項1に記載のシステム。 - 前記アドレス変換構造が、パーティション・テーブルおよびセキュア・プロセス・テーブルを含み、前記パーティション・テーブルおよび前記セキュア・プロセス・テーブルが、前記第2のメモリ・コンポーネントに記憶され、前記アドレス変換構造を生成することが、前記パーティション・テーブルに(i)前記セキュア・プロセス・テーブルを指し示すパーティション・エントリおよび(ii)前記セキュア・アプリケーションのセキュア・アプリケーション・プロセスに関連付けられたプロセス・エントリを追加することを含み、前記プロセス・エントリが、有効アドレスの物理アドレスへの変換を可能にするセキュア・アプリケーション・アドレス変換ツリーを指し示す、請求項2に記載のシステム。
- 前記ファームウェアが、
前記第1のメモリ・コンポーネント内の前記セキュア・アプリケーションの記憶位置を示すアドレスを受信するプログラム命令と、
前記アドレスを使用して前記暗号化されたセキュア・アプリケーションをコピーし、前記セキュア・アプリケーションを復号するプログラム命令と、
を含む、請求項2に記載のシステム。 - 前記暗号化されたセキュア・アプリケーションが、前記暗号化されたセキュア・アプリケーションのコンテンツに関連付けられたハッシュ値に関連付けられ、前記ファームウェアが、前記ハッシュ値を用いて前記暗号化されたセキュア・アプリケーションの完全性チェックを実行するプログラム命令を含む、請求項2に記載のシステム。
- 前記アドレス変換構造が、パーティション・テーブルおよびセキュア・プロセス・テーブルを含み、前記パーティション・テーブルが、論理プロセス識別子によってインデックス付与され、前記パーティション・テーブルが、前記セキュア・プロセス・テーブルを指し示すエントリを含み、前記セキュア・プロセス・テーブルを指し示すエントリが、固定値によってインデックス付与され、前記セキュア・プロセス・テーブルが、セキュア・プロセス識別子によってインデックス付与され、前記データ処理ユニットが、前記セキュア・アプリケーションのセキュア・アプリケーション・プロセスのセキュア・プロセス識別子の値を含むセキュア・レジスタを含み、前記セキュア・アプリケーション・プロセスが、前記固定値を用いて前記セキュア・プロセス・テーブルを識別し、前記セキュア・レジスタの値に関連付けられた前記セキュア・プロセス・テーブルのエントリを用いてアドレス変換を実行するために前記セキュア・レジスタに記憶された値を用いる、請求項2に記載のシステム。
- 前記ファームウェアが、
前記変換構造が生成されていると判断するプログラム命令と、
前記プロセスからアプリケーション開始システム・コールを受信するプログラム命令と、
前記アプリケーション開始システム・コールを受信すると、前記アドレス変換構造を用いて前記第2のメモリ・コンポーネントにアクセスすることによって、前記復号されたセキュア・アプリケーションを実行するプログラム命令と、
を含む、請求項3に記載のシステム。 - 前記データ処理ユニットが、前記第2の動作モードにおいて少なくとも第1のセキュア状態および第2のセキュア状態を含み、前記第1のセキュア状態が、前記データ処理ユニットが前記ファームウェアの実行を可能にするファームウェア状態を含み、前記第2のセキュア状態が、前記データ処理ユニットが前記セキュア・アプリケーションの実行を可能にするセキュア・アプリケーション・プロセス状態を含む、請求項1に記載のシステム。
- 前記データ処理ユニットが、
プロセス初期化システム・コールまたは割り込み要求を受信することに応答して前記第1のセキュア状態に切り替え、かつアプリケーション開始システム・コールを受信することに応答して前記第2のセキュア状態に切り替えるプログラム命令を含む、請求項9に記載のシステム。 - 前記データ処理ユニットが、値が前記第1のセキュア状態および前記第2のセキュア状態を示すビットのセットを含む、請求項9に記載のシステム。
- 前記ビットのセットが、前記データ処理ユニットについての動作モードを示すマシン状態レジスタ・ビットと、ハイパーバイザ状態を示すマシン状態レジスタ・ビットと、マシン状態レジスタの特権状態または問題状態を示すマシン状態レジスタ・ビットと、を含む前記マシン状態レジスタを、前記データ処理ユニットが含む、請求項11に記載のシステム。
- (i)前記データ処理ユニットが、セキュア・ビットを含むマシン状態レジスタを含み、第1の値に設定されている前記セキュア・ビットが、前記データ処理ユニットを前記第1の動作モードで動作させ、第2の値に設定されている前記セキュア・ビットが、前記データ処理ユニットを前記第2の動作モードで動作させ、
(ii)前記第1の動作モードにおいて、前記データ処理ユニットが、前記コンピュータ可読記憶媒体に書き込まれるデータを前記第1のメモリ・コンポーネントに書き込み、
(iii)前記第2の動作モードにおいて、前記コンピュータ可読記憶媒体が、前記第1のメモリ・コンポーネントおよび前記第2のメモリ・コンポーネントに含まれるデータにアクセスするように修正される、
請求項1に記載のシステム。 - 前記セキュア・アプリケーションのセキュア・アプリケーション・プロセスが、前記セキュア・アプリケーションを含むコンテナの実行可能インスタンスである、請求項2に記載のシステム。
- 前記コンテナが、前記プロセスベース仮想化システムの仮想機械の中で実行中である、請求項14に記載のシステム。
- プロセスベース仮想化のための方法であって、
少なくとも1つのコンピュータ・プロセッサによって、プロセスベース仮想化システムのオペレーティング・システム、セキュア・アプリケーション、非セキュア・アプリケーション、およびファームウェアにコンピュータ可読記憶媒体の第1のメモリ・コンポーネントへのアクセスを認可することであって、前記ファームウェアおよび前記セキュア・アプリケーションが、前記コンピュータ可読記憶媒体の第2のメモリ・コンポーネントへのアクセスを許可され、前記オペレーティング・システムおよび前記非セキュア・アプリケーションが、前記第2のメモリ・コンポーネントにアクセスすることを禁止される、前記認可することと、
前記少なくとも1つのコンピュータ・プロセッサによって、データ処理ユニットが前記オペレーティング・システムを用いて前記非セキュア・アプリケーションを実行するように、第1の動作モードで動作するように前記データ処理ユニットを修正することと、
前記少なくとも1つのコンピュータ・プロセッサによって、前記データ処理ユニットが前記ファームウェアを用いて前記セキュア・アプリケーションを実行し、かつ前記セキュア・アプリケーションのアプリケーション・コードが前記第2のメモリ・コンポーネントを用いて実行されるように、第2の動作モードで動作するように前記データ処理ユニットを修正することと、
を含む、方法。 - 前記少なくとも1つのコンピュータ・プロセッサによって、プロセスからシステム・コールを受信することであって、前記システム・コールが、前記セキュア・アプリケーションが暗号化フォーマットで前記第1のメモリ・コンポーネントに記憶されていることを示す、前記受信することと、
前記少なくとも1つのコンピュータ・プロセッサによって、前記第2の動作モードで動作するように前記データ処理ユニットを修正することによって、前記システム・コールの受信に応答することと、
前記少なくとも1つのコンピュータ・プロセッサによって、暗号化された前記セキュア・アプリケーションを前記第2のメモリ・コンポーネントにコピーすることと、
前記少なくとも1つのコンピュータ・プロセッサによって、前記第2のメモリ・コンポーネント内の前記セキュア・アプリケーションを復号することと、
前記少なくとも1つのコンピュータ・プロセッサによって、復号された前記セキュア・アプリケーションによる前記第2のメモリ・コンポーネントおよび前記第1のメモリ・コンポーネント内のデータへのアクセスを提供するアドレス変換構造を生成することと、
前記少なくとも1つのコンピュータ・プロセッサによって、前記第2のメモリ・コンポーネントが前記アドレス変換構造を用いてアクセスされるように、前記復号されたセキュア・アプリケーションを実行することと、
を含む、請求項16に記載の方法。 - 前記少なくとも1つのコンピュータ・プロセッサによって、前記セキュア・アプリケーションが暗号化フォーマットで前記第1のメモリ・コンポーネントに記憶されていることを示すプロセス初期化システム・コールをプロセスから受信することと、
前記少なくとも1つのコンピュータ・プロセッサによって、前記第2の動作モードで動作するように前記データ処理ユニットを構成することによって、前記プロセス初期化システム・コールの受信に応答することと、
前記少なくとも1つのコンピュータ・プロセッサによって、前記暗号化されたセキュア・アプリケーションを前記第2のメモリ・コンポーネントにコピーすること、および前記第2のメモリ・コンポーネント内の前記セキュア・アプリケーションを復号することと、
前記少なくとも1つのコンピュータ・プロセッサによって、前記復号されたセキュア・アプリケーションに前記第2のメモリ・コンポーネントおよび前記第1のメモリ・コンポーネント内のデータへのアクセスを認可するアドレス変換構造を生成することと、
を含む、請求項16に記載の方法。 - アドレス変換構造は、パーティション・テーブルおよびセキュア・プロセス・テーブルを含み、前記パーティション・テーブルおよび前記セキュア・プロセス・テーブルが、前記第2のメモリ・コンポーネントに記憶され、前記アドレス変換構造を生成することが、前記パーティション・テーブルに(i)前記セキュア・プロセス・テーブルを指し示すパーティション・エントリおよび(ii)前記セキュア・アプリケーションのセキュア・アプリケーション・プロセスに関連付けられたプロセス・エントリを追加することを含み、前記プロセス・エントリが、有効アドレスの物理アドレスへの変換を可能にするセキュア・アプリケーション・アドレス変換ツリーを指し示す、請求項16に記載の方法。
- プロセスベース仮想化のためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、具現化されたプログラム命令を有するコンピュータ可読記憶媒体を含み、前記コンピュータ可読記憶媒体が、一過性信号自体ではなく、前記プログラム命令が、デバイスに、
プロセスベース仮想化システムのオペレーティング・システム、セキュア・アプリケーション、非セキュア・アプリケーション、およびファームウェアにコンピュータ可読記憶媒体の第1のメモリ・コンポーネントへのアクセスを認可することであって、前記ファームウェアおよび前記セキュア・アプリケーションが、前記コンピュータ可読記憶媒体の第2のメモリ・コンポーネントへのアクセスを許可され、前記オペレーティング・システムおよび前記非セキュア・アプリケーションが、前記第2のメモリ・コンポーネントにアクセスすることを禁止される、前記認可することと、
データ処理ユニットが前記オペレーティング・システムを用いて前記非セキュア・アプリケーションを実行するように、第1の動作モードで動作するように前記データ処理ユニットを修正することと、
前記データ処理ユニットが前記ファームウェアを用いて前記セキュア・アプリケーションを実行し、かつ前記セキュア・アプリケーションのアプリケーション・コードが前記第2のメモリ・コンポーネントを用いて実行されるように、第2の動作モードで動作するように前記データ処理ユニットを修正することと、
を含む方法を実行させるように前記デバイスによって実行可能である、コンピュータ・プログラム製品。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/751,234 | 2020-01-24 | ||
US16/751,234 US11461474B2 (en) | 2020-01-24 | 2020-01-24 | Process-based virtualization system for executing a secure application process |
PCT/IB2020/061730 WO2021148863A1 (en) | 2020-01-24 | 2020-12-10 | Process-based virtualization system for executing secure application process |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023510773A true JP2023510773A (ja) | 2023-03-15 |
Family
ID=76970173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022542092A Pending JP2023510773A (ja) | 2020-01-24 | 2020-12-10 | セキュア・アプリケーション・プロセスを実行するためのプロセスベース仮想化システム |
Country Status (6)
Country | Link |
---|---|
US (1) | US11461474B2 (ja) |
JP (1) | JP2023510773A (ja) |
CN (1) | CN114945900A (ja) |
DE (1) | DE112020005517T5 (ja) |
GB (1) | GB2607529A (ja) |
WO (1) | WO2021148863A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11604673B2 (en) * | 2020-07-30 | 2023-03-14 | Red Hat, Inc. | Memory encryption for virtual machines by hypervisor-controlled firmware |
US20220181012A1 (en) * | 2020-12-07 | 2022-06-09 | Stryker Corporation | Secure software updates and architectures |
US11847015B2 (en) * | 2022-01-24 | 2023-12-19 | Vmware, Inc. | Mechanism for integrating I/O hypervisor with a combined DPU and server solution |
JP7144819B1 (ja) * | 2022-04-14 | 2022-09-30 | AI inside株式会社 | プログラム、コンピュータ、システム及び方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7484091B2 (en) | 2004-04-29 | 2009-01-27 | International Business Machines Corporation | Method and system for providing a trusted platform module in a hypervisor environment |
US9213566B2 (en) * | 2008-11-26 | 2015-12-15 | Red Hat, Inc. | Implementing security in process-based virtualization |
US8832820B2 (en) * | 2012-06-25 | 2014-09-09 | International Business Machines Corporation | Isolation and security hardening among workloads in a multi-tenant networked environment |
US9811364B2 (en) * | 2013-06-13 | 2017-11-07 | Microsoft Technology Licensing, Llc | Thread operation across virtualization contexts |
WO2017034008A1 (ja) | 2015-08-25 | 2017-03-02 | 株式会社Seltech | ハイパーバイザーを有するシステム |
US10015278B2 (en) | 2015-09-11 | 2018-07-03 | Verizon Patent And Licensing Inc. | Adaptive scheduling and orchestration in a networked environment |
CN105389197B (zh) | 2015-10-13 | 2019-02-26 | 北京百度网讯科技有限公司 | 用于基于容器的虚拟化系统的操作捕获方法和装置 |
US10210030B2 (en) * | 2017-07-13 | 2019-02-19 | Cyberark Software Ltd. | Securely operating remote cloud-based applications |
US10296741B2 (en) * | 2017-07-27 | 2019-05-21 | International Business Machines Corporation | Secure memory implementation for secure execution of virtual machines |
US10387686B2 (en) | 2017-07-27 | 2019-08-20 | International Business Machines Corporation | Hardware based isolation for secure execution of virtual machines |
US10664592B2 (en) * | 2018-03-22 | 2020-05-26 | International Business Machines Corporation | Method and system to securely run applications using containers |
CN110059453B (zh) | 2019-03-13 | 2021-02-05 | 中国科学院计算技术研究所 | 一种容器虚拟化安全加固装置及方法 |
US11176245B2 (en) * | 2019-09-30 | 2021-11-16 | International Business Machines Corporation | Protecting workloads in Kubernetes |
-
2020
- 2020-01-24 US US16/751,234 patent/US11461474B2/en active Active
- 2020-12-10 DE DE112020005517.5T patent/DE112020005517T5/de active Pending
- 2020-12-10 CN CN202080093368.0A patent/CN114945900A/zh active Pending
- 2020-12-10 WO PCT/IB2020/061730 patent/WO2021148863A1/en active Application Filing
- 2020-12-10 JP JP2022542092A patent/JP2023510773A/ja active Pending
- 2020-12-10 GB GB2212230.3A patent/GB2607529A/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021148863A1 (en) | 2021-07-29 |
US11461474B2 (en) | 2022-10-04 |
GB202212230D0 (en) | 2022-10-05 |
US20210232693A1 (en) | 2021-07-29 |
CN114945900A (zh) | 2022-08-26 |
DE112020005517T5 (de) | 2022-09-01 |
GB2607529A (en) | 2022-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11467982B2 (en) | Virtualization-based platform protection technology | |
CN108509250B (zh) | 具有受保护的访客机验证主机控制的安全公共云 | |
CN109783188B (zh) | 用于安全公共云的密码存储器所有权表 | |
US10241819B2 (en) | Isolating data within a computer system using private shadow mappings | |
US9946562B2 (en) | System and method for kernel rootkit protection in a hypervisor environment | |
US11461474B2 (en) | Process-based virtualization system for executing a secure application process | |
CN110851231A (zh) | 使用扩展分页和存储器完整性的安全公用云 | |
US10990690B2 (en) | Disk encryption | |
US11755753B2 (en) | Mechanism to enable secure memory sharing between enclaves and I/O adapters | |
US20200409740A1 (en) | Systems, methods, and media for trusted hypervisors | |
US10620985B2 (en) | Transparent code patching using a hypervisor | |
US11403409B2 (en) | Program interruptions for page importing/exporting | |
KR20120061249A (ko) | 하이퍼바이저를 활용한 사용자 어플리케이션 메모리 보호방법 | |
US11436318B2 (en) | System and method for remote attestation in trusted execution environment creation using virtualization technology | |
TWI801714B (zh) | 用於安全儲存隔離之電腦實施方法、系統及程式產品 | |
JP7393846B2 (ja) | セキュア・インターフェイス制御の高レベルのページ管理 | |
JP7410161B2 (ja) | ページ変更検出によるセキュアなページング | |
EP3785149B1 (en) | Memory assignment for guest operating systems | |
US20230236870A1 (en) | Safe entropy source for encrypted virtual machines | |
US11604673B2 (en) | Memory encryption for virtual machines by hypervisor-controlled firmware | |
US11726922B2 (en) | Memory protection in hypervisor environments | |
US20240061697A1 (en) | Providing trusted devices fine grained access into private memory of trusted execution environment | |
US20230098991A1 (en) | Systems, methods, and media for protecting applications from untrusted operating systems | |
CN116561824A (zh) | 在机密计算架构中管理内存的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230525 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240531 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240604 |