用于在处理设备、对应的处理设备和计算机程序产品中对数据执行密码运算的方法与流程

文档序号:25955979发布日期:2021-07-20 17:15阅读:136来源:国知局
用于在处理设备、对应的处理设备和计算机程序产品中对数据执行密码运算的方法与流程

本描述涉及用于在利用给定字长来操作的处理设备中对数据执行密码运算的方法的技术。

例如,所描述的实施例可以针对在使用ecc(椭圆曲线密码术)的给定阶数的有限域上操作的非对称密码过程,诸如通过蒙哥马利阶梯实施点乘法(pointmultiplication)。

各种实施例可以使用加密或数字签名方案来应用于例如智能卡、微控制器、机顶盒。



背景技术:

现有技术的描述

密码协议或加密协议是抽象的或具体的协议,它们执行安全相关功能并且应用密码方法,通常作为密码原语的序列。

在免受使用加密算法的设备(例如实施加密算法(诸如ecc或rsa)的微控制器)中的侧信道攻击的保护的领域中,已知垂直侧信道攻击(sca),其中攻击者可以使用该设备加密任意数据(输入),以便获得由加密算法使用的密码密钥。攻击者在已知输入数据的加密期间记录侧信道信息,该侧信道由电力消耗、电磁辐射或其他类似量表示。

侧信道与被设备处理的数据链接,这些数据是密码密钥以及作为输入被馈送的攻击者的数据,因此其表示已知数据。

攻击者利用不同的已知输入数据和恒定的未知密钥记录许多“痕迹”,对一部分密码密钥的值进行假设,并且使用统计方法,以使用该痕迹验证这样的假设。为了应用这样的统计方法,攻击者需要使用许多痕迹,每个痕迹具有不同的已知输入数据和恒定密钥。

然而,在非对称密码术中,尽管在计算期间使用的数据变化,但还是存在数学方式来为每次执行修改秘密密钥,使得运算结果不改变。因此,由于密钥不再恒定,攻击者无法收集许多痕迹。

为此,当攻击者需要在单个痕迹上工作时,攻击者会部署所谓的水平攻击。

在要保护的设备(例如处理单元或微控制器)中,通常存在存储器、控制器,存储器存储输入/输出数据和中间值,控制器从ram存储器读取字并且将它们存储到寄存器中,然后“调用”寄存器上的乘法器(例如对存储在寄存器中的操作数执行乘法运算的乘法器单元或电路)。乘法器将操作数相乘并且将结果写入ram存储器。在这样的情况下,超过95%的计算是在乘法器内完成的。

关于此,在图1中示出了处理单元或核心10,其包括控制器单元或电路11,该控制器单元或电路11从存储器13(例如ram存储器)读取在图1中以a和b指示的字,并且将它们存储到控制器11中提供的寄存器中,然后对寄存器的内容(字a、b)调用乘法器电路12。乘法器12对存储在控制器11的寄存器中的操作数a、b执行乘法运算。乘法器12将操作数相乘,例如执行模n乘法r=a·bmodn,并且将结果r写入ram存储器13。

参照常规处理设备架构,控制器11和乘法器12可以对应于诸如cpu等处理电路的控制电路和alu,而存储器13可以相对于处理设备10位于外部。

在非对称密码术中,可以使用例如涉及实施模幂的乘法循环的rsa(rivest-shamir-adleman,李维斯特-萨默尔-阿德曼)密码术、或者涉及实施椭圆曲线标量乘法的乘法循环的ecc(ellipticcurvecryptography,椭圆曲线密码术)。

在ecc密码术中,实施主循环,该主循环实施对应于点p的操作数与秘密密钥k的迭代点乘法,以获得kp,例如如以下一组指令(1)所示,表示每个秘密密钥k比特或一组比特ki的迭代:

l1.如果ki=0:

l2.q1=add(q1,q0)

l3.q0=double(q0)

l4.否则:

l5.q0=add(q0,q1)

l6.q1=double(q1)(1)

其中ki是秘密密钥k的第i个比特或连续比特的组,例如字,q0、q1分别是第一循环变量和第二循环变量,它们被分配以从控制器单元11的寄存器中的对应地址读取点p的值,例如q0被设置为零值,并且q1=p,add和double是求和以及乘2运算。q1、q0对应于由齐次坐标(x,y,z)以投影格式表达的点,其中点(x,y)=x/z,y/z。q0被设置为零值,该值表示由z=0表示的齐次坐标的无穷远点。在迭代开始时,将q0设置为零值,并且q1=p,然后取决于秘密密钥k的比特,它们在不同的迭代期间采用不同的值。运算l1-l6的集合也称为蒙哥马利阶梯,并且可以用于实施模幂或标量乘法。当定时暴露于执行侧信道攻击的攻击者时,蒙哥马利阶梯可能是有益的。

