DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 736|回复: 1
打印 上一主题 下一主题

基于单片机应用系统加密策略探究

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 19:50:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  
         
   
Secretting Strategy Research of Single-chip Microcomputer Application System
摘要:单片机应用系统加密是保护知识产权不受侵犯的关键技术,如何简单有效的对系统加密,一直以来就是在研究探索的问题,本文主要从软件和硬件两个方面对常用的加密技术进行分析,指出了缺陷,并提出了改进措施。
关键词:单片机;应用系统;加密技术;双CPU
Abstract: The Secretting Research of Single-chip Microcomputer Application System is the key technology protecting intellectual property right from being infringed , how to apply encryption for system simply and effectively has been the question researched and discussed all the time. This paper has analysed several kinds of encryptions from softwares and hardwares aspects , pointed out defects and brought forward improvement measures.
Key words: single-chip computer; Application System; Secretting Technology;double CPU
随着单片机和大规模集成电路技术的飞速发展,人们应用单片机及相关的外围电子器件研制开发也进入了一个百家争鸣,百花齐放的时期。但是随之而来的是如何保证产品不被仿制,系统加密就成了保护知识产权不受侵犯的关键技术,加密方法的基本思路是对硬件电路和软件程序采取一切可用的方法增加其读出难度,防止硬件电路原理被人测试和软件被破译。如何简单有效的对系统加密,一直以来就是在研究探索的问题,但总的来讲加密技术可以分为两大类:即硬件加密和软件加密。下面对常用的方法加以探究,以飨食读者,便于作出决策。
1、软件加密
软件加密就是通过对指令的运用来实现加密的,不需要增加硬件电路,而因不需要增加成本,简单易行。
1.1 件加密方法
(1)在程序模块之间插入加密字节。
加密字节一般位于下一模块之前的1个或2个字节。采用这种方法,一般的反汇编程序得到的是一些错误的程序代码,无法汇编出系统的实际运行程序。比如在GMR1和GMR2个模块之间插入1个加密字节75H(在51系列单片机中是一条立即数传送指令)。
………            ………
0320   22    GMR1: RET
0321   75          DB 75H
0322   E0    GMR2: MOVX A, @DPtr
0323   F574        MOV 74H, A
0325   22          RET
………            ………
对上面2两个摸块程序用一般的反汇编方法可得到如下的程序段:
………            ………
0320   22       GMR1: RET
0321   75E0F5         MOV E0H, #F5H
0324   7422           MOV A, #22H
………             ………
可见,GMR1后面的指令已经得不到GMR2的结果了,即汇编结果与实际代码不符,可以实现原代码的保护作用。
(2) 采用某些单片机特有的指令对软件进行加密。
在MCS-51系列单片机中,使用JMP @A+DPtr指令代替AJMP、LJMP、SJMP等指令,如未加密的程序为:
………              ………
  0021   8100   GMR4: AJMP  0400H
………              ………
加密修改后为(即把指令替换为):
    0021   E4     GMR4:  CLR  A
    0022   900400         MOV  DPtr, #0400H
    0025   73             JMP @A+DPtr
   ………                    ………
  (3)其他方法。
例如使某些字节为两个模块共同使用的方法,即在编程时使某些字节为两个模块共同使用,使得反汇编程序汇编时得出的不是实际的程序代码;用返回指令代替跳转指令的方法等等加密。
1.2 软件加密方法分析
当然这些加密方法无非是在未使用的程序存储器区域中全部都加上无用的程序代码,并把这些程序代码伪装的巧妙一些,或者是将数据进行模糊处理方法,并进行真假数据地址的交叉混叠,或者是采用数据与密钥进行逻辑异或等方法进行加密,以进一步增加破译程序的难度,这些都属于静态加密技术,静态加密的程序代码最终还是要以明文的方式在单片机中运行,解密者可通过调试跟踪和监视程序的执行过程及运行状态来分析和破解程序,这些方法对解密高手来说都没有太大难度。因此,对单片机应用程序的加密还应考虑动态反跟踪的问题,即程序的动态加密处理。
1.3 软件加密的应对策略
动态解码是指程序运行时,由一段程序专门对某一区域的加密指令或数据代码进行解密,当解密后的代码使用完毕,再将其重新加密,使存储器中不存在完整的程序代码。程序动态解码不仅对防程序的静态分析很有效,因为从加密程序的清单上很难看出程序的真实目的;而且在程序的反跟踪方面又有独到之处,在阻止带断点调试跟踪时,由于程序在执行之前是以密文形式出现的,解密者很难确定断点设置的位置,稍有不慎就会导致解密失败。
软件加密的方法有很多,不管采用何种方法,只能增加破译者的难度,不能完全阻止破解,是硬件加密的一种补充措施。
[1] [2] [3]  下一页
         
          [/td]
        [/tr]
      
  
         
   

2 硬件加密
2.1总线技术加密法
总线技术加密法就是将单片机的地址总线或数据总线中的某些线进行交叉换位来改变某些线原有的逻辑关系,也就是采用改变总线接线即乱置法对其中的程序传输进行加密,特别是在单片机外部扩展程序存储器时,当固化到程序存储器的程序再从程序存储器中读出时,由于总线的乱置原因,使得数据经过反汇编后,改变了源程序从而达到加密的目的。如图1简单示意图所示。



500)this.style.width=500;" border=0>
图1 存储器扩展简单加密图
实际上通过改变接线关系还可以派生出很多机密方法:数据总线中某些线换位或求反(如图1所示D7数据线);地址总线中某些线换位或求反;总线经过简单的逻辑门来改变原有关系。
这种方法虽然简单,但稍微对电路加以研究,就不难破解,当然这个转换过程如用手工完成,会增加系统开发的工作量和难度,但也可以编程由机器完成,这时基本上起不到加密作用了。但可以使用破坏单片机数据总线的加密方法来弥补,破坏单片机数据总线的加密方法简称为烧总线模式。其基本原理是:单片机片内的程序代码最终都要通过数据总线读出,如果单片机的数据总线的其中1条线永久性地破坏,解密者即使擦除了加密位,也无法读出片内的程序的正确代码。比如ATMEL89S51/52 的数据总线为P0口,若原程序代码为02H,01H,00H,则烧坏单片机的P0.0引脚后,即最低位始终为1,读出的数据则为03H,01H,01H,显然读出的程序代码为错码。开发设计人员在设计单片机硬件系统时只要预留出口线P0.0不用,就可用烧总线模式对单片机加密。

2.2  存储器技术加密方法
近年推出的大多数单片机内部都有加密锁定位或加密字节,开发者将调试好的程序固化到单片机内部程序存储器的同时将其锁定,这样就无法使用普通的仿真器或编程器读出其程序代码,这就是所谓的拷贝保护和锁定功能,看似保险,其实许多单片机在此功能的设计上是有漏洞的,如ATMEL的AT89C系列单片机,拷贝者可想办法(如自编程序)擦除其加密锁定位,且紧接着停止擦除内部程序存储器的下一步操作,然后就可利用仿真器或编程器读出程序代码。
对付这种破解可以采用破坏单片机的加密位的加密方法,简称OTP(One Time Program)加密模式。其原理是:编制一种加密算法,永久烧坏加密锁定位(把芯片内的硅片击穿),而不破坏其它部分,不占用单片机任何资源。加密锁定位被烧坏后不再具有擦除特性,单片机片内的加密位和程序存储器内的数据就不能被再次擦除,单片机就好像变成了一次性编程的OTP型单片机一样。
2.3  双芯片加密法
2.3.1  双芯片连接形式
在单片机应用系统中,双CPU加密系统的建构通常有以下2种形式。
(1)采用双口RAM方式,原理图如图2表示。这种双CPU电路分成2个部分,每个CPU编有单独的程序,分别为加密算法单片机和控制单片机,二者通过双端口RAM来交换数据,这种方式的特点是硬件简单,但成本相对较高。


500)this.style.width=500;">
            
(2)采用并口方式,又分为间接连接和直接连接2种形式。间接连接方式一般是通过并行接口电路来实现的,较为复杂。后者直接将2个CPU通过并行接口连接起来,实现协调与交流,如图3所示,较简单易行,当然是牺牲并行接口来换取的。
2.3.2  双芯片加密
根据在并口直接连接双CPU方式基础上,进行地址倒置并连接,如图4所示。该加密法的基本原理如下:


500)this.style.width=500;" border=0>
(1)选用两片同系列的不同的单片机,如AT89C51/52 和AT89LV51/52,将一片型号擦去,,另一片则标以封装相同的存储器或其它芯片型号。
(2)编写系统程序时首先利用其内部的加密位进行加密。
(3)应用系统程序设计时使两个芯片交替工作,相互备份,相互验证。
程序运行时首先由甲机读入乙机的第一个校验字节,与本机某一特定校验字节进行逻辑运算,若符合一设定值,则将乙机第一段程序备份到甲机,并向乙机写入一标志。若不符合该值,则该段程序在乙机中执行。下一步由乙机读入甲机一校验字节,与本机某一特定校验字节进行另一种逻辑运算,当符合一设定值时,执行乙机下一段程序,否则,将该段程序备份到甲机执行,并向甲机写入一标志,依次类推。同时,电路设计时将乙机地址线倒置,即A15、A14、?、A0 分别接到地址总线A0、A1、?、A15 上,并把系统程序放入乙机。两机中的校验字节和互校验算法是可以根据需要改变的。
表面上看起来是由甲机作为MCU控制整个系统,而由于两机中的校验字节和互校验算法是可以根据需要改变的,因此,实际上有的程序段是在乙机中执行的,甲机中并没有完整的程序。并且乙机中程序的地址是错乱的,即使破解者读出程序代码也毫无用处。
但是无论怎样加密,单片机的指令最终都要在明文的方式下才能运行,而解密者可以使用单步调试ROM 中的程序达到解密的目的,为了防止用单步跟踪方法进行解密,还可利用单片机内部的定时器使每一段程序内指令的执行时间受限,超过一定时间时甲机将改变程序代码,使系统不能正常运行。当然还可以选用表面封装类似或软件兼容的其它芯片代替乙机。
3、软件和硬件相结合加密方法
软件和硬件相结合是目前较为理想的加密手段,硬件主要是指专用加密芯片,数据的输入输出通过该芯片时,通过加密软件算法来验证是否合法。例如专用加密芯片X76F100,一般来讲这种专用加密芯片内部有一定的闪烁存储空间,并且具有读出芯片数据的密码和用于将数据写入芯片的密码,即对其读写均需要密码,这些密码保护存储器阵列的读写操作。在工作时,将加密算法的明文与加密算法的密文、加密数组、解密数组、实时处理系统中处理信息的几个重要参数,均通过芯片的程序将其写入到芯片中,除非有口令才能重新写入数据,写密码不给用户。当系统运行到密码校验子程序时,系统按照已给的不同的等长度字符串作为入口参数,然后通过加密子程序,如果通过校验,则加密子程序返回重要参数,系统拥有此参数时,才得以继续执行。如果加密子程序没有通过校验,则系统停止工作。
采用软件和硬件加密相结合的综合设计方法,能广泛的应用于各种单片机系统。同时,在构造过程中只要设计合理,软硬件开销并不大,便能实现高性能的加密,高效稳固的实现系统信息的保护。本方法已运用在多个单片机应用系统中,取得了较好的效果。
上一页  [1] [2] [3]  下一页
         
          [/td]
        [/tr]
      
  
         
   

结束语
    加密的方法多种多样,至于采取什么样的方法,要结合实际产品特点,从设计阶段即对产品的加密方法作全盘考虑,可根据产品的技术含量和综合仿制能力的难易程度,选择力所能及的加密技术,以使自己开发的新产品不被仿制或尽可能降低防止的可能性。
本文主要创新点:通过对各种加密方法的探讨,提出了基于并行口的双CPU加密方法,但结合实践来看,采用软硬件结合加密方法是比较简单的最理想加密方法。
参考文献
[1]陆子明,徐长根.单片机设计与应用基础教程[M].北京:国防工业出版社,2005.
[2]吴峰,朱瑞祥,张会娟,黄玉祥, 单士睿.用双8051芯片组成的频率测量系统[J].微计算机信息,2006,4-2:69-72
[3]贾金玲.单片机应用系统的加密技术研究[J].四川理工学院学报,2005,3:8—11.
[4] 徐礼荣.单片机破解的常用方法及应对策略[J].国外电子元器件,2004,9:63-65.
[5] 李 琳,王家村.单片机系统的动态加密技术[Z] . http// www.zlic.com,2005.
[6] 罗建,李艳梅.于MCS-51的应用系统可重构加密技术的设计与实现[J].航空计算技术,2005,4
作者简介:杨洪亮(1974年---),男,汉,山东人,硕士,主要从事计算机应用研究。
Biography:Yang hong-liang, born in 1974, male, Han nationality, Shandong Province, master, Research area: application of the computer.
通信地址 :临沂师范学院信息学院   邮政编码:276005   杨洪亮


上一页  [1] [2] [3]
         
          [/td]
        [/tr]
      
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
沙发
发表于 2012-10-17 10:13:06 | 只看该作者
资料介绍的非常详细,可惜图片看不到,少了关键的东西。不过思路介绍的非常清晰。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-1-16 14:12 , 耗时 0.086211 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表