CN117009926A - 软件授权方法、装置和介质 - Google Patents

软件授权方法、装置和介质 Download PDF

Info

Publication number
CN117009926A
CN117009926A CN202310801909.6A CN202310801909A CN117009926A CN 117009926 A CN117009926 A CN 117009926A CN 202310801909 A CN202310801909 A CN 202310801909A CN 117009926 A CN117009926 A CN 117009926A
Authority
CN
China
Prior art keywords
software
authorization
authorized
file
verification
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
Application number
CN202310801909.6A
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.)
Beijing Smartchip Microelectronics Technology Co Ltd
Original Assignee
Beijing Smartchip Microelectronics 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 Beijing Smartchip Microelectronics Technology Co Ltd filed Critical Beijing Smartchip Microelectronics Technology Co Ltd
Priority to CN202310801909.6A priority Critical patent/CN117009926A/zh
Publication of CN117009926A publication Critical patent/CN117009926A/zh
Pending 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/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
    • G06F2211/008Public Key, Asymmetric Key, Asymmetric Encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (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

软件授权方法、装置和介质
技术领域
本发明涉及计算机安全技术领域,具体地涉及一种软件授权方法、装置和介质。
背景技术
当公司或个人将其开发的软件对外发布后,可能出现用户恶意传播、篡改该软件的情况,造成知识产权的泄露,严重损害公司或个人的利益。因此,需要一款使用授权软件来规定和限制用户使用软件的权利。基于该使用授权软件,用户需先通过授权软件客户端提出授权请求,将生成的授权请求文件上传到授权软件服务端,授权软件服务端的管理人员审核授权请求文件并进行签发,最后再将已签发的授权请求文件导入至授权软件客户端进行验签,验签通过则可正常使用软件,验签不通过将禁止使用软件。
但是,本申请发明人在实现本发明的过程中发现,当前的使用授权软件只在软件启动流程中进行控制,而在软件运行过程中,则很难进行授权控制。如此,面对一些软件在运行后的很长时间内不退出的场景,当前的使用授权软件无法保护软件授权权益。
因此,当前需要更具灵活性的软件授权方案。
发明内容
本发明实施例的目的是提供一种软件授权方法、装置和介质,用于至少部分地解决上述技术问题。
为了实现上述目的,本发明实施例提供一种软件授权方法,应用于客户端,该软件授权方法包括:与服务器配合以进行待授权软件的使用权限验证,并在验证通过后启动所述待授权软件以及将该待授权软件确定为已授权软件;以及周期性访问处于运行状态的所述已授权软件的进程特定内存区域,以校验所述已授权软件的运行有效性,其中所述进程特定内存区域被配置用于存储关联于软件使用权限的校验信息。
可选的,所述与服务器配合以进行待授权软件的使用权限验证包括:获取并通过公钥加密针对待授权软件的使用权限信息,以生成授权申请文件,并向服务器传送所述授权申请文件,以使得所述服务器通过私钥对所述授权申请文件进行验签和授权以生成签名授权文件;获取并通过所述公钥解密所述签名授权文件,以提取验证信息;以及基于所述验证信息来验证所述待授权软件是否被授权。其中,所述公钥与所述私钥构建非对称密钥对。
可选的,校验所述已授权软件的运行有效性包括:从所述进程特定内存区域获取所述校验信息;使用摘要算法对所述校验信息进行摘要计算以得到对应的哈希值,并将该哈希值与预设的基准值进行比较;以及若所述哈希值与所述基准值一致,则判定所述已授权软件处于有效运行状态,否则判定所述已授权软件处于无效运行状态。
可选的,所述软件授权方法还包括:在校验到所述已授权软件处于无效运行状态时,执行预设的处理策略;以及在校验到所述已授权软件处于有效运行状态时,确定进行所述周期性访问的睡眠预定时间。
可选的,所述软件授权方法的步骤通过Rust语言实现。
另一方面,本发明实施例还提供一种软件授权装置,应用于客户端,该软件授权装置包括:授权验证单元,被配置为与服务器配合以进行待授权软件的使用权限验证,并在验证通过后启动所述待授权软件以及将该待授权软件确定为已授权软件;以及动态度量模块,被配置为周期性访问处于运行状态的所述已授权软件的进程特定内存区域,以校验所述已授权软件的运行有效性,其中所述进程特定内存区域被配置用于存储关联于软件使用权限的校验信息。
可选的,所述授权验证单元包括:授权申请文件创建模块,被配置为获取并通过公钥加密针对待授权软件的使用权限信息,以生成授权申请文件,并向服务器传送所述授权申请文件,以使得所述服务器通过私钥对所述授权申请文件进行验签和授权以生成签名授权文件;签名授权文件导入模块,被配置为获取并通过所述公钥解密所述签名授权文件,以提取验证信息;以及签名授权文件验证模块,被配置为根据所提取的验证信息来验证所述待授权软件是否被授权。其中,所述公钥与所述私钥构建非对称密钥对。
可选的,所述软件授权装置还包括以下模块中的任意一者或多者:前端界面模块,被配置为获取用户输入的用户基础信息,以使得所述授权申请文件创建模块还基于所述用户基础信息和所述客户端对应的硬件信息来生成所述使用权限信息;以及第一摘要算法模块,被配置为向所述签名授权文件导入模块和/或所述动态度量模块提供摘要算法,以使得所述签名授权文件导入模块和/或所述动态度模块基于所述摘要算法对应得到所述签名授权文件和/或所述校验信息的摘要。
可选的,所述动态度量模块校验所述已授权软件的运行有效性包括:从所述进程特定内存区域获取所述校验信息;使用摘要算法对所述校验信息进行摘要计算以得到对应的哈希值,并将该哈希值与预设的基准值进行比较;以及若所述哈希值与所述基准值一致,则判定所述已授权软件处于有效运行状态,否则判定所述已授权软件处于无效运行状态。
可选的,所述动态度量模块还被配置为:在校验到所述已授权软件处于无效运行状态时,执行预设的处理策略;以及在校验到所述已授权软件处于有效运行状态时,确定所述动态度量模块进行所述周期性访问的睡眠预定时间。
可选的,所述授权验证单元中的各模块以及所述动态度量模块通过Rust语言实现。
另一方面,本发明实施例还提供一种电子设备,包括:存储器,其存储有能够在处理器上运行的程序;以及所述处理器,其被配置为执行所述程序时实现上述任意的软件授权方法。
另一方面,本发明实施例还提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行上述任意的软件授权方法。
通过上述技术方案,本发明实施例实现了在软件运行过程中实时地对软件授权情况的检测,避免了一些软件在运行后的很长时间内不退出的情况,对授权失效软件及时进行中止运行等处理,进而能够更全面地保护软件授权权益。
本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1是本发明实施例的软件授权方法的流程示意图;
图2是本发明实施例中进行待授权软件的使用权限验证的流程示意图;
图3是本发明实施例中进行已授权软件的运行有效性校验的流程示意图;
图4是本发明实施例的软件授权装置的结构示意图;
图5是本发明实施例的示例中的客户端与服务器的系统框架示意图;
图6是本发明实施例的示例中的SHA-1摘要算法的原理图;
图7是本发明实施例的示例中的客户端与服务器的交互流程的示意图;
图8是本发明实施例的示例中的客户端生成授权申请文件的流程示意图;
图9是本发明实施例的示例中的服务器签发授权申请文件的流程示意图;
图10是本发明实施例的示例中的客户端验证签名授权文件的流程示意图;
图11是本发明实施例的示例中的客户端动态度量的流程示意图;以及
图12是本发明实施例的电子设备的结构示意图。
附图标记说明
100、授权验证单元;200、动态度量模块;300、前端界面模块;400、第一摘要算法模块;
110、授权申请文件创建模块;120、签名授权文件导入模块;130、签名授权文件验证模块。
具体实施方式
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
图1是本发明实施例的软件授权方法的流程示意图,该软件授权方法应用于客户端。如图1所示,该软件授权方法包括以下步骤:
步骤S100,与服务器配合以进行待授权软件的使用权限验证,并在验证通过后启动所述待授权软件以及将该待授权软件确定为已授权软件。
步骤S200,周期性访问处于运行状态的所述已授权软件的进程特定内存区域,以校验所述已授权软件的运行有效性。其中,所述进程特定内存区域被配置用于存储关联于软件使用权限的校验信息。
其中,针对步骤S100,如图2所示,可采用以下的步骤S110-S130来实现关于待授权软件的使用权限验证:
步骤S110,获取并通过公钥加密针对待授权软件的使用权限信息,以生成授权申请文件,并向服务器传送所述授权申请文件,以使得所述服务器通过私钥对所述授权申请文件进行验签和授权以生成签名授权文件。
步骤S120,获取并通过所述公钥解密所述签名授权文件,以提取验证信息。
步骤S130,基于所述验证信息来验证所述待授权软件是否被授权。
其中,所述公钥与所述私钥构建非对称密钥对。在示例中,公钥与私钥的生成原理可以描述为:
1)随机选择两个不同大质数p和q,计算N=p*q;
2)根据欧拉函数,求得
3)选择一个小于r的整数e,使e和r互质,并求得e关于r的模反元素,命名为d,有ed≡1(mod r);
4)将p和q的记录销毁;
5)此时(N,e)即为公钥,(N,d)即为私钥。
关于在此的公钥和私钥所应用的具体消息加解密场景,还将在下文具体描述,在此则不在赘述。
其中,针对步骤S200,如图3所示,可采用以下的步骤S210-S230来实现关于所述已授权软件的运行有效性的校验:
步骤S210,从所述进程特定内存区域获取所述校验信息。
步骤S220,使用摘要算法对所述校验信息进行摘要计算以得到对应的哈希值,并将该哈希值与预设的基准值进行比较。
步骤S230,若所述哈希值与所述基准值一致,则判定所述已授权软件处于有效运行状态,否则判定所述已授权软件处于无效运行状态。
其中,针对步骤S220,摘要算法是一种能产生特殊输出格式的算法。摘要算法的特点是:无论用户输入多少长度的原始数据,经过计算后输出的密文都是固定长度的。摘要算法的原理是:根据一定的运算规则对原数据进行某种形式的提取,这种提取就是摘要,被摘要的数据内容与原数据有密切联系,只要原数据稍有改变,输出的“摘要”便完全不同。因此,基于这种原理的算法便能对数据完整性提供较为健全的保障。但是,由于输出的密文是提取原数据经过处理的定长值,所以其已经不能还原为原数据,即消息摘要算法是不可逆的,理论上无法通过反向运算取得原数据内容。因此,摘要算法通常只能被用来做数据完整性验证。如今常用的信息摘要算法有MD5、SHA、SHA-1/256/384/512等,而在下文的示例中将会采用SHA-1摘要算法并对其进行详细介绍,在此则不再进行赘述。
进一步地,针对步骤S230,基于有效运行状态和无效运行状态的确定,软件授权方法还可以包括:在校验到所述已授权软件处于无效运行状态时,执行预设的处理策略;以及在校验到所述已授权软件处于有效运行状态时,确定进行所述周期性访问的睡眠预定时间。在此,关于预设的处理策略和睡眠预定时间设置将在下文中结合示例说明,在此将不再进行赘述。
需说明的是,上述软件授权方法的各个步骤通过Rust语言实现。Rust是一种快速、高并发、安全且具有授权性的编程语言。Rust编译器可以在编译时跟踪程序中资源的变量,并在没有垃圾收集器(Garbage Collectors,GC)的情况下完成所有这些操作。使用Rust语言可以避免内存缓冲区溢出攻击。
基于与上述软件授权方法相同的发明思路,本发明实施例还提出了一种如图4所示的软件授权装置,其同样应用于客户端。参考图4,该软件授权装置可以包括:授权验证单元100,被配置为与服务器配合以进行待授权软件的使用权限验证,并在验证通过后启动所述待授权软件以及将该待授权软件确定为已授权软件;以及动态度量模块200,被配置为周期性访问处于运行状态的所述已授权软件的进程特定内存区域,以校验所述已授权软件的运行有效性,其中所述进程特定内存区域被配置用于存储关联于软件使用权限的校验信息。
在优选的实施例中,所述授权验证单元100包括:授权申请文件创建模块110,被配置为获取并通过公钥加密针对待授权软件的使用权限信息,以生成授权申请文件,并向服务器传送所述授权申请文件,以使得所述服务器通过私钥对所述授权申请文件进行验签和授权以生成签名授权文件;签名授权文件导入模块120,被配置为获取并通过所述公钥解密所述签名授权文件,以提取验证信息;以及签名授权文件验证模块130,被配置为根据所提取的验证信息来验证所述待授权软件是否被授权。其中,所述公钥与所述私钥构建非对称密钥对。
在更为优选的实施例中,所述软件授权装置还包括以下模块中的任意一者或多者:前端界面模块300,被配置为获取用户输入的用户基础信息,以使得所述授权申请文件创建模块还基于所述用户基础信息和所述客户端对应的硬件信息来生成所述使用权限信息;以及第一摘要算法模块400,被配置为向所述签名授权文件导入模块和/或所述动态度量模块提供摘要算法,以使得所述签名授权文件导入模块和/或所述动态度模块基于所述摘要算法对应得到所述签名授权文件和/或所述校验信息的摘要。
需说明的是,所述授权验证单元100中的各模块(授权申请文件创建模块110、签名授权文件导入模块120和签名授权文件验证模块130)以及所述动态度量模块200通过Rust语言实现。具体地,这些模块利用Rust语言生成动态库,提供API接口,嵌入至软件程序流程中。软件程序可以使用动态链接或者静态链接的方式,将Rust库链入。举例而言,程序启动过程中,在启动流程中嵌入签名授权文件导入模块120和签名授权文件验证模块130这两个模块的API,通过API调用跳转至Rust程序执行;而动态度量模块200是一个使用Rust编写的独立的后台线程,周期性地唤醒,可以获取到进程运行的内存空间的关键信息进行动态度量。
该软件授权装置的更多实施细节可参考上述的软件授权方法,在此不再进行赘述。并且,出于更为清楚地介绍本发明实施例的软件授权装置及方法的具体应用的考虑,下面还将通过示例进行详细描述。
本发明实施例的示例针对图5所示的系统框架,该系统框架包括客户端与服务器两部分,其中所述客户端布置如图4的软件授权装置的各个模块,而服务器布置与客户端相应模块的功能相适应的模块。
具体地,在本示例中,客户端分为如下模块:
1)前端界面模块300:图形化界面处理用户的输入信息;
2)授权申请文件创建模块110:对用户的输入信息和硬件信息进行加密处理;
3)签名授权文件导入模块120:对签名授权文件进行解密,提取信息;
4)签名授权文件验证模块130:对签名授权文件进行验证,判读用户信息、授权时间等内容;
5)第一摘要算法模块400:提供摘要算法实现。
6)动态度量模块200:提供软件在运行过程中的周期性授权检查。
进一步地,服务器分为如下模块:
1)授权申请文件添加模块510:对用户的输入信息和硬件信息进行解密处理;
2)授权申请文件签发模块520:检查注册信息进行授权文件的签发;
3)签名授权文件导出模块530:对签名授权文件进行加密处理;
4)非对称加密算法模块600:提供非对称加密算法实现;
5)第二摘要算法模块700:提供摘要算法实现。
基于图5的系统架构及客户端与服务器的功能模块部署,本示例的设计思路主要有以下要点:
1)加密算法使用非对称加密,即加密和解密使用不同的钥匙,一把作为公开的公钥,另一把作为私钥。公钥加密的信息只有私钥才能解密,私钥加密的信息只有公钥才能解密。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。
2)使用Rust语言进行开发,Rust语言开发的程序拥有较高的稳定性,且难以进行反汇编破解。
3)在软件设计上使用前后端分离设计,即进行前端的客户端和后端的服务器的功能模块的分别设计。
4)后端实现具体license(证书)相关功能,并提供命令行参数方便集成到其他脚本形式的批处理文件中提供给管理者使用。
5)前端提供图形化界面,封装后端功能提供给普通用户使用。
基于该设计要点,本示例进一步给出消息加解密设计以及摘要算法设计如下。
一、消息加密与解密。
消息加密:首先需要将明文m以一个双方约定好的格式转化为一个小于N,且与N互质的整数n,如果消息较长,可将消息分为几段,然后对每一段使用如下公式(消息加密其实质就是对明文的e次方后除以N后求余数的过程):
ne≡c(mod N)
消息解密:利用密钥d进行解密(消息解密其实质就是密文进行d次方后除以N的余数的过程),公式如下:
cd≡n(mod N)
二、SHA-1摘要算法。
结合图6示出的SHA-1摘要算法原理图,具体可包括以下步骤:
1、首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(Bits Length)将被扩展至N*512+448,即N*64+56个字节(Bytes),N为一个正整数。填充的方法为:在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。
2、附加消息长度。
3、对消息摘要缓冲区初始化,算法使用160比特长的缓冲区来存储中间结果和最终散列值,将缓冲区表示成5个32比特长的寄存器A、B、C、D、E,每个寄存器以大端方式存储数据,初始值为(十六进制,高位字节在前)A=67452301,B=EFCDAB89,C=98BADCFE,D=10325476,E=C3D2E1F0。
4、以分组为单位对消息进行处理,每一个分组都经过压缩函数HSHA处理;HSHA有4轮处理过程,每一轮又有20步迭代;4轮处理过程的处理结构一样,所用逻辑函数不同,分别表示为f1、f2、f3、f4;每轮的输入为当前处理的消息分组和缓冲区当前的值,输出仍存放在缓冲区中。最后第四轮的输出与第一轮输入的缓冲区值V相加,相加时将V看做5个32比特的字,每个字与第四轮输出的对应的字按模232相加,相加结果为HMD5的输出。
5、消息的所有分组均被处理完后,最后一个HSHA的输出即为产生的160位消息摘要。
基于上述设计要点及算法实现方案,本示例基于图5的系统架构图,可利用本发明实施例的软件授权方案实现如图7所示的客户端与服务器之间的交互流程。参考图7,该交互流程可描述为包括以下步骤:
S1,用户在前端界面填写姓名、公司名称等基础信息提交给客户端(也称为验签客户端)。
S2,客户端收到用户提交的信息以后,自动获取本机MAC地址、硬盘运行时间等硬件信息,然后将用户信息和硬件信息加密生成授权申请文件。
S3,客户端将授权申请文件返回给用户。
S4,用户将授权申请文件提交到服务器(也称为验签服务端)。
S5,服务器读取授权申请文件中的内容,然后使用私钥对内容进行解密,通过用户提交的信息以及硬件信息判断是否进行授权,最后将授权信息使用私钥进行加密生成签名授权文件。
S6,服务器将签发的签名授权文件返回给用户。
S7,用户将签名授权文件提交到客户端;
S8,客户端读取签名授权文件中的内容,然后使用公钥对内容进行解密,判断授权信息和授权签名信息是否合法。
S9,客户端周期性访问软件的进程特定内存区域,进行授权动态度量。
更为具体地,针对步骤S2,如图8所示,客户端生成授权申请文件的流程可包括以下步骤:
步骤S21,获取硬件信息。举例而言,读取用户在前端界面填写的姓名、公司名称等基础信息,然后自动获取用户电脑的网络设备MAC地址、硬盘运行时间等硬件信息。
步骤S22,生成明文授权申请文件。举例而言,将用户的基础信息和电脑硬件信息字符串拼接在一起,然后将其生成为JSON格式字符串。生成的明文JSON格式字符串即授权申请文件(lic.req.origin),其中lic是license的缩写,表明相应文件是证书形式。
步骤S23,生成密文授权申请文件,即符合要求的授权申请文件。举例而言,客户端使用公钥(公钥内置在客户端中,是由服务端持有的私钥生成的公钥)将明文授权申请文件(lic.req.origin)加密为密文授权申请文件(lic.req)。
更为具体地,针对步骤S5,如图9所示,服务器签发授权申请文件的流程可包括以下步骤:
步骤S51,解析密文授权申请文件。举例而言,服务器读取密文授权申请文件(lic.req),使用持有的私钥将密文lic.req文件解析为明文JSON格式字符串(lic.req.origin)。
步骤S52,服务器读取lic.req.origin中的用户基础信息和用户电脑硬件信息,判断申请内容是否合法。若合法,则执行步骤S53,否则拒绝签发。
步骤S53,生成签名授权文件。举例而言,可以包括:服务器将lic.req.origin中的信息和授权信息(如授权人、授权时间等信息)组装为JSON格式字符串(info),然后使用私钥对info加密为授权信息(lic.info);服务器先使用摘要算法(SHA-1)得到lic.info的摘要,然后使用私钥对摘要加密为授权信息签名(lic.hash_sign);最后将lic.info和lic.hash_sign组装为JSON格式字符串即签名授权文件(lic.sig)。
更为具体地,针对步骤S8,如图10所示,客户端验证签名授权文件的流程可包括以下步骤:
步骤S81,客户端获取服务器签发的签名授权文件,即证书lic.sig。例如客户端从本地缓存中读取lic.sig。
步骤S82,读取证书lic.sig。具体地,lic.sig为JSON格式字符串,读取其lic.info和lic.hash_sign两部分。即,lic.info+lic.hash_sign=lic.sig。
步骤S83,客户端使用和服务器相同的摘要算法(SHA-1)得到lic.info的摘要hash1。即,计算hash1=sha_hash(lic.info)。
步骤S84,客户端使用公钥对被加密的lic.hash_sign进行解密得到hash2。即,hash2=rsa_dec(lic.hash_sign)。
步骤S85,使用公钥对加密的授权信息进行解密。即,info=rsa_dec(ca.pubkey,lic.info)。
步骤S86,客户端判断hash1和hash2是否相等,不相等则代表授权信息被篡改过验证失败。hash1和hash2相等的情况下,使用公钥解析出授权信息,判断授权日期是否正常、网口设备MAC地址是否一致等,正常则验证成功,不正常则验证失败。
更为具体地,针对步骤S9,如图11所示,客户端动态度量的流程可包括以下步骤:
步骤S91,周期性唤醒动态度量模块。
步骤S92,动态度量模块访问软件程序运行过程中的内存空间,读取指定内存内容,如指定代码段、数据段或文件页面缓存。这些内存区域和授权校验策略中约定的内容相关联。
步骤S93,使用前述的摘要算法(SHA-1)进行摘要计算。
步骤S94,与基准值进行对比,判断软件授权合法性。其中,所述基准值例如是客户端前述计算出的相等的hash1或hash2。
步骤S95,如果校验授权不合法,按照预定策略进行处理,如立即中止运行、告警提示、关闭某些功能等。
步骤S96,如果校验授权合法,动态度量模块设置睡眠预定时间。其中,睡眠预定时间对应于动态度量模块的唤醒周期,其在睡眠预定时间内休眠,而后被周期性唤醒来验证软件授权情况。
综上,结合该示例,易知本发明实施例的软件授权方法和装置至少具有以下方面的优势:
1)实现了在软件运行过程中实时地对软件授权情况的检测,避免了一些软件在运行后的很长时间内不退出的情况,对授权失效软件及时进行中止运行等处理,进而能够更全面地保护软件授权权益。
2)使用非对称加密算法安全性更高,有助于解决常规的对称加密算法造成的密钥泄露风险以及管理密钥困难的问题。并且,本发明实施例方案的前后端设计基于加密文件传递,无法被篡改,进一步提升了安全性。
3)基于Rust语言实现了相关步骤或模块的关键流程,可以避免内存缓冲区溢出攻击,且增加了由于逆向工程导致的授权软件破解决的门槛,可以避免C、C++、Java语言等因授权软件被反汇编而使得授权流程无效的问题。
4)基于通用的客户端-服务器框架,解决了使用ARM架构TrustZone的TEE框架而存在的与处理器硬件架构和底层操作系统绑定密切的问题,通用性更强。
5)基于客户端-服务器框架的前后端分离设计,便于提供命令行参数以方便集成到各种软件中使用。
6)对客户端程序和服务器程序分别进行摘要算法对比,防止更换验签程序,安全性更高。
图12是本发明实施例的电子设备的结构示意图。如图12所示,该电子包括:存储器,其存储有能够在处理器上运行的程序;以及所述处理器,其被配置为执行所述程序时实现上述任意的软件授权方法。
其中,所述电子设备包括但不限于计算机设备、智能手机、车载终端等。
另外,在该电子设备中,上述的软件授权方法的相关步骤可作为程序单元存储在存储器中,由处理器执行存储在存储器中相应程序单元来实现相应的功能,或者上述软件授权装置的各个模块直接作为程序单元存储在存储器中。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现本发明实施例的软件授权方法。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器上述任意的软件授权方法。
本发明实施例还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述任意的软件授权方法。
本发明实施例还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有上述任意的软件授权方法的步骤的程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (13)

