2. OP-TEE 项目简介

OP-TEE (Open Portable Trusted Execution Environment) 是 Linaro 社区维护的开源 TEE 项目,基于 ARM TrustZone 技术实现。它提供了完整的 TEE 软件栈,包括安全内核、用户空间组件和客户端 API,是嵌入式安全领域最广泛使用的开源 TEE 解决方案之一。

2.1 开源项目背景

OP-TEE 最初由 ST-Ericsson 和 STMicroelectronics 开发,2014 年由 Linaro 接手并开源。项目托管于 GitHub,采用 BSD 2-Clause 许可证,社区活跃度极高。截至 2025 年,OP-TEE 已支持超过 30 种硬件平台,包括 NXP i.MX、Rockchip RK3399、Xilinx Zynq 等主流 SoC。

关键里程碑:
  • 2014 — Linaro 正式接管并开源 OP-TEE
  • 2016 — 加入 GlobalPlatform TEE 标准认证
  • 2018 — 支持多平台设备树 (Device Tree)
  • 2021 — 引入 FF-A (Firmware Framework for Arm A-profile) 支持
  • 2024 — 发布 v4.0,支持 Rust 语言开发 TA

2.2 核心组件架构

OP-TEE 由三个核心组件构成,分别运行在安全世界 (Secure World) 和普通世界 (Normal World):

架构概览: 安全世界运行 TEE 内核和可信应用 (TA),普通世界运行 Client API 和 TEE Supplicant,两者通过 SMC (Secure Monitor Call) 指令进行通信。
OP-TEE 核心组件架构图 OP-TEE 核心组件架构 普通世界 (Normal World) 安全世界 (Secure World) Client Application (CA) 普通世界应用程序,调用 TEE 功能 Client API (libteec) 用户空间库,封装 SMC 调用接口 TEE Supplicant (teed) 用户空间守护进程,处理 RPC 请求 TEE Kernel (OP-TEE OS) 安全世界内核,管理 TA 和资源 Trusted Application (TA) 安全应用,运行在安全世界 Secure Storage 安全存储,加密保护敏感数据 SMC 调用 RPC 请求 通信机制 CA 通过 Client API 发起 SMC 调用进入安全世界;TEE Kernel 处理请求并调度 TA 执行; TA 需要访问普通世界资源时,通过 RPC 请求 TEE Supplicant 协助完成。

2.3 组件功能详解

组件 运行环境 主要功能 代码位置
TEE Kernel (OP-TEE OS) 安全世界 (S-EL1) 管理 TA 生命周期、内存隔离、中断处理、加密服务 core/
TEE Supplicant (teed) 普通世界 (用户空间) 处理 RPC 请求、文件系统访问、网络通信 supplicant/
Client API (libteec) 普通世界 (用户空间) 提供标准 API 接口,封装 SMC 调用细节 libteec/
Trusted Application (TA) 安全世界 (S-EL0) 实现具体安全业务逻辑,如密钥管理、身份认证 ta/

2.4 OP-TEE 与 GlobalPlatform 标准的关系

GlobalPlatform (GP) 是 TEE 领域的国际标准组织,定义了 TEE 的系统架构、API 接口和安全要求。OP-TEE 是 完全兼容 GlobalPlatform TEE 标准 的开源实现,具体体现在以下方面:

  • API 兼容性: 实现了 GP TEE Client API (GPD_TEE_Client_API.h) 和 TEE Internal Core API (tee_internal_api.h)
  • 架构一致性: 遵循 GP 定义的 TEE 系统架构,包括安全世界/普通世界隔离、TA 管理、安全存储等
  • 安全模型: 支持 GP 定义的认证、加密、签名等安全服务接口
  • 测试套件: 提供 GP TEE 测试套件 (xtest),用于验证标准兼容性
重要提示: 虽然 OP-TEE 兼容 GP 标准,但不同厂商的 TEE 实现(如 Trustonic、Qualcomm QSEE)在底层实现上存在差异。开发跨平台 TA 时,应严格使用 GP 标准 API,避免依赖 OP-TEE 特有的扩展接口。
OP-TEE 与 GlobalPlatform 标准关系 OP-TEE 与 GlobalPlatform 标准关系 GlobalPlatform TEE 标准 TEE Client API · TEE Internal Core API · 安全架构规范 OP-TEE 开源实现 libteec · OP-TEE OS · TEE Supplicant · xtest 测试套件 ARM TrustZone 硬件平台 Cortex-A 系列处理器 · 安全内存 · 安全外设 标准 → 实现 → 硬件 OP-TEE 在 GlobalPlatform 标准规范下实现,运行于 ARM TrustZone 硬件之上

2.5 标准兼容性对照表

GlobalPlatform 标准 OP-TEE 对应实现 兼容状态
GPD_TEE_Client_API.h libteec/include/tee_client_api.h 完全兼容
TEE Internal Core API libutee/include/tee_internal_api.h 完全兼容
TEE Secure Storage core/tee/tee_svc_storage.c 完全兼容
TEE Cryptographic API libutee/crypto/ 完全兼容
TEE Socket API libutee/socket/ 部分兼容(仅支持 TCP/UDP)
TEE Time API libutee/time/ 完全兼容
开发建议: 在编写 TA 时,优先使用 #include <tee_internal_api.h> 中的标准接口,避免直接调用 OP-TEE 内部函数。这样可确保 TA 在不同 TEE 实现间的可移植性。