一种避免椭圆曲线密码体制中点加法出错的方法

文档序号:6563751阅读:293来源:国知局
专利名称:一种避免椭圆曲线密码体制中点加法出错的方法
技术领域
本发明涉及椭圆曲线密码体制(ECC)。

背景技术
近年来,椭圆曲线密码体制(ECC)已经被许多国际标准化组织作为其标准化文件向全球颁布,比如美国国家标准局(ANSI)、电气电子工程师协会(IEEE)、国际标准化组织(ISO)和美国国家标准与技术研究院(NIST)。ECC广泛应用于各种加密/解密方法中。研究学者讨论了许多与ECC实现相关的问题,核心问题无非是椭圆曲线上点加法运算的实现,并且得到了很多很好的结果。2000年,研究出了有限域F2n、有限域Fp(其中p为素数)上椭圆曲线的实现。他们列出了许多快速有效的计算点加法的算法。然而在实现中,如果不注意一些特殊的点,计算机很可能得到错误而奇怪的结果(0,0,0),这样会导致加解密以及数字签名的结果出现偏差。


发明内容
本发明所要解决的技术问题是,供一种在椭圆曲线密码体制中找出出错结果,并解决该出错结果的方法。
本发明为解决上述技术问题所采用的技术方案是,一种避免椭圆曲线密码体制中点加法出错的方法,其特征在于,当点P1与点P2经过普通加法得到结果P3为(0,0,0)时,修正结果P3,修正结果P3具体步骤如下 如点P1的Z坐标为0,则将点P2的值赋值给结果P3; 如点P2的Z坐标为0,则将点P1的值赋值给结果P3; 如点P1与点P2的Z坐标均不为0,则将点P1带入相应的倍乘公式进行计算,将倍乘运算的结果赋值给结果P3。
本发明的有益效果是,能有效解决椭圆曲线密码体制中点加法的出错问题,使加解密以及数字签名的结果更准确,而且本方法不会引起整个加密/解密过程过多的耗时,符合实际应用。

具体实施例方式 结合本发明的需要,介绍椭圆曲线的有关内容 以下为了表述的方便,将逆运算、乘法运算和平方运算分别简记为I、M和S。
1、有限域Fp上的椭圆曲线密码体制中点加法 当点P1≠点P2时,P1+P2为普通加法运算,求其结果P3的运算量为1I+2M+1S;当点P1=点P2时,P+P2=2P1为倍乘运算,求其结果P3的运算量为1I+2M+2S。
有限域Fp上加减法的运算量都可忽略不计,而有限域Fp上求逆的开销太大(1I=80M),为了能避免求逆运算,引入了多种射影系数 1.标准射影系数射影点(X,Y,Z)(Z≠0)对应仿射点(X/Z,Y/Z); 2.Jacob射影系数射影点(X,Y,Z)(Z≠0)对应仿射点(X/Z2,Y/Z3); 3.Chudnovsky Jacob系数Jacob点(X,Y,Z)被表示为(X,Y,Z,Z2,Z3)。
有限域Fp上利用各种系数计算点的普通加法和倍乘所需运算量具体如表1所示,其中A为仿射,P为标准射影,J为Jacob,C为Chudnovsky。

表1.有限域Fp上计算点加法所需运算量比 从表中可以看出,Jacob系数是最快的倍乘运算,而混合Jacob-仿射系数是最快的普通加法运算 具体给出最快形式下的点加法计算公式 Jacob系数的倍乘公式2(X1,Y1,Z1)=(X3,Y3,Z3),其中 D=C2-2A X3=D,Y3=C(A-D)-B,Z3=2Y1Z1(1) 混合Jacob-仿射系数普通加法公式(X1,Y1,Z1)+(X2,Y2,1)=(X3,Y3,Z3),其中 C=A-X1,D=B-Y1, X3=D2-(C3+2X1C2),Y3=D(X1C2-X3)-Y1C3,Z3=Z1C(2) 2、有限域F2n上的椭圆曲线密码体制中点加法 有限域F2n上加减法的运算量可忽略不计,无论P1≠P2还是P1=P2,求其点加法的结果P3都需要1I+2M+1S。
类似于有限域Fp上的情况,在F2n上求逆的开销也比较大(1I=10M),因此也把它引入到各种射影系数下运算。标准射影系数和Jacob射影系数已经在有限域Fp的情况中描述。在F2n上有一种更有效的射影系数--J.López&R.Dahab系数,其射影点(X,Y,Z)(Z≠0)对应仿射点(X/Z,Y/Z2)。
有限域F2n上在各种系数下计算点的普通加法和倍乘所需运算量具体如表2所示。从表中可以看出,无论倍乘运算还是普通加法运算,J.López和R.Dahab介绍的新的射影系数都是最快的。A为仿射,P为标准射影,J为Jacob,N为López & Dahab。

