CN117892268A - 一种分布式的水印嵌入软件保护方法 - Google Patents
一种分布式的水印嵌入软件保护方法 Download PDFInfo
- Publication number
- CN117892268A CN117892268A CN202311636901.5A CN202311636901A CN117892268A CN 117892268 A CN117892268 A CN 117892268A CN 202311636901 A CN202311636901 A CN 202311636901A CN 117892268 A CN117892268 A CN 117892268A
- Authority
- CN
- China
- Prior art keywords
- verification
- software
- user
- key
- information
- 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 52
- 238000012795 verification Methods 0.000 claims abstract description 274
- 238000012360 testing method Methods 0.000 claims abstract description 33
- 238000012545 processing Methods 0.000 claims abstract description 26
- 230000003014 reinforcing effect Effects 0.000 claims abstract description 15
- 230000006870 function Effects 0.000 claims description 22
- 238000013475 authorization Methods 0.000 claims description 14
- 238000004088 simulation Methods 0.000 claims description 8
- 230000010354 integration Effects 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000005336 cracking Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000011056 performance test Methods 0.000 description 2
- 238000012550 audit Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000035515 penetration Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000011076 safety test Methods 0.000 description 1
Landscapes
- Editing Of Facsimile Originals (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种分布式的水印嵌入软件保护方法、终端及存储介质,方法包括:获取用户唯一标识,根据用户唯一标识生成验证信息,并根据用户唯一标识以及验证信息生成水印标识;构建验证点位置,基于水印标识生成验证规则,根据验证规则计算验证点信息,并将验证点信息插入验证点位置;获取验证指令,验证待验证用户并通过对应软件反馈验证结果;获取软件密钥和待验证密钥,并将软件密钥处理得到的摘要值与待验证密钥处理得到的摘要值验证进行对比验证;根据字符串加密的方式加固软件,并通过模拟用户测试所述软件。本发明通过增加验证点和水印标识的复杂性,并引入动态服务器验证以及反篡改保护措施,有效提高了软件的安全性和复杂性。
Description
技术领域
本发明涉及软件保护领域,尤其涉及的是一种分布式的水印嵌入软件保护方法、终端及存储介质。
背景技术
在数字时代,软件盗版和非授权复制是一个普遍存在的问题。为了保护知识产权和软件的合法权益,常见的软件水印保护技术是通过在软件中插入特定的标识信息,使得只有授权用户能够正确解析和验证,从而有效地防止盗版和非授权复制。
目前软件保护技术的实现方式主要有将特定的标识信息被嵌入到软件的固定位置的静态软件水印验证、将一个固定的水印标识嵌入到软件中并在软件的执行过程中进行验证的单一水印验证、在软件中插入一个特定的验证模块的集中式验证、在软件中预先设置了固定的验证点的静态验证点验证、通过在软件运行时生成随机数、计算特定规则或使用其他动态信息来创建验证点和水印的简单动态验证以及对软件加密的验证保护方法,然而这些方法都具有一定的局限性:1.静态水印和静态验证点方法容易被攻击者发现和删除,造成软件保护失效;2.单一水印验证方法只依赖一个简单的验证点容易被攻击者定位和攻击,绕过验证;3.集中式验证方法中,攻击者会在确定验证模块后将其作为破解的主要目标,一旦被攻破,整个软件的保护会受到威胁;4.简单动态验证方法缺乏足够的复杂性和随机性,容易被预测和破解;5.仅使用软件加密方法安全性不足,安全性过度依赖于单一的解密密钥。
因此,现有技术还有待改进。
发明内容
本发明要解决的技术问题在于,针对现有技术缺陷,本发明提供一种分布式的水印嵌入软件保护方法、终端及存储介质,以解决现有软件保护技术的实现方式容易破解及验证脆弱性低的问题。
本发明解决技术问题所采用的技术方案如下:
第一方面,本发明提供一种分布式的水印嵌入软件保护方法,包括:
获取用户唯一标识,根据所述用户唯一标识生成验证信息,并根据所述用户唯一标识以及所述验证信息生成水印标识;
构建验证点位置,基于所述水印标识生成验证规则,根据所述验证规则计算验证点信息,并将所述验证点信息插入所述验证点位置;
获取验证指令,验证待验证用户并通过对应软件反馈验证结果;
获取软件密钥和待验证密钥,并将所述软件密钥处理得到的摘要值与所述待验证密钥处理得到的摘要值验证进行对比验证;
根据字符串加密的方式加固软件,并通过模拟用户测试所述软件。
在一种实现方式中,所述获取用户唯一标识,根据所述用户唯一标识生成验证信息,并根据所述用户唯一标识以及所述验证信息生成水印标识,包括:
获取用户信息,并根据所述用户信息生成所述验证信息;其中,所述用户信息包括许可证密钥、硬件ID以及用户名;
基于预设算法,利用所述用户唯一标识以及所述验证信息生成对应水印标识。
在一种实现方式中,所述根据所述用户信息生成所述验证信息,包括:
将所述用户信息封装得到所述用户唯一标识;
获取时间戳并根据预设数值、所述时间戳以及所述用户唯一标识生成所述验证信息。
在一种实现方式中,所述构建验证点位置,基于所述水印标识生成验证规则,根据所述验证规则计算验证点信息,并将所述验证点信息插入所述验证点位置,包括:
构建预设数量的验证点位置,并根据所述水印标识生成对应验证规则;
根据预设种子以及所述验证规则计算得对应所述验证点信息,并将所述验证点信息插入对应所述验证点位置。
在一种实现方式中,所述获取验证指令,验证待验证用户并通过对应软件反馈验证结果,包括:
构建用户数据库,基于所述用户数据库存储授权用户的数据信息;
当获取请求验证指令时,获取待验证用户的数据信息并根据所述用户数据库验证用户身份,其中,所述数据信息包括用户唯一标识、授权状态以及授权时间;
构建软件数据库,当获取所述请求验证指令时,获取待验证软件的哈希值并根据所述软件数据库验证所述软件,反馈验证所述待验证用户和对应软件的结果。
在一种实现方式中,所述获取软件密钥和待验证密钥,并将所述软件密钥处理得到的摘要值与所述待验证密钥处理得到的摘要值验证进行对比验证,包括:
获取所述软件密钥,基于预设算法对对应软件加密得到的摘要值;
根据所述软件密钥对所述摘要值加密得到对应的数字签名,并将所述摘要值以及所述摘要值附加到所述软件;
获取输入的待验证密钥,通过所述待验证密钥对所述数字签名解密,得到对应摘要值,并通过对比对应软件中的摘要值进行验证。
在一种实现方式中,所述根据字符串加密的方式加固软件,并通过模拟用户测试所述软件,包括:
获取软件的源代码内容,并通过字符串加密的方式加固所述源代码内容,其中,所述源代码内容包括:变量名、函数名以及控制流结构;
构建使用场景,基于模拟用户根据预设测试方式测试所述软件。
第二方面,本发明还提供一种分布式的水印嵌入软件保护装置,包括:动态水印生成模块,用于获取用户唯一标识,根据所述用户唯一标识生成验证信息,并根据所述用户唯一标识以及所述验证信息生成水印标识;分布式验证点生成模块,用于构建验证点位置,基于所述水印标识生成验证规则,根据所述验证规则计算验证点信息,并将所述验证点信息插入所述验证点位置;服务器验证模块,用于获取验证指令,验证待验证用户并通过对应软件反馈验证结果;反篡改保护模块,用于获取软件密钥和待验证密钥,并将所述软件密钥处理得到的摘要值与所述待验证密钥处理得到的摘要值验证进行对比验证;整合和测试模块,用于根据字符串加密的方式加固软件,并通过模拟用户测试所述软件。
第三方面,本发明还提供一种终端,包括:处理器以及存储器,所述存储器存储有分布式的水印嵌入软件保护程序,所述分布式的水印嵌入软件保护程序被所述处理器执行时用于实现如第一方面所述的分布式的水印嵌入软件保护方法的操作。
第四方面,本发明还提供一种存储介质,所述存储介质为计算机可读存储介质,所述存储介质存储有分布式的水印嵌入软件保护程序,所述分布式的水印嵌入软件保护程序被处理器执行时用于实现如第一方面所述的分布式的水印嵌入软件保护方法的操作。
本发明采用上述技术方案具有以下效果:
本发明通过获取用户唯一标识,可根据所述用户唯一标识生成验证信息,并根据所述用户唯一标识以及所述验证信息生成水印标识;并通过构建验证点位置,基于所述水印标识生成验证规则,根据所述验证规则计算验证点信息,并将所述验证点信息插入所述验证点位置;再获取验证指令,验证待验证用户并通过对应软件反馈验证结果;并且获取软件密钥和待验证密钥,并将所述软件密钥处理得到的摘要值与所述待验证密钥处理得到的摘要值验证进行对比验证;最后根据字符串加密的方式加固软件,并通过模拟用户测试所述软件,增加了软件保护的复杂性,有效提高了软件的安全性,为软件提供了全面的保护,而且使其能够广泛适用于不同类型和规模的软件应用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1是本发明的一种实现方式中分布式的水印嵌入软件保护方法的流程图。
图2是本发明的一种实现方式中分布式的水印嵌入软件保护装置的装置示意图。
图3是本发明的一种实现方式中终端的功能原理图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现有的软件保护技术多以静态水印验证、单一水印验证、集中式验证、简单动态验证以及软件加密方式保护软件,存在易破解性、单一验证点、缺乏复杂性和集中式验证脆弱性的问题。
针对上述技术问题,本发明实施例提供一种分布式的水印嵌入软件保护方法,该方法通过动态生成水印标识,分布式将动态生成的验证信息嵌入动态生成的验证点、服务器验证以及反篡改软件加固保护多个环节相互配合,可以根据不同软件的特点和需求进行调整和定制,从而能够广泛适用于不同类型和规模的软件应用,增加了软件保护的复杂性,有效提高了软件的安全性,为软件提供了全面的保护。
示例性方法
如图1所示,本发明实施例提供一种分布式的水印嵌入软件保护方法,包括以下步骤:
步骤S100,获取用户唯一标识,根据所述用户唯一标识生成验证信息,并根据所述用户唯一标识以及所述验证信息生成水印标识。
在本实施例中,用户唯一标识指根据用户信息生成的用户唯一标识,其中用户信息具体包括许可证密钥、硬件ID以及用户名,验证信息则是指通过哈希函数根据用户唯一标识、时间戳以及预设数值得到的哈希值,水印标识则是通过SHA-2算法将用户唯一标识和验证信息结合生成的。
在本实施例中,通过获取用户信息得到用户唯一标识,然后根据用户唯一标识动态生成对应验证信息,再通过预设算法将用户唯一标识和验证信息结合,生成对应的水印标识,使得每次生成的水印都是唯一的,从而增加了软件的安全性。
具体地,在本实施例的一种实现方式中,步骤S100包括以下步骤:
步骤S110,获取用户信息,并根据所述用户信息生成所述验证信息;其中,所述用户信息包括许可证密钥、硬件ID以及用户名。
在本实施例中,获取授权用户的信息,基于哈希函数和授权用户的算法根据所述信息生成对应的验证信息,其中,用户信息包括许可证密钥、硬件ID以及用户名。
具体地,在本实施例的一种实现方式中,步骤S110还包括以下步骤:
步骤S111,将所述用户信息封装得到所述用户唯一标识。
在本实施例中,获取验证用户指令后,从授权用户处将许可证密钥、硬件ID、用户名封装成一个包,作为用户唯一标识,其中,用户唯一标识将许可证密钥作为主要标识符,当需要额外验证时,可结合硬件ID和用户名来增强安全性。
步骤S112,获取时间戳并根据预设数值、所述时间戳以及所述用户唯一标识生成所述验证信息。
在本实施例中,首先获取当前的时间戳,用于确保验证信息具有时效性,然后将授权用户的许可证密钥、用户名、硬件ID等与时间戳和预设数值传递给哈希函数,其中,预设数值指根据随机数生成器生成的随机数,再通过哈希函数SHA-256对组合后的用户信息、时间戳和预设数值进行哈希并产生一个固定的哈希值,将哈希值作为最终的验证信息,用于运行时验证软件的合法性,动态生成的验证信息使得每次软件运行时的水印都不同,增加了破解的难度。
步骤S120,基于预设算法,利用所述用户唯一标识以及所述验证信息生成对应水印标识。
在本实施例中,通过预设算法将用户唯一标识和动态生成的验证信息结合起来,生成对应的水印标识,其中,预设算法可以是SHA-2算法水印标识则是验证授权用户的关键标志,因此,生成的水印标识是唯一的,便于保护相同类型的不同软件。
如图1所示,本发明实施例提供一种分布式的水印嵌入软件保护方法,还包括以下步骤:
步骤S200,构建验证点位置,基于所述水印标识生成验证规则,根据所述验证规则计算验证点信息,并将所述验证点信息插入所述验证点位置;
在本实施例中,在软件中构建多个验证点位置用于验证,再基于输入的水印标识生成对应的验证规则,从而根据生成的验证规则计算得到验证点信息并插入对应验证点位置中。
具体地,在本实施例的一种实现方式中,步骤S200包括以下步骤:
步骤S210,构建预设数量的验证点位置,并根据所述水印标识生成对应验证规则。
在本实施例中,在软件的不同功能模块中设置预设数量的验证点,然后通过哈希函数根据输入的水印标识生成对应的验证规则,其中设置预设数量的验证点具体指在每个功能模块中具有一个或多个验证点,验证点设置在模块的执行路径上,确保验证点在整个软件中分散分布,因此,攻击者需要了解软件的各个功能模块以破解所有的验证点。
步骤S220,根据预设种子以及所述验证规则计算得对应所述验证点信息,并将所述验证点信息插入对应所述验证点位置。
在本实施例中,当软件运行时,基于哈希函数根据预设种子以及所述验证规则计算得到对应验证点信息,将动态生成的验证点信息插入到对应的验证点位置中,其中,预设种子具体指根据当前时间获取一个随机种子,因此,在每次软件运行时,生成的验证点的位置和规则都不同,增加了破解的难度。
在本实施例中,通过动态生成验证点和水印标识使得每次软件运行时的验证信息都不同,增加了破解的难度,这种动态可变性提高了软件的安全性,即使攻击者成功破解某一验证点或水印标识,也无法通用于其他软件版本。
如图1所示,本发明实施例提供一种分布式的水印嵌入软件保护方法,还包括以下步骤:
步骤S300,获取验证指令,验证待验证用户并通过对应软件反馈验证结果。
在本实施例中,当获取到用户请求验证指令时,获取待验证用户信息以及对应软件信息并验证反馈结果。
具体地,在本实施例的一种实现方式中,步骤S300包括以下步骤:
步骤S310,构建用户数据库,基于所述用户数据库存储授权用户的数据信息;
步骤S320,当获取请求验证指令时,获取待验证用户的数据信息并根据所述用户数据库验证用户身份,其中,所述数据信息包括用户唯一标识、授权状态以及授权时间。
在本实施例中,在服务器上搭建一个验证服务,用于处理来自授权用户的请求和验证信息,并在服务器端建立授权用户数据库,记录每个授权用户的唯一标识、授权状态、授权时间以及使用次数等信息,在获取到验证指令后,获取待验证用户的数据信息并根据用户数据库验证用户身份,其中,数据信息包括用户唯一标识、授权状态以及授权时间,因此,服务器可以在验证用户时检查授权状态是否有效,如果授权过期或达到使用次数限制,相应地拒绝验证。
步骤S330,构建软件数据库,当获取所述请求验证指令时,获取待验证软件的哈希值并根据所述软件数据库验证所述软件,反馈验证所述待验证用户和对应软件的结果。
在本实施例中,在服务器中建立软件的数据库,记录保存软件的哈希值,在获取到验证指令时,获取待验证用户所需要授权的软件的哈希值,根据软件数据库存储信息验证待验证软件,然后根据验证待验证用户和对应软件的结果发送验证通过或失败的信息,因此,客户端可以根据反馈结果决定所述软件的运行和功能权限。
在本实施例中,为了保护数据的安全传输,服务器端和客户端之间的通信采用加密和安全传输协议SSL/TLS。
在本实施例中,授权用户在启动软件时会向服务器发送验证请求,并携带相应的标识信息或许可证密钥,服务器接收这些请求,并进行验证处理,确认用户的合法性和授权状态。
在本实施例中,通过根据特定规则动态生成验证信息,例如授权用户的唯一标识、随机数或时间戳等,生成动态的验证信息,然后,这些动态生成的验证信息会分散地嵌入到软件的多个位置,这些位置可以是不同的文件、函数、代码段或数据结构,最后,在软件运行时动态验证各个部分,确保授权用户必须通过这些验证点,才能获得完整的软件功能。
在本实施例中,通过分布式动态水印和验证点的设计,以及服务器验证,显著增加了软件保护的复杂性和安全性,攻击者难以找到和破解所有验证点和水印标识,从而有效防止盗版和非授权复制,而且服务器验证确保只有合法用户可以获得授权使用软件,防止非法复制和使用。
如图1所示,本发明实施例提供一种分布式的水印嵌入软件保护方法,还包括以下步骤:
步骤S400,获取软件密钥和待验证密钥,并将所述软件密钥处理得到的摘要值与所述待验证密钥处理得到的摘要值验证进行对比验证。
在本实施例中,通过获取的软件密钥对根据哈希运算加密得到的摘要值加密得到对应数字签名,当获取到请求验证软件指令时,通过用户输入的待验证密钥对软件中摘要值进行解密得到对应摘要值,从而通过比较两个摘要值进行验证。
具体地,在本实施例的一种实现方式中,步骤S400包括以下步骤:
步骤S410,获取所述软件密钥,基于预设算法对对应软件加密得到的摘要值;
步骤S420,根据所述软件密钥对所述摘要值加密得到对应的数字签名,并将所述摘要值以及所述摘要值附加到所述软件。
在本实施例中,预设算法是指通过使用各种安全算法进行哈希运算,通过获取软件密钥,再根据哈希运算将对应软件的关键代码进行加密得到固定长度的摘要值,然后根据软件密钥对摘要值进行加密得到数字签名,最后将摘要值和数字签名附加在对应软件的文件中,其中,哈希运算可以使用SHA-256等安全算法。
步骤S430,获取输入的待验证密钥,通过所述待验证密钥对所述数字签名解密,得到对应摘要值,并通过对比对应软件中的摘要值进行验证。
在本实施例中,当获取到验证软件指令时,获取用户输入的待验证密钥,通过待验证密钥对软件中的数字签名进行解密得到对应摘要值,再根据软件中附加的摘要值对比验证用户是否得到授权。
如图1所示,本发明实施例提供一种分布式的水印嵌入软件保护方法,还包括以下步骤:
步骤S500,根据字符串加密的方式加固软件,并通过模拟用户测试所述软件。
在本实施例中,通过字符串加密的方式加固软件安全性,再通过模拟用户在不同场景中测试所述软件的鲁棒性和安全性。
具体地,在本实施例的一种实现方式中,步骤S500包括以下步骤:
步骤S510,获取软件的源代码内容,并通过字符串加密的方式加固所述源代码内容,其中,所述源代码内容包括:变量名、函数名以及控制流结构。
在本实施例中,获取软件的源代码内容,通过字符串加密的方式将源代码内容进行重命名和重组得到加固后的源代码内容,其中,源代码内容具体包括变量名、函数名以及控制流结构,通过重命名和重组的处理方式使源代码内容难以阅读和理解,以防止反向工程和逆向分析。
步骤S520,构建使用场景,基于模拟用户根据预设测试方式测试所述软件。
在本实施例中,设置用于测试的不同权限用户信息,构建各种使用场景,通过预设测试方式测试软件安全,其中,测试软件安全性包括测试经过动态水印生成功能、动态验证点生成功能、服务器验证功能以及反篡改保护功能处理后的软件安全性,预设测试方式包括以下方式:
1)合法授权用户的运行测试:验证授权用户可以成功通过服务器验证、解析动态水印、通过动态验证点获得完整功能;
2)非授权用户的运行测试:验证非授权用户在没有通过服务器验证的情况下,无法获取完整功能,或者只能获得部分功能或提示授权错误信息;
3)攻击模拟测试:尝试模拟攻击者对软件进行破解和篡改,验证反篡改保护的有效性和抵抗攻击的能力;
4)性能测试:进行性能测试,检验整合后的软件是否在各种条件下运行良好,包括运行速度、响应时间、内存占用等性能指标;
5)安全性测试:进行安全性测试,评估整合后的软件是否存在漏洞和安全隐患,具体包括代码审计、漏洞扫描和渗透测试等;
6)实际应用测试:在真实的应用环境中进行测试,与实际用户进行合作测试,获取反馈意见,并根据实际使用情况做出必要的调整和改进。
在本实施例中,通过采用加密、签名或数字证书等技术,对软件的重要部分进行保护和签名,确保软件的完整性和可信度,防止恶意攻击者对软件进行篡改或逆向工程。
在本实施例中,分布式的水印嵌入软件保护方法实际应用如下:
在软件开发阶段,首先确定动态水印的标识和生成规则,可以采用哈希函数对授权用户的唯一标识和随机数进行计算,生成动态水印标识,然后根据设计的策略,将动态水印嵌入到软件的多个位置,这些位置可以包括代码段、数据结构、关键函数等,另外,嵌入的位置应当足够分散和复杂,使得非授权用户难以发现和删除所有水印。
在软件的运行过程中,需要设置多个动态验证点,其中,验证点的设置应该考虑软件的执行流程和功能模块,以确保授权用户在使用软件的过程中需要经过这些验证点,而且,验证点可以基于动态生成的随机数、特定条件或者授权用户的唯一标识。另外,验证点的位置和数量也可以根据软件的复杂性和安全需求进行灵活配置。动态生成验证则是为了增加验证的复杂性和随机性。在软件运行时,根据设定的规则动态生成验证点和水印标识。例如,可以在特定条件下生成验证点,或者使用随机数生成水印标识,此外,动态生成验证要求与水印嵌入和验证点设置相协调,确保每次运行时的验证信息都不同。
在软件启动时,通过与服务器进行交互,进行合法性和完整性验证。授权用户向服务器提供授权信息,并从服务器获得动态验证规则和密钥等信息,服务器则记录授权状态和软件使用情况,防止非法复制和使用。
另外引入反篡改保护措施,通过加密关键代码和数据,使用数字签名验证软件完整性,防止恶意修改。同时,采用代码混淆和反调试技术,增加破解的难度。
在实际应用中,在用户登录时向服务器发送验证请求,发送用户标识信息,如用户ID和正确的授权密钥。服务器在接收请求后,验证用户的身份和授权状态,确保是合法的用户才向软件发送运行许可,根据秘钥对软件代码和数据进行解密。与此同时,用户在登陆时,软件本地也会根据用户ID、登陆时间、登陆IP和授权秘钥生成验证信息,然后分布地插入验证点到多个位置。在软件运行时,用户会不断触发软件内的验证点,这些验证点会再次检查用户的验证信息和登录时是否匹配,持续确认使用者为授权用户。如果有恶意用户试图篡改或破解软件,破坏者必须同时破解所有分布式的验证点,这无疑极大地增加了破解的难度。同时,由于验证信息与用户的唯一标识、当前时间戳等动态相关,动态验证信息的检查也为破解者设下了高难度的反篡改保护。
在本实施例中,通过引入反篡改保护措施,对软件进行加密、签名或数字证书等处理,确保软件的完整性,从而保障任何未经授权的修改都会被及时发现和拒绝执行,防止恶意篡改和修改软件。
因此,本发明包括动态水印的嵌入、动态验证点的设置、动态生成验证、服务器验证和反篡改保护等多个环节,这些措施相互配合,构成了分布式软件水印保护方案。而且可以根据不同软件的特点和需求进行调整和定制,增加了软件保护的复杂性和安全性,另外还引入服务器验证和反篡改保护等措施,增加了软件的防篡改能力和抵御攻击的能力,有效保护了软件的知识产权和合法权益。
本实施例通过上述技术方案达到以下技术效果:
本实施例通过获取用户唯一标识,可根据所述用户唯一标识生成验证信息,并根据所述用户唯一标识以及所述验证信息生成水印标识;并通过构建验证点位置,基于所述水印标识生成验证规则,根据所述验证规则计算验证点信息,并将所述验证点信息插入所述验证点位置;再获取验证指令,验证待验证用户并通过对应软件反馈验证结果;并且获取软件密钥和待验证密钥,并将所述软件密钥处理得到的摘要值与所述待验证密钥处理得到的摘要值验证进行对比验证;最后根据字符串加密的方式加固软件,并通过模拟用户测试所述软件,增加了软件保护的复杂性,有效提高了软件的安全性,为软件提供了全面的保护,而且使其能够广泛适用于不同类型和规模的软件应用。
示例性装置
如图2所示,基于上述实施例,本发明还提供一种分布式的水印嵌入软件保护装置,其特征在于,包括:动态水印生成模块,用于获取用户唯一标识,根据所述用户唯一标识生成验证信息,并根据所述用户唯一标识以及所述验证信息生成水印标识;分布式验证点生成模块,用于构建验证点位置,基于所述水印标识生成验证规则,根据所述验证规则计算验证点信息,并将所述验证点信息插入所述验证点位置;服务器验证模块,用于获取验证指令,验证待验证用户并通过对应软件反馈验证结果;反篡改保护模块,用于获取软件密钥和待验证密钥,并将所述软件密钥处理得到的摘要值与所述待验证密钥处理得到的摘要值验证进行对比验证;整合和测试模块,用于根据字符串加密的方式加固软件,并通过模拟用户测试所述软件。
示例性设备
基于上述实施例,本发明还提供一种终端,包括:通过系统总线连接的处理器、存储器、接口、显示屏以及通讯模块;其中,所述处理器用于提供计算和控制能力;所述存储器包括存储介质以及内存储器;所述存储介质存储有操作系统和计算机程序;所述内存储器为所述存储介质中的操作系统和计算机程序的运行提供环境;所述接口用于连接外部设备,例如,移动终端以及计算机等设备;所述显示屏用于显示相应的信息;所述通讯模块用于与云端服务器或移动终端进行通讯。
所述计算机程序被所述处理器执行时用以实现一种分布式的水印嵌入软件保护方法的操作。
本领域技术人员可以理解的是,图3中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种终端,其中,包括:处理器和存储器,所述存储器存储有分布式的水印嵌入软件保护程序,所述分布式的水印嵌入软件保护程序被所述处理器执行时用于实现如上所述的分布式的水印嵌入软件保护方法的操作。
在一个实施例中,提供了一种存储介质,其中,所述存储介质存储有分布式的水印嵌入软件保护程序,所述分布式的水印嵌入软件保护程序被所述处理器执行时用于实现如上所述的分布式的水印嵌入软件保护方法的操作。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。
综上,本发明提供了一种分布式的水印嵌入软件保护方法、终端及存储介质,方法包括:获取用户唯一标识,根据用户唯一标识生成验证信息,并根据用户唯一标识以及验证信息生成水印标识;构建验证点位置,基于水印标识生成验证规则,根据验证规则计算验证点信息,并将验证点信息插入验证点位置;获取验证指令,验证待验证用户并通过对应软件反馈验证结果;获取软件密钥和待验证密钥,并将软件密钥处理得到的摘要值与待验证密钥处理得到的摘要值验证进行对比验证;根据字符串加密的方式加固软件,并通过模拟用户测试所述软件。本发明通过增加验证点和水印标识的复杂性、引入动态可变性和服务器验证,以及采用反篡改保护措施,有效提高了软件的安全性。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (10)
1.一种分布式的水印嵌入软件保护方法,其特征在于,包括:
获取用户唯一标识,根据所述用户唯一标识生成验证信息,并根据所述用户唯一标识以及所述验证信息生成水印标识;
构建验证点位置,基于所述水印标识生成验证规则,根据所述验证规则计算验证点信息,并将所述验证点信息插入所述验证点位置;
获取验证指令,验证待验证用户并通过对应软件反馈验证结果;
获取软件密钥和待验证密钥,并将所述软件密钥处理得到的摘要值与所述待验证密钥处理得到的摘要值验证进行对比验证;
根据字符串加密的方式加固软件,并通过模拟用户测试所述软件。
2.根据权利要求1所述的分布式的水印嵌入软件保护方法,其特征在于,所述获取用户唯一标识,根据所述用户唯一标识生成验证信息,并根据所述用户唯一标识以及所述验证信息生成水印标识,包括:
获取用户信息,并根据所述用户信息生成所述验证信息;其中,所述用户信息包括许可证密钥、硬件ID以及用户名;
基于预设算法,利用所述用户唯一标识以及所述验证信息生成对应水印标识。
3.根据权利要求2所述的分布式的水印嵌入软件保护方法,其特征在于,所述根据所述用户信息生成所述验证信息,包括:
将所述用户信息封装得到所述用户唯一标识;
获取时间戳并根据预设数值、所述时间戳以及所述用户唯一标识生成所述验证信息。
4.根据权利要求1所述的分布式的水印嵌入软件保护方法,其特征在于,所述构建验证点位置,基于所述水印标识生成验证规则,根据所述验证规则计算验证点信息,并将所述验证点信息插入所述验证点位置,包括:
构建预设数量的验证点位置,并根据所述水印标识生成对应验证规则;
根据预设种子以及所述验证规则计算得对应所述验证点信息,并将所述验证点信息插入对应所述验证点位置。
5.根据权利要求1所述的分布式的水印嵌入软件保护方法,其特征在于,所述获取验证指令,验证待验证用户并通过对应软件反馈验证结果,包括:
构建用户数据库,基于所述用户数据库存储授权用户的数据信息;
当获取请求验证指令时,获取待验证用户的数据信息并根据所述用户数据库验证用户身份,其中,所述数据信息包括用户唯一标识、授权状态以及授权时间;
构建软件数据库,当获取所述请求验证指令时,获取待验证软件的哈希值并根据所述软件数据库验证所述软件,反馈验证所述待验证用户和对应软件的结果。
6.根据权利要求1所述的分布式的水印嵌入软件保护方法,其特征在于,所述获取软件密钥和待验证密钥,并将所述软件密钥处理得到的摘要值与所述待验证密钥处理得到的摘要值验证进行对比验证,包括:
获取所述软件密钥,基于预设算法对对应软件加密得到的摘要值;
根据所述软件密钥对所述摘要值加密得到对应的数字签名,并将所述摘要值以及所述摘要值附加到所述软件;
获取输入的待验证密钥,通过所述待验证密钥对所述数字签名解密,得到对应摘要值,并通过对比对应软件中的摘要值进行验证。
7.根据权利要求1所述的分布式的水印嵌入软件保护方法,其特征在于,所述根据字符串加密的方式加固软件,并通过模拟用户测试所述软件,包括:
获取软件的源代码内容,并通过字符串加密的方式加固所述源代码内容,其中,所述源代码内容包括:变量名、函数名以及控制流结构;
构建使用场景,基于模拟用户根据预设测试方式测试所述软件。
8.一种分布式的水印嵌入软件保护装置,其特征在于,包括:
动态水印生成模块,用于获取用户唯一标识,根据所述用户唯一标识生成验证信息,并根据所述用户唯一标识以及所述验证信息生成水印标识;
分布式验证点生成模块,用于构建验证点位置,基于所述水印标识生成验证规则,根据所述验证规则计算验证点信息,并将所述验证点信息插入所述验证点位置;
服务器验证模块,用于获取验证指令,验证待验证用户并通过对应软件反馈验证结果;
反篡改保护模块,用于获取软件密钥和待验证密钥,并将所述软件密钥处理得到的摘要值与所述待验证密钥处理得到的摘要值验证进行对比验证;
整合和测试模块,用于根据字符串加密的方式加固软件,并通过模拟用户测试所述软件。
9.一种终端,其特征在于,包括:处理器以及存储器,所述存储器存储有分布式的水印嵌入软件保护程序,所述分布式的水印嵌入软件保护程序被所述处理器执行时用于实现如权利要求1-7中任意一项所述的分布式的水印嵌入软件保护方法的操作。
10.一种存储介质,其特征在于,所述存储介质为计算机可读存储介质,所述存储介质存储有分布式的水印嵌入软件保护程序,所述分布式的水印嵌入软件保护程序被处理器执行时用于实现如权利要求1-7中任意一项所述的分布式的水印嵌入软件保护方法的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311636901.5A CN117892268A (zh) | 2023-12-01 | 2023-12-01 | 一种分布式的水印嵌入软件保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311636901.5A CN117892268A (zh) | 2023-12-01 | 2023-12-01 | 一种分布式的水印嵌入软件保护方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117892268A true CN117892268A (zh) | 2024-04-16 |
Family
ID=90638354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311636901.5A Pending CN117892268A (zh) | 2023-12-01 | 2023-12-01 | 一种分布式的水印嵌入软件保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117892268A (zh) |
-
2023
- 2023-12-01 CN CN202311636901.5A patent/CN117892268A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107566116B (zh) | 用于数字资产确权登记的方法及装置 | |
US11675880B2 (en) | Securing webpages, webapps and applications | |
US6381698B1 (en) | System and method for providing assurance to a host that a piece of software possesses a particular property | |
US6148401A (en) | System and method for providing assurance to a host that a piece of software possesses a particular property | |
EP2659373B1 (en) | System and method for secure software update | |
US7526654B2 (en) | Method and system for detecting a secure state of a computer system | |
KR100615021B1 (ko) | 콘텐츠 배포/수신 방법 | |
KR100823738B1 (ko) | 컴퓨팅 플랫폼의 설정 정보를 은닉하면서 무결성 보증을제공하는 방법 | |
KR101247044B1 (ko) | 디바이스 인증을 위한 하드웨어 기능 스캔 | |
EP1076279A1 (en) | Computer platforms and their methods of operation | |
US7739505B2 (en) | Linking Diffie Hellman with HFS authentication by using a seed | |
EP3025235B1 (en) | Anti-piracy protection for software | |
JP5861597B2 (ja) | 認証システムおよび認証方法 | |
JP6387908B2 (ja) | 認証システム | |
CN113282946B (zh) | 基于高可信环境下数据访问过程的信息安全方法及系统 | |
Mladenov et al. | 1 trillion dollar refund: How to spoof pdf signatures | |
JP4295684B2 (ja) | プログラム製作装置 | |
CN112000933B (zh) | 应用软件的激活方法、装置、电子设备及存储介质 | |
CN112948894A (zh) | 基于区块链的理货检验报告防伪方法、装置、设备和介质 | |
CN117892268A (zh) | 一种分布式的水印嵌入软件保护方法 | |
CN112437923A (zh) | 信息处理装置、信息处理方法、信息处理程序及信息处理系统 | |
CN112597449B (zh) | 软件加密方法、装置、设备及存储介质 | |
CN117828580A (zh) | 一种应用程序认证方法及装置 | |
JP2002006739A (ja) | 認証情報生成装置およびデータ検証装置 | |
CN118070283A (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 |