公开/公告号CN101000649A
专利类型发明专利
公开/公告日2007-07-18
原文格式PDF
申请/专利权人 重庆广惠科技有限公司;
申请/专利号CN200610095320.5
申请日2006-12-22
分类号G06F21/22(20060101);
代理机构50123 重庆华科专利事务所;
代理人康海燕
地址 401147 重庆市渝北区龙溪松石支路天一新城A2-1102
入库时间 2023-12-17 18:50:31
法律状态公告日
法律状态信息
法律状态
2013-02-27
未缴年费专利权终止 IPC(主分类):G06F21/22 授权公告日:20090401 终止日期:20111222 申请日:20061222
专利权的终止
2009-04-01
授权
授权
2007-09-12
实质审查的生效
实质审查的生效
2007-07-18
公开
公开
技术领域
本发明涉及计算机控制领域,尤其涉及对计算机应用系统软件的加密技术。
背景技术
目前市场上使用的计算机软件保护主要采用软件保护锁,软件保护锁硬件内置CPU,主要是利用算法功能对计算机程序进行加密。但采用软件保护锁对计算机程序进行加密有以下几方面的缺陷,锁内的变换算法在出厂时已经固定,软件保护者只能设置算法的参数,这样就限制了厂商对算法的使用。对于软件厂商来说,要么预先记录算法结果然后在软件运行时使用码表核对,要么在软件中至少变换两次然后比较结果是否一致;这些信息很容易被破译,达不到保密的效果。对于一些″可编程″保护锁,用户可自行设计专用算法对软件进行加密,但硬件也很容易被模仿,并且,由于使用通用单片机等器件,没有提供有针对性的防范物理攻击手段,因此比较容易通过电子探测(SPA和DPA)攻击直接读出存储器内的数据,或者通过测试探头读取存储器内容;通过厂家测试点等接口对存储器或处理器进行直接数据存取,再激活单片机的测试功能等,从而对软件进行破译。
发明内容
本发明所要解决的技术问题是,针对现有技术中采用软件保护锁对计算机程序进行保护中安全性和保密性不强,容易被解密的缺陷,本发明设计一种分离式计算机软件保护串接器用于对计算机应用软件的加密,只有通过软件合法性检验,用户才可以使用相应的应用系统软件,从而保证了应用系统软件的安全性。
本发明解决上述技术问题的技术方案是,设计一种分离式计算机软件保护器,包括位于微机主机内的模块和微机主机外的模块,将应用系统软件中的一部分作为检测软件,从中提取部分指令、数据存储在位于主机外的存储器中,安装在主机内的程序为缺失指令的应用系统软件,只有当主机内模块提供的加密因子对主机外模块中存储的数据进行加密并返回主机内模块解密,并进行合法性检验通过后,才允许用户使用相应的应用系统软件。
该计算机软件保护串接器具体包括:软件检测模块、软件启用模块、控制单元、存储器、接口模块。其中软件检验模块和软件启用模块设置在微型计算机主机内,构成主机内模块;控制单元、存储器和接口模块组成主机外围设备,构成主机外模块。软件启用模块:为控制单元提供加密因子,并在对控制单元返回的信息进行解密后,将解密后的信息补充给软件检测模块;软件检测模块由部分可执行文件的数据和解密后的数据组成,收集计算机信息并提供给软件启用模块,接收软件启用模块发送的解密信息,将其填入应用系统程序中缺失信息(指令、数据)的相应位置,并对其进行合法性检验;只有通过软件检测模块的合法性检验,才能使应用系统软件完整,以允许用户运行程序进入应用系统;控制单元:从存储器中提取数据,采用软件启用模块提供的加密因子对数据进行加密;存储器:用于存储从应用系统程序中提取的指令、数据以及加密因子等;通信接口模块:用于控制单元与软件启用模块之间的通信连接,以此实现主机内模块和主机外模块的连接。
本发明还提出一种计算机应用系统软件保护方法,包括以下步骤,系统初始化,建立算法模块,该模块主要完成加密因子的计算,信息的加密、解密,存储器地址指针的计算,加密因子与计算机的相关信息满足一次函数关系;加密信息或解密信息与加密因子满足二元函数关系;从应用系统软件中提取部分信息,将其存储在存储器指令数据区;当检测到计算机运行上述提取了信息的缺失指令、数据的应用系统软件时,软件检测模块收集计算机的相关信息(包括执行应用系统软件的次数,系统时间)发送到软件启用模块,软件启用模块调用算法模块计算加密因子,并将加密因子发送到控制单元;控制单元根据加密因子对从存储器中提取的信息进行加密得到加密信息,并将加密信息返回软件启用模块进行解密得到解密信息;软件检测模块将解密信息填入应用系统软件缺失信息的相应位置,并进行校验。
本发明的有益效果:由于微机主机内软件检验模块由自身数据和解密后数据组成,离开外围设备或只有外围设备而更换了微机主机都无法正常运行,只有主机外模块与主机内模块配合,通过合法性检验后,才允许用户使用相应的应用系统软件,从而保证了应用系统软件的安全性。
附图说明
图1所示为本发明系统结构框图
图2所示为本发明模块结构框图
具体实施方式
下面针对附图和具体实例对本发明的实施进行具体说明。图1为本发明系统结构图,该分离式计算机软件保护器包括:软件检测模块、软件启用模块、控制单元、存储器及接口模块。其中,软件检测模块和软件启用模块内置于计算机主机内构成主机内模块,控制单元和存储器模块位于计算机主机外构成主机外模块,主机内模块和主机外模块通过接口模块进行连接和数据通信。软件启用模块为该计算机软件保护器提供加密因子,通过通信接口将加密因子发送到位于主机外的控制单元,控制单元接收到软件启用模块提供的加密因子后从存储器加密因子区中提取加密因子与启用软件模块提供的加密因子进行对比,对比正确后从存储器指令数据区中读出指令、数据并采用加密因子,调用算法模块中的加密公式对指令、数据进行加密得到加密信息(加密后的指令、数据),加密后的指令、数据再写回存储器指令数据区中的相应位置,覆盖掉被读出数据的区域,以保证存储器指令数据区中的指令、数据每次读取都不同。
控制单元返回加密信息到软件启用模块,在对控制单元返回的信息进行解密后,软件启用模块将解密信息补充给软件检测模块;软件检测模块接收软件启用模块发送的解密信息,将其填入应用系统软件中缺失信息的相应位置,并对其进行合法性检验,只有通过了软件检测模块的合法性检验,应用系统软件才将其接收为合法信息,在信息缺失位置填充了相应信息的软件才是一个完整的应用系统软件,用户才能正常使用;接口模块负责主机外控制单元与主机内启用软件模块之间的通信连接,实现了主机内模块和主机外模块之间的数据及指令的传送,该接口模块可选用满足RS-232国际标准电平的专用RS-232接口,也可选用其他计算机接口。
现结合附图2说明该计算机软件保护器的工作过程。图2为本发明模块结构框图,在图中标出了本发明实施对应用系统软件加密处理过程的顺序。
系统安装时,在初始化阶段,使用专用的白噪声生成设备生成白噪声加密因子数据,加密因子S的确定与计算机信息E相关,建立算法模块,设立加密因子、地址指针、加解密算法单元,遵循算法S=Y(E)的一次函数关系生成加密因子S,遵循算法F=Z(S)的一次函数关系确定地址指针F;遵循二元函数K(S,M)的关系构建加密算法单元确定加密数据X,遵循二元函数L(X,S)的关系构建解密算法单元确定解密数据X’。
在编程设计应用系统软件时,就从中提取出一部分指令或数据,而安装在主机内的应用系统软件的指令或数据是不完整,有缺失的。将应用系统软件中的部分程序作为软件检测模块的检验程序,并从中提取出部分指令和/或数据信息,将其存放在位于主机外的存储器指令数据区中,当软件检测模块检测到计算机运行上述有缺失信息的应用系统软件时,软件检测模块收集执行该软件的计算机的相关信息E,如:第几次执行该应用软件、计算机系统时间等,然后将这些信息E发送到软件启用模块(图2中步骤①)。软件启用模块调用算法模块,根据加密因子算法S=Y(E)生成加密因子,将生成的加密因子同时分别存储在主机内软件启用模块中的加密因子区和主机外存储器中的加密因子区(这两块区域中的加密因子数据是完全一致的)。
软件启用模块根据收集、接收到的上述信息,通过一元函数Y从软件启用模块加密因子区中提取出对应的加密因子S,然后通过接口模块将加密因子S和相关信息E发送给控制单元(图2中步骤②)。控制单元根据加密因子S,调用算法模块,依据公式F=Z(S)确定对应的存储器地址指针F,将确定的地址指针F发送到存储器中存储(图2中步骤③),并利用这个地址指针从存储器加密因子区中提取出对应的加密因子(图2中步骤④)。随后控制单元将从存储器中提取出的加密因子与从软件启用模块接收来的加密因子进行对比,一旦软件检验模块所用加密因子与控制单元内所储存的初次使用的加密因子一致,则读出存储器指令数据区中的全部信息M(也就是应用系统软件中缺失的指令、数据)(图2中步骤⑤),调用算法模块,按照加密算法单元中二元函数K(S,M)关系对从存储器指令数据区中读出的信息加密得到加密信息X,并将X写回存储器指令数据区覆盖掉原来的信息(图2中步骤⑥),实现存储器中数据的随机变化即存储器指令数据区中的数据不固定,同时将加密信息X返回软件启用模块(图2中步骤⑦)。软件启用模块调用算法模块,按照解密算法单元中二元函数L(X,S)关系对加密信息X进行解密后得解密信息X’,并将X’返回给软件检测模块(图2中步骤⑧),软件检测模块将其填入缺失指令或数据的应用系统软件的相应位置,并计算数据校验和,进行校验,如校验正确则允许用户使用该应用系统软件。上述过程中的任意一步失败,将导致用户无法使用该应用系统软件,所以达到了软件保护的作用。
为了便于理解,下面以具体实例对本发明的工作过程进行简单描述。
以应用系统软件中缺失三条指令A、B、C为例进行说明,如应用系统软件中缺失三条指令A、B、C,控制单元读出存储器指令数据区中存储的全部缺失指令数据A、B、C,用二元函数K对其进行加密得A’=K(A,S),B’=K(B,S),C’=K(C,S),然后通过专用通信接口模块将加密数据A’,B’,C’传回软件启用模块,在软件启用模块中用二元函数L对其进行解密,得到解密后的指令A=L(A’,S),B=L(B’,S),C=L(C’,S),并将其返回软件检验模块,然后将指令A,B,C插入软件检验模块中的应用系统软件的相应缺失区域,得到完整的应用系统软件。然后软件检验模块中的检验软件对用户信息进行检验,合法后,用户才可以被允许使用相应的应用软件系统。
机译: 产品的边缘保护方法,边缘保护器,边缘保护器成型卷轴和配备边缘保护器的产品
机译: 应用软件编辑处理系统的保护方法及流程
机译: 应用软件保护方法及流编辑处理系统