|
一、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交换模式)
三、举例
学习学习加油 |
【 逢7发帖赢大礼】7、TouchGFX中实现云彩流动效果
【 逢7发帖赢大礼】6、TouchGFX中添加图像素材和自定义代码编辑
【 逢7发帖赢大礼】5、TouchGFX 创建自定义界面和交互
【 逢7发帖赢大礼】4、CubeMX工程复用以及TouchGFX应用
【 逢7发帖赢大礼】3、利用CubeMX添加TouchGFX功能:工程修改和编译烧录
【 逢7发帖赢大礼】2、利用CubeMX添加TouchGFX功能:CubeMX配置
【 逢7发帖赢大礼】1、利用CubeMX生成正点原子H7R7开发板的STM32CubeIDE工程
CubeMX生成CubeIDE工程代码乱码
经验分享 | 基于STM32H7不同MPU配置的拷贝性能比较
【STM32U3 评测】CAN基本通讯测试
微信公众号
手机版