CN112822026A - 数字签名方法、装置及*** - Google Patents
数字签名方法、装置及*** Download PDFInfo
- Publication number
- CN112822026A CN112822026A CN202110437436.7A CN202110437436A CN112822026A CN 112822026 A CN112822026 A CN 112822026A CN 202110437436 A CN202110437436 A CN 202110437436A CN 112822026 A CN112822026 A CN 112822026A
- Authority
- CN
- China
- Prior art keywords
- signature
- parameter
- random number
- algorithm
- private key
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例提供一种数字签名方法、装置及***。其中,获取基于第一随机数、第二随机数和第三随机数加密生成的私钥,以及基于第四随机数和第五随机数加密生成的第一签名参数;将所述私钥和所述第一签名参数转换成与签名算法匹配的标准参数;基于所述签名算法,利用所述标准参数对待签名数据进行数字签名。本申请实施例提供的技术方案在保证数字签名安全性的基础上,减小了占用内存。
Description
技术领域
本申请实施例涉及计算机应用技术领域,尤其涉及一种数字签名方法、装置及***。
背景技术
数字签名是伴随着信息网络技术的发展而出现的一种安全保障技术,可以验证数据在传输过程中有无变动,确保传输数据的完整性、真实性和不可抵赖性。
以SM2(椭圆曲线公钥密码算法)签名算法为例,数字签名是由私钥对待签名的数据进行加密获得,其中,用于签名的私钥通常可以实现为随机数。此时,攻击者可能通过一定的技术手段窃取该签名的私钥,从而伪造对虚假数据的签名,影响数据传输的安全性。
为了提高数据传输的安全性,传统方案中通常是采用查找表的方式,对签名的私钥进行混淆,使攻击者无法获取正确的私钥。然而,查找表占用内存较高,不利于实际使用。因此,如何实现在保证数据传输安全性的基础上,减小占用内存的数字签名是丞待解决的问题。
发明内容
本申请实施例提供一种数字签名方法、装置及***,用以在保证数字签名安全性的基础上,减小占用内存。
第一方面,本申请实施例中提供了一种数字签名方法,包括:
获取基于第一随机数、第二随机数和第三随机数加密生成的私钥,以及基于第四随机数和第五随机数加密生成的第一签名参数;
将所述私钥和所述第一签名参数转换成与签名算法匹配的标准参数;
基于所述签名算法,利用所述标准参数对待签名数据进行数字签名。
第二方面,本申请实施例中提供了一种数字签名装置,包括:
获取模块,用于获取基于第一随机数、第二随机数和第三随机数加密生成的私钥,以及基于第四随机数和第五随机数加密生成的第一签名参数;
转换模块,用于将所述私钥和所述第一签名参数转换成与签名算法匹配的标准参数;
签名模块,用于基于所述签名算法,利用所述标准参数对待签名数据进行数字签名。
第三方面,本申请实施例中提供了一种数字签名***,包括存储组件及处理组件;
所述存储组件存储一条或多条计算机指令;所述一条或多条计算机指令供所述处理组件调用执行;
所述处理组件用于:
获取基于第一随机数、第二随机数和第三随机数加密生成的私钥,以及基于第四随机数和第五随机数加密生成的第一签名参数;
将所述私钥和所述第一签名参数转换成与签名算法匹配的标准参数;
基于所述签名算法,利用所述标准参数对待签名数据进行数字签名。
本申请的方案中,获取基于随机数加密生成的私钥及第一签名参数,将该私钥及第一签名参数转换为与签名算法匹配的标准参数,再基于该签名算法,利用标准参数进行数字签名,通过对用于签名的私钥及第一签名参数进行加密,避免私钥与第一签名参数直接以随机数的形式出现在数字签名过程中,可以实现攻击者无法获取到真正的私钥,提高了数字签名的安全性。并且该方案中未引入查找表,减小了占用内存,实现了在保证数据传输安全性的基础上,减小占用内存的数字签名。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请提供的一种数字签名方法一个实施例的流程图;
图2示出了本申请提供的一种数字签名装置一个实施例的结构示意图;
图3示出了本申请提供的一种数字签名***一个实施例的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
本申请的技术方案应用于数字签名场景中,数字签名可以验证数据在传输过程中有无变动,确保传输数据的完整性、真实性和不可抵赖性。
以SM2(椭圆曲线公钥密码算法)签名算法为例,数字签名是由私钥对待签名的数据进行加密获得,其中,用于签名的私钥通常可以实现为随机数。此时,攻击者可能通过一定的技术手段窃取该签名的私钥,从而伪造对虚假数据的签名,影响数据传输的安全性。
传统方案中,为了提高数字签名的安全性,通常是采用查找表的方式,对签名的私钥进行混淆,使攻击者无法获取正确的私钥。但是查找表的规模较大,占用内存较高,不利于实际使用。因此,为了实现在保证数字签名安全性的基础上,减小内存的占用,发明人经过一系列研究提出了本申请的技术方案,即获取基于第一随机数、第二随机数和第三随机数加密生成的私钥;以及基于第四随机数和第五随机数加密生成的第一签名参数;将所述私钥和所述第一签名参数转换成与签名算法匹配的标准参数;基于所述签名算法,利用所述标准参数对待签名数据进行数字签名。
通过对用于签名的私钥及第一签名参数进行加密,避免私钥与第一签名参数直接以随机数的形式出现在数字签名过程中,可以实现攻击者无法获取到真正的私钥,提高了数字签名的安全性。并且该方案中未引入查找表,减小了占用内存,实现了在保证数据传输安全性的基础上,减小占用内存的数字签名。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示,为本申请实施例提供的一种数字签名方法一个实施例的流程图,该方法可以包括以下几个步骤:
101:获取基于第一随机数、第二随机数和第三随机数加密生成的私钥,以及基于第四随机数和第五随机数加密生成的第一签名参数。
本实施例中,在进行数字签名之前,会预先生成用于签名的私钥和签名参数等。其中,该预先生成私钥和签名参数的过程可以是初始化过程,该初始化过程在签名过程之前执行,且不会在签名过程中出现。
具体地,上述初始化过程可以实现为,生成一个位于(0,n)之间的第一随机数,该第一随机数可以用c1表示,以及生成一个位于(0,n)之间的第二随机数,该第二随机数可以用m1表示,以及生成一个位于(0,n)之间的第三随机数,该第三随机数可以用r1表示,以及生成一个位于(0,n)之间的第四随机数,该第四随机数可以用f1表示,以及生成一个位于(0,n)之间的第五随机数,该第五随机数可以用m2表示。
则基于上述第一随机数、第二随机数及第三随机数可以加密生成私钥,以及基于上述第四随机数及第五随机数可以加密生成第一签名参数。该私钥和第一签名参数可以由初始化过程输出,用于进行签名,并且上述随机数及加密过程不会在签名过程中出现,具有较高的安全性。
因此,可以获取上述初始化过程生成的私钥和第一签名参数。由于该私钥和第一签名参数是预先加密生成的,且用于加密的随机数及加密过程具有较高的安全性,则用于签名的私钥和第一签名参数也具有较高的安全性。由此可以解决传统方案中将私钥直接实现为随机数,导致被攻击者窃取的问题,提高了私钥及数字签名的安全性。
102:将私钥和第一签名参数转换成与签名算法匹配的标准参数。
本实施例中,该签名算法可以实现为SM2算法(椭圆曲线公钥签名算法)。由于SM2算法中,用于签名的私钥和签名参数直接实现为随机数,而上述初始化过程获取的私钥和第一签名参数是对随机数进行加密获得的私钥和签名参数。因此,在利用该私钥和第一签名参数进行签名时,为了使其与签名算法匹配,需要将私钥和第一签名参数转换成与签名算法匹配的标准参数。
103:基于签名算法,利用标准参数对待签名数据进行数字签名。
获得上述标准参数后,可以基于该签名算法,利用标准参数对待签名数据进行数字签名。以签名算法是SM2算法为例,可以基于SM2算法,利用标准参数对待签名数据进行数字签名。
本实施例中,获取基于随机数加密生成的私钥及第一签名参数,将该私钥及第一签名参数转换为与签名算法匹配的标准参数,再基于该签名算法,利用标准参数进行数字签名,通过对用于签名的私钥及第一签名参数进行加密,避免私钥与第一签名参数直接以随机数的形式出现在数字签名过程中,可以实现攻击者无法获取到真正的私钥,提高了数字签名的安全性。并且该方案中未引入查找表,减小了占用内存,实现了在保证数据传输安全性的基础上,减小占用内存的数字签名。
在实际应用中,以该签名算法是SM2算法为例,SM2算法可以包括椭圆曲线参数E(Fq)、G和n。其中,E可以表示在有限域Fq上的椭圆曲线,G可以表示椭圆曲线E上n阶的基点,n为正整数,G和n属于椭圆曲线的参数。在某些实施例中,基于签名算法进行数字签名之前,该方法还可以包括:
获取基于第四随机数和椭圆曲线参数生成的第二签名参数。
在初始化过程中,可以按照如下所示的第二签名参数,由第四随机数和椭圆曲线参数生成第二签名参数。
该第二签名参数生成公式可以为:P=【f1】G。
其中,P表示第二签名参数,f1表示第四随机数,G表示椭圆曲线参数。
初始化过程生成第二签名参数后,可以输出该第二签名参数。其中,该第二签名参数可以用于进行签名。
可选地,可以利用第二签名参数及第六随机数,对待签名数据进行数字签名,获得第一签名。其中,该第一签名可以是部分签名,第一签名还可以用于生成第二签名。
则将私钥和第一签名参数转换成与签名算法匹配的标准参数的方法可以包括:
利用第一签名,对私钥及第一签名参数进行转换,获得与签名算法匹配的标准参数。
可选地,基于签名算法,利用标准参数对待签名数据进行数字签名的方法可以包括:
基于签名算法,利用标准参数进行数字签名,获得第二签名;由第一签名与第二签名构成签名。
在实际应用中,该签名算法实现为SM2算法,SM2算法的完整签名可以由两部分构成,可以分别称为第一签名和第二签名。在获得私钥、第一签名参数及第二签名参数后,可以由第二签名参数优先获得第一签名。具体地,可以生成一个位于(0,n)之间的第六随机数,该第六随机数可以用r2表示。其中,n表示正整数。
则利用第二签名参数及第六随机数,对待签名数据进行数字签名,获得第一签名的方法可以是:
按照如下所示的第三签名参数生成公式,基于第二签名参数及第六随机数生成第三签名参数。
该第三签名参数生成公式可以为:Q1=【r2】P=(Qx,Qy)。
其中,Q1表示第三签名参数,r2表示第六随机数,P表示第二签名参数,Qx表示Q1的横坐标,Qy表示Q1的纵坐标。
获得第三签名参数之后,可选地,可以按照如下所示的第一签名生成公式,利用第三签名参数对待签名数据进行数字签名,获得第一签名。
该第一签名生成公式可以为:r=hash(M)+Qx modn;
其中,r表示第一签名,hash表示哈希函数,M表示待签名数据,Qx表示第三签名参数的横坐标,mod表示求余运算,n是正整数,表示SM2算法的私钥。
获得第一签名之后,可以利用该第一签名,对私钥及第一签名参数进行转换,获得与签名算法匹配的标准参数,并基于签名算法,利用标准参数进行数字签名,获得第二签名。由上述获得的第一签名和第二签名即可以获得完整签名。
在实际应用中,由于在获得完整签名时,优先计算获得第一签名,且该第一签名用于计算获得第二签名。此时,若是第一签名计算出现错误,将会影响第二签名的计算,以及影响完整签名的生成。因此,在获得第一签名后,可以对第一签名进行验证,避免第一签名出现错误,影响签名其他部分的计算及生成,或占用不必要时间计算签名并输出错误结果,缩短签名的生成时间,提高签名的生成效率。因此,在某些实施例中,利用第二签名参数及第六随机数,对待签名数据进行数字签名,获得第一签名之后,该方法还可以包括:
验证第一签名是否等于0,或第一签名与第六随机数的和值是否为SM2算法的私钥;
如果第一签名等于0,或第一签名与第六随机数的加和等于SM2算法的私钥,返回利用第二签名参数及第六随机数,对待签名数据进行数字签名的步骤重新执行;
如果第一签名不等于0,且第一签名与第六随机数的加和不等于SM2算法的私钥,继续执行利用第一签名,对私钥及第一签名参数进行转换,获得与签名算法匹配的标准参数的步骤。
验证第一签名正确后,可以利用第一签名,对私钥及第一签名参数进行转换,获得与签名算法匹配的标准参数,并基于签名算法,利用标准参数进行数字签名,获得第二签名。
在实际应用中,初始化过程中,对随机数进行加密的方法可以是同态加密算法。同态加密是基于数学难题的计算复杂性理论的密码学技术,对经过同态加密的数据进行处理得到一个输出,将这一输出进行解密,其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的。因此,在某些实施例中,获取基于第一随机数、第二随机数和第三随机数加密生成的私钥;以及基于第四随机数和第五随机数加密生成的第一签名参数的方法可以包括:
获取基于同态加密算法对第一随机数、第二随机数和第三随机数加密生成的私钥;以及基于同态加密算法对第四随机数和第五随机数加密生成的第一签名参数。
其中,同态加密算法可以包括多种算法。本实施例中,同态加密算法可以实现为paillier算法。可选地,基于第一随机数、第二随机数和第三随机数加密生成私钥的方法可以是利用paillier算法,按照如下所示的第一加密数生成公式,对第一随机数及第二随机数进行加密获得第一加密数;再按照如下所示的私钥生成公式,由第一加密数与第三随机数生成私钥。
其中,enc表示paillier算法的加密函数,dec表示paillier算法的解密函数,c1表
示第一随机数,m1表示第二随机数,表示正整数模的剩余类,n是正整数,表示SM2算法
的私钥,n1是正整数,表示paillier算法的私钥。
其中,d1表示私钥,k1表示第一加密数,r1表示第三随机数,mod表示求余运算,n1是正整数,表示paillier算法的私钥。
可选地,基于第四随机数和第五随机数加密生成第一签名参数的方法可以是利用paillier算法,按照如下所示的第一签名参数生成公式,对第四随机数及第五随机数进行加密获得第一签名参数。
其中,enc表示paillier算法的加密函数,dec表示paillier算法的解密函数,f1表
示第四随机数,m2表示第五随机数,表示正整数模的剩余类,n是正整数,表示SM2算
法的私钥,n1是正整数,表示paillier算法的私钥。
在某些实施例中,初始化过程除生成上述私钥及第一签名参数外,还基于数值1加密生成第四签名参数,并输出第四签名参数及第三随机数,该第三随机数及第四签名参数可以参与签名生成。因此,在利用第一签名,对私钥及第一签名参数进行转换之前,还可以获取第三随机数及基于数值1加密生成的第四签名参数。
具体地,在初始化过程,可以利用paillier算法,按照如下所示的第四签名参数生成公式对数值1进行加密生成第四签名参数。
可选地,利用第一签名,对私钥及第一签名参数进行转换,获得与签名算法匹配的标准参数的方法可以包括:
利用第一签名、第三随机数及第七随机数对私钥进行转换,获得第一转换参数;
利用同态解密算法对第一转换参数进行解密,获得第一标准子参数;
利用第三随机数、第六随机数及第七随机数对第一签名参数进行转换,获得第二转换参数;
利用同态解密算法对第二转换参数进行解密,获得第二标准子参数;
利用第三随机数对私钥及第四签名参数进行转换,获得第三转换参数;
利用同态解密算法对第三转换参数进行解密,获得第三标准子参数;由第一标准子参数、第二标准子参数及第三标准子参数构成标准参数。
在签名过程中,可以生成一个位于(0,n)之间的第七随机数,该第七随机数可以由z表示。则可以利用第一签名、第三随机数及第七随机数对私钥进行转换,获得第一转换参数,以及利用第三随机数、第六随机数及第七随机数对第一签名参数进行转换,获得第二转换参数,以及利用第三随机数对私钥及第四签名参数进行转换,获得第三转换参数。由于该私钥、第一签名参数和第四签名参数是由同态加密算法,如paillier算法预先对随机数加密获得的,则由私钥、第一签名参数及第四签名参数转换获得的第一转换参数、第二转换参数及第三转换参数中也包含同态加密算法的加密过程,此时可以利用与同态加密算法对应的同态解密算法,对上述转换参数进行解密,以获得与签名算法匹配的标准子参数。
可选地,可以按照如下所示的第一解密公式,利用同态解密算法对第一转换参数进行解密,获得第一标准子参数。
该第一解密公式可以为:w1=dec(v1)modn;
其中,w1表示第一标准子参数,dec表示paillier算法的解密函数,v1表示第一转换参数,mod表示求余运算,n是正整数,表示SM2算法的私钥。
同理,可以按照如下所示的第二解密公式,利用同态解密算法对第二转换参数v1进行解密,获得第二标准子参数w1。
该第二解密公式可以为:w2=dec(v1)modn;
其中,w2表示第二标准子参数,dec表示paillier算法的解密函数,v2表示第二转换参数,mod表示求余运算,n是正整数,表示SM2算法的私钥。
同理,可以按照如下所示的第三解密公式,利用同态解密算法对第三转换参数v3进行解密,获得第三标准子参数w3。
该第三解密公式可以为:w3=dec(v3)modn;
其中,w3表示第三标准子参数,dec表示paillier算法的解密函数,v3表示第三转换参数,mod表示求余运算,n是正整数,表示SM2算法的私钥。
该第一标准子参数、第二标准子参数及第三标准子参数即可以构成标准参数,因此基于签名算法,利用标准参数进行数字签名,获得第二签名的方法可以包括:
基于签名算法,利用第一标准子参数、第二标准子参数、第三标准子参数及第七随机数进行数字签名,获得第二签名。
在某些实施例中,可以按照如下所示的第一中间参数生成公式,利用第一签名、第三随机数及第七随机数生成第一中间参数,以及按照如下所示的第一转换公式,利用该第一中间参数对私钥进行转换,获得第一转换参数。
该第一中间参数生成公式可以为:r'=(n-r)·z·m1 modn;
其中,r'表示第一中间参数,r表示第一签名,z表示第七随机数,m1表示第三随机数,mod表示求余运算,n是正整数,表示SM2算法的私钥。
其中,v1表示第一转换参数,d1表示私钥,r1表示第一中间参数,mod表示求余运算,n1是正整数,表示paillier算法的私钥。
同理,可以按照如下所示的第二中间参数生成公式,由第六随机数对第一签名参数进行转换,生成第二中间参数,以及按照如下所示的第三中间参数生成公式,由第三随机数和第七随机数生成第三中间参数,以及由该第三中间参数对第二中间参数进行转换,获得第二转换参数。
其中,u1表示第二中间参数,e1表示第一签名参数,r2表示第六随机数,mod表示求余运算,n1是正整数,表示paillier算法的私钥。
该第三中间参数生成公式可以为:z1=z·m1 modn;
其中,z1表示第三中间参数,z表示第七随机数,m1表示第三随机数,mod表示求余运算,n是正整数,表示SM2算法的私钥。
其中,v2表示第二转换参数,u1表示第二中间参数,z1表示第三中间参数,mod表示求余运算,n1是正整数,表示paillier算法的私钥。
同理,可以按照如下所示的第三转换公式,利用第三随机数对私钥及第四签名参数进行转换,获得第三转换参数。
其中,v3表示第三转换参数,d1表示私钥,m1表示第三随机数,l1表示第四签名参数,mod表示求余运算,n1是正整数,表示paillier算法的私钥。
获得第一转换参数、第二转换参数及第三转换参数后,可以分别利用同态解密算法对其进行解密,获得对应的第一标准子参数、第二标准子参数及第三标准子参数。该解密过程在前述实施例中有详细的描述,此处不再进行赘述。
在实际应用中,传统方案中SM2算法的第二部分签名可以实现为:
;其中,s表示第二签名,dA表示私钥,k表
示签名参数,r表示第一签名,mod表示求余运算,n是正整数,表示SM2算法的私钥(上述参数
是传统方案中SM2算法中的参数,而不是指本实施例中的参数)。则利用paillier算法的加
法同态性质,对上述第一转换参数、第二转换参数及第三转换参数解密后,获得的第一标准
子参数、第二标准子参数及第三标准子参数可以与传统方案SM2算法匹配。则在某些实施例
中,基于签名算法,利用第一标准子参数、第二标准子参数、第三标准子参数及第七随机数
进行数字签名,获得第二签名的方法可以包括:
基于签名算法,对第一标准子参数及第二标准子参数进行加和计算,获得第一计算结果,对第一计算结果及第三标准子参数进行相乘计算,获得第二计算结果,对第二计算结果及第七随机数进行相除计算,获得第二签名。
具体地,可以按照如下所示的第二签名生成公式生成第二签名。
该第二签名生成公式可以为:s=w3·(w1+w2)·z-1modn;
其中,s表示第二签名,w1表示第一标准子参数,w2表示第二标准子参数,w3表示第三标准子参数,z表示第七随机数,mod表示求余运算,n是正整数,表示SM2算法的私钥。
本申请实施例中,利用同态加密算法的性质,对用于签名的私钥及签名参数进行加密,避免私钥与签名参数直接以随机数的形式出现在签名过程中,并且即使攻击者获取到签名的源代码进行逆向分析,仍需要解决椭圆曲线离散对数问题和合数剩余类困难问题,因此可以实现攻击者无法获取到真正的私钥,提高了数字签名的安全性。并且该方案中未引入查找表,减小了占用内存,实现了在保证安全性的基础上,减小占用内存的数字签名。
在实际应用中,初始化过程还可以生成与私钥对应的公钥,用于进行签名验证。在某些实施例中,该方法还可以包括:
获取基于第一随机数、第三随机数及椭圆曲线参数生成的公钥。
具体地,可以按照如下所示的第四中间参数生成公式,基于第一随机数及椭圆曲线参数生成第四中间参数,以及按照如下所示的公钥生成公式,基于第四中间参数及第三随机数生成公钥。
该第四中间参数生成公式可以为:K1=【c1】G;
其中,k1表示第四中间参数,c1表示第一随机数,G表示椭圆曲线参数。
该公钥生成公式可以为:Q=【r1】K1;
其中,Q表示公钥,r1表示第三随机数,K1表示第四中间参数。
该公钥可以由初始化过程输出,以对签名进行验证。由于本实施例中获得的签名与签名算法,如SM2算法匹配,则利用公钥对签名进行验证的过程也与SM2算法的签名验证过程相同,可以参见SM2算法的签名验证过程,此处不再进行赘述。
如图2所示,为本申请实施例提供的一种数字签名装置,该装置可以包括以下几个模块:
获取模块201,用于获取基于第一随机数、第二随机数和第三随机数加密生成的私钥,以及基于第四随机数和第五随机数加密生成的第一签名参数;
转换模块202,用于将所述私钥和所述第一签名参数转换成与签名算法匹配的标准参数;
签名模块203,用于基于所述签名算法,利用所述标准参数对待签名数据进行数字签名。
本实施例中,获取基于随机数加密生成的私钥及第一签名参数,将该私钥及第一签名参数转换为与签名算法匹配的标准参数,再基于该签名算法,利用标准参数进行数字签名,通过对用于签名的私钥及第一签名参数进行加密,避免私钥与第一签名参数直接以随机数的形式出现在数字签名过程中,可以实现攻击者无法获取到真正的私钥,提高了数字签名的安全性。并且该方案中未引入查找表,减小了占用内存,实现了在保证数据传输安全性的基础上,减小占用内存的数字签名。
在某些实施例中,该获取模块201还可以用于,获取基于第四随机数和椭圆曲线参数生成的第二签名参数;
该装置还可以包括:
第一签名单元,用于利用第二签名参数及第六随机数,对待签名数据进行数字签名,获得第一签名;
转换模块202可以包括:
转换单元,用于利用所述第一签名,对所述私钥及所述第一签名参数进行转换,获得与签名算法匹配的标准参数;
签名模块203可以包括:
第二签名单元,用于基于签名算法,利用标准参数进行数字签名,获得第二签名。
在某些实施例中,该装置还可以包括:
验证模块,用于验证第一签名是否等于0,或第一签名与第六随机数的和值是否为椭圆曲线公钥签名算法的私钥;如果第一签名等于0,或第一签名与第六随机数的加和等于椭圆曲线公钥签名算法的私钥,返回利用所述第二签名参数及第六随机数,对待签名数据进行数字签名,获得第一签名的步骤重新执行;如果第一签名不等于0,且第一签名与第六随机数的加和不等于椭圆曲线公钥签名算法的私钥,利用第一签名,对私钥及第一签名参数进行转换,获得与签名算法匹配的标准参数。
在某些实施例中,该获取模块201还可以用于,获取第三随机数及基于数值1加密生成的第四签名参数;
转换单元可以包括:
第一转换子单元,用于利用所述第一签名、所述第三随机数及第七随机数对所述私钥进行转换,获得第一转换参数;
第一解密子单元,用于利用同态解密算法对所述第一转换参数进行解密,获得第一标准子参数;
第二转换子单元,用于利用所述第三随机数、所述第六随机数及所述第七随机数对所述第一签名参数进行转换,获得第二转换参数;
第二解密子单元,用于利用同态解密算法对所述第二转换参数进行解密,获得第二标准子参数;
第三转换子单元,用于利用所述第三随机数对所述私钥及所述第四签名参数进行转换,获得第三转换参数;
第三解密子单元,用于利用同态解密算法对所述第三转换参数进行解密,获得第三标准子参数;
第二签名单元可以包括:
签名子单元,用于基于所述签名算法,利用所述第一标准子参数、所述第二标准子参数、所述第三标准子参数及所述第七随机数进行数字签名,获得第二签名。
在某些实施例中,获取模块201还可以用于,获取基于所述第一随机数、所述第三随机数及椭圆曲线参数生成的公钥。
如图3所示,为本申请实施例提供的一种数字签名***,包括存储组件301及处理组件302;
存储组件301用于存储一条或多条计算机指令,该一条或多条计算机指令供处理组件302调用运行。
处理组件302用于:
获取基于第一随机数、第二随机数和第三随机数加密生成的私钥,以及基于第四随机数和第五随机数加密生成的第一签名参数;
将所述私钥和所述第一签名参数转换成与签名算法匹配的标准参数;
基于所述签名算法,利用所述标准参数对待签名数据进行数字签名。
本实施例中,获取基于随机数加密生成的私钥及第一签名参数,将该私钥及第一签名参数转换为与签名算法匹配的标准参数,再基于该签名算法,利用标准参数进行数字签名,通过对用于签名的私钥及第一签名参数进行加密,避免私钥与第一签名参数直接以随机数的形式出现在数字签名过程中,可以实现攻击者无法获取到真正的私钥,提高了数字签名的安全性。并且该方案中未引入查找表,减小了占用内存,实现了在保证数据传输安全性的基础上,减小占用内存的数字签名。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对传统方案做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.一种数字签名方法,其特征在于,包括:
获取基于第一随机数、第二随机数和第三随机数加密生成的私钥,以及基于第四随机数和第五随机数加密生成的第一签名参数;
将所述私钥和所述第一签名参数转换成与签名算法匹配的标准参数;
基于所述签名算法,利用所述标准参数对待签名数据进行数字签名。
2.根据权利要求1所述的方法,其特征在于,所述签名算法为椭圆曲线公钥签名算法,所述方法还包括:
获取基于所述第四随机数和椭圆曲线参数生成的第二签名参数;
利用所述第二签名参数及第六随机数,对待签名数据进行数字签名,获得第一签名;
所述将所述私钥和所述第一签名参数转换成与签名算法匹配的标准参数包括:
利用所述第一签名,对所述私钥及所述第一签名参数进行转换,获得与签名算法匹配的标准参数;
所述基于所述签名算法,利用所述标准参数对待签名数据进行数字签名包括:
基于所述签名算法,利用所述标准参数进行数字签名,获得第二签名;由所述第一签名与所述第二签名构成所述签名。
3.根据权利要求2所述的方法,其特征在于,所述利用所述第二签名参数及第六随机数,对待签名数据进行数字签名,获得第一签名包括:
基于所述第一签名参数及第六随机数,生成第三签名参数;
按照第一签名生成公式,利用所述第三签名参数对所述待签名数据进行数字签名,获得第一签名:
所述第一签名生成公式为:r=hash(M)+Qx modn;
其中,r表示第一签名,hash表示哈希函数,M表示待签名数据,Qx表示第三签名参数的横坐标,mod表示求余运算,n是正整数,表示椭圆曲线公钥签名算法的私钥。
4.根据权利要求2所述的方法,其特征在于,还包括:
验证所述第一签名是否等于0,或所述第一签名与所述第六随机数的和值是否为椭圆曲线公钥签名算法的私钥;
如果所述第一签名等于0,或所述第一签名与所述第六随机数的加和等于椭圆曲线公钥签名算法的私钥,返回利用所述第二签名参数及第六随机数,对待签名数据进行数字签名,获得第一签名的步骤重新执行;
如果所述第一签名不等于0,且所述第一签名与所述第六随机数的加和不等于椭圆曲线公钥签名算法的私钥,利用所述第一签名,对所述私钥及所述第一签名参数进行转换,获得与签名算法匹配的标准参数。
5.根据权利要求2所述的方法,其特征在于,所述获取基于第一随机数、第二随机数和第三随机数加密生成的私钥,以及基于第四随机数和第五随机数加密生成的第一签名参数包括:
获取基于同态加密算法对第一随机数、第二随机数和第三随机数加密生成的私钥,以及基于同态加密算法对第四随机数和第五随机数加密生成的第一签名参数。
6.根据权利要求5所述的方法,其特征在于,还包括:
获取第三随机数及基于数值1加密生成的第四签名参数;
所述利用所述第一签名,对所述私钥和所述第一签名参数转换成与签名算法匹配的标准参数包括:
利用所述第一签名、所述第三随机数及第七随机数对所述私钥进行转换,获得第一转换参数;
利用同态解密算法对所述第一转换参数进行解密,获得第一标准子参数;
利用所述第三随机数、所述第六随机数及所述第七随机数对所述第一签名参数进行转换,获得第二转换参数;
利用同态解密算法对所述第二转换参数进行解密,获得第二标准子参数;
利用所述第三随机数对所述私钥及所述第四签名参数进行转换,获得第三转换参数;
利用同态解密算法对所述第三转换参数进行解密,获得第三标准子参数;由所述第一标准子参数、所述第二标准子参数及所述第三标准子参数构成标准参数;
所述基于所述签名算法,利用所述标准参数进行数字签名,获得第二签名包括:
基于所述签名算法,利用所述第一标准子参数、所述第二标准子参数、所述第三标准子参数及所述第七随机数进行数字签名,获得第二签名。
7.根据权利要求6所述的方法,其特征在于,所述利用所述第一签名、所述第三随机数及第七随机数对所述私钥进行转换,获得第一转换参数包括:
按照第一中间参数生成公式,利用所述第一签名、所述第三随机数及所述第七随机数生成第一中间参数,以及按照第一转换公式,利用所述第一中间参数对所述私钥进行转换,获得第一转换参数:
所述第一中间参数生成公式为:r'=(n-r)·z·m1 modn;
其中,r'表示第一中间参数,r表示第一签名,z表示第七随机数,m1表示第三随机数,mod表示求余运算,n是正整数,表示SM2算法的私钥;
其中,v1表示第一转换参数,d1表示私钥,r1表示第一中间参数,n1是正整数,表示paillier算法的私钥;
所述利用所述第三随机数、所述第六随机数及所述第七随机数对所述第一签名参数进行转换,获得第二转换参数包括:
按照第二中间参数生成公式,利用所述第六随机数对所述第一签名参数进行转换,生成第二中间参数,以及按照第三中间参数生成公式,利用所述第三随机数和所述第七随机数生成第三中间参数,以及按照第二转换公式,利用所述第三中间参数对所述第二中间参数进行转换,获得第二转换参数:
其中,u1表示第二中间参数,e1表示第一签名参数,r2表示第六随机数;
所述第三中间参数生成公式为:z1=z·m1 modn;
其中,z1表示第三中间参数;
其中,v2表示第二转换参数;
所述利用所述第三随机数对所述私钥及所述第四签名参数进行转换,获得第三转换参数包括:
按照第三转换公式,利用所述第三随机数对所述私钥及所述第四签名参数进行转换,获得第三转换参数:
其中,v3表示第三转换参数,l1表示第四签名参数。
8.根据权利要求6所述的方法,其特征在于,所述基于所述签名算法,利用所述第一标准子参数、所述第二标准子参数、所述第三标准子参数及所述第七随机数进行数字签名,获得第二签名包括:
基于所述签名算法,对所述第一标准子参数及所述第二标准子参数进行加和计算,获得第一计算结果,对所述第一计算结果及所述第三标准子参数进行相乘计算,获得第二计算结果,对所述第二计算结果及所述第七随机数进行相除计算,获得第二签名。
9.根据权利要求1所述的方法,其特征在于,还包括:
获取基于所述第一随机数、所述第三随机数及椭圆曲线参数生成的公钥;所述公钥用于对签名进行验证。
10.一种数字签名装置,其特征在于,包括:
获取模块,用于获取基于第一随机数、第二随机数和第三随机数加密生成的私钥,以及基于第四随机数和第五随机数加密生成的第一签名参数;
转换模块,用于将所述私钥和所述第一签名参数转换成与签名算法匹配的标准参数;
签名模块,用于基于所述签名算法,利用所述标准参数对待签名数据进行数字签名。
11.一种数字签名***,其特征在于,包括存储组件及处理组件;
所述存储组件存储一条或多条计算机指令;所述一条或多条计算机指令供所述处理组件调用执行;
所述处理组件用于:
获取基于第一随机数、第二随机数和第三随机数加密生成的私钥,以及基于第四随机数和第五随机数加密生成的第一签名参数;
将所述私钥和所述第一签名参数转换成与签名算法匹配的标准参数;
基于所述签名算法,利用所述标准参数对待签名数据进行数字签名方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110437436.7A CN112822026B (zh) | 2021-04-22 | 2021-04-22 | 数字签名方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110437436.7A CN112822026B (zh) | 2021-04-22 | 2021-04-22 | 数字签名方法、装置及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112822026A true CN112822026A (zh) | 2021-05-18 |
CN112822026B CN112822026B (zh) | 2021-09-17 |
Family
ID=75862561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110437436.7A Active CN112822026B (zh) | 2021-04-22 | 2021-04-22 | 数字签名方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112822026B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6151676A (en) * | 1997-12-24 | 2000-11-21 | Philips Electronics North America Corporation | Administration and utilization of secret fresh random numbers in a networked environment |
US20150363775A1 (en) * | 2013-01-10 | 2015-12-17 | Tendyron Corporation | Key protection method and system |
CN108055136A (zh) * | 2017-12-22 | 2018-05-18 | 上海众人网络安全技术有限公司 | 基于椭圆曲线的签名方法、装置、计算机设备及存储介质 |
CN109672539A (zh) * | 2019-03-01 | 2019-04-23 | 深圳市电子商务安全证书管理有限公司 | Sm2算法协同签名及解密方法、装置及*** |
CN109687978A (zh) * | 2019-01-15 | 2019-04-26 | 如般量子科技有限公司 | 基于私钥池和Elgamal的抗量子计算代理数字签名方法和*** |
CN111565108A (zh) * | 2020-07-15 | 2020-08-21 | 北京信安世纪科技股份有限公司 | 签名处理方法、装置及*** |
CN112417489A (zh) * | 2020-12-04 | 2021-02-26 | 矩阵元技术(深圳)有限公司 | 数字签名的生成方法、装置和服务器 |
-
2021
- 2021-04-22 CN CN202110437436.7A patent/CN112822026B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6151676A (en) * | 1997-12-24 | 2000-11-21 | Philips Electronics North America Corporation | Administration and utilization of secret fresh random numbers in a networked environment |
US20150363775A1 (en) * | 2013-01-10 | 2015-12-17 | Tendyron Corporation | Key protection method and system |
CN108055136A (zh) * | 2017-12-22 | 2018-05-18 | 上海众人网络安全技术有限公司 | 基于椭圆曲线的签名方法、装置、计算机设备及存储介质 |
CN109687978A (zh) * | 2019-01-15 | 2019-04-26 | 如般量子科技有限公司 | 基于私钥池和Elgamal的抗量子计算代理数字签名方法和*** |
CN109672539A (zh) * | 2019-03-01 | 2019-04-23 | 深圳市电子商务安全证书管理有限公司 | Sm2算法协同签名及解密方法、装置及*** |
CN111565108A (zh) * | 2020-07-15 | 2020-08-21 | 北京信安世纪科技股份有限公司 | 签名处理方法、装置及*** |
CN112417489A (zh) * | 2020-12-04 | 2021-02-26 | 矩阵元技术(深圳)有限公司 | 数字签名的生成方法、装置和服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN112822026B (zh) | 2021-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3940988B1 (en) | Multi-party threshold authenticated encryption | |
CN107483212B (zh) | 一种双方协作生成数字签名的方法 | |
US11895231B2 (en) | Adaptive attack resistant distributed symmetric encryption | |
CN110545279A (zh) | 兼具隐私和监管功能的区块链交易方法、装置及*** | |
US11804960B2 (en) | Distributed symmetric encryption | |
JP2016114855A (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
US20200177380A1 (en) | Seed key expansion method and its uses | |
CN112564907A (zh) | 密钥生成方法及装置、加密方法及装置、解密方法及装置 | |
CN111314050A (zh) | 一种加解密方法及装置 | |
CN115102688A (zh) | 数据处理方法、多项式计算方法及电子设备 | |
CN107104788B (zh) | 终端及其不可抵赖的加密签名方法和装置 | |
WO2014030706A1 (ja) | 暗号化データベースシステム、クライアント装置およびサーバ、暗号化データ加算方法およびプログラム | |
CN108768634B (zh) | 可验证加密签名生成方法和*** | |
CN111565108B (zh) | 签名处理方法、装置及*** | |
CN108055134B (zh) | 椭圆曲线点数乘及配对运算的协同计算方法及*** | |
CN107465508B (zh) | 一种软硬件结合构造真随机数的方法、***和设备 | |
EP4144042A1 (en) | Adaptive attack resistant distributed symmetric encryption | |
CN110798313B (zh) | 基于秘密动态共享的包含秘密的数的协同生成方法及*** | |
CN110401524B (zh) | 一种借助同态加密的包含秘密的数的协同生成方法及*** | |
CN114362912A (zh) | 基于分布式密钥中心的标识密码生成方法、电子设备及介质 | |
CN112822026B (zh) | 数字签名方法、装置及*** | |
CN116208326A (zh) | 数据传输方法、装置、***、存储介质和电子设备 | |
WO2023055371A1 (en) | Replicated secret share generation for distributed symmetric cryptography | |
WO2023048711A1 (en) | Threshold secret share generation for distributed symmetric cryptography | |
CN114499845A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |