APP下载

基于机器码的软件简便认证方法研究

2011-04-10汕头职业技术学院计算机系广东汕头515078

长江大学学报(自科版) 2011年34期
关键词:本机字符串解密

(汕头职业技术学院计算机系,广东 汕头515078)

作为软件开发企业来说,如何保护其软件产品不受盗版影响,事关企业的生存和发展。一般情况下,软件保护方法有使用加密狗保护和使用认证书2种方法,但不管使用哪种方法,都只能增加软件破解的难度,而无法保证绝对不受盗版的侵害。基于机器特征码的软件简便认证方法,可以让用户自定义加密方法,在软件安装过程中获取机器特征码,如CPU的ID、主板IDE序列码或网卡MAC等,编制加密文件作为软件在该机器运行的许可认证,软件公司可以将机器与软件序码捆绑,通过网上激活的方法来控制软件在捆绑机器上的使用[1]。该方法简便易行,且由于加密规则由用户自定义,增加了软件破解难度,从而达到保护软件的目的。为此,笔者对基于机器码的软件简便认证方法进行了研究。

1 处理流程

要生成软件认证文件,必须完成以下主要步骤:①获取用户端的机器特征码;②将用户端的特征码加密成认证文件;③将认证文件发回用户端;④在程序中读取认证文件,按一定规则解密取得特征码与本机特征码比对,判断是否予以执行。获取机器特征码如图1所示,生成认证文件如图2所示,软件运行流程如图3所示。

图1 获取机器特征码

图2 生成认证文件

2 实现方法

当软件用户安装软件时,先运行一段程序,用于产生加密的机器特征码文件,加密种子为其后的六位随机十六进制码。要求用户填写软件序列码,接着上网激活,服务器端读取用户加密文件和软件序列码,解密得到机器的特征码,如数据库没有序列码的捆绑记录或存在与当前特征码捆绑情况时,可按照软件加密规则产生一个key.lic认证文件并发送到用户的安装目录中,否则告知用户该序列码已与其他计算机捆绑,不能在本机使用[2]。当激活并安装正确后,在运行软件时利用约定的解密规则读取key.lic文件,解码得到机器特征码,与当前机器码对比,如一致则放行,否则告知用户该序列码已在其他机器登记而不能在本机运行。

图3 软件运行流程

2.1 编制动态库文件

1)获取机器特征码 安装软件时,从用户端获取机器特征码,包括本机的4组8位十六进制CPU的ID码(如0001067A-01020800-0408E39D-BFEBFBFF)、主版的IDE序列码(如081104BB6C005GGZUAXJ)或网卡的MAC(如00-23-8B-56-4E-D9)等。以获取CPU的ID为例,可以编制一个动态库cpuid.dll,函数为GetCPUID:TCPUID[3],以便获得用户端CPU的ID。常见方法如下:①在程序开发过程直接调用API函数获取4组8位十六进制码;②嵌入一段汇编程序来获取。以下为获取CPU的ID的汇编程序。

2)生成6位随机码 当读取本机的特征码后,为保密起见,应该将信息加密而不是以明码方式发送到软件厂商。加密时,混入一组6位的随机十六进制码。为此,必须编制一个生成6位十六进制码的动态库B6RND.dll,可通过函数B6crt()产生6位十六进制数。

3)生成字符串加解密动态库 文件在传输过程必须加密,加密规则应由开发者定义。为此,必须编制一个字符串加/解密的动态库mdsec.dll,加密函数是 Makesec(原字符串:pchar;加密字符串:pchar),输出加密后字符串:pchar;解密函数是Disce(加密后字符串:pchar;加密字符串:pchar),输出还原字符串:pchar。

采用ASCII码加密方法,其规则由开发者定义。字符串为字母或数字,不要含标点,加密字符串不长于原字符串。

2.2 生成加密的机器特征码文件

获得安装软件的机器特征码并进行加密,这样用户就看不到程序究竟是使用何种机器码来认证,从而增加软件被破解的难度。应该注意的是,文件必须包含加密的种子字符串,这样才能被重新解密出机器特征码。将加密后的文件getlic.dat发送到软件商,可以获取认证文件。

2.3 生成加密的认证文件

读取用户加密文件getlic.dat,按自定义规则解密后获得用户的机器码,软件商按新的加密规则重新加密后生成新加密认证文件key.lic。为了增加文件被破解的难度,建议采用二进制方式写入,首字节为有效字节的指针,混写入一些无关的字节,这样用户便无法获知文件内容,也无法获知是何种机器码或组合。将认证文件发送回用户,拷贝到指定目录即可。也可以在网上直接给用户认证,这样更加方便快捷。

2.4 在程序中控制认证

在程序中,读取认证文件并按加密规则解密得到机器特征码,与读取的本机特征码比较来进行认证控制。如验证通过则运行正式版本的软件,否则提醒用户验证失败,运行限制(如限时/次或减少部分功能)版本软件。另外,由于认证文件与机器码有关,因而即使拷贝到其他电脑软件也无法正常使用。至此,便可实现软件与机器特征码的捆绑认证。当然,还可以采用比较复杂的办法,比如多种机器码混合使用,或者采用更复杂的加密算法,如用流行的MD5算法编制加密的许可文件来验证软件是否许可运行[4]。

3 结 语

为了保护软件的知识产权不受侵害,通过对比机器特征码与加密认证文件的特征码,实现了软件的认证控制。实践表明,基于机器特征码的软件认证方法简便实用,控制灵活,特别适用于软件与机器捆绑认证。

[1]William Stallings.密码编码学与网络安全原理与实践 [M].刘玉珍,王丽娜,傅建明 等译.北京:电子工业出版社,2001.

[2]樊刚.加密与解密——软件保护技术及完全解决方案 [M].北京:电子工业出版社,2001.

[3]熊曾刚,张学敏,王时绘.软件加密技术及应用实例 [J].控制工程,2003,10(6):571-573,576.

[4]王津涛,覃尚毅,王冬梅.基于MD5的迭代冗余加密算法 [J].北京:计算机工程与设计,2007,28(1):41-42.

猜你喜欢

本机字符串解密
基于ADS-B的防撞检测算法研究
炫词解密
解密“一包三改”
基于文本挖掘的语词典研究
飞机相遇模型仿真技术研究
不再烦人隐藏Windows 10的更新
炫词解密
喷火的“土豚”—澳大利亚F-111战机
解密“大调解”
一种新的基于对称性的字符串相似性处理算法