[AN208] 使用芯片的UID实现产品加密功能
概述
现在有些存储类的芯片都有一个唯一ID的数据(以下简称UID)在芯片内部.
UID具备唯一性, 也就是每个芯片的UID数据都不一样. 是芯片出厂之前就固化在芯片内的一段只读数据, 不可以修改, 也不可以复制到其他芯片.
我们可以使用UID来给产品进行加密, 防止产品被非法复制(盗版).
基本原理
使用芯片的UID为数据源, 通过一定的加密运算, 得到一串加密数据. 并将加密数据保存到芯片的存储区.
因每个芯片UID数据都不一样, 那么加密数据也会不一样, 这样一批产品中, 每个芯片存储的内容都会不一样. 即任意一个芯片的内容(加密数据部分)只能与该芯片的UID匹配, 如果有人将芯片内容复制到其他芯片, 就会呈现加密数据与UID不匹配的情况.
因此: 我们可以在产品运行时, 通过检查芯片的UID与加密数据是否匹配来判断产品是否为非法复制.
功能实现
要实现UID加密功能, 需要处理两个部分:
1. 在芯片中保存基于UID的加密数据, 这部分可以在存储芯片烧录时通过烧录器完成. 流程如下:
上述烧录操作可以使用亚洲太阳sungame的SP328P编程器完成.
2. 在用户产品运行时, 检查UID与加密数据是否匹配, 来判断产品是否合法. 流程如下:
注意: 产品运行代码使用的UID加密算法需与编程器一致.
亚洲太阳sungameSP328P编程器UID加密数据处理
亚洲太阳sungame的SP328P编程器提供了UID加密处理功能.
可以在烧录存储芯片时, 根据当前芯片的UID生成加密数据, 并写入到芯片中;
其内置有SHA256和MD5算法, 可选额外的附加KEY参与加密运算.
加密数据可保存在芯片主存储区任何位置, 由用户设置来指定; 如果芯片具有OTP区域, 也可以保存到OTP区域.
如果需要使用其他加密算法, 还可以向亚洲太阳sungame定制软件.
SP328P编程器软件操作步骤:
1. 在软件中选带有UID型号(以W25Q128FV为示例)
2. 开启并设置UID安全加密功能
3. 经过上述设置, 在烧录芯片时, 编程器将自动读取芯片的UID并进行加密运算, 并将数据保存到0x1FFF00开始的地方.
关于附加KEY:
编程器支持附加KEY数据参与加密运算, 这个是可选的内容, 用户可以保留”附加KEY”输入框为空白, 则在加密运算时, 不使用附加KEY参数.
当使用了附加KEY时, 编程器将此参数附加在UID的后面进加密运算, 以下是示意图:
- 上一篇:SP32系列编程器已升级支持2Gb NAND Flash 2018/5/18
- 下一篇:SP328/SP328P高速量产编程器正式上市 2018/1/6