单片机加密破解的常用方法及应对策略_第1页
单片机加密破解的常用方法及应对策略_第2页
单片机加密破解的常用方法及应对策略_第3页
单片机加密破解的常用方法及应对策略_第4页
单片机加密破解的常用方法及应对策略_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机加密破解的常用方法及应对策略来源:单片机及嵌入式系统应用 作者:52研究所 徐礼荣字体: 大 中小摘要:介绍了单片机内部密码破解的常用方法, 重点说明 了侵入型攻击/物理攻击方法的详细步骤,最后,从应用角度出发, 提出了对付破解的几点建议。关键词:单片机;破解;侵入型攻击/物理攻击 1 引言单片机(Microcontroller) 一般都有内部ROM/EEPROM/FLASH供用户存放程序。 为了防止未经授权访问或拷贝单片机的机内程序, 大部分单片机都带 有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁 定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序, 这就是所

2、谓拷贝保护或者说锁定功能。事实上,这样的保护措施很脆 弱,很容易被破解。单片机攻击者借助专用设备或者自制设备,利用 单片机芯片设计上的漏洞或软件缺陷, 通过多种技术手段,就可以从 芯片中提取关键信息,获取单片机内程序。因此,作为电子产品的设 计工程师非常有必要了解当前单片机攻击的最新技术,做到知己知 彼,心中有数,才能有效防止自己花费大量金钱和时间辛辛苦苦设计 出来的产品被人家一夜之间仿冒的事情发生。2 单片机攻击技术目前,攻击单片机主要有四种技术,分别是:(1)软件攻击 该技术通常使用处理器通信接口并利用协议、 加密算法或这些算法中的安 全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早

3、期AT MEL AT89C系列单片机的攻击。攻击者利用了该系列单片机 擦除操作时序设计上的漏洞,使用自编程序在擦除加密锁定位后, 停 止下一步擦除片内程序存储器数据的操作, 从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。(2)电子探测攻击 该技术通常以高时间分辨率来监控处理器在正常操作时所有 电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻 击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对 应的电源功率消耗也相应变化。这样通过使用特殊的电子测量仪器和 数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信 息。(3)过错产生技术 该技术使用异

4、常工作条件来使处理器出错, 然后提供额外的访问来进行攻击。使用最广泛的过错产生攻击手段包 括电压冲击和时钟冲击。低电压和高电压攻击可用来禁止保护电路工 作或强制处理器执行错误操作。时钟瞬态跳变也许会复位保护电路而 不会破坏受保护信息。电源和时钟瞬态跳变可以在某些处理器中影响 单条指令的解码和执行。(4)探针技术 该技术是直接暴露芯片内部连线,然后观察、操控、干扰单片机以达到攻击目的。为了方便起见,人们将以上四种攻击技术分成两类,一类是侵入型攻击(物理 攻击),这类攻击需要破坏封装,然后借助半导体测试设备、显微镜 和微定位器,在专门的实验室花上几小时甚至几周时间才能完成。所有的微探针技术都属于侵

5、入型攻击。另外三种方法属于非侵入型攻 击,被攻击的单片机不会被物理损坏。在某些场合非侵入型攻击是特 别危险的,这是因为非侵入型攻击所需设备通常可以自制和升级,因此非常廉价。 大部分非侵入型攻击需要攻击者具备良好的处理器知 识和软件知识。与之相反,侵入型的探针攻击则不需要太多的初始知识,而且通常可用一整套相似的技术对付宽范围的产品。因此,对单 片机的攻击往往从侵入型的反向工程开始, 积累的经验有助于开发更 加廉价和快速的非侵入型攻击技术。3 侵入型攻击的一般过程侵入型攻击的第一步是揭去芯片封装。有两种方法可以达到这一目 的:第一种是完全溶解掉芯片封装,暴露金属连线。第二种是只移掉 硅核上面的塑料

