Android可信执⾏环境TEE最全介绍
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完成功能。
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内存
密钥安全存储机制:密钥使⽤认证性、完整性和机密性。
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安全配置
参考
⼩⽶
安全启动
安全启动是防⽌在启动过程中加载并运⾏未经授权应⽤的安全机制。启动程序通过签名公钥验证软件的数字签名,确保软件的可信性和完整性。只有通过签名校验的镜像⽂件才可以加载运⾏,这些⽂件包括启动引导程序、内核镜像、基带固件等镜像⽂件。在启动过程的任何阶段,如果签名验证失败,则启动过程会被终⽌。
⽚内引导程序(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 侧应⽤才能访问。
密钥管理
Android 密钥库可以防⽌从应⽤进程和 Android 设备中整体提取密钥材料,从⽽避免了在 Android 设备之外以未经授权的⽅式使⽤密钥材料。其次,Android 密钥库可以让应⽤指定密钥的授权使⽤⽅式,并在应⽤进程之外强制实施这些限制,从⽽避免了在 Android 设备上以未经授权的⽅式使⽤密钥材料。如果 Android 操作系统受到攻击或者攻击者可以读取设备内部存储空间,攻击者也许能在 Android 设备上使⽤任意应⽤的 Android 密钥库,但⽆法从设备上提取这些数据。
TEE应⽤场景
TEE ⽀持很多⽤途,例如移动⽀付、数字版本保护DRM、安全银⾏、多重⾝份验证、设备重置保护、抗重放攻击的持久存储、安全 PIN 和指纹处理、⼈脸识别,甚⾄还能⽤于恶意软件检测。
⼈脸识别
系统在摄像头和 TEE 之间建⽴安全通道,⼈脸图像信息通过安全通道传递到TEE 中,REE 侧⽆法获取。系统对⼈脸图像采集、特征提取、活体检测、特征⽐对等处理完全在TEE 中,基于 TrustZone 进⾏安全隔离,外部的⼈脸框架只负责⼈脸的认证发起和认证结果等数据,不涉及⼈脸数据本⾝。
⼈脸特征数据通过TEE 的安全存储进⾏存储,采⽤⾼强度的密码算法对⼈脸特征数据进⾏加解密和完整性保护。外部⽆法获取到加密⼈脸特征数据的密钥,保证⽤户的⼈脸特征数据不会泄露。外部第三⽅应⽤⽆法获取到⼈脸特征数据,也不能将⼈脸特征数据传出TEE。系统不会将加密的⼈脸数据或者未经加密的⼈脸数据发送或备份到包括云端在内的任何外部存储介质。
指纹识别