CN113055189B - Sm2数字签名验证失败原因判定方法、装置、设备和介质 - Google Patents

Sm2数字签名验证失败原因判定方法、装置、设备和介质 Download PDF

Info

Publication number
CN113055189B
CN113055189B CN202110611492.8A CN202110611492A CN113055189B CN 113055189 B CN113055189 B CN 113055189B CN 202110611492 A CN202110611492 A CN 202110611492A CN 113055189 B CN113055189 B CN 113055189B
Authority
CN
China
Prior art keywords
public key
digital signature
signature verification
point
signature
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
Application number
CN202110611492.8A
Other languages
English (en)
Other versions
CN113055189A (zh
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.)
Industrial Information Security Sichuan Innovation Center Co ltd
Original Assignee
Industrial Information Security Sichuan Innovation Center 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 Industrial Information Security Sichuan Innovation Center Co ltd filed Critical Industrial Information Security Sichuan Innovation Center Co ltd
Priority to CN202110611492.8A priority Critical patent/CN113055189B/zh
Publication of CN113055189A publication Critical patent/CN113055189A/zh
Application granted granted Critical
Publication of CN113055189B publication Critical patent/CN113055189B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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/3252Cryptographic 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

Abstract

本发明公开了一种SM2数字签名验证失败原因判定方法、装置、设备和介质。本发明解决了SM2数字签名的验证者在计算得到验证失败的结果时,无法定为是签名值错误还是公钥错误导致验签失败的问题,且既不改动SM2标准的签名算法,也不改动SM2标准的验签算法,完全兼容现有的SM2签名算法和验签算法。

Description

