2. TF-M基础与架构
Trusted Firmware-M(TF-M)是Arm主导的开源安全固件实现,目标是在Cortex-M类MCU上提供符合PSA Certified要求的安全基础。它并不是一个“加密库合集”,而是一套把安全启动、安全存储、密钥管理、密码服务、认证服务与安全分区调度整合在一起的运行时框架。理解TF-M,关键要抓住四个词:定位、分区、SPM、隔离与执行模型。
一、TF-M在PSA Certified中的定位
PSA Certified是Arm提出的安全认证体系,分为Level 1、Level 2、Level 3三个层级。Level 1偏重安全原则与文档审查;Level 2要求对PSA Root of Trust(RoT)进行实验室评估;Level 3进一步要求抗物理与侧信道攻击。TF-M主要覆盖的是PSA Level 2的RoT实现,即提供可信启动、可信存储、可信密码、可信认证等基础安全服务。
在系统栈中,TF-M位于应用与硬件之间,向下依赖MCU的TrustZone、MPU、SAU、Flash/RAM隔离等硬件能力,向上通过PSA Functional API向应用提供统一安全接口。因此,TF-M的定位可以概括为:PSA Certified在MCU侧的参考安全固件实现,而不是完整操作系统,也不是单一安全芯片方案。
二、安全分区:把安全能力拆成可组合的组件
TF-M内部采用“安全分区”思想,把不同安全职责拆分为独立分区。常见分区包括:
- SPE:Secure Processing Environment,安全处理环境,运行安全分区与SPM。
- NSPE:Non-Secure Processing Environment,非安全处理环境,运行应用与普通RTOS。
- PSA RoT分区:如Crypto、Internal Trusted Storage(ITS)、Protected Storage(PS)、Attestation、Platform等。
- SPM:Secure Partition Manager,负责安全分区生命周期、通信与资源仲裁。
每个安全分区拥有独立的栈、堆、数据区和清单(manifest)。清单定义该分区的服务、权限、依赖、MMIO区域和中断。构建时,TF-M根据清单生成分区元数据、IPC消息绑定和隔离配置。这样做的价值是:安全能力可裁剪、可组合、可验证,而不是把所有安全代码塞进一个巨大二进制。
三、SPM:安全分区的“内核”
SPM是TF-M的核心调度器。它不负责通用任务调度,而是负责安全分区的初始化、调用、切换、资源访问控制和异常处理。SPM主要包含以下职责:
- 解析分区清单,建立分区表与句柄。
- 管理安全分区状态:未初始化、就绪、运行、阻塞、终止。
- 处理来自NSPE的PSA Client API请求,并路由到对应安全分区。
- 执行IPC(进程间通信)消息传递与同步。
- 在分区切换时保存/恢复上下文,并配置MPU/SAU。
TF-M支持两种执行模型:IPC模型与函数调用模型。IPC模型下,每个分区有独立线程和栈,通过消息队列通信,隔离更强;函数调用模型下,分区以库形式链接,调用开销小,但隔离弱。量产项目通常优先选择IPC模型,以满足PSA Level 2的隔离要求。
四、隔离机制与执行模型
TF-M的隔离依赖硬件与软件协同。硬件侧使用TrustZone-M的SAU/IDAU划分安全与非安全地址空间,使用MPU保护分区私有数据,使用NVIC与异常优先级实现安全中断路由。软件侧通过SPM配置分区权限、栈保护、系统调用门和IPC消息校验。
执行模型上,系统启动后先运行BL2(可选)进行安全启动,然后进入TF-M SPM初始化,依次启动安全分区,最后跳转到NSPE应用。NSPE通过PSA API发起服务请求,SPM切换到对应安全分区执行,完成后返回结果。整个过程对应用透明,但底层发生了安全状态切换、栈切换和权限重配置。
五、典型场景:安全存储调用链
以应用调用PSA Protected Storage写入密钥为例,执行路径如下:
NSPE App
→ psa_ps_set(key_id, data, len, flags)
→ SPM 接收 PSA Client 请求
→ SPM 校验句柄与权限
→ 切换到 PS 安全分区
→ PS 分区调用 ITS 或外部 Flash 驱动
→ 写入加密数据并更新元数据
→ 返回 psa_status_t
→ SPM 切回 NSPE
这条链路中,应用看不到安全分区内部实现,也无法直接访问安全Flash区域。SPM负责把一次API调用转换为一次受控的跨域服务请求。若分区清单未授予PS访问权限,SPM会在路由前直接拒绝,避免越权访问。
六、常见误区与复盘要点
| 维度 | IPC模型 | 函数调用模型 |
|---|---|---|
| 隔离强度 | 强,独立栈与MPU | 弱,共享地址空间 |
| 调用开销 | 较高,需上下文切换 | 低,近似函数调用 |
| 适用场景 | 量产安全认证 | 资源极度受限或原型 |
| PSA Level 2 | 推荐 | 通常不满足 |
总结来看,TF-M在PSA Certified中承担的是MCU侧RoT落地角色;安全分区把安全能力模块化;SPM负责调度与仲裁;隔离机制依赖TrustZone-M、MPU与清单配置;执行模型决定隔离强度与性能取舍。量产项目中,应优先采用IPC模型,严格校验分区清单,并把安全启动、调试保护与生命周期管理纳入同一套交付证据链。