你的MCU是怎么被破解的!

  目录

在我们周围,MCU 的安全等级正在逐步提升,一些公司甚至推出了安全主控,这是很好的现象,说明各行业都越来越重视嵌入式领域的信息安全和程序安全了。但目前仍有很多行业,比如消费类电子产品,低成本的通讯模块、电源控制模块等等,迫于成本压力以及更新换代速度问题,都无法更新使用更安全的主控 MCU。
还有另一个重要的原因就是企业的研发组织以及工程师对安全的重视程度不够,从而不愿意花更多的时间和成本进行安全的研发。
大家可能都知道破解 51 单片机是很容易的,但为什么容易,又是如何来破解的,可能很多人就不大清楚了。其实对于MCU的破解从简单来讲,它并不像我们开发项目那样复杂,有时候一个漏洞被发现,可能一个小技巧就可以获取或者篡改用户程序,行业里解密的方法有很多,每个人破解的思路也不一样。但大致也就是以下几种。


软件破解

利用软件破解目标单片机的方法,并且利用这种方法,不会对目标 MCU 元器件造成物理损伤。
这种破解方法最早的时候主要是对 WINBONGD,SYNCMOS 单片机和 GAL 门阵列,这种利用软件解密设备,按照一定的步骤操作,执行片内的程序送到片外的指令,然后用解密的设备进行截获,这样芯片内部的程序就被解密完成了(GAL 采用逻辑猜测),就可以得到加密单片机中的程序。
图片
另外对于我们现在市场上比较普遍的ARM系列芯片也同样适用,比如我们在发布产品的时候没有把相关的调试接口关闭掉,如SWD接口,那么破译者完全可以利用这个调试接口,将自己编写的一段代码烧录到MCU的ram中,并将执行这一端代码,而这一段代码就可以把我们存放在flash中的固件程序一个字节一个字节的从芯片中读取出来。
除了这种调试作用的SWD接口外,对于具备OTA功能的产品也要注意保护自己的OTA通道,一旦OTA过程被识破,黑客完全有机会利用这个接口去运行自己的程序,从而将Flash中的信息获取到。

芯片的唯一ID

以上所讲的都是利用芯片本身或者软件漏洞来获取用户固件的案例,那么会有人说,我利用芯片的唯一ID在程序运行过程中对ID做校验,这样即便把固件拷贝出来也没办法批量生产。
好的,芯片设计中增加了唯一ID确实给芯片的破解增加了一些难度,但黑客往往都是不走寻常路的。
首先这种唯一ID在硬件上就存在漏洞,是有机会被篡改的,ID或者读取ID的地址。那么我们从软件上来破解也是可以的。
破解方法:

  1. 首先按照上面提到获取固件的破解方法,获取到 MCU 的 HEX 文件。
  2. 使用软件进行 HEX 反编译,反编译软件目前有很多。
  3. 在反编译的程序中,找到对比点,比如图 3 所示,CJNE 语句可能就是这个对比点。因此只要把箭头 2 那行语句删除,然后重新把汇编语言下载到 MCU 中,破解工作就完成了。此时即使没有加密芯片,MCU 也能正常运行了。
    图片

加密芯片是否安全?

关于加密芯片,我想说的是,加密芯片本身还是非常安全的,它内部都设计了相关的防硬件破解的措施,一但对芯片进行硬件探测和破解就会触发其内部保护电路,将自身数据全部擦除。
但是我们的产品是一个系统,他不是单独的一个加密芯片,一旦我们的功能的主要部分暴露在非安全区,就给黑客带来了可乘之机,比如一般的智能硬件产品的功能实现都是在系统的主MCU中,在主MCU之外往往通过SPI或者IIC接口来连接加密芯片对系统进行保护。
加密原理:
MCU 和加密芯片各存储一条认证秘钥,存储同样的加密算法;
MCU 产生随机数发给加密芯片,后者用秘钥加密后将密文返回,此时 MCU 解密后,比对明文是否和生成的随机数相等。如果相等,程序正常运行; 如果不相等,出错处理。
因为盗版商没有这条秘钥,加密芯片与 MCU 交互的数据又是随机变化的,无法找到规律,所以只能把加密芯片的程序破解了,再复制一片加密芯片才能让 MCU 的程序跑起来。而加密芯片不同于通用 MCU,它内部有很多安全机制,破解难度非常大。

这种加密方案看似非常安全,但其实主MCU存在安全漏洞,依然会被拷贝出固件,执行类似破解唯一ID加密的方法即可,因此这种加密芯片只能保护个别数据,无法对整个系统进行全面的保护。


硬件破解