SM2数字签名验证失败原因判定方法、装置、设备和介质
技术领域
本发明属于信息安全技术领域,尤其涉及SM2数字签名验证失败原因判定方法、装置、设备和介质。
背景技术
密码学家Neal Koblitz和Victor Miller在1985年分别提出了椭圆曲线密码学(Elliptic curve Cryptography,ECC)的思想,使其成为构造公钥密码体制的一个有力工具。我国国家标准GB/T 32918《信息安全技术 SM2椭圆曲线公钥密码算法》规定的SM2算法就是一种特定的ECC密码算法,主要包括数字签名算法、密钥交换协议和公钥加密算法三个部分。GB/T 32918.2规定了SM2椭圆曲线公钥密码算法的数字签名算法,包括数字签名生成算法和验证算法及相应的流程,可以满足多种密码应用中的身份鉴别和数据完整性、信息来源真实性的安全需求。数字签名算法由一个签名者对数据产生数字签名,并由一个验证者验证签名的可靠性。每个签名者有一个公钥和一个私钥,其中私钥用于产生签名,验证者用签名者的公钥验证签名。在签名的生成过程之前和签名的验证过程之前,都分别要用密码杂凑函数对签名用户的可辨别标识ID、部分椭圆曲线系统参数和签名用户的公钥杂凑值以及待签名消息进行压缩得到该用户的杂凑值。在云计算、大数据、物联网、移动互联网、工业控制系统、区块链等众多领域都在使用SM2进行数据签名来保证数据真实性、完整性,为了验证签名的正确性,需使用公钥执行SM2签名验证功能。
在实际使用中,SM2数字签名验证可能失败,在验签失败时,在签名验证的众多输入参数——原始消息、签名者杂凑值、签名值、签名者公钥、系统参数中,使用者希望分析确定是哪个参数出现错误。系统参数作为标准规定的数据,难以出现错误,纵使异常也能及时发现原始消息;签名者杂凑值作为固定、公开、可验证的信息,很容易判定其是否出现错误;原始消息是签名值一对,因为原始消息依赖于签名值来确定其是否被篡改。因此,如何判断数字签名验证失败是签名值导致的还是公钥导致的,这是众多的SM2签名验签算法使用者遇到的一个急需解决的问题。
在实际使用中,SM2数字签名的验证者在计算得到验证失败的结果时,只能分析系统参数、签名者杂凑值是否异常,但无法分析该数字签名验证失败是签名值导致的还是公钥导致的,比如消息被篡改导致签名值不匹配、签名值发送错误等亦或是误传为另一个公钥等。
发明内容
本发明的目的在于,为克服现有技术缺陷,提供了一种SM2数字签名验证失败原因判定方法、装置、设备和介质,。
本发明目的通过下述技术方案来实现:
本发明所采用的记号、缩写与符号如下:
A和B:SM2公钥密码系统的两个用户,A为签名者,B为验证签名者。
q :有限域
Figure 966305DEST_PATH_IMAGE001
中元素的数目。
Figure 635184DEST_PATH_IMAGE001
:包含q个元素的有限域。
a,b:
Figure 815498DEST_PATH_IMAGE001
中的元素,它们定义
Figure 569828DEST_PATH_IMAGE002
上的一条椭圆曲线E。
Figure 306840DEST_PATH_IMAGE003
Figure 767908DEST_PATH_IMAGE001
上椭圆曲线E的所有有理点组成的集合。
O:椭圆曲线E上的无穷远点(或零点),是椭圆曲线加法群的单位元。
G:椭圆曲线的一个基点,其阶n为素数。
Figure DEST_PATH_IMAGE004
Figure 197752DEST_PATH_IMAGE003
上的点的数目,称为椭圆曲线
Figure 626329DEST_PATH_IMAGE003
的阶。
n :基点G的阶。
[k]P:椭圆曲线上点P的k倍点。
Figure 901452DEST_PATH_IMAGE005
:分别为用户A和用户B的私钥。
Figure DEST_PATH_IMAGE006
:分别为用户A和用户B的公钥。
Figure 482606DEST_PATH_IMAGE007
:分别是用户A的长度为
Figure DEST_PATH_IMAGE008
比特的可辨别标识
Figure 817773DEST_PATH_IMAGE009
和用户B的长度为
Figure DEST_PATH_IMAGE010
比特的可辨别标识
Figure 730715DEST_PATH_IMAGE011
Figure DEST_PATH_IMAGE012
Figure 747213DEST_PATH_IMAGE013
:分别是用户A的可辨别标识
Figure 245190DEST_PATH_IMAGE009
的比特长度
Figure DEST_PATH_IMAGE014
转换而成的两个字节
Figure 16837DEST_PATH_IMAGE012
,和用户B的可辨别标识
Figure 154426DEST_PATH_IMAGE015
的比特长度
Figure DEST_PATH_IMAGE016
转换而成的两个字节
Figure 36932DEST_PATH_IMAGE013
Figure 327099DEST_PATH_IMAGE017
Figure DEST_PATH_IMAGE018
:分别为关于用户A/用户B的杂凑值。以用户A的杂凑值
Figure 269647DEST_PATH_IMAGE019
为例,首先按GB/T 32918.1的第4.2.5节和第4.2.4节给出的算法将椭圆曲线方程参数a、b、G的坐标
Figure DEST_PATH_IMAGE020
Figure 894532DEST_PATH_IMAGE021
Figure DEST_PATH_IMAGE022
的坐标
Figure 252832DEST_PATH_IMAGE023
Figure DEST_PATH_IMAGE024
的数据类型转换为比特串,再计算
Figure 725402DEST_PATH_IMAGE025
modn :模n运算。例如,23mod7=2。
Figure 25802DEST_PATH_IMAGE026
:x与y的拼接,其中x、y是比特串或字节串。
Figure 951033DEST_PATH_IMAGE027
:消息摘要长度为v比特的密码杂凑函数。
本发明提供的SM2数字签名验证失败原因判定方法,包括:
S1:初步检测签名值
Figure 175341DEST_PATH_IMAGE028
的正确性,若签名值
Figure DEST_PATH_IMAGE029
正确,进入步骤S2;若签名值
Figure 174521DEST_PATH_IMAGE030
错误,进入步骤S6;
S2:验证公钥的有效性,若公钥正确,进入步骤S3;若公钥错误,进入步骤S6;
S3:从签名值
Figure 458871DEST_PATH_IMAGE029
中解析出公钥,若解析结果为签名值
Figure 61279DEST_PATH_IMAGE029
错误,则进入步骤S6,否则进入步骤S4;
S4:对比解析出的公钥与收到的公钥是否相同,相同则判定为公钥正确,不同则判定为公钥错误;若公钥正确,则进入步骤S5;若公钥错误,则进入步骤S6;
S5:执行数字签名验证,若数字签名验证通过,则判定为验证通过;否则签名值
Figure 89278DEST_PATH_IMAGE030
错误,进入步骤S6;
S6:若签名值
Figure 270860DEST_PATH_IMAGE029
错误,则错误原因判定为签名值异常;若公钥错误,则错误原因判定为公钥异常;
其中,
Figure 398216DEST_PATH_IMAGE029
为签名值实数对。
进一步的,步骤S1具体包括以下子步骤:将
Figure DEST_PATH_IMAGE031
Figure 298039DEST_PATH_IMAGE032
数据类型转换为整数,检验
Figure 864150DEST_PATH_IMAGE033
Figure DEST_PATH_IMAGE034
是否都成立,若有一个不成立,则签名值
Figure 352769DEST_PATH_IMAGE029
错误,其中,n为基点G的阶。
进一步的,步骤S3具体包括以下子步骤:
S31:输入标准SM2签名值
Figure 651026DEST_PATH_IMAGE029
、被执行数字签名的消息
Figure 38145DEST_PATH_IMAGE035
、签名者的杂凑值
Figure DEST_PATH_IMAGE036
、签名者的可辨别标识
Figure 594897DEST_PATH_IMAGE037
和椭圆曲线系统参数,椭圆曲线系统参数包括椭圆曲线方程参数a、b、基点
Figure DEST_PATH_IMAGE038
和基点的阶n;
S32:将
Figure 423176DEST_PATH_IMAGE031
Figure 220230DEST_PATH_IMAGE032
的数据类型转化为整数,置
Figure 16017DEST_PATH_IMAGE039
,计算
Figure DEST_PATH_IMAGE040
,将
Figure 189509DEST_PATH_IMAGE041
的数据类型转化为整数;
S33:通过中间临时变量,将压缩点转换为椭圆曲线上的一个点来解析签名者的公钥;
其中,x||y为x与y的拼接,其中x、y是比特串或字节串,
Figure 200191DEST_PATH_IMAGE027
为消息摘要长度为v比特的密码杂凑函数。
进一步的,当采用两个中间临时变量时,步骤S33具体包括:
A:计算
Figure DEST_PATH_IMAGE042
Figure 105830DEST_PATH_IMAGE043
Figure DEST_PATH_IMAGE044
B:置比特
Figure 385983DEST_PATH_IMAGE045
,将压缩点
Figure DEST_PATH_IMAGE046
转换为SM2椭圆曲线上的一个点
Figure 97587DEST_PATH_IMAGE047
C:置ne=0,ne为错误次数计数器;
D:计算公钥
Figure DEST_PATH_IMAGE048
;其中,
Figure 900458DEST_PATH_IMAGE049
Figure DEST_PATH_IMAGE050
其中,[k]P:椭圆曲线上点P的k倍点。
进一步的,所述方法还包括公钥正确性核验步骤:
将a、b、xG、yG
Figure 226266DEST_PATH_IMAGE051
Figure DEST_PATH_IMAGE052
的数据类型转化为字节串;
计算
Figure 747377DEST_PATH_IMAGE053
检验
Figure 997093DEST_PATH_IMAGE054
是否成立,若成立,返回
Figure DEST_PATH_IMAGE055
否则计算ne= ne+1,检查ne≤1是否成立,若成立,置R1=-R1,计算公钥
Figure 169317DEST_PATH_IMAGE056
,若ne≤1不成立,则返回签名值
Figure 479076DEST_PATH_IMAGE029
错误,其中,
Figure 487483DEST_PATH_IMAGE012
是发送方用户A的可辨别标识
Figure DEST_PATH_IMAGE057
的比特长度
Figure 540890DEST_PATH_IMAGE058
转换而成的两个字节,
Figure DEST_PATH_IMAGE059
是对应接收方的两个字节。
进一步的,当采用一个中间临时变量时,步骤S33具体包括:
a:计算
Figure 567620DEST_PATH_IMAGE042
Figure 48280DEST_PATH_IMAGE060
b:置比特
Figure DEST_PATH_IMAGE061
,将压缩点
Figure 278404DEST_PATH_IMAGE062
转换为SM2椭圆曲线上的一个点
Figure 325382DEST_PATH_IMAGE063
c:置ne=0,ne为错误次数计数器;
d:计算公钥
Figure 19669DEST_PATH_IMAGE064
其中,[k]P:椭圆曲线上点P的k倍点。
进一步的,方法还包括公钥正确性核验步骤:
将a、b、xG、yG
Figure 671230DEST_PATH_IMAGE065
Figure 654229DEST_PATH_IMAGE066
的数据类型转化为字节串;
计算
Figure 49439DEST_PATH_IMAGE067
检验
Figure 598232DEST_PATH_IMAGE068
是否成立,若成立,返回
Figure 873224DEST_PATH_IMAGE069
否则计算ne= ne+1,检查ne≤1是否成立,若成立,置Q=-Q,计算公钥
Figure 140257DEST_PATH_IMAGE064
,若ne≤1不成立,则返回签名值
Figure 339158DEST_PATH_IMAGE029
错误,其中,
Figure 680140DEST_PATH_IMAGE070
是发送方用户A的可辨别标识
Figure 939083DEST_PATH_IMAGE071
的比特长度
Figure 693413DEST_PATH_IMAGE072
转换而成的两个字节,
Figure 617375DEST_PATH_IMAGE073
是对应接收方的两个字节。
另一方面,本发明还提供了一种SM2数字签名验证失败原因判定装置,其特征在于,包括主控模块、整数有效性检测模块、公钥有效性检测模块、公钥解析模块和数字签名验证模块;其中,
主控模块,用于接收输入的参数、输出检测结果、整体数据调度和任务分配以及公钥的对比;
整数有效性检测模块,用于将输入的数据类型转换为整数并核验转换的整数有效性;
公钥有效性检测模块,用于验证公钥的有效性;
公钥解析模块,用于从签名值中解析出公钥;
数字签名验证模块,用于执行数字签名,验证签名值的正确性。
另一方面,本申请提供了一种计算机设备,计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现上述的任意一种SM2数字签名验证失败原因判定方法。
另一方面,本申请提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现上述的任意一种SM2数字签名验证失败原因判定方法。
本发明的有益效果在于:
(1)本发明能够在SM2数字签名的验证者在计算得到验证失败的结果时,准确判定是签名值错误还是公钥错误导致验签失败,以便于验证者对错误进行改正。
(2)本发明既不改动SM2标准的签名算法,也不改动SM2标准的验签算法,完全兼容现有的SM2签名算法和验签算法。
附图说明
图1是本发明实施例1提供的SM2数字签名验证失败原因判定方法流程框图;
图2是本发明实施例2提供的SM2数字签名验证失败原因判定装置的结构框图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,为使本发明实施例的目的、技术方案和优点更加清楚,下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
因此,以下对本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例所采用的记号、缩写与符号如下:
A和B:SM2公钥密码系统的两个用户,A为签名者,B为验证签名者。
q :有限域
Figure 140760DEST_PATH_IMAGE001
中元素的数目。
Figure 570605DEST_PATH_IMAGE001
:包含q个元素的有限域。
a,b:
Figure 484334DEST_PATH_IMAGE001
中的元素,它们定义
Figure 25037DEST_PATH_IMAGE002
上的一条椭圆曲线E。
Figure 668508DEST_PATH_IMAGE003
Figure 190625DEST_PATH_IMAGE001
上椭圆曲线E的所有有理点组成的集合。
O:椭圆曲线E上的无穷远点(或零点),是椭圆曲线加法群的单位元。
G:椭圆曲线的一个基点,其阶n为素数。
Figure 919546DEST_PATH_IMAGE004
Figure 998361DEST_PATH_IMAGE003
上的点的数目,称为椭圆曲线
Figure 434021DEST_PATH_IMAGE003
的阶。
n :基点G的阶。
[k]P:椭圆曲线上点P的k倍点。
Figure 940089DEST_PATH_IMAGE005
:分别为用户A和用户B的私钥。
Figure 340328DEST_PATH_IMAGE006
:分别为用户A和用户B的公钥。
Figure 222833DEST_PATH_IMAGE007
:分别是用户A的长度为
Figure 575317DEST_PATH_IMAGE008
比特的可辨别标识
Figure 455548DEST_PATH_IMAGE009
和用户B的长度为
Figure 893483DEST_PATH_IMAGE010
比特的可辨别标识
Figure 314100DEST_PATH_IMAGE011
Figure 973620DEST_PATH_IMAGE012
Figure 821491DEST_PATH_IMAGE013
:分别是用户A的可辨别标识
Figure 746721DEST_PATH_IMAGE009
的比特长度
Figure 908712DEST_PATH_IMAGE014
转换而成的两个字节
Figure 235789DEST_PATH_IMAGE012
,和用户B的可辨别标识
Figure 520139DEST_PATH_IMAGE015
的比特长度
Figure 119617DEST_PATH_IMAGE016
转换而成的两个字节
Figure 882036DEST_PATH_IMAGE013
Figure 63619DEST_PATH_IMAGE017
Figure 456554DEST_PATH_IMAGE018
:分别为关于用户A/用户B的杂凑值。以用户A的杂凑值
Figure 356377DEST_PATH_IMAGE019
为例,首先按GB/T 32918.1的第4.2.5节和第4.2.4节给出的算法将椭圆曲线方程参数a、b、G的坐标
Figure 109438DEST_PATH_IMAGE020
Figure 145528DEST_PATH_IMAGE021
Figure 771681DEST_PATH_IMAGE022
的坐标
Figure 96483DEST_PATH_IMAGE023
Figure 200705DEST_PATH_IMAGE024
的数据类型转换为比特串,再计算
Figure 356880DEST_PATH_IMAGE025
modn :模n运算。例如,23mod7=2。
Figure 343815DEST_PATH_IMAGE026
:x与y的拼接,其中x、y是比特串或字节串。
Figure 952651DEST_PATH_IMAGE027
:消息摘要长度为v比特的密码杂凑函数。
如附图1所示,是本实施例提供的SM2数字签名验证失败原因判定方法流程框图,该方法具体包括以下步骤:
S1:初步检测签名值
Figure 126143DEST_PATH_IMAGE074
正确性,其中,
Figure 74508DEST_PATH_IMAGE029
为签名值实数对。按SM2标准GB/T 32918.1的第4.2节数据类型转换的规定,将
Figure 42464DEST_PATH_IMAGE075
Figure 138596DEST_PATH_IMAGE076
的数据类型转化为整数,检验
Figure 771571DEST_PATH_IMAGE077
Figure 902338DEST_PATH_IMAGE078
是否都成立。若有一个不成立,则输出“签名值错误”。
S2:验证公钥有效性。按SM2标准GB/T 32918.1的第6.2节验证公钥
Figure 41196DEST_PATH_IMAGE079
的有效性。若未通过此有效性验证,则输出“公钥错误”。
S3:从签名值中解析出公钥,若解析结果为签名值
Figure 562307DEST_PATH_IMAGE074
错误,则进入步骤S6,否则进入步骤S4。从SM2签名值中解析出公钥
Figure 812023DEST_PATH_IMAGE080
,或得到“签名值
Figure 797296DEST_PATH_IMAGE074
错误”。
优选地,步骤S3具体包括以下子步骤:
S31:输入标准SM2签名值
Figure 294006DEST_PATH_IMAGE029
、被执行数字签名的消息
Figure 364730DEST_PATH_IMAGE035
、签名者的杂凑值
Figure 418136DEST_PATH_IMAGE036
、签名者的可辨别标识
Figure 195599DEST_PATH_IMAGE037
和椭圆曲线系统参数,椭圆曲线系统参数包括椭圆曲线方程参数a、b、基点
Figure 676259DEST_PATH_IMAGE038
和基点的阶n;
S32:将
Figure 155651DEST_PATH_IMAGE031
Figure 12749DEST_PATH_IMAGE032
的数据类型转化为整数,置
Figure 707035DEST_PATH_IMAGE039
,计算
Figure 296280DEST_PATH_IMAGE040
,将
Figure 341596DEST_PATH_IMAGE081
的数据类型转化为整数;
S33:通过中间临时变量,将压缩点转换为椭圆曲线上的一个点来解析签名者的公钥;
其中,x||y为x与y的拼接,其中x、y是比特串或字节串,
Figure 736805DEST_PATH_IMAGE027
为消息摘要长度为v比特的密码杂凑函数。
优选地,步骤S33具体包括:
A:计算
Figure 493057DEST_PATH_IMAGE042
Figure 581098DEST_PATH_IMAGE043
Figure 848132DEST_PATH_IMAGE044
B:置比特
Figure 719136DEST_PATH_IMAGE045
,将压缩点
Figure 388014DEST_PATH_IMAGE046
转换为SM2椭圆曲线上的一个点
Figure 646958DEST_PATH_IMAGE047
C:置ne=0,ne为错误次数计数器;
D:计算公钥
Figure 322658DEST_PATH_IMAGE048
;其中,
Figure 325249DEST_PATH_IMAGE049
Figure 848635DEST_PATH_IMAGE050
其中,[k]P:椭圆曲线上点P的k倍点。
还包括公钥正确性核验步骤:
将a、b、xG、yG
Figure 950583DEST_PATH_IMAGE051
Figure 192208DEST_PATH_IMAGE052
的数据类型转化为字节串;
计算
Figure 732911DEST_PATH_IMAGE053
检验
Figure 297754DEST_PATH_IMAGE054
是否成立,若成立,返回
Figure 898499DEST_PATH_IMAGE055
否则计算ne= ne+1,检查ne≤1是否成立,若成立,置R1=-R1,计算公钥
Figure 361841DEST_PATH_IMAGE056
,若ne≤1不成立,则返回签名值
Figure 643918DEST_PATH_IMAGE029
错误。
除上述方法外,步骤S33还可以通过如下子步骤实现:
a:计算
Figure 141896DEST_PATH_IMAGE042
Figure 834914DEST_PATH_IMAGE060
b:置比特
Figure 51132DEST_PATH_IMAGE061
,将压缩点
Figure 933637DEST_PATH_IMAGE062
转换为SM2椭圆曲线上的一个点
Figure 223804DEST_PATH_IMAGE063
c:置ne=0,ne为错误次数计数器;
d:计算公钥
Figure 900773DEST_PATH_IMAGE064
其中,[k]P:椭圆曲线上点P的k倍点。
还包括公钥正确性核验步骤:
将a、b、xG、yG
Figure 338708DEST_PATH_IMAGE065
Figure 214784DEST_PATH_IMAGE066
的数据类型转化为字节串;
计算
Figure 421775DEST_PATH_IMAGE067
检验
Figure 535224DEST_PATH_IMAGE068
是否成立,若成立,返回
Figure 460455DEST_PATH_IMAGE069
否则计算ne= ne+1,检查ne≤1是否成立,若成立,置Q=-Q,计算公钥
Figure 622446DEST_PATH_IMAGE064
,若ne≤1不成立,则返回签名值
Figure 949522DEST_PATH_IMAGE029
错误。
将压缩点
Figure 233873DEST_PATH_IMAGE082
转换为SM2椭圆曲线上的一个点
Figure 567771DEST_PATH_IMAGE083
,实际会得到两个点
Figure 595770DEST_PATH_IMAGE083
Figure 715036DEST_PATH_IMAGE084
,因此首先以
Figure 170288DEST_PATH_IMAGE083
作为正确的点,并进行核验,若公钥错误则选择另一个点作为正确的Q点。
在上述步骤S33的运算中,k倍点运算所需时间远大于其他运算所需时间。而上述两种步骤S33的实现方法,第二种方法执行的k倍点运算次数比第一种方法少,因此第二种方法所需运算时间更短,能够更加高效地实现对SM2签名公钥的解析。
除上述方法外,步骤S3也可为其它从签名值中解析出公钥的方法,例如步骤S3还可以采用中国发明专利CN111066285A以及中国发明专利CN112152814A所提供的的方法。但上述两种方法会改动SM2标准的签名算法。
S4:对比公钥正确性。对比解析出公钥
Figure 70111DEST_PATH_IMAGE085
和收到的公钥
Figure 823172DEST_PATH_IMAGE086
,若两者不相同,则输出“公钥错误”。
S5:执行数字签名验证。优选地,按SM2标准GB/T 32918.2的第7.2节执行数字签名验证。若验证算法的结果为验证通过,则输出“验证通过”,否则(即若验证算法的结果为验证不通过),则输出“签名值错误”。
本实施例提供的SM2数字签名验证失败原因判定方法,能够在SM2数字签名的验证者在计算得到验证失败的结果时,准确判定是签名值错误还是公钥错误导致验签失败,以便于验证者对错误进行改正。同时,当采用本实施例提供的优选公钥解析方法时,既不改动SM2标准的签名算法,也不改动SM2标准的验签算法,完全兼容现有的SM2签名算法和验签算法。
实施例2
如附图2所示,是本实施例提供的SM2数字签名验证失败原因判定装置结构框图,该系统具体包括:
主控模块:其功能包括:1)接收输入参数;2)输出处检测结果;3)整体数据调度和任务分配;4)公钥相等的对比,以实现前述实施例提供的SM2数字签名验证失败原因判定方法的步骤S3。主控模块和另外四个模块,即整数有效性检测模块、公钥有效性检测模块、SM2数字签名验证模块、从签名解析公钥模块都相链。
整数有效性检测模块:其功能是按SM2标准GB/T 32918.1的第4.2节数据类型转换的规定,将输入的数据类型转化为整数,检验该整数是否在
Figure 859261DEST_PATH_IMAGE087
范围内,以实现发明方法的步骤S1;本模块与主控模块链接。
公钥有效性检测模块:其功能是按SM2标准GB/T 32918.1的第6.2节验证送检公钥的有效性,以实现发明方法的步骤S2;本模块与主控模块链接。
从签名解析公钥模块:其功能是从SM2签名值中解析出签名者的公钥,以实现发明方法的步骤S4;本模块与主控模块链接。
SM2数字签名验证模块:其功能是按SM2标准GB/T 32918.2的第7.2节执行数字签名验证功能,以实现前述实施例提供的SM2数字签名验证失败原因判定方法的步骤S5;本模块与主控模块链接。
以上系统和各模块所达到的有益效果,可以参考前述SM2数字签名验证失败原因判定方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
实施例3
本优选实施例提供了一种计算机设备,该计算机设备可以实现本申请实施例所提供的SM2数字签名验证失败原因判定方法任一实施例中的步骤,因此,可以实现本申请实施例所提供的SM2数字签名验证失败原因判定方法的有益效果,详见前面的实施例,在此不再赘述。
实施例4
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的SM2数字签名验证失败原因判定方法中任一实施例的步骤。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一SM2数字签名验证失败原因判定方法实施例中的步骤,因此,可以实现本发明实施例所提供的任一SM2数字签名验证失败原因判定方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
前述本发明基本例及其各进一步选择例可以自由组合以形成多个实施例,均为本发明可采用并要求保护的实施例。本发明方案中,各选择例,与其他任何基本例和选择例都可以进行任意组合。本领域技术人员可知有众多组合。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.SM2数字签名验证失败原因判定方法,其特征在于,包括:
S1:初步检测签名值
Figure 758876DEST_PATH_IMAGE001
的正确性,若签名值
Figure 769557DEST_PATH_IMAGE002
正确,进入步骤S2;若签名值
Figure 737513DEST_PATH_IMAGE003
错误,进入步骤S6;步骤S1具体包括以下子步骤:将
Figure 771328DEST_PATH_IMAGE004
Figure 482932DEST_PATH_IMAGE005
数据类型转换为整数,检验
Figure 348120DEST_PATH_IMAGE006
Figure 424661DEST_PATH_IMAGE007
是否都成立,若有一个不成立,则签名值
Figure 8089DEST_PATH_IMAGE002
错误,其中,n为基点G的阶;
S2:按照SM2标准验证公钥的有效性,若公钥正确,进入步骤S3;若公钥错误,进入步骤S6;
S3:从签名值
Figure 257804DEST_PATH_IMAGE002
中解析出公钥,若解析失败,则签名值
Figure 243078DEST_PATH_IMAGE002
错误,则进入步骤S6,否则进入步骤S4;
步骤S3具体包括以下子步骤:
S31:输入标准SM2签名值
Figure 989055DEST_PATH_IMAGE002
、被执行数字签名的消息
Figure 59779DEST_PATH_IMAGE008
、签名者的杂凑值
Figure 113186DEST_PATH_IMAGE009
、签名者的可辨别标识
Figure 890649DEST_PATH_IMAGE010
和椭圆曲线系统参数,椭圆曲线系统参数包括椭圆曲线方程参数a、b、基点
Figure 371309DEST_PATH_IMAGE011
和基点的阶n;
S32:将
Figure 663750DEST_PATH_IMAGE004
Figure 458530DEST_PATH_IMAGE005
的数据类型转化为整数,置
Figure 152817DEST_PATH_IMAGE012
,计算
Figure 804378DEST_PATH_IMAGE013
,将
Figure 849695DEST_PATH_IMAGE014
的数据类型转化为整数;
S33:通过中间临时变量,将压缩点转换为椭圆曲线上的一个点来解析签名者的公钥;
当采用一个中间临时变量时,步骤S33具体包括:
a:计算
Figure 182587DEST_PATH_IMAGE015
Figure 731380DEST_PATH_IMAGE016
b:置比特
Figure 819422DEST_PATH_IMAGE017
,将压缩点
Figure 525603DEST_PATH_IMAGE018
转换为SM2椭圆曲线上的一个点
Figure 724503DEST_PATH_IMAGE019
c:置ne=0,ne为错误次数计数器;
d:计算公钥
Figure 127803DEST_PATH_IMAGE020
其中,[k]P:椭圆曲线上点P的k倍点;
其中,x||y为x与y的拼接,其中x、y是比特串或字节串,
Figure 386746DEST_PATH_IMAGE021
为消息摘要长度为v比特的密码杂凑函数;
S4:对比解析出的公钥与收到的公钥是否相同,相同则判定为公钥正确,不同则判定为公钥错误;若公钥正确,则进入步骤S5;若公钥错误,则进入步骤S6;
S5:执行数字签名验证,若数字签名验证通过,则判定为验证通过;否则签名值
Figure 78758DEST_PATH_IMAGE003
错误,进入步骤S6;
S6:若签名值
Figure 815770DEST_PATH_IMAGE002
错误,则错误原因判定为签名值异常;若公钥错误,则错误原因判定为公钥异常;
其中,
Figure 339155DEST_PATH_IMAGE002
为签名值实数对。
2.如权利要求1所述的SM2数字签名验证失败原因判定方法,其特征在于,当采用两个中间临时变量时,步骤S33具体包括:
A:计算
Figure 706683DEST_PATH_IMAGE015
Figure 682729DEST_PATH_IMAGE022
Figure 223432DEST_PATH_IMAGE023
B:置比特
Figure 804586DEST_PATH_IMAGE024
,将压缩点
Figure 139752DEST_PATH_IMAGE025
转换为SM2椭圆曲线上的一个点
Figure 868674DEST_PATH_IMAGE026
C:置ne=0,ne为错误次数计数器;
D:计算公钥
Figure 947488DEST_PATH_IMAGE027
;其中,
Figure 881684DEST_PATH_IMAGE028
Figure 387751DEST_PATH_IMAGE029
其中,[k]P:椭圆曲线上点P的k倍点。
3.如权利要求2所述的SM2数字签名验证失败原因判定方法,其特征在于,所述方法还包括公钥正确性核验步骤:
将a、b、xG、yG
Figure 603969DEST_PATH_IMAGE030
Figure 424158DEST_PATH_IMAGE031
的数据类型转化为字节串;
计算
Figure 776642DEST_PATH_IMAGE032
检验
Figure 719190DEST_PATH_IMAGE033
是否成立,若成立,返回
Figure 94807DEST_PATH_IMAGE034
否则计算ne= ne+1,检查ne≤1是否成立,若成立,置R1=-R1,计算公钥
Figure 515424DEST_PATH_IMAGE035
,若ne≤1不成立,则返回签名值
Figure 987994DEST_PATH_IMAGE002
错误,其中,
Figure 835864DEST_PATH_IMAGE036
是用户A的可辨别标识
Figure 698778DEST_PATH_IMAGE037
的比特长度
Figure 923086DEST_PATH_IMAGE038
转换而成的两个字节,
Figure 250162DEST_PATH_IMAGE039
是对应接收方的两个字节。
4.如权利要求1所述的SM2数字签名验证失败原因判定方法,其特征在于,所述方法还包括公钥正确性核验步骤:
将a、b、xG、yG
Figure 973661DEST_PATH_IMAGE040
Figure 386188DEST_PATH_IMAGE041
的数据类型转化为字节串;
计算
Figure 148607DEST_PATH_IMAGE042
检验
Figure 330190DEST_PATH_IMAGE043
是否成立,若成立,返回
Figure 723125DEST_PATH_IMAGE044
否则计算ne= ne+1,检查ne≤1是否成立,若成立,置Q=-Q,计算公钥
Figure 622948DEST_PATH_IMAGE020
,若ne≤1不成立,则返回签名值
Figure 189059DEST_PATH_IMAGE002
错误,其中,
Figure 162831DEST_PATH_IMAGE036
是发送方用户A的可辨别标识
Figure 788984DEST_PATH_IMAGE037
的比特长度
Figure 176103DEST_PATH_IMAGE045
转换而成的两个字节,
Figure 280326DEST_PATH_IMAGE039
是对应接收方的两个字节。
5.SM2数字签名验证失败原因判定装置,用以实现权利要求1所述的SM2数字签名验证失败原因判定方法,其特征在于,包括主控模块、整数有效性检测模块、公钥有效性检测模块、公钥解析模块和数字签名验证模块;主控模块和上述另外四个模块都相链,其中,
主控模块,用于接收输入的参数、输出检测结果、整体数据调度和任务分配以及公钥的对比,以实现权利要求1中所述SM2数字签名验证失败原因判断方法的步骤S3;
整数有效性检测模块,用于将输入的数据类型转换为整数并核验转换的整数有效性,以实现权利要求1中所述SM2数字签名验证失败原因判断方法的步骤S1;
公钥有效性检测模块,用于验证公钥的有效性,以实现权利要求1中所述SM2数字签名验证失败原因判断方法的步骤S2;
公钥解析模块,用于从签名值中解析出公钥,以实现权利要求1中所述SM2数字签名验证失败原因判断方法的步骤S4;
数字签名验证模块,用于执行数字签名,验证签名值的正确性,以实现权利要求1中所述SM2数字签名验证失败原因判断方法的步骤S5。
6.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现权利要求1至4任一项所述的SM2数字签名验证失败原因判定方法。
7.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现权利要求1至4任一项所述的SM2数字签名验证失败原因判定方法。
CN202110611492.8A 2021-06-02 2021-06-02 Sm2数字签名验证失败原因判定方法、装置、设备和介质 Active CN113055189B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110611492.8A CN113055189B (zh) 2021-06-02 2021-06-02 Sm2数字签名验证失败原因判定方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110611492.8A CN113055189B (zh) 2021-06-02 2021-06-02 Sm2数字签名验证失败原因判定方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN113055189A CN113055189A (zh) 2021-06-29
CN113055189B true CN113055189B (zh) 2021-08-10

