代码混淆技术及其在软件安全保护中的应用研究

代码混淆技术及其在软件安全保护中的应用研究

ID:34463901

大小:554.00 KB

页数:49页

时间:2019-03-06

代码混淆技术及其在软件安全保护中的应用研究_第1页
代码混淆技术及其在软件安全保护中的应用研究_第2页
代码混淆技术及其在软件安全保护中的应用研究_第3页
代码混淆技术及其在软件安全保护中的应用研究_第4页
代码混淆技术及其在软件安全保护中的应用研究_第5页
资源描述:

《代码混淆技术及其在软件安全保护中的应用研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、将一个版本的软件通过不同的标识创建出许多个不同的版本。这样可以方便的控制软件的数量。不同的软件指纹享有唯一性,所以一旦发现某一个指纹出现了多个相同拷贝,就可以通过打补丁或者升级的方式终止此指纹的软件。软件水印是软件数字水印的简称,它也可以看作是数字水印的一种,只是水印信息的载体为软件程序。软件水印主要用来保护计算机软件产品的版权,可以用来标识软件产品作者、发行商、所有者、使用者等,并携带有版权保护信息和身份认证信息,可以鉴别非法复制和盗用的软件产品。软件水印保护的代码既可以是源代码也可以是机器代码,使得它们避免

2、或者尽可能少遭受非法拷贝和非法篡改的威胁。软件指纹和软件水印技术采取的是被动防御的方式,将水印和指纹作为软件篡改和盗版事件发生后的一种证据,并通过法律的手段进行时候追踪和追究责任,只能在受到损失后的一种补偿技术,不能做到主动防御。代码混淆技术是一种新兴的软件安全保护技术。与其它软件安全技术相比,代码混淆技术具有以下优点。(1)代码混淆技术实现相对比较容易,安全保护的代价也比较低。代码混淆技术是一种完全由软件来实现的技术,混淆算法对程序的变换只需要一次就能够完成,即使多次发布该程序也不需要再次变换。这使得代码混淆

3、技术的使用十分经济,不会给应用程序带来太大的额外开销。(2)代码混淆技术安全性能很好。代码混淆技术是通过软件的方法对程序的流程结构及程序中的数据关系进行变换。这种变换不会破坏原程序的语法及语义规则,只是使得代码分析的精确度降低或者复杂度增加,因此仅从代码表面看不出程序己经由代码混淆技术进行变换。如果软件攻击不知道这种变换的存在,则会直接对混淆代码进行代码分析,并以该分析结果作为软件攻击的依据,则会使得软件篡改所需的开销大得让人无法接受,或者因为采用的各种信息精确度太低而无法正确还原原程序。(3)对代码混淆技术的

4、攻击比较困难。对混淆后代码到原代码的逆向变换必须对代码进行程序分析。对应用了代码混淆技术的程序分析是NP完全问题或者是指数级的难题,从而逆向变换也是NP完全问题。2(4)代码混淆技术是一种事前保护的技术。许多软件安全保护技术都是通过检查代理携带的事件日志或者其参考状态来检测是否存在对软件的篡改攻击,因此当它检测出这种攻击时,往往攻击己经发生,也就是说己经造成了对软件安全的危害,有时候损失是无法挽回的。因此更好的安全技术是在攻击发生之前就阻止它。代码混淆技术就是通过阻碍程序分析而阻碍对软件代码有目的的篡改,它对保

5、护软件安全更加有效。以上这些优势使得代码混淆技术成为目前被广泛研究以及应用的软件安全保护技术1.2国内外研究现状代码混淆技术是上世纪90年代末兴起的一种软件安全保护技术。它的基本保护方法就是利用代码混淆算法对软件的代码部分进行变换,使得对变换后的混淆代码的分析难度增加,从而阻止对软件的的攻击。第一次对代码混淆技术进行系统的研究开始于上世纪90年代末,Java语言的迅速发展引起了对混淆技术的研究热潮。这是因为Java目标代码,字节码很容易被反编译为Java源代码,而代码混淆技术的优势使得它很适合于Java程序的安

6、全保护[2]。Collberg最先对代码混淆技术进行了详细的介绍与分析,对主要的混淆算法进行了总结和分类,也首次提出了混淆算法的有效性与性能的评价标准等等相关概念[3]。他将混淆转换分为四类,词法混淆转换、控制混淆转换、数据混淆转换以及预防性混淆转换。词法混淆转换目的是改变源程序的格式信息,包括混乱变量名、去除注释以及改变程序文本格式;控制流混淆转换包括增加混淆控制分支以及控制流重组;数据混淆转换包括存储与编码转换、聚集转换(将多个变量或对象组织在一起)、次序转换。预防性混淆转换被设计为使用添加别名等方法抵抗反

7、混淆器的攻击[4]。文中提出的混淆转换算法普遍适用于高级语言。但是未涉及实现细节。ChenxiWang实现了在C语言源代码上的若干种控制混淆转换与数据混淆转换[5]。在系统中实现了控制流整合算法以及间接控制流跳转,来防止静态分析。Wang还给出了混淆转换造成的性能过载以及混淆转换对静态分析工具IBMNPICtool以及3RutgerPAFtoolkit的有效性[6]。Hohl提出了用带有时间限制的黑盒方法来保护移动代理[8]。这里的黑盒就是指混淆转换过的代理程序。对移动代理进行逆向工程,发现或修改软件中的关键信

8、息需要一定的时间,据此在派发移动代理之前,对其进行混淆转换能有效限制移动代理在目的主机上运行的时间,增加逆向工程的代价,从而延长在目的主机上的运行时间。包括移动代理在内的程序都可能受到黑盒测试攻击。Hohl提出了一个协议用来检测移动代理的运行[9]。另外,提出了针对可执行代码和汇编指令的混淆技术。Collberg关于代码混淆技术研究的理论基础来源于软件复杂度理论,其中关于混淆算法复杂度

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。