CN101221491A - 椭圆曲线密码系统的点加系统 - Google Patents

椭圆曲线密码系统的点加系统 Download PDF

Info

Publication number
CN101221491A
CN101221491A CNA2008100556106A CN200810055610A CN101221491A CN 101221491 A CN101221491 A CN 101221491A CN A2008100556106 A CNA2008100556106 A CN A2008100556106A CN 200810055610 A CN200810055610 A CN 200810055610A CN 101221491 A CN101221491 A CN 101221491A
Authority
CN
China
Prior art keywords
control signal
clock period
mux
signal
mould
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2008100556106A
Other languages
English (en)
Other versions
CN101221491B (zh
Inventor
李树国
张霄鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN2008100556106A priority Critical patent/CN101221491B/zh
Publication of CN101221491A publication Critical patent/CN101221491A/zh
Application granted granted Critical
Publication of CN101221491B publication Critical patent/CN101221491B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

用于椭圆曲线密码体制的点加系统属于椭圆曲线密码系统的点加技术领域。其特征在于:含有点加寄存器控制器、点加多路选择控制器、第一多路选择器组、中间变量寄存器组以及第二多路选择器组;在点加多路选择控制器输出的选通控制信号下,在六个流水线过程内由位于点加系统外的模乘器和模加器对第二多路选择器组输出的乘数和加数完成点加运算;在每一个流水过程内,在所述选通控制信号控制下,模乘器和模加器分别向第一、第二两个多路选择器组返回中间数据;在点加寄存器控制器输出的操作控制信号控制下,控制第一多路选择器组中的各个多路选择器通过中间变量寄存器组向第二多路选择器组输出相应的乘数和加数。本发明提高了点加运算速度,在一个基本层面上优化了椭圆曲线的点乘性能,提高了数据吞吐率。

Description

椭圆曲线密码系统的点加系统
技术领域
本发明涉及数字签名与认证技术领域。
背景技术
密码体制可以分为传统(或对称)加密体制和公钥(或非对称)加密体制两类。1976年W.Diffie和M.E.Hellman提出了公钥密码的概念,对整个密码学发展造成了深远的影响。当前广泛应用的公钥密码系统是RSA,其优点在于原理简单,使用方便。但随着大整数因子分解方法的不断改进以及计算机性能的不断提升,要保证RSA的安全性所需要的密钥位数不断增长,目前一般认为RSA密钥的位数在1024bit以上才有安全保障。密钥位数的增加直接导致了加解密速度的大幅下降以及硬件开销的加大。
椭圆曲线密码(ECC)是1985年由N.Koblitz和V.Miller提出的,它是利用有限域上的椭圆曲线有限群代替离散对数问题中的有限循环群后得到的一类密码体制。由于椭圆曲线密码具有安全性能高,处理速度快,带宽要求低和存储空间小等特点,与RSA相比,ECC在密钥长度和运算速度上具有优越性。
素域上的椭圆曲线E(Fp)由Weierstrass方程定义:
E:y2=x3+ax+b(modp)    (1)
其中p是素数,a,b为两个小于p的非负整数(0<a,b<∞),且满足
4a3+27b2(modp)≠0    (2)
方程(2)基于集合Ep(a,b)可定义一个有限Abel群。
在椭圆曲线密码体制中,核心运算是点乘(kP),我们可以将点乘分解为两种基本运算:点加(ECPADD)以及倍点(ECPDBL),点加和倍点运算可以采用不同的坐标系来实现。常用的坐标系是仿射坐标系和Jacobi投影坐标系。以下分别介绍仿射坐标系和Jacobi投影坐标系。
仿射坐标系:平面上过一定点O作两条相交的轴x和y,它们的交角是ω.以定点O为原点,在每条轴上取长度单位(分别是OE1、OE2),这样就在平面上建立了一个仿射坐标系,如图1所示。对于平面上任一点M,过M作两轴的平行线,与两轴分别交于M1、M2,它们在两轴的坐标分别是x、y,于是点M就对应有序数组(x,y)。
Jacobi投影坐标系:Jacobi投影坐标系下的点(X,Y,Z)和仿射坐标系下的点(x,y)一一对应,且满足x=X/Z2、y=Y/Z3。给定仿射坐标系下的坐标(x,y),转换成Jacobi投影坐标系下的坐标为(X,Y,Z),其中X=x、Y=y、Z=1;给定Jacobi投影坐标系下的坐标(X,Y,Z),转换成放射坐标系下的坐标为(x,y),且满足x=X/Z2、y=Y/Z3。同时,仿射坐标系下的无穷远点和Jacobi投影坐标系下的点(1,1,0)对应。
以下介绍素数域椭圆曲线点加和倍点在仿射坐标系下的定义:
点加定义:
如图2所示,在椭圆曲线上取两点P(x1,y1)和Q(x2,y2),令O点表示无穷远点。计算
R=P+Q称为倍点运算,其中R坐标为(xR,yR)。
1)如果x1=x2且y1=-y2,则R=P+Q=O。
2)若1)条件不成立,则有点R=P+Q,满足
x R = ( y 2 - y 1 x 2 - x 1 ) 2 - x 1 - x 2 - - - ( 3 )
y R = ( y 1 - y 2 x 1 - x 2 ) ( x 1 - x R ) - y 1 - - - ( 4 )
倍点定义:
如图3所示,在椭圆曲线上取一点P(x1,y1),令O点表示无穷远点。计算R=2P称为倍点运算,其中R坐标为(xR,yR)。
1)如果y1=0,则R=2P=O。
2)若y1≠0,则有点R=2P,满足
x R = ( 3 x 1 2 + a 2 y 1 ) 2 - 2 x 1 - - - ( 5 )
y R = ( 3 x 1 2 + a 2 y 1 ) ( x 1 - x R ) - y 1 - - - ( 6 )
由于在椭圆曲线密码体制中求逆运算要比乘法慢,而在投影坐标系中不涉及求逆,所以一般会将仿射坐标转换为投影坐标再进行计算。下面给出椭圆曲线在Jacobi投影坐标下点加和倍点的计算公式。可以看出,公式只用到了模加和模乘操作。
表1点加计算公式                               表2倍点计算公式
点加:                                        倍点:
输入:P(X1,Y1,Z1),Q(X2,Y2,1)             输入:P(X1,Y1,Z1)
输出:R(X3,Y3,Z3)=P+Q                      输出:R(X3,Y3,Z3)=2P
公式:                                        公式:
X 3 = ( Y 2 Z 1 3 - Y 1 ) 2 - ( X 2 Z 1 2 + X 1 ) ( X 2 Z 1 2 - X 1 ) 2 X 3 = ( 3 X 1 2 + a Z 1 4 ) 2 - 8 X 1 Y 1 2
Y 3 = ( Y 2 Z 1 3 - Y 1 ) [ X 1 ( X 2 Z 1 2 - X 1 ) 2 - X 3 ] - Y 1 ( X 2 Z 1 2 - X 1 ) 3 Y 3 = ( 3 X 1 2 + a Z 1 4 ) ( 4 X 1 Y 1 2 - X 3 ) - 8 Y 1 4
Z 3 = Z 1 ( X 2 Z 1 2 - X 1 )                                               Z3=2Y1Z1
对于模乘运算,一般使用Montgomery模乘算法,该算法如下所示:
输入:X,Y,N,R
输出:S=XYR-1mod N
步骤:
1.N′=-N-1mod R
2.T=X×Y
3.M=T×N′mod R
4. S = T + M × N R
5.如果S≥N,则S=S-N
6.返回S。
可以看出,一次模乘主要分解为三次乘法运算。
计算椭圆曲线的点加和倍点,处于缩小面积的考虑,一般用的是串行计算的方法,但是,串行计算的效率比较低下,通过分析点加和倍点运算的数据相关性,可以得出在串行计算中很多相互独立的操作也被视为有了依赖关系,从而造成时钟周期数的浪费,本发明正是根据这一问题而提出了对于点加计算的有效解决方案。
发明内容
本发明的目的在于提出一种椭圆曲线密码系统的点加系统,在不增加面积的情况下提高点加的运算速度,在一个基本的层面上优化椭圆曲线点乘的性能。
本发明的特征在于:
该点加系统是在专用数字集成电路芯片中采用ASIC流程实现的。含有:点加寄存器控制器;点加多路选择控制器;第一多路选择器组,由六个多路选择器mux1、mux2、mux3、mux4、mux5、mux6构成;中间变量寄存器组,由六个中间变量寄存器Reg1、Reg2、Reg3、Reg4、Reg5、Reg6构成;第二多路选择控制器,由四个多路选择器lmux1、lmux2、lmux3、lmux4构成,其中:
所述点加寄存器控制器,是一个有限状态机,输入为形式为010101……且占空比为1∶1的方波时钟信号Clk,以及低电平有效的开始信号Start,输出为六个各自均为2个比特的操作控制信号:C1、C2、C3、C4、C5、C6,所述点加寄存器控制器在开始信号有效后按以下各轮中时钟节拍在各个时钟输出不同的C1_C2_C3_C4_C5_C6各操作控制信号的组合:
初始化时,令各中间变量寄存器分别为:
Reg1←X1,Reg2←Y1,Reg3←Z1,Reg4←X2,Reg5←Y2,Reg6←1,
(X1,Y1,Z1)为Jacobi投影坐标下椭圆曲线上的点P的坐标,
(X2,Y2,1)为Jacobi投影坐标下椭圆曲线上的点Q的坐标,
令:R=P+Q,点R的坐标为(x3,Y3,Z3),
C1_C2_C3_C4_C5_C6中每个操作控制信号均为00,在以下叙述中省略各操作控制信号的标志;
第一轮Δ1中:
在第1~第8时钟周期,操作控制信号均为11_11_11_11_11_11,
在第9时钟周期,操作控制信号为11_11_11_11_01_11;
第二轮Δ2中:
在第10时钟周期,操作控制信号为11_11_11_01_11_11,
在第11~第17时钟周期,操作控制信号均为11_11_11_11_11_11,
在第18时钟周期,操作控制信号为11_11_11_01_11_11;
第三轮Δ3中:
在第19时钟周期,操作控制信号为11_11_11_11_10_01,
在第20时钟周期,操作控制信号为11_01_11_11_11_10,
在第21时钟周期,操作控制信号为10_11_11_11_11_11,
在第22~第26时钟周期,操作控制信号均为11_11_11_11_11_11,
在第27时钟周期,操作控制信号为11_11_11_01_11_11;
第四轮Δ4中:
在第28时钟周期,操作控制信号为11_01_11_10_11_11,
在第29时钟周期,操作控制信号为01_11_11_11_11_11,
在第30~第35时钟周期,操作控制信号均为11_11_11_11_11_11,
在第36时钟周期,操作控制信号为11_11_01_11_11_11;
第五轮Δ5中:
在第37时钟周期,操作控制信号为01_11_11_11_11_11,
在第38时钟周期,操作控制信号为10_11_01_11_11_11,
在第39~第44时钟周期,操作控制信号均为11_11_11_11_11_11,
在第45时钟周期,操作控制信号为11_01_11_11_11_11;
第六轮Δ6中:
在第46时钟周期,操作控制信号为11_11_11_01_11_11,
在第47时钟周期,操作控制信号为11_01_11_10_11_11,
在第48时钟周期,操作控制信号为11_10_11_11_11_11;
所述点加多路选择控制器,是一个有限状态机,输入为所述开始信号Start、所述时钟信号Clk,输出均为3个比特的选通控制信号:CL1、CL2、CL3、CL4,所述点加多路选择控制器在所述开始信号Start有效后的各轮中,在下述每个时钟周期均输出不同的选通控制信号CL1、CL2、CL3、CL4的组合;
在所述初始化时,CL1_CL2_CL3_CL4中每个选通控制信号均为000,在以后叙述中省略各选通控制信号的标志;
在所述第一轮Δ1中:
在所述第1时钟周期,选通控制信号为011_011_000_000,
在所述第2时钟周期,选通控制信号为011_101_000_000,
在所述第3时钟周期,选通控制信号为011_101_000_000,
在所述第4~第9时钟周期,选通控制信号均为000_000_000_000;
在所述第二轮Δ2中:
在所述第10时钟周期,选通控制信号为100_000_000_000,
在所述第11时钟周期,选通控制信号为101_000_000_000,
在所述第12时钟周期,选通控制信号为001_010_000_000,
在所述第13~第18时钟周期,选通控制信号均为000_000_000_000;
在所述第三轮Δ3中:
在所述第19时钟周期,选通控制信号为010_000_111_001,
在所述第20时钟周期,选通控制信号为111_111_111_010,
在所述第21时钟周期,选通控制信号为001_111_001_100,
在所述第22~第27时钟周期,选通控制信号均为000_000_000_000;
在所述第四轮Δ4中:
在所述第28时钟周期,选通控制信号为110_110_111_010,
在所述第29时钟周期,选通控制信号为001_000_000_000,
在所述第30时钟周期,选通控制信号为011_101_000_000,
在所述第31~第36时钟周期,选通控制信号均为000_000_000_000;
在所述第五轮Δ5中:
在所述第37时钟周期,选通控制信号为001_010_000_000,
在所述第38时钟周期,选通控制信号为010_100_011_111,
在所述第39时钟周期,选通控制信号为111_110_000_000,
在所述第40~第45时钟周期,选通控制信号均为000_000_000_000;
在所述第六轮Δ6中:
在所述第46时钟周期,选通控制信号为000_000_000_000,
在所述第47时钟周期,选通控制信号为000_000_010_111,
在所述第48时钟周期,选通控制信号为000_000_000_111;
所述第一多路选择器组,其中:
各个多路选择器mux1~mux6各自的选择信号输入端先后依次分别与所述点加寄存器控制器的各操作控制信号输出端相连,分别输入各个操作控制信号C1~C6,
各个多路选择器mux1~mux6各自的00端先后依次输入X1、Y1、Z1、X2、Y2、1,
各个多路选择器mux1~mux6各自的模乘数据输入端01共同与所述点加电路系统外的模乘器的模乘数据r_mul输出端相连,
各个多路选择器mux1~mux6各自的模加数据输入端10共同与所述点加电路系统外的模加器的模加数据r_add输出端相连;
所述中间变量寄存器组,其中:
各个中间变量寄存器寄存Reg1~Reg6的第一输入端先后依次分别与所述各多路选择器mux1~mux6的信号D1、D2、D3、D4、D5、D6的输出端相连,所述Reg1~Reg6的第二输入端互连后接时钟信号Clk的输出端;
所述第二多路选择器组,其中:
各个多路选择器lmux1~lmux4各自的选择信号输入端先后依次分别与所述点加多路选择控制器的各选通控制信号输出端相连,分别输入各个选通控制信号CL1~CL4,
多路选择器lmux1、lmux2的000输入端互连后接所述Q点的坐标值1,
多路选择器lmux3、lmux4的000输入端互连后接所述模加器的模加信号r_add的输出端,
各个多路选择器lmux1~lmux4的001输入端互连后接所述中间变量寄存器Reg1的信号T1的输出端,所述信号T1的输出端同时与所述第一多路选择器组中的多路选择器mux1的11输入端相连,
各个多路选择器lmux1~lmux4的010输入端互连后接所述中间变量寄存器Reg2的信号T2的输出端,所述信号T2的输出端同时与所述第一多路选择器组中的多路选择器mux2的11输入端相连,
各个多路选择器lmux1~lmux4的011输入端互连后接所述中间变量寄存器Reg3的信号T3的输出端,所述信号T3的输出端同时与所述第一多路选择器组中的多路选择器mux3的11输入端相连,
各个多路选择器lmux1~lmux4的100输入端互连后接所述中间变量寄存器Reg4的信号T4的输出端,所述信号T4的输出端同时与所述第一多路选择器组中的多路选择器mux4的11输入端相连,
各个多路选择器lmux1~lmux4的101输入端互连后接所述中间变量寄存器Reg5的信号T5的输出端,所述信号T5的输出端同时与所述第一多路选择器组中的多路选择器mux5的11输入端相连,
各个多路选择器lmux1~lmux4的110输入端互连后接所述中间变量寄存器Reg6的信号T6的输出端,所述信号T6的输出端同时与所述第一多路选择器组中的多路选择器mux6的11输入端相连,
多路选择器lmux1、lmux2的111输入端互连后接所述模加器的模加信号r_add的输出端,
多路选择器lmux3、lmux4的111输入端互连后接所述模乘器的模乘信号r_mul的输出端,
所述多路选择器lmux1、lmux2的输出信号mul1、mul2分别送入所述模乘器的两个输入端;
所述多路选择器lmux3、lmux4的输出信号add1、add2分别送入所述模加器的两个输入端;
在所述第一轮Δ1中,所述模乘器的输出r_mul使:
T5←T3 2,T4←T3×T5,T4←T3×T5,而所述模加器无输出;
在所述第二轮Δ2中,所述模乘器的输出r_mul使:
T4←T4×T5,T6←T4×T5,T2←T1×T2,而所述模加器无输出;
在所述第三轮Δ3中:
所述模乘器的输出r_mul使:
T4←T2×T4,T2←T5 2,T1←T1×T6
所述模加器的输出r_add使:
T5←T4-T1,T6←T6-T2,T1←T1+T4
在所述第四轮Δ4中:
所述模乘器的输出r_mul使:
T3←T6 2,T1←T1×T2,T3←T3×T5
所述模加器的输出r_add使:
T4←T4-T2
在所述第五轮Δ5中:
所述模乘器的输出r_mul使:
T2←T1×T2,T4←T2×T4,T2←T1×T6
所述模加器的输出r_add使:
T1←T3-T1
在所述第六轮Δ6中:
所述模加器的输出r_add使:
T4←T2-T4,T2←T4-T2,得到X3=T1,Y3=T2,Z3=T3
符号“←”表示用右边的数据去代替左边的数据。
本发明基于三级流水的大数模乘器,通过分析椭圆曲线密码点加运算的数据相关性,将其中相互独立的运算提取出来,利用六个中间变量寄存器,重复利用了模乘器逻辑单元和寄存器单元,提高了点加的运算速度,在一个基本的层面上提高了点乘的运算速度。
本设计硬件上用ASIC实现,用Verilog进行行为级建模,用Verilog进行RTL级编码和仿真。基于SMIC 0.18μm最坏的工艺完成综合,并提取门延时信息,进行门级仿真验证。测试的结果表明,与现有的设计相比,本发明在不增加面积的情况下提高了数据的吞吐率。
表3给出了本点加解决方案和串行方案的比较结果。
表3方案比较结果
  实现方案   点加/时钟周期   资源
