CN110998575B - 在支持受保护执行环境的处理器上执行可信应用的方法和设备 - Google Patents

在支持受保护执行环境的处理器上执行可信应用的方法和设备 Download PDF

Info

Publication number
CN110998575B
CN110998575B CN201980003435.2A CN201980003435A CN110998575B CN 110998575 B CN110998575 B CN 110998575B CN 201980003435 A CN201980003435 A CN 201980003435A CN 110998575 B CN110998575 B CN 110998575B
Authority
CN
China
Prior art keywords
processing unit
logical processing
enclave
application
exit
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
CN201980003435.2A
Other languages
English (en)
Other versions
CN110998575A (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.)
Ant Chain Technology Co ltd
Original Assignee
Advanced New Technologies 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 Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Publication of CN110998575A publication Critical patent/CN110998575A/zh
Application granted granted Critical
Publication of CN110998575B publication Critical patent/CN110998575B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/033Test or assess software

Landscapes

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

Abstract

本文公开了用于执行应用的方法、设备和装置,包括在计算机存储介质上存储的计算机程序。所述方法之一包括:在处理器的第一物理处理单元中建立飞地;记录由第一应用声明的第一信任声明,该第一信任声明声明第一应用是否信任任何要在第一物理处理单元上与第一应用一起执行的应用;将第一应用分配给第一物理处理单元上承载的第一逻辑处理单元;提供飞地进入指令集,供第一逻辑处理单元执行,以使第一逻辑处理单元在满足预定义进入条件时进入该飞地;以及提供飞地退出指令集,供第一逻辑处理单元执行,以使第一逻辑处理单元在满足预定义退出条件时退出该飞地。

Description

