一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于数字签名的软件许可证验证系统及方法与流程

2022-03-16 04:05:13 来源:中国专利 TAG:


1.本发明涉及数字签名技术领域,尤其涉及一种基于数字签名的软件许可证验证系统及方法。


背景技术:

2.在软硬件产品逐渐推广落地的过程中,需要引入软件许可来保护这些类型的产品。当前已存在的许可授权方式有:
3.1、在线申请许可并在线校验,但是由于大量软硬件产品需要离线工作,该方案无法满足各软硬件产品复杂的交付运行环境;
4.2、硬件授权,如ukey、加密卡等方式,但是该方案无法适应日益复杂的云服务环境。
5.因此,需要对目前的许可授权方案进行改进。


技术实现要素:

6.本发明提供一种基于数字签名的软件许可证验证系统及方法,用以解决现有技术中授权方法不支持离线且必须采用硬件授权的方式的缺陷,实现适应日益复杂的云服务环境,并以软件和离线实现的方式,有效保护各种软硬件产品的产权。
7.本发明提供一种基于数字签名的软件许可证验证系统,包括:
8.许可证管理模块,用于生成一对由私钥和公钥组成的非对称密钥对,获取申请信息,并基于所述私钥审批所述申请信息,在审批通过后生成软件许可证;其中,所述申请信息包括产品的申请码、合同信息、产品使用的各项限制信息;
9.集成于产品中的申请码生成模块以及许可证校验模块,所述申请码生成模块用于生成所述申请码,所述许可证校验模块用于获取所述软件许可证、所述公钥以及所述申请信息,基于所述公钥,验签所述软件许可证,并且基于当前软硬件信息,校验申请信息。
10.根据本发明提供的基于数字签名的软件许可证验证系统,所述许可证管理模块具体包括:
11.密钥生成单元,用于生成所述非对称密钥对;
12.许可证申请单元,用于获取申请信息,并发起软件许可证申请请求;
13.许可证管理单元,用于获取所述申请信息和所述软件许可证申请请求,并在获取到软件许可证申请请求后基于所述私钥审批申请信息,在审批通过后生成软件许可证。
14.根据本发明提供的基于数字签名的软件许可证验证系统,所述许可证管理单元具体包括:
15.依次设置的多级的所述许可证管理单元,每一级的所述许可证管理单元均用于在其相邻的前一级所述许可证管理单元基于所述私钥审批申请信息并通过后,基于所述私钥审批申请信息,且,最后一级的所述许可证管理单元在审批通过后,生成所述软件许可证。
16.根据本发明提供的基于数字签名的软件许可证验证系统,所述申请码生成模块具
体包括:
17.用于生成所述申请码或者包含所述申请码的申请文件。
18.根据本发明提供的基于数字签名的软件许可证验证系统,所述许可证校验模块具体包括:
19.获取单元,用于获取所述软件许可证、所述公钥以及所述申请信息;
20.第一校验单元,用于使用所述公钥对所述软件许可证验签;
21.第二校验单元,用于校验所述软件许可证的有效期是否超出预设期限;
22.第三校验单元,用于校验所述软件许可证对应的所述申请码与产品当前软硬件环境是否匹配;
23.解析单元,用于在所述第一校验单元、所述第二校验单元和所述第三校验单元均校验通过后,提取所述限制信息。
24.根据本发明提供的基于数字签名的软件许可证验证系统,该系统还包括:
25.合同管理模块,用于存储所述合同信息,并将所述合同信息发送给所述许可证管理模块。
26.本发明还提供一种基于数字签名的软件许可证验证方法,包括以下步骤:
27.生成一对所述非对称密钥对;其中,所述私钥用于签发所述软件许可证并保存于所述许可证管理模块中,所述公钥用于验签所述软件许可证,并以ca证书的形式分发给产品;
28.获取所述申请信息,并基于所述私钥审批所述申请信息,在审批通过后生成所述软件许可证;
29.将所述软件许可证、所述公钥以及所述申请信息下发发给对应的产品,产品基于所述公钥,验签所述软件许可证,并且基于当前软硬件信息,校验申请信息。
30.根据本发明提供的基于数字签名的软件许可证验证方法,所述获取所述申请信息,并基于所述私钥审批所述申请信息,在审批通过后生成所述软件许可证,具体包括以下步骤:
31.获取所述申请信息,并基于所述私钥逐级地审批所述申请信息,在每一级所述许可证管理单元均审批通过后,签发并生成所述软件许可证。
32.根据本发明提供的基于数字签名的软件许可证验证方法,所述获取所述申请信息,并基于所述私钥审批所述申请信息,在审批通过后生成所述软件许可证步骤中,所述申请信息中的所述申请码通过以下步骤生成:
33.集成于产品中的所述申请码生成模块基于产品的硬件信息,生成所述申请码或者包含所述申请码的申请文件。
34.根据本发明提供的基于数字签名的软件许可证验证方法,所述将所述软件许可证、所述公钥以及所述申请信息下发发给对应的产品,产品基于所述公钥,验签所述软件许可证,并且基于当前软硬件信息,校验申请信息,具体包括以下步骤:
35.集成于产品中的中的所述许可证校验模块获取所述软件许可证、所述公钥以及所述申请信息;
36.使用所述公钥对所述软件许可证验签;
37.当所述公钥验签通过时,校验所述软件许可证的有效期是否超出预设期限;
38.当所述有效期并未超出预设期限时,校验所述软件许可证对应的所述申请码与产品当前软硬件环境是否匹配;
39.当匹配时,提取所述限制信息,并将所述限制信息返回给产品。
40.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于数字签名的软件许可证验证方法的步骤。
41.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于数字签名的软件许可证验证方法的步骤。
42.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述基于数字签名的软件许可证验证方法的步骤。
43.本发明提供的基于数字签名的软件许可证验证系统及方法,基于开放的数字签名技术,通过许可证管理模块生成非对称密钥对,并基于非对称密钥对的私钥和获取到的相关申请信息,签发软件许可证,再通过集成于产品中许可证校验模块利用非对称密钥对的公钥验签软件许可证,进行相应的授权工作,本发明能够适应日益复杂的云服务环境,并以软件和离线实现的方式,有效保护各种软硬件产品的产权。
附图说明
44.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
45.图1是本发明提供的基于数字签名的软件许可证验证系统的结构示意图;
46.图2是本发明提供的基于数字签名的软件许可证验证系统中许可证管理模块具体的结构示意图;
47.图3是本发明提供的基于数字签名的软件许可证验证系统中许可证校验模块300具体的结构示意图;
48.图4是本发明提供的基于数字签名的软件许可证验证方法的流程示意图;
49.图5是本发明提供的基于数字签名的软件许可证验证方法中步骤s300具体的流程示意图;
50.图6是本发明提供的电子设备的结构示意图。
具体实施方式
51.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
52.下面结合图1描述本发明的基于数字签名的软件许可证验证系统,该系统包括:
53.许可证管理模块100,用于生成一对由私钥和公钥组成的非对称密钥对,获取申请
信息,并基于私钥审批申请信息,在审批通过后生成软件许可证。其中,私钥用于签发所述软件许可证并保存于许可证管理模块中,避免外泄;公钥用于验签软件许可证,并以ca证书的形式分发给产品,在产品发版时集成。
54.在本实施例中,申请信息包括产品的申请码、合同信息、产品使用的各项限制信息。
55.集成于产品中的申请码生成模块200以及许可证校验模块300,申请码生成模块200用于生成申请码,许可证校验模块300用于获取软件许可证、公钥以及申请信息,基于申请信息以及公钥,验签软件许可证,并且基于当前软硬件信息,校验申请信息。
56.在本实施例中,申请码与产品的硬件信息相绑定,即申请码基于产品的硬件信息生成,并且申请码可以包含在申请文件中。
57.可以理解的是,该系统还可以包括合同管理模块,合同管理模块用于存储合同号、用户名称等合同信息,并将合同信息发送给许可证管理模块。
58.本发明的基于数字签名的软件许可证验证系统,基于开放的数字签名技术,通过许可证管理模块100生成非对称密钥对,并基于非对称密钥对的私钥和获取到的相关申请信息,签发软件许可证,再通过集成于产品中许可证校验模块300利用非对称密钥对的公钥验签软件许可证,进行相应的授权工作,该系统能够适应日益复杂的云服务环境,并以软件和离线实现的方式,有效保护各种软硬件产品的产权。
59.下面结合图2描述本发明的基于数字签名的软件许可证验证系统,许可证管理模块100具体包括:
60.密钥生成单元110,用于生成非对称密钥对。
61.许可证申请单元120,用于获取申请信息,并发起软件许可证申请请求。
62.许可证管理单元130,用于获取申请信息和软件许可证申请请求,并在获取到软件许可证申请请求后,进行软件许可证申请请求的审批,具体的,是基于私钥审批申请信息,并在审批通过后签发并生成软件许可证。许可证管理单元130生成软件许可证后,下载相应的软件许可证文件并交付产品使用。
63.需要说明的是,在本实施例中,许可证管理单元130设置为多级并依次设置,每一级的许可证管理单元130均用于在其相邻的前一级许可证管理单元130基于私钥审批申请信息并通过后,再基于私钥审批申请信息,且,最后一级的许可证管理单元130在审批通过后,签发并生成软件许可证。
64.因此,许可证管理模块100中由各级的许可证管理单元130审批软件许可证申请请求。每一级的许可证管理单元130在审批时均可以获取并查看申请信息的详情,例如,许可证申请单元120根据合同号向合同管理模块400查询合同的详细信息,并呈现给许可证管理单元130,各级的许可证管理单元130审批通过后签发并生成软件许可证。
65.下面结合图3描述本发明的基于数字签名的软件许可证验证系统,许可证校验模块300具体包括:
66.获取单元310,用于获取软件许可证、公钥以及申请信息。
67.第一校验单元320,用于使用公钥对软件许可证验签。
68.第二校验单元330,用于在第一校验单元320校验通过后,校验软件许可证的有效期是否超出预设期限,即校验软件许可证是否在有效期内。
69.第三校验单元340,用于在第二校验单元330校验通过后,校验软件许可证对应的申请码与产品当前软硬件环境是否匹配,即效验申请码与产品当前软硬件环境的匹配情况。
70.解析单元350,用于在第一校验单元320、第二校验单元330和第三校验单元340均校验通过后,提取限制信息,并将限制信息返回给产品。后期,各产品在用户登录、客户端连接、消息收发等事件触发时根据产品对应的各项限制信息校验相应的限制。
71.在本实施例中,软件许可证(license)的软件开发工具包(software development kit,sdk)集成于各产品中,用于生成申请码和校验软件许可证。具体的,首先开发实现c语言sdk,并编译构建为windows版的dll库文件及linux版的so库文件,直接作为c语言sdk使用。其它语言的sdk集成c语言的sdk,封装相应语言的接口,编译构建为各语言的sdk,包括java、go、python等语言。因此,该系统具备多平台、多语言支持,并且能够灵活添加各类自定义限制,使用方便。
72.sdk为各产品提供两类接口,一是申请码生成接口,通过指定硬件类型,获取产品运行的硬件信息,生成申请码;二是许可证校验接口,使用内置的ca证书对许可证验签校验许可证颁发者,然后检查许可证有效期,再校验许可证的申请码与当前软硬件环境匹配情况,其中,ca证书为许可证管理模块100生成的非对称密钥对中的公钥在产品打包时,分发给产品的。
73.下面结合图4描述本发明的基于数字签名的软件许可证验证方法,该方法基于本发明的基于数字签名的软件许可证验证系统所实现,该方法包括以下步骤:
74.s100、由许可证管理模块100生成一对由私钥和公钥组成的非对称密钥对。
75.s200、获取申请信息,并基于私钥审批申请信息,在审批通过后生成软件许可证。具体的,在每一级许可证管理单元130均审批通过后,签发并生成软件许可证。
76.s300、将软件许可证、公钥以及申请信息下发发给对应的产品,产品基于公钥,验签软件许可证,并且基于当前软硬件信息,校验申请信息。
77.本发明的基于数字签名的软件许可证验证系统,基于开放的数字签名技术,通过生成非对称密钥对,并基于非对称密钥对的私钥和获取到的相关申请信息,签发软件许可证,再利用非对称密钥对的公钥验签软件许可证,进行相应的授权工作,使得该方法能够适应日益复杂的云服务环境,并以软件和离线实现的方式,有效保护各种软硬件产品的产权。
78.下面结合图5描述本发明的基于数字签名的软件许可证验证方法,步骤s300具体包括以下步骤:
79.s310、集成于产品中的中的许可证校验模块获取软件许可证、公钥以及申请信息;
80.s320、使用公钥对软件许可证验签;
81.s330、当公钥验签通过时,校验软件许可证的有效期是否超出预设期限;
82.s340、当有效期并未超出预设期限时,校验软件许可证对应的申请码与产品当前软硬件环境是否匹配;
83.s350、当匹配时,提取限制信息,并将限制信息返回给产品。
84.各产品在用户登录、客户端连接、消息收发等事件触发时根据产品对应的各项限制信息校验相应的限制。
85.图6示例了一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处
理器(processor)810、通信接口(communications interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行基于数字签名的软件许可证验证方法,该方法包括以下步骤:
86.s100、生成一对所述非对称密钥对;其中,所述私钥用于签发所述软件许可证并保存于所述许可证管理模块中,所述公钥用于验签所述软件许可证,并以ca证书的形式分发给产品;
87.s200、获取所述申请信息,并基于所述私钥审批所述申请信息,在审批通过后生成所述软件许可证;
88.s300、将所述软件许可证、所述公钥以及所述申请信息下发发给对应的产品,产品基于所述公钥,验签所述软件许可证,并且基于当前软硬件信息,校验申请信息。
89.此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
90.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的基于数字签名的软件许可证验证方法,该方法包括以下步骤:
91.s100、生成一对所述非对称密钥对;其中,所述私钥用于签发所述软件许可证并保存于所述许可证管理模块中,所述公钥用于验签所述软件许可证,并以ca证书的形式分发给产品;
92.s200、获取所述申请信息,并基于所述私钥审批所述申请信息,在审批通过后生成所述软件许可证;
93.s300、将所述软件许可证、所述公钥以及所述申请信息下发发给对应的产品,产品基于所述公钥,验签所述软件许可证,并且基于当前软硬件信息,校验申请信息。
94.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的基于数字签名的软件许可证验证方法,该方法包括以下步骤:
95.s100、生成一对所述非对称密钥对;其中,所述私钥用于签发所述软件许可证并保存于所述许可证管理模块中,所述公钥用于验签所述软件许可证,并以ca证书的形式分发给产品;
96.s200、获取所述申请信息,并基于所述私钥审批所述申请信息,在审批通过后生成所述软件许可证;
97.s300、将所述软件许可证、所述公钥以及所述申请信息下发发给对应的产品,产品
基于所述公钥,验签所述软件许可证,并且基于当前软硬件信息,校验申请信息。
98.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
99.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
100.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献