首页  ·  知识 ·  云计算
详解软件的盗版与反盗版
佚名  本站原创  综合  编辑:dezai  图片来源:网络
"FONT-SIZE: 14px">一、关于盗版
一、关于盗版

(一)盗版的主要方式
  软件的盗版主要有盗版技术和盗版使用两种情况。
  盗版技术指非法侵占别人的软件技术成果,主要有盗用源程序,非法使用算法,设计思想和设计图样(界面)。软件技术盗版涉及更多的是法律和管理问题,主要依靠产权、专利相关法律来解决。我们看到,过去一段时间里技术本身显得无法直接保护自己。
  软件的盗版使用,是指非法复制和使用软件。在没有采取反盗版措施的情况下,软件盗版使用指未授权使用;在有防盗版措施的情况下,盗版使用指破解防盗版加密,并非法使用软件。
  通常讲的盗版,一般指破解防盗版加密。我们所关心的是存在哪些破解反盗版加密的方式及如何对之有效防止。以下把破解反盗版加密简称解密。
  软件解密共有两种方式(手段),即技术手段和非技术手段。非技术手段主要有:直接盗取或骗取密匙、幕后交易以及直接获得密匙三种方式。直接盗取或骗取密匙主要依靠对方管理上的弱点和密匙管理人员的缺点,获得软件的有关安全资料,从而非法使用软件。幕后交易指利用美色、金钱权利进行不平等的交易获得非法软件使用权。直接获取指内贼行为。(注:以上指的密匙,包含加密算法和密码两层含义,这里仅为了表述简单而简称密匙。)技术手段有:对安全对象破解和对安全入口破解两种方式,即所谓的对象安全问题和入口安全问题。

(二)目前主要使用的盗版技术
  盗版破解主要采动态跟踪分析和静态分析两类技术,这些技术一般要使用相应的工具;目前动态跟踪分析的工具主要有ICE、soft-ICE和TRW2000等,静态分析的工具主要是各种反编译软件(比如DeDe,DePB);对某些特定的防盗版技术还有大量的特定破解工具(比如,FileInfo/PEID/AspLoader等文件类型侦测、外壳侦测工具,Stripper/Dumper/UnSheller等脱壳、内存转储工具)。
  在具体的方法上,对象安全主要采用对象仿真,也有少量使用算法破解;入口安全主要采用绕过检测点、还原原代码和修改防盗版代码等。

二、关于软件反盗版

(一)反盗版的主要技术
  1、硬加密
  目前最常用的软件保护硬加密产品是接在串口(并口或USB口)上的加密狗(加密锁、软件狗)或插在机内的加密卡,从理论上,用硬件解决盗版问题是一种较安全的技术;但是,用硬件解决盗版问题的成本很高。现在市面上有大量几十元(人民币)到一千元(人民币)的软件狗销售,似乎很便宜,实际上这类软件狗是采用廉价芯片加简单算法,一味追求价低的产品,毫无安全可言,黑市中的盗版软件九成以上就是通过破解这种软件狗取得的。这类产品的对象安全就不符合要求,加上为了销售方便,入口安全就更不重视,入口安全的算法复杂度趋于零。
  要生产较为安全的硬件加密狗,每个的成本不能低于千元,一万元以上的软件狗可以视为安全的产品。事实上,硬件安全产品要实现安全算法,其运算能力要相当于一台性能较高的微机才能有效完成,专用芯片可以提高效率,但对入口安全的解决会碰到更棘手的问题,成本一样少不了。目前也较常见的防盗版技术还有口令方式、字符串校检和钥匙盘等,这些方式的安全级别很低,对发行量不大,开发成本小的软件适合采用这些技术。
  2、软加密
  纯软件加密因经济方便而蓬勃发展,当前最常见的是外壳加密技术,相关工具(加壳软件)有:ACProtect、Armadillo、Aspack、ASProtect、Krypont、Obsidium、PE-Protector、tElock、SVK、Upx、Xtreme-Protector等等。它们会采用一些AntiDebug、AntiTrace、AntiDump机制,并结合API嵌入来增加破解难度,但因为外壳加密存在原理缺陷:受保护程序代码总要被还原成加密前的状态才能运行,这就给破解者、破解工具以很多取巧空间。
  3、认证许可
  认证许可技术是安全技术发展到今天的产物,是各种信息安全的基础技术。但因为政治原因,从国外进入我国的这类反盗版技术,安全级别是很低的,而且在入口安全上没有投入成本。

