[Safety]

STM32小课堂——垂直应用【STM32信息安全概览】

[复制链接]
1324|15
手机看帖
扫描二维码
随时随地手机跟帖
STM新闻官|  楼主 | 2022-6-15 15:57 | 显示全部楼层 |阅读模式
STM32信息安全概览


目录STM32Trust
安全启动与安全更新
代码保护
安全存储
密码学算法引擎
安全隔离
安全生产
安全认证与评估
参考资料与培训资源
文档资料
培训资源
视频资源

STM32 Trust随着物联网以及智能化产品的不断涌现,信息安全问题也日渐受到关注。信息安全是一个从系统层面需要统一考虑的问题:在提供服务的云端、通信管道、边缘及终端节点都需要部署完整的安全策略,终端节点设备不应该因为资源和处理能力有限而成为整个系统信息安全的薄弱环节。STM32Trust正是在这样的背景下应运而生,目标是帮助客户在其新产品的设计中能够加强安全性,并充分利用STM32MCU硬件特性及其生态系统资源来实现安全设计。

STM32Trust是一个集合了信息安全知识、生态系统和安全服务的综合的安全架构,基于多层次的安全策略,提供针对代码和执行保护在内的完整工具。STM32Trust基于客户实际使用场景中对信息安全的需求,提出了安全功能的概念,来更好地契合来自客户的实际需求以及信息安全相关规范的共性要求,帮助客户快速找到自己的应用中所需要的安全功能。
1629446586923421.png

一些典型的安全功能需求:
-安全启动
-安全固件更新
-代码保护
-安全存储
-密码学算法引擎
-安全隔离
-安全生产
-…

安全启动与安全更新STM32提供安全启动与安全更新参考实现,分为两大类,X-Cube-SBSFU是针对Cortex V6/V7内核的STM32MCU参考实现软件包,TF-M SBSFU是针对基于Cortex V8M内核的参考实现。二者的具体代码不同,但是对于安全启动和安全更新所遵循的思想是一致的,也有很多共性特征,例如充分利用各个MCU系列的硬件安全特性来保证安全启动的启动入口唯一、启动代码不可修改等要求;支持不同的Crypto方案;参考实现包含的签名打包工具;支持单镜像和双镜像模式;经过第三方安全评估认证等。

1629446671403536.png

安全启动与安全更新参考实现在STM32各个系列的支持情况
-X-CUBE-SBSFU支持除了F0,F1,F2,F3以外的所有非CM33内核的系列
-TF-M SBSFU支持CM33带TrustZone内核的系列,目前包括L5和U5
更多关于安全启动与安全更新的内容请点击 STM32 安全启动与安全固件更新参考实现

1629446735940181.png

代码保护

代码保护的一个最基本的方面是调试端口访问控制,避免代码从调试端口被任意读出。
读保护RDP是多数STM32都支持的一个基本功能,从安全的角度考虑推荐使用RDP及别2,将调试端口永久关闭。
比较新的系列除了RDP2还有其他更加灵活的功能,即使不使用RDP2同样可以达到上电缺省关闭调试访问的效果,例如
-G0系列的RDP1+BOOT_LOCK功能
-H7系列的Security+安全用户存储区功能
-L5和U5的TrustZone+RDP0.5(L5和U5系列可以在RDP级别0.5的时候关闭安全侧的调试功能,实现安全调试,U5还增加了OEMKey功能,可以用Key保护RDP的降级)

1629446758156663.png

代码保护需要考虑的另外一个场景是部分代码和数据需要放在片外存储器的情况。
STM32也部分系列带有OTFDEC(On The Fly DECryption)硬件,OTFDEC模块在Bus Matrix 与OSPI之间,可以实时地解密外部Flash上的密文代码和数据,只需要设置好相应的区域、密钥等等,OTFDEC就可以自动解密被访问的密文数据,这个过程对CPU和DMA透明,无需额外的软件参与解密,不需要将解密数据加载到内部RAM,可以直接运行片外Flash上的加密代码。
OTFDEC模块也支持加密,但不是实时加密,数据首先被加密到RAM中,需要另外将RAM中的密文写回外部FLASH。

安全存储
敏感数据存储通常的做法是加密存储, 其中密钥的安全存储和使用是关键,需要考虑来自芯片外部和内部的攻击
•外部攻击主要依赖于调试端口访问控制和芯片生命周期管理
•来自芯片内部攻击主要是逻辑攻击,考虑的是软件漏洞可能带来的风险。通常通过硬件隔离机制,避免关键数据被代码任
意访问(包括存在风险的代码)
1629446973929827.png

