[发明专利]基于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.vipzhuanli.com/pat/books/202010138468.2/1.html,转载请声明来源钻瓜专利网。