垂直应用

STM32 安全启动与安全固件更新参考实现




1概述

2STM32安全启动与安全固件更新参考实现

3适用于TrustZone架构的STM32安全启动与安全固件更新参考实现

4参考资料与培训资源

   文档资料

   培训资料


1.概述

在嵌入式系统的信息安全中,可信的固件是一个安全基础,同时固件的安全又是一个在整个设备生命周期中都需要考虑的问题。

在设备运行和使用阶段,需要保证每一次上电复位后MCU中运行的固件都是设备厂商原始的可信的固件,而不是可能被替换、篡改过或者注入了恶意代码的应用程序。通常的做法是建立设备信任根,也就是一段不可更改的启动代码及数据,这是一段每次上电复位的时候都会运行且不能被绕过的代码,这段启动代码将检查系统配置的正确性,并使用密码学算法及其配套的密钥对后续即将运行的应用程序的完整性以及合法性进行校验,只有校验通过才能正常启动应用程序,这就是安全启动的过程。

 Picture22.png


攻击物联网设备的一种常见方法就是利用固件更新的漏洞注入非法代码。因而,对于具有软件升级能力的设备,还需要确保每一次更新的过程依旧能够保证固件的可信性,也就是设备需要安全地进行固件升级。

 

Picture23.png



安全固件升级需要考虑的因素包括

  • 固件完整性和来源可靠性,确保固件来自可信的发布者且未经过篡改

  • 固件的保密性,防止在升级过程中固件内容被窃取

  • 固件版本防回滚,防止恶意的降级(例如降级到已知有某些安全漏洞的旧版本)


2.STM32安全启动与安全固件更新参考实现

X-CUBE-SBSFU是针对基于Cortex v6/v7内核的STM32系列的安全启动和安全固件更新参考实现。软件包下载地址:https://www.st.com/x-cube-sbsfu (注:需要在线填写申请,获取下载链接)。X-CUBE-SBSFU支持的系列包括:STM32F4, STM32F7, STM32L1, STM32L0, STM32L4, STM32G0, STM32G4, STM32H7, STM32WB。STM32WL系列的CubeFW软件包中已经包含SBSFU参考实现,不需要另外下载。


X-CUBE-SBSFU软件包提供的主要功能包括:

安全启动(Secure Boot) 

  • 确保复位时的唯一启动入口,上电后总是首先运行安全启动代码,且安全启动代码不可更改

  • 检测系统配置状态,确保相关硬件安全功能按照期望的配置进行设置

  • 执行应用程序代码之前进行固件映像数据验证 (包括真实性和完整性) 

安全固件更新(Secure Firmware Update) 

  • 通过SBSFU自带的Loader或者通过用户应用程序下载新版本固件(通过UART接口基于Ymodem协议接收固件数据)

验证新固件Image: 

  • 固件认证 / 完整性检查 :支持对称密钥(AES)和非对称密钥(ECDSA)方案

  • 固件解密:支持固件加密,更新安装过程会自动对加密固件进行解密和验证

  • 固件版本验证 :版本防回滚

  • 支持全部固件代码更新或部分固件代码更新

  • 固件安装(替换现有应用程序),支持双image和单image模式

密钥管理功能(目前支持B-L475E-IOT01A开发板)

  • 为应用程序提供密钥存储与管理服务以及加解密操作服务,基于PKCS#11 API 

不同的校验和加密方式

  • 基于对称密钥AES-GCM模式的MAC校验和更新过程固件加密

  • 基于非对称密钥ECDSA模式进行签名校验

  • 基于非对称密钥ECDSA模式进行签名校验+ 更新过程固件加密(AES CCM)

  • 结合STSAFE-A100(CC EAL5+级别安全芯片)基于X.509数字证书的签名校验和密钥存储(目前支持B-L475E-IOT01A板)


X-CUBE-SBSFU参考实现中充分利用不同STM32MCU系列所具有的硬件安全特性,实现安全启动和安全固件更新所需要的安全要求。

由于不同系列的MCU所具有的硬件安全能力有所差别,因而安全功能的实现也会使用不同系列MCU的各自硬件特性,X-Cube-SBSFU在不同系列上的实现所使用的硬件安全特性如下图所示:

 Picture24.png