在支持受保护执行环境的处理器上执行可信应用的方法和 设备
技术领域
本文总体上涉及计算机技术,更具体地,涉及在支持受保护执行环境的处理器上执行可信应用的方法和设备。
背景技术
处理器是可用于执行计算机程序中指定的指令的电路。处理器可以包括执行算术和逻辑运算的算术逻辑单元(ALU)。处理器还可以包括向ALU提供操作数并存储ALU产生的结果的寄存器。处理器还可以包括协调ALU、寄存器和其他组件的操作的控制单元,其他组件包括例如一级或多级高速缓存、一级或多级转译后备缓冲器(translation lookasidebuffers,TLB)以及一个或多个存储器控制器。
多个处理器可以封装在一起以形成多核处理器。包含在多核处理器中的每个处理器可被称为物理处理单元或“核”。这些物理处理单元可以支持多线程,这意味着每个物理处理单元可以并行地执行两组或多组操作或应用。可以利用各种技术来实现多线程,包括例如时分(time sliced)多线程(其中,物理处理单元根据预定义的时间间隔(例如,每个处理周期)在物理处理单元上执行的应用之间快速切换)、同时(simultaneous)多线程(其中,每个物理处理单元可以承载多个逻辑处理单元,每个逻辑处理单元用于在该物理处理单元上执行的每个应用)、或它们的组合。超线程技术是使用时分多线程和同时多线程的组合的多线程技术。具体地说,/>超线程使用时分多线程来提取和解码操作,然后使用同时多线程来实施执行操作。
逻辑处理单元通常被呈现给在其上执行的应用,所述逻辑处理单元逻辑上与承载它们的底层物理处理单元无关。然而,实际上,逻辑处理单元可能无法完全控制一些物理处理单元上可用的资源。例如,如果物理处理单元需要承载多个逻辑处理单元以支持多个应用的同时多线程,则通常物理处理单元可以设置逻辑处理单元以共享一些资源,例如级1(L1)高速缓存、L1 TLB等。以这种方式共享资源可能会将某些类型的数据暴露给入侵者。例如,假设物理处理单元提供用于处理应用A的执行的第一逻辑处理单元和用于处理应用B的执行的第二逻辑处理单元,并且进一步假设物理处理单元将两个逻辑处理单元设置为共享L1高速缓存,应用B可以随后能够访问由应用A存储在高速缓存L1中的数据,反之亦然。
对处理器的扩展,例如软件保护扩展(SGX)等,可以为应用A和B提供一些保护。但是,即使实现了这些扩展的处理器仍然容易受到攻击。近年来发现了诸如Spectre、L1终端故障(L1TF)等的安全漏洞。未来可能会发现其他潜在的漏洞。避免这些攻击的一种可能解决方案是禁用同时多线程。以这种方式,可以消除如以上示例中所述的与应用A和应用B共享L1高速缓存相关联的问题。然而,该解决方案将逻辑处理单元的数量减少为与物理处理单元的数量相同,这反过来降低了处理器的多线程能力。因此,需要提高在支持同时多线程的处理器上执行的应用的数据安全的方法。
发明内容
在一个方面,一种计算机实现的用于执行应用的方法,包括:在处理器的第一物理处理单元中建立飞地(enclave);记录由第一应用声明的第一信任声明,该第一信任声明声明第一应用是否信任任何要在第一物理处理单元上与第一应用一起执行的应用;将第一应用分配给第一物理处理单元上承载的第一逻辑处理单元;提供飞地进入指令集,以供第一逻辑处理单元执行,以使第一逻辑处理单元在满足预定义进入条件时进入该飞地;以及提供飞地退出指令集,以供第一逻辑处理单元执行,以使第一逻辑处理单元在满足预定义退出条件时退出该飞地。
在另一方面,一种用于执行应用的设备,包括:包括一个或多个物理处理单元的处理器;以及耦接到所述一个或多个物理处理单元并在其上存储有指令的计算机可读指令代码存储器,其中,所述指令可由所述一个或多个物理处理单元执行以:在所述处理器的第一物理处理单元中建立飞地;记录由第一应用声明的第一信任声明,该第一信任声明声明第一应用是否信任任何要在第一物理处理单元上与第一应用一起执行的应用;将第一应用分配给第一物理处理单元上承载的第一逻辑处理单元;提供飞地进入指令集,以供第一逻辑处理单元执行,以使第一逻辑处理单元在满足预定义进入条件时进入该飞地;以及提供飞地退出指令集,以供第一逻辑处理单元执行,以使第一逻辑处理单元在满足预定义退出条件时退出该飞地。
在另一方面,一种其中存储有指令的非暂态计算机可读介质,当所述指令由设备的处理器执行时,促使所述设备执行用于执行应用的方法。所述方法包括:在处理器的第一物理处理单元中建立飞地;记录由第一应用声明的第一信任声明,该第一信任声明声明第一应用是否信任任何要在第一物理处理单元上与第一应用一起执行的应用;将第一应用分配给第一物理处理单元上承载的第一逻辑处理单元;提供飞地进入指令集,以供第一逻辑处理单元执行,以使第一逻辑处理单元在满足预定义进入条件时进入该飞地;以及提供飞地退出指令集,以供第一逻辑处理单元执行,以使第一逻辑处理单元在满足预定义退出条件时退出该飞地。
附图说明
包含在本文中并构成其一部分的附图示出了实施例。在参考附图的以下描述中,除非另有说明,否则不同附图中的相同数字表示相同或相似的元件。
图1是根据实施例的处理器的示意图。
图2是根据实施例的处理器的示意图。
图3是根据实施例的用于进入飞地(enclave)的方法的流程图。
图4是根据实施例的用于退出飞地的方法的流程图。
图5是根据实施例的当两个逻辑处理单元试图进入飞地时发生中断的场景的示意图。
图6是根据实施例的当两个逻辑处理单元试图进入飞地时发生中断的另一场景的示意图。
图7是根据实施例的用于执行应用的方法的流程图。
图8是根据实施例的用于执行应用的装置的框图。
图9是根据实施例的用于执行应用的设备的框图。
具体实施方式
本文的实施例提供用于在支持本文称为“飞地(enclaves)”的受保护执行环境的处理器上执行应用的方法和设备。所述方法和设备提供包括例如用户级应用的应用,所述应用具有声明它们是否信任任何要在同一物理处理单元上与它们一起执行的应用的能力。所述方法和设备还为处理器提供了控制应用(包括用户级应用)如何进入和退出飞地的能力。在一些实施例中,所述方法和设备利用内置于处理器中的指令代码来促进可信应用的声明。在一些实施例中,所述方法和设备利用内置于处理器中的指令代码来控制应用如何进入和退出飞地。
本文中公开的实施例具有一个或多个技术效果。在一些实施例中,所述方法和设备利用内置于处理器中的指令代码来促进可信应用的声明。这提高了安全性,因为处理器可以使用它们的内置指令代码来确保在硬件级上仅可信应用才能在同一物理处理单元上执行。在一些实施例中,所述方法和设备利用内置于处理器中的指令代码来控制应用如何进入和退出飞地。这进一步提高了安全性,因为处理器可以实施进入和退出策略而不受在其上执行的任何应用的影响。实际上,所述方法和设备允许应用(包括用户应用)声明它们是否信任任何应用以在同一物理处理单元上与它们一起执行。以这种方式,仅允许可信应用在同一物理处理单元上执行,从而消除了入侵者获得对应用的受保护执行环境的访问的可能性。所述方法和设备还允许处理器在无需禁用它们的多线程能力的情况下进行操作。
图1示出了根据实施例的处理器100的示意图。参考图1,处理器100可以包括一个或多个物理处理单元,例如物理处理单元102和104,每个物理处理单元用可用于执行计算机程序中指定的指令的电路来实现。这些物理处理单元102和104可被称为“核”。如果处理器100仅包括一个这样的物理处理单元或核,则处理器100可被称为单核处理器。如果处理器100包括多个物理处理单元或核,则处理器100可被称为多核处理器。在一些实施例中,处理器100可以包括作为单个集成电路封装在一起的多个物理处理单元。在一些实施例中,处理器100可以在用作节点网络中的节点的计算设备中操作。在一些实施例中,节点网络可以形成区块链网络。
在一些实施例中,物理处理单元102和104中的至少一个可以具有通过承载多个逻辑处理单元来支持多线程的能力。在图1中描绘的示例中,物理处理单元102和104都具有通过承载例如两个逻辑处理单元来支持多线程的能力。以这种方式,物理处理单元102可以支持两个应用的同时多线程。物理处理单元102可以将其自身作为第一逻辑处理单元102A呈现给第一应用。第一逻辑处理单元102A可以加载并执行第一应用中指定的指令。物理处理单元102还可以将其自身作为第二逻辑处理单元102B呈现给第二应用。第二逻辑处理单元102B可以加载并执行第二应用中指定的指令。类似地,物理处理单元104也可以支持两个应用的同时多线程。物理处理单元104可以将其自身作为一个逻辑处理单元104A呈现给一个应用,并且还将其自身作为另一逻辑处理单元104B呈现给另一应用。
在一些实施例中,物理处理单元102和104可要求它们各自的逻辑处理单元共享某些资源106和108。例如,物理处理单元102可要求其第一逻辑处理单元102A和第二逻辑处理单元102B共享某些存储空间,包括例如物理处理单元102上可用的某些寄存器和L1高速缓存。同样地,物理处理单元104可要求其第一逻辑处理单元104A和第二逻辑处理单元104B共享某些存储空间,包括例如物理处理单元104上可用的某些寄存器和L1高速缓存。
在一些实施例中,处理器100还可以包括指令代码存储器110。指令代码存储器110可以存储可由处理器100执行的指令代码。当由处理器100执行时,指令代码可以使处理器100执行某些操作。在一些实施方式中,指令代码可被称为微代码。
处理器100可以执行一组指令代码112以支持用于建立和进入被称为“飞地(enclave)”的受保护执行环境的请求。在一些实施例中,处理器100可以使用类似于在SGX等中提供的扩展来支持用于建立和进入飞地的请求。然而,应该理解,/>SGX的使用仅作为示例呈现,并不意味着进行限制。预期处理器100可以支持为建立和进入受保护执行环境而提供的其他类型的扩展,包括硬件支持的可信执行环境(TEE)的实现等。这样的扩展可以允许将被称为“微代码”的指令代码内置于处理器中以支持受保护执行环境或飞地的建立。包括用户级应用的应用可以利用指令代码来请求在飞地内执行。一旦建立了飞地,处理器100就可以例如使用密码术(cryptography)为飞地提供硬件实施的保护以确保存储在飞地中的内容受到保护,并且不能被该飞地外的进程读取或写入。
处理器100可以允许例如用户级应用的应用118请求在飞地内执行。如果利用这样的请求将应用118提交给处理器100以便被执行,则处理器100可以接受该请求并确保当应用118被加载到逻辑处理单元102A、102B、104A或104B之一中以便执行时,该逻辑处理单元将进入该应用请求的飞地,以保护应用118的执行。处理器100还将为飞地提供硬件实施的保护。例如,在一些实施例中,处理器100将使用密码术来确保存储在飞地中的内容受到保护,并且不能被在该飞地外执行的应用读取或写入。
处理器100可以通过允许应用118声明其是否信任任何要在同一物理处理单元上与其一起执行的应用,来为应用118提供附加保护。如果应用118做出这样的声明,则处理器100将仅允许被应用118视为“可信”的应用在同一物理处理单元上与应用118一起执行。例如,如果应用118被加载到逻辑处理单元102A中以供执行,则处理器100将仅允许被应用118视为可信的应用加载到逻辑处理单元102B中以便与应用118一起执行。以这种方式,处理器100可以防止不可信应用在同一物理处理单元102上与应用118一起执行,从而有效地消除了使不可信应用获得对应用118存储的数据的访问的可能性。
在一些实施例中,处理器100可以通过例如以下支持可信应用的声明并且确保仅可信应用可以在同一物理处理单元上执行:(1)提供信任声明接口116以支持信任声明,(2)要求物理处理单元102和104记录它们各自的逻辑处理单元的飞地进入状态128和飞地退出状态130,以及(3)实施在一组飞地进入和退出控制代码114中定义的一组飞地进入和退出程序。下面将详细描述这些元素中的每个。
例如,在一些实施例中,处理器100可以通过允许例如用户级应用的应用118利用其代码的一部分来声明哪些应用被其视为可信应用来支持信任声明。应用118可被允许仅信任自身,这意味着除了应用118本身的另一实例之外,在应用118正在执行时,其他应用不可以在同一物理处理单元上执行。当应用118被提交给处理器100以供执行时,处理器100可以利用信任声明接口116来解析应用118并确定其是否包含任何信任声明。如果是,则处理器100可以获得信任声明并在处理器100上记录该信任声明,从而可以在执行应用118期间实施它们。
在一些实施例中,处理器100可以将从应用118获得的信任声明记录在属于应用118将在其上执行的物理处理单元的存储空间中。例如,如果处理器100确定应用118将在逻辑处理单元102A上执行,则处理器100可以将应用118声明的信任声明记录在属于物理处理单元102的存储空间120中。类似地,如果处理器100确定应用118将在逻辑处理单元104A上执行,则处理器可以将应用118声明的信任声明记录在属于物理处理单元104的存储空间122中。
在一些实施例中,处理器100可以将应用118声明的信任声明记录在包含在处理器100中的所有物理处理单元可访问的共享存储空间中。例如,如图2中所述,处理器100可以将从应用118获得的信任声明记录在物理处理单元102和104可访问的共享存储空间124(图2)中。在一些实施例中,处理器100还可以将信任声明记录在处理器100外部的可信存储空间中。处理器100可以在本地记录指针,并且可以利用记录的指针来访问记录在可信存储空间上的信任声明。
在一些实施例中,处理器100可以要求物理处理单元102和104记录它们各自的逻辑处理单元的飞地进入状态记录128和退出状态记录130。可以在相应的物理处理单元102和104内本地记录飞地进入状态记录128和退出状态记录130。物理处理单元102和104可以使用能够表示以下的任何数据格式记录飞地进入和退出状态:例如它们各自的逻辑处理单元中的任何一个逻辑处理单元是否正在等待进入加载在其中的应用所请求的飞地,它们各自的逻辑处理单元中的任何一个逻辑处理单元当前是否正在飞地内操作,或者它们各自的逻辑处理单元中的任何一个逻辑处理单元是否正在等待退出飞地。
在一些实施例中,每个物理处理单元可以将飞地进入状态记录和飞地退出状态记录提供给在该物理处理单元上承载的每个逻辑处理单元。例如,在图1中描绘的示例中,物理处理单元102可以将飞地进入状态记录140和飞地退出状态记录144提供给第一逻辑处理单元102A。物理处理单元102还可以将飞地进入状态记录142和飞地退出状态记录146提供给第二逻辑处理单元102B。类似地,物理处理单元104可以将飞地进入状态记录150和飞地退出状态记录154提供给其逻辑处理单元104A,并将飞地进入状态记录152和飞地退出状态记录156提供给其逻辑处理单元104B。以这种方式记录飞地进入状态和飞地退出状态可以帮助促进飞地进入和退出程序的实施,以确保仅可信应用可以在同一物理处理单元上执行。
图3示出了根据实施例的由例如第一逻辑处理单元102A(图1和图2)的每个逻辑处理单元执行的用于进入飞地的方法300的流程图。方法300可以在第一逻辑处理单元102A加载有需要在飞地内执行的、例如应用118的应用时被调用。在步骤302,第一逻辑处理单元102A可以清除其飞地退出状态记录144并更新其飞地进入状态记录140,以指示第一逻辑处理单元102A加载有正在等待进入飞地的应用118。
在步骤304,第一逻辑处理单元102A可以检查退出条件是否已被触发。退出条件可在处理器100上发生中断或异常时被触发。例如,当来自处理器100外部的意外事件破坏处理器100上的正常执行流程时,可能发生中断。例如,当来自处理器100内的意外事件破坏处理器100上的正常执行流程时,可能发生异常。退出条件还可在处理器100已经发出终止命令(例如,响应于用户通过操作系统发出的命令)的情况下被触发。如果退出条件已被触发,则第一逻辑处理单元102A可进行到步骤306,其中第一逻辑处理单元102A需要终止其应用118的执行并执行退出程序。下面结合图4描述该退出程序的细节。
如果退出条件没有被触发,则第一逻辑处理单元102A可以进行到步骤308。在步骤308,第一逻辑处理单元102A可以确定在物理处理单元102上承载的一个或多个其他逻辑处理单元是否也在等待进入它们各自的飞地。在图1中描绘的示例中,在物理处理单元102上仅承载一个其他逻辑处理单元,即第二逻辑处理单元102B,因此第一逻辑处理单元102A可以确定第二逻辑处理单元102B是否正在等待进入第二逻辑处理单元102B的飞地。第一逻辑处理单元102A可以通过检查第二逻辑处理单元102B的飞地进入状态记录142来进行该确定。如果第二逻辑处理单元102B的飞地进入状态记录142未指示第二逻辑处理单元102B加载有正在等待进入飞地的应用,则第一逻辑处理单元102A可以重复步骤304。以这种方式,第一逻辑处理单元102A除非在第二逻辑处理单元102B也正在等待并准备好与第一逻辑处理单元102A一起进入飞地的情况下,才进入飞地。
在一些实施例中,第一逻辑处理单元102A可以实现超时机制以避免必须无限期地等待。以这种方式,第一逻辑处理单元102A可以继续重复步骤304,直到达到超时限制。如果在超时限制结束时第二逻辑处理单元102B的飞地进入状态记录142仍未指示第二逻辑处理单元102B加载有正在等待进入飞地的应用,则第一逻辑处理单元102A可以终止其应用118的执行,并执行下面结合图4描述的退出过程。
如果第二逻辑处理单元102B正在等待并准备好与第一逻辑处理单元102A一起进入飞地(例如,如果第二逻辑处理单元102B的飞地进入状态记录142指示第二逻辑处理单元102B加载有正在等待进入飞地的应用),则第一逻辑处理单元102A可以进行到步骤310。在步骤310,第一逻辑处理单元102A可以确定第二逻辑处理单元102B中加载的应用是否被第一逻辑处理单元102A中加载的应用118信任。第一逻辑处理单元102A可以根据实施方式,通过检查存储在存储空间120(图1)或共享存储空间124(图2)中的信任声明来进行该确定。如果第二逻辑处理单元102B中加载的应用不被应用118信任,则第一逻辑处理单元102A可以再次重复步骤304。以这种方式,第一逻辑处理单元102A仅在第二逻辑处理单元102B加载有应用并且该应用已被应用118声明为“可信”的情况下,才可被允许进入飞地。
如果第二逻辑处理单元102B加载有应用并且该应用已被应用118声明为“可信”,则第一逻辑处理单元102A可以进行到步骤312。在步骤312,第一逻辑处理单元102A可以执行与进入飞地相关联的处理。这些处理可以以类似于SGX等提供的方式执行。然后,第一逻辑处理单元102A可以更新其飞地进入状态记录140,以指示其不再等待进入飞地。第一逻辑处理单元102A现在可以执行应用118中指定的指令。
应当理解,虽然方法300被描述为由第一逻辑处理单元102A执行,但是方法300也可以由第二逻辑处理单元102B以相同的方式执行。这可以确保仅可信应用在同一物理处理单元102上执行。
还应理解,方法300可以不允许第一逻辑处理单元102A(或任何逻辑处理单元)独自进入飞地。换句话说,第一逻辑处理单元102A可能需要等待,直到第二逻辑处理单元102B加载有正在等待进入飞地的应用,并且该应用被应用118视为可信。如果应用118不信任任何其他应用,则第二逻辑处理单元102B可以加载应用118的第二实例。因为应用通常被自身视为可信,所以可以满足方法300的要求。方法300还允许应用118被开发为多线程应用以利用该要求。
图4示出了根据实施例的由每个逻辑处理单元(例如,第一逻辑处理单元102A)执行的用于退出飞地的方法400的流程图。第一逻辑处理单元102A可在完成应用118中指定的指令之后或在遇到退出条件之后退出飞地。退出条件可在处理器100上发生中断或异常时被触发。退出条件还可在处理器100或在物理处理单元102上执行的另一逻辑处理单元发出终止命令的情况下被触发。
在步骤402,第一逻辑处理单元102A可以清除其飞地进入状态记录140并更新其飞地退出状态记录144以指示第一逻辑处理单元102A现在正在等待退出飞地。
在步骤404,第一逻辑处理单元102A可以确定物理处理单元102上承载的任何逻辑处理单元是否应被强制与第一逻辑处理单元102A一起退出。在一些实施例中,第一逻辑处理单元102A可以通过检查物理处理单元102上承载的其他逻辑处理单元的飞地进入状态记录来执行步骤404,并确定它们是否正在等待进入它们各自的飞地,如果是,则确定它们是否加载有被应用118声明为可信的应用。第一逻辑处理单元102A可以强制这些逻辑处理单元与第一逻辑处理单元102A一起退出,以防止入侵者在第一逻辑处理单元102A卸载应用118之后获得对第一逻辑处理单元102A的访问的可能性。允许入侵者在第一逻辑处理单元102A卸载应用118之后获得对第一逻辑处理单元102A的访问可能是危险的,因为这为入侵者提供了攻击仍然在物理处理单元102上承载的其他逻辑处理单元上执行的、受应用118信任的应用的机会。
在图1中描绘的示例中,在同一物理处理单元102上仅承载一个其他逻辑处理单元,即第二逻辑处理单元102B,因此第一逻辑处理单元102A可以通过确定第二逻辑处理单元102B是否正在等待进入其飞地来执行步骤404,如果是,则确定第二逻辑处理单元102B是否加载有被应用118声明为可信的应用。如果第二逻辑处理单元102B正在等待进入其飞地并且加载有被应用118声明为可信的应用,则第一逻辑处理单元102A可以确定第二逻辑处理单元102B应被强制与第一逻辑处理单元102A一起退出。
在步骤406,第一逻辑处理单元102A可以向第一逻辑处理单元102A确定应该被强制退出的每个逻辑处理单元发送终止命令。在步骤408,第一逻辑处理单元102A可以确认被第一逻辑处理单元102A确定应该被强制退出的逻辑处理单元是否已经接收到终止命令。在一些实施例中,第一逻辑处理单元102A可以通过确认这些逻辑处理单元各自的飞地进入状态记录是否已经被清除来执行步骤408。如果特定逻辑处理单元的飞地进入状态记录已经被清除,则第一逻辑处理单元102A可以认为该特定逻辑处理单元已经接收到终止命令。第一逻辑处理单元102A还可以通过确认这些逻辑处理单元各自的飞地退出状态记录是否已经被更新来执行步骤408。如果特定逻辑处理单元的飞地退出状态记录已经被更新以指示特定逻辑处理单元正在等待退出,则第一逻辑处理单元102A可以认为该特定逻辑处理单元已经接收到终止命令。
在一些实施例中,第一逻辑处理单元102A可以重复步骤408,直到其确认第一逻辑处理单元102A已经确定应该被强制退出的所有逻辑处理单元已经接收到终止命令。一旦确认,第一逻辑处理单元102A可以进行到步骤410并执行与退出飞地相关联的剩余处理,这可以以类似于由SGX等提供的方式执行。
在一些实施例中,第一逻辑处理单元102A可以委托处理器100清除包含在飞地中的数据作为退出处理的一部分。在一些实施例中,第一逻辑处理单元102A可以执行显式操作以在退出飞地之前移除包含在飞地中的数据来增加安全性。在一些实施例中,第一逻辑处理单元102A可以更新其飞地退出状态记录144以指示它不再等待退出。
应当理解,上述示例中描绘的飞地进入和退出状态记录仅仅是示例,并不意味着进行限制。在一些实施例中,处理器100可以要求逻辑处理单元报告它们的飞地进入状态,但是可以使报告飞地退出状态可选。例如,处理器100可以仅依赖于飞地进入状态来确定任何逻辑处理单元是否正在等待进入飞地、当前正在飞地内操作或正在等待退出飞地。处理器100可以允许逻辑处理单元清除它们的飞地进入状态以指示它们没有在飞地内操作并且它们没有等待进入飞地,这可能意味着逻辑处理单元正在等待退出飞地。
还应当理解,虽然方法400被描述为由第一逻辑处理单元102A执行,但是方法400也可以由第二逻辑处理单元102B以相同的方式执行。这将确保仅可信应用可以在同一物理处理单元102上执行,并且如果一个应用由于任何原因退出该应用的飞地并且终止该应用的执行,则该应用的所有可信应用也可以退出它们各自的飞地并且终止它们的执行。以下示例将进一步示出方法300和400的操作。
例如,假设有三个应用,应用A、应用B和应用C。应用A和B彼此信任,但是应用A和应用B都不信任应用C。进一步假设例如处理器100的处理器将分配第一逻辑处理单元102A来处理应用A,并且将分配第二逻辑处理单元102B来处理应用B。在时间T0,第一逻辑处理单元102A可以调用方法300并加载应用A。第一逻辑处理单元102A随后可以在步骤304和308之间循环,直到第二逻辑处理单元102B也调用方法300并加载应用B,或者直到达到超时限制,不管哪个首先发生。
在一种场景中,假设第二逻辑处理单元102B调用方法300并在超时限制之前的时间T1加载应用B。因此,第二逻辑处理单元102B可以能够确定第一逻辑处理单元102A已经加载有应用A并且应用A被应用B声明为可信。第二逻辑处理单元102B因此可以通过方法300的步骤进行并进入其飞地。第一逻辑处理单元102A还可以能够在T1之后确定第二逻辑处理单元102B已经加载有应用B并且应用B被应用A声明为可信,因此第一逻辑处理单元102A还可以通过方法300的其余步骤进行并进入其飞地。然后,第一逻辑处理单元102A和第二逻辑处理单元102B都可以在它们各自的飞地中执行在它们各自的应用A和应用B中指定的指令。
在另一场景中,假设第二逻辑处理单元102B在达到超时限制之前未能加载应用B,则第一逻辑处理单元102A可以调用方法400以在超时限制之后执行退出过程。第一逻辑处理单元102A可以确定因为物理处理单元102上承载的逻辑处理单元都没有等待进入任何飞地,所以第一逻辑处理单元102A不需要强制物理处理单元102上承载的任何逻辑处理单元与第一逻辑处理单元102A一起退出。因此,第一逻辑处理单元102A可以进行到方法400的步骤410并执行剩余的退出程序。
在另一场景中,假设第二逻辑处理单元102B调用方法300并在超时限制之前的时间T1加载应用C。然后,第二逻辑处理单元102B可以确定第一逻辑处理单元102A已经加载有应用A,但是应用A不受应用C信任。因此,第二逻辑处理单元102B可被强制在步骤304与步骤308之间循环,直到第一逻辑处理单元102A加载已被应用C声明为可信的应用,或者直到达到超时限制,不管哪个首先发生。第一逻辑处理单元102A可以能够在T1之后确定第二逻辑处理单元102B已经加载有应用C,但是应用C不受应用A信任,因此第一逻辑处理单元102A还可以被强制继续步骤304和308之间的循环,直到第二逻辑处理单元102B加载已被应用A声明为可信的应用,或者直到达到超时限制,不管哪个首先发生。在该场景中,第一逻辑处理单元102A和第二逻辑处理单元102B中的一个(或两个)最终可能超时,并且该逻辑处理单元可以再次调用方法300并加载不同的应用。
在另一场景中,假设第一逻辑处理单元102A加载有应用A并且第二逻辑处理单元102B加载有应用B,并且第一逻辑处理单元102A和第二逻辑处理单元102B都已进入它们各自的飞地以实施它们各自的执行。进一步假设第一逻辑处理单元102A接收到终止命令。该终止命令可以由处理器100发出,或者可以由于在处理器100上发生的故障或中断而生成。无论终止命令的来源如何,第一逻辑处理单元102A可以在接收到终止命令时调用方法400。一旦方法400被调用,第一逻辑处理单元102A就可以清除其飞地进入状态记录并更新其飞地退出状态记录以指示其正在等待退出该飞地。第一逻辑处理单元102A还可以确定第二逻辑处理单元102B应被强制与第一逻辑处理单元102A一起退出。第一逻辑处理单元102A可以向第二逻辑处理单元102B发送终止命令,第二逻辑处理单元102B也可以调用方法400。第二逻辑处理单元102B可以清除其飞地进入状态记录并更新其飞地退出状态记录以指示其正在等待退出该飞地。第二逻辑处理单元102B可以确定不需要强制第一逻辑处理单元102A退出,因为第一逻辑处理单元102A已经清除了其飞地进入状态记录。然后,第一逻辑处理单元102A和第二逻辑处理单元102B都可以继续退出它们的飞地。
在另一场景中,假设第一逻辑处理单元102A加载有应用A并且第二逻辑处理单元102B加载有应用B,并且第一逻辑处理单元102A和第二逻辑处理单元102B都已进入它们各自的飞地以实施它们各自的执行。进一步假设第一逻辑处理单元102A和第二逻辑处理单元102B都接收到终止命令。该终止命令可以由处理器100发出,或者可以由于在处理器100上发生的故障或中断而生成。无论终止命令的来源如何,第一逻辑处理单元102A和第二逻辑处理单元102B都可以在接收到终止命令时调用方法400。一旦方法400被调用,第一逻辑处理单元102A和第二逻辑处理单元102B都可以清除它们的飞地进入状态记录并更新它们的飞地退出状态记录以指示它们正在等待退出它们各自的飞地。第一逻辑处理单元102A和第二逻辑处理单元102B都可以确定它们都应该被强制一起退出。因此,第一逻辑处理单元102A和第二逻辑处理单元102B都可以彼此发送终止命令。因为第一逻辑处理单元102A和第二逻辑处理单元102B都已经在执行方法400的处理中,所以它们可以简单地继续执行方法400中指定的步骤。此外,因为第一逻辑处理单元102A和第二逻辑处理单元102B都已经清除了它们的飞地进入状态记录,所以第一逻辑处理单元102A和第二逻辑处理单元102B都将认为彼此已经接收到终止命令。然后,第一逻辑处理单元102A和第二逻辑处理单元102B都可以继续退出它们各自的飞地。
上述方法300和400还可以处理当在处理器100上发生中断时的更复杂的场景。图5是场景500的示意图,其中在第一逻辑处理单元102A已调用方法300以加载应用A之后发生中断。
在时间性实例502,第一逻辑处理单元102A调用方法300(图3)并且加载应用A。在时间性实例504,发生中断,其触发退出条件,该退出条件将强制第一逻辑处理单元102A进行到步骤306并调用方法400(图4)。然而,在将在时间性实例512发生的第一逻辑处理单元102A能够调用方法400之前,第二逻辑处理单元102B可能已经在时间性实例506调用方法300并加载了应用B。第二逻辑处理单元102B还可以在时间性实例508基于第二逻辑处理单元102B可用的记录确定第一逻辑处理单元102A加载有应用A并且应用A受应用B信任。因此,第二逻辑处理单元102B可能已经在时间性实例510通过方法300的步骤进行并且进入其飞地。
在该场景中,第一逻辑处理单元102A可以继续执行方法400的步骤。第一逻辑处理单元102A可以在时间性实例512(步骤402)清除其飞地进入状态记录,并且在时间性实例514(步骤404)确定第二逻辑处理单元102B是否应被强制与第一逻辑处理单元102A一起退出。第一逻辑处理单元102A可以确定第二逻辑处理单元102B应被强制与第一逻辑处理单元102A一起退出,因此第一逻辑处理单元102A可以在时间性实例516(步骤406)向第二逻辑处理单元102B发送终止命令。第一逻辑处理单元102A可以在时间性实例518(步骤408)等待确认第二逻辑处理单元102B是否已经接收到终止命令。第二逻辑处理单元102B可以在时间性实例520接收终止命令,其与时间性实例516基本相同。然后,第二逻辑处理单元102B可以在时间性实例522调用方法400并清除其飞地进入状态记录。第二逻辑处理单元102B可以在时间性实例524意识到其不需要强制第一逻辑处理单元102A退出,因为第一逻辑处理单元102A已经指示其正在退出(第一逻辑处理单元102A已经清除其飞地进入状态记录)。第一逻辑处理单元102A可以能够在时间性实例526确认第二逻辑处理单元102B已经接收到终止命令并且已经指示其正在退出(第二逻辑处理单元102B现在已经清除了其飞地进入状态记录)。然后,第一逻辑处理单元102A和第二逻辑处理单元102B都可以分别在时间性实例528和530继续退出它们的飞地。
图6是根据实施例的另一场景600的示意图,其中在第一逻辑处理单元102A已经调用方法300以加载应用A之后发生了中断。
在时间性实例602,第一逻辑处理单元102A调用方法300(图3)并且加载应用A。在时间性实例604,发生中断,其触发退出条件,该退出条件将强制第一逻辑处理单元102A进行到步骤306并调用方法400(图4)。在时间性实例606,第一逻辑处理单元102A清除其飞地进入状态记录(步骤402)。在时间性实例608,第一逻辑处理单元102确定第二逻辑处理单元102B是否应该被强制与第一逻辑处理单元102A一起退出(步骤404)。在该场景中,第一逻辑处理单元102A可以在时间性实例610确定不需要强制第二逻辑处理单元102B退出,因为第二逻辑处理单元102B还没有加载任何应用。第一逻辑处理单元102A可以在时间性实例616继续退出。
如果第二逻辑处理单元102B在时间性实例612调用方法300,则第二逻辑处理单元102B可以在时间性实例614继续确定第一逻辑处理单元102A的状态。第二逻辑处理单元102B可以在时间性实例618确定第一逻辑处理单元102A没有加载任何应用并且没有等待进入飞地(第一逻辑处理单元102A在时间性实例606已经清除了其飞地进入状态记录)。因此,第二逻辑处理单元102B可在时间性实例620被强制等待,从而消除了第二逻辑处理单元102B单独进入飞地的可能性。以这种方式,通过执行上述方法300和400,处理器100可以在无需禁用其多线程功能的情况下,确保仅可信应用在同一物理处理单元上执行,从而有效地消除了入侵者获得对应用的受保护执行环境的访问的可能性。
图7示出了根据实施例的用于执行应用的方法700的流程图。方法700可以由例如处理器100(图1)的处理器执行。
在步骤702,处理器可以在处理器的一个或多个物理处理单元中建立一个或多个飞地。在步骤704,处理器可以记录由第一应用声明的第一信任声明。第一信任声明可以声明第一应用是否信任任何要在同一物理处理单元上与第一应用一起执行的应用。第一应用可以声明其仅信任自身,或者可以声明其信任一系列应用。
在一些实施例中,处理器100可以提供接口,例如接口116(图1),以获取第一应用声明的第一信任声明。处理器100还可以以相同的方式获得并记录由其他应用声明的信任声明。
在一些实施例中,处理器100可以将第一信任声明记录在将处理第一应用的执行的物理处理单元的存储空间中。处理器100还可以将第一信任声明记录在由处理器100的所有物理处理单元共享的存储空间中。在一些实施例中,处理器100还可以将第一信任声明记录在位于处理器100外部的存储空间中。处理器100可以在本地记录指针,并且可以利用记录的指针来访问记录在位于处理器100外部的存储空间中的信任声明。
在步骤706,处理器100可以将第一应用分配给处理器的第一物理处理单元上承载的第一逻辑处理单元。例如,参考图1,处理器100可以将第一应用分配给处理器100的第一物理处理单元102上承载的第一逻辑处理单元102A。
在步骤708,处理器100可以提供飞地进入指令集,以供第一逻辑处理单元102A执行,以使第一逻辑处理单元102A在满足预定义进入条件时进入飞地。在一些实施例中,当第一物理处理单元102上承载的所有逻辑处理单元加载有应用并且所有加载的应用被第一应用声明为可信时,可以满足预定义进入条件。在一些实施例中,处理器100可以提供包括方法300(图3)的步骤的飞地进入指令集,以供第一逻辑处理单元102A执行,以确保第一逻辑处理单元102A仅在满足预定义进入条件时才进入飞地。
在步骤710,处理器100可以提供飞地退出指令集,以供第一逻辑处理单元102A执行,以使第一逻辑处理单元102A在满足预定义退出条件时退出飞地。在一些实施例中,当在第一物理处理单元102上承载的所有逻辑处理单元已开始执行该飞地退出指令集时,可以满足预定义退出条件,其中,所有逻辑处理单元加载有被第一应用声明为可信的应用。在一些实施例中,处理器100提供包括方法400(图4)的步骤的飞地退出指令集,以供第一逻辑处理单元102A执行,以确保第一逻辑处理单元102A仅在满足预定义退出条件时才退出飞地。
图8是根据实施例的用于执行应用的装置800的框图。例如,装置800可以是在处理器上提供的控制处理的实施方式,并且可以对应于方法700(图7)。参考图8,装置800可以包括建立模块802、记录模块804、分配模块806、飞地进入指令执行模块808和飞地退出指令执行模块810。
建立模块802可以在处理器的一个或多个物理处理单元中建立一个或多个飞地。记录模块804可以记录由应用声明的信任声明。分配模块806可以将应用分配给处理器的物理处理单元上承载的逻辑处理单元以供执行。
飞地进入指令执行模块808可以提供飞地进入指令集,以供逻辑处理单元执行,以确保逻辑处理单元仅在满足预定义进入条件时才会进入它们各自的飞地。在一些实施例中,飞地进入指令执行模块808可以提供包括方法300(图3)的步骤的飞地进入指令集,以供逻辑处理单元执行。
飞地退出指令执行模块810可以提供飞地退出指令集,以供逻辑处理单元执行,以确保逻辑处理单元仅在满足预定义退出条件时才退出它们各自的飞地。在一些实施例中,飞地退出指令执行模块810可以提供包括方法400(图4)的步骤的飞地退出指令集,以供逻辑处理单元执行。
每个上述模块可以实现为软件、硬件或者软件和硬件的组合。例如,可以使用执行存储在存储器中的指令的处理器来实现每个上述模块。此外,例如,每个上述模块可以利用一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子组件实现,以执行所描述的方法。还例如,每个上述模块可以通过使用计算机芯片或实体来实现,或者通过使用具有特定功能的产品来实现。在一个实施例中,装置800可以是计算机,并且计算机可以是个人计算机、膝上型计算机、蜂窝电话、照相手机、智能手机、个人数字助理、媒体播放器、导航设备、电子邮件接发设备、游戏机、平板电脑、可穿戴设备或这些设备的任何组合。
对于装置800中的每个模块的功能和作用的实现过程,可以参考上述方法中的相应步骤。为简单起见,这里省略了细节。
图9是根据实施例的用于执行应用的设备900的框图。例如,设备900可以包括处理器902和计算机可读指令代码存储904,处理器902进一步包括一个或多个物理处理单元,计算机可读指令代码存储器904耦接到所述一个或多个物理处理单元并且其上存储有可由所述一个或多个物理处理单元执行以执行上述方法的指令。例如,处理器902可以是图1和图2中示出的处理器100,计算机可读指令代码存储器904可以是处理器902的物理处理单元的存储空间、处理器902的所有物理处理单元共享的存储空间、或者位于处理器902外部的存储空间。还例如,设备900可以作为区块链系统的节点操作,或者在不作为节点操作的情况下与区块链系统的节点通信。
在一些实施例中,计算机程序产品可以包括非暂态计算机可读存储介质,其上具有计算机可读程序指令,以使处理器执行上述方法。
计算机可读存储介质可以是存储供指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者前述任何合适的组合。计算机可读存储介质可以是封装在处理器中的内置组件。
用于执行上述方法的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,包括面向对象的编程语言和传统的过程编程语言。计算机可读程序指令可以完全在计算设备上作为独立软件包执行,或者部分在第一计算设备上执行、部分在远离第一计算设备的第二计算设备上执行。
计算机可读程序指令可以被提供给通用计算机或专用计算机的处理器,或其他可编程数据处理装置,以产生机器,使得通过计算机的处理器或其他可编程数据处理装置执行的指令创建用于实现上述方法的装置。
附图中的流程图和示图示出了根据本文的各种实施例的设备、方法和计算机程序产品的可能实施方式的架构、功能和操作。在这方面,流程图或示图中的方框可以表示软件程序、代码段或代码的一部分,其包括用于实现特定功能的一个或多个可执行指令。还应注意,在一些可选实施方式中,方框中提到的功能可以不按图中所示的顺序发生。例如,连续示出的两个方框实际上可以基本上同时执行,或者这些方框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,示图和/或流程图中的每个框及示图和流程图中的框的组合可以由执行特定功能或动作的基于专用硬件的系统、专用硬件或和计算机指令的组合实现。
应当理解,为了清楚起见,在单独的实施例的上下文中描述的本文的某些特征还可以在单个实施例中组合提供。相反,为了简洁起见,在单个实施例的上下文中描述的本文的各种特征还可以单独提供或者以任何合适的子组合提供,或者在本文的任何其他描述的实施例中合适地提供。除非另有说明,否则在各种实施例的上下文中描述的某些特征不是那些实施例的必要特征。
尽管已经结合具体实施例描述了本文,但是许多替换、修改和变化对于本领域技术人员来说是显而易见的。因此,权利要求包含落入权利要求的范围内的所有这些替代、修改和变化。

