[发明专利]一种基于SM2算法的多方协同数字签名方法有效
| 申请号: | 202011032273.6 | 申请日: | 2020-09-27 |
| 公开(公告)号: | CN112152808B | 公开(公告)日: | 2022-11-11 |
| 发明(设计)人: | 李元正;唐伟;谭良;邹莉萍;杨贺昆;陈阳;肖欢;尚兴林;文艺 | 申请(专利权)人: | 成都国泰网信科技有限公司 |
| 主分类号: | H04L9/08 | 分类号: | H04L9/08;H04L9/30;H04L9/32 |
| 代理公司: | 成都九鼎天元知识产权代理有限公司 51214 | 代理人: | 贾年龙 |
| 地址: | 610000 四川省*** | 国省代码: | 四川;51 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 sm2 算法 多方 协同 数字签名 方法 | ||
1.一种基于SM2算法的多方协同数字签名方法,其特征在于,包括以下步骤:
S1、对协同签名的m个参与方各自形成公私钥对;
所述步骤S1的具体步骤为:
S11、对各参与方Ui(i=1,2,…,m)分别选择一个随机数di∈[1,n-1](i=1,2,…,m),n为椭圆曲线的阶;
S12、将随机数di作为各参与方Ui的私钥,并将私钥秘密保存;
S13、根据私钥di生成各参与方Ui的公钥PKi=diG(i=1,2,…,m),G为椭圆曲线的基点,并将公钥PKi发送给服务器S;
S14、通过服务器S将公钥{PK1,PK2,…,PKm}发送给各参与方{U1,U2,…,Um};
S2、对m个参与方协同生成协同签名的组公钥;
所述步骤S2的具体步骤为:
S21、计算参与方U1在椭圆曲线E上的组子公钥并将P1发送给服务器S,再通过服务器S将P1发送给参与方U2;
S22、计算参与方{U2,U3,…Um-1}在椭圆曲线E上的组子公钥并将Pi发送给服务器S,再通过服务器S将Pi发送给参与方Ui+1;
S23、计算参与方Um在椭圆曲线E上的组子公钥将Pm作为完整的协同签名组公钥P;
S24、通过参与方Um将协同签名组公钥P发送给服务器S;
S25、通过服务器S将协同签名组公钥P发送给参与方U1,供签名验证者验签时使用;
S3、通过公私钥对使各参与方协同生成签名;
所述步骤S3的具体步骤为:
S31、为各参与方{U1,U2,…Um}分别选择一个随机数k1,k2,…,km∈[1,n-1];
S32、为参与方U1选择一个随机数b∈[1,n-1];
S33、对参与方Ui(i=1,2,…,m)分别计算签名随机数并将Ki发送给服务器S;
S34、服务器S计算KiG,并将KiG发送给各参与方U1,U2,…Um;
S35、通过参与方U1计算椭圆曲线E上一点坐标(x,y)=K1G+K2G+…KmG;
S36、通过参与方U1计算消息摘要e=Hash(Z||M);
其中,Hash()为消息摘要长度256比特的密码杂凑函数,Z为用户的身份标识、部分椭圆曲线参数和用户公钥的杂凑,M为明文;
S37、通过参与方U1计算协同签名的第一部分签名r=e+x,当r=0modn时,返回步骤S31,否则进入步骤S38;
S38、计算参与方U1的中间聚合子密钥D1=b·d1,并将D1用参与方U2的公钥PK2加密得到SM2_En(PK2,D1),将SM2_En(PK2,D1)发送给服务器S,再通过服务器S将SM2_En(PK2,D1)发送给参与方U2;
S39、通过参与方{U2,U3,…Um-1}用私钥di(i=1,2,…,m)解密得到Di-1,计算参与方Ui的中间聚合子密钥Di=Di-1·di(i=2,3,…,m-1),并将Di用参与方Ui+1的公钥PKi+1加密得到SM2_En(PKi+1,Di),将SM2_En(PKi+1,Di)发送给服务器S,再通过服务器S将SM2_En(PKi+1,Di)发送给参与方Ui+1;
S310、通过参与方Um用私钥dm解密得到Dm-1,计算中间聚合密钥D=Dm=Dm-1·dm,并将D用服务器S的公钥PKS加密得到SM2_En(PKS,Dm),将SM2_En(PKS,Dm)发送给服务器S;
S311、通过服务器S用私钥dS解密得到D,计算Q=(K1+K2+…+Km+r)·D,并将Q用参与方U1的公钥PK1加密得到SM2_En(PK1,Di),将SM2_En(PK1,Di)发送给参与方U1;
S312、通过参与方U1用私钥d1解密得到Q,计算协同签名的另一部分签名当s=0modn时,返回步骤S31,否则进入步骤S313;
S313、通过参与方U1生成对明文M的完整签名(s,r),并将签名(s,r)发送给签名验证者V;
S4、通过签名验证者和组公钥对签名进行验证,若验证通过则使用该签名;
所述步骤S4的具体步骤为:
S41、通过签名验证者V接收到协同签名(s',r');
S42、通过签名验证者V检验s'∈[1,n-1]是否成立,若不成立,则签名不通过,若成立则进入步骤S43;
S43、通过签名验证者V检验r'∈[1,n-1]是否成立,若不成立,则签名不通过,若成立则进入步骤S44;
S44、通过签名验证者V计算第一个验签参数t=s'+r',如果t=0modn,则签名不通过,否则进入步骤S45;
S45、通过签名验证者V计算消息以及参数摘要e'=Hash(Z||M');
S46、通过签名验证者V计算椭圆曲线点(x',y');
S47、通过签名验证者V计算第二个验签参数R=e'+x',检验R=r'是否成立,若成立,则签名验证通过,使用签名(s,r),若不成立,则签名验证不通过。
2.根据权利要求1所述的基于SM2算法的多方协同数字签名方法,其特征在于,所述步骤S46中椭圆曲线点(x',y')的计算公式为:
(x',y')=s'G+tP。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都国泰网信科技有限公司,未经成都国泰网信科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011032273.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种鸡肉香精的生产系统
- 下一篇:一种数据处理方法、装置、设备及介质