其他投影格式可以是例如(x,y)=x/z2,y/z3或另一格式,此处描述的解决方案适于具有合适数量的乘法的不同格式。例如,如果投影格式为(x,y)=x/z2,y/z3,则随机化可以是

x=((x*r)modn)*rmodn

y=(((y*r)modn)*rmodn)*rmodn

z=z*rmodn

其中n是椭圆曲线密码术在其上被实施的有限域的阶数或大小。

点乘法的主循环(1)因此包括:

针对秘密密钥k的每个比特或多组连续比特ki,例如每个第i个比特ki:

如果这样的比特ki为零,则将被写入与操作数变量相对应的控制器11寄存器的同一地址的第二循环变量q1设置为等于两个变量q1、q0的和,并且将第一变量q0乘以二,

否则,第一变量q0等于两个变量q1、q0的和,并且将第二变量q1乘以二。

水平攻击的三个家族通常被标识:

对秘密比特操纵的攻击

对地址的攻击

对数据的攻击

具体地,关于对数据的攻击,可以基于两次迭代的输入和输出值来执行这样的攻击。

例如,在ecc的情况下,如果将在迭代i的double操作的输出用作步骤i+1的double操作的输入,则ki=ki+1,并且攻击者可以识别该模式。

已知的解决方案涉及,在每次迭代i,例如针对秘密密钥k的每个比特ki,通过使用具有给定模值n的蒙哥马利乘法将投影格式坐标的这样的值x、y、z乘以随机值、定义有限域的阶数或大小(这样的模值n由比特数n表示,比特数n通常等于操作数的比特长度l)来对表示第一变量q0和第二变量q1的投影格式坐标的值x、y、z执行随机化,ecc密码术的点以投影格式被表达。

例如,它是由整数随机生成函数randint(sv,ev)(在python、java或matlab语言中已知的函数)在从给定起始值sv(例如1)到n-1的结束值ev的范围上生成的随机整数r,n是定义被用于表示操作数的有限域的阶数的值。因此,阶数n可以是例如2256-2224+2192+296-1,它是质数。为了效率起见,可以选择n作为接近字的倍数的质数,略小于2m*ws,ws是字长并且m为倍数值,但是它也可以更小。

r=randint(1,n-1)

整数随机生成函数randint是包括从trng(真随机数生成器)或csprng(密码强伪随机数生成器)获得随机比特的运算的示例。

每个新的齐次坐标nx、ny、nz是通过将当前投影格式坐标的值x、y、z乘以随机值r来获得的,其使用以给定模值p利用蒙哥马利乘法过程的乘法:

nx=x*rmodn

ny=y*rmodn

nz=z*rmodn

对于点(x,y)x=nx/nz=x*r/z*r=x/z,结果仍然正确

可以使用这样的方法,但是相对于模乘(modularmultiplication),随机化运算必须是快速的。

而且,即使将随机化运算设计得足够快,蒙哥马利乘法的形式也有另一不便之处:

其中a是通用的第一蒙哥马利操作数,例如第一循环变量q0的坐标,b是通用的第二蒙哥马利操作数,例如第二循环变量q1的坐标,并且n′是由单个字构成的元素。l是表示投影格式坐标的值x、y、z的值的给定比特数,并且是蒙哥马利乘法的参数。如果期望执行整数模n的模乘,则给定的比特数l为2的幂且大于n。

以比特表达的参数l取决于实施方式,并且遵守条件l>=比特大小(n)。

假设a和b以2l为界,则计算成本大约是次字乘法,其中ws指示系统字长。即使第二操作数b的值小,值(abn′mod2l)仍然是大值,即使b的值小,(abn′mod2l)n的计算成本也是次字乘法,其因为l>=n,至少为



技术实现要素:

