CN103336680A - 改进的二进制左移模逆算法 - Google Patents
改进的二进制左移模逆算法 Download PDFInfo
- Publication number
- CN103336680A CN103336680A CN201310261694XA CN201310261694A CN103336680A CN 103336680 A CN103336680 A CN 103336680A CN 201310261694X A CN201310261694X A CN 201310261694XA CN 201310261694 A CN201310261694 A CN 201310261694A CN 103336680 A CN103336680 A CN 103336680A
- Authority
- CN
- China
- Prior art keywords
- totalizer
- output
- mux
- algorithm
- shift unit
- 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
Links
Images
Landscapes
- Mobile Radio Communication Systems (AREA)
- Complex Calculations (AREA)
Abstract
Description
技术领域
本发明涉及一种改进的二进制左移模逆算法。
背景技术
随着信息安全的快速发展,基于数学难题的公钥密码体制得到了广泛应用。椭圆曲线密码(ECC,elliptic curve cryptography)因其具有密钥短、速度快、安全性高、节省资源等一系列优点而广泛应用于移动通信、电子商务等领域。而大数模逆运算作为一种模运算,是素数域椭圆曲线密码中不可或缺的运算。在椭圆曲线密码体制中,点加和倍点运算都需要用到求逆运算。随着银行IC卡的产业升级,非接触式金融IC卡将逐步增加,面向低端的密码系统的应用也越来越迫切,因此操作简便、面积小、功耗低的大数模逆算法具有重要的研究意义和应用价值。
目前已经有的求解素数域上模逆的算法包括扩展欧几里得算法、二进制右移算法和二进制左移算法。
扩展欧几里得算法利用辗转相除法实现了模逆的求解,但其缺点在于操作步骤中有复杂的除法运算,不利于计算机处理。二进制右移算法利用简单的移位操作和加法运算代替了扩展欧几里得算法中的除法运算。而二进制左移算法则可通过左移的方式去掉加法运算,从而节省硬件资源。
发明内容
为克服上述现有技术的缺点,本发明的目的是在已有的二进制左移模逆算法的基础上提出一种改进的二进制左移模逆算法,可进一步节省硬件资源,降低功耗。
为实现上述目的,本发明采用的技术方案是:
一种改进的二进制左移模逆算法,素数域GF(p)上整数a的模逆定义为:对于素数p和整数a∈[1,p-1],存在唯一的整数i∈[1,p-1],使得i·a≡1(mod p),则整数i为a的逆元,记作:i≡a-1(mod p),其特征在于,对于给定的模数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(mod p)
⑴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←u oper v,r←r oper s;
若c_u>c_v,则v←v oper u,s←s oper r;
⑸若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(mod p),则整数i为a的逆元,记作:i≡a-1(mod p),其特征在于,对于给定的模数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(mod p)
⑴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←u oper v,r←r oper s
否则
v←v oper u,s←s oper r
⑸若(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 (4)
1.一种改进的二进制左移模逆算法,素数域GF(p)上整数a的模逆定义为:对于素数p和整数a∈[1,p-1],存在唯一的整数i∈[1,p-1],使得i·a≡1(modp),则整数i为a的逆元,记作:i≡a-1(mod p),其特征在于,对于给定的模数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左移的次数。
2.根据权利要求1所述的改进的二进制左移模逆算法,其特征在于,算法过程中增加比特变量用于记录多左移的次数。
3.一种改进的二进制左移模逆算法,其特征在于,按以下步骤进行:
输入:a∈[1,p-1]和p
输出:r∈[1,p-1],其中r=a-1(mod p)
⑴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←u oper v,r←r oper s;
若c_u>c_v,则v←v oper u,s←s oper r;
⑸若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。
4.一种实现权利要求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中的一个,所述各个多路选择器均连接至控制器,由控制器控制选择。
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 true CN103336680A (zh) | 2013-10-02 |
CN103336680B 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) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105988771A (zh) * | 2015-03-04 | 2016-10-05 | 上海复旦微电子集团股份有限公司 | 模逆运算器 |
CN105988772A (zh) * | 2015-03-04 | 2016-10-05 | 上海复旦微电子集团股份有限公司 | 模逆运算方法及运算器 |
CN106850212A (zh) * | 2017-03-06 | 2017-06-13 | 西安电子科技大学 | 基于rsa密码算法的密钥生成系统及方法 |
CN112099761A (zh) * | 2020-08-27 | 2020-12-18 | 清华大学 | 基于改进的二进制左移模逆算法的装置及其控制方法 |
CN114553425A (zh) * | 2022-02-25 | 2022-05-27 | 东南大学 | 基于高性能模逆的椭圆数字签名曲线硬件实现方法及系统 |
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协处理器 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105988771A (zh) * | 2015-03-04 | 2016-10-05 | 上海复旦微电子集团股份有限公司 | 模逆运算器 |
CN105988772A (zh) * | 2015-03-04 | 2016-10-05 | 上海复旦微电子集团股份有限公司 | 模逆运算方法及运算器 |
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密码算法的密钥生成系统及方法 |
CN112099761A (zh) * | 2020-08-27 | 2020-12-18 | 清华大学 | 基于改进的二进制左移模逆算法的装置及其控制方法 |
CN112099761B (zh) * | 2020-08-27 | 2022-09-02 | 清华大学 | 基于改进的二进制左移模逆算法的装置及其控制方法 |
CN114553425A (zh) * | 2022-02-25 | 2022-05-27 | 东南大学 | 基于高性能模逆的椭圆数字签名曲线硬件实现方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103336680B (zh) | 2016-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103336680A (zh) | 改进的二进制左移模逆算法 | |
CN103226461B (zh) | 一种用于电路的蒙哥马利模乘方法及其电路 | |
US7835517B2 (en) | Encryption processing apparatus, encryption processing method, and computer program | |
CN105068784A (zh) | 基于蒙哥马利模乘的Tate对算法及其硬件结构 | |
Liu et al. | High performance FPGA implementation of elliptic curve cryptography over binary fields | |
EP1975907A1 (en) | Encryption processing device, encryption processing method, and computer program | |
CN102122241A (zh) | 一种适用于素域和多项式域的模乘模除器 | |
Zheng et al. | Exploiting the floating-point computing power of GPUs for RSA | |
CN101630244B (zh) | 一种流水线型椭圆曲线双标量乘法系统及方法 | |
CN101971138A (zh) | 用于计算椭圆曲线上的点的倍数的设备和方法 | |
Li et al. | Research in fast modular exponentiation algorithm based on FPGA | |
Wang et al. | Area-efficient and ultra-low-power architecture of RSA processor for RFID | |
CN107463354A (zh) | 一种面向ECC的双域并行度可变的Montgomery模乘电路 | |
CN104901792A (zh) | 密码处理椭圆曲线数据的方法、电子设备及计算机程序 | |
CN102646033B (zh) | 提供了加密和签名功能的rsa算法的实现方法和装置 | |
Baktır et al. | Frequency domain finite field arithmetic for elliptic curve cryptography | |
JP2004125891A (ja) | べき乗剰余演算器 | |
Ma et al. | Fast implementation for modular inversion and scalar multiplication in the elliptic curve cryptography | |
KR100564764B1 (ko) | 유한체 다항식 곱셈 장치 및 그 방법 | |
Youssef et al. | A low-resource 32-bit datapath ECDSA design for embedded applications | |
Seo et al. | Multi-precision squaring on MSP and ARM processors | |
Devika et al. | Efficient hardware prototype of ECDSA modules for blockchain applications | |
Yan et al. | Modified modular inversion algorithm for vlsi implementation | |
Hong et al. | The design of high performance elliptic curve cryptographic | |
Ahmadi et al. | Low-power low-energy prime-field ECC processor based on montgomery modular inverse algorithm |
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 |