加密芯片种类那么多,根据什么来选择?
发布时间:2018-05-30 阅览次数:
1486 次
我们在做产品的时候,最头担心的事情就是害怕自己的代码给别人读出来,然后把整个方案给抄袭,就直接拿去生产了。所以要保护自己的最好方式就是使用硬加密IC的方式。现在市面上有很多型号的加密芯片,算法的种类也有很多,比如SHA算法,AES算法等。我们具体分析一下这些算法的优缺点。
1、使用SHA-256算法进行加密操作,一般内置16*32字节的slot(EEPROM)可以存储用户数据和秘钥,SHA:算法最主要的特点就是,任意长度的输入能生成固定长度的输出,并且从输出的结果中不能还原输入的内容,而且要找到不同两个输入导致相同输出的情况在计算上不能实现。听起来这种算法是很可靠的,但是SHA算法全世界都在盯着,目标太大,每天都有黑客在算计它,也就是说SHA算法的加密芯片很可能是躺着中枪,自己加密产品每天都有成千上万的人忙着破解,那些想要破解你产品的人只需要坐收渔利就行了。
2、 ALPU加密芯片:是基于AES-128算法,工作原理为在被保护器件的引导区写入密钥,从而防止器件内的软件代码被恶意拷贝,这是ASIC方式,就是说硬件方式的加密芯片。ASIC硬件方式是基本上很难复制加密芯片,半导体整个的一面一面分析的话才可能知道里面的数据,抛片本身就是很难实行而且费用非常昂贵。ALPU加密芯片就是小众而又专业的加密芯片。
以上是对算法本身的安全性讨论的,其实目前如果要破解一个产品,特别是硬件的产品,谁都不会傻傻的用暴力的手段去破解加密算法本身,这样吃力不讨好,就好像越狱苹果一样,黑客不可能去破解IOS的加密体系,而且找它的漏洞,通过漏洞来绕开认证体系。这个破解的关键是因为每次主MCU发的明文都是同一个,那如果明文每次都不一样这不就能避免破解了吗?确实是这样,如果主MCU每次发的明文都不一样,虽然破解者取到本次的明文,和密文,但是他也不知道下一次明文是多少,密文又是多少,这就在一定程度上增加了破解的难度。最好的做法就是我们增加一个随机数对明文进行编码,使得每次的明文不一样,密文也不一样了。增加随机数有两种方法,一种是用库函数rand()的方法。一种是外加一个硬件的随机数芯片,ALPU加密芯片就很好的满足了这些。
我们还有一个要注意的地方,就是我们一般的加密认证都是在一开机的时候发一个随机明文给加密芯片,加密芯片返回密文匹配后就往下工作,之后就不会再判断了,这样的加密也是不强壮的。所以ALPU加密芯片的方法就可以是是在每一次的主循环中都加一次的匹配认证,或者在进去一个关机的函数时都要进行一次的匹配认证。这主要是防止对主MCU进行反汇编后,如果就是单一的一处做判断的跳转,很容易就给破解者挑出来。
下面总结一下,1:加密芯片的算法优劣并不重要,重要的是有多少人知道您的加密算法。2:加密芯片也不是必要的条件,需要一个能够每次产生不一样明文的机制。3:加密系统中,增加主MCU和加密芯片之间的多次验证非常有必要。