前面所讲的都有一个前提,那就是用户忘记关闭调试接口,或者用的OTA程序被破解利用,使得黑客获取到了芯片内部的固件程序。
接下来我们聊一下另一个情况,工程师认真,没有留下调试接口,同时OTA逻辑也设计的非常可靠,具备了各种保护逻辑和防重放措施,保证不被黑客检测到重复的命令信息。
难道这样就没办法破解了吗?很遗憾,这才是真正研究芯片破解技术的专业人员的起步环境。
全球有很多做芯片破解的公司和研究机构,他们有的甚至在一些院校实验室和研究所里面,他们往往会为芯片设计公司服务,来帮助设计公司提高自己的芯片安全指标,当然也可以提供芯片破译服务给有利可图者提供服务。
芯片的安全就是攻防对决,不断提高技术水平的过程,接下来我们看一下硬件上是怎么破解一颗芯片的。

流程如下:
1、测试
使用高档编程器等设备测试芯片是否正常,并把配置字保存。
2、开盖
采用手工或专用开盖设备进行开盖处理,这里说的开盖并不是说单片机或者其他 MCU 真有一个盖。
MCU 其实是一个大规模集成电路,它是由 N 个电路组合而成的,而晶圆就是搭载集成电路的载体。将晶圆进行封装后,就形成了我们日常所用的 IC 芯片,封装形式可以有多种,比如 TSSOP28、QFN28 等,大家可以自己去百度搜索,这里不再复述。
图片
3、做电路修改
对不同芯片,提供对应的图纸,让厂家做电路修改,目的是让 MCU 的存储区变得可读。有些 MCU 默认不允许读出 Flash 或者 E2PROM 中的数据,因为有硬件电路做保护,而一旦切断加密连线,程序就暴露可读了。如图 2 所示
图片
(切割掉加密熔丝,这样就可以直接读出芯片内部程序)
4、读程序
取回修改过的 MCU,直接用编程器读出程序,可以是 HEX 文件,或者 BIN 文件。
5、烧写样片给客户
按照读出的程序和配置,烧写到目标 MCU 中,这样就完成了 MCU 的破解。至此,硬件破解法成功完成。


其他硬件破解

开盖修改电路破除芯片设置的读保护来对芯片进行破译,这其实还是最一般的手段,对于很多具备熔丝位以及更高保护措施的芯片,依然有各种破译办法,接下来简单列举一下:

电子探测攻击

该技术通常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信息。

过错产生技术

该技术使用异常工作条件来使处理器出错,然后提供额外的访问来进行攻击。使用最广泛的过错产生攻击手段包括电压冲击和时钟冲击。处理器执行错误操作。电源和时钟瞬态跳变可以在某些处理器中影响单条指令的解码和执行。

探针技术

该技术是直接暴露芯片内部连线,然后观察,阻止,干扰单片机以达到攻击目的。

紫外线攻击方法

紫外线攻击也称为紫外线攻击方法,就是利用紫外线照射芯片,让加密的芯片变成了不加密的芯片,然后用编程器直接转换程序。这种方法适合OTP的芯片,做单片机的工程师都知道OTP OTP芯片的封装有陶瓷封装的一半都有石英玻璃,这种是可以直接用紫外线照射的,如果是用塑料封装的,就需要先将芯片开盖,将晶圆暴露以后才可以通过这种芯片的加密性比较差,解密基本不需要任何成本,所以市场上这种芯片解密的价格非常便宜,SONIX的SN8P2511解密,飞凌单片机解密等价格就非常便宜。

FIB恢复加密熔丝方法

这种方法适用于很多的具有熔丝加密的芯片,最有特色的芯片就是TI的MSP430解密的方法,因为MSP430加密的时候要烧熔丝,那么只要能将熔丝恢复上,那就变一般解密公司利用探针来实现,将熔丝位连上,也有的人因为自己没有太多的解密设备,需要交由其他半导体线路修改的公司来修改线路,一般可以使用FIB(聚焦离子束)设备这些设备目前在国内的二手设备很多,也价格很便宜,一些有实力的解密公司都配置了自己的设备。这种方法依据需要设备和耗材,不是好的方法,但是很多芯片如果没有更好的方法的时候,就需要这种方法来实现。

修改加密线路的方法

目前市场上的CPLD和DSP芯片设计复杂,加密性能要高,采用上述方法是很难做到解密的,那么就需要对芯片结构作前面的分析,然后找到加密电路,然后利用芯片线路修改的设备将芯片的线路做一些修改,让加密电路失效,让加密的DSP或CPLD变成了不加密的芯片从而可以读出代码。如TMS320LF2407A解密,TMS320F28335解密,TMS320F2812解密就是采用这种方法。


文章作者: 改变世界
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 改变世界 !
评论