SM2数字签名验证失败原因判定方法、装置、设备和介质制造方法及图纸

技术编号:29103117 阅读:129 留言:0更新日期:2021-06-30 10:16
本发明专利技术公开了一种SM2数字签名验证失败原因判定方法、装置、设备和介质。本发明专利技术解决了SM2数字签名的验证者在计算得到验证失败的结果时,无法定为是签名值错误还是公钥错误导致验签失败的问题,且既不改动SM2标准的签名算法,也不改动SM2标准的验签算法,完全兼容现有的SM2签名算法和验签算法。的SM2签名算法和验签算法。的SM2签名算法和验签算法。

【技术实现步骤摘要】
SM2数字签名验证失败原因判定方法、装置、设备和介质


[0001]本专利技术属于信息安全
,尤其涉及SM2数字签名验证失败原因判定方法、装置、设备和介质。

技术介绍

[0002]密码学家Neal Koblitz和Victor Miller在1985年分别提出了椭圆曲线密码学(Elliptic curve Cryptography,ECC)的思想,使其成为构造公钥密码体制的一个有力工具。我国国家标准GB/T 32918《信息安全技术 SM2椭圆曲线公钥密码算法》规定的SM2算法就是一种特定的ECC密码算法,主要包括数字签名算法、密钥交换协议和公钥加密算法三个部分。GB/T 32918.2规定了SM2椭圆曲线公钥密码算法的数字签名算法,包括数字签名生成算法和验证算法及相应的流程,可以满足多种密码应用中的身份鉴别和数据完整性、信息来源真实性的安全需求。数字签名算法由一个签名者对数据产生数字签名,并由一个验证者验证签名的可靠性。每个签名者有一个公钥和一个私钥,其中私钥用于产生签名,验证者用签名者的公钥验证签名。在签名的生成过程之前和签名的验证过程之前,都分别要用密码杂凑函数对签名用户的可辨别标识ID、部分椭圆曲线系统参数和签名用户的公钥杂凑值以及待签名消息进行压缩得到该用户的杂凑值。在云计算、大数据、物联网、移动互联网、工业控制系统、区块链等众多领域都在使用SM2进行数据签名来保证数据真实性、完整性,为了验证签名的正确性,需使用公钥执行SM2签名验证功能。
[0003]在实际使用中,SM2数字签名验证可能失败,在验签失败时,在签名验证的众多输入参数——原始消息、签名者杂凑值、签名值、签名者公钥、系统参数中,使用者希望分析确定是哪个参数出现错误。系统参数作为标准规定的数据,难以出现错误,纵使异常也能及时发现原始消息;签名者杂凑值作为固定、公开、可验证的信息,很容易判定其是否出现错误;原始消息是签名值一对,因为原始消息依赖于签名值来确定其是否被篡改。因此,如何判断数字签名验证失败是签名值导致的还是公钥导致的,这是众多的SM2签名验签算法使用者遇到的一个急需解决的问题。
[0004]在实际使用中,SM2数字签名的验证者在计算得到验证失败的结果时,只能分析系统参数、签名者杂凑值是否异常,但无法分析该数字签名验证失败是签名值导致的还是公钥导致的,比如消息被篡改导致签名值不匹配、签名值发送错误等亦或是误传为另一个公钥等。

技术实现思路

