JP2022099241A - ハードウェアの信頼できる実行環境の待ち時間の低減 - Google Patents
ハードウェアの信頼できる実行環境の待ち時間の低減 Download PDFInfo
- Publication number
- JP2022099241A JP2022099241A JP2021167009A JP2021167009A JP2022099241A JP 2022099241 A JP2022099241 A JP 2022099241A JP 2021167009 A JP2021167009 A JP 2021167009A JP 2021167009 A JP2021167009 A JP 2021167009A JP 2022099241 A JP2022099241 A JP 2022099241A
- Authority
- JP
- Japan
- Prior art keywords
- tee
- processor
- request
- pool
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- 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/78—Protecting 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/79—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- 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/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2149—Restricted operating environment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Automation & Control Theory (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
【課題】ハードウェアの信頼できる実行環境(TEE)の待ち時間を低減するためのシステム及び方法を提供する。【解決手段】複数のァンクション・アズ・ア・サービス(FaaS)サーバが、ネットワークを介して複数のクライアントデバイスに機能を提供するネットワーク環境において、、システムのフFaaSサーバは、エンクレーブのプールを事前初期化する。各エンクレーブを事前初期化する段階は、エンクレーブにヒープメモリを割り振る段階を含む710。次に、エンクレーブの要求を受信する720。その要求を受信後、事前初期化されたエンクレーブのプールから、要求されたエンクレーブを選択する730。そして、要求に応答して、選択されたエンクレーブへのアクセスを提供する740。【選択図】図7
Description
本明細書で開示する主題は概して、ハードウェアの信頼できる実行環境(Trusted Execution Environment:TEE)に関する。具体的には、本開示は、ハードウェアのTEEの待ち時間を低減するためのシステムおよび方法に対処する。
ハードウェア特権レベルは、デバイス上で実行されるアプリケーションによるメモリアクセスを限定するためにプロセッサにより使用される場合がある。オペレーティングシステムは、より高い特権レベルで実行され、デバイスの全てのメモリにアクセスすることができ、他のアプリケーションのメモリ範囲を定義することができる。より低い特権レベルを実行しているアプリケーションは、オペレーティングシステムにより定義される範囲内でのメモリへのアクセスに制限されており、他のアプリケーションまたはオペレーティングシステムのメモリにアクセスすることができない。しかしながら、アプリケーションには、悪意あるオペレーティングシステムまたは危険にさらされたオペレーティングシステムからの保護がない。
TEEは、TEE内にロードされるコードおよびデータが、TEEの外部で実行されるコードによるアクセスから保護されることを保証する、プロセッサ保護により有効となる。故に、TEEは、オペレーティングシステムを含む、悪意あるソフトウェアからのTEEに含まれるデータおよびコードのアクセスをハードウェアレベルで防止する、隔離された実行環境を提供する。
限定ではなく例として、添付図面の図に幾つかの実施形態を示す。
例示的な方法およびシステムは、TEEを提供する際の待ち時間を低減するように方向付けられる。最も一般的な意味では、TEEは、その信頼がどのように取得されるかに関係なく、任意の信頼できる実行環境である。しかしながら、本明細書で使用する場合、TEEは、TEEの外部のプロセスが高い特権レベルで実行されている場合であっても、それらのプロセスによるアクセスから保護されるメモリの部分の内部でコードを実行することにより提供される。例示的なTEEには、Intel(登録商標)Software Guard Extensions(SGX)により作成されるエンクレーブと、Intel(登録商標)Trust Domain Extensions(TDX)により作成される信頼ドメインとが含まれる。
TEEは、TEEの外部にある全てのソフトウェアから機密情報を保護することにより機密情報の安全な処理ができるようにするために使用されてよい。TEEはモジュラプログラミングに使用されてもよく、各モジュールは、他のモジュールに起因する脆弱性にさらされることなく独自の機能性に必要な全てのものを含む。例えば、1つのTEEに対して成功したコードインジェクション攻撃が、別のTEEのコードに影響を及ぼすことはできない。
トータルメモリ暗号化(Total Memory Encryption:TME)は、プロセッサをバイパスすることにより、メモリ内のデータがアクセスされないように保護する。システムは、立ち上げ時にプロセッサ内で暗号化キーを生成し、プロセッサの外部にキーを記憶しない。TME暗号化キーは、再立ち上げをはさんで持続せず、かつ、プロセッサの外部に記憶されないことから、短期キーである。プロセッサによりメモリに書き込まれる全てのデータは、暗号化キーを使用して暗号化され、メモリから読み戻されるときに復号される。故に、プロセッサを介さずにメモリから直接データを読み取ろうとするハードウェアベースの攻撃は失敗する。
マルチキーTME(MKTME)は、複数のキーを使用するためにTMEを拡張する。個々のメモリページは、TMEの短期キーを使用するか、またはソフトウェアが提供するキーを使用して、暗号化されてよい。これによって、ソフトウェアベースの攻撃に関してTMEよりも高いセキュリティが提供され得る。なぜなら、攻撃者は、攻撃ソフトウェアがアクセスした任意のメモリをプロセッサに自動的に復号させるのではなく、対象となるソフトウェアにより使用されている特定のキーを識別する必要があるからである。
TEEの初期化には、TEEの実行が開始され得る前に複数のステップが必要であり、TEEを繰り返し作成および破壊するアプリケーションで待ち時間が生じる。ワークロード固有の初期化に加えて、エンクレーブへのメモリの追加など、ワークロードに依存しない初期化が実行される。ファンクション・アズ・ア・サービス(function-as-a-service:FaaS)環境では、TEEの大部分がワークロードに依存しておらず、ひいては、ワークロードを受信する前に実行され得る。
FaaSプラットフォームは、アプリケーションロジックを実行するがデータを記憶しないクラウドコンピューティングサービスを提供する。プラットフォーム・アズ・ア・サービス(platform-as-a-service:PaaS)ホスティングプロバイダとは対照的に、FaaSプラットフォームには、絶えず実行されているサーバプロセスがない。その結果、FaaSプラットフォームに対する初期の要求は、PaaSホストに対する同等の要求よりも処理に長い時間を要する場合があるが、アイドル時間の低減およびスケーラビリティの向上という利点がある。本明細書で説明するように、初期の要求を処理する待ち時間を低減することで、FaaSソリューションの魅力が向上する。
特定のクラスのワークロードについては、エンクレーブの初期化中に実行される特定のステップが同一である。例えば、クラス内の各エンクレーブはヒープメモリを使用してよい。故に、エンクレーブが要求される前に、エンクレーブの初期化シーケンスの共通部分(例えば、ヒープメモリの追加)が実行されてよい。クラス内のワークロードに対してエンクレーブが要求され、かつ、その特定の目的のためにエンクレーブを特殊化する部分が分かっている場合は、エンクレーブを初期化する最終ステップが実行される。これによって、エンクレーブの要求に応答して全ての初期化ステップを実行するよりも待ち時間が低減される。
特定のワークロードについては、TEEが前もって初期化されてよい。TEEは、テンプレートTEEと見なされる。ワークロードのTEEが要求されると、テンプレートTEEがフォークされ、新しいコピーが要求されたTEEとして提供される。既存のTEEをフォークする方が、新しいTEEを一から作成するより速く、待ち時間が低減される。
特定のワークロードについては、TEEが前もって初期化され、読み取り専用とマーク付けされてよい。TEEはテンプレートTEEと見なされる。ワークロードのTEEが要求されると、テンプレートTEEに読み取り専用でアクセスして新しいTEEが作成される。テンプレートTEEが読み取り専用である限り、複数のTEEがテンプレートTEEへ安全にアクセスすることができる。テンプレートTEEにアクセスして新しいTEEを作成する方が、テンプレートTEEのコードおよびデータの全てを用いて新しいTEEを一から作成するより速いので、待ち時間が低減される。
幾つかの例示的な実施形態では、本明細書で説明するように、短期キーを使用してTEEを作成するためにFaaS画像が使用される。FaaSのTEEが要求されると、アクセス制御されたキー識別子が短期キーに割り当てられ、それに応答して、TEEの迅速なプロビジョニングが可能になる。
エンクレーブを初期化する既存の方法と比較すると、本明細書で説明する方法およびシステムによって待ち時間が低減される。待ち時間が低減されると、TEEで更なる機能性を保護するか、より粒度の細かいTEEを使用するか、またはその両方を行うことが可能になり、システムセキュリティを高めることができる。これらの効果を全体として考慮すると、本明細書で説明する方法論のうちの1つまたは複数によって、他の方法ならTEEの初期化に伴うであろう特定の努力またはリソースの必要性がなくなるかもしれない。1つまたは複数のマシン、データベース、またはネットワークにより使用されるコンピューティングリソースも同様に低減されてよい。係るコンピューティングリソースの例には、プロセッササイクル、ネットワークトラフィック、メモリ使用量、データ記憶容量、電力消費、および冷却容量が含まれる。
図1は、幾つかの例示的な実施形態に係る、TEEを使用してファンクション・アズ・ア・サービスを提供するサーバに適したネットワーク環境100を示すネットワーク図である。ネットワーク環境100は、FaaSサーバ110Aおよび110Bと、クライアントデバイス120Aおよび120Bと、ネットワーク130とを含む。FaaSサーバ110Aおよび110Bは、ネットワーク130を介してクライアントデバイス120Aおよび120Bに機能を提供する。クライアントデバイス120Aおよび120Bは、異なるテナントのデバイスであってよく、その結果、各テナントは、自らのテナント固有のデータおよびコードに他のテナントがアクセスできないようにしたがる。従って、FaaSサーバ110Aおよび110Bは、提供されるFaaSごとにエンクレーブを使用してよい。
機能を提供する際の待ち時間を低減するために、本明細書で説明する、TEEの作成における待ち時間を低減するシステムおよび方法が使用されてよい。例えば、機能のTEEは、クライアントデバイス120により機能が要求される前に、FaaSサーバ110により部分的または全体的に作成されてよい。
FaaSサーバ110Aおよび110Bと、クライアントデバイス120Aおよび120Bとはそれぞれ、図9に関して以下に説明するように、全体的または部分的に、コンピュータシステムに実装されてよい。FaaSサーバ110Aおよび110Bは、集合的にFaaSサーバ110、または一般的にFaaSサーバ110と呼ばれる場合がある。クライアントデバイス120Aおよび120Bは、集合的にクライアントデバイス120、一般的にクライアントデバイス120と呼ばれる場合がある。
図1に示すマシン、データベース、またはデバイスのいずれかを、ソフトウェアにより修正(例えば、構成またはプログラム)される汎用コンピュータに実装して、そのマシン、データベース、またはデバイスについて本明細書で説明する機能を実行する特殊目的コンピュータにしてよい。例えば、以下では、図9に関して、本明細書で説明する方法論のいずれか1つまたは複数を実装できるコンピュータシステムについて説明する。本明細書で使用する場合、「データベース」はデータ記憶リソースであり、テキストファイル、テーブル、スプレッドシート、リレーショナルデータベース(例えば、オブジェクトリレーショナルデータベース)、トリプルストア、階層データストア、ドキュメント指向のNoSQLデータベース、ファイルストア、またはそれらの任意の適切な組み合わせとして構造化されたデータを記憶してよい。データベースは、インメモリデータベースであってよい。更には、図1に示すマシン、データベース、またはデバイスのいずれか2つまたはそれより多くを組み合わせて、単一のマシン、データベース、またはデバイスにしてよく、任意の単一のマシン、データベース、またはデバイスについて本明細書で説明する機能を、複数のマシン、データベース、またはデバイス間で細分化してよい。
FaaSサーバ110およびクライアントデバイス120は、ネットワーク130により接続される。ネットワーク130は、マシン、データベース、およびデバイス間の通信を可能にする任意のネットワークであってよい。従って、ネットワーク130は、有線ネットワーク、無線ネットワーク(例えば、モバイルネットワークまたはセルラネットワーク)、またはそれらの任意の適切な組み合わせであってよい。ネットワーク130は、プライベートネットワーク、パブリックネットワーク(例えば、インターネット)、またはそれらの任意の適切な組み合わせを構成する1つまたは複数の部分を含んでよい。
図2は、幾つかの例示的な実施形態に係るTEEの待ち時間を低減するのに適した、幾つかの例示的な実施形態に係る、FaaSサーバ110Aのブロック図である。FaaSサーバ110Aは、通信モジュール210、アプリケーションの信頼できないコンポーネント220、アプリケーションの信頼できるコンポーネント230、信頼ドメインモジュール240、クォーティングエンクレーブ250、共有メモリ260、およびプライベートメモリ270を含むものとして示されており、これらは全て(例えば、バス、共有メモリ、またはスイッチを介して)互いに通信するように構成される。本明細書で説明するモジュールのいずれか1つまたは複数は、ハードウェア(例えば、マシンのプロセッサ)を使用して実装されてよい。例えば、本明細書で説明する任意のモジュールは、そのモジュールについて本明細書で説明する動作を実行するように構成されるプロセッサにより実装されてよい。更には、これらのモジュールのいずれか2つまたはそれより多くを組み合わせて、単一のモジュールにしてよく、単一のモジュールについて本明細書で説明する機能を、複数のモジュール間で細分化してよい。更に、様々な例示的な実施形態によれば、単一のマシン、データベース、またはデバイスの内部に実装されるものとして本明細書で説明するモジュールが、複数のマシン、データベース、またはデバイスに分散されてよい。
通信モジュール210は、FaaSサーバ110Aに送信されるデータを受信し、FaaSサーバ110Aからのデータを伝送する。例えば、通信モジュール210は、機能を実行する要求をクライアントデバイス120Aから受信してよい。機能が実行された後、機能の結果は、通信モジュール210によりクライアントデバイス120Aに提供される。通信モジュール210により送信および受信される通信は、ネットワーク130により仲介されてよい。
信頼できないコンポーネント220は、エンクレーブの外部で実行される。故に、オペレーティングシステムまたは他の信頼できないコンポーネントが危険にさらされた場合は、信頼できないコンポーネント220が攻撃を受けやすい。信頼できるコンポーネント230は、エンクレーブの内部で実行される。故に、オペレーティングシステムまたは信頼できないコンポーネント220が危険にさらされた場合であっても、信頼できるコンポーネント230のデータおよびコードは安全なままである。
信頼ドメインモジュール240は、エンクレーブを作成および保護し、信頼できないコンポーネント220と信頼できるコンポーネント230との間における実行の移行を担う。信頼ドメインモジュール240には署名されたコードが提供されてよく、信頼ドメインモジュール240は、コードが署名されてから修正されていないことを検証する。署名されたコードは、エンクレーブの一部としてマーク付けされる物理メモリの部分にロードされる。その後、信頼できないソフトウェアによるエンクレーブメモリのアクセス、修正、実行、またはそれらの任意の適切な組み合わせが、ハードウェアの保護によって防止される。コードは、信頼ドメインモジュール240でのみ利用できるキーを使用して暗号化されてよい。
信頼できるコンポーネント230がひとたび初期化されると、信頼できないコンポーネント220は、信頼できないモードから信頼できるモードに移行する信頼ドメインモジュール240の特別なプロセッサ命令を使用して、信頼できるコンポーネント230の機能を呼び出すことができる。信頼できるコンポーネント230は、パラメータ検証を実行し、パラメータが有効である場合、要求された機能を実行し、信頼ドメインモジュール240を介して信頼できないコンポーネント220に制御を返す。
信頼ドメインモジュール240は、Intel(登録商標)SGX、Intel(登録商標)TDX、AMD(登録商標)安全な暗号化された仮想化(Secure Encrypted Virtualization:SEV)、ARM(登録商標)TrustZone、またはそれらの任意の適切な組み合わせを提供するIntel(登録商標)ハードウェアプロセッサの1つまたは複数のコンポーネントとして実装されてよい。Intel(登録商標)SGXでは、証明は、エンクレーブの内部で保護されるIntel(登録商標)SGX対応プラットフォーム上でソフトウェアエンティティが実行されていることを、そのソフトウェアに対して秘密および保護されたデータをプロビジョニングする前に、サードエンティティが確立するメカニズムである。証明は、エンクレーブの安全性に関する情報を含む、エンクレーブの署名を正確に反映するクレデンシャルを生成するプラットフォームの能力に依存する。Intel(登録商標)SGXアーキテクチャは、2つの形態の証明をサポートするメカニズムを提供する。ローカルな照明またはプラットフォーム内の証明をサポートする、同じプラットフォーム上で実行されるエンクレーブ間に基本的なアサーションを作成するメカニズムと、次に、エンクレーブとリモートサードパーティとの間の証明の基盤を提供する別のメカニズムとがある。
クォーティングエンクレーブ250は、エンクレーブ(例えば、信頼できるコンポーネント230)の証明を生成する。証明とは、非対称暗号化を使用し、かつ、内蔵プロセッサ機能によりサポートされる、証明されたエンクレーブとホスト(例えば、FaaSサーバ110A)とを一意に識別するエビデンス構造である。証明は、通信モジュール210を介してクライアントデバイス120に提供されてよく、信頼できるコンポーネント230が危険にさらされていないことをクライアントデバイス120が確認できるようにする。例えば、プロセッサは、キーのアクセスを防止するハードウェアを使用して、内蔵プライベートキーで製造されてよい。このプライベートキーを使用して、証明構造がプロセッサにより署名されてよく、ハードウェア製造業者により発行される対応するパブリックキーを使用して、署名がクライアントデバイス120により確認されてよい。これによって、クライアントデバイス120は、リモートデバイス(例えば、FaaSサーバ110A)上のエンクレーブが改ざんされることなく実際に作成されたことを保証することができる。
信頼できないコンポーネント220および信頼できるコンポーネント230の両方が、共有メモリ260にアクセスし、それを修正することができるが、信頼できるコンポーネント230のみが、プライベートメモリ270にアクセスし、それを修正することができる。図2には、1つの信頼できないコンポーネント220、1つの信頼できるコンポーネント230、および1つのプライベートメモリ270のみが示されているが、各アプリケーションは、対応するプライベートメモリ270をそれぞれが有する複数の信頼できるコンポーネント230と、プライベートメモリ270のいずれにもアクセスできない複数の信頼できないコンポーネント220とを有してよい。更には、複数のアプリケーションが別個のメモリ空間、ひいては、別個の共有メモリ260で実行されてよい。この文脈では、「共有」とは、必ずしもシステム上で実行される全てのアプリケーションがアクセスできるとは限らないメモリ空間(例えば、アプリケーションおよびそのオペレーティングシステム)にアクセスできる全てのソフトウェアおよびハードウェアがアクセスできるメモリを指す。
図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は、エンクレーブテーブル510を含む。エンクレーブテーブル510は、フォーマット520の行530A、530B、530C、および530Dを含む。
エンクレーブテーブル510のフォーマット520は、エンクレーブ識別子フィールド、ステータスフィールド、読み取り専用フィールド、およびテンプレート識別子フィールドを含む。行530A~530Dの各々は、単一のエンクレーブのデータを記憶する。エンクレーブ識別子は、エンクレーブの一意識別子である。例えば、エンクレーブが作成されると、信頼ドメインモジュール240は、作成されたエンクレーブに次の未使用の識別子を割り当ててよい。ステータスフィールドは、初期化中(作成されたが、まだ使用できる状態ではない)、初期化済み(使用できる状態であるが、まだ使用されていない)、割り振り済み(使用中)など、エンクレーブのステータスを示す。読み取り専用フィールドは、エンクレーブが読み取り専用であるかどうかを示す。テンプレート識別子フィールドには、このエンクレーブが読み取り専用でアクセスできる別のエンクレーブのエンクレーブ識別子が含まれる。
故に、図5の例では、エンクレーブテーブル510に4つのエンクレーブが示されている。エンクレーブのうちの1つは初期化中、2つは初期化済み、1つは割り振り済みである。行530Aのエンクレーブ0は、読み取り専用エンクレーブであり、行530Bの、エンクレーブ1のテンプレートとして使用される。故に、プロセッサは、エンクレーブ0が実行されるのを防止するが、エンクレーブ1は、エンクレーブ0のデータおよびコードにアクセスすることができる。エンクレーブ0を同様にテンプレートとして使用する更なるエンクレーブを作成して、複数のエンクレーブが、消費されるメモリの量を増やすことなくエンクレーブ0のデータおよびコードにアクセスできるようにしてよい。行530B~530Dのエンクレーブ1~3は、読み取り専用ではなく、ひいては、実行され得る。
図6は、幾つかの例示的な実施形態に係る、TEEを構築する際に信頼ドメインモジュール240により実行される動作のシーケンスのブロック図600である。図6に示すように、動作のシーケンスは、ECREATE、EADD/EEXTEND、EINIT、EENTER、およびFUNCTION STARTを含む。ECREATE動作は、エンクレーブを作成する。EADD動作は、エンクレーブに初期のヒープメモリを追加する。EEXTEND動作を使用して、更なるメモリが追加されてよい。EINIT動作は、TEEを実行のために初期化する。その後、信頼できないコンポーネント220は、信頼ドメインモジュール240にEENTER動作の実行を要求することによりTEEに実行を転送する。TEEの信頼できるFUNCTIONは、FUNCTION START CALLに応答して、TEE内でコードを実行することにより実行される。
図6に示すように、これらの動作は、少なくとも2つのやり方で分割されてよい。一方の分割は、ECREATE動作、EADD/EEXTEND動作、およびEINIT動作がホストアプリケーション(例えば、信頼できないコンポーネント220)により実行され、EENTER動作がTEEに制御を転送し、TEEがFUNCTIONを実行することを示す。もう一方の分割は、TEEの作成とTEEに対するヒープメモリの割り振りとが、TEEに追加される特定のコードおよびデータに関係なく実行され得る(「ワークロードに依存しない動作」)が、TEEの初期化とそれに続くTEE機能の呼び出しとが、ロードされる特定のコードおよびデータに依存する(「ワークロードに依存する動作」)ことを示す。
TEEのプールは、ワークロードに依存しない動作をTEEが要求される前に実行することにより事前初期化されてよい。本明細書で使用する場合、事前初期化されたTEEは、TEEがアプリケーションにより要求される前に少なくとも1つの動作が開始されたTEEである。例えば、TEEは、TEEが要求される前にECREATE動作により作成されてよい。ワークロードに依存する動作は、TEEの要求を受信することに応答して実行される。ワークロードに依存しない動作を要求が受信される前に実行しないソリューションと比較すると、待ち時間が低減される。幾つかの例示的な実施形態では、TEEを事前初期化するための動作は、TEEの要求を受信することと並行して実行される。例えば、TEEのECREATE動作が開始されてよく、ECREATE動作が完了する前にTEEの要求が受信される。故に、事前初期化は、ワークロードに依存しない動作をTEEの要求が受信されるよりも特定の時間だけ前に完了することによって定義されるのではなく、ワークロードに依存しない動作をTEEの要求が受信される前に開始することによって定義される。
FaaS環境の場合は、各機能は、ワークロードに依存せず、かつ、ワークロードに依存する動作が実行される前に初期化される、共通のランタイム環境を共有してよい。FaaS機能の起動時間は、FaaSサービスにおける重要な指標である。なぜなら、起動時間が短いほど、サービスの順応性を高くすることができるからである。
図7は、幾つかの例示的な実施形態に係る、TEEの初期化およびTEEへのアクセスの提供を行うのに適した方法700の動作を示すフローチャートである。方法700は、動作710、720、730、および740を含む。限定ではなく例として、方法700は、図2~図4に示すモジュール、データベース、および構造を使用して、図1のFaaSサーバ110Aにより実行されてよい。
動作710では、信頼ドメインモジュール240がエンクレーブのプールを事前初期化する。例えば、エンクレーブの作成とエンクレーブに対するヒープメモリの割り振りとを行う動作は、エンクレーブのプール内のエンクレーブごとに実行されてよい。幾つかの例示的な実施形態では、エンクレーブのプールは、16~512個のエンクレーブ、16個のエンクレーブ、32個のエンクレーブ、または128個のエンクレーブを含む。
様々な例示的な実施形態において、エンクレーブのプール内のエンクレーブは、部分的に事前初期化されるか、または完全に事前初期化される。完全に事前初期化されたエンクレーブは、エンクレーブが要求される前に実行されるワークロード固有の動作のうちの少なくとも1つを有する。部分的に事前初期化されたエンクレーブは、エンクレーブが要求される前に実行されるワークロードに依存しない動作のみを有する。事前初期化されたエンクレーブは、任意のエンクレーブの結果が出るまでの時間を低減するが、初期化のオーバヘッドが全体の実行時間を支配する一時的な短期エンクレーブ(例えば、FaaSワークロード)で特に有益である。
事前初期化されたエンクレーブは、テンプレートエンクレーブをフォークまたはコピーすることにより作成されてよい。まず、事前初期化されたエンクレーブの状態を望ましいものにして、テンプレートエンクレーブが作成される。次に、事前初期化されたプール内のエンクレーブの各々について、テンプレートエンクレーブがフォークまたはコピーされる。幾つかの例示的な実施形態では、テンプレートエンクレーブ自体がプールの一部である。他の例示的な実施形態では、テンプレートエンクレーブは、読み取り専用であり、実行可能ではなく、後で使用するためにテンプレートとして保持される。テンプレートエンクレーブは、FaaSのメモリコンテンツおよびレイアウトを含んでよい。
エンクレーブのプール内の各エンクレーブが有するメモリは、プロセッサに記憶されるキーを使用して暗号化されてよい。キーは、短期キー(例えば、TME短期キー)、またはプロセッサの外部にアクセス可能なキー識別子を持つキーであってよい。信頼ドメインモジュール240またはMKTMEモジュールは、キーを生成し、それをエンクレーブに割り当ててよい。故に、キー自体がプロセッサの外部に公開されることはない。エンクレーブには、物理メモリの一部が割り当てられる。エンクレーブの物理メモリから来るメモリアクセス要求は、エンクレーブのキー識別子、ひいては、キーに関連付けられる。プロセッサは、エンクレーブの物理メモリの外部からのメモリアクセスには、エンクレーブのキーを適用しない。その結果、信頼できないアプリケーションまたはコンポーネント(例えば、信頼できないコンポーネント220)によるメモリアクセスは、エンクレーブの暗号化されたデータまたはコードのみを受信することができる。
幾つかの例示的な実施形態では、キー識別子のない異なる短期キー(例えば、MKTMEキー)を使用して、エンクレーブのプール内の各エンクレーブを暗号化する。その後、FaaSのエンクレーブが要求されると、アクセス制御されたキー識別子が信頼ドメインモジュール240により短期キーに割り当てられ、それに応答して、エンクレーブの迅速なプロビジョニングが可能になる。
動作720では、信頼ドメインモジュール240がエンクレーブの要求を受信する。例えば、アプリケーションの信頼できないコンポーネント220は、エンクレーブを識別するデータを、要求の一部として信頼ドメインモジュール240に提供してよい。エンクレーブを識別するデータは、信頼できないコンポーネント220がアクセスできる、共有メモリ260内のアドレスへのポインタを含んでよい。
要求は、エンクレーブの事前計算されたハッシュ値を含んでよく、エンクレーブのコードおよびデータを含む共有メモリ260の部分(例えば、要求に含まれるアドレスおよびサイズで識別される部分)を示してよい。信頼ドメインモジュール240は、バイナリメモリ状態(例えば、要求に示される共有メモリ260の部分)に対してハッシュ関数を実行して、要求に提供されるハッシュ値が計算されたハッシュ値と一致することを確認してよい。ハッシュ値が一致する場合は、信頼ドメインモジュール240は、示されたメモリが要求されたエンクレーブのコードおよびデータを実際に含むことを既に確認しており、方法700が続行してよい。ハッシュ値が一致しない場合は、信頼ドメインモジュール240は、エラー値を返して、修正されたメモリがエンクレーブにロードされるのを防止してよい。
幾つかの例示的な実施形態では、要求は、テンプレートエンクレーブの識別子を含む。信頼ドメインモジュール240は、テンプレートエンクレーブにアクセスするための読み取り専用許可を持つ、要求されたエンクレーブを作成する。これによって、要求されたエンクレーブは、テンプレートエンクレーブのデータもコードも修正することなく、テンプレートエンクレーブのデータを読み取り、かつ、テンプレートエンクレーブの機能を実行することができる。従って、複数のエンクレーブが競合することなくテンプレートエンクレーブにアクセスしてよく、テンプレートエンクレーブのデータおよびコードが1回(複数のエンクレーブの各々について1回ではない)のみ記憶される。その結果、アクセスしているエンクレーブの作成中にコピーされるメモリが少なくなり、待ち時間が低減される。
動作730では、信頼ドメインモジュール240が、受信された要求に応答して、事前初期化されたエンクレーブのプールからエンクレーブを選択する。信頼ドメインモジュール240は、要求と共に受信されるエンクレーブを識別するデータに基づいて、図4に示すワークロード固有の動作など、選択されたエンクレーブに対する更なる動作を実行することにより、選択されたエンクレーブを修正してよい。更なる動作は、要求に示される共有メモリ260内のアドレスから、エンクレーブに割り振られるプライベートメモリ270へデータまたはコードをコピーする動作を含んでよい。
幾つかの例示的な実施形態では、更なる動作は、エンクレーブに割り当てられる物理メモリを新しいキーで再暗号化する動作を含む。例えば、事前初期化ステップでは、短期キーを使用してエンクレーブの物理メモリが暗号化されていてよく、エンクレーブは、エンクレーブの一意キーを、対応する一意のキー識別子と共に使用して再暗号化されてよい。キー識別子が(例えば、利用可能なキー識別子の数が固定された)有限のリソースであるシステムでは、事前初期化されたエンクレーブの短期キーを使用すると、エンクレーブのプールの最大サイズが(例えば、利用可能なキー識別子の固定された数を上回るサイズに)増加する場合がある。更なる動作は、テンプレートTEEからコードマッピングを導出する選択されたTEEの安全な拡張ページテーブル(EPT)ブランチを作成する動作を含んでもよい。
信頼ドメインモジュール240は、要求に応答して、選択されたエンクレーブへのアクセスを提供する(動作740)。例えば、エンクレーブ内で機能を実行するための信頼ドメインモジュール240に対する後の要求(例えば、EENTERコマンド)へのパラメータとして使用可能な、初期化されたエンクレーブの一意識別子が返されてよい。
その後、信頼ドメインモジュール240は、(例えば、エンクレーブ終了命令を受信することに応答して、)選択されたエンクレーブの実行が完了していると判断してよい。完了したエンクレーブに割り当てられるメモリは解放されてよい。代替的に、完了したエンクレーブの状態が事前初期化された状態に復元されてよく、エンクレーブがプールに戻されてよい。例えば、テンプレートエンクレーブがエンクレーブ上にコピーされてよく、ワークロード固有の動作を元に戻す動作が実行されてよく、ワークロード固有の動作が実行される前にエンクレーブのチェックポイントが実行されてよく、および、実行が完了した後にチェックポイントの復元が実行されてよく、または、それらの任意の適切な組み合わせであってよい。
エンクレーブの要求を受信する(動作720)前にエンクレーブの事前初期化(動作710)を実行しない従来技術の実装と比較すると、要求の受信とアクセスの提供(動作740)との間の遅延が低減される。待ち時間が低減されると、エンクレーブで更なる機能性を保護するか、より粒度の細かいエンクレーブを使用するか、またはその両方を行うことが可能になり、システムセキュリティを高めることができる。更には、エンクレーブがネットワーク130を介してクライアントデバイス120により呼び出されると、FaaSサーバ110からの応答を待っている間に使用されるクライアントデバイス120のプロセッササイクルが低減され、応答性が向上し、電力消費が低減する。
図8は、幾つかの例示的な実施形態に係る、TEEの初期化およびTEEへのアクセスの提供を行うのに適した方法800の動作を示すフローチャートである。方法800は、動作810、820、830、および840を含む。限定ではなく例として、方法800は、図2~図4に示すモジュール、データベース、および構造を使用して、図1のFaaSサーバ110Aにより実行されてよい。
動作810では、信頼ドメインモジュール240が、読み取り専用とマーク付けされたテンプレートエンクレーブを作成する。
例えば、エンクレーブは、コードおよびデータがプライベートメモリ270にロードされた状態で、完全に作成されてよい。しかしながら、テンプレートエンクレーブは読み取り専用であるため、テンプレートエンクレーブの機能を、信頼できないコンポーネント220から直接呼び出すことはできない。図3のエンクレーブテーブル310を参照すると、行330Aは、読み取り専用テンプレートエンクレーブを示す。
例えば、エンクレーブは、コードおよびデータがプライベートメモリ270にロードされた状態で、完全に作成されてよい。しかしながら、テンプレートエンクレーブは読み取り専用であるため、テンプレートエンクレーブの機能を、信頼できないコンポーネント220から直接呼び出すことはできない。図3のエンクレーブテーブル310を参照すると、行330Aは、読み取り専用テンプレートエンクレーブを示す。
動作820では、信頼ドメインモジュール240がエンクレーブの要求を受信する。例えば、アプリケーションの信頼できないコンポーネント220は、エンクレーブを識別するデータを、要求の一部として信頼ドメインモジュール240に提供してよい。エンクレーブを識別するデータは、信頼できないコンポーネント220がアクセスできる、共有メモリ260内のアドレスへのポインタを含んでよい。
動作830では、受信された要求に応答して、信頼ドメインモジュール240がテンプレートエンクレーブをコピーして、要求されたエンクレーブを作成する。例えば、信頼ドメインモジュール240は、要求されたエンクレーブがテンプレートエンクレーブと同じコードおよびデータに対するものであることを、エンクレーブを識別するデータが示していると判断してよい。この判断は、エンクレーブコードおよびデータの署名、エンクレーブコードおよびデータのメッセージ認証コード(MAC)、非対称暗号化、またはそれらの任意の適切な組み合わせに基づいたものであってよい。
信頼ドメインモジュール240は、要求に応答して、選択されたエンクレーブへのアクセスを提供する(動作840)。例えば、エンクレーブ内で機能を実行するための信頼ドメインモジュール240に対する後の要求(例えば、EENTERコマンド)用のパラメータとして使用可能な、初期化されたエンクレーブの一意識別子が返されてよい。
テンプレートエンクレーブをコピーして要求されたエンクレーブを作成する(動作830)代わりに、エンクレーブの要求を受信する(動作820)ことに応答してエンクレーブを作成する従来技術の実装と比較すると、要求の受信とアクセスの提供(動作840)との間の遅延が低減される。待ち時間が低減されると、エンクレーブで更なる機能性を保護するか、より粒度の細かいエンクレーブを使用するか、またはその両方を行うことが可能になり、システムセキュリティを高めることができる。更には、エンクレーブがネットワーク130を介してクライアントデバイス120により呼び出されると、FaaSサーバ110からの応答を待っている間に使用されるクライアントデバイス120のプロセッササイクルが低減され、応答性が向上し、電力消費が低減する。
図9は、幾つかの例示的な実施形態に係る、TEEの初期化およびTEEへのアクセスの提供を行うのに適した方法900の動作を示すフローチャートである。方法900は、動作910、920、930、および940を含む。限定ではなく例として、方法900は、図2~図4に示すモジュール、データベース、および構造を使用して、図1のFaaSサーバ110Aにより実行されてよい。
動作910では、信頼ドメインモジュール240が、第1クラスのエンクレーブの第1プールと、第2クラスのエンクレーブの第2プールとを事前初期化する。事前初期化は完全または部分的である。完全な初期化のために、プール内のエンクレーブは、使用できるように完全に準備されており、プール内のエンクレーブには、エンクレーブのコードおよびデータが既にロードされている。故に、クラスの全てのメンバが同一である。部分的な初期化のために、プール内のエンクレーブは、1つまたは複数の特性、例えば、使用されるヒープメモリの量を共有する。エンクレーブは共有特性に関して初期化されるが、エンクレーブの実際のコードおよびデータは事前初期化中にロードされない。更には、後のステップで更なるカスタマイズが実行されてよい。従って、部分的な初期化が実行される場合は、異なるエンクレーブがクラスのメンバであってよい。
動作920では、信頼ドメインモジュール240が第1クラスのエンクレーブの要求を受信する。例えば、アプリケーションの信頼できないコンポーネント220は、エンクレーブを識別するデータを、要求の一部として信頼ドメインモジュール240に提供してよい。エンクレーブを識別するデータは、信頼できないコンポーネント220がアクセスできる、共有メモリ260内のアドレスへのポインタを含んでよい。エンクレーブのクラスを識別するデータは、エンクレーブまたは要求に含まれてよい。
動作930では、信頼ドメインモジュール240が、受信された要求に応答して、第1クラスについて事前初期化されたエンクレーブのプールからエンクレーブを選択する。信頼ドメインモジュール240は、要求と共に受信されるエンクレーブを識別するデータに基づいて、図4に示すワークロード固有の動作など、選択されたエンクレーブに対する更なる動作を実行することにより、選択されたエンクレーブを修正してよい。更なる動作は、要求に示される共有メモリ260内のアドレスから、エンクレーブに割り振られるプライベートメモリ270へデータまたはコードをコピーする動作を含んでよい。
信頼ドメインモジュール240は、要求に応答して、選択されたエンクレーブへのアクセスを提供する(動作940)。例えば、エンクレーブ内で機能を実行するための信頼ドメインモジュール240に対する後の要求(例えば、EENTERコマンド)へのパラメータとして使用可能な、初期化されたエンクレーブの一意識別子が返されてよい。
異なるクラスの異なるプールを使用することにより、似てはいるが需要が比較的低いエンクレーブを共通クラスに入れることで部分的に事前初期化して、エンクレーブの需要に比例してのみリソースを消費しながら待ち時間を低減することができる。同時に、需要の高いエンクレーブを完全に事前初期化して、待ち時間をその上更に低減することができる。
主題の上述した実装を考慮して、本願は以下の事例集を開示する。ここで、隔離された例の1つの特徴、または、組み合わせで捉えた、オプションとして、1つまたは複数の更なる例の1つまたは複数の特徴との組み合わせで捉えた例の1つより多くの特徴は、本願の開示に同様に含まれる更なる例である。
例1は、信頼できる実行環境(TEE)を提供するシステムである。上記システムは、プロセッサと、上記プロセッサに連結されて命令を記憶する記憶デバイスとを備え、上記命令は、上記プロセッサにより実行されると、上記プロセッサに、TEEのプールを事前初期化することであって、上記TEEのプールの各TEEを上記事前初期化することは、上記TEEに上記記憶デバイスのメモリを割り振ることを含む、事前初期化することと、上記TEEのプールを上記事前初期化することの後に、TEEの要求を受信することと、上記事前初期化されたTEEのプールから上記TEEを選択することと、上記要求に応答して、上記選択されたTEEへのアクセスを提供することとを行わせる。
例2では、例1の主題は、上記命令が更に、上記プロセッサに、上記選択されたTEEへのアクセスを上記提供することの前に、上記選択されたTEEを上記要求内の情報に基づいて修正させる、ことを含む。
例3では、例2の主題は、上記選択されたTEEを上記修正することが、上記選択されたTEEを開始することを含む、ことを含む。
例4では、例2および例3の主題は、上記選択されたTEEを上記修正することが、上記TEEに上記割り振られたメモリにデータまたはコードをコピーすることを含む、ことを含む。
例5では、例2から例4の主題は、上記選択されたTEEを上記修正することが、上記選択されたTEEに暗号化キーを割り当てることと、上記暗号化キーを使用して、上記TEEに割り振られる上記メモリを暗号化することとを含む、ことを含む。
例6では、例1から例5の主題は、上記TEEのプールを上記事前初期化することが、上記TEEのプールの各TEEにテンプレートTEEの状態をコピーすることを含む、ことを含む。
例7では、例1から例6の主題は、上記命令が更に、上記プロセッサに、上記選択されたTEEの実行が完了しているという判断に基づいて、上記選択されたTEEをテンプレートTEEの状態に復元させる、ことを含む。
例8では、例1から例7の主題は、上記命令が更に、上記プロセッサに、上記選択されたTEEを解放する要求を受信することと、上記選択されたTEEを解放する上記要求に応答して、上記TEEのプールに上記選択されたTEEを返すこととを行わせる、ことを含む。
例9では、例1から例8の主題は、上記命令が更に、上記プロセッサに、事前計算されたハッシュ値を受信することと、バイナリメモリ状態のハッシュ値を決定することと、上記決定されたハッシュ値と上記事前計算されたハッシュ値とに基づいて、安全対策が施されていないメモリから上記選択されたTEEに上記バイナリメモリ状態をコピーすることとを行わせる、ことを含む。
例10は、TEEを提供するシステムである。上記システムは、プロセッサと、上記プロセッサに連結されて命令を記憶する記憶デバイスとを備え、上記命令は、上記プロセッサにより実行されると、上記プロセッサに、TEEのプールを事前初期化することと、上記記憶デバイスに記憶され、かつ、読み取り専用とマーク付けされる、テンプレートTEEを作成することと、要求を受信することと、上記要求に応答して、上記テンプレートTEEをコピーしてTEEを作成し、かつ、上記作成されたTEEへのアクセスを提供することとを行わせる。
例11では、例10の主題は、上記テンプレートTEEが、ファンクション・アズ・ア・サービス(FaaS)の初期のメモリコンテンツおよびレイアウトを含む、ことを含む。
例12では、例10および例11の主題は、上記プロセッサが上記テンプレートTEEの実行を防止する、ことを含む。
例13は、TEEを提供する方法である。上記方法は、プロセッサが、TEEのプールを事前初期化する段階であって、上記TEEのプールの各TEEを上記事前初期化する段階は、上記TEEに記憶デバイスのメモリを割り振る段階を有する、段階と、上記TEEのプールを上記事前初期化する段階の後に、上記プロセッサが要求を受信する段階と、上記要求に応答して、上記プロセッサが、上記事前初期化されたTEEのプールからTEEを選択し、かつ、上記プロセッサが、上記選択されたTEEへのアクセスを提供する段階とを備える。
例15では、例14の主題は、上記選択されたTEEへのアクセスを上記提供する段階の前に、上記選択されたTEEを上記要求内の情報に基づいて修正する段階を備える。
例16では、例15の主題は、上記選択されたTEEを上記修正する段階が、上記選択されたTEEを開始する段階を含む、ことを含む。
例17では、例15および例16の主題は、上記選択されたTEEを上記修正する段階が、上記TEEに上記割り振られたメモリにデータまたはコードをコピーする段階を有する、ことを含む。
例18では、例15から例17の主題は、上記選択されたTEEを上記修正する段階が、上記選択されたTEEに暗号化キーを割り当てる段階と、上記暗号化キーを使用して、上記TEEに割り振られる上記メモリを暗号化する段階とを有する、ことを含む。
例19では、例14から例18の主題は、上記TEEのプールを上記事前初期化する段階が、上記TEEのプールの各TEEにテンプレートTEEの状態をコピーする段階を有する、ことを含む。
例20では、例14から例19の主題は、上記選択されたTEEの実行が完了しているという判断に基づいて、上記選択されたTEEをテンプレートTEEの状態に復元する段階を備える。
例21では、例14から例20の主題は、要求を受信して上記選択されたTEEを解放する段階と、上記選択されたTEEを解放する上記要求に応答して、上記TEEのプールに上記選択されたTEEを返す段階を含む。
例22では、例14から例21の主題は、事前計算されたハッシュ値を受信する段階と、バイナリメモリ状態のハッシュ値を決定する段階と、上記決定されたハッシュ値と上記事前計算されたハッシュ値とに基づいて、安全対策が施されていないメモリから上記選択されたTEEに上記バイナリメモリ状態をコピーする段階とを含む。
例23は、信頼できる実行環境(TEE)を提供する方法である。上記方法は、プロセッサが、記憶デバイスに記憶され、かつ、読み取り専用とマーク付けされる、テンプレートTEEを作成する段階と、上記プロセッサが要求を受信する段階と、上記要求に応答して、上記テンプレートTEEをコピーしてTEEを作成し、かつ、上記作成されたTEEへのアクセスを提供する段階とを含む。
例24では、例23の主題は、上記テンプレートTEEが、ファンクション・アズ・ア・サービス(FaaS)の初期のメモリコンテンツおよびレイアウトを含む、ことを含む。
例25では、例23および例24の主題は、上記プロセッサが上記テンプレートTEEの実行を防止する、ことを含む。
例26は、TEEを提供する方法である。上記方法は、プロセッサが、第1暗号化キーを使用してデータおよびコードを暗号化する段階と、上記暗号化されたデータおよびコードを記憶デバイスに記憶する段階と、上記プロセッサが要求を受信する段階と、上記要求に応答して、TEEに第2暗号化キーを割り当て、上記第1暗号化キーを使用して、上記暗号化されたデータおよびコードを復号し、上記第2暗号化キーを使用して、上記復号されたデータおよびコードを暗号化し、かつ、上記TEEへのアクセスを提供する段階とを備える。
例27は、命令を備える非一時的コンピュータ可読媒体である。上記命令は、プロセッサに、TEEのプールを事前初期化する動作であって、上記TEEのプールの各TEEを上記事前初期化する動作は、上記TEEに記憶デバイスのメモリを割り振る動作を含む、動作と、上記TEEのプールを上記事前初期化する動作の後に、TEEの要求を受信する動作と、上記事前初期化されたTEEのプールから上記TEEを選択する動作と、上記要求に応答して、上記選択されたTEEへのアクセスを提供する動作とを含む動作を実行することにより、TEEを提供させる。
例28では、例27の主題は、上記動作が更に、上記選択されたTEEへのアクセスを上記提供する動作の前に、上記選択されたTEEを上記要求内の情報に基づいて修正する動作を含む、ことを含む。
例29では、例28の主題は、上記選択されたTEEを上記修正する動作が、上記選択されたTEEを開始する動作を含む、ことを含む。
例30では、例28および例29の主題は、上記選択されたTEEを上記修正する動作が、上記TEEに上記割り振られたメモリにデータまたはコードをコピーする動作を含む、ことを含む。
例31では、例28から例30の主題は、上記選択されたTEEを上記修正する動作が、上記選択されたTEEに暗号化キーを割り当てる動作と、上記暗号化キーを使用して、上記TEEに割り振られる上記メモリを暗号化する動作とを含む、ことを含む。
例32では、例27から例31の主題は、上記TEEのプールを上記事前初期化する動作が、上記TEEのプールの各TEEにテンプレートTEEの状態をコピーする動作を含む、ことを含む。
例33では、例27から例32の主題は、上記動作が更に、上記選択されたTEEの実行が完了しているという判断に基づいて、上記選択されたTEEをテンプレートTEEの状態に復元する動作を含む、ことを含む。
例34では、例27から例33の主題は、上記動作が更に、上記選択されたTEEを解放する要求を受信する動作と、上記選択されたTEEを解放する上記要求に応答して、上記TEEのプールに上記選択されたTEEを返す動作とを含む、ことを含む。
例35では、例27から例34の主題は、上記動作が更に、事前計算されたハッシュ値を受信する動作と、バイナリメモリ状態のハッシュ値を決定する動作と、上記決定されたハッシュ値と上記事前計算されたハッシュ値とに基づいて、安全対策が施されていないメモリから上記選択されたTEEに上記バイナリメモリ状態をコピーする動作とを含む、ことを含む。
例36は、命令を備える非一時的コンピュータ可読媒体である。上記命令は、プロセッサに、記憶デバイスに記憶され、かつ、読み取り専用とマーク付けされる、テンプレートTEEを作成する動作と、要求を受信する動作と、上記要求に応答して、上記テンプレートTEEをコピーしてTEEを作成する動作と、上記作成されたTEEへのアクセスを提供する動作とを含む動作を実行することにより、TEEを提供させる。
例37では、例36の主題は、上記テンプレートTEEが、ファンクション・アズ・ア・サービス(FaaS)の初期のメモリコンテンツおよびレイアウトを含む、ことを含む。
例38では、例36および例37の主題は、上記動作が更に、上記テンプレートTEEの実行を防止する動作を含む、ことを含む。
例39は、命令を備える非一時的コンピュータ可読媒体である。上記命令は、プロセッサに、第1暗号化キーを使用してデータおよびコードを暗号化する動作と、上記暗号化されたデータおよびコードを記憶デバイスに記憶する動作と、要求を受信する動作と、上記要求に応答して、TEEに第2暗号化キーを割り当て、上記第1暗号化キーを使用して、上記暗号化されたデータおよびコードを復号し、上記第2暗号化キーを使用して、上記復号されたデータおよびコードを暗号化し、かつ、上記TEEへのアクセスを提供する動作とを含む動作を実行することにより、TEEを提供させる。
例40は、TEEを提供するシステムである。上記システムは、記憶手段と処理手段とを含み、上記処理手段は、TEEのプールを事前初期化することであって、上記TEEのプールの各TEEを上記事前初期化することは、上記TEEに上記記憶手段のメモリを割り振ることを含む、事前初期化することと、TEEの要求を受信することと、上記事前初期化されたTEEのプールから上記TEEを選択することと、上記要求に応答して、上記選択されたTEEへのアクセスを提供することとを行うためのものである。
例41では、例40の主題は、上記処理手段が更に、上記選択されたTEEへのアクセスを上記提供することの前に、上記選択されたTEEを上記要求内の情報に基づいて修正するためのものである、ことを含む。
例42では、例41の主題は、上記選択されたTEEを上記修正することが、上記選択されたTEEを開始することを含む、ことを含む。
例43では、例41および例42の主題は、上記選択されたTEEを上記修正することが、上記TEEに上記割り振られたメモリにデータまたはコードをコピーすることを含む、ことを含む。
例44では、例41から例43の主題は、上記選択されたTEEを上記修正することが、上記選択されたTEEに暗号化キーを割り当てることと、上記暗号化キーを使用して、上記TEEに割り振られる上記メモリを暗号化することとを含む、ことを含む。
例45では、例40から例44の主題は、上記TEEのプールを上記事前初期化することが、上記TEEのプールの各TEEにテンプレートTEEの状態をコピーすることを含む、ことを含む。
例46では、例40から例45の主題は、上記処理手段が更に、上記選択されたTEEの実行が完了しているという判断に基づいて、上記選択されたTEEをテンプレートTEEの状態に復元するためのものである、ことを含む。
例47では、例40から例46の主題は、上記処理手段が更に、上記選択されたTEEを解放する要求を受信することと、上記選択されたTEEを解放する上記要求に応答して、上記TEEのプールに上記選択されたTEEを返すこととを行うためのものである、ことを含む。
例48では、例40から例47の主題は、上記処理手段が更に、事前計算されたハッシュ値を受信することと、バイナリメモリ状態のハッシュ値を決定することと、上記決定されたハッシュ値と上記事前計算されたハッシュ値とに基づいて、安全対策が施されていないメモリから上記選択されたTEEに上記バイナリメモリ状態をコピーすることとを行うためのものである、ことを含む。
例49は、TEEを提供するシステムである。上記システムは、記憶手段と処理手段とを含み、上記処理手段は、上記記憶手段に記憶され、かつ、読み取り専用とマーク付けされる、テンプレートTEEを作成することと、要求を受信することと、上記要求に応答して、上記テンプレートTEEをコピーしてTEEを作成し、かつ、上記TEEへのアクセスを提供することとを行うためのものである。
例50では、例49の主題は、上記テンプレートTEEが、ファンクション・アズ・ア・サービス(FaaS)の初期のメモリコンテンツおよびレイアウトを含む、ことを含む。
例51では、例49および例50の主題は、上記処理手段が上記テンプレートTEEの実行を防止する、ことを含む。
例52は、TEEを提供するシステムである。上記システムは、記憶手段と処理手段とを含み、上記処理手段は、第1暗号化キーを使用してデータおよびコードを暗号化することと、上記暗号化されたデータおよびコードを上記記憶手段に記憶することと、要求を受信することと、上記要求に応答して、TEEに第2暗号化キーを割り当て、上記第1暗号化キーを使用して、上記暗号化されたデータおよびコードを復号し、上記第2暗号化キーを使用して、上記復号されたデータおよびコードを暗号化し、かつ、上記TEEへのアクセスを提供することとを行うためのものである。
例53は、命令を含む少なくとも1つの機械可読媒体である。上記命令は、処理回路により実行されると、上記処理回路に、例1から例52のいずれかを実装する動作を実行させる。
例54は、例1から例52のいずれかを実装する手段を含む装置である。
例55は、例1から例52のいずれかを実装するシステムである。
例56は、例1から例52のいずれかを実装する方法である。
図10は、コンピューティングデバイスのソフトウェアアーキテクチャ1002の一例を示すブロック図1000である。アーキテクチャ1002は、例えば、本明細書で説明するように、様々なハードウェアアーキテクチャと併せて使用されてよい。図10は、ソフトウェアアーキテクチャの非限定的な例に過ぎず、本明細書で説明する機能性を促進するために、多くの他のアーキテクチャが実装されてよい。代表的なハードウェア層1004が示されており、これは、例えば、上で参照したコンピューティングデバイスのいずれかを表すことができる。幾つかの例では、ハードウェア層1004は、図10のコンピュータシステムのアーキテクチャに従って実装されてよい。
代表的なハードウェア層1004は、関連付けられる実行可能な命令1008を有する1つまたは複数の処理装置1006を含む。実行可能な命令1008は、本明細書で説明する方法、モジュール、サブシステム、およびコンポーネントなどの実装を含む、ソフトウェアアーキテクチャ1002の実行可能な命令を表し、実行可能な命令1008を同様に有するメモリおよび/または記憶モジュール1010を含んでもよい。ハードウェア層1004は、ソフトウェアアーキテクチャ1002の一部として示される他のハードウェアなど、ハードウェア層1004の任意の他のハードウェアを表す他のハードウェア1012により示されるような他のハードウェアを含んでもよい。
図10の例示的なアーキテクチャでは、ソフトウェアアーキテクチャ1002は、それぞれの層が特定の機能性を提供する層の積み重ねとして概念化されてよい。例えば、ソフトウェアアーキテクチャ1002は、オペレーティングシステム1014、ライブラリ1016、フレームワーク/ミドルウェア1018、アプリケーション1020、およびプレゼンテーション層1044などの層を含んでよい。動作上、これらの層内のアプリケーション1020および/または他のコンポーネントは、ソフトウェアの積み重ねを介してアプリケーションプログラミングインタフェース(API)コール1024を呼び出してよく、APIコール1024に応答してメッセージ1026として示される応答および戻り値などにアクセスしてよい。示されている層は本質的に代表的なものであり、全てのソフトウェアアーキテクチャに全ての層があるとは限らない。例えば、幾つかのモバイルオペレーティングシステムまたは特殊目的オペレーティングシステムは、フレームワーク/ミドルウェア層1018を提供しない場合があるが、他のものは係る層を提供する場合がある。他のソフトウェアアーキテクチャは、更なる層または異なる層を含んでよい。
オペレーティングシステム1014は、ハードウェアリソースを管理し、共通サービスを提供してよい。オペレーティングシステム1014は、例えば、カーネル1028、サービス1030、およびドライバ1032を含んでよい。カーネル1028は、ハードウェアと他のソフトウェア層との間の抽象化層として機能してよい。例えば、カーネル1028は、メモリ管理、プロセッサ管理(例えば、スケジューリング)、コンポーネント管理、ネットワーキング、およびセキュリティ設定などを担ってよい。サービス1030は、他のソフトウェア層に他の共通サービスを提供してよい。幾つかの例では、サービス1030は割り込みサービスを含む。割り込みサービスは、割り込みの受信を検出してよく、それに応答して、アーキテクチャ1002に、現在の処理を一時停止させ、割り込みがアクセスされたときに割り込みサービスルーチン(ISR)を実行させてよい。
ドライバ1032は、基礎となるハードウェアの制御またはそれとのインタフェースを担ってよい。例えば、ドライバ1032は、ハードウェア構成に応じて、ディスプレイドライバ、カメラドライバ、Bluetooth(登録商標)ドライバ、フラッシュメモリドライバ、シリアル通信ドライバ(例えば、ユニバーサルシリアルバス(USB)ドライバ、Wi-Fi(登録商標)ドライバ、NFCドライバ、オーディオドライバ、および電源管理ドライバなどを含んでよい。
ライブラリ1016は、アプリケーション1020並びに/または他のコンポーネントおよび/もしくは層により利用され得る共通インフラストラクチャを提供してよい。ライブラリ1016は通常、他のソフトウェアモジュールが、基礎となるオペレーティングシステム1014の機能性(例えば、カーネル1028、サービス1030、および/またはドライバ1032)と直接インタフェースするよりも容易なやり方でタスクを実行できるようにする、機能性を提供する。ライブラリ1016は、メモリ割り振り機能、ストリング操作機能、および数学機能などといった機能を提供し得るシステムライブラリ1034(例えば、C標準ライブラリ)を含んでよい。更に、ライブラリ1016は、メディアライブラリ(例えば、MPEG4、H.264、MP3、AAC、AMR、JPG、PNGなどの様々なメディアフォーマットの提示および操作をサポートするライブラリ)、グラフィクスライブラリ(例えば、ディスプレイ上のグラフィックコンテンツで二次元および三次元をレンダリングするために使用され得るOpenGLフレームワーク)、データベースライブラリ(例えば、様々なリレーショナルデータベース機能を提供し得るSQLite)、およびウェブライブラリ(例えば、ウェブブラウジングの機能性を提供し得るWebKit)などといったAPIライブラリ1036を含んでよい。ライブラリ1016は、アプリケーション1020および他のソフトウェアコンポーネント/モジュールに多くの他のAPIを提供するために、多種多様な他のライブラリ1038を含んでもよい。
フレームワーク/ミドルウェア1018は、アプリケーション1020および/または他のソフトウェアコンポーネント/モジュールにより利用され得るより高いレベルの共通インフラストラクチャを提供してよい。例えば、フレームワーク/ミドルウェア1018は、様々なグラフィックユーザインタフェース(GUI)機能、高レベルのリソース管理、および高レベルのロケーションサービスなどを提供してよい。フレームワーク/ミドルウェア1018は、アプリケーション1020および/または他のソフトウェアコンポーネント/モジュールにより利用され得る幅広い他のAPIを提供してよく、そのうちの幾つかは、特定のオペレーティングシステムまたはプラットフォームに固有であってよい。
アプリケーション1020は、内蔵アプリケーション1040および/またはサードパーティアプリケーション1042を含む。代表的な内蔵アプリケーション1040の例には、以下に限定されるわけではないが、連絡先アプリケーション、ブラウザアプリケーション、ブックリーダアプリケーション、ロケーションアプリケーション、メディアアプリケーション、メッセージングアプリケーション、および/またはゲームアプリケーションが含まれてよい。サードパーティアプリケーション1042は、内蔵アプリケーション1040および幅広い品揃えの他のアプリケーションのいずれかを含んでよい。特定の例では、サードパーティアプリケーション1042(例えば、特定のプラットフォームのベンダ以外のエンティティによりAndroid(登録商標)またはiOS(登録商標)のソフトウェア開発キット(SDK)を使用して開発されるアプリケーション)は、iOS(登録商標)、Android(登録商標)、Windows(登録商標)Phone、または他のモバイルコンピューティングデバイスオペレーティングシステムなどのモバイルオペレーティングシステム上で実行されるモバイルソフトウェアであってよい。この例では、サードパーティアプリケーション1042は、本明細書で説明する機能性を促進するために、オペレーティングシステム1014などのモバイルオペレーティングシステムにより提供されるAPIコール1024を呼び出してよい。
アプリケーション1020は、内蔵オペレーティングシステム機能(例えば、カーネル1028、サービス1030、および/またはドライバ1032)、ライブラリ(例えば、システムライブラリ1034、APIライブラリ1036、および他のライブラリ1038)、フレームワーク/ミドルウェア1018を利用して、システムのユーザと相互作用するユーザインタフェースを作成してよい。代替的または追加的に、幾つかのシステムでは、ユーザとの相互作用がプレゼンテーション層1044などのプレゼンテーション層を介して行われてよい。これらのシステムでは、アプリケーション/モジュール「ロジック」は、ユーザと相互作用するアプリケーション/モジュールの側面から分離され得る。
幾つかのソフトウェアアーキテクチャは、仮想マシンを利用する。図10の例では、これは仮想マシン1048により示される。仮想マシンは、アプリケーション/モジュールがあたかもハードウェアコンピューティングデバイス上で実行されているかのように実行され得るソフトウェア環境を作成する。仮想マシンは、ホストオペレーティングシステム(オペレーティングシステム1014)によりホストされ、通常は、常にではないが、仮想マシンモニタ1046を有しており、仮想マシンモニタ1046は、仮想マシン1048の動作、および、ホストオペレーティングシステム(すなわち、オペレーティングシステム1014)とのインタフェースを管理する。ソフトウェアアーキテクチャは、オペレーティングシステム1050、ライブラリ1052、フレームワーク/ミドルウェア1054、アプリケーション1056、および/またはプレゼンテーション層1058などの仮想マシン1048内で実行される。仮想マシン1048内で実行されるソフトウェアアーキテクチャのこれらの層は、前述した対応する層と同じであってもよいし、異なっていてもよい。
[モジュール、コンポーネント、およびロジック]
[モジュール、コンポーネント、およびロジック]
本明細書では、特定の実施形態が、ロジックまたは幾つかのコンポーネント、モジュールもしくはメカニズムを含むものとして説明されている。モジュールは、ソフトウェアモジュール(例えば、(1)非一時的な機械可読媒体上または(2)伝送信号内に具現化されるコード)またはハードウェア実装モジュールを構成してよい。ハードウェア実装モジュールは、特定の動作を実行できる有形のユニットであり、特定の方式で構成または配置されてよい。例示的な実施形態では、1つまたは複数のコンピュータシステム(例えば、スタンドアロンコンピュータシステム、クライアントコンピュータシステム、またはサーバコンピュータシステム)、または、1つまたは複数のハードウェアプロセッサが、本明細書で説明するような特定の動作を実行するように動作するハードウェア実装モジュールとして、ソフトウェア(例えば、アプリケーションまたはアプリケーション部分)により構成されてよい。
様々な実施形態において、ハードウェア実装モジュールが機械的または電子的に実装されてよい。例えば、ハードウェア実装モジュールは、特定の動作を実行するように(例えば、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC)などの特殊目的プロセッサとして)永続的に構成される専用の回路またはロジックを含んでよい。ハードウェア実装モジュールは、特定の動作を実行するようにソフトウェアにより一時的に構成される(例えば、汎用プロセッサまたは別のプログラマブルプロセッサ内に包含されるような)プログラマブルなロジックまたは回路を含んでもよい。専用の永続的に構成される回路、または一時的に構成される(例えば、ソフトウェアにより構成される)回路にハードウェア実装モジュールを機械的に実装する決定は、コストおよび時間の考慮に左右され得ることが解るであろう。
従って、「ハードウェア実装モジュール」という用語は、特定の方式で動作するように、および/または、本明細書で説明する特定の動作を実行するように、物理的に構築されるか、永続的に構成される(例えば、ハードウェアに組み込まれる)か、または、一時的または一過的に構成される(例えば、プログラムされる)エンティティである有形のエンティティを包含するものと理解されたい。ハードウェア実装モジュールが一時的に構成される(例えば、プログラムされる)実施形態を考慮すると、ハードウェア実装モジュールの各々を任意のある時点で構成またはインスタンス化する必要はない。例えば、ソフトウェアを使用して構成される汎用プロセッサがハードウェア実装モジュールに含まれる場合は、汎用プロセッサは、それぞれの異なるハードウェア実装モジュールとして異なる時間に構成されてよい。従って、ソフトウェアは、例えば、特定のハードウェア実装モジュールをある時点で構成し、かつ、異なるハードウェア実装モジュールを異なる時点で構成するように、プロセッサを構成してよい。
ハードウェア実装モジュールは、他のハードウェア実装モジュールに情報を提供し、他のハードウェア実装モジュールから情報を受信することができる。従って、説明したハードウェア実装モジュールは、通信可能に連結されるものと見なされてよい。係るハードウェア実装モジュールのうちの複数が同時に存在する場合は、信号伝送を通じて(例えば、ハードウェア実装モジュールを接続する適切な回路およびバスを介して)通信が実現されてよい。複数のハードウェア実装モジュールが異なる時間に構成またはインスタンス化される実施形態では、例えば、複数のハードウェア実装モジュールがアクセスできるメモリ構造における情報の記憶および検索を通じて、係るハードウェア実装モジュール間の通信が実現されてよい。例えば、1つのハードウェア実装モジュールが動作を実行し、その動作の出力を、それが通信可能に連結されるメモリデバイスに記憶してよい。次に、更なるハードウェア実装モジュールが後になってメモリデバイスにアクセスして、記憶された出力を検索および処理してよい。ハードウェア実装モジュールは、入力デバイスまたは出力デバイスとの通信を開始してもよく、リソース(例えば、情報の集合)上で動作することができる。
本明細書で説明する例示的な方法の様々な動作は、関連する動作を実行するように(例えば、ソフトウェアにより)一時的に構成されるか、または永続的に構成される1つまたは複数のプロセッサにより、少なくとも部分的に実行されてよい。係るプロセッサは、一時的に構成されようと永続的に構成されようと、1つまたは複数の動作または機能を実行するように動作するプロセッサ実装モジュールを構成してよい。本明細書で言及するモジュールは、幾つかの例示的な実施形態において、プロセッサ実装モジュールを含んでよい。
同様に、本明細書で説明する方法は、少なくとも部分的にプロセッサで実装されてよい。例えば、方法の動作のうちの少なくとも幾つかが、1つまたは複数のプロセッサまたはプロセッサ実装モジュールにより実行されてよい。これらの動作のうちの幾つかの実行は、単一のマシン内に存在するだけでなく、幾つかのマシンに展開される、1つまたは複数のプロセッサ間に分散されてよい。幾つかの例示的な実施形態では、1つまたは複数のプロセッサが単一のロケーション(例えば、住居環境、オフィス環境、またはサーバファーム内)に設置されてよいが、他の実施形態では、複数のプロセッサが幾つかのロケーションに分散されてよい。
1つまたは複数のプロセッサは、「クラウドコンピューティング」環境で、または「ソフトウェア・アズ・ア・サービス」(SaaS)として、関連する動作の実行をサポートするように動作してもよい。例えば、これらの動作のうちの少なくとも幾つかが(プロセッサを含むマシンの例として)コンピュータ群により実行されてよく、これらの動作は、ネットワーク(例えば、インターネット)および1つまたは複数の適切なインタフェース(例えば、API)を介してアクセス可能である。
[電子装置およびシステム]
[電子装置およびシステム]
例示的な実施形態は、デジタル電子回路に実装されてもよいし、コンピュータハードウェア、ファームウェア、もしくはソフトウェア、またはそれらの組み合わせに実装されてもよい。例示的な実施形態は、データ処理装置(例えば、プログラマブルプロセッサ、コンピュータ、または複数のコンピュータ)による実行のため、または、データ処理装置の動作を制御するために、情報担体、例えば、機械可読媒体に有形に具現化されるコンピュータプログラムなどのコンピュータプログラム製品を使用して実装されてよい。
コンピュータプログラムは、コンパイル言語または解釈言語を含む任意の形態のプログラミング言語で書き込まれてよく、スタンドアロンプログラムとして、または、モジュール、サブルーチン、もしくはコンピューティング環境での使用に適した他のユニットとして、任意の形態で展開されてよい。コンピュータプログラムは、1つのコンピュータ上、または1つのサイトにおける複数のコンピュータ上で実行されるように展開されてもよいし、複数のサイトに分散され、かつ、通信ネットワークにより相互接続されてもよい。
例示的な実施形態では、入力データ上での動作と出力の生成とを行うことにより機能を実行するためにコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサにより動作が実行されてよい。特殊目的ロジック回路、例えば、FPGAまたはASICにより、方法の動作が実行されてもよく、特殊目的ロジック回路、例えば、FPGAまたはASICとして、例示的な実施形態の装置が実装されてよい。
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは概して、互いに遠く離れており、通常は通信ネットワークを介して相互作用する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、かつ、互いにクライアントとサーバとの関係を持つ、コンピュータプログラムのおかげで生まれる。プログラマブルコンピューティングシステムを展開する実施形態では、ハードウェアおよびソフトウェアアーキテクチャの両方が考慮に値することが解るであろう。具体的には、特定の機能性を、永続的に構成されるハードウェア(例えば、ASIC)に実装するか、一時的に構成されるハードウェア(例えば、ソフトウェアとプログラマブルプロセッサとの組み合わせ)に実装するか、または永続的に構成されるハードウェアと一時的に構成されるハードウェアとの組み合わせに実装するかの選択は、設計上の選択であってよいことが解るであろう。以下には、様々な例示的な実施形態における展開され得るハードウェア(例えば、マシン)およびソフトウェアアーキテクチャについて記載する。
[例示的なマシンアーキテクチャおよび機械可読媒体]
[例示的なマシンアーキテクチャおよび機械可読媒体]
図11は、本明細書で説明する方法論のいずれか1つまたは複数をマシンに実行させるための命令1124が実行され得るコンピュータシステム1100の例示的な形態のマシンのブロック図である。代替的な実施形態では、マシンはスタンドアロンデバイスとして動作するか、または他のマシンに接続(例えば、ネットワーク接続)されてよい。ネットワーク接続された展開では、マシンは、サーバクライアントネットワーク環境においてサーバまたはクライアントマシンとして動作してもよいし、ピアツーピア(または分散)ネットワーク環境においてピアマシンとして動作してもよい。マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、携帯電話、ウェブ機器、ネットワークルータ、スイッチ、もしくはブリッジ、または任意のマシンにより実行される動作を指定する命令(シーケンシャルまたは他の状態)を実行できるマシンであってよい。更に、単一のマシンのみが図示されているが、「マシン」という用語はまた、本明細書で説明する方法論のいずれか1つまたは複数を実行するための命令の1つの組(または複数の組)を個々にまたは共同で実行するマシンの任意の集合を含んでいると解釈されるものとする。
例示的なコンピュータシステム1100は、プロセッサ1102(例えば、中央処理装置(CPU)、グラフィックス処理装置(GPU)、またはその両方)、メインメモリ1104、およびスタティックメモリ1106を含み、これらはバス1108を介して互いに通信する。コンピュータシステム1100は、ビデオディスプレイユニット1110(例えば、液晶ディスプレイ(LCD)または陰極線管(CRT))を更に含んでよい。コンピュータシステム1100は、英数字入力デバイス1112(例えば、キーボードまたはタッチセンサ式ディスプレイ画面)、ユーザインタフェース(UI)ナビゲーション(またはカーソル制御)デバイス1114(例えば、マウス)、記憶ユニット1116、信号生成デバイス1118(例えば、スピーカ)、およびネットワークインタフェースデバイス1120も含む。
[機械可読媒体]
[機械可読媒体]
記憶ユニット1116は、本明細書で説明する方法論または機能のいずれか1つまたは複数を具現化するか、またはそれにより利用される、データ構造および命令1124(例えば、ソフトウェア)の1つまたは複数の組が記憶される機械可読媒体1122を含む。命令1124は、メインメモリ1104内、および/またはコンピュータシステム1100による実行中のプロセッサ1102内に、完全にまたは少なくとも部分的に存在してもよく、メインメモリ1104およびプロセッサ1102も機械可読媒体1122を構成する。
ある例示的な実施形態では、機械可読媒体1122が単一の媒体であると示されているが、「機械可読媒体」という用語は、1つまたは複数の命令1124またはデータ構造を記憶する単一の媒体または複数の媒体(例えば、集中データベースもしくは分散データベース、並びに/または、関連付けられるキャッシュおよびサーバ)を含んでよい。「機械可読媒体」という用語はまた、マシンで実行するための命令1124を記憶、エンコード、または運搬でき、かつ、本開示の方法論のいずれか1つまたは複数をマシンに実行させる、または、係る命令1124により利用されるか、または係る命令1124に関連付けられるデータ構造を記憶、エンコード、または運搬できる、任意の有形媒体を含んでいると解釈されるものとする。従って、「機械可読媒体」という用語は、以下に限定されるわけではないが、ソリッドステートメモリ、光媒体、および磁気媒体を含んでいると解釈されるものとする。機械可読媒体1122の具体的な例は、半導体メモリデバイス(例えば、消去可能プログラマブル読み取り専用メモリ(EPROM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM))およびフラッシュメモリデバイスを例として含む不揮発性メモリと、内部ハードディスクおよびリムーバブルディスクなどの磁気ディスクと、光磁気ディスクと、コンパクトディスク読み取り専用メモリ(CD-ROM)およびデジタル多用途ディスク読み取り専用メモリ(DVD-ROM)のディスクとを含む。機械可読媒体は伝送媒体ではない。
[伝送媒体]
[伝送媒体]
命令1124は更に、伝送媒体を使用して通信ネットワーク1126経由で送信または受信されてよい。命令1124は、ネットワークインタフェースデバイス1120と、幾つかの周知の転送プロトコル(例えば、ハイパーテキストトランスポートプロトコル(HTTP))のいずれか1つとを使用して送信されてよい。通信ネットワークの例には、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、携帯電話網、基本電話(POTS)ネットワーク、および無線データネットワーク(例えば、Wi-FiおよびWiMaxネットワーク)が含まれる。「伝送媒体」という用語は、マシンで実行するための命令1124を記憶、エンコード、または運搬でき、かつ、係るソフトウェアの通信を容易にするデジタル通信信号もしくはアナログ通信信号または他の無形媒体を含む、任意の無形媒体を含んでいると解釈されるものとする。
本明細書では特定の例示的な実施形態について説明しているが、本開示のより広い趣旨および範囲から逸脱することなく、これらの実施形態に対して様々な修正および変更が行われ得ることが明白であろう。従って、本明細書および図面は、制限的な意味ではなく例示的な意味で見なされるべきである。本明細書の一部を形成する添付図面は、限定としてではなく例示として、主題が実践され得る特定の実施形態を示している。示されている実施形態は、当業者が本明細書に開示する教示を実践できる程度に十分に詳細に説明されている。他の実施形態がそこから利用および導出されてよく、その結果、本開示の範囲から逸脱することなく、構造的かつ論理的な置換および変更が行われてよい。従って、この詳細な説明は、限定的な意味で解釈されるべきではなく、様々な実施形態の範囲は、添付の特許請求の範囲が権利を与えられる同等物の全範囲と共に、係る特許請求の範囲によってのみ定義される。
本明細書では本発明の主題の係る実施形態が単に便宜上「発明」という用語で個々におよび/または集合的に呼ばれる場合があり、実際には1つより多くのものが開示される場合に本願の範囲を自発的に任意の単一の発明または発明概念に限定することを意図しているわけではない。故に、本明細書では特定の実施形態について図示および説明してきたが、同じ目的を実現するために算出される任意の配置が、示されている特定の実施形態の代わりになり得ることを理解されたい。本開示は、様々な実施形態のありとあらゆる適応または変形を網羅することを意図している。上述した説明を検討すると、上述した実施形態と、本明細書で特に説明していない他の実施形態との組み合わせが当業者にとって明らかになろう。
マシンメモリ(例えば、コンピュータメモリ)内にビットまたはバイナリデジタル信号として記憶されるデータに対する動作のアルゴリズムまたは象徴的表現の観点から、本明細書で説明する主題の幾つかの部分が提示されてよい。係るアルゴリズムまたは象徴的表現は、データ処理技術の当業者が自らの研究の実体を他の当業者へ伝えるために使用される技術の例である。本明細書で使用する場合、「アルゴリズム」は、所望の結果をもたらす動作または同様の処理の首尾一貫したシーケンスである。この文脈におけるアルゴリズムおよび動作は、物理量の物理的処置を伴う。必ずしもそうとは限らないが、通常、係る量は、マシンで記憶、アクセス、転送、結合、比較すること、または他の方法で操作することができる、電気信号、磁気信号、または光信号の形態を取ってよい。主に一般的使用の理由から、係る信号への言及には、「データ」、「コンテンツ」、「ビット」、「値」、「要素」、「記号」、「文字」、「期間」、「数」、または「数字」などといった単語を使用するのが便利な場合がある。しかしながら、これらの単語は便利なラベルに過ぎず、適切な物理量に関連付けられるべきである。
特に明記しない限り、「処理」、「計算」、「算出」、「決定」、「提示」、または「表示」などといった単語を使用する本明細書での説明は、1つまたは複数のメモリ(例えば、揮発性メモリ、不揮発性メモリ、またはそれらの任意の適切な組み合わせ)、レジスタ、または、情報を受信、記憶、送信、または表示する他のマシンコンポーネント内の物理(例えば、電子、磁気、または光)量として表されるデータを操作または変換するマシン(例えば、コンピュータ)の動作またはプロセスに言及する場合がある。更に、特に明記しない限り、本明細書では、特許文献において見られるような「1つの(aおよびan)」という用語を、1つまたは1つより多くの例を含めるために使用している。最後に、本明細書で使用する場合、「または」という接続詞は、特に明記しない限り、非排他的な「または」を指す。
[他の考えられる項目]
(項目1)
プロセッサと、
上記プロセッサに連結されて命令を記憶する記憶デバイスと
を備えるシステムであって、
上記命令は、上記プロセッサにより実行されると、上記プロセッサに、
信頼できる実行環境(TEE)のプールを事前初期化することであって、上記TEEのプールの各TEEを上記事前初期化することは、上記TEEに上記記憶デバイスのメモリを割り振ることを含む、事前初期化することと、
上記TEEのプールを上記事前初期化することの後に、TEEの要求を受信することと、
上記事前初期化されたTEEのプールから上記TEEを選択することと、
上記要求に応答して、上記選択されたTEEへのアクセスを提供することと
を行わせる、
システム。
(項目2)
上記命令は更に、上記プロセッサに、
上記選択されたTEEへのアクセスを上記提供することの前に、上記選択されたTEEを上記要求内の情報に基づいて修正させる、
項目1に記載のシステム。
(項目3)
上記選択されたTEEを上記修正することは、上記選択されたTEEを開始することを含む、項目2に記載のシステム。
(項目4)
上記選択されたTEEを上記修正することは、上記TEEに上記割り振られたメモリにデータまたはコードをコピーすることを含む、項目2に記載のシステム。
(項目5)
上記選択されたTEEを上記修正することは、
上記選択されたTEEに暗号化キーを割り当てることと、
上記暗号化キーを使用して、上記TEEに割り振られる上記メモリを暗号化することと
を含む、項目2に記載のシステム。
(項目6)
上記選択されたTEEを上記修正することは、
上記選択されたTEEに暗号化キー識別子を割り当てることと、
上記暗号化キー識別子に対応する暗号化キーを使用して、上記TEEに割り振られる上記メモリを暗号化することと
を含む、項目2に記載のシステム。
(項目7)
上記選択されたTEEを上記修正することは、
上記テンプレートTEEからコードマッピングを導出する上記選択されたTEEの安全な拡張ページテーブル(EPT)ブランチを作成すること
を含む、項目2に記載のシステム。
(項目8)
上記TEEのプールを上記事前初期化することは、上記TEEのプールの各TEEにテンプレートTEEの状態をコピーすることを含む、
項目1に記載のシステム。
(項目9)
上記TEEのプールの各TEEに上記テンプレートTEEの上記状態を上記コピーすることは、上記TEEのプールの各TEEについて異なる短期キーで上記コピーされた状態を暗号化することを含む、項目8に記載のシステム。
(項目10)
上記命令は更に、
上記選択されたTEEの実行が完了しているという判断に基づいて、上記選択されたTEEをテンプレートTEEの状態に復元するためのものである、
項目1に記載のシステム。
(項目11)
上記命令は更に、上記プロセッサに、
上記選択されたTEEを解放する要求を受信することと、
上記選択されたTEEを解放する上記要求に応答して、上記TEEのプールに上記選択されたTEEを返すことと
を行わせる、項目1に記載のシステム。
(項目12)
上記命令は更に、上記プロセッサに、
事前計算されたハッシュ値を受信することと、
バイナリメモリ状態のハッシュ値を決定することと、
上記決定されたハッシュ値と上記事前計算されたハッシュ値とに基づいて、安全対策が施されていないメモリから上記選択されたTEEに上記バイナリメモリ状態をコピーすることと
を行わせる、項目1に記載のシステム。
(項目13)
上記命令は更に、上記プロセッサに、
上記選択されたTEEにアクセス制御されたキー識別子を割り当てることと、
上記選択されたTEEの存続期間にわたって、上記割り当てられたアクセス制御されたキー識別子が任意の他のTEEに割り当てられないようにすることと
を行わせる、項目12に記載のシステム。
(項目14)
プロセッサが、信頼できる実行環境(TEE)のプールを事前初期化する段階であって、上記TEEのプールの各TEEを上記事前初期化する段階は、上記TEEに記憶デバイスのメモリを割り振る段階を有する、段階と、
上記TEEのプールを上記事前初期化する段階の後に、上記プロセッサが要求を受信する段階と、
上記要求に応答して、
上記プロセッサが、上記事前初期化されたTEEのプールからTEEを選択し、かつ、
上記プロセッサが、上記選択されたTEEへのアクセスを提供する
段階と
を備える方法。
(項目15)
上記選択されたTEEへのアクセスを上記提供する段階の前に、上記選択されたTEEを上記要求内の情報に基づいて修正する段階
を更に備える、項目14に記載の方法。
(項目16)
上記選択されたTEEを上記修正する段階は、上記選択されたTEEを開始する段階を有する、項目15に記載の方法。
(項目17)
命令を備える非一時的コンピュータ可読媒体であって、上記命令は、プロセッサに、
信頼できる実行環境(TEE)のプールを事前初期化する動作であって、上記TEEのプールの各TEEを上記事前初期化する動作は、上記TEEに記憶デバイスのメモリを割り振る動作を含む、動作と、
上記TEEのプールを上記事前初期化する動作の後に、TEEの要求を受信する動作と、
上記事前初期化されたTEEのプールから上記TEEを選択する動作と、
上記要求に応答して、上記選択されたTEEへのアクセスを提供する動作と
を含む動作を実行させる、非一時的コンピュータ可読媒体。
(項目18)
上記動作は更に、
上記選択されたTEEへのアクセスを上記提供する動作の前に、上記要求内の情報に基づいて、上記選択されたTEEを修正する動作
を含む、項目17に記載の非一時的コンピュータ可読媒体。
(項目19)
上記選択されたTEEを上記修正する動作は、上記選択されたTEEを開始する動作を含む、項目18に記載の非一時的コンピュータ可読媒体。
(項目20)
上記選択されたTEEを上記修正する動作は、上記TEEに上記割り振られたメモリにデータまたはコードをコピーする動作を含む、項目18に記載の非一時的コンピュータ可読媒体。
(項目21)
上記選択されたTEEを上記修正する動作は、
上記選択されたTEEに暗号化キーを割り当てる動作と、
上記暗号化キーを使用して、上記TEEに割り振られる上記メモリを暗号化する動作と
を含む、項目18に記載の非一時的コンピュータ可読媒体。
(項目22)
上記TEEのプールを上記事前初期化する動作は、上記TEEのプールの各TEEにテンプレートTEEの状態をコピーする動作を含む、
項目17に記載の非一時的コンピュータ可読媒体。
(項目23)
上記動作は更に、
上記選択されたTEEの実行が完了しているという判断に基づいて、上記選択されたTEEをテンプレートTEEの状態に復元する動作
を含む、項目17に記載の非一時的コンピュータ可読媒体。
(項目24)
上記動作は更に、
上記選択されたTEEを解放する要求を受信する動作と、
上記選択されたTEEを解放する上記要求に応答して、上記TEEのプールに上記選択されたTEEを返す動作と
を含む、項目17に記載の非一時的コンピュータ可読媒体。
(項目25)
上記動作は更に、
事前計算されたハッシュ値を受信する動作と、
バイナリメモリ状態のハッシュ値を決定する動作と、
上記決定されたハッシュ値と上記事前計算されたハッシュ値とに基づいて、安全対策が施されていないメモリから上記選択されたTEEに上記バイナリメモリ状態をコピーする動作と
を含む、項目17に記載の非一時的コンピュータ可読媒体。
[他の考えられる項目]
(項目1)
プロセッサと、
上記プロセッサに連結されて命令を記憶する記憶デバイスと
を備えるシステムであって、
上記命令は、上記プロセッサにより実行されると、上記プロセッサに、
信頼できる実行環境(TEE)のプールを事前初期化することであって、上記TEEのプールの各TEEを上記事前初期化することは、上記TEEに上記記憶デバイスのメモリを割り振ることを含む、事前初期化することと、
上記TEEのプールを上記事前初期化することの後に、TEEの要求を受信することと、
上記事前初期化されたTEEのプールから上記TEEを選択することと、
上記要求に応答して、上記選択されたTEEへのアクセスを提供することと
を行わせる、
システム。
(項目2)
上記命令は更に、上記プロセッサに、
上記選択されたTEEへのアクセスを上記提供することの前に、上記選択されたTEEを上記要求内の情報に基づいて修正させる、
項目1に記載のシステム。
(項目3)
上記選択されたTEEを上記修正することは、上記選択されたTEEを開始することを含む、項目2に記載のシステム。
(項目4)
上記選択されたTEEを上記修正することは、上記TEEに上記割り振られたメモリにデータまたはコードをコピーすることを含む、項目2に記載のシステム。
(項目5)
上記選択されたTEEを上記修正することは、
上記選択されたTEEに暗号化キーを割り当てることと、
上記暗号化キーを使用して、上記TEEに割り振られる上記メモリを暗号化することと
を含む、項目2に記載のシステム。
(項目6)
上記選択されたTEEを上記修正することは、
上記選択されたTEEに暗号化キー識別子を割り当てることと、
上記暗号化キー識別子に対応する暗号化キーを使用して、上記TEEに割り振られる上記メモリを暗号化することと
を含む、項目2に記載のシステム。
(項目7)
上記選択されたTEEを上記修正することは、
上記テンプレートTEEからコードマッピングを導出する上記選択されたTEEの安全な拡張ページテーブル(EPT)ブランチを作成すること
を含む、項目2に記載のシステム。
(項目8)
上記TEEのプールを上記事前初期化することは、上記TEEのプールの各TEEにテンプレートTEEの状態をコピーすることを含む、
項目1に記載のシステム。
(項目9)
上記TEEのプールの各TEEに上記テンプレートTEEの上記状態を上記コピーすることは、上記TEEのプールの各TEEについて異なる短期キーで上記コピーされた状態を暗号化することを含む、項目8に記載のシステム。
(項目10)
上記命令は更に、
上記選択されたTEEの実行が完了しているという判断に基づいて、上記選択されたTEEをテンプレートTEEの状態に復元するためのものである、
項目1に記載のシステム。
(項目11)
上記命令は更に、上記プロセッサに、
上記選択されたTEEを解放する要求を受信することと、
上記選択されたTEEを解放する上記要求に応答して、上記TEEのプールに上記選択されたTEEを返すことと
を行わせる、項目1に記載のシステム。
(項目12)
上記命令は更に、上記プロセッサに、
事前計算されたハッシュ値を受信することと、
バイナリメモリ状態のハッシュ値を決定することと、
上記決定されたハッシュ値と上記事前計算されたハッシュ値とに基づいて、安全対策が施されていないメモリから上記選択されたTEEに上記バイナリメモリ状態をコピーすることと
を行わせる、項目1に記載のシステム。
(項目13)
上記命令は更に、上記プロセッサに、
上記選択されたTEEにアクセス制御されたキー識別子を割り当てることと、
上記選択されたTEEの存続期間にわたって、上記割り当てられたアクセス制御されたキー識別子が任意の他のTEEに割り当てられないようにすることと
を行わせる、項目12に記載のシステム。
(項目14)
プロセッサが、信頼できる実行環境(TEE)のプールを事前初期化する段階であって、上記TEEのプールの各TEEを上記事前初期化する段階は、上記TEEに記憶デバイスのメモリを割り振る段階を有する、段階と、
上記TEEのプールを上記事前初期化する段階の後に、上記プロセッサが要求を受信する段階と、
上記要求に応答して、
上記プロセッサが、上記事前初期化されたTEEのプールからTEEを選択し、かつ、
上記プロセッサが、上記選択されたTEEへのアクセスを提供する
段階と
を備える方法。
(項目15)
上記選択されたTEEへのアクセスを上記提供する段階の前に、上記選択されたTEEを上記要求内の情報に基づいて修正する段階
を更に備える、項目14に記載の方法。
(項目16)
上記選択されたTEEを上記修正する段階は、上記選択されたTEEを開始する段階を有する、項目15に記載の方法。
(項目17)
命令を備える非一時的コンピュータ可読媒体であって、上記命令は、プロセッサに、
信頼できる実行環境(TEE)のプールを事前初期化する動作であって、上記TEEのプールの各TEEを上記事前初期化する動作は、上記TEEに記憶デバイスのメモリを割り振る動作を含む、動作と、
上記TEEのプールを上記事前初期化する動作の後に、TEEの要求を受信する動作と、
上記事前初期化されたTEEのプールから上記TEEを選択する動作と、
上記要求に応答して、上記選択されたTEEへのアクセスを提供する動作と
を含む動作を実行させる、非一時的コンピュータ可読媒体。
(項目18)
上記動作は更に、
上記選択されたTEEへのアクセスを上記提供する動作の前に、上記要求内の情報に基づいて、上記選択されたTEEを修正する動作
を含む、項目17に記載の非一時的コンピュータ可読媒体。
(項目19)
上記選択されたTEEを上記修正する動作は、上記選択されたTEEを開始する動作を含む、項目18に記載の非一時的コンピュータ可読媒体。
(項目20)
上記選択されたTEEを上記修正する動作は、上記TEEに上記割り振られたメモリにデータまたはコードをコピーする動作を含む、項目18に記載の非一時的コンピュータ可読媒体。
(項目21)
上記選択されたTEEを上記修正する動作は、
上記選択されたTEEに暗号化キーを割り当てる動作と、
上記暗号化キーを使用して、上記TEEに割り振られる上記メモリを暗号化する動作と
を含む、項目18に記載の非一時的コンピュータ可読媒体。
(項目22)
上記TEEのプールを上記事前初期化する動作は、上記TEEのプールの各TEEにテンプレートTEEの状態をコピーする動作を含む、
項目17に記載の非一時的コンピュータ可読媒体。
(項目23)
上記動作は更に、
上記選択されたTEEの実行が完了しているという判断に基づいて、上記選択されたTEEをテンプレートTEEの状態に復元する動作
を含む、項目17に記載の非一時的コンピュータ可読媒体。
(項目24)
上記動作は更に、
上記選択されたTEEを解放する要求を受信する動作と、
上記選択されたTEEを解放する上記要求に応答して、上記TEEのプールに上記選択されたTEEを返す動作と
を含む、項目17に記載の非一時的コンピュータ可読媒体。
(項目25)
上記動作は更に、
事前計算されたハッシュ値を受信する動作と、
バイナリメモリ状態のハッシュ値を決定する動作と、
上記決定されたハッシュ値と上記事前計算されたハッシュ値とに基づいて、安全対策が施されていないメモリから上記選択されたTEEに上記バイナリメモリ状態をコピーする動作と
を含む、項目17に記載の非一時的コンピュータ可読媒体。
Claims (25)
- 信頼できる実行環境(TEE)を提供するシステムであって、前記システムは、
プロセッサと、
前記プロセッサに連結されて命令を記憶する記憶デバイスと
を備え、
前記命令は、前記プロセッサにより実行されると、前記プロセッサに、
TEEのプールを事前初期化することであって、前記TEEのプールの各TEEを前記事前初期化することは、前記TEEに前記記憶デバイスのメモリを割り振ることを含む、事前初期化することと、
前記TEEのプールを前記事前初期化することの後に、TEEの要求を受信することと、
前記事前初期化されたTEEのプールから前記TEEを選択することと、
前記要求に応答して、前記選択されたTEEへのアクセスを提供することと
を行わせる、
システム。 - 前記命令は更に、前記プロセッサに、
前記選択されたTEEへのアクセスを前記提供することの前に、前記選択されたTEEを前記要求内の情報に基づいて修正させる、
請求項1に記載のシステム。 - 前記選択されたTEEを前記修正することは、前記選択されたTEEを開始することを含む、請求項2に記載のシステム。
- 前記選択されたTEEを前記修正することは、前記TEEに前記割り振られたメモリにデータまたはコードをコピーすることを含む、請求項2または3に記載のシステム。
- 前記選択されたTEEを前記修正することは、
前記選択されたTEEに暗号化キーを割り当てることと、
前記暗号化キーを使用して、前記TEEに割り振られる前記メモリを暗号化することと
を含む、請求項2から4のいずれか一項に記載のシステム。 - 前記選択されたTEEを前記修正することは、
前記選択されたTEEに暗号化キー識別子を割り当てることと、
前記暗号化キー識別子に対応する暗号化キーを使用して、前記TEEに割り振られる前記メモリを暗号化することと
を含む、請求項2から5のいずれか一項に記載のシステム。 - 前記選択されたTEEを前記修正することは、
テンプレートのTEEからコードマッピングを導出する前記選択されたTEEの安全な拡張ページテーブル(EPT)ブランチを作成すること
を含む、請求項2から6のいずれか一項に記載のシステム。 - 前記TEEのプールを前記事前初期化することは、前記TEEのプールの各TEEにテンプレートTEEの状態をコピーすることを含む、
請求項1から7のいずれか一項に記載のシステム。 - 前記TEEのプールの各TEEに前記テンプレートTEEの前記状態を前記コピーすることは、前記TEEのプールの各TEEについて異なる短期キーで前記コピーされた状態を暗号化することを含む、請求項8に記載のシステム。
- 前記命令は更に、
前記選択されたTEEの実行が完了しているという判断に基づいて、前記選択されたTEEをテンプレートTEEの状態に復元するためのものである、
請求項1から9のいずれか一項に記載のシステム。 - 前記命令は更に、前記プロセッサに、
前記選択されたTEEを解放する要求を受信することと、
前記選択されたTEEを解放する前記要求に応答して、前記TEEのプールに前記選択されたTEEを返すことと
を行わせる、請求項1から10のいずれか一項に記載のシステム。 - 前記命令は更に、前記プロセッサに、
事前計算されたハッシュ値を受信することと、
バイナリメモリ状態のハッシュ値を決定することと、
前記決定されたハッシュ値と前記事前計算されたハッシュ値とに基づいて、安全対策が施されていないメモリから前記選択されたTEEに前記バイナリメモリ状態をコピーすることと
を行わせる、請求項1から11のいずれか一項に記載のシステム。 - 前記命令は更に、前記プロセッサに、
前記選択されたTEEにアクセス制御されたキー識別子を割り当てることと、
前記選択されたTEEの存続期間にわたって、前記割り当てられたアクセス制御されたキー識別子が任意の他のTEEに割り当てられないようにすることと
を行わせる、請求項12に記載のシステム。 - 信頼できる実行環境(TEE)を提供するシステムであって、前記システムは、
プロセッサと、
前記プロセッサに連結されて命令を記憶する記憶デバイスと
を備え、
前記命令は、前記プロセッサにより実行されると、前記プロセッサに、
TEEのプールを事前初期化することと、
前記記憶デバイスに記憶され、かつ、読み取り専用とマーク付けされる、テンプレートTEEを作成することと、
要求を受信することと、
前記要求に応答して、
前記テンプレートTEEをコピーしてTEEを作成し、かつ、
前記作成されたTEEへのアクセスを提供する
ことと
を行わせる、
システム。 - 前記テンプレートTEEは、ファンクション・アズ・ア・サービス(FaaS)の初期のメモリコンテンツおよびレイアウトを含む、請求項14に記載のシステム。
- 前記プロセッサは、前記テンプレートTEEの実行を防止する、請求項14または15に記載のシステム。
- 信頼できる実行環境(TEE)を提供する方法であって、
プロセッサが、第1暗号化キーを使用してデータおよびコードを暗号化する段階と、
前記暗号化されたデータおよびコードを記憶デバイスに記憶する段階と、
前記プロセッサが要求を受信する段階と、
前記要求に応答して、
TEEに第2暗号化キーを割り当てる段階と、
前記第1暗号化キーを使用して、前記暗号化されたデータおよびコードを復号する段階と、
前記第2暗号化キーを使用して、前記復号されたデータおよびコードを暗号化する段階と、
前記TEEへのアクセスを提供する段階と、
を備える方法。 - 選択された前記TEEへのアクセスを前記提供する段階の前に、前記選択されたTEEを前記要求内の情報に基づいて修正する段階
を更に備える、請求項17に記載の方法。 - 信頼できる実行環境(TEE)を提供する方法であって、
プロセッサが、TEEのプールを事前初期化する段階であって、前記TEEのプールの各TEEを前記事前初期化する段階は、前記TEEに記憶デバイスのメモリを割り振る段階を有する、段階と、
前記TEEのプールを前記事前初期化する段階の後に、前記プロセッサが要求を受信する段階と、
前記要求に応答して、
前記プロセッサが、前記事前初期化されたTEEのプールからTEEを選択する段階と、
前記プロセッサが、前記選択されたTEEへのアクセスを提供する段階と、
を備える方法。 - 前記選択されたTEEへのアクセスを前記提供する段階の前に、前記選択されたTEEを前記要求内の情報に基づいて修正する段階
を更に備える、請求項19に記載の方法。 - 前記選択されたTEEを前記修正する段階は、前記選択されたTEEを開始する段階を有する、請求項20に記載の方法。
- 前記選択されたTEEを前記修正する段階は、前記TEEに前記割り振られたメモリにデータまたはコードをコピーする段階を有する、請求項20または21に記載の方法。
- 前記選択されたTEEを前記修正する段階は、
前記選択されたTEEに暗号化キーを割り当てる段階と、
前記暗号化キーを使用して、前記TEEに割り振られる前記メモリを暗号化する段階と
を有する、請求項20から22のいずれか一項に記載の方法。 - 前記TEEのプールを前記事前初期化する段階は、前記TEEのプールの各TEEにテンプレートTEEの状態をコピーする段階を有する、
請求項19から23のいずれか一項に記載の方法。 - 前記選択されたTEEの実行が完了しているという判断に基づいて、前記選択されたTEEをテンプレートTEEの状態に復元する段階
を更に備える、請求項19から24のいずれか一項に記載の方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022174288A JP2023015177A (ja) | 2020-12-22 | 2022-10-31 | ハードウェアの信頼できる実行環境の待ち時間の低減 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/131,716 | 2020-12-22 | ||
US17/131,716 US20210110070A1 (en) | 2020-12-22 | 2020-12-22 | Reducing latency of hardware trusted execution environments |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022174288A Division JP2023015177A (ja) | 2020-12-22 | 2022-10-31 | ハードウェアの信頼できる実行環境の待ち時間の低減 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022099241A true JP2022099241A (ja) | 2022-07-04 |
Family
ID=75383997
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021167009A Pending JP2022099241A (ja) | 2020-12-22 | 2021-10-11 | ハードウェアの信頼できる実行環境の待ち時間の低減 |
JP2022174288A Pending JP2023015177A (ja) | 2020-12-22 | 2022-10-31 | ハードウェアの信頼できる実行環境の待ち時間の低減 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022174288A Pending JP2023015177A (ja) | 2020-12-22 | 2022-10-31 | ハードウェアの信頼できる実行環境の待ち時間の低減 |
Country Status (6)
Country | Link |
---|---|
US (2) | US20210110070A1 (ja) |
EP (2) | EP4020156A1 (ja) |
JP (2) | JP2022099241A (ja) |
KR (2) | KR20220091356A (ja) |
CN (2) | CN115794375A (ja) |
TW (2) | TW202227998A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847253B2 (en) * | 2020-11-30 | 2023-12-19 | Red Hat, Inc. | Efficient launching of trusted execution environments |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106415575B (zh) * | 2014-06-25 | 2020-03-20 | 英特尔公司 | 硬件配置报告系统 |
US20160036826A1 (en) * | 2014-07-29 | 2016-02-04 | Mcafee, Inc. | Secure content packaging using multiple trusted execution environments |
US9842065B2 (en) * | 2015-06-15 | 2017-12-12 | Intel Corporation | Virtualization-based platform protection technology |
US10528722B2 (en) * | 2017-05-11 | 2020-01-07 | Microsoft Technology Licensing, Llc | Enclave pool shared key |
US20190140846A1 (en) * | 2017-11-03 | 2019-05-09 | Microsoft Technology Licensing, Llc | Provisioning trusted execution environment(s) based on chain of trust including platform |
US11386017B2 (en) * | 2018-06-20 | 2022-07-12 | Intel Corporation | Technologies for secure authentication and programming of accelerator devices |
GB2579682B (en) * | 2019-03-25 | 2021-03-24 | Trustonic Ltd | Trusted execution environment migration method |
US11556654B2 (en) * | 2019-12-23 | 2023-01-17 | Mediatek Inc. | Security schemes for multiple trusted-execution-environments (TEEs) and multiple rich-execution-environments (REEs) |
US11163569B2 (en) * | 2019-12-28 | 2021-11-02 | Intel Corporation | Hardware apparatuses, methods, and systems for individually revocable capabilities for enforcing temporal memory safety |
US11436343B2 (en) * | 2019-12-31 | 2022-09-06 | Arm Limited | Device, system, and method of policy enforcement for rich execution environment |
US11620411B2 (en) * | 2020-03-24 | 2023-04-04 | Red Hat, Inc. | Elastic launch for trusted execution environments |
-
2020
- 2020-12-22 US US17/131,716 patent/US20210110070A1/en active Pending
-
2021
- 2021-09-16 EP EP21197114.8A patent/EP4020156A1/en active Pending
- 2021-09-16 EP EP22202941.5A patent/EP4145267A1/en active Pending
- 2021-09-23 TW TW110135357A patent/TW202227998A/zh unknown
- 2021-09-23 TW TW111142532A patent/TW202311999A/zh unknown
- 2021-10-11 JP JP2021167009A patent/JP2022099241A/ja active Pending
- 2021-11-18 CN CN202211346878.1A patent/CN115794375A/zh active Pending
- 2021-11-18 CN CN202111369972.4A patent/CN114661452A/zh active Pending
- 2021-11-22 KR KR1020210161155A patent/KR20220091356A/ko unknown
-
2022
- 2022-09-22 US US17/950,826 patent/US20230015537A1/en active Pending
- 2022-10-25 KR KR1020220138601A patent/KR20220151126A/ko active Application Filing
- 2022-10-31 JP JP2022174288A patent/JP2023015177A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2023015177A (ja) | 2023-01-31 |
TW202227998A (zh) | 2022-07-16 |
US20230015537A1 (en) | 2023-01-19 |
CN115794375A (zh) | 2023-03-14 |
KR20220091356A (ko) | 2022-06-30 |
CN114661452A (zh) | 2022-06-24 |
KR20220151126A (ko) | 2022-11-14 |
EP4020156A1 (en) | 2022-06-29 |
EP4145267A1 (en) | 2023-03-08 |
TW202311999A (zh) | 2023-03-16 |
US20210110070A1 (en) | 2021-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7196132B2 (ja) | データプロセッシング(dp)アクセラレータのための難読化を用いたデータ伝送 | |
US11783081B2 (en) | Secure public cloud | |
US9898601B2 (en) | Allocation of shared system resources | |
JP6248153B2 (ja) | 信頼レベルのアクティブ化 | |
US7836299B2 (en) | Virtualization of software configuration registers of the TPM cryptographic processor | |
KR102244645B1 (ko) | 인증된 변수의 관리 | |
KR101384085B1 (ko) | 보안 브라우저 기반 애플리케이션 | |
EP3047375B1 (en) | Virtual machine manager facilitated selective code integrity enforcement | |
US20070079120A1 (en) | Dynamic creation and hierarchical organization of trusted platform modules | |
US8799898B2 (en) | Methods and apparatus for binding applications to a cloud computing environment | |
US20150244717A1 (en) | Trusted virtual computing system | |
CN110612699B (zh) | 用于保护计算系统存储器的方法和系统以及存储介质 | |
JP2022522678A (ja) | セキュア実行ゲスト所有者環境制御 | |
US11924210B2 (en) | Protected resource authorization using autogenerated aliases | |
JP2022100217A (ja) | 信頼できる実行環境におけるメモリの隔離 | |
JP2018505494A (ja) | マルチモード・システム・オン・チップ | |
US10795974B2 (en) | Memory assignment for guest operating systems | |
US10606813B2 (en) | Systems and methods for securely managing program execution | |
KR102565414B1 (ko) | 데이터 처리 가속기에 사용되는, 난독화 유닛에 의해 난독화 를 진행하는 데이터 전송 | |
JP2022099241A (ja) | ハードウェアの信頼できる実行環境の待ち時間の低減 | |
US20240095338A1 (en) | Isolated runtime environments for securing secrets used to access remote resources from compute instances | |
CN117827475A (zh) | 用于进程间通信的方法、装置、电子设备和介质 |