实施例可以涉及在利用给定字长来操作的处理设备中对数据执行密码运算的技术。在一个实施例中,在具有给定阶数的有限域上操作的非对称密码过程被应用,所述非对称密码过程包括在表示由投影格式坐标表达的曲线点的至少一个操作数与秘密密钥之间执行标量乘法运算,所述标量乘法运算包括:在每次迭代针对秘密密钥的每一个或每组连续比特执行运算集合的迭代过程,所述乘法过程包括:在每次迭代,通过将投影格式坐标的这样的值乘以随机值,来使表示所述至少一个操作数的投影格式坐标的、由给定比特数表示的所述值随机化。

实施例可以提供一种用于在处理设备中对数据执行密码运算的方法,包括使用变量的随机化执行乘法运算,该方法解决了现有技术的缺点,并且特别是快速的并且具有低计算成本。

一个或多个实施例可以涉及一种执行该方法的对应的处理设备以及计算机程序产品,该计算机程序产品可以被加载到至少一个计算机的存储器中并且包括能够在该产品在至少一个计算机上运行时执行该方法的步骤的部分软件代码。如本文所使用的,对这样的计算机程序产品的引用被理解为等同于对包含用于控制处理系统以便协调根据实施例的方法的实施的指令的计算机可读部件的引用。对“至少一个计算机”的引用显然旨在强调以模块化和/或分布式形式实施本实施例的可能性。

根据本文描述的解决方案的实施例,用于在利用给定字长来操作的处理设备中对数据执行密码运算的方法,包括应用在具有给定阶数的有限域上操作的非对称密码过程,所述非对称密码过程包括在表示由投影格式坐标表达的曲线点的至少一个操作数与秘密密钥之间执行标量乘法运算,

所述标量乘法运算包括:在每次迭代针对秘密密钥的每个比特或每组连续比特执行运算集合的迭代过程,

所述乘法过程包括:在每次迭代,以及

通过将投影格式坐标的这样的值乘以随机值,使表示所述至少一个操作数的投影格式坐标的、由给定比特数表示的值随机化,

其中

所述随机化运算包括所述随机值作为随机生成值与第二值的乘积被获取,随机生成值在具有第一给定值作为结束值的范围上被生成,第二值大于所述第一给定值,并且

所述第一给定值是2的字长或字长的倍数次幂减去一,所述第二值等于2的所述给定比特数次幂除以第一值,所述倍数中的字长的乘法器值是小整数,至少小于所述给定比特数与字长之比。

在变型实施例中,针对所述乘法器值的上限是4,具体地所述倍数中的所述乘法器值是1或2。

在变型实施例中,所述随机值被生成为在具有值一作为起始值的范围内所选择的随机值。

在变型实施例中,所述非对称密码过程是ecc程序,至少一个操作数是椭圆曲线上的点,并且乘法运算是ecc标量乘法。

在变型实施例中,所述运算集合表示蒙哥马利阶梯运算。

在变型实施例中,所述迭代过程包括执行所述蒙哥马利阶梯,由至少一个操作数实施秘密密钥的迭代点乘法,分配第一循环变量和第二循环变量,包括执行表示运算集合的所述蒙哥马利阶梯,包括:

对于秘密密钥的每个比特,如果这样的比特为零,则将第二变量设置为等于两个变量的和,并且将第一变量乘以二;

否则,第一变量等于两个变量的和,并且将第二变量乘以二;以及

对表达所述第一变量和第二变量的投影格式坐标执行所述随机化运算。

在变型实施例中,所述迭代过程通过将秘密密钥的比特划分为多组连续比特而被执行,并且包括在每次迭代针对秘密密钥的每组比特执行运算集合。

所描述的实施例还涉及被配置为执行任何前述实施例的方法的步骤的处理设备的实施例。

此处描述的实施例还涉及一种计算机程序产品,该计算机程序产品可以被加载到至少一个计算机的存储器中,并且包括能够在产品在至少一个计算机上运行时执行任何前述实施例的方法的步骤的部分软件代码。

