一种SM2椭圆曲线签名验证算法的制作方法

文档序号:15682812发布日期:2018-10-16 20:45阅读:260来源:国知局

本发明涉及信息安全技术领域,具体涉及一种sm2椭圆曲线签名验证算法。



背景技术:

身份认证技术是确保信息安全的主导力量,认证系统的设计与实现变的至关重要。只有通过高可靠性的身份认证系统,才能有效保障通信双方的信息安全,防止信息在传输过程中被不法分子截获。sm2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,数字签名技术是椭圆曲线公钥密码算法的一个重要应用,它在现代电子商务和政务中扮演着重要角色,可以保证消息在传输过程中的完整性,对发送者的身份进行认证,防止交易中抵赖的发生。

现有的sm2签名验签算法在签名生成(签名验证)过程中,大多直接对待签名的消息(待验证的消息)和杂凑值进行首尾拼接操作,这种首尾拼接方式过于简单,容易受到不法分子的攻击,安全性较低。

sm2椭圆曲线公钥密码算法在运算过程中,最耗时间的就是点乘算法,而在点乘运算中,最耗时的为模逆运算,所需时间为模乘运算的十多倍,由于完成一次点乘运算在不同坐标下的所需要进行的模逆运算的次数是不同的,仿射坐标系下的蒙哥马利点乘算法中,每次点运算(点加、倍点运算)都需要进行一次模逆运算,多次的模逆运算会耗费大量的时间,标准投影坐标下的蒙哥马利点乘算法中,点运算(点加、倍点运算)不需要进行模逆运算,但是模乘运算的次数会大大增加,同样也会耗费大量的时间。传统的蒙哥马利点乘算法往往只在一个坐标系下进行点乘运算,只使用一个模乘单元且采用串行计算的方法,导致点乘运算速度较慢,进而导致整个签名验签过程运算速度较慢,耗费大量时间的问题。



技术实现要素:

本发明的目的在于克服现有技术的缺点与不足,提供一种运算速度更快、安全性更高的sm2椭圆曲线签名验证算法。

本发明的目的通过下述技术方案实现:

一种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'是否成立,若成立则输出验证成功,若不成立则输出验证失败。

优选地,所述点乘算法为标准投影坐标下的蒙哥马利点乘算法,其中c1、c2、c3为三个乘法单元,c1(xm,zn)就是用模乘法单元c1对xm和zn进行模乘运算;所述点乘算法包括下述步骤:

步骤一,输入点g=(xg,yg)∈e(f2m),k=(km-1,…k1,k0)2,其中ki∈{0,1},正整数i∈[0,m-1];

将仿射坐标转换为标准投影坐标,在标准投影坐标下进行步骤二和步骤三的运算;

步骤二,令xm=1,zm=0,xn=xg,zn=1;

计算xg-1=1/xg;

步骤三,对于i从m-1到0,重复执行以下点加运算和倍点运算:

3.1,w1=c1(xm,zn),w2=c2(xn,zm);

在3.1中,模乘单元c1和c2并行运算,可加快运算速度,减少运算时间;

3.2,若ki=0,则zn=(w1+w2)2,xm=(xm+zm)4

w1=c1(xm,zm),w2=c2(w1,w2),w3=c3(xg,zn),

xn=w2+w3,zm=w12

在3.2中,模乘单元c1、c2、c3并行运算,可加快运算速度,减少运算时间;

3.3,若ki=1,则zm=(w1+w2)2,xn=(xn+zn)4

w1=c1(xn,zn),w2=c2(w1,w2),w3=c3(xg,zm),

xm=w2+w3,zn=w12

在3.3中,模乘单元c1、c2、c3并行运算,可加快运算速度,减少运算时间;

步骤四,若zn=0,则xm=xg,zm=xg+yg;该步骤将标准射影坐标下的点转换为仿射坐标下的点;

步骤五,若zn≠0,则xm=xm/zm,xn=xn/zn,

w2=c2(xm+xg,xn+xg),

w3=c3(xm+xg,xg-1),w4=w2+xg2+yg,

w2=c2(w3,w4),zm=w2+yg;该步骤将标准射影坐标下的点转换为仿射坐标下的点;

步骤六,x1=xm,y1=zm;

步骤七,输出[k]g=(x1,y1)。

本发明与现有技术相比具有以下的有益效果:

(1)本发明在数字签名生成的过程中,首先获取一段随机比特串,然后将待签名的消息与随机比特串异或操作后再与杂凑值进行与非运算,若签名信息在传输的过程中被不法分子截获,不法分子在不知道签名过程中的异或操作和与非操作的情况下,不能完全破解和伪造,从而提高了签名信息的安全性,防止不法分子截获签名信息后进行破解和伪造;

(2)本发明在数字签名验证的过程中,将待验证的消息与随机比特串异或操作后再与杂凑值进行与非运算,若待验证的签名信息在传输的过程中被不法分子进行了篡改,不法分子在不知道验签过程中的异或操作和与非操作的情况下,篡改后的签名信息是不能验证成功的,从而提高了验证系统的安全性;

(3)本发明签名生成和签名验证过程中的点乘算法采用一种改进后的蒙哥马利点乘算法进行点乘运算,将仿射坐标转换为标准投影坐标,消除了点乘运算中点运算(点加、倍点运算)过程中的模逆运算,通过三个模乘单元并行计算的方式来进行模乘运算,并且在点运算(点加、倍点运算)的同时,将标准投影坐标转换为仿射坐标时所需的模逆运算同时进行,大大加快了点乘运算的速度,减少了运算时间。

