打印
[应用相关]

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

[复制链接]
2834|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LEDyyds|  楼主 | 2021-12-30 09:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1.概述

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

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


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




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

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

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

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



使用特权

评论回复
沙发
LEDyyds|  楼主 | 2021-12-30 09:29 | 只看该作者
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在不同系列上的实现所使用的硬件安全特性如下图所示:



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



使用特权

评论回复
板凳
LEDyyds|  楼主 | 2021-12-30 09:30 | 只看该作者
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




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



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



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




运行在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


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

103

主题

546

帖子

1

粉丝