标量的规则NAF序列的生成方法与流程

文档序号:12600340阅读:1215来源:国知局

本发明涉及信息安全领域,特别是涉及一种标量的规则NAF(非相邻表示型)序列的生成方法。



背景技术:

椭圆曲线密码系统(ECC)具有安全性高、计算量小、处理速度快、存储空间小、带宽要求低等特点。与RSA公钥体制相比,ECC非常适合于资源有限的嵌入式移动环境,如智能卡(smartcard)上的密码芯片。传统上,对密码芯片的攻击主要是对实现的算法从数学角度进行分析,如差分分析和线性分析。但自从旁路攻击(Side Channel Attacks)被提出以后,人们越来越多的开始关注芯片的实现,以及针对芯片所面临的攻击所采取的抗攻击措施。旁路攻击是一种利用密码芯片在运算过程中无意泄露出的信息,比如指令执行时间、功耗、电磁辐射等信息,对芯片进行攻击的一种方法。与传统的攻击方法相比,其密钥的搜索空间大大小于差分密钥分析和线性密钥分析。按攻击特点的不同,旁路攻击可以分为时间攻击、功耗分析攻击和电磁辐射攻击等几种类型。功耗分析技术分为简单功耗分析(SPA)和差分功耗分析(DPA),SPA是指根据功耗曲线上所呈现的特殊特征来推测密钥信息,DPA利用的是操作数的变化所引起的微小的功耗变化,需要通过对大量功耗曲线进行统计分析最终得出密钥信息。

标量乘是ECC最重要最耗时的运算,对ECC的功耗攻击也主要集中在对标量乘运算的攻击,快速而安全的实现标量乘对于ECC来讲至关重要。设E(Fq)是定义在有限域Fq上的椭圆曲线,P(x,y)是E(Fq)上的点。若Fq是二元域,则-P=(x,x+y);若Fq的特征大于3,则-P=(x,-y)。因此椭圆曲线点的减法和点的加法一样有效。这使得人们可以使用标量k的带符号数学表示,一种特别有用的带符号数学表示是非相邻表示型(NAF),对于一个标量k有唯一的NAF表示。Width-w NAF算法是带有预计算表的NAF算法的一种扩展形式,它具有连续的w位数中非零的个数最多为1的特点,因此常用于标量乘的快速实现。每一个标量k都有唯一的Width-w NAF表示,而非0位的位置也与标量k本身的数值有直接的关系,这不利于抗简单功耗分析(SPA)攻击。

一种有效抵御SPA攻击的方法是为标量k产生规则的Width-w NAF表示,在这种规则Width-w NAF序列中每w位数中一定会也只会在特定的位置产生非0位,因而非0位的位置与标量k本身的数值没有直接的关系,在标量乘的功耗曲线上也就没有明显的特征可供SPA所利用。其算法如下:

输入:正整数k,窗口宽度w

输出:k的规则序列窗口NAF表示kw

1.r=0,i=0,r0=w

2.若k为偶数,则k=k+1

3.当k大于1时,重复执行

3.1u[i]=(kmod 2w+1)-2w

3.3kw[r+ri-1]=0,...,kw[r+1]=0,kw[r]=u[i]

3.4r=r+ri,i=i+1,ri=w

4.kw[n]=0,...,kw[r+1]=0,kw[r]=1

5.返回kw[n],kw[n-1],...,kw[0]

由于该方法只能处理奇数的标量,对于偶数标量可以做加1处理,最后在标量乘结束后再进行调整就可以了:(k+1)P-P。这个方法首先是要根据所选择的窗口大小w为标量k计算规则的NAF序列并存储,根据窗口大小计算需要预计算的点并存储,然后再进行标量乘计算,最后根据标量k的奇偶性决定是否需要对结果进行调整。相同二进制长度的标量k的规则NAF序列可能因k实际数值的不同而长度不同。



技术实现要素:

针对上述技术中的现状,本发明所要解决的技术问题是提供一种标量的规则NAF序列的生成方法,既能够节约计算时间又能够节约存储空间。

为解决上述技术问题,本发明的标量的规则NAF序列的生成方法,包括如下步骤:

步骤1、根据需求选择规则NAF序列的窗口大小w,w为大于1的正整数,列出相应窗口大小下规则NAF序列的格式;

步骤2、列出非0项X的所有可能,根据大小顺序重新编码到连续的正整数X’集合上来,消除负数的表示,并记住实际非0项X与正整数X’之间的对应关系;

步骤3、根据标量k的最低位记录其奇偶性并调整最低位得到奇数的k’,若k[0]=1,则k’=k,否则,k’=k+1;

步骤4、从低到高将k’分成每w位一组,找到位数最高的非0组,并在其最高位的前面加一个1,将新的k’从高到低移一位,去掉最低位,得到经过重新编码并省略原规则NAF序列中的0之后的窗口为w的规则NAF序列;

步骤5、在标量乘k’P计算过程中从新的规则NAF序列中从高到低取出的每个X’,对应w个倍点运算D和一个点加运算A,而点加的点由X’对应的X确定。

采用本发明的方法产生的标量k的规则NAF序列,简化了标量k的规则NAF序列产生流程:不需要特殊的计算,省略规则NAF序列的计算过程;不需要额外的存储空间,省略额外存储规则NAF序列的存储空间,首尾的处理和整个序列的移位也可以在使用过程中解决掉,这样既能够节约时间又能够节约存储空间。在同一窗口宽度w下为相同二进制长度的标量k产生相同长度的规则NAF序列,以统一标量乘计算时间和完全消除SPA信息的泄露。

附图说明

下面结合附图与具体实施方式对本发明作进一步详细的说明:

附图是规则序列的变化示意图。

具体实施方式

标量乘是ECC最重要最耗时的运算,对ECC的攻击也主要集中在对标量乘运算的攻击,快速而安全的实现标量乘一直是业界努力的方向。所述标量的规则NAF序列的生成方法是涉及椭圆曲线密码中标量乘的安全而快 速的具体实现方法。

为了提高标量乘的执行速度和抗SPA攻击,目前主要采用对标量进行带符号的规则化变换后再进行标量乘运算,这样在功耗曲线上看到的是点加和倍点运算规律的出现,不会有SPA信息的泄露,通过窗口大小的选择也可以减少点加运算的次数,有效提高执行速度。

标量的规则化变换通常需要规则NAF序列的计算过程,规则化后的变量是带符号的整数,且可能比标量的二进制表示的位数要多,因此需要额外的存储空间来存放标量的规则NAF序列。

所述标量的规则NAF序列的生成方法通过省略原规则NAF序列中的0和对非0项进行重新编码来实现,整个过程不需要计算,也不会增加位数,这样的产生方法可以省去规则NAF序列产生过程中的计算时间,也不需要额外的存储空间来存放规则NAF序列。

下面以窗口w=4为例(结合附图所示),详细说明标量的规则NAF序列的生成方法的实现过程。

步骤一、选择窗口w=4的规则NAF序列,默认数值按左高右低排列,其格式为:000X000X000X…000X。

步骤二、窗口w=4的规则NAF序列中非0的X∈{-15,-13,-11,-9,-7,-5,-3,-1,1,3,5,7,9,11,13,15},一一对应到如下集合X’∈{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}。

步骤三、根据标量k的最低位记录其奇偶性并调整最低位得到奇数的k’,若k[0]=1,则k’=k,否则,k’=k+1。

步骤四、从低到高将k’分成每4位一组,找到位数最高的非0组,并在其最高位的前面加一个1,将新的k’从高到低移一位,去掉最低位,这样就得到了经过重新编码并省略原规则NAF序列中的0之后的窗口为4的规则NAF序列:X’X’X’…X’。

步骤五、在标量乘k’P计算过程中从新的规则NAF序列中从高到低取出的每个X’对应运算DDDDA,其中D代表倍点运算,A代表点加运算,而A点加的点为X’对应的X代表的点,比如X’=1,则对应的X=-13,因此点加的点为-13P,P是椭圆曲线上的点。

附图中上端为原规则序列,下端为重新编码后的规则序列。

以上通过具体实施方式对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。

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