1. OP-TEE-OS架构解析
OP-TEE(Open Portable Trusted Execution Environment)是基于ARM TrustZone技术的开源可信执行环境实现,由Linaro组织主导开发并维护。作为GlobalPlatform TEE标准的参考实现,它构建了一个与常规操作系统(如Linux/Android)严格隔离的安全执行环境,专门用于处理敏感数据和关键安全操作。
1.1 双世界模型设计原理
ARM TrustZone技术将处理器划分为两个独立的安全域:
- 安全世界(Secure World):运行OP-TEE操作系统核心及可信应用(TA)
- 非安全世界(Normal World/REE):运行常规操作系统如Linux/Android
两个世界通过硬件级隔离机制实现:
- 专用总线信号线(NS比特位)标识当前安全状态
- 独立的内存地址空间和硬件资源划分
- 严格受限的跨世界通信接口(SMC指令)
实际部署中,安全世界通常仅占用10-15%的SoC资源,但通过硬件隔离确保即使非安全世界被完全攻破,安全世界中的密钥等敏感信息仍能保持机密性。
1.2 安全世界核心组件
1.2.1 特权层(Secure EL1)
OP-TEE微内核运行在Secure EL1异常等级,主要功能模块包括:
- 调度器:基于事件的轻量级调度,支持优先级抢占
- 内存管理:
- 两级页表转换(MMU)
- 安全内存池分配器(
CFG_CORE_RESERVED_SHM配置) - 动态TA加载时的地址空间管理
- 中断处理:
- GIC安全中断配置(
GICD_IGROUPR0寄存器) - 中断优先级分组(
GICC_BPR寄存器)
- GIC安全中断配置(
- 驱动框架:
- 安全UART调试输出
- 硬件加密引擎抽象层
- RPMB安全存储分区访问
1.2.2 用户层(Secure EL0)
可信应用(TA)运行在Secure EL0,分为两种类型:
-
静态TA:
- 编译时链接到OP-TEE镜像
- 通过
TA_PROP_STR宏定义属性 - 示例:
core/arch/arm/sta/hello_world_ta.c
-
动态TA:
- 运行时通过RPC机制加载
- 使用
sign.py工具签名 - 存储路径:
/lib/optee_armtz/<uuid>.ta
典型TA功能实现模板:
c复制TEE_Result TA_InvokeCommandEntryPoint(
void* session, uint32_t cmd_id,
uint32_t param_types, TEE_Param params[4]) {
switch (cmd_id) {
case TA_AES_CMD_ENCRYPT:
return aes_encrypt(params);
case TA_AES_CMD_DECRYPT:
return aes_decrypt(params);
default:
return TEE_E
