设备与安全处理环境之间的接口的制作方法

文档序号:12071273阅读:1085来源:国知局
设备与安全处理环境之间的接口的制作方法与工艺

1.技术领域

本公开涉及信息处理领域,并且更具体地涉及信息处理系统安全领域。

2.相关技术说明

机密信息被许多信息处理系统存储、传输和使用。因此,已经研发了技术来提供对机密信息的安全处理和存储。这些技术包括用于在信息处理系统内创建和维持安全的、受保护的或隔离的容器、分区、或环境的各种方法。这种信息处理系统可以包括一个或多个处理器,所述一个或多个处理器用于与一个或多个设备(比如图形处理器或其他加速度计)一起执行这种容器内的一个或多个应用程序,从而执行与所述一个或多个应用程序相关联的一个或多个工作负载。

附图说明

在附图中通过举例而非限制性地展示了本发明。

图1展示了根据本发明的实施例的一种包括设备与安全处理环境之间的接口的系统。

图2展示了根据本发明的实施例的一种包括对设备与安全处理环境之间的接口的支持的处理器。

图3展示了根据本发明的实施例的飞地页面缓存(Enclave Page Cache)。

图4展示了根据本发明的实施例的一种用于建立安全处理环境的方法。

图5展示了根据本发明的实施例的系统内的信任边界。

图6展示了根据本发明的实施例的一种用于对安全处理环境的设备访问控制的方法。

图7A、图7B、图7C、和图7D展示了根据本发明的实施例的一种用于设备进入和退出安全处理环境的方法。

具体实施方式

描述了用于设备与安全处理环境之间接口连接的发明实施例。在本说明书中,可以陈述许多具体细节(比如部件和系统配置),以便提供对本发明更加透彻的理解。然而,本领域技术人员将理解的是,可以在没有这些具体细节的情况下实践本发明。另外,未详细示出一些熟知的结构、电路和其他特征,从而避免不必要地模糊本发明。

在以下说明中,对“一个实施例”、“实施例”、“示例实施例”、“各实施例”等的引用表明这样描述的本发明的这个或这些实施例可以包括具体特征、结构或特性,但并不止一个实施例可以并且并非每个实施例必定包括这些具体特征、结构或特性。进一步,某些实施例可具有针对其他实施例所描述的特征的一部分、全部、或不具有任何所述特征。

如在说明书和权利要求书中所使用的,并且除非另有说明,使用序数形容词“第一”、“第二”、“第三”等来描述元素仅仅指示元素的具体实例或相同元素的不同实例被提及,并且不旨在暗示如此描述的元素必须在或者时间上、空间上、排名上、或以任何其它方式处于特定序列中。

同样,术语“位”“标志位”“字段”“条目”“指示符”等可以用来描述寄存器、表格、数据库、或其他数据结构中任何类型的存储位置,不管实现在硬件中还是软件中,但并不旨在将本发明的实施例限制为任何具体类型的存储位置或位数或任何具体存储位置内的其他元素。术语“清零”可以用来指示存储或另外使得逻辑值零被存在存储位置(并且“已清零”可以用来指示已被清零的状态或条件),并且术语“设定”可以用来指示存储或另外使得逻辑值一、所有的一、或某个其他指定值被存储在存储位置(或状态或条件已经被设定);然而,这些术语并不旨在限制本发明的实施例为任何具体逻辑惯例,因为任何逻辑惯例可以用于本发明的实施例中。

同样,如在本发明实施例的说明中所使用的,术语之间的“/”符号可以指实施例可以包括第一术语和/或第二术语或者使用、利用和/或根据第一术语和/或第二术语(和/或任何其他附加术语)来实现。

如在

背景技术:
部分中所声明的,已经研发出了用于在信息处理系统内创建和维持安全的、受保护的或隔离的容器、分区、或环境的各种方法。一个这种方法涉及2012年6月19日提交的序列号为13/527,547标题为“Method and Apparatus to Provide Secure Application Execution(用于提供安全应用程序执行的方法和装置)”的共同待决美国专利申请中所描述的安全飞地,所述申请提供了关于安全的、受保护的或隔离的容器、分区、或环境的至少一个实施例的信息。然而,此参考文件并不旨在以任何方式限制本发明实施例的范围,并且在保持本发明的精神和范围的同时,可以使用其他实施例。因此,本发明的任何实施例中所使用的任何安全的、受保护的或隔离的容器、分区或环境的任何实例在此可以被称为安全飞地(Secure Enclave)或飞地(Enclave)。

