软件是智力劳动的结晶,也是软件研发人员工作的成果,如何通过有效的技术保护它不让人无偿的占有具有重要的意义。加密是一种应用非常广泛的软件保护方法,常用的是通过注册码的方式来对软件进行保护。在各种不同的加密算法中,根据密钥的公开性可以将其分成对称加密算法和非对称加密算法(又称公开密钥算法)。本文利用一种二次授权序列生成的加密算法,实现了在软件内对注册码进行签名验证,并成功通过测试,达到了软件保护的目的。
一、软件保护技术研究现状
目前采用的软件保护方法可以分为三大类:软加密、硬加密、网络加密,软加密即用纯软件的方法来实现软件的加密,主要有密码方式、软件自校验方式和钥匙盘方式。硬加密则是利用硬件和软件相结合来实现软件的加密,其典型产品包括加密卡、软件狗和微狗等。随着Internet应用的普及,Internet上的安全技术、加密技术也得到了很大的发展,加密过程中结合使用Internet通信技术,授权号码产生过程中的信息传递基于Internet网络。但是,在这种传统的网络加密方式中,授权使用的软件序列号只在安装软件时认证一次,并且相对固定,容易被盗。
二、软件系统的安全需求
对于软件系统而言,其安全性是指系统资源和信息资源不受非系统授权的伪造、篡改、泄露,避免任何内部或外部非法的侵入、盗用、欺骗。通常而言,信息系统安全包括实体安全、软件安全、数据安全和运行安全,为便于解析软件系统安全引入了Mylnfo通用信息平台,其构架如图1所示。
此构架基本上反映了常见信息平台的真实情况。从图1可以看出,Mylnfo以组件形式构建了相关的核心服务和业务服务层,形成了以关键技术提供平台式的基础服务,涉及到的安全需求主要有:
(1)安全的通信机制保证信息不至于在通讯途中被侦听、篡改、伪造、截断;
(2)合理的用户登陆,拥护授权管理,以确保只有合法的用户才能够正常操作使用信息系统,同时操作定义将会被局限在该用户被系统许可的权限范围内;
(3)完备的认证机制既实现静态的信息安全,也实现执行时动态的信息安全,并有利于跟踪用户实时操作,实现角色访问控制;
(4)后台的数据安全基于现有关系型数据库系统的可操作性数据安全封锁,定义一系列数据安全规范并加以实施,以实现关键数据即使不慎泄露仍具有保密性,在未被解密之前窃取者无法获取有利用价值的敏感信息;
(5)代码的信息隐藏包括客户端的脚本级代码的规范安全和服务器端动态页面代码的适度封装,从而实现系统的外部安全和内部安全;
(6)关键的日志追踪,对于已经发生的事件,在需要的时候可以实现日志回溯,并记录攻击者的频率信息;实施主动防范等。
三、二次授权序列生成算法
本文在借鉴现有的软件保护方法的基础上,结合MD5数据加密算法,提出了一种二次授权序列的软件保护方法,在软件使用前授权,在使用过程中进行授权”判别,从而达到保护软件版权的目的。
基于网络软件系统基本上开放式的源码现状,要求对软件的使用进行相关的预先授权t以保障软件开发者的版权。实际授权时,可以生成两串加密序列,其中一个为使用授权序列,另一个为注册信息序列。结合现有的加密工具包,分别提出一种生成算法。
(1)使用授权序列生成算法(25位序列号)
①预定义基本映射字符集[0123456789ABCDEFG I-UKLMNPQRTUVWXY],共32个字符,其中字母I,O,S,Z由于易与1、O、5、2混淆而排斥在字符集外;
②获取唯一标志机器的指纹信息序列(Machine Fingerprint Serial,MFS)、如硬盘序列号、网卡MAC地址、CPU序列号等信息的有规则序列化;
③随机函数在[0—31]间生成随机数,二一映射为BMCS中相应的字符,如此循环9次生成字符的序列,记为C9;
④令报文M=C9+MFS,再HashMD5(M),MD5散列后得到128bit的位串,即32个16进制字符,记为H32;
⑤Haslhmls (Hn),得256bit串,即64个16位字符,记为H6I;
⑥将H甜每4位依次取出,记为H4,实现操作Dec(Hex (Oxh4))MOD32→BMCS,即将每4位字符视为16进制数并转化为10进制数再模32取余,将余映射为BMCS中的某一字符,如此可生成16位的字符序列,记为C16;
⑦C9+C16,得25位的序列号,记为C25。
校验算法:
重复上述步骤①-⑦,从注册表中取得的已注册使用授权序列C25,相同则校验通过,否则视为非合法授权。
(2)注册信息序列生成算法
①预设16进制字符集[0123456789ABCDEF] (Hexadecimal Code Set,HCS),随机生成8位HCS集的序列,记为H8;
②预定义运算O,算出O (H8+MFS)值作为加密密钥,用RC4加密成16位16进制字符,记为H16;
③Hasbmd5(H8+H16)=H32;
④Hashsha256(H32)-H64;
⑤对H64每8个字符一取,记为H8,并将其前4个字符转换作映射:Dec(Hex(Left(H8,4)))MOD16_HCS,可得8个字符的MAC;校验值,记为M8;
⑥拼合H8+ H16+ H8,即得32个字符的注册信息序列。
还原算法:
a、判别注册信息序列是否合法,即重复上述步骤③一⑤,比较MAC值与M8是否相同,不同则为非法的注册信息,还原出错;
b、相同则取中间的H16,用O(H8+MFS)作为密钥进行解密;
c、将解密后的字符序列二进制化,并根据预置编码规则还原为注册信息。
上述的算法可作为基础参考,算法关键模块必须进行反跟踪技术处理,以防止暴力破解。
四、应用实例
上述安全策略,均以Mylnfo信息系统平台为蓝本。该信息平台的设计开发方案中最大的着眼点就是确保整个系统的安全性。目前Mylnfo平台已经作为一个整体的信息系统移植到某企业的综合信息管理中,取得了很好的应用效果。在使用过程中,由于安全措施到位,整个系统运行平稳、高效、安全,达到了预期的开发需求。
小知识之Myinfo
Myinfo是一款集新闻信息搜索、跟踪、个性定制、新闻编辑、信息发布等于一体的个性化软件,它比RSS订阅方式范围更广,可以搜索采集任何网站,它比搜索引擎分类更加详细、准确 ,它是目前唯一免费个性化信息搜索采集软件。