CN103336680B - 实现二进制左移模逆算法的电路 - Google Patents
实现二进制左移模逆算法的电路 Download PDFInfo
- Publication number
- CN103336680B CN103336680B CN201310261694.XA CN201310261694A CN103336680B CN 103336680 B CN103336680 B CN 103336680B CN 201310261694 A CN201310261694 A CN 201310261694A CN 103336680 B CN103336680 B CN 103336680B
- Authority
- CN
- China
- Prior art keywords
- totalizer
- mux
- mould
- selects
- output
- 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.)
- Expired - Fee Related
Links
Landscapes
- Complex Calculations (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
一种改进的二进制左移模逆算法,对于给定的模数p,p的位数,在计算模逆过程中,跳出循环的条件为c_u=n-1或c_v=n-1,即c_u、c_v与常数n-1的比较,其中,u、v是用来存储需要左移数据的n位中间变量,分别初始化为p、a,r是用来通过左移得到模逆的中间变量,初始化为0,当算法结束后,r中的值就是所求的模逆结果,c_u表示u左移的次数,c_v表示v左移的次数,本发明还提供了实现该算法的电路结构,本发明的算法具有更精简的操作步骤,占用更少的存储单元,从而减少了电路面积以及降低了电路功耗,更好地满足了低端密码系统的低功耗要求。
Description
技术领域
本发明涉及一种实现二进制左移模逆算法的电路。
背景技术
随着信息安全的快速发展,基于数学难题的公钥密码体制得到了广泛应用。椭圆曲线密码(ECC,ellipticcurvecryptography)因其具有密钥短、速度快、安全性高、节省资源等一系列优点而广泛应用于移动通信、电子商务等领域。而大数模逆运算作为一种模运算,是素数域椭圆曲线密码中不可或缺的运算。在椭圆曲线密码体制中,点加和倍点运算都需要用到求逆运算。随着银行IC卡的产业升级,非接触式金融IC卡将逐步增加,面向低端的密码系统的应用也越来越迫切,因此操作简便、面积小、功耗低的大数模逆算法具有重要的研究意义和应用价值。
目前已经有的求解素数域上模逆的算法包括扩展欧几里得算法、二进制右移算法和二进制左移算法。
扩展欧几里得算法利用辗转相除法实现了模逆的求解,但其缺点在于操作步骤中有复杂的除法运算,不利于计算机处理。二进制右移算法利用简单的移位操作和加法运算代替了扩展欧几里得算法中的除法运算。而二进制左移算法则可通过左移的方式去掉加法运算,从而节省硬件资源。
发明内容
为克服上述现有技术的缺点,本发明的目的是在已有的二进制左移模逆算法的基础上提出一种改进的二进制左移模逆算法,可进一步节省硬件资源,降低功耗。
为实现上述目的,本发明采用的技术方案是:
一种改进的二进制左移模逆算法,素数域GF(p)上整数a的模逆定义为:对于素数p和整数a∈[1,p-1],存在唯一的整数i∈[1,p-1],使得i·a≡1(modp),则整数i为a的逆元,记作:i≡a-1(modp),其特征在于,对于给定的模数p,p的位数在计算模逆过程中,跳出循环的条件为c_u=n-1或c_v=n-1,即c_u、c_v与常数n-1的比较,其中,u、v是用来存储需要左移数据的n位中间变量,分别初始化为p、a,r是用来通过左移得到模逆的中间变量,初始化为0,当算法结束后,r中的值就是所求的模逆结果,c_u表示u左移的次数,c_v表示v左移的次数。
优选地,算法过程中增加比特变量用于记录多左移的次数。
本发明二进制左移模逆算法,具体可以按以下步骤进行:
输入:a∈[1,p-1]和p
输出:r∈[1,p-1],其中r=a-1(modp)
⑴u←p,v←a,r←0,s←1
⑵c_u←0,c_v←0,d←0
⑶若a=1,则
返回r=1
否则
执行第4步
⑷当c_u≠n-1且c_v≠n-1时,重复执行步骤(1)-(3);
当un,un-1=0,或:un,un-1=1且OR(un-2,...,u0)=1时:
若c_u≥c_v,则u←2u,r←2r,c_u←c_u+1,d←d+1;
若c_u<c_v,则u←2u,s←s/2,c_u←c_u+1;
当vn,vn-1=0,或:vn,vn-1=1且OR(vn-2,...,v0)=1时:
若c_v≥c_u,则v←2v,s←2s,c_v←c_v+1,d←d+1;
若c_u<c_v,则v←2v,r←r/2,c_v←c_v+1,否则,d←0;
若vn=un,则oper=“-”;
若vn≠un,则oper=“+”;
若c_u≤c_v,则u←uoperv,r←ropers;
若c_u>c_v,则v←voperu,s←soperr;
⑸若c_v=n-1,则r←s,un←vn;
⑹当d>0时,重复执行r←r/2,d←d-1;
⑺若un=1且r<0,则r←-r
若un=1且r≥0,则r←p-r
⑻若r<0,则r←r+p;
⑼返回r;
其中:“+”表示加法,“-”表示减法,“←”表示将右侧的值赋值给左侧的变量,“OR(x)”表示将x逐位进行或运算,“oper”根据第4步中的相应条件代指“+”或“-”,s是用来通过左移得到模逆的中间变量,初始化为1。
本发明同时提供了一种实现所述二进制左移模逆算法的电路,主要包括加法器一、加法器二、加法器三、移位器一、移位器二以及控制器,加法器一和加法器二都是n位加法器,加法器三为位特殊加法器,移位器一和移位器二都是n位移位器;加法器一的输入为u和v,加法器二的第1路输入为r,第2路输入通过一个多路选择器选择s、0或p中的一个,加法器三的第1路输入为1,第2路输入通过一个多路选择器选择c_u、c_v或d中的一个,u通过一个多路选择器选择加法器一的输出或移位器一的输出中的一个,v通过一个多路选择器选择加法器一的输出或移位器一的输出中的一个,r通过一个多路选择器选择加法器二的输出、移位器二的输出或s中的一个,s通过一个多路选择器选择加法器二的输出或移位器二的输出中的一个,d通过一个多路选择器选择加法器三的输出或0中的一个,移位器一通过一个多路选择器选择u或v中的一个,移位器二通过一个多路选择器选择r或s中的一个,所述各个多路选择器均连接至控制器,由控制器控制选择。
与现有技术相比,本发明的有益效果是:与原算法相比,本发明具有更精简的操作步骤,占用更少的存储单元,从而减少了电路面积以及降低了电路功耗,更好地满足了低端密码系统的低功耗要求。
附图说明
图1是按照本发明设计的电路结构简图。
具体实施方式
下面结合附图和实施例详细说明本发明的实施方式。
本发明一种改进的二进制左移模逆算法,素数域GF(p)上整数a的模逆定义为:对于素数p和整数a∈[1,p-1],存在唯一的整数i∈[1,p-1],使得i·a≡1(modp),则整数i为a的逆元,记作:i≡a-1(modp),其特征在于,对于给定的模数p(p的位数记为),在计算模逆过程中,跳出循环的条件为c_u=n-1或c_v=n-1,也就是c_u、c_v与常数n-1的比较。这样,就会占用较少的存储单元(比特),操作也比较简便。另外,需要增加比特变量d,用于记录多左移的次数。改进后的算法必须左移固定的次数才能结束,对于给定的p,设p的位数n,则循环结束条件用n-1来判断。如果p的位数小于n,不妨设为m位(m<n),循环结束条件也可以用n-1来判断,只不过会比使用m-1多做n-m次左移和右移操作。
具体地,改进的二进制左移模逆算法可按照如下步骤进行:
输入:a∈[1,p-1]和p
输出:r∈[1,p-1],其中r=a-1(modp)
⑴u←p,v←a,r←0,s←1
⑵c_u←0,c_v←0,d←0
⑶若(a=1),则
返回r=1
否则
执行第4步
⑷当(c_u≠n-1且c_v≠n-1)时,重复执行
若(un,un-1=0)或(un,un-1=1且OR(un-2,...,u0)=1),则
若(c_u≥c_v),则
u←2u,r←2r,c_u←c_u+1,d←d+1
否则
u←2u,s←s/2,c_u←c_u+1
否则若(vn,vn-1=0)或(vn,vn-1=1且OR(vn-2,...,v0)=1)则
若(c_v≥c_u),则
v←2v,s←2s,c_v←c_v+1,d←d+1
否则
v←2v,r←r/2,c_v←c_v+1
否则
d←0
若(vn=un),则
oper=“-”
否则
oper=“+”
若(c_u≤c_v),则
u←uoperv,r←ropers
否则
v←voperu,s←soperr
⑸若(c_v=n-1),则
r←s,un←vn
⑹当(d>0)时,重复执行
r←r/2,d←d-1
⑺若(un=1),则
若(r<0),则
r←-r
否则
r←p-r
⑻若(r<0),则
r←r+p
⑼返回r
为实现上述本发明的算法,提供一种电路结构如图1所示:主要包括加法器一、加法器二、加法器三、移位器一、移位器二以及控制器,加法器一和加法器二都是n位加法器,加法器三为位特殊加法器,移位器一和移位器二都是n位移位器;加法器一的输入为u和v,加法器二的第1路输入为r,第2路输入通过一个多路选择器选择s、0或p中的一个,加法器三的第1路输入为1,第2路输入通过一个多路选择器选择c_u、c_v或d中的一个,u通过一个多路选择器选择加法器一的输出或移位器一的输出中的一个,v通过一个多路选择器选择加法器一的输出或移位器一的输出中的一个,r通过一个多路选择器选择加法器二的输出、移位器二的输出或s中的一个,s通过一个多路选择器选择加法器二的输出或移位器二的输出中的一个,d通过一个多路选择器选择加法器三的输出或0中的一个,移位器一通过一个多路选择器选择u或v中的一个,移位器二通过一个多路选择器选择r或s中的一个,所述各个多路选择器均连接至控制器,由控制器控制选择,能够实现上述算法。
Claims (1)
1.一种实现二进制左移模逆算法的电路,主要包括加法器一、加法器二、加法器三、移位器一、移位器二以及控制器,所述二进制左移模逆算法中,素数域GF(p)上整数a的模逆定义为:对于素数p和整数a∈[1,p-1],存在唯一的整数i∈[1,p-1],使得i·a≡1(modp),则整数i为a的逆元,记作:i≡a-1(modp),其特征在于,对于给定的模数p,p的位数在计算模逆过程中,跳出循环的条件为c_u=n-1或c_v=n-1,即c_u、c_v与常数n-1的比较,其中,u、v是用来存储需要左移数据的n位中间变量,分别初始化为p、a,r是用来通过左移得到模逆的中间变量,初始化为0,当算法结束后,r中的值就是所求的模逆结果,c_u表示u左移的次数,c_v表示v左移的次数;
其特征在于,加法器一和加法器二都是n位加法器,加法器三为位特殊加法器,移位器一和移位器二都是n位移位器;加法器一的输入为u和v,加法器二的第1路输入为r,第2路输入通过一个多路选择器选择s、0或p中的一个,加法器三的第1路输入为1,第2路输入通过一个多路选择器选择c_u、c_v或d中的一个,u通过一个多路选择器选择加法器一的输出或移位器一的输出中的一个,v通过一个多路选择器选择加法器一的输出或移位器一的输出中的一个,r通过一个多路选择器选择加法器二的输出、移位器二的输出或s中的一个,s通过一个多路选择器选择加法器二的输出或移位器二的输出中的一个,d通过一个多路选择器选择加法器三的输出或0中的一个,移位器一通过一个多路选择器选择u或v中的一个,移位器二通过一个多路选择器选择r或s中的一个,所述各个多路选择器均连接至控制器,由控制器控制选择,其中,s是用来通过左移得到模逆的中间变量,初始化为1,d是算法过程中增加的比特变量,用于记录多左移的次数,
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310261694.XA CN103336680B (zh) | 2013-06-27 | 2013-06-27 | 实现二进制左移模逆算法的电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310261694.XA CN103336680B (zh) | 2013-06-27 | 2013-06-27 | 实现二进制左移模逆算法的电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103336680A CN103336680A (zh) | 2013-10-02 |
CN103336680B true CN103336680B (zh) | 2016-01-13 |
Family
ID=49244858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310261694.XA Expired - Fee Related CN103336680B (zh) | 2013-06-27 | 2013-06-27 | 实现二进制左移模逆算法的电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103336680B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105988772B (zh) * | 2015-03-04 | 2019-04-26 | 上海复旦微电子集团股份有限公司 | 模逆运算器 |
CN105988771B (zh) * | 2015-03-04 | 2019-10-22 | 上海复旦微电子集团股份有限公司 | 模逆运算器 |
CN106850212A (zh) * | 2017-03-06 | 2017-06-13 | 西安电子科技大学 | 基于rsa密码算法的密钥生成系统及方法 |
CN112099761B (zh) * | 2020-08-27 | 2022-09-02 | 清华大学 | 基于改进的二进制左移模逆算法的装置及其控制方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1506473A2 (de) * | 2002-05-16 | 2005-02-16 | Giesecke & Devrient GmbH | Aussp hungsgesch tzte modulare inversion |
CN101180606A (zh) * | 2005-05-25 | 2008-05-14 | 西门子威迪欧汽车电子股份公司 | 模逆元的确定 |
EP1600852B1 (en) * | 2004-05-29 | 2009-12-02 | The Queen's University of Belfast | Method and apparatus for calculating a modular inverse |
US7831651B2 (en) * | 1997-11-04 | 2010-11-09 | Nippon Telegraph And Telephone Corporation | Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method |
CN102279725A (zh) * | 2011-09-01 | 2011-12-14 | 北京华大信安科技有限公司 | Ecc协处理器 |
-
2013
- 2013-06-27 CN CN201310261694.XA patent/CN103336680B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7831651B2 (en) * | 1997-11-04 | 2010-11-09 | Nippon Telegraph And Telephone Corporation | Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method |
EP1506473A2 (de) * | 2002-05-16 | 2005-02-16 | Giesecke & Devrient GmbH | Aussp hungsgesch tzte modulare inversion |
EP1600852B1 (en) * | 2004-05-29 | 2009-12-02 | The Queen's University of Belfast | Method and apparatus for calculating a modular inverse |
CN101180606A (zh) * | 2005-05-25 | 2008-05-14 | 西门子威迪欧汽车电子股份公司 | 模逆元的确定 |
CN102279725A (zh) * | 2011-09-01 | 2011-12-14 | 北京华大信安科技有限公司 | Ecc协处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN103336680A (zh) | 2013-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103336680B (zh) | 实现二进制左移模逆算法的电路 | |
CN103078732B (zh) | 一种素域椭圆曲线加密的点乘加速电路 | |
CN101782845B (zh) | 一种椭圆曲线密码的高速运算装置和方法 | |
CN103226461B (zh) | 一种用于电路的蒙哥马利模乘方法及其电路 | |
Azarderakhsh et al. | High-performance implementation of point multiplication on Koblitz curves | |
KR102132261B1 (ko) | 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 | |
CN103092560A (zh) | 一种基于Bypass技术的低功耗乘法器 | |
CN105068784A (zh) | 基于蒙哥马利模乘的Tate对算法及其硬件结构 | |
CN101630244B (zh) | 一种流水线型椭圆曲线双标量乘法系统及方法 | |
CN101021777A (zh) | 基于除数(2n-1)的有效求模操作运算 | |
Li et al. | Research in fast modular exponentiation algorithm based on FPGA | |
CN104699452A (zh) | 一种素域gf(p)下实现位宽可变的模乘法器 | |
CN103645883A (zh) | 基于fpga的高基模乘器 | |
CN104503730A (zh) | 一种基于指令的大数点加、倍点运算电路及实现方法 | |
CN103888246A (zh) | 低功耗小面积的数据处理方法及其数据处理装置 | |
CN102104482A (zh) | 椭圆曲线密码体制中无穷远点在仿射坐标系下的表示方法 | |
CN102955682B (zh) | 一种模(23n-2n)乘法器 | |
CN102832951B (zh) | 一种基于概率计算的ldpc译码公式的实现方法 | |
Hong et al. | The design of high performance elliptic curve cryptographic | |
Yan et al. | Modified modular inversion algorithm for vlsi implementation | |
CN102930097B (zh) | 一种rns比较器 | |
Vollala et al. | Bit Forwarding Techniques for Efficient Modular Exponentiation | |
Brar et al. | Design and implementation of block method for computing NAF | |
Ahmadi et al. | Low-power low-energy prime-field ECC processor based on montgomery modular inverse algorithm | |
Hassan et al. | A Booth-like modulo operator |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160113 Termination date: 20160627 |
|
CF01 | Termination of patent right due to non-payment of annual fee |