只读分享解决方案文档调试&解决方案📅 2026-09-21🔖 Rev 1.0⏳ 28天有效(至 2026-10-31)
🔧解决方案&应用市场分析 -> 调试&解决方案 -> 系统设计指南 -> 基于芯片UID的产品加密方案_技术报告

基于芯片UID的产品加密方案_技术报告

生成时间 2026-09-28 13:34:44 有效期至 2026-10-31 23:59:59(28天有效(至 2026-10-31))
同系列 · 调试&解决方案
市场&调试推荐

基于芯片 UID 的产品加密方案

技术报告 · 以 SFLY SP328P(SP32SW V2.05)为例,覆盖烧录生成密文与运行时校验 | 编制日期 2026-09-21 | 版本号 Rev 1.0

UID
芯片唯一ID
出厂固化·只读·不可复制
2
环节
烧录生成 + 运行校验
SHA256/MD5
内置算法
可加可选附加 KEY
防复制
核心目标
盗版即校验失败
本文解决什么很多存储类芯片内部固化和一段唯一 ID(UID):每片不同、只读、不可修改也不可复制到其他芯片。本文把「用 UID 给产品加密、防止非法复制」的方案讲清楚,覆盖烧录时生成密文、运行时校验合法性两个环节,并以 SFLY SP328P 编程器 + SP32SW 软件的实际操作为例。
一句话结论用 UID 作数据源,经相同加密算法(如 SHA256/MD5,可带保密 KEY)算出与每片 UID 绑定的密文,烧录进存储区;运行时用同一算法复算并比对,不一致即判定为盗版。破解的关键在于 UID 不可克隆、且算法/KEY 不能从产品代码里被轻易还原。

1 概述与价值

先明确 UID 是什么、为什么它能用于防伪。

现在不少存储类芯片都在内部固化了一段唯一 ID 数据(UID)。UID 具备唯一性——每个芯片的 UID 都不一样,是芯片出厂前就固化在内部的一段只读数据,既不能修改,也无法被复制到其他芯片上。

正因 UID 不可克隆,我们可以利用它给产品做加密,防止产品被非法复制(盗版)。其本质是把「芯片身份」与「存储内容」绑定:内容离开了原芯片就失效。

适用对象本方案面向带 UID 的存储芯片(典型如带 Unique ID / 安全寄存器的 SPI NOR Flash)。若贵司 XTX 的 SPI NOR(如本报告示例型号 XT25F128F)提供唯一 ID 或安全(OTP)区域,同样适用本方案——UID 读取命令与地址以 XTX 正式 datasheet 为准。

2 基本原理

用 UID 作数据源做加密运算,把「密文」与「这片芯片」绑定起来。

  1. 生成密文:以芯片 UID 为数据源,经一定的加密运算得到一串加密数据,并保存到芯片存储区。
  2. 逐片不同:因每片 UID 不同,算出的密文也不同;一批产品中每个芯片存储的内容(密文部分)都不一样,且只有该芯片的 UID 能与之匹配。
  3. 盗版即失效:若有人把某芯片内容整片复制到另一片芯片,新芯片的 UID 与原密文不匹配,校验即失败。
  4. 运行时判定:产品运行时检查「芯片 UID 与密文是否匹配」,据此判断是否为非法复制。
注意本方案是增加复制成本的软件级防伪,并非硬件级防篡改。它依赖「UID 不可克隆」与「算法/KEY 不被轻易还原」两个前提;若产品固件被完整提取并去除校验逻辑,仍可能被绕过(见第 6 章)。
基于芯片 UID 的产品加密原理烧录阶段(编程器自动完成)芯片 UID出厂固化·只读每片唯一加密运算SHA256 / MD5+ 可选附加 KEY密文与 UID 绑定写入存储区 / OTP主存储任意位或 OTP 区域运行阶段(产品代码完成)读 UID从芯片读取读密文从存储区读取同算法计算本地执行相同加密算法比对值是否一致合法非法(盗版)→ 锁定/报警
图 1 · UID 加密整体原理:烧录生成密文 + 运行校验合法性

来源:整理自公开技术资料

3 功能实现(两个环节)

