2. TF-M基础概念
Trusted Firmware-M(简称 TF-M)是 Arm 主导维护的开源安全固件项目,面向 Armv8-M 与 Armv8.1-M 架构的微控制器,提供符合 PSA Certified 与 PSA Functional API 规范的可信执行环境实现。它并不是一个完整的操作系统,也不是单纯的启动加载器,而是一套把安全启动、安全隔离、安全服务与安全存储整合在一起的固件框架。对于做平台移植与启动工程的开发者而言,理解 TF-M 的定义边界、内部组成与安全模型,是后续裁剪配置、移植适配和启动链路调试的前提。
一、TF-M 的定义与核心定位
TF-M 的核心价值可以概括为三句话:以隔离为手段,以服务为接口,以认证为目标。它利用 TrustZone-M 的硬件隔离能力,把系统划分为安全世界(Secure Processing Environment,SPE)与非安全世界(Non-secure Processing Environment,NSPE)。安全世界运行 TF-M 本体,承载密钥管理、加解密、安全存储、认证等敏感操作;非安全世界运行用户应用或 RTOS,通过 PSA Client API 以远程过程调用的方式请求安全服务。
从生态定位看,TF-M 处于芯片硬件与上层应用之间的“安全中间层”。向下,它依赖芯片厂商提供的平台移植层与硬件抽象;向上,它向应用提供标准化的 PSA 接口。因此它既是安全能力的提供者,也是平台差异的收敛者。
二、架构组成
TF-M 的架构可以按“启动—隔离—服务—接口”四个维度理解。启动层负责安全启动链与镜像校验;隔离层负责安全与非安全分区、内存属性与中断归属;服务层由多个安全分区组成,每个分区独立编译、独立堆栈;接口层则统一暴露 PSA API。
上图中,安全边界由 TrustZone-M 的 SAU/IDAU 与 MPU 共同实现。SPM(Secure Partition Manager)是 TF-M 的中枢,负责安全分区调度、IPC 消息路由与资源隔离。各安全分区之间默认不可直接访问,必须通过 SPM 转发,从而把“一个分区被攻破”的影响限制在局部。
三、安全模型
TF-M 的安全模型建立在三个假设之上:硬件信任根不可篡改、安全世界代码经过签名验证、非安全世界不可信。由此形成三条主线:
- 安全启动:以 BL1(不可变 ROM 代码)验证 BL2,再由 BL2 验证安全镜像与非安全镜像,形成逐级信任链。
- 运行时隔离:安全分区拥有独立堆栈与内存区域,通过 MPU 限制越界访问;非安全代码无法直接读写安全内存。
- 最小权限:每个安全分区只声明自身需要的服务与外设,SPM 依据清单分配资源,避免权限扩散。
关键理解:TF-M 的安全不是“把代码藏起来”,而是“把访问路径收窄”。安全边界两侧的每一次交互都必须经过 PSA API 与 SPM 的显式检查。
四、典型应用场景
TF-M 常见于需要设备身份、数据保密与固件可信的 MCU 场景,例如:
| 场景 | 依赖的 TF-M 能力 | 典型诉求 |
|---|---|---|
| 物联网终端安全接入 | Crypto、Attestation、ITS | 设备证书、密钥保护、云平台双向认证 |
| 工业控制设备 | 安全启动、Platform 分区 | 固件防篡改、生命周期状态管理 |
| 智能门锁 / 支付外设 | PS、Crypto、安全中断 | 敏感数据加密存储、防侧信道 |
| 车载 ECU 安全升级 | BL2、防回滚、镜像校验 | OTA 升级可信、版本不可降级 |
五、移植与启动中的常见误区
误区一:把 TF-M 当作普通库直接链接进应用。TF-M 必须运行在安全世界,且需要独立的链接脚本、向量表与内存布局,不能与非安全应用混编在同一镜像中。
误区二:忽略平台移植层。不同芯片的 Flash/RAM 分区、SAU 配置、外设归属差异很大,必须通过 target 配置与 platform 适配层完成对接。
误区三:只关注功能不关注启动顺序。安全镜像必须先于非安全镜像完成初始化,否则 PSA 客户端调用会因服务未就绪而失败。
在工程实践中,一个典型的 TF-M 构建配置片段如下,用于声明目标平台与安全分区:
# 以 AN552 为例的构建配置
cmake -G"Unix Makefiles" \
-DTFM_PLATFORM=arm/mps2/an552 \
-DTFM_TOOLCHAIN_FILE=toolchain_GNUARM.cmake \
-DTFM_PROFILE=profile_medium \
-DTFM_ISOLATION_LEVEL=2 \
-DCMAKE_BUILD_TYPE=Release \
../trusted-firmware-m
# 输出镜像
# tfm_s.bin 安全世界镜像
# tfm_ns.bin 非安全世界镜像
# bl2.bin 二级引导镜像
其中 TFM_ISOLATION_LEVEL 决定隔离强度:Level 1 仅区分安全与非安全,Level 2 进一步隔离各安全分区,Level 3 增加更细粒度的外设与中断隔离。隔离级别越高,安全性越强,但内存开销与 IPC 延迟也相应增加,需要结合芯片资源与业务需求权衡。
六、生态定位小结
TF-M 在生态中扮演“安全底座”的角色:它向下屏蔽芯片差异,向上提供 PSA 标准接口,向左对接 MCUboot 等启动组件,向右支撑 mbedTLS、PSA Crypto 等密码库。对于平台移植工程师而言,掌握 TF-M 的架构分层与安全模型,才能在启动链路中准确定位 BL1、BL2、SPE、NSPE 各自的职责边界,并为后续的裁剪、适配与调试打下基础。