JP2022100217A - 信頼できる実行環境におけるメモリの隔離 - Google Patents

信頼できる実行環境におけるメモリの隔離 Download PDF

Info

Publication number
JP2022100217A
JP2022100217A JP2021154710A JP2021154710A JP2022100217A JP 2022100217 A JP2022100217 A JP 2022100217A JP 2021154710 A JP2021154710 A JP 2021154710A JP 2021154710 A JP2021154710 A JP 2021154710A JP 2022100217 A JP2022100217 A JP 2022100217A
Authority
JP
Japan
Prior art keywords
memory
tee
processor
function
executed
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
Application number
JP2021154710A
Other languages
English (en)
Inventor
エル.サヒタ ラヴィ
L Sahita Ravi
ルーカス ヴァールディエク-オバーワグナー アンジョ
Lucas Vahldiek-Oberwagner Anjo
ジュー ゴー テク
Teck Joo Goh
イリッカル ラメシュクマル
Illikkal Rameshkumar
クリアタ アンジェイ
Kuriata Andrzej
シャンボーグ ヴェドビヤス
Shanbhogue Vedvyas
ヴィジ モナ
Vij Mona
シア ハイドン
Haidong Xia
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2022100217A publication Critical patent/JP2022100217A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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
    • G06F21/79Protecting 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 in semiconductor storage media, e.g. directly-addressable memories
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】信頼できる実行環境TEE内でメモリを隔離するためのシステム及び方法を提供する。【解決手段】ファンクション・アズ・ア・サービスFaaS環境で、FaaSサーバ上の単一のTEE内に、複数の機能が各機能のデータ整合性を危険にさらすことなく設置される。機能毎に異なる拡張ページテーブルEPTを使用することにより、機能の仮想アドレス空間は別個に保持され、重複しない異なる物理アドレス空間にマッピングされる。また、部分的な重複を許可して、機能が他のデータを保護しながら一部のデータを共有する。機能毎のメモリが、異なる暗号化キーを使用して暗号化される。【選択図】図6

Description

