STMCU小助手
发布时间:2022-7-25 23:40
|
引言 STM32 Trusted Package Creator是STM32CubeProgrammer工具集(STM32CUBEPROG) 的一部分,能够生成安全固件和模块,用于STM32安全编程解决方案,它们是:+ l7 ?2 ^# A8 @8 I0 x2 B •安全固件安装(SFI):SFI是一种安全机制,通过使用AES-GCM密钥对整个固件进行加密,可以在不受信任的产品环境中安全地安装OEM固件。 •安全模块安装(SMI):SMI旨在通过使用AES-GCM密钥加密此部分来保护该部分固件(ELF文件的一部分)。; a1 w/ A/ p3 }4 _ SFI-SMI组合映像是包含一个或多个模块区域的SFI映像。 •安全固件升级(SFU):SFU是一种允许以安全方式升级STM32微控制器内置程序的解决方案。有关SFU的更多信息,请参阅http://www.st.com上的X-CUBE-SBSFU软件包以获取更多信息。 本用户手册详细介绍了软件环境先决条件以及STM32 Trusted Package Creator工具软件的可用功能。: ]# I7 V) q( U9 \; B/ B f ! T$ h- ?! A6 K3 ?$ O; r% T " _1 j( S/ a+ n' R: G' Y 1系统要求0 C& j6 \* Q& @6 z' S6 s 支持的操作系统和架构为: •Linux® 32位和64位(已在Ubuntu 14.04上测试)' ^' x; u- E8 R2 _) S •Windows® 10-7-8 32位和64位2 I, _8 P4 r4 h" C" y7 m! Q% c •macOS®(最小版本OS X® Yosemite)7 \2 x$ J, d- I& @" E STM32CubeProgrammer和STM32 Trusted Package Creator可支持基于Arm® Cortex®-M处理器的STM32 32位器件。 2准备过程 2.1 SFI准备过程 SFI(安全固件安装)映像是由意法半导体创建的格式,包含已使用AES-GCM算法加密和验证的固件。图 1中描述了SFI准备过程。 d1 X4 Y$ ]: [ $ d, b2 W; _# c: p, ~$ A- p/ C+ w A9 V
在执行AES-GCM加密一个区域之前,该工具将初始化向量(IV)计算为:# g) N3 |3 s V IV = nonce + Area Index。 其中nonce是一个数字,在AES-GCM算法中作为迭代过程的起始值只使用一次,以将不同的密文发送给相同的数据块。( l0 J3 q3 }+ a' n% G, K 然后,它将区域描述符(从magic开始到区域总数)作为附加认证数据(AAD)来传递。 •输入固件中的每个段都会构成SFI文件中的一个固件(F)区域。 •每个SMI文件(组合情况)共同构成一个模块(M)区域。 •选项字节配置构成配置(C)区域。 为了生成头文件标签,该工具使用SFI头文件作为AAD以及nonce作为IV,执行仅经过验证的AES-GCM加密(不含纯文本或密文)。 图 2中描述了SFI文件的结构。 ( r$ I" a' t: g4 i% K
要从多个固件文件准备SFI映像,您必须确保其各段之间没有重叠,否则会收到错误消息:“段之间重叠,无法合并固件文件”。 而且,在SFI-SMI组合映像的情况下,还会在各区域之间进行重叠检查(如果固件和模块区域之间存在重叠)。如果检查失败,将显示一条错误消息:“SFI区域之间重叠”。8 s) L/ j/ A' Z# E5 f 此外,所有SFI区域都必须位于flash中,否则生成将失败,并给出错误消息:“一个或多个SFI区域不在flash中”。 ! V7 I5 ]& P" ]$ `( i 2.2 SMI准备过程- b/ O- S( M$ Q! ]- L" F 一个SMI映像(安全模块安装)仅保护固件内的一个模块。8 R# i ^' E7 {% B 图 3中描述了SMI准备过程。 + m% z2 r- f- A/ h) g& L% u! e
% F1 j6 b8 n1 w" A. T# q 使用以下输入来执行AES-GCM加密: •作为初始化向量(IV)的Nonce •作为附加认证数据(AAD)的安全版本 A8 e& N3 f( B, Y7 q3 a6 t" c4 e 3) U2 r" J2 M4 p# Z# y. b SMI准备之前,执行以下检查: •专有代码读出保护(PCROP)区必须与闪存字(256位)对齐,否则会显示警告 该区大小必须至少为2个闪存字(512位),否则会显示警告 •该区必须以Flash字边界(256位的字)结束,否则会显示警告! U' h; t: B* N& d •如果该区紧接着PCROP区域并在PCROP区的最后一个Flash字处开始,则生成失败并显示错误消息。 在SMI准备之后,还会生成一个明文(即未加密的)ELF文件,其中包含程序数据并且只包含明文代码段。5 ]" u+ A% B) V; H: N9 p# g 图 4中显示了SMI文件的结构。5 h6 @1 _$ I; Z/ G$ h6 } a3 {) \# `9 W! Q' j' X
& K1 Y* t+ U" H" W H1 E! y ! V% }8 v' E0 i4 W2 b1 L 完整版请查看:附件( b ^$ Q; m0 A' n ' \& }1 k9 O$ e , t0 ]9 O; T7 _. u |
DM00403513_ZHV1.pdf
下载1.64 MB, 下载次数: 15
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版