CN110110507A - 一种软件授权与保护的方法、装置、系统及存储介质 - Google Patents

一种软件授权与保护的方法、装置、系统及存储介质 Download PDF

Info

Publication number
CN110110507A
CN110110507A CN201910344291.9A CN201910344291A CN110110507A CN 110110507 A CN110110507 A CN 110110507A CN 201910344291 A CN201910344291 A CN 201910344291A CN 110110507 A CN110110507 A CN 110110507A
Authority
CN
China
Prior art keywords
program file
software
integrality
signature
integrity code
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.)
Withdrawn
Application number
CN201910344291.9A
Other languages
English (en)
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.)
Shenzhen Guo Xinheng Space Science And Technology Ltd
Original Assignee
Shenzhen Guo Xinheng Space Science And Technology 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 Shenzhen Guo Xinheng Space Science And Technology Ltd filed Critical Shenzhen Guo Xinheng Space Science And Technology Ltd
Priority to CN201910344291.9A priority Critical patent/CN110110507A/zh
Publication of CN110110507A publication Critical patent/CN110110507A/zh
Withdrawn legal-status Critical Current

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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Abstract

本发明提供了一种一种软件授权与保护的方法、装置、系统及存储介质,该方法包括发布步骤,发布步骤包括:第1步:将完整性的RSA公钥打散后整合入软件的程序代码中,通过授权的RSA私钥产生自签名的CA根证书,将CA根证书整合入软件的程序代码中;第2步:对软件的初始程序文件进行hash计算产生完整性码,通过完整性的RSA私钥对完整性码进行数字签名,从而产生签名的完整性码,将签名的完整性码追加到初始程序文件尾部,形成最终程序文件。本发明的有益效果是:通过使用第二对RSA非对称密钥实现软件发布的完整性效验,结合第一对RSA非对称密钥产生的公私钥证书(根证书)等完成对软件动态授权的高强度保护。

Description

