H04L9/32 H04L9/40
1.一种签名验签方法,其特征在于,所述方法包括:
签名方生成第一私钥分量并向密钥管理方发送无证书公钥申请,所述无证书公钥申请包括签名方标识以及基于所述第一私钥分量生成的第一公钥分量;
所述密钥管理方在接收到所述无证书公钥申请后,基于所述签名方的标识以及所述第一公钥分量生成第二公钥分量以及第二私钥分量并将所述第二公钥分量以及所述第二私钥分量返回至所述签名方;
所述签名方基于预存的密钥管理方公钥对所述第二公钥分量以及所述第二私钥分量进行验证,并在验证通过的情况下,将所述签名方标识,所述第一公钥分量以及所述第二公钥分量合成为签名公钥,以及将所述第一私钥分量以及所述第二私钥分量合成为签名私钥;
在需要对目标消息进行签名时,所述签名方基于所述目标消息、所述签名公钥以及所述签名私钥生成签名结果,并将所述目标消息、所述签名公钥以及所述签名结果发送至验签方;
所述验签方基于预存的所述密钥管理方公钥以及所述签名公钥对所述签名结果进行验证以得到验签结果。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
在所述签名方向所述密钥管理方发送无证书公钥申请之前,所述密钥管理方生成在预设的取值范围内的第一随机数,并基于所述第一随机数以及所采用的加密机制所要求的预设的基础参数生成所述密钥管理方公钥,随之将所述密钥管理方公钥发送至所述签名方以及所述验签方预存;
在接收到所述密钥管理方公钥后,在需要向所述密钥管理方发送所述无证书公钥申请时,所述签名方生成在预设的取值范围内的第二随机数,并将所述第二随机数作为所述第一私钥分量,以及基于所述第一私钥分量和所述基础参数生成所述第一公钥分量。
3.如权利要求2所述的方法,其特征在于,所述密钥管理方在接收到所述无证书公钥申请后,基于所述签名方的标识以及所述第一公钥分量生成第二公钥分量以及第二私钥分量包括:
所述密钥管理方生成在预设的取值范围内的第三随机数,并基于所述第三随机数和所述基础参数生成所述第二公钥分量;
根据所述第一公钥分量、所述第二公钥分量以及所述签名方标识计算公钥散列值;
根据所述第一随机数、所述公钥散列值以及所述第三随机数确定所述第二私钥分量。
4.如权利要求3所述的方法,其特征在于,所述签名方基于预存的密钥管理方公钥对所述第二公钥分量以及所述第二私钥分量进行验证包括:
所述签名方根据所述第一公钥分量、所述第二公钥分量以及所述签名方标识计算公钥散列值,并根据所述公钥散列值,所述基础参数以及所述密钥管理方公钥对所述第二公钥分量以及所述第二私钥分量进行验证。
5.如权利要求4所述的方法,其特征在于,所述签名方基于所述目标消息、所述签名公钥以及所述签名私钥生成签名结果包括:
所述签名方生成在预设的取值范围内的第四随机数,以及基于所述第四随机数和所述基础参数生成第一加密参数;
根据所述目标消息,所述第一加密参数、以及所述第一公钥分量、所述第二公钥分量生成第一签名分量;
根据所述第一公钥分量,所述第二公钥分量以及所述签名方标识确定公钥散列值,并根据所述第四随机数、所述公钥散列值、所述第一私钥分量、所述第二私钥分量、以及所述第一签名分量确定第二签名分量;
将所述第一签名分量以及所述第二签名分量合成为所述签名结果。
6.如权利要求5所述的方法,其特征在于,所述验签方基于预存的所述密钥管理方公钥以及所述签名公钥对所述签名结果进行验证以得到验签结果包括:
所述验签方基于所述第一公钥分量,所述第二公钥分量以及所述签名方标识计算所述公钥散列值;
根据所述第一签名分量、所述第二签名分量、所述基础参数,所述公钥散列值、所述第一公钥分量、所述第二公钥分量、以及所述密钥管理方公钥确定第二加密参数;
根据所述目标消息,所述第二加密参数、所述第一公钥分量、以及所述第二公钥分量确定第三签名分量;
将所述第三签名分量与所述第一签名分量相比较,若所述第三签名分量与所述第一签名分量相同,则验签结果为验签成功,否则,验签结果为验签失败。
7.如权利要求6所述的方法,其特征在于,所述验签方基于预存的所述密钥管理方公钥以及所述签名公钥对所述签名结果进行验证以得到验签结果还包括:
在对所述签名结果进行验证之前,所述验签方向所述密钥管理方发送签名公钥有效性验证请求,所述签名公钥有效性验证请求包含第一公钥分量、第二公钥分量、以及签名方标识,所述第一公钥分量、第二公钥分量、以及签名方标识构成所述签名公钥;
所述密钥管理方根据接收到的所述第一公钥分量、第二公钥分量、以及签名方标识确定所述签名公钥的有效性,并将有效性验证结果发送至所述验签方;
所述验签方仅在所述有效性验证结果为签名公钥有效的情况下触发对所述签名结果进行验证的操作。
8.如权利要求2至6任一项所述的方法,其特征在于,所述所采用的加密机制是基于SM2算法的加密机制,所述签名方和所述密钥管理方共享所述SM2算法定义的椭圆曲线Ep和Ep上阶为n的基点G,并且所述预设的基础参数是所述基点G。
9.如权利要求8所述的方法,其特征在于,所述密钥管理方通过以下方式确定所述密钥管理方公钥Pk:
生成第一随机数sk,Pk=sk*G;
所述签名方通过以下方式确定所述第一私钥分量d1以及所述第一公钥分量P1:
生成第二随机数d1,并将d1作为第一私钥分量,第一公钥分量P1=d1*G;
其中,sk∈[1,n-1],d1∈[1,n-1],n是与所述预设的取值范围相关的常量,G为所述基础参数。
10.如权利要求9所述的方法,其特征在于,所述密钥管理方在接收到所述无证书公钥申请后,基于所述签名方的标识以及所述第一公钥分量生成第二公钥分量P2以及第二私钥分量d2包括:
生成第三随机数r1,P2=r1*G;
基于所述第一公钥分量P1,所述第二公钥分量P2以及所述签名方标识确定公钥散列值h,其中,h=hash(P1||P2||ID),d2=r1h+sk;
其中,ID为所述签名方标识。
11.如权利要求9所述的方法,其特征在于所述签名方基于预存的密钥管理方公钥对所述第二公钥分量以及所述第二私钥分量进行验证包括:
所述签名方通过以下方法确定公钥散列值:
h=hash(P1||P2||ID);
所述签名方验证d2*G=h*P2+Pk是否成立,从而完成对所述第二公钥分量以及所述第二私钥分量的验证。
13.如权利要求11所述的方法,其特征在于,所述验签方基于预存的所述密钥管理方公钥以及所述签名公钥对所述签名结果进行验证以得到验签结果包括:
从所述签名结果S中获取第一签名分量Sv以及第二签名分量Su,并从所述签名公钥中获取所述第一公钥分量P1,所述第二公钥分量P2以及所述签名方标识ID;
基于所述第一公钥分量P1,所述第二公钥分量P2以及所述签名方标识ID确定公钥散列值h,其中h=hash(P1||P2||ID);
基于所述第一签名分量Sv,所述第二签名分量Su,所述第一公钥分量P1,所述第二公钥分量P2,所述公钥散列值h,所述密钥管理方公钥Pk确定第二加密参数R’,其中,R’=Su*G-(h+Sv)*P1-h*P2-Pk;
根据所述目标消息m,所述第二加密参数R’,所述第一公钥分量P1,所述第二公钥分量P2确定第三签名分量Sv’,其中Sv’=hash(m||R’||P1||P2);
将所述第三签名分量Sv’与所述第一签名分量Sv进行比较,若所述第三签名分量Sv’与所述第一签名分量Sv相等,则所述验签结果为验签成功,否则,所述验签结果为验签失败。
12.如权利要求9所述的方法,其特征在于,所述签名方基于所述目标消息、所述签名公钥以及所述签名私钥生成签名结果包括:
生成第四随机数r2,并基于所述第四随机数r2以及所述基础参数生成第一加密参数R,其中R=r2*G;
基于所述第一公钥分量P1,所述第二公钥分量P2,所述目标消息m,所述第一加密参数R确定所述第一签名分量Sv,其中Sv=hash(m||R||P1||P2);
基于所述第四随机数r2,所述第一签名分量Sv,所述第一私钥分量d1以及所述第二私钥分量d2确定所述第二签名分量Su,其中Su=r2+d1(h+Sv)+d2;
将所述第一签名分量Sv以及所述第二签名分量Su合成为签名结果S。
14.一种签名验签方法,应用于签名方,其特征在于,所述方法包括:
生成第一私钥分量并向密钥管理方发送无证书公钥申请,所述无证书公钥申请包括签名方标识以及基于所述第一私钥分量生成的第一公钥分量;
在接收到由所述密钥管理方返回的第二公钥分量以及第二私钥分量后,基于预存的密钥管理方公钥对所述第二公钥分量以及所述第二私钥分量进行验证;
在验证通过的情况下,将所述签名方标识,所述第一公钥分量以及所述第二公钥分量合成为签名公钥,以及将所述第一私钥分量以及所述第二私钥分量合成为签名私钥;
在需要对目标消息进行签名时,基于所述目标消息、所述签名公钥以及所述签名私钥生成签名结果,并将所述目标消息、所述签名公钥以及所述签名结果发送至验签方。
15.一种签名验签方法,应用于密钥管理方,其特征在于,所述方法包括:
在所述签名方向所述密钥管理方发送无证书公钥申请之前,生成密钥管理方公钥并将所述密钥管理方公钥发送至签名方以及验签方预存;
在接收所述签名方发送的无证书公钥申请后,基于所述签名方的标识以及第一公钥分量生成第二公钥分量以及第二私钥分量并将所述第二公钥分量以及所述第二私钥分量返回至所述签名方;
其中,所述无证书公钥申请包括签名方标识以及第一公钥分量,其中第一公钥分量是由所述签名方基于第一私钥分量生成的。
16.一种签名验签方法,应用于验签方,其特征在于,所述方法包括:
在接收签名方发送的目标消息、签名公钥以及签名结果后,基于所述签名公钥确定与所述签名方对应的第一公钥分量,与密钥管理方对应的第二公钥分量以及签名方标识,并根据所述第一公钥分量,所述第二公钥分量以及所述签名方标识计算公钥散列值;
根据所述公钥散列以及预存的密钥管理方公钥对所述签名结果进行验证以得到验签结果。
17.一种签名验签装置,应用于签名方,其特征在于,所述装置包括:
申请模块,用于生成第一私钥分量并向密钥管理方发送无证书公钥申请,所述无证书公钥申请包括签名方标识以及基于所述第一私钥分量生成的第一公钥分量;
验证模块,用于在接收到由所述密钥管理方返回的第二公钥分量以及第二私钥分量后,基于预存的密钥管理方公钥对所述第二公钥分量以及所述第二私钥分量进行验证;
合成模块,用于在验证通过的情况下,将所述签名方标识,所述第一公钥分量以及所述第二公钥分量合成为签名公钥,以及将所述第一私钥分量以及所述第二私钥分量合成为签名私钥;
签名模块,用于在需要对目标消息进行签名时,基于所述目标消息、所述签名公钥以及所述签名私钥生成签名结果,并将所述目标消息、所述签名公钥以及所述签名结果发送至验签方。
18.一种签名验签装置,应用于密钥管理方,其特征在于,所述装置包括:
管理模块,用于在所述签名方向所述密钥管理方发送无证书公钥申请之前,生成密钥管理方公钥并将所述密钥管理方公钥发送至签名方以及验签方预存;
生成模块,用于在接收所述签名方发送的无证书公钥申请后,基于所述签名方的标识以及第一公钥分量生成第二公钥分量以及第二私钥分量并将所述第二公钥分量以及所述第二私钥分量返回至所述签名方;
其中,所述无证书公钥申请包括签名方标识以及第一公钥分量,其中第一公钥分量是由所述签名方基于第一私钥分量生成的。
19.一种签名验签装置,应用于验签方,其特征在于,所述装置包括:
确定模块,用于在接收签名方发送的目标消息、签名公钥以及签名结果后,基于所述签名公钥确定与所述签名方对应的第一公钥分量,与密钥管理方对应的第二公钥分量以及签名方标识,并根据所述第一公钥分量,所述第二公钥分量以及所述签名方标识计算公钥散列值;
验证模块,用于根据所述公钥散列以及预存的密钥管理方公钥对所述签名结果进行验证以得到验签结果。
20.一种存储介质,其特征在于,所述存储介质中存储有多条指令,所述指令适于由处理器加载以执行如权利要求14至16任一项所述的方法。
本发明涉及网络信息安全技术领域,尤其涉及一种协同认证方法、系统、装置及存储介质。
传统基于非对称的公私钥的签名方法有两种主要的技术路线—基于证书和基于标识。非对称公私钥只是一对无意义的数字,所以需要证书颁发机构CA(CertificateAuthority,证书授权中心)为用户颁发证书实现用户身份与公钥的关联和绑定。为了避免CA和证书的引入,标识公钥中将标识用户身份的信息直接作为公钥,避免了通过证书来实现用户身份与公钥的绑定。用户通过私钥进行签名,验签方通过用户公钥完成验签和身份确认。
但无论是基于证书还是基于标识的公私钥体系,在实际应用中会面临一些问题。主要包括以下几个方面:
1、证书公钥体系引入了CA和证书实现身份和公钥的绑定,并通过CA实现证书生命周期管理,增加了部署、维护和使用的复杂度;
2、标识公钥体系中用户身份标识就是公钥,意味着更换私钥就要更换用户标识,并且私钥完全由密钥管理中心生成再发送给用户,增加了安全风险。
本发明提供了一种签名验签方法、装置及存储介质,通过本发明中的方案,实现无证书签名验签,并且,更换签名方对应的第一私钥分量时无需更换签名方标识,签名方对应的第一私钥分量由签名方生成,提高了签名验签的安全性,具体方案如下:
第一方面,提供一种签名验签方法,所述方法包括:
签名方生成第一私钥分量并向密钥管理方发送无证书公钥申请,所述无证书公钥申请包括签名方标识以及基于所述第一私钥分量生成的第一公钥分量;
所述密钥管理方在接收到所述无证书公钥申请后,基于所述签名方的标识以及所述第一公钥分量生成第二公钥分量以及第二私钥分量并将所述第二公钥分量以及所述第二私钥分量返回至所述签名方;
所述签名方基于预存的密钥管理方公钥对所述第二公钥分量以及所述第二私钥分量进行验证,并在验证通过的情况下,将所述签名方标识,所述第一公钥分量以及所述第二公钥分量合成为签名公钥,以及将所述第一私钥分量以及所述第二私钥分量合成为签名私钥;
在需要对目标消息进行签名时,所述签名方基于所述目标消息、所述签名公钥以及所述签名私钥生成签名结果,并将所述目标消息、所述签名公钥以及所述签名结果发送至验签方;
所述验签方基于预存的所述密钥管理方公钥以及所述签名公钥对所述签名结果进行验证以得到验签结果。
进一步地,所述方法还包括:在所述签名方向所述密钥管理方发送无证书公钥申请之前,所述密钥管理方生成在预设的取值范围内的第一随机数,并基于所述第一随机数以及所采用的加密机制所要求的预设的基础参数生成所述密钥管理方公钥,随之将所述密钥管理方公钥发送至所述签名方以及所述验签方预存;
在接收到所述密钥管理方公钥后,在需要向所述密钥管理方发送所述无证书公钥申请时,所述签名方生成在预设的取值范围内的第二随机数,并将所述第二随机数作为所述第一私钥分量,以及基于所述第一私钥分量和所述基础参数生成所述第一公钥分量。
进一步地,所述密钥管理方在接收到所述无证书公钥申请后,基于所述签名方的标识以及所述第一公钥分量生成第二公钥分量以及第二私钥分量包括:
所述密钥管理方生成在预设的取值范围内的第三随机数,并基于所述第三随机数和所述基础参数生成所述第二公钥分量;
根据所述第一公钥分量、所述第二公钥分量以及所述签名方标识计算公钥散列值;
根据所述第一随机数、所述公钥散列值以及所述第三随机数确定所述第二私钥分量。
进一步地,所述签名方基于预存的密钥管理方公钥对所述第二公钥分量以及所述第二私钥分量进行验证包括:
所述签名方根据所述第一公钥分量、所述第二公钥分量以及所述签名方标识计算公钥散列值,并根据所述公钥散列值,所述基础参数以及所述密钥管理方公钥对所述第二公钥分量以及所述第二私钥分量进行验证。
进一步地,所述签名方基于所述目标消息、所述签名公钥以及所述签名私钥生成签名结果包括:
所述签名方生成在预设的取值范围内的第四随机数,以及基于所述第四随机数和所述基础参数生成第一加密参数;
根据所述目标消息,所述第一加密参数、以及所述第一公钥分量、所述第二公钥分量生成第一签名分量;
根据所述第一公钥分量,所述第二公钥分量以及所述签名方标识确定公钥散列值,并根据所述第四随机数、所述公钥散列值、所述第一私钥分量、所述第二私钥分量、以及所述第一签名分量确定第二签名分量;
将所述第一签名分量以及所述第二签名分量合成为所述签名结果。
进一步地,所述验签方基于预存的所述密钥管理方公钥以及所述签名公钥对所述签名结果进行验证以得到验签结果包括:
所述验签方基于所述第一公钥分量,所述第二公钥分量以及所述签名方标识计算所述公钥散列值;
根据所述第一签名分量、所述第二签名分量、所述基础参数,所述公钥散列值、所述第一公钥分量、所述第二公钥分量、以及所述密钥管理方公钥确定第二加密参数;
根据所述目标消息,所述第二加密参数、所述第一公钥分量、以及所述第二公钥分量确定第三签名分量;
将所述第三签名分量与所述第一签名分量相比较,若所述第三签名分量与所述第一签名分量相同,则验签结果为验签成功,否则,验签结果为验签失败。
进一步地,所述验签方基于预存的所述密钥管理方公钥以及所述签名公钥对所述签名结果进行验证以得到验签结果还包括:
在对所述签名结果进行验证之前,所述验签方向所述密钥管理方发送签名公钥有效性验证请求,所述签名公钥有效性验证请求包含第一公钥分量、第二公钥分量、以及签名方标识,所述第一公钥分量、第二公钥分量、以及签名方标识构成所述签名公钥;
所述密钥管理方根据接收到的所述第一公钥分量、第二公钥分量、以及签名方标识确定所述签名公钥的有效性,并将有效性验证结果发送至所述验签方;
所述验签方仅在所述有效性验证结果为签名公钥有效的情况下触发对所述签名结果进行验证的操作。
进一步地,所述所采用的加密机制是基于SM2算法的加密机制,所述签名方和所述密钥管理方共享所述SM2算法定义的椭圆曲线Ep和Ep上阶为n的基点G,并且所述预设的基础参数是所述基点G。
进一步地,所述密钥管理方通过以下方式确定所述密钥管理方公钥Pk:
生成第一随机数sk,Pk=sk*G;
所述签名方通过以下方式确定所述第一私钥分量d1以及所述第一公钥分量P1:
生成第二随机数d1,并将d1作为第一私钥分量,第一公钥分量P1=d1*G;
其中,sk∈[1,n-1],d1∈[1,n-1],n是与所述预设的取值范围相关的常量,所述G为所述基础参数。
进一步地,所述密钥管理方在接收到所述无证书公钥申请后,基于所述签名方的标识以及所述第一公钥分量生成第二公钥分量P2以及第二私钥分量d2包括:
生成所述第三随机数r1,P2=r1*G;
基于所述第一公钥分量P1,所述第二公钥分量P2以及所述签名方标识确定公钥散列值h,其中,h=hash(P1||P2||ID),d2=r1h+sk;
其中,ID为所述签名方标识。
进一步地,所述签名方基于预存的密钥管理方公钥对所述第二公钥分量以及所述第二私钥分量进行验证包括:
所述签名方通过以下方法确定公钥散列值:
h=hash(P1||P2||ID);
所述签名方验证d2*G=h*P2+Pk是否成立,从而完成对所述第二公钥分量以及所述第二私钥分量的验证。
进一步地,所述签名方基于所述目标消息、所述签名公钥以及所述签名私钥生成签名结果包括:
生成所述第四随机数r2,并基于所述第四随机数r2以及所述基础参数生成所述第一加密参数R,其中R=r2*G;
基于所述第一公钥分量P1,所述第二公钥分量P2,所述目标消息m,所述第一加密参数R确定所述第一签名分量Sv,其中Sv=hash(m||R||P1||P2);
基于所述第四随机数r2,所述第一签名分量Sv,所述第一私钥分量d1以及所述第二私钥分量d2确定所述第二签名分量Su,其中Su=r2+d1(h+Sv)+d2;
将所述第一签名分量Sv以及所述第二签名分量Su合成为签名结果S。
进一步地,所述验签方基于预存的所述密钥管理方公钥以及所述签名公钥对所述签名结果进行验证以得到验签结果包括:
从所述签名结果S中获取所述第一签名分量Sv以及所述第二签名分量Su,并从所述签名公钥中获取所述第一公钥分量P1,所述第二公钥分量P2以及所述签名方标识ID;
基于所述第一公钥分量P1,所述第二公钥分量P2以及所述签名方标识ID确定公钥散列值h,其中h=hash(P1||P2||ID);
基于所述第一签名分量Sv,所述第二签名分量Su,所述第一公钥分量P1,所述第二公钥分量P2,所述公钥散列值h,所述密钥管理方公钥Pk确定所述第二加密参数R’,其中,R’=Su*G-(h+Sv)*P1-h*P2-Pk;
根据所述目标消息m,所述第二加密参数R’,所述第一公钥分量P1,所述第二公钥分量P2确定所述第三签名分量Sv’,其中Sv’=hash(m||R’||P1||P2);
将所述第三签名分量Sv’与所述第一签名分量Sv进行比较,若所述第三签名分量Sv’与所述第一签名分量Sv相等,则所述验签结果为验签成功,否则,所述验签结果为验签失败。
第二方面,提供一种签名验签方法,应用于签名方,所述方法包括:
生成第一私钥分量并向密钥管理方发送无证书公钥申请,所述无证书公钥申请包括签名方标识以及基于所述第一私钥分量生成的第一公钥分量;
在接收到由所述密钥管理方返回的第二公钥分量以及第二私钥分量后,基于预存的密钥管理方公钥对所述第二公钥分量以及所述第二私钥分量进行验证;
在验证通过的情况下,将所述签名方标识,所述第一公钥分量以及所述第二公钥分量合成为签名公钥,以及将所述第一私钥分量以及所述第二私钥分量合成为签名私钥;
在需要对目标消息进行签名时,基于所述目标消息、所述签名公钥以及所述签名私钥生成签名结果,并将所述目标消息、所述签名公钥以及所述签名结果发送至验签方。
第三方面,提供一种签名验签方法,应用于密钥管理方,所述方法包括:
在所述签名方向所述密钥管理方发送无证书公钥申请之前,生成密钥管理方公钥并将所述密钥管理方公钥发送至签名方以及验签方预存;
在接收所述签名方发送的无证书公钥申请后,基于所述签名方的标识以及所述第一公钥分量生成第二公钥分量以及第二私钥分量并将所述第二公钥分量以及所述第二私钥分量返回至所述签名方;
其中,所述无证书公钥申请包括签名方标识以及第一公钥分量,其中第一公钥分量是由所述签名方基于第一私钥分量生成的。
第四方面,提供一种签名验签方法,应用于验签方,所述方法包括:
在接收签名方发送的目标消息、签名公钥以及签名结果后,基于所述签名公钥确定与所述签名方对应的第一公钥分量,与密钥管理方对应的第二公钥分量以及签名方标识,并根据所述第一公钥分量,所述第二公钥分量以及所述签名方标识计算公钥散列值;
根据所述公钥散列以及预存的密钥管理方公钥对所述签名结果进行验证以得到验签结果。
第五方面,提供一种签名验签装置,应用于签名方,所述装置包括:
申请模块,用于生成第一私钥分量并向密钥管理方发送无证书公钥申请,所述无证书公钥申请包括签名方标识以及基于所述第一私钥分量生成的第一公钥分量;
验证模块,用于在接收到由所述密钥管理方返回的第二公钥分量以及第二私钥分量后,基于预存的密钥管理方公钥对所述第二公钥分量以及所述第二私钥分量进行验证;
合成模块,用于在验证通过的情况下,将所述签名方标识,所述第一公钥分量以及所述第二公钥分量合成为签名公钥,以及将所述第一私钥分量以及所述第二私钥分量合成为签名私钥;
签名模块,用于在需要对目标消息进行签名时,基于所述目标消息、所述签名公钥以及所述签名私钥生成签名结果,并将所述目标消息、所述签名公钥以及所述签名结果发送至验签方。
第六方面,提供一种签名验签装置,应用于密钥管理方,所述装置包括:
管理模块,用于在所述签名方向所述密钥管理方发送无证书公钥申请之前,生成密钥管理方公钥并将所述密钥管理方公钥发送至签名方以及验签方预存;
生成模块,用于在接收所述签名方发送的无证书公钥申请后,基于所述签名方的标识以及所述第一公钥分量生成第二公钥分量以及第二私钥分量并将所述第二公钥分量以及所述第二私钥分量返回至所述签名方;
其中,所述无证书公钥申请包括签名方标识以及第一公钥分量,其中第一公钥分量是由所述签名方基于第一私钥分量生成的。
第七方面,提供一种签名验签装置,应用于验签方,所述装置包括:
确定模块,用于在接收签名方发送的目标消息、签名公钥以及签名结果后,基于所述签名公钥确定与所述签名方对应的第一公钥分量,与密钥管理方对应的第二公钥分量以及签名方标识,并根据所述第一公钥分量,所述第二公钥分量以及所述签名方标识计算公钥散列值;
验证模块,用于根据所述公钥散列以及预存的密钥管理方公钥对所述签名结果进行验证以得到验签结果。
第八方面,提供一种存储介质,所述存储介质中存储有多条指令,所述指令适于由处理器加载以执行如前所述的方法。
通过本发明的方案,一方面,签名方标识作为签名公钥的一个成分,实现了签名公钥与签名方身份的天然绑定,并且第一公钥分量以及第一签名方私钥并不是由签名方标识生成的,可以实现不用改变签名方标识的情况下重新生成公钥以及私钥,并且第一私钥分量是由签名方生成并保存的,并不是由签名管理方生成后再发送至签名方的,提高了安全性;另一方面,签名发方在需要对目标消息签名时,根据目标消息,签名公钥以及签名私钥生成签名结果,通过验签方对签名结果进行验证,在此过程中,无需通过证书实现签名方身份与公钥的绑定,避免了增加部署、维护和使用的复杂度。
下面结合附图,通过对本发明的具体实施方式详细描述,将使本发明的技术方案及其它有益效果显而易见。
图1为本发明实施例中签名验签方法的流程图;
图2为本发明为实施例一中在签名验签过程中签名方,密钥管理方以及验签方交互过程示意图;
图3为本发明为实施例二中在签名验签过程中签名方,密钥管理方以及验签方交互过程示意图;
图4为本发明为实施例三中在签名验签过程中签名方,密钥管理方以及验签方交互过程示意图;
图5为本发明为实施例四中在签名验签过程中签名方,密钥管理方以及验签方交互过程示意图;
图6为本发明实施例中应用于签名方的签名验签方法的流程图;
图7为本发明实施例中应用于密钥管理方的签名验签方法的流程图;
图8为本发明实施例中应用于验签方的签名验签方法的流程图;
图9为本发明实施例中应用于签名方的签名验签装置的示意图;
图10为本发明实施例中应用于密钥管理方的签名验签装置的示意图;
图11为本发明实施例中应用于验签方的签名验签装置的示意图。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明提供了一种签名验签方法,该方法包括:
S101、签名方生成第一私钥分量并向密钥管理方发送无证书公钥申请,无证书公钥申请包括签名方标识以及基于第一私钥分量生成的第一公钥分量。
S102、密钥管理方在接收到无证书公钥申请后,基于签名方标识以及第一公钥分量生成第二公钥分量以及第二私钥分量并将第二公钥分量以及第二私钥分量返回至签名方;
S103、签名方基于预存的密钥管理方公钥对第二公钥分量以及第二私钥分量进行验证,并在验证通过的情况下,将签名方标识,第一公钥分量以及第二公钥分量合成为签名公钥,以及将第一私钥分量以及第二私钥分量合成为签名私钥;
S104、在需要对目标消息进行签名时,签名方基于目标消息、签名公钥以及签名私钥生成签名结果,并将目标消息、签名公钥以及签名结果发送至验签方;
S105、验签方基于预存的密钥管理方公钥以及签名公钥对签名结果进行验证以得到验签结果。
在S103中,为了提升安全等级,签名公钥以及签名私钥需要定期或按需更换,因此,签名方按照预设时间向密钥管理方发送无证书公钥吊销申请,无证书公钥吊销申请包括签名方标识,签名公钥以及签名私钥,密钥管理方在接收到无证书公钥吊销申请后对于该签名方的签名公钥以及签名私钥进行吊销,进而需要签名方重新发送无证书公钥申请,以获得新的签名公钥以及签名私钥。
在本发明中,签名方与密钥管理方分别生成第一私钥分量,第一公钥分量,第二私钥分量以及第二公钥分量,一方面,签名方标识作为签名公钥的一个成分,实现了签名公钥与签名方身份的天然绑定,并且第一公钥分量以及第一签名方私钥并不是由签名方标识生成的,可以实现不用改变签名方标识的情况下重新生成公钥以及私钥,并且第一私钥分量是由签名方生成并保存的,并不是由签名管理方生成后再发送至签名方的,降低了安全风险性;另一方面,签名发方在需要对目标消息签名时,根据目标消息,签名公钥以及签名私钥生成签名结果,通过验签方对签名结果进行验证,在此过程中,无需通过证书实现签名方身份与公钥的绑定,避免了增加部署、维护和使用的复杂度。
下面将结合附图以及具体的实施例对本发明中的签名验签方法详细阐述。
实施例一
本发明中签名验签方法在签名方,密钥管理方以及验签方的交互过程,如图2所示,S201,密钥管理方向签名方以及验签方发送密钥管理方公钥,以使签名方以及验签方预存密钥管理方公钥,具体的,在签名方向密钥管理方发送无证书公钥申请之前,密钥管理方生成在预设的取值范围内的第一随机数,并基于第一随机数以及所采用的加密机制所要求的预设的基础参数生成密钥管理方公钥,随之将密钥管理方公钥发送至签名方以及所述验签方预存。
S202,签名方在接收到密钥管理方公钥后,在需要向密钥管理方发送无证书公钥申请时,生成在预设的取值范围内的第二随机数,并将第二随机数作为所述第一私钥分量,以及基于第一私钥分量和基础参数生成所述第一公钥分量。
S203,签名方向密钥管理方发送包括签名方标识以及基于第一私钥分量生成的第一公钥分量的包含无证书公钥申请。
S204,密钥管理方生成第二公钥分量以及第二私钥分量并返回至签名方,具体的,密钥管理方生成在预设的取值范围内的第三随机数,并基于第三随机数和基础参数生成第二公钥分量;根据第一公钥分量、第二公钥分量以及签名方标识计算公钥散列值;根据第一随机数、公钥散列值以及第三随机数确定第二私钥分量。
S205,签名方对第二公钥分量以及第二私钥分量进行验证,进一步地,签名方基于预存的密钥管理方公钥对第二公钥分量以及第二私钥分量进行验证,具体的,签名方根据第一公钥分量、第二公钥分量以及签名方标识计算公钥散列值,并根据公钥散列值,基础参数以及密钥管理方公钥对第二公钥分量以及第二私钥分量进行验证。
更进一步地,若签名方对于第二公钥分量以及第二私钥分量验证通过,签名方将签名方标识,第一公钥分量以及第二公钥分量合成为签名公钥,以及将第一私钥分量以及第二私钥分量合成为签名私钥。
S206,在需要对目标消息进行签名时,签名方生成签名结果,将目标消息,签名公钥以及签名结果发送至验签方,具体的,签名方基于目标消息、签名公钥以及签名私钥生成签名结果,并将目标消息、签名公钥以及签名结果发送至验签方,示例性地,签名方生成在预设的取值范围内的第四随机数,以及基于第四随机数和基础参数生成第一加密参数;根据目标消息,第一加密参数、以及第一公钥分量、第二公钥分量生成第一签名分量;根据第一公钥分量,第二公钥分量以及签名方标识确定公钥散列值,并根据第四随机数、公钥散列值、第一私钥分量、第二私钥分量、以及第一签名分量确定第二签名分量;将第一签名分量以及第二签名分量合成为签名结果。
S207,验签方对签名结果进行验证以得到验签结果,具体的,验签方基于预存的密钥管理方公钥以及签名公钥对签名结果进行验证以得到验签结果,示例性地,验签方基于第一公钥分量,第二公钥分量以及签名方标识计算公钥散列值;根据第一签名分量、第二签名分量、基础参数,公钥散列值、第一公钥分量、第二公钥分量、以及密钥管理方公钥确定第二加密参数;根据目标消息,第二加密参数、第一公钥分量、以及第二公钥分量确定第三签名分量;将第三签名分量与第一签名分量相比较,若第三签名分量与第一签名分量相同,则验签结果为验签成功,否则,验签结果为验签失败。
需要说明的是,在本实施例中,签名公钥是由签名方标识,第一公钥分量,第二公钥分量合成的,签名结果是由第一签名分量以及第二签名分量合成的,因此,验签方在接收到签名方发送的签名公钥以及签名结果后,根据预设方法以及签名公钥获得签名方标识,第一公钥分量,第二公钥分量,根据预设方法以及签名结果获得第一签名分量以及第二签名分量。
实施例二
本发明中签名验签方法在签名方,密钥管理方以及验签方的交互过程,如图3所示,其中,S301-S306,与实施例一中的S201-S206相同,不同之处在于,本实施例中,S306在需要对目标消息进行签名时,签名方生成签名结果,将目标消息,签名公钥以及签名结果发送至验签方之后包括:
S307,验签方向密钥管理方发送签名公钥有效性验证请求,具体的,签名公钥有效性验证请求包含第一公钥分量、第二公钥分量、以及签名方标识,第一公钥分量、第二公钥分量、以及签名方标识构成签名公钥。
S308,密钥管理方对签名公钥有效性验证请求处理得到有效性验证结果并发送至验签方,具体的,密钥管理方根据接收到的第一公钥分量、第二公钥分量、以及签名方标识确定签名公钥的有效性,并将有效性验证结果发送至验签方。
S309,验签方仅在有效性验证结果为签名公钥有效的情况下触发对签名结果进行验证的操作,验签方对签名结果验证的过程,即实施例一中的S207的过程。
在本实施例中,验签方在对签名结果验证之前,先要对签名公钥的有效性进行验证,进一步避免签名公钥的泄露,从而确保了签名结果的验证结果的可靠性。
实施例三
在本发明中,可以采用多种加密机制,只要能满足加密需求并且能够生成相应的签名公钥以及签名私钥,并且使得验签方对签名结果验证即可,示例性地,本实施例所采用的加密机制是基于SM2算法的加密机制,签名方和密钥管理方共享SM2算法定义的椭圆曲线Ep和Ep上阶为n的基点G,并且预设的基础参数是基点G。
如图4所示,S401,密钥管理方生成第一随机数sk,密钥管理方公钥Pk=sk*G,并将Pk发送至签名方以及验签方。
S402,签名方通生成第二随机数d1,并将d1作为第一私钥分量,第一公钥分量P1=d1*G,其中,sk∈[1,n-1],d1∈[1,n-1],n是与预设的取值范围相关的常量,G为基础参数。
S403,签名方向密钥管理方发送包含签名方标识ID以及P1的无证书公钥申请。
S404,密钥管理方在接收到无证书公钥申请后,生成第三随机数r1,第二公钥分量P2=r1*G,公钥散列值h=hash(P1||P2||ID),第二私钥分量d2=r1h+sk;
密钥管理方将P2以及d2发送至签名方。
S405,签名方验证d2*G=h*P2+Pk,若验证通过,则合成签名私钥D=(d1,d2),合成公钥P=(P1,P2,ID)。
S406,若对目标消息m进行签名,签名生成第四随机数r2,生成第一加密参数R=r2*G;生成第一签名分量Sv,其中Sv=hash(m||R||P1||P2);生成第二签名分量Su,其中Su=r2+d1(h+Sv)+d2,将第一签名分量Sv以及第二签名分量Su合成为签名结果S(Sv,Su),并将m,P以及S发送至验签方。
S407,验签方确定公钥散列值h,其中h=hash(P1||P2||ID);确定第二加密参数R’,其中,R’=Su*G-(h+Sv)*P1-h*P2-Pk;确定第三签名分量Sv’,其中Sv’=hash(m||R’||P1||P2);
比较量Sv’与Sv,若Sv’=Sv,则验签结果为验签成功,否则,验签结果为验签失败。
需要说明的是,在本实施例中,签名公钥P是由签名方标识ID,第一公钥分量P1,第二公钥分量P2合成的,签名结果是由第一签名分量Sv以及第二签名分量Su合成的,因此,验签方在接收到签名方发送的签名公钥P以及签名结果S后,根据预设方法以及签名公钥P获得签名方标识ID,第一公钥分量P1,第二公钥分量P2,根据预设方法以及签名结果S获得第一签名分量Sv以及第二签名分量Su。
在本实施例中,通过使用SM2椭圆曲线参数可以和SM2证书方式进行兼容,从而使得本发明中的签名验证方法具有良好的兼容性以及更广泛的应用范围。
实施例四
在本实施例中,如图5所示,其中,S501-S506,与实施例三中的S401-S406相同,不同之处在于,本实施例中,S406在需要对目标消息进行签名时,签名方将P以及S发送至验签方之后包括:
S507,验签方向密钥管理方发送签名公钥有效性验证请求,签名公钥有效性验证请求包含签名公钥P。
S508,密钥管理方验证P的有效性,并将有效性验证结果发送至验签方。
S509,验签方仅在有效性验证结果为P有效的情况下触发对签名结果进行验证的操作,验签方对签名结果验证的过程,即实施例一中的S407的过程。
需要说明的是,签名公钥P是由签名方标识ID,第一公钥分量P1,第二公钥分量P2合成的,因此,密钥管理方在接收到的签名公钥P后,可以根据预设方法确定签名方标识ID,第一公钥分量P1,第二公钥分量P2。
如图6所示,本发明还提供了一种签名验签方法,应用于签名方,该方法包括:
S601、生成第一私钥分量并向密钥管理方发送无证书公钥申请,无证书公钥申请包括签名方标识以及基于第一私钥分量生成的第一公钥分量;
S602、在接收到由密钥管理方返回的第二公钥分量以及第二私钥分量后,基于预存的密钥管理方公钥对第二公钥分量以及第二私钥分量进行验证;
S603、在验证通过的情况下,将签名方标识,第一公钥分量以及第二公钥分量合成为签名公钥,以及将第一私钥分量以及第二私钥分量合成为签名私钥;
S604、在需要对目标消息进行签名时,基于目标消息、签名公钥以及签名私钥生成签名结果,并将目标消息、签名公钥以及签名结果发送至验签方。
进一步地,密钥管理方公钥是在向密钥管理方发送无证书公钥申请之前,由密钥管理方生成在预设的取值范围内的第一随机数,并基于第一随机数以及所采用的加密机制所要求的预设的基础参数生成的;
在接收到密钥管理方公钥后,在需要向密钥管理方发送无证书公钥申请时,生成在预设的取值范围内的第二随机数,并将第二随机数作为第一私钥分量,以及基于第一私钥分量和所述基础参数生成第一公钥分量。
进一步地,签名方基于预存的密钥管理方公钥对第二公钥分量以及第二私钥分量进行验证包括:
根据第一公钥分量、第二公钥分量以及签名方标识计算公钥散列值,并根据公钥散列值,基础参数以及密钥管理方公钥对第二公钥分量以及第二私钥分量进行验证。
进一步地,基于目标消息、签名公钥以及签名私钥生成签名结果包括:
生成在预设的取值范围内的第四随机数,以及基于第四随机数和基础参数生成第一加密参数;
根据目标消息,第一加密参数、以及第一公钥分量、第二公钥分量生成第一签名分量;
根据第一公钥分量,第二公钥分量以及签名方标识确定公钥散列值,并根据第四随机数、公钥散列值、第一私钥分量、第二私钥分量、以及第一签名分量确定第二签名分量;
将第一签名分量以及第二签名分量合成为签名结果。
进一步地,所采用的加密机制是基于SM2算法的加密机制,签名方和密钥管理方共享SM2算法定义的椭圆曲线Ep和Ep上阶为n的基点G,并且预设的基础参数是基点G。
进一步地,密钥管理方公钥Pk通过以下方法确定:
密钥管理方生成第一随机数sk,Pk=sk*G;
通过以下方式确定第一私钥分量d1以及所述第一公钥分量P1:
生成第二随机数d1,并将d1作为第一私钥分量,第一公钥分量P1=d1*G;
其中,sk∈[1,n-1],d1∈[1,n-1],n是与预设的取值范围相关的常量,G为所述基础参数。
进一步地,第二公钥分量P2以及第二私钥分量d2通过以下方法确定:
密钥管理方生成所述第三随机数r1,P2=r1*G;
密钥管理方基于第一公钥分量P1,第二公钥分量P2以及签名方标识确定公钥散列值h,其中,h=hash(P1||P2||ID),d2=r1h+sk;
其中,ID为签名方标识。
进一步地,基于预存的密钥管理方公钥对第二公钥分量以及第二私钥分量进行验证包括:
通过以下方法确定公钥散列值:
h=hash(P1||P2||ID);
验证d2*G=h*P2+Pk是否成立,从而完成对第二公钥分量以及所述第二私钥分量的验证。
进一步地,基于目标消息、签名公钥以及签名私钥生成签名结果包括:
生成第四随机数r2,并基于第四随机数r2以及基础参数生成第一加密参数R,其中R=r2*G;
基于第一公钥分量P1,第二公钥分量P2,目标消息m,第一加密参数R确定第一签名分量Sv,其中Sv=hash(m||R||P1||P2);
基于第四随机数r2,第一签名分量Sv,第一私钥分量d1以及第二私钥分量d2确定第二签名分量Su,其中Su=r2+d1(h+Sv)+d2;
将第一签名分量Sv以及第二签名分量Su合成为签名结果S。
如图7所示,本发明还提供了一种签名验签方法,应用于密钥管理方,该包括:
S701、在签名方向密钥管理方发送无证书公钥申请之前,生成密钥管理方公钥并将密钥管理方公钥发送至签名方以及验签方预存;
S702、在接收签名方发送的无证书公钥申请后,基于签名方的标识以及第一公钥分量生成第二公钥分量以及第二私钥分量并将第二公钥分量以及第二私钥分量返回至签名方;其中,无证书公钥申请包括签名方标识以及第一公钥分量,其中第一公钥分量是由签名方基于第一私钥分量生成的。
在本发明中,签名方基于预存的密钥管理方公钥对第二公钥分量以及第二私钥分量进行验证,并在验证通过的情况下,将签名方标识,第一公钥分量以及第二公钥分量合成为签名公钥,以及将第一私钥分量以及第二私钥分量合成为签名私钥;在需要对目标消息进行签名时,签名方基于目标消息、签名公钥以及签名私钥生成签名结果,并将目标消息、签名公钥以及签名结果发送至验签方;验签方基于预存的密钥管理方公钥以及签名公钥对签名结果进行验证以得到验签结果。
进一步地,生成密钥管理方公钥并密钥管理方公钥包括:
在接收到由签名方发送的无证书公钥申请之前,生成在预设的取值范围内的第一随机数,并基于第一随机数以及所采用的加密机制所要求的预设的基础参数生成密钥管理方公钥。
进一步地,基于签名方标识以及第一公钥分量生成第二公钥分量以及第二私钥分量包括:
密钥管理方生成在预设的取值范围内的第三随机数,并基于第三随机数和基础参数生成所述第二公钥分量;
根据第一公钥分量、第二公钥分量以及签名方标识计算公钥散列值;
根据第一随机数、公钥散列值以及第三随机数确定第二私钥分量。
进一步地,所采用的加密机制是基于SM2算法的加密机制,签名方和密钥管理方共享SM2算法定义的椭圆曲线Ep和Ep上阶为n的基点G,并且预设的基础参数是基点G。
进一步地,密钥管理方公钥Pk通过以下方法确定:
密钥管理方生成第一随机数sk,Pk=sk*G。
进一步地,第二公钥分量P2以及第二私钥分量d2通过以下方法确定:
密钥管理方生成所述第三随机数r1,P2=r1*G;
密钥管理方基于第一公钥分量P1,第二公钥分量P2以及签名方标识确定公钥散列值h,其中,h=hash(P1||P2||ID),d2=r1h+sk;
其中,ID为签名方标识。
如图8所示,本发明还提供了一种签名验签方法,应用于验签方,该方法包括:
S801,在接收签名方发送的目标消息、签名公钥以及签名结果后,基于签名公钥确定与签名方对应的第一公钥分量,与密钥管理方对应的第二公钥分量以及签名方标识,并根据第一公钥分量,第二公钥分量以及签名方标识计算公钥散列值;
S802,根据公钥散列以及预存的密钥管理方公钥对签名结果进行验证以得到验签结果。
在本发明中,签名公钥是在签名方生成第一私钥分量并向密钥管理方发送签名方标识以及基于第一私钥分量生成的第一公钥分量的无证书公钥申请后,由密钥管理方基于签名方的标识以及第一公钥分量生成第二公钥分量以及第二私钥分量并将第二公钥分量以及第二私钥分量返回至签名方,再由签名方基于预存的密钥管理方公钥对第二公钥分量以及第二私钥分量进行验证,并在验证通过的情况下,将签名方标识,第一公钥分量以及第二公钥分量合成的;
签名结果是在签名方基于第一私钥分量以及第二私钥分量合成为签名私钥,并在需要对目标消息进行签名时,基于目标消息、签名公钥以及签名私钥生成的。
进一步地,根据公钥散列以及预存的密钥管理方公钥对签名结果进行验证以得到验签结果包括:
根据第一签名分量、第二签名分量、基础参数,公钥散列值、第一公钥分量、第二公钥分量、以及密钥管理方公钥确定第二加密参数;
根据目标消息,第二加密参数、第一公钥分量、以及第二公钥分量确定第三签名分量;
将第三签名分量与第一签名分量相比较,若第三签名分量与第一签名分量相同,则验签结果为验签成功,否则,验签结果为验签失败。
进一步地,根据公钥散列以及预存的密钥管理方公钥对签名结果进行验证以得到验签结果还包括:
在对签名结果进行验证之前,向密钥管理方发送签名公钥有效性验证请求,签名公钥有效性验证请求包含第一公钥分量、第二公钥分量、以及签名方标识,第一公钥分量、第二公钥分量、以及签名方标识构成签名公钥;
密钥管理方根据接收到的第一公钥分量、第二公钥分量、以及签名方标识确定签名公钥的有效性,并将有效性验证结果发送至验签方;
仅在有效性验证请求为签名公钥有效的情况下触发对签名结果进行验证的操作。
进一步地,所采用的加密机制是基于SM2算法的加密机制,签名方和所述密钥管理方共享SM2算法定义的椭圆曲线Ep和Ep上阶为n的基点G,并且预设的基础参数是基点G。
进一步地,根据第一公钥分量,第二公钥分量以及签名方标识计算公钥散列值包括:
从签名结果S中获取第一签名分量Sv以及第二签名分量Su,并从签名公钥中获取第一公钥分量P1,第二公钥分量P2以及签名方标识ID;
根据公钥散列以及预存的密钥管理方公钥对签名结果进行验证以得到验签结果包括:
基于第一公钥分量P1,第二公钥分量P2以及签名方标识ID确定公钥散列值h,其中h=hash(P1||P2||ID);
基于第一签名分量Sv,第二签名分量Su,第一公钥分量P1,第二公钥分量P2,公钥散列值h,密钥管理方公钥Pk确定所述第二加密参数R’,其中,R’=Su*G-(h+Sv)*P1-h*P2-Pk;
根据目标消息m,第二加密参数R’,第一公钥分量P1,第二公钥分量P2确定第三签名分量Sv’,其中Sv’=hash(m||R’||P1||P2);
将第三签名分量Sv’与第一签名分量Sv进行比较,若第三签名分量Sv’与第一签名分量Sv相等,则验签结果为验签成功,否则,验签结果为验签失败。
如图9所示,本发明还提供了一种签名验签装置,应用于签名方,该装置包括:
申请模块901,用于生成第一私钥分量并向密钥管理方发送无证书公钥申请,无证书公钥申请包括签名方标识以及基于第一私钥分量生成的第一公钥分量;
验证模块902,用于在接收到由密钥管理方返回的第二公钥分量以及第二私钥分量后,基于预存的密钥管理方公钥对第二公钥分量以及第二私钥分量进行验证;
合成模块903,用于在验证通过的情况下,将签名方标识,第一公钥分量以及第二公钥分量合成为签名公钥,以及将第一私钥分量以及第二私钥分量合成为签名私钥;
签名模块904,用于在需要对目标消息进行签名时,基于目标消息、签名公钥以及签名私钥生成签名结果,并将目标消息、签名公钥以及签名结果发送至验签方。
进一步地,验证模块902还用于:根据第一公钥分量、第二公钥分量以及签名方标识计算公钥散列值,并根据公钥散列值,基础参数以及密钥管理方公钥对第二公钥分量以及第二私钥分量进行验证。
进一步地,签名模块904还用于生成在预设的取值范围内的第四随机数,以及基于第四随机数和基础参数生成第一加密参数;
根据目标消息,第一加密参数、以及第一公钥分量、第二公钥分量生成第一签名分量;
根据第一公钥分量,第二公钥分量以及签名方标识确定公钥散列值,并根据第四随机数、公钥散列值、第一私钥分量、第二私钥分量、以及第一签名分量确定第二签名分量;
将第一签名分量以及第二签名分量合成为签名结果。
进一步地,所采用的加密机制是基于SM2算法的加密机制,签名方和密钥管理方共享SM2算法定义的椭圆曲线Ep和Ep上阶为n的基点G,并且预设的基础参数是基点G。
进一步地,验证模块902还用于通过以下方法确定公钥散列值:
h=hash(P1||P2||ID);
验证d2*G=h*P2+Pk是否成立,从而完成对第二公钥分量以及所述第二私钥分量的验证。
进一步地,签名模块904还用于生成第四随机数r2,并基于第四随机数r2以及基础参数生成第一加密参数R,其中R=r2*G;
基于第一公钥分量P1,第二公钥分量P2,目标消息m,第一加密参数R确定第一签名分量Sv,其中Sv=hash(m||R||P1||P2);
基于第四随机数r2,第一签名分量Sv,第一私钥分量d1以及第二私钥分量d2确定第二签名分量Su,其中Su=r2+d1(h+Sv)+d2;
将第一签名分量Sv以及第二签名分量Su合成为签名结果S。
如图10所示,本发明还提供了一种签名验签装置,应用于密钥管理方,该装置包括:
管理模块1001,用于在签名方向密钥管理方发送无证书公钥申请之前,生成密钥管理方公钥并密钥管理方公钥发送至签名方以及验签方预存;
生成模块1002,用于在接收签名方发送的无证书公钥申请后,基于签名方的标识以及第一公钥分量生成第二公钥分量以及第二私钥分量并将第二公钥分量以及第二私钥分量返回至签名方;
其中,无证书公钥申请包括签名方标识以及第一公钥分量,其中第一公钥分量是由签名方基于第一私钥分量生成的。
进一步地,管理模块1001还用于在接收到由签名方发送的无证书公钥申请之前,生成在预设的取值范围内的第一随机数,并基于第一随机数以及所采用的加密机制所要求的预设的基础参数生成密钥管理方公钥。
进一步地,生成模块1002还用于:密钥管理方生成在预设的取值范围内的第三随机数,并基于第三随机数和基础参数生成所述第二公钥分量;
根据第一公钥分量、第二公钥分量以及签名方标识计算公钥散列值;
根据第一随机数、公钥散列值以及第三随机数确定第二私钥分量。
进一步地,所采用的加密机制是基于SM2算法的加密机制,签名方和密钥管理方共享SM2算法定义的椭圆曲线Ep和Ep上阶为n的基点G,并且预设的基础参数是基点G。
进一步地,管理模块1001还用于生成第一随机数sk,密钥管理方公钥Pk=sk*G。
进一步地,生成模块1002还用于生成第三随机数r1,P2=r1*G;
基于第一公钥分量P1,第二公钥分量P2以及签名方标识确定公钥散列值h,其中,h=hash(P1||P2||ID),d2=r1h+sk;
其中,ID为签名方标识。
如图11所示,本发明提供了一种签名验签装置,应用于验签方,该装置包括:
确定模块1101,用于在接收签名方发送的目标消息、签名公钥以及签名结果后,基于签名公钥确定与签名方对应的第一公钥分量,与密钥管理方对应的第二公钥分量以及签名方标识,并根据第一公钥分量,第二公钥分量以及签名方标识计算公钥散列值;
验证模块1102,用于根据公钥散列以及预存的密钥管理方公钥对签名结果进行验证以得到验签结果。
进一步地,验证模块1102还用于根据第一签名分量、第二签名分量、基础参数,公钥散列值、第一公钥分量、第二公钥分量、以及密钥管理方公钥确定第二加密参数;
根据目标消息,第二加密参数、第一公钥分量、以及第二公钥分量确定第三签名分量;
将第三签名分量与第一签名分量相比较,若第三签名分量与第一签名分量相同,则验签结果为验签成功,否则,验签结果为验签失败。
进一步地,验证模块1102还用于在对签名结果进行验证之前,向密钥管理方发送签名公钥有效性验证请求,签名公钥有效性验证请求包含第一公钥分量、第二公钥分量、以及签名方标识,第一公钥分量、第二公钥分量、以及签名方标识构成签名公钥;
密钥管理方根据接收到的第一公钥分量、第二公钥分量、以及签名方标识确定签名公钥的有效性,并将有效性验证结果发送至验签方;
仅在有效性验证请求为签名公钥有效的情况下触发对签名结果进行验证的操作。
进一步地,所采用的加密机制是基于SM2算法的加密机制,签名方和所述密钥管理方共享SM2算法定义的椭圆曲线Ep和Ep上阶为n的基点G,并且预设的基础参数是基点G。
进一步地,确定模块1101还用于从签名结果S中获取第一签名分量Sv以及第二签名分量Su,并从签名公钥中获取第一公钥分量P1,第二公钥分量P2以及签名方标识ID;
验证模块1002还用于基于第一公钥分量P1,第二公钥分量P2以及签名方标识ID确定公钥散列值h,其中h=hash(P1||P2||ID);
基于第一签名分量Sv,第二签名分量Su,第一公钥分量P1,第二公钥分量P2,公钥散列值h,密钥管理方公钥Pk确定所述第二加密参数R’,其中,R’=Su*G-(h+Sv)*P1-h*P2-Pk;
根据目标消息m,第二加密参数R’,第一公钥分量P1,第二公钥分量P2确定第三签名分量Sv’,其中Sv’=hash(m||R’||P1||P2);
将第三签名分量Sv’与第一签名分量Sv进行比较,若第三签名分量Sv’与第一签名分量Sv相等,则验签结果为验签成功,否则,验签结果为验签失败。
本发明还提供了一种存储介质,存储介质中存储有多条指令,指令适于由处理器加载以执行应用于签名方,密钥管理方,验签方的任一项的方法。
综上所述,虽然本发明已以优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。
本文发布于:2023-04-14 19:29:46,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/3/86805.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |