[应用相关]

STM32信息安全硬件特性

[复制链接]
651|10
手机看帖
扫描二维码
随时随地手机跟帖
LEDyyds|  楼主 | 2021-12-30 09:28 | 显示全部楼层 |阅读模式
1.1身份识别
•Unique ID芯片唯一标识
STM32众多列产品都带有UID,出厂时已经烧写在STM32芯片的系统Flash区域,UID的长度为96bit,作为芯片的唯一标识号。
UID的常见用途
•基于UID通过某种算法生成搭载该芯片的产品的唯一序列号
•基于UID进行密钥派生
芯片的参考手册有专门章节描述,请参考Device electronic signature章节
•OTP一次性写入区域
STM32 MCU的多数系列都带有OTP区域,例如F2,F4,L4,F7,G0,G4,WB,L5,U5等等(OTP区域的支持以及大小要看具体产品型号)。
OTP的常见用途
•一次性写入产品标识信息,写入后无法变更
•一次性写入不可变更数据,例如安全启动用于验证应用合法性的公钥信息
OTP的操作方式请参考芯片的参考手册Embedded Flash memory (FLASH)章节的相关描述

1.2存储保护、软件IP保护
•WRP 内部Flash写保护
WRP能够保护片内Flash指定区域的内容不被意外或恶意地修改或擦除,STM32全系列产品都带有写保护功能。
根据产品系列的不同,WRP的配置方式略有不同,L4、G0、G4、WB、L5、U5等系列可以设置受保护的起始和末尾Page,其它一些系列可以独立设置需要保护的Page/Sector。

WRP结合RDP2可以使得一段片上Flash成为相当于ROM的区域,该区域代码或数据将具有不可改变的特性。
STM32U5的WRP还增加了LOCK功能,一旦WRP LOCK被设置,WRP的区域设置无法随意修改,WRP LOCK的撤销必须伴随RDP降级,可以达到将部分FLASH ROM化的效果。

•RDP读保护
RDP读保护所保护的对象包括内部Flash,选项字节,内部SRAM(如SRAM2),OTP区域,Backup后备域RAM及寄存器等。在STM32L5和STM32U5这些新系列中,RDP的保护对象还扩展到OTFDEC区域密钥等。

RDP具有0、1、2三个级别(注:F1系列的RDP功能不支持RDP2),支持TrustZone的L5和U5还增加了一个0. 5级别。出厂时芯片的RDP级别缺省为0,即完全开放、没有保护;RDP设置为级别1时,调试端口虽然可以连接,但是受保护的各个区域(Flash,RAM,Backup RAM/register)无法通过调试端口访问,即使从system bootloader启动或者从RAM运行的代码也无法访问那些区域;RDP1状态下选项字节仍旧可以修改,因而可以回退到RDP0,但是该操作会触发全片Flash擦除;RDP2状态则会完全关闭调试端口,并且无法回到RDP1或者RDP0。STM32U5的RDP增加了OEM Key机制。设置OEM2Key可以允许使用OEM2Key从RDP2回退到RDP1,同时RDP1到RDP0.5的回退也受到OEM2Key的控制;设置OEM1Key,将使得RDP1到0的回退受到OEM1Key的控制,不能随意进行RDP降级。

L5和U5是基于CM33内核带有TrustZone的产品系列,对应也增加了一个RDP0. 5级别。RDP0.5状态能够禁止调试端口对Secure资源的访问,但依旧允许Non-Secure区域的调试,给TrustZone环境下的开发带来更多灵活性。同时RDP0.5级别时,上电缺省调试端口就处于关闭状态,只有当CPU运行至非安全状态时,调试端口才能再次被打开,因而可以基于此在L5和U5上实现安全调试机制,相关更多内容请参考实战经验**:使用STM32L5的TrustZone特性控制调试端口访问,保护片上代码安全
RDP1、RDP2可以提供基本的代码和IP保护功能,防止设备出厂后片内代码和数据从调试端口被任意获取获取。

