隐私计算:推进数据“可用不可见”的关键技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

➢ 可信执行环境的实现方案

前面的内容中,我们讨论的是TEE的概念和理念。应用上,TEE通常依赖于具体的技术厂商提供的不同实现方案,每个方案通过硬件或软硬件协同实现隔离的机制各不相同,支持的功能特性也有所差异。目前最具代表的、应用最多的技术方案是ARM的TrustZone和Intel的SGX。

● ARM:TrustZone

TrustZone是最早将TEE落地实现的技术方案。

2005年,基于OMTP提出的TEE标准,ARM公司提出了一种基于硬件虚拟化的TEE实现方案,即TrustZone。TrustZone将系统的硬件和软件资源一分为二,划分为两个执行环境——安全环境(Secure World)和普通环境(Normal World),具体架构如图2-14所示。安全环境拥有更高的执行权限,所有需要保密的操作在安全环境执行,如指纹识别、密码处理、数据加解密、安全认证等;而一般的系统操作均在普通环境中执行,且无法访问安全环境,以此实现隔离。

开发者通过使用安全操作系统(secure OS)提供的API开发更多的可信应用来实现特定的安全功能。可信应用的执行需要通过验证建立环环相扣的信任链条,当一个程序想要进入安全环境中时,验证操作系统需要检查其安全性,只有通过检验的程序才能进入安全环境。安全环境和普通环境之间通过一个叫作Monitor Mode的模式进行转换。

图2-14 TrustZone架构示意图

TrustZone是标准TEE实现的一种方案,GP的TEE架构和规范标准都是由TrustZone贡献的。TrustZone的设计思想是利用CPU时间片切换来模拟一个安全环境,再配合外部的安全框架和安全OS来执行应用。只不过在实际落地时,除部署安全OS,TrustZone还需要单独开发部署TA。

● Intel:SGX

SGX全称Software Guard Extension,是Intel在2013年推出的指令集扩展,旨在以硬件安全为强制性保障,不依赖于固件和软件的安全状态,提供用户空间的可信执行环境。2015年8月,Intel第六代酷睿处理器Skylake发布,SGX作为其重要的安全属性第一次正式发布。

SGX是与ARM TrustZone截然不同的另一种机制。简单来说,SGX是一套面向CPU的指令,支持应用创建一个安全区,安全区内的代码通过专门的指令启动。SGX将这个安全区域称为enclave。结合enclave对应的中文含义——飞地,这个概念就有了很直观的理解。

SGX支持应用程序在其地址空间单独划分出一个区域,创建一个enclave,把需要的安全操作全部加载到enclave中,只有enclave内部的代码才能访问enclave所在的内存区域。一旦软件和数据位于enclave中,即便是操作系统也无法影响enclave里面的代码和数据。

enclave的安全边界只包含CPU和它自身。一个CPU可以运行多个enclave, enclave之间相互独立,可以防止单个enclave被破坏后影响整个系统的安全性。也就是说,SGX的整个可信机制都集中在CPU上,因此SGX的部署方式相对灵活简单,只需要在enclave通过代码定义即可部署应用,如图2-15所示。

图2-15 SGX部署示意图

尽管如此,SGX也存在一些不足。首先是SGX无法抵御侧信道攻击。enclave只能保护其内运行的代码,这意味着不受信任的操作系统将保留服务资源管理任务,这为侧信道攻击打开了一个很大的缺口。事实上,最近的研究已经证明了一些针对SGX的侧信道攻击是有效的。其次是enclave与外部环境的交互会增大系统开销。由于enclave自身无法执行系统调用,需要与不可信区域进行交互。在执行系统调用前需要退出enclave,执行完成后再将结果返回到enclave中,而SGX提供给enclave的可使用内存太小,当程序数量和规模增大时,需要频繁换进换出页面,导致系统开销大,也会增加过程中的安全风险。

此外,AMD的安全加密虚拟化方案SEV也是比较著名的TEE实现方案之一,且原理与SGX相似,旨在加密运行在AMD CPU服务器上虚拟机的数据。但是2018年有德国研究团队提出了一个攻破方案,可以绕过SEV,恢复加密虚拟机中的数据。另外,国内的兆芯和海光分别提出了名为TCT和CSV的可信执行环境方案,兆芯的TCT基于可信平台控制模块(TPCM)实现,而海光的CSV则是对硬件虚拟机技术的扩展。具体的技术方案,此处不再赘述,读者可以通过表2-1对上述5种方案进行简要的对比。

表2-1 5种代表性的TEE方案对比

续表