OP-TEE
本文档面向使用 MTT E300 BSP/SDK 的用户,介绍 OP-TEE 在 MTT E300 平台上的功能、架构和 TA 开发方法。读者应具备 Linux 开发环境、交叉编译和 BSP/SDK 使用基础。
1. 概述
OP-TEE(Open Portable Trusted Execution Environment)是运行在 ARM TrustZone Secure World 中的开源可信执行环境。MTT E300 平台基于 OP-TEE 为你提供以下安全能力:
- 可信应用运行环境:在 Secure World 中承载 Trusted Application(TA),与 Normal World 的 Linux/Android 隔离运行。
- 安全存储:提供基于 REE FS 和 RPMB 的安全存储后端,保护敏感数据不被 Normal World 直接读取。
- 密码学服务:基于 mbedTLS 提供 AES、RSA、ECC、Hash/HMAC 等标准算法,以及 SM2/SM3/SM4 国密算法,配合硬件 Trusted Engine 加速。
- 安全启动支持:作为 ATF BL32 加载,参与 ARM TrustZone 安全启动链。
- TA/CA 开发框架:提供完整的 TA Internal API 和 CA Client API,支持用户开发自定义可信应用。
1.1 术语
| 术语 | 说明 |
|---|---|
| OP-TEE OS | 运行在 Secure World 的 TEE OS,提供 TA 运行环境、安全存储和加密服务。 |
| REE | Rich Execution Environment,通常指 Linux/Android Normal World。 |
| TA | Trusted Application,运行在 OP-TEE 中的可信应用。 |
| CA | Client Application,运行在 REE 用户态,通过 TEE Client API 访问 TA。 |
| ATF | ARM Trusted Firmware,负责 EL3 固件和 Secure Monitor 相关功能。 |
| SMC | Secure Monitor Call,Normal World 与 Secure World 之间的切换接口。 |
| TE | Trusted Engine,MTT E300 平台硬件安全引擎,提供硬件加速密码学和真随机数。 |
| xtest | OP-TEE 测试程序,用于验证 TEE Client API、TA 加载和安全服务。 |
2. 软件架构
2.1 系统架构
MTT E300 平台 OP-TEE 的软件架构如下:
+---------------------------------------------------------------+
| Normal World (REE) |
| |
| +----------------+ +----------------+ +-------------------+ |
| | CA Application | | xtest | | tee-supplicant | |
| +-------+--------+ +-------+--------+ +---------+---------+ |
| | | | |
| +-------+-------------------+---------------------+---------+ |
| | TEE Client API (libteec) | |
| +-----------------------------+-----------------------------+ |
| | |
| +-----------------------------+-----------------------------+ |
| | Linux Kernel TEE Driver | |
| +-----------------------------------------------------------+ |
+---------------------------------------------------------------+
| SMC
+---------------------------------------------------------------+
| Secure World (TEE) |
| |
| +-----------------------------------------------------------+ |
| | OP-TEE OS | |
| | | |
| | +--------------+ +--------------+ +-------------------+ | |
| | | TEE Core | | TA Framework | | Crypto Service | | |
| | +--------------+ +--------------+ +---------+---------+ | |
| | +--------------+ +--------------+ | | |
| | | Secure Store | | TA Instance | +---------+---------+ | |
| | | REE/RPMB | | (TA Runtime) | | Trusted Engine | | |
| | +--------------+ +--------------+ | (TE) | | |
| | +--------------+ +--------------+ +-------------------+ | |
| +-----------------------------------------------------------+ |
+---------------------------------------------------------------+
| SMC
+---------------------------------------------------------------+
| ARM Trusted Firmware (ATF) |
| EL3 / Secure Monitor |
+---------------------------------------------------------------+
2.2 组件说明
| 组件 | 运行环境 | 作用 |
|---|---|---|
| OP-TEE OS | Secure World (EL1S) | 提供 TEE Core、TA 运行框架、安全存储和加密服务。 |
| ATF | EL3 / Secure Monitor | 负责启动阶段加载 OP-TEE,运行时通过 SMC 完成 Normal World 与 Secure World 切换。 |
| Linux Kernel TEE driver | Normal World kernel | 向 REE 提供 /dev/tee0、/dev/teepriv0 设备节点。 |
| tee-supplicant | Normal World user space | 配合 OP-TEE 完成 REE FS 读写、TA 加载等需要 REE 协助的操作。 |
| libteec | Normal World user space | 提供 TEE Client API 供 CA 调用。 |
| CA | Normal World user space | 用户开发的 REE 应用,通过 TEE Client API 访问 TA。 |
| TA | Secure World user space | 用户开发的可信应用,实现敏感业务逻辑。 |
| xtest | Normal World user space | 执行 OP-TEE 功能和回归测试。 |
2.3 启动链路
Boot ROM -> Bootloader -> ATF (BL31) -> OP-TEE OS (BL32) -> Linux Kernel (BL33)
- Boot ROM 加载并启动 Bootloader。
- Bootloader 加载 ATF(BL31)、OP-TEE OS(BL32)和 Linux Kernel(BL33)。
- ATF 在启动阶段将 OP-TEE OS 作为 BL32 secure payload 初始化。
- ATF 跳转到 Linux Kernel,Linux 进入 Normal World 启动流程。
- Linux 启动后,TEE driver 初始化并与 OP-TEE 交换 capability 信息。
tee-supplicant启动,完成 OP-TEE 用户态服务就绪。