本明細書で開示する主題は概して、ハードウェアの信頼できる実行環境(TEE)に関する。具体的には、本開示は、TEE内でメモリを隔離するためのシステムおよび方法に対処する。
ハードウェア特権レベルは、デバイス上で実行されているアプリケーションによるメモリアクセスを限定するためにプロセッサにより使用される場合がある。オペレーティングシステムは、より高い特権レベルで実行され、デバイスの全てのメモリにアクセスすることができ、他のアプリケーションのメモリ範囲を定義することができる。より低い特権レベルを実行しているアプリケーションは、オペレーティングシステムにより定義される範囲内でのメモリへのアクセスに制限されており、他のアプリケーションまたはオペレーティングシステムのメモリにアクセスすることができない。
限定ではなく例として、添付図面の図に幾つかの実施形態を示す。
幾つかの例示的な実施形態に係る、TEEを使用してファンクション・アズ・ア・サービスを提供するサーバに適したネットワーク環境を示すネットワーク図である。
TEE内でメモリを隔離する際に使用するのに適した、幾つかの例示的な実施形態に係る、ファンクション・アズ・ア・サービス・サーバのブロック図である。
従来技術のリングベースのメモリ保護のブロック図である。
幾つかの例示的な実施形態に係るTEEの待ち時間を削減するのに適した、エンクレーブベースのメモリ保護のブロック図である。
TEE内でメモリを隔離する際に使用するのに適した、幾つかの例示的な実施形態に係る、拡張ページテーブルを使用するアドレスマッピングのブロック図である。
幾つかの例示的な実施形態に係る、仮想マシンマネージャ(VMM)と安全調停モード(SEAM)モジュールとの間の通信シーケンスと、結果として得られるTEEのメモリ空間とのブロック図である。
幾つかの例示的な実施形態に係る、VMMとTDXモジュールとの間の通信シーケンスと、結果として得られるTEEのメモリ空間とのブロック図である。
幾つかの例示的な実施形態に係る、TEE内でメモリを隔離する際にサーバが実行するのに適した方法の動作を示すフローチャートである。
コンピューティングデバイスのためのソフトウェアアーキテクチャの一例を示すブロック図である。
本明細書で説明する方法論のいずれか1つまたは複数をマシンに実行させるための命令が実行され得るコンピュータシステムの例示的な形態のマシンのブロック図である。
例示的な方法およびシステムは、TEEを提供する際の待ち時間を削減することを対象とする。最も一般的な意味では、TEEは、その信頼がどのように取得されるかに関係なく、任意の信頼できる実行環境である。しかしながら、本明細書で使用する場合、TEEは、エンクレーブ内のコードを実行することにより提供される。エンクレーブは、エンクレーブの外部のプロセスが高い特権レベルで実行されている場合であってもそれらのプロセスによるアクセスから保護される、メモリの部分である。
エンクレーブは、エンクレーブ内にロードされるコードおよびデータが、エンクレーブの外部で実行されているコードによるアクセスから保護されることを保証する、プロセッサ保護により有効となる。故に、エンクレーブは、オペレーティングシステムを含む、悪意あるソフトウェアからのエンクレーブに含まれるデータおよびコードのアクセスをハードウェアレベルで防止する、隔離された実行環境を提供する。
TEEは、TEEの外部にある全てのソフトウェアから機密情報を保護することにより機密情報の安全な処理ができるようにするために使用されてよい。TEEはモジュラプログラミングに使用されてもよく、各モジュールは、他のモジュールに起因する脆弱性にさらされることなく独自の機能性に必要な全てのものを含む。例えば、1つのTEEに対して成功したインジェクション攻撃が、別のTEEのコードに影響を及ぼすことはできない。
トータルメモリ暗号化(TME:Total Memory Encryption)は、プロセッサをバイパスすることにより、メモリ内のデータがアクセスされないように保護する。システムは、立ち上げ時にプロセッサ内で暗号化キーを生成し、プロセッサの外部にキーを記憶しない。TME暗号化キーは、再立ち上げをはさんで持続せず、かつ、プロセッサの外部に記憶されないことから、短期キーである。プロセッサによりメモリに書き込まれる全てのデータは、暗号化キーを使用して暗号化され、メモリから読み戻されるときに復号される。故に、プロセッサを介さずにメモリから直接データを読み取ろうとするハードウェアベースの攻撃は失敗する。
マルチキーTME(MKTME)は、複数のキーを使用するためにTMEを拡張する。個々のメモリページは、TMEの短期キーを使用するか、またはソフトウェアが提供するキーを使用して、暗号化されてよい。これによって、ソフトウェアベースの攻撃に関してTMEよりも高いセキュリティが提供され得る。なぜなら、攻撃者は、攻撃ソフトウェアがアクセスした任意のメモリをプロセッサに自動的に復号させるのではなく、対象となるソフトウェアにより使用されている特定のキーを識別する必要があるからである。
ファンクション・アズ・ア・サービス(FaaS:Function-as-a-Service)環境では、クライアントは、FaaSサーバ上のTEE内で実行されている機能を使用する。
FaaSプラットフォームは、アプリケーションロジックを実行するがデータを記憶しないクラウドコンピューティングサービスを提供する。機能に機密データを提供する前に、クライアントは、機能がTEEで実行されており、ひいては、信頼できる環境の一部でない他の機能からは機密データにアクセスできないことを検証する。
機能ごとにTCBを最小化するために、各機能は別個のTEEに設置されてよい。しかしながら、これによって、TEEを作成するオーバヘッドが機能ごとに発生する。本明細書で説明するように、各機能のデータ整合性を危険にさらすことなく、複数の機能が単一のTEEに設置されてよい。例えば、機能ごとに異なる拡張ページテーブル(EPT)を使用することにより、機能の仮想アドレス空間は別個に保持され、重複しない異なる物理アドレス空間にマッピングされる。代替的に、部分的な重複を許可して、機能が他のデータを保護しながら一部のデータを共有できるようにすることも可能である。
代替的または追加的に、機能ごとのメモリが、異なる暗号化キーを使用して暗号化されてよい。故に、ある機能が、異なる機能に関連付けられるメモリにアクセスした場合であっても、その機能はデータを復号することができない。
FaaSプラットフォームの複数のテナントが、ゲートウェイを介してFaaSプラットフォームにより実行される機能を提供してよい。テナントは、特定の会社にリンクされたアカウントを有するユーザなど、データへの共通アクセスを共有するユーザのグループである。テナント間のデータの保護がテナントおよびFaaSプラットフォームの目標であることがある。1つまたは複数のデータセンタにおいて、FaaSプラットフォームは、1つまたは複数のFaaSサーバを含む。故に、ゲートウェイは、分散計算のためのロードバランサまたは他の機能性を含んでよい。FaaSプラットフォームはゲートウェイを介して複数のテナントに機能性を提供しているので、1つのテナントがゲートウェイを制御することはできない。
本明細書で説明するように、各テナントは、FaaSプラットフォーム上の任意の数のTEE内で実行され、かつ、ゲートウェイを介してアクセスされる、任意の数の機能に対してコードおよびデータを提供してよい。本明細書で説明するシステムおよび方法を使用すると、テナントごとに作成され得るTEEの数を少なくすることができる(例えば、テナントごとに1つのTEE)。
TEE内でメモリを保護する既存の方法と比較すると、本明細書で説明する方法およびシステムによって、複数のメモリ空間を有する単一のTEEを使用できるようになり、TEE内の保護が可能になる。TEE内で複数の機能が実行されると単一のTEEのオーバヘッドが増加しないので、計算オーバヘッドが削減される。これらの効果を全体として考慮すると、本明細書で説明する方法論のうちの1つまたは複数によって、他の方法であればTEEの作成またはFaaSプラットフォームの提供に伴うであろう特定の努力またはリソースの必要性をなくすことができる。1つまたは複数のマシン、データベース、またはネットワークにより使用されるコンピューティングリソースも同様に削減されてよい。係るコンピューティングリソースの例には、プロセッササイクル、ネットワークトラフィック、メモリ使用量、データ記憶容量、電力消費、および冷却容量が含まれる。
図1は、幾つかの例示的な実施形態に係る、TEEを使用してファンクション・アズ・ア・サービスを提供するサーバに適したネットワーク環境100を示すネットワーク図である。ネットワーク環境100は、FaaSサーバ110Aおよび110Bと、クライアントデバイス120Aおよび120Bと、ネットワーク130とを含む。FaaSサーバ110A~110Bは、ネットワーク130を介してクライアントデバイス120A~120Bに機能を提供する。FaaSサーバ110Aおよび110Bは、集合的にFaaSサーバ120、または一般的にFaaSサーバ120と呼ばれることがある。クライアントデバイス120Aおよび120Bは、集合的にクライアントデバイス120、または一般的にクライアントデバイス120と呼ばれることがある。
クライアントデバイス120Aおよび120Bは、異なるテナントのデバイスであってよく、その結果、各テナントは、自らのテナント固有のデータおよびコードに他のテナントがアクセスできないようにしたがる。従って、FaaSサーバ110A~110Bは、提供されるFaaSごとに、またはテナントごとに、またはそれらの任意の適切な組み合わせのために、エンクレーブを使用してよい。FaaSサーバ110A~110Bと、クライアントデバイス120Aおよび120Bとはそれぞれ、図8に関して以下に説明するように、全体的または部分的に、コンピュータシステムに実装されてよい。
図1に示すマシン、データベース、またはデバイスのいずれかを、ソフトウェアにより修正(例えば、構成またはプログラム)される汎用コンピュータに実装して、そのマシン、データベース、またはデバイスについて本明細書で説明する機能を実行する特殊目的コンピュータにしてよい。例えば、以下では、図8に関して、本明細書で説明する方法論のいずれか1つまたは複数を実装できるコンピュータシステムについて説明する。本明細書で使用する場合、「データベース」はデータ記憶リソースであり、テキストファイル、テーブル、スプレッドシート、リレーショナルデータベース(例えば、オブジェクトリレーショナルデータベース)、トリプルストア、階層データストア、ドキュメント指向のNoSQLデータベース、ファイルストア、またはそれらの任意の適切な組み合わせとして構造化されたデータを記憶してよい。データベースは、インメモリデータベースであってよい。更には、図1に示すマシン、データベース、またはデバイスのいずれか2つまたはそれより多くを組み合わせて、単一のマシン、データベース、またはデバイスにしてよく、任意の単一のマシン、データベース、またはデバイスについて本明細書で説明する機能を、複数のマシン、データベース、またはデバイス間で細分化してよい。
FaaSサーバ110およびクライアントデバイス120は、ネットワーク130により接続される。ネットワーク130は、マシン、データベース、およびデバイス間の通信を可能にする任意のネットワークであってよい。従って、ネットワーク130は、有線ネットワーク、無線ネットワーク(例えば、モバイルネットワークまたはセルラネットワーク)、またはそれらの任意の適切な組み合わせであってよい。ネットワーク130は、プライベートネットワーク、パブリックネットワーク(例えば、インターネット)、またはそれらの任意の適切な組み合わせを構成する1つまたは複数の部分を含んでよい。これらのデバイスの各々は、ネットワークインタフェースを使用してネットワーク130に接続される。
図2は、TEE内でメモリを隔離する際に使用するのに適した、幾つかの例示的な実施形態に係る、FaaSサーバ110Aのブロック図200である。FaaSサーバ110Aは、通信モジュール210、アプリケーションの信頼できないコンポーネント220、アプリケーションの信頼できるコンポーネント230、信頼ドメインモジュール240、共有メモリ250、およびプライベートメモリ260を含むものとして示されており、これらは全て(例えば、バス、共有メモリ、またはスイッチを介して)互いに通信するように構成される。本明細書で説明するモジュールのいずれか1つまたは複数は、ハードウェア(例えば、マシンのプロセッサ)を使用して実装されてよい。例えば、本明細書で説明する任意のモジュールは、そのモジュールについて本明細書で説明する動作を実行するように構成されるプロセッサにより実装されてよい。更には、これらのモジュールのいずれか2つまたはそれより多くを組み合わせて、単一のモジュールにしてよく、単一のモジュールについて本明細書で説明する機能を、複数のモジュール間で細分化してよい。更に、様々な例示的な実施形態によれば、単一のマシン、データベース、またはデバイスの内部に実装されるものとして本明細書で説明するモジュールが、複数のマシン、データベース、またはデバイスに分散されてよい。
通信モジュール210は、FaaSサーバ110Aに送信されるデータを受信し、FaaSサーバ110Aからのデータを伝送する。例えば、通信モジュール210は、機能を実行する要求をクライアントデバイス130Aから受信してよい。機能が実行された後、機能の結果は、通信モジュール210によりクライアントデバイス130Aに提供される。通信モジュール210により送信および受信される通信は、ネットワーク130により仲介されてよい。呼び出された機能は、別の機能により仲介されてよい。例えば、通信モジュール210は、信頼できないコンポーネント220にURLを提供してよい。信頼できないコンポーネント220は、URLを解析し、信頼できるコンポーネント230内の機能を呼び出す(invoke)。
信頼できないコンポーネント220は、エンクレーブの外部で実行されてよい。故に、オペレーティングシステムまたは他の信頼できないコンポーネントが危険にさらされた場合は、信頼できないコンポーネント220が攻撃を受けやすい。信頼できるコンポーネント230は、エンクレーブの内部で実行される。故に、オペレーティングシステムまたは信頼できないコンポーネント220が危険にさらされた場合であっても、信頼できるコンポーネント230のデータおよびコードは安全なままである。
信頼ドメインモジュール240は、エンクレーブを作成および保護し、信頼できないコンポーネント220と信頼できるコンポーネント230との間における実行の移行を担う。信頼ドメインモジュール240には署名されたコードが提供されてよく、信頼ドメインモジュール240は、コードが署名されてから修正されていないことを検証する。署名されたコードは、エンクレーブの一部としてマーク付けされる物理メモリの部分にロードされる。その後、信頼できないソフトウェアによるエンクレーブメモリのアクセス、修正、実行、またはそれらの任意の適切な組み合わせが、ハードウェアの保護によって防止される。コードは、信頼ドメインモジュール240でのみ利用できるキーを使用して暗号化されてよい。
信頼できるコンポーネント230がひとたび初期化されると、信頼できないコンポーネント220は、信頼できないモードから信頼できるモードに移行するか、または信頼できるエンクレーブ間を移行する、信頼ドメインモジュール240の特別なプロセッサ命令を使用して、信頼できるコンポーネント230の機能を呼び出すことができる。信頼できるコンポーネント230は、パラメータ検証を実行し、パラメータが有効である場合、要求された機能を実行し、信頼ドメインモジュール240を介して信頼できないコンポーネント220に制御を返す。複数の信頼できるコンポーネント230がFaaSサーバ110Aでインスタンス化され、これらのコンポーネント230がそれぞれ、1つまたは複数の機能を提供してよい。
信頼ドメインモジュール240は、Intel(登録商標)Software Guard Extensions(SGX)、Intel(登録商標)Trust Domain Extensions(TDX)、またはその両方を提供するIntel(登録商標)ハードウェアプロセッサの1つまたは複数のコンポーネントとして実装されてよい。
信頼できないコンポーネント220および信頼できるコンポーネント230はどちらも、共有メモリ250にアクセスし、共有メモリ250を修正することができるが、信頼できるコンポーネント230のみがプライベートメモリ260にアクセスし、プライベートメモリ260を修正することができる。図2には、1つの信頼できるコンポーネント230および1つのプライベートメモリ260のみが示されているが、各テナントが複数の信頼できるコンポーネント230を有し、これらのコンポーネント230がそれぞれ、対応するプライベートメモリ260を有してもよい。幾つかの例示的な実施形態では、複数の信頼できるコンポーネント230が単一のエンクレーブ内に存在する。更には、複数のアプリケーションが別個のメモリ空間、ひいては、別個の共有メモリ250で実行されてよい。この文脈では、「共有」とは、必ずしもシステム上で実行される全てのアプリケーションがアクセスできるとは限らないメモリ空間(例えば、アプリケーションおよびそのオペレーティングシステム)にアクセスできる全てのソフトウェアおよびハードウェアがアクセスできるメモリを指す。
図3は、従来技術のリングベースのメモリ保護のブロック図300である。ブロック図300は、アプリケーション310および320と、オペレーティングシステム330とを含む。オペレーティングシステム330は、リング0(Intel(登録商標)プロセッサおよびAMD(登録商標)プロセッサ)、例外レベル1(ARM(登録商標)プロセッサ)、または同等の特権レベルでプロセッサコマンドを実行する。アプリケーション310および320は、リング3(Intel(登録商標)プロセッサおよびAMD(登録商標)プロセッサ)、例外レベル0(ARM(登録商標)プロセッサ)、または同等の特権レベルでプロセッサコマンドを実行する。
ハードウェアプロセッサは、より低い特権レベルで実行されているコードが、オペレーティングシステムにより定義されるメモリ範囲の外側にあるメモリにアクセスできないようにする。故に、(図3の「X」で示すように)アプリケーション310のコードは、アプリケーション320またはオペレーティングシステム330のメモリに直接アクセスすることができない。オペレーティングシステム330は、(例えば、コールゲート、Intel(登録商標)プロセッサ上のSYSENTER/SYSEXIT命令、AMD(登録商標)プロセッサ上のSYSCALL/SYSRET命令、またはそれらの任意の適切な組み合わせもしくは同等物で)特定のアクセスポイントを事前定義することにより、アプリケーション310および320に何らかの機能性を公開する。
オペレーティングシステム330はメモリの全てにアクセスできるので、アプリケーション310および320には、悪意あるオペレーティングシステムからの保護がない。例えば、競合者は、アプリケーション310のコードおよびデータにアクセスするために、アプリケーション310を実行する前にオペレーティングシステムを修正して、逆行分析を可能にしてよい。
更に、アプリケーションがオペレーティングシステム330の脆弱性を悪用し、かつ、オペレーティングシステムの特権レベルに昇格できる場合は、アプリケーションは、メモリの全てにアクセスすることができるであろう。例えば、(図3のアプリケーション310と320との間のXで示すように)アプリケーション320のメモリに通常アクセスできないアプリケーション310は、リング0または例外レベル1に昇格した後に、アプリケーション320のメモリにアクセスすることができるであろう。故に、ユーザが騙されて悪意あるプログラム(例えば、アプリケーション310)を実行した場合は、ユーザまたはアプリケーションプロバイダのプライベートデータが、メモリから直接アクセスされることがある(例えば、アプリケーション320により使用される銀行パスワード)。
図4は、幾つかの例示的な実施形態に係るTEEの待ち時間を削減するのに適した、エンクレーブベースのメモリ保護のブロック図400である。ブロック図400は、アプリケーション410、エンクレーブ420、およびオペレーティングシステム430を含む。オペレーティングシステム430は、リング0(Intel(登録商標)プロセッサおよびAMD(登録商標)プロセッサ)、例外レベル1(ARM(登録商標)プロセッサ)、または同等の特権レベルでプロセッサコマンドを実行する。アプリケーション410およびエンクレーブ420は、リング3(Intel(登録商標)プロセッサおよびAMD(登録商標)プロセッサ)、例外レベル0(ARM(登録商標)プロセッサ)、または同等の特権レベルでプロセッサコマンドを実行する。
オペレーティングシステム430は、エンクレーブ420のメモリを割り振り、エンクレーブ420にロードされるコードおよびデータをプロセッサに示す。しかしながら、オペレーティングシステム430は、ひとたびインスタンス化されると、エンクレーブ420のメモリにアクセスすることができない。故に、オペレーティングシステム430が悪意あるものか、または危険にさらされた場合であっても、エンクレーブ420のコードおよびデータは安全なままである。
エンクレーブ420は、アプリケーション410に機能性を提供してよい。オペレーティングシステム430は、アプリケーション410が(例えば、ECALL命令を使用することにより)エンクレーブ420の機能を呼び出すことを許可されるかどうかを制御してよい。故に、悪意あるアプリケーションは、オペレーティングシステム430を危険にさらすことによりエンクレーブ420の機能を呼び出す能力を獲得できる場合がある。それでもなお、ハードウェアプロセッサは、悪意あるアプリケーションがエンクレーブ420のメモリまたはコードに直接アクセスできないようにする。故に、エンクレーブ420内のコードは、機能が正しく呼び出されていることも、または、非攻撃者により呼び出されていることも想定できないが、エンクレーブ420内のコードは、パラメータチェックおよび他の内部セキュリティ対策を完全に制御しており、その内部セキュリティの脆弱性の影響しか受けない。
図5は、TEE内でメモリを隔離する際に使用するのに適した、幾つかの例示的な実施形態に係る、拡張ページテーブルを使用するアドレスマッピングのブロック図500である。ブロック図500は、プロセス520Aおよび520Bを実行している仮想マシン510を示す。プロセス520A~520Bの各々は、対応する仮想アドレスの組530Aまたは530Bを使用する。プロセスにより使用される仮想アドレスは、ページテーブル540Aおよび540Bを使用して、仮想マシンの仮想物理アドレスにマッピングされる。仮想マシンの仮想物理アドレスは、EPT550を使用して、ホスト物理アドレスにマッピングされる。
図5には単一の仮想マシン510が示されているが、複数の仮想マシンが単一の物理ホスト上に存在してよい。各仮想マシンは、物理ホストにより制御される独自のEPTを有する。ホストが単一のEPTにのみ物理アドレスを割り振る実施形態では、各仮想マシンが他の仮想マシンのメモリにアクセスすることはできない。故に、異なる仮想マシンで異なるプロセスを実行すると、各プロセスのメモリが保護される。
同様に、仮想マシン510は、異なるページテーブル540A~540Bを使用することにより、プロセス520Aおよび520Bのメモリを保護する。プロセス520A~520Bの各々は、ページテーブル540A~540Bにより仮想マシン510の異なる仮想物理アドレスにマッピングされる依存しない仮想アドレス空間を使用する。仮想マシン510が単一のページテーブルにのみ仮想物理アドレスを割り振る実施形態では、各プロセス520Aまたは520Bが他のプロセスのメモリにアクセスすることはできない。故に、異なる仮想メモリで異なるプロセスを実行すると、各プロセスのメモリが保護される。
しかしながら、悪意あるプロセスが仮想マシン510の脆弱性の悪用を識別できる場合は、プロセスは、ページテーブルを修正することができ、それが異なるプロセスのメモリにアクセスできるようにすることがある。この脆弱性は、各プロセスを別個のTEEに保持することにより回避されるが、機能ごとに別個のTEEを作成するという犠牲を伴う。
図6は、幾つかの例示的な実施形態に係る、VMM610とTDXモジュール620との間の通信シーケンスと、結果として得られるTEE630のメモリ空間とのブロック図600である。TEE630のメモリは、単一の暗号化キー650を使用して保護される。TEE630内には、機能640A、640B、および640Cがあり、それぞれが独自のデータを有する。全てのプロセス520A~520Bが単一のEPT550を共有したブロック図500とは対照的に、機能640A~640Cの各々は、別個のEPT660A、660B、または660Cを有する。更に、TEE630のFaaSランタイムは、別個のEPT660Dを有する。TEE630のFaaSランタイムは、(例えば、VMFunc命令を使用して)機能640A~640Cのうちの1つまたは複数を呼び出すように構成されるゲストオペレーティングシステムであってよい。
機能がVMFuncを使用して独自のEPTを修正して、異なる機能に割り当てられる物理メモリにアクセスするリスクを軽減するために、更なるセキュリティが提供されてよい。例えば、制御フロー強制テクノロジー(CET:Control-Flow Enforcement Technology)を使用して、VMFunc命令が発行され得るメモリに厳しい制限を課して、ゲストオペレーティングシステムがVMFunc命令を発行できるようにしながらも、機能640A~640Cがそうできないようにすることができる。
TEE630を作成するために、VMM610は、ハードウェアプロセッサに統合されるハードウェアTDXモジュール620の機能を呼び出す。VMM610は、(例えば、Intel(登録商標)TDXにより提供され、かつ、図6にTD.CREATEとして示される、TDH.MNG.CREATE機能を使用して)TD Root(TDR)制御構造を初期化を割り振ることにより、新しいゲストTDを作成することができる。作成機能への入力として、VMM610は、Host Key ID(HKID)としても知られるメモリ保護キー識別子をTDに割り当ててよい。HKIDは、CPUがTDにより行われるメモリアクセスにタグ付けし、かつ、MKTMEが暗号化/復号キーを選択するために使用され得る。キー自体はVMM610に公開されない。VMM610は、(例えば、Intel(登録商標)TDXにより提供されるTDH.MNG.KEY.CONFIG機能を使用することにより)HKIDをMKTME暗号化エンジンにプログラムしてよい。
TDが作成された後、VMM610は、(例えば、Intel(登録商標)TDXにより提供されるTDH.MNG.ADDCX機能およびTDH.MNG.INIIT機能を使用して)制御構造ページを追加して初期化することにより、TD Control Structure(TDCS)を構築してよい。VMM610は、(例えば、Intel(登録商標)TDXにより提供され、かつ、図6にMEM.SEPT.ADDとして示される、TDH.MEM.SEPT.ADD機能を使用して)1つまたは複数のSecure EPTページを追加することにより、Secure EPTツリーを構築してよい。TDプライベートページの初期セットは、(例えば、Intel(登録商標)TDXにより提供され、かつ、図6にMEM.PAGE.ADDとして示される、TDH.MEM.PAGE.ADD機能を使用して)追加されてもよい。TDプライベートページの初期セットは、Virtual Basic Input/Output System(BIOS)コードおよびデータと、スタックおよびヒープのための幾つかのクリアページとを含んでよい。機能ごとの更なるコードおよびデータがロードされてもよい。
割り振り後、(例えば、Intel(登録商標)TDXにより提供され、かつ、図6にMEM.PAGE.REMOVEとして示される、TDH.MEM.PAGE.REMOVE機能を使用して)TDプライベートページが除去されてよい。同様に、(例えば、Intel(登録商標)TDXにより提供され、かつ、図6にMEM.SEPT.REMOVEとして示される、TDH.MEM.SEPT.REMOVE機能を使用して)Secure EPTページが除去されてよい。故に、VMM610は、TEE630の作成およびサイズを制御し、機能640A~640Cの各々について別個のSecure EPTページを作成して、危険にさらされた機能が別の機能のコードおよびデータへのアクセスに使用され得るリスクを軽減することができる。TDXモジュール620、ひいては、ハードウェアプロセッサがEPT660A~660Dへのアクセスを制御するので、悪意あるコードは依然として、他の機能の物理メモリにアクセスすることができない。これは、TEE630に割り振られる全てのメモリに単一の暗号化キー650が使用されたとしても、当てはまる。
これら2つの機能が、異なるEPTを使用する、メモリの異なる部分にある場合は、1つの機能に別の機能を実行させる通常のジャンプまたは呼び出しコマンドが成功しない。代わりに、他のメモリ空間に入るために、SEAM機能呼び出しが行われる。同様に、呼び出し元の機能に制御を返すことが、プロセッサのSEAMにより仲介される。その結果、SEAMは、(例えば、プロセッサパイプライン、レジスタ、他の内部状態、またはそれらの任意の適切な組み合わせをクリアすることにより)別個のメモリ空間に更なる保護を提供して、1つのEPTを使用する悪意あるコードが、別のEPTを使用するコードに影響を及ぼす能力を低下させることができる。
機能640A~640Cの各々が、EPT660A~660Cのうちの別個のものを使用して示されているが、SEAMは、メモリを既存のEPTに追加できるようにする機能を提供する。故に、必要に応じて機能がEPTを共有してよい。これによって、密接に関連する2つの機能が互いのメモリに対する直接的なアクセスを共有できるようになり、性能向上のためにより高度な隔離というセキュリティがトレードオフされ得る。例えば、機能640Aは独自のEPT660Aを有してよいが、機能640Bおよび640CはEPT660Bを共有する。
EPTは概して、ページレベルで物理メモリへのアクセスを制御する。多くのシステム上では1ページが4キロバイトであるが、他のページサイズが使用されてもよい。機能640A~640Cによるメモリへのアクセスは、ページより小さい粒度のレベルで制御されてよい。例えば、メモリのページがEPTに追加されると、サブページのアクセス制御が望ましいことを示すフラグがSEAMコマンドに設定されてよい。このフラグが設定されている場合は、更なる64ビットベクトルが(例えば、メモリアドレスで、またはコマンドの一部として)提供され、ベクトル内の各ビットは、ページの対応する1/64の部分(例えば、64バイト)がTEE内の他の機能に分けられるか、プライベートのままであるかを示す。他のサイズのベクトルを使用して、他のレベルの粒度を提供してもよい(例えば、ページの4分の1(例えば、1028バイト)ごとにアクセスを制御する4ビットベクトル)。
SEAM機能呼び出しに代わる手段として、TDCALL呼び出しまたはVMFunc呼び出しが使用されてもよい。これらの各々は、TEEにプロセッサベースの保護を提供する異なるハードウェア実装である。
幾つかの例示的な実施形態では、TDXモジュール620は、機能640A~640C間で切り替えを行うときにEPTを切り替えることに加えて(またはその代わりに)、ページング構造階層のベースの物理アドレスを含む制御レジスタ3(CR3)、命令ポインタレジスタ(RIP)、またはIntel(登録商標)Virtual Machine Control Structure(VMCS)のような、複数のレジスタを含む制御構造などの、他のレジスタを切り替えてよい。
図7は、幾つかの例示的な実施形態に係る、VMM710とTDXモジュール720との間の通信シーケンスと、結果として得られるTEE730のメモリ空間とのブロック図700である。TEE730内には、機能740A、740B、および740Cがあり、それぞれが独自のデータを有する。全ての機能640A~640Cが単一の暗号化キー650を共有したブロック図600とは対照的に、機能740A~740Cの各々は、別個の暗号化キー750A、750B、または750Cを有する。更に、TEE730のFaaSランタイムは、別個の暗号化キー750Dを有する。機能740A~740CおよびFaaSランタイムの各々は、別個のEPT760A、760B、760C、または760Dを有する。TEE730のFaaSランタイムは、機能740A~740Cのうちの1つまたは複数を呼び出すように構成されるゲストオペレーティングシステムであってよい。
図7の実装では、TDXモジュール720は、機能740A~740CおよびFaaSランタイムのための一意の暗号化キー750A~750Dを導出する。各機能に割り振られるメモリは、対応する暗号化キーを使用して暗号化される。故に、悪意あるコードが機能に注入され、かつ、悪意あるコードが、別個のEPT760A~760Dを使用することにより提供されるセキュリティを何らかの方法でバイパスできる場合でも、悪意あるコードは、セキュリティの更なる層を提供して、アクセスされたメモリを復号することができない。
図8は、幾つかの例示的な実施形態に係る、TEE内でメモリを隔離する際にサーバが実行するのに適した方法800の動作を示すフローチャートである。方法800は、動作810、820、および830を含む。限定ではなく例として、方法800は、図2~図7に示すモジュール、データベース、および構造を使用して、図1のFaaSサーバ110Aにより実行されてよい。
動作810では、FaaSサーバ110Aのハードウェアプロセッサ(例えば、図2の信頼ドメインモジュール240として動作する図6および図7のTDXモジュール620または720)がTEEを作成する。例えば、図6および図7のTEE630または730が作成されてよい。
動作820では、ハードウェアプロセッサが、第1部分と第2部分とを含む、メモリの複数の部分をTEEに割り振る。例えば、EPT660A~660Dまたは760A~760Dが、EPT660A~660Dまたは760A~760Dにより参照される更なる物理ページと共に、TEEに割り振られてよい。第1部分および第2部分は、異なる機能(例えば、機能640Aおよび640Bまたは740Aおよび740B)に割り振られてよく、異なる暗号化キー(例えば、暗号化キー750Aおよび750B)または同じ暗号化キー(例えば、単一の暗号化キー650)を使用してよい。
動作830では、ハードウェアプロセッサが、第1部分で実行されている命令が第2部分内のデータにアクセスできないようにする。例えば、機能640Aのコードが、機能640Aに関連付けられるメモリの第1部分にロードされる。機能640A内から実行される、メモリにアクセスする命令が、EPT660Aを使用して処理される。他のEPT660B~660Dにより参照される物理ページはEPT660Aにより参照されないので、機能640A内で実行される命令は、他の機能640Bおよび640Cに関連付けられるデータにアクセスできないようにされ、他の機能640Bおよび640Cのどちらかが、動作830の第2機能と見なされてよい。
別の例として、機能740Aのコードが、暗号化キー750Aを使用して、機能740Aに関連付けられるメモリの第1部分にロードされる。機能740A内から実行される、メモリにアクセスする命令が、EPT760Aを使用して処理される。他のEPT760B~760Dにより参照される物理ページはEPT760Aにより参照されないので、機能740A内で実行される命令は、他の機能740Bおよび740Cに関連付けられるデータにアクセスできないようにされ、他の機能740Bおよび740Cのどちらかが、動作830の第2機能と見なされてよい。更に、このセキュリティがバイパスされた場合であっても、ハードウェアプロセッサは更に、第1部分で実行されている命令が第2部分内のデータにアクセスできないようにする。なぜなら、プロセッサは、アクセスされたデータに暗号化キー750A(または、非対称暗号化の場合は、対応する復号キー)を適用するからである。異なる暗号化キー(例えば、暗号化キー750Bまたは750C)が他の機能によりデータを暗号化するために使用されたので、復号されたデータは無意味であり、第2部分のデータへのアクセスが防止される。
故に、方法800を使用することにより、機能ごとに別個のEPTを使用するというセキュリティ上の利点を失うことなく、FaaSサーバ110Aが単一のTEE内で任意の数の機能を実行できるようにする。使用するTEEの数を少なくすると、TEEの作成および破壊(teardown)のオーバヘッドが削減され、単一のサーバがより多くの機能を提供できるようになる。
主題の上述した実装を考慮して、本願は以下の事例集を開示する。ここで、隔離された例の1つの特徴、または、組み合わせで捉えた、オプションとして、1つまたは複数の更なる例の1つまたは複数の特徴との組み合わせで捉えた例の1つより多くの特徴は、本願の開示に同様に含まれる更なる例である。
例1は、信頼できる実行環境(TEE)でメモリを隔離するシステムであって、上記システムは、プロセッサと、命令を記憶するメモリとを備え、上記命令は、上記プロセッサにより実行されると、上記プロセッサに、第1部分と第2部分とを含む、メモリの複数の部分をTEEに割り振る動作と、上記第1部分で実行されている命令が上記第2部分に記憶されるデータにアクセスできないようにする動作とを含む動作を実行させる。
例2において、例1の主題は、上記動作が、安全調停モード(SEAM)機能呼び出しに応答して、上記第1部分の第1拡張ページテーブル(EPT)と上記第2部分の第2EPTとの間の切り替えを行う動作を更に含む、ことを含む。
例3において、例1および2の主題は、上記動作が、第1暗号化キーを使用して上記第1部分を暗号化する動作と、第2暗号化キーを使用して上記第2部分を暗号化する動作とを更に含む、ことを含む。
例4において、例1から3の主題は、上記複数の部分が、第3部分を含み、上記第3部分で実行されている命令が、上記第1部分に記憶されるデータにアクセスすることを許可される、ことを含む。
例5において、例4の主題は、上記第1部分内の上記データの上記アクセスが、ページより小さい粒度のレベルで制御される、ことを含む。
例6において、例1から5の主題は、上記動作が、上記第2部分で実行されている命令が、上記第1部分に記憶されるデータにアクセスできないようにする動作を更に含む、ことを含む。
例7において、例1から6の主題は、上記動作が、安全調停モード(SEAM)機能呼び出しに応答して、上記TEEを作成する動作を更に含む、ことを含む。
例8において、例7の主題は、上記TEEの上記作成によって、上記メモリの第3部分が上記TEEに割り振られ、上記動作が、第2のSEAM機能呼び出しに応答して、上記TEEに上記メモリの上記第1部分を割り振る動作と、第3のSEAM機能呼び出しに応答して、上記TEEに上記メモリの上記第2部分を割り振る動作とを更に含む、ことを含む。
例9において、例8の主題は、上記第3部分で、ゲストオペレーティングシステムが実行される、ことを含む。
例10において、例9の主題は、上記ゲストオペレーティングシステムが、上記第1部分内の第1機能と、上記第2部分内の第2機能とを呼び出す、ことを含む。
例11は、信頼できる実行環境(TEE)でメモリを隔離する方法であって、上記方法は、プロセッサが、第1部分と第2部分とを含む、メモリの複数の部分をTEEに割り振る段階と、上記プロセッサが、上記第1部分で実行されている命令が、上記第2部分に記憶されるデータにアクセスできないようにする段階とを備える。
例12において、例11の主題は、安全調停モード(SEAM)機能呼び出しに応答して、上記第1部分の第1拡張ページテーブル(EPT)と上記第2部分の第2EPTとの間の切り替えを行う段階を含む。
例13において、例11および12の主題は、第1暗号化キーを使用して上記第1部分を暗号化する段階と、第2暗号化キーを使用して上記第2部分を暗号化する段階とを含む。
例14において、例11から13の主題は、上記複数の部分が、第3部分を含み、上記第3部分で実行されている命令が、上記第1部分に記憶されるデータにアクセスすることを許可される、ことを含む。
例15において、例14の主題は、上記第1部分内の上記データの上記アクセスが、ページより小さい粒度のレベルで制御される、ことを含む。
例16において、例11から15の主題は、上記第2部分で実行されている命令が、上記第1部分に記憶されるデータにアクセスできないようにする段階を含む。
例17において、例11から16の主題は、安全調停モード(SEAM)機能呼び出しに応答して、上記TEEを作成する段階を含む。
例18において、例17の主題は、上記TEEの上記作成によって、上記メモリの第3部分が上記TEEに割り振られ、上記方法が、上記プロセッサが、第2のSEAM機能呼び出しに応答して、上記TEEに上記メモリの上記第1部分を割り振る段階と、上記プロセッサが、第3のSEAM機能呼び出しに応答して、上記TEEに上記メモリの上記第2部分を割り振る段階とを更に備える、ことを含む。
例19において、例18の主題は、上記第3部分で、ゲストオペレーティングシステムが実行される、ことを含む。
例20において、例19の主題は、上記ゲストオペレーティングシステムが、上記第1部分内の第1機能と、上記第2部分内の第2機能とを呼び出す、ことを含む。
例21は、命令を備える非一時的コンピュータ可読媒体であって、上記命令は、プロセッサに、第1部分と第2部分とを含む、メモリの複数の部分をTEEに割り振る動作と、上記第1部分で実行されている命令が、上記第2部分に記憶されるデータにアクセスできないようにする動作とを含む動作を実行することにより、信頼できる実行環境(TEE)でメモリを隔離させるためのものである。
例22において、例21の主題は、上記動作が、安全調停モード(SEAM)機能呼び出しに応答して、上記第1部分の第1拡張ページテーブル(EPT)と上記第2部分の第2EPTとの間の切り替えを行う動作を更に含む、ことを含む。
例23において、例21および22の主題は、上記動作が、第1暗号化キーを使用して上記第1部分を暗号化する動作と、第2暗号化キーを使用して上記第2部分を暗号化する動作とを更に含む、ことを含む。
例24において、例21から23の主題は、上記複数の部分が、第3部分を含み、上記第3部分で実行されている命令が、上記第1部分に記憶されるデータにアクセスすることを許可される、ことを含む。
例25において、例24の主題は、上記第1部分内の上記データの上記アクセスが、ページより小さい粒度のレベルで制御される、ことを含む。
例26において、例21から25の主題は、上記動作が、上記第2部分で実行されている命令が、上記第1部分に記憶されるデータにアクセスできないようにする動作を更に含む、ことを含む。
例27において、例21から26の主題は、上記動作が、安全調停モード(SEAM)機能呼び出しに応答して、上記TEEを作成する動作を更に含む、ことを含む。
例28において、例27の主題は、上記TEEの上記作成によって、上記メモリの第3部分が上記TEEに割り振られ、上記動作が、第2のSEAM機能呼び出しに応答して、上記TEEに上記メモリの上記第1部分を割り振る動作と、第3のSEAM機能呼び出しに応答して、上記TEEに上記メモリの上記第2部分を割り振る動作とを更に含む、ことを含む。
例29において、例28の主題は、上記第3部分で、ゲストオペレーティングシステムが実行される、ことを含む。
例30において、例29の主題は、上記ゲストオペレーティングシステムが、上記第1部分内の第1機能と、上記第2部分内の第2機能とを呼び出す、ことを含む。
例31は、信頼できる実行環境(TEE)でメモリを隔離するシステムであって、上記システムは、記憶手段と、処理手段とを備え、上記処理手段は、上記TEEに上記記憶手段の一部を割り振り、かつ、上記割り振られた一部の外部に記憶される命令で上記割り振られた一部へのアクセスを防止することにより、TEEを作成することと、上記記憶手段の上記一部を、第1部分と第2部分とを含む複数の部分に分割することと、上記第1部分で実行されている命令が、上記第2部分に記憶されるデータにアクセスできないようにすることとを行うためのものである。
例32において、例31の主題は、上記処理手段が更に、安全調停モード(SEAM)機能呼び出しに応答して、上記第1部分の第1拡張ページテーブル(EPT)と上記第2部分の第2EPTとの間の切り替えを行うためのものである、ことを含む。
例33において、例31および32の主題は、上記処理手段が更に、第1暗号化キーを使用して上記第1部分を暗号化することと、第2暗号化キーを使用して上記第2部分を暗号化することとを行うためのものである、ことを含む。
例34において、例31から33の主題は、上記複数の部分が、第3部分を含み、上記第3部分で実行されている命令が、上記第1部分に記憶されるデータにアクセスすることを許可される、ことを含む。
例35において、例34の主題は、上記第1部分内の上記データの上記アクセスが、ページより小さい粒度のレベルで制御される、ことを含む。
例36において、例31から35の主題は、上記処理手段が更に、上記第2部分で実行されている命令が、上記第1部分に記憶されるデータにアクセスできないようにするためのものである、ことを含む。
例37において、例31から36の主題は、上記処理手段が更に、安全調停モード(SEAM)機能呼び出しに応答して、上記TEEを作成するためのものである、ことを含む。
例38において、例37の主題は、上記TEEの上記作成によって、上記記憶手段の第3部分が上記TEEに割り振られ、上記処理手段が更に、第2のSEAM機能呼び出しに応答して、上記TEEに上記記憶手段の上記第1部分を割り振ることと、第3のSEAM機能呼び出しに応答して、上記TEEに上記記憶手段の上記第2部分を割り振ることとを行うためのものである、ことを含む。
例39において、例38の主題は、上記第3部分で、ゲストオペレーティングシステムが実行される、ことを含む。
例40において、例39の主題は、上記ゲストオペレーティングシステムが、上記第1部分内の第1機能と、上記第2部分内の第2機能とを呼び出す、ことを含む。
例41は、命令を含む少なくとも1つの機械可読媒体である。上記命令は、処理回路により実行されると、上記処理回路に、例1から40のいずれかを実装する動作を実行させる。
例42は、例1から40のいずれかを実装する手段を含む装置である。
例43は、例1から40のいずれかを実装するシステムである。
例44は、例1から40のいずれかを実装する方法である。
図9は、コンピューティングデバイスのためのソフトウェアアーキテクチャ902の一例を示すブロック図900である。アーキテクチャ902は、例えば、本明細書で説明するように、様々なハードウェアアーキテクチャと併せて使用されてよい。図9は、ソフトウェアアーキテクチャの非限定的な例に過ぎず、本明細書で説明する機能性を促進するために、多くの他のアーキテクチャが実装されてよい。代表的なハードウェア層904が示されており、これは、例えば、上で参照したコンピューティングデバイスのいずれかを表すことができる。幾つかの例では、ハードウェア層904は、図9のコンピュータシステムのアーキテクチャに従って実装されてよい。
代表的なハードウェア層904は、関連付けられる実行可能な命令908を有する1つまたは複数の処理装置906を含む。実行可能な命令908は、本明細書で説明する方法、モジュール、サブシステム、およびコンポーネントなどの実装を含む、ソフトウェアアーキテクチャ902の実行可能な命令を表し、実行可能な命令908を同様に有するメモリおよび/または記憶モジュール910を含んでもよい。ハードウェア層904は、ソフトウェアアーキテクチャ902の一部として示される他のハードウェアなど、ハードウェア層904の任意の他のハードウェアを表す他のハードウェア912により示されるような他のハードウェアを含んでもよい。
図9の例示的なアーキテクチャでは、ソフトウェアアーキテクチャ902は、それぞれの層が特定の機能性を提供する層のスタックとして概念化されてよい。例えば、ソフトウェアアーキテクチャ902は、オペレーティングシステム914、ライブラリ916、フレームワーク/ミドルウェア918、アプリケーション920、およびプレゼンテーション層944などの層を含んでよい。動作上、これらの層内のアプリケーション920および/または他のコンポーネントは、ソフトウェアのスタックを介してアプリケーションプログラミングインタフェース(API)呼び出し924を呼び出してよく、API呼び出し924に応答してメッセージ926として示される応答および戻り値などにアクセスしてよい。示されている層は本質的に代表的なものであり、全てのソフトウェアアーキテクチャに全ての層があるとは限らない。例えば、幾つかのモバイルオペレーティングシステムまたは特殊目的オペレーティングシステムは、フレームワーク/ミドルウェア層918を提供しない場合があるが、他のものは係る層を提供する場合がある。他のソフトウェアアーキテクチャは、更なる層または異なる層を含んでよい。
オペレーティングシステム914は、ハードウェアリソースを管理し、共通サービスを提供してよい。オペレーティングシステム914は、例えば、カーネル928、サービス930、およびドライバ932を含んでよい。カーネル928は、ハードウェアと他のソフトウェア層との間の抽象化層として機能してよい。例えば、カーネル928は、メモリ管理、プロセッサ管理(例えば、スケジューリング)、コンポーネント管理、ネットワーキング、およびセキュリティ設定などを担ってよい。サービス930は、他のソフトウェア層に他の共通サービスを提供してよい。幾つかの例では、サービス930は割り込みサービスを含む。割り込みサービスは、割り込みの受信を検出してよく、それに応答して、アーキテクチャ902に、現在の処理を一時停止させ、割り込みがアクセスされたときに割り込みサービスルーチン(ISR)を実行させてよい。
ドライバ932は、基礎となるハードウェアの制御またはそれとのインタフェースを担ってよい。例えば、ドライバ932は、ハードウェア構成に応じて、ディスプレイドライバ、カメラドライバ、Bluetooth(登録商標)ドライバ、フラッシュメモリドライバ、シリアル通信ドライバ(例えば、ユニバーサルシリアルバス(USB)ドライバ、Wi-Fi(登録商標)ドライバ、NFCドライバ、オーディオドライバ、および電源管理ドライバなどを含んでよい。
ライブラリ916は、アプリケーション920並びに/または他のコンポーネントおよび/もしくは層により利用され得る共通インフラストラクチャを提供してよい。ライブラリ916は通常、他のソフトウェアモジュールが、基礎となるオペレーティングシステム914の機能性(例えば、カーネル928、サービス930、および/またはドライバ932)と直接インタフェースするよりも容易なやり方でタスクを実行できるようにする、機能性を提供する。ライブラリ916は、メモリ割り振り機能、ストリング操作機能、および数学機能などといった機能を提供し得るシステムライブラリ934(例えば、C標準ライブラリ)を含んでよい。更に、ライブラリ916は、メディアライブラリ(例えば、MPEG4、H.264、MP3、AAC、AMR、JPG、PNGなどの様々なメディアフォーマットの提示および操作をサポートするライブラリ)、グラフィクスライブラリ(例えば、ディスプレイ上のグラフィックコンテンツで二次元および三次元をレンダリングするために使用され得るOpenGLフレームワーク)、データベースライブラリ(例えば、様々なリレーショナルデータベース機能を提供し得るSQLite)、およびウェブライブラリ(例えば、ウェブブラウジングの機能性を提供し得るWebKit)などといったAPIライブラリ936を含んでよい。ライブラリ916は、アプリケーション920および他のソフトウェアコンポーネント/モジュールに多くの他のAPIを提供するために、多種多様な他のライブラリ938を含んでもよい。
フレームワーク/ミドルウェア918は、アプリケーション920および/または他のソフトウェアコンポーネント/モジュールにより利用され得るより高いレベルの共通インフラストラクチャを提供してよい。例えば、フレームワーク/ミドルウェア918は、様々なグラフィックユーザインタフェース(GUI)機能、高レベルのリソース管理、および高レベルのロケーションサービスなどを提供してよい。フレームワーク/ミドルウェア918は、アプリケーション920および/または他のソフトウェアコンポーネント/モジュールにより利用され得る幅広い他のAPIを提供してよく、そのうちの幾つかは、特定のオペレーティングシステムまたはプラットフォームに固有であってよい。
アプリケーション920は、内蔵アプリケーション940および/またはサードパーティアプリケーション942を含む。代表的な内蔵アプリケーション940の例には、以下に限定されるわけではないが、連絡先アプリケーション、ブラウザアプリケーション、ブックリーダアプリケーション、ロケーションアプリケーション、メディアアプリケーション、メッセージングアプリケーション、および/またはゲームアプリケーションが含まれてよい。サードパーティアプリケーション942は、内蔵アプリケーションおよび幅広い品揃えの他のアプリケーションのいずれかを含んでよい。特定の例では、サードパーティアプリケーション942(例えば、特定のプラットフォームのベンダ以外のエンティティによりAndroid(登録商標)またはiOS(登録商標)のソフトウェア開発キット(SDK)を使用して開発されるアプリケーション)は、iOS(登録商標)、Android(登録商標)、Windows(登録商標)Phone、または他のモバイルコンピューティングデバイスオペレーティングシステムなどのモバイルオペレーティングシステム上で実行されるモバイルソフトウェアであってよい。この例では、サードパーティアプリケーション942は、本明細書で説明する機能性を促進するために、オペレーティングシステム914などのモバイルオペレーティングシステムにより提供されるAPI呼び出し924を呼び出してよい。
アプリケーション920は、内蔵オペレーティングシステム機能(例えば、カーネル928、サービス930、および/またはドライバ932)、ライブラリ(例えば、システムライブラリ934、APIライブラリ936、および他のライブラリ938)、フレームワーク/ミドルウェア918を利用して、システムのユーザと相互作用するユーザインタフェースを作成してよい。代替的または追加的に、幾つかのシステムでは、ユーザとの相互作用がプレゼンテーション層944などのプレゼンテーション層を介して行われてよい。これらのシステムでは、アプリケーション/モジュール「ロジック」は、ユーザと相互作用するアプリケーション/モジュールの側面から分離され得る。
幾つかのソフトウェアアーキテクチャは、仮想マシンを利用する。図9の例では、これは仮想マシン948により示される。仮想マシンは、アプリケーション/モジュールがあたかもハードウェアコンピューティングデバイス上で実行されているかのように実行され得るソフトウェア環境を作成する。仮想マシンは、ホストオペレーティングシステム(オペレーティングシステム914)によりホストされ、通常は、常にではないが、仮想マシンモニタ946を有しており、仮想マシンモニタ946は、仮想マシンの動作、および、ホストオペレーティングシステム(すなわち、オペレーティングシステム914)とのインタフェースを管理する。ソフトウェアアーキテクチャは、オペレーティングシステム950、ライブラリ952、フレームワーク/ミドルウェア954、アプリケーション956、および/またはプレゼンテーション層958などの仮想マシン948内で実行される。仮想マシン948内で実行されるソフトウェアアーキテクチャのこれらの層は、前述した対応する層と同じであってもよいし、異なっていてもよい。
[モジュール、コンポーネント、およびロジック]
本明細書では、特定の実施形態が、ロジックまたは幾つかのコンポーネント、モジュールもしくはメカニズムを含むものとして説明されている。モジュールは、ソフトウェアモジュール(例えば、(1)非一時的な機械可読媒体上または(2)伝送信号内に具現化されるコード)またはハードウェア実装モジュールのどちらかを構成してよい。ハードウェア実装モジュールは、特定の動作を実行できる有形のユニットであり、特定の方式で構成または配置されてよい。例示的な実施形態では、1つまたは複数のコンピュータシステム(例えば、スタンドアロンコンピュータシステム、クライアントコンピュータシステム、またはサーバコンピュータシステム)、または、1つまたは複数のハードウェアプロセッサが、本明細書で説明するような特定の動作を実行するように動作するハードウェア実装モジュールとして、ソフトウェア(例えば、アプリケーションまたはアプリケーション部分)により構成されてよい。
様々な実施形態において、ハードウェア実装モジュールが機械的または電子的に実装されてよい。例えば、ハードウェア実装モジュールは、特定の動作を実行するように(例えば、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC)などの特殊目的プロセッサとして)永続的に構成される専用の回路またはロジックを含んでよい。ハードウェア実装モジュールは、特定の動作を実行するようにソフトウェアにより一時的に構成される(例えば、汎用プロセッサまたは別のプログラマブルプロセッサ内に包含されるような)プログラマブルなロジックまたは回路を含んでもよい。専用の永続的に構成される回路、または一時的に構成される(例えば、ソフトウェアにより構成される)回路にハードウェア実装モジュールを機械的に実装する決定は、コストおよび時間の考慮に左右され得ることが解るであろう。
従って、「ハードウェア実装モジュール」という用語は、特定の方式で動作するように、および/または、本明細書で説明する特定の動作を実行するように、物理的に構築されるか、永続的に構成される(例えば、ハードウェアに組み込まれる)か、または、一時的または一過的に構成される(例えば、プログラムされる)エンティティである有形のエンティティを包含するものと理解されたい。ハードウェア実装モジュールが一時的に構成される(例えば、プログラムされる)実施形態を考慮すると、ハードウェア実装モジュールの各々を任意のある時点で構成またはインスタンス化する必要はない。例えば、ソフトウェアを使用して構成される汎用プロセッサがハードウェア実装モジュールに含まれる場合は、汎用プロセッサは、それぞれの異なるハードウェア実装モジュールとして異なる時間に構成されてよい。従って、ソフトウェアは、例えば、特定のハードウェア実装モジュールをある時点で構成し、かつ、異なるハードウェア実装モジュールを異なる時点で構成するように、プロセッサを構成してよい。
ハードウェア実装モジュールは、他のハードウェア実装モジュールに情報を提供し、他のハードウェア実装モジュールから情報を受信することができる。従って、説明したハードウェア実装モジュールは、通信可能に連結されるものと見なされてよい。係るハードウェア実装モジュールのうちの複数が同時に存在する場合は、信号伝送を通じて(例えば、ハードウェア実装モジュールを接続する適切な回路およびバスを介して)通信が実現されてよい。複数のハードウェア実装モジュールが異なる時間に構成またはインスタンス化される実施形態では、例えば、複数のハードウェア実装モジュールがアクセスできるメモリ構造における情報の記憶および検索を通じて、係るハードウェア実装モジュール間の通信が実現されてよい。例えば、1つのハードウェア実装モジュールが動作を実行し、その動作の出力を、それが通信可能に連結されるメモリデバイスに記憶してよい。次に、更なるハードウェア実装モジュールが後になってメモリデバイスにアクセスして、記憶された出力を検索および処理してよい。ハードウェア実装モジュールは、入力デバイスまたは出力デバイスとの通信を開始してもよく、リソース(例えば、情報の集合)上で動作することができる。
本明細書で説明する例示的な方法の様々な動作は、関連する動作を実行するように(例えば、ソフトウェアにより)一時的に構成されるか、または永続的に構成される1つまたは複数のプロセッサにより、少なくとも部分的に実行されてよい。係るプロセッサは、一時的に構成されようと永続的に構成されようと、1つまたは複数の動作または機能を実行するように動作するプロセッサ実装モジュールを構成してよい。本明細書で言及するモジュールは、幾つかの例示的な実施形態において、プロセッサ実装モジュールを含んでよい。
同様に、本明細書で説明する方法は、少なくとも部分的にプロセッサで実装されてよい。例えば、方法の動作のうちの少なくとも幾つかが、1つまたは複数のプロセッサまたはプロセッサ実装モジュールにより実行されてよい。これらの動作のうちの幾つかの実行は、単一のマシン内に存在するだけでなく、幾つかのマシンに展開される、1つまたは複数のプロセッサ間に分散されてよい。幾つかの例示的な実施形態では、1つまたは複数のプロセッサが単一のロケーション(例えば、住居環境、オフィス環境、またはサーバファーム内)に設置されてよいが、他の実施形態では、複数のプロセッサが幾つかのロケーションに分散されてよい。
1つまたは複数のプロセッサは、「クラウドコンピューティング」環境で、または「ソフトウェア・アズ・ア・サービス」(SaaS)として、関連する動作の実行をサポートするように動作してもよい。例えば、これらの動作のうちの少なくとも幾つかが(プロセッサを含むマシンの例として)コンピュータ群により実行されてよく、これらの動作は、ネットワーク(例えば、インターネット)および1つまたは複数の適切なインタフェース(例えば、API)を介してアクセス可能である。
[電子装置およびシステム]
例示的な実施形態は、デジタル電子回路に実装されてもよいし、コンピュータハードウェア、ファームウェア、もしくはソフトウェア、またはそれらの組み合わせに実装されてもよい。例示的な実施形態は、データ処理装置(例えば、プログラマブルプロセッサ、コンピュータ、または複数のコンピュータ)による実行のため、または、データ処理装置の動作を制御するために、情報担体、例えば、機械可読媒体に有形に具現化されるコンピュータプログラムなどのコンピュータプログラム製品を使用して実装されてよい。
コンピュータプログラムは、コンパイル言語または解釈言語を含む任意の形態のプログラミング言語で書き込まれてよく、スタンドアロンプログラムとして、または、モジュール、サブルーチン、もしくはコンピューティング環境での使用に適した他のユニットとして、任意の形態で展開されてよい。コンピュータプログラムは、1つのコンピュータ上、または1つのサイトにおける複数のコンピュータ上で実行されるように展開されてもよいし、複数のサイトに分散され、かつ、通信ネットワークにより相互接続されてもよい。
例示的な実施形態では、入力データ上での動作と出力の生成とを行うことにより機能を実行するためにコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサにより動作が実行されてよい。特殊目的ロジック回路、例えば、FPGAまたはASICにより、方法の動作が実行されてもよく、特殊目的ロジック回路、例えば、FPGAまたはASICとして、例示的な実施形態の装置が実装されてよい。
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは概して、互いに遠く離れており、通常は通信ネットワークを介して相互作用する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、かつ、互いにクライアントとサーバとの関係を有する、コンピュータプログラムのおかげで生まれる。プログラマブルコンピューティングシステムを展開する実施形態では、ハードウェアおよびソフトウェアアーキテクチャの両方が考慮に値することが解るであろう。具体的には、特定の機能性を、永続的に構成されるハードウェア(例えば、ASIC)に実装するか、一時的に構成されるハードウェア(例えば、ソフトウェアとプログラマブルプロセッサとの組み合わせ)に実装するか、または永続的に構成されるハードウェアと一時的に構成されるハードウェアとの組み合わせに実装するかの選択は、設計上の選択であってよいことが解るであろう。以下には、様々な例示的な実施形態における展開され得るハードウェア(例えば、マシン)およびソフトウェアアーキテクチャについて記載する。
[例示的なマシンアーキテクチャおよび機械可読媒体]
図10は、本明細書で説明する方法論のいずれか1つまたは複数をマシンに実行させるための命令1024が実行され得るコンピュータシステム1000の例示的な形態のマシンのブロック図である。代替的な実施形態では、マシンはスタンドアロンデバイスとして動作するか、または他のマシンに接続(例えば、ネットワーク接続)されてよい。ネットワーク接続された展開では、マシンは、サーバクライアントネットワーク環境においてサーバまたはクライアントマシンとして動作してもよいし、ピアツーピア(または分散)ネットワーク環境においてピアマシンとして動作してもよい。マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、携帯電話、ウェブ機器、ネットワークルータ、スイッチ、もしくはブリッジ、または任意のマシンにより実行される動作を指定する命令(シーケンシャルまたは他の状態)を実行できるマシンであってよい。更に、単一のマシンのみが図示されているが、「マシン」という用語はまた、本明細書で説明する方法論のいずれか1つまたは複数を実行するための命令の1つの組(または複数の組)を個々にまたは共同で実行するマシンの任意の集合を含んでいると解釈されるものとする。
例示的なコンピュータシステム1000は、プロセッサ1002(例えば、中央処理装置(CPU)、グラフィックス処理装置(GPU)、またはその両方)、メインメモリ1004、およびスタティックメモリ1006を含み、これらはバス808を介して互いに通信する。コンピュータシステム1000は、ビデオディスプレイユニット1010(例えば、液晶ディスプレイ(LCD)または陰極線管(CRT))を更に含んでよい。コンピュータシステム1000は、英数字入力デバイス1012(例えば、キーボードまたはタッチセンサ式ディスプレイ画面)、ユーザインタフェース(UI)ナビゲーション(またはカーソル制御)デバイス1014(例えば、マウス)、記憶ユニット1016、信号生成デバイス1018(例えば、スピーカ)、およびネットワークインタフェースデバイス1020も含む。
[機械可読媒体]
記憶ユニット1016は、本明細書で説明する方法論または機能のいずれか1つまたは複数を具現化するか、またはそれにより利用される、データ構造および命令1024(例えば、ソフトウェア)の1つまたは複数の組が記憶される機械可読媒体1022を含む。命令1024は、メインメモリ1004内、および/またはコンピュータシステム1000による実行中のプロセッサ1002内に、完全にまたは少なくとも部分的に存在してもよく、メインメモリ1004およびプロセッサ1002も機械可読媒体1022を構成する。
ある例示的な実施形態では、機械可読媒体1022が単一の媒体であると示されているが、「機械可読媒体」という用語は、1つまたは複数の命令1024またはデータ構造を記憶する単一の媒体または複数の媒体(例えば、集中データベースもしくは分散データベース、並びに/または、関連付けられるキャッシュおよびサーバ)を含んでよい。「機械可読媒体」という用語はまた、マシンで実行するための命令1024を記憶、エンコード、または運搬でき、かつ、本開示の方法論のいずれか1つまたは複数をマシンに実行させる、または、係る命令1024により利用されるか、または係る命令1024に関連付けられるデータ構造を記憶、エンコード、または運搬できる、任意の有形媒体を含んでいると解釈されるものとする。従って、「機械可読媒体」という用語は、以下に限定されるわけではないが、ソリッドステートメモリ、光媒体、および磁気媒体を含んでいると解釈されるものとする。機械可読媒体1022の具体的な例は、半導体メモリデバイス(例えば、消去可能プログラマブル読み取り専用メモリ(EPROM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM))およびフラッシュメモリデバイスを例として含む不揮発性メモリと、内部ハードディスクおよびリムーバブルディスクなどの磁気ディスクと、光磁気ディスクと、コンパクトディスク読み取り専用メモリ(CD-ROM)およびデジタル多用途ディスク読み取り専用メモリ(DVD-ROM)のディスクとを含む。機械可読媒体は伝送媒体ではない。
[伝送媒体]
命令1024は更に、伝送媒体を使用して通信ネットワーク1026経由で送信または受信されてよい。命令1024は、ネットワークインタフェースデバイス1020と、幾つかの周知の転送プロトコル(例えば、ハイパーテキストトランスポートプロトコル(HTTP))のいずれか1つとを使用して送信されてよい。通信ネットワークの例には、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、携帯電話網、基本電話(POTS)ネットワーク、および無線データネットワーク(例えば、Wi-FiおよびWiMaxネットワーク)が含まれる。「伝送媒体」という用語は、マシンで実行するための命令1024を記憶、エンコード、または運搬でき、かつ、係るソフトウェアの通信を容易にするデジタル通信信号もしくはアナログ通信信号または他の無形媒体を含む、任意の無形媒体を含んでいると解釈されるものとする。
本明細書では特定の例示的な実施形態について説明しているが、本開示のより広い趣旨および範囲から逸脱することなく、これらの実施形態に対して様々な修正および変更が行われ得ることが明白であろう。従って、本明細書および図面は、制限的な意味ではなく例示的な意味で見なされるべきである。本明細書の一部を形成する添付図面は、限定としてではなく例示として、主題が実践され得る特定の実施形態を示している。示されている実施形態は、当業者が本明細書に開示する教示を実践できる程度に十分に詳細に説明されている。他の実施形態がそこから利用および導出されてよく、その結果、本開示の範囲から逸脱することなく、構造的かつ論理的な置換および変更が行われてよい。従って、この詳細な説明は、限定的な意味で解釈されるべきではなく、様々な実施形態の範囲は、添付の特許請求の範囲が権利を与えられる同等物の全範囲と共に、係る特許請求の範囲によってのみ定義される。
本明細書では本発明の主題の係る実施形態が単に便宜上「発明」という用語で個々におよび/または集合的に呼ばれることがあり、実際には1つより多くのものが開示される場合に本願の範囲を自発的に任意の単一の発明または発明概念に限定することを意図しているわけではない。故に、本明細書では特定の実施形態について図示および説明してきたが、同じ目的を実現するために算出される任意の配置が、示されている特定の実施形態の代わりになり得ることを理解されたい。本開示は、様々な実施形態のありとあらゆる適応または変形を網羅することを意図している。上述した説明を検討すると、上述した実施形態と、本明細書で特に説明していない他の実施形態との組み合わせが当業者にとって明らかになろう。
マシンメモリ(例えば、コンピュータメモリ)内にビットまたはバイナリデジタル信号として記憶されるデータに対する動作のアルゴリズムまたは象徴的表現の観点から、本明細書で説明する主題の幾つかの部分が提示されてよい。係るアルゴリズムまたは象徴的表現は、データ処理技術の当業者が自らの研究の実体を他の当業者へ伝えるために使用される技術の例である。本明細書で使用する場合、「アルゴリズム」は、所望の結果をもたらす動作または同様の処理の首尾一貫したシーケンスである。この文脈におけるアルゴリズムおよび動作は、物理量の物理的処置を伴う。必ずしもそうとは限らないが、通常、係る量は、マシンで記憶、アクセス、転送、結合、比較すること、または他の方法で操作することができる、電気信号、磁気信号、または光信号の形態を取ってよい。主に一般的使用の理由から、係る信号への言及には、「データ」、「コンテンツ」、「ビット」、「値」、「要素」、「記号」、「文字」、「期間」、「数」、または「数字」などといった単語を使用するのが便利な場合がある。しかしながら、これらの単語は便利なラベルに過ぎず、適切な物理量に関連付けられるべきである。
特に明記しない限り、「処理」、「計算」、「算出」、「決定」、「提示」、または「表示」などといった単語を使用する本明細書での説明は、1つまたは複数のメモリ(例えば、揮発性メモリ、不揮発性メモリ、またはそれらの任意の適切な組み合わせ)、レジスタ、または、情報を受信、記憶、送信、または表示する他のマシンコンポーネント内の物理(例えば、電子、磁気、または光)量として表されるデータを操作または変換するマシン(例えば、コンピュータ)の動作またはプロセスに言及することがある。更に、特に明記しない限り、本明細書では、特許文献において見られるような「1つの(aおよびan)」という用語を、1つまたは1つより多くの例を含めるために使用している。最後に、本明細書で使用する場合、「または」という接続詞は、特に明記しない限り、非排他的な「または」を指す。
[他の考えられる項目]
(項目1)
信頼できる実行環境(TEE)でメモリを隔離するシステムであって、上記システムは、
プロセッサと、
命令を記憶するメモリと
を備え、
上記命令は、上記プロセッサにより実行されると、上記プロセッサに、
第1部分と第2部分とを含む、メモリの複数の部分をTEEに割り振る動作と、
上記第1部分で実行されている命令が上記第2部分に記憶されるデータにアクセスできないようにする動作と
を含む動作を実行させる、
システム
(項目2)
上記動作は、
安全調停モード(SEAM)機能呼び出しに応答して、上記第1部分の第1拡張ページテーブル(EPT)と上記第2部分の第2EPTとの間の切り替えを行う動作
を更に含む、項目1に記載のシステム。
(項目3)
上記動作は、
第1暗号化キーを使用して上記第1部分を暗号化する動作と、
第2暗号化キーを使用して上記第2部分を暗号化する動作と
を更に含む、項目1に記載のシステム。
(項目4)
上記複数の部分は、第3部分を含み、
上記第3部分で実行されている命令が、上記第1部分に記憶されるデータにアクセスすることを許可される、
項目1に記載のシステム。
(項目5)
上記第1部分内の上記データの上記アクセスは、ページより小さい粒度のレベルで制御される、項目4に記載のシステム。
(項目6)
上記命令は、上記プロセッサに、
上記第2部分で実行されている命令が、上記第1部分に記憶されるデータにアクセスできないようにする動作
を更に実行させる、項目1に記載のシステム。
(項目7)
上記動作は、
安全調停モード(SEAM)機能呼び出しに応答して、上記TEEを作成する動作
を更に含む、項目1に記載のシステム。
(項目8)
上記TEEの上記作成によって、上記メモリの第3部分が上記TEEに割り振られ、
上記動作は、
第2のSEAM機能呼び出しに応答して、上記TEEに上記メモリの上記第1部分を割り振る動作と、
第3のSEAM機能呼び出しに応答して、上記TEEに上記メモリの上記第2部分を割り振る動作と
を更に含む、
項目7に記載のシステム。
(項目9)
上記第3部分では、ゲストオペレーティングシステムが実行される、項目8に記載のシステム。
(項目10)
上記ゲストオペレーティングシステムは、上記第1部分内の第1機能と、上記第2部分内の第2機能とを呼び出す、項目9に記載のシステム。
(項目11)
信頼できる実行環境(TEE)でメモリを隔離する方法であって、
プロセッサが、第1部分と第2部分とを含む、メモリの複数の部分をTEEに割り振る段階と、
上記プロセッサが、上記第1部分で実行されている命令が、上記第2部分に記憶されるデータにアクセスできないようにする段階と
を備える方法。
(項目12)
安全調停モード(SEAM)機能呼び出しに応答して、上記第1部分の第1拡張ページテーブル(EPT)と上記第2部分の第2EPTとの間の切り替えを行う段階
を更に備える、項目11に記載の方法。
(項目13)
第1暗号化キーを使用して上記第1部分を暗号化する段階と、
第2暗号化キーを使用して上記第2部分を暗号化する段階と
を更に備える、項目11に記載の方法。
(項目14)
上記複数の部分は、第3部分を含み、
上記第3部分で実行されている命令が、上記第1部分に記憶されるデータにアクセスすることを許可される、
項目11に記載の方法。
(項目15)
上記第1部分内の上記データの上記アクセスは、ページより小さい粒度のレベルで制御される、項目14に記載の方法。
(項目16)
命令を備える非一時的コンピュータ可読媒体であって、上記命令は、プロセッサに、
第1部分と第2部分とを含む、メモリの複数の部分をTEEに割り振る動作と、
上記第1部分で実行されている命令が、上記第2部分に記憶されるデータにアクセスできないようにする動作と
を含む動作を実行することにより、信頼できる実行環境(TEE)でメモリを隔離させるためのものである、非一時的コンピュータ可読媒体。
(項目17)
上記動作は、
安全調停モード(SEAM)機能呼び出しに応答して、上記第1部分の第1拡張ページテーブル(EPT)と上記第2部分の第2EPTとの間の切り替えを行う動作
を更に含む、項目16に記載の非一時的コンピュータ可読媒体。
(項目18)
上記動作は、
第1暗号化キーを使用して上記第1部分を暗号化する動作と、
第2暗号化キーを使用して上記第2部分を暗号化する動作と
を更に含む、項目16に記載の非一時的コンピュータ可読媒体。
(項目19)
上記複数の部分は、第3部分を含み、
上記第3部分で実行されている命令が、上記第1部分に記憶されるデータにアクセスすることを許可される、
項目16に記載の非一時的コンピュータ可読媒体。
(項目20)
上記第1部分内の上記データの上記アクセスは、ページより小さい粒度のレベルで制御される、項目19に記載の非一時的コンピュータ可読媒体。
(項目21)
上記動作は、
上記第2部分で実行されている命令が、上記第1部分に記憶されるデータにアクセスできないようにする動作
を更に含む、項目16に記載の非一時的コンピュータ可読媒体。
(項目22)
上記動作は、
安全調停モード(SEAM)機能呼び出しに応答して、上記TEEを作成する動作
を更に含む、項目16に記載の非一時的コンピュータ可読媒体。
(項目23)
上記TEEの上記作成によって、上記メモリの第3部分が上記TEEに割り振られ、
上記動作は、
第2のSEAM機能呼び出しに応答して、上記TEEに上記メモリの上記第1部分を割り振る動作と、
第3のSEAM機能呼び出しに応答して、上記TEEに上記メモリの上記第2部分を割り振る動作と
を更に含む、
項目22に記載の非一時的コンピュータ可読媒体。
(項目24)
上記第3部分では、ゲストオペレーティングシステムが実行される、項目23に記載の非一時的コンピュータ可読媒体。
(項目25)
上記ゲストオペレーティングシステムは、上記第1部分内の第1機能と、上記第2部分内の第2機能とを呼び出す、項目24に記載の非一時的コンピュータ可読媒体。

