ARM TrustZone
ARM TrustZone技术
ARM TrustZone 技术
目前
系统架构
从
这
X5 平台 的 TEE 可以


CPU 特权等级
从 CPU 的

X5平台
名词解释
| 缩写 | 全称 | 解释 |
|---|---|---|
| TEE | Trusted Execution Environment | 安全 |
| REE | Rich Execution Environment | 富 |
| OP-TEE | Open Portable Trusted Execution Environment | 开源 |
| TA | Trusted Application | 受 |
| EL3 | Exception Level 3 | ARM架构 |
| EL1/EL2 | Exception Level 1/2 | ARM架构 |
关于 X5 TEE
实现机制
目前 X5 平台
BL31 和 OP-TEE OS 的
| 名称 | 内存 |
地址 |
是否 |
|---|---|---|---|
| BL31 | AON SRAM | 0x2000_0000 ~ 0x2002_0000 | 是 |
| OP-TEE OS | DDR | 0x8000_0000 ~ 0x8400_0000 | 是 |
固件获取
目前
OP-TEE 的 binary 文件
miniboot/bl3x/tee-header_v2.bin
miniboot/bl3x/tee-pageable_v2.bin
miniboot/bl3x/tee-pager_v2.bin
BL31 的 binary 文件
miniboot/bl3x/bl31.bin
版本信息
BL31 和 OP-TEE 版本信息
BL31
BL31 启动 log 信息
NOTICE: BL31: v2.8(release):v1.0.8-77-g72e4fe066
NOTICE: BL31: Built : 20:12:37, Jun 11 2025
NOTICE: plat_setup_psci_ops: sec_entrypoint = 0x2000010c
...
以上v2.8。
OP-TEE
OP-TEE 启动 log 信息
I/TC:
I/TC: OP-TEE version: 05e24fd71 (gcc version 11.3.1 20220712 (Arm GNU Toolchain 11.3.Rel1)) #32 Thu Jun 6 13:14:26 UTC 2024 aarch64
...
以上05e24fd71。
注意: 如
TA 开发
概述
TA(Trusted Application,受
构建 TA
关于miniboot/optee/hobot_tee_devkit 目录ta/demo 。
要miniboot/optee/hobot_tee_devkit 并
将
您 的 TA 源代码 放在 ta/customer目录中。 打开
位于 ta/customer目录中 的 Makefile。在
Makefile文件中将 新建 的 目录名 添加 到 CTA_DIRS变量。切换
到 项目 代码 根目录,执行 以下 命令 编译TA: ./bd.sh lunch ## 选择开发板类型和./bd.sh编译
完成 后,在 miniboot/optee/hobot_tee_devkit/out/ta目录中 可以 看到 与 TA源代码 同名 目录,里面 就是 对应 的TA程序,以 .ta为后缀 的ELF文件。 如果
您 需要 清理 构建 并 重新 开始,您 可以 切换 到 项目 代码 根目录 使用 以下 命令: ./bd.sh distclean将
编译 完成 的 镜像 烧录 进 开发板,启动 开发板 进 到 linux shell 命令行,可 在 文件系统 中, /lib/optee_armtz目录找到 ta 程序
TA的签名与加密
TA的签名
TA由
生成新的私钥文件
签名TA的
miniboot/optee/hobot_tee_devkit/export-ta_arm64/keys/default_ta.pem
私钥
openssl genrsa -out default_ta.pem 2048
替换optee os中的公钥
用于
miniboot/optee/hobot_tee_devkit/replace_ta_pubkey
使用
-H/–header: 输入,optee的header文件,也
就是miniboot/bl3x/tee-header_v2.bin -t/–teeos: 输入,optee os的
文件,也 就是miniboot/bl3x/tee-pager_v2.bin -k/–key: 输入, key文件,也
就是miniboot/optee/hobot_tee_devkit/export-ta_arm64/keys/default_ta.pem -o/–output: 输出,替换
了key之后 的optee os文件
执行

编译TA
修改key文件
注意
更换
TA加密
开启TA加密功能
TA默认miniboot/optee/hobot_tee_devkit/export-ta_arm64/mk/link.mk中
export CFG_ENCRYPT_TA=y
修改key文件
同时,修改key文件
device/horizon/x5/board_cfg/soc/bl2_cfg/user_root.key
编译TA
修改key文件
注意
客户
的key需要 烧录 到efuse中,烧录 的 方法 参考烧写efuse。
单独编译 TA
前提条件: 请
切换
到 miniboot/optee/hobot_tee_devkit目录下 检查
build.sh文件中 环境变量 TOOLCHAIN_PATH是否为 当前 编译 工具链 所在路径,确保 路径 正确 执行
编译 脚本 ./build.sh开始编译 编译
完成 后,在 miniboot/optee/hobot_tee_devkit/out/ta目录中 可以 看到 与 TA源代码 同名 目录,里面 就是 对应 的TA程序,以 .ta为后缀 的ELF文件。 如果
您 需要 清理 构建 并 重新 开始,您 可以 使用 以下 命令: ./build.sh clean
部署 TA
前提条件: 确保miniboot/optee/hobot_tee_devkit/out/ta 目录.ta 为Linux 文件系统/lib/optee_armtz ,然后
在
开发板 正常 启动 并 找到 目录 /lib/optee_armtz使用USB线
将 板端 与PC连接,将 编译 好 的 TA 程序 传到 开发板 /lib/optee_armtz目录里 以 ADB 方式 为例
板端
mount / -o rw,remount
PC端
adb.exe push .\5b9e0e40-2636-11e1-ad9e-0002a5d5c51b.ta /lib/optee_armtz
ADB 使用