目前,攻击单片机的技术主要有四种,即:
(1)软件攻击
这种技术通常使用处理器通信接口,并利用协议、加密算法或这些算法中的安全漏洞进行攻击。软件攻击成功的典型例子是对早期Atmel AT89C单片机的攻击。攻击者利用该系列单片机擦除操作的顺序设计上的漏洞,在加密锁定位后,停止下一步使用自编程序擦除片上程序存储器中的数据,使加密的单片机变成未加密的单片机,然后利用编程器读出片上程序。
(2)电子探测攻击
该技术通常以高时间分辨率监测处理器正常工作时所有电源和接口连接的模拟特性,通过监测其电磁辐射特性实施攻击。由于单片机是有源电子器件,当它执行不同的指令时,相应的电源功耗也随之变化。这样,通过使用专门的电子测量仪器和数理统计方法来分析和检测这些变化,就可以得到单片机中特定的关键信息。
(3)故障生成技术
这种技术利用异常工作条件使处理器出错,然后提供额外的攻击途径。最广泛使用的故障攻击手段包括电压冲击和时钟冲击。低压和高压攻击可用于禁用保护电路或迫使处理器执行错误操作。瞬态时钟跳变可以重置保护电路,而不会损坏受保护的信息。并且电源瞬态跳变会影响某些处理器中单个指令的解码和执行。
(4)探针技术
这种技术是直接暴露芯片的内部连接,然后对单片机进行观察、操纵和干扰,达到攻击的目的。为方便起见,人们将上述四种攻击技术分为两类,一类是侵入式攻击(物理攻击),需要破坏封装,然后在半导体测试设备、显微镜和微定位器的帮助下,在专门的实验室中,花费数小时甚至数周的时间完成。所有的微探针技术都是侵入式攻击。另外三种方式都是非侵入式攻击,被攻击的MCU不会受到物理损伤。非侵入式攻击在某些情况下特别危险,因为非侵入式攻击所需的设备通常可以自制和升级,所以非常便宜。
大多数非侵入式攻击要求攻击者具备良好的处理器知识和软件知识。相反,侵入式探针攻击不需要太多的初始知识,通常可以使用一整套类似的技术来对付广泛的产品。
因此,对单片机的攻击往往从侵入式逆向工程开始,积累的经验有助于开发更廉价、更快速的非侵入式攻击技术。
(5)入侵攻击的一般过程。
入侵攻击的第一步是移除芯片封装。有两种方法可以达到这个目的:第一种是完全溶解芯片封装,露出金属连接。二是只去掉硅芯上的塑封。第一种方法需要将芯片绑定到测试夹具,并在绑定表的帮助下进行操作。第二种方法不仅需要攻击者的知识和必要技能,还需要个人的智慧和耐心,但操作起来相对方便。用刀可以揭开芯片上的塑料,芯片周围的环氧树脂会被浓硝酸腐蚀。热的浓硝酸会溶解芯片封装而不影响芯片和布线。这一过程通常在非常干燥的条件下进行,因为水的存在会腐蚀暴露的铝线连接。
然后,用丙酮清洗芯片以去除超声池中残留的硝酸,然后用清水清洗以去除盐并干燥。如果没有超声池,通常跳过这一步。这种情况下,芯片表面会有点脏,但不影响紫外光对芯片的操作效果。最后一步是找到保护熔丝的位置,并将保护熔丝暴露在紫外线下。一般用放大至少100倍的显微镜追踪编程电压输入引脚的连接,找到保护熔丝。如果没有显微镜,只需将芯片的不同部分暴露在紫外线下,观察结果即可。用不透明纸覆盖芯片,以保护程序存储器不被紫外线擦除。将保护熔丝暴露在紫外线下5 ~ 10分钟,会破坏保护位的保护功能。之后,可以使用简单的编程器直接读出程序存储器的内容。
对于使用保护层保护EEPROM单元的单片机来说,用紫外光复位保护电路是不可行的。对于这种类型的MCU,通常使用微探针技术来读取存储器内容。打开芯片封装后,将芯片放在显微镜下,可以很容易地找到从存储器到电路其他部分的数据总线。
由于某种原因,在编程模式下,芯片锁定位不会锁定对存储器的访问。利用这个缺陷,把探头放在数据线上就可以读取所有想要的数据。在编程模式下,通过重启读取过程并将探头连接到另一条数据线,可以读取程序和数据存储器中的所有信息。
另一种可能的攻击手段是借助显微镜和激光切割机寻找保护熔丝,从而搜索与这部分电路相连的所有信号线。因为设计有缺陷,通过切断保护熔丝到其他电路的某条信号线,可以使整个保护功能失效。由于某种原因,这根线与其他线距离较远,所以激光切割机可以完全切割这根线,而不会影响相邻的线。这样,通过使用简单的编程器可以直接读出程序存储器的内容。
虽然大多数普通单片机都有烧断保险丝保护单片机内代码的功能,但由于普通低档单片机的定位不是做安全产品,往往不提供针对性的防范措施,安全级别较低。另外,单片机应用广泛,销量大,厂商之间的委托加工和技术转让频繁,大量技术数据泄露,使得利用这类芯片的设计缺陷和厂商的测试接口,通过修改熔丝保护位等入侵性攻击或非入侵性攻击手段,读取单片机内部程序变得更加容易。