单片机解密到底是什么原理(单片机解密到底是什么)

单片机内部一般有程序区和数据区(或其中之一),供用户存储程序和工作数据(或其中之一)。为了防止未经授权访问或复制MCU中的程序,大多数微控制器都有加密锁或加密字节来保护芯片上的程序。

如果编程时加密锁的定位被启用(锁定),用普通编程器无法直接读取单片机中的程序,这种情况称为单片机加密。(BugPS: MCU程序基本存在于Flash中,大部分可以读取或识别Flash上的数据得到固件文件,这就带来了复制产品的机会)

攻击者借助专用设备或自制设备,通过各种技术手段,从芯片中提取关键信息,获取芯片中的程序,称为芯片解密。

单片解密又叫单片解密、芯片解密、IC解密,但严格来说,这些名字并不科学,却成了约定俗成的名字。我们把CPLD解密和DSP解密称为单片机解密。单片机只是可以加载程序芯片的类之一。

其他可以刻录程序和加密的芯片还有DSP、CPLD、PLD、AVR、ARM等。当然带存储功能的内存条也可以加密,比如ds 2401 ds 2501 at 88s 0104dm 2602 at 88s 0104d等。其中也有专门用加密算法设计的功能芯片,用于专业加密或设计用于验证厂商的代码工作等。这种芯片行业可以达到防止电子产品被抄袭的目的。

单片机解密方法

2.1软件攻击

这种技术通常使用处理器通信接口,并利用协议、加密算法或这些算法中的安全漏洞进行攻击。

比如对早期XXX系列单片机的攻击就是一个典型的例子。攻击者利用该系列单片机擦除操作的顺序设计上的漏洞,在加密锁定位后,停止下一步使用自编程序擦除片上程序存储器中的数据,使加密的单片机变成未加密的单片机,然后利用编程器读出片上程序。

目前,在其他加密方法的基础上,可以开发一些设备,用某种软件对软件进行解密。

比如用一些程序员定位插入的字节,用一定的方法找出芯片中是否有连续的空位,也就是说找出芯片中连续的FF FF字节。插入的字节可以执行将片内程序发送到片外的指令,然后用解密设备截获,使片内程序解密。

2.2电子检测攻击

该技术通常以高时间分辨率监测处理器正常工作时所有电源和接口连接的模拟特性,通过监测其电磁辐射特性实施攻击。

由于单片机是有源电子器件,当它执行不同的指令时,相应的电源功耗也随之变化。这样,通过使用专门的电子测量仪器和数理统计方法来分析和检测这些变化,就可以得到单片机中特定的关键信息。

2.3故障生成技术

这种技术利用异常工作条件使处理器出错,然后提供额外的攻击途径。最广泛使用的故障攻击手段包括电压冲击和时钟冲击。

低压和高压攻击可用于禁用保护电路或迫使处理器执行错误操作。瞬态时钟跳变可以重置保护电路,而不会损坏受保护的信息。并且电源瞬态跳变会影响某些处理器中单个指令的解码和执行。

(BugPS:这种方法是让单片机运行异常,使单片机处于无保护状态)

2.4探针技术

这种技术是直接暴露芯片的内部连接,然后对单片机进行观察、操纵和干扰,达到攻击的目的。(BugPS:芯片内部完全暴露,芯片瑟瑟发抖!)

单片机解密分类

为方便起见,人们将上述四种攻击技术分为两类,一类是侵入式攻击(物理攻击),需要破坏封装,然后在半导体测试设备、显微镜和微定位器的帮助下,在专门的实验室中,花费数小时甚至数周的时间完成。

所有的微探针技术都是侵入式攻击。另外三种方式都是非侵入式攻击,被攻击的MCU不会受到物理损伤。非侵入式攻击在某些情况下特别危险,因为非侵入式攻击所需的设备通常可以自制和升级,所以非常便宜。

大多数非侵入式攻击要求攻击者具备良好的处理器知识和软件知识。相反,侵入式探测攻击不会不需要太多的初始知识,通常一整套类似的技术可以用来处理各种各样的产品。

因此,对单片机的攻击往往从侵入式逆向工程开始,积累的经验有助于开发更廉价、更快速的非侵入式攻击技术。

入侵解密过程

入侵攻击的第一步是移除芯片封装(有时称为打开简称,或打开用英语)。有两种方法可以实现这个目标。

第一种方法是完全溶解芯片封装并暴露金属连接。

二是只去掉硅芯上的塑封。

第一种方法需要将芯片绑定到测试夹具,并在绑定表的帮助下进行操作。第二种方法不仅要求攻击者这不仅需要一定的知识和必要的技能,还需要个人的智慧和耐心。但是操作起来相对方便,完全在实验室操作。

用刀可以揭开芯片上的塑料,芯片周围的环氧树脂会被浓硝酸腐蚀。热的浓硝酸会溶解芯片封装而不影响芯片和布线。这个过程通常在非常干燥的条件下进行,因为水的存在可能会腐蚀暴露的铝线连接(这可能会导致解密失败)。

