Java软件保护技术的应用与不足探析
作者:李梦涛
来源:《电子世界》2013年第06期
作者:李梦涛
来源:《电子世界》2013年第06期
【摘要】Java以其简单性、跨平台性等各种优秀特性赢得许多著名公司的青睐,但Java软件在知识产权的保护上也面临着很大的安全风险。通过分析Java软件面临的风险,对本地化技术、远程接口访问技术、软件数字水印技术以及混淆技术等软件保护技术的用途和不足进行了简要的分析。
【关键词】Java软件保护;混淆技术;数字水印技术
1.Java软件面临的风险
在Java的编译过程中不将变量和方法等符号的引用转换为数值引用,也不确定程序执行过程中的内存状态,只是将这些符号的引用信息保留在类文件中,由解释器在运行过程中创建内存布局,然后再通过查表来确定一个变量或方法所在的地址。Java源代码不像C/C++源代码一样被编译成二进制机器码,编译Java源代码会生成中间字节码,是一种与
平台无关的源代码的表示方式。字节码在加载后可以被解释或编译,这就产生了高级编程语言到底层机器代码之间的两步变换。是这一中间步骤使得反编译Java字节码得到的源代码近乎完美。字节码携带了在源文件中可以到的所有重要信息。尽管注释和格式丢失了,但所有的方法、变量和编程逻辑都完好的保留下来,由于字节码不表示最底层机器语言,因此代码的格式非常类似于源代码。
Java类文件不是真正的二进制文件,而是一种有格式的中间代码,这就给反编译Java类文件提供了可能。反编译得出的代码具有很高的质量,基本上可以完全反映编写者的思路,这样一来,软件开发商和软件开发人员投入大量精力和艰苦努力编写的源代码就很容易被黑客窃取,软件中包含的重要算法也会泄露出去。因此Java应用程序也就毫无保密性可言,Java软件在知识产权的保护上面临着很大的安全风险。
2.Java软件保护技术研究
目前的Java软件的保护方法大多是基于单机应用的研究,传统的Java软件保护方法主要有本地化技术、远程接口访问技术、软件数字水印技术以及混淆技术,其中软件数字水印技术和混淆技术是目前研究、应用较多,受到广泛关注的技术。
2.1 本地化技术
Java本地化,是指通过将Java应用程序编译成本地应用程序来达到增加反编译的难度,实现软件保护的方法。实现步骤如下:首先编写Java源代码,然后通过Java编译器将Javajava源代码加密源代码编译成Java类文件,最后使用本地编译工具将Java类文件编译成二进制的本机应用程序。本地化技术虽然能够很好的保护Java类文件,使其达到与传统的用C/C++等语言开发的软件一样的安全强度,但也存在一些问题:本地化技术能够为较简单的单户机应用软件提供较高水平的保护,其反编译的难度与传统的C/C++开发的软件相同,但还无法对复杂的应用软件提供全面的保护,也无法保护B/S结构的应用软件,此外,要准确的诊断和定位本机编译产生的Java应用程序中出现的问题也是十分困难。虽然目前发展还很不成熟,但却是Java领域一项广受关注的技术。实践和理论己经证明,对于某些应用软件和使用环境,本地化技术不失为一种优秀的解决方案。
2.2 远程接口访问技术
分布式结构是现代软件开发中广泛采用的一种体系结构,通常将软件分为客户端和服务器端,核心的功能模块和业务流程都部署在服务器端为客户端提供服务,客户端负责采
集数据、提交服务请求和与服务器端通信,这种体系结构的采用可以提高系统的可移植性和互操作性,大幅度降低软件的开发成本。远程接口访问技术能有效地保护关键的Java类文件,从而达到软件保护的目的。但是这种方式也存在着明显的局限性和很大的安全隐患:远程接口访问技术实际上是将保护的焦点从关键的类文件转移到了应用服务器上。在这种体系结构下,制定完善的安全机制来保护端口至关重要,因为如果应用服务器被攻破,那么所有部署在服务器上的服务模块和类文件就完全暴露在攻击者面前,后果不堪设想。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论