0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32WB的CKS功能提供在MCU上的密钥安全存储和安全使用方法

STM32单片机 来源:STM32 作者:STM32 2021-05-28 15:49 次阅读

我们都知道STM32WB是双核多协议无线微控制器,即主频为64 MHz的 ArmCortex‐M4内核(应用处理器)和主频为32 MHz的ArmCortex‐M0+内核(网络处理器),支持Bluetooth 5和IEEE 802.15.4无线标准。双核的好处是可以优化对资源的安全使用,保证和RF协议栈相关处理的实时性,并可同时提供电源管理的灵活性。

STM32WB的信息安全是以双核隔离为基础的。

STM32WB双核架构和双核间的隔离机制

调试端口访问:

出厂的芯片缺省关闭CM0+一侧的调试端口访问,即使在RDP0的状态下也只能调试CM4内核。

Option Byte

OptionByte中包含双核隔离相关的安全设置,例如CM0+才能访问的Flash区间等等。这些OptionByte受到保护,无法随意被修改。缺省出厂芯片已经使能CM0+的保护,相关的一些OptionByte设置无法通过调试端口或CM4进行修改。

片上Flash:

Flash的一部分只能由CM0+访问,CM4无法对该部分Flash进行读、写、擦。

片上SRAM

SRAM的一部分只能由CM0+访问,CM4无法对该部分SRAM进行读、写。

CRYPTO硬件资源:如AES,TRNG,PKA

系统上电复位时,缺省CRYPTO相关的硬件CM4可以使用。CM0+内核可以通过修改SystemConfig相应的寄存器使得这些硬件资源只能由CM0+内核进行控制,也称为把这些硬件资源配置成Secure访问模式。其中当AES1被配置为Secure时,CM4内核无法访问密钥寄存器,但是依旧可以访问AES1的其他寄存器使用AES1硬件单元进行加解密操作。

CKS (Customer Key Storage)

AES算法是应用程序中经常用到的一种保障数据机密性和完整性的方法,例如用于隐私数据的加密存储、加密通信等。其中,密钥作为最敏感的信息也需要受到保护。

STM32WB的CKS功能提供在MCU上的密钥安全存储和安全使用方法 :

存储在片上安全Flash的密钥无法通过调试端口获取(即使在RDP0条件下)

运行在CM4内核的应用程序代码也无法获得片上安全Flash中存储的密钥,避免软件漏洞带来的风险

应用程序代码依旧能够通过CKS和AES1硬件模块使用存储的密钥进行加解密操作

CKS能够存储多组密钥,应用程序代码可以通过密钥索引来指定AES运算所使用的密钥

用户密钥存储

用户密钥存储在“安全”Flash区域,用户代码和调试端口不可访问

CKS最多可以存储100个用户应用密钥(用于AES运算)

允许存储128位或者256位的AES密钥

对密钥的操作只能通过用户代码调用FUS接口完成

把密钥写到“安全”Flash区域,需要安全的操作环境

44bb6d76-be57-11eb-9e57-12bb97331649.png

用户密钥的写入 (Key Provisioning)

可以通过用户代码完成,也可以通过CubeProgrammer的GUI或者命令行完成

写入应用密钥的明文//simple key,需要安全的操作环境

写入应用密钥的密文//encrypted key,无需安全的操作环境

基于AES-128 GCM

写入用于解密encrypted key的密钥的明文//master key,需要安全的操作环境

该操作在手册中用“write”或“load”表示

用户密钥的写入通过应用代码实现

参考例程:

STM32Cube_FW_WB_VxxxProjectsP-NUCLEO-WB55.NucleoApplicationsCKS

给CKS_param赋值