STM32不同的MCU系列实现安全存储的方式不尽相同
•STM32L0和STM32L4系列带有Firewall硬件单元,配合PCROP,可以将密钥和使用密钥的crypto代码与其余部分的应用代码隔离开,实现密钥的安全存储与使用
•STM32H7带有crypto的型号中,通过使能Security选项字节,结合安全用户存储区、PCROP,以及硬件CRYPT单元密钥寄存器只写特性,在Boot阶段将密钥加载至Crypto硬件单元,跳转到应用程序后密钥不可见,但应用内可以使用CRYPT硬件进行加解密操作。
•STM32WB提供CKS(Customer Key Storage)功能,利用M0+与M4之间的双核隔离特性,在M0+侧提供AES密钥存储功能,M4上运行的应用代码可以使用密钥进行加解密操作,但是无法获取密钥数据本身。
•STM32L5系列支持TrustZone架构,利用TrustZone带来的系统隔离特性,配合HDP,AES硬件单元等实现对密钥的保护,同时在软件上提供基于TF-M软件框架的安全存储服务。
•STM32U5上,除了STM32L5已经提供的功能外,还新增加了HUK和SecureAES,HUK是硬件唯一密钥,出厂已经预置在每一颗U5芯片中,这个密钥直接关联到SAES模块,CPU和DMA都无法访问,提供了一个基于纯硬件的一机一密的密钥安全存储的功能。

关于存储保护相关的硬件特性的更多内容请点击STM32信息安全硬件特性

密码学算法引擎
软件方面,STM32提供支持所有系列的软件密码算法库X-CUBE-CRYPTOLIB,最新的V4版本新增加了对SM等算法的支持,同时带来了更简洁易用和更高运行效率的算法实现。
Cryptolib软件包下载链接https://www.st.com/x-cube-cryptolib
关于最新版本密码学算法库的更多内容请点击 STM32 密码学算法库

硬件方面,很多STM32系列都带有HASH,AES和TRNG硬件模块,较新的L4Q、WB、WL、L5和U5系列还带有PKA(Public Key Accelerator)公钥算法加速器硬件,支持RSA和ECC相关运算;U5上的SAES以及改进的PKA模块还增加了对侧信道攻击
的防御能力,进一步提高算法引擎的安全性。
1629447052168916.png


安全隔离
隔离到底解决什么问题,有什么用处?
-首先,隔离主要针对逻辑攻击,它的一个假设前提是软件可能存在漏洞,软件漏洞可能被利用,进而导致关键信息收到损害,如被盗取,被修改等等
-隔离的思想首先是区分资源不同的访问属性,软件运行在不同状态时对资源的访问权限是不同的,这里的资源可能是memory,可能是外设,甚至是内核的中断和寄存器等等,这样就可以把片上运行的软件进行区分,关键资源只允许关键的一小部分代码访问,其他应用程序的部分即使存在漏洞,比如说有buffer overflow的问题,可能导致恶意代码的注入和执行,即使有这样的情况,那些关键资源也还是处在一个安全的状态,不能够被恶意代码获取。这样隔离就可以降低软件漏洞可能带来的风险
1629447084679359.png
STM32MCU具有哪些隔离机制?

1629447118564774.png
-绝大部分的STM32 MCU(除了M0内核的MCU以外)内核本身都带有的MPU单元,这个单元可以划分出几个region,每个region可以设置不同的访问属性,配合内核的User和Privilege模式,能够实现对关键资源的访问控制
-除了MPU以外,某些STM32系列还有一些特别的硬件单元,可以起到隔离的作用,比如
-L0、L4的Firewall,Firewall可以保护Flash和RAM中的一部分,CPU和DMA都无法直接访问Firewall保护区域里面的内容,只能通过唯一的入口函数地址以函数调用的方式使用Firewall里的代码提供的服务
-部分系列(例如G0, G4, H7, L5和U5)还带有一个叫做安全用户存储区、或者隐藏Flash区的功能,这段特殊Flash区的大小可以由Option Byte进行配置,运行期间可以通过寄存器打开对这段Flash区域的保护,保护使能后在复位前将无法再次访问其中的任何内容
-还有一类是双核隔离机制,例如WB和WL
-M0+和M4两个内核核对Flash, SRAM,选项字节以及Crypto等外设具有不同的访问权限。WB的CKS就是基于双核隔离实现的密钥存储服务。
-最新的CM33内核系列的STM32 MCU采用的是TrustZone的隔离技术
-TrustZone技术将所有系统资源,从内核到memory到外设都可以区分为安全和非安全两种属性,代码在运行的时候有安全和非安全两种状态,对不同安全属性的资源也有着不同的访问权限
-STM32基于TrustZone的系统级隔离机制有着非常大的灵活性,不仅仅可以实现简单的秘钥存储以及crypto操作,还可以在安全区中运行更复杂的逻辑,比如一段指纹比对或者身份认证的算法等等

