首页 / 分离式计算机软件保护器及应用软件保护方法

分离式计算机软件保护器及应用软件保护方法失效专利 发明

技术内容

技术领域 本发明涉及计算机控制领域,尤其涉及对计算机应用系统软件的加密技 术。 背景技术 目前市场上使用的计算机软件保护主要采用软件保护锁,软件保护锁硬 件内置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插入软件检验模块中的应用系统软件的相应缺失区域,得到完整 的应用系统软件。然后软件检验模块中的检验软件对用户信息进行检验,合 法后,用户才可以被允许使用相应的应用软件系统。