CN116881865A - 一种许可证生成方法以及*** - Google Patents
一种许可证生成方法以及*** Download PDFInfo
- Publication number
- CN116881865A CN116881865A CN202310990170.8A CN202310990170A CN116881865A CN 116881865 A CN116881865 A CN 116881865A CN 202310990170 A CN202310990170 A CN 202310990170A CN 116881865 A CN116881865 A CN 116881865A
- Authority
- CN
- China
- Prior art keywords
- authorization
- key
- information
- license
- description 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 41
- 238000013475 authorization Methods 0.000 claims abstract description 239
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 91
- 230000006870 function Effects 0.000 claims description 40
- 238000012795 verification Methods 0.000 claims description 32
- 238000012986 modification Methods 0.000 claims description 12
- 230000004048 modification Effects 0.000 claims description 12
- 238000005336 cracking Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 238000010923 batch production Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 238000012546 transfer 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/105—Arrangements for software license management or administration, e.g. for managing licenses at corporate level
-
- 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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种许可证生成方法,所述方法方法:当进行在线授权时,通过软件读取硬件信息,并将获取到的所述硬件信息序列化生成授权描述信息;利用对称加密算法生成密钥,基于密钥加密授权描述信息;利用非对称加密算法生成密钥对,密钥对包括公钥和私钥,通过私钥对已加密的授权描述信息进行私钥签名以生成数字签名,将加密的授权描述信息和数字签名合并以生成许可证;当进行离线授权时,通过软件读取所述硬件信息,并将获取到的硬件信息序列化生成授权描述信息;利用对称加密算法生成密钥,基于密钥加密所述授权描述信息以生成许可证。本申请能够进行硬件信息绑定,软件授权可以更紧密地与特定硬件设备相关联,增加了攻击者破解授权的难度。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种许可证生成方法以及***。
背景技术
随着互联网的高速发展,互联网数据越来越重要,目前一些软件需要经过授权才能使用,为待授权软件生成许可证是软件授权的方式。
RSA和AES等是常用的加密算法,它们提供了强大的数据加密和解密功能,可以保护软件的授权信息不被未经授权的用户获取或篡改,尽管基于RSA和AES算法的软件授权方案提供了较高的安全性,但仍然可能存在被破解的风险。黑客和逆向工程师可能会尝试使用各种手段来攻击和破解授权方案。因此,在设计和实施软件授权方案时,需要综合考虑安全性。
因此,如何增加攻击者破解授权的难度,即使授权信息被盗用,也无法在其他设备上使用,提高软件的安全性和防护能力,是目前有待解决的技术问题。
发明内容
本发明的目的是提供一种许可证生成方法,用以解决现有技术中存在的上述问题。
为了实现上述目的,本发明采用以下技术方案:
本发明还提供了一种许可证生成方法,所述方法包括:
当进行在线授权时,通过软件读取硬件信息,并将获取到的所述硬件信息序列化生成授权描述信息,所述硬件信息包括CPU硬件信息、内存信息、BIOS信息和主板信息;
利用对称加密算法生成密钥,基于所述密钥加密所述授权描述信息;
利用非对称加密算法生成密钥对,所述密钥对包括公钥和私钥,通过所述私钥对已加密的授权描述信息进行私钥签名以生成数字签名,将所述已加密的授权描述信息和数字签名合并以生成许可证;
当进行离线授权时,通过软件读取所述硬件信息,并将获取到的所述硬件信息序列化生成所述授权描述信息;
利用所述对称加密算法生成密钥,基于所述密钥加密所述授权描述信息以生成许可证。
一些实施例中,通过所述私钥对已加密的授权描述信息进行私钥签名以生成数字签名,包括:
根据哈希函数将授权描述信息转化为文本、文件或数字摘要;
使用所述私钥对文本、文件或数字摘要进行加密,生成唯一的数字签名。
一些实施例中,当进行在线授权生成许可证后,还包括软件授权验证,所述软件授权验证用于在软件运行时,验证许可证的完整性、真实性以及来源;
当进行在线授权时,所述软件授权验证包括:
将所述授权描述信息和数字签名发送至授权服务器,所述授权服务器通过所述公钥对所述数字签名进行进行解密,以获取原始的所述文本、文件或数字摘要;
使用所述哈希函数对所述授权描述信息进行转换处理以生成文本、文件或数字摘要;
将所述获取到的原始的文本、文件或数字摘要与使用所述哈希函数对所述授权描述信息进行转换处理生成的文本、文件或数字摘要进行匹配比较,若匹配,则所述许可证验证成功。
一些实施例中,当软件授权验证完成后,还包括:
授权服务器获取解密密钥,所述解密密钥与进行加密所述授权描述信息的密钥相匹配;
授权服务器将加密的所述授权描述信息分割为固定长度的数据块;
授权服务器使用密钥初始化解密器,并基于所述解密器和所述密钥对数据块进行解密;
授权服务器将解密后的数据块合并为原始的明文数据。
一些实施例中,将解密后的数据块合并为原始的明文数据之后,还包括:
验证所述硬件信息是否与当前用户端所使用的本地机器相匹配,
若匹配,进行授权描述信息的更改,所述授权描述信息的更改为更改自定义项,所述自定义项为功能范围,过期时间或用户信息。
一些实施例中,所述方法还包括:
将更改后的所述授权描述信息进行加密,并对更改后的所述授权描述信息进行私钥签名以生成数字签名,将所述更改后的加密的授权描述信息和数字签名合并重新生成许可证;
将重新生成的所述许可证通过网络导入到用户端的本地机器,完成在线授权。
一些实施例中,所述方法还包括:
当进行离线授权时,将生成的许可证提前存储,通过加密狗或U盘拷贝授权描述信息到授权服务器,
或通过License注册机直接生成许可证,以完成离线授权。
相应的,本发明还提供了一种许可证生成***,包括:
第一授权模块,用于当进行在线授权时,通过软件读取硬件信息,并将获取到的所述硬件信息序列化生成授权描述信息,所述硬件信息包括CPU硬件信息、内存信息、BIOS信息和主板信息;
第一加密模块,用于利用对称加密算法生成密钥,基于所述密钥加密所述授权描述信息;
生成模块,用于利用非对称加密算法生成密钥对,所述密钥对包括公钥和私钥,通过所述私钥对已加密的授权描述信息进行私钥签名以生成数字签名,将所述加密的授权描述信息和数字签名合并以生成许可证;
第二授权模块,用于当进行离线授权时,通过软件读取所述硬件信息,并将获取到的所述硬件信息序列化生成所述授权描述信息;
第二加密模块,用于利用所述对称加密算法生成密钥,基于所述密钥加密所述授权描述信息以生成许可证。
一些实施例中,所述生成模块,具体用于:
根据哈希函数将授权描述信息转化为文本、文件或数字摘要;
使用所述私钥对文本、文件或数字摘要进行加密,生成唯一的数字签名。
一些实施例中,所述***还包括验证模块,用于当进行在线授权生成许可证后,在软件运行时,验证许可证的完整性、真实性以及来源。
有益效果:
1.灵活的许可证管理:多种安全算法的软件授权方案可以灵活管理许可证。许可证可以包含各种授权信息,如许可期限、功能限制、用户数量等。开发者可以使用私钥生成许可证,软件可以使用公钥验证许可证的合法性。
2.支持离线授权验证:基于RSA+AES算法的软件授权方案可以支持离线授权验证,即在没有网络连接的情况下验证软件的授权信息。授权信息可以通过加密存储在本地,并使用公钥进行验证。
3.跨平台:工业的硬件平台多种多样,如x86,arm64,mips等多种指令集的cpu,还有如Linux,windows,vxworks等操作***,能够保证不同平台的软件使用同一套授权及加密策略。
4.跨语言:多样工业软件,能够保证框架支持不同语言的API设计,支持C/C++,C#,python,golang,st,ld,fbd等。
5.多种加密策略:支持AES加解密,RSA加解密,ECC密钥交换和签名验签,Curve25519密钥交换,Curve25519 EdDSA签名验签等多种安全算法。提高整体***的安全性。单一算法的弱点或漏洞可能被攻击者利用,但使用多种算法可以增加攻击者的难度。即使一种算法出现问题,其他算法仍然能够提供保护。并可满足多种复杂应用场景的适应性和安全性。
6.未来可扩展性:随着技术的发展和密码分析的进步,现有的加密算法可能会变得不再安全。通过使用多种安全算法,可以为未来的演进和变化做好准备。这样,***可以在需要时轻松地迁移到更安全的算法,而无需进行大规模的更改。
7.满足复杂的工业现场:工业现场的安全等级不同,例如现场不可联网,不可带U盘,不可安装外部程序等。授权方式可自由选择,例如可选择在线授权,U盘拷贝授权,加密狗授权,License注册机授权,FB功能块授权等等。
8.本申请在设计和实施软件授权方案时,综合考虑安全性,通过硬件信息绑定,软件授权可以更紧密地与特定硬件设备相关联,增加了攻击者破解授权的难度。即使授权信息被盗用,也无法在其他设备上使用,提高了软件的安全性和防护能力。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种许可证生成方法的结构示意图;
图2为本申请实施例提供的一种在线授权的流程图;
图3为本申请实施例提供的一种离线授权的流程图;
图4为本申请实施例提供的一种许可证生成***的框图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将结合附图和实施例或现有技术的描述对本发明作简单地介绍,显而易见地,下面关于附图结构的描述仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在此需要说明的是,对于这些实施例方式的说明用于帮助理解本发明,但并不构成对本发明的限定。
应当理解,尽管本文可能使用术语第一、第二等等来描述各种单元,但是这些单元不应当受到这些术语的限制。这些术语仅用于区分一个单元和另一个单元。例如可以将第一单元称作第二单元,并且类似地可以将第二单元称作第一单元,同时不脱离本发明的示例实施例的范围。
应当理解,对于本文中可能出现的术语“和/或”,其仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B三种情况;对于本文中可能出现的术语“/和”,其是描述另一种关联对象关系,表示可以存在两种关系,例如,A/和B,可以表示:单独存在A,单独存在A和B两种情况;另外,对于本文中可能出现的字符“/”,一般表示前后关联对象是一种“或”关系。
软硬件协同:软硬件协同(Hardware-Software Co-design)是指在***设计过程中,软件和硬件之间密切合作,共同实现***功能和性能优化的一种方法。软硬件协同旨在提高***整体的效率、可靠性和可扩展性。
授权:软件许可证授权是指软件开发者向用户授予使用软件的权利和条件。许可证授权规定了用户可以使用软件的方式、范围和限制,以及开发者的权利和责任。下面是一些常见的软件许可证授权类型。
RSA加密算法:RSA(Ron Rivest、Adi Shamir、Leonard Adleman,3个提出者的姓氏首字母)加密算法是一种非对称加密算法(公钥加密算法)。RSA加密算法有一对密钥,一个是公开密钥,另一个是私有密钥,公钥用作加密,私钥则用作解密。使用公钥把加密后所得的密文,只能用相对应的私钥才能解密并得到原本的明文。
AES加密算法:AES(Advanced Encryption Standard)加密算法,在密码学中又称Rijndael加密算法,是一种区块加密标准算法。AES加密算法由美国国家标准与技术研究(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。现在AES加密算法已然成为对称密钥加密中最流行的算法之一。
ECC:ECC(Elliptic Curve Cryptography)是一种基于椭圆曲线的公钥加密算法。它是现代密码学中常用的加密算法之一,用于实现加密、密钥交换和数字签名等安全功能。ECC基于椭圆曲线上的数学问题,利用椭圆曲线的特性来实现安全的加密和密钥交换。与传统的RSA算法相比,ECC能够在相同的安全性下使用更短的密钥长度,从而提供更高的效率和更小的存储空间要求
Curve25519:Curve25519是一种椭圆曲线,用于椭圆曲线密码学中的密钥交换和数字签名等操作。它由Daniel J.Bernstein在2005年设计,并采用了Montgomery曲线形式。Curve25519的名称来自于其曲线方程的特征,其中255表示曲线上点的位数。Curve25519使用的是素数域上的椭圆曲线,其方程形式为y^2=x^3+486662x^2+x。这个特定的椭圆曲线参数选择旨在提供高安全性和高性能。
如图1所示为本发明实施例提出的一种许可证生成方法的结构示意图,包括:
S201,当进行在线授权时,通过软件读取硬件信息,并将获取到的所述硬件信息序列化生成授权描述信息,所述硬件信息包括CPU硬件信息、内存信息、BIOS信息和主板信息。
具体的,整个License(许可证)生成框架主要包括两种授权方式,在线授权和离线授权,并且角色分为授权服务器和产品机。通过软件读取相关硬件信息,包含CPU硬件信息,内存信息,BIOS信息,主板信息。这些信息具有不会重复的特点,使用这些信息作为硬件绑定可以提高***的安全性。授权描述信息为将获取到的硬件信息序列化,数据信息可以使用json,XML,YAML或protobuf等格式描述。
S202,利用对称加密算法生成密钥,基于所述密钥加密所述授权描述信息。
具体的,所述对称加密算法为AES加密算法,加密授权描述信息:通过加密授权描述信息,可以防止未经授权的人员或***读取或修改敏感数据。只有授权的实体才能解密和访问数据。某些授权描述信息可能包含敏感的个人、商业或机密数据。通过加密,可以确保这些数据在传输过程中不会被非法获取或泄露。
需要说明的是,AES加密算法仅是本申请的一种实施例,任何通过加密算法实现加密授权描述信息的方式,均属于本申请的保护范围。
S203,利用非对称加密算法生成密钥对,所述密钥对包括公钥和私钥,通过所述私钥对已加密的授权描述信息进行私钥签名以生成数字签名,将所述加密的授权描述信息和数字签名合并以生成许可证。
为了生成唯一的数字签名,在本方案的优选实施例中,通过所述私钥对已加密的授权描述信息进行私钥签名以生成数字签名,包括:
根据哈希函数将授权描述信息转化为文本、文件或数字摘要;
使用所述私钥对文本、文件或数字摘要进行加密,生成唯一的数字签名。
具体的,私钥签名是使用私钥对数据进行加密以生成数字签名的过程。根据哈希函数将授权描述信息转化为文本、文件或数字摘要,使用所述私钥对文本、文件或数字摘要进行加密,生成唯一的数字签名。加密算法通常使用非对称加密算法,如RSA。私钥用于对数字摘要进行加密,生成唯一的数字签名。
为了验证许可证的完整性、真实性以及来源,在本方案的优选实施例中,当进行在线授权生成许可证后,还包括软件授权验证,所述软件授权验证用于在软件运行时,验证许可证的完整性、真实性以及来源。
当进行在线授权时,所述软件授权验证包括:
将所述授权描述信息和数字签名发送至授权服务器,所述授权服务器通过所述公钥对所述数字签名进行进行解密,以获取原始的所述文本、文件或数字摘要;
使用所述哈希函数对所述授权描述信息进行转换处理以生成文本、文件或数字摘要;
将所述获取到的原始的文本、文件或数字摘要与使用所述哈希函数对所述授权描述信息进行转换处理生成的文本、文件或数字摘要进行匹配比较,若匹配,则所述许可证验证成功。
具体的,公钥验签是验证数字签名的过程,用于验证数据的完整性、真实性和来源。它是与私钥签名相对应的操作。
授权服务器获取包含授权描述信息和数字签名的消息,授权服务器获取与数字签名配对的公钥。公钥是由签名者的私钥生成的,并广泛分发给需要验证数字签名的各方,使用公钥对数字签名进行解密操作,以获取原始的文本、文件或数字摘要,使用哈希函数对接收到的数据生成文本、文件或数字摘要,哈希函数将数据转换为固定长度的唯一哈希值。将解密后的数字签名与生成的文本、文件或数字摘要进行比较。如果两者匹配,则表示数据的完整性和真实性得到验证。
为了对数据进行解密,在本方案的优选实施例中,当软件授权验证完成后,还包括:
授权服务器获取解密密钥,所述解密密钥与进行加密所述授权描述信息的密钥相匹配;
授权服务器将加密的所述授权描述信息分割为固定长度的数据块;
授权服务器使用密钥初始化解密器,并基于所述解密器和所述密钥对数据块进行解密;
授权服务器将解密后的数据块合并为原始的明文数据。
具体的,通过AES加密算法进行数据的解密,AES解密是通过使用相同的密钥和相反的算法将加密数据还原为原始数据的过程。获得正确的解密密钥,确保与加密时使用的密钥相匹配。将加密数据分割为固定长度的数据块,通常为128位(16字节)。使用密钥初始化AES解密器。解密器需要知道要使用的密钥,以便正确解密数据。对每个数据块应用相反的AES算法,也称为逆变换。这涉及使用解密器和密钥对数据块进行解密操作。如果加密时使用了特定的加密模式(例如ECB、CBC、CFB、OFB等),则在解密过程中必须使用相同的加密模式和初始化向量(IV)。将解密后的数据块合并为原始的明文数据。
为了对授权描述信息的更改,在本方案的优选实施例中,将解密后的数据块合并为原始的明文数据之后,还包括:
验证所述硬件信息是否与当前用户端所使用的本地机器相匹配,
若匹配,进行授权描述信息的更改,所述授权描述信息的更改为更改自定义项,所述自定义项为功能范围,过期时间或用户信息。
具体的,硬件信息检查:检索硬件信息的内容,如CPU信息,内存信息,BIOS信息等是否和当前本地机器匹配。修改自定义项,如使用的功能范围,过期时间,用户信息等。
为了完成在线授权,在本方案的优选实施例中,所述方法还包括:
将更改后的所述授权描述信息进行加密,并对更改后的所述授权描述信息进行私钥签名以生成数字签名,将所述更改后的加密的授权描述信息和数字签名合并重新生成许可证,将重新生成的所述许可证通过网络导入到用户端的本地机器,完成在线授权。
S204,当进行离线授权时,通过软件读取所述硬件信息,并将获取到的所述硬件信息序列化生成所述授权描述信息。
S205,利用所述对称加密算法生成密钥,基于所述密钥加密所述授权描述信息以生成许可证。
为了完成离线授权,在本方案的优选实施例中,所述方法还包括:
当进行离线授权时,将生成的许可证提前存储,通过加密狗或U盘拷贝授权描述信息到授权服务器,
或通过License注册机直接生成许可证,以完成离线授权。
具体的,离线授权与在线授权基本相同,不需要签名和验签的过程,在离线授权场景中,许可证或授权信息通常是提前生成并存储在本地,而不是在实时或动态生成。因此,对于验证离线授权,不需要使用数字签名和验证签名的机制来验证其完整性和真实性。当进行离线授权时,将生成的许可证提前存储,通过加密狗或U盘拷贝授权描述信息到授权服务器,或通过License注册机直接生成许可证,以完成离线授权。
本申请新增了USB加密狗,U盘,以及License注册机的方式
USB加密狗:USB加密狗是一种硬件设备,通常以USB闪存驱动器的形式出现,用于提供软件授权和数据保护功能。与软件应用程序一起使用,以确保只有经过授权的用户能够访问和使用特定软件。USB加密狗包含一个内部的加密芯片,用于存储许可证信息和执行加密操作。它可以通过加密算法、签名和验证机制来确保软件的合法使用和数据的安全性。
U盘(USB Flash Drive):U盘是一种可携带的存储设备,通常以USB接口连接到计算机。除了常规的数据存储和传输功能,U盘还可以用于存储加密文件、敏感数据和受保护的软件许可证。通过将许可证文件或加密数据存储在U盘中,可以将软件授权和数据保护与特定的物理设备绑定在一起,以提供更高的安全性和授权控制。
License注册机(License Generator):License注册机是用于生成软件许可证的工具。根据特定的许可证生成规则和算法,生成合法的许可证密钥、授权文件或许可证码。注册机通常由软件开发者使用,将生成的许可证提供给授权用户以控制软件的合法使用。注册机还可以包括其他功能,如许可证管理、许可证续期和追踪等。
并且License注册机需要提供以下功能:
独立应用程序:License注册机可以作为独立的应用程序存在,用户可以运行该应用程序来生成软件许可证。这种注册机通常提供一个用户界面,让用户输入必要的信息(如许可证类型、许可期限、用户信息等),然后生成相应的许可证文件或许可证码。
命令行工具:License注册机可以以命令行工具的形式存在,用户通过命令行输入参数来生成许可证。这种方式适用于集成到自动化脚本或批处理过程中,以便进行批量生成许可证的操作。
库或API:License注册机可以作为一个库或API的形式存在,开发者可以在自己的软件中调用相关函数或方法来生成许可证。这种方式允许开发者根据需要进行自定义许可证生成的逻辑和流程。
IEC61131-3功能块:License注册机可以作为IEC61131-3功能块使用,工业开发者通过调用该功能块来生成许可证。
需要说明的是,本申请有多种加密策略:支持AES加解密,RSA加解密,ECC密钥交换和签名验签,Curve25519密钥交换,Curve25519 EdDSA签名验签等多种安全算法。提高整体***的安全性。单一算法的弱点或漏洞可能被攻击者利用,但使用多种算法可以增加攻击者的难度。即使一种算法出现问题,其他算法仍然能够提供保护。并可满足多种复杂应用场景的适应性和安全性。
使用安全的密钥交换策略是为了确保在线授权过程中的安全性和保护敏感数据。这种策略包括使用加密、数字签名、安全协议和身份验证机制等,以确保通信的机密性、完整性和认证性。
本申请的安全策略包括:
1.ECC密钥交换和签名验签
实现ECC密钥交换和签名验签通常涉及以下步骤:
选择椭圆曲线参数:选择适合的椭圆曲线参数,包括曲线类型、基点、模数等。常见的曲线参数可以在相关文档或标准中找到。
生成密钥对:使用选择的椭圆曲线参数生成公钥和私钥对。私钥应保持机密,而公钥可以与其他人共享。
密钥交换或签名:根据应用场景,使用ECC密钥交换算法(如ECDH)进行密钥协商,或使用ECC签名算法(如ECDSA)对数据进行签名。
密钥验证或验签:使用公钥对接收到的密钥进行验证,或使用公钥对接收到的签名进行验签。验证和验签过程将涉及椭圆曲线上的计算和比较
2.Curve25519密钥交换
使用Curve25519进行密钥交换,可以按照以下步骤进行:
密钥生成:双方各自生成Curve25519曲线上的私钥和公钥。
随机生成一个256位的私钥(即32字节的随机数)。
使用私钥通过椭圆曲线上的基点进行点乘运算,生成对应的公钥。
密钥交换:双方交换各自的公钥。
将自己的公钥发送给对方,并接收对方的公钥。
共享密钥计算:双方使用对方的公钥和自己的私钥计算出共享的密密密钥。
使用自己的私钥和对方的公钥进行点乘运算,得到共享的密钥。
3.Curve25519 EdDSA签名验签
实现Curve25519 EdDSA签名和验签通常涉及以下步骤:
选择椭圆曲线:选择Curve25519作为基础椭圆曲线。
密钥生成:使用选择的椭圆曲线参数生成公钥和私钥对。
签名生成:使用私钥和要签名的数据,通过执行EdDSA签名算法生成数字签名。
验签:使用公钥、签名和要验证的数据,通过执行EdDSA验签算法验证数字签名的有效性。
本申请具有以下有益效果:
1.高安全性,使用多种安全算法结合硬件绑定可以提高整体***的安全性,即使一种算法出现问题,其他算法仍然能够提供保护。
2.可扩展性,未来新的加密算法可在最小变动下进行扩充。
3.通用性,一套框架,统一的API,具备跨语言,跨平台等特性。
4.兼容性,多种安全算法的使用可以提供更好的兼容性。不同的***和设备可能支持不同的加密算法,通过使用多种算法,可以确保在不同环境下的互操作性和兼容性。
5.抗击攻击,某种加密算法可能受到特定类型的攻击或新的攻击方法的威胁。通过使用多种算法,可以增加抵御各种攻击的能力。如果一个算法受到攻击,其他算法可以提供备选方案,以保护数据和***的安全。
6.注册的多样化,不同的工业现场安全等级不同,可满足全场景的授权注册方式,支持ST,FBD,LD语言生成license。
实施例2:
整个License生成框架主要包括两种授权方式,在线授权和离线授权,并且角色分为授权服务器和产品机。主要功能包括如下:
服务:service通过硬件接口操作加密硬件,并和其他硬件单元通信,共同操作加密硬件。
外部库:提供给开发者的接口实现。
数据要求:加解密,明文长度不超过7.5KB,密文长度不超过7.5KB,签名验签,MAC算法,input明文不超过15KB。
生成RSA密钥对:生成RSA算法所需要的公钥和私钥。私钥用于签名和解密,公钥用于加密和验证。
获取硬件信息:获取与硬件设备相关的设备信息,如硬件序列号,MAC地址,CPU型号等。
生成授权信息:定义授权信息的格式和内容,例如许可证期限,功能限制,硬件信息等,可以使用json或其他结构化表示授权信息。
加密授权信息:使用AES将授权信息加密。
数字签名:使用RSA私钥对加密后的授权信息进行数字签名。
生成授权文件/许可证:将加密的授权信息和数字签名合并为一个文件或许可证
软件授权验证:在软件运行时,验证授权文件或许可证的合法性。
授权过期检查:在验证授权时,检查授权文件或许可证中的许可期限,判断授权是否为过期。如果授权过期,限制软件的使用或要求用户重新申请授权
硬件信息验证:在验证授权时,比较绑定的硬件信息与当前***的硬件信息是否匹配。如果硬件信息不匹配,限制软件的使用或要求用户重新申请授权。
License生成:License=AesKey16+AesEnc(data).length+AesEnc(data)+RsaSign(AesEnc(data));
这表示最终生成的许可证由四个部分组成,以串联方式连接在一起。
AesKey16:这是一个随机生成的16位AES密钥(Advanced Encryption Standard),用于后续的数据加密。
AesEnc(data).length:这是经过AES加密后的授权信息(data)的长度。AES加密算法将授权信息使用之前生成的AES密钥进行加密。
AesEnc(data):这是经过AES加密后的授权信息,使用之前生成的AES密钥进行加密。
RsaSign(AesEnc(data)):这是对经过AES加密后的授权信息进行RSA私钥签名的结果。RSA签名算法使用私钥对数据进行加密,以验证许可证的真实性和完整性。
这个生成许可证的过程是一种常见的方式,通过对敏感数据进行加密和签名,以确保许可证的安全性和完整性。通过AES加密保护授权信息的隐私,通过RSA签名验证许可证的真实性。需要说明的是,具体的实现细节可能会根据具体的加密库、算法和***环境而有所不同。在实际应用中,可选择使用适当的加密库和算法来执行每个步骤,并确保密钥的生成、加密和签名过程是安全可靠的。
实施例3
图2为一种在线授权的流程图,具体包括:
1.获取硬件信息:通过软件读取相关硬件信息,包含CPU硬件信息,内存信息,BIOS信息,主板信息。这些信息具有不会重复的特点,使用这些信息作为硬件绑定可以提高***的安全性。
2.授权描述信息:将获取到的硬件信息序列化,数据信息可以使用json,XML,YAML或protobuf等格式描述。为什么要进行两次签名。
3.加密授权描述信息:通过加密授权描述信息,可以防止未经授权的人员或***读取或修改敏感数据。只有授权的实体才能解密和访问数据。某些授权描述信息可能包含敏感的个人、商业或机密数据。通过加密,可以确保这些数据在传输过程中不会被非法获取或泄露。
4.私钥签名:私钥签名是使用私钥对数据进行加密以生成数字签名的过程。
(1)数据准备:首先,要签名的数据(例如授权描述信息)被准备好。这可以是任何形式的数据,如文本、文件、数字摘要等。
(2)数字摘要生成:为了提高效率和安全性,通常会使用哈希函数(如SHA-256)生成数据的数字摘要。哈希函数将数据转换为固定长度的唯一哈希值。
(3)加密签名生成:接下来,使用拥有相关公钥的签名者的私钥对数字摘要进行加密操作。加密算法通常使用非对称加密算法,如RSA。私钥用于对数字摘要进行加密,生成唯一的数字签名。
(4)数字签名附加:生成的数字签名与原始数据一起传递。这意味着,数字签名是与数据绑定在一起的,无法单独使用。常见的做法是将数字签名附加在数据的末尾。
5.License生成(本发明完整的技术方案最后的流程)
6.公钥验签:公钥验签是验证数字签名的过程,用于验证数据的完整性、真实性和来源。它是与私钥签名相对应的操作。
(1)接收数据和数字签名:接收方获取包含数据和数字签名的消息。
(2)获取公钥:接收方获取与数字签名配对的公钥。公钥是由签名者的私钥生成的,并广泛分发给需要验证数字签名的各方。
(3)解密签名:使用公钥对数字签名进行解密操作,以获取原始的数字摘要。
(4)数据摘要生成:使用相同的哈希函数对接收到的数据生成数字摘要。哈希函数将数据转换为固定长度的唯一哈希值。
(5)数字摘要比较:将解密后的数字签名与生成的数字摘要进行比较。如果两者匹配,则表示数据的完整性和真实性得到验证。
7.AES解密:AES解密是通过使用相同的密钥和相反的算法将加密数据还原为原始数据的过程。
(1)准备密钥:获得正确的解密密钥,确保与加密时使用的密钥相匹配。
(2)分割数据:将加密数据分割为固定长度的数据块,通常为128位(16字节)。
(3)初始化解密器:使用密钥初始化AES解密器。解密器需要知道要使用的密钥,以便正确解密数据。
(4)解密数据块:对每个数据块应用相反的AES算法,也称为逆变换。使用解密器和密钥对数据块进行解密操作。
(5)解密模式:如果加密时使用了特定的加密模式(例如ECB、CBC、CFB、OFB等),则在解密过程中必须使用相同的加密模式和初始化向量(IV)。
(6)合并数据块:将解密后的数据块合并为原始的明文数据。
8.硬件信息检查:检索硬件信息的内容,如CPU信息,内存信息,BIOS信息等是否和当前机器匹配。
9.授权信息更改:修改自定义项,如使用的功能范围,过期时间,用户信息等。
10.AES加密:
(1)准备密钥:选择适当的密钥作为AES加密算法的输入。密钥长度可以是128位(16字节)、192位(24字节)或256位(32字节)。确保密钥的安全性和随机性。
(2)分割数据:将要加密的数据分割为固定长度的数据块,通常为128位(16字节)。如果数据长度不是128位的倍数,需要进行数据填充以满足块长度要求。
(3)初始化加密器:使用密钥初始化AES加密器。加密器需要知道要使用的密钥,以便进行加密操作。
(4)加密数据块:对每个数据块应用AES算法,也称为AES变换。使用加密器和密钥对数据块进行加密操作。
(5)加密模式:选择适当的加密模式,例如ECB(电子密码本模式)、CBC(密码块链接模式)、CFB(密码反馈模式)、OFB(输出反馈模式)等。加密模式影响数据块之间的依赖关系和加密结果的唯一性。
(6)合并数据块:将加密后的数据块合并为加密后的密文数据。
11.私钥签名,与步骤4相同。
12.License重新生成。
图3为一种离线授权的流程图,具体流程包括:
当进行离线授权时,将生成的许可证提前存储,通过加密狗或U盘拷贝授权描述信息到授权服务器,或通过License注册机直接生成许可证,以完成离线授权。离线授权与在线授权基本相同,不需要签名和验签的过程,在离线授权场景中,许可证或授权信息通常是提前生成并存储在本地,而不是在实时或动态生成。因此,对于验证离线授权,不需要使用数字签名和验证签名的机制来验证其完整性和真实性。其余步骤与在线授权流程相同。
图4为本发明提供的一种许可证生成***框图,包括:
第一授权模块401,用于当进行在线授权时,通过软件读取硬件信息,并将获取到的所述硬件信息序列化生成授权描述信息,所述硬件信息包括CPU硬件信息、内存信息、BIOS信息和主板信息;
第一加密模块402,用于利用对称加密算法生成密钥,基于所述密钥加密所述授权描述信息;
生成模块403,用于利用非对称加密算法生成密钥对,所述密钥对包括公钥和私钥,通过所述私钥对已加密的授权描述信息进行私钥签名以生成数字签名,将所述加密的授权描述信息和数字签名合并以生成许可证;
第二授权模块404,用于当进行离线授权时,通过软件读取所述硬件信息,并将获取到的所述硬件信息序列化生成所述授权描述信息;
第二加密模块405,用于利用所述对称加密算法生成密钥,基于所述密钥加密所述授权描述信息以生成许可证。
相应的,在具体的应用场景中,所述生成模块403,具体用于:
根据哈希函数将授权描述信息转化为文本、文件或数字摘要;
使用所述私钥对文本、文件或数字摘要进行加密,生成唯一的数字签名。
相应的,在具体的应用场景中,所述***还包括验证模块,用于当进行在线授权生成许可证后,在软件运行时,验证许可证的完整性、真实性以及来源。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种许可证生成方法,其特征在于,所述方法包括:
当进行在线授权时,通过软件读取硬件信息,并将获取到的所述硬件信息序列化生成授权描述信息,所述硬件信息包括CPU硬件信息、内存信息、BIOS信息和主板信息;
利用对称加密算法生成密钥,基于所述密钥加密所述授权描述信息;
利用非对称加密算法生成密钥对,所述密钥对包括公钥和私钥,通过所述私钥对已加密的授权描述信息进行私钥签名以生成数字签名,将所述已加密的授权描述信息和数字签名合并以生成许可证;
当进行离线授权时,通过软件读取所述硬件信息,并将获取到的所述硬件信息序列化生成所述授权描述信息;
利用所述对称加密算法生成密钥,基于所述密钥加密所述授权描述信息以生成许可证。
2.根据权利要求1所述的方法,其特征在于,通过所述私钥对已加密的授权描述信息进行私钥签名以生成数字签名,包括:
根据哈希函数将授权描述信息转化为文本、文件或数字摘要;
使用所述私钥对文本、文件或数字摘要进行加密,生成唯一的数字签名。
3.根据权利要求2所述的方法,其特征在于,当进行在线授权生成许可证后,还包括软件授权验证,所述软件授权验证用于在软件运行时,验证许可证的完整性、真实性以及来源,
当进行在线授权时,所述软件授权验证包括:
将所述授权描述信息和数字签名发送至授权服务器,所述授权服务器通过所述公钥对所述数字签名进行进行解密,以获取原始的所述文本、文件或数字摘要;
使用所述哈希函数对所述授权描述信息进行转换处理以生成文本、文件或数字摘要;
将所述获取到的原始的文本、文件或数字摘要与使用所述哈希函数对所述授权描述信息进行转换处理生成的文本、文件或数字摘要进行匹配比较,若匹配,则所述许可证验证成功。
4.根据权利要求3所述的方法,其特征在于,当软件授权验证完成后,还包括:
授权服务器获取解密密钥,所述解密密钥与进行加密所述授权描述信息的密钥相匹配;
授权服务器将加密的所述授权描述信息分割为固定长度的数据块;
授权服务器使用密钥初始化解密器,并基于所述解密器和所述密钥对数据块进行解密;
授权服务器将解密后的数据块合并为原始的明文数据。
5.根据权利要求4所述的方法,其特征在于,将解密后的数据块合并为原始的明文数据之后,还包括:
验证所述硬件信息是否与当前用户端所使用的本地机器相匹配,
若匹配,进行授权描述信息的更改,所述授权描述信息的更改为更改自定义项,所述自定义项为功能范围,过期时间或用户信息。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
将更改后的所述授权描述信息进行加密,并对更改后的所述授权描述信息进行私钥签名以生成数字签名,将所述更改后的加密的授权描述信息和数字签名合并重新生成许可证;
将重新生成的所述许可证通过网络导入到用户端的本地机器,完成在线授权。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当进行离线授权时,将生成的许可证提前存储,通过加密狗或U盘拷贝授权描述信息到授权服务器,
或通过License注册机直接生成许可证,以完成离线授权。
8.一种许可证生成***,其特征在于,包括:
第一授权模块,用于当进行在线授权时,通过软件读取硬件信息,并将获取到的所述硬件信息序列化生成授权描述信息,所述硬件信息包括CPU硬件信息、内存信息、BIOS信息和主板信息;
第一加密模块,用于利用对称加密算法生成密钥,基于所述密钥加密所述授权描述信息;
生成模块,用于利用非对称加密算法生成密钥对,所述密钥对包括公钥和私钥,通过所述私钥对已加密的授权描述信息进行私钥签名以生成数字签名,将所述加密的授权描述信息和数字签名合并以生成许可证;
第二授权模块,用于当进行离线授权时,通过软件读取所述硬件信息,并将获取到的所述硬件信息序列化生成所述授权描述信息;
第二加密模块,用于利用所述对称加密算法生成密钥,基于所述密钥加密所述授权描述信息以生成许可证。
9.根据权利要求8所述的***,其特征在于,所述生成模块,具体用于:
根据哈希函数将授权描述信息转化为文本、文件或数字摘要;
使用所述私钥对文本、文件或数字摘要进行加密,生成唯一的数字签名。
10.根据权利要求8所述的***,其特征在于,所述***还包括验证模块,用于当进行在线授权生成许可证后,在软件运行时,验证许可证的完整性、真实性以及来源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310990170.8A CN116881865A (zh) | 2023-08-07 | 2023-08-07 | 一种许可证生成方法以及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310990170.8A CN116881865A (zh) | 2023-08-07 | 2023-08-07 | 一种许可证生成方法以及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116881865A true CN116881865A (zh) | 2023-10-13 |
Family
ID=88266396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310990170.8A Pending CN116881865A (zh) | 2023-08-07 | 2023-08-07 | 一种许可证生成方法以及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116881865A (zh) |
-
2023
- 2023-08-07 CN CN202310990170.8A patent/CN116881865A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11233659B2 (en) | Method of RSA signature or decryption protected using a homomorphic encryption | |
US8121294B2 (en) | System and method for a derivation function for key per page | |
US7516321B2 (en) | Method, system and device for enabling delegation of authority and access control methods based on delegated authority | |
US20060195402A1 (en) | Secure data transmission using undiscoverable or black data | |
JP4616345B2 (ja) | 配布cdを用いて直接証明秘密鍵を装置に配布する方法 | |
KR100702499B1 (ko) | 메시지 무결성 보증 시스템, 방법 및 기록 매체 | |
US20030159053A1 (en) | Secure reconfigurable input device with transaction card reader | |
CN110663215B (zh) | 在白盒场景中的椭圆曲线点乘设备和方法 | |
CN101213814A (zh) | 安全修补*** | |
US7894608B2 (en) | Secure approach to send data from one system to another | |
US10630462B2 (en) | Using white-box in a leakage-resilient primitive | |
CN109951276B (zh) | 基于tpm的嵌入式设备远程身份认证方法 | |
Agarwal et al. | A survey on cloud computing security issues and cryptographic techniques | |
EP3379769A1 (en) | Method of rsa signature or decryption protected using multiplicative splitting of an asymmetric exponent | |
Sathya et al. | A comprehensive study of blockchain services: future of cryptography | |
Khelifi et al. | Enhancing protection techniques of e-banking security services using open source cryptographic algorithms | |
Klimushin et al. | Potential application of hardware protected symmetric authentication microcircuits to ensure the security of internet of things | |
GB2395304A (en) | A digital locking system for physical and digital items using a location based indication for unlocking | |
CN116881865A (zh) | 一种许可证生成方法以及*** | |
Rasna et al. | Comparison of Security Signing Data Authentication Integrity in Combination of Digest And AES Message Algorithm | |
JP2015082077A (ja) | 暗号化装置、制御方法、及びプログラム | |
Rahouma | Reviewing and applying security services with non-english letter coding to secure software applications in light of software trade-offs | |
CN116866029B (zh) | 随机数加密数据传输方法、装置、计算机设备及存储介质 | |
Shaik et al. | A compatible hexadecimal encryption-booster algorithm for augmenting security in the advanced encryption standard | |
Adithya et al. | Advanced Encryption Standard Crypto Block Verification Utility |
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 |