在本发明的实施例中,安全处理环境或容器可以由操作系统或其他系统级软件(为了方便,用来创建这种容器的任何软件/程序都可以被称为OS)创建并且用于安全地执行应用程序或其他用户级软件(为了方便,在这种容器内执行的任何软件/程序都可以被称为应用程序)。所述OS可以使用如下所述的某些指令来创建安全处理环境,其中,这些指令可以在信息处理系统内的处理器或处理器核上执行。所述应用程序可以在这个处理器或处理器核和/或系统内的另一处理器或处理器核上执行。然而,可以期望将应用程序的工作负载卸载至所述系统内除了这些处理器或处理器核以外的设备上。例如,与应用程序相关联的图形处理可以由图形处理器执行。因此,可以期望使用本发明的实施例来提供任何这种图形处理器、加速度计、或用于与安全处理环境接口连接的其他设备。本发明的实施例可以期望提供各种不同的可定制的设备来在系统的安全处理环境框架内执行,而不需要所述框架支持多个设备接口体系结构。本发明的实施例还可以期望允许设备在安全处理环境中安全地执行工作负载,而不影响不信任所述设备的其他安全处理环境的安全性。

图1展示了系统100,根据本发明实施例的一种包括设备与安全处理环境之间的接口的信息处理系统。系统100可以代表任何类型的信息处理系统,比如服务器、台式计算机、便携式计算机、机顶盒、手持设备(比如平板计算机或智能电话)、或嵌入式控制系统。系统100包括处理器110、系统存储器120、根复合体130、接口插件140、设备150和部件160。将本发明具体化的系统可以包括任何数量的这些部件和任何其他部件或其他元件中的每一个,比如外围设备和输入/输出(I/O)设备。这个或任何系统实施例中的任何或全部部件或其他元件可以通过任何数量的总线、点到点、或其他有线或无线接口、连接、和/或互连交换结构(除非另外指定)彼此连接、耦合或以其他方式进行通信。系统100的任何部件或其他部分(无论在图1中示出还是在图1中未示出)可以整合或以其他方式包括在单晶片(片上系统或SOC)、管芯、基板、或封装体之上或之中。

系统存储器120可以是动态随机存取存储器或处理器110可读的任何其他类型的介质。

根复合体130可以代表任何部件(比如芯片组部件),所述部件包含任何一个或多个设备或任何一个或多个设备(比如设备150)可以通过所述部件连接或耦合至处理器110。根复合体130可以包括I/O存储器管理单元(IOMMU)132,所述I/O存储器管理单元可以代表任何电路或其他硬件,包括地址转换数据结构(比如转换后备缓冲器(TLB))和/或硬件,用于:访问地址转换数据结构,将设备(比如设备150)所使用的地址(例如,线性地址)转换成用于访问系统存储器120的地址(例如,物理地址),基于每个这种线性地址、线性地址组、设备标识符、总线标识符、功能标识符等存储关于每个这种物理地址或物理地址组的可访问性的信息(访问许可,例如,读取许可、写入许可和/或执行许可),并实施访问许可。在实施例中,可以至少部分基于访问控制策略来定义这些访问许可,根据所述访问控制策略,根复合体130可以被引导程序和/或系统级软件/固件编程/配置。

接口插件140可以代表用于根据本发明的实施例实现IOMMU 132与设备150之间的接口的任何电路或其他硬件或固件,如下文进一步描述的。接口插件140可以被整合至设备150、根复合体130、或系统100中的任何其他部件中,所述系统可以包括任何数量的接口插件。每个接口插件140可以包括配置单元142、访问控制单元144、和事务单元146,分别如下所述。每个接口插件140还可以包括用于缓存地址转换、访问许可、和/或与其相关联的设备150所特定的其他这种信息的TLB 148。

设备150可以代表有能力执行应用程序的、用于该应用程序的、或与该应用程序相关联的工作负载的任何代理、部件、或设备,或另外访问系统存储器120(例如,通过直接存储器访问)。设备150实例的示例包括图形、视频、音频、媒体、加密、输入/输出、网络、或其他处理器、协处理器、加速度计、控制器、或其他代理或设备。虽然在图1中被示为单独的块,但是设备150的实例可以是分立的或被整合/封装至系统100内的任何其他部件或设备内/一起。此外,虽然图1仅示出了一个这种设备150,但是任何数量的设备可以与根据本发明实施例的安全处理环境接口连接。在各实施例中,设备150和根复合体130可以根据或另外遵守一个或多个版本的外围部件互连专业组(PCI-SIG)规范起作用并彼此相连。

任何数量的设备150(无论是相同还是不同类型的设备)的各实例可以在体系结构上一起分组在设备组(DEVGRP)中,从而使得访问控制策略可以在群组级应用于设备,其中,具体DEVGRP中的每个设备具有相同的访问控制属性并且可以在相同的飞地内运行。在实施例中,系统的体系结构定义可以支持六十四个DEVGRP,各自具有唯一标识符值(例如,0到63),其中,每个设备150可以恰好属于一个DEVGRP。

