可编程的软件加密锁的制作方法

文档序号:6417789阅读:628来源:国知局
专利名称:可编程的软件加密锁的制作方法
技术领域
本实用新型涉及一种可编程的软件加密锁,属计算机技术领域。
所谓软件加密就是通过修改软件,使软件的正常运行离不开特定的硬件,这个硬件被称为软件加密锁,简称加密锁。加密锁是一种计算机外设,它工作在计算机的并行口。软件运行时,首先向加密锁发送指令,加密锁接收到指令后,完成相应的处理,然后把处理结果返回给软件,软件收到后检查数据是否合理,进一步决定是否继续正常运行。
加密锁有很多种,其核心功能就是算法变换功能。深思洛克数据保护中心的sensel型软件加密锁就属于这种加密锁。
sensel型的算法变换功能是这样的软件向加密锁发送一个数据,加密锁内部对这个数据进行加密变换,然后将变换结果返回给软件。加密锁内的变换方程是加密锁的生产厂商在保密状态下设计的,是不对外公开的。使用加密锁的软件厂商不知道变换方程,只能设置变换方程中的某些参数。当方程中的参数被设置好以后,这个变换方程的输入、输出是一一对应的,软件厂商就是利用这个特点对软件进行加密处理。具体的方法如下软件厂商首先设置算法的参数,并且选择一组数据,让加密锁进行算法变换,并且一一记录变换结果;然后在软件中还用这组数据,调用加密锁的算法功能;最后比较加密锁的变换结果与预先的记录是否一致,如果一致则说明这个加密锁是自己设置的,软件继续运行,否则软件结束退出。以上方法实现了只有经过软件厂商自己设置的加密锁,才能使软件正常运行。
利用sensel型的算法变换功能可以达到软件加密的目的,但是这种加密方法很容易被解密。通过跟踪软件的运行,就可以截获软件与加密锁之间的数据通讯,也就是说软件中调用算法功能时的输入、输出数据都可以被解密者记录下来。解密者将这些数据保存在自己的数据库之中,然后修改软件中访问加密锁的代码,让这些代码不再访问加密锁而是调用解密者自己的程序。解密者的程序负责从数据库中提取数据,然后返回给软件。经过这样处理过的软件就不再访问加密锁,而是访问解密者的数据库,软件离开了加密锁以后还可以正常运行,软件被解密了。
以上的解密方法是一种常见的解密方法,就是用软件来仿真加密锁,称之为仿真法。由于加密者自己并不知道算法变换方程的具体内容,加密设计时只能把加密锁看成一个黑匣子,利用其输入、输出一一对应的特点进行加密。这就使得加密软件中用于检测加密锁的数据量很有限(整个软件的一部分),解密者只要都截获下来,就可以通过仿真的方法解密了。利用仿真法解密这种加密锁所需的工作量是非常有限的,甚至可以自动化实现。sensel型的算法变换功能的弱点是加密锁的算法变换不公开,从而导致轻易被仿真法解密。
本实用新型的目的是设计一种可编程的软件加密锁,使得加密者能够自己设计加密锁的功能,能够自己设计加密锁的算法变换方程,给仿真法解密带来更大的困难。
本实用新型设计的可编程的软件加密锁,该加密锁包括寄存器区、存储区和控制区三部分,寄存器区由通用寄存器、标志寄存器和指令寄存器组成。存储区由程序区、数据区组成。控制区由输入输出模块、存储区改写模块、指令寻址、译码和执行模块组成。控制区、寄存器区设在单片机U1上,存储器设在单片机U2上,U1和U2之间通过信号线相联,U1通过接口接计算机并行口。
本实用新型的可编程软件加密锁与以往加密锁不同之处在于,加密锁的算法方程可以由加密者自己设计,然后编译成加密锁专用的执行代码,设置到加密锁中。设置内容只有加密者自己知道,解密者既不知道如何设置的,也无法修改。软件运行时调用加密锁中的算法,并把算法需要的输入数据传送给加密锁,加密锁完成算法变换后再将结果发送回来。加密者了解算法内容,就可以在自己的软件中使用任意数据来检测加密锁内的算法方程。
由于加密软件可以使用任意数据来检测加密锁,解密者虽然还可以截获加密锁的输入、输出数据,但是仿真加密锁变得非常困难。首先,这些数据是难以枚举的,这种新型加密锁的输入、输出各为64比特数据,如果想通过枚举出所有的可能情况来仿真加密锁,是无法实现的;其次,加密锁内的方程是难以求解的,方程中可以包含各种运算及循环、分支等,完全由加密者控制,如果想通过解析出加密锁内的方程来仿真加密锁,是非常困难的。
由于这种加密锁具备可编程的能力,加密者可以任意设计加密锁的功能既可以是很复杂的变换方程,也可以代替加密前软件中的部分程序。加密软件中检查加密锁时,可以使用随机数据来检测加密锁内的方程是否准确无误。加密锁完全是由加密者自己控制的,加密软件的加密强度也是加密者自己控制的。这种新的加密方式,给仿真法解密带来了很大难度。


