基于芯片 UID 的产品加密方案
技术报告 · 以 SFLY SP328P(SP32SW V2.05)为例,覆盖烧录生成密文与运行时校验 | 编制日期 2026-10-14 | 版本号 Rev 1.0
1 概述与价值
先明确 UID 是什么、为什么它能用于防伪。
现在不少存储类芯片都在内部固化了一段唯一 ID 数据(UID)。UID 具备唯一性——每个芯片的 UID 都不一样,是芯片出厂前就固化在内部的一段只读数据,既不能修改,也无法被复制到其他芯片上。
正因 UID 不可克隆,我们可以利用它给产品做加密,防止产品被非法复制(盗版)。其本质是把「芯片身份」与「存储内容」绑定:内容离开了原芯片就失效。
2 基本原理
用 UID 作数据源做加密运算,把「密文」与「这片芯片」绑定起来。
- 生成密文:以芯片 UID 为数据源,经一定的加密运算得到一串加密数据,并保存到芯片存储区。
- 逐片不同:因每片 UID 不同,算出的密文也不同;一批产品中每个芯片存储的内容(密文部分)都不一样,且只有该芯片的 UID 能与之匹配。
- 盗版即失效:若有人把某芯片内容整片复制到另一片芯片,新芯片的 UID 与原密文不匹配,校验即失败。
- 运行时判定:产品运行时检查「芯片 UID 与密文是否匹配」,据此判断是否为非法复制。
来源:整理自公开技术资料
3 功能实现(两个环节)
UID 加密要处理两部分:烧录时生成密文、运行时校验合法性。两者必须使用同一套算法。
3.1 烧录时:生成并保存密文
在存储芯片烧录阶段,由编程器读取当前芯片的 UID,执行加密运算,并把密文写入芯片存储区。这部分可在烧录产线通过编程器一次完成(流程见下)。
来源:整理自公开技术资料
3.2 运行时:校验合法性
产品运行代码中,读取本芯片 UID 与存储区密文,用与编程器一致的算法本地复算摘要,再与存储密文比对:一致则合法、继续运行;不一致则判定盗版,采取锁定/报警等措施。
来源:整理自公开技术资料
3.3 附加 KEY 机制
加密运算时可引入一个可选的附加 KEY参与,增强安全性:
- 附加 KEY 为可选项;不填时仅以 UID 参与运算。
- 启用后,编程器将 KEY 附加在 UID 之后一并参与加密运算(示意见下)。
- KEY 的保密性直接决定方案强度——KEY 一旦泄露,方案形同虚设。
来源:整理自公开技术资料
3.4 加密算法实现(实拍)
下图是 SFLY SP32SW 软件在算法说明区给出的 SHA256 消息构造实拍:UID 数据(字节数 n)放在前段,附加 KEY(字节数 k,可选)放在后段,拼接后整体作为 message 送入 sha256(uint8_t* message, unsigned int len, uint8_t* digest),输出 m 字节摘要作为加密数据。本图可与图 4 的概念图互为印证。
来源:SFLY SP32SW V2.05 软件界面截图(2026-08-03)
4 SFLY SP328P 编程器操作(示例)
以 SFLY SP328P 编程器 + SP32SW V2.05 软件为例,演示带 UID 芯片的加密烧录配置。
SFLY SP328P 编程器内置 UID 加密处理:烧录存储芯片时,可依据当前芯片 UID 自动生成密文并写入;其内置 SHA256 与 MD5 算法,并支持可选附加 KEY 参与运算。密文可存于主存储区任意用户指定位置,若芯片具备 OTP 区域也可存入 OTP。下文以 XTX SPI NOR XT25F128F(128M-bits + 3×1024 Bytes Security Register)为示例型号展开。
4.1 选型界面(XTX 厂商、XT25F128F 选中)
在 SP32SW 中点「芯片型号…」打开选型对话框,搜索框输入 "XT25FI",可筛选出 XTX 全系列 SPI NOR;选中 XT25F128F 后右上角显示「芯片型号:XTX XT25F128F」,容量 128M-bits + 3×1024 Bytes (后段即 Security Register,可用于存放 UID 与加密数据)。
来源:SFLY SP32SW V2.05 软件界面截图(2026-08-03)
4.2 操作步骤
- 在软件中选择带 UID 的型号(以 XTX
XT25F128F为例,见图 6)。 - 在「高级功能 → UID 安全加密」右侧点齿轮按钮(图 7 中 1),打开 UID 安全加密对话框。
- 模式选择「开启」,加密算法选 SHA256(2),算法选定后密文长度自动确定。
- 设置「数据存储地址」
2FFF00h(3,等价0x2FFF00),填写「附加 KEY」(如123123,4),并选 Hex 格式(5)。 - 勾选 Lock(写后锁定),点「确定」(6)保存设置。
- 返回主界面,正常执行烧录;编程器将自动读取芯片 UID、运行 SHA256、把密文写入
0x2FFF00。
来源:SFLY SP32SW V2.05 软件界面截图(2026-08-03)
0x2FFF00 起始处。XT25F128F 自带 3×1024 Bytes Security Register,建议将密文存放在 Security Register 内(地址落在 OTP 区),以防被正常读写擦除。实际项目中由用户在软件中指定。4.3 版本与说明
本文操作界面取自 SFLY SP32SW V2.05(2026-08-03)。不同软件版本字段名称或默认值可能略有差异,实际配置以编程器厂商随软件发布的版本说明为准。如需使用 SHA256/MD5 之外的其他加密算法,可向编程器厂商定制。