首页>>科技 >>内容

MCU解密全攻略,为何所有MCU都能被破解

发布时间:2024-01-03 13:54:24编辑:温柔的背包来源:

很多朋友对MCU解密全攻略,为何所有MCU都能被破解不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

MCU解密全攻略,为何所有MCU都能被破解

电子爱好者网消息:本文介绍了许多破解微处理器MCU和智能卡的方法,包括已知的非侵入式攻击,如功耗分析和噪声干扰,以及侵入式攻击,如逆向工程和微检测分析。并讨论了许多保护技术,包括低成本的隐藏方法到新的集成电路设计方法。背景:硅片安全措施的演变。

工业控制器和嵌入式系统的硬件安全措施同时开始发展。30年前,系统是由CPU、ROM、RAM、I/O缓冲区、串口等通信和控制接口等分离的部件组成的。如图1-1所示:图1-1通用嵌入式控制器。PCB上的每个元件都易于识别和复制。

在早期,除了法律和经济手段之外,很少有保护措施来防止他人复制这些设备。比如ROM采用低成本的掩膜技术制作,可以很容易的被EPROM复制,但后者通常要贵3-10倍甚至更多,或者通过定制掩膜ROM,需要很长的时间和很大的投入。另一种是游戏机广泛使用的简单ASIC,如图1-2所示。

这些ASIC主要用在I/O部分,替代几十个逻辑器件,可以降低成本,防止竞争对手抄袭,需要应用更大更贵的解决方案。其实ASIC也不会更安全,简单用示波器分析信号或者枚举所有可能的管脚组合,几个小时就能知道它的具体功能。

图1-2游戏机中的专用集成电路(ASIC)从20世纪70年代末开始,微控制器为基于CPU的控制板提供了一个非常好的替代方法。它们不仅有内存和通用的I/O接口,而且有一些保护措施来防止对内存内容的非授权访问。

可惜早期的MCU没有提供非易失性存储能力,重要的数据必须存储在MCU外部的独立芯片上,所以读取数据很容易。最近卖的一些便宜的USB狗也用这种方法进行软件保护,如图1-3所示。图1-3阿拉丁HASP4 USB狗

安全领域的下一步是将EEPROM芯片与MCU放在同一封装中。如图1-4所示。破解这些芯片并不容易。专业的方法是打开样品包装,用微探针获取数据。或者在单独的封装中重新焊接芯片。这些设备都不能被低级别的破解者拥有。这些破解者会尝试用自制的微探针(旧芯片的键合面积相当大)读取数据,或者利用软件缺陷。

