一种在嵌入式设备端加快ecdsa验签的方法与流程

文档序号:16275830发布日期:2018-12-14 22:34阅读:381来源:国知局
一种在嵌入式设备端加快ecdsa验签的方法与流程
本发明涉及移动支付
技术领域
,进一步涉及一种在嵌入式设备端加快ecdsa验签的方法。
背景技术
:因为刷卡支付,二维码支付等移动支付手段的进一步推广,ecdsa验签技术被广泛使用到嵌入式设备中。目前移动支付的嵌入式设备普遍要求成本低,导致运算能力存在限制。研究嵌入式设备端加快ecdsa验签的方法可以有效解决上述问题。由于高精度整数乘法和取模运算处于ecdsa验签算法最底层循环,所以改进乘法和取模运算运行速度能够有效提升ecdsa验签速度。在乘法运算中使用快速乘法代替普通乘法运算,是当前在算法方面普遍使用的优化方式。通过改进进位方式、改进递归过程和改进取模运算等,降低算法时间复杂度,以加快算法执行速度。一般来说,高精度整数的乘法和取模运算在高级语言实现时会有三个主要问题:速度慢、取模需两次除法运算、中间数值可能越界。因此,应采用汇编语言和优化算法实现上述运算。使用汇编语言代替高级语言实现,是当前在语言方面普遍使用的优化方式,能够提高指令执行效率,可以加快程序运行速度。技术实现要素:本发明的目的在于提供一种可以加快ecdsa验签的方法。本发明通过如下方式实现:一种在嵌入式设备端加快ecdsa验签的方法,包括如下步骤:步骤1:初始化椭圆曲线记曲线阶为n,签名结果为(r,s),被签名消息为m,签名者公钥为q,获取椭圆曲线基点g;步骤2:在c语言环境下,计算w=s-1modn;步骤3:在c语言环境下,计算u1=m*wmodn;步骤4:在c语言环境下,计算u2=r*wmodn;步骤5:在c语言环境下,计算(x,y)=u1*g+u2*q;步骤6:v=xmodn;步骤7:判断是否满足v=r,满足则签名验证通过,否则签名验证不通过。优选方案一,所述步骤2包括如下具体过程:步骤2.1:取整数p=n,q=s,w=0,t=1,k=0,zj转步骤2.2;步骤2.2:判断是否满足q>0,是则转步骤2.3,否则转步骤2.10;步骤2.3:判断p是否为偶数,是则转步骤2.4,否则转步骤2.5;步骤2.4:继续计算p、t、k,p=p/2,t=2t,k=k+1,返回步骤2.2;步骤2.5:判断q是否为偶数,是则转步骤2.6,否则转步骤2.7;步骤2.6:继续计算q、w、k,q=q/2,w=2w,k=k+1,返回步骤2.2;步骤2.7:计算x=p-q,判断是否满足x>0,是则转步骤2.8,否则转步骤2.9;步骤2.8:继续计算p、w、t,p=x/2,w=w+t,k=k+1,返回步骤2.2;步骤2.9:继续计算q、t、w、k,q=-x/2,t=w+t,w=2w,k=k+1,返回步骤2.2;步骤2.10:判断是否满足w>n,是转步骤2.11,否则转步骤2.12;步骤2.11:继续计算w,w=w-n,转步骤2.12;步骤2.12:继续计算w,w=n-w,转步骤2.13;步骤2.13:判断是否满足k≥0,是转步骤2.14,否则转步骤2.17;步骤2.14:判断w是否为偶数,是则转2.15,否则转步骤2.16;步骤2.15:继续计算w、k,w=w/2,k=k-1,转步骤2.13;步骤2.16:继续计算w,w=(w+n)/2,k=k-1,转步骤2.13;步骤2.17:返回w的值。优选方案二,所述步骤3包括如下具体过程:步骤3.1:取整数t,满足t>n,使(t,n)=1;步骤2.2:计算m′=m*tmodn,w′=w*tmodn;步骤2.3:返回u1=m′*w′*t-1*t-1modn。优选方案三,所述步骤4包括如下具体过程:步骤4.1:取整数t,满足t>n,使(t,n)=1;步骤4.2:计算r′=r*tmodn,w′=w*tmodn;步骤4.3:返回u2=r′*w′*t-1*t-1modn。优选方案四,所述步骤5包括如下具体过程:步骤5.1:记u1=(u1t-1,u1t-2,…,u11,u10)2,u2=(u2k-1,u2k-2,…,u21,u20)2取椭圆曲线点m=∞,n=∞,取整数i=t-1,j=k-1,转步骤5.2;步骤5.2:判断是否满足i≥0,是转步骤5.3,否则转步骤5.5;步骤5.3:继续计算m、i,m=m+m,i=i-1,判断是否满足u1i=1,是转步骤5.4,否则返回步骤5.2;步骤5.4:继续计算m,m=m+g,返回步骤5.2;步骤5.5:判断是否满足j≥0,是转步骤5.6,否则转步骤5.8;步骤5.6:继续计算n、j,n=n+n,j=j-1,判断是否满足u2i=1,是转步骤5.7,否则返回步骤5.5;步骤5.7:继续计算n,n=n+q,返回步骤5.2;步骤5.8:返回(x,y)=m+n。本发明相对于现有技术具有以下优点:(一)通过优化算法提升ecdsa验签速度,没有增加硬件成本。(二)通过优化算法使得一些低端嵌入式设备具有较快的ecdsa验签速度,有效降低产品成本。附图说明:图1为本发明方法的流程框图。具体实施方式:实施例:一种在嵌入式设备端加快ecdsa验签的方法,包括如下步骤:步骤1:初始化椭圆曲线记曲线阶为n,签名结果为(r,s),被签名消息为m,签名者公钥为q,获取椭圆曲线基点g;步骤2:在c语言环境下,计算w=s-1modn;步骤3:在c语言环境下,计算u1=m*wmodn;步骤4:在c语言环境下,计算u2=r*wmodn;步骤5:在c语言环境下,计算(x,y)=u1*g+u2*q;步骤6:v=xmodn;步骤7:判断是否满足v=r,满足则签名验证通过,否则签名验证不通过。上述步骤2包括如下具体过程:步骤2.1:取整数p=n,q=s,w=0,t=1,k=0,zj转步骤2.2;步骤2.2:判断是否满足q>0,是则转步骤2.3,否则转步骤2.10;步骤2.3:判断p是否为偶数,是则转步骤2.4,否则转步骤2.5;步骤2.4:继续计算p、t、k,p=p/2,t=2t,k=k+1,返回步骤2.2;步骤2.5:判断q是否为偶数,是则转步骤2.6,否则转步骤2.7;步骤2.6:继续计算q、w、k,q=q/2,w=2w,k=k+1,返回步骤2.2;步骤2.7:计算x=p-q,判断是否满足x>0,是则转步骤2.8,否则转步骤2.9;步骤2.8:继续计算p、w、t,p=x/2,w=w+t,k=k+1,返回步骤2.2;步骤2.9:继续计算q、t、w、k,q=-x/2,t=w+t,w=2w,k=k+1,返回步骤2.2;步骤2.10:判断是否满足w>n,是转步骤2.11,否则转步骤2.12;步骤2.11:继续计算w,w=w-n,转步骤2.12;步骤2.12:继续计算w,w=n-w,转步骤2.13;步骤2.13:判断是否满足k≥0,是转步骤2.14,否则转步骤2.17;步骤2.14:判断w是否为偶数,是则转2.15,否则转步骤2.16;步骤2.15:继续计算w、k,w=w/2,k=k-1,转步骤2.13;步骤2.16:继续计算w,w=(w+n)/2,k=k-1,转步骤2.13;步骤2.17:返回w的值。上述步骤3包括如下具体过程:步骤3.1:取整数t,满足t>n,使(t,n)=1;步骤2.2:计算m′=m*tmodn,w′=w*tmodn;步骤2.3:返回u1=m′*w′*t-1*t-1modn。上述步骤4包括如下具体过程:步骤4.1:取整数t,满足t>n,使(t,n)=1;步骤4.2:计算r′=r*tmodn,w′=w*tmodn;步骤4.3:返回u2=r′*w′*t-1*t-1modn。上述步骤5包括如下具体过程:步骤5.1:记u1=(u1t-1,u1t-2,…,u11,u10)2,u2=(u2k-1,u2k-2,…,u21,u20)2取椭圆曲线点m=∞,n=∞,取整数i=t-1,j=k-1,转步骤5.2;步骤5.2:判断是否满足i≥0,是转步骤5.3,否则转步骤5.5;步骤5.3:继续计算m、i,m=m+m,i=i-1,判断是否满足u1i=1,是转步骤5.4,否则返回步骤5.2;步骤5.4:继续计算m,m=m+g,返回步骤5.2;步骤5.5:判断是否满足j≥0,是转步骤5.6,否则转步骤5.8;步骤5.6:继续计算n、j,n=n+n,j=j-1,判断是否满足u2i=1,是转步骤5.7,否则返回步骤5.5;步骤5.7:继续计算n,n=n+q,返回步骤5.2;步骤5.8:返回(x,y)=m+n。上述步骤5.3、步骤5.4、步骤5.6、步骤5.7、步骤5.8中涉及的椭圆曲线上点a、点b、点c之间a=b+c的计算,按如下过程进行:步骤5a:记b=(x1,y1),c=(x2,y2),a=(x3,y3),椭圆曲线方程为y2=x3+ax+b;步骤5b:计算c=x1*x1;步骤5c:计算d=x2*x2;步骤5d:计算e=x1*x2;步骤5e:计算λ=(c+d+e+a)/(y1+y2);步骤5f:计算λ2=λ*λ;步骤5g:计算x3=λ2-x1-x2;步骤5h:计算f=λ*x1;步骤5i:计算g=λ*x3;步骤5j:计算y3=f-g-y1;步骤5k:返回a=(x3,y3)。上述步骤5b、步骤5c、步骤5d、步骤5f、步骤5h、5i中涉及的十进制下计算z=x*y,算法为z=alg(x,y),记m=(x与y的位数的最大值),递归下降最低位数为k,m和k均为编译前指定,且m为k的2的幂次倍;包括如下过程:步骤501:判断是否满足m<k,是转步骤502,否则转步骤503;步骤502:返回z=x*y;步骤503:计算m2=m/2;步骤504:记x1为x的高m2位,x2为x的低m2位,y1为y的高m2位,y2为y的低m2位;步骤505:计算z1=alg(x2,y2),z2=alg(x1+x2,y1+y2),z3=alg(x1,y1);步骤506:返回z=z3*10m+(z2-z3-z1)*10m2+z1上述步骤502按如下过程进行:步骤502-1:在汇编语言环境下,记y的各位数字由高至低为yn、yn-1、…、y1;步骤502-2:在汇编语言环境下,计算zi=x*yi(1≤i≤n);步骤502-3:在汇编语言环境下,返回z=∑ni=1zi*10i。在arm9处理器平台运行本发明实现的ecdsa验签,同openssl库实现的ecdsa算法进行时间测试对比,得到如下结果:第一种情况:后台有应用程序运行,测试前cpu使用率一般达80%以上,平均值误差约10ms;测试结果对比如下表版本平均时间最小时间最大时间本发明53ms4ms130msopenssl验签1036ms814ms1256ms第二种情况:后台无应用程序运行,测试前cpu使用率一般在1%以下,平均值误差约1ms;测试结果对比如下表版本平均时间最小时间最大时间本发明4ms4ms8msopenssl验签81ms78ms125ms测试环境参数:主频:454mhz,内存128m,每个测试进行1000次统计,测试结果显示,在相同嵌入式平台上,本发明时间性能具有显著优势。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1