MCU加密防拷贝方案

MCU加密防拷贝方案
THEDI方案介绍
该方案是我在北京联盛德微电子实习的时候,对于水表量产项目的防拷贝程序的加密方案,确保即使烧写文件被获取,也无法在其他芯片上直接运行。保证程序的安全性。
属于MCU SecureBoot
方案
流程介绍
主要分为三端:
1.批量烧录工具(PC Tool):负责固件烧录,证书申请,证书烧录等
2.Server端:部署在服务器中,主要负责处理用户登录、证书申请请求。包含RSA公钥和私钥,AES密钥等
3.MCU端:从flash获取证书,做启动校验
在产线批量烧录端,会通过批量烧录工具
先烧录AT RAM固件,然后向MCU端发送AT命令,MCU返回flash unique id和wifi mac地址
批量烧录工具
通过TCP协议将flash unique id和wifi mac发送给Server端,Server端对内容进行构造后,进行哈希(SHA256), Server使用生成的RSA私钥对内容进行签名,得到证书。然后对证书使用AES密钥进行加密,添加CRC32校验后,将加密证书通过TCP协议返回给批量烧录工具
。 并将证书申请日志录入数据库(包括username、ip、证书内容等)
批量烧录工具
收到加密证书后,先向MCU烧录Special Cmd固件, 然后将加密证书
烧录至flash指定地址。
MCU端正常可以烧录至OTP区域,因为我们的OTP区域有其他作用,所以使用Flash某一分区来模拟OTP区域
MCU
端进行在启动时(bootloader)会从flash中读取加密证书内容,并且使用AES密钥解密得到明文证书,然后进行
check 1:证书CRC32校验,如果校验通过进入check 2
check 2:将证书中的flash unique id和mac 地址与当前设备进行比对,校验通过后进入check 3
check 3: 使用RSA公钥对证书中的签名进行验签,验签成功后才校验通过,然后启动
详细流程
详细流程的代码在github仓库,相关文档和README也在上面。具体看FirmUpdate的docs目录下的文档