表2.有限域F2n上计算点加法时所需运算量比较 现在给出J.López & R.Dahab系数下的倍乘公式和普通加法公式如下倍乘公式2(X1,Y1,Z1)=(X3,Y3,Z3),其中 普通加法公式(X1,Y1,Z1)+(X2,Y2,1)=(X3,Y3,Z3),其中 B=Z2Z1+X1,C=Z1B,E=AC, X3=A2+D+E,Z3=C2F=X3+X2Z3,G=X3+Y2Z3,Y3=EF+Z3G(4) 在软件实现时,将某些点带入相应的公式,有时会得到错误的结果(0,0,0)。各射影系数在同一有限域上完全类似,所以在有限域Fp上以最快的Jacob射影系数为例,在有限域F2n上以最快的J.López & R.Dahab系数为例。
在Jacob射影系数的倍点运算2J→J中,将特殊点P1=∞=(t2,t3,0),其中t≠0,代入公式(1);在普通加法J+A→J中,将特殊点P1=∞,P1=P2,P1=P2≠∞代入公式(2)将得到,如表3所示结果
表3 有限域Fp上特殊点的正确性检查 同样地,在J.López & R.Dahab系数的倍点运算2N→N中,将特殊点P1=∞=(t,0,0),其中t≠0,代入公式(3);在普通加法N+A→N中,将特殊点P1=∞,P1=P2,P1=P2≠∞代入公式(4)将得到如表4所示结果
表4 有限域F2n上特殊点的正确性检查 综合表3、表4可以得出如下结论 对于椭圆曲线E(FP)和E(F2n),如果将P1=∞(P2=∞)或者P1=P2强行代入对应的普通加法公式中,将得出错误结果(0,0,0)。
找到了在实际应用中导致出现错误结果的特殊点,即可对错误点进行修正在做普通加法时,先对判断结果P3=(0,0,0)是否成立。如果不成立,则结果正确。如果成立,则结果有误,需要修正 如P1=∞(点P1的Z坐标为0),则将点P2的值赋值给结果P3; 如P2=∞(点P2的Z坐标为0),则将点P1的值赋值给结果P3; 如P1=P2(两点的Z坐标均不为0),则将点P1带入相应的倍乘公式进行计算,将倍乘运算的结果赋值给结果P3。
以点P1为例,如果普通加法得出的结果为(0,0,0),那么 其中Z1表示P1点的Z坐标,在实际操作中,必须对作加法的P1和P2都进行如上的判断,对P2做判断时,只需关注坐标Z2(P2点的Z坐标)即可。
比较大数是否等于0所需运算量约是做加法运算的1/100还不到。因此,这种运算的耗时在实际实现中可以忽略不计。该方法完全不影响算法实现的效率。本发明不仅找到了椭圆曲线密码体制在实际软件实现中,应用点加法公式时出错的特殊点,而且给出了一种有效的解决方法,并且此方法所需运算量完全不会影响到算法实现的效率,只需对一些大数进行是否等于0的判断,在实际软件实现中是合理可行的。
权利要求
1.一种避免椭圆曲线密码体制中点加法出错的方法,其特征在于,当点P1与点P2经过普通加法得到结果P3为(0,0,0)时,修正结果P3,修正结果P3具体步骤如下
如点P1的Z坐标为0,则将点P2的值赋值给结果P3;
如点P2的Z坐标为0,则将点P1的值赋值给结果P3;
如点P1与点P2的Z坐标均不为0,则将点P1带入相应的倍乘公式进行计算,将倍乘运算的结果赋值给结果P3。
全文摘要
本发明涉及椭圆曲线密码体制。本发明所要解决的技术问题是,供一种在椭圆曲线密码体制中找出出错结果,并解决该出错结果的方法。本发明中当点P1与点P2经过普通加法得到结果P3为(0,0,0)时,修正结果P3,修正结果P3具体步骤为如点P1的Z坐标为0,则将点P2的值赋值给结果P3;如点P2的Z坐标为0,则将点P1的值赋值给结果P3;如点P1与点P2的Z坐标均不为0,则将点P1带入相应的倍乘公式进行计算,将倍乘运算的结果赋值给结果P3。本发明的有益效果是,能有效解决椭圆曲线密码体制中点加法的出错问题,使加解密以及数字签名的结果更准确,而且本方法不会引起整个加密/解密过程过多的耗时,符合实际应用。
文档编号G06F7/60GK101187857SQ20071020310
公开日2008年5月28日 申请日期2007年12月17日 优先权日2007年12月17日
发明者康红娟, 刘贤洪 申请人:四川长虹电器股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1