引言
本文档描述如何入门STM32CubeU5 TFM(Arm® Cortex®-M 的可信固件)应用程序,该应用程序作为 STM32CubeU5 软件包组成部分提供。
目录预览
1.概述 2.文档和开源软件资源 3.STM32Cube 概述 4.Arm® 可信固件‑M (TF‑M)简介 5.安全启动和安全固件更新服务 (PSA 不可变 RoT) 6.运行时安全服务 7.保护措施和安全策略 8.软件包说明 9.硬件和软件环境设置 10.安装过程 11.逐步执行 12.集成商角色描述
章节预览
STM32Cube概述 STM32Cube 源自意法半导体,旨在通过减少开发工作量、时间和成本,明显提高设计人员的生产率。STM32Cube 涵盖整个 STM32 产品系列。
STM32Cube 包括: • 一套用户友好的软件开发工具,覆盖从概念到实现的整个项目开发过程,其中包括: – STM32CubeMX 图形软件配置工具 STM32CubeMX,可通过图形向导自动生成初始化 C 代码。 – STM32CubeIDE 一种集外设配置、代码生成、代码编译和调试功能于一体的开发工具 – STM32CubeProgrammer (STM32CubeProg),图形版本和命令行版本中可用的编程工具。 – STM32CubeMonitor (STM32CubeMonitor、STM32CubeMonPwr、STM32CubeMonRF 和STM32CubeMonUCPD)功能强大的监控工具,用于实时微调 STM32 应用程序的行为和性能 。
• STM32Cube MCU 和 MPU 软件包,特定于每个微控制器和微处理器系列的综合嵌入式软件平台(如用于STM32U5 系列的 STM32CubeU5),它包含: – STM32Cube 硬件抽象层(HAL),确保在 STM32 各个产品之间实现最大限度的可移植性。 – STM32Cube 底层 API,通过硬件提供高度用户控制,确保最佳性能和内存开销 – 一组一致的中间件组件,如 ThreadX、FileX / LevelX、NetX Duo、USBX、USB-PD 触控库、网络库、mbed-crypto、TFM 和 OpenBL – 嵌入式软件实用工具以及全套外设和应用实例 。
• STM32Cube 扩展包,其中包含嵌入式软件组件,这些组件用以下内容补充 STM32Cube MCU 和 MPU 软件包的功能:– 中间件扩展和应用层– 在特定的意法半导体开发板上运行的实现案例。
Arm® 可信固件‑M (TF‑M)简介 TF‑M (参见[TF-M])是 Arm Limited 驱动的开源软件框架,提供 Arm® Cortex®‑M33(TrustZone®)处理器上PSA 标准的参考实现:
• PSA 不可变 RoT(可信根):在每次复位后执行不可变“安全启动和安全固件更新”应用程序。该应用程序基于 MCUboot 开源软件(参照[MCUboot])。
• PSA 可更新 RoT:“安全”应用程序,实现一组隔离在安全/特权级环境中的安全服务,非安全应用程序可通过PSA API 在非安全应用程序运行时间调用这些服务(参见[mbed-crypto]): – 固件更新服务:TF‑M 固件更新(FWU)服务实现 PSA 固件更新 API,以便应用程序安装新固件。 – 内部可信存储 服务:TF‑M 内部可信存储(ITS)服务实现 PSA 内部可信存储 API,以便在微控制器内置 Flash 存储器区域中写入数据,该区域通过硬件安全保护机制与非安全或非特权级应用程序隔离开来。 – 密码服务:TF‑M 密码服务实现 PSA 密码 API,以便应用程序使用密码原语,如对称和非对称密码、哈希、消息认证码(MAC)、关联数据的认证加密(AEAD)、随机化和密钥派生。它附带 PSA 密码驱动程序接口,便于使用专用硬件。它基于 Mbed 密码开源软件(参照[mbed-crypto])。 – 初始认证服务:TF‑M 初始认证服务允许应用程序在验证过程中向验证实体证明设备身份。初始认证服务可以根据请求创建一个令牌,其中包含特定于设备的固定数据集。
• 应用程序可更新 RoT:隔离在安全/非特权级环境中的安全服务,非安全应用程序可在非安全应用程序运行时间调用这些服务。 – 受保护存储 服务:TF‑M 受保护存储(PS)服务实现 PSA 受保护存储 API,以便在可能不可信的存储环境中进行数据加密和写入结果。作为参考,PS 服务采用基于 AES-GCM 的 AEAD 加密策略来保护数据的完整性和真实性。 – 第三方:实现额外的产品特定的安全服务的 RoT 应用程序。
安全启动和安全固件更新服务 (PSA 不可变 RoT) 5.1 产品安全介绍 现场部署的设备在不受信任的环境中运行,因此会受到威胁和攻击。为了减轻受攻击风险,我们的目标是只在设备上运行可靠的固件。允许更新固件映像以便修复故障或引入新特性或应对措施,这对连接的器件而言十分常见。但是,如果不以安全的方式执行,则容易受到攻击。其后果可能是破坏性的,如固件克隆、恶意软件下载或设备损坏。
因此,必须设计安全解决方案来保护敏感数据(甚至可能是固件本身)和关键操作。典型的对策基于密码技术(带有相关密钥)和内存保护机制: • 加密可确保固件传输期间的完整性(确保数据未被破坏)、身份验证(确保某个实体确实符合其声明)以及机密性(确保只有经过授权的用户才能读取敏感数据)。 • 内存保护机制可以防止外部攻击(例如,通过 JTAG 物理访问设备)以及来自其他嵌入式非安全进程的内部攻击。以下章节介绍实现完整性和身份验证服务的解决方案,以解决 IoT 终端节点设备最常见的威胁。
5.2安全启动 安全启动 (SB)确保所执行的用户固件映像的完整性和真实性:使用密码检查,防止运行未经授权或恶意修改的软件。
安全启动过程实现了一个可信根:从该可信组件开始(图 2 中的步骤 1),在其他每个组件执行(图 2 中的步骤 3)前验证该组件(图 2 中的步骤 2)。对完整性进行验证,以确保即将执行的映像未被破坏或恶意修改。可靠性检查旨在验证固件映像是来自可信且已知的源,以防止未经授权的实体安装及执行代码。
|