串行(IEEE标准) 90   1个模乘器1个模加器7个中间寄存器
本文 49   1个模乘器1个模加器6个中间寄存器
附图说明
图1仿射坐标系;
图2椭圆曲线点加运算定义;
图3椭圆曲线倍点运算定义;
图4椭圆曲线点加数据相关性分析;
图5一种三级流水的模乘器结构;
图6一种模加器结构;
图7椭圆曲线点加实现结构;
图8椭圆曲线点加实现流程图。
具体实施方式
本发明的思路在于:1)利用Jacobi投影坐标系下椭圆曲线点加的计算公式,进行数据相关性分析,将相互独立的操作提取出来,确定流水线级数为三级。2)分析点加运算中的关键操作,将其置为最高优先级,然后将较低优先级的操作根据运算次序依次放入流水线过程中,同时使得所用中间变量寄存器数目最小。3)根据单次模乘所需要耗费的时钟周期数,在一般意义上提炼出针对三级流水线的点加的时间耗费;
以下详细说明这三个思路:
1)点加的数据相关性分析:
如表1所示,利用Jacobi投影坐标系下椭圆曲线点加的计算公式,分析出点加的数据相关性分别如图4所示;
图4中,椭圆内的操作为模乘操作,方框内的操作为模加操作。模乘操作和模加操作是并行进行的,分别调用模乘器和模加器。水平方向上的操作为一层,各层内部之间的操作是相互独立的,不存在数据依赖性。而在各层之间的操作则存在数据依赖性,必须要等上一层的数据计算完毕之后才能进行下一层的计算。二级和四级的流水线都会使得整个流水线的利用率不高。由图4可确定流水线的级数为三级,使得流水线的利用率接近100%;
下面详细说明点加的数据相关性分析结论:
如图4所示点加的数据相关性分析图,第一级相互独立的模乘操作为Z1 2,Y2Z1;第二级相互独立的模乘操作为X1Y1,X2Z1 2,Y2Z1 3;第三级相互独立的模乘操作为λ2 2,λ4=X2Y1Z1 2,λ1 2,Z3=λ1Z1,λ2X1,第三级相互独立的模加操作为λ1=X2Z1 2-X1,λ2=Y2Z1 3-Y1,λ3=X2Z1 2+X1;第四级相互独立的模乘操作为λ1 2λ3,λ6=λ1 2λ2X1,第四级相互独立的模加操作为λ5=λ4-X1Y1;第五级相互独立的模乘操作为λ5λ1 2,第五级相互独立的模加操作为X3=λ2 21 2λ3;第六级相互独立的模乘操作为λ2X3,第六级相互独立的模加操作为λ7=λ65λ1 2;第七级相互独立的模加操作为Y3=λ72X3
如图5所示即为一种三级流水的模乘器示例。它的输入为乘数X,被乘数Y,以及模式mode。第一级流水对X分别对X,Y进行编码;第二级流水为部分积选择和部分积阵列压缩;第三级流水为42部分积阵列压缩。其中mode信号控制两个多路选择器选通从外部输入还是已经计算出的sum结果;
如图6所示为一种模加器示例,它由两个加法器和一个CSA组成,输入为x,y,n以及sel信号,输出为z,在sel信号为高时为模加运算,sel信号为低时为模减运算;
2)点加在流水线中的调度次序:
根据1)的分析确定流水线级数之后。从表1的计算公式来看,关键的操作是X3的得出。所以需要将计算X3的操作次序置为优先级最高。从图4中找到X3的路径,将路径上的操作放在每次流水的最前。然后将其他的操作分别安插于流水线上,使得流水次数最少;另外,通过调度与分配算法,对中间变量寄存器的数目进行优化,在三级流水线下得到的优化结果是需要六个中间变量寄存器,即可完成全部点加操作;
3)点加的时间耗费:
通过2)的优化过程,进行1次单独的模乘运算耗费9个时钟周期,1次单独的模加运算耗费1个时钟周期,得出的结论是利用三级流水,使用六个中间变量寄存器,经过六次流水过程即可完成点加运算,作一次点加运算所耗费的时钟周期数C满足
C=49                                        (7)
根据以上三个思路,本发明提出了具体的椭圆曲线密码的点加系统,如图7所示为椭圆曲线点加实现的硬件图,包括寄存器和模乘器以及模加器的连接;
图7中的点加寄存器控制器是一个有限状态机,它的输入为开始信号Start与时钟Clk,输出均为2个比特的控制信号C1、C2、C3、C4、C5、C6,分别控制多路选择器mux1、mux2、mux3、mux4、mux5、mux6。点加寄存器控制器在Start有效后的每个时钟周期均输出不同的C1_C2_C3_C4_C5_C6组合。C1、C2、C3、C4、C5、C6在Start有效后的每个时钟周期的具体值如图8中C1_C2_C3_C4_C5_C6所示;
图7中的点加多路选择控制器是一个有限状态机,它的输入为开始信号Start与时钟Clk,输出均为3个比特的控制信号CL1、CL2、CL3、CL4,分别控制多路选择器lmux1、lmux2、lmux3、lmux4,点加多路选择控制器在Start有效后的每个时钟周期均输出不同的CL1_CL2_CL3_CL4组合。CL1、CL2、CL3、CL4在Start有效后的每个时钟周期的具体值如图8中C1_C2_C3_C4_C5_C6所示;
图7中有6个中间变量寄存器分别为Reg1、Reg2、Reg3、Reg4、Reg5、Reg6,用来寄存中间计算结果。它们有一个公共输入信号为时钟Clk。除此之外Reg1还有输入信号D1,输出信号T1,其中D1为多路选择器mux1的输出;Reg2还有输入信号D2,输出信号T2,其中D2为多路选择器mux2的输出;Reg3还有输入信号D3,输出信号T3,其中D3为多路选择器mux3的输出;Reg4还有输入信号D4,输出信号T4,其中D4为多路选择器mux4的输出;Reg5还有输入信号D5,输出信号T5,其中D5为多路选择器mux5的输出;Reg6还有输入信号D6,输出信号T6,其中D6为多路选择器mux6的输出;
图7中的多路选择器mux1、mux2、mux3、mux4、mux5、mux6分别用来选通中间变量寄存器Reg1、Reg2、Reg3、Reg4、Reg5、Reg6的输入信号。它们均为4输入1输出,有两个公共的输入信号分别为r_mul和r_add,其中r_mul为模乘器的输出,r_add为模加器的输出。除此之外,mux1还有输入信号X1,输出信号D1,其中X1用来初始化寄存器T1,D1为寄存器Reg1的输入;mux2还有输入信号Y1,输出信号D2,其中Y1用来初始化寄存器T2,D2为寄存器Reg2的输入;mux3还有输入信号Z1,输出信号D3,其中Z1用来初始化寄存器T3,D3为寄存器Reg3的输入;mux4还有输入信号X2,输出信号D4,其中X2用来初始化寄存器T4,D4为寄存器Reg4的输入;mux5还有输入信号Y2,输出信号D5,其中Y2用来初始化寄存器T5,D5为寄存器Reg5的输入;mux6还有输入信号常量1,输出信号D6,其中常量1用来初始化寄存器T6,D6为寄存器Reg6的输入;
图7中4个多路选择器lmux1、lmux2、lmux3、lmux4均为8输入1输出,其中lmux1、lmux2分别用来选通模乘器的乘数和被乘数,mux3、lmux4分别用来选通模加器的加数和被加数。T1~T6为六个中间变量寄存器的输出,1为常数。模乘器的输入为mul1,mul2,输出为r_mul;模加器的输入为add1,add2,输出为r_add;多路选择器lmux1的输入为1、T1、T2、T3、T4、T5、T6、r_add,输出为mul1;多路选择器lmux2的输入为1、T1、T2、T3、T4、T5、T6、r_add,输出为mul2;多路选择器lmux3的输入为r_add、T1、T2、T3、T4、T5、T6、r_mul,输出为add1;多路选择器lmux4的输入为r_add、T1、T2、T3、T4、T5、T6、r_mul,输出为add2;
按照图8所示的点加的流水线实现流程,其具体步骤说明如下:
令中间变量寄存器分别为T1~T6,令R=(X3,Y3,Z3),P=(X1,Y1,Z1),Q=(X2,Y2,Z2)。即计算R=P+Q:
步骤(1).初始化阶段:
对中间变量寄存器进行初始化,T1←X1,T2←,Y1  T3←Z1,T4←X2,T5←Y2,T6←1;
步骤(2).进行第1次流水过程,对于模乘器依次进行T5←T3 2,T4←T3×T5,T4←T3×T5,对于模加器依次进行0←0+0,0←0+0,0←0+0,每次模乘运算耗费时钟周期为9,每次模加运算耗费时钟周期为1。对于模乘器,在该次流水的第1个时钟上升沿输入两个乘数T3和T3,在第10个时钟上升沿之前更新T5,在第2个时钟上升沿输入两个乘数T3和T5,在第11个时钟上升沿之前更新T4,在第3个时钟上升沿输入两个乘数T3和T5,在第12个时钟上升沿之前更新T4。从第4个到第9个时钟上升沿的输入对于模乘器无效。对于模加器,0←0+0表示不进行任何操作;
步骤(3).进行第2次流水过程,对于模乘器依次进行T4←T4×T5,T6←T4×T5,T2←T1×T2,对于模加器依次进行0←0+0,0←0+0,0←0+0;
步骤(4).进行第3次流水过程,对于模乘器依次进行T4←T2×T4,T2←T5 2,T1←T1×T6,对于模加器依次进行T5←T4-T1,T6←T6-T2,T1←T1+T4;对于模加器,在该次流水的第1个时钟上升沿输入两个加数T4和T1,在第2个时钟上升沿之前更新T5,在第2个时钟上升沿输入两个加数T6和T2,在第3个时钟上升沿之前更新T6,在第3个时钟上升沿输入两个加数T1和T4,在第4个时钟上升沿之前更新T1
步骤(5).进行第4次流水过程,对于模乘器依次进行T3←T6 2,T1←T1×T2,T3←T3×T5,对于模加器依次进行T4←T4-T2,0←0+0,0←0+0;
步骤(6).进行第5次流水过程,对于模乘器依次进行T2←T1×T2,T4←T2×T4,T2←T1×T6,对于模加器依次进行0←0+0,T1←T3-T1,0←0+0;
步骤(7).模乘器停止工作,对于模加器依次进行0←0+0,T4←T2-T4,T2←T4-T2,之后有X3=T1,Y3=T2,Z3=T3,点加计算完毕;

Claims (1)

1.用于椭圆曲线密码体制的点加系统,其特征在于:该点加系统是在专用数字集成电路芯片中采用ASIC流程实现的。含有:点加寄存器控制器;点加多路选择控制器;第一多路选择器组,由六个多路选择器mux1、mux2、mux3、mux4、mux5、mux6构成;中间变量寄存器组,由六个中间变量寄存器Reg1、Reg2、Reg3、Reg4、Reg5、Reg6构成;第二多路选择控制器,由四个多路选择器lmux1、lmux2、lmux3、lmux4构成,其中:
所述点加寄存器控制器,是一个有限状态机,输入为形式为010101……且占空比为1∶1的方波时钟信号Clk,以及低电平有效的开始信号Start,输出为六个各自均为2个比特的操作控制信号:C1、C2、C3、C4、C5、C6,所述点加寄存器控制器在开始信号有效后按以下各轮中时钟节拍在各个时钟输出不同的C1_C2_C3_C4_C5_C6各操作控制信号的组合:
初始化时,令各中间变量寄存器分别为:
Reg1←X1,Reg2←Y1,Reg3←Z1,Reg4←X2,Reg5←Y2,Reg6←1,
(X1,Y1,Z1)为Jacobi投影坐标下椭圆曲线上的点P的坐标,
(X2,Y2,1)为Jacobi投影坐标下椭圆曲线上的点Q的坐标,
令:R=P+Q,点R的坐标为(X3,Y3,Z3),
C1_C2_C3_C4_C5_C6中每个操作控制信号均为00,在以下叙述中省略各操作控制信号的标志;
第一轮Δ1中:
在第1~第8时钟周期,操作控制信号均为11_11_11_11_11_11,
在第9时钟周期,操作控制信号为11_11_11_11_01_11;
第二轮Δ2中:
在第10时钟周期,操作控制信号为11_11_11_01_11_11,
在第11~第17时钟周期,操作控制信号均为11_11_11_11_11_11,
在第18时钟周期,操作控制信号为11_11_11_01_11_11;
第三轮Δ3中:
在第19时钟周期,操作控制信号为11_11_11_11_10_01,
在第20时钟周期,操作控制信号为11_01_11_11_11_10,
在第21时钟周期,操作控制信号为10_11_11_11_11_11,
在第22~第26时钟周期,操作控制信号均为11_11_11_11_11_11,
在第27时钟周期,操作控制信号为11_11_11_01_11_11;
第四轮Δ4中:
在第28时钟周期,操作控制信号为11_01_11_10_11_11,
在第29时钟周期,操作控制信号为01_11_11_11_11_11,
在第30~第35时钟周期,操作控制信号均为11_11_11_11_11_11,
在第36时钟周期,操作控制信号为11_11_01_11_11_11;
第五轮Δ5中:
在第37时钟周期,操作控制信号为01_11_11_11_11_11,
在第38时钟周期,操作控制信号为10_11_01_11_11_11,
在第39~第44时钟周期,操作控制信号均为11_11_11_11_11_11,
在第45时钟周期,操作控制信号为11_01_11_11_11_11;
第六轮Δ6中:
在第46时钟周期,操作控制信号为11_11_11_01_11_11,
在第47时钟周期,操作控制信号为11_01_11_10_11_11,
在第48时钟周期,操作控制信号为11_10_11_11_11_11;
所述点加多路选择控制器,是一个有限状态机,输入为所述开始信号Start、所述时钟信号Clk,输出均为3个比特的选通控制信号:CL1、CL2、CL3、CL4,所述点加多路选择控制器在所述开始信号Start有效后的各轮中,在下述每个时钟周期均输出不同的选通控制信号CL1、CL2、CL3、CL4的组合;
在所述初始化时,CL1_CL2_CL3_CL4中每个选通控制信号均为000,在以后叙述中省略各选通控制信号的标志;
在所述第一轮Δ1中:
在所述第1时钟周期,选通控制信号为011_011_000_000,
在所述第2时钟周期,选通控制信号为011_101_000_000,
在所述第3时钟周期,选通控制信号为011_101_000_000,
在所述第4~第9时钟周期,选通控制信号均为000_000_000_000;
在所述第二轮Δ2中:
在所述第10时钟周期,选通控制信号为100_000_000_000,
在所述第11时钟周期,选通控制信号为101_000_000_000,
在所述第12时钟周期,选通控制信号为001_010_000_000,
在所述第13~第18时钟周期,选通控制信号均为000_000_000_000;
在所述第三轮Δ3中:
在所述第19时钟周期,选通控制信号为010_000_111_001,
在所述第20时钟周期,选通控制信号为111_111_111_010,
在所述第21时钟周期,选通控制信号为001_111_001_100,
在所述第22~第27时钟周期,选通控制信号均为000_000_000_000;
在所述第四轮Δ4中:
在所述第28时钟周期,选通控制信号为110_110_111_010,
在所述第29时钟周期,选通控制信号为001_000_000_000,
在所述第30时钟周期,选通控制信号为011_101_000_000,
在所述第31~第36时钟周期,选通控制信号均为000_000_000_000;
在所述第五轮Δ5中:
在所述第37时钟周期,选通控制信号为001_010_000_000,
在所述第38时钟周期,选通控制信号为010_100_011_111,
在所述第39时钟周期,选通控制信号为111_110_000_000,
在所述第40~第45时钟周期,选通控制信号均为000_000_000_000;
在所述第六轮Δ6中:
在所述第46时钟周期,选通控制信号为000_000_000_000,
在所述第47时钟周期,选通控制信号为000_000_010_111,
在所述第48时钟周期,选通控制信号为000_000_000_111;
所述第一多路选择器组,其中:
各个多路选择器mux1~mux6各自的选择信号输入端先后依次分别与所述点加寄存器控制器的各操作控制信号输出端相连,分别输入各个操作控制信号C1~C6,
各个多路选择器mux1~mux6各自的00端先后依次输入X1、Y1、Z1、X2、Y2、1,
各个多路选择器mux1~mux6各自的模乘数据输入端01共同与所述点加电路系统外的模乘器的模乘数据r_mul输出端相连,
各个多路选择器mux1~mux6各自的模加数据输入端10共同与所述点加电路系统外的模加器的模加数据r_add输出端相连;
所述中间变量寄存器组,其中:
各个中间变量寄存器寄存Reg1~Reg6的第一输入端先后依次分别与所述各多路选择器mux1~mux6的信号D1、D2、D3、D4、D5、D6的输出端相连,所述Reg1~Reg6的第二输入端互连后接时钟信号Clk的输出端;
所述第二多路选择器组,其中:
各个多路选择器lmux1~lmux4各自的选择信号输入端先后依次分别与所述点加多路选择控制器的各选通控制信号输出端相连,分别输入各个选通控制信号CL1~CL4,
多路选择器lmux1、lmux2的000输入端互连后接所述Q点的坐标值1,
多路选择器lmux3、lmux4的000输入端互连后接所述模加器的模加信号r_add的输出端,
各个多路选择器lmux1~lmux4的001输入端互连后接所述中间变量寄存器Reg1的信号T1的输出端,所述信号T1的输出端同时与所述第一多路选择器组中的多路选择器mux1的11输入端相连,
各个多路选择器lmux1~lmux4的010输入端互连后接所述中间变量寄存器Reg2的信号T2的输出端,所述信号T2的输出端同时与所述第一多路选择器组中的多路选择器mux2的11输入端相连,
各个多路选择器lmux1~lmux4的011输入端互连后接所述中间变量寄存器Reg3的信号T3的输出端,所述信号T3的输出端同时与所述第一多路选择器组中的多路选择器mux3的11输入端相连,
各个多路选择器lmux1~lmux4的100输入端互连后接所述中间变量寄存器Reg4的信号T4的输出端,所述信号T4的输出端同时与所述第一多路选择器组中的多路选择器mux4的11输入端相连,
各个多路选择器lmux1~lmux4的101输入端互连后接所述中间变量寄存器Reg5的信号T5的输出端,所述信号T5的输出端同时与所述第一多路选择器组中的多路选择器mux5的11输入端相连,
各个多路选择器lmux1~lmux4的110输入端互连后接所述中间变量寄存器Reg6的信号T6的输出端,所述信号T6的输出端同时与所述第一多路选择器组中的多路选择器mux6的11输入端相连,
多路选择器lmux1、lmux2的111输入端互连后接所述模加器的模加信号r_add的输出端,
多路选择器lmux3、lmux4的111输入端互连后接所述模乘器的模乘信号r_mul的输出端,
所述多路选择器lmux1、lmux2的输出信号mul1、mul2分别送入所述模乘器的两个输入端;
所述多路选择器lmux3、lmux4的输出信号add1、add2分别送入所述模加器的两个输入端;
在所述第一轮Δ1中,所述模乘器的输出r_mul使:
T5←T3 2,T4←T3×T5,T4←T3×T5,而所述模加器无输出;
在所述第二轮Δ2中,所述模乘器的输出r_mul使:
T4←T4×T5,T6←T4×T5,T2←T1×T2,而所述模加器无输出;
在所述第三轮Δ3中:
所述模乘器的输出r_mul使:
T4←T2×T4,T2←T5 2,T1←T1×T6
所述模加器的输出r_add使:
T5←T4-T1,T6←T6-T2,T1←T1+T4
在所述第四轮Δ4中:
所述模乘器的输出r_mul使:
T3←T6 2,T1←T1×T2,T3←T3×T5
所述模加器的输出r_add使:
T4←T4-T2
在所述第五轮Δ5中:
所述模乘器的输出r_mul使:
T2←T1×T2,T4←T2×T4,T2←T1×T6
所述模加器的输出r_add使:
T1←T3-T1
在所述第六轮Δ6中:
所述模加器的输出r_add使:
T4←T2-T4,T2←T4-T2,得到X3=T1,Y3=T2,Z3=T3
符号“←”表示用右边的数据去代替左边的数据。
CN2008100556106A 2008-01-04 2008-01-04 椭圆曲线密码系统的点加系统 Expired - Fee Related CN101221491B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008100556106A CN101221491B (zh) 2008-01-04 2008-01-04 椭圆曲线密码系统的点加系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008100556106A CN101221491B (zh) 2008-01-04 2008-01-04 椭圆曲线密码系统的点加系统

