一种基于wNAF改进的标量乘算法

文档序号:30623233发布日期:2022-07-02 05:14阅读:367来源:国知局
一种基于wNAF改进的标量乘算法
一种基于wnaf改进的标量乘算法
技术领域
1.本发明涉及的标量乘算法是一种可以降低标量乘计算复杂度的算法。


背景技术:

2.椭圆曲线密码系统(ecc)的主要优点是密钥大小小,用160位密钥代替rsa的1024位密钥,并提供相同的安全级别,ecc还具有功耗低、计算速度快等突出优点,特别适用于wsn、pda等处理能力、存储空间、带宽、功耗受限的环境。
3.近年来,许多密码学领域的研究人员对于有限域上椭圆曲线标量乘有着浓厚的兴趣,主要的研究方向有了解椭圆曲线密码如何实现以及如何降低其复杂性。其中研究最广泛的是wnaf算法,此方法虽然降低了计算复杂度,但是预计算耗费太多资源,不适用于窗口很大的情况。
4.椭圆曲线中最耗时的操作就是计算标量乘。本算法是基于wnaf算法改进的一种椭圆曲线标量乘算法,重新构造了进行标量乘运算时的k链,进而降低了标量乘的计算复杂度。


技术实现要素:

5.发明的目的在于提供一种改进的wnaf标量乘的方法,目的是降低标量乘的计算复杂度。
6.本发明的实现包括以下步骤。
7.第一步,输入标量k和窗口宽度w;
8.第二步,预计算出{20p,21p,...,2wp}和{3p,5p,....,(2
w-2-1)p};
9.第三步,利用wnaf算法确定k链中的值,判断k对2取余是否为0,若为0,则ei=0,若不为0,则ei=k mod 2
w+1
,判断ei是否大于2w,若大于则ei=e
i-2
w+1
,k=k-ei,k=k/2,此轮运算结束,下一轮继续判断k对2取余是否为0,直至得到整个k链;
10.第四步,通过第三步得到的k链进行标量乘计算q=k*p得到标量乘q。
11.作为本发明的进一步改进,所述的第一步,w窗口宽度范围是{2,3,4,5,6,7,8,9,10,11}。通常窗口越大,此算法降低的计算复杂度更加明显。
12.作为本发明的进一步改进,所述的第二步,wnaf算法预计算是{p,3p,5p,...,(2
w-1)p},改进之后,预计算为{20p,21p,...,2wp}和{3p,5p,....,(2
w-2-1)p},当窗口宽度很大的情况下,极大的减少了预计算的个数。
13.作为本发明的进一步改进,所述的第四步,由第三步得到的k链中,非零数值是由{p,3p,5p,...,(2
w-1)p}组成,本发明中已经预计算出了{20p,21p,...,2wp},这就会产生差值,为了弥补差值,将差值也预计算出来即{3p,5p,....,(2
w-2-1)p},例如当窗口宽度为5时,k链中存在非零数字23,则23p=24p+7p。
14.作为本发明的进一步改进,所述的第四步,在进行标量乘计算时,进行到点加运算时,判断ei正负,若为正,执行运算q=q+kip;若为负,执行运算q=q-kip,ki等于|ei|,kip是
第二步预计算出来的,由{20p,21p,...,2wp}和{3p,5p,....,(2
w-2-1)p}相加减得到,减少了预计算的个数,进而减少了标量乘计算的复杂度。
15.本发明的预计算存储部分,主要是根据不同窗口的长度计算出相应的值进行存储。
16.本发明的核心技术内容在于计算标量乘时,改变了构建k链的方法,计算复杂度比wnaf低很多。
17.本发明提供针对椭圆曲线标量乘的计算方法。一种基于wnaf改进的标量乘算法,有效的减少预计算的个数。是一种能够有效实现椭圆曲线密码并进一步降低其计算复杂度的新方法。
附图说明
18.图1是本发明的标量乘处理框图。
19.图2是本发明的标量k计算流程图。
20.图3是本发明的标量乘q计算流程图。
具体实施方式
21.下面结合附图对本发明进行更详尽的说明。
22.本发明的降低标量乘计算复杂度的一种基于wnaf改进的标量乘算法,结合附图1,包括如下步骤。
23.第一步,输入标量k和窗口宽度w,w的窗口宽度范围是{2,3,4
……
11};
24.第二步,预计算出{20p,21p,...,2wp}和{3p,5p,....,(2
w-2-1)p};
25.第三步,利用wnaf算法确定k链中的值,判断k对2取余是否为0,若为0,则ei=0,若不为0,则ei=k mod 2
w+1
,判断ei是否大于2w,若大于则ei=e
i-2
w+1
,k=k-ei,k=k/2,此轮运算结束,下一轮继续判断k对2取余是否为0,直至得到整个k链;
26.第四步,循环k链d-1到0,运算q=2*q,判断ei正负,若为正,执行运算q=q+kip;若为负,执行运算q=q-kip,ki等于|ei|,kip是第二步预计算出来的,由{20p,21p,...,2wp}和{3p,5p,....,(2
w-2-1)p}相加减得到;
27.第五步,返回结果q。
28.用一个简单的例子来阐明该方法。设定k值为79,w=4,q=79p。
29.预计算出{20p,21p,22p,23p,24p}和{3p}
30.计算k链:
31.79%2=1,e0=79%32=15,q15<16,∴e0=15,k=79-15=64,k=k/2=32;
32.32%2=0,e1=0,k=k/2=16;
33.16%2=0,e2=0,k=k/2=8;
34.8%2=0,e3=0,k=k/2=4;;
35.4%2=0,e4=0,k=k/2=2;
36.2%2=0,e5=0,k=k/2=1;
37.1%2=1,e6=1,q1<16,∴e6=1,k=1-1=0;
38.计算结束。得到k链(1,0,0,0,0,0,15)。
39.标量乘q计算如下:
40.q先赋值为0,q=0;
41.e6=1,q=2q=0,q=q+p=p;
42.e5=0,q=2q=2p;
43.e4=0,q=2q=4p;
44.e3=0,q=2q=8p;
45.e2=0,q=2q=16p;
46.e1=0,q=2q=32p;
47.e0=15,q=2q=64p,q=q+p=64p+(24p-p)=79p;
48.为了测试该方法的有效性,用使用的模乘数量(m)为基准计算标量乘的复杂度。a代表点加运算,d代表倍点运算。n为k链的长度。一般k链的长度为256位、384位、521位。
49.该方法的计算复杂度为:
50.a=12m+4s;
51.d=4m+6s;
52.s/m=0.8;
53.求得表1如下所示。
[0054][0055]
根据表1中数据可以明确的看出来,本发明的标量乘算法能够提高标量乘的计算效率,并且窗口宽度越大,本发明越占优势。因此本发明是非常有效的。
[0056]
以上内容是结合具体的样例进行说明的,不能认定本发明具体实施只局限这些说明。对于本发明所属的技术领域的普通技术人员来说,可以在不脱离本发明构思的前提下,还可以做出若干的推演和替换,都应该视为属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1