Claims (26)

  1. 信頼できる実行環境(TEE)でメモリを隔離するシステムであって、前記システムは、
    プロセッサと、
    命令を記憶するメモリと
    を備え、
    前記命令は、前記プロセッサにより実行されると、前記プロセッサに、
    第1部分と第2部分とを含む、メモリの複数の部分をTEEに割り振る動作と、
    前記第1部分で実行されている命令が前記第2部分に記憶されるデータにアクセスできないようにする動作と
    を含む動作を実行させる、
    システム。
  2. 前記動作は、
    安全調停モード(SEAM)機能呼び出しに応答して、前記第1部分の第1拡張ページテーブル(EPT)と前記第2部分の第2EPTとの間の切り替えを行う動作
    を更に含む、請求項1に記載のシステム。
  3. 前記動作は、
    第1暗号化キーを使用して前記第1部分を暗号化する動作と、
    第2暗号化キーを使用して前記第2部分を暗号化する動作と
    を更に含む、請求項1または2に記載のシステム。
  4. 前記複数の部分は、第3部分を含み、
    前記第3部分で実行されている命令が、前記第1部分に記憶されるデータにアクセスすることを許可される、
    請求項1から3のいずれか一項に記載のシステム。
  5. 前記第1部分内の前記データの前記アクセスは、ページより小さい粒度のレベルで制御される、請求項4に記載のシステム。
  6. 前記命令は、前記プロセッサに、
    前記第2部分で実行されている命令が、前記第1部分に記憶されるデータにアクセスできないようにする動作
    を更に実行させる、請求項1から5のいずれか一項に記載のシステム。
  7. 前記動作は、
    安全調停モード(SEAM)機能呼び出しに応答して、前記TEEを作成する動作
    を更に含む、請求項1から6のいずれか一項に記載のシステム。
  8. 前記TEEの前記作成によって、前記メモリの第3部分が前記TEEに割り振られ、
    前記動作は、
    第2のSEAM機能呼び出しに応答して、前記TEEに前記メモリの前記第1部分を割り振る動作と、
    第3のSEAM機能呼び出しに応答して、前記TEEに前記メモリの前記第2部分を割り振る動作と
    を更に含む、
    請求項7に記載のシステム。
  9. 前記第3部分では、ゲストオペレーティングシステムが実行される、請求項8に記載のシステム。
  10. 前記ゲストオペレーティングシステムは、前記第1部分内の第1機能と、前記第2部分内の第2機能とを呼び出す、請求項9に記載のシステム。
  11. 信頼できる実行環境(TEE)でメモリを隔離する方法であって、
    プロセッサが、第1部分と第2部分とを含む、メモリの複数の部分をTEEに割り振る段階と、
    前記プロセッサが、前記第1部分で実行されている命令が、前記第2部分に記憶されるデータにアクセスできないようにする段階と
    を備える方法。
  12. 安全調停モード(SEAM)機能呼び出しに応答して、前記第1部分の第1拡張ページテーブル(EPT)と前記第2部分の第2EPTとの間の切り替えを行う段階
    を更に備える、請求項11に記載の方法。
  13. 第1暗号化キーを使用して前記第1部分を暗号化する段階と、
    第2暗号化キーを使用して前記第2部分を暗号化する段階と
    を更に備える、請求項11または12に記載の方法。
  14. 前記複数の部分は、第3部分を含み、
    前記第3部分で実行されている命令が、前記第1部分に記憶されるデータにアクセスすることを許可される、
    請求項11から13のいずれか一項に記載の方法。
  15. 前記第1部分内の前記データの前記アクセスは、ページより小さい粒度のレベルで制御される、請求項14に記載の方法。
  16. 前記第2部分で実行されている命令が、前記第1部分に記憶されるデータにアクセスできないようにする段階
    を更に備える、請求項11から15のいずれか一項に記載の方法。
  17. 安全調停モード(SEAM)機能呼び出しに応答して、前記TEEを作成する段階
    を更に備える、請求項11から16のいずれか一項に記載の方法。
  18. 前記TEEの前記作成によって、前記メモリの第3部分が前記TEEに割り振られ、
    前記方法は、
    前記プロセッサが、第2のSEAM機能呼び出しに応答して、前記TEEに前記メモリの前記第1部分を割り振る段階と、
    前記プロセッサが、第3のSEAM機能呼び出しに応答して、前記TEEに前記メモリの前記第2部分を割り振る段階と
    を更に備える、
    請求項17に記載の方法。
  19. 前記第3部分では、ゲストオペレーティングシステムが実行される、請求項18に記載の方法。
  20. 前記ゲストオペレーティングシステムは、前記第1部分内の第1機能と、前記第2部分内の第2機能とを呼び出す、請求項19に記載の方法。
  21. プロセッサに、信頼できる実行環境(TEE)でメモリを隔離する手順を実行させるためのコンピュータプログラムであって、前記手順は、
    第1部分と第2部分とを含む、メモリの複数の部分をTEEに割り振る手順と、
    前記第1部分で実行されている命令が、前記第2部分に記憶されるデータにアクセスすることを防ぐ手順と
    を含む、コンピュータプログラム。
  22. 前記手順は、
    安全調停モード(SEAM)機能呼び出しに応答して、前記第1部分の第1拡張ページテーブル(EPT)と前記第2部分の第2EPTとの間の切り替えを行う手順
    を更に含む、請求項21に記載のコンピュータプログラム。
  23. 前記手順は、
    第1暗号化キーを使用して前記第1部分を暗号化する手順と、
    第2暗号化キーを使用して前記第2部分を暗号化する手順と
    を更に含む、請求項21に記載のコンピュータプログラム。
  24. 信頼できる実行環境(TEE)でメモリを隔離するシステムであって、前記システムは、
    記憶手段と、
    処理手段と
    を備え、前記処理手段は、
    前記TEEに前記記憶手段の一部を割り振り、かつ、前記割り振られた一部の外部に記憶される命令で前記割り振られた一部へのアクセスを防止することにより、TEEを作成することと、
    前記記憶手段の前記一部を、第1部分と第2部分とを含む複数の部分に分割することと、
    前記第1部分で実行されている命令が、前記第2部分に記憶されるデータにアクセスすることを防ぐことと
    を行うためのものである、
    システム。
  25. 前記処理手段は更に、
    安全調停モード(SEAM)機能呼び出しに応答して、前記第1部分の第1拡張ページテーブル(EPT)と、前記第2部分の第2EPTとの間の切り替えを行う
    ためのものである、請求項24に記載のシステム。
  26. 請求項21から23のいずれか一項に記載のコンピュータプログラムを格納した非一時的コンピュータ可読媒体。
