著录项信息
专利名称 | 一种保护Java软件程序的方法 |
申请号 | CN200910082624.1 | 申请日期 | 2009-04-21 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2010-10-27 | 公开/公告号 | CN101872404A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/22 | IPC分类号 | G;0;6;F;2;1;/;2;2查看分类表>
|
申请人 | 普天信息技术研究院有限公司 | 申请人地址 | 北京市海淀区海淀北二街6号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 普天信息技术有限公司 | 当前权利人 | 普天信息技术有限公司 |
发明人 | 王炳强;杨木祥;王鹏;邢建兵;李瑞林;姚俊武 |
代理机构 | 北京德琦知识产权代理有限公司 | 代理人 | 王一斌;王琦 |
摘要
本发明公开了一种保护Java软件程序的方法,该方法首先采用对称加密算法将Java软件程序中需要保护的类文件用密钥K进行加密,得到该类文件的密文,并采用非对称加密算法将该密钥K用智能密钥装置的公钥PK进行加密,得到该密钥K的密文K’,然后将该类文件的密文和该密钥K的密文K’存入智能密钥装置中;最后,将不包含该需要保护的类文件的Java软件程序与该智能密钥装置一同提供给用户使用。应用本发明能够提高对Java软件程序的保护强度,实现有效的软件版权保护。
1.一种保护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虚拟机动态加载所述系统内存中的类文件。
2.根据权利要求1所述的方法,其特征在于:
在所述智能密钥装置执行解密函数之前,进一步包括验证操作,所述验证操作包括:
所述终端所在局域网中的服务器向所述终端发出验证用户证书的命令,所述智能密钥装置验证用户的证书是否有效,如果无效,向所述服务器返回验证失败,如果有效,继续执行所述解密函数。
3.根据权利要求1或2所述的方法,其特征在于:
该方法进一步包括Java软件程序升级操作,所述Java软件程序升级操作包括:
通过所述终端登录到升级服务器,向所述升级服务器发送软件程序升级请求;所述升级服务器根据所述终端上的智能密钥装置的信息对相应的用户进行验证,如果验证结果表明所述用户为非法用户,向所述终端返回升级失败信息,否则,以预先存储的对应于所述用户的密钥K将升级后的需要保护的类文件用密钥K进行加密,得到所述升级后的需要保护的类文件的密文,并将所述密文返回给智能密钥装置。
一种保护Java软件程序的方法\n技术领域\n[0001] 本发明涉及软件保护技术领域,特别涉及一种保护Java软件程序的方法。\n背景技术\n[0002] 当代码随同产品一同提供给用户时,软件版权保护的方法和采用的技术决定了企业的知识产权是否能够得到有效的保护。\n[0003] Java语言是一种解释型语言。Java源代码经过编译,生成字节码文件,所生成的字节码文件在Java虚拟机(JVM)中解释执行。这种解释执行的运行机制导致Java源代码很容易被反编译。目前这种反编译工具很多,并且反编译的效果也很好,使得任何使用Java软件的用户都可以很容易地反编译和重构产品的源代码,从而使所有基于Java语言的授权认证许可变得毫无意义。\n[0004] 因此,保证Java软件程序不被反编译和重构或者提高反编译和重构的难度,是基于Java语言的软件版权保护领域需要解决的一个重要问题。\n[0005] 目前对软件进行版权保护的方式大多是基于网络的客户端-服务器模式,即:通过客户端与网络中的服务器进行通信,来验证客户端的有效性。但是,这种方式在软件随同产品一同发布时,就不再有效。\n[0006] 智能密钥装置被广泛应用于软件保护技术领域。目前,基于智能密钥装置进行软件程序保护的方法主要有两种:\n[0007] 一种方法是结合智能密钥装置生产商所提供的应用程序接口(API)改造软件程序的功能,在源代码中嵌入对智能密钥装置的访问,使字节码的软件程序与智能密钥装置中的数据或算法绑定。在软件程序运行期间,尽可能地使软件程序的重要模块脱离智能密钥装置后就无法正常运行,这样即使存放在硬盘上的程序文件及数据文件被复制了,只要智能密钥装置没被复制,那么由于软件程序运行时仍需要智能密钥装置参与,因而软件程序也就无法被盗版。该方法的缺点是:需要非常专业的开发人员来实施软件程序的开发,导致开发周期长,并且,保护强度的可控性较低,保护强度受限于开发人员的经验。\n[0008] 另一种方法是利用智能密钥装置生产厂商所提供的工具软件直接对开发环境所生成的程序文件进行操作,从而使这个程序文件结合了保护功能模块,即外壳加密。外壳加密主要是指对一个依据由编译器所生成的含有指令码的程序文件的结构进行改造,使另一个或多个含有指令码的二进制文件片段能顺利地与这个文件相结合,形成一个新的程序文件。外壳加密的缺点是:同一外壳加密工具所保护的不同应用软件的破解过程存在相似性,被保护的内容会在计算机内存中重现。程序代码与后期外壳加密工具插入代码联系较为松散,理论上都可以进行分离并最终破解。\n[0009] 可见,现有保护Java软件程序的方法的保护强度较低,无法为Java软件程序提供有效的版权保护。\n发明内容\n[0010] 有鉴于此,本发明的主要目的在于提供一种保护Java软件程序的方法,以提高对Java软件程序的保护强度,实现有效的软件版权保护。\n[0011] 为达到上述目的,本发明的技术方案具体是这样实现的:\n[0012] 一种保护Java软件程序的方法,包括:\n[0013] A、采用对称加密算法将Java软件程序中需要保护的类文件用密钥K进行加密,得到所述类文件的密文;\n[0014] B、采用非对称加密算法将所述密钥K用智能密钥装置的公钥PK进行加密,得到所述密钥K的密文K’;\n[0015] C、将所述类文件的密文和所述密钥K的密文K’存入所述智能密钥装置中;\n[0016] D、将不包含所述需要保护的类文件的Java软件程序与所述智能密钥装置一同提供给用户使用。\n[0017] 用户使用所述Java软件程序和智能密钥装置的方式可以包括:将所述智能密钥装置连接到终端上,并在所述终端上运行所述Java软件程序。\n[0018] 进一步地,在所述Java软件程序的运行过程中,当需要调用所述类文件时,该方法可以包括:\n[0019] E、向所述智能密钥装置发送加载类文件命令;\n[0020] F、所述智能密钥装置执行解密函数,用所述智能密钥装置的私钥SK对所述密文K’进行解密得到密钥K,并用得到的密钥K对所述类文件的密文进行解密得到所述类文件;\n[0021] G、所述智能密钥装置将所述类文件以流的形式返回给所述终端的系统内存;\n[0022] H、Java虚拟机动态加载所述系统内存中的类文件。\n[0023] 较佳地,在所述智能密钥装置执行解密函数之前,可以进一步包括验证操作,所述验证操作可以包括:\n[0024] 所述终端所在局域网中的服务器向所述终端发出验证用户证书的命令,所述智能密钥装置验证用户的证书是否有效,如果无效,向所述服务器返回验证失败,如果有效,继续执行所述解密函数。\n[0025] 该方法可以进一步包括Java软件程序升级操作,所述Java软件程序升级操作可以包括:\n[0026] 通过所述终端登录到升级服务器,向所述升级服务器发送软件程序升级请求;所述升级服务器根据所述终端上的智能密钥装置的信息对相应的用户进行验证,如果验证结果表明所述用户为非法用户,向所述终端返回升级失败信息,否则,以预先存储的对应于所述用户的密钥K将升级后的需要保护的类文件用密钥K进行加密,得到所述升级后的需要保护的类文件的密文,并将所述密文返回给智能密钥装置。\n[0027] 由上述技术方案可见,本发明提供的保护Java软件程序的方法利用智能密钥装置中的私钥在理论上不能被导出的特点,通过采用对称加密算法将Java软件程序中需要保护的类文件用密钥K进行加密得到该类文件的密文,并采用非对称加密算法将该密钥K用智能密钥装置的公钥PK进行加密得到该密钥K的密文K’,然后将该类文件的密文和该密钥K的密文K’存入智能密钥装置中,并将不包含该需要保护的类文件的Java软件程序与该智能密钥装置一同提供给用户使用。用户在运行Java软件程序需要调用被保护的类文件时,调用智能密钥装置中的解密函数,解密函数采用私钥SK解密密文K’得到密钥K,并用密钥K解密类文件的密文得到类文件,该类文件被智能密钥装置存入系统内容,并由Java虚拟机动态加载该类文件,从而将Java软件程序的安全级别由字节码级别提高到智能密钥装置的硬件级别,提高对Java软件程序的保护强度,实现了有效的软件版权保护。\n[0028] 此外,本发明还存在以下几方面优势:\n[0029] 1)在执行效率上:考虑到非对称密钥算法的执行效率较低,本发明采用对称密钥算法,用一个密钥K来加密需要保护的类文件(该类文件不限定具体实现哪些功能,只要是系统中重要的核心功能就可以)得到该类文件的密文;并采用非对称加密算法和智能密钥装置中的公钥PK来加密这个密钥K得到K′。验证许可、解密K′、解密类文件的密文的过程都是在智能密钥装置内部进行,利用智能密钥装置自身的加、解密算法执行,这样将验证许可、保护Java代码所带来的额外程序对系统运行效率的影响降到最低。\n[0030] 2)在软件安全性上:利用智能密钥装置中的私钥无法导出、且内部可以执行加、解密算法的特点,将需要保护的类文件用公钥PK加密。需要调用该类文件时,在智能密钥装置内部用私钥SK对K′解密得到K,并用K解密类文件的密文得到类文件,再由Java虚拟机动态加载该类。整个过程中,没有在系统的硬盘上出现未加密的类文件,如果想强行破解该类文件,需要对智能密钥装置中的私钥进行暴力获取,而私钥的安全级别是硬件级别的,理论上是无法被导出的。如此,将Java软件程序的安全级别从字节码级别提高到硬件级别,保证了Java软件程序的安全性。\n[0031] 3)在系统可升级和可扩展性上:本发明提出的保护Java软件程序的方法,完全独立于需要保护的Java软件程序本身,双方之间完全解耦合,因此,本发明保护Java软件程序的方法具有通用性,不受限于需要保护的具体的软件程序,因此,升级简单方便。在升级时,只需将需要保护的类文件用按照本发明方法进行加密,并替换掉原有被加密的类文件即可。任何一个程序员都可以完成这项任务。此外,本发明提供了支持在线远程升级的方案。如果购买者想升级软件程序,只需附带着智能密钥装置登录升级服务器,升级服务器获取智能密钥装置的信息,自动识别用户,并生成该用户的升级文件。用户即可下载替换旧版本文件,完成系统升级,系统升级成本低,可扩展性强。并且,由智能密钥装置保证用户信息不会泄漏,从而也保证了用户使用的安全性。\n附图说明\n[0032] 图1为本发明保护Java软件程序的方法的原理示意图;\n[0033] 图2为本发明获取被加密的类文件的方法示意图;\n[0034] 图3为本发明Java软件程序升级操作的流程示意图。\n具体实施方式\n[0035] 为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。\n[0036] 当代码随同产品一同发布,且整个系统运行在一个封闭的局域网内部时,例如网络存储管理系统和ERP系统等,它们的特点是不能通过互联网来验证购买该系统的用户的许可证。并且,系统要求具有跨平台性,对服务器要求具有高度的安全性,而现有基于Java语言的软件保护技术都容易被反编译和破解。鉴于此,本发明在基于Java语言的系统中引入智能密钥装置,将Java软件程序的安全级别从字节码级别提高到基于智能密钥装置的硬件级别,由破解Java代码转移到破解智能密钥装置,从而大大提高Java软件程序破解和重构的难度。\n[0037] 图1为本发明保护Java软件程序的方法的原理示意图。参见图1,该方法包括以下步骤:\n[0038] 步骤101:采用对称加密算法将Java软件程序中需要保护的类文件用密钥K进行加密,得到该类文件的密文。\n[0039] 本步骤中,需要保护的类文件可以根据实际应用的需要进行确定。较佳地,可以包含用户登录获取用户权限的功能模块,如此,可以防止管理系统中用于验证用户许可证的代码被隔离。\n[0040] 步骤102:采用非对称加密算法将该密钥K用智能密钥装置的公钥PK进行加密,得到该密钥K的密文K’。\n[0041] 这里,可以通过智能密钥装置内置的非对称密钥生成算法为用户颁发证书,并将所生成的公钥导出。\n[0042] 步骤103:将该类文件的密文和该密钥K的密文K’存入该智能密钥装置中。\n[0043] 步骤104:将不包含该需要保护的类文件的Java软件程序与该智能密钥装置一同提供给用户使用。\n[0044] 用户在具体使用该Java软件程序和智能密钥装置时,将该智能密钥装置连接到终端上,并在该终端上运行该Java软件程序即可。较佳地,还可以对用户加入验证操作,该验证操作包括:终端所在局域网中的服务器向该终端发出验证用户证书的命令,该智能密钥装置验证用户的证书是否有效,如果无效,向服务器返回验证失败,如果有效,继续正常运行。\n[0045] 在Java软件程序的运行过程中,当需要调用前述已被加密保存在智能密钥装置中的类文件时,可以按照图2所示方法进行。图2为本发明获取被加密的类文件的方法示意图。参见图2,包括以下步骤:\n[0046] 步骤201:终端中的Java虚拟机向智能密钥装置发送加载类文件命令。\n[0047] 步骤202:智能密钥装置执行解密函数,用智能密钥装置的私钥SK对密文K’进行解密得到密钥K。\n[0048] 步骤203:智能密钥装置用得到的密钥K对类文件的密文进行解密得到类文件。\n[0049] 步骤204:智能密钥装置将类文件以流的形式返回给终端的系统内存,Java虚拟机动态加载系统内存中的类文件。\n[0050] 本步骤中,Java虚拟机可以以用户自定义模式动态加载该类,这样,在Java虚拟机中动态生成了该类的实例。\n[0051] 图3为本发明Java软件程序升级操作的流程示意图。参见图3,Java软件程序升级操作包括:\n[0052] 步骤301:用户将附带智能密钥装置的终端连接到互联网,并登录到升级服务器(或升级网站),向该升级服务器发出软件程序升级请求。\n[0053] 本步骤中,用户可以用自己的私钥对升级请求进行签名,并将签名后的升级请求发送给升级服务器。\n[0054] 步骤302:升级服务器根据该终端上的智能密钥装置的信息对相应的用户进行验证。如果验证结果表明所述用户为非法用户,则以升级失败作为升级结果,跳到步骤304;\n否则,继续执行步骤303。\n[0055] 本步骤中,升级服务器可以用该用户的公钥对经该用户的签名进行验证,以确定该用户是否为合法用户。\n[0056] 步骤303:根据该用户的信息从数据库中调出预先存储的对应于该用户的密钥K,将升级后的需要保护的类文件用密钥K进行加密,得到该升级后的需要保护的类文件的密文,将所述密文作为升级结果,继续执行步骤304。\n[0057] 步骤304:升级服务器将升级结果返回给智能密钥装置。\n[0058] 由上述实施例可见,本发明提出的保护Java软件程序的方法,不破坏原Java软件程序的功能代码,不加入任何保护相关的代码,使得代码保护与被保护的代码解耦合。该保护Java软件程序的方法可以单独编写为一个加密程序,被广泛使用到基于Java语言的系统。并且,采用本发明方法升级方便,可以提供在线升级的功能,如果购买者想升级软件程序,只需附带着智能密钥装置登录升级服务器,升级服务器获取智能密钥装置的信息,自动识别用户,并生成该用户的升级文件。用户即可下载替换旧版本文件,完成系统升级,系统升级成本低,可扩展性强。并且,由智能密钥装置保证用户信息不会泄漏,从而也保证了用户使用的安全性。并且,解密类文件为对称加密算法,执行效率高,对系统性能影响不大。\n[0059] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2022-07-15
未缴年费专利权终止
IPC(主分类): G06F 21/22
专利号: ZL 200910082624.1
申请日: 2009.04.21
授权公告日: 2011.12.07
- 2017-08-25
专利权质押合同登记的注销
IPC(主分类): G06F 21/22
专利号: ZL 200910082624.1
申请日: 2009.04.21
授权公告日: 2011.12.07
登记号: 2016990000859
解除日: 2017.08.02
出质人: 普天信息技术有限公司
质权人: 北京银行股份有限公司世纪城支行
- 2016-11-09
专利实施许可合同备案的生效
IPC(主分类): G06F 21/22
专利号: ZL 200910082624.1
申请日: 2009.04.21
授权公告日: 2011.12.07登记号 2016990000859 登记生效日 2016.10.11出质人 普天信息技术有限公司质权人 北京银行股份有限公司世纪城支行
发明名称: 一种保护Java软件程序的方法
- 2016-11-02
专利权质押合同登记的注销
IPC(主分类): G06F 21/22
专利号: ZL 200910082624.1
申请日: 2009.04.21
授权公告日: 2011.12.07
登记号: 2015990000948
解除日: 2016.10.08
出质人: 普天信息技术有限公司
质权人: 北京银行股份有限公司世纪城支行
- 2015-12-02
专利实施许可合同备案的生效
IPC(主分类): G06F 21/22
专利号: ZL 200910082624.1
申请日: 2009.04.21
授权公告日: 2011.12.07登记号 2015990000948 登记生效日 2015.11.05出质人 普天信息技术有限公司质权人 北京银行股份有限公司世纪城支行
发明名称: 一种保护Java软件程序的方法
- 2015-11-25
专利权质押合同登记的注销
IPC(主分类): G06F 21/22
专利号: ZL 200910082624.1
申请日: 2009.04.21
授权公告日: 2011.12.07
登记号: 2013990000954
解除日: 2015.11.02
出质人: 普天信息技术有限公司
质权人: 北京银行股份有限公司世纪城支行
- 2015-11-25
专利权质押合同登记的变更
登记号: 2013990000954
变更日: 2015.11.02
变更事项: 出质人
变更前: 普天信息技术研究院有限公司
变更后: 普天信息技术有限公司
- 2015-09-09
专利权人的姓名或者名称、地址的变更
专利权人由普天信息技术研究院有限公司变更为普天信息技术有限公司
地址由100080 北京市海淀区海淀北二街6号变更为100080 北京市海淀区海淀北二街6号
- 2014-01-08
专利权质押合同登记的生效
IPC(主分类): G06F 21/22
专利号: ZL 200910082624.1
申请日: 2009.04.21
授权公告日: 2011.12.07
登记号: 2013990000954
登记生效日: 2013.12.10
出质人: 普天信息技术研究院有限公司
质权人: 北京银行股份有限公司世纪城支行
发明名称: 一种保护Java软件程序的方法
- 2013-04-03
专利权的转移
登记生效日: 2013.03.12
专利权人由中国普天信息产业股份有限公司变更为普天信息技术研究院有限公司
地址由100080 北京市海淀区中关村科技园区上地二街2号变更为100080 北京市海淀区海淀北二街6号
- 2013-03-27
专利权的转移
登记生效日: 2013.03.04
专利权人由普天信息技术研究院有限公司变更为中国普天信息产业股份有限公司
地址由100080 北京市海淀区海淀北二街6号变更为100080 北京市海淀区中关村科技园区上地二街2号
- 2011-12-07
- 2010-12-08
实质审查的生效
IPC(主分类): G06F 21/22
专利申请号: 200910082624.1
申请日: 2009.04.21
- 2010-10-27
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2008-03-26
|
2006-09-20
| | |
2
| |
1999-02-17
|
1998-04-29
| | |
3
| |
2008-03-26
|
2006-09-20
| | |
4
| | 暂无 |
2008-02-29
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |