1.13 可信执行环境
可信执行环境(Trusted Execution Environment,TEE)是CPU内的一个安全区域,运行在一个独立的环境中,并且与操作系统并行运行。CPU确保TEE中代码和数据的机密性和完整性都得到保护。TEE作为隔离的执行环境提供安全性功能,如隔离执行。一般而言,TEE通过同时使用硬件和软件来保护数据和代码,TEE比操作系统更加安全。在TEE中运行的受信任应用程序可以访问设备主处理器和内存的全部功能,硬件隔离负责保护这些组件不受主操作系统中运行的用户安装应用程序的影响。
TEE具有自身的执行空间,它所能访问的软硬件资源与操作系统是分离的。TEE为授权安全软件或可信安全软件(Trust App)提供了安全的执行环境,保护了其数据和资源的保密性、完整性和访问权限。TEE在启动时为了保证整个系统的安全,从系统引导启动开始逐步验证以保证TEE平台的完整性。当设备加电后,TEE首先加载ROM中的安全引导程序,并利用根密钥验证其完整性。然后,该引导程序进入TEE初始化阶段并启动TEE内置的安全操作系统,逐级核查安全操作系统启动过程中的各个阶段的关键代码以保证安全操作系统的完整性,同时防止未授权或经过恶意篡改的软件的运行。安全操作系统启动后,运行非安全世界的引导程序并启动普通操作系统。至此基于信任链,TEE完成了整个系统的安全启动,能够有效抵御TEE启动过程中的非法篡改、代码执行等恶意行为。
目前的TEE在不同CPU上有不同的实现方案,在Intel的CPU上实现TEE的技术方案叫SGX,全称为Intel Software Guard Extension,在ARM架构的CPU上实现TEE的技术方案叫TrustZone,但是由于ARM架构的开放性,各大厂商在进行定制的时候会采用不同的方案,如高通的QSEE、华为的TEE OS等。
TEE与普通操作系统之间的接口称为TEE Client API,在2010年GlobalPlatform对其进行了标准化,可信应用程序与可信操作系统之间的互操作接口(TEE Internal API)在2011年完成了标准化。
在区块链场景下,使用TEE的模块主要集中在智能合约、预言机、共识模块和数字钱包中。智能合约和预言机期望通过使用TEE来保证数据的安全性和隐私性,如在蚂蚁链中利用TEE技术将合约引擎和必要的交易处理及密码学运算单元集成封装在TEE中,配合安全协议流程达到隐私保护的目的,具体隐私保护结构如图1-9所示。在共识模块中,则期望通过TEE对特定信息的保护来加速共识流程,如浙江大学百人计划研究员刘健提出的FastBFT就使用了TEE来加速实用拜占庭共识算法。在数字钱包中,则利用TEE实现密钥的生成与安全存储。
图1-9 蚂蚁链中的隐私保护结构