使用混合仿射雅可比坐标进行ecc点加的硬件架构和方法

文档序号:8412300阅读:857来源:国知局
使用混合仿射雅可比坐标进行ecc点加的硬件架构和方法
【专利说明】
【背景技术】
[0001]电子设备正成为日常生活无处不在的部分。所用的智能电话和个人平板计算机的数目正在迅速增长。越来越多地使用智能电话和个人平板电脑的副作用在于设备被越来越多地用于存储诸如个人和银行数据等的机密数据。保护这种数据不被窃取是十分重要的。
[0002]密码学领域提供用于使这种机密数据保持安全的保护工具。基于难以解决数学问题,密码学通常需要较高计算强度的计算,所述较高计算强度的计算是在云计算和普适计算(ubicomp)中更广泛应用的主要障碍。如果无法足够快速地执行密码操作,则通常不接受将密码学工具用于互联网。为了在提供安全性和数据完整性的同时使密码工具是透明的,密码学工具需要遵循由于移动应用中对高速度和低功耗的需求而推动的趋势。
[0003]通常,公钥算法是密码学中计算最密集的计算。例如,以椭圆曲线密码学(ECC),即,计算效率最高的公钥算法之一,为例。256位版本的ECC提供等同于128位对称密钥的安全性。256位ECC公钥应提供与3072位RSA公钥可比的安全性。ECC的基本运算是点乘,点乘是大量基于模乘的运算,即,执行一个ECC 256点乘需要大约256位整数的3500个模乘。更高安全性等级(更大位整数)需要甚至更多的计算工作。
[0004]构建ECC的高效实现方式通常是有意义的,并且涉及多个阶段。图1示出了实现椭圆曲线数字签名算法(EOTSA)所需的阶段101、102和103,所述E⑶SA是ECC的应用之一。阶段101处理包括模加、模逆和模乘的有限域算术。阶段102处理点加和点倍(pointdoubling),包括联合稀疏形式(JSF)、非相邻形式(NAF)、加窗和投影坐标。最后,阶段103处理E⑶SA以及数字签名的接受或拒绝。
[0005]可以将任意椭圆曲线写成由以下形式的方程定义的平面几何曲线(假定系数域的特性不等于2或3):
[0006]y2= X 3+ax+b ((I)
[0007]该方程是非奇异的;也就是说,该方程没有尖端(cusp)或自相交,公知为短维尔斯特拉斯(Weierstrass)形式,其中,a和b是整数。通常在例如由NIST、SEC和ANSI颁布的若干标准中使用a = -3的情况,这使得该情况成为通常感兴趣的情况。
[0008]在用于高效实现点加(PADD)和点倍(PDBL)运算的文献中,已经提出了许多算法。对这些算法中的很多算法进行优化以便软件实现。虽然它们通常在特定平台上是高效的,但是一旦调整底层硬件以适应算法,则该算法通常不是最优的。
[0009]CoheruMiyaji 以及 Ono 在 Proceedings of the Internat1nal Conference onthe Theory and Applicat1ns of Cryptography and Informat1n Security ;Advancesin Cryptology,ASIACRYPT 1998? pages 51-65,Springer-Verlag,1998 中已经描述了混合仿射雅可比(affine-Jacobian)坐标的PADD算法。雅可比坐标是投影坐标,每个点被表示为三个坐标(X,Y,Z),其中X = X/Z2、y = y/Z3,仿射坐标是常见的(X,y)坐标。应注意坐标都是整数。PADD算法200需要8个模乘、3个模平方、6个模减以及一个与2模乘,如图2所示。为了执行PADD,该算法还需要最少4个临时寄存器,其中对于ECC 256位,每个寄存器需要256位大小。在有限域K内进行所有运算,其中椭圆曲线E被定义在有限域K上。通过质数P定义有限算术域K,使得以P为模执行所有算术运算。加性单位元素是无穷远点。

【发明内容】

[0010]经优化的硬件架构和方法通过只需要两个临时存储寄存器以及引入用于执行模减和与2模乘的简单算术单元,降低了存储需要,并加速了对ECC PADD算法的执行。
【附图说明】
[0011]图1示出了实现椭圆曲线数字签名算法(EOTSA)所需的阶段101、102和103。
[0012]图2示出了现有技术的点加算法。
[0013]图3示出了根据本发明的实施例。
[0014]图4示出了根据本发明的实施例。
[0015]图5示出了根据本发明的实施例。
[0016]图6示出了根据本发明的实施例。
[0017]图7示出了根据本发明的实施例。
【具体实施方式】
[0018]图3示出了根据本发明的PADD算法300。相较于针对相同的两点模加的PADD算法200,PADD算法300需要更少步骤,并且降低了存储需要。PADD算法300仅需要两个临时存储寄存器!\和T 2。应注意,PADD算法300使用混合仿射雅可比坐标执行模点加,以避免需要模逆运算,其中模逆运算通常比模乘运算慢一至两个数量级。相较于同样避免需要模逆运算的仅以雅可比坐标执行点加,使用混合坐标提供了速度优势。PADD算法300被实现在优化硬件架构上,该优化硬件架构如图6和图7所示并且被特定地设计为利用PADD算法 300。
[0019]作为步骤301的输入,图3所示的PADD算法300采用雅可比坐标下的点P = (X1,Y1, Z1)以及仿射坐标下的点Q = (x2,y2),作为要按照P+Q相加的两个点。!\和T 2是临时存储变量。应注意,所有数学运算都以模算术示出。在PADD算法300的步骤302,如果Q=⑴,则由于无穷远点是单位元素,将点P的值返回作为P+Q的模加的结果。类似地,在步骤303,如果P =°°,则由于无穷远点是加性单位元素,将点Q的值返回作为P+Q的模加的结果。在步骤304,对雅可比坐标21进行平方,将得到的值存储在临时寄存器T i中。在步骤305,计算ZfT1,将得到的值存储在临时寄存器T2中。在步骤306,计算T ^y2-Y1,其中72在仿射坐标下,1在雅可比坐标下,将结果存储在临时寄存器T2中。在步骤307,将临时寄存器T #存储的值与X2相乘,然后从该结果中减去X1,其中&在仿射坐标下,雅可比坐标下,将结果存储在临时寄存器T1中。如果T jP T 2都是零,则由于这意味着P = Q,步骤308提供返回,如果T1为零且T2不为零,则由于这意味着P = -Q,步骤309提供返回。在步骤310,将雅可比坐标21乘以临时寄存器T !中的值,将该结果存储为雅可比坐标Z 3。在步骤311,对临时寄存器!\所存储的值进行平方,并将其存储为雅可比坐标Y 30在步骤312,对临时寄存器丁2所存储的值进行平方,并将其存储为雅可比坐标X 30在步骤313,计算Y3*I\,并将结果存储在临时寄存器T1中。在步骤314,计算T AZY3^X1,并从雅可比坐标X3中减去该值,将结果存储为雅可比坐标Χ3。在步骤315,计算Y^X1-X3,将该值乘以T2,并将结果存储为雅可比坐标Y3。应注意,在步骤314,计算YdX1,在步骤315使用该值,且不在步骤315再次计算该值。在步骤316,计算TfY1,从雅可比坐标Y3中减去该值,并将结果存储为雅可比坐标Y 30最后,在步骤317,将P+Q的点加的结果:(Χ3,\,Z3)以雅可比坐标返回。
[0020]图3的PADD算法300中的计算最密集的运算是由表示的模乘。由于PADD算法300中所述的大部分步骤依赖于该算法的先前步骤,通常最有效的是在硬件中使用单个模乘器来执行PADD算法300,但是根据本发明可以使用多于一个模乘器。仅使用一个模乘器将PADD算法300中的每个步骤限制为具有不超过一个模乘。尽管步骤315似乎包含两个模乘,但是在步骤314已计算出Υ3*\的结果,该结果被直接馈送到硬件模乘器的输入端。
[0021]需要注意的是,除了在PADD算法300的步骤306、307、314、315和316中执行的模乘步骤之外,还执行两个附加的比较简单的运算:模减和与2模乘。应注意,乘以或除以2的幂在二进制中仅是移位运算。为了加速执行PADD算法300以及消除对附加临时寄存器的需要,根据本发明的简单算术单元(SAU)400的实施例具有如图4所示的输入和输出。
[0022]图5示出了如何分解图3的PADD 300的步骤306、307、314、315和316,以便使用具有输入A、B和C以及输出D的SAU 400。应注意,SAU 400的输入和输出标签与图5中的相应变量名称相对应。块501示出了如何使用SAU 400分解PADD算法300的步骤306,并涉及设置输入A = T2*y#P B = Y i,输出D = A-B。将输出D写入临时寄存器T2。块501示出了如何使用SAU 400分解PADD算法300的步骤307,并涉及设置输入A = 1\朽2和B =X1,输出D = A-B。然后将输出D写入临时寄存器1\。块503示出了如何使用SAU 400分解PADD算法300的步骤314,并涉及设置输入A = X3、B = T1X = y2*Xi,输出D = A-B-2C。将输出D写成雅可比坐标X3。块504示出了如何使用SAU 400分解PADD算法300的步骤315,并涉及设置输入A = Y3*XjPB = X3,输出D = A-B。将输出D写成雅可比坐标Y3。块505示出了如何使用SAU 400分解PADD算法300的步骤316,并涉及设置输入A =乙和B= T1^Y1,输出D = A-B。将输出D写成雅可比坐标Y3。应注意,“不理会”指示该值与在相应步骤中执行的计算不相关。
[0023]图6示出了根据本发明的实施例600,包括具有输出寄存器(未示出)的多循环乘法器610、SAU 400、乘法器(MUX) 620和MUX630、以及输入寄存器X1、Yp Zp X2、y2、输出寄存器X3、Y3、Z3和临时寄存器T T 2,所述寄存器均是寄存存储器695的一部分。应注意,相应寄存器标签与图3和图5中的变量名称相对应。由执行PADD算法300的微处理器(未示出)控制MUX 620,630和740 (SAU400的一部分,参照图7)。如上所述,PADD算法300中的每个步骤涉及至多一个模乘(不计算乘以或除以2,乘以或除以2在二进制表示中仅是移位运算)。
[0024]图7所示的SAU 400包括减法器710和720、逻辑I位左移位器715和MUX 720。输入A通过线缆670连接到减法器710的被减数输入,输入B通过线缆675连接到减法器710的减数输入。输入C通过线缆650连接到逻辑I位左移位器715,所述逻辑I位左移位器715执行输入C与2的乘法。减法器710在线缆730上输出A-B,线缆730连接到减法器720的被减数输入以及MUX 740的“O”输入。逻辑I位左移位器715在线缆735上将2C输出到减法器720的减数输入。减法器720在线缆750上将A-B-2C输出到MUX 740的“ I ”输入。MUX 740在线缆690上发送D。
[0025]多循环乘法器610通过将输入635和640上的值相乘并输出结果来运作。在微处理器(未示出)中执行步骤301-303,而不使用多循环乘法器610和SAU 400。
[0026]步
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1