6、封装。第一种方法需要将芯片绑定到测试夹具上,借 助绑定台来操作。第二种方法除了需要具备攻击者一定的知识和必要 的技能外,还需要个人的智慧和耐心,但操作起来相对比较方便。 芯片上面的塑料可以用小刀揭开,芯片周围的环氧树脂可以用浓硝酸 腐蚀掉。热的浓硝酸会溶解掉芯片封装而不会影响芯片及连线。该过程一般在非常干燥的条件下进行,因为水的存在可能会侵蚀已暴露的 铝线连接。 接着在超声池里先用丙酮清洗该芯片以除去残余硝酸, 然后用清水清洗以除去盐分并干燥。没有超声池,一般就跳过这一步。 这种情况下,芯片表面会有点脏,但是不太影响紫外光对芯片的操作 效果。最后一步是寻找保护熔丝的位置并将保护熔丝暴露在紫外光

7、 下。一般用一台放大倍数至少10 0倍的显微镜,从编程电压输入脚的连线跟踪进去,来寻找保护熔丝。若没有显微镜,则采用将芯片的 不同部分暴露到紫外光下并观察结果的方式进行简单的搜索。操作时 应用不透明的纸片覆盖芯片以保护程序存储器不被紫外光擦除。将保护熔丝暴露在紫外光下510分钟就能破坏掉保护位的保护作用, 之后,使用简单的编程器就可直接读出程序存储器的内容。对于使用了防护层来保护EEPROM单元的单片机来说, 使用紫外光复位 保护电路是不可行的。对于这种类型的单片机,一般使用微探针技术 来读取存储器内容。在芯片封装打开后,将芯片置于显微镜下就能够 很容易的找到从存储器连到电路其它部分的数据总线

8、。由于某种原 因,芯片锁定位在编程模式下并不锁定对存储器的访问。利用这一缺 陷将探针放在数据线的上面就能读到所有想要的数据。在编程模式 下,重启读过程并连接探针到另外的数据线上就可以读出程序和数据 存储器中的所有信息。 还有一种可能的攻击手段是借助显微镜和激 光切割机等设备来寻找保护熔丝,从而寻查和这部分电路相联系的所 有信号线。由于设计有缺陷,因此,只要切断从保护熔丝到其它电路 的某一根信号线,就能禁止整个保护功能。由于某种原因,这根线离 其它的线非常远,所以使用激光切割机完全可以切断这根线而不影响 临近线。这样,使用简单的编程器就能直接读出程序存储器的内容。虽然大多数普通单片机都具有熔丝烧

9、断保护单片机内代码的功能, 但由于通用低档的单片机并非定位于制作安全类产品,因此,它们往往没有提供有针对性的防范措施且安全级别较低。 加上单片机应用场 合广泛,销售量大,厂商间委托加工与技术转让频繁,大量技术资料 外泻,使得利用该类芯片的设计漏洞和厂商的测试接口,并通过修改熔丝保护位等侵入型攻击或非侵入型攻击手段来读取单片机的内部 程序变得比较容易。4应对单片机破解的几点建议任何一款单片 机从理论上讲,攻击者均可利用足够的投资和时间使用以上方法来 攻破。所以,在用单片机做加密认证或设计系统时,应尽量加大攻击 者的攻击成本和所耗费的时间。这是系统设计者应该始终牢记的基本原则。除此之外,还应注意以

10、下几点:(1)在选定加密芯片前,要充分调研,了解单片机破解技术的新进展,包括哪些单片机是已经 确认可以破解的。尽量不选用已可破解或同系列、同型号的芯片。(2)尽量不要选用MCS51系列单片机, 因为该单片机在国内的 普及程度最高,被研究得也最透。(3)产品的原创者,一般具有产量大的特点,所以可选用比较生僻、偏冷门的单片机来加大仿冒者 采购的难度。(4)选择采用新工艺、新结构、上市时间较短的单 片机,如ATMEL AVR系列单片机等。(5)在设计成本许可的条件下,应选用具有硬件自毁功能的智能卡芯片, 以有效对付物理 攻击。(6)如果条件许可,可采用两片不同型号单片机互为备份, 相互验证,从而增加