typedef PACKED_STRUCT{uint8_t KeyType;uint8_t KeySize;uint8_t KeyData[32 + 12];} SHCI_C2_FUS_StoreUsrKey_Cmd_Param_t;SHCI_C2_FUS_StoreUsrKey_Cmd_Param_t CKS_param;CKS_param.KeyType = …;CKS_param.KeySize = …;memcpy(CKS_param.KeyData, pKeySimple_128, 16

调用FUS服务:SHCI_C2_FUS_StoreUsrKey

输入:CKS_param结构体

输出:芯片为该密钥分配的索引

SHCI_C2_FUS_StoreUsrKey (&CKS_param, &key_simple_128_idx );

用户密钥的写入使用STM32CubeProgrammer GUI实现

STM32CubeProgrammer 从2.4版本开始支持

芯片切换到系统 Bootloader 启动运行DFU,

STM32CubeProgrammer 以USB方式连接芯片

步骤:选择KEY文件 ——》 指定KEY类型 ——》 写入KEY

注意:GUI界面没有返回为该密钥分配的索引,需要用户自己记录

应用密钥的装载和使用

Load:AES1的密钥装载

SHCI_C2_FUS_LoadUsrKey (key_simple_128_idx)

该操作会把AES1密钥寄存器配置成Secure

SAES1@SYSCFG_SIPCR

只能由运行在CM0+上的FUS来配置

运行在CM4上的用户代码可以读取其状态

安全状态和AES1时钟是否使能没有关系

使用步骤

Step1:AES1模块初始化

初始化结构体的pKey,设置为空指针即可

使能AES1时钟

Step2:密钥装载

要在AES1模块disable1的时候 (EN=0)

Step3:使用AES1做加解密

hcryp1.Init.DataType = CRYP_DATATYPE_8B;hcryp1.Init.KeySize = CRYP_KEYSIZE_128B;hcryp1.Init.Algorithm = CRYP_AES_CBC;/* Key will be provided by CKS service */hcryp1.Init.pKey = NULL; hcryp1.Init.pInitVect = AESIV;HAL_CRYP_Init (&hcryp1);SHCI_C2_FUS_LoadUsrKey (key_simple_128_idx);HAL_CRYP_Encrypt(&hcryp1, Plaintext, size, EncryptedBuf, timeout)

应用密钥的使用

Lock:

SHCI_C2_FUS_LockUsrKey (key_simple_128_idx)

对某个key lock之后,将无法再对该key进行Load操作,再次Load该Key时FUS API返回错误代码0xFF;但是不影响已经在AES1密钥寄存器中的key

对该key load的禁止操作,会一直生效直到下次系统复位

注意事项:关于后续更新

为了避免有效密钥一直存在于AES1密钥寄存器中,建议使用完毕后Load一个dummy key或者disable AES1

后续FUS版本(从 STM32CUbeWB1.11开始)会增加API:Unload

早期出厂芯片预装的FUS版本较老,在FUS升级的时候,通过CSK存储在芯片里的用户key会被擦除

从FUS1.1.1.1或者FUS1.2.0开始,再做FUS升级,不会影响到已经存在的用户key应用密钥的使用

小结

使用CKS对AES密钥进行保护,与传统的直接将AES密钥存储在Flash中的做法有明显的优势:

CKS存储的密钥数据无法通过调试端口获取,已经存储的密钥数据,即使在RDP为0的情况下也不能通过调试端口访问。

密钥使用过程中应用程序代码虽然可以使用密钥进行加解密操作,但是始终无法直接获取密钥数据本身,降低了软件漏洞可能带来的风险。

原文标题:信息安全专题 | 安全存储(2)STM32WB的用户密钥存储 (CKS)

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    12

    文章

    3854

    浏览量

    84651

原文标题:信息安全专题 | 安全存储(2)STM32WB的用户密钥存储 (CKS)

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32WB55开发(1)----监测STM32WB连接状态

    首先会讨论为什么需要监测连接状态,然后介绍STM32WB提供的相关工具和技术。随后,我们会详细解释如何使用这些工具来实时跟踪和管理连接状态,以及如何解读和响应不同的连接状态事件。通过这些内容,读者将能够更好地理解和利用STM32WB
    的头像 发表于 12-01 15:41 393次阅读
    <b class='flag-5'>STM32WB</b>55开发(1)----监测<b class='flag-5'>STM32WB</b>连接状态

    AT32WB415安全库应用说明

    这篇应用笔记主要在阐述AT32WB415系列安全库区的应用原理、软件使用方法及范例程序。
    发表于 10-26 06:54

    如何让STM32WB在没有LSE时运行BLE应用程序

    如何让STM32WB在没有LSE时运行BLE应用程序
    的头像 发表于 10-24 16:41 224次阅读
    如何让<b class='flag-5'>STM32WB</b>在没有LSE时运行BLE应用程序

    STM32WB如何一次性烧写FUS+STACK+APP?

    在使用STM32WB系列MCU时,通过STM32CubeProgramer GUI方式更新FUS,Stack,User APP,需要操作多次,并且要输入不同的地址,比较繁琐,不适合在量产中操作使用
    的头像 发表于 10-13 18:13 1549次阅读
    <b class='flag-5'>STM32WB</b>如何一次性烧写FUS+STACK+APP?

    应用笔记 | STM32WB基于Custom Template实现客户定制BLE私有协议

    关键字:STM32WB,BLE私有协议,定制   目录预览 1.引言 2. STM32CubeMx 实现步骤 3.测试平台搭建及功能测试 4.小结 0 1 引言 STM32WB55是一
    的头像 发表于 10-08 17:40 967次阅读

    STM32WB BLE应用低功耗设计

    电子发烧友网站提供STM32WB BLE应用低功耗设计.pdf》资料免费下载
    发表于 09-20 14:58 4次下载
    <b class='flag-5'>STM32WB</b> BLE应用低功耗设计

    STM32WB的用户密钥存储(CKS)

    电子发烧友网站提供STM32WB的用户密钥存储(CKS).pdf》资料免费下载
    发表于 09-20 14:47 0次下载
    <b class='flag-5'>STM32WB</b>的用户<b class='flag-5'>密钥</b><b class='flag-5'>存储</b>(<b class='flag-5'>CKS</b>)

    开启STM32WB无线新市场

    电子发烧友网站提供《开启STM32WB无线新市场.pdf》资料免费下载
    发表于 09-20 14:34 0次下载
    开启<b class='flag-5'>STM32WB</b>无线新市场

    STM32WB硬件、软件、BLE低功耗设计及速率优化

    电子发烧友网站提供STM32WB硬件、软件、BLE低功耗设计及速率优化.pdf》资料免费下载
    发表于 09-20 11:47 3次下载
    <b class='flag-5'>STM32WB</b>硬件、软件、BLE低功耗设计及速率优化

    STM32WB系列微控制器起动流程

    电子发烧友网站提供STM32WB系列微控制器起动流程.pdf》资料免费下载
    发表于 09-20 11:02 1次下载
    <b class='flag-5'>STM32WB</b>系列微控制器起动流程

    使用STM32WB系列微控制器构建无线应用

    电子发烧友网站提供《使用STM32WB系列微控制器构建无线应用.pdf》资料免费下载
    发表于 09-20 10:15 0次下载
    使用<b class='flag-5'>STM32WB</b>系列微控制器构建无线应用

    STM32WB系列的ST固件升级服务

    本文档介绍了 STM32WB 系列微控制器可用的固件升级服务(FUS)。这些服务由位于嵌入式 Flash 存储安全部分中的意法半导体代码提供,可供通过用户 Flash
    发表于 09-12 09:34 0次下载

    STM32WB产品详解及FUS无线协议栈升级

    STM32WB产品详解及FUS无线协议栈升级2.4GHz无线双核STM32WB, 采用SoC单芯片设计,支持多协议射频。
    发表于 09-06 06:35

    STM32WB BLE协议栈编程指南

    本文档的主要目的是为开发人员提供有关如何使用 STM32WB BLE 协议栈 API 和相关事件回调开发低功耗蓝牙(BLE)应用的一些参考编程指南。本文档介绍了允许访问 STM32WB
    发表于 08-14 10:13

    STM32WB无线产品介绍

    电子发烧友网站提供STM32WB无线产品介绍.pdf》资料免费下载
    发表于 07-31 16:50 1次下载
    <b class='flag-5'>STM32WB</b>无线产品介绍