微控制器(MCU)一般具有内部程序区和数据区(或其中之一),供用户存储程序和工作数据(或其中之一)。 为了防止微控制器内部程序被未经授权的访问或复制,大多数微控制器都配备了加密锁定位或加密字节来保护片内程序。
如果在编程时使能(锁定)加密锁定位,则普通编程器无法直接读取单片机中的程序。 这称为微控制器加密。 (BugPS:微控制器程序基本上都存在于Flash中,大部分可以读取或识别Flash上的数据来获取Firmware文件,从而带来复制产品的机会)
单片机攻击者利用专用设备或自制设备,利用单片机芯片设计漏洞或软件缺陷,利用多种技术手段提取芯片中的关键信息,获取单片机内部的程序。 这称为微控制器解密。
单片机解密又称为单片机破解、芯片解密、IC解密。 不过,严格来说,这些名称并不科学,但已成为习惯。 我们把CPLD解密和DSP解密俗称MCU解密。 微控制器只是可以加载程序芯片的一类。
可以烧录程序并加密的芯片有DSP、CPLD、PLD、AVR、ARM等,当然具有存储功能的存储芯片也可以加密,如DS2401 DS2501 AT88S0104 DM2602 AT88SC0104D等。其中,还有专门的为专业加密芯片或功能芯片设计加密算法等设计验证厂家代码工作。 此类芯片产业可达到防止电子产品复制的目的。
单片机解密方法
2.1 软件攻击
该技术通常使用处理器通信接口并利用协议、加密算法或那些算法中的安全漏洞。
例如,一个典型的例子就是对早期XXX系列单片机的攻击。 攻击者利用该系列单片机擦除操作时序设计的漏洞,利用自写程序在擦除加密锁定位后停止下一步擦除片内程序存储器数据,从而将加密的数据翻转。将单片机转换为未加密的单片机,然后使用编程器读取片上程序。
目前,在其他加密方法的基础上,可以开发一些设备并配合一定的软件来进行软件解密。
例如,有的编程器可以用来定位插入的字节,用一定的方法来查找芯片中是否有连续的空位。 也就是说找到芯片中连续的FF FF字节。 插入的字节可以执行芯片上的程序并将其发送到计算机。 到片外指令,然后利用解密器对其进行拦截,从而解密芯片内部的程序。
2.2 电子检测攻击
该技术通常以高时间分辨率监视正常操作期间处理器的所有电源和接口连接的模拟特性,并通过监视其电磁辐射特性来实施攻击。
由于微控制器是一种有源电子器件,当它执行不同的指令时,相应的功耗也会发生相应的变化。 这样,通过使用专用的电子测量仪器和数理统计方法来分析检测这些变化,就可以得到单片机中具体的关键信息。
2.3 错误产生技术
该技术利用异常操作条件导致处理器发生故障,然后提供额外的访问权限来实施攻击。 最广泛使用的故障生成攻击包括电压冲击和时钟冲击。
低压和高压攻击可用于禁用保护电路或迫使处理器执行错误操作。 时钟瞬变可以重置保护电路而不破坏受保护的信息。 电源和时钟瞬变可能会影响某些处理器中各个指令的解码和执行。
(BugPS:该方法是让单片机运行异常,使单片机处于无保护状态)
2.4 探针技术
该技术直接暴露芯片内部连线,然后对单片机进行观察、控制、干扰,达到攻击的目的。 (BugPS:芯片内部完全暴露,芯片在颤抖!)
单片机解密分类
为了方便起见,人们将上述四种攻击技术分为两类。 一种是侵入性攻击(物理攻击)。 此类攻击需要破坏封装,然后使用半导体测试设备、显微镜和微型定位器在专门的实验室中进行攻击。 可能需要几个小时甚至几周才能完成。
所有微探针技术都是侵入式攻击。 其他三种方式属于非侵入式攻击,被攻击的单片机不会受到物理损坏。 非侵入式攻击在某些情况下特别危险,因为非侵入式攻击所需的设备通常可以自制和升级,因此非常便宜。
大多数非侵入式攻击要求攻击者具备良好的处理器知识和软件知识。 相比之下,侵入式探测攻击不需要太多的初始知识,并且通常可以使用一组类似的技术来针对各种产品。
因此,对微控制器的攻击往往从侵入式逆向工程开始,积累的经验有助于开发更便宜、更快速的非侵入式攻击技术。
侵入式解密过程
侵入式攻击的第一步是去除芯片封装(简称“解封装”,有时也称为“解封装”,英文为“DECAP”,解封装)。 有两种方法可以实现这一目标。
首先是完全溶解芯片封装并暴露金属连接。
第二种是仅去除硅芯上的塑料封装。
第一种方法需要将芯片绑定到测试夹具上,并在绑定台的帮助下对其进行操作。 第二种方法除了攻击者有一定的知识和必要的技能外,还需要个人的智慧和耐心,但操作起来相对方便,完全可以在实验室里操作。
可以用小刀将芯片上的塑料揭开,用浓硝酸将芯片周围的环氧树脂腐蚀掉。 热浓硝酸会溶解芯片封装,但不会影响芯片和连接。 此过程通常在非常干燥的条件下进行,因为水的存在可能会腐蚀暴露的铝线连接(这可能会导致解密失败)。
然后在超声波浴中用丙酮清洗芯片以除去残留的硝酸并浸泡。
最后一步是找到保护保险丝的位置并将保护保险丝暴露在紫外线下。 一般用至少100倍放大倍率的显微镜从编程电压输入引脚追踪连接,找到保护熔丝。 如果您没有显微镜,可以通过将芯片的不同部分暴露在紫外线下并观察结果来完成简单的搜索。
工作时,应用不透明物体覆盖芯片,以保护程序存储器不被紫外线擦除。 将保护熔断器暴露在紫外线下5至10分钟会破坏保护位的保护效果。 之后,可以使用简单的编程器直接读取程序存储器的内容。
对于使用保护层保护EEPROM单元的微控制器来说,使用紫外光来重置保护电路是不可行的。 对于此类微控制器,通常采用微探针技术来读取存储器内容。 打开芯片封装后,将芯片放在显微镜下就可以很容易地找到连接存储器和电路其他部分的数据总线。
由于某种原因,芯片锁定位不会锁定编程模式下对存储器的访问。 利用这个缺陷,将探头放置在数据线的顶部,您可以读取所有所需的数据。 在编程模式下,通过重新启动读取过程并将探头连接到另一条数据线,可以读取程序和数据存储器中的所有信息。
另一种可能的攻击方法是使用显微镜、激光切割机等设备寻找保护熔丝,从而搜索连接到这部分电路的所有信号线。
由于设计缺陷,只需切断保护熔丝到其他电路的某条信号线(或切断整个加密电路)或连接1至3根金线(通常称为FIB:聚焦离子束)。 整个保护功能被禁用,以便可以使用简单的编程器直接读取程序存储器的内容。
虽然大多数普通单片机都具有保护单片机中的代码不被熔丝烧断的功能,但由于一般低端单片机不定位于做安全产品,因此往往没有提供针对性的防范措施,安全级别较低。
另外,单片机应用广泛,销售量大,厂家之间委托加工和技术转让频繁,大量技术资料被泄露,使得利用该类芯片的设计漏洞和非法利用单片机成为可能。厂家的测试接口,修改熔丝保护位等侵入方式。 通过攻击或非侵入式攻击,读取单片机内部程序变得更加容易。
单片机解密的一些建议
理论上来说,只要有足够的投入和时间,攻击者就可以使用上述方法解密任何微控制器。 这是系统设计者应该始终牢记的基本原则。
因此,作为电子产品的设计工程师,了解当前单片机攻击的最新技术,知己知彼,做到心中有数,这样才能有效防范自己花费大量精力的产品。金钱和时间来设计,避免一夜之间被别人仿冒。 发生。 (根据沪升电子解密实践提出以下建议):
(1)在选择加密芯片之前,需要进行深入研究,了解单片机破解技术的新进展,包括哪些单片机已被确认可破解。 尽量不要使用已经可破解的或者同系列、同型号的芯片,而选择采用新工艺、新结构、上市时间较短的微控制器。
(2)对于安全性要求较高的项目,尽量不要使用最流行、研究最透彻的芯片。
(3)产品的鼻祖一般具有产量大的特点,因此可以选择比较稀有、冷门的单片机,让造假者更难购买,选择一些稀有的单片机。
(4)只要设计成本允许,应采用具有硬件自毁功能的智能卡芯片,以有效应对物理攻击; 另外,在设计程序时,应添加定时器功能,例如使用一年后,所有功能将自动停止。 操作,这将增加裂解装置的成本。
(5)如果条件允许,可以使用两个不同型号的单片机互相备份,互相验证,从而增加破解成本。
(6)将芯片型号等信息打磨掉或者重新打印其他型号,使其看起来与真品一模一样。
(7)微控制器未公开和未使用的标志位或单元可以用作软件标志位。
(8)您应在程序区写明您姓名的开发时间以及追究仿冒的声明,以获得法律保护; 另外,写名字的时候可以随意,也就是说用某种方法。 算法,在不同的外部条件下,你的名字是不同的,比如,,等等,这样就更难反汇编和修改了。
(9)使用高端编程器烧坏内部部分引脚。 您也可以使用自制设备来烧掉金线。 目前在中国几乎不可能解密。 即使解密,也要花费数万,并且需要多个主控芯片。 。
(10)使用保密硅胶(环氧树脂灌封胶)将整个电路板密封。 PCB上无用的焊盘较多。 硅胶中还可以掺杂一些无用的成分。 与此同时,MCU 组件周围电路的电子器件会尝试擦除型号。
(11)可以用编程器将空白区域的FF改为00,即填充一些未使用的空格。 这样,一般的解密者就无法找到芯片中的空位,也就无法进行后续的解密。 操作。
当然,不可能从根本上防止单片机被解密。 加密技术不断发展,解密技术也不断发展。 现在,无论使用哪种单片机,只要有人愿意花钱,基本上都可以做出来,但是根据成本和周期长短,程序员也可以通过法律手段(比如专利)来保护自己的开发。