LAT6028
Local Application Tips
LAT6028 Rev 1.0 Mar. 2025
使用 OP-TEE 进行 M 核固件认证
关键字:OP-TEE M 核固件认证
1. 前言
部分客户要求对 M 核进行保护和加密,对于此功能的支持,ST 提供了 Wiki How to
protect the coprocessor firmware - stm32mpu (stmicroelectronics.cn) ,详细解释了如
何保护由主处理器(A 核)加载到协处理器(M 核)的软件,并由 OP-TEE 认证需要被加载
的固件。
1 描述了固件签名和执行过程:
1)由 STM32CubeIDE 基于 M 核的程序编译出 M 核固件.elf 文件。依据公钥和私钥使
OP-TEE 签名脚本进行签名,该脚本给 M 核固件.elf 文件添加了一个包含认证信息的
Header(包含要加载的段的哈希值的哈希表和使用私钥计算的签名)。
2)在执行阶段:远程处理框架Remoteproc Framework从文件系统中读取被签名
的固件二进制文件,并将固件提供OP-TEE 可信应用程序;OP-TEE 可信应用程序将对固件
进行认证,并将其安装在受保护的 Cortex-M 内存中。
1. 签名及执行过程
本文是对此篇 Wiki 的补充,补充阐述使OP-TEE 进行 M4 固件认证的详细操作过程,
此过程简称为“对 M 核加签”。
ST 提供了两种对 M 核加签的方式,一种是基于 Developer Pacakge 的版本,另一种是
基于 Distribution Package 的版本,两种方式原理一致,仅在编译形式和指令上略有区别,
客户可根据自己的偏好和开发环境自由选择加签方式。
LAT6028
LAT6028 - Rev 1.0 page 2/9
2. M 核加签
Ecosystem 5.0.0 及以上版本中,STM32MP15x 系列的 OP-TEE 默认放在 DDR 中,
默认配置禁用了安全服务,仅保留系统服务,如 PSCI SCMI 要嵌入带remoteproc
件认证安全服务的 OP-TEE 固件,必须将 OP-TEE 放入 SYSRAM 中加载。
ST 目前提供了两种 M 核加签的方式,分别通过 Developer Package Distribution
Package 实现。用户可根据自己的开发环境选择性阅读本章 2.1 2.2 的内容。
2.1. (可选)基于 Developer Package M 核加签
2.1.1. OP-TEE TATrusted Application)生成
OP-TEE 需要配置开关 CFG_STM32MP1_OPTEE_IN_SYSRAM=y,以便 OP-TEE
安全的 SYSRAM 中执行。
PC $ > cd <path to developer package source>/optee-os-stm32mp-3.19.0-
stm32mp-r1-r0/optee-os-stm32mp-3.19.0-stm32mp-r1/
PC $ > vim core/arch/arm/plat-stm32mp1/conf.mk
在此文件中将 CFG_STM32MP1_OPTEE_IN_SYSRAM 设置为 yyes)。
2. CFG_STM32MP1_OPTEE_IN_SYSRAM=y
TF-A 配置开关 STM32MP1_OPTEE_IN_SYSRAM=1,以便 TF-A/BL2 在安全的
SYSRAM 中加载 OP-TEE,否则 TF-A 将无法引导 OP-TEE 镜像。
PC $ > cd <path to developer package source>/tf-a-stm32mp-v2.8.6-
stm32mp-r1-r0/tf-a-stm32mp-v2.8.6-stm32mp-r1
PC $ > vim plat/st/stm32mp1/platform.mk
3. STM32MP1_OPTEE_IN_SYSRAM=y
OP-TEE 中需要嵌入:远程处理器可信应用(TA);远程处理器平台伪可信应用
PTA);stm32mp 远程处理驱动程序。故在 OP-TEE 的配置文件中还需要将
CFG_DRIVERS_REMOTEPROCCFG_STM32MP_REMOTEPROCCFG_RPROC_PTA
使能,在 Developer Package 中,只需CFG_RPROC_PTA 设置为 yyes)即可。