
引言 本应用笔记描述如何在基于 Arm® Cortex®‑M33 处理器的 Arm® TrustZone® STM32 微控制器上获得安全启动和安全固件更新解决方案。该应用笔记还提供此解决方案与 X-CUBE-SBSFU 解决方案的顶层比较结果,后者适用于基于 Arm® Cortex®‑M0、Cortex®‑M3、Cortex®‑M4、或 Cortex®‑M7 处理器的非 TrustZone®STM32 微控制器。它还为安全启动和安全固件更新解决方案提供顶层集成指南。 对于 Arm® TrustZone® STM32 微控制器,安全启动和安全固件更新解决方案在相应的 STM32Cube MCU 包中提供。与XCUBE-SBSFU STM32Cube 扩展包中提出的解决方案不同,该解决方案基于开源 TF‑M(面向 Arm® Cortex®‑M 的可信固件)参考实现。 本应用笔记适用于所有 TrustZone® STM32 微控制器。然而,本文档中仅将 STM32L5 系列作为示例。 如需关于开源 TF‑M 参考实现的详细信息,请参见[TF-M]。 1 概述 在本应用笔记中,术语 X-CUBE-SBSFU 指的是 X-CUBE-SBSFU STM32Cube 扩展包中可用的安全启动和安全固件更新解决方案,而术语 SBSFU 指的是 STM32Cube MCU 包中可用的安全启动和安全固件更新解决方案(STM32CubeL5 用作示例)。 ![]() 2 参考 下面的表 2 和表 3 中提供的资源是公开的,可以从意法半导体的网站 www.st.com 或第三方网站上获得。 ![]() ![]() 提示 Mbed 是 Arm Limited(或其子公司)在美国和或其他地区的商标。 3 Arm® 可信固件‑M (TF‑M)简介 TF‑M (参照[TF-M])是 Arm Limited 驱动的开源软件框架,在 Arm® Cortex®-M33 (TrustZone®)处理器上提供了PSA 标准的参考实现: • PSA 不可变 RoT(信任根):在任何复位后执行的不可变“安全启动和安全固件更新”应用程序。该应用程序基于 MCUboot 开源软件(参照[MCUboot])。 • PSA 可更新 RoT:“安全”应用程序实现了一组隔离在安全/特权环境中的安全服务,非安全应用程序可以通过PSA API 在非安全应用程序运行时期中调用这些服务(参照[PSA_API]): – 安全存储服务:TF‑M 安全存储(SST)服务实现 PSA 保护的存储 API,允许数据加密并将结果写入可能不可信的存储中。SST 服务采用基于 AEAD 加密策略的 AES-GCM 作为参考,保护数据的完整性和真 实性。 – 内部可信存储服务:TF‑M 内部可信存储(ITS)服务实现 PSA 内部可信存储 API,允许在微控制器内置的闪存区域中写入数据,该区域将通过硬件安全保护机制与非安全或非特权应用程序隔离。 – 加密服务:TF‑M 加密服务实现了 PSA 加密 API,允许应用程序使用加密原语,如对称和非对称密码、散列、信息验证码(MAC)和带关联数据的认证加密(AEAD)。它基于 MbedCrypto 开源软件(参照 [MbedCrypto])。 – 初始认证服务:TF‑M 初始认证服务允许应用程序在验证过程中向验证实体证明设备身份。初始认证服务可以根据请求创建一个令牌,其中包含特定于设备的固定数据集。 • 应用程序可更新 RoT:隔离在安全/非特权环境中的第三方安全服务,可以由非安全应用程序在非安全应用程序运行时期中调用。 ![]() 4 X-CUBE-SBSFU vs. TF‑M 对比 4.1 概述 X-CUBE-SBSFU 提供意法半导体的安全启动和安全固件更新实现,以及(仅有选择地面向部分 STM32 系列)应用程序在运行时期可用的安全 KMS(密钥管理服务)服务。 TF‑M 参考实现提供基于开源 MCU 启动的安全启动和安全固件更新服务,以及应用程序在运行时期可用的一组安全服务。 X-CUBE-SBSFU 和 TF‑M 之间的高层比较请参见图 2 ![]() TF‑M 的 MCU 启动部分好比 X-CUBE-SBSFU(无 KMS):提供类似的服务。 X-CUBE-SBSFU KMS 支持的服务类似于 TF‑M 安全加密服务,但是加密算法或特性不一样;即使两者都基于不透明密钥 API 概念,API 也是不同的。请参考相关用户手册([UM2262]和[UM2671])中引用的 X-CUBE-SBSFU 和TF‑M API 文档,获取与所支持的特性有关的详细信息。 4.2 顶层特性 即使 X-CUBE-SBSFU 和 TF‑M 提出类似的服务,两种解决方案的特性也不完全相同。 表 4 总结了 X-CUBESBSFUV2.3.0 中的 X-CUBE-SBSFU 和 STM32CubeL5 V1.2.0 中基于 TF‑M 的应用程序之间的不同。 ![]() 要了解最新的特性差异,请参照最新版本的 X-CUBE-SBSFU 扩展包和 STM32CubeL5 MCU 软件包( 可从www.st.com 上的各自产品页面获得)。 有关 TF‑M 特性的更多信息,请参见[UM2671]。 4.3 硬件安全 STM32CubeL5 中基于 TF‑M 的应用程序的安全策略依赖 TrustZone®和 STM32L5 系列硬件安全特性。 ![]() 5 STM32CubeL5 基于 TF‑M 的应用 STM32CubeL5 MCU 软件包基于 TF‑M 参考实现提出两种不同应用,可移植到 STM32L5 系列以利用硬件安全特性的好处。 • SBSFU:它包括“安全启动和安全固件更新”应用程序(名为 SBSFU_Boot)简单用户应用程序示例(名为SBSFU_Appli)。 • TFM:它包括“安全启动和安全固件更新”应用程序(TFM_SBSFU_Boot)和在运行时期提供 TFM 安全服务的用户应用程序(名为 TFM_Appli)。 建议使用不带 KMS 的 X-CUBE-SBSFU 的用户考虑迁移到 STM32L5 系列并使用 STM32CubeL5 SBSFU 应用程序。建议使用带 KMS 的 X-CUBE-SBSFU 的用户考虑迁移到 STM32L5 系列 并使用 STM32CubeL5 TFM 应用程序(可能会删除一些安全服务或加密算法以满足应用程序需要)。 ![]() 通过移除运行时期的 TF‑M 安全服务,STM32CubeL5 SBSFU 应用程序为可用于用户应用程序的闪存容量最大化,如图 5 中所示。 ![]() 如需关于内存映射的详细信息,请参阅[UM2671]中的内存布局一节。 6 STM32CubeL5 SBSFU 应用 6.1 用户应用程序集成 当将 X-CUBE-SBSFU 应用程序移植到 STM32CubeL5 SBSFU 时, 用户应用程序必须集成到 SBSFU/SBSFU_Appli/NonSecure 文件夹中,如图 6 中所示。 此文件夹包含一个简单的用户应用程序示例。 ![]() 6.2 OEM 安全服务集成 如果 OEM 自己的安全服务也在 X-CUBE-SBSFU 中实现,这些 OEM 安全服务必须集成到 SBSFU/SBSFU_Appli/Secure 和 SBSFU/SBSFU_Appli/Secure_ncslib 文件夹中, 参照图 7 中所示的 STM32CubeL5 TrustZone®HAL 示例。 这些文件夹包含一个简单的 OEM 安全服务示例:“安全 GPIO 翻转”。 ![]() 6.3 密钥个性化 在 X-CUBE-SBSFU 中,个性化数据是加密密钥: • AES 对称密钥(CBC 或 GCM):用于固件镜像加密 • ECDSA 非对称密钥:用于固件镜像签名 SBSFU STM32CubeL5 V1.2.0 中不支持固件加密。没有可个性化的 AES 对称密钥。 关于固件镜像签名,SBSFU 示例中有两个 RSA 非对称密钥(一个用于安全镜像,一个用于非安全镜像)可进行个性化,而 X-CUBE-SBSFU 中只有一个 ECDSA 非对称密钥。必须注意的是,与 X-CUBE-SBSFU 相反,公共非对称密钥不是在 STM32CubeL5 SBSFU 编译过程中自动生成的,而是需要由用户将其与私有非对称密钥一起提供(参见图 8)。 ![]() 这两个私有 RSA 非对称密钥用于对安全和非安全固件镜像进行签名;它们没有内嵌在闪存中,而两个公共 RSA 非对称密钥存在于 SBSFU_Boot 项目的编译输出中。它们内嵌在专用的不可变 Flash 区域(个性化数据区域)中,如图 9 中所示。 ![]() 7 STM32CubeL5 TFM 应用 第 6 节 STM32CubeL5 SBSFU 应用中提供的顶层集成指南适用于 STM32CubeL5 TFM 应用。本节中提供特定于STM32CubeL5 TFM 应用的额外顶层集成指南。 如需关于 STM32CubeL5 TFM 应用的更多信息,请参见[UM2671]。 7.1 运行时期的加密安全服务 在 X-CUBE-SBSFU 中,通过 PKCS#11 API 为用户应用程序提供 KMS 服务。在 STM32CubeL5 TFM 应用中,通过 PSA 加密 API 为用户应用程序提供安全加密服务。两者都基于不透明密钥 API 概念。 ![]() 关于 PSA API 的更多信息,请参阅 TFM 用户应用程序示例和[PSA_API]。 7.2 OEM 安全服务集成 如图 11 中所示,OEM 安全服务必须集成为安全应用程序的安全/非特权部分中的第三方安全服务(称为“来自 TFM框架的应用程序 RoT”)。关于“来自 TFM 框架的应用程序 RoT”,请参照[UM2671]。 ![]() 如图 12 中所示,这些服务必须集成在 Middlewares/trustedfirmware 文件夹中。关于更多信息,请参见[TFM 用户指南]。 ![]() 7.3 数据个性化 除了固件镜像身份验证密钥,TFM 应用程序的个性化还需要额外数据:EAT 密钥、HUK 和实例 ID。TF‑M 初始认证服务需要这些数据。它们是特定于产品的(每个器件所独有的)。这些数据与公共 RSA 非对称密钥一起被分组在专用的不可变 Flash 区域(个性化数据区域)中,在激活最终安全配置之前,必须针对生产中的每个器件对该区域进行个性化设置。 ![]() 如需关于个性化数据的更多细节,请参阅[UM2671]中的集成者角色描述一节。 |
【STM32L562E-DK】健康手环基础界面开发(一)—— 准备工作
STM32硬件结构学习
【STM32L562E-DK】健康手环基础界面开发(二)—— GUI移植
STM32L562E-DK 驱动FMC接口的LCD屏
STM32L562E-DK移植lua脚本语言
STM32L5 系列微控制器和 TrustZone® 开发入门
STM32CubeL5 TFM 应用程序入门
STM32CubeIDE 中基于 STM32L5 系列的项目入门
STM32U5对比STM32L5有 哪些更新?
STM32L5 中如何关闭 TrustZone ?