图1-4 Microchip的PIC12CE518微控制器打开包装后的照片。可以看出,非易失性数据存储器和MCU是在同一个封装中拆开的。(译者注:最近的堆叠式芯片,比如手机用的Flash SRAM的combo存储器,结构都差不多,只是垂直堆叠。破解方法也差不多。结构见图1-5。图1-5 STST 32位MCU打开包装后的SEM照片。

有些MCU从来没有任何特殊的硬件安全保护。它们仅基于未公开的编程算法受到保护。这可能有一个伪装的回读功能,或检查功能。一般来说,这些MCU不会提供很好的保护能力。事实上,在一些智能卡中,正确使用验证功能可以起到很强的保护作用。

增强安全保护的下一步是添加硬件安全保险丝,以禁止对数据的访问。这很容易做到,不需要完全重新设计MCU架构,只需要使用熔丝来控制编程接口的回读功能,如图1-6所示。缺点是熔丝位很容易被定位和侵入。

例如,可以通过将熔丝位的输出直接连接到电源或地来修改熔丝的状态。在某些情况下,仅使用激光或聚焦离子束来切断引信的感应电路。非侵入式攻击也能成功。因为单独的熔丝布局不同于普通的存储器阵列。可以使用外部信号的组合,使熔丝位处于无法正确读取的状态,从而访问内部芯片上存储的信息。

使用半侵入式攻击可以让破解者很快成功,但是需要打开芯片的封装才能接近管芯。一种众所周知的方法是用紫外光擦除保险丝。

图1-6微芯片PIC12C508微控制器的保险丝位于程序存储器阵列之外。

下一步是使安全熔丝成为存储器阵列的一部分。如果设置了熔丝,则可以禁止外部读取和写入数据。一般保险丝靠近主存,或者干脆和主存共用一些控制线。因为fab使用与主存储器相同的过程,所以很难定位和重置熔丝。非侵入式攻击还是有的,但是找到它们需要时间。类似地,半侵入式攻击也是可用的。

当然,破解者需要更多的时间来找到安全保险丝或者控制电路中负责安全监控的部分,但是这些都是可以自动完成的。进行侵入式攻击会非常困难,需要人工操作,破解的成本会更高。

图1-7飞思卡尔的MC68HC705C9A微控制器在200倍显微镜下可以看到,保险丝是存储器读写控制逻辑的一部分。

此外,主存储器的一部分用于控制外部对数据的访问。这可以使用在上电时锁定特定区域的地址的信息作为保险丝。或者使用密码来控制对存储器的访问。比如TI的MSP430F112,只有输入正确的32字节密码才能回读。如果不输入密码,只能擦除芯片后才能操作。

虽然这种保护方法看起来比之前的更有效,但是它有一些缺点,可以通过时间序列分析、功耗分析等低成本的非侵入式攻击来解决。如果在上电或复位后,安全熔丝的状态是存储器的一部分,这将使破解者有机会用电源噪声破解,并迫使电路进入存储器中的错误状态。

图1-8 PIC16F648A伪顶金属层图案加大了微检测芯片的难度,200X。

使入侵攻击更加昂贵的其他措施包括使用顶级金属网格。所有网格都用于监控短路和开路。一旦触发,存储器将被复位或清除。普通的单片机是不会采用这种保护方式的,因为设计难度大,在非正常工作条件下也会触发,比如高强度电磁场噪声、低温或高温、时钟信号异常或电源不良等。

所以一些普通的MCU使用了更便宜的伪顶金属网格,但是对于微检测攻击也有非常高效的光学分析方法。在智能卡中,一些这样的网格线铺设在电源和地之间。在这些方法中发现的一些设计缺陷使得进行微检测攻击成为可能。同样,这些网格也无法抵御非侵入性攻击。因为导线之间有电容,光线可以通过导线到达电路的有效区域,所以半侵入式攻击还是有可能的。

可编程智能卡制造商走得更远,干脆砍掉了标准编程接口。相反,启动模块可以在加载代码后擦除或屏蔽自身。这些卡在初始化期间只能被编程一次,然后它们只能读写存储在卡中的数据或程序以响应用户的嵌入式软件。图1-9 STST ST16智能卡芯片表面金属层的敏感网格。

最近,一些智能卡使用存储器总线加密技术来防止微检测攻击。即使黑客获得了数据总线的数据,也不可能知道密码或其他敏感信息。这种保护措施是针对入侵和半入侵攻击的。但是,非侵入式攻击仍然可以像正常CPU一样访问和控制非编码信息。事实上,几年前就发现了一种破解编码信息的廉价方法。

图1-10英飞凌SLE66系列智能卡芯片上的硬件总线编码模块在100倍显微镜下,保护存储器免受微检测攻击。

其他需要提到的改进是用相似的ASIC逻辑设计解码器、寄存器文件、ALU和I/O电路等标准模块结构。这些设计被称为粘合逻辑,广泛用于智能卡。混合逻辑使得实际上不可能通过手动搜索物理攻击的信号或节点来获得卡的信息。该技术在盗版中应用广泛,可以提高普通CPU核的性能和安全性。

例如,Ubicom的SX28微控制器的引脚和程序都与微芯片的PIC16C57兼容,但通过使用混合逻辑设计、闪存和大容量RAM,其性能得到了极大的提高。在PIC微控制器中,破解者很容易跟踪从内存到CPU的数据总线,但在SX微控制器中,几乎不可能知道总线的物理位置,因此逆向工程和微检测攻击将非常困难和耗时。

图1-11 Ubicom的SX28微控制器引入了混合逻辑设计,提高了性能和安全性。

更常见的是,芯片由不同的模块组成,但每个模块都使用混合逻辑设计。比如Cypress的CY7C63001A微控制器。在这种情况下,黑客更容易追踪到模块之间的总线和控制线,对芯片进行侵入式和半侵入式攻击。混合逻辑设计不能防止非侵入式攻击,但需要更快更贵的设备。半侵入式攻击面临伪设计模块的问题。当然,黑客可以自动执行彻底的搜索,并尝试攻击所有可能的区域。

结果很可能是花了很长时间没有成功。另一方面,黑客可以直接攻击存储器或其控制电路。

图1-12 Cypress的CY7C63001A微控制器采用部分混合逻辑设计,但内部总线易于访问。

技术的进步增加了入侵攻击的成本。10年前,用激光切割机和简单的探针台就可以轻松读写芯片表面的任何一点,但对于现代的深亚微米半导体芯片来说,需要不寻常且昂贵的技术,这就难倒了许多潜在的破解者。比如PIC16F877,在显微镜下很容易观察到并逆向工程,仍然可以看到隐藏在顶层金属下的第二层金属和多晶硅。

不过PIC16F887A微控制器采用了平面化工艺,所以不会显示更深的层。唯一的办法就是用物理或化学的方法去除顶层金属。

图1-13在500倍的显微镜下,透过PIC16F877的顶层看到的是第二层金属和多晶硅。图1-14在500倍的显微镜下,你看不出PIC16F877A的顶层金属下有什么特别的地方。另外需要注意的是,市场上出现了大量的二手半导体制造和测试设备。虽然不能用来攻击高端产品,但足以破解旧技术制造的芯片。记忆的类型

微控制器根据位于存储器中的程序运行。有许多不同的存储器类型,其中大多数已用于微控制器。大多数现代微控制器都是用互补金属氧化物半导体技术制造的。芯片上的存储器可以是CMOS (SRAM和一些EEPROM)或MOS。后者性能更好,体积小。

早期的微控制器使用掩模ROM和UV擦除编程存储器来存储程序,使用SRAM来存储数据。掩膜版ROM在大规模生产和低成本下仍然被广泛使用。通常,这些微控制器在包装上没有特定类型的印刷,只有制造商的商标。内部工厂预编程ROM包含软件版本号。图1-15使用mask ROM的MCU通常只封装了出厂的内部代码。

Mask ROM性能很优秀,但是不能重新编程,也就是不能升级程序。带UV EPROM的MCU通常有两种方式:一种是带应时窗的陶瓷封装,编程前可以重新擦除。另一种是量产的标准塑封,也叫OTP(一次可编程只能编程一次)。UV EPROM的不便之处在于编程时需要高电压;一次只能写一个字或者一个字节,导致整个芯片编程时间很长。

即使是可擦除版本也只能编程几百次。擦除时需要放在很强的紫外线下20-30分钟。

在一些需要快速读写或频繁升级的微控制器中,SRAM也被用作程序存储器。比如Sepras的USB 2.0微控制器C7Y68013。达拉斯半导体的加密微控制器也用SRAM,因为在防破解场合需要更短的擦除时间。

更先进的EEPROM比UV EPROM有一些进步:它可以在数百或数千个周期内重新编程;通常芯片上的电荷泵电路用来产生高电压;很快就可以编程了。EEPROM的进一步发展是flash EEPROM,是现代微控制器和智能卡中的主流存储器。提供更快的编程时间,可以分块擦除,节省大量时间;并且可以擦除上万次。

大多数现代微控制器使用闪存作为程序存储器,无需昂贵的编程设备即可现场升级代码。

一种方式是集成SRAM和EPROM,可以实现快速读写时间,非易失性。但是太贵了,而且只在少量智能卡和ASIC中使用。每一种内存都有优缺点,硬件设计者根据需求来选择。普通微控制器在同一个管芯上有不同的存储器,比如OTP PIC微控制器中使用的SRAM和EPROM。飞思卡尔MC68H05微控制器采用SRAM、掩膜ROM和EEPROM。

在CPLD中,主要使用EPROM、EEPROM和flash存储器。大多数FPGA基于SRAM,一些公司提供带反熔丝和闪存的非易失性FPGA。反熔丝是一种特殊的OTP存储器,用于对芯片中金属线之间的互连进行编程。这些互连非常小,大约100纳米宽,很难确定它们的状态。基于反熔丝的技术提供了高安全性。安全保护的类型

通过编程接口对片内存储器进行写、校验、读、擦除操作,可通过硬件(JTAG)或软件(bootloader)实现。在硬件接口方面,安全保护通常使用安全保险丝来控制接口的操作,例如,防止存储器中的数据被发送到输出缓冲区。至于软件接口,一般采用密码保护,但通常软件会检测一个硬件保险丝的状态。

一些微控制器使用了这两种方法,软件启动载入模块控制系统的编程,另一个快速的硬件接口用来大批量生产的编程。每一种都有它的优势和劣势。通过软件,有更好的灵活性和更好的编程控制能力,但会在时间延迟和功耗方面泄漏一些信息。硬件的执行速度更快,对噪声攻击不敏感,不会通过功耗泄漏信息。

在硅芯片的资源上,两者都占用类似大小的空间,对于现代的微控制器,与其它较大的部分如程序存储器,处理器和模拟接口相比,这部分几乎可以忽略不计。制造商就可以在同一个芯片上放置两种或更多的编程接口。如通过异步接口进行在线串行编程,标准的并行编程,软件启动模块通过异步接口编程。

一些制造商故意不提供它们的微控制器的编程规格。这对它本身并没有提供很好的保护,只是给破解稍稍增加成本而已。这些信息可以通过在开发板上或通用编程器对芯片进行编程而获得。

很明显,对于最高等级的安全,系统没有任何编程接口,并且不能读写所存储的数据。这通常用于掩模ROM微控制器和智能卡。对这种保护,实用破解方法是用微探针接触数据总线来恢复信息或使用功耗分析和噪声攻击来利用软件的缺陷。当微控制器进行编程但不提供任何返回信息,只有校验和写检查,这可以提供相对高的安全等级。

当然,这需要完全执行以避免破解者强制系统一次只校验一个字节。

大部分现代的微控制器有一个或多个安全熔丝来控制片上存储器的读写。这些熔丝可以用软件或硬件来实现。软件的方法就是密码存储在存储器中或一个特定的存储器位置当作一个安全熔丝。例如,在MC68HC908系列,使用了密码保护。MC68HC705B系列的熔丝位于数据EEPROM存储器的第一个字节。两种方法的安全性都较高,因为很难从物理上找到熔丝和密码的位置并复位它们。

同时,破解者会尝试使用噪声攻击来跳过安全检查,或使用功耗分析来观察猜测的密码正确与否。

硬件执行方面,安全熔丝物理上位于芯片上。这可以是主存储器阵列边上的分离的单个单元,甚至更远。所有的PIC和AVR微控制器都这样。这两者的安全性能并不高,熔丝很容易被找到并被屏蔽。

安全熔丝在主存储器中可以提供提供更好的保护,这很难找到并屏蔽它们。主存储器和熔丝可以通过位线(Bit line)接在一起。如zilog的Z86E33微控制器,或通过字线(Word line)接在一起,如意法的ST62T60。有趣的是MC68HC705C9A使用了多种安全措施。熔丝单元放在主存储器单元之间,合用位线。如果熔丝被紫外线擦除了,主存储器也会被擦掉。

对存储器进行反向工程,发现很难分辨哪部分属于存储器,哪部分属于熔丝。但同时,半侵入式攻击可以很好工作,因为熔丝有分开的控制电路,这很容易被破解而不影响主存储器。

图1-16 200倍显微镜下,Z86E33微控制器的熔丝沿位线紧挨着主存储器

图1-17 200倍显微镜下,ST62T60微控制器的熔丝沿字线紧挨着主存储器

下一个硬件安全保护方面的进展是将熔丝区域嵌入到主存储器阵列中,共享控制或数据线,这样的安全性能更好,熔丝已经成为存储器的一部分,很难进行定位。

将某一部分存储器作为安全熔丝可以达到更高的安全性能。这种情况下,不扰乱其它部分存储器的内容,找到位置并复位是异常困难的。这并不意味着别的破解方法不能凑效。但可以减少成功的机会。

安全熔丝可以通过多种方法来监控。最简单的方法就是在上电时;复位时;进入编程模式时检查熔丝的状态。使用电源噪声或激光脉冲,可以用很短的时间就改变熔丝地状态。熔丝状态保存在触发器或寄存器中并不好,因为触发器的状态可以通过缺陷注入攻击来改变。

 更多内容请下载:MCU解密全攻略为何所有MCU都能被破解

以上知识分享希望能够帮助到大家!