STMCU小助手
发布时间:2021-5-26 16:55
|
信息安全专题 | 安全存储(2)STM32WB的用户密钥存储 (CKS) 我们都知道STM32WB是双核多协议无线微控制器,即主频为64 MHz的 Arm®Cortex®‐M4内核(应用处理器)和主频为32 MHz的Arm®Cortex®‐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区域,用户代码和调试端口不可访问
对密钥的操作只能通过用户代码调用FUS接口完成
用户密钥的写入 (Key Provisioning) 可以通过用户代码完成,也可以通过CubeProgrammer的GUI或者命令行完成
该操作在手册中用“write”或“load”表示
用户密钥的写入通过应用代码实现 参考例程:
调用FUS服务:SHCI_C2_FUS_StoreUsrKey
用户密钥的写入使用STM32CubeProgrammer GUI实现 STM32CubeProgrammer 从2.4版本开始支持
步骤:选择KEY文件 ——> 指定KEY类型 ——> 写入KEY
注意:GUI界面没有返回为该密钥分配的索引,需要用户自己记录 应用密钥的装载和使用 Load:AES1的密钥装载
使用步骤 Step1:AES1模块初始化
Step2:密钥装载
Step3:使用AES1做加解密
应用密钥的使用 Lock:
注意事项:关于后续更新
小结
使用CKS对AES密钥进行保护,与传统的直接将AES密钥存储在Flash中的做法有明显的优势:
© THE END |
低功耗蓝牙无线升级:STM32WB OTA 固件更新技术解析
STM32WB Zigbee 自定义集群开发实战:AN5491 应用笔记深度解读
吃透:STM32WB 上 Zigbee 睡眠终端设备开发攻略
STM32 无线 MCU HSE 频率与启动时间精确调谐实战指南
深度解读:STM32WB 2.4GHz 低成本 PCB 蛇形天线设计实战指南
经验分享 | STM32WB 双核无线 MCU 开发全流程实战指南
STM32WB 基于 Custom Template 实现 BLE 私有协议 实操开发指南
详解STM32单片机的堆栈
STM32单片机进行除零运算,为何程序不崩溃?
从照明到楼宇:STM32WBx5 BLE Mesh 落地指南
微信公众号
手机版