Publications (2)

Publication Number Publication Date
CN101221491A true CN101221491A (zh) 2008-07-16
CN101221491B CN101221491B (zh) 2010-04-21

Family

ID=39631355

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100556106A Expired - Fee Related CN101221491B (zh) 2008-01-04 2008-01-04 椭圆曲线密码系统的点加系统

Country Status (1)

Country Link
CN (1) CN101221491B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101782845A (zh) * 2009-01-20 2010-07-21 北京华大信安科技有限公司 一种椭圆曲线密码的高速运算装置和方法
CN102104482A (zh) * 2009-12-21 2011-06-22 上海华虹集成电路有限责任公司 椭圆曲线密码体制中无穷远点在仿射坐标系下的表示方法
CN102306091A (zh) * 2011-07-08 2012-01-04 西安电子科技大学 椭圆曲线点乘硬件快速实现方法
CN104298646A (zh) * 2014-09-29 2015-01-21 北京宏思电子技术有限责任公司 椭圆曲线密码的点乘运算结果的获取方法和装置
CN106126193A (zh) * 2016-08-24 2016-11-16 四川卫士通信息安全平台技术有限公司 基于Zynq的椭圆曲线点加运算加速器及加速方法
CN111198672A (zh) * 2019-12-30 2020-05-26 华南师范大学 一种基于二元扩域的点加和倍点电路及其控制方法
CN113691543A (zh) * 2021-08-25 2021-11-23 苏州国芯科技股份有限公司 基于椭圆曲线的数据加密方法、装置、计算机设备和介质
CN114489571A (zh) * 2022-04-15 2022-05-13 广州万协通信息技术有限公司 一种非对称算法计算电路

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104503730A (zh) * 2014-10-24 2015-04-08 山东华芯半导体有限公司 一种基于指令的大数点加、倍点运算电路及实现方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101782845A (zh) * 2009-01-20 2010-07-21 北京华大信安科技有限公司 一种椭圆曲线密码的高速运算装置和方法
CN101782845B (zh) * 2009-01-20 2014-11-26 北京华大信安科技有限公司 一种椭圆曲线密码的高速运算装置和方法
CN102104482A (zh) * 2009-12-21 2011-06-22 上海华虹集成电路有限责任公司 椭圆曲线密码体制中无穷远点在仿射坐标系下的表示方法
CN102306091A (zh) * 2011-07-08 2012-01-04 西安电子科技大学 椭圆曲线点乘硬件快速实现方法
CN102306091B (zh) * 2011-07-08 2014-04-16 西安电子科技大学 椭圆曲线点乘硬件快速实现方法
CN104298646A (zh) * 2014-09-29 2015-01-21 北京宏思电子技术有限责任公司 椭圆曲线密码的点乘运算结果的获取方法和装置
CN104298646B (zh) * 2014-09-29 2017-08-29 北京宏思电子技术有限责任公司 椭圆曲线密码的点乘运算结果的获取方法和装置
CN106126193A (zh) * 2016-08-24 2016-11-16 四川卫士通信息安全平台技术有限公司 基于Zynq的椭圆曲线点加运算加速器及加速方法
CN111198672A (zh) * 2019-12-30 2020-05-26 华南师范大学 一种基于二元扩域的点加和倍点电路及其控制方法
CN113691543A (zh) * 2021-08-25 2021-11-23 苏州国芯科技股份有限公司 基于椭圆曲线的数据加密方法、装置、计算机设备和介质
CN114489571A (zh) * 2022-04-15 2022-05-13 广州万协通信息技术有限公司 一种非对称算法计算电路
CN114489571B (zh) * 2022-04-15 2022-07-15 广州万协通信息技术有限公司 一种非对称算法计算电路

