本文导读
随着物联网和边缘计算的出现,五花八门的MCU也被应用其中,如何保证我们的程序安全和知识产权不受侵犯呢,本文我们将对主流MCU的程序加密进行讲解,希望能够帮助你选择最适合自己应用的微处理器。
1. MCU加密
通常所说的MCU加密是指将用户的程序固件保护起来,防止别人通过外部调试接口或者其他方法读取烧写在Flash中的程序。保护自家方案不轻易被别家抄袭,从硬件上保护自己的知识产权。MCU加密还指防止自家程序被恶意读取破解。
2. 常用MCU加密方式
-
通过写特定配置字;
-
增加外部加密芯片;
-
对程序代码进行密码加密,使程序变成密文;
-
程序校验芯片的唯一ID。
2.1 配置字加密
2.1.1 原理
MCU厂商在设计芯片时在芯片中增加特定的非易失存储,该存储也可能是Flash的特定地址区域。用户可以通过外部工具或在程序的特定地址写入使能存储保护的值。
配置字加密在芯片完成上电时序后才会生效,一般包含以下功能:
-
禁能调试接口(JTAG/SWD);
-
不禁能调试接口,但不允许调试器连接内核和访问Flash和RAM空间;
-
关闭读写Flash的ISP指令;
-
禁止除芯片正常执行程序外读Flash操作;
-
禁能芯片从外部接口或RAM启动执行代码。
2.1.2 应用场景
这种加密方式通常用在程序存储在芯片内部Flash的系统中。例如NXP LPC系列MCU、GD32系列MCU、NXP Kineits Cortex-M系列。
2.2 外接加密芯片
2.2.1 原理
加密芯片保护程序的方式,是通过程序与外部加密IC的交互来确认程序是否进一步执