11、破解成本。(7)打磨掉芯片型号等信息或者重新印上其它的型号,以假乱真。当然,要想从根本上防止单片机被解密,程序被盗版等侵权行为发生,只能依 *法律手段来保障。= Fla$型单片机的加 密与解密作者:清华大学工程物理系陈萌萌2005年4月A版摘 要:随着Flash型单片机的普及,单片机加密的技术已经有了较大的 变化。本文以HCS12系列单片机为例,介绍一种典型的加解密机制, 并着重讨论使用密码加解密的方法以及相应的用户接口程序设计思路。关键词:Flash型单片机;加密;解密;密码 弓I言厂商利用 单片机进行产品开发时,都会关心其代码和数据的保密性。考虑到用 户 在编写和调试代码时所付出的时间和精

12、力,代码的成本是不言而喻的。早期的单片机,代码是交给芯片制造商制成掩膜ROM有两种加密的机制,一是 彻底破坏读取代码的功能,无论是开发者还是 使用者都永远无法读取其中的内容。从 安全上来说,这种方式很彻 底,但是已经无法检查 ROM中的代码了。另一种方法是不 公开读取 方法,厂商仍可以读取代码。这种方式留有检查代码的可能性,但是 并不能 算是一种真正的“加密”, 被破解的可能性是存在的。 客观 地讲,一方面希望加密很彻底, 而另外一方面又希望留有检查代码的 可能,这是相互矛盾的要求。自Flash技术得到广泛应用以来,各类单片机制造商纷纷采用了多种不同的芯片 加密方法,对比掩膜 ROM 芯片来说

13、, Flash ROM 在线可编程特性使得芯片的加密和解密 方式 变得更加灵活和可 *。在 Flash 型单片机中,芯片的加密和解密工作 都是通过对 Flash ROM 的编程来完成的,由于用户程序可以在线地 改写ROM的内容,可以编写一套 加密和解密的小程序,随用户程序 下载到芯片中,通过运行该程序,在线修改 Flash ROM勺内容,对芯 片进行加密和解密, 使整个的加解密过程更为简单灵活。 Freescale 公司的HCS12单片机采用的加解密思路有一定的典型性, 我们对此作 了 一些研究,现以MC9S12DP25单片机为例,介绍Flash型单片机 的加密解密方法。BDM程序调试接口 F

14、reescale公司的很多单片机 都借用一种被称为后台调试模式(Background Debug Mode BDM作 为下载和调试程序的接口。BDM是一种单线调试模式,芯片通过一个引脚与编程器进行通信。在 HCS12系列单 片机中,内部都置有标 准的BDM调试模块。 该模块的有三种作用:1)对内部存储器的读写。将用户程序下载到目标芯片中或是将存储器中的数据读出。 2)对单片机工作方式和资源进行配置。 部分涉及到单片机工作方式和资 源配置的寄存器只能在特殊模式下由编程器发送 BDM命令来修改。3)程序调试。利用BDM模块可以读写内存和 CPU内部寄存器,调试 程序。在HCS12单片机未加密的状态

15、下,使用 BDM硬件命令可以将 Flash ROM中的程序读 出或将新的程序写入。BDM命令可以由独立的 硬件系统来送出,我们一般称此类系统 为BDM编程器。BDM编程器 的时序协议是公开的,任何人都可以根据协议设计硬件、编写程序, 实现BDM编程器的功能。使用BDM接口,编程器可以很容易的访问到 目标系统的存储器 ,这给程序调试和烧写带来了很大的方便, 然而, 便利的对外接口也给盗用者留下了 可乘之机。在带有BDM模块的单 片机中引入数据保密机制并非 HCS12系列的首创,先前的HC12系列 单片机的D家族中,就已经引入了屏蔽Lockout BDM读写的机制,可 惜,该机制在 单片机的扩展工

16、作模式下存在着漏洞。 相比之下, HCS12 系列单片机中的保密机制更 加完善,无论在BDM模式下或是扩展模 式下,都可以屏蔽外部对Flash ROM勺读写。两种加密解密方法 在 HCS12系列单片机中,加密可以分成两种方法:完全加密和使用密码 的加密。 这两种加密的方法根据用户的需求,使用的场合也有所不 同。完全加密 所谓完全加密,就是将芯片彻底的保护起来,屏蔽 对芯片的所有读操作。在 MC9S12DP25单片机中,加密是通过对某 一 Flash单元($FF0F)编程来实现的。加密后的芯片,BDM编程器 对Flash的读操作就被禁止了。采用完全加密,读取ROM代码的可能性就不存在了,这是一种

