TEE(Trusted Execution Environment),可信执行环境,该环境可以保证不被常规操作系统干扰的计算,因此称为”可信”。简单来说,就是在目前常规操作系统 REE(Rich Execution Environment) 之外,建立一个专门为高安全应用运行的操作系统TEE。一般称REE为Normal World,TEE为Secure World。TEE和REE各种运行独立的操作系统,他们共享设备硬件但又互相隔离,比如把CPU按核或按时间片分配给两个操作系统,TEE和REE各自拥有独立的寄存器、内存、存储和外设等。

TEE通常用于运行高安全需求操作、保护敏感数据、保护高价值数据等,如:
1. 高安操作:如安全键盘密码输入、指纹输入、用户认证、移动支付
2. 保存机密敏感数据:如用户证书私钥的存储、指纹数据存储
3. 内容安全:如DRM(数字版权保护)等

TEE的前身

Open Mobile Terminal Platform (OMTP)于2006年提出一种双系统解决方案:即在同一个智能终端下,除了多媒体操作系统外再提供一个隔离的安全操作系统,这一运行在隔离的硬件之上的隔离安全操作系统用来专门处理敏感信息以保证信息的安全。该方案即TEE的前身。

TEE标准正式提出

OMTP于2009年提出了TEE标准”Advanced Trusted Environment:OMTP TR1”,其中说明了TEE同时包含了硬件和软件,目标是为应用程序提供必要的支持。其中对安全定义了两个级别,第一个级别是可以应对软件方面的攻击,第二个级别是可以同时应对软件和硬件攻击。

TEE的实现

基于OMTP的方案,ARM公司提出了一种硬件虚拟化技术TrustZone及其相关硬件实现方案。TrustZone即是支持TEE技术的产品。作为针对消费电子设备设计的一种硬件架构,其目的是为消费电子产品构建一个安全框架来抵御各种可能的攻击。

TrustZone在概念上将SoC的硬件和软件资源划分为安全(Secure World)和非安全(Normal World)两个世界,所有需要保密的操作在安全世界执行(如指纹识别、密码处理、数据加解密、安全认证等),其余操作在非安全世界执行(如用户操作系统、各种应用程序等),安全世界和非安全世界通过一个名为Monitor Mode的模式进行转换。

TEE当前的标准

GlobalPlatform(全球最主要的智能卡多应用管理规范的组织,简称为GP)从2011年起开始起草制定相关的TEE规范标准,并联合一些公司共同开发基于GP TEE标准的可信操作系统。因此,如今大多数基于TEE技术的Trust OS都遵循了GP的标准规范。

TEE内部运行一个完整而紧凑的操作系统,一般只有10K~10M大小。TEE内部分为内核(TEE Kernel)和多个用户态应用程序TA(Trust Application)。TEE和REE运行环境通过一个名为Monitor Mode的模式进行转换。

TEE的基本安全能力

基于硬件隔离的安全执行环境:TEE提供了基于硬件隔离的安全世界来保护敏感数据的安全和程序正确执行。实现TEE需要将设备的硬件和软件资源全部划分成安全世界和非安全世界,两个世界具有独立的系统资源,包括寄存器、物理内存和外设,不能随意进行数据交换。安全世界中的代码和资源受到严格的访问控制策略保护,非安全世界的进程禁止访问安全世界,以保证存储在安全世界的敏感资源不被非法访问或窃取,能够有效减少安全系统漏洞的披露、外界的攻击和病毒的入侵。

基于信任链的平台完整性:为了保证整个系统的安全,TEE从系统引导启动开始逐步验证以保证TEE平台的完整性。设备加电后,加载ROM中的安全引导程序,并利用根密钥验证其完整性。然后,该引导程序进入TEE 初始化阶段并启动安全操作系统,逐级核查安全操作系统启动过程中的各个阶段的关键代码以保证安全操作系统的完整性,同时防止未授权或经过恶意篡改软件的运行;安全操作系统启动后,运行非安全世界的引导程序并启动普通操作系统。至此基于信任链,完成了移动终端整个系统的安全启动,能够有效抵御TEE启动过程中的非法篡改、代码执行等恶意行为。

