你的位置:首页 > 技术支持 > 技术文档

[AN208] 使用芯片的UID实现产品加密功能

2018-5-19 10:27:02      点击:

概述

现在有些存储类的芯片都有一个唯一ID的数据(以下简称UID)在芯片内部.

UID具备唯一性, 也就是每个芯片的UID数据都不一样. 是芯片出厂之前就固化在芯片内的一段只读数据, 不可以修改, 也不可以复制到其他芯片.

我们可以使用UID来给产品进行加密, 防止产品被非法复制(盗版).

基本原理

使用芯片的UID为数据源, 通过一定的加密运算, 等到一串加密数据. 并将加密数据保存到芯片的存储区.

因每个芯片UID数据都不一样, 那么加密数据也会不一样, 这样一批产品中, 每个芯片存储的内容都会不一样. 即任意一个芯片的内容(加密数据部分)只能与该芯片的UID匹配, 如果有人将芯片内容复制到其他芯片, 就会呈现加密数据与UID不匹配的情况.

因此: 我们可以在产品运行时, 通过检查芯片的UID与加密数据是否匹配来判断产品是否为非法复制.

功能实现

要实现UID加密功能, 需要处理两个部分:

1.     在芯片中保存基于UID的加密数据, 这部分可以在存储芯片烧录时通过烧录器完成. 流程如下:


上述烧录操作可以使用硕飞的SP328P编程器完成.

2.     在用户产品运行时, 检查UID与加密数据是否匹配, 来判断产品是否合法. 流程如下:



注意: 产品运行代码使用的UID加密算法需与编程器一致.


硕飞SP328P编程器UID加密数据处理

硕飞的SP328P编程器提供了UID加密处理功能.

可以在烧录存储芯片时, 根据当前芯片的UID生成加密数据, 并写入到芯片中;

其内置有SHA256MD5算法, 可选额外的附加KEY参与加密运算.

加密数据可保存在芯片主存储区任何位置, 由用户设置来指定; 如果芯片具有OTP区域, 也可以保存到OTP区域.

如果需要使用其他加密算法, 还可以向硕飞定制软件.


SP328P编程器软件操作步骤:

1.     在软件中选带有UID型号(W25Q128FV为示例)



2.     开启并设置UID安全加密功能

3.     经过上述设置, 在烧录芯片时, 编程器将自动读取芯片的UID并进行加密运行, 并将数据保存到0x1FFF00开始的地方.


关于附加KEY:

编程器支持附加KEY数据参与加密运算, 这个是可选的内容, 用户可以保留附加KEY”输入框为空白, 则在加密运算时, 不使用附加KEY参数.

当使用了附加KEY, 编程器将此参数附加在UID的后面进加密运算, 以下是示意图: