基于密钥管理Java软件保护技术研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于密钥管理Java软件保护技术研究

基于密钥管理Java软件保护技术研究   摘 要:Java软件在知识产权的保护上面临着很大的安全风险,Java软件保护是一个亟需解决的课题。在深入研究Java类文件加载机制的基础上,结合密码学中加密体制、密钥管理等技术提出了一种新的Java软件保护方案-加密类文件保护方案。   关键词:Java 软件保护;密钥管理   Java软件保护是目前业界,尤其是很多大公司非常关注的一个课题,因为许多大型的工业、医疗等设备的实时应用软件都是采用Java开发的,而Java类文件本身固有的特性给攻击者提供了反编译的机会,一旦这些软件被破解,将给设备商带来不可估量的损失。用加密的方法来保护Java类文件,加密可以有效地对抗反编译,加密系统的关键问题是如何安全有效地管理密钥。   一、软件保护技术的应用与不足   在对Java体制和Java类文件深入分析研究的基础上,人们从不同的角度出发,提出了多种保护技术,这些保护技术在一定程度上起到了保护Java类文件的作用,但是都存在各自的缺点和不足。将本地化技术应用在Java软件保护上,可以收到很好的效果,但是也存在明显的问题,本地化技术是以丧失Java的跨平台性为代价的,而这恰恰是Java广受欢迎的重要原因。数字水印技术目前被广泛的应用,但是数字水印技术不是一种主动的防御技术,而是一种被动的取证技术,只能在侵权行为己经发生,攻击者己经成功获得代码,为证明产权的归属提供证据时发挥作用,而不能从根本上用技术手段防止侵权行为的发生。代码混淆技术是目前应用最广泛、研究最多的一种技术手段,混淆使用的是类文件模糊技术,通过使用各种手段模糊代码的语义信息、打乱程序的执行流程,从而达到降低反编译代码可读性的目的,但是混淆的前提是不能对程序的外部功能表现有任何的影响,在重构技术日趋成熟的今天,只要有足够的耐心,这些混淆了的代码仍然是可以被反编译出来并且能够被读懂的。   二、密钥保护的可行性分析   在Java软件保护中,需要保护的内容是体现软件价值的创新之处和核心算法,这些都包含在不同的类文件中,如果能够确保核心类文件的内容不被攻击者获得就可以确保Java软件的安全性。利用密码技术,可以将敏感信息加密并通过一种并不安全的途径传递。这样,只有拥有密钥的收件人或终端才能解读原始信息。加密技术是一种数据安全的科学,要完成信息加密需要一种加密算法和一个密钥。加密的安全性取决于加密算法的强度和密钥的保密性。现代密码理论和应用实践证明,使用高级加密算法如:DES、AES等算法加密文件,在攻击者唯密文攻击的情况下,加密文件具有极高的安全性,即在加密机、解密机受到良好保护不被攻击者获得的情况下,可以确保加密文件具有相当的安全性。而对类文件进行加密的方法来保护类文件,能够实现保护Java软件的目的。   三、软件保护技术的方案与实现   在Java软件保护技术中,密钥是整个系统的关键,而攻击者对系统的攻击通常也从对密钥的攻击入手。对软件系统密钥攻击的常见方法是跟踪软件的执行流程,通过对软件解密流程的分析来探测密钥的存放位置,而密钥通常会存放在相对固定的位置上,这样跟踪者在多次跟踪后,就比较容易确定密钥的位置。   1、Java的类加载机制   Java语言编译器把源代码转换为虚拟机上的机器语言,产生的虚拟机代码存储在扩展名为class的类文件中。执行时,虚拟机解释程序解释这些类文件,把虚拟机上的指令序列翻译成目标机器的机器语言。在Java虚拟机中,各个Class Loader对象是按层次结构组织的,除了最顶层的Bootstrap Class Loader以外,每一个Class Loader对象都有一个Parent Class Loader。这种父子层次结构的组织关系是建立在调用关系的基础上,而不是建立在各个Class Loader类的继承关系上。虚拟机除了装载某个特定程序需要的类外,还必须装载系统类(System Class)。虚拟机知道如何利用引导类装载器Bootstrap Classloader装载系统类(例如从JAR文件rt.jar中读取),Bootstrap Classloader是虚拟机的一个重要组成部分,它通常是用C语言实现的。我们无法控制系统类的装载过程,但是可以用定制类装载器装载应用程序类。   2、定制启动程序   对单机应用程序而言,Decrypt ClassLoader类是在定制的启动程序中被使用并创建对象的,启动程序首先用Deerypt ClassLoader对象来载入并解密应用程序的 MainClass,应用程序中所有其他的类都是被 MainClass直接或间接的引用,因而这些被引用的类都会采用Deerypt ClassLoader来载入并解密。这里的启动程序是一个BootAppl

文档评论(0)

erterye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档