|
一、STM32H7S基于硬件的安全存储
1、SAES密钥来源 1)硬件唯一密钥HUK ① 每颗芯片出厂时自带HUK,不需要用户烧写,每颗芯片的HUK不同 ②HUK无法被软件读取,只能通过私有总线直接加载到SAES 2)后备域硬件密钥BHK ①使用BHK前,软件需要将密钥写入TAMP Backup registers的前8个寄存器,即TAMP_BKP0R ~TAMP_BKP7R ②BHK可以被锁定,锁定后软件无法读取,此时BHK只能由私有总线导入SAES ③BHK导入SAES前需要通过BKPxR寄存器的读取操作触发BHK向SAES的导入 3)应用硬件密钥AHK ①OBK存储区的前8个index保留为AHK使用,这8个index的数据为write only,写入后无法读取,只能通过私有总线导入SAES ②AHK导入SAES前需要对相应的index做一次OBK读取操作,触发AHK向SEAS的导入 2、硬件唯一密钥HUK➔RHUK和DHUK 1)DHUK 由RHUK派生而来 2)SAES不会直接使用RHUK,而是先进行密钥派生得到DHUK,加解密使用DHUK 3)DHUK的派生受多重因素影响 ①SBS-HDPLx,EPOCH,SAES 密钥使用模式,密钥长度选择,Privilege信号等 ②只有所有密钥派生参数都相同的时候才能得到相同的DHUK ③来自Flash寄存器的EPOCH值在每次通过DA流程将Product State回退到Open时自动+1
3、AES 密钥的安全存储与使用(举例)
二、STM32H7R/S OBK安全存储区 1、专用OBK存储区 (OptionByte Key Area) 1)独立的存储区域 ①不占用User Flash空间 2)带有时域隔离特性,区分针对不同HDPL的区域 ①只有系统处于对应的HDP Level时才能访问 ②针对3 个HDPL级别的安全存储区 HDPL0 → DA-Config HDPL1 → iROT (ST-iROT or OEM-iROT) HDPL2 → uROT 3)Product State回退时OBK区域内容自动擦除 4)存储在OBK区域的数据可以通过硬件密钥加密(H7S) ①加密可使用由HUK派生的DHUK,或者AHK 对应不同HDPLx级别的DHUK派生密钥不同 DHUK派生与EPOCH(version counter)也相关 Regression回退操作将使得通过DHUK加密的数据无法被解密,防止重放攻击
二、H7R/S OBKeys 和 H5类似,但实现方式差异很大 硬件层面上,H7R/S 采用链表方式实现,H5采用地址映射方式实现 (双bank交换模式)
三、举例
学习学习加油 |
STM32H750 外扩 QSPI FLASH 跑 2 小时就死机?LAT1151 官方根治方案
STM32H723 多通道序列 ADC 启动不了?寄存器操作必须等 ADRDY 就绪
经验分享 | STM32H7 LPTIM+DMAMUX+BDMA应用演示
经验分享 | STM32H7系列ADC DMA传输异常案例分享
经验分享 | STM32H7 MDMA 与通用DMA的联动传输示例
STM32H750 基于 Keil 制作 QSPI 外部 Flash 下载算法 全流程实操指南
STM32H743 BDMA+LPTIM+LPUART应用演示
经验分享 | STM32H723 SPI 通讯异常排查:实时观察窗口的 “隐形干扰” 解决方案
经验分享 | STM32H7 SPI NSS 脉冲模式灵活应用:解决外置 ADC 通信干扰问题
经验分享 | STM32H7 双核调试配置:STM32CubeIDE 下 M7+M4 协同调试实操
微信公众号
手机版