Claims (21)

1.一种计算机实现的用于执行应用的方法,所述方法包括:
在处理器的第一物理处理单元中建立飞地;
记录由第一应用声明的第一信任声明,所述第一信任声明声明所述第一应用是否信任任何要在所述第一物理处理单元上与所述第一应用一起执行的应用;
将所述第一应用分配给所述第一物理处理单元上承载的第一逻辑处理单元;
提供飞地进入指令集,供所述第一逻辑处理单元执行,以使所述第一逻辑处理单元在满足预定义进入条件时进入所述飞地;以及
提供飞地退出指令集,供所述第一逻辑处理单元执行,以使所述第一逻辑处理单元在满足预定义退出条件时退出所述飞地。
2.如权利要求1所述的方法,其中,当所述第一物理处理单元上承载的所有逻辑处理单元加载有应用并且所有加载的应用被所述第一应用声明为可信时,满足所述预定义进入条件。
3.如权利要求1所述的方法,其中,所述飞地进入指令集指示所述第一逻辑处理单元通过执行包括以下的步骤来确定是否满足所述预定义进入条件:
更新进入状态记录以指示所述第一逻辑处理单元加载有所述第一应用并且正在等待进入所述飞地;
确定所述第一物理处理单元上承载的所有逻辑处理单元是否加载有应用;以及
响应于确定不是所述第一物理处理单元上承载的所有逻辑处理单元都加载有应用,重复确定所述第一物理处理单元上承载的所有逻辑处理单元是否加载有应用。
4.如权利要求3所述的方法,其中,所述飞地进入指令集指示所述第一逻辑处理单元通过进一步执行包括以下的步骤来确定是否满足所述预定义进入条件:
响应于确定所述第一物理处理单元上承载的所有逻辑处理单元都加载有应用,基于所述第一信任声明确定所有加载的应用是否被所述第一应用声明为可信;以及
响应于确定不是所有加载的应用都被所述第一应用声明为可信,重复确定所有加载的应用是否被所述第一应用声明为可信。
5.如权利要求4所述的方法,其中,所述飞地进入指令集指示所述第一逻辑处理单元通过进一步执行包括以下的步骤来确定是否满足所述预定义进入条件:
响应于基于所述第一信任声明确定所有加载的应用被所述第一应用声明为可信,执行与进入所述飞地相关联的处理。
6.如权利要求1所述的方法,其中,所述飞地进入指令集指示所述第一逻辑处理单元通过进一步执行包括以下的步骤来确定是否满足所述预定义退出条件:
确定是否达到超时限制;以及
响应于确定达到所述超时限制,执行所述飞地退出指令集。
7.如权利要求1所述的方法,其中,所述飞地进入指令集指示所述第一逻辑处理单元通过进一步执行包括以下的步骤来确定是否满足所述预定义退出条件:
确定退出条件是否被触发;以及
响应于确定达到所述退出条件,执行所述飞地退出指令集。
8.如权利要求1所述的方法,其中,当所述第一物理处理单元上承载的所有逻辑处理单元已加载有被所述第一应用声明为可信的应用并开始执行所述飞地退出指令集时,满足所述预定义退出条件。
9.如权利要求1所述的方法,其中,所述飞地退出指令集指示所述第一逻辑处理单元通过执行包括以下的步骤来确定是否满足所述预定义退出条件:
更新退出状态记录以指示所述第一逻辑处理单元加载有所述第一应用并且正在等待退出所述飞地;以及
确定所述第一物理处理单元是否承载了已经加载有基于所述第一信任声明被所述第一应用声明为可信的应用的至少一个其他逻辑处理单元。
10.如权利要求9所述的方法,其中,所述飞地退出指令集指示所述第一逻辑处理单元通过进一步执行包括以下的步骤来确定是否满足所述预定义退出条件:
响应于确定所述第一物理处理单元上承载了已经加载有基于所述第一信任声明被所述第一应用声明为可信的应用的至少一个其他逻辑处理单元,向所述至少一个其他逻辑处理单元各自发送终止命令以请求所述至少一个其他逻辑处理单元执行所述飞地退出指令集。
11.如权利要求10所述的方法,其中,所述飞地退出指令集指示所述第一逻辑处理单元通过进一步执行包括以下的步骤来确定是否满足所述预定义退出条件:
确定所述至少一个其他逻辑处理单元是否均已开始执行所述所述飞地退出指令集;以及
响应于确定所述至少一个其他逻辑处理单元不是均已开始执行所述飞地退出指令集,重复确定所述至少一个其他逻辑处理单元是否已开始执行所述飞地退出指令集。
12.如权利要求11所述的方法,其中,所述飞地退出指令集指示所述第一逻辑处理单元通过进一步执行包括以下的步骤来确定是否满足所述预定义退出条件:
响应于确定所述至少一个其他逻辑处理单元均已开始执行所述飞地退出指令集,执行与退出所述飞地相关联的处理。
13.如权利要求1所述的方法,还包括:
提供用于获取由所述第一应用声明的所述第一信任声明的接口。
14.如权利要求1所述的方法,还包括:
在所述第一物理处理单元的存储空间中记录所述第一信任声明。
15.如权利要求1-13中任一所述的方法,还包括:
将所述第一信任声明记录在由所述处理器的所有物理处理单元共享的存储空间中。
16.如权利要求1-13中任一所述的方法,还包括:
将所述第一信任声明记录在位于所述处理器外部的存储空间中。
17.如权利要求1所述的方法,其中,所述处理器包括所述第一物理处理单元和至少一个其他物理处理单元。
18.如权利要求1所述的方法,其中,所述第一物理处理单元承载所述第一逻辑处理单元和至少一个其他逻辑处理单元。
19.一种用于执行应用的设备,包括:
包括一个或多个物理处理单元的处理器;以及
耦接到所述一个或多个物理处理单元并在其上存储有指令的计算机可读指令代码存储器,所述指令能由所述一个或多个物理处理单元执行以执行权利要求1至18中任一项所述的方法。
20.一种用于执行应用的装置,所述装置包括用于执行权利要求1至18中任一项所述的方法的多个模块。
21.一种其中存储有指令的非暂态计算机可读介质,当所述指令由设备的处理器执行时,促使所述设备执行权利要求1至18中任一项所述的方法。
CN201980003435.2A 2019-04-19 2019-04-19 在支持受保护执行环境的处理器上执行可信应用的方法和设备 Active CN110998575B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/083466 WO2019120335A2 (en) 2019-04-19 2019-04-19 Methods and devices for executing trusted applications on processor with support for protected execution environments

