[發明專利]一種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.szxzyx.cn/pat/books/201710814802.X/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種身份驗證方法、裝置、設備及存儲介質
- 下一篇:一種有效智能廣播的方法