每个设备150可以支持一个或多个逻辑引擎(分别为LE),其中,LE是所述设备所呈现的用于执行设备功能的、在任何给定时间在单个上下文中执行的可编程抽象。因此,可以根据本发明的实施例由单个设备150独立地和/或并行地执行不只一个设备工作负载,其中,每个工作负载由不同的LE执行。单个设备150内的多个LE可以共享与所述设备相关联的接口插件140。每个LE可以被设定为或者在根据本发明实施例在飞地内(即“飞地模式”)或者根据任何现有方法(例如由其接口插件140的硬件在其接口插件140与IOMMU 132成功地完成飞地进入协议之后)来运行。

在实施例中,可以为每个LE指定LE类型(LE_TYPE),其中,LE_TYPE取决于LE的指令集体系结构(ISA)。具有同一LE_TYPE并在同一DEVGRP中的LE是彼此兼容的软件。单个设备150可以呈现或支持多个LE(同一或不同LE_TYPE的任意组合)。在设备150代表图形处理器的实施例中,所述图形处理器可以呈现两个不同LE,分别具有不同的LE_TYPE,第一个用于执行渲染(渲染引擎)并且第二个用于执行位块传送操作(位块传送引擎)。

系统100还可以包括任何数量的存储设备、外围设备、输入/输出(I/O)、或其他部件或设备,比如部件160(例如,闪存存储器、固态驱动器、磁盘驱动器、光驱、显示器、触摸屏、键盘、麦克风、扬声器、其他音频设备、相机、视频或其他媒体设备、网络适配器、运动或其他传感器、用于全球定位或其他信息的接收器等)。

处理器110可以代表整合在单个基板上或封装体上在单个封装体内的一个或多个处理器或处理器核,其中每一个可以包括多个线程和/或多个执行核(任意组合)。表示为处理器110或在其中的每一个处理器可以是任何类型的处理器,包括通用微处理器(比如来自公司(Corporation)或另一公司的处理器族(Processor Family)或其他处理器族中的处理器)、专用处理器或微控制器、或信息处理系统中的任何其他设备或部件,本发明的实施例或其一部分可以在所述信息处理系统中实现。

处理器110可以根据指令集合体系结构运行,所述指令集合体系结构包括以下指令,各自如下面进一步描述的:用于创建安全飞地的第一指令、用于向飞地添加内容的第二指令、用于测量飞地内容的第三指令、用于将飞地初始化的第四指令、以及用于进入飞地的第五指令。虽然本发明的实施例可以用具有任何指令集合体系结构的处理器来实践并且并不限于来自公司的处理器族的体系结构,这些指令可以是现有体系结构的软件保护扩展集合的一部分,并且在此可以被称为ECREATE指令、EADD指令、EEXTEND指令、EINIT指令和EENTER指令。对这些指令的支持可以使用电路和/或嵌入在硬件中的逻辑、微代码、固件、和/或如下所述或根据任何其他方法安排的其他结构的任意组合在处理器中实现,并且在图1中被表示为ECREATE逻辑/硬件1101、EADD逻辑/硬件1102、EEXTEND逻辑/硬件1103、EINIT逻辑/硬件1104、和EENTER逻辑/硬件1105。

图2展示了处理器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的功能如上文所介绍并在下文进一步描述的可以包含在或分布在任何已标记单元或处理器200中任何其他地方当中。此外,所描述和/或所展示的处理器200的单元中的每一个单元的功能和或电路可以通过任何方式组合/或分布。

存储单元212和222可以包括出于任何目的分别可用于核210和220中的任何类型存储设备的任意组合;例如,它们可以包括使用任何存储器或存储技术实现的任何数量的可读、可写、和/或可读写寄存器、缓冲器、和/或缓存,将能力信息、配置信息、控制信息、状态信息、性能信息、指令、数据、和分别可用于核210和220的运行中以及可用于访问这种存储的电路的任何其他信息存储在上述各项中。

指令单元214和224可以包括任何电路、逻辑、结构、和/或其他硬件(比如,指令解码器),用取回、接收、解码、解译、调度、和/或处理分别有待由核210和220执行的指令。在本发明的范围内,可以使用任何指令格式;例如,指令可以包括操作码和一个或多个操作数,其中,所述操作码可以被解码成一个或多个微指令或微操作,以供执行单元216或226分别执行。一条或多条指令(比如ECREATE、EADD、EEXTEND、EINIT、和EENTER指令)可以是第一单个操作码(比如特许安全飞地操作码(例如,ENCLS))或第二单个操作码(比如非特许安全飞地操作码(例如,ENCLU))的叶,其中,所述叶指令是由处理器寄存器(例如,EAX)中的值所指定的。操作数或其他参数可以隐含地、直接地、间接地、或根据另一种方法与指令相关联。

