CN107634836B - 一种sm2数字签名生成方法及系统 - Google Patents

一种sm2数字签名生成方法及系统 Download PDF

Info

Publication number
CN107634836B
CN107634836B CN201710814802.XA CN201710814802A CN107634836B CN 107634836 B CN107634836 B CN 107634836B CN 201710814802 A CN201710814802 A CN 201710814802A CN 107634836 B CN107634836 B CN 107634836B
Authority
CN
China
Prior art keywords
terminal
public key
key
ciphertext
formula
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710814802.XA
Other languages
English (en)
Other versions
CN107634836A (zh
Inventor
何德彪
张语荻
孙金龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Confident Information Co ltd
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN201710814802.XA priority Critical patent/CN107634836B/zh
Publication of CN107634836A publication Critical patent/CN107634836A/zh
Application granted granted Critical
Publication of CN107634836B publication Critical patent/CN107634836B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Mobile Radio Communication Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

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

Description

一种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+e mod n 公式(8)
其中,所述mod n为模n运算,所述e为待签名消息对应的哈希值;
根据公式(9)计算出中间变量γ,
Figure BDA0001399311820000041
其中,所述
Figure BDA0001399311820000042
为所述第二部分私钥x2的模n乘法逆;
根据所述中间变量γ和所述密文Ckey,通过公式(10)计算出第二密文C2
Figure BDA0001399311820000043
其中,所述γ⊙Ckey为所述密文Ckey与所述中间变量γ进行乘运算;
选取满足预设条件的整数ρ,通过公式(11)计算出第一密文C1
Figure BDA0001399311820000044
根据所述第一密文C1和所述第二密文C2,通过公式(12)计算出所述待解密密文C;
Figure BDA0001399311820000051
其中,所述
Figure BDA0001399311820000052
为所述第一密文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′;
Figure BDA0001399311820000053
其中,下标sk表示所述第一终端通过同态加密算法生成的私钥sk,所述Decsk表示通过所述私钥sk进行解密运算,所述解密结果
Figure BDA0001399311820000054
根据所述解密结果s′,通过公式(16)计算出所述第二部分签名s;
Figure BDA0001399311820000055
其中,所述
Figure BDA0001399311820000056
为所述第一部分私钥x1的模n乘法逆。
此外,为实现上述目的,本发明还提供一种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)计算出中间变量γ,
Figure BDA0001399311820000081
其中,所述
Figure BDA0001399311820000082
为所述第二部分私钥x2的模n乘法逆;
所述第二终端,还用于根据所述中间变量γ和所述密文Ckey,通过公式(10)计算出第二密文C2
Figure BDA0001399311820000083
其中,所述γ⊙Ckey为所述密文Ckey与所述中间变量γ进行乘运算;
所述第二终端,还用于选取满足预设条件的整数ρ,通过公式(11)计算出第一密文C1
Figure BDA0001399311820000084
所述第二终端,还用于根据所述第一密文C1和所述第二密文C2,通过公式(12)计算出所述待解密密文C;
Figure BDA0001399311820000085
其中,所述
Figure BDA0001399311820000086
为所述第一密文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′;
Figure BDA0001399311820000087
其中,下标sk表示所述第一终端通过同态加密算法生成的私钥sk,所述Decsk表示通过所述私钥sk进行解密运算,所述解密结果
Figure BDA0001399311820000088
所述第一终端,还用于根据所述解密结果s′,通过公式(16)计算出所述第二部分签名s;
Figure BDA0001399311820000091
其中,所述
Figure BDA0001399311820000092
为所述第一部分私钥x1的模n乘法逆。
本发明中参与数字签名的第一终端和第二终端各自从集合{1,2,…,n-1}中选取两个整数,第一终端根据选取的整数计算出第一部分公钥,并发送给第二终端;第二终端根据选取的整数计算出第二部分公钥,并发送给第一终端,第一终端和第二终端通过各自接收到的部分公钥计算出数字签名的目标验证公钥;在数字签名生成阶段,第一终端将计算出的第一临时公钥及加密后的密文发送给第二终端,第二终端根据所述第一临时公钥及加密后的密文将计算出的第二临时公钥及待解密密文发送给第一终端,第一终端对所述待解密密文进行解密,并通过自身的私钥计算出数字签名,在对生成的数字签名验证通过后,第一终端输出完整的数字签名,由于生成签名的过程必须参与签名双方同时参与,且不泄露各自拥有的部分私钥,从而保证了私钥的安全性,也提高了参与签名双方的公平性。
附图说明
图1为本发明一种SM2数字签名生成方法第一实施例流程示意图;
图2为本发明一种SM2数字签名生成系统的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明一种SM2数字签名生成方法第一实施例流程示意图。
本实施例中,所述方法包括以下步骤:
步骤S01:第一终端从集合{1,2,…,n-1}中选取两个整数x1和k1,并将所述x1作为第一部分私钥,将所述k1作为第一随机数,其中,所述n为SM2密码运算所使用的椭圆曲线点群的阶;
步骤S02:第二终端从所述集合{1,2,…,n-1}中选取两个整数x2和k2,将所述x2作为第二部分私钥,将所述k2作为第二随机数;
步骤S03:所述第一终端根据所述第一部分私钥x1计算出第一部分公钥Q1,并将所述第一部分公钥Q1发送至所述第二终端;
步骤S04:所述第二终端根据所述第二部分私钥x2计算出第二部分公钥Q2,并将所述第二部分公钥Q2发送至所述第一终端;
步骤S05:所述第一终端接收所述第二终端发送的第二部分公钥Q2,并根据所述第二部分公钥Q2,获得目标公钥Q;
步骤S06:所述第二终端接收所述第一终端发送的第一部分公钥Q1,并根据所述第一部分公钥Q1,获得目标公钥Q;
步骤S07:所述第一终端根据所述第一随机数k1获得第一临时公钥R1和密文Ckey,并将所述第一临时公钥R1和所述密文Ckey发送至所述第二终端;
步骤S08:所述第二终端根据所述第二随机数k2计算出第二临时公钥R2,根据接收到的所述第一临时公钥R1和所述密文Ckey计算出待解密密文C,并将所述第二临时公钥R2以及所述待解密密文C发送至所述第一终端;
步骤S09:所述第一终端根据所述第二临时公钥R2计算出第一部分签名r,并对接收到的所述待解密密文C进行解密,根据解密结果计算出第二部分签名s;
步骤S10:所述第一终端根据所述第一部分签名r及所述第二部分签名s生成目标数字签名,并通过所述目标公钥Q对所述目标数字签名进行验证,在验证成功后,输出所述目标数字签名。
需要说明的是,本实施例中,在生成数字签名时有两方共同参与,一方为第一终端,另一方为第二终端,其中,所述终端可以是能够进行数字运算及程序运行的计算装置,例如:个人电脑、平板电脑或其它移动通信设备等,本实施例对此不加以限制。
在生成数字签名前,所述第一终端和所述第二终端将进行初始化操作:
第一终端从集合{1,2,…,n-1}中选取两个整数x1和k1,并将所述x1作为第一部分私钥,将所述k1作为第一随机数,其中,所述n为SM2密码运算所使用的椭圆曲线点群的阶,也即SM2密码运算所使用的椭圆曲线点群的基点G的阶(SM2密码运算所使用的椭圆曲线点群是指由基点G生成的循环群)。
第二终端从同样的集合{1,2,…,n-1}中选取两个整数x2和k2,将所述x2作为第二部分私钥,将所述k2作为第二随机数。
本实施例中,上述各整数的选取可随机选取,也可以根据预设规则选取,本实施例对此不加以限制。
需要说明的是,分布式密钥对生成阶段由所述第一终端和所述第二终端共同完成,具体过程如下:
上述步骤S03在具体实现中,所述第一终端根据从集合{1,2,…,n-1}中选取的所述第一部分私钥x1,通过公式(1)计算出所述第一部分公钥Q1
Q1=x1·G 公式(1)
将所述第一部分公钥Q1发送至第二终端,所述“·”为乘号,所述G为SM2密码运算所使用的椭圆曲线点群的基点;
为提高数字签名的安全性,降低数据被篡改的风险,本实施例中,所述第一终端在计算所述第一部分公钥Q1时,可同时生成一个对所述第一部分公钥Q1的零知识证明π1,所述零知识证明π1用于证明所述第一部分公钥Q1是关于所述第一部分私钥x1的一个离散对数,所述第一终端在将所述第一部分公钥Q1发送至第二终端时,也将所述零知识证明π1一并发送至所述第二终端,以向所述第二终端证明发送的数据源于所述第一终端。
此外,本实施例中的第一终端还生成同态加密算法的一对公私钥:pk(公钥),sk(私钥),本实施例选择的同态加密算法具有如下性质:
明文相加后再加密得到的密文等同于将这些明文分别加密再相乘得到的密文,密文与某个明文的指数运算等同于此密文对应的明文与另一个明文做乘运算后的密文。本实施例中,用Encpk表示通过所述公钥pk进行加密运算,Decsk表示通过所述私钥sk进行解密运算,定义
Figure BDA0001399311820000111
为a,b的明文做加运算,定义a⊙b为b中的明文与a做乘运算。
相应地,上述步骤S04在具体实现中,所述第二终端根据从集合{1,2,…,n-1}中选取的所述第二部分私钥x2,通过公式(2)计算出所述第二部分公钥Q2
Q2=x2·G 公式(2)
将所述第二部分公钥Q2发送至所述第一终端,相应地,所述第二终端在计算所述第二部分公钥Q2时,会同时生成一个对所述第二部分公钥Q2的零知识证明π2,并将所述零知识证明π2发送至所述第一终端,以向所述第一终端证明发送的数据源于所述第二终端。
进一步地,上述步骤S05在具体实现中,所述第一终端接收所述第二终端发送的所述第二部分公钥Q2
根据所述第一部分私钥x1及所述第二部分公钥Q2,通过公式(3)计算出所述目标公钥Q,并对所述第一部分私钥x1和所述目标公钥Q进行保存;
Q=x1·Q2-G 公式(3)
相应地,上述步骤S06在具体实现中,所述第二终端接收所述第一终端发送的第一部分公钥Q1
根据所述第二部分私钥x2及所述第一部分公钥Q1,通过公式(4)计算出所述目标公钥Q;
Q=x2·Q1-G 公式(4)
并对所述第二部分私钥x2和所述目标公钥Q进行保存。
在上述过程结束后,所述第一终端和所述第二终端进入SM2数字签名生成阶段:
上述步骤S07在具体实现中,所述第一终端根据所述第一随机数k1获得第一临时公钥R1和密文Ckey,并将所述第一临时公钥R1和所述密文Ckey发送至所述第二终端,具体包括:
所述第一终端根据所述第一随机数k1,通过公式(5)计算出所述第一临时公钥R1
R1=k1·G 公式(5)
采用同态加密算法对所述第一随机数k1进行加密,获得密文Ckey,将所述第一临时公钥R1和所述密文Ckey发送至所述第二终端;其中,所述Ckey=Encpk(k1),下标pk表示所述第一终端通过同态加密算法生成的公钥pk,所述Encpk表示通过所述公钥pk进行加密运算。
上述步骤S08在具体实现中,所述第二终端根据所述第二随机数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)计算出中间变量γ,
Figure BDA0001399311820000131
其中,所述
Figure BDA0001399311820000132
为所述第二部分私钥x2的模n乘法逆;
根据所述中间变量γ和所述密文Ckey,通过公式(10)计算出第二密文C2
Figure BDA0001399311820000133
其中,所述γ⊙Ckey为所述密文Ckey与所述中间变量γ进行乘运算;
选取满足预设条件的整数ρ,通过公式(11)计算出第一密文C1
Figure BDA0001399311820000134
根据所述第一密文C1和所述第二密文C2,通过公式(12)计算出所述待解密密文C;
Figure BDA0001399311820000135
其中,所述
Figure BDA0001399311820000136
为所述第一密文C1与所述第二密文C2进行加运算;
将所述第二临时公钥R2以及所述待解密密文C发送至所述第一终端。
上述步骤S09在具体实现中,所述第一终端根据所述第二临时公钥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′;
Figure BDA0001399311820000137
其中,下标sk表示所述第一终端通过同态加密算法生成的私钥sk,所述Decsk表示通过所述私钥sk进行解密运算,所述解密结果
Figure BDA0001399311820000138
根据所述解密结果s′,通过公式(16)计算出所述第二部分签名s;
Figure BDA0001399311820000141
其中,所述
Figure BDA0001399311820000142
为所述第一部分私钥x1的模n乘法逆。
本实施例中,所述第一终端根据所述第一部分签名r及所述第二部分签名s生成目标数字签名(r,s)后,通过预先计算出的目标公钥Q对所述目标数字签名进行验证,在验证成功时,输出目标数字签名,其中所述目标数字签名(r,s)在本实施例中表示完整的数字签名。
本实施例有益效果:参与数字签名的第一终端和第二终端各自从集合{1,2,…,n-1}中选取两个整数,第一终端根据选取的整数计算出第一部分公钥,并发送给第二终端;第二终端根据选取的整数计算出第二部分公钥,并发送给第一终端,第一终端和第二终端通过各自接收到的部分公钥计算出数字签名的目标验证公钥;在数字签名生成阶段,第一终端将计算出的第一临时公钥及加密后的密文发送给第二终端,第二终端根据所述第一临时公钥及加密后的密文将计算出的第二临时公钥及待解密密文发送给第一终端,第一终端对所述待解密密文进行解密,并通过自身的私钥计算出数字签名,在对生成的数字签名验证通过后,第一终端输出完整的数字签名,由于生成签名的过程必须参与签名双方同时参与,且不泄露各自拥有的部分私钥,从而保证了私钥的安全性,也提高了参与签名双方的公平性,同时,第一终端与第二终端在通信过程中,通向对方发送零知识证明,也降低了通信过程中数据被篡改的风险。
参考图2,图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对所述目标数字签名进行验证,在验证成功后,输出所述目标数字签名。
需要说明的是,所述第一终端和第二终端可以是能够进行数字运算及程序运行的计算装置,例如:个人电脑、平板电脑或其它移动通信设备等,本实施例对此不加以限制。
在生成数字签名前,所述第一终端和所述第二终端将进行初始化操作:
第一终端从集合{1,2,…,n-1}中选取两个整数x1和k1,并将所述x1作为第一部分私钥,将所述k1作为第一随机数,其中,所述n为SM2密码运算所使用的椭圆曲线点群的阶,也即SM2密码运算所使用的椭圆曲线点群的基点G的阶(SM2密码运算所使用的椭圆曲线点群是指由基点G生成的循环群)。
第二终端从同样的集合{1,2,…,n-1}中选取两个整数x2和k2,将所述x2作为第二部分私钥,将所述k2作为第二随机数。
本实施例中,所述第一终端和所述第二终端在选取上述各整数时,可随机选取,也可以根据预设规则选取,本实施例对此不加以限制。
在分布式密钥对生成阶段,所述第一终端,还用于根据所述第一部分私钥x1,通过公式(1)计算出所述第一部分公钥Q1
Q1=x1·G 公式(1)
所述第一终端,还用于将所述第一部分公钥Q1发送至第二终端,所述“·”为乘号,所述G为SM2密码运算所使用的椭圆曲线点群的基点;
为提高数字签名的安全性,降低数据被篡改的风险,本实施例中,所述第一终端在计算所述第一部分公钥Q1时,可同时生成一个对所述第一部分公钥Q1的零知识证明π1,所述零知识证明π1用于证明所述第一部分公钥Q1是关于所述第一部分私钥x1的一个离散对数,所述第一终端在将所述第一部分公钥Q1发送至第二终端时,也将所述零知识证明π1一并发送至所述第二终端,以向所述第二终端证明发送的数据源于所述第一终端。
此外,本实施例中的所述第一终端还用于生成同态加密算法的一对公私钥:pk(公钥),sk(私钥),本实施例选择的同态加密算法具有如下性质:
明文相加后再加密得到的密文等同于将这些明文分别加密再相乘得到的密文,密文与某个明文的指数运算等同于此密文对应的明文与另一个明文做乘运算后的密文。本实施例中,用Enc表示加密,Dec表示解密,定义
Figure BDA0001399311820000161
为a,b的明文做加运算,定义a⊙b为b中的明文与a做乘运算。
相应地,所述第二终端,还用于根据所述第二部分私钥x2,通过公式(2)计算出所述第二部分公钥Q2
Q2=x2·G 公式(2)
所述第二终端,还用于将所述第二部分公钥Q2发送至所述第一终端,相应地,所述第二终端在计算所述第二部分公钥Q2时,会同时生成一个对所述第二部分公钥Q2的零知识证明π2,并将所述零知识证明π2发送至所述第一终端,以向所述第一终端证明发送的数据源于所述第二终端。
进一步地,所述第一终端,还用于接收所述第二终端发送的所述第二部分公钥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)
所述第一终端,还用于采用同态加密算法,例如:Paillier加密算法,对所述第一随机数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)计算出中间变量γ,
Figure BDA0001399311820000171
其中,所述
Figure BDA0001399311820000172
为所述第二部分私钥x2的模n乘法逆;
所述第二终端,还用于根据所述中间变量γ和所述密文Ckey,通过公式(10)计算出第二密文C2
Figure BDA0001399311820000173
其中,所述γ⊙Ckey为所述密文Ckey与所述中间变量γ进行乘运算;
所述第二终端,还用于选取满足预设条件的整数ρ,通过公式(11)计算出第一密文C1
Figure BDA0001399311820000181
所述第二终端,还用于根据所述第一密文C1和所述第二密文C2,通过公式(12)计算出所述待解密密文C;
Figure BDA0001399311820000182
其中,所述
Figure BDA0001399311820000183
为所述第一密文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′;
Figure BDA0001399311820000184
其中,下标sk表示所述第一终端通过同态加密算法生成的私钥sk,所述Decsk表示通过所述私钥sk进行解密运算,所述解密结果
Figure BDA0001399311820000185
所述第一终端,还用于根据所述解密结果s′,通过公式(16)计算出所述第二部分签名s;
Figure BDA0001399311820000186
其中,所述
Figure BDA0001399311820000187
为所述第一部分私钥x1的模n乘法逆。
本实施例中,所述第一终端根据所述第一部分签名r及所述第二部分签名s生成目标数字签名(r,s)后,通过预先计算出的目标公钥Q对所述目标数字签名进行验证,在验证成功时,输出目标数字签名,其中所述目标数字签名(r,s)在本实施例中表示完整的数字签名。
本实施例有益效果:参与数字签名的第一终端和第二终端各自从集合{1,2,…,n-1}中选取两个整数,第一终端根据选取的整数计算出第一部分公钥,并发送给第二终端;第二终端根据选取的整数计算出第二部分公钥,并发送给第一终端,第一终端和第二终端通过各自接收到的部分公钥计算出数字签名的目标验证公钥;在数字签名生成阶段,第一终端将计算出的第一临时公钥及加密后的密文发送给第二终端,第二终端根据所述第一临时公钥及加密后的密文将计算出的第二临时公钥及待解密密文发送给第一终端,第一终端对所述待解密密文进行解密,并通过自身的私钥计算出数字签名,在对生成的数字签名验证通过后,第一终端输出完整的数字签名,由于生成签名的过程必须参与签名双方同时参与,且不泄露各自拥有的部分私钥,从而保证了私钥的安全性,也提高了参与签名双方的公平性,同时,第一终端与第二终端在通信过程中,通向对方发送零知识证明,也降低了通信过程中数据被篡改的风险。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (2)

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)计算出中间变量γ,
Figure FDA0002597034730000031
其中,所述
Figure FDA0002597034730000032
为所述第二部分私钥x2的模n乘法逆;
根据所述中间变量γ和所述密文Ckey,通过公式(10)计算出第二密文C2
Figure FDA0002597034730000033
其中,所述γ⊙Ckey为所述密文Ckey与所述中间变量γ进行乘运算;
选取满足预设条件的整数ρ,通过公式(11)计算出第一密文C1
Figure FDA0002597034730000034
根据所述第一密文C1和所述第二密文C2,通过公式(12)计算出所述待解密密文C;
Figure FDA0002597034730000035
其中,所述
Figure FDA0002597034730000036
为所述第一密文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′;
Figure FDA0002597034730000041
其中,下标sk表示所述第一终端通过同态加密算法生成的私钥sk,所述Decsk表示通过所述私钥sk进行解密运算,所述解密结果
Figure FDA0002597034730000042
根据所述解密结果s′,通过公式(16)计算出所述第二部分签名s;
Figure FDA0002597034730000043
其中,所述
Figure FDA0002597034730000044
为所述第一部分私钥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)计算出中间变量γ,
Figure FDA0002597034730000061
其中,所述
Figure FDA0002597034730000062
为所述第二部分私钥x2的模n乘法逆;
所述第二终端,还用于根据所述中间变量γ和所述密文Ckey,通过公式(10)计算出第二密文C2
Figure FDA0002597034730000063
其中,所述γ⊙Ckey为所述密文Ckey与所述中间变量γ进行乘运算;
所述第二终端,还用于选取满足预设条件的整数ρ,通过公式(11)计算出第一密文C1
Figure FDA0002597034730000064
所述第二终端,还用于根据所述第一密文C1和所述第二密文C2,通过公式(12)计算出所述待解密密文C;
Figure FDA0002597034730000071
其中,所述
Figure FDA0002597034730000072
为所述第一密文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′;
Figure FDA0002597034730000073
其中,下标sk表示所述第一终端通过同态加密算法生成的私钥sk,所述Decsk表示通过所述私钥sk进行解密运算,所述解密结果
Figure FDA0002597034730000074
所述第一终端,还用于根据所述解密结果s′,通过公式(16)计算出所述第二部分签名s;
Figure FDA0002597034730000075
其中,所述
Figure FDA0002597034730000076
为所述第一部分私钥x1的模n乘法逆。
CN201710814802.XA 2017-09-05 2017-09-05 一种sm2数字签名生成方法及系统 Active CN107634836B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710814802.XA CN107634836B (zh) 2017-09-05 2017-09-05 一种sm2数字签名生成方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710814802.XA CN107634836B (zh) 2017-09-05 2017-09-05 一种sm2数字签名生成方法及系统

