一种基于SM9数字签名的批量验证方法和系统与流程

文档序号:23709604发布日期:2021-01-23 16:30阅读:109来源:国知局
一种基于SM9数字签名的批量验证方法和系统与流程
一种基于sm9数字签名的批量验证方法和系统
技术领域
[0001]
本申请涉及数字签名技术领域,尤其涉及一种基于sm9数字签名的批量验证方法和系统。


背景技术:

[0002]
数字签名技术是一种伴随着信息网络技术的发展而出现的安全保障技术,通过网络技术手段代替传统的纸面签字或者盖章的功能,以实现防伪造、鉴别身份、验证信息是否被篡改和防抵赖的作用。数字签名一般为:发送者采用自己的私钥对消息进行签名而生成签名信息,并将签名信息随附消息发送给接收方;接收方在接收到消息和签名信息后,采用发送方的公钥验证签名信息是否正确,继而判断消息是否被篡改或者发送者身份是否为伪造。如何提高数字签名技术的安全性是当前研究的一大热点。
[0003]
现有技术中提供了一种sm9标识密码算法,它是一种基于双线性对的标识密码算法,可以把用户的身份标识作为公钥并借以生成用户的私钥。sm9标识密码算法的应用与管理不需要数字证书、证书库或密钥库,主要用于数字签名、安全加密及密钥交换等。
[0004]
然而本申请的发明人发现,传统sm9数字签名的验证效率与签名数量呈正相关关系,数字签名越多时需要花费的验证时间就越多,然而目前并没有一种可以批量验证sm9数字签名的方法,即现有技术存在验证数字签名时效率低的缺点。


技术实现要素:

[0005]
本申请提供了一种基于sm9数字签名的批量验证方法和系统,以解决现有技术验证数字签名时效率低的问题。
[0006]
为了解决上述技术问题,本申请实施例公开了如下技术方案:
[0007]
第一方面,本申请提供了一种基于sm9数字签名的批量验证方法,该方法包括:
[0008]
获取待签名消息以及所述待签名消息对应的签名者的身份标识;
[0009]
基于可信密钥生成中心获取系统公钥和签名者私钥;
[0010]
基于所述系统公钥、所述身份标识和所述签名者私钥生成待签名消息的数字签名,并将所述数字签名以消息签名对的形式表示;
[0011]
验证者对所述消息签名对进行批量验证。
[0012]
优选的,所述基于所述系统公钥、所述身份标识和所述签名者私钥生成待签名消息的数字签名,包括:
[0013]
s301、计算g=e(p
1
,p
pub
);
[0014]
其中:
[0015]
g表示乘法循环群g
t
中的元素;
[0016]
e表示从g
1
×
g
2
到g
t
的双线性映射,g
1
为阶为素数n的加法循环群,g
2
为阶为素数n的加法循环群,g
t
为阶为素数n的乘法循环群;
[0017]
p
1
表示群g
1
的生成元;
[0018]
p
pub
表示可信密钥生成中心初始化的系统公钥;
[0019]
s302、随机选取一个数r
i
∈[1,n-1],[1,n-1]为不小于1且不大于n-1的整数的集合;
[0020]
计算并将w
i
转换为字符串;
[0021]
其中:
[0022]
w
i
表示乘法循环群g
t
中的元素g的r
i
次幂;
[0023]
s303、计算l
i
=(r
i-h
2i
)mod n
[0024]
其中:
[0025]
l
i
表示整数集合[1,n-1]中的元素;
[0026]
h
2i
为中间变量,且
[0027]
h
2i
=h
2
(m
i
||id
i
||w
i
,n)
[0028]
其中:
[0029]
h
2
为由密码杂凑函数派生的密码函数;
[0030]
m
i
表示签名者u
i
分属的待签名消息,id
i
表示签名者u
i
的身份标识;
[0031]
若l
i
=0,则跳转到s302;
[0032]
s304、计算s
i
=[l
i
]d
i
并将s
i
转换为字符串;
[0033]
其中:
[0034]
s
i
表示加法循环群g
1
中的元素;
[0035]
d
i
表示签名者u
i
的签名者私钥;
[0036]
s305、得到签名者u
i
的数字签名σ
i
=(w
i
,s
i
)。
[0037]
优选的,所述签名消息以消息签名对的形式表示,所述消息签名对为:
[0038]

