概述
开发的终端产品如果不对固件进行加锁很容易被破解,导致开发的产品被山寨,尤其对于单片机类的产品
原理
加密算法(AES、DES以及自定义算法): Encrypt
唯一ID(芯片ID): ChipID
自定义加密密钥: Key
Password = Encrypt(ChipID, Key)
实现
3.1、上位机
- 读取MCU ChipID
- 通过Encrypt生成Password
- 写入Password 和 Key 到MCU Flash或者OTP
- 检测是否加密成功
3.2、MCU - 开机后读取Key和ChipID
- 通过Encrypt生成Password
- 读取上位机写入的Password,判断两个Password是否一致,如果相同则运行应用程序,否则等待加锁
注意
- MCU端要考虑加锁后不被重复加锁
- MCU端要考虑多个地方存储Password和Key,防止数据丢失
- 上位机要可以并行加锁多个MCU,提高工厂生产的效率
获取
关注公众号Chipcode,发送固件加密获取上位机以及下位机源码