Publications (2)

Publication Number Publication Date
CN107634836A CN107634836A (zh) 2018-01-26
CN107634836B true CN107634836B (zh) 2020-09-08

Family

ID=61101135

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710814802.XA Active CN107634836B (zh) 2017-09-05 2017-09-05 一种sm2数字签名生成方法及系统

Country Status (1)

Country Link
CN (1) CN107634836B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108667626B (zh) * 2018-07-20 2020-03-03 陕西师范大学 安全的两方协作sm2签名方法
CN108880807A (zh) * 2018-08-02 2018-11-23 中钞信用卡产业发展有限公司杭州区块链技术研究院 私钥签名处理方法、装置、设备和介质
CN108900310A (zh) * 2018-08-14 2018-11-27 数字钱包(北京)科技有限公司 区块链签名处理方法及区块链签名处理装置
CN109068322B (zh) * 2018-08-22 2022-03-04 航天信息股份有限公司 解密方法、系统、移动终端、服务器及存储介质
CN109005039A (zh) * 2018-08-30 2018-12-14 天津通卡智能网络科技股份有限公司 一种在嵌入式设备端加快ecdsa验签的方法
CN109377360B (zh) * 2018-08-31 2021-07-06 西安电子科技大学 基于加权门限签名算法的区块链资产交易转账方法
CN110943826B (zh) * 2018-09-21 2022-03-25 郑州信大捷安信息技术股份有限公司 一种基于sm2算法的拆分密钥签名方法与系统
CN109245903B (zh) * 2018-09-29 2021-10-01 北京信安世纪科技股份有限公司 双方协同生成sm2算法的签名方法、装置及存储介质
CN109246129B (zh) * 2018-10-12 2020-12-25 天津赢达信科技有限公司 一种可验证客户端身份的sm2协同签名方法及系统
CN109660351B (zh) * 2018-11-08 2020-09-08 北京大学 一种sm2公钥密码的数字签名快速生成方法
CN109547209B (zh) * 2018-11-19 2020-09-08 北京大学 一种两方sm2数字签名生成方法
CN109639439B (zh) * 2019-02-27 2020-10-30 武汉大学 一种基于两方协同的ecdsa数字签名方法
CN109818730B (zh) * 2019-03-06 2022-09-30 矩阵元技术(深圳)有限公司 盲签名的获取方法、装置和服务器
CN110380846B (zh) * 2019-06-28 2022-05-27 杭州师范大学 一种电子病历患者签名方法及系统
CN110958114A (zh) * 2019-10-25 2020-04-03 武汉大学 一种两方协同sm2密钥生成、密文解密方法与介质
CN111130786A (zh) * 2019-10-25 2020-05-08 武汉大学 一种多方协同sm2密钥生成、密文解密方法与介质
WO2021127951A1 (zh) * 2019-12-24 2021-07-01 云图技术有限公司 两方协同的EdDSA数字签名生成方法和装置
CN111064583B (zh) * 2020-03-17 2020-07-31 北京信安世纪科技股份有限公司 一种门限sm2数字签名方法、装置、电子设备及存储介质
CN113765669A (zh) * 2020-06-03 2021-12-07 成都天瑞芯安科技有限公司 Sm2密钥派生与使用方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8971528B2 (en) * 2013-01-29 2015-03-03 Certicom Corp. Modified elliptic curve signature algorithm for message recovery
CN104243456B (zh) * 2014-08-29 2017-11-03 中国科学院信息工程研究所 适用于云计算的基于sm2算法的签名及解密方法和系统
CN106506156B (zh) * 2016-12-15 2018-08-03 北京三未信安科技发展有限公司 一种基于椭圆曲线的分布式门限签名方法
CN106656512B (zh) * 2017-01-17 2019-07-09 武汉理工大学 支持门限密码的sm2数字签名生成方法及系统
CN106603231B (zh) * 2017-01-20 2019-08-23 武汉理工大学 基于去秘密化的分布式sm2数字签名生成方法及系统
CN106603246B (zh) * 2017-01-22 2019-05-24 武汉理工大学 一种sm2数字签名分割生成方法及系统