Publications (2)

Publication Number Publication Date
CN110998575A CN110998575A (zh) 2020-04-10
CN110998575B true CN110998575B (zh) 2024-04-16

Family

ID=66994186

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980003435.2A Active CN110998575B (zh) 2019-04-19 2019-04-19 在支持受保护执行环境的处理器上执行可信应用的方法和设备

Country Status (7)

Country Link
US (2) US10733285B1 (zh)
EP (2) EP3872662B1 (zh)
CN (1) CN110998575B (zh)
ES (1) ES2870823T3 (zh)
PL (1) PL3646216T3 (zh)
SG (1) SG11202000825YA (zh)
WO (1) WO2019120335A2 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111753311B (zh) * 2020-08-28 2020-12-15 支付宝(杭州)信息技术有限公司 超线程场景下安全进入可信执行环境的方法及装置
CN112231652B (zh) * 2020-10-28 2022-02-22 百度在线网络技术(北京)有限公司 可信环境远程验证方法、装置、设备、系统及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473224A (zh) * 2009-12-22 2012-05-23 英特尔公司 提供安全应用执行的方法和装置
CN104484284A (zh) * 2013-03-31 2015-04-01 英特尔公司 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
WO2017082966A1 (en) * 2015-11-09 2017-05-18 Intel IP Corporation Integrated universal integrated circuit card on mobile computing environments
CN106796638A (zh) * 2014-09-25 2017-05-31 迈克菲股份有限公司 使用飞地认证进行数据验证

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890771B2 (en) * 2002-04-17 2011-02-15 Microsoft Corporation Saving and retrieving data based on public key encryption
US8595510B2 (en) * 2011-06-22 2013-11-26 Media Patents, S.L. Methods, apparatus and systems to improve security in computer systems
US9747102B2 (en) * 2012-12-28 2017-08-29 Intel Corporation Memory management in secure enclaves
US9892284B2 (en) * 2013-03-11 2018-02-13 Lantiq Beteiligungs-GmbH & Co. KG Trusted execution thread in an embedded multithreaded system
US10121144B2 (en) * 2013-11-04 2018-11-06 Apple Inc. Using biometric authentication for NFC-based payments
US9749323B2 (en) * 2015-03-27 2017-08-29 Intel Corporation Technologies for secure server access using a trusted license agent
US20160350534A1 (en) * 2015-05-29 2016-12-01 Intel Corporation System, apparatus and method for controlling multiple trusted execution environments in a system
US9904805B2 (en) * 2015-09-23 2018-02-27 Intel Corporation Cryptographic cache lines for a trusted execution environment
US10180854B2 (en) * 2016-09-28 2019-01-15 Intel Corporation Processor extensions to identify and avoid tracking conflicts between virtual machine monitor and guest virtual machine
US10642972B2 (en) * 2016-10-20 2020-05-05 Intel Corporation Extending packet processing to trusted programmable and fixed-function accelerators
US10706143B2 (en) * 2017-05-19 2020-07-07 Intel Corporation Techniques for secure-chip memory for trusted execution environments
US10867092B2 (en) * 2017-12-16 2020-12-15 Intel Corporation Avoiding asynchronous enclave exits based on requests to invalidate translation lookaside buffer entries
US10970390B2 (en) * 2018-02-15 2021-04-06 Intel Corporation Mechanism to prevent software side channels

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473224A (zh) * 2009-12-22 2012-05-23 英特尔公司 提供安全应用执行的方法和装置
CN104484284A (zh) * 2013-03-31 2015-04-01 英特尔公司 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
CN106796638A (zh) * 2014-09-25 2017-05-31 迈克菲股份有限公司 使用飞地认证进行数据验证
WO2017082966A1 (en) * 2015-11-09 2017-05-18 Intel IP Corporation Integrated universal integrated circuit card on mobile computing environments

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
超线程及其实现技术分析;金惠芳;计算机工程;20051130;30(第23期);93-95 *

