跨电源周期维护安全处理环境背景技术
1、技术领域
本公开涉及信息处理的领域,并且更具体地,涉及信息处理系统中的安全性的领
域。
2、相关技术
机密信息由许多信息处理系统来存储、发送、以及使用。因此,已经开发了提供机
密信息的安全处理和存储的技术。这些技术包括在信息处理系统中创建并维护安全、受保
护、或隔离的容器、分区、或环境的各种方法,这些方法中的许多方法在许多不同的电源状
态中进行操作。
附图说明
在附图中以示例并且非限制的方式示出了本发明。
图1根据本发明的实施例示出了包括对跨电源周期维护安全处理环境的支持的系
统。
图2根据本发明的实施例示出了包括对跨电源周期维护安全处理环境的支持的处
理器。
图3根据本发明的实施例示出了enclave页面缓存。
图4根据本发明的实施例示出了用于建立跨电源周期进行维护的安全处理环境的
方法。
图5根据本发明的实施例示出了用于跨电源周期维护安全处理环境的方法。
具体实施方式
描述了跨电源周期维护安全处理环境的发明的实施例。在本说明书中,诸如组件
和系统配置之类的许多具体细节可被阐述以便提供对本发明的更透彻的理解。然而,本领
域技术人员将理解的是,可以在没有这些具体细节的情况下实施本发明。此外,一些公知结
构、电路、以及其他特征未被详细示出,以避免不必要地模糊本发明。
在下列描述中,对“一个实施例”、“实施例”、“示例实施例”、“各个实施例”等的引
用指示被如此描述的本发明的(一个或多个)实施例可包括特定特征、结构、或特性,但多于
一个的实施例可包括特定特征、结构、或特性,并且并非每个实施例必须包括特定特征、结
构、或特性。此外,某些实施例可具有针对其他实施例所描述的特征中的一些、所有特征,或
不包括针对其他实施例所描述的特征。
如在本说明书以及权利要求中使用的,并且除非另有说明,使用序数形容词“第
一”、“第二”、“第三”等来描述元件仅指示元件的特定实例或类似元件的不同示例正被提
及,并且不旨在暗示被如此描述的元件在时间上、空间上、排名上、或任意其他方式必须处
于特定顺序。
此外,术语“位”、“标志”、“字段”、“条目”、“指示符”等可用来描述寄存器、表、数据
库、或其他数据结构中的任意类型的存储位置,不管是在硬件或软件中实现,并不意味着将
本发明的实施例限制于任意特定类型的存储位置或任意特定存储位置中的多个位或其他
元件。术语“清除”可用来指示将零的逻辑值存储在存储位置中或以其他方式使得零的逻辑
值被存储在存储位置中,并且术语“设置”可用来指示将一、全部是一、或某一其他特定值的
逻辑值存储在存储位置中或以其他方式使得一、全部是一、或某一其他特定值的逻辑值被
存储在存储位置中;然而,这些术语不意味着将本发明的实施例限制于任意特定逻辑约定,
这是因为在本发明的实施例中可使用任意逻辑约定。
此外,如本发明的实施例的描述中使用的,项之间的“/”字符可表示实施例可包括
第一项和/或第二项(和/或任意其他额外的项),或使用、利用、和/或根据第一项和/或第二
项(和/或任意其他额外的项)来实现。
如背景技术部分所描述的,已经开发了在信息处理系统中创建并维护安全、受保
护、或隔离的容器、分区、或环境的各种方法。一种这样的方法涉及如2012年6月19日递交
的、名称为“Method and Apparatus to Provide Secure Application Execution(提供安
全应用执行的方法及装置)”的共同未决美国专利申请No.13/527,547中所描述的安全
enclave,该美国专利申请提供了关于安全、受保护、或隔离的容器、分区、或环境的至少一
个实施例的信息。然而,该引用不旨在以任何方式限制本发明的实施例的范围,并且可以使
用其他实施例而保持在本发明的精神和范围之内。因此,本发明的任意实施例中所使用的
任意安全、受保护、或隔离的容器、分区、或环境的任意实例在本文可被称为安全enclave或
enclave。
可通过确保存在enclave存储器页面或其他支持数据结构的仅单个副本来维护安
全enclave的安全属性,并且为防止中继攻击,该单个副本不能经受备用、睡眠、暂停、或其
他电源管理状态。然而,在从电源管理状态恢复或返回期间重新建立enclave可能要求降低
响应性和性能并增加功耗的额外开销。因此,本发明的实施例可提供跨电源周期维护安全
处理环境。
图1根据本发明的实施例示出了系统100,该系统100是可以跨电源周期来维护安
全处理环境的信息处理系统。系统100可表示任意类型的信息处理系统,例如,服务器、台式
计算机、便携式计算机、机顶盒、诸如平板计算机或智能电话之类的手持设备、或嵌入式控
制系统。系统100包括处理器110、系统存储器120、图形处理器130、外围设备控制代理140、
以及信息存储设备150。体现本发明的系统可包括任意数目的每个这些组件中的每个组件,
以及任意其他组件和其他元件,例如,外围设备和输入/输出设备。该系统实施例或任意系
统实施例中的任意或所有组件或其他元件可通过任意数目的总线、点对点、或其他有线或
无线接口或连接来彼此连接、耦合、或以其他方式进行通信,除非另有说明。系统100的任意
组件或其他部分,不论是否在图1中被示出,可被集成在单一芯片(片上系统或SOC)、模具、
衬底、或封装上,或以其他方式被包括在单一芯片(片上系统或SOC)、模具、衬底、或封装中。
系统存储器120可以是动态随机存取存储器或处理器110可读的任意其他类型的
介质。图形处理器130可包括任意处理器、或用于为显示器132处理图形数据的其他组件。外
围设备控制代理140可表示诸如芯片组组件之类的任意组件,包括或通过外围设备、输入/
输出(I/O)、或其他组件和设备(例如,设备142(例如,触摸屏、键盘、麦克风、扬声器、其他音
频设备、相机、视频或其他媒体设备、网络适配器、运动或其他传感器、全球定位或其他信息
的接收器等))和/或信息存储设备150可被连接或耦接到处理器110。信息存储设备150可包
括任意类型的永久或非易失性存储器或存储装置,例如,闪速存储器和/或固态、磁、或光盘
驱动器。
处理器110可表示被集成在单一衬底上或被封装在单一封装中的一个或多个处理
器或处理器核心,每个处理器或处理器核心可以以任意组合包括多个线程和/或多个执行
核心。被表示为处理器100或处理器100中的每个处理器可以是任意类型的处理器,包括通
用微处理器(例如,处理器系列中的处理器或来自公司或另一公司的
其他处理器系列)、专用处理器或微控制器、或本发明的实施例在其中可被实现的信息处理
系统中的任意其他设备或组件。
处理器110可根据包括下列指令的指令集架构来操作,每个指令如在下面被进一
步描述:创建安全enclave的第一指令、将内容添加到enclave的第二指令、测量enclave的
内容的第三指令、初始化enclave的第四指令、进入enclave的第五指令、分配版本阵列页面
的第六指令、从enclave页面缓存逐出页面的第七指令、在电力被移除之前从enclave页面
缓存逐出最后版本阵列条目的第八指令、在电力恢复之后将第一之前被逐出的版本阵列条
目加载回enclave页面缓存中的第九指令、以及将之前被逐出的页面加载回enclave页面缓
存中的第十指令。尽管本发明的实施例可利用具有任意指令集架构并且不被限制于来自
公司的处理器系列的架构的处理器来实施,但指令可以是对现有架构的软件保护扩
展集的一部分,并且在本文分别可被称为ECREATE指令、EADD指令、EEXTEND指令、EINIT指
令、EENTER指令、EPA指令、EWB指令、EWBPS指令、ELDPS指令、以及ELD指令。可以在使用被嵌
入在如下所述或根据任意其他方法被布置的硬件、微码、固件、和/或其他结构中的电路和/
或逻辑的任意组合的处理器中实现对这些指令的支持,并且在图1中被表示为ECREATE逻
辑/硬件1101、EADD逻辑/硬件1102、EEXTEND逻辑/硬件1103、EINIT逻辑/硬件1104、EENTER
逻辑/硬件1105、EPA逻辑/硬件1106、EWB逻辑/硬件1107、EWBPS逻辑/硬件1108、ELDPS逻辑/
硬件1109、以及ELD逻辑/硬件1110。
图1还示出了处理器110内部的非易失性存储装置112。非易失性存储装置112可包
括使用任意存储器或存储装置技术来实现的一个或多个可读写寄存器或其他存储位置,以
在其中存储包含信息的一个或多个二进制大对象(“blob”),该信息将用来根据本发明的实
施例来跨电源周期维护一个或多个安全处理环境。在实施例中,非易失性存储装置可包括
128位寄存器以存储这样的二进制大对象,如下所述,该二进制大对象由EWBPS指令写入并
由ELDPS指令读取。非易失性存储器可由处理器110的封装上的一个或多个引脚或其他电连
接器114来供电,以便非易失性存储器的内容可以跨电源周期被保持,例如,在处理器110中
的其他电路可能被断电时的备用、睡眠、暂停、和/或其他电源管理状态期间。尽管在图1中
被示出为在处理器110内,但非易失性存储装置112可在处理器110外部被实现,例如,在外
围设备控制代理140内或被连接于外围设备控制代理140。在其他实施例中,将用来根据本
发明的实施例来跨电源周期维护一个或多个安全处理环境的信息可被存储在当处理器110
被断电时被维护的另一安全处理环境中;例如,在由安全性和/或可管理性引擎的固件所创
建、提供、和/或维护的可信执行环境中。
在实施例中,非易失性存储装置112可包括任意类型的非易失性存储装置,包括跨
电源周期保持电力以维护其内容的存储器(例如,静态随机存取存储器)、不需要跨电源周
期保持电力以维护其内容的存储器(例如,闪速存储器)、或任意组合类型的非易失性存储
装置。在实施例中,非易失性存储装置112可能是安全的,以便可根据任意方法来确保(例
如,对于处理器110)其内容的完整性和机密性。注意,系统100还可包括其他非易失性存储
装置,例如,信息存储设备150,其不由EWBPS指令写入或ELDPS指令读取,并且因此可能比非
易失性存储装置112更不安全。
图2示出了处理器200,该处理器200的实施例可用作系统100中的处理器110。处理
器200可包括核心210、核心220、以及非核心230。核心210可包括存储单元212、指令单元
214、执行单元216、以及控制单元218。核心220可包括存储单元222、指令单元224、执行单元
226、以及控制单元228。非核心230可包括缓存单元232、接口单元234、处理器保留存储器范
围寄存器250、存储器访问控制单元260、以及非易失性存储装置290。处理器200还可包括图
2中未示出的任意其他电路、结构、或逻辑。如上面介绍并在下面进一步描述的,ECREATE逻
辑/硬件1101、EADD逻辑/硬件1102、EEXTEND逻辑/硬件1103、EINIT逻辑/硬件1104、EENTER
逻辑/硬件1105、EPA逻辑/硬件1106、EWB逻辑/硬件1107、EWBPS逻辑/硬件1108、ELDPS逻辑/
硬件1109、以及ELD逻辑/硬件1110的功能可被包含在或分布于处理器200中任意所标记的
单元或别处。此外,处理器200的每个所描述和/或示出的单元的功能和/或电路可以以任意
方式被合并和/或分布。
存储单元212和222可分别包括可用于核心210和220中的任意目的的任意类型的
存储装置的任意组合;例如,它们可包括使用任意存储器或存储装置技术所实现的任意数
目的可读、可写、和/或可读写寄存器、缓冲器、和/或缓存,以在其中存储能力信息、配置信
息、控制信息、状态信息、性能信息、指令、数据、以及分别在核心210和220的操作中可用的
任意其他信息,以及可用于访问这类存储装置的电路。
指令单元214和224可包括任意电路、逻辑、结构、和/或其他硬件(例如,指令解码
器)以提取、接收、解码、解释、调度、和/或处理分别由核心21O和220执行的指令。可以在本
发明的范围内使用任意指令格式;例如,指令可包括操作码和一个或多个操作数,其中,操
作码可被解码在一个或多个微指令或微操作中以便分别由执行单元216或226执行。诸如
ECREATE、EADD、EEXTEND、EINIT、EENTER、EPA、EWB、EWBPS、ELDPS、以及ELD指令之类的一个或
多个指令可以是第一单一操作码(例如,特权安全enclave操作码(例如,ENCLS))或第二单
一操作码(例如,非特权安全enclave操作码(例如,ENCLU))的叶,其中,叶指令由处理器寄
存器(例如,EAX)中的值来指定。操作数或其他参数可以隐式地、直接地、间接地、或根据任
意其他方法与指令相关联。
在实施例中,EWBPS和ELDPS可以是ENCLS指令的叶。当处理器200被用于支持虚拟
化处理环境时,处理器200可由虚拟机监测器、管理程序、或其他系统软件来配置以使得响
应于EWBPS或ELDPS指令从虚拟化处理环境退出(虚拟机退出)。虚拟机退出然后可通过使用
EWB指令逐出根VA页面来仿真EWBPS指令的行为和/或通过使用ELD指令重新加载根VA页面
来仿真ELDPS指令的行为。
执行单元216和226可包括任意电路、逻辑、结构、和/或其他硬件(例如,算术单元、
逻辑单元、浮点单元、移位器等),以处理数据和执行指令、微指令、和/或微操作。每个执行
单元216和226可表示任意一个或多个物理或逻辑上不同的执行单元。
执行单元216和226可分别包括加密硬件270和280(可表示任意专用或共享电路、
逻辑、结构、和/或其他硬件)以执行任意一个或多个加密算法及相应的解密算法、执行任意
一个或多个安全散列算法、和/或生成任意一个或多个消息认证码(MAC)。加密硬件270和
280可分别使用诸如密钥272和282之类的密钥,每个密钥可表示任意密钥,例如,在启动处
理期间生成的被编程到熔丝阵列中的处理器200的处理器或平台唯一密钥、和/或以其他方
式可作为私密密钥被用于密码技术、生成MAC、或任意其他目的的处理器或平台唯一密钥。
控制单元218和228可包括任意微码、固件、电路、逻辑、结构、和/或硬件以分别控
制核心210和220的单元和其他元件的操作,以及核心210和220内部的数据、进入和离开核
心210和220的数据的传送。控制单元218和228可使得核心210和220以及处理器200执行或
参与本发明的方法实施例的执行,例如,通过使得核心210和220来执行指令单元214和224
所接收的指令以及衍生自指令单元214和224所接收的指令的微指令或微操作在下面所描
述的方法实施例。
缓存单元232可包括在静态随机存取存储器或任意其他存储器技术中实现的信息
处理系统100的存储器层级中的一个或多个等级的缓存存储器中的任意数目的缓存阵列,
以及电路、结构、和/或其他硬件以控制和/或提供它们的使用和维护。可根据任意方法来在
处理器200中的任意数目的核心和/或逻辑处理器中共享缓存单元232,以在处理系统中进
行缓存。缓存单元232还可包括如在下面被进一步描述将被用作enclave页面缓存(EPC)240
的一个或多个存储器阵列。
接口单元234可表示任意电路、逻辑、结构、和/或其他硬件(例如,链接单元、总线
单元、消息发送单元)以允许处理器200通过任意类型的总线、点对点、或其他连接与诸如系
统200之类的系统中的其他组件直接或通过任意其他组件(例如,桥接、集线器、或芯片组)
进行通信。接口单元234可包括一个或多个集成存储器控制器以便与诸如系统存储器130之
类的系统存储器进行通信,或可通过处理器200外部的一个或多个存储器控制器与系统存
储器进行通信。
非易失性存储装置290表示如上所述的非易失性存储装置112。非易失性存储装置
290可由处理器200的封装上的一个或多个引脚或其他电连接器292来供电,以便可以跨电
源周期来保持非易失性存储装置290的内容,例如,在处理器200中的其他电路可能被断电
时的备用、睡眠、暂停、和/或其他电源管理状态期间。尽管在图2中被示出为在非核心220
中,但非易失性存储装置290可被包括在处理器的一个或多个核心中,或可在处理器220的
外部被实现,如上所述。
处理器保留存储器范围寄存器(PRMRR)213、223、以及250可表示存储单元212和
222中的任意一个或多个存储位置、处理器200中的其他位置、和/或非核心230中的副本。
PRMRR 213/223/250可例如由诸如基本输入/输出系统之类的配置固件用来保留被称为处
理器保留存储器(PRM)的存储器的一个或多个物理连续的范围。存储器访问控制单元260可
表示可控制对PRM的访问的处理器200中的任意位置处的任意电路、结构、逻辑、和/或其他
硬件,以便可以在被定义为PRM的系统存储器空间中创建EPC 240。
在实施例中,PRM的尺寸是2的整数幂,例如,32MB、64MB、或128M,并且与该尺寸的
倍数的存储器地址相对准。PRMRR 213/223/250可包括只读PRMMR有效配置寄存器252的一
个或多个实例以指示PRM可被配置的有效尺寸,可包括PRMMR基址寄存器254和PRMMR屏蔽寄
存器256的一个或多个实例以定义PRM的一个或多个基地址和范围。
EPC 240是安全存储区域,其中,软件可被保护免受在任意特权等级进行操作的恶
意软件的攻击。可创建一个或多个安全enclave以便每个enclave可包括EPC 240的一个或
多个页面或其他区域,以便以仅在enclave内部运行的软件可以访问的方式存储代码、数
据、或其他信息。例如,安全enclave可由软件应用使用,以便仅该软件应用在该enclave内
部运行时可以访问该enclave的内容。没有其他软件,甚至没有操作系统或虚拟机监测器可
以在内容被加载到EPC中时读取该enclave的未加密内容、修改该enclave的内容、或以其他
方式篡改该enclave的内容(假设enclave是产品enclave,而不是例如调试enclave)。然而,
enclave的内容可由从系统100中的任意处理器上的该enclave内进行执行的软件来访问。
通过存储器访问控制单元260根据安全enclave架构进行操作来完成该保护。
在图2中,EPC 240被示出为在缓存单元232中,其中,EPC 240可以是共享缓存或专
用存储器的隔离部分。在与处理器200相同的模具内或模具上,可以在静态随机存取存储
器、嵌入式动态随机存取存储器、或任意其他存储器技术中实现EPC 240。EPC 240还可以或
额外地在处理器200的外部被实现,例如,在系统存储器130的安全区域中。为了在安全
enclave的内容被传送出模具时对其进行保护,加密硬件270和/或280可用来(例如,在EWB
和ELD指令的执行中)在内容被传送出模具之前对其进行加密,并对被传送回模具上的EPC
240中的内容进行解密。处理器200还可包括其他加密硬件(例如,非核心230中的存储器加
密引擎262可提供系统存储器120中所实现/存储的EPC 240的全部或一部分)和/或实现保
护机制的其他硬件以保护内容免受中继或其他攻击。
图3示出了EPC 300,该EPC 300的实施例可用作图2中的EPC240。在图3中,EPC 300
包括安全enclave控制结构(SECS)310、线程控制结构(TCS)区域320、代码/数据区域330、以
及版本阵列(VA)区域340。尽管图3示出EPC 300被划分成四个独立的区域,但EPC 300可被
划分成任意数目的块、区域、或页面,其中的每项可用于任意类型的内容。在一个实施例在
中,EPC 300被划分成4千字节(KB)页面并且与为4KB的倍数的系统存储器130中的地址相对
准,SECS 310可以是EPC 300中的任意一个4KB页面,TCS区域320可以是任意数目的连续或
非连续4KB页面,代码/数据区域330可以是任意数目的连续或非连续4KB页面,并且VA区域
340可以是任意数目的连续或非连续4KB页面。此外,尽管图3示出了与一个安全enclave相
对应的一个SECS、一个TCS区域、以及一个代码/数据区域,但EPC可包括任意数目的SECS以
及任意数目的TCS和代码/数据区域,只要每个enclave有且仅有一个SECS,则每个有效的
TCS和有效的代码/数据区域(例如,页面)属于一个且仅一个enclave,并且所有SECS、TCS、
代码/数据页面、以及VA页面适合EPC(或可被页面移出(page out)或移回EPC)。
可通过执行ECREATE指令来创建SECS以包含将由硬件使用并且仅硬件可访问(即,
非软件可读、可写、或以其他方式可访问的,无论是在enclave内部或外部运行)的元数据,
以定义、维护、以及保护enclave。例如,SECS 310包括第一测量寄存器(MRENCLAVE)312,该
MRENCLAVE 312可以是SECS 310中的任意尺寸的字段;在一个实施例中,MRENCLAVE 312可
以是32位。MRENCLAVE 312存储enclave的构建测量(如下所述),该构建测量由ECREATE指令
初始化、由与enclave相关联的每个EADD和EEXTEND指令更新、并由与enclave相关联的
EINIT指令锁定。SECS 31O还包括第二测量寄存器(MRSIGNER)314以存储验证enclave的创
建的实体的标识符(例如,公共密钥)的测量,如在下面被进一步描述的。在一个实施例中,
MRSIGNER 314可以是32位。如下所述,enclave属性可被存储在ATTRIBUTES字段316中,在一
个实施例中,该ATTRIBUTES字段316的尺寸可以为16位。
一个或多个TCS还可以与安全enclave相关联。TCS包含硬件用来在线程特定信息
进入和离开enclave时对其进行保存和恢复的元数据。一个或多个VA还可用来辅助分页,如
在下面被进一步描述的。
每个页面的安全属性被存储在称为enclave页面缓存映射(EPCM)的微架构数据结
构中,存储器访问控制单元260使用该EPCM来加强安全enclave架构所提供的保护。EPCM存
储EPC中的每个页面的一个条目。每个条目包括页面所属的SECS(即,enclave)的标识符(例
如,64位字段)。这些标识符可由诸如EADD、EEXTEND、以及EINIT之类的安全enclave指令参
考(例如,SECS的地址可被存储在诸如RCX之类的寄存器中、包括SECS的地址的微架构数据
结构的地址可被存储在诸如RBX之类的寄存器中等)以提供SECS来由硬件读取以便执行指
令。
现在返回图1,EPA逻辑/硬件1106、EWB逻辑/硬件1107、EWBPS逻辑/硬件1108、
ELDPS逻辑/硬件1109、以及ELD逻辑/硬件1110提供操作系统或其他软件可用来管理EPC
300并提供虚拟存储器空间的指令,用于由比EPC 300的尺寸更大的一个或多个安全处理环
境来使用,其中,可跨电源周期来维护每个安全处理环境。
如在下面被更详细描述的,EWB指令可用来从EPC 300到系统存储器120写回或逐
出页面(除了根版本阵列页面,如下所述),例如,代码/数据页面332。EWBPS指令可用来从
EPC 300到非易失性存储装置120逐出根版本阵列页面条目。ELDPS指令可用来将之前从非
易失性存储装置120被逐出的根版本阵列页面条目重新加载到EPC 300中。ELD指令可用来
将之前从系统存储器120被逐出的页面(除了根版本阵列页面)重新加载到EPC 300中。
EPA指令可用来分配特殊EPC页面,例如,VA页面342,在该特殊EPC页面上存储每个
被逐出的页面的唯一版本号,以便当页面被重新加载到EPC中时可检查版本号以确保它与
被逐出的页面相同,以此来保护EPC免受中继攻击。VA页面可包含槽阵列(例如,4KB VA页面
可包含512个槽),每个槽存储被逐出的页面的版本号。槽可被分配以便当页面被逐出时来
使用,并且当页面被重新加载时被释放以便当另一(相同的或不同的)页面被逐出时来重新
使用。VA页面可由多于一个的enclave共享。
为了使得在任意时间可被页面移出的页面的数目不被VA页面的尺寸所限制,EPC
可包括多个、层级的(即,被布置在倒置树结构中)VA页面。例如,第一VA页面可用来存储第
一组512个代码/数据页面的版本信息,第二VA页面可用来存储第二组512个代码/数据页面
的版本信息,以及第三VA页面可用来存储第一VA页面(当它被逐出时)、第二VA页面(当它被
逐出时)、以及多达510个额外的VA或代码/数据页面(当它们被逐出时)的版本信息。在该示
例中,第三VA页面可被称为根VA页面,假设没有第三VA页面的版本信息被存储在另一VA页
面上。通常,根VA页面是处于层级的最高等级的VA页面,换句话说,所有被逐出的页面从其
可被直接(即,被逐出的页面的版本信息被存储在根VA页面上)或间接地(即,被逐出的页面
的版本信息被存储在根VA页面和被逐出的页面之间的层级等级处的被逐出的VA页面上)参
考的VA页面。EPC可具有仅一个根VA页面。
结合EWB指令的执行,被逐出的EPC页面的内容被加密(例如,通过加密单元270或
280),并基于经加密的内容、页面的安全属性、以及页面的版本号来生成MAC。EWB指令的参
数可包括到将被页面移出的EPC页面的指针、到存储将被页面移出的页面的版本号的VA页
面中的空槽的指针、以及到存储经加密的页面、完整性检查值、安全enclave控制结构
(SECS)信息、以及页面的任意其他元数据的EPC页面之外的存储器位置的指针。可使用EWB
指令来页面移出EPC中的任意页面,包括VA页面和SECS页面,除了根VA页面之外。
可使用EWBPS指令来逐出根VA页面条目。EWBPS指令的参数可包括到被逐出的根VA
页面条目的指针。在逐出根VA页面条目之前,系统软件负责以与VA页面层级相一致的顺序
来页面移出(例如,使用EWB指令)EPC中的所有其他页面,直到仅剩下具有一个VA条目
(LAST_VA_VERSION,被页面移出的最后的VA页面的版本号)的根VA页面。EWBPS指令的执行
使得处理器写回(例如,到非易失性存储装置290)包含最后有效页面的分页上下文和版本
的blob(“PS blob”)。
可由处理器响应于EWBPS指令通过对包括分别如上文或如下文所述的LAST_VA_
VERSION、PSVERSION、PK、PI、EID、以及SVN的输入的组合进行加密来生成PS blob。
PSVERSION是根VA的唯一版本号,以便在电源恢复之后当EPC被重新加载时可检查版本号,
以此保护EPC免受中继攻击。PK是用来加密和解密页面的内容和/或结合分页指令(例如,
EWB和ELD)的执行来生成MAC的分页密钥,并且可被初始化为随机值并被存储在控制寄存器
中(例如,在存储单元212或222中)。PI是用来加密PS blob的密钥,并且可衍生自硬件基密
钥(例如,密钥272或密钥282)。EID是用来例如结合ECREATE指令的执行来创建enclave标识
符的值,并且可以是被初始化为零并当每个enclave被创建时被增加的值。SVN是一个或多
个安全版本号,每个安全版本号可被分配给使用EPC的enclave。
可使用ELDPS指令来重新加载根VA页面条目。在实施例中,在执行ELDPS指令之前,
使用EPA指令在EPC中创建新的VA页面以用作根VA页面。在另一实施例中,新的VA页面可作
为ELDPS指令的执行的一部分而被创建。在任一实施例中,ELDPS指令的执行包括从非易失
性存储装置读取PS blob并对PS blob进行解密(例如,通过加密单元270或280)、验证版本
号及相应的MAC、使用经解密的PS blob的内容来恢复在最近的EWBPS指令被执行时呈现的
EPC分页上下文、以及将被逐出的最后VA页面的版本号加载到根VA页面的空槽中。
可使用ELD指令来页面移回包括VA页面(但非根VA页面)和SECS页面的任意被逐出
的页面。结合ELD指令的执行,解密(例如,通过加密单元270或280)将被重新加载的EPC页面
的经加密的内容、验证版本号及相应的MAC、将未加密的页面重新加载到EPC 300中、将EPCM
信息恢复到EPCM。ELD指令的参数可包括到将被页面移回的经加密的页面及其相关联的元
数据的指针、到将页面加载到其中的EPC中的空闲页面位置的指针、到页面对其被分配的安
全enclave的SECS的指针、以及到页面的版本号被存储在其中的VA页面中的槽的指针。不同
版本的ELD指令可用于在不同的状态(例如,阻塞状态或未阻塞状态)中重新加载页面。
图4根据本发明的实施例示出了用于建立跨电源周期进行维护的安全处理环境的
方法400。尽管本发明的方法实施例在这方面不被限制,但可以参考图1、2、以及3的元素来
帮助描述图4的方法实施例。方法400包括使用ECREATE、EADD、EEXTEND、EINIT、以及EENTER
指令来建立安全enclave;然而,本发明的实施例不被限制于这些被具体提及的指令。方法
400的各个部分可通过或利用硬件(例如,指令单元214/224、执行单元216/226、和/或控制
单元218/228)、固件、软件、信息处理系统的用户等的组合来独立地执行。
在方法400的框体400中,开始enclave的建立。在框体412中,例如由安装器应用来
发布ECREATE指令以创建enclave。在框体414中,例如由执行单元216或226来开始ECREATE
指令的执行。在一个实施例中,ECREATE指令的执行包括分配一系列地址以供enclave使用。
在一个实施例中,地址可以是将被转换为第二类型的地址(例如,诸如系统存储器120之类
的系统存储器中的物理地址)的第一类型的地址,例如,虚拟或线性地址。
ECREATE指令的执行还可包括建立enclave的属性并将enclave属性存储在SECS
中,例如,在SECS 310的ATTRIBUTES字段316中。微架构数据结构(例如,PAGEINFO)可以与
ECREATE指令(例如,它在RBX寄存器中的地址)相关联。PAGEINFO可具有指定将被复制到
SECS310的源SECS的地址的字段。源SECS可包括将被复制到SECS ATTRIBUTES字段316的源
SECS ATTRIBUTES位阵列。
在框体418中,安装器应用例如可通过发布一个或多个EADD指令来将一个或多个
页面(或其他区域)添加到enclave,并例如通过发布一个或多个EEXTEND指令来测量该一个
或多个页面(或其他区域)。将页面添加到enclave可包括将源页面从系统存储器复制到EPC
中,并将EPC页面与enclave的SECS相关联。源页面可以是包含enclave的代码/数字区域的
未加密代码、数据、或其他信息的普通页面,或者源页面可以是包含TCS区域的元数据的TCS
页面。测量一个或多个页面(或其他区域)可包括基于一个或多个页面的内容、位置、和/或
其他属性来增量地计算或扩展密码散列,并将散列存储在MRENCLAVE 312中。
在框体420中,安装器应用发布EINIT指令以结束enclave的建立并对其进行初始
化。在框体422中,例如由执行单元216或226来开始EINIT指令的执行。
EINIT指令的执行可包括,在框体424中,通过使用证书或签名结构中所包括的密
钥来验证enclave的安装器或签名者所提供的enclave证书或签名结构(SIGSTRUCT)是有效
的。EINIT指令的执行还可包括,在框体426中,验证MRENCLAVE 312的内容与证书或签名结
构中所提供的MRENCLAVE的期望值相匹配,其中,MRENCLAVE 312的最终值可以是加密地标
识位于enclave内部的代码和数据、enclave内部的页面的位置或放置顺序、以及每个页面
的安全属性的唯一安全散列算法(例如,SHA-256)摘要。
在框体428中,EINIT指令的执行可以以锁定MRENCLAVE 312继续以便MRENCLAVE
312的内容保持不变,甚至通过EADD或EEXTEND指令的后续执行以及在SECS中设置属性指标
来防止任意更多区域或页面被添加到enclave。在框体430中,完成enclave的建立。在框体
440中,可进入enclave(例如,通过发布EENTER指令)以便安全地执行enclave中的软件应
用。
图5根据本发明的实施例示出了用于跨电源周期维护安全处理环境的方法500。尽
管本发明的方法实施例在这方面不被限制,但可以参考图1、2、3、以及4的元素来帮助描述
图5的方法实施例。方法500包括使用EPA、EWB、EWBPS、ELDPS、以及ELD指令来使用和维护安
全处理环境,例如,根据方法400建立的安全enclave;然而,本发明的实施例不被限制于这
些被具体提及的指令。为了方便,方法500示出了逐出每个类型的EPC页面中的一个类型的
EPC页面;然而,根据本发明的各个实施例的方法可包括逐出每个类型的EPC页面中的任意
多个类型的EPC页面,这取决于当发起断电时有多少EPC页面正被使用。方法500的各个部分
可通过或利用硬件(例如,指令单元214/224、执行单元216/226、和/或控制单元218/228)、
固件、软件、信息处理系统的用户等的组合来独立地执行。在实施例中,如下所述被发布和
执行的EPA、EWB、EWBPS、ELDPS、以及ELD指令可以在处理器110上安装、运行、和/或执行的操
作系统软件中。
在框体510中,开始EPA指令的第一发布的执行。在框体512中,作为EPA指令的执行
的一部分,第一VA页面(例如,VA页面342)在EPC 300中被创建以便用于存储被逐出的页面
的版本信息。在本发明的范围内可以创建多于一个的VA页面,并且VA页面还可被页面移出,
只要被逐出的VA页面的版本信息被存储在EPC 300中的另一VA页面中,以及只要被页面移
出的任意VA页面在页面移回版本信息被存储在该VA页面中的任意页面之前被页面移回。任
意页面布局和/或任意类型的数据结构可用来存储版本阵列页面中的版本信息和/或其他
信息并创建VA页面的层级。
在框体514中,开始EPA指令的第二发布的执行。在框体516中,作为EPA指令的执行
的一部分,第二VA页面(例如,VA页面344)在EPC 300中被创建以用作根VA页面。注意,在某
些实施例中,可省略图5中示出的某些框体,包括框体514和516,这是由于可以使用单一VA
页面(例如,VA页面342),在这种情况下,单一VA页面将用作根VA页面,并且在这种情况下,
框体550到558(如下所述与逐出VA页面342有关)也将被省略。在其他实施例中,可创建额外
的VA页面以便构建其他VA页面层级。
在框体520中,开始EWB指令的第一发布的执行。在框体522中,作为EWB指令的执行
的一部分,从EPC 300逐出的第一页面(例如,代码/数据页面332)的内容被加密(例如,通过
加密单元270或280,使用PK)以生成第一加密页面。在本发明的范围内可以使用任意加密算
法或技术。在框体524中,作为EWB指令的执行的一部分,针对第一页面和/或第一加密页面
生成第一完整性检查值、第一反中继值、和/或第一元数据。在本发明的范围内可以使用完
整性检查、反中继保护、和/或其他验证或认证的任意方法。在框体526中,作为EWB指令的执
行的一部分,第一页面的第一唯一版本号被存储在VA页面(例如,VA页面342)中的第一空槽
中。在框体528中,作为EWB指令的执行的一部分,第一加密页面、第一元数据、以及第一页面
的EPCM信息被写到系统存储器120。
在框体530中,开始EWB指令的第二发布的执行。在框体532中,作为EWB指令的执行
的一部分,从EPC 300逐出的第二页面(例如,TCS页面322)的内容被加密(例如,通过加密单
元270或280,使用PK)以生成第二加密页面。在框体534中,作为EWB指令的执行的一部分,针
对第二页面和/或第二加密页面生成第二完整性检查值、第二反中继值、和/或第二元数据。
在框体536中,作为EWB指令的执行的一部分,第二页面的第二唯一版本号被存储在VA页面
(例如,VA页面342)中的第二空槽中。在框体538中,作为EWB指令的执行的一部分,第二加密
页面、第二元数据、以及第二页面的EPCM信息被写到系统存储器120。
在框体540中,开始EWB指令的第三发布的执行。在框体542中,作为EWB指令的执行
的一部分,从EPC 300逐出的第三页面(例如,SECS页面310)的内容被加密(例如,通过加密
单元270或280,使用PK)以生成第三加密页面。在框体544中,作为EWB指令的执行的一部分,
针对第三页面和/或第三加密页面生成第三完整性检查值、第三反中继值、和/或第三元数
据。在框体546中,作为EWB指令的执行的一部分,第三页面的第三唯一版本号被存储在VA页
面(例如,VA页面342)中的第三空槽中。在框体548中,作为EWB指令的执行的一部分,第三加
密页面、第三元数据、以及第三页面的EPCM信息被写到系统存储器120。
在框体550中,开始EWB指令的第四发布的执行。在框体552中,作为EWB指令的执行
的一部分,从EPC 300逐出的第一页面(例如,VA页面342)的内容被加密(例如,通过加密单
元270或280,使用PK)以生成第四加密页面。在框体554中,作为EWB指令的执行的一部分,针
对第四页面和/或第四加密页面生成第四完整性检查值、第四反中继值、和/或第四元数据。
在框体556中,作为EWB指令的执行的一部分,第四页面的第四唯一版本号被存储在根VA页
面(例如,VA页面344)中的空槽中。在框体558中,作为EWB指令的执行的一部分,第四加密页
面、第四元数据、以及第四页面的EPCM信息被写到系统存储器120。
框体520到528、530到538、540到548、和/或550到558可被重复所需次数以逐出EPC
300中使用的所有页面(除了根VA页面),直到根VA页面中仅剩余单一条目。
在框体560中,开始EWBPS指令的发布的执行。在框体562中,作为EWBPS指令的执行
的一部分,包括LAST_VA_VERSION(来自根VA页面中的最后剩余的条目)、PSVERSION、PK、PI、
EID、以及SVN的输入的组合被加密(例如,通过加密单元270或280,使用PI)以生成PSblob。
在框体564中,作为EWBPS指令的执行的一部分,PS blob被写到非易失性存储装置290。
在框体566中,例如结合进入备用、睡眠、暂停、或其他电源管理状态来从处理器
110的至少一部分移除电力。在实施例中,可以从处理器封装引脚或为包括EPC 300的处理
器电路供电的其他外部连接器242移除电力,而对于为非易失性存储装置290供电的引脚
292维持电力。在框体568中,处理器110临时保持在备用、睡眠、暂停、或其他电源管理状态,
不被施加电力以维持EPC 300的内容。
在框体570中,例如结合退出备用、睡眠、暂停、或其他电源管理状态来对于包括
EPC 300的处理器110的该部分重新施加电力。在框体572中,开始恢复处理器对安全处理环
境的支持(例如,通过基础输入/输出系统固件),包括:设置PRMRR 213/223/250;安装任意
微码补丁、认证代码模块、和/或任意其他固件和/或软件以支持安全处理环境或处理器的
其他能力或功能;以及使能对安全处理环境的支持。
在框体574中,开始EPA指令的第三发布的执行。在框体576中,作为EPA指令的执行
的一部分,所有条目为空的第三VA页面(例如,VA页面344)在EPC 300中被创建以用作根VA
页面。可以在与第二VA页面相同的EPC 300中的物理和/或逻辑位置处创建该第三VA页面,
该第二VA页面在EWBPS指令的执行期间用作根VA页面。因此,第三VA页面还由VA页面344表
示。
在框体580中,开始ELDPS指令的发布的执行。在框体584中,作为ELDPS指令的执行
的一部分,从非易失性存储装置290读取PS blob。在框体586中,作为ELDPS指令的执行的一
部分,PS blob被解密(例如,通过加密单元270或280,使用PI)并进行整体性检查。在框体
588中,作为ELDPS指令的执行的一部分,经解密的PS blob的内容用来恢复在EWBPS指令被
执行时呈现的EPC分页上下文。恢复EPC分页上下文可包括将PK加载到密钥寄存器中的分页
密钥位置并加载分页上下文寄存器(例如,CR_PAGING_VERSION寄存器,例如,将LAST_VA_
VERSION加载到被逐出的最后页面的版本号的寄存器)。注意,这些寄存器(例如,分页密钥
和分页上下文寄存器)可结合处理器110的上电而被加载新的/初始化值;因此,框体588可
涉及重写这些初始化值。
在框体590中,作为ELDPS指令的执行的一部分,被逐出的最后VA页面的版本号被
加载到根VA页面的空槽中。注意,若ELDPS指令的执行未成功完成(例如,PS blob的解密和/
或完整性检查发生故障),则处理器110可使用响应于最近上电所生成的分页上下文(包括
新的分页密钥和分页上下文寄存器的其他初始化值)来支持安全处理环境;然而,之前被创
建的安全处理环境不能根据本发明的实施例被恢复。相反,它们可根据不能跨电源周期维
护安全处理环境的任意之前已知的技术来重建。
假设ELDPS指令成功完成,则可通过向EPC 300重新加载(例如,通过发布ELD指令)
在备用、睡眠、暂停、或其他电源管理状态的准备中被逐出(例如,通过操作系统)的EPC页面
来恢复(例如,通过操作系统)在备用、睡眠、暂停、或其他电源管理状态之前被建立的(一个
或多个)安全处理环境。可以以与VA页面层级相一致的任意顺序来重新加载这些页面,并且
可以按需来重新加载代码/数据页面。
例如,在框体592中,开始ELD指令的发布的执行。在框体594中,作为ELD指令的执
行的一部分,页面(例如,VA页面342)的经加密的内容从系统存储器120被读取并被解密(例
如,通过加密单元270或280,使用PK)以生成解密页面。在框体596中,检查页面的整体性检
查值、反中继值、和/或其他元数据以验证页面的完整性,包括检查版本是最后被写出的相
同版本(例如,对于VA页面342,被存储在根VA页面中的版本号)。在框体598中,未加密页面
被重新加载到EPC 300中并且EPCM信息被恢复到EPCM。
在本发明的各个实施例中,可以利用组合或省略所示出的框体、添加额外的框体、
或重新排序、组合、省略、或额外框体的组合来以不同的顺序执行图4和5所示的方法。此外,
本发明的方法实施例不被限制于方法400、方法500、或其中的变化。在本发明的范围内本文
未描述的许多其他方法实施例(以及装置、系统、和其他实施例)是可能的。
如上所述,本发明的实施例或实施例的部分可被存储在任意形式的机器可读介质
上。例如,所有或部分方法400和/或500可被体现在由处理器110可读的介质上所存储的软
件或固件指令中,当由处理器110执行时,使得处理器110执行本发明的实施例。此外,本发
明的各方面可被体现在机器可读介质上所存储的数据中,其中,数据表示不能构建所有或
部分处理器110的设计或其他信息。
因此,用于跨电源周期维护安全处理环境的发明的实施例已被描述。尽管某些实
施例已被描述并在附图中被示出,将理解的是,这类实施例仅是说明性的并且不是广义发
明的限制,并且本发明不被限制于所示出和描述的特定结构和布置,这是由于当学习本公
开时本领域普通技术人员可做出各种其他修改。在诸如此类的技术领域中,增长速度快并
且不容易预见进一步的进展,如在不同脱离本公开的原理或所附权利要求的范围的情况下
通过使能技术进展所促进的,可以在布置和细节上容易地修改所公开的实施例。