会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 电脑安全 / 密码学 / 用于进行ECC点倍的优化硬件架构和方法

用于进行ECC点倍的优化硬件架构和方法

阅读:1224发布:2020-07-03

IPRDB可以提供用于进行ECC点倍的优化硬件架构和方法专利检索,专利查询,专利分析的服务。并且一种引入了简单算术处理器的优化的硬件架构和方法,所述优化的硬件架构和方法允许高效地实现针对雅可比坐标的椭圆曲线密码学点倍算法。此外,优化的架构将对多个中间值的所需存储减少为对一个中间值的所需存储。,下面是用于进行ECC点倍的优化硬件架构和方法专利的具体信息内容。

1.一种用于使用雅可比坐标来执行椭圆曲线密码学点倍运算的装置,包括:寄存存储器,用于存储雅可比坐标下的点;

模乘器,所述模乘器电耦合到所述寄存存储器;以及简单算术处理器,所述简单算术处理器电耦合到所述寄存存储器和所述模乘器,其中所述简单算术处理器被配置为执行模减、模加、以及与2模乘,以支持在雅可比坐标下包括多个步骤的所述点倍运算,其中所述寄存存储器被配置用于不超过一个临时存储变量α,其中所述多个步骤包括用于执行以下操作的至少以下步骤:计算针对雅可比坐标X1、Y1、Z1下的点P的输入进行椭圆曲线密码学点倍运算的结果,所述结果是用雅可比坐标X3、Y3、Z3来表达的:(i)Z3=Z12;

2

(ii)Y3=Y1;

(iii)α=X1*Y3;

(iv)Z3=3(X1-Z3)*(X1+Z3);

(v)X3=Z32-8α;

(vi)α=Z3*(4α-X3);

(vii)Y3=α-8Y32;

(viii)Z3=2Y1*Z1;

其中所述简单算术处理器被配置为执行步骤(iv)至(viii),以接受输入A和B并且产生输出C和D,并且在相应的步骤中采用以下值作为输入和输出:在步骤(iv)中,A=X1、B=Z3、C=A+B、D=3(A-B);

在步骤(v)中,A=Z32、B=α、D=A-8B;

在步骤(vi)中,A=α、B=X3、D=4A-B;

在步骤(vii)中,A=α、B=Y32、D=A-8B;

在步骤(viii)中,A=Y1、D=2A。

2.根据权利要求1所述的装置,其中,所述简单算术处理器包括逻辑1位左移位器。

3.根据权利要求1所述的装置,其中,所述点倍运算是对y=x3+ax+b形式的短维尔斯特拉斯曲线执行的,其中a=-3。

4.根据权利要求1所述的装置,其中,所述模乘器被配置为:针对所述多个步骤中的每个步骤,执行至多一次模乘。

5.一种智能卡,包括根据权利要求1所述的装置。

6.一种移动设备,包括根据权利要求1所述的装置。

7.根据权利要求6所述的移动设备,其中,所述移动设备是智能电话。

8.一种用于使用雅可比坐标来执行椭圆曲线密码学点倍运算的方法,包括:接受向计算设备输入雅可比坐标X1、Y1、Z1下的点P,所述计算设备具有寄存存储器、模乘器以及简单算术处理器,其中所述简单算术处理器被配置用于模减、模加、与2模乘以及与3模乘;以及使所述计算设备能够执行一系列步骤以便对雅可比坐标下的所述点执行椭圆曲线密码学点倍运算,其中所述模乘器针对每个步骤执行至多一次模乘,其中所述一系列步骤需要不超过一个临时变量,其中所述一系列步骤包括用于执行以下操作的至少以下步骤:计算所述椭圆曲线密码学点倍运算的结果,所述结果是用雅可比坐标X3、Y3、Z3来表达的:(i)Z3=Z12;

(ii)Y3=Y12;

(iii)α=X1*Y3,其中α是临时变量;

(iv)Z3=3(X1-Z3)*(X1+Z3);

2

(v)X3=Z3-8α;

(vi)α=Z3*(4α-X3);

(vii)Y3=α-8Y32;

(viii)Z3=2Y1*Z1;

其中步骤(iv)至(viii)是由所述简单算术处理器执行的,所述简单算术处理器被配置为接受输入A和B并且产生输出C和D,并且在相应的步骤中,所述输入和所述输出采用以下值:在步骤(iv)中,A=X1、B=Z3、C=A+B、D=3(A-B);

2

在步骤(v)中,A=Z3、B=α、D=A-8B;

在步骤(vi)中,A=α、B=X3、D=4A-B;

在步骤(vii)中,A=α、B=Y32、D=A-8B;

在步骤(viii)中,A=Y1、D=2A。

9.根据权利要求8所述的方法,其中,所述计算设备是移动设备的一部分。