Also Published As

Publication number Publication date
WO2019120335A3 (en) 2020-02-13
ES2870823T3 (es) 2021-10-27
EP3872662A1 (en) 2021-09-01
WO2019120335A2 (en) 2019-06-27
US20200334354A1 (en) 2020-10-22
PL3646216T3 (pl) 2021-07-19
US10733285B1 (en) 2020-08-04
US10867030B2 (en) 2020-12-15
SG11202000825YA (en) 2020-02-27
CN110998575A (zh) 2020-04-10
EP3646216A2 (en) 2020-05-06
EP3872662B1 (en) 2024-08-14
EP3646216B1 (en) 2021-04-14
EP3646216A4 (en) 2020-07-08

Similar Documents

Publication Publication Date Title
US10831934B2 (en) Management of authenticated variables
CN108463826B (zh) 用于在环转变期间保护栈的处理器扩展
US9633231B2 (en) Hardware-protective data processing systems and methods using an application executing in a secure domain
US8782380B2 (en) Fine-grained privilege escalation
US20070028074A1 (en) Maintaining shadow page tables in a sequestered memory region
US20210081538A1 (en) Early platform hardening technology for slimmer and faster boot
CN113139175A (zh) 处理单元、电子设备以及安全控制方法
US12099864B2 (en) Formally verified trusted computing base with active security and policy enforcement
CN113569245A (zh) 处理装置、嵌入式系统、片上系统以及安全控制方法
CN110998575B (zh) 在支持受保护执行环境的处理器上执行可信应用的方法和设备
WO2023123850A1 (zh) 一种固件可信根的实现方法、装置、设备和可读存储介质
EP3123388B1 (en) Virtualization based intra-block workload isolation
CN114065257A (zh) 地址空间的保护方法、保护装置、设备和存储介质
US10754967B1 (en) Secure interrupt handling between security zones
Hategekimana et al. Inheriting software security policies within hardware IP components
JP7569307B2 (ja) 例外原因イベントをハンドリングするための装置及び方法
US20190042797A1 (en) Security Hardware Access Management
Yiu The Next Steps in the Evoluation of Embedded Processors for the Smart Connected Era,”
CN108292339B (zh) 系统管理模式特权架构
KR102192328B1 (ko) Sgx 상의 입력 채널을 보호하기 위한 고립된 인터럽트 핸들러를 포함하는 프로세서 및 인터럽트 처리 방법
CN109190383B (zh) 访问指令的处理方法、装置及设备
KR20230127517A (ko) 2개 이상의 시스템간 메모리 동기화 방법 및 시스템

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
TA01 Transfer of patent application right

Effective date of registration: 20200925

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200925

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40028649

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240914

Address after: Guohao Times City # 20-01, 128 Meizhi Road, Singapore

Patentee after: Ant Chain Technology Co.,Ltd.

Country or region after: Singapore

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Innovative advanced technology Co.,Ltd.

Country or region before: Cayman Islands

TR01 Transfer of patent right