1.一种软件授权方法,其特征在于,应用于客户端,该软件授权方法包括:
与服务器配合以进行待授权软件的使用权限验证,并在验证通过后启动所述待授权软件以及将该待授权软件确定为已授权软件;以及
周期性访问处于运行状态的所述已授权软件的进程特定内存区域,以校验所述已授权软件的运行有效性,其中所述进程特定内存区域被配置用于存储关联于软件使用权限的校验信息。
2.根据权利要求1所述的软件授权方法,其特征在于,所述与服务器配合以进行待授权软件的使用权限验证包括:
获取并通过公钥加密针对待授权软件的使用权限信息,以生成授权申请文件,并向服务器传送所述授权申请文件,以使得所述服务器通过私钥对所述授权申请文件进行验签和授权以生成签名授权文件;
获取并通过所述公钥解密所述签名授权文件,以提取验证信息;以及
基于所述验证信息来验证所述待授权软件是否被授权;
其中,所述公钥与所述私钥构建非对称密钥对。
3.根据权利要求1所述的软件授权方法,其特征在于,校验所述已授权软件的运行有效性包括:
从所述进程特定内存区域获取所述校验信息;
使用摘要算法对所述校验信息进行摘要计算以得到对应的哈希值,并将该哈希值与预设的基准值进行比较;以及
若所述哈希值与所述基准值一致,则判定所述已授权软件处于有效运行状态,否则判定所述已授权软件处于无效运行状态。
4.根据权利要求3所述的软件授权方法,其特征在于,所述软件授权方法还包括:
在校验到所述已授权软件处于无效运行状态时,执行预设的处理策略;以及
在校验到所述已授权软件处于有效运行状态时,确定进行所述周期性访问的睡眠预定时间。
5.根据权利要求1至4中任意一项所述的软件授权方法,其特征在于,所述软件授权方法的步骤通过Rust语言实现。
6.一种软件授权装置,其特征在于,应用于客户端,该软件授权装置包括:
授权验证单元,被配置为与服务器配合以进行待授权软件的使用权限验证,并在验证通过后启动所述待授权软件以及将该待授权软件确定为已授权软件;以及
动态度量模块,被配置为周期性访问处于运行状态的所述已授权软件的进程特定内存区域,以校验所述已授权软件的运行有效性,其中所述进程特定内存区域被配置用于存储关联于软件使用权限的校验信息。
7.根据权利要求6所述的软件授权装置,其特征在于,所述授权验证单元包括:
授权申请文件创建模块,被配置为获取并通过公钥加密针对待授权软件的使用权限信息,以生成授权申请文件,并向服务器传送所述授权申请文件,以使得所述服务器通过私钥对所述授权申请文件进行验签和授权以生成签名授权文件;
签名授权文件导入模块,被配置为获取并通过所述公钥解密所述签名授权文件,以提取验证信息;以及
签名授权文件验证模块,被配置为根据所提取的验证信息来验证所述待授权软件是否被授权;
其中,所述公钥与所述私钥构建非对称密钥对。
8.根据权利要求7所述的软件授权装置,其特征在于,所述软件授权装置还包括以下模块中的任意一者或多者:
前端界面模块,被配置为获取用户输入的用户基础信息,以使得所述授权申请文件创建模块还基于所述用户基础信息和所述客户端对应的硬件信息来生成所述使用权限信息;以及
第一摘要算法模块,被配置为向所述签名授权文件导入模块和/或所述动态度量模块提供摘要算法,以使得所述签名授权文件导入模块和/或所述动态度模块基于所述摘要算法对应得到所述签名授权文件和/或所述校验信息的摘要。
9.根据权利要求6所述的软件授权装置,其特征在于,所述动态度量模块校验所述已授权软件的运行有效性包括:
从所述进程特定内存区域获取所述校验信息;
使用摘要算法对所述校验信息进行摘要计算以得到对应的哈希值,并将该哈希值与预设的基准值进行比较;以及
若所述哈希值与所述基准值一致,则判定所述已授权软件处于有效运行状态,否则判定所述已授权软件处于无效运行状态。
10.根据权利要求9所述的软件授权装置,其特征在于,所述动态度量模块还被配置为:
在校验到所述已授权软件处于无效运行状态时,执行预设的处理策略;以及
在校验到所述已授权软件处于有效运行状态时,确定所述动态度量模块进行所述周期性访问的睡眠预定时间。
11.根据权利要求6至10中任意一项所述的软件授权装置,其特征在于,所述授权验证单元中的各模块以及所述动态度量模块通过Rust语言实现。
12.一种电子设备,其特征在于,包括:
存储器,其存储有能够在处理器上运行的程序;以及
所述处理器,其被配置为执行所述程序时实现权利要求1至5中任意一项所述的软件授权方法。
13.一种机器可读存储介质,其特征在于,该机器可读存储介质上存储有指令,该指令用于使得机器执行权利要求1至5中任意一项所述的软件授权方法。
CN202310801909.6A 2023-06-30 2023-06-30 软件授权方法、装置和介质 Pending CN117009926A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310801909.6A CN117009926A (zh) 2023-06-30 2023-06-30 软件授权方法、装置和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310801909.6A CN117009926A (zh) 2023-06-30 2023-06-30 软件授权方法、装置和介质

