
引言 STM32 Trusted Package Creator是STM32CubeProgrammer工具集(STM32CUBEPROG) 的一部分,能够生成安全固件和模块,用于STM32安全编程解决方案,它们是: •安全固件安装(SFI):SFI是一种安全机制,通过使用AES-GCM密钥对整个固件进行加密,可以在不受信任的产品环境中安全地安装OEM固件。 •安全模块安装(SMI):SMI旨在通过使用AES-GCM密钥加密此部分来保护该部分固件(ELF文件的一部分)。 SFI-SMI组合映像是包含一个或多个模块区域的SFI映像。 •安全固件升级(SFU):SFU是一种允许以安全方式升级STM32微控制器内置程序的解决方案。有关SFU的更多信息,请参阅http://www.st.com上的X-CUBE-SBSFU软件包以获取更多信息。 本用户手册详细介绍了软件环境先决条件以及STM32 Trusted Package Creator工具软件的可用功能。 1系统要求 支持的操作系统和架构为: •Linux® 32位和64位(已在Ubuntu 14.04上测试) •Windows® 10-7-8 32位和64位 •macOS®(最小版本OS X® Yosemite) STM32CubeProgrammer和STM32 Trusted Package Creator可支持基于Arm® Cortex®-M处理器的STM32 32位器件。 2准备过程 2.1 SFI准备过程 SFI(安全固件安装)映像是由意法半导体创建的格式,包含已使用AES-GCM算法加密和验证的固件。图 1中描述了SFI准备过程。 ![]() 在执行AES-GCM加密一个区域之前,该工具将初始化向量(IV)计算为: IV = nonce + Area Index。 其中nonce是一个数字,在AES-GCM算法中作为迭代过程的起始值只使用一次,以将不同的密文发送给相同的数据块。 然后,它将区域描述符(从magic开始到区域总数)作为附加认证数据(AAD)来传递。 •输入固件中的每个段都会构成SFI文件中的一个固件(F)区域。 •每个SMI文件(组合情况)共同构成一个模块(M)区域。 •选项字节配置构成配置(C)区域。 为了生成头文件标签,该工具使用SFI头文件作为AAD以及nonce作为IV,执行仅经过验证的AES-GCM加密(不含纯文本或密文)。 图 2中描述了SFI文件的结构。 ![]() 要从多个固件文件准备SFI映像,您必须确保其各段之间没有重叠,否则会收到错误消息:“段之间重叠,无法合并固件文件”。 而且,在SFI-SMI组合映像的情况下,还会在各区域之间进行重叠检查(如果固件和模块区域之间存在重叠)。如果检查失败,将显示一条错误消息:“SFI区域之间重叠”。 此外,所有SFI区域都必须位于flash中,否则生成将失败,并给出错误消息:“一个或多个SFI区域不在flash中”。 2.2 SMI准备过程 一个SMI映像(安全模块安装)仅保护固件内的一个模块。 图 3中描述了SMI准备过程。 ![]() 使用以下输入来执行AES-GCM加密: •作为初始化向量(IV)的Nonce •作为附加认证数据(AAD)的安全版本 3 SMI准备之前,执行以下检查: •专有代码读出保护(PCROP)区必须与闪存字(256位)对齐,否则会显示警告 该区大小必须至少为2个闪存字(512位),否则会显示警告 •该区必须以Flash字边界(256位的字)结束,否则会显示警告 •如果该区紧接着PCROP区域并在PCROP区的最后一个Flash字处开始,则生成失败并显示错误消息。 在SMI准备之后,还会生成一个明文(即未加密的)ELF文件,其中包含程序数据并且只包含明文代码段。 图 4中显示了SMI文件的结构。 ![]() 完整版请查看:附件 |
DM00403513_ZHV1.pdf
下载1.64 MB, 下载次数: 11
STM32 GUI LTDC 最大像素时钟评估方法
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南