[发明专利]一种SM2数字签名生成方法及系统有效
申请号: | 201710814802.X | 申请日: | 2017-09-05 |
公开(公告)号: | CN107634836B | 公开(公告)日: | 2020-09-08 |
发明(设计)人: | 何德彪;张语荻;孙金龙 | 申请(专利权)人: | 何德彪 |
主分类号: | H04L9/32 | 分类号: | H04L9/32;H04L9/30;H04L9/00;H04L29/06 |
代理公司: | 深圳市世纪恒程知识产权代理事务所 44287 | 代理人: | 胡海国 |
地址: | 430070 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 sm2 数字签名 生成 方法 系统 | ||
1.一种SM2数字签名生成方法,其特征在于,所述方法包括:
第一终端从集合{1,2,…,n-1}中选取两个整数x1和k1,并将所述x1作为第一部分私钥,将所述k1作为第一随机数,其中,所述n为SM2密码运算所使用的椭圆曲线点群的阶;
第二终端从所述集合{1,2,…,n-1}中选取两个整数x2和k2,将所述x2作为第二部分私钥,将所述k2作为第二随机数;
所述第一终端根据所述第一部分私钥x1计算出第一部分公钥Q1,并将所述第一部分公钥Q1发送至所述第二终端;
所述第二终端根据所述第二部分私钥x2计算出第二部分公钥Q2,并将所述第二部分公钥Q2发送至所述第一终端;
所述第一终端接收所述第二终端发送的第二部分公钥Q2,并根据所述第二部分公钥Q2,获得目标公钥Q;
所述第二终端接收所述第一终端发送的第一部分公钥Q1,并根据所述第一部分公钥Q1,获得目标公钥Q;
所述第一终端根据所述第一随机数k1获得第一临时公钥R1和密文Ckey,并将所述第一临时公钥R1和所述密文Ckey发送至所述第二终端;
所述第二终端根据所述第二随机数k2计算出第二临时公钥R2,根据接收到的所述第一临时公钥R1和所述密文Ckey计算出待解密密文C,并将所述第二临时公钥R2以及所述待解密密文C发送至所述第一终端;
所述第一终端根据所述第二临时公钥R2计算出第一部分签名r,并对接收到的所述待解密密文C进行解密,根据解密结果计算出第二部分签名s;
所述第一终端根据所述第一部分签名r及所述第二部分签名s生成目标数字签名,并通过所述目标公钥Q对所述目标数字签名进行验证,在验证成功后,输出所述目标数字签名;
其中,
所述第一终端根据所述第一部分私钥x1计算出第一部分公钥Q1,并将所述第一部分公钥Q1发送至所述第二终端,具体包括:
所述第一终端根据所述第一部分私钥x1,通过公式(1)计算出所述第一部分公钥Q1;
Q1=x1·G 公式(1)
将所述第一部分公钥Q1发送至第二终端,所述“·”为乘号,所述G为SM2密码运算所使用的椭圆曲线点群的基点;
相应地,所述第二终端根据所述第二部分私钥x2计算出第二部分公钥Q2,并将所述第二部分公钥Q2发送至所述第一终端,具体包括:
所述第二终端根据所述第二部分私钥x2,通过公式(2)计算出所述第二部分公钥Q2;
Q2=x2·G 公式(2)
将所述第二部分公钥Q2发送至所述第一终端
所述第一终端接收所述第二终端发送的第二部分公钥Q2,并根据所述第二部分公钥Q2,获得目标公钥Q,具体包括:
所述第一终端接收所述第二终端发送的所述第二部分公钥Q2;
根据所述第一部分私钥x1及所述第二部分公钥Q2,通过公式(3)计算出所述目标公钥Q,并对所述第一部分私钥x1和所述目标公钥Q进行保存;
Q=x1·Q2-G 公式(3)
相应地,所述第二终端接收所述第一终端发送的第一部分公钥Q1,并根据所述第一部分公钥Q1,获得目标公钥Q,具体包括:
所述第二终端接收所述第一终端发送的第一部分公钥Q1;
根据所述第二部分私钥x2及所述第一部分公钥Q1,通过公式(4)计算出所述目标公钥Q;
Q=x2·Q1-G 公式(4)
对所述第二部分私钥x2和所述目标公钥Q进行保存
所述第一终端根据所述第一随机数k1获得第一临时公钥R1和密文Ckey,并将所述第一临时公钥R1和所述密文Ckey发送至所述第二终端,具体包括:
所述第一终端根据所述第一随机数k1,通过公式(5)计算出所述第一临时公钥R1;
R1=k1·G 公式(5)
采用同态加密算法对所述第一随机数k1进行加密,获得密文Ckey,将所述第一临时公钥R1和所述密文Ckey发送至所述第二终端;
其中,所述Ckey=Encpk(k1),下标pk表示所述第一终端通过同态加密算法生成的公钥pk,所述Encpk表示通过所述公钥pk进行加密运算所述第二终端根据所述第二随机数k2计算出第二临时公钥R2,根据接收到的所述第一临时公钥R1和所述密文Ckey计算出待解密密文C,并将所述第二临时公钥R2以及所述待解密密文C发送至所述第一终端,具体包括:
所述第二终端根据所述第二随机数k2,通过公式(6)计算出第二临时公钥R2;
R2=k2·G 公式(6)
根据所述第二随机数k2及所述第一临时公钥R1,通过公式(7)计算出临时目标公钥R;
R=k2·R1 公式(7)
获得所述临时目标公钥R对应的坐标(rx,ry),并通过公式(8)计算出所述第一部分签名r;
r=rx+e mod n 公式(8)
其中,所述mod n为模n运算,所述e为待签名消息对应的哈希值;
根据公式(9)计算出中间变量γ,
其中,所述为所述第二部分私钥x2的模n乘法逆;
根据所述中间变量γ和所述密文Ckey,通过公式(10)计算出第二密文C2;
其中,所述γ⊙Ckey为所述密文Ckey与所述中间变量γ进行乘运算;
选取满足预设条件的整数ρ,通过公式(11)计算出第一密文C1;
根据所述第一密文C1和所述第二密文C2,通过公式(12)计算出所述待解密密文C;
其中,所述为所述第一密文C1与所述第二密文C2进行加运算;
将所述第二临时公钥R2以及所述待解密密文C发送至所述第一终端
所述第一终端根据所述第二临时公钥R2计算出第一部分签名r,并对接收到的所述待解密密文C进行解密,根据解密结果计算出第二部分签名s,具体包括:
所述第一终端根据所述第二临时公钥R2,通过公式(13)计算出所述临时目标公钥R;
R=k1·R2 公式(13)
获得所述临时目标公钥R对应的坐标(rx,ry),并通过公式(14)计算出所述第一部分签名r
r=rx+e mod n 公式(14)
根据所述第一部分签名r,通过公式(15)对所述待解密密文C进行解密,获得解密结果S′;
其中,下标sk表示所述第一终端通过同态加密算法生成的私钥sk,所述Decsk表示通过所述私钥sk进行解密运算,所述解密结果
根据所述解密结果s′,通过公式(16)计算出所述第二部分签名s;
其中,所述为所述第一部分私钥x1的模n乘法逆。
2.一种SM2数字签名生成系统,其特征在于,所述系统包括:第一终端和第二终端;
所述第一终端,用于从集合{1,2,…,n-1}中选取两个整数x1和k1,并将所述x1作为第一部分私钥,将所述k1作为第一随机数,其中,所述n为SM2密码运算所使用的椭圆曲线点群的阶;
所述第二终端,用于从所述集合{1,2,…,n-1}中选取两个整数x2和k2,将所述x2作为第二部分私钥,将所述k2作为第二随机数;
所述第一终端,还用于根据所述第一部分私钥x1计算出第一部分公钥Q1,并将所述第一部分公钥Q1发送至所述第二终端;
所述第二终端,还用于根据所述第二部分私钥x2计算出第二部分公钥Q2,并将所述第二部分公钥Q2发送至所述第一终端;
所述第一终端,还用于接收所述第二终端发送的第二部分公钥Q2,并根据所述第二部分公钥Q2,获得目标公钥Q;
所述第二终端,还用于接收所述第一终端发送的第一部分公钥Q1,并根据所述第一部分公钥Q1,获得目标公钥Q;
所述第一终端,还用于根据所述第一随机数k1获得第一临时公钥R1和密文Ckey,并将所述第一临时公钥R1和所述密文Ckey发送至所述第二终端;
所述第二终端,还用于根据所述第二随机数k2计算出第二临时公钥R2,根据接收到的所述第一临时公钥R1和所述密文Ckey计算出待解密密文C,并将所述第二临时公钥R2以及所述待解密密文C发送至所述第一终端;
所述第一终端,还用于根据所述第二临时公钥R2计算出第一部分签名r,并对接收到的所述待解密密文C进行解密,根据解密结果计算出第二部分签名s;
所述第一终端,还用于根据所述第一部分签名r及所述第二部分签名s生成目标数字签名,并通过所述目标公钥Q对所述目标数字签名进行验证,在验证成功后,输出所述目标数字签名所述第一终端,还用于根据所述第一部分私钥x1,通过公式(1)计算出所述第一部分公钥Q1;
Q1=x1·G 公式(1)
所述第一终端,还用于将所述第一部分公钥Q1发送至第二终端,所述“·”为乘号,所述G为SM2密码运算所使用的椭圆曲线点群的基点;
相应地,所述第二终端,还用于根据所述第二部分私钥x2,通过公式(2)计算出所述第二部分公钥Q2;
Q2=x2·G 公式(2)
所述第二终端,还用于将所述第二部分公钥Q2发送至所述第一终端
所述第一终端,还用于接收所述第二终端发送的所述第二部分公钥Q2;
所述第一终端,还用于根据所述第一部分私钥x1及所述第二部分公钥Q2,通过公式(3)计算出所述目标公钥Q,并对所述第一部分私钥x1和所述目标公钥Q进行保存;
Q=x1·Q2-G 公式(3)
相应地,所述第二终端,还用于接收所述第一终端发送的第一部分公钥Q1;
所述第二终端,还用于根据所述第二部分私钥x2及所述第一部分公钥Q1,通过公式(4)计算出所述目标公钥Q;
Q=x2·Q1-G 公式(4)
所述第二终端,还用于对所述第二部分私钥x2和所述目标公钥Q进行保存;
所述第一终端,还用于根据所述第一随机数k1,通过公式(5)计算出所述第一临时公钥R1;
R1=k1·G 公式(5)
所述第一终端,还用于采用同态加密算法对所述第一随机数k1进行加密获得密文Ckey,将所述第一临时公钥R1和所述密文Ckey发送至所述第二终端;其中,所述Ckey=Encpk(k1),下标pk表示所述第一终端通过同态加密算法生成的公钥pk,所述Encpk表示通过所述公钥pk进行加密运算
所述第二终端,还用于根据所述第二随机数k2,通过公式(6)计算出第二临时公钥R2;
R2=k2·G 公式(6)
所述第二终端,还用于根据所述第二随机数k2及所述第一临时公钥R1,通过公式(7)计算出临时目标公钥R;
R=k2·R1 公式(7)
所述第二终端,还用于获得所述临时目标公钥R对应的坐标(rx,ry),并通过公式(8)计算出所述第一部分签名r;
r=rx+e mod n 公式(8)
其中,所述mod n为模n运算,所述e为待签名消息对应的哈希值;
所述第二终端,还用于根据公式(9)计算出中间变量γ,
其中,所述为所述第二部分私钥x2的模n乘法逆;
所述第二终端,还用于根据所述中间变量γ和所述密文Ckey,通过公式(10)计算出第二密文C2;
其中,所述γ⊙Ckey为所述密文Ckey与所述中间变量γ进行乘运算;
所述第二终端,还用于选取满足预设条件的整数ρ,通过公式(11)计算出第一密文C1;
所述第二终端,还用于根据所述第一密文C1和所述第二密文C2,通过公式(12)计算出所述待解密密文C;
其中,所述为所述第一密文C1与所述第二密文C2进行加运算;
所述第二终端,还用于将所述第二临时公钥R2以及所述待解密密文C发送至所述第一终端;
所述第一终端,还用于根据所述第二临时公钥R2,通过公式(13)计算出所述临时目标公钥R;
R=k1·R2 公式(13)
所述第一终端,还用于获得所述临时目标公钥R对应的坐标(rx,ry),并通过公式(14)计算出所述第一部分签名r
r=rx+e mod n 公式(14)
所述第一终端,还用于根据所述第一部分签名r,通过公式(15)对所述待解密密文C进行解密,获得解密结果S′;
其中,下标sk表示所述第一终端通过同态加密算法生成的私钥sk,所述Decsk表示通过所述私钥sk进行解密运算,所述解密结果
所述第一终端,还用于根据所述解密结果s′,通过公式(16)计算出所述第二部分签名s;
其中,所述为所述第一部分私钥x1的模n乘法逆。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于何德彪,未经何德彪许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710814802.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种身份验证方法、装置、设备及存储介质
- 下一篇:一种有效智能广播的方法