
引言 本用户手册介绍了如何开始使用X-CUBE-SBSFU STM32Cube扩展包。 0 s' D4 }2 y: R" T# X- g% @ 7 P8 Q2 l y' m& }5 P X-CUBE-SBSFU安全启动和安全固件更新解决方案使STM32微控制器内部固件可升级到新版本,添加新功能,和纠正潜在问题。升级过程是以安全的方式进行,以防未经授权的更新,并阻止访问设备上的机密数据。 . g9 U, g$ V5 }4 X8 h6 B1 g 安全启动(可信根服务)是一种不可变代码,总是在系统复位后执行,它检查STM32静态保护、激活STM32运行时保护、然后在每次执行前验证应用程序代码的真实性和完整性,以确保无效或恶意代码无法运行。 3 S# a' p% x$ r7 F" z J7 h 8 m8 k; d! |/ M9 S# @. \8 p 安全固件更新应用通过使用Ymodem协议的UART接口接收固件映像,检查其真实性,并在安装代码之前检查其完整性。固件更新可更新整个固件镜像,或者部分镜像。单槽示例适用于固件映像最小化的情况,而双槽示例则适用于确保映像安全安装的情况,且也适用于IoT设备中常用的无线固件更新功能。对于复杂系统,固件映像配置可扩展至最多三个映像。示例代码可灵活配置,可配置使用对你或非对称加密方案,采用明文或密文方案。 / z$ y0 d. d+ O9 C# q 7 v& s6 Z1 }7 G4 R1 q 安全密钥管理服务(KMS)通过PKCS #11 API(基于KEY ID的API)向用户应用程序提供加密服务,这些API在受保护和隔离的环境中执行。用户应用程序密钥存储在受保护和隔离的环境中,以便进行安全更新:真实性检查、数据解密和数据完整性检查。 1 S7 G. r! l3 M STSAFE-A110是一种防篡改安全元件(通过硬件通用标准EAL5+认证),用于托管X509证书和密钥,并在安全启动和安全固件更新过程中执行用于固件镜像身份确认的验证。7 P8 l) T& H$ w" z! D7 s6 ^ % C6 q) p3 u+ @7 _0 |8 `4 e X-CUBE-SBSFU基于STM32Cube软件技术,易于在不同STM32微控制器之间移植。它以参考代码的形式提供,演示了STM32安全保护措施的最佳使用方式。 ; j& B; J9 F# n: f" O0 C X-CUBE-SBSFU归类为ECCN 5D002 1.概述 X-CUBE-SBSFU扩展包附带在STM32F4系列、STM32F7系列、STM32G0系列、STM32G4系列、STM32H7系列、STM32L0系列、STM32L1系列、STM32L4系列、STM32L4+系列和STM32WB系列产品上运行的示例。 此外,还为STM32L4+系列提供了一个结合了STM32微控制器和STSAFE-A110的示例。X-CUBE-SBSFU以独立STM32系统解决方案示例的参考代码的形式提供,这些示例演示了用来保护资产免遭未授权外部和内部访问的STM32保护措施的最佳使用方式。 X-CUBE SBSFU还提供了一个结合了STM32和STSAFE-A110的系统解决方案示例,演示了面向安全身份验证服务和安全数据存储的硬件安全元件保护。X-CUBE-SBSFU是OEM根据其产品的安全要求级别开发安全启动和安全固件更新的起点。X-CUBE-SBSFU安全启动和安全固件更新扩展包可在基于Arm®(a) Cortex®-M处理器的STM3232位微控制器上运行。 2.STM32Cube概述+ c( r; t) {( H# [, | STM32Cube是什么? STM32Cube源自意法半导体,旨在通过减少开发工作量、时间和成本,明显提高设计人员的生产率。STM32Cube涵盖整个STM32产品系列。STM32Cube 包括:. ~0 S4 v. L1 [ • 一套用户友好的软件开发工具,覆盖从概念到实现的整个项目开发过程,其中包括: 8 ^. {' \' V9 J: x9 J# W; U7 V , A' h$ O- K0 A' U- n. N – 图形软件配置工具STM32CubeMX,可通过图形向导自动生成初始化C代码 – STM32CubeIDE,一种集外设配置、代码生成、代码编译和调试功能于一体的开发工具 ( l7 N. ?$ U! f* y1 i' K" V – STM32CubeProgrammer(STM32CubeProg),图形版本和命令行版本中可用的编程工具 & A H8 F7 X3 J0 L – STM32CubeMonitor(STM32CubeMonitor、STM32CubeMonPwr、STM32CubeMonRF)和STM32CubeMonUCPD)是功能强大的监控工具,用于实时微调STM32应用的行为和性能。 : b3 Y5 a! W0 m5 }0 R • STM32Cube MCU和MPU包,特定于每个微控制器和微处理器系列的综合嵌入式软件平台(如用于STM32L4系列和STM32L4+系列的STM32CubeL4),其中包含: – STM32Cube硬件抽象层(HAL),确保在STM32各个产品之间实现最大限度的可移植性– STM32Cube底层API,通过硬件提供高度用户控制,确保最佳性能和内存开销 : J) w* x( {- c$ _& h* c 1 x' t9 M3 P- p! w1 G: [ – 一组一致的中间件组件,如FAT文件系统、RTOS、OpenBootloader、USB主机、USB设备、TCP/IP、触摸感应库,以及图形库 9 O! i: d) _7 }" p 5 @( H, [! w7 x, E2 N6 W – 包含的软件覆盖了全套外设以及对应可用的示例 , t& C& y0 d" ]1 N0 }! ~. B7 J • STM32Cube扩展包,包含的软件组件是STM32Cube MCU和MPU包的功能补充: , ~/ ? u$ t" w, r A – 中间件扩展和应用层 – 在特定的意法半导体开发板上运行的实现案例# k% k, g7 ~: u4 f) X$ b6 O% I 软件如何补充STM32Cube? 该软件基于STM32CubeHAL,即STM32微控制器的硬件抽象层。此软件包通过提供以下中间件组件扩展STM32Cube: - Y+ L* g( M o& p8 E • 用于管理所有关键数据和操作(如访问固件加密密钥的加密操作等)的安全引擎 4 O' h- C5 E: j/ ?$ Z8 B l • 通过PKCS #11 API提供密码服务的密钥管理服务 ( z, e/ t P3 n) Q" k • 用于管理硬件安全元件特性的STSAFE-A# u# Y; A1 K1 Q + R1 S1 [8 A4 R& Z: Y 软件包包含有不同的示例应用程序,可提供完整的SBSFU解决方案 2 `# k ]; S4 o1 I+ n2 o- I • SE_CoreBin应用程序:提供包含所有“可信”代码的二进制文件。 • 安全启动和安全固件升级(SBSFU)应用程序: 0 B0 B9 t. ^1 a/ c – 安全启动(可信根) – 本地下载通过串口 : [4 M* h% e( |8 E – 固件安装管理 • 用户应用程序: 9 \1 R0 _5 m9 E, v& y – 在双插槽操作模式下下载新固件– 提供了测试保护机制的示例 - M5 g( M( t8 {0 K+ j( e6 ? – 提供了使用KMS API的示例示例应用提供了双插槽和单插槽操作模式,并且可以配置为不同加密方案。 . d7 F) K; @# P " D3 G3 s; g* B0 Y6 V& t4 V/ J) x1 Q 注:在名称为1_Image 的示例中对单插槽配置进行了演示。在名为2_Images 的示例中对双插槽配置进行了演示。 " c( `& i" a$ ^1 H4 | * g6 Y# p: f$ e/ e; O( C 本用户手册介绍了软件包的典型用法:" d3 L0 [; @8 q1 M, F f6 l8 G • 基于NUCLEO-L476RG板 , ?) [% l% H N8 c+ Q* R / B: p4 F5 }3 V' ~9 W; J) ~ • 示例应用在双插槽模式下运行,并配置了非对称身份验证和对称固件加密有关配置选项和单槽操作模式的更多信息,请参阅本文档的附录。 注:STM32L4系列和STM32L4+系列提供KMS功能,所提供示例基于B-L475E-IOT01A和B-L4S5I IOT01A板。 " A3 n/ T5 b. [+ h 注:STM32L4+系列提供STSAFE-A110功能,所提供示例基于B-L4S5I-IOT01A板。 3.安全启动和安全固件升级(SBSFU): a ~( S7 D" @ 3.1 产品安全介绍 5 G. r }8 A# ~2 S$ O 4 l0 J9 g/ P4 U8 R* D0 Q" M 现场部署的设备在不受信任的环境中运行,因此会受到威胁和攻击。为了减轻受攻击风险,我们的目标是只在设备上运行可靠的固件。已连接的设备时常需要更新固件映像以修复错误,或引入新功能或对策,否则极易遭受攻击。其后果可能是破坏性的,如固件克隆、恶意软件下载或设备损坏。因此必须设计出一套安全的解决方案来保护敏感数据(甚至可能是固件本身)和关键操作。 - G/ j* v( C1 e- {! C' B 典型的对策基于加密技术(带有相关密钥)和内存保护: 4 k4 ~; A/ l; t$ w 2 |" h* ~" @1 y7 V2 g • 密码可确保固件传输期间的完整性(确保数据未被破坏)、身份验证(确保某个实体确实符合其声明)以及机密性(确保只有经过授权的用户才能读取敏感数据)。 • 内存保护机制可以防止外部攻击(例如,通过JTAG物理访问设备)以及来自内部其它进程的攻击。以下章节介绍实现机密性、完整性和身份验证服务的解决方案,以解决IoT终端节点设备最常见的威胁。 * Z* f' x+ s3 ?2 { / F( K' F& \6 ^7 z, Z 3.2 安全启动 3 b5 _% O9 A2 X8 f# `+ y/ F5 F! p / \: |- x* {9 a6 t 安全启动(SB)确保所执行的用户应用程序映像的完整性和真实性:使用密码检查,防止运行未经授权或恶意修改的软件。3 D* e- i- J9 P# T8 X1 K% L8 X 安全启动过程实现可信根(参见图 1):从该可信组件(1)开始,其他每个组件在其执行之前(3)都要经过认证(2)。对完整性进行验证,以确保即将执行的映像未被破坏或恶意修改。可靠性检查旨在验证固件映像是来自可信且已知的源,以防止未经授权的实体安装及执行代码。 M5 `$ O+ U' }/ k" E7 ?9 ` ![]() |
新版STM32Cube for Visual Studio Code开发体验
【STM32N6570-DK评测】3.CubeMX关于DCMIPP和CSI的BUG整理及摄像头使用
经验分享常被误解的开、关总中断
【STM32C0测评】Nucleo-C092开发板功耗测试
【STM32C0测评】Nucleo-C092开发板IIC通信测试(硬件IIC)
【STM32C0测评】Nucleo-C092开发板IIC通信测试(软件IIC)
【STM32C0测评】Nucleo-C092开发板IIC通信测试(硬件软件IIC一网打尽)
【STM32C0测评】Nucleo-C092开发板USART串口测试
【STM32C0测评】Nucleo-C092开发板使用PWM控制板载LED呼吸灯
【STM32C0测评】Nucleo-C092板卡外部中断控制板载LED灯