[0005]本专利技术的目的在于,为克服现有技术缺陷,提供了一种SM2数字签名验证失败原因判定方法、装置、设备和介质,。
[0006]本专利技术目的通过下述技术方案来实现:本专利技术所采用的记号、缩写与符号如下:A和B:SM2公钥密码系统的两个用户,A为签名者,B为验证签名者。
[0007]q :有限域中元素的数目。
[0008]:包含q个元素的有限域。
[0009]a,b:中的元素,它们定义上的一条椭圆曲线E。
[0010]:上椭圆曲线E的所有有理点组成的集合。
[0011]O:椭圆曲线E上的无穷远点(或零点),是椭圆曲线加法群的单位元。
[0012]G:椭圆曲线的一个基点,其阶n为素数。
[0013]:上的点的数目,称为椭圆曲线的阶。
[0014]n :基点G的阶。
[0015][k]P:椭圆曲线上点P的k倍点。
[0016]:分别为用户A和用户B的私钥。
[0017]:分别为用户A和用户B的公钥。
[0018]:分别是用户A的长度为比特的可辨别标识和用户B的长度为比特的可辨别标识比特的可辨别标识,:分别是用户A的可辨别标识的比特长度转换而成的两个字节,和用户B的可辨别标识的比特长度转换而成的两个字节。
[0019],:分别为关于用户A/用户B的杂凑值。以用户A的杂凑值为例,首先按GB/T 32918.1的第4.2.5节和第4.2.4节给出的算法将椭圆曲线方程参数a、b、G的坐标、和的坐标、的数据类型转换为比特串,再计算。
[0020]modn :模n运算。例如,23mod7=2。
[0021]:x与y的拼接,其中x、y是比特串或字节串。
[0022]:消息摘要长度为v比特的密码杂凑函数。
[0023]本专利技术提供的SM2数字签名验证失败原因判定方法,包括:S1:初步检测签名值的正确性,若签名值正确,进入步骤S2;若签名值错误,进入步骤S6;S2:验证公钥的有效性,若公钥正确,进入步骤S3;若公钥错误,进入步骤S6;
S3:从签名值中解析出公钥,若解析结果为签名值错误,则进入步骤S6,否则进入步骤S4;S4:对比解析出的公钥与收到的公钥是否相同,相同则判定为公钥正确,不同则判定为公钥错误;若公钥正确,则进入步骤S5;若公钥错误,则进入步骤S6;S5:执行数字签名验证,若数字签名验证通过,则判定为验证通过;否则签名值错误,进入步骤S6;S6:若签名值错误,则错误原因判定为签名值异常;若公钥错误,则错误原因判定为公钥异常;其中,为签名值实数对。
[0024]进一步的,步骤S1具体包括以下子步骤:将、数据类型转换为整数,检验和是否都成立,若有一个不成立,则签名值错误,其中,n为基点G的阶。
[0025]进一步的,步骤S3具体包括以下子步骤:S31:输入标准SM2签名值、被执行数字签名的消息、签名者的杂凑值、签名者的可辨别标识和椭圆曲线系统参数,椭圆曲线系统参数包括椭圆曲线方程参数a、b、基点和基点的阶n;S32:将、的数据类型转化为整数,置,计算,将的数据类型转化为整数;S33:通过中间临时变量,将压缩点转换为椭圆曲线上的一个点来解析签名者的公钥;其中,x||y为x与y的拼接,其中x、y是比特串或字节串,为消息摘要长度为v比特的密码杂凑函数。
[0026]进一步的,当采用两个中间临时变量时,步骤S33具体包括:A:计算,,;B:置比特,将压缩点转换为SM2椭圆曲线上的一个点;
C:置n
e
=0,n
e
为错误次数计数器;D:计算公钥;其中,,;其中,[k]P:椭圆曲线上点P的k倍点。
[0027]进一步的,所述方法还包括公钥正确性核验步骤:将a、b、x
G
、y
G
、、的数据类型转化为字节串;计算;检验是否成立,若成立,返回;否则计算n
e
= n
e
+1,检查n
e
≤1是否成立,若成立,置R1=

R1,计算公钥,若n
e
≤1不成立,则返回签名值错误,其中,是发送方用户A的可辨别标识的比特长度转换而成的两个字节,是对应接收方的两个字节。
[0028]进一步的,当采用一个中间临时变量时,步骤S33具体包括:a:计算,;b:置比特,将压缩点转换为SM2椭圆曲线上的一个点;c:置n
e
=0,n
e
为错误次数计数器;d:计算公钥;其中,[k本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.SM2数字签名验证失败原因判定方法,其特征在于,包括:S1:初步检测签名值的正确性,若签名值正确,进入步骤S2;若签名值错误,进入步骤S6;S2:验证公钥的有效性,若公钥正确,进入步骤S3;若公钥错误,进入步骤S6;S3:从签名值中解析出公钥,若解析结果为签名值错误,则进入步骤S6,否则进入步骤S4;S4:对比解析出的公钥与收到的公钥是否相同,相同则判定为公钥正确,不同则判定为公钥错误;若公钥正确,则进入步骤S5;若公钥错误,则进入步骤S6;S5:执行数字签名验证,若数字签名验证通过,则判定为验证通过;否则签名值错误,进入步骤S6;S6:若签名值错误,则错误原因判定为签名值异常;若公钥错误,则错误原因判定为公钥异常;其中,为签名值实数对。2.如权利要求1所述的SM2数字签名验证失败原因判定方法,其特征在于,步骤S1具体包括以下子步骤:将、数据类型转换为整数,检验和是否都成立,若有一个不成立,则签名值错误,其中,n为基点G的阶。3.如权利要求1所述的SM2数字签名验证失败原因判定方法,其特征在于,步骤S3具体包括以下子步骤:S31:输入标准SM2签名值、被执行数字签名的消息、签名者的杂凑值、签名者的可辨别标识和椭圆曲线系统参数,椭圆曲线系统参数包括椭圆曲线方程参数a、b、基点和基点的阶n;S32:将、的数据类型转化为整数,置,计算,将的数据类型转化为整数;S33:通过中间临时变量,将压缩点转换为椭圆曲线上的一个点来解析签名者的公钥;其中,x||y为x与y的拼接,其中x、y是比特串或字节串,为消息摘要长度为v比特的密码杂凑函数。4.如权利要求3所述的SM2数字签名验证失败原因判定方法,其特征在于,当采用两个
中间临时变量时,步骤S33具体包括:A:计算,,;B:置比特,将压缩点转换为SM2椭圆曲线上的一个点;C:置n
e
=0,n
e
为错误次数计数器;D:计算公钥;其中,,;其中,[k]P:椭圆曲线上点P的k倍点。5.如权利要求4所述的SM2数字签名验证失败原因判定方法,其特征在于,所述方法还包括公钥正确性核验步骤:将a、b、x
G
、y
G
、、的数据类型转化为字节串;计算;检验是否成立,若成立,返回;否则计算n
e
= n
e
...

【专利技术属性】
技术研发人员:罗影张文科滕斌敖麒郭晓玲
申请(专利权)人:工业信息安全四川创新中心有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1