● 摘要
白盒攻击环境和逆向工程的产生和发展,对软件的安全性造成了巨大的威胁,攻击者可以借助各种技术手段轻易获取软件内部信息,其中源程序的实现代码信息往往是攻击者最为关注的。如何能够有效保护软件代码信息,以抵抗各种已知攻击手段,是本课题研究的主要内容。
针对现有混淆系统或算法不开源或者即使开源也不能达到很好的混淆保护作用的现状,本文着眼于软件代码,重点针对其中的加密算法代码和java字节码代码两个方面,结合混淆法进行等价混淆变换,研究、设计并实现相应的保护系统,达到混淆效果优于现有各混淆保护系统的目的。本文创新性地提出并实现了AES(Advanced Encryption Standard,高级加密标准)和Clefia加密算法的抗白盒攻击代码混淆保护系统,并针对java字节码格式的源代码进行了全方位多混淆算法结合的混淆。在系统实现时重点解决了以下几个关键问题:1.在保护加密算法程序代码时,如何将密钥信息隐藏在程序的动态执行过程中而不暴露;2.在保护字节码代码时,如何设计混淆算法,以增强混淆效果。为解决第一个问题,本文采用查找表的思路,将加密算法按轮划分并根据密钥生成查找表,将加密过程转化为一系列等价查找表的查找过程,并采取输入输出编码和置乱编码的手段保护查找表;解决第二个问题的主要思路是,设计多种混淆算法针对代码中的不同对象进行多角度混淆以增强混淆效果,主要包括重命名混淆,控制流混淆,字符串加密混淆,调试信息混淆以及API(Application Programming Interface,应用程序编程接口)调用隐藏混淆等,结合这些侧重点不同的混淆算法实现代码保护。
目前,该课题研究内容已开发完成,经过测试评估并投入使用,其抗白盒的加密算法代码保护部分,现有阶段的计算机无法通过蛮力攻击破解,而java字节码代码保护部分,经样本测试,将程序的指令复杂度提升到了200% 以上,对各种已知攻击和反编译工具具有良好的抵抗效果。
相关内容
相关标签