本发明涉及一种数字数据处理方法及装置,更确切地说是涉及一种阻止越权使用计算机软件的保护方法及装置。 计算机软件的技术保护手段概括起来有三种,即软盘加密法、插卡加密法和软件狗加密法。
第一种软盘加密法是将密码信息隐藏于软件的盘片中,一般的拷贝方法无法将这些密码信息复制到另一盘片中,而达到软件加密的目的。合法的授权用户在运行软件时,必须将有密码信息的盘片插入计算机的软盘驱动器中,以便软件验证密码信息,从而判断是否是合法的授权用户,由于在计算机加密解密领域里,这是最早出现的加密方法,公众对于这种加密机理已有相当的了解,市场上也不断出现专门复制这种加密盘的程序,所以软件开发者也越来越少使用这种加密方法。主要原因有:(1)合法授权用户自己也无法制作加密盘片的备份盘,而在每次使用时,都要将有密码信息的密钥盘插入软盘驱动器中,由于盘片经常使用难免出现磨损及丢失信息的情况,因此而出现的读写错误则导致合法授权用户也不能使用软件的问题。(2)由于对这种加密机理已有相当的了解并不断出现专门复制密钥盘地程序,相对保密强度较低。
第二种插卡加密法是专门制作一块加密硬件卡,插入计算机的扩展槽中,软件运行时需要用到放在加密卡EPROM中的数据及部分程序。这种加密卡一般较难复制,当软件运行时,从加密卡中读出数据及部分程序,判断是否是合法授权用户的加密卡,若是则软件能正常运行,否则软件就无法正常运行。若计算机扩展槽中没有加密卡,则软件也无法正常运行。使用这种加密卡的优点是:(1)软件可以复制,但若无加密卡存在,软件就无法运行。(2)加密效果较好。其缺点是:(1)只能对某种计算机制作加密卡,目前情况是IBM-PC系列及其兼容机。(2)要占用计算机的一个扩展槽。(3)安装加密卡要打开计算机机箱,要求用户有一定的硬件知识。(4)加密卡与主机CPU共用数据、地址总线,借助于技术手段,如采用逻辑分析仪,就可从总线上捕获到加密卡中的数据及部分程序。(5)对于缺少扩展槽的便携式计算机来说,这种加密卡就无法使用,因而目前采用加密卡的用户也越来越少。
第三种软件狗加密法,由硬件电路及相应的接口软件组成,硬件电路串接于计算机的打印口与打印机间,不影响打印机的正常工作。软件狗的硬件电路中存有掉电保护的关键密码信息,软件运行时可随时通过接口软件来访问该硬件电路,以判断与该软件相配套的硬件电路是否存在,若硬件电路不存在或软件不配套,则软件无法正常运行。使用软件狗加密法的优点是:(1)软件可随便复制,合法授权用户更可复制备份。(2)安装简便,不用打开机箱。(3)软件对软件狗的访问对用户是透明的,无需用户干预。(4)加密效果好。它的缺点是:(1)依赖于具体的计算机机型,目前还只适用于IBM-PC系列及其兼容机。(2)使用不当容易损坏硬件。
本发明的目的是设计一种使用方便、保密强度高、不依赖于具体计算机机型的计算机软件加密保护方法及装置。
本发明的计算机软件加密保护装置,由计算机和与计算机脱机操作的专用计算器构成,所述的专用计算器包括由CPU中央处理单元、显示驱动电路、程序及数据存贮器ROM、RAM和若干I/O通道组成的微处理器,与微处理器I/O通道连接的键盘,和与微处理器显示驱动电路连接、用于显示键盘输入数据及微处理器处理结果的显示装置;所述计算机中含有用于存贮被保护软件及加密软件的存贮装置。
本发明的计算机软件加密保护方法,是采用以下操作步骤:
1)将初始值AO、加密关键数据B、D、E和加密算法F1存入专用计算器的ROM中;
2)将初始值AO、加密关键数据B、D、E和与加密算法F1互为逆过程的解密算法F2存入计算机的存贮装置中;
3)启动计算机工作,计算机按存贮装置的程序内容产生一个任何人事先都不可能知道的随机数Xn,并在计算机显示器上显示Xn;
4)启动专用计算器工作,操作专用计算器键盘,将Xn输入专用计算器中并启动计算;
5)专用计算器根据Xn、an、B、D、E值,按加密算法F1在RAM中计算Yn,并在显示装置上显示Yn;
6)将Yn值键入计算机中,计算机在机内RAM区根据Xn、Yn、an、B、D、E值,按解密算法F2计算Xn';
7)计算机存贮装置加密软件比较Xn与Xn',当Xn=Xn'时,执行保护软件的正常操作;
8)当Xn≠Xn'时,停机中断操作。
上述装置及方法,只要加解密所使用的数据AO、B、D、E在算法F1和F2中一致,则Xn必然与Xn'相等。每一套受保护的盘卡及其相应的专用计算器,其中的数据AO、B、D、E是不相同的,因此用户手中的加密卡不能互换使用。固化在微处理器中的关键数据AO、B、D、E还具有保密位,用户无法从中读出也无法更改。
下面结合实施例及附图,进一步说明本发明的技术。
图1为专用计算器原理框图。
图2为专用计算器实施电路图。
图3为计算机软件加密保护工作流程图。
参见图1,专用计算器由微处理器1、显示装置2和键盘3组成。微处理器1中包括中央处理单元CPU,显示驱动电路,内部程序及数据区ROM、RAM,和若干个I/O通道。其内部程序区ROM提供一个算法F1(X),对由键盘3输入的数字量进行算法运算并将运算结果显示在显示装置2上。键盘2与微处理器1的I/O通道连接,显示装置2直接与微处理器的显示驱动电路连接,显示由键盘3输入的数据及由微处理器1产生的结果数据。
参见图2,实施例微处理器1采用日本EPSON公司生产的SMC62P1A单片微处理器,其内含有CPU、4K字节PROM、80×4位RAM、9个输出口(R00-R03、R10-R13、R20)、8个输入口(K00-K03、K10-K13)和32段×3公共段显示驱动口等。PROM中装有内部程序及关键数据。
显示装置2采用八位七段液晶显示板。
键盘3采用4×4键盘,包括数字键0-9及由启动计算键、退格键、清屏键、开关键组成的功能键。
该专用计算器的微处理器1接收键盘3输入的十进制数字量Xn,经微处理器内部程序对Xn按照算法F1(X)计算出另一数字量Yn,保存该数字量并在显示装置2上显示出来。
参见图3,为了保护计算机软件,本发明的工作流程与计算机软件工作流程紧密相关,图3所示工作流程可分为两大部分,第一部分是被保护的计算机软件工作流程,如图中的计算机侧所示;第二部分是专用计算器中的软件工作流程,如图中的专用计算器侧。
计算机侧在J1步,首先设置初值A0以及在解密算法中要用到的关键数据B、D、E;第J2步,计算机软件产生一个随机数Xn,该随机数任何人事先都不可能知道;第J3步,计算机将该随机数Xn在计算机的显示器上显示出来,然后,计算机软件处于等待接收由专用计算器产生的数据Yn。
专用计算机侧在b1步,首先设置初值A0以及在加密算法中要用到的关键数据B、D、E,A0及B、D、E与计算机侧计算机软件中的参数值A0、B、D、E一致;第b2步,等待用户从键盘敲入由计算机侧计算机软件产生的随机数Xn;用户击键输入Xn后,第b3步,专用计算器根据算法Yn=F1(Xn、An、B、D、E)计算Yn及下一轮计算要用到的an+1=Yn(n=0、1、2、……);计算出Yn及An后,专用计算器显示装置在第b4步显示Yn;用户将Yn敲入计算机中,第J5步,计算机软件根据算法Xn'=F2(Xn、Yn、An、B、D、E)计算出Xn'及下一轮计算要用到的Xn+1、an+1=Yn。
专用计算器中的算法F1与计算机软件中的算法F2是一对互为逆过程的算法,实施例中F1为加密算法,F2为解密算法,因此经过算法F1和F2得到的数据Xn'应与产生的随机数Xn相等。当计算机软件中的初值与专用计算器中的初值不一致时,Xn'必然不等于Xn。
得到Xn'后,计算机侧进入第J6步即判Xn与Xn'是否相等,若不相等则进入第J7步,出错停机,说明该用户的专用计算器不能与计算机软件对应;若Xn=Xn'则进入第J8步,执行计算机软件的正常功能,执行完后进入第J9步,判断是否还需进行下一轮加密算法,若否则进入第J10步,计算机侧软件正常结束,若还需进行下一轮加密算法,则转第J2步,重新开始新一轮加密算法。
下面结合具体数据说明算法F1和F2,F1与F2只要满足一一对应的互为逆过程的算法即可。实施例中F1、F2为一对乘积密码法,设加解密算法中要用到的关键数据A0=15627394,B=5,7,2,0,1,3,6,4,D=5Ah,E=34h,Xn=32467891。
F1算法:
第一步:若Xn小于八个十进制位,则Xn=Xn+An,否则转第二步。
第二步:计算Xn的十进制位累加和SUM,
SUM=3+2+4+6+7+8+9+1=40=(28)16
第三步:计算加密密钥K1、K2,(下面的运算符⊙为二进制按位异或运算)
K1=D⊙SUM=(5A)16⊙(28)16=(72)16=114
K2=E⊙SUM=(34)16⊙(28)16=(1C)16=28
第四步:计算换位表HW,HW(i)=(B(i)+K1)MOD8,即B(i)+K1对8取模。
HW(0)=(B(0)+K1) MOD 8=(5+114) MOD 8=7
HW(1)=(B(1)+K1) MOD 8=(7+114) MOD 8=1
HW(2)=(B(2)+K1) MOD 8=(2+114) MOD 8=4
HW(3)=(B(3)+K1) MOD 8=(0+114) MOD 8=2
HW(4)=(B(4)+K1) MOD 8=(1+114) MOD 8=3
HW(5)=(B(5)+K1) MOD 8=(3+114) MOD 8=5
HW(6)=(B(6)+K1) MOD 8=(6+114) MOD 8=0
HW(7)=(B(7)+K1) MOD 8=(4+114) MOD 8=6
第五步:将Xn按照换位表进行换位,形成Xnh。
设有HW(i)=j,即将Xn的第i位换至第j位(0≤i,j.<8)
第六步:将Xnh按照Pnh'=(Pnh+K2) MOD 10进行替换变换,形成Yn,其中Pnh为Xnh中的某十进制位,Pnh'为变换后的对应位。
例:对第四位,Pnh=8,Pnh'=(8+28) MOD 10=6
第七步:形成下一轮计算要用的An。
An=Yn=91264570
第八步:算法F1结束。
算法F2,设Xn=32467891,Yn=91264570,A0、B、D、E的值与算法F1中的一致。
第一步:若Xn小于八个十进制位,则Xn=Xn+An,否则转第二步。
第二步:计算Xn的十进制位累加和SUM,及下一轮加密计算要用的An。
SUM=3+2+4+7+8+9+1=40=(28)16
An=Yn
第三步:计算解密密钥K1、K2,(下面的运算符⊙为二进制按位异或运算)
K1=D⊙SUM=(5A)16⊙(28)16=(72)16=114
K2=E⊙SUM=(34)16⊙(28)16=(1C)16=28
第四步:计算换位表HW,HW(i)=(B(i)+K1) MOD8,即B(i)+K1对8取模。
HW(0)=(B(0)+K1) MOD 8=(5+114) MOD 8=7
HW(1)=(B(1)+K1) MOD 8=(7+114) MOD 8=1
HW(2)=(B(2)+K1) MOD 8=(2+114) MOD 8=4
HW(3)=(B(3)+K1) MOD 8=(0+114) MOD 8=2
HW(4)=(B(4)+K1) MOD 8=(1+114) MOD 8=3
HW(5)=(B(5)+K1) MOD 8=(3+114) MOD 8=5
HW(6)=(B(6)+K1) MOD 8=(6+114) MOD 8=0
HW(7)=(B(7)+K1) MOD 8=(4+114) MOD 8=6
第五步:将Yn按照换位表进行换位,形成Ynh。
设有HW(i)=j,即将Yn的第j位换至第i位(0≤i,j.<8)
第六步:将Ynh按照Pnh'=(Pnh+K2) MOD 10进行替换变换,形成Ynh',其中Pnh为Ynh中的某十进制位,Pnh'为变换后的对应位。
76543210 76543210
Ynh=10245679→Ynh'=32467891
例:对第四位,Pnh=4,Pnh'=(4-28) MOD 10=6
第七步:若在第一步时Xn加了An,则Xn'=Ynh'=An,否则Xn'=Ynh'。本例中,Xn'=32467891。
第八步:算法F2结束。
本发明的优点是:由计算机软件产生的随机数Xn,经过专用计算器的算法F1计算得到Yn,再经过计算机软件的算法F2得到Xn',只要所用的数据A0、B、D、E在算法F1和F2中一致,则Xn'必然等于Xn,所以使用方便、保密性强,与计算机的机型无关。