执行单元216和226可以包括任何电路、逻辑、结构、和/或其他硬件,比如运算单元、逻辑单元、浮点单元、移位器等,用来处理数据并执行指令、微指令、和/或微操作。执行单元216和226中的每一个可以代表任何一个或多个物理上或逻辑上有差异的执行单元。执行单元216和226分别可以包括加密单元270和280,所述加密单元可以代表任何专用或共享的电路、逻辑、结构、和/或其他硬件用于执行任何一种或多种加密算法和相应的解密算法、用于执行任何一种或多种安全散列算法、和/或用于生成任何一个或多个消息认证码(MAC)。加密单元270和280可以使用密钥(比如对应地密钥272和282),其中每一个可以代表任何密钥,比如被编程至融合阵列中的处理器200中、在启动过程中生成的、和/或另外作为密钥可用于加密(用于生成MAC或用于任何其他目的)的处理器或平台唯一的密钥。

控制单元218和228可以包括任何微代码、固件、电路、逻辑、结构、和/或硬件,分别用于控制核210和220的这些单元和其他元件的运行以及在核210和220内、向其中、以及从中转出数据的转移。控制单元218和228可以使得核210和220和处理器200执行或参与本发明的方法实施例(比如下面所述的方法实施例)的执行,例如通过使得核210和220执行指令单元214和224所接收到的指令以及从指令单元214和224所接收到的指令导出的微指令或微操作。

缓存单元232可以包括信息处理系统100的存储器层次中一级或多级缓存存储器中任何数量的缓存阵列,与电路、结构、和/或其他用于控制和/或供其使用和维护的硬件一起用静态随机存取存储器或任何其他存储器技术实现。根据信息处理系统中任何缓存的方法,缓存单元232可以在处理器200内任何数量的核和/或逻辑处理器之间被共享。缓存单元232还可以包括如下文进一步描述的有待用作飞地页面缓存(EPC)240的一个或多个存储器阵列。

接口单元234可以代表任何电路、逻辑、结构、和/或其他硬件,比如链路单元、总线单元、或消息传送单元,从而允许处理器200通过任何类型的总线、点到点、或其他连接直接地或通过任何其他部件(比如桥接器、集线器、或芯片组)与系统(比如系统200)中的其他部件进行通信。接口单元234可以包括一个或多个集成存储器控制器用于与系统存储器(比如系统存储器120)进行通信,或者可以通过处理器200外部的一个或多个存储器控制器与系统存储器进行通信。

处理器预留的存储器范围寄存器(PRMRR)250可以代表存储单元212和222中任何一个或多个存储位置、处理器200内其他地方、和/或其在非核230中的副本。PRMRR 250可以例如被配置固件(比如基本输入/输出系统)用来预留被称为处理器预留的存储器(PRM)的一个或多个物理上连续的存储器范围。存储器访问控制单元260可以代表处理器200中任何地方的任何电路、结构、逻辑、和/或其他硬件,这些可以控制对PRM的访问,从而使得可以在被定义为PRM的系统存储器空间内创建EPC 240。

在实施例中,PRM的大小为二的整数幂(例如,32MB、64MB、128MB)并且与这个大小的倍数的存储器地址一致。PRMRR 250可以包括只读PRMMR有效配置寄存器252的一个或多个实例用于指示可以将PRM配置成的有效大小、PRMMR基址寄存器254和PRMMR屏蔽寄存器256的一个或多个实例用于定义PRM的一个或多个基址和范围。

EPC 240是安全存储区域,在所述安全存储区域中,可以保护软件免受运行于任何特许级的恶意软件攻击。可以创建一个或多个安全飞地,从而使得每个飞地可以包括EPC 240的一个或多个页面或其他区域,将以只有运行于这个飞地内的软件(除非本发明的实施例另外规定)可以访问的方式在其中存储代码、数据、或其他信息。例如,安全飞地可以由软件应用程序使用,从而使得只有这个软件应用程序(在所述飞地内部运行时)可以访问所述飞地的内容。当内容被加载至EPC中(假定所述飞地是生产飞地,与例如调试飞地相反)时,没有其他软件,甚至操作系统或虚拟机监视器都不可以读取这个飞地的未加密内容、更改这个飞地的内容、或另外篡改这个飞地的内容。然而,所述飞地的内容可以被从这个飞地内部在系统100中的任何处理器上执行的软件访问。这种保护由根据安全飞地体系结构运行的存储器访问控制单元260完成。