基于安全存储的数据机密性:用户的身份、密钥和证书等敏感信息需要高度保护,TEE依靠加密和完整性保护技术来保护数据和密钥。TEE将用户的身份、密钥和证书等敏感信息存储在安全区域中,这些敏感信息只能由TEE授权的可信应用访问或修改,并且TEE为这些敏感信息的操作处理提供了加密和完整性保护机制。同时,可利用TEE中存储的密钥对普通执行环境下用户的信息,如通讯录、短信等敏感信息进行加密,保证存储在普通执行环境下敏感信息的安全性。

PUF

PUF(物理不可克隆函数)是输入/输出关系,由特殊物理系统决定的一种函数,这里的输入/输出也被认为是一对挑战和响应.PUF具有随机和不可克隆两个重要属性,其不可克隆性来源于物理设备生产过程中随机引入的不确定因素. PUF的响应具有一定的噪声,模糊提取器能够帮助PUF消减噪声干扰.PUF的物理优势使其可以隐式存储一段若干字节的秘密数据,该秘密数据不会显式暴露于外界,通过物理特性提取秘密数据的过程无法被其他设备所克隆.相比于普通的非易失性存储器,PUF提供了更高的物理安全特性,可以防止秘密数据直接从存储器中被恶意读出.PUF是一项低成本技术,可以利用当前普通的生产处理工艺快速实现.

Keystone

MIT和UC Berkeley合作开发了另外一个叫Keystone的项目,Keystone在Sanctum的基础上使用了PMP(类似软件中PaX UDEREF)以增强本身的安全性,不论是Sanctum还是Keystone都是开放的设计和实现,也就意味着任何人都可以去审计后门和漏洞。

PSP

AMD直接采用ARM TrustZone技术实现的专用安全处理器。通过与ARM TrustZone 的合作,提供基于 AMD APU 的全新创新型安全解决方案:防病毒和防盗软件、生物特征识别技术、电子商务安全。并非所有应用程序都能利用 TEE 的安全功能。目前只有特定的 AMD A 系列和 E 系列 APU 上配有 AMD 安全处理器,提供部分或全部安全功能。

QSEE

高通QSEE,也就是高通的可信执行环境。可以这样说,除了苹果之外,QSEE是应用最广泛的一个TEE OS。目前使用高通芯片的趋势继续在加强,因此有必要介绍下高通是如何基于Trustzone技术实现自己的可信执行环境。目前所有的手机芯片的可信执行环境都是基于ARM的trustzone技术实现的,苹果如此、高通如此、三星如此、MTK如此、华为麒麟芯片依旧如此。

Sanctum

早在 2016 年,MIT 的研究人员就在 Sanctum 项目中尝试使用 RISC-V 实现 Intel SGX 类似的功能基础PoC,最新版本的Sanctum使用Rocket开放核实现了PUF,attestation以及verifiedboot相关的构建信任链条的核心功能。和Intel SGX的复杂且封闭的设计和实现完全不同,基于 RISC-V 的产品可以做到完全的开放,这让芯片生态颠覆有了可能。

SGX

SGX全称Intel Software Guard Extension,是Intel在2013年推出的指令集扩展, 旨在以硬件安全为强制性保障, 不依赖于固件和软件的安全状态, 提供用户空间的可信执行环境。SGX通过一组新的指令集扩展与访问控制机制, 实现不同程序间的隔离运行, 保障用户关键代码和数据的机密性与完整性不受恶意软件的破坏。

与ARM TrustZone的思想不同,SGX采取的方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作封装在一个enclave(飞地,指在本国境内的隶属于另一国的一块领土。在许多关于SGX的文献中也把enclave翻译为围圈)中,保护其不受恶意软件的攻击,特权或者非特权软件都无法访问enclave。一旦软件和数据位于enclave中,即便操作系统也无法影响enclave里面的代码和数据。Enclave的安全边界只包含CPU和它自身,这一设计避免了基于软件的TEE自身存在软件安全漏洞与威胁的缺陷, 极大地提升了系统安全保障。

TrustZone

