CN103853943B - 程序保护方法及装置 - Google Patents

程序保护方法及装置 Download PDF

Info

Publication number
CN103853943B
CN103853943B CN201410053911.0A CN201410053911A CN103853943B CN 103853943 B CN103853943 B CN 103853943B CN 201410053911 A CN201410053911 A CN 201410053911A CN 103853943 B CN103853943 B CN 103853943B
Authority
CN
China
Prior art keywords
key
class
data
attribute information
encrypted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410053911.0A
Other languages
English (en)
Other versions
CN103853943A (zh
Inventor
梁捷
余延军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING GAODE YUNTU TECHNOLOGY Co.,Ltd.
Original Assignee
Guangzhou I9Game Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangzhou I9Game Information Technology Co Ltd filed Critical Guangzhou I9Game Information Technology Co Ltd
Priority to CN201410053911.0A priority Critical patent/CN103853943B/zh
Publication of CN103853943A publication Critical patent/CN103853943A/zh
Application granted granted Critical
Publication of CN103853943B publication Critical patent/CN103853943B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • G06F21/46Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

本发明实施例公开了一种程序保护方法及装置,其中方法包括:在程序生成阶段加密:获取第一密钥;获取第二密钥以及指定类的标识;使用第二密钥对指定类进行加密;使用第一密钥的公钥对第二密钥属性信息进行加密;在程序运行阶段解密:使用第一密钥的私钥对第二密钥属性信息的密文数据进行解密;根据指定类的标识判断待加载的类是否属于指定类,若属于指定类,则使用第二密钥对待加载类进行解密。本发明使用第一密钥及第二密钥对程序进行双重加密保护,有效的保护了程序的源代码;同时还对程序本身进行了区分,即只对指定类进行加密,从而提高了加解密的效率,且被加密的类的标识也进一步被第二密钥加密保护,从而进一步保护了程序的安全。

Description

程序保护方法及装置
技术领域
本发明涉及软件加解密技术领域,尤其是涉及一种程序保护方法及装置。
背景技术
软件的核心算法与软件产品竞争力有直接关系,因此软件的核心算法保护相比其源代码保护有更高的要求。
为保证源代码的安全,编译软件时,一般会对源代码进行加密处理,比如在编译Java代码时,可以使用编译器自带的编译库来快速实现代码的加密。由于这样的加密方式是通过固定的库来实现加密处理,因此使用这类的加密方式非常容易被反编译工具(如使用javap/jd-gui等工具)破解,从而导致核心源码的泄露。现有技术中尚缺少一种有效的对软件核心源码进行保护的方法。
发明内容
有鉴于此,本发明实施例的目的是提供一种程序保护方法及装置,以解决软件程序无法被有效保护的技术问题。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
一方面,本发明实施例提供了一种程序保护方法,所述方法包括:
在程序生成阶段中,执行如下加密步骤:
获取第一密钥,其中所述第一密钥包括公钥和私钥;
获取第二密钥以及指定类的标识;
根据所述指定类的标识使用所述第二密钥对所述指定类进行加密,以得到所述指定类的密文数据;
使用所述第一密钥的公钥对第二密钥属性信息进行加密,以得到第二密钥属性信息的密文数据,其中所述第二密钥属性信息包括所述第二密钥、所述指定类的标识;
在程序运行阶段中,执行如下解密步骤:
使用所述第一密钥的私钥对所述第二密钥属性信息的密文数据进行解密,以得到所述第二密钥和指定类的标识;
根据所述指定类的标识判断待加载的类是否属于所述指定类,若属于所述指定类,则使用所述第二密钥对所述待加载类进行解密。
优选的,所述获取第一密钥包括:
获取第一种子数据;
根据所述第一种子数据按照第一加密算法生成所述第一密钥。
优选的,所述获取第二密钥包括:
获取第二种子数据;
根据所述第二种子数据按照第二加密算法生成所述第二密钥。
优选的,所述第二密钥属性信息还包括第二密钥的失效周期数据;
在使用所述第一密钥的公钥对第二密钥属性信息进行加密之前,所述方法还包括:
获取第二密钥的失效周期数据;
在使用所述第二密钥对所述待加载类进行解密之后,所述方法还包括:
根据使用所述第一密钥的私钥对所述第二密钥属性信息的密文数据进行解密后得到的所述第二密钥的失效周期数据,判断当前的第二密钥是否已失效,若已失效,则:
获取新的第二密钥,
使用所述新的第二密钥对所述指定类重新进行加密以得到所述指定类的新的密文数据,
使用所述第一密钥的公钥对所述第二密钥属性信息重新进行加密。
优选的,所述获取新的第二密钥包括:
获取新的第二种子数据;
根据所述新的第二种子数据按照第二加密算法生成所述新的第二密钥。
优选的,所述方法还包括:
在所述加密步骤中,根据第三加密算法对所述公钥和私钥进行加密并分别存储在公钥文件和私钥文件中;
在所述解密步骤中,根据所述第三加密算法对所述公钥文件和私钥文件进行解密,以得到所述公钥和私钥。
另一方面,本发明实施例还提供了一种程序保护装置,所述装置包括加密模块和解密模块;
所述加密模块包括:
第一密钥获取单元,用于获取第一密钥,其中所述第一密码包括公钥和私钥;
第二密钥获取单元,用于获取第二密钥以及指定类的标识;
类加密单元,用于根据所述指定类的标识使用所述第二密钥对所述指定类进行加密,以得到所述指定类的密文数据;
密钥加密单元,用于使用所述第一密钥的公钥对第二密钥属性信息进行加密,以得到第二密钥属性信息的密文数据,其中所述第二密钥属性信息包括所述第二密钥以及所述指定类的标识;
所述解密模块包括:
密钥解密单元,用于使用所述第一密钥的私钥对所述第二密钥属性信息的密文数据进行解密,以得到所述第二密钥和指定类的标识;
类解密单元,用于根据所述指定类的标识判断待加载的类是否属于所述指定类,若属于所述指定类,则使用所述第二密钥对所述待加载类进行解密。
优选的,所述第一密钥获取单元包括:
第一种子数据获取子单元,用于获取第一种子数据;
第一密钥生成子单元,用于根据所述第一种子数据按照第一加密算法生成所述第一密钥。
优选的,所述第二密钥获取单元包括:
第二种子数据获取子单元,用于获取第二种子数据;
第二密钥生成子单元,用于根据所述第二种子数据按照第二加密算法生成所述第二密钥。
优选的,所述第二密钥属性信息还包括第二密钥的失效周期等数据;
所述加密模块还包括:
第二密钥失效周期数据获取单元,用于在使用所述第一密钥的公钥对第二密钥属性信息进行加密之前获取第二密钥的失效周期数据;
所述解密模块还包括:
第二密钥失效判断单元,用于在使用所述第二密钥对所述待加载类进行解密之后,根据使用所述第一密钥的私钥对所述第二密钥属性信息的密文数据进行解密后得到的所述第二密钥的失效周期数据,判断当前的第二密钥是否已失效,若已失效,则触发第二密钥更新单元、类重加密单元及密钥重加密单元;
第二密钥更新单元,用于获取新的第二密钥;
类重加密单元,用于使用所述新的第二密钥对所述指定类重新进行加密以得到所述指定类的新的密文数据;
密钥重加密单元,用于使用所述第一密钥的公钥对第二密钥属性信息重新进行加密。
优选的,所述第二密钥更新单元包括:
第二种子数据重获取子单元,用于获取新的第二种子数据;
第二密钥重生成子单元,用于根据所述新的第二种子数据按照第二加密算法生成所述新的第二密钥。
优选的,所述装置还包括:
公钥私钥保护模块,用于根据第三加密算法对所述公钥和私钥进行加密并分别存储在公钥文件和私钥文件中,以及根据所述第三加密算法对所述公钥文件和私钥文件进行解密以得到所述公钥和私钥。
本发明实施例使用第一密钥及第二密钥对程序进行双重加密保护,其中第二密钥用来对程序本身进行保护,包括公钥和私钥的第一密钥进一步对第二密钥进行保护,从而大大增加了破解难度,有效的保护了程序的源代码;同时,本发明实施例还对程序本身进行了区分,即只对指定类进行加密保护,从而提高了加解密的效率,且被加密的类的标识也进一步被第二密钥加密保护,使得破解者根本不知有哪些类被加密,从而进一步保护了程序的安全。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一方法的示例性流程图;
图2为本发明实施例二方法的示例性流程图;
图3为本发明实施例三方法的示例性流程图;
图4为本发明实施例四装置的示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了全面理解本发明,在以下详细描述中提到了众多具体的细节,但是本领域技术人员应该理解,本发明可以无需这些具体细节而实现。在其他实施例中,不详细描述公知的方法、过程、组件和电路,以免不必要地导致实施例模糊。
实施例一
图1为本发明实施例一方法的示例性流程图。本实施例提供了一种程序保护方法,所述方法可以包括:
在程序生成阶段中,执行如下加密步骤:
S101、获取第一密钥,其中所述第一密码包括公钥和私钥。
第一密钥用于对第二密钥进行加密保护。第一密钥属于一种固定的非对称密钥,包括公钥和私钥,使用公钥加密,使用私钥解密,其中私钥是非公开的,例如使用RSA非对称加解密算法,密钥长度可以为512、1024、2048,密钥长度越大,被破解的可能性越趋向零。
获取第一密钥的方式可以有多种,例如可以直接预置一个第一密钥,或者接收外界输入的第一密钥,还可以以某信息作为种子生成得到第一密钥,对此本实施例并不进行限制,可以在此处使用的获取第一密钥的方式都没有背离本发明的精神和保护范围。
在本实施例或本发明其他某些实施例中,所述获取第一密钥可以包括:
获取第一种子数据;
根据所述第一种子数据按照第一加密算法(例如RSA等非对称加解密算法)生成所述第一密钥。
其中第一种子数据可以是终端的当前时间、用户随机输入的字符串、终端的硬件特性码,例如UUID(Universally Unique ID,指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的)。
S102、获取第二密钥以及指定类的标识。
第二密钥用于对程序本身的源代码进行加密。程序的源代码通常由众多的类组成,但本实施例并不对所有的类进行加密,而是有选择性的只对指定类(如核心算法)进行加密,比如用户可以通过手动来指定要加密的类,或通过一定的识别规则自动从源代码中抽取出相应的类来进行加密,从而提高加解密的效率及源代码保护的安全性。
获取第二密钥的方式也可以有多种,例如可以直接预置;接收外界输入;或基于某些动态信息作为种子生成得到第二密钥,对此本实施例并不进行限制。
在本实施例或本发明其他某些实施例中,所述获取第二密钥包括:
获取第二种子数据;
根据所述第二种子数据按照第二加密算法(例如AES等对称加解密算法)生成所述第二密钥。
其中第二种子数据包括终端的当前时间、用户随机输入的字符串、终端的硬件特性。
S103、根据所述指定类的标识使用所述第二密钥对所述指定类进行加密,以得到所述指定类的密文数据。
即使用第二密钥对所述指定类进行加密处理,例如通过比如对源码编译后的类字节码进行加密处理,得到类的密文,从而替换原先的类的明文。
S104、使用所述第一密钥的公钥对第二密钥属性信息进行加密,以得到第二密钥属性信息的密文数据,其中所述第二密钥属性信息包括所述第二密钥、指定类的标识、密钥失效周期及密钥失效时间。
本实施例使用双重加密机制,在使用第二密钥对程序本身进行加密的同时,第二密钥本身也会被第一密钥加密保护,从而形成更完善的保护机制,避免程序类信息被破解。而且不但第二密钥会被第一密钥加密保护,指定类的标识也会被第一密钥加密保护。第二密钥、指定类的标识、第二密钥失效周期、第二密钥失效时间戳等一起构成第二密钥属性信息,可以存放在同一个配置文件中。
第二密钥属性信息包含多个属性,在使用第一密钥的公钥对其加密时,可以将各个属性信息先做拼接再加密,或者是单个属性信息加密然后再拼接,对加密后字节数组可以直接序列化存储至文件,也可以先转换成十六进制或Base64编码的字符,然后再直接存储这些密文字符;在上述的拼接、序列化及编码过程中,作为优选,可以添加特定的魔数或特定对规则,从而提升安全性。
另外容易理解的是,上述步骤中,S101与S102是可以没有先后顺序的。
在程序运行阶段中,执行如下解密步骤:
S105、使用所述第一密钥的私钥对所述第二密钥属性信息的密文数据进行解密,以得到所述第二密钥和指定类的标识。
S106、根据所述指定类的标识判断待加载的类是否属于所述指定类,若属于所述指定类,则使用所述第二密钥对所述待加载类进行解密。
例如在某场景下,已被本实施例方法加密的Java程序启动后,可以通过javaagent代理添加加解密算法逻辑拦截,即在执行程序主逻辑之前,读取第二密钥属性信息的密文数据,使用第一密钥的私钥对其进行解密,得到第二密钥以及指定类的标识(也即被加密类的标识);然后在Java程序执行类加载的流程中,根据类的标识判断当前待加载的类是否需要做解密处理,如不需要,则直接将类数据传递给JVM虚拟机类加载器;如待加载的类需要做解密处理,则使用第二密钥解密得到该类的明文数据,再将该类的明文数据传递给JVM虚拟机类加载器。
本实施例使用第一密钥及第二密钥对程序进行双重加密保护,其中第二密钥用来对程序本身进行保护,包括公钥和私钥的第一密钥进一步对第二密钥进行保护,从而大大增加了破解难度,有效的保护了程序的源代码;同时,本发明实施例还对程序本身进行了区分,只对指定类进行加密保护,从而提高了加解密的效率,且被加密的类的标识也进一步被第二密钥加密保护,使得破解者根本不知有哪些类被加密,从而进一步保护了程序的安全。
实施例二
图2为本发明实施例二方法的示例性流程图。本实施例基于上述实施例,是在上述实施例基础上的进一步补充和完善。从原理上讲,本实施例在上一实施例基础上,增加了第二密钥的动态更新机制,引入了第二密钥的失效周期,从而进一步提高了安全性。
在本实施例中,所述第二密钥属性信息还包括第二密钥的失效周期数据;
在使用所述第一密钥的公钥对第二密钥属性信息进行加密之前,还包括:
S201、获取第二密钥的失效周期数据。
第二密钥的失效周期数据可以包括第二密钥的失效周期以及第二密钥下一次失效的时间(也即第二密钥本次有效期的终止时间)。例如,第二密钥的失效周期为20天,当前时间即使用第二密钥加密时的时间是2014年1月10日,那么第二密钥下一次失效的时间则为2014年1月10日+20天,即2014年1月30日。作为一种更优选的方案,时间可以精确到秒。
获取第二密钥失效周期数据的方式不限,例如可以由用户输入第二密钥的失效周期,然后根据当前时间计算出第二密钥下一次失效的时间。
在实施例一中,第二密钥属性信息包括第一密钥本身及指定类的标识,在本实施例中,第二密钥属性信息中还增加了第二密钥的失效周期数据。这样相应的在本实施例中,对第二密钥属性信息进行解密后,不但会得到第二密钥及指定类的标识,还会相应得到第二密钥的失效周期数据。
在使用所述第二密钥对所述待加载类进行解密之后,还包括:
S202、根据使用所述第一密钥的私钥对所述第二密钥属性信息的密文数据进行解密后得到的所述第二密钥的失效周期数据,判断当前的第二密钥是否已失效,若已失效,则进入步骤S203。
换句话说,若发现第二密钥已到了失效时间,那么就进行下面的第二密钥的更新步骤,从而实现第二密钥的动态变化,进一步增加程序的破解难度。作为一种更优的方案,也可以在预设的值内自动更新第二密钥,其中,预设的值可以是“离失效时间还剩余2天,3天”这样的具体值。第二密钥的更新方式与初次使用第二密钥时的方式是可以完全相同的。
S203、获取新的第二密钥,使用所述新的第二密钥对所述指定类重新进行加密以得到所述指定类的新的密文数据,使用所述第一密钥的公钥对所述第二密钥属性信息重新进行加密。
优选的,获取新的第二密钥可以包括:
获取新的第二种子数据;
根据所述新的第二种子数据按照第二加密算法生成所述新的第二密钥。
此外,在本发明各种实施例中,还可以进一步增加对公钥私钥的保护,例如:
在所述加密步骤中,根据第三加密算法对所述公钥和私钥进行加密并分别存储在公钥文件和私钥文件中;
在存储公钥和私钥时,可以将加密后的公、私钥字节数组序列化至文件,也可以将密文字节数组转成十六进制或Base64编码字符后再存储。
在所述解密步骤中,根据所述第三加密算法对所述公钥文件和私钥文件进行解密,以得到所述公钥和私钥。
其中,上述第三加密算法可以与上述第一、第二加密算法都不相同,例如可以是编程者自己开发的私有算法。
从上面可以看到,别人如要恶意破解,假设有使用第三加密算法进行加密,首先需要破解第三加密算法,然后再破解第一加密算法,例如2048位私钥,最后才能继续破解第二密钥。因此,如果第二密钥的失效周期越短,则安全性越高——在别人暴力破解出第三加密算法和第一加密算法的过程中,第二密钥已经更新了多次,破解者无法根据之前破解的结果来继续破解第二密钥。
本实施例使用第一密钥及第二密钥对程序进行双重加密保护,其中第二密钥用来对程序本身进行保护,包括公钥和私钥的第一密钥进一步对第二密钥进行保护,从而大大增加了破解难度,有效的保护了程序的源代码;同时,本发明实施例还对程序本身进行了区分,只对指定类进行加密保护,从而提高了加解密的效率,且被加密的类的标识也进一步被第二密钥加密保护,使得破解者根本不知有哪些类被加密,从而进一步保护了程序的安全。此外,在本实施例中,第二密钥动态更新,更加增强了程序的安全性。
实施例三
在上述实施例的基础上,下面再结合具体场景对本发明做进一步描述。
图3为本发明实施例三方法的示例性流程图。
S301、获取第一密钥的种子数据。例如可以基于用户输入的数据来获取。
S302、使用非对称加解密算法(例如RSA)生成第一密钥(包括公钥和私钥)。
S303、使用一私有加密算法对第一密钥进一步做加密处理,并将第一密钥的密文序列化至磁盘文件,其中公钥保存为public.ks文件,私钥保存为private.ks文件。
S304、获取指定类的名称、第二密钥的失效周期(例如90天)。例如可以基于用户输入的数据来获取。
S305、以操作系统的动态信息(例如终端当前时间)作为第二密钥种子数据,使用对称加解密算法(例如AES)生成第二密钥,并根据第二密钥的失效周期计算出第二密钥的失效时间。
比如失效周期是90天,首次使用第二密钥加密时,第二密钥的失效时间(即第二密钥下一次失效的时间,也即第二密钥本次有效期的终止时间)就是:当前终端时间+失效周期。例如,2014-01-21+90天=2014-04-21。作为一种更优选的方案,时间可以精确到秒。
S306、使用第一密钥的公钥对第二密钥、指定类的名称以及第二密钥的失效时间进行加密,加密后得到的密文数据保存在配置文件中。
S307、使用第二密钥对指定类的明文数据做加密处理,得到类的密文数据,替换原先的明文数据。
S308、某时刻被加密的程序启动后,通过javaagent代理添加加解密程序逻辑拦截,在执行程序的主逻辑之前,读取存储着第二密钥属性信息的配置文件(保存有失效周期、失效时间、用户输入的随机数据、终端硬件uuid信息等)。
S309、从第一密钥的存储文件public.ks、private.ks中反序列化得到第一密钥的密文数据,并使用加密时的私有加密算法对这两文件进行解密,得到第一密钥的公钥和私钥。
S310、使用第一密钥的私钥对配置文件中的密文解密,得到第二密钥、指定类的名称以及第二密钥的失效时间。
S311、程序执行类加载流程,在加载过程中,判断当前被加载的类是否属于指定类,即是否需要进行解密。如果不需要,则直接将该类的数据传递给JVM虚拟机类加载器。如果需要解密,则进入S312。
S312、使用第二密钥对该类进行解密,得到类的明文数据,再将该类的明文数据传递给JVM虚拟机类加载器。
S313、根据第二密钥的失效时间判断第二密钥是否过期,如过期,则进入步骤S314。
S314、重新生成第二密钥,同时根据失效周期计算出新的第二密钥的失效时间,使用新的第二密钥对指定类的明文数据进行重新加密,使用第一密钥的公钥对新的第二密钥、指定类的名称及新的第二密钥的失效失效周期数据重新进行加密,并产生新的配置文件。
本实施例使用第一密钥及第二密钥对程序进行双重加密保护,其中第二密钥用来对程序本身进行保护,包括公钥和私钥的第一密钥进一步对第二密钥进行保护,从而大大增加了破解难度,有效的保护了程序的源代码;同时,本发明实施例还对程序本身进行了区分,只对指定类进行加密保护,从而提高了加解密的效率,且被加密的类的标识也进一步被第二密钥加密保护,使得破解者根本不知有哪些类被加密,从而进一步保护了程序的安全。此外,在本实施例中,第二密钥动态更新,更加增强了程序的安全性。
实施例四
图4为本发明实施例四装置的示意图。本实施例提供了一种程序保护装置400,所述装置400包括加密模块和解密模块;
所述加密模块包括:
第一密钥获取单元401,用于获取第一密钥,其中所述第一密码包括公钥和私钥;
第二密钥获取单元402,用于获取第二密钥以及指定类的标识;
类加密单元403,用于根据所述指定类的标识使用所述第二密钥对所述指定类进行加密,以得到所述指定类的密文数据;
密钥加密单元404,用于使用所述第一密钥的公钥对第二密钥属性信息进行加密,以得到第二密钥属性信息的密文数据,其中所述第二密钥属性信息包括所述第二密钥以及所述指定类的标识;
所述解密模块包括:
密钥解密单元405,用于使用所述第一密钥的私钥对所述第二密钥属性信息的密文数据进行解密,以得到所述第二密钥和指定类的标识;
类解密单元406,用于根据所述指定类的标识判断待加载的类是否属于所述指定类,若属于所述指定类,则使用所述第二密钥对所述待加载类进行解密。
在本实施例或本发明其他某些实施例中,所述第一密钥获取单元401包括:
第一种子数据获取子单元,用于获取第一种子数据;
第一密钥生成子单元,用于根据所述第一种子数据按照第一加密算法生成所述第一密钥。
在本实施例或本发明其他某些实施例中,所述第二密钥获取单元402包括:
第二种子数据获取子单元,用于获取第二种子数据;
第二密钥生成子单元,用于根据所述第二种子数据按照第二加密算法生成所述第二密钥。
在本实施例或本发明其他某些实施例中,所述第二密钥属性信息还包括第二密钥的失效周期数据;
所述加密模块还包括:
第二密钥失效周期数据获取单元,用于在使用所述第一密钥的公钥对第二密钥属性信息进行加密之前获取第二密钥的失效周期数据;
所述解密模块还包括:
第二密钥失效判断单元,用于在使用所述第二密钥对所述待加载类进行解密之后,根据使用所述第一密钥的私钥对所述第二密钥属性信息的密文数据进行解密后得到的所述第二密钥的失效周期数据,判断当前的第二密钥是否已失效,若已失效,则触发第二密钥更新单元、类重加密单元及密钥重加密单元;
第二密钥更新单元,用于获取新的第二密钥;
类重加密单元,用于使用所述新的第二密钥对所述指定类重新进行加密以得到所述指定类的新的密文数据;
密钥重加密单元,用于使用所述第一密钥的公钥对第二密钥属性信息重新进行加密。
在本实施例或本发明其他某些实施例中,所述第二密钥更新单元包括:
第二种子数据重获取子单元,用于获取新的第二种子数据;
第二密钥重生成子单元,用于根据所述新的第二种子数据按照第二加密算法生成所述新的第二密钥。
在本实施例或本发明其他某些实施例中,所述装置还包括:
公钥私钥保护模块,用于根据第三加密算法对所述公钥和私钥进行加密并分别存储在公钥文件和私钥文件中,以及根据所述第三加密算法对所述公钥文件和私钥文件进行解密以得到所述公钥和私钥。
本实施例使用第一密钥及第二密钥对程序进行双重加密保护,其中第二密钥用来对程序本身进行保护,包括公钥和私钥的第一密钥进一步对第二密钥进行保护,从而大大增加了破解难度,有效的保护了程序的源代码;同时,本发明实施例还对程序本身进行了区分,只对指定类进行加密保护,从而提高了加解密的效率,且被加密的类的标识也进一步被第二密钥加密保护,使得破解者根本不知有哪些类被加密,从而进一步保护了程序的安全。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
可以理解的是,本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM、RAM、磁碟、光盘等。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。本文中应用了具体个例对本发明的原理及实施方式进行了闸述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (12)

1.一种程序保护方法,其特征在于,所述方法包括:
在程序生成阶段中,执行如下加密步骤:
获取第一密钥,其中所述第一密钥包括公钥和私钥;
获取第二密钥以及指定类的标识;
根据所述指定类的标识使用所述第二密钥对所述指定类进行加密,以得到所述指定类的密文数据替换原先的明文数据;
使用所述第一密钥的公钥对第二密钥属性信息进行加密,以得到第二密钥属性信息的密文数据,其中所述第二密钥属性信息包括所述第二密钥、指定类的标识;
在程序运行阶段中,执行如下解密步骤:
使用所述第一密钥的私钥对所述第二密钥属性信息的密文数据进行解密,以得到所述第二密钥和指定类的标识;
根据所述指定类的标识判断待加载的类是否属于所述指定类,若属于所述指定类,则使用所述第二密钥对所述待加载类进行解密。
2.根据权利要求1的程序保护方法,其特征在于,所述获取第一密钥包括:
获取第一种子数据;
根据所述第一种子数据按照第一加密算法生成所述第一密钥。
3.根据权利要求1的程序保护方法,其特征在于,所述获取第二密钥包括:
获取第二种子数据;
根据所述第二种子数据按照第二加密算法生成所述第二密钥。
4.根据权利要求1的程序保护方法,其特征在于,所述第二密钥属性信息还包括第二密钥的失效周期数据;
在使用所述第一密钥的公钥对第二密钥属性信息进行加密之前,所述方法还包括:
获取第二密钥的失效周期数据;
在使用所述第二密钥对所述待加载类进行解密之后,所述方法还包括:
根据使用所述第一密钥的私钥对所述第二密钥属性信息的密文数据进行解密后得到的所述第二密钥的失效周期数据,判断当前的第二密钥是否已失效,若已失效,则:
获取新的第二密钥,
使用所述新的第二密钥对所述指定类重新进行加密以得到所述指定类的新的密文数据,
使用所述第一密钥的公钥对所述第二密钥属性信息重新进行加密。
5.根据权利要求4的程序保护方法,其特征在于,所述获取新的第二密钥包括:
获取新的第二种子数据;
根据所述新的第二种子数据按照第二加密算法生成所述新的第二密钥。
6.根据权利要求1的程序保护方法,其特征在于,所述方法还包括:
在所述加密步骤中,根据第三加密算法对所述公钥和私钥进行加密并分别存储在公钥文件和私钥文件中;
在所述解密步骤中,根据所述第三加密算法对所述公钥文件和私钥文件进行解密,以得到所述公钥和私钥。
7.一种程序保护装置,其特征在于,所述装置包括加密模块和解密模块;
所述加密模块包括:
第一密钥获取单元,用于获取第一密钥,其中所述第一密码包括公钥和私钥;
第二密钥获取单元,用于获取第二密钥以及指定类的标识;
类加密单元,用于根据所述指定类的标识使用所述第二密钥对所述指定类进行加密,以得到所述指定类的密文数据替换原先的明文数据;
密钥加密单元,用于使用所述第一密钥的公钥对第二密钥属性信息进行加密,以得到第二密钥属性信息的密文数据,其中所述第二密钥属性信息包括所述第二密钥、所述指定类的标识;
所述解密模块包括:
密钥解密单元,用于使用所述第一密钥的私钥对所述第二密钥属性信息的密文数据进行解密,以得到所述第二密钥和指定类的标识;
类解密单元,用于根据所述指定类的标识判断待加载的类是否属于所述指定类,若属于所述指定类,则使用所述第二密钥对所述待加载类进行解密。
8.根据权利要求7的程序保护装置,其特征在于,所述第一密钥获取单元包括:
第一种子数据获取子单元,用于获取第一种子数据;
第一密钥生成子单元,用于根据所述第一种子数据按照第一加密算法生成所述第一密钥。
9.根据权利要求7的程序保护装置,其特征在于,所述第二密钥获取单元包括:
第二种子数据获取子单元,用于获取第二种子数据;
第二密钥生成子单元,用于根据所述第二种子数据按照第二加密算法生成所述第二密钥。
10.根据权利要求7的程序保护装置,其特征在于,所述第二密钥属性信息还包括第二密钥的失效周期数据;
所述加密模块还包括:
第二密钥失效周期数据获取单元,用于在使用所述第一密钥的公钥对第二密钥属性信息进行加密之前获取第二密钥的失效周期数据;
所述解密模块还包括:
第二密钥失效判断单元,用于在使用所述第二密钥对所述待加载类进行解密之后,根据使用所述第一密钥的私钥对所述第二密钥属性信息的密文数据进行解密后得到的所述第二密钥的失效周期数据,判断当前的第二密钥是否已失效,若已失效,则触发第二密钥更新单元、类重加密单元及密钥重加密单元;
第二密钥更新单元,用于获取新的第二密钥;
类重加密单元,用于使用所述新的第二密钥对所述指定类重新进行加密以得到所述指定类的新的密文数据;
密钥重加密单元,用于使用所述第一密钥的公钥对第二密钥属性信息重新进行加密。
11.根据权利要求10的程序保护装置,其特征在于,所述第二密钥更新单元包括:
第二种子数据重获取子单元,用于获取新的第二种子数据;
第二密钥重生成子单元,用于根据所述新的第二种子数据按照第二加密算法生成所述新的第二密钥。
12.根据权利要求7的程序保护装置,其特征在于,所述装置还包括:
公钥私钥保护模块,用于根据第三加密算法对所述公钥和私钥进行加密并分别存储在公钥文件和私钥文件中,以及根据所述第三加密算法对所述公钥文件和私钥文件进行解密以得到所述公钥和私钥。
CN201410053911.0A 2014-02-18 2014-02-18 程序保护方法及装置 Active CN103853943B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410053911.0A CN103853943B (zh) 2014-02-18 2014-02-18 程序保护方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410053911.0A CN103853943B (zh) 2014-02-18 2014-02-18 程序保护方法及装置

Publications (2)

Publication Number Publication Date
CN103853943A CN103853943A (zh) 2014-06-11
CN103853943B true CN103853943B (zh) 2017-01-18

Family

ID=50861591

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410053911.0A Active CN103853943B (zh) 2014-02-18 2014-02-18 程序保护方法及装置

Country Status (1)

Country Link
CN (1) CN103853943B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107404469B (zh) * 2016-05-20 2021-02-19 阿里巴巴(中国)有限公司 一种会话安全处理系统、设备、装置及方法
DE102017214591A1 (de) * 2017-08-22 2019-02-28 Robert Bosch Gmbh Verfahren und Vorrichtung zum Schützen eines Gerätes
CN108243198B (zh) * 2018-01-31 2019-02-15 北京深思数盾科技股份有限公司 一种数据分发、转发方法及装置
CN110532737A (zh) * 2019-08-29 2019-12-03 深圳前海环融联易信息科技服务有限公司 Jar包加密管理方法、装置、计算机设备及存储介质
CN110750799A (zh) * 2019-09-30 2020-02-04 北京智明星通科技股份有限公司 信息加密方法及装置、电子设备和计算机可读存储介质
CN112825095A (zh) * 2019-11-20 2021-05-21 北京京东尚科信息技术有限公司 用于保护应用中敏感信息的方法、装置、电子设备和介质
CN111143870B (zh) * 2019-12-30 2022-05-13 兴唐通信科技有限公司 一种分布式加密存储装置、系统及加解密方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1740940A (zh) * 2005-09-09 2006-03-01 北京兆日科技有限责任公司 基于可信计算模块芯片实现计算机软件防盗版的方法
CN102254122A (zh) * 2010-05-21 2011-11-23 深圳市合信自动化技术有限公司 一种可编程逻辑控制器及其用户程序的管理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8972743B2 (en) * 2005-05-16 2015-03-03 Hewlett-Packard Development Company, L.P. Computer security system and method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1740940A (zh) * 2005-09-09 2006-03-01 北京兆日科技有限责任公司 基于可信计算模块芯片实现计算机软件防盗版的方法
CN102254122A (zh) * 2010-05-21 2011-11-23 深圳市合信自动化技术有限公司 一种可编程逻辑控制器及其用户程序的管理方法

Also Published As

Publication number Publication date
CN103853943A (zh) 2014-06-11

Similar Documents

Publication Publication Date Title
CN103853943B (zh) 程序保护方法及装置
US10395012B2 (en) Media client device authentication using hardware root of trust
US10275364B2 (en) Secure island computing system and method
Lazar et al. Why does cryptographic software fail? A case study and open problems
CN105683990B (zh) 用于保护动态库的方法和装置
US8995655B2 (en) Method for creating asymmetrical cryptographic key pairs
CN113014444B (zh) 一种物联网设备生产测试系统及安全保护方法
CN104618096B (zh) 保护密钥授权数据的方法、设备和tpm密钥管理中心
CN104732159B (zh) 一种文件处理方法及装置
KR20160008560A (ko) 데이터 암호화 시스템 및 방법
CN107547198A (zh) 保护存储设备中的数据
CN108429719A (zh) 密钥保护方法及装置
CN106055936A (zh) 可执行程序数据包加密/解密方法及装置
CN109033808B (zh) 一种体验游戏的方法及账号服务端
CN104506504A (zh) 一种无卡终端涉密信息的安全机制及安全装置
CN107040520A (zh) 一种云计算数据共享系统及方法
CN110659506A (zh) 基于密钥刷新对存储器进行重放保护
KR102250430B1 (ko) Pki 기반의 일회성 아이디를 사용하여 서비스를 사용하는 방법, 및 이를 사용한 사용자 단말
Ozkan et al. Security analysis of mobile authenticator applications
CN105184119B (zh) 一种软件的安全保护方法
Reddy et al. Enhanced key establishment technique for secure data access in cloud
CN105281901A (zh) 一种云租户关键信息的加密方法
CN105022651B (zh) 一种设备生产过程中的防盗版方法及固件烧写装置
KR20110101317A (ko) 데이터 자동 암복호화 방법 및 장치
CN114329546A (zh) 文件的加密方法及装置、文件的解密方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160902

Address after: 510627 Guangdong city of Guangzhou province Whampoa Tianhe District Road No. 163 Xiping Yun Lu Yun Ping radio square B tower 13 floor 02 unit self

Applicant after: GUANGZHOU I9GAME INFORMATION TECHNOLOGY CO., LTD.

Address before: 100080 Beijing City, Haidian District Suzhou Street No. 29 building 16 room 10-20 Scandinavia

Applicant before: Excelle View Technology Co., Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200420

Address after: 310052 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Patentee after: Alibaba (China) Co.,Ltd.

Address before: 510627 Guangdong city of Guangzhou province Whampoa Tianhe District Road No. 163 Xiping Yun Lu Yun Ping radio square B tower 13 floor 02 unit self

Patentee before: GUANGZHOU UCWEB COMPUTER TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210301

Address after: Room 715, 7-storey, 7-storey, No. 10 Furong Street, Chaoyang District, Beijing, 100102

Patentee after: BEIJING GAODE YUNTU TECHNOLOGY Co.,Ltd.

Address before: 310052 room 508, 5th floor, building 4, No. 699 Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Patentee before: Alibaba (China) Co.,Ltd.