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

本文继续为大家介绍STM32H7系列如何实现密钥的安全存储与使用。

使用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上的安全存储. 应用代码

▲ 安全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

(0)

相关推荐

  • STM32单片机的ISP使用方法

    干了七八年51单片机和CPLD,最近几年又干STM32单片机和FPGA,都说30而立40不惑,现在30几还是没立,估计40几还是会惑,经常在网上闲吹久了,还是写点实用的东西,全当自己写的笔记,到40几 ...

  • STM32CubeMX STM32F1系列开发时遇到的四个问题及解决方案分享

    (图片为小马哥TJ-STM32F103C8最小系统) 这四个问题是我在使用STM32F103C8T6 + STM32CubeMX做项目时遇到的,给大家分享一下,以下四个问题重要程度依次降低,分别是: ...

  • STM32 Flash详解

    本文将根据ST官方Flashprogramming manual,文档编号:PM0059,讲解STM32F207内部Flash编程. 01 概述 这里的flash是指STM32F207内部集成的Fla ...

  • 单片机程序烧录的3种方式(ISP、ICP、IAP)是什么

    说起给单片机烧录程序,大家应该都不陌生吧,我最早接触单片机是从51单片机开始的,型号是STC89C52RC,当时烧录程序就是用的下面这种烧录软件--STC-ISP. 这种方式,通过串口连接单片机,选择 ...

  • GD32F103替换STM32F103需要注意的地方

    查了下GD的手册和一些论坛中使用过的大佬发布的帖子,GD32F103替换STM32F103需要注意的地方总结如下: 一.相同点 1) .外围引脚定义: 相同型号的管脚定义相同 2) .Cortex M ...

  • 浅谈STM32的启动过程

    分享这篇文章,谈一下STM32启动流程.如果读者朋友已经有过汇编相关基础,能够够好理解本文内容.汇编语言是比C语言更接近机器底层的编程语言,能让我们更好的理解和操纵硬件底层. STM32三种启动模式 ...

  • 【科创板】紫晶存储估值分析——底层光存储战略企业

    新股开板预测说明:[打新必读]专注于新股上市开板预测,所有新股开板预测都会在上市前一天推出,在过去的几年预测统计数据表现在准确率维持在72-78%之间.关注公众号[新股必读]第一时间获取新股开板预测. ...

  • 我的数据我做主!绿联网络私有云存储轻松玩转数据存储

    创作立场声明:个人分享,本文仅代表作者从一个普通消费者的角度去评价体验这款产品,希望对大家有所帮助,也欢迎和作者进行交流. 前言: 小时候家里很早就配置了录像机和VCD,我也很早接触了电影文化,成为一 ...

  • 存储基础和FC SAN存储介绍

    PDF下载链接: 存储基础和FC SAN存储介绍 存储就是根据不同的应用环境通过采取合理. 安全.有效的方式将数据保存到某些介质上并能保证有效的访问.总的来讲可以包含两个方面的含义:一方面它是数据临时 ...

  • 聚焦存储即平台,浪潮存储迎来发展新机遇

    当浪潮信息总裁彭震在IDTC2021浪潮存储数据科技峰会现场公开表示,浪潮存储要做中国第一. 然而,大家都熟知数据存储市场一直竞争激烈,争中国第一,浪潮存储凭什么? ▽ ▽ ▽ 明确挑战,明确路线 从 ...

  • 威刚宣布导入长鑫存储内存芯片,深耕国内存储市场

    威刚科技近日宣布,将针对中国市场导入国产存储颗粒大厂长鑫存储的高质量高效能内存颗粒,搭配威刚科技的兼容性测试标准,评估导入U-DIMM 与 SO-DIMM内存方案,并完美兼容于目前市面上的各式台式机与 ...

  • 蓝光存储产业专题报告

    一. 算力.存储资源集中化,有望成为未来长期趋势 1.1 信息终端发展演进过程中,算力资源集中化趋势确立 信息终端的状态可以概况为 3 个时代:1)功能单一.种类丰富.彼此孤立的机械时代,2)功能多 ...

  • 中考专题复习无刻度尺作图

    中考专题复习无刻度尺作图

  • 使用分布式存储协议进行内容流存储,Audius赋能全球艺术家和创作者

    5月5日,分布式存储协议官方博客发布最新文章<Audius使用分布式存储协议进行内容流存储,赋能全球艺术家和创作者>,介绍了使用分布式存储协议的音乐共享平台Audius.以下为官方原文. ...

  • 中考数学复习分式方程专题练习50题,学会了就是送分题!

    中考数学 助力轻松升学! 分式在中考中必考,一般会考查到分式化简求值和解分式方程,都以基本的运算为主,有时会考查到根据分式方程解的情况求字母参数的值,以及分式方程的应用.下面一起来看看吧~ 01 分式 ...