•PCROP私有代码保护
PCROP提供了一个额外层次的代码保护,PCROP可以设置内部Flash的指定区域只能进行取指令操作,而无法进行数据读访问,也不能修改或擦除,也就是说无论是通过调试器还是芯片运行的代码(包括运行在PCROP区域内部的代码本身)都无法以数据访问的形式读取PCROP保护区域的内容(包括里面的指令和数据)。
PCROP的常见用途是防止恶意软件窃取MCU内部的代码,PCROP保护区域的代码无法被任何软件读取,但是可以执行(以指令访问的形式被取指),其中的函数API可以被调用。PCROP同时也可以成为对数据进行保护的变通手段,这时候,需要将被保护的数据转换成一段指令,只有执行该段指令之后,数据才会被恢复到寄存器或者RAM当中。
PCROP相关资料:
应用笔记/软件包
应用笔记/软件包
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应用笔记
X-CUBE-PCROP
Proprietary code read-out protection (PCROP)   software expansion for STM32Cube (AN4701, AN4758 and AN4968)
《专有代码保护 (PCROP) STM32Cube软件扩展包》
PCROP扩展软件包及简介
DB2641
Proprietary code read-out protection (PCROP),   software expansion for STM32Cube
《STM32Cube的专有代码读保护(PCROP)软件扩展》
PCROP区域函数无法被调用的问题与解决
STM32F4xx PCROP应用
代码实现PCROP清除
实战经验**

WRP,RDP,PCROP的操作方式请参考芯片的参考手册FLASH memory protection章节的相关描述。(对应示例程序包含在各个STM32 MCU系列的STM32Cubexxx固件包里)

WRP,RDP,PCROP能够对代码、数据提供基本的保护,如果希望这种保护具有更多的灵活性,包括考虑芯片内运行的软件本身对敏感数据、代码的访问控制等,则可以进一步使用代码和系统隔离机制,参见代码/系统隔离部分的介绍。

•OTFDEC(On-The-Fly Decryption)实时解密
OTFDEC功能用于保护放置于外部OSPI Flash上的代码和数据的机密性。代码和数据可以事先经过AES加密后以密文的形式存储于外部OSPI Flash,从而防止由于数据、代码明文存放于外部Flash而带来的安全风险。系统运行时,外部Flash上的密文代码和数据经由OTFDEC模块实时解密,该解密过程对CPU透明,无需额外软件参与。支持OTFDEC的STM32系列包括L5,U5,H73x/Bx

OTFDEC相关例程包含在相关STM32MCU固件包里。详细的使用方法详见芯片参考手册OTFDEC章节的相关描述,也可以参考AN5281。
应用笔记
AN5281
How to use OTFDEC for encryption/decryption   in trusted environment on STM32H7Bxxx and STM32H73xx microcontrollers
《如何使用STM32H7Bxxx和STM32H73xxx微控制器上的OTFDEC进行加解密操作》
H7 应用笔记
OTFDEC
使用STM32L5的OTFDEC和ICACHE功能实时高效运行片外Flash中的加密代码
OTFDEC_Efficiency_基于STM32H735G-DK板的验证
实战经验**

使用特权

评论回复
她已醉| | 2022-10-17 05:03 | 显示全部楼层
现在来说,对安全方面已经很重视了

使用特权

评论回复
将爱藏于深海| | 2022-10-17 05:25 | 显示全部楼层
其实我很想知道,ST的唯一ID是都代表什么内容

使用特权

评论回复
温室雏菊| | 2022-10-17 05:48 | 显示全部楼层
正常都是用外置加密芯片,或者内置加密程序都是可以实现固件安全的

使用特权

评论回复
白马过平川| | 2022-10-17 06:10 | 显示全部楼层
嗯,用存储芯片配合保护固件的话,能好一些

使用特权

评论回复
一只眠羊| | 2022-10-17 06:32 | 显示全部楼层
如果程序不大,业务不复杂,可以使用OTP实现的

使用特权

评论回复
月亮一键变蓝| | 2022-10-17 06:55 | 显示全部楼层
身份识别挺好用的,唯一ID真的很好用

使用特权

评论回复
故意相遇| | 2022-10-17 07:17 | 显示全部楼层
还没用过ST的内部OTP部分,这个怎么使用呀?

使用特权

评论回复
捧一束彼岸花| | 2022-10-17 07:39 | 显示全部楼层
软件IP保护咋玩?比较好

使用特权

评论回复
风凉| | 2022-10-17 07:51 | 显示全部楼层
安全好像还有什么ASE操作吧,还是啥来着,都属于安全范畴

使用特权

评论回复
西洲| | 2022-10-17 08:14 | 显示全部楼层
好像高端一些的ST的芯片,都自带安全加密功能

使用特权

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

本版积分规则

101

主题

507

帖子

1

粉丝