在图2中,EPC 240被示为在缓存单元232中,其中,它可以是共享缓存或专用存储器的隐蔽部分。与处理器200在同一管芯内或上,EPC 240可以在静态随机存取存储器、嵌入动态随机存取存储器、或任何其他存储器技术中实现。EPC 240还可以或另外地在处理器200外部(例如在系统存储器120的安全区域内)实现。为了保护安全飞地的内容(当它未被存储在管芯上时),加密单元270和/或280可以用于在所述内容被转移离开管芯之前对其进行加密并对转移回到管芯上的EPC 240中的内容进行解密。还可以应用其他保护机制来保护所述内容免于重放和其他攻击。

图3展示了EPC 300,其实施例可以充当图2中的EPC 240。在图3中,EPC 300包括安全飞地控制结构(SECS)310、线程控制结构(TCS)区域320、和代码/数据区域330。虽然图3示出了EPC 300被划分成三个单独区域,但是EPC 300可以被划分成任何数量的分块、区域、或页面,其中的每一个可以用于任何类型的内容。在一个实施例中,EPC 300被划分成4千字节(KB)页面并与系统存储器120中的地址(是4KB倍数)一致,SECS 310可以是ECP 300中这些4KB页面中的任何一个,TCS区域320可以任何数量的连续或非连续的4KB页面,并且代码/数据区域330可以是任何数量的连续或非连续4KB页面。此外,虽然图3示出了与一个安全飞地相对应的一个SECS、一个TCS区域、以及一个代码/数据区域,但是EPC可以包括任何数量的SECS和任何数量的TCS和代码/数据区域,只要每个飞地有一个且仅一个SECS,每个有效TCS和有效代码/数据区域(例如,页面)属于一个且仅一个飞地,并且所有的SECS、TCS、代码/数据页面在EPC中适配(或者可以被页出和返回进入EPC)。

可以通过执行ECREATE指令来创建SECS以包含有待由硬件使用并且仅由硬件可访问(即,软件(无论是运行于所述飞地内部还是外部)不可读、不可写、或另外不可访问)的元数据,从而定义、维护、和保护所述飞地。例如,SECS 310包括第一测量寄存器(MRENCLAVE)312,所述第一测量寄存器可以是SECS 310内任何大小字段;在一个实施例中,MRENCLAVE 312可以是32字节。MRENCLAVE 312用于存储所述飞地的建立测量结果(如下所述),通过ECREATE指令初始化、通过与所述飞地相关联的每个EADD和EEXTEND指令更新、并通过与所述飞地相关联的EINIT指令锁定所述飞地。SECS 310还包括第二测量寄存器(MRSIGNER)314用来存储实体的标识符(比如公钥)的测量结果,所述实体验证所述飞地的创建,如下面进一步描述的。在一个实施例中,MRSIGNER 314可以是32字节。如下所述,飞地属性可以存储在ATTRIBUTES(属性)字段316中,此字段在一个实施例中可以具有16字节的大小。

一个或多个TCS也可以与安全飞地相关联。TCS是包含被硬件用来在进入和退出所述飞地时存储和恢复线程特定信息的元数据的数据结构。在实施例中,一个或多个设备TCS(DTCS)可以与飞地相关联,各自用于供设备150进入和退出所述飞地。DTCS可以包括用于指定可以使用这个DTCS进入所述飞地的LE的LE_TYPE的字段。相应地,LE可以通过所述飞地的DTCS进入飞地,如果所述DTCS是从LE的DEVGRP可访问的且LE的LE_TYPE与DTCS中所指定的LE_TYPE匹配的话。例如,对于在飞地内在处理器上执行以将工作卸下至图形处理器中的渲染引擎的应用程序,将在所述飞地内创建从包括所述图形处理器并且将LE_TYPE设置为所述渲染引擎的LE_TYPE的DEVGRP可访问的DTCS。

每个页面的安全属性被存储在被称为飞地页面缓存地图(EPCM)的微体系结构数据结构中,所述微体系结构数据结构被存储器访问控制单元260用来实施所述安全飞地体系结构所提供的保护。所述EPCM在EPC中存储针对每个页面的一个条目。每个条目包括所述页面所属的SECS(即,飞地)的标识符(例如,64位字段)。这些标识符可以被安全飞地称为比如EADD、EEXTEND、和EINIT的指令(例如,SECS的地址可以存储在比如RCX的寄存器中,包括SECS的地址的微体系结构数据结构的地址可以存储在比如RBX的寄存器中等等),从而规定SECS由硬件读取以便执行所述指令。

图4根据本发明的实施例展示了一种用于建立安全处理环境的方法400。虽然本发明的方法实施例并不限于这方面,但是可以参照图1、图2、和图3的元素来帮助描述图4的方法实施例。方法400包括使用ECREATE、EADD、EEXTEND、EINIT、和EENTER指令来建立安全飞地;然而,本发明的实施例并不限于这些具体命名的指令。可以由硬件(例如,指令单元214/224、执行单元216/226、和/或控制单元218/228)、固件、软件、信息处理系统的用户等独立地或组合地执行方法400的各部分。