i
,m
i
,id
i
}
[0039]
其中:
[0040]
σ
i
为签名者u
i
的数字签名;
[0041]
m
i
表示签名者u
i
分属的待签名消息;
[0042]
id
i
表示签名者u
i
的身份标识。
[0043]
优选的,所述验证者对所述消息签名对进行批量验证,包括:
[0044]
验证者基于预设的验证方法对所述消息签名对进行批量验证,所述预设的验证方法包括:
[0045]
s501、校验w
i
是否为乘法循环群g
t
中元素;若不是,则判定所述消息签名对无效;
[0046]
s502、校验s
i
是否为加法循环群g
1
中元素;若不是,则判定所述消息签名对无效;
[0047]
s503、从整数集合[1,n-1]中随机选取n个数(v
1
,v
2
,...,v
n
);
[0048]
s504、判断预设的验证条件是否成立;若成立,则判定所述消息签名对有效,若不成立,则判定所述消息签名对无效。
[0049]
优选的,所述预设的验证条件为:
[0050][0051]
其中:
[0052]
e表示从g
1
×
g
2
到g
t
的双线性映射;
[0053]
p
2
表示群g
2
的生成元;
[0054]
p
pub
表示可信密钥生成中心初始化的系统公钥;
[0055]
h
2i
为中间变量;
[0056][0057]
其中:
[0058]
s表示加法循环群g
1
中的元素;
[0059]
h
1i
表示中间变量,且
[0060]
h
1i
=h
1
(id
i
||hid,n)
[0061]
其中:
[0062]
h
1
为由密码杂凑函数派生的密码函数;
[0063]
hid表示可信密钥生成中心选择并公开的私钥生成函数识别符;
[0064][0065]
其中:
[0066]
表示加法循环群g
1
中的元素。
[0067]
优选的,还包括:验证者对所述消息签名对进行验证,验证方法包括:
[0068]
s501、校验w
i
是否为乘法循环群g
t
中元素;若不是,则判定所述消息签名对无效;
[0069]
s502、校验s
i
是否为加法循环群g
1
中元素;若不是,则判定所述消息签名对无效;
[0070]
s503、判断预设的验证条件是否成立;若成立,则判定所述消息签名对有效,若不成立,则判定所述消息签名对无效;所述预设的验证条件为:
[0071][0072]
其中:
[0073]
e表示从g
1
×
g
2
到g
t
的双线性映射;
[0074]
p
2
表示群g
2
的生成元;
[0075]
p
pub
表示可信密钥生成中心初始化的系统公钥;
[0076]
h
2i
为中间变量;
[0077]
h
1i
=h
1
(id
i
||hid,n)
[0078]
其中:
[0079]
h
1
为由密码杂凑函数派生的密码函数;
[0080]
id
i
表示签名者u
i
的身份标识;
[0081]
hid表示可信密钥生成中心选择并公开的私钥生成函数识别符。
[0082]
第二方面,本申请提供了一种基于sm9数字签名的批量验证系统,所述系统包括:
[0083]
第一获取模块,被配置为获取待签名消息以及所述待签名消息对应的签名者的身份标识;
[0084]
第二获取模块,被配置为基于可信密钥生成中心获取系统公钥和签名者私钥;
[0085]
数字签名获取模块,被配置为基于所述系统公钥、所述身份标识和所述签名者私钥生成待签名消息的数字签名,并将所述数字签名以消息签名对的形式表示;
[0086]
签名验证模块,被配置为对所述消息签名对进行批量验证。
[0087]
优选的,所述数字签名获取模块进一步被配置为:
[0088]
s301、计算g=e(p
1
,p
pub
);
[0089]
其中:
[0090]
g表示乘法循环群g
t
中的元素;
[0091]
e表示从g
1
×
g
2
到g
t
的双线性映射,g
1
为阶为素数n的加法循环群,g
2
为阶为素数n的加法循环群,g
t
为阶为素数n的乘法循环群;
[0092]
p
1
表示群g
1
的生成元;
[0093]
p
pub
表示可信密钥生成中心初始化的系统公钥;
[0094]
s302、随机选取一个数r
i
∈[1,n-1],[1,n-1]为不小于1且不大于n-1的整数的集合;
[0095]
计算并将w
i
转换为字符串;
[0096]
其中:
[0097]
w
i
表示乘法循环群g
t
中的元素g的r
i
次幂;
[0098]
s303、计算l
i
=(r
i-h
2i
)mod n
[0099]
其中:
[0100]
l
i
表示整数集合[1,n-1]中的元素;
[0101]
h
2i
为中间变量,且
[0102]
h
2i
=h
2
(m
i
||id
i
||w
i
,n)
[0103]
其中:
[0104]
h
2
为由密码杂凑函数派生的密码函数;
[0105]
m
i
表示签名者u
i
分属的待签名消息,id
i
表示签名者u
i
的身份标识;
[0106]
若l
i
=0,则跳转到s302;
[0107]
s304、计算s
i
=[l
i
]d
i
并将s
i
转换为字符串;
[0108]
其中:
[0109]
s
i
表示加法循环群g
1
中的元素;
[0110]
d
i
表示签名者u
i
的签名者私钥;
[0111]
s305、得到签名者u
i
的数字签名σ
i
=(w
i
,s
i
)。
[0112]
优选的,所述签名验证模块进一步被配置为:
[0113]
s501、校验w
i
是否为乘法循环群g
t
中元素;若不是,则判定所述消息签名对无效;
[0114]
s502、校验s
i
是否为加法循环群g
1
中元素;若不是,则判定所述消息签名对无效;
[0115]
s503、从整数集合[1,n-1]中随机选取n个数(v
1
,v
2
,...,v
n
);
[0116]
s504、判断预设的验证条件是否成立;若成立,则判定所述消息签名对有效,若不成立,则判定所述消息签名对无效。
[0117]
优选的,所述预设的验证条件为:
[0118][0119]
其中:
[0120]
e表示从g
1
×
g
2
到g
t
的双线性映射;
[0121]
p
2
表示群g
2
的生成元;
[0122]
p
pub
表示可信密钥生成中心初始化的系统公钥;
[0123]
h
2i
为中间变量;
[0124][0125]
其中:
[0126]
s表示加法循环群g
1
中的元素;
[0127]
h
1i
表示中间变量,且
[0128]
h
1i
=h
1
(id
i
||hid,n)
[0129]
其中:
[0130]
h
1
为由密码杂凑函数派生的密码函数;
[0131]
hid表示可信密钥生成中心选择并公开的私钥生成函数识别符;
[0132][0133]
其中:
[0134]
表示加法循环群g
1
中的元素。
[0135]
与现有技术相比,本申请的有益效果为:
[0136]
本申请通过获取待签名消息以及待签名消息对应的签名者的身份标识;基于可信密钥生成中心获取系统公钥和签名者私钥;基于系统公钥、身份标识和签名者私钥生成待签名消息的数字签名,并将数字签名以消息签名对的形式表示;验证者对消息签名对进行批量验证。其中,验证者根据预先设定好的验证条件对签名消息进行批量验证,从而可以一次性完成多个sm9数字签名的有效性验证,极大地提高了sm9数字签名验证效率。数字签名的具体生成过程并不改变sm9数字签名算法的签名逻辑,同时数字签名集批量验证与独立验证的等价性直接依赖于自主可控的sm9数字签名算法的安全性。
附图说明
[0137]
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0138]
图1为本申请实施例提供的基于sm9数字签名的批量验证方法的整体流程图。
具体实施方式
[0139]
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0140]
参见图1,为本申请实施例提供的基于sm9数字签名的批量验证方法的整体流程图。如图1所示,该方法包括以下步骤:
[0141]
s1、获取待签名消息以及所述待签名消息对应的签名者的身份标识;
[0142]
s2、基于可信密钥生成中心获取系统公钥和签名者私钥;
[0143]
s3、基于所述系统公钥、所述身份标识和所述签名者私钥生成待签名消息的数字签名,并将所述数字签名以消息签名对的形式表示;
[0144]
s4、验证者对所述消息签名对进行批量验证。
[0145]
本申请实施例中涉及三类实体:密钥生成中心kgc(key generation center)、签名者{u
1
,u
2


,u
n
}和验证者v。
[0146]
下面对各个步骤进行详细描述:
[0147]
在步骤s1中,获取待签名消息以及所述待签名消息对应的签名者的身份标识。
[0148]
在本申请实施例中,待签名消息设定为{m
1
,m
2


,m
n
},签名者的身份标识设定为{id
1
,id
2


,id
n
}。具体的,签名者u
i
的身份标识为id
i
,并且对待签名消息m
i
进行数字签名。
[0149]
在步骤s2,基于可信密钥生成中心获取系统公钥和签名者私钥。
[0150]
在步骤s3中,基于所述系统公钥、所述身份标识和所述签名者私钥生成待签名消息的数字签名,并将所述数字签名以消息签名对的形式表示。
[0151]
在本发明实施例中,签名者获取待签名消息的数字签名。
[0152]
具体的,数字签名的生成方法包括以下步骤:
[0153]
s301、计算g=e(p
1
,p
pub
);
[0154]
其中:
[0155]
g表示乘法循环群g
t
中的元素;
[0156]
e表示从g
1
×
g
2
到g
t
的双线性映射,g
1
为阶为素数n的加法循环群,g
2
为阶为素数n的加法循环群,g
t
为阶为素数n的乘法循环群;
[0157]
p
1
表示群g
1
的生成元;
[0158]
p
pub
表示可信密钥生成中心初始化的系统公钥;
[0159]
s302、随机选取一个数r
i
∈[1,n-1],[1,n-1]为不小于1且不大于n-1的整数的集合;
[0160]
计算并将w
i
转换为字符串;
[0161]
其中:
[0162]
w
i
表示乘法循环群g
t
中的元素g的r
i
次幂;
[0163]
s303、计算l
i
=(r
i-h
2i
)mod n
[0164]
其中:
[0165]
l
i
表示整数集合[1,n-1]中的元素;
[0166]
h
2i
为中间变量,且
[0167]
h
2i
=h
2
(m
i
||id
i
||w
i
,n)
[0168]
其中:
[0169]
h
2
为由密码杂凑函数派生的密码函数;
[0170]
m
i
表示签名者u
i
分属的待签名消息,id
i
表示签名者u
i
的身份标识;
[0171]
若l
i
=0,则跳转到s302;
[0172]
s304、计算s
i
=[l
i
]d
i
并将s
i
转换为字符串;
[0173]
其中:
[0174]
s
i
表示加法循环群g
1
中的元素;
[0175]
d
i
表示签名者u
i
的签名者私钥;
[0176]
s305、得到签名者u
i
的数字签名σ
i
=(w
i
,s
i
)。
[0177]
在本申请实施例中,求得数字签名后,再将数字签名以消息签名对的形式表示,消息签名对具体为:
[0178]