在一个实施例中,一种方法包括在利用字长来操作的处理设备中对数据执行密码运算的方法,包括应用在具有阶数的有限域上操作的非对称密码过程,该非对称密码过程包括在表示由投影格式坐标表达的曲线点的至少一个操作数与秘密密钥之间执行标量乘法运算,该标量乘法运算包括:在每次迭代对该秘密密钥的比特或一组连续比特执行运算集合的迭代过程,该乘法运算包括:在每次迭代,通过将该投影格式坐标的值乘以随机值,来使表示该至少一个操作数的该投影格式坐标的、由比特数表示的该值随机化,其中使值随机化包括:在具有第一值作为结束值的范围上生成随机数,并且将该随机数与大于该第一值的第二值相乘,该第一值是2的该字长乘以乘法器值次幂减去1,该第二值等于2的该比特数次幂除以该第一值,该乘法器值是大于或等于一、并且小于该比特数与该字长之比的整数。在一个实施例中,针对该乘法器值的上限是4。在一个实施例中,乘法器值是1或2。在一个实施例中,范围的起始值是1。在一个实施例中,非对称密码过程是椭圆曲线密码术(ecc)过程,该至少一个操作数是椭圆曲线上的点,并且该乘法运算是ecc标量乘法。在一个实施例中,运算集合表示蒙哥马利阶梯。在一个实施例中,该迭代过程的每次迭代是对该秘密密钥的比特执行的,并且包括:如果这样的比特为零,则将该第二变量设置为等于该两个变量的和,并且将该第一变量乘以二;否则,将该第一变量设置为等于该两个变量的该和,并且将该第二变量乘以二;以及对表达该第一变量和第二变量的该投影格式坐标执行该随机化运算。在一个实施例中,该迭代过程通过将该秘密密钥的该比特划分为多组连续比特而被执行,并且包括在每次迭代针对该秘密密钥的一组比特执行运算集合。

在一个实施例中,一种装置包括:存储器;以及具有字长、并且被耦合至所述存储器的密码电路装置,其中所述密码电路装置在运算中应用在具有阶数的有限域上操作的非对称密码过程,所述非对称密码过程包括在表示由投影格式坐标表达的曲线点的至少一个操作数与秘密密钥之间执行标量乘法运算,所述标量乘法运算包括:在每次迭代针对所述秘密密钥的比特或一组连续比特执行运算集合的迭代过程,所述乘法运算包括:在每次迭代,通过将所述投影格式坐标的值乘以随机值,来使表示所述至少一个操作数的所述投影格式坐标的、由比特数表示的所述值随机化,其中使值随机化包括在具有第一值作为结束值的范围上生成随机数,并且将所述随机数与大于所述第一值的第二值相乘,所述第一值是2的所述字长乘以乘法器值次幂减去1,所述第二值等于2的所述比特数次幂除以所述第一值,所述乘法器值是大于或等于一、并且小于所述比特数与所述字长之比的整数。在一个实施例中,针对乘法器值的上限是4。在一个实施例中,乘法器值是1或2。在一个实施例中,范围的起始值是1。在一个实施例中,非对称密码过程是椭圆曲线密码术(ecc)程序,至少一个操作数是椭圆曲线上的点,并且乘法运算是ecc标量乘法。在一个实施例中,运算集合表示蒙哥马利阶梯。在一个实施例中,迭代过程的每次迭代是对秘密密钥的比特执行的,并且包括:如果这样的比特为零,则将第二变量设置为等于两个变量的和,并且将第一变量乘以二;否则,将第一变量设置为等于两个变量的和,并且将第二变量乘以二;以及对表达第一变量和第二变量的投影格式坐标执行随机化运算。在一个实施例中,迭代过程通过将秘密密钥的比特划分为多组连续比特而被执行,并且包括在每次迭代针对秘密密钥的一组比特执行运算集合。

在一个实施例中,一种非瞬态计算机可读介质,具有内容,该内容将处理设备配置为使用字长对数据执行密码运算,所述执行密码运算包括应用在具有阶数的有限域上操作的非对称密码过程,所述非对称密码过程包括在表示由投影格式坐标表达的曲线点的至少一个操作数与秘密密钥之间执行标量乘法运算,所述标量乘法运算包括:在每次迭代对所述秘密密钥的比特或一组连续比特执行运算集合的迭代过程,所述乘法运算包括:在每次迭代,通过将所述投影格式坐标的值乘以随机值,来使表示所述至少一个操作数的所述投影格式坐标的、由比特数表示的所述值随机化,其中使值随机化包括在具有第一值作为结束值的范围上生成随机数,并且将所述随机数与大于所述第一值的第二值相乘,所述第一值是2的所述字长乘以乘法器值次幂减去1,所述第二值等于2的所述比特数次幂除以所述第一值,所述乘法器值是大于或等于一、并且小于所述比特数与所述字长之比的整数。在一个实施例中,针对乘法器值的上限是4。在一个实施例中,乘法器值是1或2。在一个实施例中,内容包括由处理设备的密码电路装置执行的指令。

