[发明专利]一种抗能量分析攻击的基于SM2算法的两方协同签名方法有效
申请号: | 202011156120.2 | 申请日: | 2020-10-26 |
公开(公告)号: | CN112422288B | 公开(公告)日: | 2023-06-27 |
发明(设计)人: | 荆继武;尤玮婧;王平建;刘丽敏;王跃武;雷灵光;寇春静 | 申请(专利权)人: | 中国科学院大学 |
主分类号: | H04L9/30 | 分类号: | H04L9/30;H04L9/32;H04L9/08 |
代理公司: | 北京清亦华知识产权代理事务所(普通合伙) 11201 | 代理人: | 罗文群 |
地址: | 100049 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 能量 分析 攻击 基于 sm2 算法 协同 签名 方法 | ||
1.一种抗能量分析攻击的基于SM2的两方协同签名方法,其特征在于,该方法包括以下步骤:
(1)用户A、第一通信方和第二通信方共同商议产生签名过程所需的公开参数,所述的公开参数包括SM2算法的椭圆曲线相关参数q、Fq、E、G、n和一个消息摘要长度为v比特的安全密码杂凑函数Hv(),其中n和q是两个长度满足通信安全要求的大素数,Fq是一个包含q个元素的有限域,E是定义Fq上的一条椭圆曲线,G是阶为n的椭圆曲线上的一个基点;
(2)第一通信方和第二通信方分别生成各自子密钥并协同生成用户A的公钥,包括以下步骤:
(2-1)第一通信方生成一个随机数d1,d1∈[1,n-1],并将该随机数d1作为第一通信方的子私钥,根据随机数d1,计算椭圆曲线点P1,P1=d1[*]G,将椭圆曲线点P1作为第一通信方的子公钥,其中“[*]”表示椭圆曲线上的点乘运算,得到第一通信方的密钥对(d1,P1),第一通信方将子公钥P1发送给第二通信方;
(2-2)第二通信方产生随机数d2,d2∈[1,n-1],并将该随机数d2作为第二通信方的子私钥,根据随机数d2,计算椭圆曲线点P2,P2=d2[*]G,将椭圆曲线点P2作为第二通信方的子公钥,其中“[*]”表示椭圆曲线上的点乘运算,得到第二通信方的密钥对(d2,P2);同时第二通信方根据随机数d2和来自第一通信方的子公钥P1,计算椭圆曲线上的一个点PA',PA'=d2[*]P1-G,其中“[*]”表示椭圆曲线上的点乘运算,“-”表示椭圆曲线上的减法运算,第二通信方将子公钥P2和PA'发送给第一通信方;
(2-3)第一通信方根据步骤(2-1)的子私钥d1和步骤(2-2)中的来自第二通信方的子公钥P2,计算椭圆曲线上的一个点PA,PA=d1[*]P2[-]G,其中“[*]”表示椭圆曲线上的点乘运算,“[-]”表示椭圆曲线上的减法运算;第一通信方对来自第二通信方的PA'进行验证,若PA等于PA',则将PA作为用户A的公钥,若PA不等于PA',则用户A的公钥生成失败;
(3)第一通信方和第二通信方进行协同签名,包括以下步骤:
(3-1)第一通信方计算用户A的待签名消息M的消息摘要e;
(3-2)第一通信方产生随机数k1,k1∈[1,n-1],并根据第二通信方公钥P2和随机数k1计算椭圆曲线上的点Q1,Q1=k1[*]P2,其中“[*]”表示椭圆曲线上的点乘运算,第一通信方将步骤(3-1)的用户A的待签名消息M的消息摘要e和Q1发送给第二通信方;
(3-3)第二通信方对来自第一通信方的Q1进行验证,若Q1满足与用户A、第一通信方和第二通信方在步骤(1)共同商议选定的椭圆曲线方程时,进行步骤(3-4),若Q1不满足步骤(1)选定的椭圆曲线方程,则协同签名失败;
(3-4)第二通信方产生随机数k2,k2∈[1,n-1],第二通信方根据用户A的待签名消息M的消息摘要e、来自第一通信方的Q1和本步骤的k2生成部分签名值r;
(3-5)第二通信方根据第二通信方的子私钥d2,计算d2在Fq上的逆元d2-1,第二通信方根据d2-1、步骤(3-4)的部分签名值r和本步骤的k2计算签名中间值s1,s1=d2-1×(r+k2)mod n,其中“×”表示有限域上的数乘运算,“+”表示有限域上的加法运算,mod表示有限域上的求模运算,第二通信方根据步骤(3-6)的k2对r的有效性进行验证,若r不等于0且r+k2不等于n,则第二通信方将部分签名r和签名中间值s1发给第一通信方,进行步骤(3-6),若r等于0或r+k2等于n,则协同签名失败;
(3-6)第一通信方根据步骤(3-2)的k1对来自第二通信方的s1进行验证,若k1+s1不等于n,则进行步骤(3-7),若k1+s1等于n,则协同签名失败,其中“+”表示有限域上的加法运算;
(3-7)第一通信方根据第一通信方的子私钥d1,计算d1在Fq上的逆元d1-1,根据d1-1、步骤(3-2)选取的k1以及来自第二通信方的s2,计算s,s=d1-1×(k1+s1)-r mod n,其中“×”表示有限域上,的数乘运算,“+”表示有限域上的加法运算,“-”表示有限域上的减法运算,mod表示有限域上的求模运算,并对s进行验证,若s不等于0且s+r不等于n,则进行步骤(3-8),若s等于0或s+r等于n,则协同签名失败;
(3-8)第一通信方使用用户A的公钥PA,对签名结果(r,s)进行验证,若(r,s)是用户A待签名消息M的签名,则输出协同签名结果(r,s),若(r,s)不是用户A待签名消息M的签名,则协同签名失败。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院大学,未经中国科学院大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011156120.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种高分子隔热条生产用模具调节支架
- 下一篇:改进型带电紧固绝缘子专用工具