|
一、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发帖赢大礼】使用MPU6050模块、img_dsc、img_btn机制实现一些简单有趣的动画效果
【福利三:逢7发帖赢大礼】使用arc弧形拉条控件控制PWM舵机及使用SPI3接口操作NRF24L01模块进行无线通信
【福利三:逢7发帖赢大礼】调试nucleo-WBA65RI工程测试样板的一些心得
【福利三:逢7发帖赢大礼】lv_timer和BME680实现温度、湿度、气压数据读取
【福利三:逢7发帖赢大礼】成功利用STM32H743VI片内SRAM12和DTCM空间(完全胜利)
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
【福利三:逢7发帖赢大礼】使用惠勤致远STM32H743VI开发板+ST7796并口彩屏移植LVGL9.5并分享一些额外内容
【 逢7发帖赢大礼】7、TouchGFX中实现云彩流动效果
【 逢7发帖赢大礼】6、TouchGFX中添加图像素材和自定义代码编辑
【 逢7发帖赢大礼】5、TouchGFX 创建自定义界面和交互
微信公众号
手机版