当前位置: 首页 > 专利查询>何德彪专利>正文

一种SM2数字签名生成方法及系统技术方案

技术编号:17145945 阅读:32 留言:0更新日期:2018-01-27 17:18
本发明专利技术公开了一种SM2数字签名生成方法及系统,所述方法包括:参与数字签名的第一终端和第二终端各自从集合{1,2,…,n‑1}中选取两个整数,第一终端和第二终端根据选取的整数分别计算出各自对应的部分公钥并发送给对方,第一终端和第二终端根据各自接收到的部分公钥计算出验证公钥;在数字签名生成阶段,第一终端将计算出的第一临时公钥及加密后的密文发送给第二终端,第二终端将计算出的第二临时公钥及待解密密文发送给第一终端,第一终端解密该待解密密文并通过自身的私钥计算出数字签名,在对生成的数字签名验证通过后输出完整的数字签名。由于生成签名的过程必须签名双方同时参与且不泄露各自私钥,从而保证了私钥的安全性,提高了签名双方的公平性。

A method and system for generating SM2 digital signature

【技术实现步骤摘要】
一种SM2数字签名生成方法及系统
本专利技术属于信息安全
,尤其涉及一种SM2数字签名生成方法及系统。
技术介绍
椭圆曲线公钥密码算法(SM2),是中国国家密码管理局发布的密码算法。SM2明确规定了SM2算法的数字签名算法、公钥加密算法及密钥交换协议。其中,SM2算法的数字签名算法包括生成算法和验证算法,应用在消息传输过程中可靠性的消息传输及使用消息的合法者验证。在SM2的数字签名算法中,包括一一对应的公钥和私钥,其中,私钥用于待签名消息生成数字签名,公钥用于对数字签名进行验证。签名者采用私钥进行待签名消息M的数字签名生成算法计算,得到待签名消息M的数字签名;验证者采用公钥对接收的待签名消息M进行数字签名验证计算,验证待签名消息M的数字签名是否匹配,如果匹配,确认接收的待签名消息M是正确的。目前,数字签名在很多场合有着重要的作用。常见的,一方生成数字签名,可以公开被验证。在某些场合,需要多方对一份文件产生电子签名,比如一些高机密的文档,需要被多人签名。在去中心化的货币交易中,例如:比特币交易,也需要多方同时对某个交易进行签名,如果签名密钥被盗则会造成直接的经济损失。对于此类问题,比较常见的解决方法是将密钥分割为多份,例如:门限秘密分割,将私钥分发给多个参与方,当需要使用私钥进行签名时,t个被分割的密钥可以合并形成用户的原始私钥再参加运算,如果低于t个参与者,则无法恢复原始私钥。一旦私钥被恢复,任何单独的一方都可以在其他参与方不知晓的情况下进行解密或者签名运算。特别是在两方需要共同签名一个合同或协议的情况下,两方中的一方如果获得了原始的签名私钥,则可以在不经过对方同意的情况下对任意合同进行签名,安全性较低。上述内容仅用于辅助理解本专利技术的技术方案,并不代表承认上述内容是现有技术。
技术实现思路
本专利技术的主要目的在于提供了一种SM2数字签名生成方法及系统,旨在解决现有技术中消息签名的参与方使用私钥对消息进行签名时,安全性较低的问题。为实现上述目的,本专利技术提供了一种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+emodn公式(8)其中,所述modn为模n运算,所述e为待签名消息对应的哈希值;根据公式(9)计算出中间变量γ,其中,所述为所述第二部分私钥x2的模n乘法逆;根据所述中间变量γ和所述密文Ckey,通过公式(10)计算出第二密文C2;其中,所述γ⊙Ckey为所述密文Ckey与所述中间变量γ进行乘运算;选取满足预设条件的整数ρ,通过公式(11)计算出第一密文C1;根据所述第一密文C1和所述第二密文C2,通过公式(12)计算出所述待解密密文C;其中,所述为所述第一密文C1与所述第二密文C2进行加运算;将所述第二临时公钥R2以及所述待解密密文C发送至所述第一终端。优选地,所述第一终端根据所述第二临时公钥R2计算出第一部分签名r,并对接收到的所述待解密密文C进行解密,根据解密本文档来自技高网
...
一种SM2数字签名生成方法及系统

