[发明专利]一种保护Java软件程序的方法有效
| 申请号: | 200910082624.1 | 申请日: | 2009-04-21 |
| 公开(公告)号: | CN101872404A | 公开(公告)日: | 2010-10-27 |
| 发明(设计)人: | 王炳强;杨木祥;王鹏;邢建兵;李瑞林;姚俊武 | 申请(专利权)人: | 普天信息技术研究院有限公司 |
| 主分类号: | G06F21/22 | 分类号: | G06F21/22 |
| 代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 王一斌;王琦 |
| 地址: | 100080 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 保护 java 软件 程序 方法 | ||
技术领域
本发明涉及软件保护技术领域,特别涉及一种保护Java软件程序的方法。
背景技术
当代码随同产品一同提供给用户时,软件版权保护的方法和采用的技术决定了企业的知识产权是否能够得到有效的保护。
Java语言是一种解释型语言。Java源代码经过编译,生成字节码文件,所生成的字节码文件在Java虚拟机(JVM)中解释执行。这种解释执行的运行机制导致Java源代码很容易被反编译。目前这种反编译工具很多,并且反编译的效果也很好,使得任何使用Java软件的用户都可以很容易地反编译和重构产品的源代码,从而使所有基于Java语言的授权认证许可变得毫无意义。
因此,保证Java软件程序不被反编译和重构或者提高反编译和重构的难度,是基于Java语言的软件版权保护领域需要解决的一个重要问题。
目前对软件进行版权保护的方式大多是基于网络的客户端-服务器模式,即:通过客户端与网络中的服务器进行通信,来验证客户端的有效性。但是,这种方式在软件随同产品一同发布时,就不再有效。
智能密钥装置被广泛应用于软件保护技术领域。目前,基于智能密钥装置进行软件程序保护的方法主要有两种:
一种方法是结合智能密钥装置生产商所提供的应用程序接口(API)改造软件程序的功能,在源代码中嵌入对智能密钥装置的访问,使字节码的软件程序与智能密钥装置中的数据或算法绑定。在软件程序运行期间,尽可能地使软件程序的重要模块脱离智能密钥装置后就无法正常运行,这样即使存放在硬盘上的程序文件及数据文件被复制了,只要智能密钥装置没被复制,那么由于软件程序运行时仍需要智能密钥装置参与,因而软件程序也就无法被盗版。该方法的缺点是:需要非常专业的开发人员来实施软件程序的开发,导致开发周期长,并且,保护强度的可控性较低,保护强度受限于开发人员的经验。
另一种方法是利用智能密钥装置生产厂商所提供的工具软件直接对开发环境所生成的程序文件进行操作,从而使这个程序文件结合了保护功能模块,即外壳加密。外壳加密主要是指对一个依据由编译器所生成的含有指令码的程序文件的结构进行改造,使另一个或多个含有指令码的二进制文件片段能顺利地与这个文件相结合,形成一个新的程序文件。外壳加密的缺点是:同一外壳加密工具所保护的不同应用软件的破解过程存在相似性,被保护的内容会在计算机内存中重现。程序代码与后期外壳加密工具插入代码联系较为松散,理论上都可以进行分离并最终破解。
可见,现有保护Java软件程序的方法的保护强度较低,无法为Java软件程序提供有效的版权保护。
发明内容
有鉴于此,本发明的主要目的在于提供一种保护Java软件程序的方法,以提高对Java软件程序的保护强度,实现有效的软件版权保护。
为达到上述目的,本发明的技术方案具体是这样实现的:
一种保护Java软件程序的方法,包括:
A、采用对称加密算法将Java软件程序中需要保护的类文件用密钥K进行加密,得到所述类文件的密文;
B、采用非对称加密算法将所述密钥K用智能密钥装置的公钥PK进行加密,得到所述密钥K的密文K’;
C、将所述类文件的密文和所述密钥K的密文K’存入所述智能密钥装置中;
D、将不包含所述需要保护的类文件的Java软件程序与所述智能密钥装置一同提供给用户使用。
用户使用所述Java软件程序和智能密钥装置的方式可以包括:将所述智能密钥装置连接到终端上,并在所述终端上运行所述Java软件程序。
进一步地,在所述Java软件程序的运行过程中,当需要调用所述类文件时,该方法可以包括:
E、向所述智能密钥装置发送加载类文件命令;
F、所述智能密钥装置执行解密函数,用所述智能密钥装置的私钥SK对所述密文K’进行解密得到密钥K,并用得到的密钥K对所述类文件的密文进行解密得到所述类文件;
G、所述智能密钥装置将所述类文件以流的形式返回给所述终端的系统内存;
H、Java虚拟机动态加载所述系统内存中的类文件。
较佳地,在所述智能密钥装置执行解密函数之前,可以进一步包括验证操作,所述验证操作可以包括:
所述终端所在局域网中的服务器向所述终端发出验证用户证书的命令,所述智能密钥装置验证用户的证书是否有效,如果无效,向所述服务器返回验证失败,如果有效,继续执行所述解密函数。
该方法可以进一步包括Java软件程序升级操作,所述Java软件程序升级操作可以包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于普天信息技术研究院有限公司,未经普天信息技术研究院有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910082624.1/2.html,转载请声明来源钻瓜专利网。





