近来准备做一个网络读卡器代替USB读卡器,量小利润大的项目,选了一个加密芯片 SMEC98SP,IIC通讯接口,可编程,可在加密芯片运行部分主控芯片
STM32的程序,实现加密。
加密可利用的资源: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发的网络数据与加密芯片发出来的数据比较,推导组包规则,可能吗?好像可能!但如果加密芯片多发一些随机数参合进来,怎么样?
这个难度大多了吧。
二、其他的算法这个产品用的少,没想到。
请教各位大师,这种加密后破解难度有多大,需要多大的代价。
1