CN112800431B - 超线程场景下安全进入可信执行环境的方法及装置 - Google Patents

超线程场景下安全进入可信执行环境的方法及装置 Download PDF

Info

Publication number
CN112800431B
CN112800431B CN202110145151.6A CN202110145151A CN112800431B CN 112800431 B CN112800431 B CN 112800431B CN 202110145151 A CN202110145151 A CN 202110145151A CN 112800431 B CN112800431 B CN 112800431B
Authority
CN
China
Prior art keywords
execution environment
trusted execution
processor core
page table
enter
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.)
Active
Application number
CN202110145151.6A
Other languages
English (en)
Other versions
CN112800431A (zh
Inventor
刘晓建
闫守孟
顾宗敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202110145151.6A priority Critical patent/CN112800431B/zh
Publication of CN112800431A publication Critical patent/CN112800431A/zh
Application granted granted Critical
Publication of CN112800431B publication Critical patent/CN112800431B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

本说明书一个或多个实施例提供一种超线程场景下安全进入可信执行环境的方法及装置,该方法可以包括:在物理处理器核心上运行的逻辑处理器通过虚拟机监视器提供的途径而产生可信执行环境进入事件时,将所述任一逻辑处理器标记为期望进入可信执行环境的状态;在确定所述物理处理器核心对应的所有逻辑处理器均被标记为期望进入可信执行环境的状态的情况下,分别控制各个逻辑处理器进入所述物理处理器核心上构建的可信执行环境。无论是隐私区块链场景或其他的隐私保护场景下,上述方案可以在确保可信应用独占物理处理器核心以避免隐私泄露风险的前提下,允许启动超线程技术来提升计算效率。

Description

超线程场景下安全进入可信执行环境的方法及装置
技术领域
本说明书一个或多个实施例涉及可信计算技术领域,尤其涉及一种超线程场景下安全进入可信执行环境的方法及装置。
背景技术
可信执行环境(Trusted Execution Environment,TEE)可以起到硬件中的黑箱作用,在TEE中执行的代码和数据都无法被操作系统层偷窥,只有通过代码中预先定义的接口才能对其进行操作。在效率方面,由于TEE的黑箱性质,在TEE中进行运算的是明文数据,而不是同态加密中的复杂密码学运算,计算过程没有效率损失,因此与TEE相结合可以在性能损失较小的前提下很大程度上提升区块链的安全性和隐私性。目前工业界十分关注TEE的方案,几乎所有主流的芯片和软件联盟都有自己的TEE解决方案,包括软件方面的TPM(Trusted Platform Module,可信赖平台模块)以及硬件方面的Intel SGX(SoftwareGuard Extensions,软件保护扩展)、ARM Trustzone(信任区)和AMD PSP(PlatformSecurity Processor,平台安全处理器)。
超线程(HT,Hyper-Threading)技术同样被广泛应用于提升物理处理器核心的运算效率。超线程技术将多线程处理器内部的多个逻辑内核分别模拟成多个物理芯片,使得单个物理处理器核心可以实现线程级别的并行计算,以同时承载多个逻辑处理器,即多个超线程。当然,多个逻辑处理器仅独享寄存器堆等资源,而一级缓存、分支预测器等其他计算资源则需要共享,使得超线程技术与TEE技术相结合时可能存在一定的安全性风险。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种超线程场景下安全进入可信执行环境的方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种超线程场景下安全进入可信执行环境的方法,包括:
在物理处理器核心上运行的逻辑处理器产生可信执行环境进入事件,且所述可信执行环境进入事件由所述物理处理器核心上运行的任一逻辑处理器通过虚拟机监视器提供的途径而产生时,将所述任一逻辑处理器标记为期望进入可信执行环境的状态;
在确定所述物理处理器核心对应的所有逻辑处理器均被标记为期望进入可信执行环境的状态的情况下,分别控制各个逻辑处理器进入所述物理处理器核心上构建的可信执行环境。
根据本说明书一个或多个实施例的第二方面,提出了一种超线程场景下安全进入可信执行环境的装置,包括:
标记单元,在物理处理器核心上运行的逻辑处理器产生可信执行环境进入事件,且所述可信执行环境进入事件由所述物理处理器核心上运行的任一逻辑处理器通过虚拟机监视器提供的途径而产生时,将所述任一逻辑处理器标记为期望进入可信执行环境的状态;
控制单元,在确定所述物理处理器核心对应的所有逻辑处理器均被标记为期望进入可信执行环境的状态的情况下,分别控制各个逻辑处理器进入所述物理处理器核心上构建的可信执行环境。
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面所述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。
附图说明
图1是一示例性实施例提供的一种超线程场景下安全进入可信执行环境的方法的流程图。
图2是一示例性实施例提供的一种客户虚拟机访问实际机器内存的示意图。
图3是一示例性实施例提供的另一种客户虚拟机访问实际机器内存的示意图。
图4是一示例性实施例提供的一种超线程场景下安全退出可信执行环境的方法的流程图。
图5是一示例性实施例提供的一种设备的结构示意图。
图6是一示例性实施例提供的一种超线程场景下安全进入可信执行环境的装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
TEE是基于CPU硬件的安全扩展,且与外部完全隔离的可信执行环境。TEE最早是由Global Platform提出的概念,用于解决移动设备上资源的安全隔离,平行于操作系统为应用程序提供可信安全的执行环境。ARM的Trust Zone技术最早实现了真正商用的TEE技术。
伴随着互联网的高速发展,安全的需求越来越高,不仅限于移动设备,云端设备,数据中心都对TEE提出了更多的需求。TEE的概念也得到了高速的发展和扩充。现在所说的TEE相比与最初提出的概念已经是更加广义的TEE。例如,服务器芯片厂商Intel,AMD等都先后推出了硬件辅助的TEE并丰富了TEE的概念和特性,在工业界得到了广泛的认可。现在提起的TEE通常更多指这类硬件辅助的TEE技术。不同于移动端,云端访问需要远程访问,终端用户对硬件平台不可见,因此使用TEE的第一步就是要确认TEE的真实可信。因此现在的TEE技术都引入了远程证明机制,由硬件厂商(主要是CPU厂商)背书并通过数字签名技术确保用户对TEE状态可验证。同时仅仅是安全的资源隔离也无法满足的安全需求,进一步的数据隐私保护也被提出。包括Intel SGX,AMD SEV在内的商用TEE也都提供了内存加密技术,将可信硬件限定在CPU内部,总线和内存的数据均是密文防止恶意用户进行窥探。例如,英特尔的软件保护扩展(SGX)等TEE技术隔离了代码执行、远程证明、安全配置、数据的安全存储以及用于执行代码的可信路径。在TEE中运行的应用程序受到安全保护,几乎不可能被第三方访问。
以Intel SGX技术为例,SGX提供的TEE为围圈(enclave,也称为飞地),即内存中一个加密的可信执行区域,由CPU保护数据不被窃取。以采用支持SGX的CPU为例,利用新增的处理器指令,在内存中可以分配一部分区域EPC(Enclave Page Cache,围圈页面缓存或飞地页面缓存),通过CPU内的加密引擎MEE(Memory Encryption Engine)对其中的数据进行加密。EPC中加密的内容只有进入CPU后才会被解密成明文。因此,在SGX中,用户可以不信任操作系统甚至BIOS(Basic Input Output System,基本输入输出系统),只需要信任CPU便能确保隐私数据不会泄漏。实际应用中,可以将隐私数据加密后以密文形式传递至围圈中,并通过远程证明将对应的秘钥也传入围圈。然后,在CPU的加密保护下利用数据进行运算,结果会以密文形式返回。这种模式下,既可以利用强大的计算力,又不用担心数据泄漏。
以区块链场景为例。区块链网络中的区块链节点接收到交易后,可以对交易类型予以区分,譬如交易中可以包含类型字段,使得区块链节点可以根据该类型字段的取值来确定该交易为隐私交易或非隐私交易。隐私交易对于处理过程具有相对较高的隐私需求,因而区块链节点需要在TEE中处理该隐私交易。而非隐私交易对于处理过程具有相对较低的隐私需求,因而区块链节点可以在TEE中处理该非隐私交易,也可以在区别于TEE的常规执行环境中处理该非隐私交易。隐私交易可能本身处于加密状态(类型字段为明文状态),因而在处理隐私交易之前,还可能需要在TEE中对该隐私交易进行解密。非隐私交易通常为明文状态。
无论是对于隐私交易的解密过程还是执行过程,都需要确保该隐私交易所涉及的隐私数据的安全性。当区块链节点支持超线程技术时,该隐私交易可能被分配至某一逻辑处理器进行处理,该逻辑处理器具体可以被调度至区块链节点上的某一物理处理器核心的一个物理线程,使得该逻辑处理器可以使用该物理处理器核心的计算资源来处理上述的隐私交易。超线程技术通常支持为一个物理处理器核心分配两个物理线程,使得两个逻辑处理器可以共享一个物理处理器核心的计算资源;当然,不排除更多数量的逻辑处理器共享一个物理处理器核心的情况。针对逻辑处理器的调度操作通常由区块链节点上的Hypervisor来实现。Hypervisor又称为VMM(Virtual Machine Monitor,虚拟机监控器),是虚拟化技术的核心。在虚拟化环境下,物理机器的CPU、内存、硬盘和网卡等硬件资源被虚拟化,使得一台物理机器(或称为主机,Host Machine)可以虚拟化为多台客户虚拟机(GuestMachine),这些客户虚拟机或者说这些客户虚拟机上运行的客户操作系统在Hypervisor的协调下可以共享虚拟化后的硬件资源。
由于超线程之间需要共享物理处理器核心的一级缓存等计算资源,因而在处理隐私交易的逻辑处理器被调度至上述物理处理器核心上的一个物理线程的情况下,上述需要共享的计算资源就可能残留隐私数据,如果该物理处理器核心的另一物理线程上分配的逻辑处理器运行了不可信应用,该不可信应用就可能读取上述残留的隐私数据,从而造成隐私泄露。
虽然出于隐私保护的目的,可以关闭超线程技术以避免出现上述的隐私泄露,但是对于不存在隐私保护需求的情况,譬如区块链节点处理非隐私交易的场景等,就会导致处理效率的降低。类似地,除了区块链场景之外,在其他场景下同样存在类似的无法兼顾效率与隐私的问题。因此,本说明书提出了针对超线程场景的安全调度方案,可以兼顾超线程所带来的效率提升以及隐私保护需求。
图1是一示例性实施例提供的一种超线程场景下用于实现同步进入可信执行环境的安全调度方法的流程图。如图1所示,该方法可以包括以下步骤:
步骤102,在物理处理器核心上运行的逻辑处理器产生可信执行环境进入事件,且所述可信执行环境进入事件由所述物理处理器核心上运行的任一逻辑处理器通过虚拟机监视器提供的途径而产生时,将所述任一逻辑处理器标记为期望进入可信执行环境的状态。
物理处理器核心属于物理机器中的CPU,每个CPU可以包括一个或多个物理处理器核心。物理机器上可以基于虚拟化技术形成客户虚拟机,每个客户虚拟机可以形成一个或多个逻辑处理器。因此,本说明书中在涉及多个逻辑处理器时,这些逻辑处理器可以来自同一客户虚拟机,也可以来自不同的客户虚拟机。
物理处理器核心上可以构建TEE。以SGX技术为例,即物理处理器核心上可以构建Enclave。某一逻辑处理器产生可信执行环境进入事件时,表明该逻辑处理器内的应用程序希望进入物理处理器核心上构建的Enclave中。
Hypervisor可以向应用程序提供进入TEE的途径,使得基于该途径产生的可信执行环境进入事件与其他途径产生的可信执行环境进入事件能够被有效区分,进而识别应用程序是否存在恶意。可信应用通常必然会采用Hypervisor提供的途径进入TEE,而不可信应用会为了避开Hypervisor的控制而选择其他途径,因而可以据此区分应用是否可信。当然,如果不可信应用采用Hypervisor提供的途径进入TEE,还可以通过其他维度来识别出该不可信应用,而不会造成误判。可见,通过上述方式可以确定逻辑处理器中的应用程序是否进入TEE、何时进入TEE,并且可以获知其请求进入TEE的途径,使得只有通过Hypervisor提供的途径请求进入TEE,才会使得该逻辑处理器被标记为期望进入可信执行环境的状态,以使得逻辑处理器中的应用程序有机会进入物理处理器核心上构建的TEE。
逻辑处理器在运行应用程序时,内存访问操作使用如图2所示的虚拟地址空间,而扩展页表(Extended Page Table,扩展页表)用于将虚拟地址空间映射至物理机器中的实际机器内存,也就是将虚拟地址空间中的虚拟地址映射为实际机器内存中的地址。例如,逻辑处理器在读取虚拟地址空间中的地址A后,通过扩展页表中的映射关系1可以映射至实际机器内存中的地址a,以实现对Enclave对应的可信内存EPC的访问,即进入Enclave中。类似地,逻辑处理器在读取虚拟地址空间中的地址B后,通过扩展页表中的映射关系2可以映射至实际机器内存中的地址b,以读取跳板代码,以及逻辑处理器在读取虚拟地址空间中的地址C后,通过扩展页表中的映射关系3可以映射至实际机器内存中的地址c,以读取逻辑处理器内应用程序所含SDK提供的代码。当然,实际机器内存中除了上述代码之外,还可以保存有运行所需的其他数据,本说明书并不对此进行限制。
通过扩展页表中的映射关系1,逻辑处理器可以直接进入Enclave而不受任何控制,这会带来如前所述的安全隐患。因此,本说明书中可使Hypervisor对Enclave的创建过程予以监控,进而对扩展页表中的映射关系1进行控制。例如,Hypervisor可以预先配置由非根模式切换为根模式的切换条件,该切换条件包括检测到虚拟机执行可信执行环境构建指令,该可信执行环境构建指令用于创建TEE,譬如上述的Enclave。非根模式即Non RootOperation,是客户虚拟机(简称为虚拟机)运行所处的模式,而根模式即Root Operation,是Hypervisor运行所处的模式。通过将可信执行环境构建指令设置为上述的切换条件,实际上是将该可信执行环境构建指令设置为非根模式下的敏感指令,而敏感指令的执行会引起“陷入”即VM Exit操作,该VM Exit操作会引发从非根模式自动切换至根模式,从而将CPU的控制权从客户虚拟机(或者说是客户虚拟机运行的客户操作系统)转交给Hypervisor,这会导致:一方面可信执行环境构建指令未能成功执行,另一方面Hypervisor介入了TEE的创建过程。
如果Hypervisor发现是可信执行环境构建指令导致的虚拟化退出(即从非根模式切换至根模式),并且Hypervisor允许创建TEE,那么Hypervisor可以代替客户虚拟机执行上述可信执行环境构建指令以完成TEE的创建,然后重新进入虚拟化状态,比如Hypervisor可以发起VM Entry操作,以由根模式切换回非根模式。在SGX技术中,上述的可信执行环境构建指令可以为ENCLS[EADD]指令和ENCLS[EINIT]指令,其中ENCLS[EADD]指令用于将指定的内存页添加为所需创建的Enclave对应的EPC,并且涉及到在扩展页表中生成从虚拟地址到该EPC的映射关系(譬如图2所示的映射关系1等),而ENCLS[EINIT]指令的执行则表明EPC添加完毕,相当于对Enclave进行密封。
除了执行ENCLS[EADD]指令和ENCLS[EINIT]指令以创建Enclave之外,Hypervisor还需要执行其他操作。比如,假定图2所示的扩展页表中的映射关系1对应于上述创建的Enclave,则Hypervisor需要限制应用程序直接通过该映射关系1进入Enclave,那么Hypervisor可以将映射关系1配置为具有读和写等权限、但不具有执行权限,或者Hypervisor可以拒绝在扩展页表中生成映射关系1。当然,EPC内存范围通常是预先设定且固定不变的,因而上述的映射关系1可以覆盖EPC的全部内存范围并且被设置为不具有执行权限,使得该映射关系1必然可以对应于所有的Enclave,而无需在每次创建Enclave后临时在扩展页表中设置相应的映射关系并将其设置为不具有执行权限。相应地,逻辑处理器中的应用程序在通过扩展页表进入Enclave时,会由于映射关系1不可执行或不存在而导致页表翻译错误,引起虚拟化退出,而Hypervisor可以通过检查虚拟化退出的原因而发现上述应用程序想要直接进入Enclave的意图,进而确定该应用程序可能为不可信应用,可以避免将该不可信应用所在的逻辑处理器调度至进入Enclave,防止其窃取隐私数据。因此,在发生扩展页表翻译错误且识别出执行了进入可信执行环境的指令(例如SGX技术中的ENCLS[EENTER]指令)的情况下,可以引发虚拟化退出,而Hypervisor通过确认虚拟化退出原因就可以确定监测到可信执行环境进入事件且该可信执行环境进入事件由所述任一逻辑处理器通过直接访问物理处理器核心上构建的可信执行环境而产生。
本说明书提供了多种由Hypervisor提供的用于进入Enclave的安全途径。第一种途径:本说明书可以提供一种新的用于发起进入可信执行环境的超调用(Hypercall),可以通过执行用于进入可信执行环境的超调用指令来实现,该用于进入可信执行环境的超调用指令可以引发虚拟化退出,而Hypervisor通过确认虚拟化退出原因就可以确定监测到可信执行环境进入事件且该可信执行环境进入事件由所述任一逻辑处理器通过Hypervisor提供的途径而产生,进而由Hypervisor协助该逻辑处理器进入TEE。第二种途径:如前所述,由于映射关系1无法用于进入Enclave,那么Hypervisor可以在扩展页表中添加如图2所示的映射关系2,该映射关系2用于映射至地址b处的跳板代码,该跳板代码被任一逻辑处理器执行后可以协助该逻辑处理器进入TEE。该第二种途径虽然并不会引发虚拟化退出,但由于跳板代码由Hypervisor提供,因而仍然可以认为该途径由Hypervisor所提供。第三种途径:融合了第一种途径和第二种途径,Hypervisor所提供的跳板代码可以包含上述用于进入可信执行环境的超调用指令,使得该跳板代码被任一逻辑处理器执行后,可以在该跳板代码和Hypervisor的共同协助下进入TEE。下文会针对这些途径进行具体描述。
步骤104,在确定所述物理处理器核心对应的所有逻辑处理器均被标记为期望进入可信执行环境的状态的情况下,分别控制各个逻辑处理器进入所述物理处理器核心上构建的可信执行环境。
在上述的Enclave创建完成后,Hypervisor可以针对该Enclave创建区别于图2所示扩展页表的另一扩展页表,以实现将逻辑处理器调度至进入该Enclave。假定图2所示的扩展页表为第一扩展页表,该第一扩展页表为客户虚拟机默认使用的扩展页表,且该第一扩展页表中的映射关系1不可执行或不包含映射关系1。而Hypervisor针对创建的Enclave创建的另一扩展页表为第二扩展页表,该第二扩展页表例如图3所示,包括具有读、写和执行等权限的映射关系1,以及用于对跳板代码进行映射的映射关系4。
对于图3所示的实施例而言,可信应用进入Enclave的过程可以包括:
如果采用上述的第一种途径,运行该可信应用的逻辑处理器可以直接执行上述用于进入可信执行环境的超调用指令,该超调用指令会引发虚拟化退出,使得CPU的控制权从客户虚拟机切换到Hypervisor。Hypervisor如果确认允许该逻辑处理器进入Enclave,那么:首先,将该逻辑处理器使用的页表从第一扩展页表切换为第二扩展页表;然后,将该逻辑处理器标记为期望进入Enclave的状态;最后,循环等待,直至CPU上的所有逻辑处理器都被标记为期望进入Enclave的状态,此时可以确保不可信应用无法使用CPU资源、Enclave产生的敏感数据不会被窃取,Hypervisor可以触发返回虚拟化以向客户虚拟机交出对CPU的控制权,使得各个逻辑处理器可以通过执行可信执行环境进入指令,以进入Enclave。可信执行环境进入指令用于进入TEE,比如在SGX技术中,可信执行环境进入指令可以为ENCLS[EENTER]或ENCLS[ERESUME],以进入或重新进入Enclave。
如果采用上述的第二种途径,该可信应用的SDK中可以提供预定义接口,该预定义接口在虚拟地址空间中位于地址C,使得该可信应用所处的逻辑处理器可以通过默认使用的第一扩展页表对该地址C进行映射,比如通过映射关系3映射至实际机器内存中的地址c,地址c存储了SDK提供的代码,而逻辑处理器通过执行该代码可以跳转至虚拟地址空间中的地址B。因此,对于可信应用而言,只要是按照SDK所提供的方式,必然会进入到虚拟地址空间中的地址B,并进而通过第一扩展页表中的映射关系2映射至实际机器内存中的地址b,从而由该可信应用所处的逻辑处理器执行该地址b处的跳板代码。而对于不可信应用而言,则会选择通过地址A直接进入Enclave,但会由于如前所述的原因而无法执行。
在实际机器内存中,地址b和地址d处分别存储了两份跳板代码(还可以包含相关的数据),这两份跳板代码的内容完全相同,区别仅在于:地址b处的跳板代码受控于客户虚拟机、地址d处的跳板代码受控于Hypervisor。当然,这两份跳板代码也可以并不完全相同,下文将涉及不同情况下的处理差异。无论地址b和地址d处的跳板代码是否完全相同,应当至少确保:地址b处的跳板代码包含用于将第一扩展页表切换为第二扩展页表的页表切换指令,使得运行上述可信应用的逻辑处理器在执行地址b处的跳板代码时,可以确保其执行该页表切换指令以将使用的扩展页表从第一扩展页表切换为第二扩展页表。然后,该逻辑处理器在使用第二扩展页表时,可以通过该第二扩展页表所含的映射关系4读取地址d处的跳板代码,而该地址d处的跳板代码应当至少包含:用于对逻辑处理器进行状态标记的指令和用于控制逻辑处理器进入可信执行环境的指令。由于跳板代码是Hypervisor所提供,因此逻辑处理器执行该跳板代码就表明其采用了Hypervisor所提供的安全途径,所以在执行地址d处的跳板代码时,逻辑处理器可以执行上述用于对逻辑处理器进行状态标记的指令,以将自身标记为期望进入Enclave的状态;以及,逻辑处理器可以执行上述用于控制逻辑处理器进入可信执行环境的指令,该指令可以包括两部分:第一部分中,循环等待,直至CPU上的所有逻辑处理器都被标记为期望进入Enclave的状态,第二部分为可信执行环境进入指令,使得逻辑处理器可以据此进入Enclave。
可见,对于地址b处的跳板代码而言,由于从第一扩展页表切换为第二扩展页表后,就不会再执行该地址b处的跳板代码的其他指令,因而在上述用于将第一扩展页表切换为第二扩展页表的页表切换指令之后,无论包含何种指令均可。类似地,对于地址d处的跳板代码而言,只要包含用于对逻辑处理器进行状态标记的指令和用于控制逻辑处理器进入可信执行环境的指令,而在这些指令之前无论包含何种指令均可。所以,也可以认为在此情况下,跳板代码实际上包含:位于地址b处的一部分跳板代码、该部分跳板代码包含用于将第一扩展页表切换为第二扩展页表的页表切换指令,位于地址d处的另一部分跳板代码、该部分跳板代码包含用于对逻辑处理器进行状态标记的指令和用于控制逻辑处理器进入可信执行环境的指令。
如果采用上述的第三种途径,跳板代码包含用于进入可信执行环境的超调用指令,而该跳板代码还可以包含位于该进入可信执行环境的超调用指令之前且用于将第一扩展页表切换为第二扩展页表的页表切换指令,因而上述的可信应用在执行地址b处的跳板代码时,会导致:①先将第一扩展页表切换为第二扩展页表,这样逻辑处理器在通过地址B执行跳板代码时,会由于对应于地址B的映射关系由第一扩展页表中的映射关系2切换为第二扩展页表中的映射关系4,从而必然会执行位于地址d处、受控于Hypervisor的跳板代码,因此即便客户虚拟机对地址b处的跳板代码进行篡改也不会脱离Hypervisor的控制。②执行跳板代码中进入可信执行环境的超调用指令,该超调用指令而导致虚拟化退出,进而由Hypervisor予以接管。其中,与第二种途径相类似的,只需要确保地址b处的跳板代码包含将第一扩展页表切换为第二扩展页表的页表切换指令即可,而不论该指令之后包含何种指令;以及,地址d处的跳板代码只需包含用于进入可信执行环境的超调用指令,而不论在该指令之前包含何种指令。所以,也可以认为在此情况下,跳板代码实际上包含:位于地址b处的一部分跳板代码、该部分跳板代码包含用于将第一扩展页表切换为第二扩展页表的页表切换指令,位于地址d处的另一部分跳板代码、该部分跳板代码包含用于进入可信执行环境的超调用指令。
通过上述用于进入可信执行环境的超调用指令退出虚拟化后,如果Hypervisor允许发起该超调用的逻辑处理器进入Enclave,则为该逻辑处理器添加标记,并且需要确保物理处理器核心的所有物理线程所分配的逻辑处理器均被标记为期望进入Enclave的状态下,重新返回虚拟化环境,使得这些逻辑处理器通过执行可信执行环境进入指令而进入Enclave中,使得这些逻辑处理器同步进入Enclave。
需要指出的是:在本说明书中,CPU上运行的各个逻辑处理器中的应用程序进入的Enclave可以为同一Enclave,比如分别进入该同一Enclave对应的不同实例;或者,这些逻辑处理器中的应用程序进入的Enclave可以为不同Enclave,但应当确保所有Enclave对于这些应用程序都是可以相互信任的。
Hypervisor在本说明书的方案中是可信的。因此,可信应用通过相信Hypervisor而进一步相信由Hypervisor提供的进入TEE的途径。当然,如果对Hypervisor的可靠性存在质疑,可以对该Hypervisor进行可信验证。物理机器在开机时可以通过TPM芯片对Hypervisor对应的代码进行度量,而对Hypervisor存在质疑的应用程序可以获取TPM芯片生成的度量,以验证Hypervisor是否被篡改。例如,在物理处理器核心上运行的所有逻辑处理器分别进入该物理处理器核心上构建的可信执行环境的情况下,可以对Hypervisor进行验证,比如向TPM芯片请求获取其开机过程产生的度量,并将该度量与预先获得的标准度量进行比较,如果两者一致则表明:Hypervisor确实存在且Hypervisor的代码未发生篡改,因而可以确定Hypervisor通过验证,并认定所有进入TEE的应用程序必然是经过Hypervisor管控的可信应用,所以上述的逻辑处理器可以在物理处理器核心上构建的可信执行环境中处理隐私数据,而不必担心发生隐私泄露。当然,除了借助TPM平台之外,还可以通过其他方式来验证Hypervisor的存在性和安全性,本说明书并不对此进行限制。通常,只需要在第一次进入TEE时对Hypervisor进行验证即可,后续则不再需要验证。同时,针对Hypervisor进行验证的工作,可以由如前所述的应用程序的SDK来实现,当然并不排除其他可行的实现方式。
除了对进入TEE的过程进行控制之外,Hypervisor可以对退出TEE进行控制,使得物理处理器核心的所有物理线程所分配的逻辑处理器可以实现同步退出TEE,从而通过同步进入、同步退出来确保物理处理器核心始终被可信应用所独占。例如,图4是一示例性实施例提供的一种超线程场景下用于实现同步退出可信执行环境的安全调度方法的流程图。如图4所示,该方法可以包括以下步骤:
步骤402,在所述物理处理器核心上运行的逻辑处理器产生可信执行环境退出事件时,将产生所述可信执行环境退出事件的逻辑处理器标记为期望退出可信执行环境的状态,或者清除已标记的期望进入可信执行环境的状态。
逻辑处理器内的应用程序可以主动请求退出TEE。本说明书可以提供用于退出TEE的超调用指令,而已进入TEE的逻辑处理器可以通过执行该超调用指令而引起虚拟化退出,进而实现对Hypervisor的调用,使得Hypervisor通过调查虚拟化退出原因后,确定该逻辑处理器请求退出TEE。通过上述方式,可以避免逻辑处理器直接退出TEE,从而确保同一物理处理器核心上的所有逻辑处理器可以在Hypervisor的控制下同步退出TEE。
当物理处理器核心上运行的某一逻辑处理器希望退出TEE时,该逻辑处理器可以执行用于退出可信执行环境的超调用指令以引发VM Exit,使得Hypervisor获得对CPU的控制权。那么,Hypervisor在发现引发VM Exit的原因为上述逻辑处理器执行了用于退出可信执行环境的超调用指令的情况下,可以将该逻辑处理器标记为期望退出可信执行环境的状态,或者将其先前被标记的期望进入可信执行环境的状态清除。
相应地,在物理处理器核心上运行的至少一个逻辑处理器被标记为期望退出可信执行环境的状态或者已标记的期望进入可信执行环境的状态被清除,且存在被标记为期望进入可信执行环境的状态的剩余逻辑处理器的情况下,Hypervisor可以向该剩余逻辑处理器发送由客户操作系统预先注册的空中断,然后等待;在该剩余逻辑处理器被标记为期望退出可信执行环境的状态或者已标记的期望进入可信执行环境的状态被清除后,Hypervisor触发VM Entry以将CPU的控制权交还给客户虚拟机,使得各个逻辑处理器分别退出物理处理器核心上构建的可信执行环境。其中,本说明书可以提供用于注册空中断的超调度指令,使得客户虚拟机可以基于该超调度指令来引发虚拟化退出,进而由Hypervisor协助完成对上述空中断的注册。客户操作系统预先注册的空中断,相当于由客户操作系统预先向Hypervisor告知“某个中断是用于触发退出TEE的中断”,因而当客户操作系统收到这个中断后,由于知道该中断的含义是退出TEE并且实际上已经完成了退出TEE的动作,因而客户操作系统直接忽略该中断。
除了主动请求退出TEE之外,逻辑处理器还可能由于中断或异常等而产生上述的可信执行环境退出事件,而这同样会引起虚拟化退出,从而由Hypervisor对该逻辑处理器和其他逻辑处理器进行控制,使得所有逻辑处理器能够同步退出TEE。以中断场景为例:当发生VM Exit后,Hypervisor如果发现虚拟化退出的原因是某个逻辑处理器发生中断,那么可以进一步确定其他逻辑处理器的状态。其他逻辑处理器存在三种可能的状态:第一种状态下,其他逻辑处理器并未进入TEE;第二种情况下,其他逻辑处理器已进入TEE;第三种情况下,其他逻辑处理器对应的扩展页表已从第一扩展页表切换为第二扩展页表,但尚未进入TEE。对于第一种状态,Hypervisor按照相关技术中的中断处理规则进行处理即可;对于第二种状态和第三种状态,Hypervisor在执行下述操作后向上述的其他逻辑处理器注入中断:
如果上述地址b处的跳板代码中,位于页表切换指令之后的指令均为空操作指令(如NOP指令),则Hypervisor仅需要将上述其他逻辑处理器使用的扩展页表从第二扩展页表切换会第一扩展页表,然后重新进入虚拟化。那么,上述的其他逻辑处理器可以通过该第一扩展页表读取地址b处的跳板代码,并执行位于页表切换指令之后的空操作指令,最后进入该跳板代码中注册的预设返回地址。
如果上述地址b处的跳板代码中,位于页表切换指令之后的指令包含非空操作指令,比如该地址b处的跳板代码与地址d处的跳板代码的内容一致,则Hypervisor除了将上述其他逻辑处理器使用的扩展页表从第二扩展页表切换回第一扩展页表之外,还需要主动将该其他逻辑处理器的返回地址改写为第一扩展页表对应的预设返回地址,然后重新进入虚拟化,从而确保其他逻辑处理器可以直接退出到该预设返回地址,而不会由于执行地址b处的跳板代码中位于页表切换指令之后的非空操作指令而造成错误。
上述两种情况下,Hypervisor都需要主动将第二扩展页表切换回第一扩展页表,原因在于第二扩展页表被配置为只有EPC内存和地址d处的跳板代码可以执行,而其他内存则不映射或映射但不可执行,使得该第二扩展页表无法用于处理中断。因此,在切换回第一扩展页表后,Hypervisor向其他逻辑处理器注入的中断能够被正常响应,进而使得所有逻辑处理器能够同步退出TEE。
步骤404,在确定所述物理处理器核心对应的所有逻辑处理器均被标记为期望退出可信执行环境的状态或者已标记的期望进入可信执行环境的状态均被清除的情况下,分别控制各个逻辑处理器退出所述物理处理器核心上构建的可信执行环境。
如前所述,通过对各个逻辑处理器进行状态管理,Hypervisor可以确保同一物理处理器核心上的所有逻辑处理器同步退出TEE,而不会存在一部分逻辑处理器退出TEE、另一部分逻辑处理器未退出TEE的情况,确保可信应用能够独占物理处理器核心。
图5是一示例性实施例提供的一种设备的示意结构图。请参考图5,在硬件层面,该设备包括处理器502、内部总线504、网络接口506、内存508以及非易失性存储器510,当然还可能包括其他业务所需要的硬件。处理器502从非易失性存储器510中读取对应的计算机程序到内存508中然后运行,在逻辑层面上形成超线程场景下的安全调度装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图6,在软件实施方式中,该超线程场景下的安全调度装置可以包括:
标记单元601,在物理处理器核心上运行的逻辑处理器产生可信执行环境进入事件,且所述可信执行环境进入事件由所述物理处理器核心上运行的任一逻辑处理器通过虚拟机监视器提供的途径而产生时,将所述任一逻辑处理器标记为期望进入可信执行环境的状态;
控制单元602,在确定所述物理处理器核心对应的所有逻辑处理器均被标记为期望进入可信执行环境的状态的情况下,分别控制各个逻辑处理器进入所述物理处理器核心上构建的可信执行环境。
可选的,通过所述虚拟机监视器提供的途径产生所述可信执行环境进入事件,包括:
直接执行用于进入可信执行环境的超调用指令;其中,所述虚拟机监视器用于对逻辑处理器进行状态标记,以及控制逻辑处理器进入可信执行环境;或者,
执行所述虚拟机监视器提供的跳板代码,所述跳板代码的内存由默认使用的第一扩展页表进行映射;其中,所述跳板代码包含所述用于进入可信执行环境的超调用指令,或者所述跳板代码包含用于对逻辑处理器进行状态标记的指令和用于控制逻辑处理器进入可信执行环境的指令。
可选的,第一扩展页表被配置为可信执行环境的内存未被映射或不可执行;
在所述用于进入可信执行环境的超调用指令未被包含于所述跳板代码中的情况下,所述虚拟机监视器还用于:在所述可信执行环境进入事件由所述任一逻辑处理器通过虚拟机监视器提供的途径而产生时,将第一扩展页表切换为第二扩展页表;
在所述用于进入可信执行环境的超调用指令被包含于所述跳板代码中的情况下,所述跳板代码还包含位于所述用于进入可信执行环境的超调用指令之前且用于将第一扩展页表切换为第二扩展页表的页表切换指令;
在所述跳板代码未包含所述用于进入可信执行环境的超调用指令的情况下,所述跳板代码还包含位于所述用于控制逻辑处理器进入可信执行环境的指令之前且用于将第一扩展页表切换为第二扩展页表的页表切换指令;
其中,所述跳板代码被第一扩展页表映射至受控于客户虚拟机的第一内存地址、被第二扩展页表映射至受控于所述虚拟机监视器的第二内存地址,且第二扩展页表被配置为可信执行环境的内存可执行。
可选的,还包括:
切换单元603,在控制任一逻辑处理器退出所述物理处理器核心上构建的可信执行环境后,将第二扩展页表切换为第一扩展页表。
可选的,还包括:
中断处理单元604,当所述物理处理器核心上运行的一逻辑处理器发生中断而产生可信执行环境退出事件时,若其他逻辑处理器已进入所述物理处理器核心上构建的可信执行环境,或者已由第一扩展页表切换为第二扩展页表但尚未进入所述物理处理器核心上构建的可信执行环境,则执行下述操作后向所述其他逻辑处理器注入中断:若第一内存地址处的跳板代码中位于所述页表切换指令之后的指令均为空操作指令,则将第二扩展页表切换回第一扩展页表;若第一内存地址处的跳板代码中位于所述页表切换指令之后的指令包含非空指令,则将第二扩展页表切换回第一扩展页表,并将所述其他逻辑处理器的返回地址改写为第一扩展页表对应的预设返回地址;
所述控制单元602在所有逻辑处理器均产生可信执行环境退出事件的情况下,分别控制各个逻辑处理器退出所述物理处理器核心上构建的可信执行环境。
可选的,还包括:
配置单元605,配置由非根模式切换为根模式的切换条件,所述切换条件包括检测到客户虚拟机执行可信执行环境构建指令;
响应单元606,响应于所述切换条件被满足,执行所述可信执行环境构建指令,以在所述物理处理器核心上构建可信执行环境。
可选的,所述物理处理器核心上运行的所有逻辑处理器均被标记为期望进入可信执行环境的状态,包括:
所述物理处理器核心上运行的所有逻辑处理器均被标记为期望进入同一个可信执行环境;或者,
所述物理处理器核心上运行的所有逻辑处理器被分别标记为期望进入不同的可信执行环境,且不同的逻辑处理器相互信任对方期望进入的可信执行环境。
可选的,还包括:
验证单元607,在所述物理处理器核心上运行的所有逻辑处理器分别被调度至进入所述物理处理器核心上构建的可信执行环境的情况下,对所述虚拟机监视器进行验证;
数据处理单元608,在确定所述虚拟机监视器通过验证的情况下,在所述物理处理器核心上构建的可信执行环境中处理隐私数据。
可选的,所述验证单元607具体用于:
通过可信平台模块对所述虚拟机监视器进行验证。
可选的,
所述标记单元601还用于:在所述物理处理器核心上运行的逻辑处理器产生的可信执行环境退出事件时,将产生所述可信执行环境退出事件的逻辑处理器标记为期望退出可信执行环境的状态,或者清除已标记的期望进入可信执行环境的状态;
所述控制单元602还用于:在确定所述物理处理器核心对应的所有逻辑处理器均被标记为期望退出可信执行环境的状态或者已标记的期望进入可信执行环境的状态均被清除的情况下,分别控制各个逻辑处理器退出所述物理处理器核心上构建的可信执行环境。
可选的,所述物理处理器核心上运行的逻辑处理器产生可信执行环境退出事件,包括:
所述物理处理器核心上运行的逻辑处理器发起的退出可信执行环境的超调用;或者,
所述物理处理器核心上运行的逻辑处理器发生中断或异常。
可选的,所述控制单元602具体用于:
在所述物理处理器核心上运行的至少一个逻辑处理器被标记为期望退出可信执行环境的状态或者已标记的期望进入可信执行环境的状态被清除,且存在被标记为期望进入可信执行环境的状态的剩余逻辑处理器的情况下,向所述剩余逻辑处理器发送预先注册的空中断;
等待所述剩余逻辑处理器被标记为期望退出可信执行环境的状态或者已标记的期望进入可信执行环境的状态被清除后,分别将各个逻辑处理器调度至退出所述物理处理器核心上构建的可信执行环境。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (16)

1.一种超线程场景下安全进入可信执行环境的方法,包括:
在物理处理器核心上运行的逻辑处理器产生可信执行环境进入事件,且所述可信执行环境进入事件由所述物理处理器核心上运行的任一逻辑处理器通过虚拟机监视器提供的途径而产生时,将所述任一逻辑处理器标记为期望进入可信执行环境的状态;
在确定所述物理处理器核心对应的所有逻辑处理器均被标记为期望进入可信执行环境的状态的情况下,分别控制各个逻辑处理器进入所述物理处理器核心上构建的可信执行环境。
2.根据权利要求1所述的方法,所述物理处理器核心分配有多个物理线程,所述多个物理线程之间共享所述物理处理器核心的计算资源,所述物理处理器核心上运行的逻辑处理器通过被调度至所述物理处理器核心的物理线程以运行应用程序;所述分别控制各个逻辑处理器进入所述物理处理器核心上构建的可信执行环境,包括:
分别控制各个逻辑处理器中的应用程序进入所述物理处理器核心上构建的可信执行环境。
3.根据权利要求1所述的方法,通过所述虚拟机监视器提供的途径产生所述可信执行环境进入事件,包括:
直接执行用于进入可信执行环境的超调用指令;其中,所述虚拟机监视器用于对逻辑处理器进行状态标记,以及控制逻辑处理器进入可信执行环境;或者,
执行所述虚拟机监视器提供的跳板代码,所述跳板代码的内存由默认使用的第一扩展页表进行映射;其中,所述跳板代码包含所述用于进入可信执行环境的超调用指令,或者所述跳板代码包含用于对逻辑处理器进行状态标记的指令和用于控制逻辑处理器进入可信执行环境的指令。
4.根据权利要求3所述的方法,第一扩展页表被配置为可信执行环境的内存未被映射或不可执行;
在所述用于进入可信执行环境的超调用指令未被包含于所述跳板代码中的情况下,所述虚拟机监视器还用于:在所述可信执行环境进入事件由所述任一逻辑处理器通过虚拟机监视器提供的途径而产生时,将第一扩展页表切换为第二扩展页表;
在所述用于进入可信执行环境的超调用指令被包含于所述跳板代码中的情况下,所述跳板代码还包含位于所述用于进入可信执行环境的超调用指令之前且用于将第一扩展页表切换为第二扩展页表的页表切换指令;
在所述跳板代码未包含所述用于进入可信执行环境的超调用指令的情况下,所述跳板代码还包含位于所述用于控制逻辑处理器进入可信执行环境的指令之前且用于将第一扩展页表切换为第二扩展页表的页表切换指令;
其中,所述跳板代码被第一扩展页表映射至受控于客户虚拟机的第一内存地址、被第二扩展页表映射至受控于所述虚拟机监视器的第二内存地址,且第二扩展页表被配置为可信执行环境的内存可执行。
5.根据权利要求4所述的方法,还包括:
在控制任一逻辑处理器退出所述物理处理器核心上构建的可信执行环境后,将第二扩展页表切换为第一扩展页表。
6.根据权利要求4所述的方法,还包括:
当所述物理处理器核心上运行的一逻辑处理器发生中断而产生可信执行环境退出事件时,若其他逻辑处理器已进入所述物理处理器核心上构建的可信执行环境,或者已由第一扩展页表切换为第二扩展页表但尚未进入所述物理处理器核心上构建的可信执行环境,则执行下述操作后向所述其他逻辑处理器注入中断:若第一内存地址处的跳板代码中位于所述页表切换指令之后的指令均为空操作指令,则将第二扩展页表切换回第一扩展页表;若第一内存地址处的跳板代码中位于所述页表切换指令之后的指令包含非空指令,则将第二扩展页表切换回第一扩展页表,并将所述其他逻辑处理器的返回地址改写为第一扩展页表对应的预设返回地址;
在所有逻辑处理器均产生可信执行环境退出事件的情况下,分别控制各个逻辑处理器退出所述物理处理器核心上构建的可信执行环境。
7.根据权利要求1所述的方法,还包括:
配置由非根模式切换为根模式的切换条件,所述切换条件包括检测到客户虚拟机执行可信执行环境构建指令;
响应于所述切换条件被满足,执行所述可信执行环境构建指令,以在所述物理处理器核心上构建可信执行环境。
8.根据权利要求1所述的方法,所述物理处理器核心上运行的所有逻辑处理器均被标记为期望进入可信执行环境的状态,包括:
所述物理处理器核心上运行的所有逻辑处理器均被标记为期望进入同一个可信执行环境;或者,
所述物理处理器核心上运行的所有逻辑处理器被分别标记为期望进入不同的可信执行环境,且不同的逻辑处理器相互信任对方期望进入的可信执行环境。
9.根据权利要求1所述的方法,还包括:
在所述物理处理器核心上运行的所有逻辑处理器分别进入所述物理处理器核心上构建的可信执行环境的情况下,对所述虚拟机监视器进行验证;
在确定所述虚拟机监视器通过验证的情况下,在所述物理处理器核心上构建的可信执行环境中处理隐私数据。
10.根据权利要求9所述的方法,所述对所述虚拟机监视器进行验证,包括:
通过可信平台模块对所述虚拟机监视器进行验证。
11.根据权利要求1所述的方法,还包括:
在所述物理处理器核心上运行的逻辑处理器产生可信执行环境退出事件时,将产生所述可信执行环境退出事件的逻辑处理器标记为期望退出可信执行环境的状态,或者清除已标记的期望进入可信执行环境的状态;
在确定所述物理处理器核心对应的所有逻辑处理器均被标记为期望退出可信执行环境的状态或者已标记的期望进入可信执行环境的状态均被清除的情况下,分别控制各个逻辑处理器退出所述物理处理器核心上构建的可信执行环境。
12.根据权利要求11所述的方法,所述物理处理器核心上运行的逻辑处理器产生可信执行环境退出事件,包括:
所述物理处理器核心上运行的逻辑处理器发起的退出可信执行环境的超调用;或者,
所述物理处理器核心上运行的逻辑处理器发生中断或异常。
13.根据权利要求11所述的方法,所述在确定所述物理处理器核心对应的所有逻辑处理器均被标记为期望退出可信执行环境的状态或者已标记的期望进入可信执行环境的状态均被清除的情况下,分别控制各个逻辑处理器调度至退出所述物理处理器核心上构建的可信执行环境,包括:
在所述物理处理器核心上运行的至少一个逻辑处理器被标记为期望退出可信执行环境的状态或者已标记的期望进入可信执行环境的状态被清除,且存在被标记为期望进入可信执行环境的状态的剩余逻辑处理器的情况下,向所述剩余逻辑处理器发送由客户操作系统预先注册的空中断;
等待所述剩余逻辑处理器被标记为期望退出可信执行环境的状态或者已标记的期望进入可信执行环境的状态被清除后,分别控制各个逻辑处理器退出所述物理处理器核心上构建的可信执行环境。
14.一种超线程场景下安全进入可信执行环境的装置,包括:
标记单元,在物理处理器核心上运行的逻辑处理器产生可信执行环境进入事件,且所述可信执行环境进入事件由所述物理处理器核心上运行的任一逻辑处理器通过虚拟机监视器提供的途径而产生时,将所述任一逻辑处理器标记为期望进入可信执行环境的状态;
控制单元,在确定所述物理处理器核心对应的所有逻辑处理器均被标记为期望进入可信执行环境的状态的情况下,分别控制各个逻辑处理器进入所述物理处理器核心上构建的可信执行环境。
15.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-13中任一项所述的方法。
16.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-13中任一项所述方法的步骤。
CN202110145151.6A 2020-08-28 2020-08-28 超线程场景下安全进入可信执行环境的方法及装置 Active CN112800431B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110145151.6A CN112800431B (zh) 2020-08-28 2020-08-28 超线程场景下安全进入可信执行环境的方法及装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110145151.6A CN112800431B (zh) 2020-08-28 2020-08-28 超线程场景下安全进入可信执行环境的方法及装置
CN202010888591.6A CN111753311B (zh) 2020-08-28 2020-08-28 超线程场景下安全进入可信执行环境的方法及装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202010888591.6A Division CN111753311B (zh) 2020-08-28 2020-08-28 超线程场景下安全进入可信执行环境的方法及装置

Publications (2)

Publication Number Publication Date
CN112800431A CN112800431A (zh) 2021-05-14
CN112800431B true CN112800431B (zh) 2023-09-29

Family

ID=72713281

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010888591.6A Active CN111753311B (zh) 2020-08-28 2020-08-28 超线程场景下安全进入可信执行环境的方法及装置
CN202110145151.6A Active CN112800431B (zh) 2020-08-28 2020-08-28 超线程场景下安全进入可信执行环境的方法及装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202010888591.6A Active CN111753311B (zh) 2020-08-28 2020-08-28 超线程场景下安全进入可信执行环境的方法及装置

Country Status (3)

Country Link
US (1) US11392405B2 (zh)
EP (1) EP3961446B1 (zh)
CN (2) CN111753311B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112989326A (zh) * 2021-04-08 2021-06-18 北京字节跳动网络技术有限公司 一种指令发送方法及装置
CN113658005A (zh) * 2021-04-28 2021-11-16 支付宝(杭州)信息技术有限公司 在区块链中执行交易的方法和区块链系统
CN113449346B (zh) * 2021-09-01 2021-12-14 飞腾信息技术有限公司 微处理器、数据处理方法、电子设备和存储介质
US20230177143A1 (en) * 2021-12-03 2023-06-08 International Business Machines Corporation Operating a secure code segment on a processor core of a processing unit
US20230297666A1 (en) * 2022-03-18 2023-09-21 Mellanox Technologies, Ltd. Preserving confidentiality of tenants in cloud environment when deploying security services

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1675623A (zh) * 2002-06-07 2005-09-28 英特尔公司 通过重定向系统管理中断和创建虚拟机容器来抵御非可信系统管理代码的系统和方法
WO2012039726A1 (en) * 2009-11-04 2012-03-29 Georgia Tech Research Corporation Systems and methods for secure in-vm monitoring
CN105631314A (zh) * 2015-04-24 2016-06-01 宇龙计算机通信科技(深圳)有限公司 终端的执行环境切换方法及系统、终端
CN106682497A (zh) * 2015-11-09 2017-05-17 卡巴斯基实验室股份制公司 在管理程序模式下安全执行代码的系统和方法
CN108509251A (zh) * 2018-03-19 2018-09-07 沈阳微可信科技有限公司 一种适用于可信执行环境中的安全虚拟化系统
CN108549571A (zh) * 2018-03-19 2018-09-18 沈阳微可信科技有限公司 一种适用于可信执行环境中的安全虚拟化方法
CN109522754A (zh) * 2018-11-28 2019-03-26 中国科学院信息工程研究所 一种移动终端可信隔离环境核心控制方法
CN109947666A (zh) * 2019-02-27 2019-06-28 余炀 可信执行环境缓存隔离方法及装置、电子设备和存储介质
CN110119302A (zh) * 2019-04-23 2019-08-13 上海隔镜信息科技有限公司 虚拟机监视器以及虚拟可信执行环境构建方法
CN110998575A (zh) * 2019-04-19 2020-04-10 阿里巴巴集团控股有限公司 在支持受保护执行环境的处理器上执行可信应用的方法和设备

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069442B2 (en) * 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US9087200B2 (en) * 2009-12-22 2015-07-21 Intel Corporation Method and apparatus to provide secure application execution
US9684608B2 (en) * 2014-10-28 2017-06-20 Intel Corporation Maintaining a secure processing environment across power cycles
US10353831B2 (en) * 2015-12-24 2019-07-16 Intel Corporation Trusted launch of secure enclaves in virtualized environments
US10599544B2 (en) * 2017-11-22 2020-03-24 International Business Machines Corporation Determining reboot times of computing nodes
US11113400B1 (en) * 2017-12-26 2021-09-07 Virtuozzo International Gmbh System and method for providing distributed compute platform on untrusted hardware
US10552344B2 (en) * 2017-12-26 2020-02-04 Intel Corporation Unblock instruction to reverse page block during paging
US10970390B2 (en) * 2018-02-15 2021-04-06 Intel Corporation Mechanism to prevent software side channels
CN109359487B (zh) * 2018-10-09 2022-02-18 湖北文理学院 一种基于硬件隔离的可扩展安全影子存储及标签管理方法
US11308203B2 (en) * 2019-01-11 2022-04-19 Microsoft Technology Licensing, Llc Side-channel protection

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1675623A (zh) * 2002-06-07 2005-09-28 英特尔公司 通过重定向系统管理中断和创建虚拟机容器来抵御非可信系统管理代码的系统和方法
WO2012039726A1 (en) * 2009-11-04 2012-03-29 Georgia Tech Research Corporation Systems and methods for secure in-vm monitoring
CN105631314A (zh) * 2015-04-24 2016-06-01 宇龙计算机通信科技(深圳)有限公司 终端的执行环境切换方法及系统、终端
CN106682497A (zh) * 2015-11-09 2017-05-17 卡巴斯基实验室股份制公司 在管理程序模式下安全执行代码的系统和方法
CN108509251A (zh) * 2018-03-19 2018-09-07 沈阳微可信科技有限公司 一种适用于可信执行环境中的安全虚拟化系统
CN108549571A (zh) * 2018-03-19 2018-09-18 沈阳微可信科技有限公司 一种适用于可信执行环境中的安全虚拟化方法
CN109522754A (zh) * 2018-11-28 2019-03-26 中国科学院信息工程研究所 一种移动终端可信隔离环境核心控制方法
CN109947666A (zh) * 2019-02-27 2019-06-28 余炀 可信执行环境缓存隔离方法及装置、电子设备和存储介质
CN110998575A (zh) * 2019-04-19 2020-04-10 阿里巴巴集团控股有限公司 在支持受保护执行环境的处理器上执行可信应用的方法和设备
CN110119302A (zh) * 2019-04-23 2019-08-13 上海隔镜信息科技有限公司 虚拟机监视器以及虚拟可信执行环境构建方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Towards Memory Safe Enclave Programming with Rust-SGX;Huibo Wang;《CCS "19: Proceedings of the 2019 ACM SIGSAC Conference on Computer and Communications Security》;20191106;全文 *
基于虚拟机的内核完整性保护技术;张磊等;《电子科技大学学报》;20150130(第01期);全文 *

Also Published As

Publication number Publication date
US11392405B2 (en) 2022-07-19
CN112800431A (zh) 2021-05-14
EP3961446A1 (en) 2022-03-02
CN111753311B (zh) 2020-12-15
EP3961446B1 (en) 2023-04-19
US20220066809A1 (en) 2022-03-03
CN111753311A (zh) 2020-10-09

Similar Documents

Publication Publication Date Title
CN112800431B (zh) 超线程场景下安全进入可信执行环境的方法及装置
CN111382445B (zh) 利用可信执行环境系统提供可信服务的方法
Tiburski et al. Lightweight security architecture based on embedded virtualization and trust mechanisms for IoT edge devices
EP3674954B1 (en) Security control method and computer system
US9898609B2 (en) Trusted boot of a virtual machine
EP2815349B1 (en) Roots-of-trust for measurement of virtual machines
US20210124824A1 (en) Securing secret data embedded in code against compromised interrupt and exception handlers
JP6083097B2 (ja) ハードウェア保護アプリケーションのシステム・サービス要求相互作用を容易化する方法
US20190114428A1 (en) Secure system on chip
US20210390173A1 (en) Interaction Method and Apparatus
CN113987599B (zh) 一种固件可信根的实现方法、装置、设备和可读存储介质
CN112329005A (zh) 操作系统启动的引导度量方法、装置、电子设备和介质
US8601544B1 (en) Computer system employing dual-band authentication using file operations by trusted and untrusted mechanisms
US9398019B2 (en) Verifying caller authorization using secret data embedded in code
CN113448681B (zh) 一种虚拟机监控器公钥的注册方法、设备和存储介质
EP3646216B1 (en) Methods and devices for executing trusted applications on processor with support for protected execution environments
US9240988B1 (en) Computer system employing dual-band authentication
Buchner et al. Survey on Trusted Execution Environments
US20150356307A1 (en) Safe input method and system
Mishra et al. Threats and vulnerabilities to IoT end devices architecture and suggested remedies
CN117633912B (zh) 一种基于risc-v架构的高通量机密计算方法及系统
Fitzek Development of an ARM TrustZone aware operating system ANDIX OS
Iannillo et al. An REE-independent Approach to Identify Callers of TEEs in TrustZone-enabled Cortex-M Devices
Kushwah PSec: A Programming Language for Secure Distributed Computing
KR20130093804A (ko) 응용 서비스 기밀 실행을 위한 런타임 제공 장치 및 방법

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
GR01 Patent grant
GR01 Patent grant