软件防篡改技术综述
作者:尤作琴
来源:《中国新技术新产品》2013年第18期
摘 要:本文对动态以及静态的防篡改进行进行了重点介绍,并对现有防篡改技术予以分类,同时对各种方式的局限性和优劣进行了讨论和分析,最后面对防篡改领域现存的问题进行了总结,同时对其未来研究和发展方向提出了相应建议。 关键词:软件;防篡改技术;分析 中图分类号:TP31 文献标识码:A
伴随软件应用范围的扩展,软件的安全性问题也变得愈发突出。设计出具有时效性的软件保护方案所具备的现实意义重大。最近几年,作为软件保护非常重要的手段,防篡改技术已经引起了研究者广泛的重视。阻止程序关键信息被非法使用或修改是软件防篡改目标之一,其另一目标便是对篡改予以检测,同时做出回应。 1 现有的防篡改技术 1.1 动态防篡改技术 (1)完整性表示
程序的未遭破坏指标是用完整性来表示的。程序完整性表示是从程序中提取的。它作为防篡改技术检测的基础,其意义重大。目前,防篡改技术包含的完整性表示包含如下内容:校验和:运行程序之前,通过报文摘要方式计算程序,同时用此结果进行程序完整性的标识。Hash 值:将Hash函数应用在程序运行中间值以及代码片段上,同时用计算结果来表示完整性。数字签名:完整性表示采用代码块数字签名。 (2)动态防篡改不完善技术
建立在多块加密思维基础上的防篡改技术方案通过自我解密和自我修改,在保护程序里面嵌入验证模块,并执行如下任务:对程序完整性进行验证,也就是对代码块预存值和数字签名进行验证,并确保这两者维持一致性;同其他通信相协作,进而使防篡改机制力度得以加强。 (3)动态防篡改完善
实际上,相应机制和检测机制之间的关系是非常密切的,它们都是防篡改技术里面重要的构成成分。就算检测机制健全,如若没有强大的相应机制,那么整个防篡改机制也就是没有功效的。建立在多点设置基础上的防篡改技术,通过对哨兵单元加以利用,进而达到保护程序的
龙源期刊网 http://www.qikan.com.cn
目的。按照需求的不同可设置多种哨兵,下面为常见的两种哨兵:修复代码:此种哨兵可使程序具备自我修复能力。在代码完成性遭受破坏之后,哨兵会负责对篡改代码进行修复,使之恢复原状并正常运行,在保护程序里面嵌入众多哨兵,从而形成一个哨兵团。
求代码的校验和:此种哨兵能使程序具备自我感应功能,在程序运行中对程序完整性以及保护代码校验进行计算。 1.2 静态防篡改技术
通过变换代码使程序的静态分析增大分析难度,从而对攻击人员进行逆向攻击来提取核心代码加以阻止。现如今,静态防篡改技术分为控制流混淆、数据混淆、词法混淆、预防混淆等,而前三种混淆技术经由对程序中节本元素进行修改来提升程序静态分析的难度,更加关注的是人工攻击,而预防混淆更为关注的则是工具的攻击。词法混淆主要用于对程序词法结构进行修改,其中最主要的方式便是对标识符名称进行修改,把程序里面的域名、方法名、类名转换成没有意义的标识符,从而让攻击人员不能从词法上对其功能进行判断。数据混淆主要作用在于对程序数据元素加以修改,修改的内容包括数组、变量、常量及别的数据结构。控制流混淆主要对程序控制流程加以修改。预防混淆的目的在于使软件逆向分析程序的难度增大,又或者按照特定方式,采取相应预防对策。 2 防篡改技术的应用
2.1 保护商用软件的访问控制机制
商用软件属于付费软件,对软件供应商而言,确保使用者通过合理途径来使用软件能对其利益起到保障作用。当发布软件里包含访问控制模块之时,它就可能被篡改,进而造成软件访问控制机制失去效应。可采取防篡改技术使其保护力度加大,例如采用隐式或者校验形式来检测访问机制代码是否被篡改;对多块加密形式加以利用,进而用于保护访问控制机制的代码。 2.2 保护Java应用程序
Java程序非常容易被攻击或破解,为对其进行保护,避免程序被非法复用或修改,可在Java程序里面使用隐式Hash防篡改方案,也可使用对手机端的Java字节码框架予以保护。 2.3 在数字版权管理系统中应用
在具有数字版权管理系统中防篡改技术得到广泛使用,在这类应用中,内容提供商将编码数字内容传给不可信设备。这类设备的软件运行环境无法被内容提供商所控制。这个时候,系统安全问题便在怎样避免攻击者的反汇编或非法获取解码之后的数字内容。而在DRM中最常用的防篡改方式便是防止屏幕捕获、代码加密、代码混淆等。 3 防篡改程序应用实例
龙源期刊网 http://www.qikan.com.cn
3.1 东模块加载模式
此种模式可将二进制代码分成几部分,我们可以不处理第一个程序,将其哈希值作为下个模块的开启钥匙,而将第二个程序的希哈值作为第三个模块的开启钥匙,以此类推,实行多重加密形式。通过对逐层加密形式加以利用,能使盗用以及篡改程序的行为得到有效防治。 3.2 软件卫士的检查机制,此种机制具备自我修复和全面检查性的能力。
此种篡改形式通过将单元卫士层序安插在程序中,让其形成一个信息网站,同时在检查出破坏和篡改行为之后使程序终止,从而达到防止篡改的目的;当防卫卫士发挥其作用时,修复卫士则负责检查程序的完整性,如果发现程序出现损毁或者缺失,要立刻将之修复。上述两个程序的关系是非常紧密的,下个卫士会对上个卫士进行检查,当卫士程序遭受攻击时,其余卫士层序便能立刻做出响应,同时将植物卫士放在不显眼位置,如此一来,在发生篡改行为时,便不太容易发现卫士,如此便能使防范功效得到增强。除此之外,要确保防范卫士不具备过强的攻击响应机制,需在对篡改源加以确定之后,在程序环境稳定的状况下再进行攻击。 结语
作为软件保护极为有效的一种手段,文章对现有防篡改技术及其方法进行了大致介绍,并就其优点和缺点进行了大致分析。篡改技术不同,则其应用场景也会相应有所不同,针对不同问题要进行具体分析。与此同时,同其他软件保护相关技术结合能使防篡改技术保护软件的能力得到增强。 参考文献
[1]王朝坤,付军宁,王建民,等.软件防篡改技术综述[J].计算机研究与发展,2011,48. [2]余艳玮,赵亚鑫.基于三线程保护和软件哨兵的防篡改技术[J].计算机应用,2013,33.
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务