附图说明

现在将参照附图仅通过非限制性示例来描述本公开,其中:

图1已经在前面讨论了;以及

图2表示此处描述的方法的实施例的流程图。

具体实施方式

随后的描述图示了旨在深入理解实施例的各种具体细节。可以在没有一个或多个具体细节的情况下或在具有其他方法、组件、材料等的情况下实施实施例。在其他情况下,未详细图示或描述已知的结构、材料或运算,使得实施例的各个方面不会被遮盖。

在本描述的框架中对“实施例”或“一个实施例”的引用旨在指示关于该实施例描述的特定配置、结构或特性被包括在至少一个实施例中。同样地,在本描述的各个点中可能出现的诸如“在一个实施例中”或“在一个实施例中”等短语不一定指一个相同的实施例。此外,在一个或多个实施例中,可以适当地组合特定的构象、结构或特性。

本文使用的引用仅出于方便的目的,因此不限定保护范围或实施例的范围。

此处描述的解决方案涉及一种用于在利用给定字长来操作的处理设备中对数据执行密码运算的方法,包括应用在具有给定阶数的有限域上操作的非对称密码过程,该非对称密码过程包括在表示由投影格式坐标表达的曲线点的至少一个操作数与秘密密钥之间执行标量乘法运算,该标量乘法运算包括:在每次迭代针对秘密密钥的每个比特或每组连续比特执行运算集合的迭代过程,乘法过程包括:在每次迭代,通过将投影格式坐标的这样的值乘以随机值,使表示所述至少一个操作数的投影格式坐标的、由给定比特数表示的值随机化,例如使用点乘法(诸如蒙哥马利乘法),其中随机值是被乘以大整数的小整数,其可以被视为一个或若干字。具体地,随机化运算包括:随机值作为随机生成值与第二值的乘积被获取,该随机生成值是在具有第一给定值作为结束值的范围上生成的,该第二值大于第一给定值。具体地,第一给定值是2的字长或字长的倍数次幂减去一,第二值等于2的所述给定比特数次幂除以第一值,所述倍数中的字长的乘法器值是小整数,至少小于所述给定比特数与字长之比。

因此,在一个实施例中,由整数随机生成函数randint(sv,ev)生成随机整数值r,该函数在从给定起始值sv(例如1)到结束值ev(其为2的字长的值次幂减去一2m*ws-1)的范围上生成随机数,其中m是小整数乘法器数字(例如m=1或m=2)。这里给定有限域阶数n,ws指示字长,并且w是操作数的字的大小,即操作数的字数,操作数诸如ecc点坐标x(q0)可以通过多项式表示被表示:

q0=an*2w*ws+an-1*2w-1*ws+...+a1*21*ws+a0

其中an...a0是多项式系数。例如,n的比特大小为1024,字长ws为16比特,并且表示操作数所需的字数w为64。

例如,n是质数,如所提及的,其定义有限域。在又一实施例中,n的比特大小n可以接近值256。值字长ws可以例如是8、16、32或64。

操作数以蒙哥马利表示所表示,并且通过定义,它们小于2l,其中操作数长度l>=比特大小(n)。在大多数情况下,操作数长度等于有限域n的比特大小n,l=n,但是有时操作数长度比比特大小n大例如字长ws,l=n+ws。

表示操作数的字数w为l/ws,操作数位长度l与字长ws之比。

将randint函数的结果乘以大于随机值范围的结束值ev的数字,特别是作为2l-m*ws大得多,2的操作数的所述长度l与字长ws的小倍数即m*ws之间的差次幂。m是乘法器,其是小整数。当被设置为最小值m=1时,乘法器m可以提供最低的计算成本,然而,如果m=2,则计算成本会更大,但随机化会更有效。如以下还指示的,其他选择也是可能的,为了降低计算成本,乘法器m至少应比操作数的长度l与字长ws之比小得多。

因此,乘法器m的值的选择通常可以是1或2。乘法器m可以理想地小于或等于阶数n除以字长ws,m<=n/ws或m*ws<=n

r=randint(1,2m*ws-1)*2l-m*ws

随机值r的最大值通常可以低于2m*ws-1。

因此,通过随机生成函数randint,随机化运算获得随机值r是作为随机生成值与较大(例如比第一值大(的多))的第二值2l-m*ws的乘积被获得的,随机生成值在具有第一给定值2m*ws作为结束值ev的范围上被生成,第一值和第二值是2的幂,其指数的和等于操作数的长度l。