安全生产

安全生产主要针对的是代码或者数据交由第三方工厂进行烧写的情况可能存在的风险,例如数据盗取,数据篡改以及过量生产
STM32针对安全生产提供的解决方案是SFI,Secure  Firmware Install
-这个功能首先从芯片上提供支持,MCU中会预置SFI相关的代码以及密钥对,目前支持SFI的系列包括L4的一个型号,H7的部分型号,L5和U5的全系列等
-OEM可以使用自己的秘钥对需要烧写的binary进行加密,然后将加密密钥导入HSM,ST提供的HSM是银**安全级别的智能卡,OEM可以将HSM和加密后的binary密文交付工厂进行烧写
-烧写的过程需要配合支持SFI的烧写工具,ST提供的工具是STM32CubeProgrammer,STM32TrustPackageCreator是另一个PC工具,用于配置HSM以及加密OEM的binary,生成加密后的SFI文件
-通过SFI进行烧写全过程没有明文的binary出现,且带有完整性校验,HSM还可以进行烧录计数,进行产量控制,避免过量生
产情况的发生

SzBhXMiDC7.png

有关SFI的更多内容请点击STM32 安全生产方案


安全认证与评估
1629447148366066.png


参考资料与培训资源
文档资料

STM32信息安全总览
AN5156
Introduction to STM32 microcontrollers   security
STM32系列微控制器的安全性介绍》
应用笔记

代码保护相关资料
AN4701
Proprietary code read-out protection on microcontrollers of   the STM32F4 Series
《STM32F4系列微控制器的专有代码读取保护》
F4应用笔记
AN4758
Proprietary code read-out protection on STM32L4, STM32L4+   and STM32G4 Series microcontrollers
《STM32L4和STM32L4plus以及STM32G4微控制器上的专有代码读保护》
L4/L4+应用笔记
AN4968
Proprietary code read out protection (PCROP) on STM32F72xxx   and STM32F73xxx microcontrollers
《STM32F72x、F73x的PCROP使用说明》
F7应用笔记
AN4246
Proprietary Code Read Out Protection on STM32L1   microcontrollers
《STM32L1 微控制器的专有代码读取保护》
L1应用笔记
DB2641
Proprietary code read-out protection (PCROP),   software expansion for STM32Cube
《STM32Cube的专有代码读保护(PCROP)软件扩展》
PCROP扩展软件包简介
AN5281
How to use OTFDEC for encryption/decryption   in trusted environment on STM32H7Bxxx and STM32H73xx microcontrollers
《如何使用STM32H7Bxxx和STM32H73xxx微控制器上的OTFDEC进行加解密操作》
H7 应用笔记

代码/系统隔离相关资料
AN4730
Using the FIREWALL embedded in STM32L0/L4/L4+   Series MCUs for secure access to sensitive parts of code and data
《STM32L超低功耗系列MCU中嵌入的防火墙的应用手册》
安全防火墙Firewall
应用笔记
AN4729
STM32L0/L4 FIREWALL overview
《STM32L0和STM32L4防火墙概述》
AN4838
Managing memory protection unit in STM32 MCUs
《STM32微控制器上管理内存保护单元》
MPU
应用笔记
AN5347
STM32L5 Series TrustZone® features
《STM32L5的TrustZone特性》
TruzeZone
AN5421
Getting started with STM32L5 Series   microcontrollers and TrustZone® development
《基于STM32L5的TrustZone开发入门体验》
AN5600
AN5600: STM32L5 Series GPIO usage with TrustZone®
《TrustZone架构下使用STM32L5系列GPIO的使用》
AN5601
HDP secure area   for STM32H7B3xx microcontrollers
《STM32H7B3xx微控制器的HDP安全存储区》
STM32H7
应用笔记

随机数与密码学算法相关资料
UM1924
Legacy STM32 cryptographic library
《STM32加密库》
Cryptolib V3
用户手册
CAVP认证
X-CUBE-CRYPTOLIB FIPS CAVP certification
演示文稿
AN4230
STM32 microcontroller random number   generation validation using the NIST statistical test suite
《使用NIST统计测试套件验证STM32微控制器随机数生成》
应用笔记

安全启动与安全固件更新软件包相关资料
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

安全生产相关资料
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软件说明》
CubeProgrammer使用手册
DB4265
Hardware security module for secure firmware installation
用于安全烧录的硬件安全模块HSM
STM32HSM-V2
简要说明
DB3919
Hardware security module for secure programming
用于安全烧录的硬件安全模块HSM
STM32HSM-V1
简要说明