Family

ID=76518657

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110611492.8A Active CN113055189B (zh) 2021-06-02 2021-06-02 Sm2数字签名验证失败原因判定方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN113055189B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115086024A (zh) * 2022-06-14 2022-09-20 深圳云创数安科技有限公司 基于数据签名的数据传输方法、装置、设备及介质
CN115842683B (zh) * 2023-02-20 2023-07-07 中电装备山东电子有限公司 一种用于用电信息采集系统通信的签名生成方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102761415A (zh) * 2011-04-27 2012-10-31 航天信息股份有限公司 p元域SM2椭圆曲线的数字签名生成、验证及混合系统
CN103049710A (zh) * 2012-12-13 2013-04-17 国家广播电影电视总局广播科学研究院 用于sm2数字签名验证算法的fpga芯片
CN103546288A (zh) * 2013-09-25 2014-01-29 中国科学院数据与通信保护研究教育中心 Sm2数字签名生成算法的实现方法及装置
CN106921638A (zh) * 2015-12-28 2017-07-04 航天信息股份有限公司 一种基于非对称加密的安全装置
CN108667623A (zh) * 2018-05-28 2018-10-16 广东工业大学 一种sm2椭圆曲线签名验证算法
CN111835518A (zh) * 2020-07-10 2020-10-27 中金金融认证中心有限公司 椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统
CN112367175A (zh) * 2020-11-12 2021-02-12 西安电子科技大学 基于sm2数字签名的隐式证书密钥生成方法
CN112887081A (zh) * 2020-09-04 2021-06-01 深圳奥联信息安全技术有限公司 基于sm2的签名验签方法、装置及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107124278B (zh) * 2017-03-30 2021-03-30 腾讯科技(深圳)有限公司 业务处理方法、装置以及数据共享系统
CN107196763B (zh) * 2017-07-06 2020-02-18 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与系统
CN107453865B (zh) * 2017-07-18 2020-09-11 众安信息技术服务有限公司 一种保护数据发送源隐私的多方数据共享方法及系统
EP3673616A4 (en) * 2019-05-31 2020-10-28 Advanced New Technologies Co., Ltd. PUBLIC KEY RESTORATION PROCESS BASED ON AN SM2 SIGNATURE
CN111245594B (zh) * 2019-12-31 2023-01-10 航天信息股份有限公司 一种基于同态运算的协同签名方法及系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102761415A (zh) * 2011-04-27 2012-10-31 航天信息股份有限公司 p元域SM2椭圆曲线的数字签名生成、验证及混合系统
CN103049710A (zh) * 2012-12-13 2013-04-17 国家广播电影电视总局广播科学研究院 用于sm2数字签名验证算法的fpga芯片
CN103546288A (zh) * 2013-09-25 2014-01-29 中国科学院数据与通信保护研究教育中心 Sm2数字签名生成算法的实现方法及装置
CN106921638A (zh) * 2015-12-28 2017-07-04 航天信息股份有限公司 一种基于非对称加密的安全装置
CN108667623A (zh) * 2018-05-28 2018-10-16 广东工业大学 一种sm2椭圆曲线签名验证算法
CN111835518A (zh) * 2020-07-10 2020-10-27 中金金融认证中心有限公司 椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统
CN112887081A (zh) * 2020-09-04 2021-06-01 深圳奥联信息安全技术有限公司 基于sm2的签名验签方法、装置及系统
CN112367175A (zh) * 2020-11-12 2021-02-12 西安电子科技大学 基于sm2数字签名的隐式证书密钥生成方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
"RSA算法和SM2算法的研究";张永建;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160215;全文 *
"Secret Sharing Based SM2 Digital Signature Generation using Homomorphic Encryption";Yihong Long;Minyang Cheng;《2019 15th International Conference on Computational Intelligence and Security (CIS)》;20200305;全文 *
"The Software/Hardware Co-Design and Implementation of SM2/3/4 Encryption/Decryption and Digital Signature System";Xin Zheng;Chongyao Xu;《IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems》;20190904;全文 *
"区块链中的数学-SM2的签名和验证过程";blocksight;《https://www.learnblockchain.cn/article/1507》;20200820;全文 *
"详解国密SM2的数字签名";云水木石;《https://cloud.tencent.com/developer/article/1610725》;20200408;全文 *

Also Published As

Publication number Publication date
CN113055189A (zh) 2021-06-29

Similar Documents

Publication Publication Date Title
WO2021238527A1 (zh) 数字签名生成方法、装置、计算机设备和存储介质
Li et al. Privacy preserving cloud data auditing with efficient key update
CN111801910A (zh) 基于证明验证的用于认证链外数据的系统和方法
US20140372765A1 (en) Hashing Prefix-Free Values in a Signature Scheme
US9219602B2 (en) Method and system for securely computing a base point in direct anonymous attestation
CN113055189B (zh) Sm2数字签名验证失败原因判定方法、装置、设备和介质
US20120233457A1 (en) Issuing implicit certificates
EP2658166A2 (en) Multiple hashing in a cryptographic scheme
MXPA04010155A (es) Uso de isogenias para el diseno de criptosistemas.
EP2582088A2 (en) Verifying Implicit Certificates and Digital Signatures
US20090276630A1 (en) Group Signature System And Information Processing Method
CN113411188B (zh) 电子合同签署方法、装置、存储介质及计算机设备
CN113037479B (zh) 数据验证方法和装置
US20160149708A1 (en) Electronic signature system
CN113158176B (zh) 基于sm2签名的公钥解析方法、装置、设备及存储介质
CN112887081A (zh) 基于sm2的签名验签方法、装置及系统
EP1848144B1 (en) Data processing device and control method thereof
CN112446052A (zh) 一种适用于涉密信息系统的聚合签名方法及系统
CN111769955B (zh) 电子签章生成方法、装置、验证方法、装置及相关组件
CN110505061B (zh) 一种数字签名算法及系统
US7760873B2 (en) Method and a system for a quick verification rabin signature scheme
US9577828B2 (en) Batch verification method and apparatus thereof
CN112906059B (zh) 代理签名和验证方法、装置、系统及存储介质
CN115550060A (zh) 基于区块链的可信证书验证方法、装置、设备和介质
CN115834085A (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