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] 下一页