太阳城集团

  • / 24
  • 下载费用:30 金币  

设备与安全处理环境之间的接口.pdf

摘要
申请专利号:

CN201580050334.2

申请日:

2015.10.01

公开号:

太阳城集团CN106716435A

公开日:

2017.05.24

当前法律状态:

实审

有效性:

审中

法律详情: 实质审查的生效IPC(主分类):G06F 21/53申请日:20151001|||公开
IPC分类号: G06F21/53(2013.01)I 主分类号: G06F21/53
申请人: 英特尔公司
发明人: A·纳兰德拉崔瓦迪; S·查博拉; 康晓珠; P·德韦恩; U·萨瓦高恩卡; D·杜汉姆
地址: 美国加利福尼亚州
优先权: 2014.10.17 US 14/517,338
专利代理机构: 上海专利商标事务所有限公司 31100 代理人: 高见
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201580050334.2

授权太阳城集团号:

|||

法律状态太阳城集团日:

太阳城集团2017.06.16|||2017.05.24

法律状态类型:

实质审查的生效|||公开

摘要

公开了用于设备与安全处理环境之间接口连接的发明实施例。在一个实施例中,一种系统包括处理器、设备和接口插件。所述处理器包括指令单元和执行单元。所述指令单元用于接收创建安全处理环境的指令。所述执行单元用于在所述安全处理环境中执行应用程序。所述设备用于执行所述应用程序的工作负载。所述接口插件用于提供接口供所述设备进入所述安全处理环境来执行所述工作负载。

权利要求书

1.一种系统,包括:
处理器,所述处理器包括:
指令单元,所述指令单元用于接收第一指令,其中,所述第一指令用于创建安全处理环
境,以及
执行单元,所述执行单元用于在所述安全处理环境中执行应用程序;
设备,所述设备用于执行所述应用程序的工作负载;以及
接口插件,所述接口插件用于提供接口供所述设备进入所述安全处理环境以执行所述
工作负载。
2.如权利要求1所述的系统,进一步包括为所述安全处理环境预留的存储器空间。
3.如权利要求2所述的系统,其中,所述接口插件包括第一访问控制单元,所述第一访
问控制单元用于控制从所述设备对为所述安全处理环境预留的所述存储器空间的访问。
4.如权利要求3所述的系统,其中,所述第一访问控制单元用于允许所述设备仅访问为
所述安全处理环境预留的所述存储器空间的第一子集。
5.如权利要求4所述的系统,进一步包括第二访问控制单元,所述第二访问控制单元用
于允许所述处理器访问为所述安全处理环境预留的所述存储器空间的所述第一子集和第
二子集。
6.如权利要求5所述的系统,进一步包括输入/输出存储器管理单元,所述输入/输出存
储器管理单元用于将所述设备提供的第一地址转换成第二地址以便访问所述存储器空间。
7.如权利要求6所述的系统,其中,所述接口插件还包括事务单元,所述事务单元用于
实现安全处理环境进入协议。
8.如权利要求7所述的系统,其中,所述事务单元还用于根据所述安全处理环境进入协
议在所述设备与所述接口插件之间发送和接收消息。
9.如权利要求8所述的系统,其中,所述事务单元还用于根据所述安全处理环境进入协
议在所述接口插件与所述输入/输出存储器管理单元之间发送和接收消息。
10.一种方法,包括:
由处理器创建具有预留的存储器空间的安全处理环境;
由所述处理器将应用程序加载至所述预留的存储器空间中;
由设备通过接口插件所提供的接口进入所述安全处理环境;以及
由所述设备在所述安全处理环境中执行所述应用程序的工作负载。
11.如权利要求10所述的方法,进一步包括:由所述接口插件控制从所述设备对所述预
留的存储器空间的访问。
12.如权利要求11所述的方法,其中,控制访问包括允许所述设备访问所述预留的存储
器空间的第一子集。
13.如权利要求12所述的方法,其中,控制访问包括防止所述设备访问所述预留的存储
器空间的第二子集,其中,所述处理器被允许访问所述预留的存储器空间的所述第一和所
述第二子集。
14.如权利要求13所述的方法,其中,进入包括在所述设备与所述接口插件之间发送和
接收消息。
15.如权利要求14所述的方法,其中,进入包括在所述接口插件与输入/输出存储器管
理单元之间发送和接收消息。
16.一种装置,包括:
访问控制单元,所述访问控制单元用于控制从设备对为安全处理环境所预留的存储器
空间的访问;以及
事务单元,所述事务单元用于实现供所述设备进入所述安全处理环境的协议。
17.如权利要求16所述的装置,其中,所述访问控制单元用于允许所述设备仅访问为所
述安全处理环境预留的所述存储器空间的第一子集。
18.如权利要求17所述的装置,其中,处理器被允许访问为所述安全处理环境预留的所
述存储器空间的所述第一子集和第二子集。
19.如权利要求18所述的装置,其中,所述事务单元还用于根据所述安全处理环境进入
协议在所述设备与所述装置之间发送和接收消息。
20.如权利要求19所述的装置,其中,所述事务单元还用于根据所述安全处理环境进入
协议在所述装置与输入/输出存储器管理单元之间发送和接收消息。

说明书

设备与安全处理环境之间的接口

背景技术

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的全部或一部分的设计或其他信
息。

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

关 键 词:
设备 安全 处理 环境 之间 接口
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:设备与安全处理环境之间的接口.pdf
链接地址:http://zh228.com/p-6059645.html

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');