CN113114466B - 一种并行验签的方法 - Google Patents
一种并行验签的方法 Download PDFInfo
- Publication number
- CN113114466B CN113114466B CN202110309614.8A CN202110309614A CN113114466B CN 113114466 B CN113114466 B CN 113114466B CN 202110309614 A CN202110309614 A CN 202110309614A CN 113114466 B CN113114466 B CN 113114466B
- Authority
- CN
- China
- Prior art keywords
- signature
- verification
- variable point
- value
- point
- 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.)
- Active
Links
- 238000012795 verification Methods 0.000 title claims abstract description 175
- 238000000034 method Methods 0.000 title claims abstract description 47
- 239000011159 matrix material Substances 0.000 claims description 14
- 238000002372 labelling Methods 0.000 claims 1
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 1
- 229920002430 Fibre-reinforced plastic Polymers 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 239000011151 fibre-reinforced plastic Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
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
- H04L9/3252—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 using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Collating Specific Patterns (AREA)
Abstract
本发明提供了一种并行验签的方法,并行验签的方法包括:获取若干待处理消息,以及若干签名;当若干签名中的每个签名均满足第一预设条件时,随机选取若干第一数值;基于若干第一数值和若干签名确定验签曲线点,以及基于若干第一数值、若干待处理消息和若干签名确定若干验签横坐标;基于若干验签横坐标和验签曲线点确定验证值,若验证值满足第二预设条件则并行验签成功,若验证值不满足第二预设条件,则并行验签失败。本发明实施例在并行验签曲线点时引入随机选取的若干个第一数值,使得攻击者伪造多个可以通过并行验签的概率大幅降低,进而提高了并行验签的安全性。
Description
技术领域
本申请涉及信息安全技术领域,特别是涉及一种并行验签的方法。
背景技术
SM2椭圆曲线数字签名算法是是国家密码管理局于2010年发布以及2012年实施的一种数字签名算法,并于2017年在ISO/IEC信息安全分技术委员会(SC27)会议上通过成为国际标准。SM2椭圆曲线数字能很好地满足各种密码应用中的需求,如数据完整性保护、身份识别与认证等,因此,SM2椭圆曲线数字签名算法在商用领域上得到广泛的应用。
在实际应用场景中,存在验签者同时验证多个签名消息的需求。目前,针对验签者同时验证多个签名消息的方法中,验签方式单一,基于此,攻击者容易伪造多个非法签名,并且大概率能够成功通过批量验签,导致批量验证的安全性低。
因此,现有技术有待改进。
发明内容
本发明所要解决的技术问题是,批量验证的安全性较低的问题,提供了一种并行验签的方法,验签者随机选取若干个第一数值,在计算并行验签曲线点时引入随机选取若干个第一数值,提高了并行验签的安全性。
本发明实施例提供了一种并行验签的方法,包括:
获取若干待处理消息,以及若干签名,其中,所述若干签名和所述若干待处理消息一一对应;
若所述若干签名中的每个签名均满足第一预设条件,则随机选取若干第一数值,其中,所述若干第一数值与所述若干签名一一对应;
基于所述若干第一数值和所述若干签名确定验签曲线点,以及基于所述若干第一数值、若干待处理消息和所述若干签名确定若干验签横坐标;
基于所述若干验签横坐标和所述验签曲线点确定验证值,若所述验证值满足第二预设条件则并行验签成功,若所述验证值不满足第二预设条件,则并行验签失败。
作为进一步的改进技术方案,对于每个签名,所述签名包括:第一签名值和第二签名值;所述基于所述若干第一数值和所述若干签名确定验签曲线点,具体包括:
对于每个签名,基于所述第一签名值和所述第二签名值确定该签名的验签中间值;
基于椭圆曲线上的n阶基点、每个签名各自分别对应的第一数值、第一签名值、验签中间值和签名公钥确定验签曲线点。
作为进一步的改进技术方案,对于每个签名,所述签名包括:第一签名值和第二签名值;所述基于所述若干第一数值、若干待处理消息和所述若干签名确定若干验签横坐标,具体包括:
对于每个签名,确定该签名对应的待处理消息的哈希值,以及该签名的第一签名值,根据所述哈希值和所述第一签名值确定第一差值,所述第一差值对n取模,以得到签名横坐标;
基于所述签名横坐标确定第一变量点和第二变量点;
对于每个第一数值,将所述第一数值转换为预设长度的二进制数,对于所述二进制数中的每个非首位字符,基于该非首位字符对所述第一变量点和所述第二变量点进行更新,以得到更新后的第一变量点和更新后的第二变量点,直至得到所述第一变量点对应的目标点,基于所述目标点确定所述第一数值对应的验签横坐标。
作为进一步的改进技术方案,所述第一变量点和所述第二变量点均为三维坐标点;所述基于所述签名横坐标确定第一变量点和第二变量点,具体包括:
(h1,m1,n1)=(xi,1,1)
(h2,m2,n2)=dub((h1,m1,n1))
其中,(h1,m1,n1)是所述第一变量点,xi是所述签名横坐标,h1是所述第一变量点的第一坐标值,m1是所述第一变量点的第二坐标值,n1是所述第一变量点的第三坐标值,(h2,m2,n2)是所述第二变量点,h2是所述第二变量点的第一坐标值,m2是所述第二变量点的第二坐标值,n2是所述第二变量点的第三坐标值,dub(·)是倍乘运算。
作为进一步的改进技术方案,所述基于该非首位字符对所述第一变量点和所述第二变量点进行更新,以得到更新后的第一变量点和更新后的第二变量点,具体包括:
当所述非首位字符等于0时,按照第一预设规则对所述第一变量点和所述第二变量点进行更新,以得到更新后的第一变量点和更新后的第二变量点;
所述第一预设规则包括:
(h′2,m′2,n′2)=add((h1,m1,n1),(h2,m2,n2))
(h′1,m′1,n′1)=dub((h1,m1,n1))
其中,(h′2,m′2,n′2)是按照第一预设规则更新后的第二变量点,(h′1,m′1,n′1)是按照第一预设规则更新后的第一变量点,add(·)是点加运算;
作为进一步的改进技术方案,所述基于该非首位字符对所述第一变量点和所述第二变量点进行更新,以得到更新后的第一变量点和更新后的第二变量点,具体包括:
当所述非首位字符不等于0时,按照第二预设规则对所述第一变量点和所述第二变量点进行更新,以得到更新后的第一变量点和更新后的第二变量点;
所述第二预设规则包括:
(h″1,m″1,n″1)=add((h1,m1,n1),(h2,m2,n2))
(h″2,m″2,n″2)=dub((h2,m2,n2))
其中,(h″1,m″1,n″1)是按照第二预设规则更新后的第一变量点,(h″2,m″2,n″2)是按照第二预设规则更新后的第二变量点。
作为进一步的改进技术方案,所述目标点为:(h0,m0,n0),所述基于所述目标点确定第一数值对应的验签横坐标,具体包括:
vi=h0·(n0 2)-1modp
其中,vi表示第i个第一数值对应的验签横坐标,p是椭圆曲线的预设素数,dub(·)是倍乘运算。
作为进一步的改进技术方案,所述基于所述若干验签横坐标和所述验签曲线点确定验证值,具体包括:
将所述若干验签横坐标划分为第一验签坐标集和第二验签坐标集;
基于所述第一验签坐标集确定第一多项式,以及基于所述第二验签坐标集确定第二多项式,并提取所述第一多项式的若干第一系数,以及所述第二多项式的若干第二系数;
基于所述若干第一系数和所述若干第二系数构建西尔维斯特矩阵,并将所述西尔维斯特矩阵的行列式值作为验证值。
作为进一步的改进技术方案,所述第一预设条件包括:签名的第一签名值和第二签名值均为正整数,并且签名的验签中间值不等于0。
作为进一步的改进技术方案,所述第二预设条件包括:det(M)≡0modp,其中,det(M)为所述验证值,p是椭圆曲线的预设素数。
与现有技术相比,本发明实施例具有以下优点:
根据本发明实施方式提供的方法,获取若干待处理消息,以及若干签名,其中,所述若干签名和所述若干待处理消息一一对应;若所述若干签名中的每个签名均满足第一预设条件,则随机选取若干第一数值,其中,所述若干第一数值与所述若干签名一一对应;基于所述若干第一数值和所述若干签名确定验签曲线点,以及基于所述若干第一数值、若干待处理消息和所述若干签名确定若干验签横坐标;基于所述若干验签横坐标和所述验签曲线点确定验证值,若所述验证值满足第二预设条件则并行验签成功,若所述验证值不满足第二预设条件,则并行验签失败。本发明实施例在并行验签曲线点时引入随机选取的若干个第一数值,使得攻击者伪造多个可以通过并行验签的概率大幅降低,进而提高了并行验签的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种并行验签的方法的流程示意图;
图2为本发明实施例中,具体实施时,一种并行验签的方法的流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
发明人经过研究发现,SM2椭圆曲线数字签名算法是是国家密码管理局于2010年发布以及2012年实施的一种数字签名算法,并于2017年在ISO/IEC信息安全分技术委员会(SC27)会议上通过成为国际标准。它能很好地满足各种密码应用中的安全需求,如数据完整性保护、身份识别与认证等,且具有高安全性、运算速度快优点。因此,SM2椭圆曲线数字签名算法在商用领域上得到广泛的应用。
在实际应用场景中,存在验签者同时验证多个签名消息的需求。为实现对多个签名消息的快速验证,Naccache等人率先提出批量验签协议。相比于分别对每一条签名消息进行单个验证,批量验签能够大幅减少验签过程中复杂运算的次数,提高了验签效率。目前,SM2的批量验签方式单一,基于此,攻击者容易伪造多个非法签名,并且大概率能够成功通过批量验签,导致批量验证的安全性低。
为了解决上述问题,在本发明实施例中,获取若干待处理消息,以及若干签名,其中,所述若干签名和所述若干待处理消息一一对应;若所述若干签名中的每个签名均满足第一预设条件,则随机选取若干第一数值,其中,所述若干第一数值与所述若干签名一一对应,所述第一数值为:比特长度为预设长度的整数;基于所述若干第一数值和所述若干签名确定验签曲线点,以及基于所述若干第一数值、若干待处理消息和所述若干签名确定若干验签横坐标;基于所述若干验签横坐标和所述验签曲线点确定验证值,若所述验证值满足第二预设条件则并行验签成功,若所述验证值不满足第二预设条件,则并行验签失败。本发明实施例在并行验签曲线点时引入随机选取的若干个第一数值,使得攻击者伪造多个可以通过并行验签的概率大幅降低,进而提高了并行验签的安全性。
本申请提供的一种并行验签的方法可以应用于电子设备中,其中,所述电子设备可以以各种形式来实现,例如,PC机、服务器、手机、平板电脑、掌上电脑、个人数字助理(Personal Digital Assistant,PDA)等。另外,该方法所实现的功能可以通过电子设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,所述电子设备至少包括处理器和存储介质。
下面结合附图,详细说明本发明的各种非限制性实施方式。
参见图1,示出了本发明实施例中的一种并行验签的方法。在本实施例中,所述方法例如可以包括以下步骤:
S1、获取若干待处理消息,以及若干签名。
在本发明实施例中,所述待处理消息是签名者处理的消息,签名者Si采用SM2椭圆曲线数字签名算法对待处理消息Mi进行签名,得到签名(ri,si)。其中,i=1,2,...,w,也就是说,所述签名者Si有若干个(w个),包括:S1,S2,...,Sw;同样的,所述待处理消息有若干个(w个),包括:M1,M2,...,Mw;所述签名有若干个(w个),包括:(r1,s1),(r2,s2),...,(rw,sw)。具体的,所述若干待处理消息可以是5个待处理消息、7个待处理消息、9个待处理消息等。例如,若干待处理消息可以是7个,即,i=1,2,...,7,则所述若干签名可以是7个签名。
在本发明实施例中,所述若干签名和所述若干待处理消息一一对应,也就是说,对于一个待处理消息,采用签名算法对该待处理消息进行签名,以得到该待处理消息对应的签名。验签者V获取签名者发送的若干待处理消息,以及若干签名。
在本发明实施例中,所述签名者Si可以看作签名终端,签名终端按照SM2椭圆曲线数字签名算法对待处理消息Mi进行签名;验签者V可以看作验签终端,验签终端也是本发明实施例的执行主体。所述签名终端和所述验签终端均为电子设备。
接下来介绍签名者Si采用SM2椭圆曲线数字签名算法对待处理消息Mi进行签名,以得到待处理消息Mi对应的签名(ri,si)的过程,具体包括:
步骤1、根据公式(1)计算签名者Si的签名标识
其中,是签名者Si的签名标识;H256(·)表示消息摘要长度为256比特的密码杂凑函数;/>是由整数/>转换而成的2个字节;/>为签名者Si所具有的长度为比特的可辨别标识;a和b是SM2数字签名算法所使用的椭圆曲线方程y2=x3+ax+b的参数;xG和yG是G的坐标,G=(xG,yG)表示SM2椭圆曲线上阶为n的基点;/>表示签名者Si的公钥,/> 是/>的坐标;||表示级联操作;i=1,2,...,w;n为整数。
步骤2、根据公式(2)计算待处理消息Mi的哈希值,并将哈希值转换为十进制,以得到十进制形式的消息值。
其中,ei是待处理消息Mi对应的哈希值;Hv(·)表示消息摘要长度为v比特的密码杂凑函数。
步骤3、随机选取整数ki∈{1,2,...,n-1},并计算根据公式(3)计算椭圆曲线点。
(xi,yi)=kiG (3)
其中,(xi,yi)是待处理消息Mi对应的椭圆曲线点坐标。
步骤4、根据公式(4)计算第一签名值ri,进而判断ri=0或ri+ki=n是否成立,若ri=0或ri+ki=n成立,则返回步骤3,若ri=0或ri+ki=n不成立则执行步骤5。
ri=(ei+xi)mod n (4)
其中,ri是待处理消息Mi对应的第一签名值,xi是待处理消息Mi对应的椭圆曲线点(xi,yi)的横坐标,mod n表示对n取模操作。
步骤5、根据公式(5)计算待处理消息Mi对应的第二签名值si,进而判断si=0是否成立,若si=0成立,则返回步骤3;若si=0不成立,则执行步骤6。
其中,表示签名者Si的私钥,·-1表示求模n的逆操作。
步骤6、根据第一签名值ri和第二签名值si构造待处理消息Mi对应的签名(ri,si)。
S2、若所述若干签名中的每个签名均满足第一预设条件,则随机选取若干第一数值。
在本发明实施例中,对于每个签名,所述签名包括:第一签名值和第二签名值。验证签名是否满足第一预设条件,是验签者V对签名进行初步验证。所述第一预设条件包括:签名的第一签名值和第二签名值均为正整数,并且签名的验签中间值不等于0。其中,签名的验签中间值基于签名的第一签名值和第二签名值确定。
具体的,验签者V在获取待处理消息Mi和签名(ri,si)后,判断ri,si∈{1,2,...,n-1}是否成立,若ri,si∈{1,2,...,n-1}成立,则验证签名的验签中间值是否等于0;若ri,si∈{1,2,...,n-1}不成立,则判定签名不满足第一预设条件,结束验签流程。
进一步地,对于一个签名,验证签名的验签中间值是否等于0的过程包括:
根据公式(7)计算签名的验签中间值。
ti=(ri+si)mod n (7)
其中,ti是签名(ri,si)的验签中间值。
计算得到签名(ri,si)的验签中间值ti后,判断ti是否等于0,若ti不等于0,则判定签名满足第一预设条件;若ti等于0,则判定签名不满足第一预设条件,结束验签流程。也就是说,签名满足第一预设条件需要ri,si∈{1,2,...,n-1}成立,并且ti不等于0。
在本发明实施例中,若所述若干签名中的每个签名均满足第一预设条件,则随机选取若干第一数值;将第一数值记为zi,其中,i=1,2,…,w。所述若干第一数值与所述若干签名一一对应,所述第一数值为:比特长度为预设长度的整数,比特长度记为l,l的取值可以是:l≥32。所谓若干第一数值与若干签名一一对应,指的是为每个签名随机选取一对应的第一数值,可以通过同样的下角标表示第一数值与签名是相对应的关系。例如,签名为(r1,s1),其对应的第一数值是z1。
S3、基于所述若干第一数值和所述若干签名确定验签曲线点,以及基于所述若干第一数值、若干待处理消息和所述若干签名确定若干验签横坐标。
在本发明实施例中,对于每个签名,基于所述第一签名值和所述第二签名值确定该签名的验签中间值;基于椭圆曲线上的n阶基点、每个签名各自分别对应的第一数值、第一签名值、验签中间值和签名公钥确定验签曲线点。
在本发明实施例中,在计算若干验签曲线点的过程中引入了随机数(随机选取的第一数值),使得攻击者伪造多个非法签名以及使得这些签名能够通过并行验签的概率大幅降低,由此极大地提高了并行验签的安全性。
在本发明实施例中,按照公式(7)可以基于该签名的第一签名值和第二签名值确定该签名的验签中间值;根据公式(8)可以确定验签曲线点。
其中,(α,β)是验签曲线点;zi是第i个签名对应的第一数值;si是第i个签名对应的第二签名值;ti是第i个签名对应的验签中间值;G表示SM2椭圆曲线上阶为n的基点;表示签名(ri,si)对应的签名公钥,n为整数。
进一步地,当所述若干签名均是由同一签名者产生时(若干签名的签名公钥相同),公式(8)可以简化为公式(9)。
其中,PA是签名者A的签名公钥。
接下来介绍基于所述若干第一数值、若干待处理消息和所述若干签名确定若干验签横坐标的过程,步骤S3包括:
S31、对于每个签名,确定该签名对应的待处理消息的哈希值,以及该签名的第一签名值,根据所述哈希值和所述第一签名值确定第一差值,所述第一差值对n取模,以得到签名横坐标。
在本发明实施例中,根据公式(2)计算消息待处理消息Mi的哈希值ei,并将哈希值转换为十进制,以得到十进制形式的消息值;根据公式(10)计算签名横坐标。
xi=(ri-ei)mod n (10)
其中,xi是签名(ri,si)对应的签名横坐标,ri是签名(ri,si)对应的第一签名值,ei是待处理消息Mi对应的哈希值。参考公式(10),所述第一差值为:ri-ei。
S32、基于所述签名横坐标确定第一变量点和第二变量点。
在本发明实施例中,所述第一变量点和所述第二变量点均为三维坐标点。根据公式(11)和公式(12)确定第一变量点和第二变量点。
(h1,m1,n1)=(xi,1,1) (11)
(h2,m2,n2)=dub((h1,m1,n1)) (12)
其中,(h1,m1,n1)是第一变量点,xi是所述签名横坐标,h1是所述第一变量点的第一坐标值,m1是所述第一变量点的第二坐标值,n1是所述第一变量点的第三坐标值,(h2,m2,n2)是所述第二变量点,h2是所述第二变量点的第一坐标值,m2是所述第二变量点的第二坐标值,n2是所述第二变量点的第三坐标值,dub(·)是倍乘运算,dub(·)是倍乘运算。
在本发明实施例中,公式(12)表示对(h1,m1,n1)进行倍乘操作以得到(h2,m2,n2),即,(h2,m2,n2)是(h1,m1,n1)的点倍。具体的, m2=(Y2λ1(λ2-h2)-λ3)modp;n2=2min1modp,其中,λ1,λ2,λ3是整数,且/>λ2=4h1m1modp,Y1是第二中间值,Y2是第二中间值。
进一步的,基于所述签名横坐标、预设参数和预设素数确定第一中间值和第二中间值。具体的,所述预设参数包括:a和b,a和b是SM2数字签名算法所使用的椭圆曲线方程y2=x3+ax+b的参数;预设素数包括:p,p是椭圆曲线上定义底层域的素数。
具体的,根据公式(13)和公式(14)计算第一中间值和第二中间值。
Y2=Y1 -1 mod p (14)
其中,Y1是第二中间值,Y2是第二中间值,xi是所述签名横坐标;a和b是预设参数,p是预设素数。
S33、对于每个第一数值,将所述第一数值转换为预设长度的二进制数,对于所述二进制数中的每个非首位字符,基于该非首位字符对所述第一变量点和所述第二变量点进行更新,以得到更新后的第一变量点和更新后的第二变量点,直至得到所述第一变量点对应的目标点,基于所述目标点确定所述第一数值对应的验签横坐标。
在本发明实施例中,所述将第一数值zi转换成二进制数,例如,zi=(δl-1δl-2…δ1δ0)2,其中,l表示整数zi的二进制长度,δl-1=1,δk∈{0,1},k=0,1,...,l-2。二进制数中的首位字符为排列在二进制数的第一位的字符,例如,zi=(δl-1δl-2…δlδ0)2中,δl-1是首位字符,进而,二进制数除了δl-1以外的字符为非首位字符。
具体的,步骤S33包括:
S331A、当所述非首位字符等于0时,按照第一预设规则对所述第一变量点和所述第二变量点进行更新,以得到更新后的第一变量点和更新后的第二变量点;参考公式(15)和公式(16),所述第一预设规则包括:
(h′2,m′2,n′2)=add((h1,m1,n1),(h2,m2,n2)) (15)
(h′1,m′1,n′1)=dub((h1,m1,n1)) (16)
其中,(h′2,m′2,n′2)是按照第一预设规则更新后的第二变量点,h′2是按照第一预设规则更新后的第二变量点的第一坐标值,m′2是按照第一预设规则更新后的第二变量点的第二坐标值,n′2是按照第一预设规则更新后的第二变量点的第三坐标值;(h′1,m′1,n′1)是按照第一预设规则更新后的第一变量点,h′1是按照第一预设规则更新后的第一变量点的第一坐标值,m′1是按照第一预设规则更新后的第一变量点的第二坐标值,n′1是按照第一预设规则更新后的第一变量点的第三坐标值,add(·)是点加运算。
S331B、当所述非首位字符不等于0时,按照第二预设规则对所述第一变量点和所述第二变量点进行更新,以得到更新后的第一变量点和更新后的第二变量点;参考公式(17)和公式(18),所述第二预设规则包括:
(h″1,m″1,n″1)=add((h1,m1,n1),(h2,m2,n2)) (17)
(h″2,m″2,n″2)=dub((h2,m2,n2)) (18)
其中,(h″1,m″1,n″1)是按照第二预设规则更新后的第一变量点,h″1是按照第二预设规则更新后的第一变量点的第一坐标值,m″1是按照第二预设规则更新后的第二变量点的第二坐标值,n″1是按照第二预设规则更新后的第一变量点的第三坐标值,(h″2,m″2,n″2)是按照第二预设规则更新后的第二变量点,h″2是按照第二预设规则更新后的第二变量点的第一坐标值,m″2是按照第二预设规则更新后的第二变量点的第二坐标值,n″2是按照第二预设规则更新后的第二变量点的第三坐标值。
在本发明实施例中,对于所述二进制数中的所有非首位字符,可以按照所述二进制数中所有非首位字符的排列顺序,从前往后依次对第一变量点和第二变量进行更新。所述目标点是基于所述二进制数中最后一位字符更新后得到的更新后的第一变量点。
例如,在zi=(δl-1δl-2…δlδ0)2中,δl-1=1,δk∈{0,1},k=0,1,...,l-2,k取值从l-2到0;首先判断δl-2是否等于0,假设δl-2等于0,则按照第一预设规则分别更新第一变量点和第二变量点,得到更新后的第一变量点A1和更新后的第二变量点B1;再判断δl-3是否等于0,假设δl-3等于0,则按照第一预设规则更新A1和B1,得到更新后的第一变量点A2和更新后的第二变量点B2;对每一个非首位字符依次执行上述操作,直至判断δ0是否等于0,假设δ0不等于0。按照第二预设规则更新Al-2和Bl-2,以得到Al-1和Bl-1,由于δ0是二进制数中排列在最后的字符,因此,将Al-1作为目标点。所述目标点为:(h0,m0,n0)。
在本发明实施例中,(h′2,m′2,n′2)=add((h1,m1,n1),(h2,m2,n2))表示对点(h1,m1,n1)与点(h2,m2,n2)进行点加操作并得到点(h′2,m′2,n′2),具体的,n′2=n1n2λ′3modp,其中,λ′7=(λ′1+λ′2)modp,λ′6=(λ′4-λ′5)modp,λ′3=(λ′1-λ′2)modp,/> λ′t(t=1,2,...,8)为整数。
S332、参考公式(19),所述基于所述目标点确定第一数值对应的验签横坐标,具体包括:
vi=h0·(n0 2)-1modp (19)
其中,vi表示第i个第一数值对应的验签横坐标,p是椭圆曲线的预设素数,dub(·)是倍乘运算。
在本发明实施例中,步骤S33给出的是基于每个第一数值确定该第一数值对应的验签横坐标的过程,在具体实施时,每个第一数值均有其对应的验签横坐标,当第一数值有若干个时,可以得到若干第一数值各自分别对应的验签横坐标(若干个验签横坐标)。
S4、基于所述若干验签横坐标和所述验签曲线点确定验证值,若所述验证值满足第二预设条件则并行验签成功,若所述验证值不满足第二预设条件,则并行验签失败。
具体的,步骤S4包括:
S41、将所述若干验签横坐标划分为第一验签坐标集和第二验签坐标集。
在本发明实施例中,第一验签坐标集包括若干第一验签横坐标,第二验签坐标集包括若干第二验签横坐标。例如,当第一数值有7个时,若干个验签横坐标可以表示为{vi|i=1,2,...,7},可以将v1,v2,v3,v4作为若干第一验签横坐标,由v1,v2,v3,v4构成第一验签坐标集,可以将v5,v6,v7作为若干第二验签横坐标,由v5,v6,v7构成第二验签坐标集。
S42、基于所述第一验签坐标集确定第一多项式,以及基于所述第二验签坐标集和所述验签曲线点确定第二多项式,并提取所述第一多项式的若干第一系数,以及所述第二多项式的若干第二系数。
在本发明实施例中,基于所述第一验签坐标集,通过求解验签多项式算法,得到一个关于变量x的第一多项式f(x);将所述第二验签坐标集和所述验签曲线点作为输入,通过求解验签多项式算法,得到关于变量x的第二多项式g(x)。
在本发明实施例中,所述若干签名可以是7个,所述若干第一数值可以是7个,所述第一多项式和所述第二多项式均为8次多项式。所述第一验签坐标集包括4个第一验签横坐标,所述第二验签坐标集包括3个第二验签横坐标。这里仅给出若干签名为7个的情况,可以理解,所述若干签名也可以是其他数值。
例如,在上例中,第一验签坐标集包括:v1,v2,v3,v4,第二验证坐标集包括:v5,v6,v7;将v1,v2,v3,v4作为输入,通过求解验签多项式算法,得到一个关于变量x的8次多项式,即第一多项式f(x),f(x)=a8x8+…+a1x+a0,其中,aj∈{0,1,...,p-1}是f(x)的系数,即第一系数,且aj由v1,v2,v3以及v4唯一确定,j=0,1,...,8;将验签横坐标v5,v6,v7以及并行验签曲线点(α,β)的横坐标α作为输入,通过求解验签多项式算法,得到另一个关于变量x的8次多项式,即第二多项式g(x),g(x)=b8x8+…+b1x+b0,其中,bj∈{0,1,...,p-1}是g(x)的系数,即第二系数,并且bj由v5,v6,v7以及α唯一确定。
接下来介绍,将所述第一验签坐标集作为输入,通过求解验签多项式算法,得到第一多项式的过程。
以第一数值有7个为例,假设第一验签坐标集包括r1,r2,r3,r4,将r1,r2,r3,r4作为输入,通过求解验签多项式算法,得到关于变量x的8次的第一多项式h8(x)。具体的,首先根据公式(20),基于第一验签坐标集中的前三个验证横坐标r1,r2,r3,求关于变量x的4次多项式h4(x):
其中,c1,c2,c3是整数且c1=(r1-r2)2mod p,c2=-2((r1+r2)(r1r2+a)+2b)mod p,c3=((r1r2-a)2-4b(r1+r2))mod p,u(x),v(x),w(x)是三个关于变量x的二次多项式并且u(x)=(x-r3)2,v(x)=-2((x+r3)(xr3+a)+2b),w(x)=(xr3-a)2-4b(x+r3),整数dj1∈{0,1,...,p-1}是h4(x)化简后的系数并且由r1,r2和r3唯一确定,a和b是SM2数字签名算法所使用的椭圆曲线方程y2=x3+ax+b的参数,p是椭圆曲线定义底层域的素数,modp表示对p取模操作,其中j1=0,1,...,4。
得到多项式h4(x)之后,根据第一验签坐标集中第四个验证横坐标r4和多项式h4(x)的系数根据公式(21)求关于变量x的8次多项式h8(x):
其中,u′(x),v′(x),w′(x)是三个关于变量x的二次多项式并且u′(x)=(x-r4)2,v′(x)=-2((x+r4)(xr4+a)+2b),w′(x)=(xr4-a)2-4b(x+r4),整数ej2∈{0,1,...,p-1}是h8(x)化简后的系数并且由r1,r2,r3,r4唯一确定,j2=0,1,...,8。
同样的,按照上述过程,第二验签坐标集和验签曲线点(α,β)的横坐标α作为输入,通过求解验签多项式算法,可以得到第二多项式。
S43、基于所述若干第一系数和所述若干第二系数构建西尔维斯特矩阵,并将所述西尔维斯特矩阵的行列式值作为验证值。
在本发明实施例中,以第一数值有7个为例,假设第一多项式f(x)=a8x8+…+a1x+a0,若干第一系数为{aj|j=0,1,...,8},第二多项式g(x)=b8x8+…+b1x+b0,若干第二系数为{bj|j=0,1,...,8};验签者V采用验签多项式f(x)和g(x)的系数{aj|j=0,1,...,8}和{bj|j=0,1,...,8}构造公式(22)所示的16×16的西尔维斯特(Sylvester)矩阵M,并计算M的行列式值det(M)。
在本发明实施例中,将所述行列式值det(M)作为所述验证值,所述第二预设条件包括:det(M)≡0modp。判断det(M)≡0 mod p是否成立,若成立,并行验签通过,结束验签流程;否则,并行验签失败,结束验签流程。
为了便于说明,参见图2,在具体实施时,以签名者获取7个待处理消息和7个签名为例,所述并行验签的方法包括:
步骤101、验签者获取7个待处理消息和7个签名;
步骤102、判断是否所有签名均满足第一预设条件,若满足则进入步骤103,若不满足则判定验签失败;
步骤103、随机选取7个第一整数,并根据7个签名和7个第一整数计算验签曲线点;
步骤104、根据7个待处理消息、7个签名和7个第一数值计算7个验签横坐标;
步骤105、根据7个验签横坐标和验签曲线点确定第一多项式和第二多项式;
步骤106、根据第一多项式和第二多项式的系数确定16*16的西尔维斯特矩阵;
步骤107、将西尔维斯特矩阵的行列式值作为验证值;
步骤108、判断验证值是否满足第二预设条件,若满足则判定验签成成功,若不满足则判定验签失败。
在本发明实施例中,执行并行验签时,采用第一多项式和第二多项式构造西尔维斯特矩阵,并基于西尔维斯特矩阵,判断验证值是否满足第二预设条件来确定验签是否通过;所述第一多项式和所述第二多项式均可以是8次多项式,如此,避免了求更高次数的验签多项式,由此极大地提高了并行验签的效率。
本发明实施例提供的并行验签的方法,在计算若干验签曲线点的过程中引入了随机数,使得攻击者伪造多个非法签名以及使得这些签名能够通过并行验签的概率大幅降低,由此极大地提高了并行验签的安全性。执行并行验签时,采用第一多项式和第二多项式构造西尔维斯特矩阵,并通过西尔维斯特矩阵判断其行列式的值是否为0来确定验签是否通过;所述第一多项式和所述第二多项式均可以是8次多项式,如此,避免了求更高次数的验签多项式,由此极大地提高了并行验签的效率。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
Claims (10)
1.一种并行验签的方法,其特征在于,所述并行验签的方法包括:
获取若干待处理消息,以及若干签名,其中,所述若干签名和所述若干待处理消息一一对应;
若所述若干签名中的每个签名均满足第一预设条件,则随机选取若干第一数值,其中,所述若干第一数值与所述若干签名一一对应;
基于所述若干第一数值和所述若干签名确定验签曲线点,以及基于所述若干第一数值、若干待处理消息和所述若干签名确定若干验签横坐标;
基于所述若干验签横坐标和所述验签曲线点确定验证值,若所述验证值满足第二预设条件则并行验签成功,若所述验证值不满足第二预设条件,则并行验签失败。
2.根据权利要求1所述的并行验签的方法,其特征在于,对于每个签名,所述签名包括:第一签名值和第二签名值;所述基于所述若干第一数值和所述若干签名确定验签曲线点,具体包括:
对于每个签名,基于所述第一签名值和所述第二签名值确定该签名的验签中间值;
基于椭圆曲线上的n阶基点、每个签名各自分别对应的第一数值、第一签名值、验签中间值和签名公钥确定验签曲线点。
3.根据权利要求1所述的并行验签的方法,其特征在于,对于每个签名,所述签名包括:第一签名值和第二签名值;所述基于所述若干第一数值、若干待处理消息和所述若干签名确定若干验签横坐标,具体包括:
对于每个签名,确定该签名对应的待处理消息的哈希值,以及该签名的第一签名值,根据所述哈希值和所述第一签名值确定第一差值,所述第一差值对n取模,以得到签名横坐标;
基于所述签名横坐标确定第一变量点和第二变量点;
对于每个第一数值,将所述第一数值转换为预设长度的二进制数,对于所述二进制数中的每个非首位字符,基于该非首位字符对所述第一变量点和所述第二变量点进行更新,以得到更新后的第一变量点和更新后的第二变量点,直至得到所述第一变量点对应的目标点,基于所述目标点确定所述第一数值对应的验签横坐标。
4.根据权利要求3所述的并行验签的方法,其特征在于,所述第一变量点和所述第二变量点均为三维坐标点;所述基于所述签名横坐标确定第一变量点和第二变量点,具体包括:
(h1,m1,n1)=(xi,1,1)
(h2,m2,n2)=dub((h1,m1,n1))
其中,(h1,m1,n1)是所述第一变量点,xi是所述签名横坐标,h1是所述第一变量点的第一坐标值,m1是所述第一变量点的第二坐标值,n1是所述第一变量点的第三坐标值,(h2,m2,n2)是所述第二变量点,h2是所述第二变量点的第一坐标值,m2是所述第二变量点的第二坐标值,n2是所述第二变量点的第三坐标值,dub(·)是倍乘运算。
5.根据权利要求4所述的并行验签的方法,其特征在于,所述基于该非首位字符对所述第一变量点和所述第二变量点进行更新,以得到更新后的第一变量点和更新后的第二变量点,具体包括:
当所述非首位字符等于0时,按照第一预设规则对所述第一变量点和所述第二变量点进行更新,以得到更新后的第一变量点和更新后的第二变量点;
所述第一预设规则包括:
(h′2,m′2,n′2)=add((h1,m1,n1),(h2,m2,n2))
(h′1,m′1,n′1)=dub((h1,m1,n1))
其中,(h′2,m′2,n′2)是按照第一预设规则更新后的第二变量点,(h′1,m′1,n′1)是按照第一预设规则更新后的第一变量点,add(·)是点加运算。
6.根据权利要求4所述的并行验签的方法,其特征在于,所述基于该非首位字符对所述第一变量点和所述第二变量点进行更新,以得到更新后的第一变量点和更新后的第二变量点,具体包括:
当所述非首位字符不等于0时,按照第二预设规则对所述第一变量点和所述第二变量点进行更新,以得到更新后的第一变量点和更新后的第二变量点;
所述第二预设规则包括:
(h″1,m″1,n″1)=add((h1,m1,n1),(h2,m2,n2))
(h″2,m″2,n″2)=dub((h2,m2,n2))
其中,(h″1,m″1,n″1)是按照第二预设规则更新后的第一变量点,(h″2,m″2,n″2)是按照第二预设规则更新后的第二变量点。
7.根据权利要求3所述的并行验签的方法,其特征在于,所述目标点为:(h0,m0,n0),所述基于所述目标点确定第一数值对应的验签横坐标,具体包括:
vi=h0·(n0 2)-1modp
其中,vi表示第i个第一数值对应的验签横坐标,p是椭圆曲线的预设素数,dub(·)是倍乘运算。
8.根据权利要求1所述的并行验签的方法,其特征在于,所述基于所述若干验签横坐标和所述验签曲线点确定验证值,具体包括:
将所述若干验签横坐标划分为第一验签坐标集和第二验签坐标集;
基于所述第一验签坐标集确定第一多项式,以及基于所述第二验签坐标集和所述验签曲线点确定第二多项式,并提取所述第一多项式的若干第一系数,以及所述第二多项式的若干第二系数;
基于所述若干第一系数和所述若干第二系数构建西尔维斯特矩阵,并将所述西尔维斯特矩阵的行列式值作为验证值。
9.根据权利要求1所述的并行验签的方法,其特征在于,所述第一预设条件包括:签名的第一签名值和第二签名值均为正整数,并且签名的验签中间值不等于0。
10.根据权利要求1所述的并行验签的方法,其特征在于,所述第二预设条件包括:det(M)≡0modp,其中,det(M)为所述验证值,p是椭圆曲线的预设素数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110309614.8A CN113114466B (zh) | 2021-03-23 | 2021-03-23 | 一种并行验签的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110309614.8A CN113114466B (zh) | 2021-03-23 | 2021-03-23 | 一种并行验签的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113114466A CN113114466A (zh) | 2021-07-13 |
CN113114466B true CN113114466B (zh) | 2023-09-29 |
Family
ID=76710398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110309614.8A Active CN113114466B (zh) | 2021-03-23 | 2021-03-23 | 一种并行验签的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113114466B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106856431A (zh) * | 2015-12-09 | 2017-06-16 | 上海华虹集成电路有限责任公司 | 改进的椭圆曲线数字签名算法及验签方法 |
CN109698751A (zh) * | 2018-11-09 | 2019-04-30 | 北京中宇万通科技股份有限公司 | 数字签名生成及验签方法、计算机设备和存储介质 |
CN110493009A (zh) * | 2019-09-23 | 2019-11-22 | 百度在线网络技术(北京)有限公司 | 签名的生成方法和验证方法、装置、设备和介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5233449B2 (ja) * | 2008-07-02 | 2013-07-10 | 日本電気株式会社 | 署名生成装置、ならびに、署名検証装置 |
-
2021
- 2021-03-23 CN CN202110309614.8A patent/CN113114466B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106856431A (zh) * | 2015-12-09 | 2017-06-16 | 上海华虹集成电路有限责任公司 | 改进的椭圆曲线数字签名算法及验签方法 |
CN109698751A (zh) * | 2018-11-09 | 2019-04-30 | 北京中宇万通科技股份有限公司 | 数字签名生成及验签方法、计算机设备和存储介质 |
CN110493009A (zh) * | 2019-09-23 | 2019-11-22 | 百度在线网络技术(北京)有限公司 | 签名的生成方法和验证方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113114466A (zh) | 2021-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111628868B (zh) | 数字签名生成方法、装置、计算机设备和存储介质 | |
US9219602B2 (en) | Method and system for securely computing a base point in direct anonymous attestation | |
US7856556B2 (en) | Codeword-enhanced peer-to-peer authentication | |
CN112560091B (zh) | 数字签名方法、签名信息的验证方法、相关装置及电子设备 | |
CN108667623A (zh) | 一种sm2椭圆曲线签名验证算法 | |
CN112446052B (zh) | 一种适用于涉密信息系统的聚合签名方法及系统 | |
CN107911217B (zh) | 基于ecdsa算法协同生成签名的方法、装置和数据处理系统 | |
EP2991264B1 (en) | Encrypted text matching system, method and program | |
CN114117547B (zh) | 一种基于预计算表的sm9数字签名加速生成方法以及数字签名加速验证方法 | |
CN116566626B (zh) | 环签名方法和设备 | |
CN115664675B (zh) | 基于sm2算法的可追踪环签名方法、系统、设备及介质 | |
Srivastava et al. | An overview of hash based signatures | |
CN110719172A (zh) | 区块链系统中的签名方法、签名系统以及相关设备 | |
CN116346328A (zh) | 一种数字签名方法、系统、设备及计算机可读存储介质 | |
CN113114466B (zh) | 一种并行验签的方法 | |
WO2023159849A1 (zh) | 一种数字签名方法、计算机设备及介质 | |
CN116827545A (zh) | 一种基于sm2的可验证随机函数构造方法和装置 | |
CN114760072B (zh) | 签名及验签方法、装置及存储介质 | |
US10924287B2 (en) | Digital signature technique | |
JP2009169316A (ja) | ハッシュ関数演算装置及び署名装置及びプログラム及びハッシュ関数演算方法 | |
CN117795901A (zh) | 生成数字签名份额 | |
CN116318636A (zh) | 一种基于sm2的门限签名方法 | |
CN115694820A (zh) | 一种格数字签名方法及相关设备 | |
CN114065233A (zh) | 一种面向大数据和区块链应用的数字签名聚合方法 | |
CN111314081A (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 |