在方法400的框410中,开始建立飞地。在框412中,例如由安装程序应用程序下发ECREATE指令来创建所述飞地。在框414中,开始例如由执行单元216或226执行ECREATE指令。在一个实施例中,ECREATE指令的执行包括分配一系列地址供所述飞地使用。在一个实施例中,这些地址可以是有待转换成第二种类型地址(例如系统存储器(比如系统存储器120)中的物理地址)的第一类型地址(例如虚拟地址或线性地址)。

执行ECREATE指令还可以包括在框416中确立所述飞地的属性并将这些飞地属性存储在SECS中,例如在SECS 310的ATTRIBUTES字段316中。微体系结构数据结构(例如,PAGEINFO)可以与ECREATE指令(例如,其在RBX寄存器中的地址)相关联。PAGEINFO可以具有指定有待复制至SECS 310的源SECS的地址的字段。源SECS可以包括有待复制至SECS ATTRIBUTES字段316的源SECS ATTRIBUTES位阵列。

在框418中,安装程序应用程序可以例如通过下发一条或多条EADD指令向所述飞地添加一个或多个页面(或其他区域),并例如通过下发一条或多条EEXTEND指令使其被测量。向所述飞地添加页面可以包括将来自系统存储器的源页面复制到EPC中并将EPC页面与所述飞地的SECS进行关联。所述源页面可以是包含未加密代码、数据、或所述飞地的代码/数据区域的其他信息的规则页面,或者所述源页面可以是包含TCS区域的元数据的TCS页面。使它们被测量可以包括基于所述这个或这些页面的内容、位置、和/或其他属性递增地计算或扩展密码散列,以及将所述散列存储在MRENCLAVE 312中。

在框420中,安装程序应用程序下发EINIT指令,以便结束所述飞地的建立并对其进行初始化。在一个实施例中,EINIT是在EAX寄存器中具有值0x2的ENCLS的叶。在框422中,EINIT指令的执行(例如,由执行单元216或226)开始。

EINIT指令的执行可以包括在框424中验证由所述飞地的安装程序或签名程序所提供的飞地证书或签名结构(SIGSTRUCT)是有效的,通过使用所述证书或签名结构中所包括的密钥。EINIT指令的执行还可以包括在框426中验证MRENCLAVE 312的内容与所述证书或签名结构中所设置的MRENCLAVE的期望值匹配,其中,MRENCLAVE 312的最终值可以是唯一安全散列算法(例如,SHA-256)摘要,所述唯一安全散列算法摘要密码地标识置于所述飞地内的代码和数据、所述页面在所述飞地内的位置和放置顺序、以及每个页面的安全特性。

在框428中,EINIT指令的执行可以继续锁定MRENCLAVE 312从而使得其内容保持不变(即使通过随后执行EADD或EEXTEND指令),并设置SECS中属性标识符从而防止还有区域或页面被添加至所述飞地。在框430中,所述飞地的建立完成。在框440中,可以进入所述飞地(例如,通过下发EENTER指令),以便安全地执行所述飞地内的软件应用程序。

现在返回图1,每个接口插件140可以包括配置单元142、访问控制单元144、和事务单元146。配置单元142可以包括任何数量的可配置/可编程存储位置(比如寄存器),所述可配置/可编程存储位置可以被固件/软件配置/编程用于存储以下各项中的任何一项:值,指示符,或与根据本发明实施例的接口的体系结构定义相关联的或另外由访问控制单元144、事务单元146、或接口插件140的其他单元、电路、硬件使用的其他信息。配置单元142还可以包括任何数量的状态/控制存储位置(比如寄存器),所述状态/控制存储位置可以反映相关联的设备150的状态、其LE、安全执行环境、LE对安全执行环境的访问或试图访问、或可以由访问控制单元144、事务单元146、或接口插件140的其他单元、电路、硬件使用的任何其他信息。

访问控制单元144可以包括任何访问控制电路或其他硬件,比如访问控制状态机,用于将访问控制策略应用于根据本发明实施例的设备。在实施例中,访问控制单元144中的访问控制状态机可以根据图6中所展示的方法运行。

事务单元146可以包括任何电路或其他硬件用于生成和接收接口插件140与IOMMU 132之间的子事务,其中,这些子事务用于实现进入/退出协议,所述进入/退出协议可以允许与接口插件140相关联的设备150进入安全处理环境、访问其在EPC 300中受保护的存储器页面、以及退出所述安全处理环境。在实施例中,可以根据图7A、图7B、图7C、和图7D中所展示的方法实现这个进入/退出协议。

