一种椭圆曲线标量乘方法技术

技术编号:16382741 阅读:34 留言:0更新日期:2017-10-15 20:24
本发明专利技术提出了一种椭圆曲线标量乘方法,该方法包括如下步骤:步骤一,划分标量d为两个等长的子比特串d=(B2||B1);步骤二,基于命题逻辑操作从两个等长子比特串中抽取共同子比特串Bcom,从而拆分标量为三个部分Bcom,BXOR_1和BXOR_2,且

A scalar multiplication method for elliptic curves

The present invention provides a method for scalar multiplication on elliptic curves, which comprises the following steps: A, dividing into two equal scalar D sub bit string D = (B2||B1); step two, propositional logic from two bit string to extract equal length common sub bit string based on Bcom, which is a scalar split the three part of the Bcom, BXOR_1 and BXOR_2, and

【技术实现步骤摘要】
一种椭圆曲线标量乘方法
本专利技术涉及一种高效的椭圆曲线标量乘方法。
技术介绍
1980年代中期,Miller和Koblitz分别独立地提出了椭圆曲线密码体制(ellipticcurvecryptosystems,ECC)。相对于其它的公钥密码体制,ECC只需较短的私钥就可以达到较高的安全级别。所以,近年来ECC受到广泛关注。短的私钥意味着更少的功耗、计算开销和存储空间,尤其适用于资源受限的便携式计算设备(例如智能卡)。所以,ECC的这种特性使得它们非常适用于资源受限的计算设备的密码服务。在ECC中,标量乘是最主要且最耗时的操作。二进制方法是计算标量乘最常用的方法:给定一个标量d和一个椭圆曲线上的点P,标量乘dP的计算是由一系列取决于d的比特序列的点加(ADD)和点倍(DBL)来完成,也称它们为椭圆曲线操作,其中d是ECC的私钥。本专利技术提出了一种高效的标量乘方法,比二进制方法减少了(k/8)·A计算复杂度。
技术实现思路
本专利技术要解决的技术问题是提出一种高效的椭圆曲线密码标量乘方法,该方法划分标量比特串为两半,抽取共同的子比特串,节省了计算椭圆曲线点加操作的次数。本专利技术提供了一种椭圆曲线标量乘方法,包括以下步骤:步骤一,划分标量d为两个等长的子比特串d=(B2||B1);“||”是比特串的并置符号;步骤二,基于命题逻辑操作从两个等长子比特串中抽取共同子比特串Bcom,从而拆分标量为三个部分:Bcom、BXOR_1和BXOR_2,且B1=Bcom+BXOR_1,B2=Bcom+BXOR_2;BXOR_1和BXOR_2分别表示B1和B2分别与共同比特串Bcom的“异或”位元运算结果;步骤三,划分标量乘dP为3个子标量乘,为:BXOR_1·P、BXOR_2·P和Bcom·P,并分别计算结果Q1、Q2和Q3;步骤四,整合计算步骤三中3个子标量乘的结果Q1、Q2和Q3,得出标量乘dP。作为本专利技术的进一步改进,所述步骤一中,其中k为标量d比特长度。作为本专利技术的进一步改进,所述步骤二中,Bcom=B1∧B2,即B1和B2的“与”位元运算结果。例如,0010=0110∧1010。作为本专利技术的进一步改进,所述步骤二中,例如,作为本专利技术的进一步改进,所述步骤三中,计算3个子标量乘为BXOR_1·P、BXOR_2·P和Bcom·P,都是采用二进制方法,且标量扫描是从二进制低位到高位的顺序。作为本专利技术的进一步改进,所述步骤四中,整合计算3个子标量乘的结果Q1、Q2和Q3得到最终的标量乘dP的结果,是通过以下三个步骤来计算:(1)Q1=Q1+Q3;Q2=Q2+Q3;(2)k/2次循环执行点倍操作:Q2=2Q2;(3)Q1=Q2+Q1;返回Q1,Q1即是最终标量乘dP的结果。本专利技术的有益效果是:根据该算法,计算dP所需的ADD和DBL的平均数量为:(3k/8)·A+kD+3A≈(3k/8)·A+kD,比二进制方法大约减少(k/8)·A的计算复杂度。附图说明图1是本专利技术标量折半划分示意图;图2是本专利技术拆分标量示意图;图3是本专利技术的标量乘计算流程图。具体实施方式下面结合附图对本专利技术做进一步说明。本专利技术的一种高效的椭圆曲线密码标量乘方法,包括以下步骤:步骤一,折半划分标量d为标量d为二进制,其长度为k,且若k为奇数,则在最高位补上0;步骤二,计算Bcom,BXOR_1,BXOR_2;初始化椭圆曲线点,初始化三个椭圆曲线点为空值,Q1=Q2=Q3=null;步骤三,k/2次循环执行以下操作:如果则Q1=Q1+P;如果则Q2=Q2+P;如果则Q3=Q3+P;P=2P;循环结束后,BXOR_1·P、BXOR_2·P和B1_AND_2·P的值分别在Q1,Q2和Q3中;步骤四,计算Q1=Q1+Q3;Q2=Q2+Q3;Q1=Q1+Q3和Q2=Q2+Q3的结果分别是B1P和B2P;步骤五,k/2次循环执行点倍操作:Q2=2Q2;计算B2P的k/2次点倍运算,得到2k/2·(B2·P)的结果;步骤六,计算Q1=Q2+Q1;由最后一个语句Q1=Q2+Q1得到2k/2·(B2·P)+(B1·P)的结果,即标量乘dP的最终结果;步骤七,返回结果Q1。用一个简单的例子来阐明该标量折半划分方法。简单起见,假定标量d=166=(10100110)2,长度k=8。折半标量d,即:d=166=(10100110)2=(1010||0110)2=(B2||B1)这样,有:有:因此,标量乘dP可由下式计算:根据上述算法,计算标量乘dP的过程如下:(1)当e=1时,(即:),执行操作:P=2P;(2)当e=2时,(即:),执行操作:Q3=Q3+P;P=2P;(3)当e=3时,(即:),执行操作:Q1=Q1+P;P=2P;(4)当e=4时,(即:),执行操作:Q2=Q2+P;P=2P;很明显,根据上述步骤三中的循环结束后,BXOR_1·P,BXOR_2·P和Bcom·P的值分别在变量Q1,Q2和Q3中。如下所示:B1P和B2P的结果从两个语句Q1=Q1+Q3和Q2=Q2+Q3得到。如下所示:根据上述等式,dP的结果可由上述步骤五中的循环以及最后一个操作Q1=Q2+Q1得到:dP=(B2||B1)·P=24·B2P+B1P=24·10P+6P=166P.该案例的计算复杂度是3A+8D,若采用二进制方法,则计算复杂度是4A+8D,减少了一个点加操作。以上内容是结合具体的优选实施方式对本专利技术所作的进一步详细说明,不能认定本专利技术的具体实施只局限于这些说明。对于本专利技术所属
的普通技术人员来说,在不脱离本专利技术构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本专利技术的保护范围。本文档来自技高网
...
一种椭圆曲线标量乘方法