UID 加密要处理两部分:烧录时生成密文、运行时校验合法性。两者必须使用同一套算法。

3.1 烧录时:生成并保存密文

在存储芯片烧录阶段,由编程器读取当前芯片的 UID,执行加密运算,并把密文写入芯片存储区。这部分可在烧录产线通过编程器一次完成(流程见下)。

选择带 UID 型号如 XT25F128F开启并设置UID 安全加密功能烧录自动处理读 UID + 加密运算密文写入存储示例 0x2FFF00流程:编程器(如 SFLY SP328P)在烧录存储芯片时自动完成以下步骤
图 2 · 烧录时 UID 加密数据生成流程(SFLY SP328P 自动完成)

来源:整理自公开技术资料

3.2 运行时:校验合法性

产品运行代码中,读取本芯片 UID 与存储区密文,用与编程器一致的算法本地复算摘要,再与存储密文比对:一致则合法、继续运行;不一致则判定盗版,采取锁定/报警等措施。

关键约束产品运行代码使用的 UID 加密算法,必须与编程器完全一致(含是否启用附加 KEY、KEY 取值、密文存放地址)。任何一方不一致都会导致正常产品也被误判为盗版。
上电 / 启动产品上电读取芯片 UID从存储芯片读取读取存储区密文烧录时写入本地执行相同算法用同算法算 UID 摘要比对摘要 == 密文?合法正常启动匹配非法·盗版锁定 / 报警不匹配
图 3 · 产品运行时合法性校验决策流程(含比对判定)

来源:整理自公开技术资料

3.3 附加 KEY 机制

加密运算时可引入一个可选的附加 KEY参与,增强安全性:

  • 附加 KEY 为可选项;不填时仅以 UID 参与运算。
  • 启用后,编程器将 KEY 附加在 UID 之后一并参与加密运算(示意见下)。
  • KEY 的保密性直接决定方案强度——KEY 一旦泄露,方案形同虚设。