附图说明

图1为本发明数字签名生成算法的流程图;

图2为本发明数字签名验证算法的流程图;

图3为本发明蒙哥马利点乘算法的流程图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

本发明所要解决的技术问题是提供一种sm2椭圆曲线签名验证算法,对sm2签名生成算法(签名验证算法)进行了改进,首先获取一段随机比特串,然后将待签名的消息(待验证的消息)与随机比特串异或操作后再与杂凑值进行与非运算,提高了签名验签系统的安全性,签名生成和签名验证过程中的点乘算法采用一种改进后的蒙哥马利点乘算法进行点乘运算,将仿射坐标转换为标准投影坐标,消除了点乘运算中点运算(点加、倍点运算)过程中的模逆运算,通过三个模乘单元并行计算的方式来进行模乘运算,并且在点运算(点加、倍点运算)的同时,将标准投影坐标转换为仿射坐标时所需的模逆运算同时进行,大大加快了点乘运算的速度,减少了运算时间。

本发明中所涉及到的sm2椭圆曲线和算法均是定义在二进制域f2m上的,椭圆曲线的方程为非超奇异曲线y2+xy=x3+ax2+b,其中a,b∈f2m,且b≠0。椭圆曲线e(f2m)={(x,y)|x,y∈f2m,且满足方程y2+xy=x3+ax2+b}∪{o},其中o为无穷远点;将二进制域f2m下的非超奇异椭圆曲线方程y2+xy=x3+ax2+b转换为标准投影坐标下的方程y2z+xyz=x3+ax2z+bz3,投影点(x:y:z),z≠0与仿射点(x/z,y/z)相对应,无穷远点∞对应于(0:1:0)。

如图1~3所示,一种sm2椭圆曲线签名验证算法,包括下述步骤:

s1,如图1所示,数字签名生成算法:

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,如图2所示,数字签名验证算法:

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'是否成立,若成立则输出验证成功,若不成立则输出验证失败。

如图3所示,所述点乘算法为标准投影坐标下的蒙哥马利点乘算法,其中c1、c2、c3为三个乘法单元,c1(xm,zn)就是用模乘法单元c1对xm和zn进行模乘运算;所述点乘算法包括下述步骤:

步骤一,输入点g=(xg,yg)∈e(f2m),k=(km-1,…k1,k0)2,其中ki∈{0,1},正整数i∈[0,m-1];

将仿射坐标转换为标准投影坐标,在标准投影坐标下进行步骤二和步骤三的运算;

步骤二,令xm=1,zm=0,xn=xg,zn=1;

计算xg-1=1/xg;

步骤三,对于i从m-1到0,重复执行以下点加运算和倍点运算:

3.1,w1=c1(xm,zn),w2=c2(xn,zm);

在3.1中,模乘单元c1和c2并行运算,可加快运算速度,减少运算时间;

3.2,若ki=0,则zn=(w1+w2)2,xm=(xm+zm)4

w1=c1(xm,zm),w2=c2(w1,w2),w3=c3(xg,zn),

xn=w2+w3,zm=w12

在3.2中,模乘单元c1、c2、c3并行运算,可加快运算速度,减少运算时间;

3.3,若ki=1,则zm=(w1+w2)2,xn=(xn+zn)4

w1=c1(xn,zn),w2=c2(w1,w2),w3=c3(xg,zm),

xm=w2+w3,zn=w12

在3.3中,模乘单元c1、c2、c3并行运算,可加快运算速度,减少运算时间;

步骤四,若zn=0,则xm=xg,zm=xg+yg;该步骤将标准射影坐标下的点转换为仿射坐标下的点;

步骤五,若zn≠0,则xm=xm/zm,xn=xn/zn,

w2=c2(xm+xg,xn+xg),

w3=c3(xm+xg,xg-1),w4=w2+xg2+yg,

w2=c2(w3,w4),zm=w2+yg;该步骤将标准射影坐标下的点转换为仿射坐标下的点;

步骤六,x1=xm,y1=zm;

步骤七,输出[k]g=(x1,y1)。

本发明在数字签名生成的过程中,首先获取一段随机比特串,然后将待签名的消息与随机比特串异或操作后再与杂凑值进行与非运算,若签名信息在传输的过程中被不法分子截获,不法分子在不知道签名过程中的异或操作和与非操作的情况下,不能完全破解和伪造,从而提高了签名信息的安全性,防止不法分子截获签名信息后进行破解和伪造;在数字签名验证的过程中,将待验证的消息与随机比特串异或操作后再与杂凑值进行与非运算,若待验证的签名信息在传输的过程中被不法分子进行了篡改,不法分子在不知道验签过程中的异或操作和与非操作的情况下,篡改后的签名信息是不能验证成功的,从而提高了验证系统的安全性;签名生成和签名验证过程中的点乘算法采用一种改进后的蒙哥马利点乘算法进行点乘运算,将仿射坐标转换为标准投影坐标,消除了点乘运算中点运算(点加、倍点运算)过程中的模逆运算,通过三个模乘单元并行计算的方式来进行模乘运算,并且在点运算(点加、倍点运算)的同时,将标准投影坐标转换为仿射坐标时所需的模逆运算同时进行,大大加快了点乘运算的速度,减少了运算时间;可以保证消息在传输过程中的完整性,对发送者的身份进行认证,防止交易中抵赖的发生。

上述为本发明较佳的实施方式,但本发明的实施方式并不受上述内容的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1