图1是本实用新型的原理框图。
图2、图3和图4是本实用新型的电路图。
以下结合附图,详细介绍本实用新型的内容。
首先介绍加密锁工作原理,先对将加密锁进行设置,设置时由存储区改写模块控制。此模块接收从输入输出模块传送过来的数据,数据中包含口令和要写的地址、数据,口令核对成功后,将数据写入程序区或者数据区中的指定地址。
如图1所示,加密锁的工作过程可以大致分成五步。
第一步,加密锁接收软件传送过来的数据。这是由输入输出模块完成的。接收的数据包括指向程序区的指针和算法参数两部分。指针赋给指令指针寄存器(ip),算法参数赋给通用寄存器组(gr)。
第二步,取指令。这是由指令寻址模块完成的。通过指令指针寄存器(ip),从程序区(code)获取当前指令内容,并把指令传送给指令译码模块。
第三步,指令译码。这是由指令译码模块完成的。译码的结果分成两部分,一部分是指令操作码,发送给指令执行模块;另一部分是指令的寄存器寻址,发送给寄存器组。
第四步,指令执行。这是由指令执行模块完成的。首先执行指令相应的功能,然后根据指令操作码是否为返回指令进行不同的处理。如果不是返回指令,则修改指令指针寄存器(ip),使它指向下一条指令,然后把控制权交给指令寻址模块,即转向第二步继续运行。如果是返回指令,则转向下一步。
第五步,加密锁返回数据。这是由输入输出模块完成的。加密锁把通用寄存器组(gr)中的数据发送给软件。
加密锁的电路主要由两个芯片组成。图4的U1为单片机(89C2051),是整个电路的核心。图3的U2为EEPROM(93C46)。加密锁的控制区、寄存器区都设在U1上。加密锁的存储区设在U2上。图2的25针插口的针端(PIN)接计算机的并行口。
并行口的数据端口(D3到D7)接到U1的IO脚(P1.3到P1.7),计算机向加密锁发送的数据经过这些数据线传输。
并行口的状态端口(BUSY)接到U1的IO脚(P1.2),加密锁向计算机返回的数据经过这根线传输。
这种新型加密锁给使用者提供了可编程的性能。加密锁支持一个指令集,这个指令集可以完成算术运算、逻辑运算、位运算、循环、分支、数据的输入、输出、搬移等基本操作。加密锁内有程序区,指令保存在程序区内。加密锁在工作时逐条解释、执行程序区内的代码。程序区可以通过专用口令被设置,但永远不可读。
权利要求1.一种可编程的软件加密锁,其特征在于该加密锁包括寄存器区、存储区和控制区三部分,所述的寄存器区由通用寄存器、标志寄存器和指令寄存器组成;所述的存储区由程序区、数据区组成;所述的控制区由输入输出模块、存储区改写模块、指令寻址、译码和执行模块组成;所述的控制区、寄存器区设在单片机U1上,存储器设在单片机U2上,U1和U2之间通过信号线相联,U1通过接口接计算机并行口。
专利摘要本实用新型涉及一种可编程的软件加密锁,包括寄存器区、存储区和控制区三部分,控制区、寄存器区设在单片机U1上,存储器设在单片机U2上,U1和U2之间通过信号线相联,U1通过接口接计算机并行口。由于这种加密锁具备可编程的能力,加密者可以任意设计加密锁的功能,加密软件中检查加密锁时,可以使用随机数据来检测加密锁内的方程是否准确无误。加密锁完全是由加密者自己控制的,给仿真法解密带来了很大难度。
文档编号G06F12/14GK2372721SQ9921421
公开日2000年4月5日 申请日期1999年6月18日 优先权日1999年6月18日
发明者张 杰 申请人:北京深思洛克数据保护中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1