- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机系统几种加密方法
单片机系统几种加密方法
[摘要]随着单片机的普及,单片机的加密技术已经有了很大的发展,针对单片机开发的技术保密问题,对单片机的加密方法进行综述。加密方法有软件加密,硬件加密,软硬件综合加密等措施。
[关键词]单片机系统 加密技术
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0920112-01
一、硬件加密
硬件加密总结起来,主要是以下几大类:
(一)总线乱置法
总线乱置法通常是将MCU和EPROM之间的数据线和地址线的顺序乱置。总线乱置法通常包括下面几种:(1)将数据或地址总线的某些线位交换或求反;(2)采用EPROM时,把地址总线(或数据总线)与系统程序的存储器地址(或数据)的对应关系按密钥交换。例如,用一片2764芯片存储密钥,把地址的高8位重新按密钥编码,也就是说,把原程序的页号顺序打乱;(3)把(1)(2)结合起来以构成较复杂的电路。
(二)利用MCU本身的加密位进行加密
现在很多的MCU都带有加密位,其中最成功的加密方法是总线烧毁法,此法在AT89C51中运行用得最成功。即把单片机数据总线的特定I/O永久性地破坏,解密者即使擦除了加密位,也无法读出片内程序的正确代码。此外还有破坏EA引脚的方法。一般来说,上述的加密方法各有优点,但都存在致命的缺点:第一种方法有两个主要缺点:一是密钥放在哪里才能不被破译;二是用仿真器很容易就能把源程序截取出来。第二种方法同样可以用仿真器把数据区调出来,另外还可以把RAM接上电池,取下来放在仿真器上读出来。第三种方法用来加密小程序是成功的,但由于总线已被破坏,因而不能再使用总线来扩展接口芯片和存储器。同时,片内存储器也不再具有重复编程特性。
(三)用GAL器件对外EPROM中的软件进行加密
GAL 是一种可电擦写、可重复编程、并能够加密的可编程逻辑器件。GAL 器件内部有一加密锁定位,一旦这个位被编程,就使其存取阵列电路中止工作,从而防止再次编程或者检验,此加密位只能够在整体擦除时和阵列一起擦除。由此可见,一旦GAL 芯片内的加密位被编程,整个GAL 芯片内的已编程的逻辑电路,对用户来说是不透明的,这就起到了对硬件电路的加密作用。单片机系统中的芯片其内部译码电路是不可以改变的,而且它本身没有可以加密的内部阵列。所以只能够将单片机系统中的EPROM 的数据线或者地址线重新定义后重新连结,使用户仿真时从EPROM芯片中读出的程序代码变成随机数,从而反汇编时使原程序面目全非,变成不可明读的密码程序,从而达到了对软件加密的目的。
应用GAL 器件对外EPROM 中的软件进行加密可采取变位加密法:将原机器码中的位序进行某种交换;逻辑运算加密法:将原机器码进行逻辑运算后获得每一位加密的机器码;地址总线加密法:改变地址总线,使读出代码的顺序发生变化,从而达到加密的目的。将各种加密技术结合起来,可实现复杂的加密技术,使得加密的软件保密性较高,不易破译。
二、软件加密
软件加密方法的基本思想是通过基本方法对程序和数据进行处理,迫使剽窃者在解密时花费较高的代价和较长的时间,从而望而生畏,放弃解密,因此程序并非是不可破译的。
(一)插入多条跳转指令降低程序可读性
在程序调试阶段,考虑留有增加加密方法所需的足够空间。在源程序中的某些地方插入一些与源程序无关的跳转指令(AJMP、SJMP、LJMP、JMP等) 和子程序调用指令(LCALL 、ACALL 等) ,这样,可使别人不容易读懂该程序。
(二)采用模块化设计方法
将整个程序分为n个模块,每个模块后插入一组3 个字节的NOP 指令,调试完毕后,将前2 条NOP 指令修改为SJMP Mi (M1 为第i 个模块地址) ,第4 条指令必为任意指令码,最好是与调用、跳转有关的指令。这样,用开发系统反汇编时,导致插入的LJMP 指令以后一段程序与源程序完全不一样。整个程序反汇编后相当混乱,毫无逻辑。也可以把整个软件按功能分成几个模块,分别存放在EPROM中不同的地址区域,形成映像表。映像关系可以由GAL 器件或CPU 来实现。
软件加密方法不能防止别人复制,只能防止别人解剖、分析和改进自己的产品。所以,软件加密只是硬件加密的补充和延伸。另外,软件加密往往对实时性较强的智能仪器及控制系统不太适用,系统微机上已经发展成熟的加密技术难以运用到控制领域。
三、硬件与软件相结合加密
硬件与软件相合加密的主要思路是:在程序看到的是虚地址,而虚地址对应的存储器的实地址由CPU程序运行时通过FPGA赋予。其原理如图1所示。举例说明,若调用子程序CALL Function时,对
文档评论(0)