(点击上面的红色文字获取)。
MCU的安全水平正在逐步提高,一些公司甚至推出了安全主控制器,这是一个不错的现象,表明大家越来越重视嵌入式领域的信息安全和程序安全。然而,对于很多特殊行业,如消费电子、低成本通信模块、电源控制模块等,由于成本压力和升级速度,不可能使用更安全的主控MCU,大量产品甚至使用了51台单片机。
大家可能都知道,破解
51单片机,但是为什么容易怎么破解,很多人可能不是很清楚,我在这里结合网上一些前辈整理的信息,以及我自己的经验,对MCU的破解技术做一个简单的分析。
不要把解密想得很复杂,他不像开发一个产品,先确定客户需求或者新产品的主要功能,然后搭建一个项目确定技术指标,分配软硬件开发任务,基于硬件调试程序,然后验证功能,测试bug,做环境测试。业内解密的方法很多,每个人破解的想法都不一样。但它大致分为几种类型。
软件破解使用
软件破解目标MCU的方法,使用这种方法,不会对目标MCU组件造成物理损坏。主要针对WINBONGD、SYNCMOS单片机和GAL门阵列,这类软件解密设备,按照一定的步骤操作,执行芯片中的程序,将指令发送到芯片外,然后用解密设备拦截,使芯片内部的程序被解密(GAL使用逻辑猜测),就可以得到加密后的单片机中的程序。
硬件破解
具体流程如下:
1. 测试
使用高端编程器等设备测试芯片是否正常,并保存配置字。
2.打开盖子
使用手动或专用开盖设备进行开盖处理,这里的开盖并不意味着MCU或其他MCU真的有盖。简单来说,MCU其实就是一个大规模的集成电路,它由N个电路组成,晶圆是承载集成电路的载体。晶圆封装后,我们日常使用的IC芯片就成型了,可以有多种封装形式,比如TSSOP28、QFN28等,可以去百度搜索一下,这里就不赘述了。
3. 进行电路修改
针对不同的芯片,提供相应的图纸,供厂家进行电路修改,目的是使MCU的存储区可读。有些MCU默认不允许从Flash或E2PROM中读出数据,因为有硬件电路保护它们,一旦加密连接被切断,程序就会暴露并可读。如图 2 所示
(切断加密保险丝,以便直接读取芯片内部程序)。
4. 阅读程序
检索修改后的MCU,直接用编程器读出程序,可以是十六进制文件或BIN文件。
5.将样品烧录给客户
根据读出程序和配置,将其闪存到目标MCU,使MCU被破解。至此,硬件破解方法圆满完成。
硬质和软质
软件和硬件的结合需要对芯片的内部结构有非常熟悉的了解。
此外,还有一些其他的破解技术,如电子检测攻击、故障生成技术等,但最终目标只有一个,那就是能够模仿目标MCU的功能。
看到这里,大家应该明白一个道理,破解MCU并不能完整地恢复MCU中的程序。目前的技术做不到,至少在国内做不到。针对上述情况,加密芯片应运而生,前期确实可以很好的保护MCU的安全,但漏洞很快就被发现。
让我给你举一个实际开裂的例子,你就会明白。
加密原理:
MCU和加密芯片各自存储一个认证密钥,并存储相同的加密算法。
MCU 生成一个随机数并将其发送到加密
芯片,用密钥对其进行加密并返回密文,此时MCU对其进行解密,并比较明文是否等于生成的随机数。如果相等,则程序正常运行;如果不相等,则处理错误。
因为盗版者没有这个密钥,加密芯片和MCU交互的数据会随机变化,不可能找到规律,所以只能破解加密芯片的程序,然后加密芯片的副本才能让MCU程序运行。加密芯片与通用MCU不同,它内部有很多安全机制,很难破解。
这种加密方案似乎非常安全,但仍然容易受到攻击。
破解方法:
首先,按照第二种破解方法获取MCU的HEX文件。此处省略了 N 个步骤,不再重复。
HEX反编译使用软件,目前有很多反编译软件。
在反编译程序中,找到对比点,如图 3 所示,可能是 CJNE 语句。因此,只需删除箭头 2 行并将汇编语言下载回 MCU,破解就完成了。此时,即使没有加密芯片,MCU也可以正常运行。
其实原因很简单。MCU是用来判断加密芯片的返回值的,所以不要让他做出判断,这样无论加密芯片的返回值是多少,程序都可以正常运行。
结果,这种加密方案很快就被破解了。当然,也不是那么绝对,因为有些MCU即使切片也无法获取里面的HEX或BIN文件,所以这种破解方案还取决于MCU的安全等级是否足够高。但足以说明一个问题,这种通过对比加密结果实现加密的方案,安全级别还是不够高,还存在破解漏洞。
由于篇幅有限,本期仅对解密技术进行简单介绍。所谓知己知彼,知己知彼,才能打赢一切战仗,只有了解破解技术,才能更有效地做好加密防护。