10.根据权利要求9所述的方法,其中,所述移动设备是智能电话。

11.根据权利要求8所述的方法,其中,所述计算设备是智能卡的一部分。

12.根据权利要求8所述的方法,还包括:使所述计算设备能够以雅可比坐标输出所述点倍运算的结果。

说明书全文

用于进行ECC点倍的优化硬件架构和方法

背景技术

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

发明内容

[0010] 经优化的硬件架构和方法通过只需要两个临时存储寄存器以及引入用于执行模加、模减以及与2模乘和模除的简单算术单元,降低了存储需要,并加速了对ECC PDBL算法的执行。

附图说明

[0011] 图1示出了实现椭圆曲线数字签名算法(ECDSA)所需的阶段101、102和103。
[0012] 图2示出了现有技术的点倍算法。
[0013] 图3示出了根据本发明的实施例。
[0014] 图4示出了根据本发明的实施例。
[0015] 图5示出了根据本发明的实施例。
[0016] 图6示出了根据本发明的实施例。
[0017] 图7示出了根据本发明的实施例。

具体实施方式

[0018] 图3示出了根据本发明的PDBL算法300。相较于针对相同的模点倍的PDBL算法200,PDBL算法300需要更少步骤,并且降低了存储需要。PDBL算法300仅需要两个临时存储寄存器T1和T2。PDBL算法300被实现在如图6和图7所示的优化硬件架构上,该优化硬件架构被特定地设计为利用PDBL算法300。
[0019] 作为步骤301的输入,图3所示的PDBL算法300采用雅可比坐标下的点P=(X1,Y1,Z1)。α是临时存储变量。应注意,所有数学运算都以模算术示出且坐标是雅可比坐标。在PDBL算法300的步骤302,如果P=∞(单位元素),则返回∞值。在步骤303,对Z1进行平方(Z1*Z1),将得到的值存储在Z3中。在步骤304,对Y1进行平方(Y1*Y1)并将得到的值存储在Y3中。在步骤305,计算X1*Y3,并将结果存储在临时寄存器α中。在步骤306,计算3(X1–Z3)*(X1+Z3),并将结果存储在Z3中。在步骤307,计算Z3*Z3-8α,将结果存储在X3中。在步骤308,计算Z3*(4α–X3),并将结果存储在临时寄存器α中。在步骤309,计算α–8Y1*Y1,并将结果存储在Y3中。在步骤310,计算2Y1*Z1,并将结果存储在Z3中。最后,在步骤311,将P的点倍的结果以雅可比坐标返回为(X3,Y3,Z3)。
[0020] 图3的PDBL算法300中的计算最密集的运算是由“*”表示的模乘。由于PDBL算法300中所述的大部分步骤依赖于该算法的先前步骤,通常最有效的是在硬件中使用单个模乘器来执行PDBL算法300,但是根据本发明,可以使用多于一个模乘器,这允许在步骤中执行多于一个模乘。仅使用一个模乘器将PDBL算法300中的每个步骤限制为具有不超过一个模乘。
[0021] 需要注意的是,除了在PDBL算法300的步骤303、304、305、306、307、308、309和310中执行的模乘步骤之外,还执行附加的比较简单的运算:模减和模加以及与2的幂模乘。应注意,乘以2的幂在二进制中仅是左移位运算。为了加速执行PDBL算法300以及消除对附加临时寄存器的需要,使用根据本发明的简单算术单元(SAU)400的实施例,所述实施例具有如图4所示的输入A、B以及输出C和D。
[0022] 图5示出了如何分解步骤306、307、308、309和310,以便利用具有输入A和B以及输出C和D的SAU 400。应注意,SAU 400的输入和输出标签与图5中的相应变量名称相对应。块501示出了如何使用SAU 400分解PDBL算法300的步骤306,并涉及设置输入A=X1和B=Z3,输出C=A+B且D=3(A–B)。然后将输出C和D相乘并将结果存储在Z3中。块502示出了如何使用SAU 400分解PDBL算法300的步骤307,并涉及设置输入A=Z32和B=α,输出D=A–8B。块503示出了如何使用SAU 400分解PDBL算法300的步骤308,并涉及设置输入A=α和B=X3,输出D=
4A–B。然后将输出D与Z3相乘,并将结果存储在临时存储寄存器α中。块504示出了如何使用
2
SAU 400分解PDBL算法300的步骤309,并涉及设置输入A=α和B=Y3 ,输出D=A–8B。块505示出了如何使用SAU 400分解PDBL算法300的步骤310,并涉及设置输入A=Y1且输出D=2A。然后将D与Z1相乘,并将结果存储在Z3中。
[0023] 图6示出了根据本发明的实施例600,包括具有输出寄存器(未示出)的多循环乘法器610、SAU 400、乘法器(MUX)620和MUX630、以及输入寄存器X1、Y1、Z1、x2、y2(未使用)、输出寄存器X3、Y3、Z3和临时寄存器α,所述寄存器均是寄存存储器695的一部分。应注意,相应寄存器标签与图3和图5中的变量名称相对应。由执行PDBL算法300的微处理器(未示出)控制乘法器(MUX)620、MUX 630和MUX 720、722和725(SAU 400的一部分,参照图7)。如上所述,PDBL算法300中的每个步骤涉及至多一个模乘(不计算乘以2的幂,乘以2的幂在二进制表示中仅是移位运算)。
[0024] 图7所示的SAU 400包括减法器710、加法器722、逻辑1位左移位器715、逻辑2位左移位器718(乘以4)、逻辑3位左移位器714(乘以8)、MUX 720、MUX 723、MUX 725以及乘以3的乘法器728,其中使用逻辑1位左移位器和加法器来构造所述乘以3的乘法器728(2x+x=3x)。
[0025] 输入A通过线缆671连接到加法器722,并且还通过线缆671连接到1位左移位器715、MUX 720的输入“0”以及逻辑2位左移位器718。逻辑1位移位器715在线缆776上向MUX 
725的输入“0”输出2A。逻辑2位左移位器718在线缆733上向MUX 720的输入“1”输出4A。MUX 
720通过线缆731连接到减法器710的被减数输入。输入B通过线缆672连接到加法器722,并还通过线缆672连接到逻辑3位左移位器714和MUX 723的输入“0”。逻辑3位左移位器714通过线缆744向MUX 723的输入“1”输出8B。MUX 723通过线缆732连接到减法器710的减数输入。加法器722在线缆690上输出C(=A+B)。减法器710通过线缆777连接到MUX 725的输入“1”,并通过线缆777连接到乘以3的乘法器728。乘以3的乘法器728连接到MUX 725的输入“2”。MUX 725在线缆696上输出D(参照图4)。
[0026] 多循环乘法器610通过将线缆635和640上的值相乘并输出结果来运作。使用微处理器(未示出)执行步骤301-302,而不使用多循环乘法器610和SAU 400。
[0027] 步骤303使用多循环乘法器610。寄存存储器695在多循环乘法器610的输入635和640二者上提供Z1,并且多循环乘法器610计算Z12,在线缆上将Z12发送到寄存存储器695,将Z12存储在Z3中。
[0028] 步骤304使用多循环乘法器610。寄存存储器695在线缆635和线缆640二者上将Y1提供到多循环乘法器610。多循环乘法器610计算Y1*Y1,在线缆650上将Y1*Y1发送到寄存存储器695,将Y1*Y1存储在Y3中。
[0029] 步骤305使用多循环乘法器610。寄存存储器695在线缆635上向多循环乘法器610提供X1并且在线缆640上向多循环乘法器610提供Y3。多循环乘法器610计算X1*Y3,在线缆650上向寄存存储器695发送X1*Y3,其中将X1*Y3存储在临时寄存器α中。
[0030] 步骤306使用多循环乘法器610和SAU 400二者。寄存存储器695在线缆665上将X1提供给MUX 620的输入“0”,将MUX 620设置为“0”。MUX 620将线缆671上去往SAU 400的输入A的X1直接发送到加法器722以及MUX 720的输入“0”,将MUX 720设置为“0”。MUX 720在线缆731上向减法器710的被减数输入发送A(X1)。寄存存储器695在线缆650上向MUX 630的输入“0”提供Z3,将MUX 630设置为“0”。MUX 630将线缆672上去往SAU 400的输入B的Z3直接发送到加法器722以及MUX 723的输入“0”,将MUX 723设置为“0”。MUX 723向减法器710的减数输入发送B(Z3)。减法器710计算A–B(也就是X1–Z3),在线缆777上向乘以3的乘法器728输出A–B,乘以3的乘法器728计算3(A-B)(也就是3(X1–Z3))并在线缆778上向MUX 725的输入“2”输出3(A-B)。MUX 725在线缆696上向寄存存储器695发送D(也就是3(A–B)=3(X1–Z3)),寄存存储器695在线缆635上向多循环乘法器610传送D。加法器722计算A+B,并在线缆690上将结果作为C(也就是(X1+Z3))向寄存存储器695输出,其中寄存存储器695在线缆640上将C传送给多循环乘法器610。多循环乘法器计算C*D(也就是3(X1–Z3)*(X1+Z3)),在线缆650上将C*D输出到寄存存储器695,其中将C*D存储在Z3中。
[0031] 步骤307使用多循环乘法器610和SAU 400二者。寄存存储器695在线缆635和640二者上将Z3提供到多循环乘法器610。多循环乘法器610计算Z3*Z3并在线缆650上将Z3*Z3输出到MUX 620的输入“1”,将MUX 620设置为“1”。MUX 620在线缆671上向SAU 400的输入A发送Z32,所述线缆671将该MUX与MUX 720上的输入“0”相连。MUX 720在线缆731上向减法器710的被减数输入发送A(Z32)。寄存存储器695在线缆660上向MUX 630的输入“0”提供α,将MUX 630设置为“0”。MUX 630在线缆672上向SAU 400的输入B发送α,线缆672与逻辑3位左移位器714(乘以8)相连。逻辑3位左移位器714计算8B(8α)并在线缆744上向MUX 723的输入“1”输出8B,将MUX 723设置为“1”。MUX 723在线缆732上向减法器710的减数输入发送8B。减法器计算A–8B(也就是Z3-8α)并在线缆777上向MUX 725的输入“1”输出A–8B,将MUX 725设置为“1”。MUX 725在线缆696上向寄存存储器695发送D(也就是A–8B=Z3-8α),其中将结果存储在X3中。
[0032] 步骤308使用多循环乘法器610和SAU 400二者。寄存存储器695在线缆665上向MUX 620的输入“0”提供α,将MUX 620设置为“0”。MUX 620在线缆671上向SAU 400的输入A发送α,其中所述线缆671与逻辑2位左移位器718(乘以4)相连。逻辑2位左移位器718计算4A(4α)并在线缆733上向MUX 720的输入“1”输出4A,将MUX 720设置为“1”。MUX 720在线缆731上向减法器710的被减数输入发送4A。寄存存储器695在线缆660上向MUX 630的输入“0”提供X3,将MUX 630设置为“0”。MUX 630在与MUX 723的输入“0”相连的线缆672上向SAU 400的输入B发送X3,将MUX 723设置为“0”。MUX 723在线缆732上向减法器710的减数输入发送B(X3)。减法器710计算4A–B(也就是4α-X3)并在线缆777上向MUX 725的输入“1”输出4A–B,将MUX 725设置为“1”。MUX 725在线缆696上向寄存存储器695输出D(也就是4A–B=4α-X3),寄存存储器
695在线缆635上向多循环乘法器610传送D并在线缆640上向多循环乘法器610提供Z3,其中多循环乘法器610计算Z3*D(也就是Z3*(4α–X3))并在线缆650上向寄存存储器695输出Z3*D,将该结果存储在临时寄存器α中。
[0033] 步骤309使用多循环乘法器610和SAU 400二者。寄存存储器695在线缆665上向MUX 620的输入“0”提供α,将MUX 620设置为“0”。MUX 620在与MUX 720的输入“0”相连的线缆671上向SAU 400的输入A发送α,将MUX 720设置为“0”。MUX 720在线缆731上向减法器710的被减数输入发送A(α)。寄存存储器695在线缆635和线缆640二者上向多循环乘法器610提供Y3,多循环乘法器610计算Y3*Y3并在线缆650上输出Y3*Y3,其中所述线缆650与MUX 630的输入“1”相连,将MUX 630设置为“1”。MUX 630在与逻辑3位左移位器719(乘以8)相连的线缆
672上向SAU 400的输入B输出Y32。逻辑3位左移位器719计算8B(8Y32)并在线缆744上向MUX 
723的输入“1”输出8B,将MUX 723设置为“1”。MUX 723向减法器710的减数输入发送8B。减法
2
器710计算A–8B(也就是α-8Y3)并在线缆777上向MUX 725的输入“1”输出A–8B。MUX 725在线缆696上向寄存存储器695发送D(也就是A–8B=α-8Y32),将该结果存储在Y3中。
[0034] 步骤310使用多循环乘法器610和SAU 400二者。寄存存储器695在线缆665上将Y1提供给MUX 620的输入“0”,将MUX 620设置为“0”。MUX 620在与逻辑1位左移位器715(乘以2)相连的线缆671上向SAU 400的输入A发送Y1。逻辑1位左移位器715计算2A(2Y1)并在线缆
776上向MUX 725的输入“0”输出2A,将MUX 725设置为“0”。MUX 725在线缆696向寄存存储器
695发送D(也就是2A=2Y1),寄存存储器695在线缆635上向多循环乘法器610传送D并在线缆640上向多循环乘法器610提供Z1。多循环乘法器610计算D*Z1(也就是说2A*Z1=2Y1*Z1))并在线缆650上向寄存存储器695输出D*Z1,将D*Z1存储在Z3中。
[0035] 使用微处理器执行步骤311,并且步骤311返回PDBL算法300的结果,即针对输入(X1,Y1,Z1)的(X3,Y3,Z3)。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用