专利名称:一种自动生成二元域ecc协处理器电路的设计方法
技术领域:
本发明属于信息安全与集成电路设计技术领域,尤其涉及一种自动生成二元域ECC协处理器电路的设计方法。
背景技术:
随着通信技术和计算机网络的迅速发展和广泛普及,信息传输与利用的安全问题已经成为涉及国家安全,影响人们日常生活的重大问题。信息安全的概念因人们在获取,存储,交换和享有信息的过程中,不能正确或可靠地实现而产生,而信息安全问题也正因为这种情况的存在而存在。信息传输的过程中,如何保证信息的保密性、完整性、真实性和不可否认性成为维护国家安全和保护人们自身利益的关键问题。密码学则是对敏感信息进行保护的一门重要学科。如今密码学的应用已近渗透到了社会的各个领域,如对计算机用户的认证,数据加密,网络安全,电子银行等等。
ECC (Elliptic Curve Cryptosystems:椭圆曲线密码体制)是一种很重要的公钥密码算法体制。椭圆曲线加密算法的安全性是基于椭圆曲线群上的离散对数问题的计算困难性。二元域椭圆曲线和其它公钥体制系统相比,在相同的安全级别下,具有较短的密钥长度;且二元域下的域运算更简单;因而,椭圆曲线密码具有安全可靠,加解密效率高、易于实现等特点,可应用于数据通信,电子商务等多个领域,以提供所需的安全服务;在存储空间,计算功能和功率均受限的智能卡和嵌入式系统中上有着独特的应用前景。
根据二元域椭圆曲线密码系统有限域表达方式的不同,ECC硬件实现可以分成两类。第一类是可配置的ECC协处理器,这类协处理器支持域长度一
4定范围内的所有椭圆曲线密码算法;第二类是曲线参数固定的ECC协处理器,该类处理器支持域长度和曲线参数固定的椭圆曲线密码算法。第一类协处理器的特点是,它可以支持不同域长度的椭圆曲线算法,有一定的扩展性和灵活性;但是这类协处理器的可配置性增加了电路的规模,降低运算性能;而且域长度m并非任意选择 一般是素数。因此第一类协处理器的有效利用率不高。而且,第一类协处理器的可配置特性受到很大的限制。对于第二类协处理器,由于曲线参数(域长度,不可约多项式等)已经固定,协处理器中的有限域计算硬件电路也可以优化,减少了电路的面积,提高系统运算性能和有效利用率。但对于不同曲线参数的ECC协处理器,需要重新人为设计电路。
发明内容
本发明的目的在于,提出一种自动生成二元域ECC协处理器电路的设计方法,解决在曲线参数改变的情况下,ECC协处理器的重新设计问题。
本发明的技术方案是, 一种自动生成二元域ECC协处理器电路的设计方法,其特征是,所述设计方法包括下列顺序执行的步骤
步骤l:设置域参数m;
步骤2:设置不可约域多项式/(x);步骤3:设置乘法器字长位数;
步骤4:根据域参数m、不可约域多项式/(x)、乘法器字长位数,设定输入J(^^Z二、i ,5(x) = Z::>,(x) 'eGF(2" ,& = 2或* = 4;输出C0c^v4(x).^(x)mod/0c);利用迭代过程,产生相应的运算单元c,;
步骤5:将每位^运算单元的逻辑电路映射到相应的叶单元中的模乘部分;步骤6:确定每个叶单元的平方结果和输入",的逻辑关系;
步骤7:设置AUC指令集,控制数据通路中的多路选择器,实现数据流的读写转换和域运算,最终得到完整的二元域ECC协处理器电路。
所述不可约域多项式/(x)为三项式或者五项式。
所述乘法器字长位数为2或者4。所述迭代过程,实现步骤是
(1) C(>)<^0;
(2) , / = / 一 1 tfo簡 to 0
C(x) <——. 5, (jc)) e (C(jc) )] mod /(jc)
(3) Re咖C(jc)
所述叶单元,根据设置的乘法器的字长位数确定,即如果乘法器字长位数为2位,则叶单元采用2位并行模乘器;如果乘法器字长位数为4位,则叶单元采用4位并行模乘器。
本发明的效果在于,ECC参数变化使得数据通路中的阵列叶单元数目,内部结构和单元间的连线产生相应变化。当曲线参数选定后,能够灵活地产生相对应的协处理器电路。
图1是ECC协处理器内部的体系结构图。图2是ECC协处理器叶单元结构示意图。
图3是C0O运算结果示意图。
具体实施方式
下面结合附图,对优选实施例作详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
图1是ECC协处理器内部的体系结构图。图1中,ECC协处理器内部的体系结构由三部分组成主控制器MC (其主体部分是MU),算术单元控制器AUC和数据通路(Datapath) 101。主控制器MC是协处理器的控制单元,首先控制MU,然后MU再控制AUC,通过状态机调度AUC实现点加,倍点和标量乘法。AUC内部含有子状态机,控制数据通路实现特征2域的模乘,平方和加法运算。Adder是二元域加法器,用来完成加法运算。数据通路(Datapath) 101是协处理器的核心部分,由与门,非门,异或门和D触发器等组成。
AUC不仅实现有限域的算术操作,还执行数据的读写命令,包括数据在数据通路(Datapath) 101中的输入输出指令和其内部寄存器的数据交换指令等。AUC的指令集和运行周期见表1。其中'row'代表模乘运算的计算周
期和数据读写周期。
指令集周期说明
Loadrow从RAM中读出数据
MovA2Crow数据从寄存器A读入到寄存器C
MovC2Arow数据从寄存器C读入到寄存器A
Savrow数据写入RAM
SavLoarow数据写入RAM,同时从RAM中 读出数据
SavMovrow数据写入RAM同时数据从寄存 器C读入A
Additionrow特征2域上的加法运算C=A+B
Multrow* 8特征2域上的乘法运算C=A*B
Square1特征2域上的平方运算C=A2
表1.指令和执行周期
7协处理器自动产生方法适用于参数固定且不可约多项式为三项式或五项
式的椭圆曲线密码系统。不同域长度M的ECC协处理器体系结构中,椭圆曲线层的运算都一样。因此,协处理器内的状态机(MU和AUC)相同MU通过状态机调度AUC执行指定顺序的域运算。无论域长度m如何变化,MU执行的域运算顺序固定不变。
域长度不同的协处理器最大的不同之处体现在数据通路(Datapath) 101的阵列叶单元中。图1显示数据通路(Datapath) 101的内部结构,它由四部分组成多路选择器MUXI、 MUXII和MUXin,寄存器组B, 二元域加法器Adder和一个阵列叶单元。其中多路选择器MUXI、 MUXII和MUXIII,寄存器组B和二元域加法器Adder在不同域长度的协处理器相同;域长度m
确定后,产生图1中16行row列的阵列叶单元102,(row-L附/16」,w'吋ov^16)。
由于域长度m和不可约多项式不同,致使叶单元中的平方和乘法部分不相同。图2是ECC协处理器叶单元结构示意图。叶单元有两种结构,图2中,(a)所表示的叶单元采用2位并行模乘器,而(b)所表示的叶单元采用4位并行模乘器。2位并行模乘器的模乘部分201与4位并行模乘器的模乘部分202,在图2中,分别用虚线框标示。每个叶单元含有两个寄存器(Ai和C^)和用于实现平方运算和模乘运算的组合逻辑和多路选择器。Mult.Resi表示乘积结果,(VMult.Resm'-n、 0/c^/c^2、 0/cm.3/cm.4分别表示计算乘积过程中,在更新
变量C(x)的系数的值时,旧值与新值之间的关系。
叶单元的运算功能如下
(1) 每个寄存器Ai, C^可以保存自己的数据;
(2) 寄存器Aj可以执行向右16位移位寄存,用于实现数据的输入或二元域的加法运算;
(3) 寄存器Qn,i可以执行向左16位移位寄存,用于实现数据的输出;(4) 通过阵列叶单元外的两个多路选择器可以实现寄存器Ai和C^间的 数据交换;
(5) 寄存器Cm.,i还用来存储GF(2"的加法,平方和模乘运算结果。
AUC指令集控制数据通路(Datapath)中的5类多路选择器MUXI, MUXII, MUXIII, MUXa和MUXc,(其中,MUXI, MUXII, MUXIII见图1, MUXa和 MUXc见图2)实现数据流的读写转换和域运算。下面详细描述各个叶单元的 数据流和AUC指令集(表l)工作原理
(1) Load指令数据通路(Datapath)中的MUXII选通到In端口 ,且每 个叶单元的MUXa选通到ai.16;
(2) MovA2C指令每个叶单元的MUXa选通到ai.16,同时MUXc选通 到Cm,—w6,且数据通路(Datapath)中的MUXII和MUXIII选通到叶阵列的输出 端;MovC2A同理。
(3) Sav指令每个叶单元的MUXc选通到cm,-i_16,且数据通路(Datapath) 中的MUXIII选通到叶阵列的输出端;
(4) SavLoa指令数据通路(Datapath)中的MUXII选通到In端口 ,每 个叶单元的MUXa选通到ai.16;同时,每个叶单元的MUXc选通到cm,-i.16,且 数据通路(Datapath)中的MUXIII选通到叶阵列的输出端;
(5) SavMov指令数据通路(Datapath)中的MUXII选通到In端口,每 个叶单元的MUXa选通到aw6;同时,数据通路(Datapath)中的MUXII选通 到Out输出端;
(6) Addition指令数据通路(Datapath)中的MUXI选通到In输入端 口, MUXII选通到叶阵列的输出端,且MUXIII选通到Adder输出端口;同 时,每个叶单元的MUXa选通到aw6, MUXc选通到cm,.i.16;
9(7) Mult指令不同曲线参数的协处理器内的平方和模乘运算都不同。
通过设置域m和不可约多项式为变量,产生相应的运算单元。本文使用了2位
或4位并行乘法器,算法如下
输入= Z:1", , S(;c) = H:A(x)x" e GF(2m),不可约多项式/(Jc) , A = 2
或"4 s
输出<formula>formula see original document page 10</formula>
电路的实现方法如图2所示,以不可约三项式/(x)-r+x"+l,以及2位
并行模乘器为例输入附,w ,既生成乘法迭代过程 C(x)<——[(JO). (CO) Jc"]mod/(x)的电路
图3是C(x)运算结果示意图。通过迭代过程,得出C(;c)中各个系数的值 c0 =十am—A十cm_2
<formula>formula see original document page 10</formula>
将每位c,.的逻辑电路映射到相应叶单元中的模乘部分,即图2中201标 示的部分。4位并行模乘器同理。(8) Square指令每个叶单元的MUXa选通到& , MUXc选通到平方模 块的Square[i]端口。
当曲线参数(域长度m和不可约多项式/(x)-f+x"+l)固定后,可以得
到优化后的平方器,其一次平方运算只需l个时钟周期。GF(2"中的平方运算
有如下特性(似+ 6)2 = ox2 + 6 ,且对于任意的5(x),有5(>)jcm mod /(jc) = S(x)(x" +1)。 当附和"固定后,图2中的平方单元Square[i]由方程(3)确定。如果2"-2<附, 方程(3沖的计算结束;否则方程(3)还需继续化约多项式,直到",中的指数都小
于m,最终得到叶单元的平方结果Square[i]和输入^的逻辑关系。令
<formula>formula see original document page 11</formula>
下面的一段C代码描述了平方方程(3)自动实现Verilog HDL的方法for(j=(m-l);j>=0;j=j-2)
squ
[j]=j/2; for(j=l;j<=m-2;j=j+2)
squ[l]0]=(m+l)/2+j/2; al=n/2; for(j=n+1 ;j<=m+n-2*al -2;j=j+2)
squ[2][j]=(m+l)/2+(j-n)/2; for(j=n-2*al j<=n-2;j=j+2)
squ[3][j]=(m-al)+(j-(n-2*al))/2; for(j=2*〖n-al);j<=2*n-2;j=j+2)
Squ,=(m-al)+(j-2*(n-al))/2;
m=409, n= 87〖
for(j=0;j<=m-l;j=j+l)
饰rintf(fJ5," assign s[%d] =", j); i=0;
while(squ[i][j]=-l)
{i=i+l;}
即<7)
fprintf(fp," a[%d] ", squ[i][j]); {for(k=i+l;k<5;k=k+l) if(squ[k][j]!=-l) {fprintf(fj),"A a[%d] ", squ[k][j]);} fprintf(fp,";W');}}
assign s[O] = a[O];
assign s〖l j = a〖205] A a[366]
assign s[2] = a[l];
assign s〖3J = a〖206] A a[367]
assign s[91] = a[250];
assign s[92] = a[46] A a[207] A a[368]
assign s〖93J =a[251];
assign s[94] = a[47] A a[208] A a[369]
assign s[405] = a[407] assign sE楊j = a〖203J assign s〖術j = a—j assign si408] = a〖204J
'a[364]; a[365];
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不 局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可 轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应该以权利要求的保护范围为准。
1权利要求
1、一种自动生成二元域ECC协处理器电路的设计方法,其特征是,所述设计方法包括下列顺序执行的步骤步骤1设置域参数m;步骤2设置不可约域多项式f(x);步骤3设置乘法器字长位数;步骤4根据域参数m、不可约域多项式f(x)、乘法器字长位数,设定输入k=2或k=4;输出C(x)=A(x)·B(x)modf(x);利用迭代过程,产生相应的运算单元ci;步骤5将每位ci运算单元的逻辑电路映射到相应的叶单元中的模乘部分;步骤6确定每个叶单元的平方结果和输入ai的逻辑关系;步骤7设置AUC指令集,控制数据通路中的多路选择器,实现数据流的读写转换和域运算,最终得到完整的二元域ECC协处理器电路。
2、 根据权利要求1所述的一种自动生成二元域ECC协处理器电路的设计方 法,其特征是,所述不可约域多项式/(x)为三项式或者五项式。
3、 根据权利要求1所述的一种自动生成二元域ECC协处理器电路的设计方 法,其特征是,所述乘法器字长位数为2或者4。
4、 根据权利要求1所述的一种自动生成二元域ECC协处理器电路的设计方 法,其特征是,所述迭代过程,实现步骤是(1) C(>)<~~0;(2) —= / — 1 A)柳 to 0<formula>formula see original document page 3</formula>
5、根据权利要求1所述的一种自动生成二元域ECC协处理器电路的设计方 法,其特征是,所述叶单元,根据设置的乘法器的字长位数确定,即如果乘法器 字长位数为2位,则叶单元采用2位并行模乘器;如果乘法器字长位数为4位, 则叶单元采用4位并行模乘器。
全文摘要
本发明公开了信息安全与集成电路设计技术领域中的一种自动生成二元域ECC协处理器电路的设计方法。技术方案是,首先确定域参数m、不可约域多项式f(x)、乘法器字长位数;然后设定输入A(x)=∑<sup>m-1</sup><sub>i=0</sub>a<sub>i</sub>x<sup>i</sup>,B(x)=∑<sup>l-1</sup><sub>i=0</sub>B<sub>i</sub>(x)x<sup>k·i</sup>∈GF(2<sup>m</sup>),k=2或k=4;输出C(x)=A(x)·B(x)mod f(x);利用迭代过程,产生相应的运算单元c<sub>i</sub>;再将每位c<sub>i</sub>运算单元的逻辑电路映射到相应的叶单元中的模乘部分;最后,设置AUC指令集,控制数据通路中的多路选择器,实现数据流的读写转换和域运算,最终得到完整的二元域ECC协处理器电路。本发明的效果在于,在曲线参数改变的情况下,能够灵活地产生相对应的协处理器电路。
文档编号G06F17/50GK101464920SQ200810239350
公开日2009年6月24日 申请日期2008年12月10日 优先权日2008年12月10日
发明者白国强, 晖 赵, 陈弘毅 申请人:清华大学