The invention discloses a SM2 elliptic curve signature verification algorithm, including the following steps: digital signature generation algorithm: input the original data of signer A, including the system parameters of elliptic curve (base point G, order n), hash value ZA, signer A's private key dA, message M to be signed; obtain random bit string W; the invention in digital In the process of signature generation, a random bit string is obtained first, and then the message to be signed is differentiated from or operated on the random bit string, and then the hash value is non-operated. If the signature information is intercepted by the illegal elements in the transmission process, the illegal elements do not know the XOR operation and non-operation in the signature process. Therefore, the security of signature information can be improved and the illegal elements can not intercept the signature information to crack and forge.
【技术实现步骤摘要】
一种SM2椭圆曲线签名验证算法
本专利技术涉及信息安全
,具体涉及一种SM2椭圆曲线签名验证算法。
技术介绍
身份认证技术是确保信息安全的主导力量,认证系统的设计与实现变的至关重要。只有通过高可靠性的身份认证系统,才能有效保障通信双方的信息安全,防止信息在传输过程中被不法分子截获。SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,数字签名技术是椭圆曲线公钥密码算法的一个重要应用,它在现代电子商务和政务中扮演着重要角色,可以保证消息在传输过程中的完整性,对发送者的身份进行认证,防止交易中抵赖的发生。现有的SM2签名验签算法在签名生成(签名验证)过程中,大多直接对待签名的消息(待验证的消息)和杂凑值进行首尾拼接操作,这种首尾拼接方式过于简单,容易受到不法分子的攻击,安全性较低。SM2椭圆曲线公钥密码算法在运算过程中,最耗时间的就是点乘算法,而在点乘运算中,最耗时的为模逆运算,所需时间为模乘运算的十多倍,由于完成一次点乘运算在不同坐标下的所需要进行的模逆运算的次数是不同的,仿射坐标系下的蒙哥马利点乘算法中,每次点运算(点加、倍点运算)都需要进行一次模逆运算,多次的模逆运算会耗费大量的时间,标准投影坐标下的蒙哥马利点乘算法中,点运算(点加、倍点运算)不需要进行模逆运算,但是模乘运算的次数会大大增加,同样也会耗费大量的时间。传统的蒙哥马利点乘算法往往只在一个坐标系下进行点乘运算,只使用一个模乘单元且采用串行计算的方法,导致点乘运算速度较慢,进而导致整个签名验签过程运算速度较慢,耗费大量时间的问题。
技术实现思路
本专利技术的目的在于克服现有 ...
【技术保护点】
1.一种SM2椭圆曲线签名验证算法,其特征在于,包括下述步骤:S1,数字签名生成算法:S1.1,输入签名方A的原始数据,包括椭圆曲线的系统参数(基点G、阶n),杂凑值ZA,签名方A的私钥dA,待签名的消息M;S1.2,获取随机比特串W;S1.3,将消息M与随机比特串W进行异或操作,得Mw;S1.4,将杂凑值ZA和Mw进行与非操作,得Me;S1.5,采用SM3算法对Me进行密码杂凑运算,得杂凑值e;S1.6,产生随机数k∈[1,n‑1];S1.7,使用点乘算法计算椭圆曲线点(x1,y1)=[k]G;S1.8,计算r=(e+x1)mod n;S1.9,检验r=0或r+k=n是否成立,若成立则返回S1.6,若不成立则执行S1.10;S1.10,计算s=((1+dA)‑1*(k‑r*dA))mod n;S1.11,检验s=0是否成立,若成立则返回S1.6,若不成立则执行S1.12;S1.12,输出随机比特串W,消息M及其数字签名(r,s);S2,数字签名验证算法:S2.1,输入验证方B的原始数据,包括椭圆曲线系统参数(基点G、阶n),签名方A的公钥PA、随机比特串W、杂凑值ZA,需要验签的消息 ...
【技术特征摘要】
1.一种SM2椭圆曲线签名验证算法,其特征在于,包括下述步骤:S1,数字签名生成算法:S1.1,输入签名方A的原始数据,包括椭圆曲线的系统参数(基点G、阶n),杂凑值ZA,签名方A的私钥dA,待签名的消息M;S1.2,获取随机比特串W;S1.3,将消息M与随机比特串W进行异或操作,得Mw;S1.4,将杂凑值ZA和Mw进行与非操作,得Me;S1.5,采用SM3算法对Me进行密码杂凑运算,得杂凑值e;S1.6,产生随机数k∈[1,n-1];S1.7,使用点乘算法计算椭圆曲线点(x1,y1)=[k]G;S1.8,计算r=(e+x1)modn;S1.9,检验r=0或r+k=n是否成立,若成立则返回S1.6,若不成立则执行S1.10;S1.10,计算s=((1+dA)-1*(k-r*dA))modn;S1.11,检验s=0是否成立,若成立则返回S1.6,若不成立则执行S1.12;S1.12,输出随机比特串W,消息M及其数字签名(r,s);S2,数字签名验证算法:S2.1,输入验证方B的原始数据,包括椭圆曲线系统参数(基点G、阶n),签名方A的公钥PA、随机比特串W、杂凑值ZA,需要验签的消息M'及其数字签名(r',s');S2.2,检验r'∈[1,n-1]是否成立,若成立则执行S2.3,若不成立则输出验证失败;S2.3,检验s'∈[1,n-1]是否成立,若成立则执行S2.4,若不成立则输出验证失败;S2.4,将消息M'与随机比特串W进行异或操作,得Mw';S2.5,将杂凑值ZA和Mw'进行与非操作,得Me';S2.6,采用SM3算法对Me'进行密码杂凑运算,得到杂凑值e';S2.7,计算t=(r'+s')modn;S2.8,检验t=0是否成立,若成立则输出验证失败,若不成立则执行S2.9;S2.9,使用点乘算法计算椭圆曲线点(x1',y1')=[s']G+[t]PA;S2.10,计算R=(e'+x1')modn;S2.11,检验R=r'是否成立,若成立则输...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。