【技术保护点】
一种椭圆曲线标量乘方法,其特征在于,包括以下步骤:步骤一,划分标量d为两个等长的子比特串d=(B2||B1);“||”是比特串的并置符号;步骤二,从两个等长子比特串中抽取共同子比特串Bcom,从而拆分标量为三个部分:Bcom、BXOR_1和BXOR_2,且B1=Bcom+BXOR_1,B2=Bcom+BXOR_2;BXOR_1和BXOR_2分别表示B1和B2分别与共同比特串Bcom的“异或”位元运算结果;步骤三,划分标量乘dP为3个子标量乘,为:BXOR_1·P、BXOR_2·P和Bcom·P,并分别计算结果Q1、Q2和Q3;步骤四,整合计算步骤三中3个子标量乘的结果Q1、Q2和Q3,得出标量乘dP。

【技术特征摘要】
1.一种椭圆曲线标量乘方法,其特征在于,包括以下步骤:步骤一,划分标量d为两个等长的子比特串d=(B2||B1);“||”是比特串的并置符号;步骤二,从两个等长子比特串中抽取共同子比特串Bcom,从而拆分标量为三个部分:Bcom、BXOR_1和BXOR_2,且B1=Bcom+BXOR_1,B2=Bcom+BXOR_2;BXOR_1和BXOR_2分别表示B1和B2分别与共同比特串Bcom的“异或”位元运算结果;步骤三,划分标量乘dP为3个子标量乘,为:BXOR_1·P、BXOR_2·P和Bcom·P,并分别计算结果Q1、Q2和Q3;步骤四,整合计算步骤三中3个子标量乘的结果Q1、Q2和Q3,得出标量乘dP。2.根据权利要求1所述的一种椭圆曲线标量乘方法,其特征在于:所述步骤一中,其中k为标量d比特长度。3.根据...

【专利技术属性】
技术研发人员:邬可可
申请(专利权)人:深圳信息职业技术学院
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1