[發明專利]基于SM2算法的兩方聯合簽名和解密的方法及系統在審
| 申請號: | 202010138468.2 | 申請日: | 2020-03-03 |
| 公開(公告)號: | CN111355582A | 公開(公告)日: | 2020-06-30 |
| 發明(設計)人: | 尚望;蘭天 | 申請(專利權)人: | 成都天瑞芯安科技有限公司 |
| 主分類號: | H04L9/30 | 分類號: | H04L9/30;H04L9/32 |
| 代理公司: | 北京天奇智新知識產權代理有限公司 11340 | 代理人: | 葉明博 |
| 地址: | 610000 四川省成都市*** | 國省代碼: | 四川;51 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 sm2 算法 聯合 簽名 解密 方法 系統 | ||
1.基于SM2算法的兩方聯合簽名和解密的系統,其特征在于,包括:
客戶端和云服務端;客戶端存儲有有私鑰a和公鑰Pa,云服務端存儲有私鑰b和公鑰Pb,客戶端與云服務端進行信息交互;
客戶端接收需要簽名的交易文件,私鑰a用于計算第一部分簽名Q1,私鑰b用于結合Q1計算完整簽名Q2,云服務端將Q2反饋給客戶端,客戶端將交易文件和Q2一同發布;
客戶端請求云服務端進行解密文件,私鑰b用于計算第一部分解密數據,私鑰a用于結合第一部分解密數據計算完整解密數據;
公鑰Pa和公鑰Pb用于聯合運算得聯合公鑰Pu,聯合公鑰Pu用于驗證完整簽名Q2及對文件進行加密。
2.基于SM2算法的兩方聯合簽名和解密的方法,應用于權利要求1所述的基于SM2算法的兩方聯合簽名和解密的系統,兩個參與方標記為A和B,A有私鑰a和公鑰Pa,B有私鑰b和公鑰Pb,其特征在于,
兩方聯合簽名,包括以下步驟:
C1,B發送Pb給A;
C2,A通過Pa、Pb生成聯合公鑰Pu;
C3,給定交易消息E,A使用私鑰a計算得第一部分簽名Q1,A發送Q1到B;
C4,B使用Q1和私鑰b計算得完整簽名Q2,其中Q2可被聯合公鑰Pu驗簽;
兩方聯合解密,包括以下步驟:
D1,給定聯合公鑰Pu加密消息M得到密文C,A使用私鑰a和密文C計算得第一部分解密數據,并將其發送給B;
D2,B利用第一部分解密數據、私鑰b和密文C計算得完整解密數據即明文M。
3.根據權利要求2所述的基于SM2算法的兩方聯合簽名和解密的方法,聯合簽名方法,其特征在于,C3中,A使用私鑰a得第一部分簽名Q1的計算過程如下:
1)A生成隨機數m,計算s31=m*G,其中,G為SM2的參考基點;
2)生成隨機數k,計算k*G=(x1,y1),取該點的x1;
3)交易消息E的散列值記為e,計算r=e+x1;
4)計算s32=s31*(k-r*a);
5)計算s33=s31*(1+a);
6)記Q1=(r,s32,s33)。
4.根據權利要求3所述的基于SM2算法的兩方聯合簽名和解密的方法,聯合簽名方法,其特征在于,C4中,B使用Q1和私鑰b得完整簽名Q2的計算過程如下:
1)計算s41=s33*(1+b);
2)對s41整體求逆,得到s42=(s41)-1;
3)計算s43=s33*r*b;
4)計算s44=s32-s43;
5)計算s45=s42*s44;
6)記s=s45,輸出完整簽名Q2=(r,s)作為交易消息E的簽名。
5.根據權利要求4所述的基于SM2算法的兩方聯合簽名和解密的方法,聯合解密方法,其特征在于,D1中,聯合公鑰Pu加密消息M得到密文C過程如下:
1)令橢圓曲線點C1=k*G=(x1,y1);
2)計算橢圓曲線點S=H*PA,若S是無窮遠點,則報錯并退出,其中H是SM2算法規定的余因子,缺省為1;
3)計算橢圓曲線點k*Pu=(x2,y2),即K*(Pa+Pb+a*Pb)=(x2,y2),將坐標x2、y2的數據類型轉換為比特串;
計算t=KDF(x2||y2,klen),若t為全0比特串,則返回步驟1),KDF是SM2算法規定的密鑰派生函數,輸出是一個密鑰序列;
4)計算C2=M⊕t,⊕為異或運算;計算C3=Hash(x2||M||y2),其中Hash是SM2算法規定的散列函數;
5)輸出密文C=C1||C2||C3。
6.根據權利要求5所述的基于SM2算法的兩方聯合簽名和解密的方法,聯合解密方法,其特征在于,D1中,A使用私鑰a計算得第一部分解密數據的過程如下:
A從C中取出比特串C1,計算H*C1,H是SM2算法規定的余因子參數,若H*C1是無窮遠點,則報錯退出,否則計算s61=a*C1;A將s61發送給B。
7.根據權利要求6所述的基于SM2算法的兩方聯合簽名和解密的方法,其特征在于,D2中,B使用第一部分解密數據和私鑰b得完整解密數據即明文M的過程如下:
1)B從密文C中取出C1,計算s71=b*C1,計算s72=b*s61=b*a*C1,計算s73=s61+s71+s72=(a+b+a*b)*C1,記s42的坐標為(x2,y2);
2)計算t=KDF(x2||y2,klen),若t為全0比特串,則報錯并退出;KDF是SM2算法規定的密鑰派生函數,輸出是一個密鑰序列;
3)從C中取出比特串C2,計算M’=C2⊕t;計算u=Hash(x2||M’||y2);從C中取出比特串C3,若u不等于C3,則報錯并退出;
4)輸出明文M=M’。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于成都天瑞芯安科技有限公司,未經成都天瑞芯安科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010138468.2/1.html,轉載請聲明來源鉆瓜專利網。





