上期提到了嵌入式MCU破解技术,虽不全面,但足够起到警示作用。
本期主要讲述嵌入式产品如何进行安全防护。
因为MCU端的程序很容易被获取到,所以MCU端的程序和数据都是不安全的。最直接的加密防护,就是提升MCU的安全等级,让他变得坚不可摧。有些主控厂家意识到这一点,也推出了一些安全主控。但目前市场上的大多数MCU都不会去做安全防护,我们是无法左右MCU原厂的,只能在MCU之外做文章。上期提到的认证方案,之所以不是绝对安全的,就是因为认证成功与否,还是需要MCU端程序自己做判断,因此这一动作是可以被绕过的。
目前市场上公认的最安全加密方案就是算法移植方案。之所以说他是最安全的,有以下两个原因。第一,MCU端的程序有一部分被移植走了。比如MCU端存储了一个图像优化算法,我们把他移植到另一颗芯片中去运行,当MCU需要调用这个算法时,将参数传递过去,并从另一颗芯片取回运算结果。这样一来,即使MCU端程序被破解了,也不可能拿到所有程序,必须要破解另外一个芯片,才能拼凑出全部程序,这是方案上的优越性。第二个原因,就是算法移植方案都是基于高安全等级的加密芯片实现的,保证存储到加密芯片内部的程序算法是不可被读出的。因为加密芯片都是基于特殊的硬件平台(比如智能卡平台)专门针对暴力软硬件破解做了很多针对性的防护措施,如识别到硬件攻击则启动自毁机制等,所以他的破解代价远远高于破解MCU,我们移植到加密芯片中的算法是非常安全的。其中凌科芯安的LKT系列加密芯片就是极具代表性的产品。
但是算法移植方案也并不是完美的,毕竟对很多用户产品的实时性要求非常高,从加密芯片中调用一个算法并获得运算结果,时间往往要比直接在MCU中运行多出很多。这样一来,算法移植方案就不再适用。此时,我们可以采用参数移植结合对比认证的方案。对比认证上期讲过,不再敷述。参数移植就是将MCU中的一部分参数移植到加密芯片中。在MCU程序运行的空闲期内,将关键参数从加密芯片端读回并解密,等待需要的时候再应用。这样就在牺牲一定安全强度的基础上,解决了实时性差的短板。同样也是很好的加密方案。
通过这两期的讲解,大家对于解密、加密技术应该有了一定的了解了。希望能够引起足够的重视,嵌入式行业内的安全防护是非常有必要的。一定不要忽略这一点。