据ST官方消息,STM32系列产品全球出货量已累计超过30亿颗,产品覆盖工业控制、消费电子等行业。STM32之所以能够实现如此市场覆盖率,除自身芯片的高性能、低功耗设计工艺,还依赖于STM32系列单片机开源化设计,极大降低了工程师开发难度和产品开发周期。
目前市场上很多嵌入式产品都是基于STM32单片机实现,这缘于STM32系列被众多开发工程师认可,然而抄板行业也针对STM32进行深入了研究,其破解成本已大大降低,破解手段已相当成熟。这也致使市场上很多嵌入式产品可以很容易被破解复制,开发公司投入大量精力、财力开发的新产品一上市就被别人复制,到市场上的只能以价格竞争,而复制的产品因为只有微少的抄板费用,在价格上反而更有优势。
针对STM32这种主芯片容易被破解的产品方案,开发时期需要使用合理的加密手段进行防护。比较通用的方法是使用软件加密,即使用STM32自带的Flash保护功能,防止对Flash非法访问。众所周知SMT32芯片有一个全球唯一的ID号,工程师可以利用唯一ID号在程序运行时,比较ID码是否正确,或者增加异或解码过程完成认证,从而来判断程序是否继续往下执行。这种加密手段能够在一定程度上增加芯片破解难度,对抄板公司设置门槛。
针对开发成本较高的产品,开发公司可选用性价比高的加密芯片实现硬件加密。硬件加密的好处是不像软件加密,可通过探针分析数据传输接口,很容易知晓芯片内部ID码,再通过反汇编跳过比对过程。目前市场上基于SMT32系列主控芯片设计的加密芯片厂家很多,本文重点介绍武汉瑞纳捷设计的RJGT102系列加密芯片及其原理。
RJGT102基于SHA-256哈希算法实现数据加密,芯片内集成176 Byte EEPROM存储,和STM32主控MCU通过标准IIC接口进行通信,用户只用将参与比对的密文输入RJGT102,芯片内部利用同样的算法计算出密文进行比对,比对成功才能够进行下一步操作。