TEE-OS 入门第一篇:什么是可信执行环境?
一、为什么我们需要TEE?
1. 传统操作系统的致命缺陷
- 内核权限过高:Linux内核运行在最高特权级,任何一个内核漏洞都能让攻击者获得整个系统的控制权
- 隔离机制薄弱:应用之间、应用与内核之间的隔离都是软件级别的,很容易被绕过
- 敏感数据暴露:你的指纹、支付密码、银行卡信息、加密密钥都存储在普通内存中,内核漏洞可以直接读取
- 恶意软件防不胜防:即使你安装了杀毒软件,它也和恶意软件运行在同一个环境中,无法获得更高的权限
2. 一个真实的攻击场景
- 如果指纹验证在Android系统中进行,攻击者可以通过内核漏洞注入恶意代码
- 恶意代码可以截获你的指纹图像,或者直接绕过验证,伪造支付结果
- 即使银行APP做了再多的加固,也无法对抗一个已经获得root权限的攻击者
3. TEE的诞生
- 非安全世界(NS World):运行Android/Linux系统,也就是我们平时使用的环境
- 安全世界(S World):运行TEE-OS,一个专门为安全设计的极简操作系统
二、什么是TEE?
1. TEE的官方定义
2. TEE vs REE 核心对比
维度 | 富执行环境(REE) | 可信执行环境(TEE) |
运行系统 | Android/Linux | TEE-OS(如OP-TEE、Trustonic) |
隔离级别 | 软件级隔离 | 硬件级隔离 |
特权级别 | EL0(应用)/EL1(内核) | EL0(TA)/EL1(TEE内核)/EL3(安全监控) |
代码量 | 数千万行 | 数万行(极小攻击面) |
设计目标 | 功能强大、灵活 | 绝对安全、极简 |
攻击面 | 极大 | 极小 |
应用场景 | 所有普通应用 | 指纹识别、支付、加密、DRM |
3. TEE的核心价值
三、TEE的三大安全基石
1. 硬件级隔离(最核心)
- CPU的每一个核心都被物理上划分成了两个"虚拟核心"
- 安全世界和非安全世界拥有完全独立的寄存器、内存、中断和外设
- 非安全世界的代码无法访问安全世界的任何资源,甚至无法感知安全世界的存在
- 两个世界之间只能通过一个严格控制的接口(SMC指令)进行通信
2. 最小权限原则
- TEE内核只提供最必要的功能,没有多余的驱动和服务
- 每个可信应用(TA)都运行在自己独立的沙箱中,互相隔离
- TA只能访问自己被授权的资源,无法访问其他TA的数据
- 即使一个TA被攻破,攻击者也无法获得TEE内核的权限,更无法访问其他TA的数据
3. 代码完整性验证
- TEE内核的镜像在加载前会被BootROM验证签名
- 每个TA在加载前都会被TEE内核验证签名
- 只有经过厂商签名的代码才能在TEE中运行
- 任何被篡改的代码都会被拒绝执行
四、TEE的基本架构
1. ARM TrustZone 硬件架构
EL3(最高特权级) └── Secure Monitor(安全监控器) ├── 安全世界 EL1 │ └── TEE内核 │ └── 可信应用(TA) EL0 └── 非安全世界 EL1 └── Linux内核 └── 普通应用 EL0- EL3:最高特权级,只运行Secure Monitor,负责两个世界之间的切换
- 安全世界 EL1:运行TEE内核,管理安全世界的资源
- 安全世界 EL0:运行可信应用(TA),执行具体的安全操作
- 非安全世界 EL1:运行Linux内核
- 非安全世界 EL0:运行普通应用
2. TEE软件组件
- Secure Monitor:运行在EL3,是两个世界之间的唯一网关,负责处理SMC调用和世界切换
- TEE内核:运行在安全世界EL1,提供内存管理、线程调度、驱动、加密服务等基础功能
- 可信应用(Trusted Application, TA):运行在安全世界EL0,是执行具体安全任务的程序
- 客户端应用(Client Application, CA):运行在非安全世界EL0,是普通应用,通过TEE客户端API与TA通信
3. CA-TA通信基本流程
- CA调用TEE客户端API,向TEE发送请求
- TEE客户端驱动通过SMC指令切换到安全世界
- Secure Monitor将请求转发给TEE内核
- TEE内核加载对应的TA并执行请求
- TA执行完成后,将结果返回给TEE内核
- TEE内核通过Secure Monitor切换回非安全世界
- TEE客户端驱动将结果返回给CA
五、三个最容易混淆的概念辨析
1. TEE vs SELinux
技术 | 隔离级别 | 作用 |
SELinux | 软件级强制访问控制 | 限制普通应用和系统服务的权限,防止权限滥用 |
TEE | 硬件级隔离 | 提供一个完全独立的安全执行环境,保护最敏感的数据和操作 |
2. TEE vs Secure Boot
技术 | 作用 |
Secure Boot | 验证系统镜像的完整性,防止刷入恶意固件 |
TEE | 提供一个安全的运行环境,保护运行时的数据和操作 |
3. TEE vs SE(安全元件)
技术 | 硬件位置 | 性能 | 应用场景 |
TEE | 集成在CPU内部 | 高,可以运行复杂的计算 | 指纹识别、人脸解锁、支付签名、DRM |
SE(eSE/UICC) | 独立的安全芯片 | 低,只能运行简单的指令 | 银行卡、SIM卡、交通卡 |