i
,m
i
,id
i
}
[0179]
其中:
[0180]
σ
i
为签名者u
i
的数字签名;
[0181]
m
i
表示签名者u
i
分属的待签名消息;
[0182]
id
i
表示签名者u
i
的身份标识。
[0183]
在步骤s4中,验证者对所述消息签名对进行批量验证。
[0184]
具体的,验证者基于预设的验证方法对签名消息进行验证。
[0185]
在一些实施例中,预设的验证方法包括:
[0186]
s501、校验w
i
是否为乘法循环群g
t
中元素;若不是,则判定消息签名对无效。
[0187]
s502、校验s
i
是否为加法循环群g
1
中元素;若不是,则判定消息签名对无效。
[0188]
s503、从整数集合[1,n-1]中随机选取n个数(v
1
,v
2
,...,v
n
)。
[0189]
s504、判断预设的验证条件是否成立;若成立,则判定消息签名对有效,若不成立,则判定消息签名对无效。
[0190]
具体的,预设的验证条件为:
[0191][0192]
其中:
[0193]
e表示从g
1
×
g
2
到g
t
的双线性映射;
[0194]
p
2
表示群g
2
的生成元;
[0195]
p
pub
表示可信密钥生成中心初始化的系统公钥;
[0196]
h
2i
为中间变量。
[0197][0198]
其中:
[0199]
s表示加法循环群g
1
中的元素;
[0200]
h
1i
表示中间变量,且
[0201]
h
1i
=h
1
(id
i
||hid,n)
[0202]
其中:
[0203]
h
1
为由密码杂凑函数派生的密码函数;
[0204]
hid表示可信密钥生成中心选择并公开的私钥生成函数识别符。
[0205][0206]
其中:
[0207]
表示加法循环群g
1
中的元素。
[0208]
在本申请实施例中,经过简洁的预处理,验证者可以基于一个验证条件等式完成
多个sm9数字签名的有效性验证,在不改变其签名逻辑的基础上实现了多个签名的批量验证。在保证数据资源的真实性、有效性及不可抵赖性的同时极大地改善了sm9数字签名算法的验证效率。
[0209]
具体的,在一些实施例中,当数字签名的数量较少时,也可采用普通的验证方法对消息签名对进行验证。验证方法包括:
[0210]
s501、校验w
i
是否为乘法循环群g
t
中元素;若不是,则判定消息签名对无效。
[0211]
s502、校验s
i
是否为加法循环群g
1
中元素;若不是,则判定消息签名对无效。
[0212]
s503、依次判断预设的验证条件是否成立;若成立,则判定消息签名对有效,若不成立,则判定消息签名对无效。
[0213]
预设的验证条件为:
[0214][0215]
其中:
[0216]
e表示从g
1
×
g
2
到g
t
的双线性映射;
[0217]
p
2
表示群g
2
的生成元;
[0218]
p
pub
表示可信密钥生成中心初始化的系统公钥;
[0219]
h
2i
为中间变量;
[0220]
h
1i
=h
1
(id
i
||hid,n)
[0221]
其中:
[0222]
h
1
为由密码杂凑函数派生的密码函数;
[0223]
id
i
表示签名者u
i
的身份标识;
[0224]
hid表示可信密钥生成中心选择并公开的私钥生成函数识别符。
[0225]
与上述实现方法相对应的,在本申请实施例中,还提供了一种基于sm9数字签名的批量验证系统,包括:
[0226]
第一获取模块,被配置为获取待签名消息以及所述待签名消息对应的签名者的身份标识;
[0227]
第二获取模块,被配置为基于可信密钥生成中心获取系统公钥和签名者私钥;
[0228]
数字签名获取模块,被配置为基于所述系统公钥、所述身份标识和所述签名者私钥生成待签名消息的数字签名,并将所述数字签名以消息签名对的形式表示;
[0229]
签名验证模块,被配置为对所述消息签名对进行批量验证。
[0230]
由于以上实施方式均是在其他方式之上引用结合进行说明,不同实施例之间均具有相同的部分,本说明书中各个实施例之间相同、相似的部分互相参见即可。在此不再详细阐述。
[0231]
综上所述,与现有技术相比,具备以下有益效果:
[0232]
本申请实施例通过获取待签名消息以及待签名消息对应的签名者的身份标识;基于可信密钥生成中心获取系统公钥和签名者私钥;基于系统公钥、身份标识和签名者私钥生成待签名消息的数字签名,并将数字签名以消息签名对的形式表示;验证者对消息签名对进行批量验证。其中,验证者根据预先设定好的验证条件对签名消息进行批量验证,从而可以一次性完成多个sm9数字签名的有效性验证,极大地提高了sm9数字签名验证效率。数字签名的具体生成过程并不改变sm9数字签名算法的签名逻辑,同时数字签名集批量验证
与独立验证的等价性直接依赖于自主可控的sm9数字签名算法的安全性。
[0233]
需要说明的是,在本说明书中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或暗示这些实体或操作之间存在任何这种实际的关系或顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的电路结构、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种电路结构、物品或者设备所固有的要素。在没有更多限制的情况下,有语句“包括一个......”限定的要素,并不排除在包括所述要素的电路结构、物品或者设备中还存在另外的相同要素。
[0234]
本领域技术人员在考虑说明书及实践这里发明的公开后,将容易想到本申请的其他实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求的内容指出。以上所述的本申请实施方式并不构成对本申请保护范围的限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1