| 伪随机序列及PLD实现在程序和系统加密中的应用 |
| 类别:EDA/PLD |
| 作者:西安交通大学工程与科学研究院生物医学工程研究所(710049)张登福
林 刚 蒋大宗
西安空军工程学院四系信息处理实验室(710038)毕笃彦来源:《电子技术应用》
伪随机序列及PLD实现在程序和系统加密中的应用 摘 要: 讨论了用伪随机序列实现程序加密保护及其可编程逻辑器件实现的原理、方法和具体操作,给出了在微机软件和单片机/DSP系统中程序加密的实际运用举例。 关键词: 加密技术 可编程逻辑器件 伪随机序列 单片机系统 DSP 可编程逻辑器件(PLD)经历了PAL、GAL、CPLD 和FPGA几个发展阶段。使用PLD具有设计灵活、调试方便、系统可靠性高等众多优点,并有利于硬件设计的保护,防止他人对电路的分析、仿照,使其成为科研实验、样机试制和小批量产品的首选方案。
随着计算机、单片机技术的发展和广泛应用,软件加密成为知识产权保护的重要手段。目前微机软件加密的方法可分为两大类:软加密和硬加密。软加密主要有密码方式、软件自校验方式、钥匙盘方式等多种。随着软加密的发展,解密软件也大量出现。硬加密由于具有加密强度大、可靠性高等特点,已广泛用于微机软件保护。硬加密将硬件和软件相结合来实现软件的加密,软件在运行时需与硬件正确交换数据,否则程序不运行,或不能执行主要功能,典型的产品有:插在计算机总线上的加密卡,接在计算机并口或USB口的软件狗(加密锁)、微狗等。软件狗大多用
随着某一加密产品加密操作方式的公开,其解密也就为期不远。新出现的解密软件能模拟绝大部分软件与加密狗间的数据交换过程,从而达到解密;国产的加密卡和微狗,大多外用
硬件加密必须综合考虑加密方法的可行性、有效性、硬件复杂度等因素,由逻辑电路产生大量密码的一种简单有效的方法是使用线性反馈移位寄存器,其产生的伪随机数据已广泛用于数据通信中的加扰、扩频、跳频和数据加密。图1所示是具有防跟踪、产生
对加密电路的正确操作步骤是:在主程序中预置移位计数器和移位寄存器初值,在子程序的一处判断移位是否完成,另一处读密码或写待解密数,在另一子程序判断或取解密数据,以防止跟踪。 为在使用较少触发器情况下保证程序正常运行并能有效地防止解密跟踪,应恰当地选择防跟踪计数器的时钟,若用移位寄存器时钟源,则需要较高的分频才能满足高速的数据产生、适当的延时时间;因此在实际使用中,应根据需要,选择系统可能提供的低频持续脉冲信号作为防跟踪计数器的时钟。在微机系统中,尤其在WINDOWS操作系统的分时事件驱动运行模式下,由于系统固有的存储器刷新、时钟中断,以及运行中硬件中断、DMA操作、任务切换,必须有较长的防跟踪延时才能保证合法程序正常运行,要注意在软硬盘操作时对密码数据操作的影响。 2 应用举例 在PC机系统中,一般打印机并行接口包括单向输出的8条数据线D0~D7和四条控制线、5条状态输入线,因此每次读操作只读取4bits密码,其加密电路原理框图如图3所示。由于并行口不提供电源,将联机控制信号SLCT置高提供的电流很小,因此直接挂在并行口上的电路必须选用规模不大的低功耗器件。 经并行口控制移位寄存器产生密码的基本操作步骤是:(1)SLCT置高加电;(2)STROBE触发经D0~D8写入16位控制字,选通加密电路,否则打印口正常;(3)初始化信号INIT置低,STROBE选择预置移位寄存器和移位计数器;(4)INIT置高选通移位时钟;(5)检测数据是否准备好;(6)换行控制AUTO LF置高,在STROBE脉冲作用下数据按4bits输出供CPU读取;(7)SLCT置低断电。 防跟踪记数器由移位计数器满状态启动,其溢出脉冲使触发器翻转选通三态门,扰乱输出数据。防跟踪记数器和移位寄存器时钟可由门电路构成的RC振荡器产生。 2.2 ISA总线加密电路 与并行口方式相比,通过总线方式对加密电路的移位寄存器和移位记数器的预置、输入数据的异或解密等操作更灵活、方便,并可与其它电路结合,其原理框图与图1相似。总线接口电路对端口地址和控制信号译码,产生移位寄存器和移位记数器输入写、移位寄存器及异或解密输出读信号,读信号清零防跟踪记数器并阻断其时钟。在ISA总线接口中,移位寄存器时钟用OSC或总线时钟BCLK,而防跟踪记数器时钟可采用移位时钟或状态持续变化的总线控制信号及状态信号,如:地址锁存信号BALE、刷新指示信号REFRESH、DMA操作允许信号AEN(因用于I/O地址译码,隐蔽性好)等,用REFRESH信号时计数器规模小、运行可靠,但是切断该信号防跟踪功能不起作用,密码数据仍正常产生。 2.3 单片机/ DSP系统程序加密电路
对扩展程序存储器的加密保护可通过对其数据和地址线的异或/取反扰乱来实现,其目的都是不能直接获取程序存储器内部保存的数据。由于X=X 对8031、MC6085兼容系列的单片机系统,编程使开始的一段初始化程序顺序执行,系统复位时自动对移位寄存器设初值,复位后程序存储器的读信号同时作为移位时钟,使每条指令的密钥不断变化;在第一次执行循环、跳转指令前,程序发控制字阻断移位时钟,使以后的程序密钥相同。在高速DSP系统中,一般上电后将低速EPROM中的程序加载到高速SRAM中运行,可使EPROM的读控制信号一直作为移位时钟,使密钥不断变化;如果用串行口方式加载,程序解密操作与数据通信中的数据解扰相同,数据输出时钟直接作为移位时钟。单片机/DSP作为微机系统的协处理器时,单片机/DSP的代码一般经总线装载,可将加密代码与移位寄存器输出的密钥异或解密,输出到单片机/DSP的程序RAM。 系统运行时,用于MCU/DSP程序保护的防跟踪计数器时钟一直有效,这样可以防止仿真器的跟踪。防跟踪计数器要用程序读或其相关信号清零,有的DSP从内部RAM运行程序时,程序读无相应输出信号,这时可用定时器中断或程序中及时插入的代码来清零。 上述介绍应用移位寄存器产生伪随机数据对程序进行加密的一些方法,曾在我们设计的系统中得到验证,整个电路的设计不复杂,占用PLD 器件的资源不多,完全可结合在系统的硬件逻辑设计中。使用8/16位的移位寄存器时,密钥量有限,制约了加密的复杂度,使用者应根据设计要求和自己的经验,引入各种非常规的操作方式,这样就可以用简单的硬件电路,很好地实现软件和系统的保护。
|
- 移动Agent在D..
- 2008-1-21
- 分布式运算单元的原..
- 2007-8-9
- FPGA作为协处理..
- 2007-8-9
- 利用MATLAB增..
- 2007-8-7
- 基于EPLD的PC..
- 2007-8-7
- 现代可编程计算机控..
- 2007-8-9
- FPGA在多进制正..
- 2007-8-9
- 用PLC实现的蜂窝..
- 2007-7-29
- 基于FPGA的FI..
- 2007-8-9




1 硬件加密的PLD实现原理
N位移位寄存器产生的伪随机码作为读取的密码或输入数据解密的密钥,在移位时钟的作用下,可输出
2.1 并行口加密电路
早期的单片机系统大都用扩展EPROM作为程序存储器,这种方式目前在高速单片机/DSP中仍然很常用。对于程序量小,不需外部程序寻址的简单系统(如微狗),采用内置EPROM/FLASH
RAM、带加密控制字的MCU(如