一种软件授权与保护的方法、装置、系统及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种软件授权与保护的方法、装置、系统及存储介质。
背景技术
目前比较流行的软件授权保护方式,大都采用如下两种方式:
第一种,为外壳加密技术,即将软件的有效部分进行加密后转换为密文,并在软件文档的头部或者其他部位加入一个解密软件模块,如要正常使用软件需要获得合法的软件密钥,比如:软件注册码,这种方式的缺点为无法防止注册码被分发和被多台电脑使用,无法有效提供单个电脑和用户的差异性授权保护。往往这种加密方式多采用基于私有的保密算法,一旦私有算法被逆向破解,黑客基于此产生非授权的注册码算号器。
第二种,基于数字签名认证的软件授权保护,技术的缺点如下:
缺点1为:CA证书必须捆绑到发布软件中,且必须被保护防止被篡改或替换。
缺点2为:比较过程很容易被软件逆向工程进行篡改和绕过去,通过逆向工程可以找到最终比较结果的存放地址,然后绕过比较模块直接修改最终比较值为一固定的满足值,则整个保护形同虚设。
发明内容
本发明提供了一种软件授权与保护的方法,包括发布步骤,
发布步骤包括:
第1步:将完整性的RSA公钥打散后整合入软件的程序代码中,通过授权的RSA私钥产生自签名的CA根证书,将CA根证书整合入软件的程序代码中;
第2步:对软件的初始程序文件进行hash计算产生完整性码,初始程序文件不包含尾部的完整性码,通过完整性的RSA私钥对完整性码进行数字签名,从而产生签名的完整性码,将签名的完整性码追加到初始程序文件尾部,形成最终程序文件,该最终程序文件是含有签名的完整性码的程序文件。
作为本发明的进一步改进,该方法还包括在发布步骤后执行运行检查步骤,
运行检查步骤包括:
第一步:针对最终程序文件,使用私有算法连接分散的完整性的RSA公钥,从而产生临时内存中非连续存放的完整性的RSA公钥;计算出最终程序文件的hash值,此时不计算最终程序文件的签名的完整性码的hash值;截取最终程序文件尾部的完整性值;
第二步:通过临时内存中非连续存放的完整性的RSA公钥对截取最终程序文件尾部的完整性值进行解密,从而得到临时内存中非连续存放的散列值;
第三步:将第一步中的计算出最终程序文件的hash值与第二步中的散列值进行等值性比较,若相同,则允许使用软件,否则禁止使用软件;在第一步中计算出最终程序文件的hash值时,不计算最终程序文件的签名的完整性码的hash值。
作为本发明的进一步改进,在所述发布步骤中,将完整性的RSA公钥使用私有无密加密算法加密后保存在软件的静态程序文件中。
作为本发明的进一步改进,内存的数据存放采用标准模板容器,由于标准模板容器中的元素采用非连续动态内存存放的特性,将极大的增加软件逆向工程的难度。
本发明还提供了一种软件授权与保护的装置,包括发布单元,
发布单元包括:
第一发布模块:用于将完整性的RSA公钥打散后整合入软件的程序代码中,通过授权的RSA私钥产生自签名的CA根证书,将CA根证书整合入软件的程序代码中;
第二发布模块:用于对软件的初始程序文件进行hash计算产生完整性码,初始程序文件不包含尾部的完整性码,通过完整性的RSA私钥对完整性码进行数字签名,从而产生签名的完整性码,将签名的完整性码追加到初始程序文件尾部,形成最终程序文件,该最终程序文件是含有签名的完整性码的程序文件。
作为本发明的进一步改进,该装置还包括在发布单元后执行运行检查单元,
运行检查单元包括:
初始运行模块:用于针对最终程序文件,使用私有算法连接分散的完整性的RSA公钥,从而产生临时内存中非连续存放的完整性的RSA公钥;计算出最终程序文件的hash值,此时不计算最终程序文件的签名的完整性码的hash值;截取最终程序文件尾部的完整性值;
解密模块:用于通过临时内存中非连续存放的完整性的RSA公钥对截取最终程序文件尾部的完整性值进行解密,从而得到临时内存中非连续存放的散列值;
比较模块:用于将初始运行模块中的计算出最终程序文件的hash值与解密模块中的散列值进行等值性比较,若相同,则允许使用软件,否则禁止使用软件;在初始运行模块中计算出最终程序文件的hash值时,不计算最终程序文件的签名的完整性码的hash值。
作为本发明的进一步改进,在所述发布单元中,将完整性的RSA公钥使用私有无密加密算法加密后保存在软件的静态程序文件中。
作为本发明的进一步改进,内存的数据存放采用标准模板容器,由于标准模板容器中的元素采用非连续动态内存存放的特性,将极大的增加软件逆向工程的难度。
本发明还提供了一种软件授权与保护的系统,包括:存储器、处理器以及存储在所述存储器上的计算机程序,所述计算机程序配置为由所述处理器调用时实现本发明所述的方法的步骤。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现本发明所述的方法的步骤。
本发明的有益效果是:通过使用第二对RSA非对称密钥实现软件发布的完整性效验,结合第一对RSA非对称密钥产生的公私钥证书(根证书)等完成对软件动态授权的高强度保护。
附图说明
图1是本发明的发布步骤流程图。
图2是本发明的运行检查步骤流程图。
具体实施方式
本发明公开了一种软件授权与保护的方法,包括发布步骤,如图1所示,在发布步骤中包括:
第1步:将完整性的RSA公钥打散后整合入软件的程序代码中,通过授权的RSA私钥产生自签名的CA根证书,将CA根证书整合入软件的程序代码中;
第2步:对软件的初始程序文件进行hash计算产生完整性码,初始程序文件不包含尾部的完整性码,通过完整性的RSA私钥对完整性码进行数字签名,从而产生签名的完整性码,将签名的完整性码追加到初始程序文件尾部,形成最终程序文件,该最终程序文件是含有签名的完整性码的程序文件。
如图2所示,该方法还包括在发布步骤后执行运行检查步骤,运行检查步骤包括:
第一步:针对最终程序文件,使用私有算法连接分散的完整性的RSA公钥,从而产生临时内存中非连续存放的完整性的RSA公钥;计算出最终程序文件的hash值,此时不计算最终程序文件的签名的完整性码的hash值;截取最终程序文件尾部的完整性值;
第二步:通过临时内存中非连续存放的完整性的RSA公钥对截取最终程序文件尾部的完整性值进行解密,从而得到临时内存中非连续存放的散列值;
第三步:将第一步中的计算出最终程序文件的hash值与第二步中的散列值进行等值性比较,若相同,则允许使用软件,否则禁止使用软件;在第一步中计算出最终程序文件的hash值时,不计算最终程序文件的签名的完整性码的hash值。
在本发明中,将授权的RSA公私钥称为第一对公私钥对,将完整性的RSA公私钥称为第二公私钥对。
将第二公私钥对的公钥打散后混合交替式插入到发布的软件中,第二公私钥对的公钥和第一对公私钥中的CA根证书也同时受到完整性保护。由于其都为公钥,所以就算黑客从软件静态文件中提取出来,也是无害的。对于公钥的保存,为了达到更高的安全性,可考虑使用私有无密加密算法加密后存在在静态程序文件中,可以扰乱加解密的无须性和增加逆向分析的难度。
在本发明中,程序逻辑中增加对整个软件完整性的验证逻辑,且整个逻辑运算中内存部分的数据存放采用标准模板容器,由于模板容器中的元素采用非连续动态内存存放的特性,将极大的增加软件逆向工程的难度,将使得软件的动态或静态追踪分析变得几乎不可能。这样就确保了整个软件不可能被修改,一旦修改,完整性检查不能通过,既可以起到保护第一对的CA根证书,也可以保护整个软件的逻辑代码不能被篡改。
在使用私有算法连接分散的完整性的RSA公钥,从而产生临时内存中非连续存放的完整性的RSA公钥后,在允许使用中,在基础的高频函数中,调用完整性检查模块,由于私钥处于软件公司内部私有保密状态,程序文件中的都是公钥,故此,破解人员在哪怕是篡改任何一个程序文件的Bit位都将导致整个文件的Hash散列值发生单向的巨大变化,且由于程序文件末尾存放的完整性值是通过第二对RSA私钥对Hash散列值再次实施了加密,而私钥无法获取,从而使得程序文件修改后,无法产生新的完整性值,最终导致软件完整性遭到破坏而不能通过效验(授权认证为第一层保护,完整性验证为第二层保护,且第一层效验的过程本身又被第二层效验保护着,双层保护,再加上非连续性存放保护,三层保护将弥补现有授权保护缺陷和增强逆向破解难度)。
本发明还公开了一种软件授权与保护的装置,包括发布单元,
发布单元包括:
第一发布模块:用于将完整性的RSA公钥打散后整合入软件的程序代码中,通过授权的RSA私钥产生自签名的CA根证书,将CA根证书整合入软件的程序代码中;
第二发布模块:用于对软件的初始程序文件进行hash计算产生完整性码,初始程序文件不包含尾部的完整性码,通过完整性的RSA私钥对完整性码进行数字签名,从而产生签名的完整性码,将签名的完整性码追加到初始程序文件尾部,形成最终程序文件,该最终程序文件是含有签名的完整性码的程序文件。
该装置还包括在发布单元后执行运行检查单元,
运行检查单元包括:
初始运行模块:用于针对最终程序文件,使用私有算法连接分散的完整性的RSA公钥,从而产生临时内存中非连续存放的完整性的RSA公钥;计算出最终程序文件的hash值,此时不计算最终程序文件的签名的完整性码的hash值;截取最终程序文件尾部的完整性值;
解密模块:用于通过临时内存中非连续存放的完整性的RSA公钥对截取最终程序文件尾部的完整性值进行解密,从而得到临时内存中非连续存放的散列值;
比较模块:用于将初始运行模块中的计算出最终程序文件的hash值与解密模块中的散列值进行等值性比较,若相同,则允许使用软件,否则禁止使用软件;在初始运行模块中计算出最终程序文件的hash值时,不计算最终程序文件的签名的完整性码的hash值。
在所述发布单元中,将完整性的RSA公钥使用私有无密加密算法加密后保存在软件的静态程序文件中。
内存的数据存放采用标准模板容器,由于标准模板容器中的元素采用非连续动态内存存放的特性,将极大的增加软件逆向工程的难度。
本发明还公开了一种软件授权与保护的系统,包括:存储器、处理器以及存储在所述存储器上的计算机程序,所述计算机程序配置为由所述处理器调用时实现本发明所述的方法的步骤。
本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现本发明所述的方法的步骤。
在本发明中,通过使用第二对RSA非对称密钥实现软件发布的完整性效验,结合第一对RSA非对称密钥产生的公私钥证书(根证书)等完成对软件动态授权的高强度保护。
名词解释:
电脑指纹:即形象的比如,类比人类的指纹,泛指每台电脑区别其它电脑的特征参数,比如网卡的MAC地址,具有独一性的一些不变参数。
HASH散列算法:是一种不可逆的算法,有MD5,SHA-256,HMAC(含密钥的散列计算)等算法,一般的作用对象为长字符串,或者二进制流等,结果为规定长度的整性值。
MAC地址:网卡的六字节以太网地址表示
BIOS:基本输入输出系统,为个人电脑或者服务器上的基本启动程序。
CPU ID:CPU特定唯一的Identification号
CA证书:常见于网卡服务器上部署的用户验证客户端的根证书。
RSA私钥:非对称的一种密钥算法体系,一般为一对密钥,其中之一为私钥。
RSA公钥:非对称的一种密钥算法体系,一般为一对密钥,其中之一为公钥。
数字签名:使用非对称的RSA私钥对一段需要进行防篡改保护的信息进行加密的过程称为数字签名。
软件逆向工程:指通过对软件已经发布的二进制档案进行模拟运行并同时借助先进的逆向编码工具进行辅助分析,从而洞察软件的语义和对软件进行破解的过程。
非连续性标准容器:指编程库中一类标准容器,像std::list、std::queue等模板容器,其实现采用了非连续性动态内存技术。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (10)

