论文部分内容阅读
随着计算机技术的不断发展和进步,计算机软件在各行业、领域发挥着日益重要的作用,已经深刻地改变了人们传统的工作和生活方式。计算机软件是凝结开发人员智慧的技术密集型产品,具有极高的价值,一旦被盗版者或者竞争对手通过不正当的手段得到,将给软件开发商和开发人员带来巨大的损失。Java以其简单性、跨平台性等各种优秀特性赢得许多著名公司的青睐,彻底改变了应用软件的开发模式,带来了软件开发的一次革命,在软件开发的各个领域得到了大量的应用。Java跨平台的灵活性源于独特的编译方式,Java源代码经编译后,生成的不是面向处理器的二进制文件而是面向虚拟机的Java类文件。类文件是一种有格式的中间代码,其中保留了源代码文件中的大多数信息,为反编译Java类文件提供了条件。反编译得出的代码具有很高的质量,基本上可以完全反映编写者的思路,因此,Java软件在知识产权的保护上面临着很大的安全风险。近年来,许多公司和Java开发人员在深入研究Jaya类文件和虚拟机的基础上,研究开发了多种方法来保护Java类文件,这些方法包括:本地化技术、代码隔离技术、数字水印技术以及代码混淆技术。这些保护方法,在一定的程度上可以起到保护Java软件的作用,但是它们各自都存在明显的局限性和缺陷。针对这种情况,本文从研究Java虚拟机的类加载机制入手,结合密码学中的加密体制、密钥分存、信息隐藏等技术,提出了一种新的Java软件保护方案——类文件加密保护方案,并将其实现为一款简单易用的工具。本方案设计的核心思想如下:(1)用加密的方法来保护Java类文件,加密可以有效地对抗反编译,加密系统的关键问题是如何安全有效地管理密钥,本方案创新性地将密钥分存技术和信息隐藏技术结合起来实现密钥的保护。(2)如何加载加密的类文件是本方案的另一个重要问题。Java技术在设计之初就考虑到应用环境的复杂性,因此允许用户根据Java规范定制类加载器,使用这些定制的Classloader可以完成特定的操作,比如从网络上下载类文件,验证类文件来源等,本文定制了一个Classloader来完成加密类文件的加载。(3)负责密钥提取和解密的具体算法不能被加密,否则又需要先将它们解密,由此将形成一个循环,而它们又是必须要加以保护的核心内容,本方案中,将它们用C++实现并编译为本地的动态链接库文件,这样可以有效地抵抗反编译,结合其他的可执行文件保护技术将获得更高的安全性。本方案具有很高的安全性,同时具有很好的通用性,不仅可以应用在单机应用软件上,也可以应用在网络应用软件上。与其它的保护方法相比,本方案可以在最大程度上保持软件的跨平台性。最后,本文将类文件加密保护方案实现为一款加密工具,使用非常简单方便,对测试数据的分析说明本系统具有较高效率。综上,本文为Java软件保护技术提出了一种新的思路,是一次非常有意义的探索和实践。