JP2021154710A 2020-12-23 2021-09-22 信頼できる実行環境におけるメモリの隔離 Pending JP2022100217A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/131,751 2020-12-23
US17/131,751 US20210109870A1 (en) 2020-12-23 2020-12-23 Isolating memory within trusted execution environments

Publications (1)

Publication Number Publication Date
JP2022100217A true JP2022100217A (ja) 2022-07-05

Family

ID=75383740

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021154710A Pending JP2022100217A (ja) 2020-12-23 2021-09-22 信頼できる実行環境におけるメモリの隔離

Country Status (6)

Country Link
US (1) US20210109870A1 (ja)
EP (1) EP4020236A1 (ja)
JP (1) JP2022100217A (ja)
KR (1) KR20220091344A (ja)
CN (1) CN114661640A (ja)
TW (1) TW202227967A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884952B2 (en) * 2016-09-30 2021-01-05 Intel Corporation Enforcing memory operand types using protection keys
WO2023184291A1 (en) * 2022-03-31 2023-10-05 Intel Corporation Techniques to implement mutual authentication for confidential computing
CN114996719B (zh) * 2022-07-28 2022-11-04 杭州锘崴信息科技有限公司 可信处理单元的隐私数据及金融隐私数据的安全分析方法
US11941262B1 (en) * 2023-10-31 2024-03-26 Massood Kamalpour Systems and methods for digital data management including creation of storage location with storage access ID

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10515023B2 (en) * 2016-02-29 2019-12-24 Intel Corporation System for address mapping and translation protection
US10528721B2 (en) * 2016-10-20 2020-01-07 Intel Corporation Trusted packet processing for multi-domain separatization and security
US10706143B2 (en) * 2017-05-19 2020-07-07 Intel Corporation Techniques for secure-chip memory for trusted execution environments
US10860709B2 (en) * 2018-06-29 2020-12-08 Intel Corporation Encoded inline capabilities
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
US11829517B2 (en) * 2018-12-20 2023-11-28 Intel Corporation Method and apparatus for trust domain creation and destruction
US11669335B2 (en) * 2019-03-28 2023-06-06 Intel Corporation Secure arbitration mode to build and operate within trust domain extensions
US10878134B2 (en) * 2019-03-29 2020-12-29 Intel Corporation Technologies for controlling memory access transactions received from one or more I/O devices

