Intel SGX 技术初探

最近公司需要开发一款使用intel 的移动终端,需要用到SGX技术,特此将调研和整理的相关资料放置于下,欢迎交流。

一、SGX技术背景

1.1 SGX技术定义

SGX全称Intel Software Guard Extensions,顾名思义,其是对因特尔体系(IA)的一个扩展,用于增强软件的安全性。这种方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作封装在一个enclave中,保护其不受恶意软件的攻击,特权或者非特权的软件都无法访问enclave,也就是说,一旦软件和数据位于enclave中,即便操作系统或者和VMM(Hypervisor)也无法影响enclave里面的代码和数据。Enclave的安全边界只包含CPU和它自身。SGX创建的enclave也可以理解为一个可信执行环境TEE(Trusted Execution Environment)。不过其与ARM TrustZone(TZ)还是有一点小区别的,TZ中通过CPU划分为两个隔离环境(安全世界和正常世界),两者之间通过SMC指令通信;而SGX中一个CPU可以运行多个安全enclaves,并发执行亦可。当然,在TZ的安全世界内部实现多个相互隔离的安全服务亦可达到同样的效果。
1.2 技术目标

(1)允许应用开发者保护敏感信息不被运行在更高特权等级下的欺诈软件非法访问和修改。

(2)能够使应用可以保护敏感代码和数据的机密性和完整性并不会被正常的系统软件对平台资源进行管理和控制的功能所扰乱。

(3)使消费者的计算设备保持对其平台的控制并自由选择下载或不下载他们选择的应用程序和服务。

(4)使平台能够验证一个应用程序的可信代码并且提供一个源自处理器内的包含此验证方式和其他证明代码已经正确的在可信环境下得到初始化的凭证的符号化凭证。

(5)能够使用成熟的工具和处理器开发可信的应用软件.

(6)Allow the performance of trusted applications to scale with the capabilities of the underlying application processor.

(7)使软件开发商通过他们选择的分销渠道可以自行决定可信软件的发布和更新的频率。

(8)能够使应用程序定义代码和数据安全区即使在攻击者已经获得平台的实际控制并直接攻击内存的境况下也能保证安全和隐秘。

二、SGX技术硬件实现结构

二、SGX数据类型和指令

三、SGX Enclave的创建
Intel SGX 技术初探_第1张图片
借助Intel处理器的SGX技术,通过CPU的硬件模式切换,系统进入可信模式执行,只使用必需的硬件构成一个完全隔离的特权模式,加载一个极小的微内核操作系统支持任务调度,完成身份认证,并根据认证后的用户身份.
通过使用Intel SGX技术,构建Enclave作为完全隔离的特权模式的具体实现方案如下:
(1)将需要运行的虚拟机镜像加载到磁盘中。
(2)生成加密应用程序代码和数据的秘钥凭证,SGX技术提供了一种较为先进的秘钥加密方法,其秘钥由SGX版本秘钥、CPU机器秘钥和Intel官方分配给用户的秘钥在秘钥生成算法下生成的全新秘钥,使用此秘钥对需要加载的应用程序的代码和数据进行加密。
(3)将需要加载的应用程序或镜像的代码和数据首先加载到SGX Loader加载器中,为将其加载至Enclave做准备。
(4)在Intel SGX 可信模式下动态申请构建一个Enclave。
(5)将需要加载的程序和数据以EPC(Enclave Page Cache)的形式首先通过秘钥凭证解密。
(6)通过SGX指令证明解密后的程序和数据可信,并将其加载进Enclave中,然后对加载进Enclave中的每个EPC内容进行复制。
(7)由于使用了硬件隔离,进一步保障Enclave的机密性和完整性,保障了不同的Enclave之间不会发生冲突更不会允许其互相访问。
(8)启动Enclave初始化程序,禁止继续加载和验证EPC,生成Enclave身份凭证,并对此凭证进行加密,并作为Enclave标示存入Enclave的TCS(Thread Control Structure)中,用以恢复和验证其身份。
(9)SGX的隔离完成,通过硬件隔离的Enclave中的镜像程序开始执行,构建基于SGX技术的硬件隔离完成。

四、SGX Enclave的启动和销毁

在完成构建Enclave后,为保护Enclave在运行结束或挂起后,Enclave中的信息不被泄露,而Enclave中的应用程序可能会因为系统出现中断、异常等出现非正常情况下的退出,为解决此类问题使用SGX技术对可能出现的同步退出和异步退出设置不同的处理方式,在同步退出时,Enclave中运行的数据和代码将会根据自定义的EEE(Enclave Exiting Events) 设置的处理方式进行处理。而如果时异步退出的情况下,Enclave中的数据和运行状态等信息将会秘钥凭证进行加密,并存储到Enclave之外,在下一次启动系统时有选择的恢复中断的Enclave。

五、SGX 创建Enclave可信通信通道

对于SGX Enclave的访问请求,构建检测机制进行限制,首先判断是否启动了Enclave模式,然后判断访问请求是否来源于Enclave内部,如果是则继续判断,如果不是则返回访问失败,然后根据给予生成Enclave前的身份凭证用于检验此访问请求是否来源于同一个Enclave,如果是则通过访问检测,若不是则根据Enclave的身份凭证记录表,更换下一个Enclave身份凭证进行匹配,知道所有的正在运行的Enclave全部匹配完成,若还无法匹配成功,返回访问失败。
六、SGX的远端验证

附录:SGX名词统计

你可能感兴趣的:(Trustzone)