01-TEE 简介
出现背景
从数据生命周期来分析:
At-Rest:一般会把数据存放在硬盘、闪存或其他的存储设备中。保护 At-Rest 状态的数据有很多方法,比如对文件加密后再存放或者对存储设备加密。
In-Transit:是指通过公网或私网把数据从一个地方传输到其他地方,用户可以在传输之前对文件加密或者采用安全的传输协议保证数据在传输中的安全,比如 HTTPS、SSL、TLS、FTPS 等。
In-Use:是指正在使用的数据。即便数据在传输过程中是被加密的,但只有把数据解密后才能进行计算和使用。
一般程序在运行时,其大部分信息(包括程序代码,中间变量的值)都需要放到内存里。而传统的内存是有办法被扫描并修改的:例如各种游戏修改器。因为程序代码也是要放到内存里的,所以甚至代码也可以被更改。
也就意味着,如果数据在使用时没有被保护的话,仍然有数据泄露和被篡改的风险。
富执行环境(Rich Execution Environment,REE)
REE 通常就是指运行着 Android、IOS、Linux 等系统的智能设备,其特点是操作系统提供系统安全性:
应用隔离,各个应用程序只能访问自己的数据
权限管理,普通用户和应用程序对系统数据的访问受限
通用,功能丰富,但应用程序和操作系统均有可能引入漏洞
开放,可扩展
但这样的系统,由于 OS 代码极其庞大和复杂,存在系统漏洞也是难免。一个系统发布之后,经常会收到系统安全补丁,就是因为系统过于复杂,很难进行全面的安全检验和认证。
此外,这些系统还有一个很大的漏洞,那就是系统中的特权用户(比如 Android、Linux 系统的 root)。特权用户拥有所有数据的访问权,这就意味着如果黑客攻击系统获得特权用户权限,那整个系统就毫无秘密可言。目前的攻击手段一般是通过应用程序的漏洞,获取特权用户权限,进而控制整个系统。
虚拟化技术实现隔离
虚拟化技术是指在同一台计算机上通过 hypervisor 虚拟出多个包括完整虚拟机系统镜像,每个虚拟机拥有独立的操作系统和硬件资源。
从图中可以看到,这种虚拟方案依然是基于软件的隔离,缺乏硬件安全性。整个系统的安全突破口在于 Hypervisor。Hypervisor 可以访问所有 OS 的数据,进而可以访问所有 App 的数据,恶意软件可通过控制 hypervisor 窃取各种密钥。当然这种架构最大的问题还在于系统资源消耗大,一般用在服务器上。
安全元件(Secure Element,SE)实现安全平台
SE 通常以芯片或 SD 卡等形式提供。为防止外部恶意解析攻击,保护数据安全,在芯片中具有加密/解密逻辑电路。
SE 具备极强的安全等级,但对外提供的接口和功能极其有限。首先 CPU 性能极低,无法处理大量数据,其次 SE 与智能设备通常采用非常缓慢的串口连接。SE 的应用场景有限,主要关注于保护内部密钥,一般用于对安全要求很高的场景。
可信执行环境(Trusted Execution Environment,TEE)
为了给移动设备提供一个安全的运行环境, ARM 从 ARMv6 的架构开始引入了 TrustZone。TrustZone 将 CPU 的工作状态分为了正常世界状态(Normal World Status, NWS)和安全世界状态(Secure World Status, SWS)。
支持 TrustZone 技术的芯片提供了对外围硬件资源的硬件级别的保护和安全隔离。当 CPU 处于正常世界状态时,任何应用都无法访问安全硬件设备,也无法访问属于安全世界状态下的内存、缓存(Cache)以及其他外围安全硬件设备。
有了两个世界的划分,我们就可以将前面的 REE 和 SE 的模式结合起来。一般的操作系统(如Linux、Android、Windows等)以及应用运行在正常世界状态中,提供丰富的系统资源,即为 REE 。
而将 SE 实现的安全功能放到安全世界中,但并不需要增加额外的硬件,而是通过可信任的操作系统以及上层的可信应用(Trusted Application, TA)实现。可信任的操作系统以及上层的可信应用(Trusted Application, TA)运行于安全世界状态,也就是可信执行环境(TEE)。
需要指出的是,根据 GlobalPlatform 组织的抽象和标准化,TEE 与具体的技术实现无关,并不和 ARM 的 TrustZone 绑定。
可信执行环境带来的有点显而易见:
解决了安全元件(SE)的性能问题,因为 TEE 运行在智能设备的 CPU 上,并且在安全世界状态下,独占 CPU, 充分使用CPU的全部性能。
受硬件机制保护,TEE 隔离于 REE,REE 只能通过特定的入口与 TEE 通信。这样处于正常世界状态中的 Linux 即使被 root 也无法访问安全世界状态中的任何资源,包括操作安全设备、访问安全内存数据、获取缓存数据等。这很像一个保险箱,不管保险箱的外在环境是否安全,其内部的物件都有足够的安全性。
TEE 中可以同时运行多个 Trusted Application(TA),相对于完全元件(SE)只提供单一功能,通用性比较好。
快速通信机制, TEE 可以访问 REE 的内存,反之则不行。
在真实环境中,可以将用户的敏感数据保存到 TEE 中,并由可信应用(TrustedApplication, TA)使用重要算法和处理逻辑来完成对数据的处理。当需要使用用户的敏感数据做身份验证时,则通过在 REE 侧定义具体的请求编号(IDentity, ID)从 TEE 侧获取验证结果。验证的整个过程中用户的敏感数据始终处于 TEE 中, REE 侧无法查看到任何 TEE 中的数据。对于 REE 而言, TEE 中的 TA 相当于一个黑盒,只会接受有限且提前定义好的合法调用,而至于这些合法调用到底是什么作用,会使用哪些数据,做哪些操作在 REE 侧是无法知晓的。如果在 REE 侧发送的调用请求是非法请求, TEE 内的 TA 是不会有任何的响应或是仅返回错误代码,并不会暴露任何数据给 REE 侧。
TEE 提供介于普通 REE 和 SE 之间的安全性的框架。某些小额的支付、DRM、企业 VPN 等,所需要的安全保护强度并不高,还不需要一个单独的 SE 来保护,但是又不能直接放在 REE 中,因为后者的开放性使其很容易被攻击。所以对于这类应用, TEE 则提供了合适的保护强度,并且平衡了成本和易开发性。
TEE 的技术特点
2009 年 OMTP(OpenMobile Terminal Platform)组织在《OMTP Advanced Trusted Environment OMTP TR1 V11》中明确定义TEE的相关概念和规范,定义 TEE 为 一组软硬件组件,可以为应用程序提供必要的设施
,相关实现需要支持两种安全级别中的一种:
安全界别(Profile 1)目标要求可以抵御软件级别的攻击。
安全界别(Profile 2)目标要求可以同时抵御软件和硬件攻击。
针对TEE的相关概念及规范定义,各家软、硬件厂商结合自己的基础架构形态具体实现各不相同。虽然在技术实现上存在差异性,但是仍可抽象出TEE的共同技术特点。具体而言,TEE存在以下技术特点:
隔离性:X86架构的隔离机制从Intel 80286处理器开始,Intel提出了CPU的两种运行模式,并且逐步衍生出后来的不同的特权界别,再后来提出了安全区域更小的SGX机制实现可信执行环境TEE。同样的,ARM架构通过TrustZone技术实现了相关软硬件的隔离性,实现安全世界与非安全世界的隔离。TEE通过隔离的执行环境,提供一个执行空间,该空间有更强的安全性,比安全芯片功能更丰富,提供其代码和数据的机密性和完整性保护。
软硬协同性:虽然标准定义可以通过软件方式或硬件方式实现TEE,但实际生产场景下,行业内更多通过软硬结合的方式进行安全性的保障与支持。
富表达性:TEE与单纯的安全芯片或纯软件的密码学隐私保护方案相比支持的上层业务表达性更强,由于只需要定义好业务层面隐私区域和非隐私区域的逻辑划分,而不会对定义隐私区域内的算法逻辑的语言有可计算性方面的限制(图灵完备的)。同时由于TEE已经提供了”安全黑盒“,安全区域内数据无需进行密态运算,从而支持更多的算子及复杂算法。
TEE的优劣势
TEE的优势
可信区域内可支持多层次、高复杂度的算法逻辑实现。
运算效率高,相较于明文计算仅有3-4倍损耗,相比MPC及联邦学习100+倍的运算损耗具有一定的优势。
能够应对恶意攻击模型下的攻击手段,通过可信度量的方式保证TEE的运行逻辑的可信及可度量性。
TEE的劣势
方案实现依赖底层硬件架构。
更新升级需要同步进行软硬件升级。
不同厂商的TEE技术互联互通方面有待加强形成更统一的生产级行业标准与事实标准。