STM32利用UID和OTP进行固件加密

本文介绍了如何在STM32G030上利用OTP(一次性可编程)和UID(唯一标识符)进行固件加密。OTP特性确保数据一旦写入无法更改,而UID提供每个芯片的全球唯一编码。通过加密UID并存储在OTP中,可以在设备启动时验证加密值,从而确保设备未被非法解密。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

资料准备:对应模块的参考手册(RM)
注:本文章基于STM32G030,文中所说的“本芯片”等,都代表STM32G030
在这里插入图片描述

一、OTP介绍

OTP:one-time programmable,只允许一次编程,也就是只能从1写0,不能从0写1。这里可能有人要问,这不是flash的特性么?需要注意的是,flash是允许擦除的,是允许从0写1的。而OTP不允许擦除,就算在ICP烧录代码时,也不会丢。而且,如果只有一位是0,整个双字(64位)都不能再写了,甚至也不能写0x0000 0000 0000 0000。这里的双字节根据不同的单片机有差距,由于我所使用的每次只能写双字节,因此,这里便是双字节。
“The OTP area cannot be read when RDP level is 1 and boot source is not the
Main Flash memory area.”当读保护级别位1时,并且BOOT源不是主程序区域时,OTP是不允许读的。

在不通的系列上,OTP的起始地址有所不同,需要自行去参考手册的flash章节查找,本芯片中OTP起始地址是0x1FFF7000

二、UID介绍

UID是芯片厂商为每个芯片出厂写入的,是一个96位的全球唯一编码。就相当于人类的身份证。HAL库中提供了获取UID的接口

/**
  * @
<think>好的,用户想了解“读出保护”(read out protection)在编程或数据安全中的功能或实现方式。首先,我需要明确读出保护的基本概念,然后结合已有的引用资料,整理相关的实现方法技术。 根据用户提供的引用内容,特别是引用[1]提到的文件加密访问控制,引用[2]中的安全写保护配置块,引用[4]中的加密认证方法,可以看出读出保护通常涉及加密、访问控制、硬件安全模块等技术。需要将这些内容组织起来,分点说明功能实现方式。 首先,功能方面,读出保护主要防止未经授权的数据读取,确保敏感信息的安全。实现方式可能包括数据加密、访问权限控制、硬件级保护、安全启动、防篡改机制等。需要结合引用中的例子,比如iOS的文件保护(引用[1])、安全写保护配置块的结构(引用[2]),以及加密认证(引用[4])。 要注意用户提供的引用中有关于加密访问控制的具体实现,比如文件在设备锁定时不可访问,安全写保护配置块的条目设置。此外,引用[3]提到AI中的安全合规实践,可能涉及模型数据的安全保护,虽然不直接相关,但可以辅助说明软件层面的控制。 需要确保回答结构清晰,分点列出功能与实现方式,并适当加入例子,如iOS的文件保护、RPMB区域的安全配置、TPM的使用等。同时,生成的相关问题需要围绕实现技术、应用场景、硬件与软件的结合等方面展开,引导用户进一步探索。 最后,检查是否符合系统级指令:使用中文、LaTeX格式正确、引用标识正确添加。确保没有使用Markdown,语言口语化,逻辑连贯。</think>在数据安全编程领域,读出保护(Read Out Protection)是通过技术手段防止未经授权的数据读取的核心安全机制。以下是其主要功能及典型实现方式: ### 一、核心功能 1. **数据机密性保障**:防止敏感数据(如密钥、个人信息)通过调试接口或存储器直接读取被泄露 2. **固件保护**:阻止逆向工程人员通过$JTAG$/$SWD$等调试接口提取固件代码 3. **防克隆保护**:通过芯片唯一标识符(如$UID$)绑定加密数据,防止硬件复制[^4] ### 二、实现方式 1. **存储器加密技术** 采用$AES$/$RSA$等算法对闪存数据进行实时加密,如STM32的RDP(Read Protection)机制: ```c HAL_FLASH_OB_Unlock(); // 解锁选项字节 OB->RDP = 0xBB; // 设置RDP级别2(最高保护) HAL_FLASH_OB_Launch(); // 应用新配置 ``` 当RDP激活后,通过调试接口读取闪存将得到全零数据[^1] 2. **硬件安全模块(HSM)** 在芯片内集成独立的安全协处理器,如ARM TrustZone技术: $$ \text{NS\_bit} = \begin{cases} 0 & \text{安全世界(处理密钥等敏感操作)} \\ 1 & \text{非安全世界(常规应用程序)} \end{cases} $$ 通过硬件隔离确保安全数据无法被普通程序访问[^2] 3. **访问控制列表(ACL)** 在文件系统层实施细粒度权限控制,如iOS数据保护API: ```swift try data.write(to: fileURL, options: [.completeFileProtection]) ``` 该模式会在设备锁定时自动加密文件内容 4. **物理防护技术** - 熔丝熔断技术:一次性可编程(OTP)存储器用于存储安全配置 - 光屏蔽层:防止通过显微镜进行物理探测 - 电压毛刺检测:触发自毁机制应对旁路攻击 ### 三、典型应用场景 1. 汽车电子控制单元(ECU)的软件保护 2. 医疗设备的患者隐私数据存储 3. 物联网设备的固件防提取 4. 支付终端的密钥保护
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值