为了给移动设备提供一个安全的运行环境,ARM从ARMv6的架构开始引入了TrustZone技术。TrustZone技术将中央处理器(Central Processing Unit,CPU)的工作状态分为了正常世界状态(Normal World Status,NWS)和安全世界状态(Secure World Status,SWS)。支持TrustZone技术的芯片提供了对外围硬件资源的硬件级别的保护和安全隔离。当CPU、处于正常状态时,任何应用都无法访问安全硬件设备,也无法访问属于安全世界状态下的内存、缓存(Cache)以及其他外围安全硬件设备。

在整个系统的软件层面,一般的操作系统(如Linux、Android、Windows等)以及应用运行在正常世界状态中,TEE运行在安全世界状态中,正常世界状态内的开发资源相对于安全世界状态较为丰富,因此通常称运行在正常世界中的环境为丰富执行环境(Rich Execution Environment),而可信任的操作系统以及上层的可信应用(Trusted Application,TA)运行于安全世界状态,运行于安全世界状态中的系统就是前文提到的TEE。

Asylo

https://github.com/google/asylo

Asylo is an open and flexible framework for developing enclave applications. Asylo lets you take advantage of a range of emerging trusted execution environments (TEEs), including both software and hardware isolation technologies.

Open Enclave SDK

https://openenclave.io/sdk/

Build Trusted Execution Environment based applications to help protect data in use with an open source SDK that provides consistent API surface across enclave technologies as well as all platforms from cloud to edge.

OP-TEE

https://www.op-tee.org/
https://github.com/OP-TEE

OP-TEE was initially developed as TEE by ST-Ericsson. In 2013, ST-Ericsson achieved compliance with GlobalPlatform’s qualification, proving the APIs were behaving as expected. After the split in 2013 of Ericsson and STMicroelectronics, TEE became owned by STMicroelectronics.

Teaclave

https://github.com/apache/incubator-teaclave

Apache Teaclave (incubating) is an open source universal secure computing platform, making computation on privacy-sensitive data safe and simple.

Trusted Firmware-A

https://github.com/ARM-software/arm-trusted-firmware

Trusted Firmware-A (TF-A) is a reference implementation of secure world software for Arm A-Profile architectures (Armv8-A and Armv7-A), including an Exception Level 3 (EL3) Secure Monitor. It provides a suitable starting point for productization of secure world boot and runtime firmware, in either the AArch32 or AArch64 execution states.

Trusty

https://source.android.google.cn/security/trusty?hl=zh-cn

Trusty 是一种安全的操作系统 (OS),可为 Android 提供可信执行环境 (TEE)。Trusty 操作系统与 Android 操作系统在同一处理器上运行,但 Trusty 通过硬件和软件与系统的其余组件隔离开来。Trusty 与 Android 彼此并行运行。Trusty 可以访问设备主处理器和内存的全部功能,但完全隔离。隔离可以保护 Trusty 免受用户安装的恶意应用以及可能在 Android 中发现的潜在漏洞的侵害。

https://blog.csdn.net/fengbingchun/article/details/78657188 - TEE(Trusted Execution Environment)简介
https://zhuanlan.zhihu.com/p/88629648 - 浅析ARM TrustZone与Intel SGX
https://cloud.tencent.com/developer/article/1043459 - AMD芯片架构中TEE实现技术之PSP初探
https://www.secrss.com/articles/13922 - 可信执行环境 (TEE) 的定义及实现形态
https://mp.weixin.qq.com/s?__biz=MzI1Mjg2NjkwOQ==&mid=2247488155&idx=1&sn=2de06fc8fbb60fb2804a9988fb825f24 - MIT研究人员正研发基于RISC-V的安全芯片方案
https://mp.weixin.qq.com/s?__biz=MzI1Mjg2NjkwOQ==&mid=2247486919&idx=1&sn=37a6abc60c8ef3104b5e006f7c73f9ee - 高通的可信执行环境—QSEE
https://segmentfault.com/a/1190000037622124 - TEE可信执行环境技术简介
http://www.jos.org.cn/html/2016/6/5000.htm - 基于TrustZone的可信移动终端云服务安全接入方案