软件保护技术概述.docx
- 文档编号:169336
- 上传时间:2022-10-05
- 格式:DOCX
- 页数:5
- 大小:19.93KB
软件保护技术概述.docx
《软件保护技术概述.docx》由会员分享,可在线阅读,更多相关《软件保护技术概述.docx(5页珍藏版)》请在冰豆网上搜索。
软件保护技术概述*
白雪梅
(广东商学院计算机系,广州510320)
摘要:
针对软件而临的威胁和软件的版权危机,介绍渚如注册验证、软件加密、软件水印、软件迷乱、软件防篡改以及软件加壳等软件保护技术的基本思想和发展现状,分析软件版权保护技术进一步的发展方向,为完善算法和深入研究奠定了基础。
关键词:
软件版权保护;软件水印;软件迷乱;软件防篡改
*基金项目:
国家自然科学基金项目(No.60873198)
收稿日期:
2009-05-26修稿日期:
2009-07-05
作者简介:
白雪梅(1969-), 陕西西安人,硕士,副教授,研究方向为信息安全及软件水印技术
。
引言
网络技术的发展为软件的传播带来便利的同时,随之而来的版权保护问题也日益突出。
软件安全面监的威胁主要有软件盗版、逆向工程和恶意篡改,因此造成的经济损失不容忽视。
商业软件联盟(BSA)的调查结果表明,2005年因软件盗版造成的损失达29(亿美元.2007年将近480亿美元,全球软件盗版接近
40%,而中国软件盗版高达90%,位居世界第二面对日益严峻的软件版权危机,相应的立法也提上日程并有法规相继出台,但因计算机的发展历史短、技术更新快,难免存在立法漏洞并滞后于新生问题,一些技术手段的法律效力也难以界定:
例如逆向工程或反编译是否合法成为争议的焦点,因为在不同案例中它们所起的作用也许截然相反;利用技术手段实施的盗版迫踪和侵权取证是否具有法律效力,仍然缺乏明确的法律规定。
软件的版权保护应从法律规范、道德宣传和技术保护几方面入手,仅仅依靠法律规范和道德约束显然不够,发展软件保护技术成为当务之急。
本文介绍了常见的软件保护技术,分析了软件版权保护的进一步发展方向。
1注册验证
目前使用比较广泛的版权保护方式之一,包括注册信息的生成和注册信息的验证两个阶段。
注册信息一般根据用户信息生成,可以是一串序列号或注册
码,也可以是注册文件等存在形式。
根据用户信息生成注册信息的数学模型为:
注册信息=加密函数(用户信息)。
加密函数可采用多种加密算法,例如RSA、DES等。
RSA是一种非对称密钥算法,可以将用户信息用私钥加密,获得的加密数据作为注册信息;注册验证时用公钥对注册信息进行解密,将获得的结果与用户信息进行比较以判断用户身份是否合法。
即使通过跟踪得到了公钥,在非对称密钥算法中无法由公钥推得私钥,破解者不能写出相应的注册机。
注册信息的验证其实是验证用户信息和注册信息之间的换算关系是否正确的过程。
有两种基本的验证形式:
(1) 根据输入的用户信息生成注册信息(注册隹息=F(用户信息)),然后与输入的注册信息进行比较。
这种方法最大的弊端是在软件中再现了注册信息的生成过程,解密者提取出由用户信息到注册信息的换算过程,就可以编制一个通用的注册程序。
(2) 根据注册信息验证用户信息的正确性(用户信息=F-1(注册信息)),是注册信息换算过程的逆运算。
如果F与F-1不是对称算法,破解者就很难解密验证过程了。
注册文件是利用文件来注册软件的保护方式,一般是包含用户信息以及注册信息的小文件,文件格式由软件所有者定义。
软件用户将注册文件放在安装目录或系统目录下,当软件启动时从注册文件中读取有用数据并用算法进行处理,根据处理结果判断是否为正确的注册文件,是则以注册版模式运行软件。
2软件加密
软件加密技术采用传统密码学理论,通过隐藏机密信息的内容实现对机密信息的保护。
无论是对称密钥(DES)还是非对称密钥系统(RSA),都是通过加密算法将明文转换成密文,使攻击者难以在传播过程中荻取机密信息而达到软件保护的目的。
随着对加密技术认识的不断深入,加密技术存在的问题也逐渐显露:
(1) 加密技术将明文转换为密文,因语义不明反而会引起攻击者的注意,从而导致根本上的不安全。
当攻击者无法破译机密信息时,可能会破坏密文而使合法接收者也无法获取机密信息;
(2) 加密算法一般是公开的,其安全强度依赖于密钥的长度。
随着硬件技术的发展和并行计算的普及,对加密算法的安全性带来很大威胁;
(3) 更为糟糕的是,攻击往往意味着盗版的发生,而在加密技术中即使确知盗版发生也难以证明软件所有者的版权,更无法追踪盗版者。
3软件水印
在软件加密技术的弊端日渐暴露的情况下,通过隐藏机密信息的存在而保护信息安全的信息隐藏技术引起学界的广泛关注。
作为信息隐藏技术的重要分支,软件水印是防止软件盗版的技术手段之一,美国在该方面已申请了4项专利。
软件水印将软件版权信息和用户身份信息隐藏在软件中,当盗版发生时藉此证明版权并追踪盗版者。
软件水印按使用目的分为:
(1)阻止水印;
(2)断言水印;(3)脆弱水印;(4)确认水印。
目前广泛研究的是
鲁棒的、不可见的阻止水印。
不可见水印的数学基础是大数分解难理论:
选取足够大的素数R1和R2(需保密),两者的乘积N即为软件所有者的版权信息;当盗版发生时,版权所有者提取嵌入的水印数据N并将其成功分解为R1和R2的乘积,由此证明软件的版权。
目前典型的水印算法有:
Davidson和Myhrvold提出通过重排程序的控制流图(CFG)中的基本模块来嵌入水印闻缺点是难以抵抗对程序基本模块的重排攻击。
Stern等人.提出用语义等价的指令序列代换选定的指令序列,在改变的执行频率中嵌入水印的方案眺缺点是对施加于低水平数据结构上的变换或优化较敏感。
Moskowitz提出一种将水印代码嵌入程序的资源(例如数字图像)水印方案地水印代码被随机地提取并执行,当图像被篡改时能够即时感知并终止程序的运行,故具有一定的防篡改能力;问题是凭空产生并执行代码的行为不寻常而容易引起攻击者的注意。
Arboit提出的算法是在程序中构造不透明分支,通过模式匹配从不透明分支内提取水印以因此基于模式匹配的攻击很容易建立。
Venkatesan算法将水印嵌入被标识的基本模块的CFG拓扑结构中,并将表示水印的CFG通过不透明分支与程序的CFG捆绑在一起明缺点是难以抵抗对程序控制流的攻击。
PatrieCousot和RadhiaCousot提出一种称为拥象水印的水印方案,其基本思想是利用中国剩余定理将水印数据分解为一组整数,通过嵌入这组整数而嵌入水印数据;水印的提取通过对程序语义的静态分析而获得叫
ChristianCollberg和ClarkThomborson等提出的动态图水印方案(也称为CT算法)将水印嵌入动态创建的图的拓扑结构中引该方案是目前最具潜力的水印方案:
(1)容易构造不同的图表示水印,形成动态
图水印库;
(2)存储于堆中的水印图难以通过分析而定位;(3)可利用水印图的内部结构设计防篡改方案。
JasvirNagra和ClarkThomborson提出利用并发控制的多线程将水印隐藏在线程执行轨迹中的动态路径方案㈣,虽然有较好的隐蔽性和抗攻击能力,但数据率低下是其主要缺陷。
对软件水印系统的性能评价是在假设的攻击模型下进行的叫。
软件水印系统可能遭到以下攻击:
(1)追加攻击;
(2)移去攻击;(3)变形攻击;(4)识别攻击;(5)共谋攻击。
水印系统的安全强度通常是数据率、隐蔽性和鲁棒性的折衷:
高的数据率往往意味着低的隐蔽性和鲁棒性;而通过信息冗余提高鲁棒性又意味着隐蔽性的降低。
指望一种水印方案抵抗所有类型的攻击是不现实的,往往需要同时使用多种软件保护技术才能获得需要的安全强度。
4软件迷乱
除了软件盗版,软件还可能面临以下几类攻击:
(1)逆向工程:
攻击者可能全部或部分地对软件实施逆向工程,还原核心算法或关键数据并移植到自己的软件中,这也属于盗版行为。
对于熟练的软件工程师而言,只要保证足够的时间和资源,逆向工程总是可以成功的;抵抗逆向工程的主要措施是增加攻击难度,使攻击者在能够接受的时间和资源限制内无法成功实施攻击
(2)反编译/再编译:
很多编译器有一定程度的优化功能,而优化也可认为是一种保持语义的变换。
对程序反编译后用其他编译器再编译,可能会破坏嵌入的水印。
(3)模式匹配:
攻击者无法精确分析程序的行为时,可能会用最接近的结果与程序中的调用、函数或执行结果相匹配,如果不会引起程序在可见行为上的明显改变时,就可实施进一步的攻击。
针对逆向工程攻击,软件所有者可通过迷乱变犊技术增加软件的复杂度,从而使逆向工程更加困难。
软件迷乱技术是对程序中的数据、代码或控制流等实施保持语义的变换,得到与原程序功能等价、形式更为复杂的程序⑫。
软件迷乱技术在软件水印的构造方面也有所竹为。
利用控制流迷乱变换构造不透明分支,将水印代码嵌入在虚构的不透明分支下,形成动态数据结构水印;也可将水印嵌入在多个虚构的不透明分支的执行序列中,形成动态执行路径水印。
软件迷乱技术在软件水印保护方面的作用是双向的:
在无法准确定位水印的情况下,攻击者可对整个程序实施保持语义的迷乱变换攻击,导致水印无法提取或提取的水印不具版权保护价值;而软件所有者又可利用迷乱变换技术增加程序的复杂度,使反编译/再编译攻击难以实施,从而保护嵌入的水印信息。
目前较为常见的是ChristianCollberg等提出的通过构造不透明分支实现控制流迷乱变换的方案国。
该方案具有明显的优势:
(1)以多种方式构造不透明分支,额外开销小;
(2)与程序正常的分支结构类似,隐蔽性好;(3)分支结构是程序唯一性的体现,修改分支结构而保持程序的语义是不容易的,故具有较强的鲁棒性。
5软件防篡改
防软件盗版的技术手段是利用软件水印隐藏版权信息,当发生版权纠纷时能够向权威的仲裁机构提供证据以证明版权;防逆向工程的技术手段是对程序实施保持语义的迷乱变换,增加逆向工程难度的同时也增强软件水印的鲁棒性,使水印难以被移去从而增强水印的版权证明能力。
除此之外,破坏水印功能、获取敏感信息以及实施病毒攻击的恶意篡改也是软件面临的威胁之一。
钉对此类攻击,软件防篡改技术的基本思想是:
(1)增加
软件或水印被篡改的难度;
(2)一旦被篡改能够即时感知并终止程序的运行,使盗版行为难以为继;(3)确认发生篡改则启动纠错方案提取水印,确保水印的版权证明能力。
可采用以下方法进行篡改识别:
(1)比较原始软件和当前软件:
用相同的哈希算法(例如MD5.SHA-1等)分别计算原始软件与当前软件的等价结果,比较两个计算结果是否相同;
(2)比较运行结果:
选取原始软件和当前软件有代表性的运行结果进行比较;
(3)对软件的关键模块加密:
需要时在堆中解密执行,一旦加密模块被破解,则使软件进入故障模式而丧失部分或全部功能。
Home提出的防篡改方案在程序中嵌入多个检测方法,每个方法检测一部分代码的完整性俱该方案增大了系统的信息炳,使攻击者很难去除整个检测功能。
Holmes提出在静态水印中包含校验和的防篡改措施,这样,一次有效的攻击必须经过两步:
修改水印、修改校验和的。
如果攻击者掌握校验和算法,第二步很容易做到,故防篡改能力十分有限。
Moskowitz和Cooperman提出把水印代码嵌入到程序的特殊资源例如图像中,这段代码随机地被提取并执行,一旦该图像被篡改立即终止程序的运行以此达到防篡改的目的㈤。
但这种凭空产生和执行代码的行为是不寻常的,容易引起攻击者的注意。
ClarkThomborson等针对动态图水印提出称为常量编码的防篡改方案,即将程序中的部分常量置换为其值依赖于指向水印图的指针变量的函数;当水印被移去或修改时,函数值会随之改变而使被编码的常量值改变,最终导致程序错误或终止⑰。
6软件加壳
壳是软件中专门负责保护软件不被非法修改成反编译的程序,先于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 保护 技术 概述