- 硬件方面
- 软件方案方面
硬件方面:如果加密芯片本身硬件会被物理**,那就毫无安全可言,失去了加密芯片保护MCU方案的意义。
智能卡内核的加密芯片,硬件方面安全性是最高的。智能卡自从上世纪70年代末诞生以来,就是直接跟“钱”直接打交道。例如最早的IC卡就用于存话费打电话,现在银**,社保卡,电表卡等等,上面就直接存放着“钱”,没有足够安全的硬件支持,这些行业也不可能敢将“钱”直接存放在卡上。
经过几十年的发展,MCU的功能越来越强大:如IO口数量,越来越多,IO口的种类也越来越多,支持的通信协议也越来越多,等等。然而同样是几十年,接触式智能卡,却依旧只有ISO7816的UART口。硬件上增加的只有存储空间大了,速度快了,算法及安全寄存器越来越多。几十年来,智能卡除了变大,变快外,就一直围绕着安全在发展。
智能卡内核,在硬件方面,使用了顶层金属网络设计,提升入侵难度。所有的网格都用来监控短路和开路,一旦触发,会导致存储器复位或清零;另外智能卡使用存储器总线加密,每张卡片总线加密密钥不同,这样即使入侵者完全**了,也无法生产出相同功能的芯片来。智能卡将标准的模块结构使用混合逻辑(Gle Logic)设计,使得攻击者不可能通过信号或节点来获得卡的信息进行物理攻击;智能卡还砍掉了标准的编程接口,甚至干掉了读取EEPROM接口,取而代之的是启动模块,可以在代码装入后擦掉或者屏蔽自己,之后只能响应使用者的嵌入软件所支持的功能。
软件方面:最好的软件方案是将MCU的一部分功能程序,移植到加密芯片里面执行。这样即使攻击者**了MCU的程序,也无法得到加密芯片里面的代码(加密芯片要能做到硬件上不被**)。
很多加密芯片号称有AES算法,或者SHA256算法等等。一味的强调算法的强度,而忽略了其工作原理。实际上,不管用哪种加密算法,MCU及加密芯片上都要存储一致的密钥,才能保证双方协同工作。而MCU可被**,理论上都可以被攻击者拿到密钥,利用这种攻击方法,再高强度加密算法也无济于事。
例如DES算法,自从上世纪70年代被研制出来,然后运用到银**中(PBOC银**现在仍然还在使用的是DES/3DES算法)已经几十年了,目前为止,除了穷举外还没有其他方法可以**其密钥。我们假设1us计算一次DES,一年有365天24小时60分60秒100000微秒=3153600000000微秒。单DES密钥长度为8字节,如果要把这8字节穷举完,则要580万年(0xFFFFFFFFFFFFFFFF除以十进制3153600000000 = 约等于580万)。也就是说,如果不是直接从MCU中直接获取密钥的话,**DES算法,需要580万年。那些所谓的很多算法比DES算法更强大,毫无意义,人家**不会从算法本身**,而是从MCU中去获取密钥。
所以DES/AES/SM1 /SM3/SHA1/SHA256等等,无论是哪种算法,使用者都无需担心算法本身的强度,不会有人来攻击这些算法,因为代价太高。
相反,更多的**是从MCU这端拿到密钥的,因为理论上只要把MCU**后仿真,定位到了加解密函数,就能找到相关的密钥。所以软件方案本身的设计,远比算法本身的强度重要。
只有把MCU的部分代码移植到加密芯片中,并在加密芯片中执行此代码,这种软件方案才是最安全的,其他的软件方案,都可以被**(因为MCU可被**,并被仿真)。现在市面上有部分加密芯片,把MCU的部分代码存放在加密芯片中,然后通过密文方式读到MCU中去执行。这种方法同样可被**,因为其代码不是在加密芯片中执行。
瑞纳捷的RJMU401加密芯片,硬件上使用的是最高安全强度的智能卡芯片内核;软件上使用的是灵活的可编程方式,可内置算法。具有接口简单(SPI),安全强度高,开发简单,价格低,性价比高等特点。我们提供了一套经典加密方案设计样例,并提供了各种MCU下的源代码,例如:STM32等等。开发者几个小时就能上手,然后再根据样例设计出自己的加密方案。
最后给广大开发者一些忠告:
不要相信主控MCU本身的加密机制, 我们太多的客户因为相信芯片本身的加密,没有做其他的保护, 而受到巨大的损失。
要想加密芯片硬件本身不被**,请尽量选择智能卡内核的加密芯片。
要想软件方案足够安全,一定要将MCU的部分代码放入加密芯片中执行,否则都会被攻击者在MCU中,找到密钥而**方案。 |