其他
AN2606
STM32 microcontroller system memory boot mode
STM32™ 微控制器系统存储器自举模式
启动模式
AN3371
Using the hardware real-time clock (RTC) in   STM32 F0, F2, F3, F4 and L1 series of MCUs
《如何使用STM32硬件RTC》
电源后备域与防入侵检测
AN5185
ST firmware upgrade services for STM32WB Series
《STM32WB系列的ST固件升级服务》
应用笔记
STM32WB CKS
OTFDEC
使用STM32L5OTFDECICACHE功能实时高效运行片外Flash中的加密代码
实战经验文章
OTFDEC_Efficiency_基于STM32H735G-DK板的验证
调试保护
使用STM32L5TrustZone特性控制调试端口访问,保护片上代码安全
使用STM32H7安全用户存储区
隔离访问
安全存储
使用STM32MPU实现代码隔离和访问控制
理解与应用MPU的特权与用户模式
如何根据应用需求调整STM32L5memory partition
使用STM32H7安全新特性实现敏感数据的安全存储与使用
STM32WB的密钥安全存储和使用
关键数据和代码在L0上的保护_基于防火墙和PCROP
PCROP
PCROP区域函数无法被调用的问题与解决
STM32F4xx   PCROP应用
代码实现PCROP清除
Firewall
发现STM32防火墙的安全配置
Crypto
STM32 Cryptolib 使用技巧——AES GCM 解密认证失败问题的研究
基于STM32加密库开发比特币应用的补充说明
CSS
时钟安全系统的应用(LSE篇)
安全启动
一步一步使用STM32安全启动与固件更新

培训资源
培训课程及资料
综合
- 信息安全基础
- 密码学基础
-   STM32硬件安全特性
- 安全启动与安全固件更新
STM32信息安全线上课程
视频课程
信息安全基础
信息安全的概念和方**
培训课件
STM32安全的概念与系统分析方法
密码学基础
密码学基本原理_上
密码学基本原理_中
密码学基本原理_下
密码学原理的应用_TLS
STM32硬件安全特性
STM32的加解密硬件模块
STM32的存储与执行保护
STM32的加解密硬件模块
STM32G0的安全功能
STM32加解密技术
STM32软硬件安全技术
安全启动与安全固件更新
SBSFU原理介绍
SBSFU初体验
SBSFU在STM32G0上的实现
X_Cube_SBSFU和STM32G0
STM32 安全技术Hands-On(基于STM32G0)
安全服务/解决方案
安全固件烧录_SFI
STM32硬件安全特性
STM32通用MCU信息安全培训
视频资源
视频资源
调试端口保护
H753安全调试理论介绍
H753安全调试操作演示
L5安全调试介绍+Demo演示
本地化视频资源
安全存储
H753安全存储和使用介绍
H753安全存储和使用Demo
关键代码和数据在L0上的保护
安全生产
SFI 固件安全烧录介绍
STM32H753 SFI操作演示
STM32L5 SFI操作演示



使用特权

评论回复
两只袜子| | 2022-6-16 11:26 | 显示全部楼层
给力,各种培训学习资料都搞到位

使用特权

评论回复
6552918| | 2022-6-16 14:38 | 显示全部楼层
STM32的信息安全做的非常全面,涉及到的每个环节都是安全的处理措施,保证产品安全和知识产权安全非常重要,更重要的是要让开发者能够简单易用,STM32经过多年的积累,有着非常丰富的实际应用案例,让开发者能够放心的去用,非常方便!

使用特权

评论回复
Gavin3389| | 2022-6-16 21:21 | 显示全部楼层
看了这个主体,才知道自己狭隘了,
开始想当然的理解成了信息安全,也认为当前信息爆发的时代,信息安全是非常重要的。
然后,安全不仅仅局限于此
隔离、保护,代码、固件,生产
安全问题可以说是伴随生活无处不在,也借此机会开拓下视野,查阅些资料
感谢!

使用特权

评论回复
lvyunhua| | 2022-6-18 12:44 | 显示全部楼层
STM32安全处理涵盖范围很广,通过学习,了解了一些安全启动代码,加密算法以及代码隔离措施等,他们都封装好库了,我们可以根据实际应用需要添加相应内容,极大提高我们工作效率,保护我们代码不会被别人轻易**。

使用特权

