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

下载本文档

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

文档简介

单片机加密破解的常用方法及应对策略 来源:单片机及嵌入式系统应用 作者:52 研究所 徐礼荣 字体 :大 中 小 摘要:介绍了单片机内部密码破解的常用方法,重点 说明了侵入型攻击物理攻击方法的详细步骤,最后,从应用角度 出发,提出了对付破解的几点建议。 关键词:单片机;破解;侵入 型攻击物理攻击 引言 单片机( )一般都有内部供用户 存放程序。为了防止未经授权访问或拷贝单片机的机内程序,大部 分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果 在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读 取单片机内的程序,这就是所谓拷贝保护或者说锁定功能。事实上 ,这样的保护措施很脆弱,很容易被破解。单片机攻击者借助专用 设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通 过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程 序。因此,作为电子产品的设计工程师非常有必要了解当前单片机 攻击的最新技术,做到知己知彼,心中有数,才能有效防止自己花 费大量金钱和时间辛辛苦苦设计出来的产品被人家一夜之间仿冒的 事情发生。 单片机攻击技术 目前,攻击单片机主要有四种技 术,分别是: ()软件攻击 该技术通常使用处理器通信接口并 利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻 击取得成功的一个典型事例是对早期 系列 单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的 漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程 序存储器数据的操作,从而使加过密的单片机变成没加密的单片机 ,然后利用编程器读出片内程序。 () 电子探测攻击 该技术通 常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接 的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片 机是一个活动的电子器件,当它执行不同的指令时,对应的电源功 率消耗也相应变化。这样通过使用特殊的电子测量仪器和数学统计 方法分析和检测这些变化,即可获取单片机中的特定关键信息。 ( )过错产生技术 该技术使用异常工作条件来使处理器出错,然后 提供额外的访问来进行攻击。使用最广泛的过错产生攻击手段包括 电压冲击和时钟冲击。低电压和高电压攻击可用来禁止保护电路工 作或强制处理器执行错误操作。时钟瞬态跳变也许会复位保护电路 而不会破坏受保护信息。电源和时钟瞬态跳变可以在某些处理器中 影响单条指令的解码和执行。 ()探针技术 该技术是直接暴露 芯片内部连线,然后观察、操控、干扰单片机以达到攻击目的。 为 了方便起见,人们将以上四种攻击技术分成两类,一类是侵入型攻 击(物理攻击),这类攻击需要破坏封装,然后借助半导体测试设 备、显微镜和微定位器,在专门的实验室花上几小时甚至几周时间 才能完成。所有的微探针技术都属于侵入型攻击。另外三种方法属 于非侵入型攻击,被攻击的单片机不会被物理损坏。在某些场合非 侵入型攻击是特别危险的,这是因为非侵入型攻击所需设备通常可 以自制和升级,因此非常廉价。 大部分非侵入型攻击需要攻击者具 备良好的处理器知识和软件知识。与之相反,侵入型的探针攻击则 不需要太多的初始知识,而且通常可用一整套相似的技术对付宽范 围的产品。因此,对单片机的攻击往往从侵入型的反向工程开始, 积累的经验有助于开发更加廉价和快速的非侵入型攻击技术。 侵入型攻击的一般过程 侵入型攻击的第一步是揭去芯片封装。有两 种方法可以达到这一目的:第一种是完全溶解掉芯片封装,暴露金 属连线。第二种是只移掉硅核上面的塑料封装。第一种方法需要将 芯片绑定到测试夹具上,借助绑定台来操作。第二种方法除了需要 具备攻击者一定的知识和必要的技能外,还需要个人的智慧和耐心 ,但操作起来相对比较方便。 芯片上面的塑料可以用小刀揭开,芯 片周围的环氧树脂可以用浓硝酸腐蚀掉。热的浓硝酸会溶解掉芯片 封装而不会影响芯片及连线。该过程一般在非常干燥的条件下进行 ,因为水的存在可能会侵蚀已暴露的铝线连接。 接着在超声池里先 用丙酮清洗该芯片以除去残余硝酸,然后用清水清洗以除去盐分并 干燥。没有超声池,一般就跳过这一步。这种情况下,芯片表面会 有点脏,但是不太影响紫外光对芯片的操作效果。 最后一步是寻找 保护熔丝的位置并将保护熔丝暴露在紫外光下。一般用一台放大倍 数至少倍的显微镜,从编程电压输入脚的连线跟踪进去,来 寻找保护熔丝。若没有显微镜,则采用将芯片的不同部分暴露到紫 外光下并观察结果的方式进行简单的搜索。操作时应用不透明的纸 片覆盖芯片以保护程序存储器不被紫外光擦除。将保护熔丝暴露在 紫外光下分钟就能破坏掉保护位的保护作用,之后,使用 简单的编程器就可直接读出程序存储器的内容。 对于使用了防护层 来保护单元的单片机来说,使用紫外光复位保护电路 是不可行的。对于这种类型的单片机,一般使用微探针技术来读取 存储器内容。在芯片封装打开后,将芯片置于显微镜下就能够很容 易的找到从存储器连到电路其它部分的数据总线。由于某种原因, 芯片锁定位在编程模式下并不锁定对存储器的访问。利用这一缺陷 将探针放在数据线的上面就能读到所有想要的数据。在编程模式下 ,重启读过程并连接探针到另外的数据线上就可以读出程序和数据 存储器中的所有信息。 还有一种可能的攻击手段是借助显微镜和激 光切割机等设备来寻找保护熔丝,从而寻查和这部分电路相联系的 所有信号线。由于设计有缺陷,因此,只要切断从保护熔丝到其它 电路的某一根信号线,就能禁止整个保护功能。由于某种原因,这 根线离其它的线非常远,所以使用激光切割机完全可以切断这根线 而不影响临近线。这样,使用简单的编程器就能直接读出程序存储 器的内容。 虽然大多数普通单片机都具有熔丝烧断保护单片机内代 码的功能,但由于通用低档的单片机并非定位于制作安全类产品, 因此,它们往往没有提供有针对性的防范措施且安全级别较低。加 上单片机应用场合广泛,销售量大,厂商间委托加工与技术转让频 繁,大量技术资料外泻,使得利用该类芯片的设计漏洞和厂商的测 试接口,并通过修改熔丝保护位等侵入型攻击或非侵入型攻击手段 来读取单片机的内部程序变得比较容易。 应对单片机破解的几 点建议 任何一款单片机 从理论上讲,攻击者均可利用足够的投资 和时间使用以上方法来攻破。所以,在用单片机做加密认证或设计 系统时,应尽量加大攻击者的攻击成本和所耗费的时间。这是系统 设计者应该始终牢记的基本原则。除此之外,还应注意以下几点: ()在选定加密芯片前,要充分调研,了解单片机破解技术的新 进展,包括哪些单片机是已经确认可以破解的。尽量不选用已可破 解或同系列、同型号的芯片。 ()尽量不要选用系列 单片机,因为该单片机在国内的普及程度最高,被研究得也最透。 ()产品的原创者,一般具有产量大的特点,所以可选用比较生 僻、偏冷门的单片机来加大仿冒者采购的难度。 ()选择采用新 工艺、新结构、上市时间较短的单片机,如 系列 单片机等。 ()在设计成本许可的条件下,应选用具有硬件自毁 功能的智能卡芯片,以有效对付物理攻击。 ()如果条件许可, 可采用两片不同型号单片机互为备份,相互验证,从而增加破解成 本。 ()打磨掉芯片型号等信息或者重新印上其它的型号,以假 乱真。 当然,要想从根本上防止单片机被解密,程序被盗版等侵权 行为发生,只能依*法律手段来保障。 = = Flash 型单片机的加 密与解密 作者:清华大学 工程物理系 陈萌萌 2005 年 4 月 A 版 摘要:随着 Flash 型单片机的普及,单片机加密的技术已经有了较 大的变化。本文以 HCS12 系列单片机为例,介绍一种典型的加解密 机制,并着重讨论使用密码加解密的 方法以及相应的用户接口程序 设计思路。 关键词:Flash 型单片机;加密;解密;密码 引言 厂 商利用单片机进行产品开发时,都会关心其代码和数据的保密性。 考虑到用户 在编写和调试代码时所付出的时间和精力,代码的成本 是不言而喻的。 早期的单片机,代码是交给芯片制造商制成掩膜 ROM。有两种加密的机制,一是 彻底破坏读取代码的功能,无论是 开发者还是使用者都永远无法读取其中的内容。从 安全上来说,这 种方式很彻底,但是已经无法检查 ROM 中的代码了。另一种方法是 不 公开读取方法,厂商仍可以读取代码。这种方式留有检查代码的 可能性,但是并不能 算是一种真正的“加密”,被破解的可能性是 存在的。 客观地讲,一方面希望加密很彻底,而另外一方面又希望 留有检查代码的可能, 这是相互矛盾的要求。 自 Flash 技术得到 广泛应用以来,各类单片机制造商纷纷采用了多种不同的芯片 加密 方法,对比掩膜 ROM 芯片来说,Flash ROM 在线可编程特性使得芯 片的加密和解密 方式变得更加灵活和可*。在 Flash 型单片机中, 芯片的加密和解密工作都是通过对 Flash ROM 的编程来完成的,由 于用户程序可以在线地改写 ROM 的内容,可以编写一套 加密和解密 的小程序,随用户程序下载到芯片中,通过运行该程序,在线修改 Flash ROM 的内容,对芯片进行加密和解密,使整个的加解密过程 更为简单灵活。 Freescale 公司的 HCS12 单片机采用的加解密思路 有一定的典型性,我们对此作了 一些研究,现以 MC9S12DP256 单片 机为例,介绍 Flash 型单片机的加密解密方法。 BDM 程序调试接口 Freescale 公司的很多单片机都借用一种被称为后台调试模式 (Background Debug Mode,BDM)作为下载和调试程序的接口。 BDM 是一种单线调试模式,芯片通过一个引脚与编程器进行通信。 在 HCS12 系列单 片机中,内部都置有标准的 BDM 调试模块。 该模 块的有三种作用: 1) 对内部存储器的读写。将用户程序下载到目 标芯片中或是将存储器中的数据读出 。 2) 对单片机工作方式和资 源进行配置。部分涉及到单片机工作方式和资源配置的寄 存器只能 在特殊模式下由编程器发送 BDM 命令来修改。 3) 程序调试。利用 BDM 模块可以读写内存和 CPU 内部寄存器,调试程序。 在 HCS12 单 片机未加密的状态下,使用 BDM 硬件命令可以将 Flash ROM 中的程 序读 出或将新的程序写入。BDM 命令可以由独立的硬件系统来送出, 我们一般称此类系统 为 BDM 编程器。 BDM 编程器的时序协议是公 开的,任何人都可以根据协议设计硬件、编写程序, 实现 BDM 编程 器的功能。使用 BDM 接口,编程器可以很容易的访问到目标系统的 存储器 ,这给程序调试和烧写带来了很大的方便,然而,便利的对 外接口也给盗用者留下了 可乘之机。 在带有 BDM 模块的单片机中 引入数据保密机制并非 HCS12 系列的首创,先前的 HC12 系列单片 机的 D 家族中,就已经引入了屏蔽 Lockout BDM 读写的机制,可惜, 该机制在 单片机的扩展工作模式下存在着漏洞。相比之下,HCS12 系列单片机中的保密机制更 加完善,无论在 BDM 模式下或是扩展模 式下,都可以屏蔽外部对 Flash ROM 的读写。 两种加密解密方法 在 HCS12 系列单片机中,加密可以分成两种方法:完全加密和使用 密码的加密。 这两种加密的方法根据用户的需求,使用的场合也有 所不同。 完全加密 所谓完全加密,就是将芯片彻底的保护起来, 屏蔽对芯片的所有读操作。在 MC9S12DP256 单片机中,加密是通过 对某一 Flash 单元($FF0F)编程来实现的。加密后的芯片,BDM 编 程器对 Flash 的读操作就被禁止了。 采用完全加密,读取 ROM 代码 的可能性就不存在了,这是一种最为“安全”的加 密方法。如果用 户想修改 ROM 的内容,唯一的办法就是将 Flash 的内容全部擦除, 这一 操作可以通过 BDM 编程器来完成。 使用 BDM 编程器擦除 Flash ROM 和 EEPROM 的过程与在普通模式下对片内的 Flash ROM 擦 除操作过程基本一样,区别是对寄存器或是存储单元的读写要改由 BDM 命令来实现 。通过 BDM 编程器将一连串完整的擦除指令序列送 给单片机,就可将 Flash ROM 和 EEPROM 的内容全部擦除了。 在全 擦除操作完成后,BDM 编程器将系统复位,系统会自动检查全擦除 操作是否 成功。如果成功,BDM 状态寄存器的 UNSEC 位会自动置 “1”,系统进入解密状态。 由于系统*检查 Flash ROM 和 EEPROM 是否清空来决定系统是否保持加密状态,所 以,如果用户程序偶然 将 Flash ROM 和 EEPROM 的内容全部擦除,那么系统也将自动解 密。 使用密码的加密 为了留有读取 ROM 代码的可能,用户可以采用 一种带有密码的加密方式。解密时 ,用户只要给出正确的密码(称 为“后门密码”),就可以读写 ROM,而不破坏其内 容了。 使用 这种方法,用户需要在加密之前,设定 4 个字长的密码,并将其存 放在 Flash 中, MC9S12DP256 存放密码的 Flash 地址是从$FF00 到 $FF07。设定的密码可以随用户程序一 起下载到芯片中。 解密时, 接受用户输入的密码并验证的工作只能由一个用户接口程序来完成 的, 不能使用 BDM 编程器。接口的方式没有限制,如 SCI、SPI、IIC、MSCAN 等等,只要用 户能够将正确的密码输入, 任何一种接口方式都是可以的,最为典型的接口是串口。 假设接收 的密码存在变量 KEY0-KEY7 中,验证密码的程序如下: ;* ;* TEST KEYS ;* TESTKEYS BSET FCNFG,$20 ;置 KEYACC 为 1 LDD KEY0 STD $FF00 LDD KEY2 STD $FF02 LDD KEY4 STD $FF04 LDD KEY6 STD $FF06 ; 验证 KEY0-KEY7 BCLR FCNFG,$20 ;清 KEYACC 为 0 LDAA FSEC ANDA #$03 CMPA #$02 BNE FAIL ; 是否验证成功? SUCCESS ; 密码验证 成功 LDAA FSTAT ; 清除 Flash 状态寄存器 ORAA #%00110000 STAA FSTAT LDAA #0 STAA FCNFG BRCLR FSTAT,$80,* LDD #$FFFE STD $FF0E ; 改写加密状态,复位后系统不再加密 LDAA #$20 STAA FCMD BSET FSTAT,#$80 ; 开始执行 BRCLR FSTAT,$40,* RTS ; 返 回 FAIL RTS 程序返回后,如果用户输入的密码和原值符合,系统 将会把保密寄存器 FSEC 的最 后两 位 SEC1:0改写到未加密的状 态,系统自动解密。如果验证没有通过,系统将保持加 密状态。 需要注意,不管使用哪种方式将系统解密,解密后的系统虽然可以 暂时读取 Flash ,但是由于单元$FF0F 中的最后两位仍处于加密状 态(全擦除后,“11”的组合仍为 加密状态),系统在下次复位后, 仍会回到加密的状态,所以为了彻底解密系统,必 须改写这两位为 “10”。 整个程序的流程如图 1 所示。 图 1 解密用户接口程序流 程图 灵活使用带密码的加密解密方法 通过研究我们发现,使用带 有密码的加密方式,看似给破解代码留有了可能性, 但因为接受和 验证密码都需要由用户程序完成,只要用户程序设计的可*,这种可 能 性是很小的。 为了增强用户接口程序的可*性和灵活性,我们提 出以下几种可能的设计思路: 针对穷举密码的对策。MC9S12DP256 的密码长达 8 个字节,如果不将密码限定在 ASCII 码的范围内,那 么可以选择的密码数量将达到 1.8*1019 种。为了防患破解者穷举 密 码,用户可以设定允许输入错误密码的次数,如果出错超过

温馨提示

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

评论

0/150

提交评论