1.一种软件授权与保护的方法,其特征在于,包括发布步骤,
发布步骤包括:
第1步:将完整性的RSA公钥打散后整合入软件的程序代码中,通过授权的RSA私钥产生自签名的CA根证书,将CA根证书整合入软件的程序代码中;
第2步:对软件的初始程序文件进行hash计算产生完整性码,初始程序文件不包含尾部的完整性码,通过完整性的RSA私钥对完整性码进行数字签名,从而产生签名的完整性码,将签名的完整性码追加到初始程序文件尾部,形成最终程序文件,该最终程序文件是含有签名的完整性码的程序文件。
2.根据权利要求1所述的方法,其特征在于,该方法还包括在发布步骤后执行运行检查步骤,
运行检查步骤包括:
第一步:针对最终程序文件,使用私有算法连接分散的完整性的RSA公钥,从而产生临时内存中非连续存放的完整性的RSA公钥;计算出最终程序文件的hash值,此时不计算最终程序文件的签名的完整性码的hash值;截取最终程序文件尾部的完整性值;
第二步:通过临时内存中非连续存放的完整性的RSA公钥对截取最终程序文件尾部的完整性值进行解密,从而得到临时内存中非连续存放的散列值;
第三步:将第一步中的计算出最终程序文件的hash值与第二步中的散列值进行等值性比较,若相同,则允许使用软件,否则禁止使用软件;在第一步中计算出最终程序文件的hash值时,不计算最终程序文件的签名的完整性码的hash值。
3.根据权利要求2所述的方法,其特征在于,在所述发布步骤中,将完整性的RSA公钥使用私有无密加密算法加密后保存在软件的静态程序文件中。
4.根据权利要求2所述的方法,其特征在于,内存的数据存放采用标准模板容器,由于标准模板容器中的元素采用非连续动态内存存放的特性,将极大的增加软件逆向工程的难度。
5.一种软件授权与保护的装置,其特征在于,包括发布单元,
发布单元包括:
第一发布模块:用于将完整性的RSA公钥打散后整合入软件的程序代码中,通过授权的RSA私钥产生自签名的CA根证书,将CA根证书整合入软件的程序代码中;
第二发布模块:用于对软件的初始程序文件进行hash计算产生完整性码,初始程序文件不包含尾部的完整性码,通过完整性的RSA私钥对完整性码进行数字签名,从而产生签名的完整性码,将签名的完整性码追加到初始程序文件尾部,形成最终程序文件,该最终程序文件是含有签名的完整性码的程序文件。
6.根据权利要求5所述的装置,其特征在于,该装置还包括在发布单元后执行运行检查单元,
运行检查单元包括:
初始运行模块:用于针对最终程序文件,使用私有算法连接分散的完整性的RSA公钥,从而产生临时内存中非连续存放的完整性的RSA公钥;计算出最终程序文件的hash值,此时不计算最终程序文件的签名的完整性码的hash值;截取最终程序文件尾部的完整性值;
解密模块:用于通过临时内存中非连续存放的完整性的RSA公钥对截取最终程序文件尾部的完整性值进行解密,从而得到临时内存中非连续存放的散列值;
比较模块:用于将初始运行模块中的计算出最终程序文件的hash值与解密模块中的散列值进行等值性比较,若相同,则允许使用软件,否则禁止使用软件;在初始运行模块中计算出最终程序文件的hash值时,不计算最终程序文件的签名的完整性码的hash值。
7.根据权利要求6所述的装置,其特征在于,在所述发布单元中,将完整性的RSA公钥使用私有无密加密算法加密后保存在软件的静态程序文件中。
8.根据权利要求6所述的装置,其特征在于,内存的数据存放采用标准模板容器,由于标准模板容器中的元素采用非连续动态内存存放的特性,将极大的增加软件逆向工程的难度。
9.一种软件授权与保护的系统,其特征在于,包括:存储器、处理器以及存储在所述存储器上的计算机程序,所述计算机程序配置为由所述处理器调用时实现权利要求1-4中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其特征在于:所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现权利要求1-4中任一项所述的方法的步骤。
CN201910344291.9A 2019-04-26 2019-04-26 一种软件授权与保护的方法、装置、系统及存储介质 Withdrawn CN110110507A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910344291.9A CN110110507A (zh) 2019-04-26 2019-04-26 一种软件授权与保护的方法、装置、系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910344291.9A CN110110507A (zh) 2019-04-26 2019-04-26 一种软件授权与保护的方法、装置、系统及存储介质

Publications (1)

Publication Number Publication Date
CN110110507A true CN110110507A (zh) 2019-08-09

Family

ID=67486902

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910344291.9A Withdrawn CN110110507A (zh) 2019-04-26 2019-04-26 一种软件授权与保护的方法、装置、系统及存储介质

Country Status (1)

Country Link
CN (1) CN110110507A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021078156A1 (zh) * 2019-10-23 2021-04-29 华为技术有限公司 一种软件完整性保护、校验的方法及装置
CN114586317A (zh) * 2019-10-16 2022-06-03 微软技术许可有限责任公司 媒体完整性的密码学确认
CN115022091A (zh) * 2022-08-04 2022-09-06 亿次网联(杭州)科技有限公司 一种基于数字证书的自主授权方法和系统
CN115292746A (zh) * 2022-07-28 2022-11-04 南京国电南自电网自动化有限公司 一种应用程序可信编译及运行方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114586317A (zh) * 2019-10-16 2022-06-03 微软技术许可有限责任公司 媒体完整性的密码学确认
WO2021078156A1 (zh) * 2019-10-23 2021-04-29 华为技术有限公司 一种软件完整性保护、校验的方法及装置
CN115292746A (zh) * 2022-07-28 2022-11-04 南京国电南自电网自动化有限公司 一种应用程序可信编译及运行方法
CN115022091A (zh) * 2022-08-04 2022-09-06 亿次网联(杭州)科技有限公司 一种基于数字证书的自主授权方法和系统