Publications (1)

Publication Number Publication Date
CN117009926A true CN117009926A (zh) 2023-11-07

Family

ID=88561086

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310801909.6A Pending CN117009926A (zh) 2023-06-30 2023-06-30 软件授权方法、装置和介质

Country Status (1)

Country Link
CN (1) CN117009926A (zh)

Similar Documents

Publication Publication Date Title
CN109858265B (zh) 一种加密方法、装置及相关设备
KR101067399B1 (ko) 대칭 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체
KR100996784B1 (ko) 공개 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체
WO2020192406A1 (zh) 数据存储、验证方法及装置
KR100792287B1 (ko) 자체 생성한 암호화키를 이용한 보안방법 및 이를 적용한보안장치
CN109657479B (zh) 数据防泄漏方法及计算机可读存储介质
US8392724B2 (en) Information terminal, security device, data protection method, and data protection program
KR20040094724A (ko) 멀티-토큰 실 및 실 해제
KR20140099126A (ko) 소프트웨어를 보안하기 위하여 해시 함수를 이용한 소프트웨어 처리 방법, 그 장치 및 그 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체
CN111814132B (zh) 安全认证方法及装置、安全认证芯片、存储介质
CN108199827B (zh) 客户端代码完整性校验方法、存储介质、电子设备及系统
CN106055936A (zh) 可执行程序数据包加密/解密方法及装置
US20090193261A1 (en) Apparatus and method for authenticating a flash program
CN111241492A (zh) 一种产品多租户安全授信方法、系统及电子设备
EP4319041A1 (en) Cipher card and root key protection method therefor, and computer readable storage medium
KR20170089352A (ko) 가상화 시스템에서 수행하는 무결성 검증 방법
JPH1131105A (ja) データカプセル生成装置および方法
CN117556430B (zh) 一种安全启动方法、装置、设备及存储介质
CN109302442B (zh) 一种数据存储证明方法及相关设备
CN114816549B (zh) 一种保护bootloader及其环境变量的方法及系统
CN115062330B (zh) 基于tpm的智能密码钥匙密码应用接口的实现方法
CN114189862A (zh) 无线终端及无线终端在Uboot模式下的接口访问鉴权方法
CN108376212B (zh) 执行代码安全保护方法、装置及电子装置
CN117009926A (zh) 软件授权方法、装置和介质
KR101054075B1 (ko) 보호키 사용 제한 방법 및 장치

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