评论回复
zxf1809721203| | 2022-6-22 08:47 | 显示全部楼层
产品的智能化趋势使得产品的功能越来越复杂,代码也越来越多,如何提高产品在复杂逻辑运行代码下的安全性就显得十分重要,STM32安全处理中的隔离概念十分重要,通过识别软件中不同的模块,比如内存,外设,寄存器等,然后进行分区,特定的分区只有特定的代码才能访问,这样即使软件有BUG,只要没有获得对应分区的身份,那么也无法利用BUG进行攻击

使用特权

评论回复
做人要专业| | 2022-6-22 19:33 | 显示全部楼层
在如今物联网时代,信息安全已经不仅仅是邮件、手机通话的方面的通信安全;每种设备随着物联网技术的应用而互相连接,随之而来的生产、控制、远程升级等各个方面都面临着泄漏信息、修改、破坏,轻则设备功能失常,无法完成工作;重则会引起生产停止、各种事故等情况。
许多厂商都在做信息安全的产品和功能应用。STM32产品面对安全启动、安全固件更新、代码保护、安全存储、密码学算法引擎、安全隔离、安全生产等功能需求,从芯片硬件、软件上都做了很多工作,工程师只需通过调用即可实现信息安全。
STM32的信息安全学习拓宽了视野,对产品在安全性方面的管理很有帮助。

使用特权

评论回复
dongnanxibei| | 2022-6-26 17:53 | 显示全部楼层
STM32产品面对安全启动、安全固件更新、代码保护、安全存储、密码学算法引擎、安全隔离、安全生产等功能需求,从芯片硬件、软件上都做了很多工作,工程师只需通过调用即可实现信息安全

使用特权

评论回复
lark100| | 2022-6-26 23:15 | 显示全部楼层
在数据安全存储方面,通常的做法是加密存储, 其中密钥的安全存储和使用是关键,需要考虑来自芯片外部和内部的攻击:(1)外部攻击主要依赖于调试端口访问控制和芯片生命周期管理;(2)芯片内部攻击主要是逻辑攻击,考虑的是软件漏洞可能带来的风险。通常通过硬件隔离机制,避免关键数据被代码任意访问(包括存在风险的代码)。STM32不同的MCU系列实现安全存储的方式不尽相同:
(1)STM32L0和STM32L4系列带有Firewall硬件单元,配合PCROP,可以将密钥和使用密钥的crypto代码与其余部分的应用代码隔离开,实现密钥的安全存储与使用。
(2)STM32H7带有crypto的型号中,通过使能Security选项字节,结合安全用户存储区、PCROP,以及硬件CRYPT单元密钥寄存器只写特性,在Boot阶段将密钥加载至Crypto硬件单元,跳转到应用程序后密钥不可见,但应用内可以使用CRYPT硬件进行加解密操作。
(3)STM32WB提供CKS(Customer Key Storage)功能,利用M0+与M4之间的双核隔离特性,在M0+侧提供AES密钥存储功能,M4上运行的应用代码可以使用密钥进行加解密操作,但是无法获取密钥数据本身。
(4)STM32L5系列支持TrustZone架构,利用TrustZone带来的系统隔离特性,配合HDP,AES硬件单元等实现对密钥的保护,同时在软件上提供基于TF-M软件框架的安全存储服务。
(5)STM32U5上,除了STM32L5已经提供的功能外,还新增加了HUK和SecureAES,HUK是硬件唯一密钥,出厂已经预置在每一颗U5芯片中,这个密钥直接关联到SAES模块,CPU和DMA都无法访问,提供了一个基于纯硬件的一机一密的密钥安全存储的功能。

使用特权

评论回复
dongnanxibei| | 2022-6-30 10:04 | 显示全部楼层
信息安全是非常重要的

使用特权

评论回复
laocuo1142| | 2022-7-20 16:34 | 显示全部楼层
这资料给力,ST的安全策略

使用特权

评论回复
天灵灵地灵灵| | 2022-7-25 15:52 | 显示全部楼层
够丰富,够给力

使用特权

评论回复
heisexingqisi| | 2022-7-26 11:39 | 显示全部楼层
7884362df61ea6ee4d.png

使用特权

评论回复
玛尼玛尼哄| | 2022-7-27 17:56 | 显示全部楼层
STM32产品面对安全启动、安全固件更新、代码保护、安全存储、密码学算法引擎、安全隔离、安全生产等功能需求,从芯片硬件、软件上都做了很多工作,是技术者提供了很多方便

使用特权

评论回复
稳稳の幸福| | 2022-7-28 12:38 | 显示全部楼层
资料挺全的

使用特权

评论回复
yiyigirl2014| | 2022-7-31 16:31 | 显示全部楼层
STM32安全处理中的隔离概念十分重要

使用特权

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

本版积分规则