固件加密流程

前言

通常所说的MCU加密是指将用户的程序固件保护起来,防止别人通过外部调试接口或者其他方法读取烧写在Flash中的程序。保护自家方案不轻易被别家抄袭,从硬件上保护自己的知识产权。MCU加密还指防止自家程序被恶意读取破解。

整体思路:

  • 使用公钥加密算法,生成公私钥数据 (例如: ECDSA256), 私钥保存好,对每一台出厂设备都使用相同的私钥进行加密
  • 加密: 读UID -> sha256计算摘要 -> 私钥加密摘要生成签名
  • 数据保存: 将签名和公钥保存到设备
  • 解密: 读UID -> sha256计算摘要1, 公钥解密签名还原摘要2, 比较摘要1是否等于摘要2?

保密流程:

  • 公钥私钥是对称加密算法, 私钥加密的数据只能使用公钥解密
  • sha256是不可逆算法,可以隐藏被加密的数据
  • 设备上只有公钥和签名数据,很安全,不会被反向破解