Also Published As

Publication number Publication date
KR20220091344A (ko) 2022-06-30
US20210109870A1 (en) 2021-04-15
TW202227967A (zh) 2022-07-16
CN114661640A (zh) 2022-06-24
EP4020236A1 (en) 2022-06-29

Similar Documents

Publication Publication Date Title
US11783081B2 (en) Secure public cloud
Priebe et al. SGX-LKL: Securing the host OS interface for trusted execution
US9989043B2 (en) System and method for processor-based security
ES2785350T3 (es) Evaluación de procesos para la detección de programas malignos en máquinas virtuales
JP5819535B2 (ja) ハイパーバイザ環境でカーネル・ルートキットから保護するシステムおよび方法
US9628279B2 (en) Protecting application secrets from operating system attacks
JP2022100217A (ja) 信頼できる実行環境におけるメモリの隔離
US9678687B2 (en) User mode heap swapping
US10387686B2 (en) Hardware based isolation for secure execution of virtual machines
US8495750B2 (en) Filesystem management and security system
US20190034628A1 (en) Secure memory implementation for secure execution of virtual machines
US10841291B2 (en) Method for block authentication using embedded virtual machines
EP3178032B1 (en) Embedding secret data in code
US20190042478A1 (en) Computer System and Method for Executing One or More Software Applications, Host Computer Device and Method for a Host Computer Device, Memory Device and Method for a Memory Device and Non-Transitory Computer Readable Medium
Gu et al. Enclavisor: A hardware-software co-design for enclaves on untrusted cloud
JP2022522664A (ja) ページ変更検出によるセキュアなページング
US20230018412A1 (en) Reverse shadow page tables for nested virtual machines
JP2023015177A (ja) ハードウェアの信頼できる実行環境の待ち時間の低減
US20240095363A1 (en) Method, device, and electronic apparatus for securely passing data
EP4343593A1 (en) Method, device, and electronic apparatus for securely passing data
Ruan et al. Intel’s Embedded Solutions: from Management to Security
Chang Integrity Protection On the Linux Based Android Platform

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240917