目前国内外对软件保护方法的研究主要有两大类方向:基于软件加密的保护和依赖于硬件的保护,他们都有自己的优点和局限性。软件加密优点在于较低的加密成本,不依赖特殊的硬件来实现对软件的加密。硬件加密保护方法是将加密信息固化在硬件上,需要相应的硬件支持,所以成本比较高。我们从这两个大的方面出发,列举一些国内外常见的软件保护方法。25511
1 基于软件的软件保护
上文中已说到软件保护可分为两类:软件版权保护和软件安全保护,一般软件生产商都会兼顾考虑着两方面,而有些保护方法例如代码混淆从某些角度看同时实现了两个方面。所以下面我们就不将这两个方面分开说。
(1) 序列号保护技术:当我们下载某个正版软件后,一般软件生产商会设置一个使用期限,比如20天。(在系统上做一个时间标记,记下用户下载的日期,在每次使用时对比下载日期,当过了期限后,软件系统就会添加限制使用户没法使用)。过了使用期限后,用户必须要经过相应的注册才能使用,填写相应的私人信息获取注册序列号。验证序列号的正确性即是本保护技术的关键。验证有两种方法:对用户输入的软件用户名再进行一次加密算法生成序列号,与用户原本序列号对比。但此方法将加密算法暴露,破解者提取加密过程即可解密,所以此方法不是很安全。另一种是通过验证码来验证用户名的正确性,这是生产注册码的反算法,破解者较难解密,但此算法设计也比较困难。论文网
(2) 光盘保护技术:一些游戏软件开发商会以光盘形式发行软件,当软件运行时会检测相应的光盘是否存在,如果不存在则拒绝运行软件,这较好的防止了正版软件的拷贝盗用。
(3) 代码混淆技术:是将软件的源码或是编译的中间代码转换成难以阅读理解的代码,功能上未改变。优点是实现简单,目前已有很多的代码混淆器可实现此功能。缺点是并未对源码实现真正的加密,只是增大了代码的阅读难度,破译代码的时间,所以并不适用在安全要求性高的场合。
(4) 软件水印保护:此方法在最近几年成为计算机界的热门研究领域,可很好地实现软件版权保护。它携带生产商,用户,软件版权和身份认证等信息,分为静态水印和动态水印。静态水印是将水印信息存放在可执行程序代码中,例如安装模块,调试信息的符号或是指令代码中。动态水印是将水印信息保存在程序的可执行状态中。我们一般通过以下三类标准来评测水印技术的优良:隐藏信息量,隐蔽性,弹性。
基于软件的软件保护方法还有很多,比如:软件加密技术,篡改校验,防反汇编技术,软件压缩和加壳,虚拟机保护等技术。
2 基于硬件的软件保护
硬件加密保护方法也有很多种,原理之一就是可以通过将软件的核心代码通过加密手段存储在安全芯片中,在运行软件的时候先解密芯片中的核心部分,再通过计算机硬盘上的引导部分去调用。本课题基于TCM实现的方法就与此原理类似。基于硬件的另一种方法是将加密信息固化到硬件上,在软件运行的时候,先检测对应的硬件信息,如果相匹配,就运行此软件。
基于硬件的加密方法流行的有加密狗。加密狗是插在计算机并行口上的加密产品,在软件运行的时候,程序通过与加密狗交换数据来实现加密,“智能型”的加密狗在数据交换的时候能同时判断分析,实现了反解密功能。但之前的单片机加密狗存在算法简单,存储空间小等缺点,最新的一款智能加密狗结合了上述硬件加密的两个原理,添加了“代码移植”功能,将核心代码经过编译存储到硬件中。 软件保护国内外研究现状:http://www.751com.cn/yanjiu/lunwen_19335.html