CN115794375A - 减小硬件可信执行环境的时延 - Google Patents
减小硬件可信执行环境的时延 Download PDFInfo
- Publication number
- CN115794375A CN115794375A CN202211346878.1A CN202211346878A CN115794375A CN 115794375 A CN115794375 A CN 115794375A CN 202211346878 A CN202211346878 A CN 202211346878A CN 115794375 A CN115794375 A CN 115794375A
- Authority
- CN
- China
- Prior art keywords
- tee
- tees
- enclave
- workload
- 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
- 230000015654 memory Effects 0.000 claims abstract description 134
- 238000000034 method Methods 0.000 claims abstract description 58
- 238000012545 processing Methods 0.000 claims description 40
- 230000004044 response Effects 0.000 claims description 40
- 230000006870 function Effects 0.000 abstract description 46
- 230000001419 dependent effect Effects 0.000 abstract description 8
- 238000013175 transesophageal echocardiography Methods 0.000 description 39
- 238000010586 diagram Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 18
- 230000002829 reductive effect Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000004224 protection Effects 0.000 description 5
- 230000005291 magnetic effect Effects 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000001010 compromised effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004043 responsiveness Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- 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/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
- 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/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
- 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
- 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
- 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)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Automation & Control Theory (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及减小硬件可信执行环境的时延。示例方法和系统针对的是减小提供可信执行环境(TEE)的时延。初始化TEE包括在TEE开始执行之前的多个步骤。除了依工作负载而定的初始化以外,还要执行独立于工作负载的初始化,例如向TEE添加存储器。在函数即服务(FaaS)环境中,TEE的很大一部分是独立于工作负载的,从而可以在接收工作负载之前被执行。在TEE初始化期间执行的某些步骤对于某些类别的工作负载是相同的。从而,TEE初始化序列的共同部分可以在TEE被请求之前被执行。当为该类别中的工作负载请求TEE,并且知道为其特定目的而专门化TEE的部分时,执行初始化TEE的最终步骤。
Description
分案申请说明
本申请是申请日为2021年11月18日、申请号为202111369972.4、名称为“减小硬件可信执行环境的时延”的发明专利申请的分案申请。
技术领域
本文公开的主题概括而言涉及硬件可信执行环境(trusted executionenvironment,TEE)。具体而言,本公开涉及用于减小硬件TEE的时延的系统和方法。
背景技术
硬件权限级别可被处理器用来限制在设备上运行的应用的存储器访问。操作系统以较高的权限级别运行,并且可以访问设备的所有存储器,并且为其他应用定义存储器范围。运行在较低权限级别的应用,被限制在操作系统定义的范围内访问存储器,而不能够访问其他应用或操作系统的存储器。然而,没有针对恶意的或被破坏的操作系统来对应用进行保护。
TEE由处理器保护启用,这些处理器保护保证了在TEE内部加载的代码和数据受到保护,不会被在TEE之外执行的代码访问。从而,TEE提供了一个隔离的执行环境,该执行环境在硬件级防止了TEE中包含的数据和代码被恶意软件(包括操作系统)访问。
发明内容
根据本公开的一方面,提供了一种提供可信执行环境(TEE)的系统,所述系统包括:处理器;以及与所述处理器耦合来存储指令的存储设备,所述指令当被所述处理器执行时,使得所述处理器:预初始化TEE的池,所述TEE的池中的每个TEE的预初始化包括为该TEE分配所述存储设备的存储器;在所述TEE的池的预初始化之后,接收对TEE的请求;从预初始化的TEE的池中选择该TEE;并且响应于所述请求而提供对所选TEE的访问。
根据本公开的一方面,提供了一种提供可信执行环境(TEE)的系统,所述系统包括:处理器;以及与所述处理器耦合来存储指令的存储设备,所述指令当被所述处理器执行时,使得所述处理器:预初始化TEE的池;创建模板TEE,该模板TEE被存储在所述存储设备中并且被标记为只读;接收请求;并且响应于所述请求:拷贝所述模板TEE来创建TEE;并且提供对所创建的TEE的访问。
根据本公开的一方面,提供了一种提供可信执行环境(TEE)的方法,所述方法包括:由处理器利用第一加密密钥来对数据和代码进行加密;将加密的数据和代码存储在存储设备中;由所述处理器接收请求;响应于所述请求:向TEE指派第二加密密钥;利用所述第一加密密钥来对加密的数据和代码进行解密;利用所述第二加密密钥来对解密的数据和代码进行加密;并且提供对所述TEE的访问。
根据本公开的一方面,提供了一种提供可信执行环境(TEE)的方法,所述方法包括:由处理器预初始化TEE的池,所述TEE的池中的每个TEE的预初始化包括为该TEE分配存储设备的存储器;在所述TEE的池的预初始化之后,由所述处理器接收请求;并且响应于所述请求:由所述处理器从预初始化的TEE的池中选择TEE;并且由所述处理器提供对所选TEE的访问。
根据本公开的一方面,提供了一种提供可信执行环境(TEE)的方法,所述方法包括:由处理器创建模板TEE,该模板TEE被存储在存储设备中并且被标记为只读;由所述处理器接收请求;并且响应于所述请求:拷贝所述模板TEE来创建TEE;并且提供对所创建的TEE的访问。
附图说明
在附图中以示例而非限制方式图示了一些实施例。
图1是根据一些示例实施例图示出适合于使用TEE提供函数即服务的服务器的网络环境的网络图。
图2是根据一些示例实施例的适合于根据一些示例实施例减小TEE的时延的函数即服务服务器的框图。
图3是现有技术的基于环的存储器保护的框图。
图4是根据一些示例实施例的适合于减小TEE的时延的基于飞地的存储器保护的框图。
图5是根据一些示例实施例的适合用于减小TEE的时延的数据库模式的框图。
图6是根据一些示例实施例在构建TEE时执行的操作的序列的框图。
图7是根据一些示例实施例图示出适合用于初始化TEE和提供对TEE的访问的方法的操作的流程图。
图8是根据一些示例实施例图示出适合用于初始化TEE和提供对TEE的访问的方法的操作的流程图。
图9是根据一些示例实施例图示出适合用于初始化和提供对TEE的访问的方法的操作的流程图。
图10是示出计算设备的软件体系结构的一个示例的框图。
图11是采取计算机系统的示例形式的机器的框图,在该机器内可以执行指令以使得该机器执行本文论述的方法中的任何一个或多个。
具体实施方式
示例方法和系统针对的是减小提供TEE的时延。在最一般的意义上,TEE是任何受信任的执行环境,不管这种信任是如何获得的。然而,就本文使用的而言,TEE是通过在存储器的一部分内执行代码来提供的,该部分存储器受到保护以免被TEE之外的进程所访问,即使这些进程是以高权限级别运行的。示例TEE包括由软件防护扩展(Software GuardExtensions,SGX)创建的飞地(enclave)和由信任域扩展(Trust DomainExtension,TDX)创建的信任域。
TEE可用于通过保护机密信息不受TEE之外的所有软件影响来使得能够对机密信息进行安全处理。TEE也可用于模块化编程,其中每个模块包含其自身功能所必需的一切,而不会暴露于其他模块造成的漏洞。例如,针对一个TEE成功的代码注入攻击不能影响另一个TEE的代码。
全存储器加密(total memory encryption,TME)保护存储器中的数据不被绕过处理器而访问。系统在启动时在处理器内生成加密密钥,并且永不在处理器外存储该密钥。TME加密密钥是一种临时密钥,因为它不会在重启后持续存在,也永远不会被存储在处理器之外。所有由处理器写入到存储器的数据都被使用该加密密钥来进行加密,并且在其被从存储器读回时被解密。从而,尝试在没有处理器中介的情况下直接从存储器读取数据的基于硬件的攻击,将会失败。
多密钥TME(Multi-key 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更快,所以减小了时延。
在一些示例实施例中,如本文所述,FaaS映像被用来使用临时密钥创建TEE。当用于FaaS的TEE被请求时,临时密钥被指派一个访问受控的密钥标识符,允许作为响应迅速配设TEE。
与初始化飞地的现有方法相比,本文论述的方法和系统减小了时延。时延的减小可允许在TEE中保护额外的功能,使用更细粒度的TEE,或者两者兼而有之,从而增大了系统安全性。当这些效果被综合考虑时,本文描述的一种或多种方法可以避免对于否则在初始化TEE时将会涉及的某些努力或资源的需要。可以类似地减少被一个或多个机器、数据库或网络使用的计算资源。这种计算资源的示例包括处理器周期、网络流量、存储器使用、数据存储容量、功率消耗、以及冷却能力。
图1是根据一些示例实施例图示出适合于使用TEE提供函数即服务的服务器的网络环境100的网络图。网络环境100包括FaaS服务器110A和110B,客户端设备120A和120B,以及网络130。FaaS服务器110A-110B经由网络130向客户端设备120A-120B提供函数。客户端设备120A和120B可以是不同租户的设备,这样,每个租户希望确保他们的租户特定的数据和代码不可被其他租户访问。因此,FaaS服务器110A-110B可以为提供的每个FaaS使用飞地。
为了减小提供函数的时延,可以使用本文描述的减小TEE创建的时延的系统和方法。例如,在客户端设备120请求函数之前,可以由FaaS服务器110部分或全部创建用于该函数的TEE。
FaaS服务器110A-110B和客户端设备120A和120B可以各自全部或部分地在计算机系统中实现,如下文关于图9的描述。FaaS服务器110A和110B可以被统称为FaaS服务器110,或者被概括称为FaaS服务器110。客户端设备120A和120B可以被统称为客户端设备120,或者被概括称为客户端设备120。
图1所示的任何机器、数据库或设备可以在通用计算机中实现,该通用计算机被软件修改(例如,配置或编程)为专用计算机,从而为该机器、数据库或设备执行本文描述的功能。例如,下面参考图9论述了能够实现本文描述的任何一个或多个方法的计算机系统。就本文使用的而言,“数据库”是一种数据存储资源,并且可以存储数据,这些数据被结构化为文本文件、表格、电子表格、关系数据库(例如,对象关系数据库)、三重存储、层次化数据存储、面向文档的NoSQL数据库、文件存储、或者这些的任何适当组合。数据库可以是存储器内数据库。此外,图1中所示的机器、数据库或设备中的任何两个或更多个可以被组合成单个机器、数据库或设备,并且本文为任何单个机器、数据库或设备描述的功能都可以被细分在多个机器、数据库或设备中。
FaaS服务器110和客户端设备120由网络130连接。网络130可以是使得能够在机器、数据库和设备之间进行通信的任何网络。因此,网络130可以是有线网络、无线网络(例如,移动或蜂窝网络)、或者其任何适当组合。网络130可包括构成私有网络、公共网络(例如互联网)或者其任何适当组合的一个或多个部分。
图2是根据一些示例实施例的适合于根据一些示例实施例减小TEE的时延的FaaS服务器110A的框图。FaaS服务器110A被示为包括通信模块210、应用的非可信组件220、应用的可信组件230、信任域模块240、引用飞地250、共享存储器260、以及私有存储器270,所有这些都被配置为相互通信(例如,经由总线、共享存储器或者交换机)。可以使用硬件(例如,机器的处理器)来实现本文描述的任何一个或多个模块。例如,本文描述的任何模块可由被配置为执行本文对于该模块描述的操作的处理器来实现。此外,这些模块中的任何两个或更多个模块可以被组合成单个模块,并且本文为单个模块描述的功能可被细分在多个模块中。此外,根据各种示例实施例,本文描述为在单个机器、数据库或设备内实现的模块可以分布在多个机器、数据库或设备上。
通信模块210接收发送到FaaS服务器110A的数据并且发送来自FaaS服务器110A的数据。例如,通信模块210可以从客户端设备120A接收执行函数的请求。在该函数被执行之后,该函数的结果由通信模块210提供给客户端设备120A。由通信模块210发送和接收的通信可以由网络130来充当媒介。
非可信组件220在飞地之外执行。从而,如果操作系统或其他非可信组件被破坏,则非可信组件220就容易受到攻击。可信组件230在飞地内执行。从而,即使操作系统或非可信组件220被破坏,可信组件230的数据和代码仍然是安全的。
信任域模块240创建和保护飞地,并且负责在非可信组件220和可信组件230之间转变执行。经签名的代码可以被提供给信任域模块240,该模块验证该代码自从被签名起没有被修改。经签名的代码被加载到物理存储器的一部分中,该部分被标记为飞地的一部分。此后,硬件保护措施防止非可信软件对飞地存储器进行访问、修改、执行或者这些的任何适当组合。可以使用仅对信任域模块240可用的密钥来对代码进行加密。
一旦可信组件230被初始化,非可信组件220就可以使用信任域模块240的从非可信模式转变到可信模式的特殊处理器指令来调用可信组件230的函数。可信组件230执行参数验证,如果参数有效则执行请求的函数,并且经由信任域模块240将控制权返回给非可信组件220。
信任域模块240可以被实现为提供SGX、TDX、安全加密虚拟化(secure encrypted virtualization,SEV)、TrustZone或者这些的任何适当组合的硬件处理器的一个或多个组件。在SGX中,证明(attestation)是一种机制,通过这种机制,第三方实体在为软件提供秘密和受保护的数据之前,确定软件实体是在被保护在飞地内的具备SGX能力的平台上运行的。证明依赖于平台产生证书的能力,该证书准确反映了飞地的签名,其中包括关于飞地的安全属性的信息。SGX体系结构提供了支持两种形式的证明的机制。有一种机制用于在同一平台上运行的飞地之间创建基本断言,它支持本地或平台内的证明,然后是另一种机制,它为飞地和远程第三方之间的证明提供基础。
引用飞地250为飞地(例如,可信组件230)生成证明。该证明是一个证据结构,它唯一地识别了被证明的飞地和主机(例如,FaaS服务器110A),使用非对称加密并且由内置处理器功能支持。该证明可以经由通信模块210被提供给客户端设备120,允许了客户端设备120确认可信组件230没有被破坏。例如,可以使用防止访问密钥的硬件来将处理器制造为具有内置的私钥。使用该私钥,证明结构可以被处理器签名,并且使用由硬件制造商公布的相应公钥,该签名可以被客户端设备120确认。这允许了客户端设备120确保远程设备(例如,FaaS服务器110A)上的飞地实际上已被创建,而没有被篡改。
非可信组件220和可信组件230都可以访问和修改共享存储器260,但只有可信组件230可以访问和修改私有存储器270。虽然图2中只示出了一个非可信组件220、一个可信组件230和一个私有存储器270,但每个应用可以有多个可信组件230,每个都有相应的私有存储器270,以及多个非可信组件220,不能访问任何私有存储器270。此外,多个应用可以用单独的存储器空间运行,从而用单独的共享存储器260运行。在这个上下文中,“共享”是指存储器可被拥有对存储器空间的访问权限的所有软件和硬件(例如,应用及其操作系统)访问,不一定可被在该系统上运行的所有应用访问。
图3是现有技术的基于环的存储器保护的框图300。框图300包括应用310和320以及操作系统330。操作系统330在第0环(和处理器)、例外级别1(处理器)或者同等权限级别中执行处理器命令。应用310-320在第3环(和处理器)、例外级别0(处理器)或者同等权限级别中执行处理器命令。
硬件处理器防止以较低权限级别执行的代码访问由操作系统定义的存储器范围之外的存储器。从而,应用310的代码不能直接访问操作系统330或应用320的存储器(如图3中的“X”所示)。操作系统330通过预定义特定的访问点(例如,通过调用门、处理器上的SYSENTER/SYSEXIT指令、处理器上的SYSCALL/SYSRET指令、或者这些的任何适当的组合或等同物)向应用310-320暴露一些功能。
由于操作系统330能够访问所有的存储器,所以应用310和320没有保护措施来防止恶意的操作系统。例如,竞争者可以在运行应用310之前修改操作系统,以获得对应用310的代码和数据的访问,允许了逆向工程。
此外,如果一应用能够利用操作系统330中的漏洞,并且将自己提升到操作系统的权限级别,则该应用将能够访问所有的存储器。例如,通常不能访问应用320的存储器的应用310(如图3中应用310和320之间的X所示),在将自己提升到第0环或例外级别1之后,将能够访问应用320的存储器。从而,如果用户被骗运行恶意程序(例如,应用310),则用户或应用提供者的私有数据可能会被直接从存储器中访问(例如,应用320使用的银行密码)。
图4是根据一些示例实施例的适合于减小TEE的时延的基于飞地的存储器保护的框图400。框图400包括应用410、飞地420、以及操作系统430。操作系统430在第0环(和处理器)、例外级别1(处理器)或者同等权限级别中执行处理器命令。应用410和飞地420在第3环(和处理器)、例外级别0(处理器)或者同等权限级别中执行处理器命令。
操作系统430分配飞地420的存储器,并且向处理器指示出要被加载到飞地420中的代码和数据。然而,一旦被实例化,操作系统430就不能访问飞地420的存储器。从而,即使操作系统430是恶意的或被破坏的,飞地420的代码和数据仍然是安全的。
飞地420可以向应用410提供函数。操作系统430可以控制应用410是否被允许调用飞地420的函数(例如,通过使用ECALL指令)。从而,恶意的应用可能能够通过破坏操作系统430来获得调用飞地420的函数的能力。尽管如此,硬件处理器将阻止恶意应用直接访问飞地420的存储器或代码。从而,虽然飞地420中的代码不能假设函数被正确调用或被非攻击者调用,但飞地420中的代码对参数检查和其他内部安全措施有完全的控制,并且只受其内部安全漏洞的影响。
图5是根据一些示例实施例的适合用于减小TEE的时延的数据库模式的框图。数据库模式500包括飞地表510。飞地表510包括格式520的行530A、530B、530C和530D。
飞地表510的格式520包括飞地标识符字段、状态字段、只读字段、以及模板标识符字段。行530A-530D中的每一行存储单个飞地的数据。飞地标识符是飞地的唯一标识符。例如,当飞地被创建时,信任域模块240可将下一个未使用的标识符指派给创建的飞地。状态字段指示出飞地的状态,例如正在初始化(创建但尚未准备好使用)、已初始化(准备好使用但尚未使用)和已分配(正在使用)。只读字段指示出飞地是否是只读的。模板标识符字段包含此飞地具有只读访问权的另一个飞地的飞地标识符。
从而,在图5的示例中,在飞地表510中示出了四个飞地。其中一个飞地正在初始化,两个已初始化,一个已分配。行530A的飞地0是只读飞地,并且被用作行530B的飞地1的模板。从而,处理器阻止飞地0被执行,但飞地1能够访问飞地0的数据和代码。可以创建额外的飞地,这些飞地也使用飞地0作为模板,允许了多个飞地访问飞地0的数据和代码,而不增大消耗的存储器量。行530B-530D的飞地1-3不是只读的,从而可以被执行。
图6是根据一些示例实施例由信任域模块240在构建TEE时执行的操作的序列的框图600。如图6所示,操作的序列包括ECREATE、EADD/EEXTEND、EINIT、EENTER、以及FUNCTIONSTART。ECREATE操作创建飞地。EADD操作向飞地添加初始堆存储器。可以使用EEXTEND操作来添加额外的存储器。EINIT操作初始化了TEE以便执行。此后,非可信组件220通过请求信任域模块240执行EENTER操作来将执行转移到TEE。响应于FUNCTION START CALL,通过执行TEE内的代码,执行TEE的可信FUNCTION。
如图6所示,至少可以按两种方式来划分这些操作。一种划分表明,ECREATE、EADD/EEXTEND和EINIT操作由主机应用(例如,非可信组件220)执行,并且EENTER操作将控制转移到TEE,TEE执行FUNCTION。另一种划分表明,无论要添加到TEE的特定代码和数据如何,都可以执行TEE的创建和为TEE分配堆存储器(“独立于工作负载的操作”),而TEE的初始化和对TEE函数的后续调用则取决于加载的特定代码和数据(“依赖于工作负载的操作”)。
可以通过在请求TEE之前执行独立于工作负载的操作来预初始化TEE的池。就本文使用的而言,预初始化的TEE是这样的TEE:对于该TEE,在应用请求该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可以由图1的FaaS服务器110A执行,使用图2-图4所示的模块、数据库和结构。
在操作710中,信任域模块240预初始化飞地的池。例如,可以为飞地池中的每个飞地执行创建飞地和为飞地分配堆存储器的操作。在一些示例实施例中,飞地池包括16-512个飞地,16个飞地,32个飞地,或者128个飞地。
在各种示例实施例中,飞地池中的飞地被部分预初始化或完全预初始化。完全预初始化的飞地在该飞地被请求之前有至少一个依工作负载而定的操作被执行。部分预初始化的飞地在该飞地被请求之前只有独立于工作负载的操作被执行。预初始化飞地减小了任何飞地的结果时间,但它们对短命的临时飞地(例如,FaaS工作负载)特别有价值,因为初始化开销在整个执行时间中占主导地位。
预初始化的飞地可以通过分叉或拷贝模板飞地来创建。模板飞地首先被创建,具有预初始化的飞地的期望状态。然后为池中的每个预初始化的飞地分叉或拷贝模板飞地。在一些示例实施例中,模板飞地本身是池的一部分。在其他示例实施例中,模板飞地是只读的,不可执行的,并且作为模板被保留以供以后使用。模板飞地可包括FaaS的存储器内容和布局。
飞地池中的每个飞地的存储器可被用存储在处理器中的密钥来进行加密。该密钥可以是临时密钥(例如,TME临时密钥)或者具有可在处理器之外访问的密钥标识符的密钥。信任域模块240或MKTME模块可以生成该密钥并且将其指派给飞地。从而,密钥本身从未被暴露在处理器之外。飞地被指派了物理存储器的一部分。源自飞地的物理存储器的存储器访问请求与飞地的密钥标识符相关联,从而与飞地的密钥相关联。处理器不会将飞地的密钥应用于源自飞地的物理存储器之外的存储器访问。因此,非可信应用或组件(例如,非可信组件220)进行的存储器访问可以只接收飞地的加密数据或代码。
在一些示例实施例中,使用没有密钥标识符的不同的临时密钥(例如,MKTME密钥)来加密飞地池中的每个飞地。此后,当FaaS的飞地被请求时,由信任域模块240为临时密钥指派访问受控的密钥标识符,允许了作为响应迅速地提供飞地。
信任域模块240在操作720中接收对飞地的请求。例如,应用的非可信组件220可以向信任域模块240提供识别飞地的数据作为该请求的一部分。识别飞地的数据可包括指向共享存储器260中的地址的指针,该地址可由非可信组件220访问。
该请求可包括用于飞地的预先计算的散列值,并且指示出共享存储器260的一部分(例如,由请求中包括的地址和大小所识别的部分),该部分包含飞地的代码和数据。信任域模块240可以对二元存储器状态(例如,请求中指示的共享存储器260的部分)执行散列函数,以确认请求中提供的散列值与计算出的散列值相匹配。如果散列值匹配,则信任域模块240已确认所指示的存储器实际包含所请求的飞地的代码和数据,并且方法700可继续进行。如果散列值不匹配,则信任域模块240可返回差错值,防止经修改的存储器被加载到飞地中。
在一些示例实施例中,该请求包括模板飞地的标识符。信任域模块240以只读权限创建所请求的飞地,以访问该模板飞地。这允许了所请求的飞地读取模板飞地的数据并且执行模板飞地的函数而不修改模板飞地的数据或代码。因此,多个飞地可以访问模板飞地而不发生冲突,并且模板飞地的数据和代码只被存储一次(而不是为多个飞地中的每一者存储一次)。因此,在访问方飞地的创建期间拷贝的存储器较少,减小了时延。
在操作730中,响应于接收到的请求,信任域模块240从预初始化的飞地池中选择飞地。信任域模块240可以通过基于与请求一起接收的识别飞地的数据对所选飞地执行额外的操作,来修改所选飞地,例如图4中所示的依工作负载而定的操作。额外操作可包括将数据或代码从请求中指示的共享存储器260中的地址拷贝到分配给飞地的私有存储器270。
在一些示例实施例中,额外操作包括用新的密钥对指派给飞地的物理存储器进行重新加密。例如,预初始化步骤可能已经使用临时密钥对飞地的物理存储器进行了加密,并且飞地可被使用飞地的唯一密钥来重新加密,该密钥具有相应的唯一密钥标识符。在密钥标识符是有限资源的系统中(例如,有固定数目的密钥标识符可用),对预初始化的飞地使用临时密钥可以增大飞地池的最大大小(例如,增大到超过固定数目的可用密钥标识符的大小)。额外操作还可包括为所选TEE创建安全扩展页表(extended page table,EPT)分支,该分支从模板TEE得出代码映射。
信任域模块240响应于该请求而提供对所选飞地的访问(操作740)。例如,可以返回初始化的飞地的唯一标识符,它可用作后来向信任域模块240提出的在飞地内执行函数的请求(例如,EENTER命令)的参数。
此后,信任域模块240可以确定所选飞地的执行已完成(例如,响应于接收到飞地退出指令)。指派给已完成的飞地的存储器可以被释放。或者,已完成的飞地的状态可以被恢复到预初始化的状态,并且飞地可以被返回到池中。例如,可将模板飞地拷贝到飞地上,可执行逆转依工作负载而定的操作的操作,执行在执行依工作负载而定的操作之前执行的飞地的检查点,并且在执行完成之后执行检查点的恢复,或者这些的任何适当组合。
与在接收对飞地的请求(操作720)之前不执行飞地的预初始化(操作710)的现有技术实现方式相比,接收请求和提供访问(操作740)之间的延迟被减小。时延的减小可允许在飞地中保护额外的功能,使用更细粒度的飞地,或者两者兼而有之,从而增大了系统安全性。此外,当飞地被客户端设备120通过网络130调用时,在等待来自FaaS服务器110的响应的同时使用的客户端设备120的处理器周期被减少了,提高了响应性并且减小了功率消耗。
图8是根据一些示例实施例图示出适合用于初始化TEE和提供对TEE的访问的方法800的操作的流程图。方法800包括操作810、820、830和840。作为示例而非限制,方法800可以由图1的FaaS服务器110A执行,使用图2-图4所示的模块、数据库和结构。
在操作810中,信任域模块240创建被标记为只读的模板飞地。例如,该飞地可以被完全创建,其代码和数据被加载到私有存储器270中。然而,由于模板飞地是只读的,所以模板飞地的函数不能被从非可信组件220直接调用。参考图3的飞地表310,行330A示出了只读的模板飞地。
信任域模块240在操作820中接收对飞地的请求。例如,应用的非可信组件220可以向信任域模块240提供识别飞地的数据作为该请求的一部分。识别飞地的数据可包括指向共享存储器260中的地址的指针,该地址可由非可信组件220访问。
在操作830中,响应于接收到的请求,信任域模块240拷贝模板飞地以创建请求的飞地。例如,信任域模块240可以确定识别飞地的数据指示出请求的飞地是用于与模板飞地相同的代码和数据的。该确定可以基于飞地代码和数据的签名、飞地代码和数据的消息认证码(message authentication code,MAC)、非对称加密、或者这些的任何适当组合。
信任域模块240响应于该请求而提供对所选飞地的访问(操作840)。例如,可以返回初始化的飞地的唯一标识符,它可用作后来向信任域模块240提出的在飞地内执行函数的请求(例如,EENTER命令)的参数。
与响应于接收到对飞地的请求(操作820)而创建飞地而不是拷贝模板飞地来创建所请求的飞地(操作830)的现有技术实现方式相比,接收请求和提供访问(操作840)之间的延迟被减小。时延的减小可允许在飞地中保护额外的功能,使用更细粒度的飞地,或者两者兼而有之,从而增大了系统安全性。此外,当飞地被客户端设备120通过网络130调用时,在等待来自FaaS服务器110的响应的同时使用的客户端设备120的处理器周期被减少了,提高了响应性并且减小了功率消耗。
图9是根据一些示例实施例图示出适合用于初始化TEE和提供对TEE的访问的方法900的操作的流程图。方法900包括操作910、920、930和940。作为示例而非限制,方法900可以由图1的FaaS服务器110A执行,使用图2-图4所示的模块、数据库和结构。
在操作910中,信任域模块240预初始化第一类别的飞地的第一池和第二类别的飞地的第二池。预初始化是完全的或部分的。对于完全初始化,池中的飞地已完全准备好使用,并且已被加载了飞地的代码和数据。从而,该类别的所有成员都是相同的。对于部分初始化,池中的飞地共享一个或多个特性,例如使用的堆存储器的量。飞地是针对共享特性被初始化的,但是飞地的实际代码和数据在预初始化期间不会被加载。此外,可以在以后的步骤中执行进一步的定制。因此,在执行部分初始化时,不同的飞地可以是该类别的成员。
信任域模块240在操作920中接收对第一类别的飞地的请求。例如,应用的非可信组件220可以向信任域模块240提供识别飞地的数据作为该请求的一部分。识别飞地的数据可包括指向共享存储器260中的地址的指针,该地址可由非可信组件220访问。识别飞地的类别的数据可被包括在飞地中或者请求中。
在操作930中,响应于接收到的请求,信任域模块240从第一类别的飞地的预初始化池中选择飞地。信任域模块240可以通过基于与请求一起接收的识别飞地的数据对所选飞地执行额外的操作,来修改所选飞地,例如图4中所示的依工作负载而定的操作。额外操作可包括将数据或代码从请求中指示的共享存储器260中的地址拷贝到分配给飞地的私有存储器270。
信任域模块240响应于该请求而提供对所选飞地的访问(操作940)。例如,可以返回初始化的飞地的唯一标识符,它可用作后来向信任域模块240提出的在飞地内执行函数的请求(例如,EENTER命令)的参数。
通过使用不同类别的池,相似但需求相对较低的飞地可以被放到一个共同的类别中进行部分预初始化,从而减小了时延,同时只与其需求成比例地消耗资源。同时,需求高的飞地可以被完全预初始化,进一步减小了时延。
鉴于主题的上述实现方式,本申请公开了示例的以下列表,其中,一示例的单独的一个特征,或者一示例的多于一个特征组合起来,以及可选地与一个或多个另外示例的一个或多个特征相组合,是也属于本申请的公开范围内的另外示例。
示例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;并且提供对所创建的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;并且提供对所创建的TEE的访问。
在示例24中,如示例23所述的主题包括,其中所述模板TEE包括函数即服务(FaaS)的初始存储器内容和布局。
在示例25中,如示例23-24所述的主题包括,其中所述处理器阻止对所述模板TEE的执行。
示例26是一种提供TEE的方法,该方法包括:由处理器利用第一加密密钥来对数据和代码进行加密;将加密的数据和代码存储在存储设备中;由所述处理器接收请求;响应于所述请求:向TEE指派第二加密密钥;利用所述第一加密密钥来对加密的数据和代码进行解密;利用所述第二加密密钥来对解密的数据和代码进行加密;并且提供对所述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;并且提供对所创建的TEE的访问。
在示例37中,如示例36所述的主题包括,其中所述模板TEE包括函数即服务(FaaS)的初始存储器内容和布局。
在示例38中,如示例36-37所述的主题包括,其中所述操作还包括:阻止对所述模板TEE的执行。
示例39是一种非暂态计算机可读介质,具有指令,用于使得处理器通过执行操作来提供TEE,所述操作包括:利用第一加密密钥来对数据和代码进行加密;将加密的数据和代码存储在存储设备中;接收请求;响应于所述请求:向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;并且提供对所述TEE的访问。
在示例50中,如示例49所述的主题包括,其中所述模板TEE包括函数即服务(FaaS)的初始存储器内容和布局。
在示例51中,如示例49-50所述的主题包括,其中所述处理装置阻止对所述模板TEE的执行。
示例52是一种提供TEE的系统,该系统包括:存储装置;以及处理装置,用于:利用第一加密密钥来对数据和代码进行加密;将加密的数据和代码存储在所述存储装置中;接收请求;响应于所述请求:向TEE指派第二加密密钥;利用所述第一加密密钥来对加密的数据和代码进行解密;利用所述第二加密密钥来对解密的数据和代码进行加密;并且提供对所述TEE的访问。
示例53是至少一个机器可读介质,包括指令,所述指令当被处理电路执行时,使得所述处理电路执行操作来实现示例1-52中的任何一者。
示例54是一种装置,包括用于实现示例1-52中的任何一者的装置。
示例55是一种系统,用来实现示例1-52中的任何一者。
示例56是一种方法,用来实现示例1-52中的任何一者。
图10是示出计算设备的软件体系结构1002的一个示例的框图1000。可结合例如本文描述的各种硬件体系结构来使用体系结构1002。图10只是软件体系结构的非限制性示例,而许多其他体系结构可被实现来促进本文描述的功能。代表性硬件层1004被图示并且可代表例如任何以上提到的计算设备。在一些示例中,可根据图10的计算机系统的体系结构来实现硬件层1004。
代表性硬件层1004包括具有关联的可执行指令1008的一个或多个处理单元1006。可执行指令1008表示软件体系结构1002的可执行指令,包括本文描述的方法、模块、子系统和组件等等的实现,并且也可包括存储器和/或存储模块1010,存储器和/或存储模块1010也具有可执行指令1008。硬件层1004还可包括如其他硬件1012指示的其他硬件,这可代表硬件层1004的任何其他硬件,例如作为软件体系结构1002的一部分图示的其他硬件。
在图10的示例体系结构中,软件体系结构1002可被概念化为层的栈,其中每一层提供特定的功能。例如,软件体系结构1002可包括诸如以下层:操作系统1014、库1016、框架/中间件1018、应用1020、以及呈现层1044。在操作上,应用1020和/或层内的其他组件可通过软件栈调用应用编程接口(application programming interface,API)调用1024,并且响应于API调用1024而访问被示为消息1026的响应、返回的值等等。图示的层是代表性的,而并非所有软件体系结构都具有所有的层。例如,一些移动或专用操作系统可不提供框架/中间件层1018,而其他的可提供这样的层。其他软件体系结构可包括额外的或不同的层。
操作系统1014可管理硬件资源并且提供常见服务。操作系统1014可包括例如内核1028、服务1030、以及驱动器1032。内核1028可充当硬件和其他软件层之间的抽象层。例如,内核1028可负责存储器管理、处理器管理(例如,调度)、组件管理、联网、安全性设置,等等。服务1030可为其他软件层提供其他常见服务。在一些示例中,服务1030包括中断服务。中断服务可检测对中断的接收,并且作为响应,使得体系结构1002暂停其当前处理并且在中断被访问时执行中断服务例程(interrupt service routine,ISR)。
驱动器1032可负责控制底层硬件或者与底层硬件相接口。例如,取决于硬件配置,驱动器1032可包括显示驱动器、相机驱动器、驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(Universal Serial Bus,USB)驱动器)、驱动器、NFC驱动器、音频驱动器、功率管理驱动器,等等。
库1016可提供可被应用1020和/或其他组件和/或层利用的常见基础设施。库1016通常提供允许其他软件模块以比与底层操作系统1014功能(例如,内核1028、服务1030和/或驱动器1032)直接接口更容易的方式执行任务的功能。库1016可包括可提供诸如存储器分配函数、字符串操纵函数、数学函数等等之类的函数的系统库1034(例如,C标准库)。此外,库1016可包括API库1036,例如媒体库(例如,支持诸如MPEG4、H.264、MP3、AAC、AMR、JPG、PNG之类的各种媒体格式的呈现和操纵的库)、图形库(例如,可用于在显示器上的图形内容中渲染二维和三维的OpenGL框架)、数据库库(例如,可提供各种关系数据库函数的SQLite)、web库(例如,可提供web浏览功能的WebKit),等等。库1016也可包括各种各样的其他库1038来向应用1020和其他软件组件/模块提供许多其他API。
框架/中间件1018可提供可被应用1020和/或其他软件组件/模块利用的更高级别的常见基础设施。例如,框架/中间件1018可提供各种图形用户界面(graphic userinterface,GUI)功能、高级别资源管理、高级别位置服务,等等。框架/中间件1018可提供可被应用1020和/或其他软件组件/模块利用的很宽范围的其他API,其中一些可能是特定的操作系统或平台所特定的。
应用1020包括内置应用1040和/或第三方应用1042。代表性内置应用1040的示例可包括——但不限于——联系人应用、浏览器应用、书籍阅读器应用、位置应用、媒体应用、消息传递应用、和/或游戏应用。第三方应用1042可包括内置应用1040中的任何一者以及各种各样的其他应用。在特定示例中,第三方应用1042(例如,由不是特定平台的厂商的实体利用AndroidTM或iOSTM软件开发套件(software development kit,SDK)开发的应用)可以是在诸如iOSTM、AndroidTM、Phone或其他移动计算设备操作系统之类的移动操作系统上运行的移动软件。在这个示例中,第三方应用1042可调用由诸如操作系统1014之类的移动操作系统提供的API调用1024来促进本文描述的功能。
应用1020可利用内置的操作系统功能(例如,内核1028、服务1030和/或驱动器1032)、库(例如,系统库1034、API库1036以及其他库1038)、框架/中间件1018来创建用户界面以与系统的用户进行交互。替换地或者额外地,在一些系统中,与用户的交互可通过呈现层(例如呈现层1044)发生。在这些系统中,应用/模块“逻辑”可与应用/模块的与用户交互的方面分离。
一些软件体系结构利用虚拟机。在图10的示例中,这由虚拟机1048来图示。虚拟机创建一种软件环境,在其中应用/模块可以就像它们在硬件计算设备上执行那样执行。虚拟机被主机操作系统(操作系统1014)所容宿并且通常——虽然并非始终——具有虚拟机监视器1046,该虚拟机监视器1046管理虚拟机1048的操作以及与主机操作系统(即,操作系统1014)的接口。软件体系结构在虚拟机1048内执行,例如操作系统1050、库1052、框架/中间件1054、应用1056、和/或呈现层1058。在虚拟机1048内执行的软件体系结构的这些层可与先前描述的相应层相同或者可以不同。
模块、组件和逻辑
某些实施例在本文中被描述为包括逻辑或若干个组件、模块或机构。模块可构成软件模块(例如,(1)在非暂态机器可读介质上或(2)在传输信号中体现的代码)或者硬件实现模块。硬件实现模块是能够执行某些操作的有形单元并且可按特定方式被配置或安排。在示例实施例中,一个或多个计算机系统(例如,单机、客户端或服务器计算机系统)或者一个或多个处理器可被软件(例如,应用或应用部分)配置为进行操作以执行如本文所述的某些操作的硬件实现模块。
在各种实施例中,可以机械地或者电子地实现硬件实现模块。例如,硬件实现模块可包括被永久配置来执行某些操作的专用电路或逻辑(例如,专用处理器,比如现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application-specificintegrated circuit,ASIC))。硬件实现模块也可包括由软件临时配置来执行某些操作的可编程逻辑或电路(例如,包含在通用处理器或另一可编程处理器内)。将会明白,关于是以机械方式、还是用专用且永久配置的电路还是用临时配置的电路(例如,由软件配置)来实现硬件实现模块的决定可由成本和时间考虑来驱动。
因此,术语“硬件实现模块”应当被理解为涵盖有形实体,不论该实体是被物理地构造、永久地配置(例如,硬连线)的实体,还是被临时或暂时配置(例如,编程)来按某种方式操作和/或执行本文描述的某些操作的实体。考虑硬件实现模块被临时配置(例如,编程)的实施例,在任何一个时刻并不需要配置或实例化每个硬件实现模块。例如,在硬件实现模块包括利用软件配置的通用处理器的情况下,该通用处理器在不同时间可被配置为各个不同的硬件实现模块。软件可相应地将处理器配置为例如在一个时刻构成一特定的硬件实现模块并且在一不同的时刻构成一不同的硬件实现模块。
硬件实现模块可向其他硬件实现模块提供信息并且可从其他硬件实现模块接收信息。因此,描述的硬件实现模块可被视为是通信耦合的。在多个这样的硬件实现模块同时存在的情况下,通信可通过信号传输来实现(例如,通过连接硬件实现模块的适当电路和总线)。在在不同时间配置或实例化多个硬件实现模块的实施例中,这种硬件实现模块之间的通信可例如通过在这多个硬件实现模块能够访问的存储器结构中存储和取回信息来实现。例如,一个硬件实现模块可执行一操作并且将该操作的输出存储在其通信耦合到的存储器设备中。另一硬件实现模块随后在以后某时可访问该存储器设备以取回并处理存储的输出。硬件实现模块也可发起与输入或输出设备的通信,并且可对资源(例如,信息的集合)进行操作。
本文描述的示例方法的各种操作可至少部分地由被临时配置(例如,由软件)或永久配置来执行相关操作的一个或多个处理器执行。无论是临时还是永久地配置,这种处理器都可构成处理器实现模块,这些模块进行操作来执行一个或多个操作或功能。本文提及的模块在一些示例实施例中可包括处理器实现模块。
类似地,本文描述的方法可至少部分是由处理器实现的。例如,方法的操作之中的至少一些可由一个或多个处理器或者处理器实现模块来执行。某些操作的执行可分布在一个或多个处理器之间,不仅是驻留在单个机器内,而是部署在多个机器上。在一些示例实施例中,一个或多个处理器可位于单个位置中(例如,在家庭环境、办公室环境或服务器场内),而在其他实施例中处理器可分布在多个位置上。
一个或多个处理器也可进行操作来支持在“云计算”环境中或者作为“软件即服务”(software as a service,SaaS)的相关操作的执行。例如,这些操作之中的至少一些可由一组计算机(作为包括处理器的机器的示例)来执行,这些操作是经由网络(例如,互联网)和经由一个或多个适当的接口(例如,API)可访问的。
电子装置和系统
示例实施例可在数字电子电路中实现,或者在计算机硬件、固件或软件或者在它们的组合中实现。示例实施例可利用计算机程序产品来实现,例如,有形地体现在信息载体中(例如机器可读介质中)的计算机程序,以供数据处理装置执行或者控制数据处理装置的操作,其中数据处理装置例如是可编程处理器、计算机或多个计算机。
计算机程序可以用任何形式的编程语言来编写,所述语言包括经编译或解释的语言,并且计算机程序可按任何形式来部署,包括被部署为独立程序或被部署为模块、子例程或者适合用在计算环境中的其他单元。计算机程序可被部署来在一个计算机上或多个计算机上执行,所述多个计算机位于一个地点或分布在多个地点并由通信网络互连。
在示例实施例中,操作可由一个或多个可编程处理器执行,这些可编程处理器执行计算机程序以通过操作输入数据并生成输出来执行功能。方法操作也可由专用逻辑电路(例如,FPGA或ASIC)来执行,并且示例实施例的装置可实现为专用逻辑电路。
计算系统可包括客户端和服务器。客户端和服务器一般可彼此远离并且通常通过通信网络来交互。客户端和服务器的关系是由于计算机程序在各计算机上运行且相互之间具有客户端-服务器关系而发生的。在部署可编程计算系统的实施例中,将会明白,硬件和软件体系结构都值得考虑。具体而言,将会明白,关于是以永久配置的硬件(例如,ASIC),以临时配置的硬件(例如,软件和可编程处理器的组合)还是以永久和临时配置的硬件的组合来实现某个功能的选择,可以是一个设计选择。下面阐述了在各种示例实施例中可部署的硬件(例如,机器)和软件体系结构。
示例机器体系结构和机器可读介质
图11是采取计算机系统1100的示例形式的机器的框图,在该机器内可执行指令1124以使得该机器执行本文论述的方法中的任何一个或多个。在替换实施例中,机器可作为独立的设备来操作,或者可连接(例如,联网)到其他机器。在联网部署中,机器可在服务器-客户端网络环境中作为服务器或者客户端机器来操作,或者在对等(或分布式)网络环境中作为对等机器来操作。机器可以是个人计算机(personal computer,PC)、平板PC、机顶盒(set-top box,STB)、个人数字助理(personal digital assistant,PDA)、蜂窝电话、web电器、网络路由器、交换机或网桥、或者任何能够执行指定该机器要采取的动作的(顺序的或其他方式的)指令的机器。另外,虽然只图示了单个机器,但术语“机器”也应被理解为包括单独或联合执行一组(或多组)指令以执行本文论述的任何一个或多个方法的机器的任何集合。
示例计算机系统1100包括处理器1102(例如,中央处理单元(central processingunit,CPU)、图形处理单元(graphics processing unit,GPU)或者这两者)、主存储器1104以及静态存储器1106,它们经由总线1108与彼此通信。计算机系统1100还可包括视频显示单元1110(例如,液晶显示器(graphics processing unit,LCD)或阴极射线管(cathoderay tube,CRT))。计算机系统1100还包括字母数字输入设备1112(例如,键盘或触摸敏感显示屏)、用户界面(user interface,UI)导航(或光标控制)设备1114(例如,鼠标)、存储单元1116、信号生成设备1118(例如,扬声器)、以及网络接口设备1120。
机器可读介质
存储单元1116包括机器可读介质1122,其上存储了实现本文描述的任何一个或多个方法或功能或者被本文描述的任何一个或多个方法或功能所利用的一组或多组数据结构和指令1124(例如,软件)。指令1124在其被计算机系统1100执行期间可完全或至少部分驻留在主存储器1104内和/或处理器1102内,其中主存储器1104和处理器1102也构成机器可读介质1122。
虽然机器可读介质1122在示例实施例中被示为单个介质,但术语“机器可读介质”可包括存储一个或多个指令1124或数据结构的单个介质或多个介质(例如,集中式或分布式数据库,和/或关联的缓存和服务器)。术语“机器可读介质”应被理解为包括任何如下的有形介质:其能够存储、编码或承载供机器执行并且使得机器执行本公开的任何一个或多个方法的指令1124,或者能够存储、编码或承载被这种指令1124利用或者与这种指令1124相关联的数据结构。术语“机器可读介质”因此应被理解为包括——但不限于——固态存储器以及光介质和磁介质。机器可读介质1122的具体示例包括非易失性存储器,例如包括半导体存储器设备,例如可擦除可编程只读存储器(erasable programmable read-onlymemory,EPROM)、电可擦除可编程只读存储器(electrically erasable programmableread-only memory,EEPROM)以及闪存设备;磁盘,例如内部硬盘和可移除盘;磁光盘;以及致密盘只读存储器(compact disc read-only memory,CD-ROM)和数字多功能盘只读存储器(digital versatile disc read-only memory,DVD-ROM)盘。机器可读介质不是传输介质。
传输介质
还可利用传输介质在通信网络1126上发送或接收指令1124。可利用网络接口设备1120和多种公知的传送协议(例如,超文本传输协议(hypertext transport protocol,HTTP))中的任何一种来传输指令1124。通信网络的示例包括局域网(local area network,LAN)、广域网(wide area network,WAN)、互联网、移动电话网络、普通老式电话(plain oldtelephone,POTS)网络、以及无线数据网络(例如,WiFi和WiMax网络)。术语“传输介质”应被理解为包括能够存储、编码或承载指令1124来供机器执行的任何无形介质,并且包括数字或模拟通信信号或其他无形介质来促进这种软件的通信。
虽然本文描述了具体的示例实施例,但将会明白,在不脱离本公开的更宽精神和范围的情况下,可对这些实施例做出各种修改和改变。因此,说明书和附图应被认为是说明性的,而不是限制性的。形成本文一部分的附图以说明而非限制方式示出了其中可实现主题的具体实施例。图示的实施例被充分详细地描述以使得本领域技术人员能够实现本文公开的教导。可从其利用和得出其他实施例,从而可在不脱离本公开的范围的情况下做出结构上和逻辑上的替代和改变。这个“具体实施方式”部分因此不应被从限制意义上来理解,而各种实施例的范围仅由所附权利要求以及这种权利要求被授权的完全等同范围来限定。
发明主题的这种实施例在本文中可单独和/或总体上由术语“发明”来提及,这只是为了方便,而并不打算将本申请的范围主动限制到任何单个发明或者发明构思,如果实际上公开了多于一个的话。从而,虽然本文已图示和描述了具体实施例,但应当明白,任何打算实现相同目的的布置都可替代示出的具体实施例。本公开打算覆盖各种实施例的任何和全部适配或变化。本领域技术人员在阅读以上描述后将清楚看出上述实施例的组合以及本文没有具体描述的其他实施例。
本文论述的主题的一些部分可以按照对在机器存储器(例如,计算机存储器)内存储为比特或二元数字信号的数据的操作的算法或符号表示来给出。这种算法或符号表示是数据处理领域的普通技术人员用来将其工作的实质传达给该领域的其他技术人员的技术的示例。当在本文中使用时,“算法”是带来期望结果的操作或类似处理的自洽序列。在这个上下文中,算法和操作涉及对物理量的物理操纵。通常,但并非一定,这种量可采取能够被存储、访问、传送、组合、比较或者被机器以其他方式操纵的电信号、磁信号或光信号的形式。有时,主要是出于习惯用法的原因,利用诸如“数据”、“内容”、“比特”、“值”、“元素”、“符号”、“字符”、“项”、“数字”、“数值”等等之类的词语来称呼这种信号,是方便的。然而,这些词语只是方便的标签,并且要与适当的物理量相关联。
除非另有具体声明,否则本文使用诸如“处理”、“计算”、“运算”、“确定”、“呈现”、“显示”等等之类的词语的论述可以指操纵或变换数据的机器(例如,计算机)的动作或过程,所述数据在一个或多个存储器(例如,易失性存储器、非易失性存储器或者其任何适当组合)、寄存器或者接收、存储、发送或显示信息的其他机器组件内被表示为物理(例如,电、磁或光)量。另外,除非另有具体声明,否则“一”这个词在本文中就像专利文献中常见的那样被用来包括一个或多于一个实例。最后,就本文使用的而言,连词“或”指的是非排他性的“或”,除非另有具体声明。
Claims (14)
1.一种处理系统,包括:
存储器电路;以及
处理电路,被配置为:
分配所述处理电路的资源以创建多个可信执行环境(TEE);
通过以下操作来初始化所述多个TEE中的每个相应TEE:在所述存储器电路中向所述相应TEE分配单独的存储器空间,以及使所述相应TEE能够在所述处理电路上执行工作负载,其中,所述多个TEE中的每个相应TEE被初始化以支持多个不同类型的工作负载的独立调度和执行;
在所述多个TEE中的每个相应TEE被初始化之后,接收执行工作负载的请求;以及
响应于所述请求,使初始化的多个TEE中的TEE执行所述工作负载。
2.如权利要求1所述的处理系统,其中,所述处理电路包括至少一个图形处理单元(GPU),并且其中所述多个TEE中的每个相应TEE被配置为使用所述至少一个GPU的一部分来执行所述工作负载。
3.如权利要求2所述的处理系统,其中,所述至少一个GPU是单个GPU,并且其中所述多个TEE中的每个相应TEE在所述单个GPU内被保护和分离。
4.如权利要求1所述的处理系统,其中,所述多个TEE被分配在多个用户之间,并且其中要执行所述工作负载的所述TEE被分离给所述多个用户中的特定用户。
5.如权利要求4所述的处理系统,其中,在所述工作负载的执行期间,所述多个TEE中的其他TEE可用于为所述多个用户中的其他用户执行其他工作负载。
6.如权利要求1所述的处理系统,其中,所述处理电路还被配置为:
向要执行所述工作负载的所述TEE指派加密密钥;以及
使用所述加密密钥来加密针对要执行所述工作负载的所述TEE的所述存储器空间。
7.一种方法,包括:
分配处理系统的处理电路的资源以创建多个可信执行环境(TEE);
通过以下操作来初始化所述多个TEE中的每个相应TEE:(i)在所述处理系统的存储器电路中向所述相应TEE分配单独的存储器空间,以及(ii)使所述相应TEE能够在所述处理电路上执行工作负载,其中,所述多个TEE中的每个相应TEE被初始化以支持多个不同类型的工作负载的独立调度和执行;
在所述多个TEE中的每个相应TEE被初始化之后,接收执行工作负载的请求;以及
响应于所述请求,使初始化的多个TEE中的TEE执行所述工作负载。
8.如权利要求7所述的方法,其中,所述处理电路包括至少一个图形处理单元(GPU),并且其中所述多个TEE中的每个相应TEE被配置为使用所述至少一个GPU的一部分来执行所述工作负载。
9.如权利要求8所述的方法,其中,所述至少一个GPU是单个GPU,并且其中所述多个TEE中的每个相应TEE在所述单个GPU内被保护和分离。
10.如权利要求7所述的方法,其中,所述多个TEE被分配在多个用户之间,并且其中要执行所述工作负载的所述TEE被分离给所述多个用户中的特定用户。
11.如权利要求10所述的方法,其中,在所述工作负载的执行期间,所述多个TEE中的其他TEE可用于为所述多个用户中的其他用户执行其他工作负载。
12.如权利要求7所述的方法,还包括:
向要执行所述工作负载的所述TEE指派加密密钥;以及
使用所述加密密钥来加密针对要执行所述工作负载的所述TEE的所述存储器空间。
13.一种能够存储指令的非暂态计算机可读存储介质,所述指令在被执行时使得处理电路执行如权利要求7至12中任一项所述的方法。
14.一种设备,包括用于执行如权利要求7至12中任一项所述的方法的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/131,716 US20210110070A1 (en) | 2020-12-22 | 2020-12-22 | Reducing latency of hardware trusted execution environments |
US17/131,716 | 2020-12-22 | ||
CN202111369972.4A CN114661452A (zh) | 2020-12-22 | 2021-11-18 | 减小硬件可信执行环境的时延 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111369972.4A Division CN114661452A (zh) | 2020-12-22 | 2021-11-18 | 减小硬件可信执行环境的时延 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794375A true CN115794375A (zh) | 2023-03-14 |
Family
ID=75383997
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111369972.4A Pending CN114661452A (zh) | 2020-12-22 | 2021-11-18 | 减小硬件可信执行环境的时延 |
CN202211346878.1A Pending CN115794375A (zh) | 2020-12-22 | 2021-11-18 | 减小硬件可信执行环境的时延 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111369972.4A Pending CN114661452A (zh) | 2020-12-22 | 2021-11-18 | 减小硬件可信执行环境的时延 |
Country Status (6)
Country | Link |
---|---|
US (2) | US20210110070A1 (zh) |
EP (2) | EP4020156A1 (zh) |
JP (2) | JP2022099241A (zh) |
KR (2) | KR20220091356A (zh) |
CN (2) | CN114661452A (zh) |
TW (2) | TW202311999A (zh) |
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 |
---|---|---|---|---|
US9870475B2 (en) * | 2014-06-25 | 2018-01-16 | Intel Corporation | Hardware configuration reporting systems |
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 |
US11138132B2 (en) * | 2018-06-20 | 2021-10-05 | Intel Corporation | Technologies for secure I/O with 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 TW111142532A patent/TW202311999A/zh unknown
- 2021-09-23 TW TW110135357A patent/TW202227998A/zh unknown
- 2021-10-11 JP JP2021167009A patent/JP2022099241A/ja active Pending
- 2021-11-18 CN CN202111369972.4A patent/CN114661452A/zh active Pending
- 2021-11-18 CN CN202211346878.1A patent/CN115794375A/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 |
---|---|
EP4020156A1 (en) | 2022-06-29 |
TW202311999A (zh) | 2023-03-16 |
KR20220151126A (ko) | 2022-11-14 |
KR20220091356A (ko) | 2022-06-30 |
EP4145267A1 (en) | 2023-03-08 |
JP2022099241A (ja) | 2022-07-04 |
CN114661452A (zh) | 2022-06-24 |
TW202227998A (zh) | 2022-07-16 |
US20230015537A1 (en) | 2023-01-19 |
JP2023015177A (ja) | 2023-01-31 |
US20210110070A1 (en) | 2021-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9871821B2 (en) | Securely operating a process using user-specific and device-specific security constraints | |
JP6397500B2 (ja) | 仮想マシン・マネージャーによって支援される選択的コード完全性強制 | |
US9575790B2 (en) | Secure communication using a trusted virtual machine | |
US9710400B2 (en) | Secure virtual machine memory | |
KR101861401B1 (ko) | 장치 기능과 애플리케이션의 결합 | |
US11200300B2 (en) | Secure sharing of license data in computing systems | |
US8799898B2 (en) | Methods and apparatus for binding applications to a cloud computing environment | |
MX2014007102A (es) | Facilitacion de interacciones de solicitud de servicio de sistema para aplicaciones protegidas por hardware. | |
US11924210B2 (en) | Protected resource authorization using autogenerated aliases | |
KR20220038082A (ko) | 보안 런타임 시스템들 및 방법들 | |
US20210109870A1 (en) | Isolating memory within trusted execution environments | |
US11436318B2 (en) | System and method for remote attestation in trusted execution environment creation using virtualization technology | |
EP3785149B1 (en) | Memory assignment for guest operating systems | |
US20230015537A1 (en) | Reducing latency of hardware trusted execution environments | |
Aw Ideler | Cryptography as a service in a cloud computing environment | |
CN117827475A (zh) | 用于进程间通信的方法、装置、电子设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |