信息安全专题 | 安全存储(1)STM32H7的密钥存储

发布时间:2023-02-06  

使用STM32H7 安全新特性实现敏感数据(密钥)的安全存储与使用

密钥的安全存储与使用

安全通信、用户数据加密存储等都离不开密钥,密钥安全存储与使用是嵌入式系统中常见的安全功能需求之一。MCU上对于密钥的保护通常会从几个方面着眼 :

  • 调试端口访问:避免通过调试端口获取密钥,通常通过调试端口保护机制来实现

  • 软件代码访问:禁止任意软件直接读取密钥,避免由于软件漏洞可能带来的密钥被恶意代码获取的风险,可以通过隔离机制来实现

  • 运行期间对密钥使用的保护:如果加解密操作通过软件实现,那么软件隔离机制是方法之一;如果加解密操作可以通过硬件单元完成,那么让密钥只能由硬件直接操作而不允许CPU/DMA访问也是一 种有效的方法

STM32H7新特性提供基于片上Flash的安全存储

  • 调试端口连接可控:在RDP0条件下也可实现对调试端口的保护:上电调试接口即不可连接(类似RDP2的效果);比RDP2更灵活:可以由用户代码控制调试端口访问权限,实现安全调试,并保留修改选项字节的可能性

  • PCROP区域阻断D-Bus访问,防止程序窃取敏感数据

  • 用户片上Flash进一步隔离:保护根密钥不被木马程序盗取

  • CRYP的KEY寄存器具有只写属性:普通代码可以使用它对存储在普通区域的敏感数据密文做解密操作,但是无法拿到密钥本身

PCROP保护的设置和撤销

  • PCROP区域的设置:每个bank可设置一个PCROP区:大小从512字节到整个bank;粒度,256字节;由以下选项字节指定有效范围PROT_AREA_START1/2、*** _END1/2;起始地址 > 结尾地址,保护无效

  • PCROP区域范围只能增大,不能减小,除非撤销区域保护后重新设置范围

  • PCROP区域的撤销:RDP降级 + PCROP范围无效,同时进行;若此时RDP=0,要先升级到RDP1再做降级

  • PCROP区域的保留-由于其他原因需要做RDP降级,但同时想保留PCROP区域里的内容,以及保护效果:区域范围保持不变(起始地址 < 结束地址);DMEP1/2 = 0


STM32H7上的安全存储

▲ STM32H7上的安全存储. 启动代码

▲ STM32H7上的安全存储. 应用代码

▲ 安全STM32H7 安全存储示例

安全存储例程使用说明

  • 解压缩软件包,使用熟悉的IDE分别打开Boot和App两个工程,分别编译

  • App工程可以使用IDE或者熟悉的烧录工具下载

  • Boot工程:Boot工程image,占据片上Flash第一个Sector;密钥恢复函数所在的PCROP区域,也在第一个Sector里面;使用IDE对Boot工程编译即可,得到Boot.hex。不要继续使用IDE来下载

  • 密钥恢复函数的生成和下载:到命令行窗口,分别使用两个脚本生成 “密钥恢复函数”,以及下载密钥 和Boot image到片上Flash的第一个Sector(如下图)

  • 打开串口调试助手:115200波特率,8bit数据位,1bit停止位;无校验位,无流控

  • 启动STM32H753-Nucleo板(复位按键+用户按键)

▲ Boot 工程菜单

密钥的预装载和后续使用

  • 密钥,由运行于安全用户存储区的Boot在上电的时候从PCROP保护区域执行代码,预装到CRYP硬件模块的密钥寄存器,该寄存器具有“WO”属性

  • 在后续的CRYP操作中,HAL驱动不能再去修改密钥寄存器,因而示例程序中的HAL Driver已经做了如下一些修改:仅仅在初始化结构体中,使用空指针赋值pKey是不够的;还需要对初始化结构体中的KeyIVConfigSkip成员进行特别规定,添加新的选项(***_Never)

▲ App工程

▲ 加解密操作的验证

▲ AES-GCM 注意事项

注意事项

  • SEC_AREA没有安全区时,只能由RSS来初始化;有了安全区后,运行在其中的代码可以修改SEC_AREA;STM32CubeProgrammer是无法操作SEC_AREA成功的

  • SECURITY=1,IDE下载可能会失败;要么从STM32CubeProgramer连接后,清零SECURITY;要么修改工程的复位连接方式

调试Boot工程 (对PCROP区域代码的调用)

  • Flash保护没有打开时,可以在Boot工程调试PCROP区域里的 “密钥恢复函数”

  • Boot image和 “密钥恢复函数”,在同一个可擦除Sector,由脚本一起烧录

  • 调试Boot image时,需要去掉对应的flash loader设置:三种IDE配置如下

密钥恢复函数

  • 使用脚本把密钥数据转换成 “密钥函数”

  • 把密钥恢复到该函数的调用参数中:fp ((uint8_t *)&(CRYP->K2LR)) // 给CRYP使用;fp(&key[0]) // 用于打印到串口屏幕,供第三方 加解密工具做同样操作,来比对加解密结果

  • 为进一步提高安全性:密钥恢复函数不接受任何参数,固定是把密钥恢复到CRYP密钥寄存器中;参见 “密钥函数” 生成脚本做相应修改


小结

安全STM32H7能够提供片上存储的安全性安全硬件,助力安全存储:

  • 安全用户存储区-选项字节设置,上电即生效

  • PCROP保护-选项字节设置,上电即生效

  • CRYP密钥寄存器WO

  • 调试端口连接可控 — 上电缺省不可连接


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    合用户的场景。同时例子固件仅支持从UART传输固件。实际中的固件则是需要支持从网络接受固件。这一点在改动时,可以修改固件下载部分。STM32 SBSFU的固件下载部分和固件解密部分是分开的。固件下载......
    SBSFU 的固件下载部分和固件解密部分是分开。固件下载可以在用户固件中完成,需要的安全性低。而固件解密则是在安全性高的启动部分完成。 如果是资源敏感的STM32 MCU 应用,则应......
    三菱PLC的漏洞,它的编程软件是先将密码读到电脑内存在和用户输入的密码进行比较,密码对就可以读出程序。我试验了一下,用串口软件把倒数第二行字符发到PLC,PLC同样返回了密码。说到这大家知道这个解密软件......
    到固件之后,需要对固件进行解密STM32 SBSFU 的双镜像解密操作时是发生在启动时,而不是固件下载时。这种设计是为了双镜像的数据交换 。Flash 运行的代码不能是正在改写的的代码,而启......
    到电脑, 安装ST的ST-LINK Utility软件,使用STM32 ST-LINK Utility 软件下载固件(这个软件官网可以下载)。先连接后下载,要是软件识别不了你的芯片,那你......
    库开发比特币应用作了一些补充的技术说明。 STM32 加密库 STM32 加密库提供对称加解密,非对称加解密,以及HASH算法,并通过了CAVP FIPS认证,可使用在各类安全相关的应用。 对称加解密算法支持AES、DES、3DES......
    直接读取密钥,避免由于软件漏洞可能带来的密钥被恶意代码获取的风险,可以通过隔离机制来实现 运行期间对密钥使用的保护:如果加解密操作通过软件实现,那么软件隔离机制是方法之一;如果加解密......
    ,它连接了PC13针脚 那么我就选择这个文件下载 下载完成后,我们要烧录这个文件到STM32里,我们先下载所需要的软件,叫做FlyMcu,下载地址:https://www.lanzous.com......
    STM32安全技术导论之二】加解密技术;无论通讯安全还是设备安全都离不开加解密技术。我们经常需要需要各种各样的密码,那么背后一定是加解密技术。 加解密技术说白了就是变换,加密......
    固件更新:双image的管理 三个区域及各自的角色 slot #0,存储已解密的、当前运行的固件(头+体),SBSFU上电核实后就运行它 slot #1,存储下载的、新版固件头 + 还未解密......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>