H7-TOOL脱机烧录的UID签名操作说明,采用ECDSA SECP256R1验证,哈希值计算使用的SHA224

之前为H7-TOOL脱机烧录配套了UID加密支持,这次再配套UID签名支持

H7-TOOL脱机烧录的UID加密操作方法,支持一键生成目标板C代码,方便大家轻松操作(2024-12-20,已发布)

https://forum.anfulai.cn/forum.php?mod=viewthread\&tid=125161

实现机制:
直接对芯片UID进行签名,将签名作为"芯片证书"
1、原始UID → 签名 → 带签名的UID → 存储到芯片
验证时:验证签名 + 检查UID是否匹配
2、ECDSA是基于椭圆曲线密码学的数字签名算法,用于验证数据的真实性和完整性。它比传统的RSA更安全且密钥更短。

操作说明:
1、使用H7-TOOL的硬件随机数生成公钥和私钥,当然也可以自己提供,均支持
将下面代码复制到LUA小程序页面生成相应数组

Lua 复制代码
local s = ""
local Private_KeySize = 32 -- 私钥长度为32字节
local Public_KeySize = 64  -- 公钥长度为64字节
local SignSize = 64        -- ECDSA签名长度为64字节
local ENCRYPT_LEN = 128    -- 签名长度 + 公钥长度,固定128字节
local Private_Key = {}
local Public_Key = {}
 
local re
local uid = {}
local x = {}
local sign = {}
 
-- 依次返回私钥, 公钥和成功状态
Private_Key, Public_Key, re = cmox_ecdsa_keyGen()
if(re == 1) then
    --print("cmox_ecdsa_keyGen success")
else
    print(sring.format("cmox_ecdsa_keyGen fail, re = %d", re))
end
 
print("ENCRYPT_LEN = ", ENCRYPT_LEN)
 
----------------打印私钥----------------------------
Private_KeySize = #Private_Key
print("Private_KeySize = ", Private_KeySize)
s = "Private_Key = {\n"
for i=1, Private_KeySize, 1 do                               
    s =s..string.format("0x%02x", Private_Key)..","
    if i % 16 == 0 then
        s = s.."\n"
    end                               
end
s =s.."}\n"
print(s) 
 
---------------打印公钥-----------------------------
Public_KeySize = #Public_Key
print("Public_KeySize = ", Public_KeySize)
s = "Public_Key = {\n"
for i=1, Public_KeySize, 1 do                               
    s =s..string.format("0x%02x", Public_Key)..","
    if i % 16 == 0 then
        s = s.."\n"
    end                               
end
s =s.."}\n"
print(s)

2、脱机烧录时读取芯片UID → 计算哈希值 → 生成签名 → 带签名的UID和公钥 → 脱机烧录存储到芯片
这里以为我们STM32-V7开发板,主控芯片STM32H743/H750为例进行说明。
(1)脱机烧录页面选择型号,加载要烧录的固件

(2)选择对应的算法

并设置签名要烧录到的地址0x08100000, 写入到#1区

然后分区就是这个意思

(3)高级脚本里面,添加公钥和私钥,私钥仅存储于TOOL端,公钥是供芯片端校验签名使用的

3、芯片端运行相同的算法,通过公钥和签名验证是否通过校验。
(1)烧录一个带签名校验的固件到目标芯片

(2)方便观察现象,芯片端例子做了个RTT打印,验证通过

4、配套例子,方便参考
基于STM32H7板子,配套了IAR,MDK AC5和AC6的例子
https://img.anfulai.cn/bbs/131058/V7-SIG.7z

参考资料:
H7-TOOL的LUA小程序教程第18期:ECDSA签名私钥公钥生成,签名和校验LUA函数(2026-04-10)
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=131338

相关推荐
硬汉嵌入式12 天前
《安富莱嵌入式周报》第365期: TI发布低噪声、高线性度万用表参设计,开源雷达探测距离20公里,开源图形计算器,微软发布手把手RUST教程从入门到精通
h7-tool·嵌入式周报·安富莱
硬汉嵌入式14 天前
H7-TOOL脱机烧录,RTT,LUA等功能继续精进,SWD MultiDrop选择指定设备,自动扫描目标芯片AP寄存器
h7-tool·脱机烧录·rtt viewer·lua api
硬汉嵌入式22 天前
经过几天研究,初步实现了H7-TOOL自动扫描目标芯片AP寄存器,并选择指定寄存器操作,脱机下载,LUA, RTT等均支持
rtt·h7-tool·脱机烧录
硬汉嵌入式1 个月前
新整理的H7-TOOL的LUA小程序访问AP和DP调试寄存器合集
h7-tool
硬汉嵌入式1 个月前
H7-TOOL脱机烧录升级对NXP汽车级M7芯片S32K314支持
h7-tool·脱机烧录·1拖4脱机烧录·1拖16脱机烧录·s32k312·s32k314
硬汉嵌入式2 个月前
《安富莱嵌入式周报》第363期: 卫星技术开发板,开源150Msps信号发生器,时域反射防篡改检测用于产品防破解,电磁共振绘图板,隔离市电交直电源设计
h7-tool·嵌入式周报
硬汉嵌入式4 个月前
将STM32H7的SPI MISO和MOSI短接回环测试配置问题也是非常方便的
stm32·miso·h7-tool·spi回环·mosi
硬汉嵌入式4 个月前
《安富莱嵌入式周报》第361期: 单片机流畅运行Windows 95, LED蜡烛,开源5通道100w USB-PD电源,互联网网页收录破万亿,八通道均衡器
h7-tool·嵌入式周报
硬汉嵌入式4 个月前
初步完成H7-TOOL的250M示波器功能自动频率测量
滤波·fft·频谱·h7-tool·250m示波器·自动频率测量