你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32Trust生成SFI和SMI加密固件

[复制链接]
STMCU小助手 发布时间:2022-10-16 15:24
今天给大家讲述STM32Trust生成加密固件的实战内容。6 _0 I! [. e4 `: \( [% x8 f. T
1回顾STM32Trust

STM32Trust是一套STM32解决方案,提供完整的代码保护和执行保护工具套件,如下图:

微信图片_20221016152347.jpg
, ?/ d) R0 T3 M2 x3 U* b
今天讲述的就是代码保护中,使用STM32TrustedPackageCreator生成SFI和SMI加密固件。
% a1 V' P6 h8 V9 y: b' {% _: f
2加密基础介绍

SFI:Secure Firmware Installation,安全固件安装解决方案。

SMI:Secure Module Install,安全模块安装。
OEM:Original Equipment Manufacturer,原始设备制造商(或原厂);
5 I8 L" }+ k  A7 S
SFI格式是由ST公司创建的固件加密格式,它使用带有128位密钥的AES-GCM算法将固件(Elf、Hex、Bin或Srec格式)转换为SFI格式的加密和认证固件。
* P( Z) x1 e0 s! E
SMI格式是ST公司创建的一种格式,旨在保护合作伙伴的软件(软件模块和库)。

' @, p9 |2 I- H6 r- Y* \; x2 }0 f
3安装STM32Trust生成器

STM32TrustedPackageCreator安全包生成器工具属于STM32CubeProgrammer编程工具中的一部分(附加的工具)。


, }/ c# Z) x$ v$ G! J2 V
所以,在安装STM32CubeProgrammer工具时,集成有STM32TrustedPackageCreator这个工具,只是默认不安装,需要手动勾选。
微信图片_20221016152342.png

+ ]/ p5 t5 X- z9 \) U9 v
打开STM32TrustedPackageCreator工具,在主界面你就会看到一些我们之前说的SFI、SMI、HSM内容。
微信图片_20221016152335.png
2 S* b2 C7 }0 [7 y) C& d( [
4SFI固件生成过程

主要过程如下框图,由原厂固件、随机数、密钥,经过STM32TrustedPackageCreator工具加密成SFI格式固件。

微信图片_20221016152320.jpg

, J( B" r. \5 M; J* m5 W生成过程生产主要过程见下图:
微信图片_20221016152312.jpg

8 g" _( q! _; {+ E) S
在执行AES-GCM加密一个区域之前,我们计算初始化向量(IV)为:
IV = nonce + Area Index
0 z4 C# N( M0 ?4 X+ U6 Z, y1 W' C8 e
该工具将固件映像划分为几个加密的部分,这些部分对应于不同的内存区域。
2 y! \5 H' H4 u8 F
这些附加到相应描述符(由工具生成的未加密的描述性头部)的加密部分称为区域。

- h# \3 t5 j1 `* b# G
这些领域分不同的类型:
F:固件区域(输入固件中的常规段)M:模块区域(用于SFI-SMI组合图像生成,对应于来自SMI模块的输入)
- v( T* o: j+ U( KC:配置区域(用于选择字节配置)' j- r* q$ _6 M" b* e4 T" M4 m0 ?
P:表示“暂停”区域R:回复区域
5 W* f& @1 }" O3 K
: C5 a3 D' O1 Y  K$ N
区域“P”和“R”并不代表真正的固件区域,而是在SFI映像被分割成几个部分时创建的,这是在SFI映像的全局大小超过用户在创建SFI映像期间预定义的允许RAM大小时的情况。

) ~: f; S" q) `( C' o, i' U, _
下面RAM大小和CT地址输入用于SFI:
微信图片_20221016152309.jpg
4 O$ h3 U5 q0 ^$ \
P和R区域与常规SFI区域:
微信图片_20221016152306.png
% r4 w# m4 v8 p! K
此生成过程的最终输出是单个文件,该文件是经过加密和验证的SMI格式固件。SFI格式布局如下:
微信图片_20221016152302.jpg

2 {" L1 }, D7 C* h! h7 h2 v, i当SFI图像在生成过程中被分割时,“P”和“R”区域出现在SFI图像布局中,如图下图所示:
微信图片_20221016152259.jpg
' K4 L- E" \4 o7 Z
5SMI固件生成过程

SMI同样是一种加密固件,只是这里面加密的是针对模块和库。


8 `/ `1 E% {0 Q( v% L( V" B
SMI加密过程和SFI有点类似,如下图:
微信图片_20221016152255.jpg
* {. j9 m1 j- K4 M3 Y* I
生成过程
. T/ @; @% U0 C3 r
生产主要过程见下图:

' I- J; h( |$ Y. f7 X) T
AES-GCM加密使用以下输入:
•128位AES加密密钥
•输入nonce作为初始化向量(IV)
•作为附加身份验证数据的安全版本(AAD)
& \/ p3 f/ G, s
在创建SMI映像文件之前,对SMI映像有效性进行PCROP检查:
•PCROP部分必须在Flash字(256位)上对齐,否则将显示警告
•该区域的大小必须至少为2个Flash单词(512位),否则将显示警告
•该部分必须在Flash单词边界(256位单词)上结束,否则将显示警告
•如果紧随PCROP部分之后的部分的起始地址与PCROP部分的最后一个Flash单词重叠(在执行PCROP对齐约束之后),则生成失败并出现错误消息。

$ n- m; B+ L2 n* a
如果一切正常,在指定的路径下创建两个输出:
•SMI图像
•Lib数据
, Z( f# y& U' n  _5 R* m- l+ W. b" v$ e
SMI格式布局如下:
微信图片_20221016152248.jpg
* C' p  P# H) q$ y
6总结

现在众多处理器厂家都在推出“安全级别”芯片,其中,软件加密也算一项,本文重点让大家知道这个加密过程。


( c7 [  a% ]2 B3 V
7 X2 z# r( q  l( c转载自:strongerHuang" A; V2 A  x8 W: n8 x. D: w! m

) G5 Q" V$ z: t. Q/ d5 R2 `
1 k- ~0 t( i1 Z% Z9 f9 Y
微信图片_20221016152252.jpg
收藏 评论0 发布时间:2022-10-16 15:24

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版