如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
JavaWeb应用软件保护方法研究摘要:Java语言在Web应用软件领域得到了广泛的应用。由于跨平台需求和动态连接特性,使Java类文件很容易被反编译。对传统的Java类文件保护方法进行分析,在代码混淆加密技术的基础上,提出了一种纯Java技术的代码授权方法。该方法保持了Java技术的跨平台特性,提升了Java类文件的安全性。实践结果表明,该方法是简单有效的。关键词:Java;软件保护;代码混淆;软件授权1代码混淆概述目前针对Java源文件方法主要有以下几种方法:本地编译技术、数字水印技术、ClassLoader加密技术以及代码混淆技术。Java本地编译是指将Java应用程序编译成本地应用程序,如Windows平台下名为exe的应用程序。通过java虚拟机将由源代码生成Java类文件,再将类文件编译成可执行文件。用该技术生成的本地应用程序是二进制格式的可执行文件,但该方法牺牲了Java的跨平台特性,对于桌面应用程序的开发问题不大,但对于web应用程序的开发,则是一个致命缺陷。同时该方法技术层面还存在不成熟,支持不完善的问题,不适合采用。ClassLoader的基本目标是对类的请求提供服务。当JVM需要使用类时,它根据名称向ClassLoader请求这个类,然后ClassLoader试图返回一个表示这个类的Class对象。通过覆盖对应于这个过程不同阶段的方法,可以创建定制的ClassLoader。在装入原始数据后先进行解密,然后再转换成Class对象。由于把原始字节码转换成Class对象的过程完全由系统负责,因此只需先获得原始数据,接着就可以进行包含解密在内的任何转换。这种方案比其他方案更加安全,然而这种加密方法存在一个漏洞,由于ClassLoader的类是用Java编写的,如果对ClassLoader类进行反编译,提取其中解密算法,就可解密所有被加密的其他类。数字水印技术是将一些标识信息(即数字水印)直接嵌入数字载体(包括多媒体、文档、软件等)当中,但不影响原载体的使用价值,也不容易被人的知觉系统觉察或注意到。通过这些隐藏在载体中的信息,可以达到确认内容创建者、购买者、传送隐秘信息或者判断载体是否被篡改等目的。在需要证明程序是否非法使用时,数字水印就变得很重要。使用水印技术并不能阻止类文件被反编译,但是可以在需要确认某些程序是否属于剽窃时提供有效证据。它可以有效地保证开发者对该程序的版权。然而数字水印技术只是一种被动防御技术,只能在侵权已经发生后,为证明产权的归属提供证据时发挥作用,而不能从根本上防止侵权行为的发生。代码混淆是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。代码混淆技术是目前比较成熟和流行的Java类文件保护方法,其本质上是类文件模糊技术。处理以后的类文件功能和处理以前的类文件功能在逻辑上是等同的,即运行后能够得到一样的输出结果。Java因其具有跨平台性、开放性和高度成熟等特性得到了广泛应用。目前的应用主要是Web应用程序。Web应用程序常以War包的方式发布。对这些封装包最常见的保护方法是代码混淆技术。一些专业代码混淆工具的效果已经非常成熟,如:ProGuard、JavaGuard、RetroGuard等,合理使用这些工具就可以对自己的产品起到很好的保护作用。使用代码混淆工具,操作简单便捷,能让开发团队专注业务的开发。被混淆的代码难于理解,因此调试除错也变得困难起来。开发人员通常需要保留原始的未混淆的代码用于调试。代码混淆并不能真正阻止反向工程,只能增大其难度。因此,对于对安全性要求很高的场合,需要配合使用软件授权机制保证源代码的安全。2软件授权设计与实现2.1授权方法选取一般商用软件的授权方式分为3种:序列号、联网认证、授权码。序列号方式是最常见的软件授权方式,也为绝大多数商用软件所采用,它的安全性最低,最容易盗版,但这类软件大多为通用型软件,有广大的用户群,厂商依然能获得足够的利润。多为桌面系统软件所采用。联网认证则是随着互联网的飞速发展,而出现的新型软件授权方式,已经在Microsoft和Adobe等厂商的产品中得到广泛应用,首先要开发一个客户端验证软件,其次还要架设专门的提供验证授权服务的网站,从技术成本和资金成本上来讲,都不适合中小软件公司;也不适用于专用性较强,用户群较小的软件。在完成软件开发后,如果不想被盗版,可以采用授权码的方式