芯片 UID固化·唯一附加 KEY可选·需保密拼接加密运算SHA256 / MD5密文摘要未填写附加 KEY 时,仅以 UID 参与运算。
图 4 · 附加 KEY 参与加密运算示意(UID 与 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 算法说明区的 SHA256 消息构造示意图
图 5 · SHA256 加密算法实现:UID + 附加 KEY 拼接后哈希输出

来源: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 选型对话框截图,厂商 XTX、型号 XT25F128F
图 6 · SP32SW 选型界面:在 XTX 厂商下选中 XT25F128F

来源:SFLY SP32SW V2.05 软件界面截图(2026-08-03)

4.2 操作步骤

  1. 在软件中选择带 UID 的型号(以 XTX XT25F128F 为例,见图 6)。
  2. 在「高级功能 → UID 安全加密」右侧点齿轮按钮(图 7 中 1),打开 UID 安全加密对话框。
  3. 模式选择「开启」,加密算法选 SHA256(2),算法选定后密文长度自动确定。
  4. 设置「数据存储地址」2FFF00h(3,等价 0x2FFF00),填写「附加 KEY」(如 123123,4),并选 Hex 格式(5)。
  5. 勾选 Lock(写后锁定),点「确定」(6)保存设置。
  6. 返回主界面,正常执行烧录;编程器将自动读取芯片 UID、运行 SHA256、把密文写入 0x2FFF00。
SFLY SP32SW UID 安全加密对话框截图,标注 1~6 配置步骤
图 7 · SP32SW「UID 安全加密」配置对话框(6 步操作)

来源:SFLY SP32SW V2.05 软件界面截图(2026-08-03)

配置示例(XT25F128F)该示例下,编程器将 UID 加密数据写入 0x2FFF00 起始处。XT25F128F 自带 3×1024 Bytes Security Register,建议将密文存放在 Security Register 内(地址落在 OTP 区),以防被正常读写擦除。实际项目中由用户在软件中指定。

4.3 版本与说明

本文操作界面取自 SFLY SP32SW V2.05(2026-08-03)。不同软件版本字段名称或默认值可能略有差异,实际配置以编程器厂商随软件发布的版本说明为准。如需使用 SHA256/MD5 之外的其他加密算法,可向编程器厂商定制。

5 设计注意与安全建议

把方案落到实处时,以下工程要点直接决定防伪强度。

  • 算法与 KEY 必须两端一致:编程器与运行代码使用同一算法、同一 KEY、同一密文地址,否则正常品误判盗版。
  • KEY 保密优先:附加 KEY 是方案强度的核心,切勿明文固化在可被提取的固件中;可结合芯片唯一密钥或安全存储区保管。
  • 优先存 OTP / Security Register:若芯片有 OTP 或 Security Register(如 XT25F128F 的 3×1024 Bytes),密文存此处可防被正常擦写覆盖;主存储区存密文需防整片误擦。
  • 比对逻辑要防绕过:避免「读到密文==计算值才运行」被简单 NOP 掉;可将校验结果参与关键功能使能,而非仅做提示。
  • 校验时机:在启动早期或关键功能调用前校验,而非仅上电一次性检查(防止运行中被 patch)。
  • UID 读取可靠性:确认所用芯片 UID 的读取命令与地址(不同厂商/型号不同),以正式 datasheet 为准。
  • 产线一致性:烧录工位与运行时算法版本需受控,避免升级算法后旧批次产品校验失败。
XTX 相关提示若采用 XTX SPI NOR(如 XT25F128F)实现该方案,请先确认该型号是否提供 UID / Security Register 及对应读取命令,并以 XTX 正式 datasheet 的「Unique ID / Security Register」章节为准;切勿套用其他厂商的命令码。

6 风险与局限

清楚边界,才能正确使用这套方案。

风险 / 局限说明缓解
固件被整体提取攻击者 dump 固件并移除校验分支校验结果绑定关键功能;混淆/加固代码
KEY 泄露附加 KEY 被逆向得到KEY 存安全区;避免明文;定期换 KEY 体系
UID 可读取但可绕过UID 本身公开可读,仅靠比对易被 patch结合加密绑定而非单纯比对相等
算法不一致编程器与代码算法/地址不同两端配置受控、版本锁定
非硬件防篡改属软件级防伪,增加成本而非绝对防护配合签名/安全芯片提升等级
OTP 空间有限部分芯片 OTP 小或仅一次可编程密文精简;或存主存储受控区

7 上线前核查清单

量产前逐条确认。

  • 确认所用芯片确实带有 UID(及可选 OTP / Security Register),读取命令以 datasheet 为准
  • 选定加密算法(SHA256 推荐优先于 MD5)与是否启用附加 KEY
  • 编程器与运行代码两端算法、KEY、密文地址完全一致
  • 烧录工位已正确配置 UID 安全加密并自动写密文
  • 密文存放地址明确,且不会被正常业务擦写覆盖(优先 OTP / Security Register)
  • 运行时校验逻辑防绕过,且结果参与关键功能使能
  • 抽样复测:同批不同芯片密文互不相同、跨片复制应判盗版
  • 算法/KEY 版本受控,避免后续升级导致旧批次误判

附录 术语与参考

术语

术语含义
UIDUnique ID,芯片唯一标识;出厂固化、只读、不可克隆
OTP / Security Register一次性可编程区,写入后不可更改/擦除(XT25F128F 配 3×1024 Bytes)
SHA256 / MD5哈希(摘要)算法,将 UID(+KEY)映射为定长密文
附加 KEY可选密钥,拼接在 UID 后参与加密运算以增强保密性
密文UID 经加密运算得到的、与每片芯片绑定的数据
SFLY SP328P / SP32SWSFLY 编程器硬件及配套软件;SP32SW 内置 SHA256/MD5,可配置 UID 安全加密

参考来源

  • SFLY SP32SW V2.05(2026-08-03)软件界面(UID 安全加密功能、配置步骤与示例)。
  • XTX XT25F128F 数据手册(Unique ID / Security Register 章节,示例型号)。
  • 存储器厂商(含 XTX)datasheet 的 Unique ID / Security Register 章节(以正式文档为准)。
说明本文由公开应用笔记整理为技术报告,属工程经验总结而非任何厂商官方结论;具体 UID 读取命令、地址、OTP 容量等参数一律以对应芯片正式 datasheet 为准。