图5展示了根据本发明的实施例的系统内的信任边界。在图5中,已经建立了飞地510用于第一应用程序的安全执行。EPC 500中示出了属于飞地510的代码/数据页面的四个子集。代码页面的代表飞地设备工作负载(EDW)的第一子集512可以包含有待由设备520的LE 522执行的指令。通过这些指令,LE 522可以访问数据页面的第二子集514但不可以访问数据页面的第三子集516。可以通过接口插件524、IOMMU 550和DTCS 526来提供LE 522对子集512和514的访问。执行第一应用程序的处理器核530可以通过执行代码页面518的第四子集中的指令来访问子集514和子集516两者。其他核(比如核532)或设备(比如设备560)不可以访问子集512、514、516、或518中的任何一个。

同样,在图5中,已经建立了飞地540用于第二应用程序的安全执行。代码/数据页集合542属于飞地540,并且可以被处理器核532访问,从而执行所述第二应用程序。其他核(比如核530)或设备(比如设备520)不可以访问集合542。

在实施例中,可以使用具有不同级别的信任策略来实现图5中所展示的信任边界。第一级别可以被定义为允许访问所有飞地,从而使得可以在系统中实现安全处理环境体系结构。例如,可以允许系统的访问控制硬件(包括IOMMU 132的访问控制硬件和接口插件140的访问控制单元144)在第一级别中运行。第二级别可以被定义为允许访问一个或多个飞地的所有页面。例如,可以允许核(例如,核530)相对于飞地(例如,飞地510)在第二级别中运行。第三级别可以被定义为允许访问飞地中的页面子集。例如,可以允许设备(例如,设备520)相对于飞地(例如,飞地510)在第三级别中运行。第四级别可以被定义为其中可能不存在对飞地的访问。例如,设备(例如,设备560)可以在第四级别中运行。

在实施例中,借助页面大小(例如,4KB)的粒度来定义访问控制;然而,其他方法也是可能的。在实施例中,访问控制被定义为使得具体DEVGRP和具体飞地中的每个设备具有对飞地页面的相同访问许可;然而,其他方法也是可能的。

在实施例中,访问控制的实现方式可以包括针对每个EPC页面为数据结构字段分配值,并且至少部分地使用这些值来判定允许还是拒绝访问。可以针对EPC中的每个物理页面为第一字段(EPC页面帧号(EPFN))分配唯一值。在实施例中,用于4KB页面的EPFN大小可以是32位以支持16太字节的EPC大小。第二字段(群组访问控制向量(GRPACV))可以针对已定义数量的DEVGRP(例如,64)中的每一个包括一位。在用于具体EPC页面的GRPACV中,如果这个EPC页面在一定条件下可以被这个DEVGRP中的设备访问,则可以设定与具体DEVGRP相对应的位。

图6展示了根据本发明的实施例的一种用于对安全处理环境的设备访问控制的方法600。在实施例中,接口插件(例如,接口插件140)中的访问控制状态机可以根据方法600运行从而判定是否允许LE访问飞地。访问控制状态机的输入在表1中加以限定,并且可以由(例如,配置单元142中的)接口插件内或与其相关联的配置、状态、和/或控制寄存器提供,所述接口插件可以通过硬件、固件、或软件设定。

表1

在方法600的框610中,可以读取或接收输入值,比如表1中所陈述的那些。在框620,关于LE是否处于飞地模式但试图执行飞地外部的代码作出判定。若是,则生成故障;若否,则方法600继续至框630。

在框630中,关于LE是否处于飞地模式并试图访问飞地作出判定。若是,则方法600继续框640;若否,则方法600继续框670。

在框640中,线性地址被转换成EPC内的物理地址。在框650中,关于转换是否导致故障作出判定。若否,则方法600继续框660。

在框660,关于访问是否是针对在匹配的飞地内具有匹配的地址并具有正确许可的规则(例如,代码/数据)页面作出判定。若是,则允许所述访问;若否,则生成故障。

在框670中,线性地址被转换成EPC外部的物理地址。在框680中,关于转换是否导致故障作出判定。若否,则许可所述访问。

在实施例中,方法600的运行所导致的有效转换可以被例如缓存在TLB148中(或在IOMMU 132中的TLB中,条件是它支持对多个LE的有效性检验)。

图7A、图7B、图7C、和图7D展示了根据本发明实施例的一种用于设备进入或离开安全处理环境的方法700。在实施例中,方法700可以代表接口插件(例如,接口插件140)与IOMMU 132(例如,IOMMU 132)之间的子事务之间的事务协议的一部分。在方法700中,其工作负载将被卸载至设备的应用程序中的指令可以由这个设备的LE来执行。这些指令可以包括进入安全处理环境的指令(例如,EENTER)和离开安全处理环境的指令(例如,EEXIT)。在图7A、图7B、图7C、和图7D中,所述应用程序由软件702代表,所述LE被表示为LE 704,与所述LE相关联的接口插件被表示为TIP 706,并且所述系统的IOMMU被表示为IOMMU 708。

