专利名称:加速对特性2椭圆曲线密码系统的计算的方法
加速对特性2椭圆曲线密码系统的计算的方法本申请是2008年12月26日提交的、申请号为200810189706. I、题为“加速对特性2椭圆曲线密码系统的计算的方法”的发明专利申请的分案申请。背景领域实施例涉及密码领域,且尤其涉及加速对特性2椭圆曲线密码系统的计算的装置、系统和方法。
背景技术:
Karatsuba 算法(A. Karatsuba 和 Y. Ofman, Multiplication of Multidigit Numbers on Automata (自动机上多位数的乘法),Soviet Physics - Doklady, 7 (1963),第595-596页)在1962年提出,作为ー种减少计算两个大数的乘积所需的标量乘法的数目的尝试。经典的算法接受次数等于I的两个多项式作为输入,即
并利用三个标量乘法计算它们的乘积a (χ) b (χ) Za1ID1X2+x+a^lv这种技术与多项
式a(x)和b(x)相乘的朴素(也称为“教科书”)方式不同,该方式执行4个标量乘法,即得出乘积 aob。、和 S1Id1。Karatsuba示出仅需要进行三个标量乘法,即仅需要得出乘积S1Id1、(aja。)(Vb0)和a0b0。一旦执行标量乘法,缺失的系数(aA+aA)可被计算为差值( + )(bi+bj-aaba-aibi。对于较大的操作数,可递归地应用Karatsuba算法。Karatsuba不仅适用于多项式,还适用于大数。大数可通过用变量χ替换任意2的幂来转换成多项式。与使用Karatsuba相关联的最重要的未解决的问题之ー是如何将算法应用到大数,而不会由于递归而浪费处理时间。递归不合需要有三个原因。第一,递归Karatsuba进程使相关的加法与乘法交织。结果,递归Karatsuba进程不能充分利用任何由处理器架构或芯片组支持的硬件级并行度。第二,由于递归,由递归Karatsuba产生的中间标量项需要更多的处理器字来表示。因此,单个标量乘法或加法需要ー个以上的处理器运算来实现。这种额外开销是相当大的。第三,递归Karatsuba招致函数调用额外开销。Oregon Sate University (俄勒网州立大学)的 Cetin Koc 等人(S. S. Erdem和 C.K. Koc. “A less recursive variant οι Karatsuba-Ofman algorithm formultiplying operands of size a power of two”(用于对2的幕大小的操作数作乘法的Karatsuba-Ofman算法的较小递归变体),会议录,第16届IEEE计算机架构讨论会,主编 J. -C. Bajard 和 M. Schulte,第 28-35 页,IEEE 计算机协会出版社,Santiago deCompostela,西班牙,2003年6月15-18日)描述了 Karatsuba的一种较小递归变体,其中输入操作数的大小需要是2的冪。然而,该变体仍需要递归调用且仅适用于特定大小的操作数。最初由Koblitz (N. Koblitz, “Elliptic Curve Cryptosystems”(捕圆曲线密码系统),Mathematics of Computation (计算数学),48,第 203-209 页,1987)和 Miller (V.Miller, “Uses of Elliptic Curvers in Cryptography”(密码学中捕圆曲线的使用),会议录,Advances in Cryptology (Crypto,85)(密码学的进步),第 416-426 页,1985)提出的椭圆曲线密码学近来获得了来自工业的很多关注,并且密钥建立和数字签名运算类似于带有相似密码强度的RSA,但其密钥大小小得多。椭圆曲线密码学背后的主要思想是椭圆曲线中的点形成加法群。点可与其自身相加很多次,其中加法次数可以是很大的数。这种运算通常被称为“点乘标量乘法(pointtimes scalar multiplication)”或简称为“点乘法”。椭圆曲线密码学对公钥运算的适用性来自以下事实如果原始和所得点是已知的,但加法的数目是未知的,则很难从原始和所得点得出该数目。所得的点的坐标可形成公钥,而产生公钥的加法的数目可形成私钥。附图简述在附图的各个图中,实施例作为示例而非限制示出,其中相同的附图标记指示类似的元素,且附图中 图I示出4乘4示例的进程的实施例的流程图;图2示出完全图的示例;图3示出图同构的示例;图4示出18乘18示例的实施例的图示;图5示出利用局部索引序列符号的实施例的生成平面(spanning plane)的表示;图6不出利用半局部索引序列和全局索引符号的实施例的生成平面的表不;图7示出生成平面的可选表示;图8示出9乘9生成平面的另ー个示例;图9示出边到生成边和生成平面的映射的实施例表示;
图10示出实施例的减法生成的图示;图IIA-IIB示出实施例的框图;图12示出现有进程与实施例的比较;以及图13是示出根据ー个实施例的计算两个输入操作数的进位少的乘积的余数的方法。图14是示出根据ー个实施例计算图13的余数的方法的流程图。图15示出系统中的装置的实施例。详细描述本文讨论的实施例一般涉及加速对特性2椭圆曲线密码系统的计算的装置、系统和方法。在一个实施例中,诸如Lopez-Dahab空间(J. Lopez和R. Dahab, “FastMultiplication on Elliptic Curves over GF(2m)without Precomputation,,(无需予页计算的在GF(2m)上椭圆曲线的快速乘法),会议录,Workshop on Cryptographic Hardware andEmbedded Systems (CHES 1999)(加密硬件与嵌入式系统研讨会),第316-327页,1999)的射影空间被用于表示点坐标,点加法和点倍增通过引入ー种在GF(2m)形式的有限域中使元素相乘的新颖的方式来加速。在一个实施例中,元素利用用于进位少(carry-less)的乘法(GFMUL)和单次迭代类似 Karatsuba 公式(M. Kounavis,“A New Method for Fast IntegerMultiplication and its Application to Cryptography” (一种用于快速整数乘法的新方法及其对密码学的应用),会议录,International Symposium on the PerformanceEvaluation of Computer and Telecommunication Systems (关于计算机和电信系统的性能评估的国际研讨会SPECTS2007)圣地亚哥,美国加州,2007年7月)的CPU指令做乘法,用于计算GF(2)中高次数多项式的进位少的乘积。在一个实施例中,通过认识到很多曲线用稀疏的不可约多项式指定域,来进行这些多项式的进位少的乘积的约简。例如,美国国家标准及技术研究所(NIST)曲线用三项(三项式)或五项(五项式)指定多项式。一个实施例用软件在3. 6GHz奔腾4处理器上基于NISTB-233曲线使椭圆曲线Diffie Hellman加速55%。如果将3时钟等待时间GFMUL指令引入CPU,则加速因子变为5. 2X。进ー步的软件优化有可能使加速增加超过10X。參照附图,现在将描述示例性实施例。提供示例性实施例,以 说明实施例且不应该理解为限制本实施例的范围。在一个实施例中,针对其中点坐标是GF (2m)形式的有限域的元素且诸如Lopez-Dahab射影空间(Lopez和Dahab 1999)之类的射影空间用于表示点坐标的椭圆曲线,加速点乘法,以确保点乘法中的所有基本运算(即点加法和点倍増)包括Galois (伽罗瓦)域加法和乘法但没有除法。通过实现Galois域乘法,我们的实现方式不同于现有技术水平(“The OpenSSL Source Code Distribution”(OpenSSL 源代码分布)可在 www. openssl.org得到)。在现有技术水平的实现中,使用针对32或64比特进位少的乘法的4比特表查找、用于将进位少的乘法扩展到较大操作数的递归Karatsuba和最终乘积模(modulo)所使用域的不可约多项式的逐字约简,来实现Galois域(GF)乘法。在一个实施例中,使用实现两个64比特输入的进位少的乘法的指令(GFMUL)来代替表查找。利用GFMUL指令作为构造块,将新颖的单次迭代扩展(Kounavis 2007)应用于已知的Karatsuba算法,以便获得所需的较大输入(例如,233 bitds)的进位少的乘法。在一个实施例中,一种约简结果模稀疏的不可约多项式的方法有助于提高总体性能。在一个实施例中,NIST B-233曲线的约简需要不超过3个256比特宽偏移和3个256比特宽XOR操作,从而使得单个英特尔奔腾4执行椭圆曲线Diffie Hellman能够比现有技术水平(OpenSSL,未注明日期)快55%。此外,如果使用3时钟GFMUL指令,则加速器因子变为5. 2X。在一个实施例中,约简方法不需要将域特定约简逻辑置于处理器指令的实现中。我们首先描述进位少的乘法。如本文所描述的,“进位少的乘法”也称为Galois域(GF (2))乘法,是使两个数相乘而不生成或传播进位的运算。在标准的整数乘法中,第一操作数被移位的次数与第二操作数中等于“I”的比特的位置一祥多。通过使第一操作数的经移位的版本彼此相加导出两个操作数的乘积。在进位少的乘法中,进行相同的过程,但加法不生成或传播进位。由此,比特加法等价于异或(XOR)逻辑运算。进位少的乘法形式上定义如下令两个操作数各自是大小为η比特的A、B。令数A是以下的比特阵列A=[an_! an_2…a0](I)还令数B是B=[bn_! bn_2…bj(2)令进位少的乘法结果是以下的比特阵列C= [C2lri c2n_fc0](3)
输出C的比特被定义为以下输入A和B的比特的逻辑函数
权利要求
1.一种椭圆曲线密码系统中的方法,所述方法包括 根据输入操作数长度利用一次迭代基于图的乘法预先计算乘法例程; 藉由计算装置根据预先计算的乘法例程计算两个输入操作数的第一进位少的乘积;以及 藉由所述计算装置通过执行若干移位运算和异或运算来计算所述第一进位少的乘积和稀疏多项式之间的第二进位少的乘积, 其中所述稀疏多项式包括多个系数且所述多个系数中等于I的系数的数目小于等于O的系数的数目,并且在定义椭圆曲线ニ进制域的多项式中移位运算和异或运算的数目约为所述多个系数中等于I的系数的数目。
2.如权利要求I所述的方法,其特征在于,还包括 通过执行若干移位运算和异或运算来计算所述第二进位少的乘积和第二稀疏多项式之间的第三进位少的乘积,其中所述第二稀疏多项式包括多个系数且所述多个系数中等于I的系数的数目小于等于O的系数的数目,并且在定义椭圆曲线ニ进制域的多项式中移位运算和异或运算的数目约为所述多个系数中等于I的系数的数目。
3.如前述权利要求中任一项所述的方法,其特征在于,预先计算还包括 根据输入操作数长度生成属于第一操作数和第二操作数的多个图,所述多个图包括多个顶点和多个边; 提供所述多个顶点和所述多个边,以便在不使用递归的情况下执行所述第一操作数和所述第二操作数的乘法,其中所述第一操作数和所述第二操作数的大小至少是所述系统的本机操作数大小; 确定所述多个顶点的第一多个乘积; 确定多个生成边和多个生成平面的第二多个乘积;以及 由所述第一多个乘积和所述第二多个乘积创建所述多个系数,用于执行所述第一操作数和所述第二操作数的乘法。
4.如权利要求2所述的方法,其特征在于,计算所述第三进位少的乘积包括 利用以下的方程式根据余数P(X)计算密码密钥P u) =c (X) · Xt mod g U) 其中 C(X)是GF(2)中带有系数的次数为s- 的多项式,表示将被约简的进位少的乘积的s个最闻有效位; t是多项式g的次数;以及 g(x)是定义椭圆曲线(EC)密码系统的不可约多项式。
5.如权利要求2所述的方法,其特征在于,计算所述第一进位少的乘积还包括 计算包括可编程多项式g(x)的t个最低有效项的第一多项式g* ; 计算商多项式q+,其中所述商多项式q+的次数是S,且等于xt+s与所述可编程多项式的除法的商; 计算所述商多项式的进位少的乘积和所述进位少的乘积的最高有效位,以提供次数为2s-l的结果多项式,作为两个乘法的第一乘法; 将所得多项式的s个最高有效项与所述第一多项式进行进位少的相乘,作为所述两个乘法的第二乗法,以实现计算次数为t+s-2的结果多项式所需的除法;以及 返回所得多项式的t个最低有效项作为余数。
6.如权利要求5所述的方法,其特征在于,如果g(x)是三项式和五项式之一,则所述进位少的乘积的计算是利用多个大数移位运算和异或运算进行的。
7.如权利要求5所述的方法,其特征在于,如果g(x)是三项式,则所述进位少的乘法是利用两个大数移位运算和异或运算进行的。
8.如权利要求2所述的方法,其特征在于,计算所述第三进位少的乘积包括 通过根据以下方程式的两个乘法执行除法来计算所述第一进位少的乘积模可编程多项式的余数P (X) P (X) =Lt (g* (X) · Ms (c (X) · q+ (X))), 其中 Lu(v)表示多项式V的u个最低有效项的系数,且Mu(V)表示u个最高有效项的系数;C(X)是GF(2)中带有系数的次数为s-Ι的多项式,表示将被约简的进位少的乘积的s个最闻有效位; t是多项式g的次数; g(x)是定义椭圆曲线(EC)密码系统的不可约多项式; g*包括g (χ)的t个最低有效项;以及 Q+是商多项式,其中所述商多项式q+的次数是S,且等于xt+s与所述可编程多项式g (X)的除法的商。
9.如权利要求8所述的方法,其特征在于,预先计算所述乘法包括 生成针对输入操作数长度的ー个或多个图; 从所述一个或多个图中选出完整子图的集合; 从多个互连图确定多个广义边和多个顶点,所述多个广义边包括多个生成边和多个生成平面; 确定所述多个顶点的第一多个乘积; 确定所述多个生成边和所述多个生成平面的第二多个乘积; 由所述第一多个乘积和所述第二多个乘积形成表示输入操作数的乘积的多项式的多个系数;以及 向加密进程的乘法部分提供所述多个系数;或者 其中针对具有互连顶点的图确定所述第一多个乘积;以及 其中所述第二多个乘积是利用以下方程式确定的
10.如权利要求9所述的方法,其特征在干,如果233比特椭圆曲线包括可编程多项式,则计算所述第三进位少的乘积是利用三个233比特宽移位运算和异或(XOR)运算进行的。
11.如权利要求10所述的方法,其特征在于,所述输入操作数长度是233比特且所述系统的本机操作数大小是32比特和64比特之ー;并且其中可从所述系统得到的进位少的乘法指令是32比特和64比特进位少的乘法指令之一。
12.—种椭圆曲线密码系统,包括 耦合到第一存储器的第一计算机设备,所述第一计算机设备执行所述第一存储器中的密码程序,所述第一计算机设备具有用于执行所述密码程序的装置,所述第一计算机设备的所述装置包括 用于根据输入操作数长度利用一次迭代基于图的乘法预先计算乘法例程的装置; 用于根据预先计算的乘法例程计算两个输入操作数的第一进位少的乘积的装置;以及用于通过执行若干移位运算和异或运算来计算所述第一进位少的乘积和稀疏多项式之间的第二进位少的乘积的装置, 其中所述稀疏多项式包括多个系数且所述多个系数中等于I的系数的数目小于等于O的系数的数目,并且在定义椭圆曲线ニ进制域的多项式中移位运算和异或运算的数目约为所述多个系数中等于I的系数的数目;以及 耦合到第二存储器的第二计算机设备,所述第二计算机设备执行所述第二存储器中的所述密码程序,所述第二计算机设备具有用于执行所述密码程序的装置, 其中所述第一计算机设备和所述第二计算机设备在网络上相互传送加密数据。
13.如权利要求12所述的系统,其特征在于,所述第一计算机设备的所述装置还包括 用于通过执行若干移位运算和异或运算来计算所述第二进位少的乘积和第二稀疏多项式之间的第三进位少的乘积的装置,其中所述第二稀疏多项式包括多个系数且所述多个系数中等于I的系数的数目小于等于O的系数的数目,并且在定义椭圆曲线ニ进制域的多项式中移位运算和异或运算的数目约为所述多个系数中等于I的系数的数目。
14.如权利要求13所述的系统,其特征在于,用于计算所述第三进位少的乘积的装置包括 用于通过根据以下方程式的两个乘法执行除法来计算所述第一进位少的乘积模可编程多项式的余数P(X)的装置 P (X) =Lt (g* (X) · Ms (c (χ) · q+ (χ))), 其中 Lu(v)表示多项式V的u个最低有效项的系数,且Mu(V)表示u个最高有效项的系数;C(X)是GF(2)中带有系数的次数为s-Ι的多项式,表示将被约简的进位少的乘积的s个最闻有效位; t是多项式g的次数; g*包括不可约多项式的t个最低有效项,所述不可约多项式定义椭圆曲线(EC)密码系统;以及 商多项式q+,其中所述商多项式q+的次数是S,且等于xt+s与所述可编程多项式的除法的商。
15.如权利要求12所述的系统,其特征在于,用于预先计算的装置还包括 用于根据输入操作数长度生成属于第一操作数和第二操作数的多个图的装置,所述多个图包括多个顶点和多个边;用于提供所述多个顶点和所述多个边以在不使用递归的情况下执行所述第一操作数和所述第二操作数的乘法的装置,其中所述第一操作数和所述第二操作数的大小至少是所述系统的本机操作数大小; 用于确定所述多个顶点的第一多个乘积的装置; 用于确定多个生成边和多个生成平面的第二多个乘积的装置;以及用于由所述第一多个乘积和所述第二多个乘积创建所述多个系数以便执行所述第一操作数和所述第二操作数的乘法的装置。
16.如权利要求13所述的系统,其特征在于,用于计算所述第一进位少的乘积的装置还包括 用于计算包括可编程多项式g(x)的t个最低有效项的第一多项式g*的装置; 用于计算商多项式q+的装置,其中所述商多项式q+的次数是S,且等于xt+s与所述可编程多项式的除法的商; 用于计算所述商多项式的进位少的乘积和所述进位少的乘积的最高有效位以提供次数为2s_l的结果多项式作为两个乘法的第一乘法的装置; 用于将所得多项式的s个最高有效项与所述第一多项式进行进位少的相乘作为所述两个乘法的第二乘法以实现计算次数为t+s-2的结果多项式所需的除法的装置;以及用于返回所得多项式的t个最低有效项作为余数的装置。
17.如权利要求12所述的系统,其特征在于,所述第一存储器是双数据率(DDRn)同步动态随机存取存储器(SDRAM),其中η是等于或大于2的整数。
18.如权利要求12所述的系统,其特征在于,所述网络是有线网络和无线网络之一。
19.如权利要求12所述的系统,其特征在于,所述第二计算机设备是智能卡、个人数字助理(PDA)、蜂窝电话和游戏控制台之。
全文摘要
在某些实施例中,描述了一种用于加速特性2椭圆曲线密码系统的计算的装置和方法。在一个实施例中,根据输入操作数长度,利用一次迭代基于图的乘法预先计算乘法例程。预先计算之后,乘法例程接着利用进位少的乘法指令计算表示两个输入操作数的进位少的乘积的多项式的系数的乘积。在一个实施例中,预先计算的乘法例程可用于根据两个输入操作数的输入操作数长度扩展可从层级获得的进位少的乘法指令。计算之后,在计算进位少的乘积模定义所述椭圆曲线密码系统的可编程多项式时,进位少的乘积多项式产生余数,以形成密码密钥。描述并要求保护其他实施例。
文档编号G06F7/72GK102866878SQ201210297970
公开日2013年1月9日 申请日期2008年12月26日 优先权日2007年12月28日
发明者S·格伦, M·科恩维斯 申请人:英特尔公司