17、最为“安全”的加 密方法。如果用户想 修改ROM勺内容,唯一的办法就是将Flash的内容全部擦除,这一 操 作可以通过BDM编程器来完成。 使用BDM编程器擦除Flash ROM和 EEPRO的过程与在普通模式下对片内的 Flash ROM擦除操作过程基 本一样,区别是对寄存器或是存储单元的读写要改由BDM命令来实现。通过BDM编程器将一连串完整的擦除指令序列送给单片机,就 可将Flash ROM和EEPRO的内容全部擦除了。 在全擦除操作完成 后,BDM编程器将系统复位,系统会自动检查全擦除操作是否成功。如果成功,BDM犬态寄存器的UNSEC位会自动置“ 1”,系统进入解 密状态。 由于系统

18、*检查Flash ROM和EEPRO是否清空来决定系统 是否保持加密状态,所 以,如果用户程序偶然将Flash ROM口 EEPROM 的内容全部擦除,那么系统也将自动解密。使用密码的加密 为了留有读取ROM代码的可能,用户可以采用一种带有密码的加密方 式。解密时 ,用户只要给出正确的密码(称为“后门密码”),就 可以读写ROM而不破坏其内 容了。使用这种方法,用户需要在加 密之前,设定 4个字长的密码,并将其存放在 Flash 中, MC9S12DP256 存放密码的Flash地址是从$FF00到$FF07。设定的密码可以随用户 程序一 起下载到芯片中。 解密时, 接受用户输入的密码并验证的

19、工 作只能由一个用户接口程序来完成的,不能使用BDM编程器。接口的方式没有限制,如SCI、SPI、IIC、MSCA等等,只要用户能够将 正确的密码输入, 任何一种接口方式都是可以的, 最为典型的接口是 串口。 假设接收的密码存在变量 KEY0-KEY冲,验证密码的程序如下: *TEST KEYS ;*TESTKE YS BSET FCNFG,$2 置 KEY AC为 1 LDD KEYO STD $FFOO LDD KEY2 STD $FF02 LDD KEY4 STD $FF04 LDD KEY6 STD $FF06 ;验证 KEYO-KE YECLRFCNFG,$20 清 KEY AC为

20、0 LDAAFSECANDA#$03 CMPA #$O2 BNE FAIL ; 是否验证成功? SUCCESS ; 密码验证成功 LDAA FSTAT ; 清除 Flash 状态寄存器 ORAA #%00110000 STAA FSTAT LDAA #0 STAA FCNFG BRCLR FSTAT,$80,* LDD #$FFFE STD $FF0E ;改写 加密状 态, 复位 后系统不 再加密 LDAA #$20 STAA FCMDBSET FSTAT,#$80 ; 开始执行 BRCLR FSTAT,$40,* RTS ; 返回 FAIL RTS 程序返回后, 如果用户输入的密码和原值符合

21、, 系统将会把保密寄存 器FSEC的最 后两 位SEC1:O改写到未加密的状态,系统自动解密。 如果验证没有通过,系统将保持加 密状态。 需要注意,不管使用哪 种方式将系统解密,解密后的系统虽然可以暂时读取 Flash ,但是 由于单元$FFOF中的最后两位仍处于加密状态(全擦除后,“11”的组合仍为 加密状态),系统在下次复位后,仍会回到加密的状态, 所以为了彻底解密系统, 必 须改写这两位为“ 1O”。 整个程序的流 程如图 1 所示。 图 1 解密用户接口程序流程图 灵活使用带密码的 加密解密方法 通过研究我们发现,使用带有密码的加密方式,看似 给破解代码留有了可能性, 但因为接受和验证密码都需要由用户程 序完成,只要用户程序设计的可 * ,这种可能 性是很小的。 为了增 强用户接口程序的可 *性和灵活性,我们提出以下几种可能的设计思 路: 针对穷举密码的对策。MC9S12DP25的密码长达8个字节,如果不将密码限定在 ASCII 码的范围内,那么可以选择的密码数量将 达到 1.8*1019 种。为了防患破解者穷举密 码,用户可以设定允许 输入错误密码的次数,如果出错超过一定次数,接口程序就不 再接 收新的密码了。允许

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论