垂直应用

STM32 安全生产方案——安全固件安装SFI





1概述

2SFI安全烧录流程及其配套工具

        安全烧录流程

        支持安全烧录的STM32 MCU

        安全烧录工具

3参考资料与培训资源

        文档资料

        相关培训资源


1.概述

嵌入式设备固件的安全是非常基础的安全需求,一方面固件本身作为软件IP有其价值,OEM不希望他开发的固件被窃取进而损害其利益;另一方面,可信的固件也是嵌入式设备信息安全的基础,因为如果不能保证设备所运行的固件的安全性,设备应用的安全则无从谈起。


设备固件的安全性需要从多个环节去考量:

Picture32.png


  • 设备使用期间的固件安全通常通过安全启动和安全固件更新来保证;

  • 设备交付前的调试端口保护一般通过工厂烧录环节与固件烧录一并完成,因而这个部分也依赖工厂环境和烧录过程的安全性;

  • 工厂生产时应当在安全可信的环境进行固件烧录;当固件交付于第三方工厂进行烧录的时候可能会存在对固件安全风险的担忧

针对固件在生产环节的安全性问题,STM32提供安全固件安装(Secure Firmware Install)解决方案


1.png



SFI安全烧录方案主要针对安全生产中的两大类问题:

1)烧录过程中保护固件及数据的保密性和完整性;

  • 通过端到端安全方案保护OEM固件及配置数据的机密性和完整性

  • 需要烧录的固件和数据不以任何明文形式存在于STM32芯片之外(包括烧录器到MCU的数据线上)

  • 密文固件同时包含校验数据,一旦出现非法修改情况可以在烧录的过程被检测到

2)防止过量生产的情况;

  • 每一次烧录都需要产生License,License与被编程的MCU一一对应

  • License的产生次数受到配置在HSM中最大生产数量的限制


2.SFI安全烧录流程及其配套工具

安全烧录流程

Picture34.png


OEM首先可以使用STM32TrustedPackageCreator工具将明文固件及配置数据加密打包成可以用于SFI安全烧录的密文固件.sfi文件,固件加密使用的密钥KEY以及IV由OEM自行指定和保管


Picture35.png




OEM通过STM32TrustedPackageCreator工具将用于加密固件的密钥KEY以及最大允许编程数量MAXCOUNT写入HSM;配置好的HSM无法读出其中的KEY或者更改MAXCOUNT


Picture36.png


OEM将加密后的固件.sfi文件连同配置过的HSM一起交付工厂进行生产烧录


Picture37.png



  • 工厂使用支持SFI安全烧录的烧录器将密文固件写入MCU,MCU在内部解密恢复原始明文固件内容并写入Flash

  • 支持SFI安全烧录的STM32 MCU中包含一个公钥算法(ECC)密钥对、一个ST签名的数字证书和和一段配合SFI安全烧录功能的代码,这些密钥和代码在ST的工厂里已经事先预置到MCU芯片当中

  • 在安全烧录的过程中,烧录器需要从MCU中读取芯片数字证书,该证书将通过HSM进行验证

  • 验证通过的情况下HSM将会产生一段License数据,该License中包含用于解密固件的密钥KEY,固件密钥KEY以密文形式存在,HSM使用MCU数字证书中的公钥对固件密钥进行加密

  • License传递到MCU中之后,MCU能够使用自身携带的私钥对License内容进行解密,进而恢复出固件加密密钥,最终能够对固件密文进行解密,得到原始的明文固件内容并写入FLASH

  • 同样的License无法用在另外一颗MCU,因为每一个MCU内置的密钥对都是不同的,另外一个MCU将无法使用其私钥解密License内容

  • SFI安全烧录支持多种接口方式,包括SWD,USB,SPI,UART,具体某个芯片系列支持的方式请参考SFI安全烧录文档的相关描述。


支持安全烧录的STM32 MCU

目前支持SFI安全烧录功能的MCU包括以下系列:


STM32 MCU Part numbers

Order code

STM32H75xxl

支持该Part number的所有order code,请参考Datasheet中的order   code信息

STM32H7B3xI

STM32H733xx

STM32H735xx

STM32L5xxxx

支持STM32L5全系列

STM32WL5xxx

支持STM32WL5x系列

STM32L462CE

STM32L462CEU6F

STM32U5



* 其他STM32 MCU系列可以根据需求增加SFI支持


安全烧录工具

STM32提供一系列配合SFI安全烧录的工具,用于开发阶段验证SFI功能:

STM32TrustedPackageCreator

  • STM32TrustedPackageCreator是运行在PC上的SFI加密打包工具 + HSM配置工具

  • 其安装程序包含在STM32CubeProgrammer安装程序内,可以与STM32CubeProgrammer一同安装

  • STM32TrustedPackageCreator用于加密和打包固件数据和OptionByte配置数据

 

Picture38.png

  • STM32TrustedPackageCreator用于对HSM进行配置,写入OEM固件识别信息、固件加密密钥以及最大允许产生License的个数等


    Picture39.png

 

STM32HSM

  • 使用银行卡级别SE,以PVC卡形式提供




    Picture40.jpg


 

  • 支持ISO7816 T=0 / T = 1 API命令格式

  • STM32HSM用于存储OEM固件加密密钥,固件识别号和最大允许生成License的个数

  • 在安全生产阶段STM32HSM用于产生License数据并记录和控制产生License的个数

  • 目前HSM有两个版本,V1适用于L4,H7,L5;V2可以支持所有新的系列,如L5,WL5x,U5等


STM32CubeProgrammer

  • STM32CubeProgrammer工具是一个可以对STM32进行编程的PC工具,可以运行于Window和Linux系统

  • STM32CubeProgrammer除了具备通常的STM32编程和OptionByte相关功能以外,还提供配合HSM进行SFI安全烧录的CLI命令行工具


3.参考资料与培训资源

  文档资料

         简要说明/用户手册/应用笔记

DB4265

Hardware   security module for secure firmware installation

用于安全烧录的硬件安全模块HSM

STM32HSM-V2

DB3919

Hardware   security module for secure programming

用于安全烧录的硬件安全模块HSM

STM32HSM-V1

简要说明

AN4992

STM32 MCUs secure firmware install (SFI) overview

《安全固件安装(SFI)概述》

应用笔记

AN5054

Secure programming using STM32CubeProgrammer

《使用STM32CubeProgrammer进行安全编程》

UM2238

STM32 Trusted Package Creator tool software description

STM32 Trusted Package   Creator软件工具描述》

用户手

UM2237

STM32CubeProgrammer software description

STM32CubeProgrammer软件说明》

 

除以上公开资料外,对于希望基于STM32 SFI开发安全编程工具和方案的客户或第三方,在签署NDA的条件下可以进一步获取以下额外资料:

AN5243 Bootloader SFI security extension for STM32H7 Series

AN2428 Hardware secure module (HSM) for STM32CubeProgrammer secure firmware install (SFI)

AN5391 SFI extension for STM32L5 series


相关培训资源

培训课程及资料

STM32信息安全线上课程

视频课程

安全固件烧录_SFI

安全烧录/SFI

训课件

SFI 固件的安全烧录

视频

STM32L552SFI操作演示

STM32L552SFI操作演示


更多SFI相关内容还可以参考以下链接

STM32H7上的SFI(安全固件烧录)介绍和演示 

信息安全(十三)安全固件烧录/SFI


微信扫一扫