Picture25.png

 

X-CUBE-SBSFU已经支持的STM32系列以及示例代码基于的开发板型号见下表



STM32系列

STM32参考板

STM32L4

32L496GDISCOVERY, B-L475E-IOT01A, NUCLEO-L432KC, NUCLEO-L476RG

STM32G0

NUCLEO-G031K8, NUCLEO-G071RB

STM32G4

NUCLEO-G474RE

STM32H7

STM32H750B-Discovery, NUCLEO-H753ZI, STM32H7B3I-Discovery

STM32WB

P-NUCLEO-WB55

STM32L0

NUCLEO-L073RZ

STM32L1

NUCLEO-L152RE

STM32F4

STM32F413H-Discovery

STM32F7

STM32F769I-Discovery



3.适用于TrustZone架构的STM32安全启动与安全固件更新参考实现

针对Cortex v8M TrustZone架构的STM32 MCU(如STM32L5, STM32U5),安全启动和安全更新的参考实现是STM32Cube TF-M。


STM32Cube TF-M提供Root of Trust解决方案,覆盖安全启动,安全更新和安全服务。该参考方案来源于开源的TF-M(Trusted Firmware-M)项目(https://www.trustedfirmware.org/projects/tf-m/),其具体实现则结合了STM32 MCU的各种硬件安全特性。STM32Cube TF-M同时获得了ARM PSA(Platform Security Architecture)的认证(https://www.psacertified.org/)。


Arm® trusted firmware-M (TF-M)的架构如下图所示。TF-M基于Cortex v8M架构实现,大的框架上分为非安全执行环境(NSPE)和安全执行环境(SPE)两部分,在SPE中又分成以下几个部分:

  • 不可更改的信任根Immutable RoT

  • 可升级的信任根Updatable RoT

  • 应用可升级信任根Application UPdatable RoT

    Picture26.png

 

其中涉及安全启动和安全更新的部分属于不可更改的信任根(Immutable PSA Rot),见下图。

 

Picture27.png


除了安全启动和安全更新,TF-M还提供了一系列原生安全服务,例如安全存储,Cryptography加解密,Initial Attestation等。这部分属于可升级的信任根Updatable RoT。安全启动和安全升级覆盖SPE和NSPE中可升级的FW部分。

 

Picture28.png


在此架构下,还可以扩展添加应用自己的安全服务,也就是应用可升级信任根Application UPdatable RoT的部分。


 Picture29.png



运行在NSPE的应用程序可以通过Developer API调用TF-M SPE中的服务,包括原生安全服务和应用层安全服务。


4.参考资料与培训资源

文档资料

 

应用笔记/用户手

AN5056

Integration guide for the X-CUBE-SBSFU   STM32Cube Expansion Package

X-CUBE-SBSFU STM32Cube扩展包集成指南》

X-CUBE-SBSFU

UM2262

Getting started   with the X-CUBE-SBSFU STM32Cube Expansion Package

X_CUBE_SBSFU安全动和固件更新软件入门》

AN5447

Overview of Secure   Boot and Secure Firmware Update solution on Arm® TrustZone® STM32L5 Series   microcontrollers

STM32L5的安全动和安全固件升级方案介绍

STM32L5 SBSFU

UM2671

Getting started   with STM32CubeL5 TFM application

《STM32L5 TF-M应用入门》

STM32L5 TF-M

UM2851

Getting started   with STM32CubeU5 TFM application

STM32U5 TF-M应用入门

STM32U5 TF-M

UM2745

STM32CubeL5 TFM   security guidance for SESIP profile for Arm® PSA Level 2 chip

STM32L5 TF-M针对SESIP和Arm® PSA Level2认证的安全指南

STM32L5 TF-M

SBSFU

一步一步使用STM32安全启动与固件更新

实战经验文章

 培训资料

培训课程及资料

STM32信息安全线上课程

视频课程

SBSFU原理介绍

培训课件

SBSFU初体验

SBSFU在STM32G0上的实

X_Cube_SBSFU和STM32G0

 


微信扫一扫