二、关于软件反盗版
(一)反盗版的主要技术
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网上公开破解各种试用版软件、使其没有试用限制的方法,大约有一半就是修改安全源数据(还有近一半是由于代码没写好,从入口安全方面进行破解)。
点这里回到文章导读>>> 点这里进入文章论坛>>>