Also Published As

Publication number Publication date
CN101221491B (zh) 2010-04-21

Similar Documents

Publication Publication Date Title
CN100583769C (zh) 椭圆曲线密码系统的倍点系统
CN101221491B (zh) 椭圆曲线密码系统的点加系统
Takagi A radix-4 modular multiplication hardware algorithm for modular exponentiation
Miyamoto et al. Systematic design of RSA processors based on high-radix Montgomery multipliers
CN100470464C (zh) 基于改进的蒙哥马利算法的模乘器
Azarderakhsh et al. High-performance implementation of point multiplication on Koblitz curves
CN102131198B (zh) 认证系统中椭圆曲线密码运算装置的实现方法
Jeong et al. VLSI array algorithms and architectures for RSA modular multiplication
CN103942031A (zh) 椭圆域曲线运算方法和椭圆域曲线运算器
Ercegovac An on-line square rooting algorithm
CN113628094A (zh) 一种基于gpu的高吞吐量sm2数字签名计算系统及方法
CN113783702A (zh) 一种椭圆曲线数字签名与验签的硬件实现方法和系统
Niasar et al. Optimized architectures for elliptic curve cryptography over Curve448
Zhang et al. High-performance implementation of SM2 based on FPGA
CN101630244B (zh) 一种流水线型椭圆曲线双标量乘法系统及方法
CN103780381B (zh) 基于高基脉动阵列的蒙哥马利算法的实现装置及方法
Zhang et al. {FLASH}: Towards a high-performance hardware acceleration architecture for cross-silo federated learning
CN113467754A (zh) 一种基于分解约简的格加密模乘运算方法及架构
CN101436932A (zh) 一种抵抗简单电耗攻击的模幂计算方法
CN102291240B (zh) Sm2签名的认证方法及系统
Kadu et al. Hardware implementation of efficient elliptic curve scalar multiplication using vedic multiplier
CN109284082A (zh) 一种ecc和sm2通用的点运算方法及装置
Zode et al. Optimization of elliptic curve scalar multiplication using constraint based scheduling
Verma et al. FPGA implementation of RSA based on carry save Montgomery modular multiplication
Judge et al. A hardware-accelerated ECDLP with high-performance modular multiplication

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100421

Termination date: 20110104