Similar Documents

Publication Publication Date Title
CN110110507A (zh) 一种软件授权与保护的方法、装置、系统及存储介质
Al‐Haj et al. Crypto‐based algorithms for secured medical image transmission
CN101369889B (zh) 一种对文档进行电子签名的方法
US20070237366A1 (en) Secure biometric processing system and method of use
CN108833114A (zh) 一种基于区块链的去中心化身份认证系统及方法
US20100115260A1 (en) Universal secure token for obfuscation and tamper resistance
US20140223580A1 (en) Method of and apparatus for processing software using hash function to secure software, and computer-readable medium storing executable instructions for performing the method
WO2017041603A1 (zh) 数据加密方法、装置及移动终端、计算机存储介质
CN110008745B (zh) 一种加密方法、计算机设备和计算机存储介质
CN105812366B (zh) 服务器、反爬虫系统和反爬虫验证方法
CN112469036B (zh) 一种消息加解密方法、装置、移动终端和存储介质
US20070226514A1 (en) Secure biometric processing system and method of use
JP2015504222A (ja) データ保護方法及びシステム
CN109800574A (zh) 基于密码算法分析的计算机病毒检测方法及系统
CN109190401A (zh) 一种Qemu虚拟可信根的数据存储方法、装置及相关组件
US20070226515A1 (en) Secure biometric processing system and method of use
Toli et al. Privacy-preserving biometric authentication model for e-finance applications
CN110233729B (zh) 一种基于puf的加密固态盘密钥管理方法
Shirey et al. Analysis of implementations to secure git for use as an encrypted distributed version control system
US20120311338A1 (en) Secure authentication of identification for computing devices
CN103457721B (zh) 一种批量生成密码的方法及装置
CN108989019A (zh) 基于区块链技术的内容资源安全保护系统
CN107404476B (zh) 一种大数据云环境中数据安全的保护方法与装置
CN114462088A (zh) 用于对共享数据进行去标识的方法及装置
CN105049433B (zh) 标识化卡号信息传输验证方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20190809