一种基于FPGA的素域椭圆曲线标量乘结构*
1 引言
椭圆曲线密码体制中核心算法是标量乘(或称点乘)kP,k为大整数,P为定义在素域GF(p)上的点(p为满足p>3的素数),标量乘即k个点P相加。GF(p)上的椭圆曲线被定义成满足下列方程:
y2=x3 + ax+b,a,b∈GF(p)且
(4a3+27b2) mod p≠0
的点和无穷远点组成。
针对素域上的标量乘结构有大量的相关研究。Mcivor等[1]基于一种统一的模逆算法和全字乘法器实现了256-bit的标量乘,提出的模逆算法可以处理整数的模逆和Montgomery域中整数的Montgomery模逆,比传统算法节省了一次乘法,然而由于全字256-bit乘法器采用的Schoolbook算法,硬件实现代价很大。Gutub等[2]充分利用流水化调度方法提升设计的吞吐率,由于选择的标量乘算法中点加和倍点可以并行计算,同时将点加和倍点操作调度在一个四级流水的乘法器和一个二级流水的加法器运行,最大化利用了计算资源。Chen等[3]基于提出的能够高效实现加减乘除的统一systolic阵列结构实现ECC处理器,同时通过两种优化方法来避免systolic的流水线停顿。
第三,人力资本理论。西奥多·舒尔茨说:“我敢明确地说,人力资本对于增加工人的实际收入而言,至关重要不可或缺。”人力资本理论有四个部分:一是在所有资源里,人力资源位居第一;二是在发展经济的阶段中,物质资本没有人力资本的有效性大;三是人力资本以提高人的素养为核心,主要体现在对教育投资上;四是教育投资以市场供需关系作为基础。较物质投资而言,人力资本投资会带来更大的经济效益,而提高人力资本投资效率的最佳方式是教育投资。
Örs等[4]采用修正的Jacobian坐标表示的点加和倍点算法,由于基于位级的systolic阵列,性能较低。Zhang等[5]对修正的Jacobian坐标表示的点加和倍点算法进行了优化,提升了标量乘的性能,认为在NAF(Non-Adjacent Form)标量乘算法中点加为倍点操作的1/3,以牺牲点加运算速度为代价来提升倍点的运算性能可以带来整体标量乘的性能提升,同时利用64-bit乘法器来降低Montgomery模乘的运行时钟周期。其他相关工作[6-9]还在不同地方有所创新。
渐渐地,喜姑发现,其实,香娭毑是真心乐意陪她去学戏的。喜姑还发现,师傅那婆娘桂娭毑,只要一见香娭毑,那张脸就不是苦瓜脸了,脸上就有了笑容,这边两人在教戏学戏,那厢两人有说有笑,没完没了。有时候,二狗伢也提着琴过来凑热闹,他的胡琴一响,这戏就教得越发有味了。
本文提出一种基于简化求商的高基Montgomery模乘流水化阵列结构,采用修正的Jacobian坐标的点加和倍点算法,实现了GF(p)上椭圆曲线标量乘结构,与相关工作相比,性能更高。
2 标量乘算法
IEEE推荐的优化算法是addition-subtraction方法[10],该算法中假设k为正数,由左到右对k和3k同时进行扫描,如下所示:
在实验过程中,我们选择了SM2中数字签名与验证示例采用的曲线和私钥,由私钥生成公钥的过程就是一次标量乘的过程,即公钥PA=dAG。具体参数如下:
阶n:8542D69E 4C044F18 E8B92435 BF6FF7DD 29772063 0485628D 5AE74EE7 C32E79B7
1:3k=(hl,…,h1,h0)2,h1=1
2:k=(kl,…,k1,k0)2
表2给出了整个标量乘硬件的各种操作的性能节拍数。表3给出了与其它相关工作的比较,由于所采用的平台不同、所采用的算法不同,很难直接比较。本文提出的时钟节拍数远远低于相关工作的,仅比Zhang[5]的设计高18%。从运行时间来看,所提出的结构性能最好。
3:S←P
4:for i=l-1 to 1 do
5: S←2S;
6: if (hiand ki=0) then S←S+P
7: if (hiand ki=1) then S←S-P
本文采用修正的Jacobian投影坐标形式计算点加和倍点操作,提出的标量乘结构主要基于一种简化求商的结构,除了模乘结构,还需要用于计算模逆的算术单元,该算术单元主要用于坐标变换。因此,标量乘结构需要包括分别实现模乘、模加/减、模逆等各种操作模块,用于实现点加、倍点、标量乘等上层操作以及投影坐标到线性坐标的转换、Montgomery域到常规域的转换,结构如图2所示。
在使用仿射坐标时,设E上的点P1=(x1,y1),P2=(x2,y2),P3=(x3,y3)=P1+P2≠O,则:
其中,
P3=P1-P2时,可以看成P3=P1+(-P2),而-P2=(x2,-y2)。可以看出,加运算主要由素域上的加、平方、乘和逆等基本操作组成。求逆运算代价较大,可以通过投影坐标来避开求逆,这样当标量乘结束由投影坐标转换到仿射坐标时,仅需要一次求逆运算。开始时,需要由仿射坐标(x,y)转换到Jacobian投影坐标(X,Y,Z),转换非常简单,即:
X=x,Y=y,Z=1
由Jacobian投影坐标(X,Y,Z)转换到仿射坐标的表达式是:
x=X/Z2,y=Y/Z3
(2)常规整数转换成Montgomery域数;
EllipticCurveAddingEllipticCurveDoublingA=X2*Z21B=Y2*Z31C=A-X1D=B-Y1X3=D2-(C3+2X1*C2)Y3=D*(X1*C2-X3)-Y1*C3Z3=Z1*CAZ43=(a*Z41)*C4A=4X1*Y21B=8*Y41C=3*X21+(a*Z41)X3=C2-1AY3=C*(A-X3)-BZ3=2Y1*Z1aZ43=2*B*(a*Z14)13modularmultiplication7modularaddition8modularmultiplication13modularaddition
Figure 1 Point doubling and point addition (Modified Jacobian projective coordinates)
图1 修正Jacobian投影坐标的点加和倍点计算
3 结构
3.1 结构概述
不管采用何种算法,都需要进行一系列加法。椭圆曲线上的加法运算定义成P3=P1+P2,该运算需要区分P1=P2和P1≠P2两种情况,P1=P2时称为倍点运算P3=2P1,P1≠P2时称为点加运算。
Figure 2 Diagram of scalar multiplication architecture图2 标量乘结构框图
该设计的运行步骤为:
(1)线性坐标转换到修正的Jacobian投影坐标,(x,y)变换成(X,Y,Z,aZ4),即X=x,Y=y,Z=1,aZ4=a;
一般采用修正的Jacobian投影坐标形式[11]进行计算,修正的Jacobian投影坐标使用四元组表示,计算过程如图1所示,其中点加采用的是(X1,Y1,Z1,a)+(X2,Y2,1,a)=(X3,Y3,Z3,a)。
(3)标量乘运算,涉及到点加操作和倍点操作;
(4)修正的Jacobian投影坐标转换为线性坐标,涉及到求逆或除法操作;
(5)Montgomery域数转换成常规整数。
上述步骤可能会共用一种运算单元,比如域转换和点加、倍点需要共用Montgomery模乘运算部件。
公路工程管理是一项综合性较强且复杂的工作,涉及多方面的专业知识与技能。对相关管理人员提出了更高的要求,不仅要对施工质量、成本、进度进行严格的控制,还要重视施工安全管理。但是,一些公路工程管理人员忽视了施工过程中的安全管理,导致施工现场缺少安全设施,施工人员的安全保护措施发放不全,对员工的反馈或意见不能及时回复,很容易导致工程质量问题无法得到及时的处理,造成工程安全隐患,对施工人员的人身安全造成威胁,给施工企业带来严重的负面影响与经济损失[2]。
3.2 简化求商的Montgomery模乘结构
Ors[12]提出简化求商的高基Montgomery模乘算法,可以同时消去原始算法求商过程中的加法和乘法,将其转换成简单的截断操作。分段的形式简化求商算法如算法1所示,相应的线性阵列的PE结构如图3所示。
算法1 简化求商算法
n/wn=log2 M+1。
1:Z=0;
2:for i=0 to e+2 do
3: qi=Z(0);
5: for j=0 to e+1 do
7: Z(e+2)=C;
Figure 3 PE of linear array for simplifying quotient图3 简化求商线性阵列的PE结构
PE用同一个X(i)参与计算,在不同时间计算出Z的不同段。PE开始时完成任务A(i),只需要一拍时间,第二拍执行B(i,j),一拍完成,得到的新的Z传递给下一个PE,这样PE间的延迟为两拍。
3.3 标量乘结构
我们的Montgomery模乘阵列结构为完全流水化结构,可以对点加和倍点进行流水化调度以充分利用模乘阵列,而采用流水调度的基础是寻找可以独立同时执行的操作。
挤压法是一种新兴的微胶囊技术,相对其他微胶囊制作方法有自身优势,它是在低温下加工生产微胶囊的技术,表面孔面积较小,能防止精油挥发和氧气进入; 表面油量少,货架寿命长; 操作温度低,对风味物质损害小。因此有必要在挤压法制备精油微胶囊工艺方面进行深入研究。
图4和图5分别是点加和倍点操作的数据流图,椭圆代表乘法运算,方框代表加法运算,两个数据流图说明了各个运算之间的数据依赖关系。通过分析该数据流图可以提取和开发点加和倍点操作中的并行性,充分利用模乘和模加运算部件,提升算法运行性能。根据点加和倍点的数据流图,可以得到优化的调度方案。
Figure 4 Dataflow of point addition图4 点加操作的数据流图
Figure 5 Dataflow of point doubling图5 倍点操作的数据流图
3.4 Montgomery模逆结构
基于扩展GCD求逆算法,Kaliski[13]提出一种计算Montgomery模逆的算法。Montgomery模逆算法分为两步,第一步是计算准Montgomery模逆;第二步是对得到的准Montgomery模逆进行修正。基于Kaliski提出的求逆串行算法,提出了并行化方法及相应的硬件结构。
4 实验结果
针对GF(p256)域上椭圆曲线的标量乘进行硬件结构的设计,提出的结构采用Verilog HDL进行描述,以Xilinx Virtex-5 XC5VLX330为目标器件进行综合。主要基于ModelSim工具进行实验评测,综合结果由 Xilinx ISE给出。综合结果如表1所示。在标量乘结构中,数据通路的控制逻辑和状态控制逻辑占用了较多的资源;模逆结构中,长整数加法器占用资源最多。
Table 1 Synthesis result for the target device Xilinx XC5VLX330表1 目标器件为Xilinx XC5VLX330时的综合结果
标量乘结构Montgomery模逆结构总体结构Slice数目6679(12%)1383(2%)9149(17%)SliceRegister数目15010(7%)1696(1%)18457(8%)SliceLUT数目19062(9%)4355(2%)24183(11%)DSP数目38(19%)038(19%)最大频率(综合后)/MHz143.642146.511121.684最大频率(布局布线后)/MHz116.104111.98288.574
Input:k,P∈E(Fq)
素数p:8542D69E 4C044F18 E8B92435 BF6FF7DE 45728391 5C45517D 722EDB8B 08F1DFC3
系数a:787968B4 FA32C3FD 2417842E 73BBFEFF 2F3C848B 6831D7E0 EC65228B 3937E498
系数b:63E4C6D3 B23B0C84 9CF84241 484BFE48 F61D59A5 B16BA06E 6E12D1DA 27C5249A
基点G=(xG,yG),其阶记为n
坐标xG:421DEBD6 1B62EAB6 746434EB C3CC315E 32220B3B ADD50BDC 4C4E6C14 7FEDD43D
坐标yG:0680512B CBB42C07 D47349D2 153B70C4 E5D7FDFC BFA36EA1 A85841B9 E46E09A2
Output:kP
私钥dA:128B2FA8 BD433C6C 068C8D80 3DFF7979 2A519A55 171B1B65 0C23661D 15897263
公钥PA=(xA,yA):
坐标xA:0AE4C779 8AA0F119 471BEE11 825BE462 02BB79E2 A5844495 E97C04FF 4DF2548A
坐标yA:7C0240F8 8F1CD4E1 6352A73C 17B7F16F 07353E53 A176D684 A9FE0C6B B798E857
2000年以来,全球约90%的研发投入集中在北美、欧洲和亚洲,不过北美和欧洲占全球研发投入的比重一直呈下降趋势,北美从40%下降到28%,欧洲从27%降至22%,东亚、东南亚和南亚地区则从25%上升至40%,预计亚洲的这种上升趋势短期内不会结束(见图1)。
5.2.5 A medical sense that human being should keep balance and coordination with nature
Table 2 Performance of all operations (cycles)表2 各种操作的性能(拍数)
操作时钟周期域转换113倍点212点加307标量乘86432Montgomery模逆+坐标转换2427总运行时间88972
5 结束语
本文基于高基Montgomery模乘流水化阵列结构,提出素域上椭圆曲线标量乘硬件结构,并实现了该结构的主要功能。该结构还需要进一步优化和完善,利用更大位宽的大整数乘法器实现标量乘硬件结构。
参考文献:
[1] Mcivor C J, Mcloone M, Mccanny J V. Hardware elliptic curve cryptographic processor over GF(p)[J].IEEE Transactions on Circuits and Systems—I:Regular Papers,2006,53(9):1946-1957.
[2] Gutub A A, Ibrahim M K,Kayali A.Pipelining GF(p) elliptic curve cryptography computation[C]∥Proc of IEEE International Conference on Computer Systems and Applications,2006:93-99.
[3] Chen Gang,Bai Guo-qiang,Chen Hong-yi.A high-performance elliptic curve cryptographic processor for general curves over GF(p) based on a systolic arithmetic unit[J].IEEE Transactions on Circuits and Systems—II:Express Briefs,2007,54(5):412-416.
[4] Örs S B,Batina L,Preneel B,et al.Hardware implementation of an elliptic curve processor over GF(p)[C]∥Proc of the
Table 3 Performance comparison表3 性能比较
设计FPGA/工艺位宽面积频率/(MHz)时钟周期数时间/(ms)标量乘算法Mclvor[1]XilinxXV2VP12525615755slices+25616bmultipliers39.5151K3.86double-and-addChen[3]0.13μmASIC256122Kgates556562K1.01NAFOrs[4]XilinxV1000E1606kslices91.31316K14.4double-and-addZhang[5]VirtexXC2V2502561505slices+64bmultipliers5074K1.48NAFAnanyi[6]VirtexXC2VP10025620793slices49.5317K6.41NAFGhosh[7]XilinxSparatan-3xc3s50002568830slices37.33---Lai[8]0.13μmASIC2565.15mm2208252K1.21addition-substractionVliegen[9]VirtexIIXC2VP302561694+716bmulti-pliers108.21705K15.76Montgomeryladder本文工作VirtexXV5VLX3302569149slices+3816bmultipliers88.57488K1.00addition-substraction
14th IEEE International Conference Application-Specific Systems,Architectures,and Processors (ASAP ’03),2003:433-443.
[5] Zhang J,Xiong T,Fang X.A fast hardware implementation of elliptic curve cryptography[C]∥Proc of the 1st International Conference on Information Science and Engineering (ICISE2009),2009:1519-1522.
[6] Ananyi K,Alrimeih H,Rakhmatov D.Flexible hardware processor for elliptic curve cryptography over NIST prime fields[J].IEEE Transactions on Very Large Scale Integration (VLSI) Systems,2009,17(8):1099-1112.
[7] Ghosh S,Alam M,Gupta I S,et al.A robust GF(p) parallel arithmetic unit for public key cryptography[C]∥Proc of the 10th Euromicro Conference on Digital System Design Architectures,Methods and Tools (DSD 2007),2007:109-115.
[8] Lai Jyu-Yuan, Huang Chih-Tsun. A highly efficient cipher processor for dual-field elliptic curve cryptography[J].IEEE Transactions on Circuits and Systems—II:Express Briefs,2009,56(5):394-398.
[9] Vliegen J,Mentens N,Genoe J,et al.A compact FPGA-based architecture for elliptic curve cryptography over prime fields[C]∥Proc of ASAP 2010,2010:313-316.
[10] IEEE. IEEE Standard Specifications for Public-Key Cryptography:IEEE Std 1363-2000[S].New York:IEEE,2000-07.
[11] Cohen H,Miyaji A,Ono T.Efficient elliptic curve exponentiation using mixed coordinates[C]∥Proc of ASIACRYPT,1998:51-65.
[12] Ors S B,Batina L,Preneel B,et al.Hardware implementation of a Montgomery modular multiplier in a systolic array[C]∥Proc of 2003 International Parallel and Distributed Processing Symposium,2003:184.
[13] Kaliski B S. The Montgomery inverse and its applications[J].IEEE Transactions on Comput,1995,44(8):1064-1065.