然后,通过使用利用蒙哥马利乘法过程的乘法将当前投影格式坐标的值x、y、z乘以随机值r,来获得各个新的齐次坐标nx、ny、nz:

nx=mm(x,r)

ny=mm(y,r)

nz=mm(z,r)

蒙哥马利乘法仍然是:

这允许简化为:

ab=a*randint(1,2m*ws-1)*2l-m*ws,其中a*randint(1,2m*ws-1)的计算需要次字乘法,而(a*randint(1,2(m*ws)-1)和2l-m*ws之间的乘法的计算成本与在蒙哥马利域中执行的乘法次数相比可以忽略不计;以及

abn′mod21=wrd*2l-m*ws,其中wrd是以2m*ws为上限的值,因此(abn′mod21)n=wrd*n*2l-m*ws,因此(abn′mod21)n的计算成本是m*n/ws次字乘法。而且:

wrd=a*randint()*n′mod2(ws)

从而,该蒙哥马利乘法的总成本为

在图2中,示出了此处描述的方法的运算的实施例100的示例性流程图。

该实施例涉及ecc密码术,并且表示已经描述的主循环l1-l6的步骤,其使用循环变量q1和q0来实施ecc曲线点p与秘密密钥的迭代点乘法。因此,s0指示如下点:从第一比特(例如i=0)开始,ecc密码术针对秘密密钥k的每个第i个比特ki在该点迭代执行循环的执行。步骤s1是与返回步骤s5一起实施迭代循环的测试,具体地验证是否i=n,针对所有比特ki的所有循环迭代都已被执行。肯定的是,该程序继续进行随机化s2和标量乘法l2-l6。否则,该程序结束s6。然后,对于每次迭代,循环变量q0、q1中的齐次坐标x、y、z经受随机化s2,通过将投影格式坐标的这样的值x、y、z与随机值r相乘,使表示第一变量和第二变量的投影格式坐标的值x,y,z随机化。操作s2的这样的值随机r由步骤s3提供,其中通过函数randint获得所述随机值r作为随机生成值与大于第一值的第二值2l-m*ws的乘积,该随机生成值在具有第一给定值2m*ws-1作为结束值ev的范围上被生成,所述第一值和第二值是2的幂,其指数的和等于操作数的长度l,第一值的指数是第二值的因数。具体地,随机值r被生成为在具有2的字长ws的小倍数的值次幂作为结束值ev的范围中所选择的随机值乘以2的如下次幂:操作数的所述长度l与字长ws值的所述小倍数之间的差次幂。因此,步骤s3被示出为从处理设备10的存储器或与处理设备1相关联的另一控制处理器接收起始sv、结束ev、阶数n、长度l、字长ws的值。

然后,步骤s2输出变量q1、q0的随机坐标nx、ny、nz,对该变量q1、q0执行点乘法的主循环,例如因此包括例如在步骤l1中针对秘密密钥k的每个比特ki被检查其值。

如果这样的比特ki为零,则将被写入与操作数变量相对应的控制器11寄存器的同一地址中的第二变量q1设置为等于两个变量q1、q0的和,并且将第一变量q0乘以2(运算l2、l3),否则第一变量q0等于两个变量q1、q0的和,并且将第二变量q1乘以2(运算l5、l6)。

在这两种情况下,两个变量q1、q0的值在每次迭代(操作s4)中都被存储在ram存储器13中,然后作为最终结果r将被存储在ram13中,作为迭代结束时乘法的结果,例如当i=n时,密钥k的所有比特ki已被使用,并且迭代标量乘法100结束(操作s6)。在ram13中存储s4之后,执行返回步骤s0以递增索引i。

根据此处描述的各种实施例的解决方案有助于获得以下优点。

该解决方案有利地使用与随机字的模乘作为随机化运算,这在计算成本方面降低了成本。

具有单个随机字的标准蒙哥马利乘法将花费次字乘法。本文描述的解决方案涉及次字乘法的计算成本。

有利地,本文没有二次项,只要乘法器m<<l/ws,例如如果l为1024并且ws64,则乘法器m应该远小于16。在变型实施例中,乘法器m的值的上限是4。

由于每次迭代需要至少三次乘法,因此与完整的模乘相比,这大大减少了延迟。

当然,在不损害实施例的原理的情况下,构造和实施例的细节可以相对于仅通过示例的方式在本文中描述和图示的内容大范围地变化,而不脱离本实施例的范围,如随后的权利要求所定义的。

在所描述的实施例中,迭代过程包括在每次迭代针对秘密密钥k的每一个比特ki执行运算集合l2-l6。然而,迭代过程可以被执行,将秘密密钥k的比特划分为多组连续比特,例如比特对(ki,ki+1)或该组中更多的比特数,并且包括在每次迭代针对秘密密钥k的每组比特执行运算集合,当然执行的迭代次数较少,此处用k指示。例如,在这样的情况下,迭代过程可以是:

对于i,从0到k:

q=2*q

q=q+t[ew]

其中q是唯一的中间变量,并且t是包含输入点的2w倍数的表格,w是操作数的字长,ew是大小w的k比特的组。

由于攻击者可能会注意到在标量窗口(t[ew])相同的所有迭代中都使用了表格t[ew]来获取关于秘密密钥k的信息,因此提供了加载表格t[ew],并且通过将投影格式坐标的这样的值x、y、z乘以随机值r使表示操作数的投影格式坐标的、由给定比特数1表示的值x、y、z随机化来将它随机化,通过这样的随机化,操作s2包括获得随机值r作为随机生成值与大于第一给定值2m*ws的第二值2l-m*ws的乘积,该随机生成值在具有第一给定值2m*ws作为结束值ev的范围上被生成,这样的第一值2m*ws是2的字长ws或字长ws的倍数m*ws次幂减去一,第二值2l-m*ws等于2的操作数的长度1次幂除以第一值2m*ws,所述倍数m*ws中的乘法器值m是小整数。

在此处描述的方法中,标量乘法的输入值是整数(秘密密钥k)和点,例如q0或q。然后,迭代过程的循环通过执行点加法来在(至少)两个点上计算。如果针对每次迭代处理了密钥k的多于一个比特,则循环将在多于两个点上进行计算。

此外,虽然此处参照椭圆曲线乘法中的点乘法作为蒙哥马利阶梯的实施方式描述了实施例,但是此处描述的方法可以应用于其他标量乘法,诸如double和add、加窗方法、滑动窗口方法、w进制(w-ary)非相邻形式(wnaf)方法或其他方法,包括通过将投影格式坐标的这样的值乘以随机值,来使表示至少一个操作数的投影格式坐标的、由给定比特数表示的值随机化的运算,而且在这样的情况下,随机化运算还包括:获得所述随机值作为随机生成值与大于第一给定值的第二值的乘积,该随机生成值在具有第一给定值作为结束值的范围上被生成,第一值是2的字长或字长的倍数次幂,所述第二值等于2的操作数的长度次幂除以第一值,所述倍数中的乘法器值是小整数。

一些实施例可以采取计算机程序产品的形式或包括计算机程序产品。例如,根据一个实施例,提供了一种计算机可读介质,其包括适用于执行上述方法或功能中的一个或多个的计算机程序。介质可以是物理存储介质,诸如例如只读存储器(rom)芯片,或者可以是磁盘,诸如数字通用光盘(dvd-rom)、压缩盘(cd-rom)、硬盘、存储器、网络或由适当的驱动程序或经由适当的连接读取的便携式介质物品,包括以存储在一个或多个这样的计算机可读介质上的一个或多个条形码或其他相关代码编码并且由适当的读取器设备可读的。

此外,在一些实施例中,可以以其他方式来实施或提供一些或全部方法和/或功能性,诸如至少部分地以固件和/或硬件实施,包括但不限于一个或多个专用集成电路(asic)、数字信号处理器、离散电路装置、逻辑门、标准集成电路、控制器(例如通过执行适当的指令,并包括微控制器和/或嵌入式控制器)、现场可编程门阵列(fpga)、复杂可编程逻辑设备(cpld)等以及采用rfid技术的设备及其各种组合。

可以组合上述各种实施例以提供其他实施例。如果需要采用各种专利、申请和出版物的概念以提供其他实施例,则可以修改实施例的各个方面。

鉴于上面详述的描述,可以对实施例进行这些和其他改变。通常,在以下权利要求中,所使用的术语不应被解释为将权利要求限于本说明书和权利要求中所公开的具体实施例,而是应被解释为包括所有可能的实施例以及这样的权利要求所赋予的等效物的全部范围。因此,权利要求不受本公开的限制。

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