【技术保护点】
一种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对所述目标数字签名进行验证,在验证成功后,输出所述目标数字签名。...

【技术特征摘要】
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对所述目标数字签名进行验证,在验证成功后,输出所述目标数字签名。2.如权利要求1所述的方法,其特征在于,所述第一终端根据所述第一部分私钥x1计算出第一部分公钥Q1,并将所述第一部分公钥Q1发送至所述第二终端,具体包括:所述第一终端根据所述第一部分私钥x1,通过公式(1)计算出所述第一部分公钥Q1;Q1=x1·G公式(1)将所述第一部分公钥Q1发送至第二终端,所述“·”为乘号,所述G为SM2密码运算所使用的椭圆曲线点群的基点;相应地,所述第二终端根据所述第二部分私钥x2计算出第二部分公钥Q2,并将所述第二部分公钥Q2发送至所述第一终端,具体包括:所述第二终端根据所述第二部分私钥x2,通过公式(2)计算出所述第二部分公钥Q2;Q2=x2·G公式(2)将所述第二部分公钥Q2发送至所述第一终端。3.如权利要求2所述的方法,其特征在于,所述第一终端接收所述第二终端发送的第二部分公钥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进行保存。4.如权利要求2所述的方法,其特征在于,所述第一终端根据所述第一随机数k1获得第一临时公钥R1和密文Ckey,并将所述第一临时公钥R1和所述密文Ckey发送至所述第二终端,具体包括:所述第一终端根据所述第一随机数k1,通过公式(5)计算出所述第一临时公钥R1;R1=k1·G公式(5)采用同态加密算法对所述第一随机数k1进行加密,获得密文Ckey,将所述第一临时公钥R1和所述密文Ckey发送至所述第二终端;其中,所述Ckey=Encpk(k1),下标pk表示所述第一终端通过同态加密算法生成的公钥pk,所述Encpk表示通过所述公钥pk进行加密运算。5.如权利要求2所述的方法,其特征在于,所述第二终端根据所述第二随机数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+emodn公式(8)其中,所述modn为模n运算,所述e为待签名消息对应的哈希值;根据公式(9)计算出中间变量γ,其中,所述为所述第二部分私钥x2的模n乘法逆;根据所述中间变量γ和所述密文Ckey,通过公式(10)计算出第二密文C2;其中,所述γ⊙Ckey为所述密文Ckey与所述中间变量γ进行乘运算;选取满足预设条件的整数ρ,通过公式(11)计算出第一密文C1;根据所述第一密文C1和所述第二密文C2,通过公式(12)计算出所述待解密密文C;其中,所述C1⊕C2为所述第一密文C1与所述第二密文C2进行加运算;将所述第二临时公钥R2以及所述待解密密文C发送至所述第一终端。6.如权利要求5所述的方法,其特征在于,所述第一终端根据所述第二临时公钥R2计算出第一部分签名r,并对接收到的所述待解密密文C进行解密,根据解密结果计算出第二部分签名s,具体包括:所述第一终端根据所述第二临时公钥R2,通过公式(13)计算出所述临时目标公钥R;R=k1·R2公式(13)获得所述临时目标公钥R对应的坐标(rx,ry),并通过公式(14)计算出所述第一部分签名rr=rx+emodn公式(14)根据所述第一部分签名r,通过公式(15)对所述待解密密文...

【专利技术属性】
技术研发人员:何德彪张语荻孙金龙
申请(专利权)人:何德彪
类型:发明
国别省市:湖北,42

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

1