然后,用丙酮清洗芯片以去除残留的硝酸,并浸泡在超声波池中。

最后一步是找到保护熔丝的位置,并将保护熔丝暴露在紫外线下。一般用放大至少100倍的显微镜追踪编程电压输入引脚的连接,找到保护熔丝。如果没有显微镜,只需将芯片的不同部分暴露在紫外线下,观察结果即可。

操作时,应用不透明物体覆盖芯片,以保护程序存储器不被紫外线擦除。将保护熔丝暴露在紫外线下5 ~ 10分钟,会破坏保护位的保护功能。之后,可以使用简单的编程器直接读出程序存储器的内容。

对于使用保护层保护EEPROM单元的单片机来说,用紫外光复位保护电路是不可行的。对于这种类型的MCU,通常使用微探针技术来读取存储器内容。打开芯片封装后,将芯片放在显微镜下,可以很容易地找到从存储器到电路其他部分的数据总线。

由于某种原因,在编程模式下,芯片锁定位不会锁定对存储器的访问。利用这个缺陷,把探头放在数据线上就可以读取所有想要的数据。在编程模式下,通过重启读取过程并将探头连接到另一条数据线,可以读取程序和数据存储器中的所有信息。

另一种可能的攻击手段是借助显微镜和激光切割机寻找保护熔丝,从而搜索与这部分电路相连的所有信号线。

因为设计上的缺陷,只要切断保护熔丝到其他电路的一条信号线(或者切断整个加密电路)或者连接一到三根金线(通常称为FIB:聚焦离子束)就可以禁止整个保护功能,这样就可以用简单的编程器直接读出程序存储器的内容。

虽然大部分普通单片机都有烧断保险丝保护单片机内代码的功能,但是因为普通低档单片机的定位不是做安全产品,所以往往不会不能提供有针对性的预防措施,安全水平低。

另外,单片机应用广泛,销量大,厂商之间的委托加工和技术转让频繁,大量技术数据泄露,使得利用这类芯片的设计缺陷和厂商的测试接口,通过修改熔丝保护位等入侵性攻击或非入侵性攻击手段,读取单片机内部程序变得更加容易。

对单片机解密的建议

从理论上讲,只要有足够的投入和时间,任何单片机都可以被攻击者破解。这是系统设计者应该时刻牢记的基本原则。

所以,作为一个电子产品的设计工程师,非常有必要了解当前单片机攻击的最新技术,知己知彼,才能有效防止自己花费大量金钱和时间苦心设计的产品一夜之间被仿冒。(根据胡绳电子解密实践提出以下建议):

(1)在选择加密芯片之前,要充分调查了解单片机破解技术的新进展,包括哪些单片机已经确认被破解。尽量不要选择可破解或同系列同型号的芯片,选择新技术、新结构、上市时间短的单片机。

(2)对于安全性要求高的项目,尽量不要使用知名度最高、研究最透彻的芯片。

(3)产品原创者一般具有产量大的特点。所以可以选择相对生僻冷门的单片机,增加造假者的购买难度,也可以选择一些生僻的单片机。

(4)在设计成本允许的情况下,应选择具有硬件自毁功能的智能卡芯片,以有效应对物理攻击;另外,在设计程序时,给定时功能加上时间,比如一年后自动停止所有功能,会增加破解者的成本。

(5)如果条件允许,可以使用两台不同型号的单片机互为备份,相互验证,增加破解成本。

(6)磨掉芯片型号等信息或重新打印其他型号,以假乱真。

(7)可以使用单片机未公开和未使用的标志位或单元作为软件标志位。

(8)你要在节目区写下你的著名公司的发展时间和模仿必须被追究法律保护的声明;另外,你写名字的时候,可以是随机的,也就是说利用某种算法,你的名字在不同的外界条件下是不同的,比如www.XXXXX.com、www.XXXXX.cn、www.XXXXX.com.cn等。这使得它很难拆卸和修改。

(9)高级编程器用来烧坏一些内部管脚,自制设备也可以用来烧金线。目前这个在国内几乎无法解密,即使解密也要几万块钱,需要多位高手。

(10)整个电路板用秘密硅胶(环氧树脂灌封胶)密封,PCB上没用的焊盘比较多。硅胶里还可以掺杂一些没用的元件,MCU周围的电子元件尽量擦掉。

(11)可以用编程器把空白区域的FF改成00,也就是填充一些不用的空间,这样一般的解密器就可以找不到芯片中的空位,就不能执行随后的解密操作。

当然,从根本上防止单片机被解密是不可能的。随着加密技术和解密技术的不断发展,现在无论是哪种单片机,只要有人愿意出钱,基本上都可以制造出来。它这只是成本和周期的问题。程序员也可以通过法律手段保护自己的开发。