通常电子产品都会用到MCU,关于MCU加密方式有很多种,下面为大家列出比较常用的加密方式。MCU加密是指将用户的程序固件保护起来,防止别人通过外部调试接口或者读取烧写在Flash中的程序。保护自家的方案不轻易被别家抄袭,从硬件上保护自己的知识产权。MCU加密还指防止自家程序被恶意读取破解。
1、常用MCU加密方式
通过写特定配置字;
增加外部加密芯片;
对程序代码进行密码加密,使程序变成密文;
程序校验芯片的唯一ID。
2、外接加密芯片
原理
加密芯片保护程序的方式,是通过程序与外部加密IC的交互来确认程序是否进一步执行。
利用芯片随机数外设或者其他能够产生随机数的机制,在每次上电后系统取得一个随机数,并将这个随机数通过类似IIC的协议传给外部的硬件加密IC。随后系统按先前约定的算法进行结果计算,等待外部IC接收到随机数并也算出结果后,外部IC会将计算结果传回给系统。如果系统的计算结果和外部IC的计算结果相同,则说明外部的加密IC存在。
应用场景
这种加密方式主要用在用户对代码中关键算法的加密,算法通常会以Lib的方式提供,只有购买了对应加密芯片(类似于产品密钥)的客户才能够使用算法程序。
3、UID检验加密
原理
UID加密一种用户主动加密的方式。当下几乎所有处理器内部都包含UID,可以通过直接寻址读取或者IAP指令获得。
UID加密通常分为二种方式:
用户在烧写程序时,读取一次芯片UID将其写入Flash特定区域。在程序启动时直接读取UID和Flash内部的数值进行比较决定是否启动;
用户读取UID后通过私有密钥将UID加密之后的信息写入Flash特定地址,例如Flash的最后一个扇区。程序启动时,首先读取芯片UID并通过同样的密钥和算法进行计算后与Flash中的数值进行比较决定是否启动。
其中第一种最容易被破解,第二种也存在潜在风险,为了增强第二种的安全性,可以将加密后的数据拆分后分别存放到Flash的不同位置,运行时再组合。