(二)软件反盗版需要解决的主要安全问题
  1、对象安全问题
  从技术理论上讲,软件反盗版就是对具有唯一性的数据对象授权,通过判断是否有授权对象来决定防盗版行为(或称运行状态)。可见,授权数据对象应具备难以复制的特征,如果该授权对象可以伪造,防盗版措施将失去意义。
  所谓对象安全问题,即授权对象是否可以伪造的问题。对象安全建立在某一唯一性与授权标志不可伪造的基础上,从技术理论上看,实际上是对唯一性进行加密(数字签字),使唯一性难以伪造。对象破解即对唯一性的加密进行破解,达到能对伪造数据(授权对象)的目的,即对伪造的唯一性伪造(加密)成授权标志。
  比方说,反盗版即把软件加一把锁,对象安全问题即这把锁是否锁得住的问题。对象破解即通过研究锁的原理,从而得到开锁的方法或者说找到钥匙的唯一性(特征)伪造钥匙,把锁打开。现代的密码学表明,在不考虑成本的情况下,对象安全可以做到任意的安全级别。
  2、入口安全问题
  所谓入口安全问题,即软件主体与安全保护体相结合所产生的安全问题。比方说,软件主体是一个房间,安全体即是这个房间门上的锁,对象破解是对锁进行研究(往往是对加密进行研究,即密码分析),而入口破解是想办法不开锁即进入房间里,如把门叶撬了,或者干脆就在门上或墙上直接打一个洞进去。
  可见入口安全问题与对象安全问题是两个完全不一样的问题。目前在数学基础理论上很少人对这一问题进行研究,实际上是凭经验加强,按上比方即简单地把门和墙加厚,而对墙、门和锁的关系以及它们内在特性没进行深入的理论研究。事实上,在目前的计算机体系结构下,密码学中认为只依赖密码保密才算安全的原则在入口安全问题上是不正确的。因为执行代码总是公开的,而且它往往不再与其它控制代码发生关系,因此其密匙总是以“明文”方式存在于公开的地方,密匙本身是无法保密的。
  在现有的计算机体系结构上,解决入口安全问题的唯一办法是依靠算法的复杂度,主要有功能相关法、算法检验法和功能代码检测法三种方法,它们都要依靠算法的复杂度。理论研究表明,存在安全体系结构可彻底杜绝入口破解盗版。
  3、安全源问题
  所谓安全源问题,是指安全所依赖的数据可复制的问题(或称安全原点问题、安全不动点问题、认证参照问题)。一个系统如果存在这个问题,其安全强度就无法使用密码手段加强。
  例如,在使用软件加密狗的过程中,如果把用于识别授权标志的密码交给用户来初始化;那么,由于用户可以复制这关键数据,如果所有安全数据都由它决定,这种狗就存在安全源问题。作为传统的软件加密狗,为了避免这个问题,其厂商就把这权力留给自己,这种处理方法确实可以避免这个问题,但会产生另一个安全隐患,即(安全)提供商肯定可以破解用自己产品保护的软件。
  再如,在软件商提供的有限制软件试用中,从理论上讲,任何一种试用,都必须对使用权力进行记录,依据这记录进行试用处理,然而这一记录肯定是可复制的。目前Internet网上公开破解各种试用版软件、使其没有试用限制的方法,大约有一半就是修改安全源数据(还有近一半是由于代码没写好,从入口安全方面进行破解)。
本文作者:佚名 来源:本站原创
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读