目前常见的STM32及GD32系列的MCU芯片都具有唯一UID,目前深圳市维动智芯科技科提供全系列芯片软解密等服务,欢迎来电咨询,联系电话:13717069599
UID是唯一标识符(unique identifier),在STM32系列微控制器的每一颗芯片都具有全球唯一的标识符,该标识符为128位二进制序列。因此我们可以利用芯片UID的唯一性对程序进行加密,使每一个产品中的程序也具有唯一性,即使非法使用者获取了MCU中的程序复制到其他芯片中也是不能正常运行的,从而达到保护开发者的知识产权不被侵犯和盗用的目的。
加密可利用的资源:STM32有一个ID号,加密芯片有一个ID号。加密芯片有DES算法,HASH算法,可运行程序。
1、比较密码:STM32程序预存一个8字节密码,加密芯片预存一个相同的密码,STM32把这个密码发给加密芯片,加密芯片与预存的密码比较,相同返回一个正确值。好像这个功能只能做到没有加密芯片确实不能跑,但好像很容易破解掉,数据传输明文,容易跟踪。也很容易模拟出这个结果。
2、加密传输比较密码:同样在STM32和加密芯片都预存一个8字节密码,STM32读取一个加密芯片生成的随机数,然后与8位密码做一个DES运算,把这个结果发给加密芯片比较。加密芯片用同样的随机数和密码做DES运算,结果是和STM32算出来是一样的,比较正确后返回正确。这个比第1个好一点,密文传输。还是可以模拟出结果。
3、HASH运算与第2是一样的。
以上3种感觉加密强度一般。把STM32破解,读出程序反汇编,可以找到相应的密码,比较跳转的指令,改掉。真是有这样的牛人的。
如果利用ID号捆绑,这样不利于维护。保修长的产品是麻烦事。
主要还是探讨第4种方法,把部分程序的算法,函数放到加密芯片中去。
一、把数据分析的函数放进加密芯片。网络通讯数据格式按照一定的协议规约组包,收到后发给加密芯片解释,STM32得到解析后的数据进行操作。这样做是不是感觉强多了,破解STM32是没有用了,把PC发的网络数据与加密芯片发出来的数据比较,推导组包规则,可能吗?好像可能!但如果加密芯片多发一些随机数参合进来,怎么样?
这个难度大多了吧。
但随着芯片解密技术的不断升级,目前针对所有拥有UID的单片机都可以提供单片机解密服务,欢迎来电咨询。