[发明专利]基于SM2算法的两方联合签名和解密的方法及系统在审
申请号: | 202010138468.2 | 申请日: | 2020-03-03 |
公开(公告)号: | CN111355582A | 公开(公告)日: | 2020-06-30 |
发明(设计)人: | 尚望;兰天 | 申请(专利权)人: | 成都天瑞芯安科技有限公司 |
主分类号: | H04L9/30 | 分类号: | H04L9/30;H04L9/32 |
代理公司: | 北京天奇智新知识产权代理有限公司 11340 | 代理人: | 叶明博 |
地址: | 610000 四川省成都市*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 sm2 算法 联合 签名 解密 方法 系统 | ||
本发明提出了适用于两方交易中,基于SM2算法的联合签名和解密方法和系统。具体地,计算参与双方分别具有部分私钥,计算出一个共有公钥。两方分别使用自己的部分私钥,通过联合计算才能对交易消息进行签名,通过联合计算才能对密文进行解密;联合签名和解密计算中,参与双方均无法获取到对方私钥的任何信息。两方联合签名和解密实现了对交易的同时共同确认。联合签名可以被共有公钥验签,一次验签就验证了双方对交易的不可抵赖性。验签和加密使用SM2算法的标准方法,从而能够兼容现有公钥应用。另外,攻击者在入侵其中任何一方的情况下,都不能伪造签名,或者进行解密,从而提高了两方计算中的私钥安全性,避免私钥泄露后的签名或解密滥用。
技术领域
本发明涉及签名解密技术领域,尤其涉及一种基于SM2算法的两方联合签名和解密的方法及系统。
背景技术
SM2算法是一种椭圆曲线非对称密码算法算法,是我国自主研制的密码算法,并已经发布为国家标准GB/T 32918。SM2算法可以实现签名和验签功能。
根据算法规定,SM2算法签名方法描述如下:设G是椭圆曲线上的参考点,dA是私钥,PA是公钥,PA=dA*G,对消息e进行数字签名计算的签名结果为(r,s);首先选取随机数k,计算r=e+x1,其中(x1,y1)=k*G;计算s=(1+dA)-1*(k-r*dA)。
根据算法规定,SM2算法验证签名方法描述如下:已知签名(r,s)、公钥PA和SM2算法规定的椭圆曲线参数;首先计算t=r+s,如果t=0那么就没有验证通过;否则计算r’=x1+e,判断r’是否和r相等,如果相等则验证通过。
根据算法规定,SM2算法加密方法如下:设需要发送的消息为比特串M,klen为M的比特长度,使用公钥PA对明文M进行加密,包括以下运算步骤:
A1:用随机数发生器产生随机数k∈[1,n-1],n为自然数;计算椭圆曲线点C1=k*G=(x1,y1),其中G为椭圆曲线上的参考点,k*G表示参考点的k倍远点;
A2:计算椭圆曲线点S=H*PA,若S是无穷远点,则报错并退出;H是SM2算法规定的余因子,缺省为1;
A3:计算椭圆曲线点k*PA=(x2,y2),将坐标x2、y2的数据类型转换为比特串;计算t=KDF(x2||y2,klen),若t为全0比特串,则返回步骤1;KDF是SM2算法规定的密钥派生函数,输出是一个密钥序列;
A4:计算C2=M⊕t;⊕为异或运算;计算C3=Hash(x2||M||y2);其中Hash是SM2算法规定的散列函数;
A5:输出密文C=C1||C2||C3。
根据算法规定,SM2算法解密方法如下:设需要解密的消息为比特串C=C1||C2||C3,klen为密文中C2的比特长度,使用私钥dA对密文C进行解密,包括以下运算步骤:
B1:从C中取出比特串C1,将C1转换为椭圆曲线上的点,验证C1是否满足椭圆曲线方程,若不满足则报错并退出;计算椭圆曲线点S=H*C1,若S是无穷远点,则报错并退出;
B2:计算dA*C1=(x2,y2),将坐标x2、y2的转换为比特串;
B3:计算t=KDF(x2||y2,klen),若t为全0比特串,则报错并退出;KDF是SM2算法规定的密钥派生函数,输出是一个密钥序列;
B4:从C中取出比特串C2,计算M’=C2⊕t;⊕为异或运算;计算u=Hash(x2||M’||y2),从C中取出比特串C3,若u不等于C3,则报错并退出;其中Hash是SM2算法规定的散列函数;
B5:输出明文M’。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都天瑞芯安科技有限公司,未经成都天瑞芯安科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010138468.2/2.html,转载请声明来源钻瓜专利网。