CN103995992A - 一种软件的保护方法和装置 - Google Patents
一种软件的保护方法和装置 Download PDFInfo
- Publication number
- CN103995992A CN103995992A CN201410232654.7A CN201410232654A CN103995992A CN 103995992 A CN103995992 A CN 103995992A CN 201410232654 A CN201410232654 A CN 201410232654A CN 103995992 A CN103995992 A CN 103995992A
- Authority
- CN
- China
- Prior art keywords
- software
- core document
- file
- session key
- module
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000012795 verification Methods 0.000 claims abstract description 11
- 230000001681 protective effect Effects 0.000 claims description 35
- 230000008569 process Effects 0.000 claims description 22
- 241000700605 Viruses Species 0.000 abstract description 7
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种软件的保护方法,一方面,该软件的保护方法包括:确定将要发行的软件的核心文件;根据预先配置的发行方的私钥,对核心文件进行数字签名,生成文件签名;根据文件签名和核心文件,生成与将要发行的软件对应的软件数据包;发行软件数据包。另一方面,该软件的保护方法包括:接收的软件数据包;对软件数据包进行分析,确定软件数据包中包含的文件签名;根据文件签名,对软件数据包中包含的核心文件的真实性和完整性进行验证;在核心文件通过验证的情况下,允许运行核心文件。本发明既保证了软件的真实性和完整性,同时又有效的防止了病毒和木马的攻击,大大的提高了软件的安全性。
Description
技术领域
本发明涉及软件技术领域,具体来说,涉及一种软件的保护方法和装置以及虚拟机。
背景技术
Java语言是一种解释型语言,其在实际应用时,是通过对Java源代码进行编译,生成字节码文件,然后在将所生成的字节码文件放在Java虚拟机中进行解释执行,以实现对应的功能。其中,由于是通过Java虚拟机这类运行机制来对Java的字节码文件进行解释执行的,因此,在实际应用时,会容易导致Java源代码被反编译。而且,目前现有的反编译工具有很多,且反编译的效果也很好,从而使得任何使用Java软件的用户都可以很容易的反编译和重构产品的源代码,进而使得所有基于Java语言的授权认证许可变得毫无意义,造成Java软件存在很大的安全隐患,例如,非法用户在对Java软件进行反编译和重构时,在Java代码中移植入木马和/或病毒。
为解决上述情况,现有技术中开发出了一种Java混淆器,其可以对Java字节码文件进行扰乱混淆,以使反编译工具在反编译还原操作后生成的Java源程序晦涩难懂,增加阅读理解难度,在一定程度上实现对Java软件的保护;然而,其仍然无法从本质上阻止反编译工具对Java字节码的反向工程,进而依然无法保证Java软件的安全性。
针对现有技术中的Java软件的源代码容易被反编译和重构,进而造成Java软件存在较大安全隐患的问题,目前尚未提出有效的解决方案。
发明内容
针对现有技术中的Java软件的源代码容易被反编译和重构,进而造成Java软件存在较大安全隐患的问题,本发明提出了一种软件的保护方法和装置以及虚拟机,既能够保证软件的真实性与完整性,又能够有效的防止软件被病毒或木马攻击,大大的提高了软件的安全性。
本发明的技术方案是这样实现的:
根据本发明的一方面,提供了一种软件的保护方法,该软件的保护方法用于在软件发行的过程中对软件进行保护,并且,该软件的保护方法包括:
确定将要发行的软件的核心文件;
根据预先配置的发行方的私钥,对核心文件进行数字签名,生成文件签名;
根据文件签名和核心文件,生成与将要发行的软件对应的软件数据包;
发行软件数据包。
其中,在根据文件签名和核心文件,生成与将要发行的软件对应的软件数据包时,可将文件签名与核心文件绑定;并根据绑定后的文件,生成与将要发行的软件对应的软件数据包。
另外,在根据文件签名和核心文件,生成与将要发行的软件对应的软件数据包时,还可根据预先配置会话密钥,对核心文件进行加密;并将加密后的核心文件与文件签名进行绑定,再根据绑定后的文件,生成与将要发行的软件对应的软件数据包。
此外,该软件的保护方法还可包括:发行会话密钥。
另外,该软件的保护方法也可包括:根据预先配置的指定用户的用户标识,确定与该用户标识对应的公钥;并根据该公钥,对会话密钥进行加密,生成数字信封,形成授权文件;同时发行该授权文件。
在上述方案中,会话密钥包括通过随机数发生器生成的随机数。
根据本发明的另一方面,提供了一种软件的保护装置,该软件的保护装置用于软件发行的过程中对软件进行保护,并且,该软件的保护装置包括:
文件确定模块,用于确定将要发行的软件的核心文件;
数字签名模块,用于根据预先配置的发行方的私钥,对核心文件进行数字签名,生成文件签名;
数据生成模块,用于根据文件签名和核心文件,生成与将要发行的软件对应的软件数据包;
数据发行模块,用于发行软件数据包。
其中,数据生成模块可包括第一绑定子模块和第一生成子模块,其中,第一绑定子模块,用于将文件签名与核心文件绑定;第一生成子模块,用于根据绑定后的文件,生成与将要发行的软件对应的软件数据包。
另外,数据生成模块也可包括文件加密子模块、第二绑定子模块和第二生成子模块,其中,文件加密子模块,用于根据预先配置的会话密钥,对核心文件进行加密;第二绑定子模块,用于将加密后的核心文件与文件签名进行绑定;第二生成子模块,用于根据绑定后的文件,生成与将要发行的软件对应的软件数据包。
此外,该软件的保护装置还可包括:密钥发行模块,用于发行会话密钥。
另外,该软件的保护装置也可包括:公钥确定模块、密钥加密模块以及授权发行模块,其中,公钥确定模块,用于根据预先配置的指定用户的用户标识,确定与该用户标识对应的公钥;密钥加密模块,用于根据该公钥,对会话密钥进行加密,生成数字信封,形成授权文件;授权发行模块,用于发行该授权文件。
在上述方案中,会话密钥包括通过随机数发生器生成的随机数。
根据本发明的又一方面,提供了一种软件的保护方法,该软件的保护方法用于在软件运行的过程中对软件进行保护,并且,该软件的保护方法包括:
接收的软件数据包;
对软件数据包进行分析,确定软件数据包中包含的文件签名;
根据文件签名,对软件数据包中包含的核心文件的真实性和完整性进行验证;
在核心文件通过验证的情况下,允许运行核心文件。
此外,该软件的保护方法还可包括:在核心文件为加密的情况下,接收会话密钥;并根据该会话密钥,对核心文件进行解密。
另外,该软件的保护方法也可包括:在核心文件为加密的情况下,接收授权文件;并根据预先配置的与指定用户的公钥对应的私钥,对该授权文件进行解密,得到会话密钥;并根据该会话密钥,对核心文件进行解密。
根据本发明的再一方面,提供了一种软件的保护装置,该软件的保护装置用于在软件运行的过程中对软件进行保护,并且,该软件的保护装置包括:
数据接收模块,用于接收软件数据包;
数据解析模块,用于对软件数据包进行解析,确定软件数据包中包含的文件签名;
签名验证模块,用于根据文件签名,对软件数据包中包含的核心文件的真实性和完整性进行验证;
数据运行模块,用于在核心文件通过验证的情况下,允许运行核心文件。
此外,该软件的保护装置还可包括:密钥接收模块和第一解密模块,其中,密钥接收模块,用于在核心文件为加密的情况下,接收会话密钥;第一解密模块,用于根据该会话密钥,对核心文件进行解密。
另外,该软件的保护装置也可包括:授权接收模块、授权解析模块以及第二解密模块,其中,授权接收模块,用于在核心文件为加密的情况下,接收授权文件;授权解析模块,用于根据预先配置的与指定用户的公钥对应的私钥,对该授权文件进行解密,得到会话密钥;第二解密模块,用于根据该会话密钥,对核心文件进行解密。
根据本发明的又一方面,还提供了一种虚拟机,该虚拟机的类加载器中包括上述软件运行过程中的软件保护装置。
本发明通过在发行软件时,对核心文件进行数字签名,生成文件签名,并将文件签名和核心文件进行绑定,生成将要发行的软件数据包,同时通过在运行软件时,根据软件数据包中的文件签名,对软件数据包中的核心文件进行真实性和完整性的验证,并在核心文件通过验证的情况下,才允许运行核心文件,从而保证了软件的真实性和完整性,而且还有效的防止了病毒和木马的攻击,大大的提高了软件的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的软件的保护方法的流程示意图;
图2是根据本发明实施例的另一软件的保护方法的流程示意图;
图3是现有技术中的传统的Java软件的执行过程示意图;
图4是根据本发明实施例的经过CPK数字签名和加密的Java软件的执行过程示意图;
图5是根据本发明实施例的软件的保护装置的结构示意图;
图6是根据本发明实施例的另一软件的保护装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明的实施例,提供了一种软件的保护方法,该软件的保护方法用于在软件发行的过程中对软件进行保护。
如图1所示,根据本发明实施例的软件的保护方法包括:
步骤S101,确定将要发行的软件的核心文件;
步骤S103,根据预先配置的发行方的私钥,对核心文件进行数字签名,生成文件签名;
步骤S105,根据文件签名和核心文件,生成与将要发行的软件对应的软件数据包;
步骤S107,发行软件数据包。
在一个实施例中,在根据文件签名和核心文件,生成与将要发行的软件对应的软件数据包时,可将文件签名与核心文件绑定,并根据绑定后的文件,生成与将要发行的软件对应的软件数据包。
在另一个实施例中,为了防止核心文件被反编译,在根据文件签名和核心文件,生成与将要发行的软件对应的软件数据包时,可根据预先配置的会话密钥,对核心文件进行加密;并将加密后的核心文件与文件签名进行绑定,再根据绑定后的文件,生成与将要发行的软件对应的软件数据包。
而由于是通过会话密钥对核心文件进行加密的,因此,为了使得用户能够查看或使用该核心文件,该软件的保护方法还需要发行该会话密钥。而对于会话密钥的发行来说,其可以直接发行,也可以进行进一步的处理之后,再进行发行,例如,为了防止会话密钥被窃取,可以通过预先对该会话密钥进行加密,然后再发行。具体的,可根据预先配置的指定用户的用户标识,确定与该用户标识对应的公钥,并根据该公钥,对会话密钥进行加密,生成数字信封,形成授权文件,然后再发行该授权文件。
在上述过程中,对于会话密钥的二次加密再发行来说,其不仅可以防止会话密钥被窃取,同时还可以实现指定用户的权限管理,即只能由发行方指定的用户才能够得到该会话密钥,而非指定的用户,则无法得到该会话密钥。这为发行方和合法用户的权益提供有效的保障。
而在上述方案中,会话密钥可以是随机数发生器生成的随机数,当然,在实际应用过程中,其也可以是其他相关设备所生成的随机数,同时也可以是发行方自行定义的数值,或者是发行方与指定用户协商后所设定的数值。
根据本发明的实施例,提供了一种软件的保护方法,该软件的保护方法用于在软件运行的过程中对软件进行保护。
如图2所示,根据本发明实施例的软件的保护方法包括:
步骤S201,接收的软件数据包;
步骤S203,对软件数据包进行分析,确定软件数据包中包含的文件签名;
步骤S205,根据文件签名,对软件数据包中包含的核心文件的真实性和完整性进行验证;
步骤S207,在核心文件通过验证的情况下,允许运行核心文件。
在一个实施例中,当发行方为了防止核心文件被反编译,而对核心文件进行加密时,还可接收发行方发行的会话密钥,并根据该会话密钥,对核心文件进行解密。
在另一个实施例中,当发行方为了防止会话密钥被窃取,而对会话密钥进行了进一步的加密,形成授权文件时,则还可接收该授权文件,并根据预先配置的与指定用户的公钥对应的私钥,对该授权文件进行解密,得到会话密钥,并根据该会话密钥,对核心文件进行解密。
为了方便理解本发明的上述技术方案,以下通过对Java软件进行保护为例,对本发明的上述技术方案进行详细说明。
对于Java软件来说,在对其进行保护时,可利用组合公钥CPK技术对其class代码进行数字签名、加密,使得处理后的class代码与处理前的class代码完成相同的功能,但是,应当知道的是,加密的class代码是不可能被反编译的,而且根据本发明的技术方案,在运行Java软件时,是只有对加密的class代码解密后且通过了签名验证才会被Java虚拟机(Java VirtualMachine,缩写为JVM)正确的加载。
在上述过程中,通过对Java软件的class代码进行数字签名,不仅保证了Java软件的真实性和完整性,还能够有效的防止Java软件被病毒或木马攻击,而通过对Java软件的class代码进行CPK加密,则不仅能够防止软件被反编译,而且还能够解决软件的盗版问题,达到保护软件完整与版权的目的。
在实际应用时,对于Java软件的保护来说,其可以分为发行保护和运行保护,其中,对于发行保护来说,其包括发行时的数字签名过程和class文件加密过程;而对于运行保护来说,其包括class密文解密过程和数字签名验证过程。以下就分别从软件的发行和运行两个方面对Java软件的保护流程进行详细说明。
对于软件的发行来说,软件发行时的加密与签名流程如下:
1)在软件发行时,发行方用自己的私钥对软件的核心程序(class文件)进行CPK数字签名,并将签名结果缓存于内存;
2)用随机数发生器生成一个随机数作为加密的class文件的会话密钥,再用这个会话密钥对软件中包含的class文件进行对称加密,生成临时文件;
3)将步骤1)所生成的签名数据与步骤2)所生成的临时文件进行绑定,生成可用于发布的带签名的密文文件;
4)用发行方的公钥对会话密钥进行加密,生成软件的授权文件;
5)对处理后的数据进行打包,作为Java软件的数据发行包;
6)根据用户订单中的用户标识计算生成用户的CPK私钥,并将该私钥存储到安全芯片设备中(例如,USB Key);
7)用发行方的私钥解密授权文件,得到会话密钥,再以用户的公钥加密会话密钥,以生成特定的授权文件;
8)将软件发行包、授权文件和安全芯片设备一并提供给用户。
对于软件的运行来说,软件运行时的解密与签名验证流程如下:
1)用户得到软件后,将软件发行包部署于服务器的WEB容器,同时将授权文件按规则进行配置;
2)将CPK解密模块和签名验证模块进行部署,并配置Java虚拟机JVM;
3)将安全芯片设备接入服务器,启动JVM,录入安全芯片的PIN(口令)以验证用户的合法性并启动安全芯片设备;
4)JVM调用CPK解密模块,用授权文件和安全芯片设备计算出会话密钥,如果计算失败,则退出程序;
5)CPK解密模块对需要加载的运行的class密文文件进行解密得到class文件的明文;
6)调用签名验证模块提取签名信息并对解密后的明文进行数字签名验证,如果验证失败,则拒绝加载此class文件;
7)验证通过,再提取发行方标识,对发行方的合法性进行检查,如果发行方标识不在白名单中,则拒绝执行;
8)将class明文文件加载到内存并执行。
为了方便了解本发明的上述技术方案与传统现有相关技术方案的区别以及所实现的效果,下面将结合附图,详细阐述传统方案与本发明的上述技术方案的区别,当然,在该部分中,对于本发明的上述技术方案来说,依然是以对Java软件进行保护为例进行说明的。
图3是传统的Java文件的执行过程示意图,从图3中可以看出,传统的部署过程中,对于Java软件的部署并未采用任何的保护措施,其是先将Java软件的class文件进行程序发布(在发布时class文件以war数据包的形式存在),然后安装Java虚拟机JVM,JVM根据程序的配置进行class文件的加载(实质上,加载的是war数据包)并执行,此处class文件可被反编译。
而图4是经过CPK数字签名和加密的Java软件的执行过程示意图,从图4中可以看出,在进行部署之前,根据CPK算法,首先对生成的class文件进行数字签名、加密,然后打包,而当客户安装部署后,暴露给客户的是加密后的class文件,此时,反编译人员则无法通过反编译得到正确的class代码,进而保证了源代码的安全,而签名验证则保证了源代码的合法性。
由此可见,通过本发明的上述方案,不仅能够保证软件的真实性和完整性,防止病毒或木马的攻击,提高软件的安全性,而且还能够保证防止软件被反编译,解决软件的盗版问题,实现软件完整与版权的保护。
与上述方案相对应的,根据本发明的实施例,提供了一种软件的保护装置,该软件的保护装置用于软件发行的过程中对软件进行保护。
如图5所示,根据本发明实施例的软件的保护装置包括:
文件确定模块51,用于确定将要发行的软件的核心文件;
数字签名模块52,用于根据预先配置的发行方的私钥,对核心文件进行数字签名,生成文件签名;
数据生成模块53,用于根据文件签名和核心文件,生成与将要发行的软件对应的软件数据包;
数据发行模块54,用于发行软件数据包。
在一个实施例中,数据生成模块53可包括第一绑定子模块(未示出)和第一生成子模块(未示出),其中,第一绑定子模块,用于将文件签名与核心文件绑定;第一生成子模块,用于根据绑定后的文件,生成与将要发行的软件对应的软件数据包。
在另一个实施例中,为了防止核心文件被反编译,数据生成模块53可包括文件加密子模块(未示出)、第二绑定子模块(未示出)和第二生成子模块(未示出),其中,文件加密子模块,用于根据预先配置的会话密钥,对核心文件进行加密;第二绑定子模块,用于将加密后的核心文件与文件签名进行绑定;第二生成子模块,用于根据绑定后的文件,生成与将要发行的软件对应的软件数据包。
而由于是通过会话密钥对核心文件进行加密的,因此,为了使得用户能够查看或使用该核心文件,该软件的保护装置还可包括:密钥发行模块(未示出),用于发行会话密钥。而对于会话密钥的发行来说,其可以直接发行,也可以进行进一步的处理之后,再进行发行,因此,该软件的保护装置也可包括:公钥确定模块(未示出)、密钥加密模块(未示出)以及授权发行模块(未示出),其中,公钥确定模块,用于根据预先配置的指定用户的用户标识,确定与该用户标识对应的公钥;密钥加密模块,用于根据该公钥,对会话密钥进行加密,生成。
在上述方案中,会话密钥可以是随机数发生器生成的随机数,当然,在实际应用过程中,其也可以是其他相关设备所生成的随机数,同时也可以是发行方自行定义的数值,或者是发行方与指定用户协商后所设定的数值。
根据本发明的实施例,提供了一种软件的保护装置,该软件的保护装置用于在软件运行的过程中对软件进行保护。
如图6所示,根据本发明实施例的软件的保护装置包括:
数据接收模块61,用于接收软件数据包;
数据解析模块62,用于对软件数据包进行解析,确定软件数据包中包含的文件签名;
签名验证模块63,用于根据文件签名,对软件数据包中包含的核心文件的真实性和完整性进行验证;
数据运行模块64,用于在核心文件通过验证的情况下,允许运行核心文件。.
在一个实施例中,当发行方为了防止核心文件被反编译,而对核心文件进行加密,运行时就需要对核心文件进行相应的解密,因此,该软件的保护装置还可包括:密钥接收模块(未示出)和第一解密模块(未示出),其中,密钥接收模块,用于在核心文件为加密的情况下,接收会话密钥;第一解密模块,用于根据该会话密钥,对核心文件进行解密。
在另一个实施例中,当发行方为了防止会话密钥被窃取,而对会话密钥进行了进一步的加密,形成授权文件,运行时则就需要对授权文件进行解密,得到会话密钥,然后根据会话密钥对核心文件进行解密,因此,该软件的保护装置还可包括:授权接收模块(未示出)、授权解析模块(未示出)以及第二解密模块(未示出),其中,授权接收模块,用于在核心文件为加密的情况下,接收授权文件;授权解析模块,用于根据预先配置的与指定用户的公钥对应的私钥,对该授权文件进行解密,得到会话密钥;第二解密模块,用于根据该会话密钥,对核心文件进行解密。
此外,在实际应用时,由于对软件的核心代码进行了数字签名以及加密等机制的保护,因此,在通过虚拟机对软件进行运行时,其运行的步骤也会进行相应的改变,而这就促使了需要对虚拟机的类加载器做出相应的改进,才能满足实现采用保护机制的软件的运行。
具体的,对于Java虚拟机JVM来说,JVM每次装入类文件是都需要一个称为ClassLoader(类加载器)的对象,这个对象负载把类装入正在运行的JVM中,JVM给ClassLoader一个包含了待装入类名字(例如,Java.lang.Object)的字符串,然后由ClassLoader负责找到类文件,装入原始数据,并把它转换成一个class对象。
因此,在实际应用过程中,在类文件执行之前,需要修改ClassLoader,而由于在本发明中,对于ClassLoader来说,其用途是在类文件装入之时进行解密、签名验证,只有正确解密后的文件才可以被执行,且只有通过签名验证的文件才能够允许被加载,所以,对于ClassLoader来说,需要在ClassLoader中加入上述运行时的软件的保护装置中的各个模块。
相应的,根据本发明的实施例,还提供了一种虚拟机,该虚拟机的类加载器中包括上述软件运行过程中的软件保护装置。
综上所述,借助于本发明的上述技术方案,通过在发行软件时,对核心文件进行数字签名,生成文件签名,并将文件签名和核心文件进行绑定,生成将要发行的软件数据包,同时通过在运行软件时,根据软件数据包中的文件签名,对软件数据包中的核心文件进行真实性和完整性的验证,并在核心文件通过验证的情况下,才允许运行核心文件,从而保证了软件的真实性和完整性,而且还有效的防止了病毒和木马的攻击,大大的提高了软件的安全性。
此外,借助于本发明的上述技术方案,通过在发行软件时,对核心文件进行加密,从而有效的防止了非法用户在软件运行时对软件的核心文件进行反编译,实现了软件完整与版权的保护,解决了软件的盗版问题。同时通过向指定用户发行加密核心文件的会话密钥和/或授权文件,从而使得在防止非法用户对软件的核心文件继续反编译的同时,有效的保证了合法用户对于核心文件的处理需求。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (19)
1.一种软件的保护方法,其特征在于,用于在软件发行的过程中对软件进行保护,并且,所述软件的保护方法包括:
确定将要发行的软件的核心文件;
根据预先配置的发行方的私钥,对所述核心文件进行数字签名,生成文件签名;
根据所述文件签名和所述核心文件,生成与将要发行的软件对应的软件数据包;
发行所述软件数据包。
2.根据权利要求1所述的保护方法,其特征在于,根据所述文件签名和所述核心文件,生成与将要发行的软件对应的软件数据包包括:
将所述文件签名与所述核心文件绑定;
根据绑定后的文件,生成与将要发行的软件对应的软件数据包。
3.根据权利要求1所述的保护方法,其特征在于,根据所述文件签名和所述核心文件,生成与将要发行的软件对应的软件数据包包括:
根据预先配置的会话密钥,对所述核心文件进行加密;
将加密后的核心文件与所述文件签名进行绑定;
根据绑定后的文件,生成与将要发行的软件对应的软件数据包。
4.根据权利要求3所述的保护方法,其特征在于,进一步包括:
发行所述会话密钥。
5.根据权利要求3所述的保护方法,其特征在于,进一步包括:
根据预先配置的指定用户的用户标识,确定与该用户标识对应的公钥;
根据所述公钥,对所述会话密钥进行加密,生成数字信封,形成授权文件;
发行所述授权文件。
6.根据权利要求3至5中任意一项所述的保护方法,其特征在于,所述会话密钥包括通过随机数发生器生成的随机数。
7.一种软件的保护装置,其特征在于,用于在软件发行的过程中对软件进行保护,并且,所述软件的保护装置包括:
文件确定模块,用于确定将要发行的软件的核心文件;
数字签名模块,用于根据预先配置的发行方的私钥,对所述核心文件进行数字签名,生成文件签名;
数据生成模块,用于根据所述文件签名和所述核心文件,生成与将要发行的软件对应的软件数据包;
数据发行模块,用于发行所述软件数据包。
8.根据权利要求7所述的保护装置,其特征在于,所述数据生成模块包括第一绑定子模块和第一生成子模块,其中,
第一绑定子模块,用于将所述文件签名与所述核心文件绑定;
第一生成子模块,用于根据绑定后的文件,生成与将要发行的软件对应的软件数据包。
9.根据权利要求7所述的保护装置,其特征在于,所述数据生成模块包括文件加密子模块、第二绑定子模块和第二生成子模块,其中,
文件加密子模块,用于根据预先配置的会话密钥,对所述核心文件进行加密;
第二绑定子模块,用于将加密后的核心文件与所述文件签名进行绑定;
第二生成子模块,用于根据绑定后的文件,生成与将要发行的软件对应的软件数据包。
10.根据权利要求9所述的保护装置,其特征在于,进一步包括:
密钥发行模块,用于发行所述会话密钥。
11.根据权利要求9所述的保护装置,其特征在于,进一步包括:
公钥确定模块,用于根据预先配置的指定用户的用户标识,确定与该用户标识对应的公钥;
密钥加密模块,用于根据所述公钥,对所述会话密钥进行加密,生成数字信封,形成授权文件;
授权发行模块,用于发行所述授权文件。
12.根据权利要求9至11中任意一项所述的保护装置,其特征在于,所述会话密钥包括通过随机数发生器生成的随机数。
13.一种软件的保护方法,其特征在于,用于在软件运行的过程中对软件进行保护,并且,所述软件的保护方法包括:
接收的软件数据包;
对所述软件数据包进行分析,确定所述软件数据包中包含的文件签名;
根据所述文件签名,对所述软件数据包中包含的核心文件的真实性和完整性进行验证;
在所述核心文件通过验证的情况下,允许运行所述核心文件。
14.根据权利要求13所述的保护方法,其特征在于,进一步包括:
在所述核心文件为加密的情况下,接收会话密钥;
根据所述会话密钥,对所述核心文件进行解密。
15.根据权利要求13所述的保护方法,其特征在于,进一步包括:
在所述核心文件为加密的情况下,接收授权文件;
根据预先配置的与指定用户的公钥对应的私钥,对所述授权文件进行解密,得到会话密钥;
根据该会话密钥,对所述核心文件进行解密。
16.一种软件的保护装置,其特征在于,用于在软件运行的过程中对软件进行保护,并且,所述软件的保护装置包括:
数据接收模块,用于接收软件数据包;
数据解析模块,用于对所述软件数据包进行解析,确定所述软件数据包中包含的文件签名;
签名验证模块,用于根据所述文件签名,对所述软件数据包中包含的核心文件的真实性和完整性进行验证;
数据运行模块,用于在所述核心文件通过验证的情况下,允许运行所述核心文件。
17.根据权利要求16所述的保护装置,其特征在于,进一步包括:
密钥接收模块,用于在所述核心文件为加密的情况下,接收会话密钥;
第一解密模块,用于根据所述会话密钥,对所述核心文件进行解密。
18.根据权利要求16所述的保护装置,其特征在于,进一步包括:
授权接收模块,用于在所述核心文件为加密的情况下,接收授权文件;
授权解析模块,用于根据预先配置的与指定用户的公钥对应的私钥,对所述授权文件进行解密,得到会话密钥;
第二解密模块,用于根据该会话密钥,对所述核心文件进行解密。
19.一种虚拟机,其特征在于,该虚拟机的类加载器中包括权利要求16至18中任意一项所述的软件的保护装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410232654.7A CN103995992A (zh) | 2014-05-28 | 2014-05-28 | 一种软件的保护方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410232654.7A CN103995992A (zh) | 2014-05-28 | 2014-05-28 | 一种软件的保护方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103995992A true CN103995992A (zh) | 2014-08-20 |
Family
ID=51310155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410232654.7A Pending CN103995992A (zh) | 2014-05-28 | 2014-05-28 | 一种软件的保护方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103995992A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104200137A (zh) * | 2014-09-04 | 2014-12-10 | 成都卫士通信息产业股份有限公司 | 一种保护java程序自身安全的方法 |
CN106250726A (zh) * | 2016-08-10 | 2016-12-21 | 深圳金澜汉源科技有限公司 | 软件版本状态管控方法 |
CN107135074A (zh) * | 2016-02-29 | 2017-09-05 | 中兴通讯股份有限公司 | 一种高级安全方法和装置 |
CN108292341A (zh) * | 2015-11-19 | 2018-07-17 | 纳格拉影像股份有限公司 | 用于核查目标装置中的应用的执行完整性的方法 |
WO2019134276A1 (zh) * | 2018-01-05 | 2019-07-11 | 武汉斗鱼网络科技有限公司 | 一种保护网页代码的方法、存储介质、电子设备和系统 |
CN110245466A (zh) * | 2019-06-19 | 2019-09-17 | 苏州科达科技股份有限公司 | 软件完整性保护和验证方法、系统、设备及存储介质 |
CN111159661A (zh) * | 2018-11-08 | 2020-05-15 | 迈普通信技术股份有限公司 | 一种防止反编译方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512355A (zh) * | 2002-12-30 | 2004-07-14 | 成都三零盛安信息系统有限公司 | 一种elf文件格式的代码签名验证方法 |
CN101872404A (zh) * | 2009-04-21 | 2010-10-27 | 普天信息技术研究院有限公司 | 一种保护Java软件程序的方法 |
CN102129532A (zh) * | 2011-03-23 | 2011-07-20 | 阮晓迅 | 一种数字版权保护方法和系统 |
US20130036298A1 (en) * | 2007-01-07 | 2013-02-07 | Apple Inc. | Securely recovering a computing device |
CN103440463A (zh) * | 2013-09-17 | 2013-12-11 | 上海颐东网络信息有限公司 | 一种基于标签的电子文件保护方法 |
CN103530202A (zh) * | 2011-09-30 | 2014-01-22 | 北京奇虎科技有限公司 | 针对终端程序的云备份及恢复方法 |
-
2014
- 2014-05-28 CN CN201410232654.7A patent/CN103995992A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512355A (zh) * | 2002-12-30 | 2004-07-14 | 成都三零盛安信息系统有限公司 | 一种elf文件格式的代码签名验证方法 |
US20130036298A1 (en) * | 2007-01-07 | 2013-02-07 | Apple Inc. | Securely recovering a computing device |
CN101872404A (zh) * | 2009-04-21 | 2010-10-27 | 普天信息技术研究院有限公司 | 一种保护Java软件程序的方法 |
CN102129532A (zh) * | 2011-03-23 | 2011-07-20 | 阮晓迅 | 一种数字版权保护方法和系统 |
CN103530202A (zh) * | 2011-09-30 | 2014-01-22 | 北京奇虎科技有限公司 | 针对终端程序的云备份及恢复方法 |
CN103440463A (zh) * | 2013-09-17 | 2013-12-11 | 上海颐东网络信息有限公司 | 一种基于标签的电子文件保护方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104200137A (zh) * | 2014-09-04 | 2014-12-10 | 成都卫士通信息产业股份有限公司 | 一种保护java程序自身安全的方法 |
CN108292341A (zh) * | 2015-11-19 | 2018-07-17 | 纳格拉影像股份有限公司 | 用于核查目标装置中的应用的执行完整性的方法 |
CN108292341B (zh) * | 2015-11-19 | 2022-03-29 | 纳格拉影像股份有限公司 | 用于核查目标装置中的应用的执行完整性的方法 |
CN107135074A (zh) * | 2016-02-29 | 2017-09-05 | 中兴通讯股份有限公司 | 一种高级安全方法和装置 |
CN107135074B (zh) * | 2016-02-29 | 2021-11-02 | 中兴通讯股份有限公司 | 一种高级安全方法和装置 |
CN106250726A (zh) * | 2016-08-10 | 2016-12-21 | 深圳金澜汉源科技有限公司 | 软件版本状态管控方法 |
WO2019134276A1 (zh) * | 2018-01-05 | 2019-07-11 | 武汉斗鱼网络科技有限公司 | 一种保护网页代码的方法、存储介质、电子设备和系统 |
CN111159661A (zh) * | 2018-11-08 | 2020-05-15 | 迈普通信技术股份有限公司 | 一种防止反编译方法、装置、电子设备及存储介质 |
CN110245466A (zh) * | 2019-06-19 | 2019-09-17 | 苏州科达科技股份有限公司 | 软件完整性保护和验证方法、系统、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103995992A (zh) | 一种软件的保护方法和装置 | |
CN1581118B (zh) | 安全设备、信息处理终端、集成电路、应用装置及方法 | |
CN103229451B (zh) | 用于硬件设备的密钥供应的方法和装置 | |
CN110138799A (zh) | 一种基于sgx的安全云存储方法 | |
RU2018141237A (ru) | Использование аппаратно-обеспечиваемой защищенной изолированной области для предотвращения пиратства и мошенничества в электронных устройствах | |
CN107294710B (zh) | 一种vTPM2.0的密钥迁移方法及装置 | |
CN106027503A (zh) | 一种基于tpm的云存储数据加密方法 | |
CN110096849A (zh) | 一种License授权认证方法、装置、设备及可读存储介质 | |
CN104463040A (zh) | 一种密码安全输入方法及系统 | |
CN104573549A (zh) | 一种可信的数据库机密性保护方法及系统 | |
CN111124453B (zh) | 一种终端设备固件程序升级方法 | |
JP2010517449A (ja) | 信頼できない受信者における秘密の保護 | |
CN114692218A (zh) | 一种面向个人用户的电子签章方法、设备和系统 | |
CN104268447A (zh) | 一种嵌入式软件的加密方法 | |
JP6796861B2 (ja) | アプリケーションソフトウェアの提供及び認証方法並びにそのためのシステム | |
CN105871858A (zh) | 一种保证数据安全的方法及系统 | |
CN104392153B (zh) | 一种软件保护方法及系统 | |
CN104090772A (zh) | 一种生成安卓安装包apk的方法及装置 | |
CN109784072B (zh) | 一种安全文件管理方法和系统 | |
KR20140071775A (ko) | 암호키 관리 시스템 및 방법 | |
CN104504312A (zh) | 软件反调试保护方法 | |
KR102055888B1 (ko) | 정보 보호를 위한 파일 암복호화 방법 | |
Mavrogiannopoulos et al. | A linux kernel cryptographic framework: decoupling cryptographic keys from applications | |
CN114070548A (zh) | 一种基于软加密狗装置的软件版权加密保护方法 | |
CN113536238A (zh) | 一种基于密码技术的软件使用授权认证方法、系统及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140820 |