TEE简介

TEE的全称trusted execution environment,它是移动设备(智能手机、平板电脑、智能电视)CPU上的一块区域。这块区域的作用是给数据和代码的执行提供一个更安全的空间,并保证它们的机密性和完整性。
在这里插入图片描述

TEE发展历程

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架构

TEE软件架构的主要目标是使能TA提供隔离和可信能力,可通过在REE侧运行CA(Client App)程序调用实现。以下为GP规范的的各模块,但是具体接口会和TEE供应商有所差别,有供应商未完全遵循GP规范的话,需要使用其自建的SDK完成功能。
TEE系统架构GP规范文档
可信应用更新OTRP协议规范
TEE client API规范文档
REE(Rich Execution Environment):是所有移动设备通用的环境,运行通用的 OS(Operating System),例如 Android,IOS 系统等。
TA: TA 是 Trusted Application 的缩写,通常运行在 TEE 环境下的应用简称为 TA。
CA: 是 Client Application 的缩写,在描述TEE时,通常运行在 REE 环境下的应用简称为 CA,区别与证书办法的CA机构。
TrustZone:基于 ARM 架构的移动平台芯片理论上都支持 TrustZone。TrustZone 是独立的一个安全的世界,基于 TrustZone 可实现 TEE。
TEE Client API:使REE侧CA(Client App)应用可以使用提供接口与TEE侧TA应用数据交互。
REE Communication Agent:提供REE和TA交互通道。
TEE Internal core API:TEE侧TA调用TEE能力的接口。
TEE Communication Agent:同REE Communication Agent协同工作,保证信息安全的在CA(Client App)和TA传递。在这里插入图片描述
TEE系统架构
在这里插入图片描述
TEE软件架构

TEE特性

硬件机制保护:TEE隔离于REE、只能通过特定的入口与TEE通信。

高性能:TEE运行时使用CPU的全部性能(独占)

安全通信机制:TEE可以访问REE的内存、REE无法访问受硬件保护的TEE内存

GlobalPlatform(GP)标准化:可在多种平台上移植;TEE中的所有组件模块先定义安全,再考虑性能;TEE中的可执行代码在执行前先要被验证(validate)GlobalPlatform(GP,https://globalplatform.org/)是跨行业的国际标准组织,致力于开发、制定并发布安全芯片的技术标准,以促进多应用产业环境的管理 及其安全、可互操作的业务部署。

密钥安全存储机制:密钥使用认证性、完整性和机密性。

TEE的保护机制: TEE中可以同时运行多个Trusted Application(TA),GP规范定义了TA间相互隔离,每个TA加密的内容只能当前TA能解密并访问。

TEE必要性

以指纹识别为例:

在未被Root的设备上,应用开发只能接触到Framework的生物识别认证API层级。

在一个被Root的设备上,威胁来自于REE所有的方面。实现Framework API的系统底层实现服务不能确定安全。Android Kernel层的内核驱动不能确定安全。即右侧红色部分。

Android系统被Root后,只有TEE环境可信,相关关键、敏感数据、密钥数据等都在TEE环境安全加密存储。相关涉及TEE的业务在和TEE中TA交互时,TA可检测到Android环境被Root从而决定是否继续执行逻辑。
在这里插入图片描述
指纹识别框架图

TEE安全配置

参考华为EMUI安全白皮书
小米MIUI安全白皮书

安全启动

安全启动是防止在启动过程中加载并运行未经授权应用的安全机制。启动程序通过签名公钥验证软件的数字签名,确保软件的可信性和完整性。只有通过签名校验的镜像文件才可以加载运行,这些文件包括启动引导程序、内核镜像、基带固件等镜像文件。在启动过程的任何阶段,如果签名验证失败,则启动过程会被终止。
片内引导程序(ROM SoC Bootloader)执行基本的系统初始化,从 Flash 存储芯片中加载二级引导程序(Flash Device Bootloader)。使用保存在主芯片内部 Fuse 空间(熔丝工艺,一旦熔断不可更改)的公钥哈希对公钥进行验证后,片内引导程序再利用公钥对二级引导程序镜像的数字签名进行校验,成功后运行二级引导程序。二级引导程序加载、验证和执行下一个镜像文件。以此类推,直到整个系统启动完成,从而保证启动过程的信任链传递,防止未授权程序被恶意加载运行。

在这里插入图片描述

安全存储RPMB

RPMB位于EMMC一个分区,为安全存储区域。仅有4-16M。安全存储功能是基于TEE安全 OS 提供的安全文件系统(SFS)实现的安全功能,可以安全存储密钥、证书、个人隐私数据和指纹模板等。
TEE 中运行的 TA(Trusted Application,可信应用)可通过安全存储的API 来将数据加密并存放于安全文件系统中,加密后的数据只有 TA 本身能够访问,外部应用无法访问。
安全存储采用 AES256 硬件的加解密,兼容 GP TEE 标准规范。安全存储的密钥通过设备 HUK 进行派生,密钥不出设备 TrustZone 安全区,经密钥加密过的数据安全区外部无法解密。
基于 Flash 的 RPMB(Replay Protected Memory Block)分区功能来保护一些系统数据不会被非法删除和访问。RPMB 由 TEE 直接进行安全管理,采用 HUK 派生的密钥进行绑定,只有TEE才能访问 RPMB 分区保护的内容,REE 侧不提供访问的接口,RPMB 对于数据的存储通过内置的计数器和密钥、HMAC 校验机制防止重放攻击,确保数据不被恶意覆写或篡改。

GP TEE中可信存储定义

每个TA可以访问一组可信存储空间,由32位存储标识符标识。

目前GP版本的规范定义了一个信任存储空间对于每个TA,是自己的私有存储空间。这个存储空间的对象只能是生成对象的TA所访问,其他TA是不可见的。其他存储标识符可以定义在规范的未来版本中,例如: 存储空间共享于多个TA或用于启动实体和运行时TA之间的通讯。
RPMB(Replay Protected Memory Block),作用在于存放机密数据。由于访问需要密钥,所以可以防止未授权的访问并且在每次的数据写入时都需要验证Write Counter寄存器值,这个寄存器值每写入成功便会加1,如果是黑客截取写入报文再进行重放攻击,由于counter已经更新了写入会无效。RPMB特点是非安全世界不可见,使用场景是安全性要求高、容量小,可以有效防止回滚和重放攻击。

安全可信UI(TUI)

在 REE 侧负责的应用环境中,应用显示的支付金额或输入的密码可能被恶意应用劫持,iTrustee 安全 OS 提供了无法截屏的 TUI (Trusted UI,可信 UI)显示技术(符合 GP 规范)来保护的 TA 显示的内容,采用与外部隔离的显示。
TUI 特性可以保证显示给用户的信息不会被任何 REE 侧的软件或者 TEE 侧未授权的应用截取,修改,遮盖,显示的信息不会传递到 REE 侧,同时使用权限控制保证只有授权的 TEE 侧应用才能访问。
可信UI规范文档

密钥管理

Android 密钥库可以防止从应用进程和 Android 设备中整体提取密钥材料,从而避免了在 Android 设备之外以未经授权的方式使用密钥材料。其次,Android 密钥库可以让应用指定密钥的授权使用方式,并在应用进程之外强制实施这些限制,从而避免了在 Android 设备上以未经授权的方式使用密钥材料。如果 Android 操作系统受到攻击或者攻击者可以读取设备内部存储空间,攻击者也许能在 Android 设备上使用任意应用的 Android 密钥库,但无法从设备上提取这些数据。
在这里插入图片描述

TEE应用场景

TEE 支持很多用途,例如移动支付、数字版本保护DRM、安全银行、多重身份验证、设备重置保护、抗重放攻击的持久存储、安全 PIN 和指纹处理、人脸识别,甚至还能用于恶意软件检测。

人脸识别

系统在摄像头和 TEE 之间建立安全通道,人脸图像信息通过安全通道传递到TEE 中,REE 侧无法获取。系统对人脸图像采集、特征提取、活体检测、特征比对等处理完全在TEE 中,基于 TrustZone 进行安全隔离,外部的人脸框架只负责人脸的认证发起和认证结果等数据,不涉及人脸数据本身。
人脸特征数据通过TEE 的安全存储进行存储,采用高强度的密码算法对人脸特征数据进行加解密和完整性保护。外部无法获取到加密人脸特征数据的密钥,保证用户的人脸特征数据不会泄露。外部第三方应用无法获取到人脸特征数据,也不能将人脸特征数据传出TEE。系统不会将加密的人脸数据或者未经加密的人脸数据发送或备份到包括云端在内的任何外部存储介质。在这里插入图片描述

指纹识别

指纹传感器和 TEE之间建立安全通道,指纹信息通过安全通道传递到 TEE 中,REE 侧无法获取。指纹图像信息采集、特征提取、活体检测、特征比对等处理完全在TEE中,基于 TrustZone 进行安全隔离,REE 的指纹框架只负责指纹的认证发起和认证结果等数据,不涉及指纹数据本身。指纹特征数据通过TEE 的安全存储进行存储,采用高强度的密码算法进行数据加密和完整性保护。外部无法获取到加密指纹数据的密钥,保证用户的指纹数据不会泄露。外部第三方应用无法获取到指纹数据,也不能将指纹数据传出TEE。系统不会将任何指纹数据发送或备份到包括云端在内的任何外部存储介质。

在这里插入图片描述

支付

为保证支付安全,在硬件层面,系统提供支付指纹信息的硬件加密与银行卡信息的安全存储,实现支付信息的物理隔离;在系统软件层面,发起支付时系统 会自动检测支付环境是否安全可靠。同时,付款交易过程只在用户、商户和发卡机构之间发生,云端服务在支付过程中并不会收集用户的任何交易信息。

安全元件:安全元件(Secure Element,SE)是业内公认的、运行 Java Card 平台的认证芯片,它符合金融行业对电子支付的强制要求。在这里插入图片描述

数字版本包含DRM

基于标准的 Android 版本,对接 Android 标准接口,所有业务(除参考应用外)运行在 vendor 及 TEE 环境中,总体安全架构图如下:
ChinaDRM 作为一个标准的 DRM 组件集成 Android 版本中,其中 plugin 对接Android DRM 标准框架,是 ChinaDRM 集成到 Android 框架的适配层,该模块通过 ChinaDRM Function API 调用 ChinaDRM CA 模块和 ChinaDRM TA 交互,实现DRM 功能。ChinaDRM TA 是 TEE 侧负责 ChinaDRM 具体业务的功能性 TA,实现证书在线下载、许可证解析、策略处理、码流解密功能,其中许可证解析采用 ChinaDRM 统一客户端;ChinaDRM KEYTA 为芯片相关的烧写 TA,是 ChinaDRM 证书和密钥管理的 TA,该 TA 会提供密钥操作的接口。在这里插入图片描述

TEE供应商

在这里插入图片描述
参考文献:

  1. https://www.jianshu.com/p/15602021acc1
  2. https://www.pianshen.com/article/1156672868/
  3. https://www.secrss.com/articles/13922
  4. https://mp.weixin.qq.com/s?__biz=MzI1Mjg2NjkwOQ==&mid=2247487353&idx=1&sn=c3cc5a316779a5c1a3d271cd674067f3&chksm=e9dc774bdeabfe5de732d78013a7c64ec7643981b21dc191c69ae390e4b1b6025348813c639c&scene=21#wechat_redirect
  5. https://www.synopsys.com/blogs/software-security/cve-2020-7958-trustlet-tee-attack/
  6. EMUI安全白皮书
  7. MIUI安全白皮书
  8. GP规范文档(https://download.csdn.net/download/caizehui/15709687,https://download.csdn.net/download/caizehui/15709673,https://download.csdn.net/download/caizehui/15709656,https://download.csdn.net/download/caizehui/15709619)
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