引言
目录预览
1.概述
2.STM32Cube概述
3.安全启动和安全固件升级(SBSFU)
4.密钥管理服务(KMS)
5.保护措施和安全策略
6.软件包说明
7.硬件和软件环境设置
8.逐步执行
9.了解启动时的最后执行状态消息
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概述
STM32Cube是什么?
STM32Cube源自意法半导体,旨在通过减少开发工作量、时间和成本,明显提高设计人员的生产率。STM32Cube涵盖整个STM32产品系列。STM32Cube 包括:
• 一套用户友好的软件开发工具,覆盖从概念到实现的整个项目开发过程,其中包括:
– 图形软件配置工具STM32CubeMX,可通过图形向导自动生成初始化C代码
– STM32CubeIDE,一种集外设配置、代码生成、代码编译和调试功能于一体的开发工具
– STM32CubeProgrammer(STM32CubeProg),图形版本和命令行版本中可用的编程工具
– STM32CubeMonitor(STM32CubeMonitor、STM32CubeMonPwr、STM32CubeMonRF)和STM32CubeMonUCPD)是功能强大的监控工具,用于实时微调STM32应用的行为和性能。
• STM32Cube MCU和MPU包,特定于每个微控制器和微处理器系列的综合嵌入式软件平台(如用于STM32L4系列和STM32L4+系列的STM32CubeL4),其中包含:
– STM32Cube硬件抽象层(HAL),确保在STM32各个产品之间实现最大限度的可移植性– STM32Cube底层API,通过硬件提供高度用户控制,确保最佳性能和内存开销
– 一组一致的中间件组件,如FAT文件系统、RTOS、OpenBootloader、USB主机、USB设备、TCP/IP、触摸感应库,以及图形库
– 包含的软件覆盖了全套外设以及对应可用的示例
• STM32Cube扩展包,包含的软件组件是STM32Cube MCU和MPU包的功能补充:
– 中间件扩展和应用层
– 在特定的意法半导体开发板上运行的实现案例
软件如何补充STM32Cube?
该软件基于STM32CubeHAL,即STM32微控制器的硬件抽象层。此软件包通过提供以下中间件组件扩展STM32Cube:
• 用于管理所有关键数据和操作(如访问固件加密密钥的加密操作等)的安全引擎
• 通过PKCS #11 API提供密码服务的密钥管理服务
• 用于管理硬件安全元件特性的STSAFE-A
软件包包含有不同的示例应用程序,可提供完整的SBSFU解决方案:
• SE_CoreBin应用程序:提供包含所有“可信”代码的二进制文件。
• 安全启动和安全固件升级(SBSFU)应用程序:
– 安全启动(可信根)
– 本地下载通过串口
– 固件安装管理
• 用户应用程序:
– 在双插槽操作模式下下载新固件– 提供了测试保护机制的示例
– 提供了使用KMS API的示例示例应用提供了双插槽和单插槽操作模式,并且可以配置为不同加密方案。
注:在名称为1_Image 的示例中对单插槽配置进行了演示。在名为2_Images 的示例中对双插槽配置进行了演示。
本用户手册介绍了软件包的典型用法:
• 基于NUCLEO-L476RG板
• 示例应用在双插槽模式下运行,并配置了非对称身份验证和对称固件加密有关配置选项和单槽操作模式的更多信息,请参阅本文档的附录。
注:STM32L4系列和STM32L4+系列提供KMS功能,所提供示例基于B-L475E-IOT01A和B-L4S5I IOT01A板。
注:STM32L4+系列提供STSAFE-A110功能,所提供示例基于B-L4S5I-IOT01A板。
3.安全启动和安全固件升级(SBSFU)
3.1 产品安全介绍
现场部署的设备在不受信任的环境中运行,因此会受到威胁和攻击。为了减轻受攻击风险,我们的目标是只在设备上运行可靠的固件。已连接的设备时常需要更新固件映像以修复错误,或引入新功能或对策,否则极易遭受攻击。其后果可能是破坏性的,如固件克隆、恶意软件下载或设备损坏。因此必须设计出一套安全的解决方案来保护敏感数据(甚至可能是固件本身)和关键操作。
典型的对策基于加密技术(带有相关密钥)和内存保护:
• 密码可确保固件传输期间的完整性(确保数据未被破坏)、身份验证(确保某个实体确实符合其声明)以及机密性(确保只有经过授权的用户才能读取敏感数据)。
• 内存保护机制可以防止外部攻击(例如,通过JTAG物理访问设备)以及来自内部其它进程的攻击。以下章节介绍实现机密性、完整性和身份验证服务的解决方案,以解决IoT终端节点设备最常见的威胁。
3.2 安全启动
安全启动(SB)确保所执行的用户应用程序映像的完整性和真实性:使用密码检查,防止运行未经授权或恶意修改的软件。
安全启动过程实现可信根(参见图 1):从该可信组件(1)开始,其他每个组件在其执行之前(3)都要经过认证(2)。对完整性进行验证,以确保即将执行的映像未被破坏或恶意修改。可靠性检查旨在验证固件映像是来自可信且已知的源,以防止未经授权的实体安装及执行代码。