如图7A中所示,在方法700的框710,LE 704从软件702接收EENTER指令,其中,DTCS的线性地址(LA)作为参数。在图7A和图7B的框712中,响应于接收到EENTER指令,LE 704向TIP 706转发相应的EENTER消息。

如图7B中所示,在框714中,响应于接收到EENTER消息,TIP 706向IOMMU 708发送EPC_XLATE消息以请求将DTCS LA转换成物理地址(PA)并验证所述PA在所述EPC中。在框716中,IOMMU 708用EPC_XLATE_COMP消息作出响应以指示所述转换的完成并返回所述物理地址。在框718中,TIP 706将DTCS页面的EPFN记录在CR_DTCS_EPFN中。

在框720中,TIP 706针对DTCS在EPCM条目上获得读取器锁定。在框722中,DTCS页面的EPCM页面类型被验证为PT_DTCS。在框724中,对DTCS所属的飞地的SECS进行定位。在框726中,TIP 706将SECS页面的EPFN记录在CR_SECS_EPFN中。在框728中,对有待进入的飞地的SECS进行更新。在框730中,DTCS被标记为有源的。在框732中,TIP 706设定CR_ENCLAVE_MODE以指示LE 704已进入飞地模式。

返回图7A,在框734中,TIP 706用EENTER_COMP消息对LE 704作出响应,从而指示EENTER事务的完成。

在框736中,LE 704开始执行工作负载,所述工作负载将包括LE 704与TIP 706之间的一系列事务,其中,通过提供有待访问的页面的EPFN来访问EPC页面。例如,在如图7C中所示的框738中,LE 704向TIP 706发送MEM_ACCESS消息。在框740中,响应于所述MEM_ACCESS消息,TIP 706可以检查内部TLB以进行缓存地址转换。在框742中,同样响应于所述MEM_ACCESS消息,TIP 706与IOMMU 708之间发生访问特定交换,之后,在框744中,TIP 706向LE 704发送MEM_ACCESS_COMP消息以指示MEM_ACCESS事务的完成。

返回图7A,在框746中,LE 704发送EENTER_COMP消息来指示EENTER指令的完成。

然而,如果在工作负载执行过程中的任何时间处检测到错误,则TIP 706和LE 704返回故障并退出所述安全处理环境。

图7D展示了TIP 706状态机响应于LE 704退出飞地的动作。在框748中,LE 704向TIP 706发送EEXIT消息。在框750中,响应于所述EEXIT消息,TIP 706可以检查内部TLB以进行缓存地址转换。在框752中,同样响应于所述EEXIT消息,TIP 706向IOMMU 708发送消息以针对正被退出的飞地更新SECS。在框754中,TIP 706将CR_ENCLAVE_MODE清零以指示LE 704已退出飞地模式。在框756中,TIP 706向LE 704发送EEXIT_COMP消息以指示EEXIT事务的完成。

在本发明的各实施例中,方法400、600、和700可以按不同顺序执行,其中,所展示的框被组合或被省略、添加附加的框,或者组合重新排序的、组合的、省略的、或附加的框。此外,本发明的方法实施例并不限于方法400、方法600、方法700、或其变体。在此未描述的许多其他方法实施例(以及装置、系统、和其他实施例)在本发明的范围内是可能的。

本发明的实施例或实施例的部分如上所述可以存储在任何形式的机器可读介质上。例如,方法400、600和/或700中的全部或一部分可以用由处理器110、接口插件140和/或设备150可读的介质上所存储的软件或固件指令具体化,所述指令当被处理器110、接口插件140和/或设备150执行时致使处理器110、接口插件140和/或设备150执行本发明的实施例。同样,可以用机器可读介质上所存储的数据对本发明的方面进行具体化,其中,所述数据代表可用于制造处理器110、接口插件140和/或设备150的全部或一部分的设计或其他信息。

因而,已经描述了用于设备与安全处理环境之间接口连接的发明实施例。虽然已经描述并在附图中示出了某些实施例,但应当理解的是,此类实施例仅是说明性的并且不限制宽泛的发明,并且本发明不限于所示和所描述的特定构造和安排,因为在研究本公开时本领域普通技术人员将想到各种其他修改。在发展迅速且无法轻易预见进一步改进的此技术领域中,在不违背本公开的原理或所附权利要求书的范围的情况下,在技术进步的帮助下,所公开的实施例在安排和细节上可轻易更改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1