Also Published As

Publication number Publication date
CN107634836A (zh) 2018-01-26

Similar Documents

Publication Publication Date Title
CN107634836B (zh) 一种sm2数字签名生成方法及系统
CN108667626B (zh) 安全的两方协作sm2签名方法
CN107707358B (zh) 一种ec-kcdsa数字签名生成方法及系统
CN107947913B (zh) 一种基于身份的匿名认证方法与系统
CN108199835B (zh) 一种多方联合私钥解密方法
CN107579819B (zh) 一种sm9数字签名生成方法及系统
CN108352015B (zh) 用于基于区块链的系统结合钱包管理系统的安全多方防遗失存储和加密密钥转移
CN109309569B (zh) 基于sm2算法的协同签名的方法、装置及存储介质
CN107733648B (zh) 一种基于身份的rsa数字签名生成方法及系统
CN107248909B (zh) 一种基于sm2算法的无证书安全签名方法
CN107659395B (zh) 一种多服务器环境下基于身份的分布式认证方法及系统
US9166957B2 (en) Digital file authentication using biometrics
CN110138567B (zh) 一种基于ecdsa的协同签名方法
CN107682151B (zh) 一种gost数字签名生成方法及系统
CN114157427A (zh) 基于sm2数字签名的门限签名方法
CN107911217B (zh) 基于ecdsa算法协同生成签名的方法、装置和数据处理系统
US20140321642A1 (en) Group encryption methods and devices
CN106850584B (zh) 一种面向客户/服务器网络的匿名认证方法
CN113132104A (zh) 一种主动安全的ecdsa数字签名两方生成方法
CN108055134B (zh) 椭圆曲线点数乘及配对运算的协同计算方法及系统
CN111030821A (zh) 一种基于双线性映射技术的联盟链加密方法
CN111565108B (zh) 签名处理方法、装置及系统
CN110798313B (zh) 基于秘密动态共享的包含秘密的数的协同生成方法及系统
CN111245594B (zh) 一种基于同态运算的协同签名方法及系统
JP4307589B2 (ja) 認証プロトコル

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220420

Address after: 250101 floor 17, building 4, future entrepreneurship Plaza, north section of Gangxing Third Road, Jinan area, China (Shandong) pilot Free Trade Zone, Jinan City, Shandong Province

Patentee after: Confident Information Co.,Ltd.

Address before: 430070 no.299 Bayi Road, Wuchang District, Wuhan City, Hubei Province

Patentee before: He Debiao

TR01 Transfer of patent right