CN100470464C - 基于改进的蒙哥马利算法的模乘器 - Google Patents

基于改进的蒙哥马利算法的模乘器 Download PDF

Info

Publication number
CN100470464C
CN100470464C CNB2005101167031A CN200510116703A CN100470464C CN 100470464 C CN100470464 C CN 100470464C CN B2005101167031 A CNB2005101167031 A CN B2005101167031A CN 200510116703 A CN200510116703 A CN 200510116703A CN 100470464 C CN100470464 C CN 100470464C
Authority
CN
China
Prior art keywords
register
totalizer
bit register
output terminal
bit
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
Application number
CNB2005101167031A
Other languages
English (en)
Other versions
CN1786900A (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 CNB2005101167031A priority Critical patent/CN100470464C/zh
Publication of CN1786900A publication Critical patent/CN1786900A/zh
Application granted granted Critical
Publication of CN100470464C publication Critical patent/CN100470464C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明属于计算机加/解密技术领域,其特征在于:该模乘器用了两个7级流水的64位乘法器来分解操作数以提高系统的时钟频率,用预计算单元把在外部状态机控制下提前输入的数据分期送入乘法器,所属分期是按照计算操作数中前一位值的那个阶段中存在的三个等待计算结果的时钟周期来划分的。从i=0时计算第一阶段开始,重复上述步骤,直到操作数中个位数全部模乘结束为止。从而解决了流水线停顿的问题,提高了系统的并行性,减少了所需的时钟数。所述模乘器位长233位,基于SMIC 0.18um最坏的工艺,关键路径最大时延3.8ns,面积2mm2,一次模乘需要110个时钟周期。与现有其它结构相比,具有面积小速度快的特点,适用于ECC密码体制和RSA密码体制。

Description

基于改进的蒙哥马利算法的模乘器
技术领域
迅速发展的电子商务、保密通讯等应用对开放网路上的信息安全提出了更高的要求,于是RSA、ECC的等公开密钥密码体制,被广泛用于密钥传递和数字签名。RSA和素数域ECC的核心操作都是模幂乘运算,而且为了保证一定程度的安全性,RSA模数和指数的位长需要达到1024位以上,ECC模数和指数的位长也需要达到233位以上。但是这种规模的大数模乘运算用软件实现效率是很低的,会占用大量的系统资源,因此各种大数模幂乘的硬件应运而生。本设计中的模乘器VLSI结构正是属于此类的加/解密技术领域。
背景技术
应用最广泛的模乘法算法是蒙哥马利算法,它的核心思想是将通常的取模运算中的比较和减法转化为乘法和加法。
1.Montgomery原始算法
  Montgomery算法表示为:
  Mon_pro(A,B)=ABR-1mod N,其具体算法是:
  Function Mon_pro(A,B):
      T←A*B
      u←-T*N-1(mod R)
      x←(T+u*N)/R
      If x≥N return x←x-N
      Else return x
其中N为模数,R与N互质R=2n,n是N的位数。N-1和R-1分别满足NN-1mod R=1和RR-1mod N=1。值得注意的是N-1和R-1是事先预计算得到的,只有更新模数的时候才需要计算一次;另外由于R=2n,模R或除R的操作就分别为取低位和取高位的简单操作。
由此可见Montgomey算法对A、B的积T取模时只用了2次普通的乘法操作。而一般的比较相减的取模方法需要n次减法。而且出于安全的需要n通常很大,本设计中n=233,这样Montgomery算法大大降低了运算的次数也就降低了运算所需的时钟数。
另外一个问题是原始的Montgomery算法中包含的乘法和加法运算全部是大数运算,VLSI实现时硬件的代价很大,而且由于进位链太长,关键路径延时很大,制约了系统的时钟频率。脉动阵列结构是解决长进位链问题的策略之一,但该类策略的缺点在于计算周期多且VLSI实现面积大而下文所述的改进算法通过将可以有效的解决这个问题。
2.Montgomery改进算法
本设计采用的Montgomery改进算法具体计算步骤如下:
n位的2进制A也可以理解为s位的r进制数,即A=(as-1as-2…a1a0),其中ai为r进制数,同理B也可以理解为s位的r进制数,即B=(bs-1bs-2…b1b0),其中bi为r进制数、N也可以理解为s位的r进制数,即N=(ns-1ns-2…n1n0),其中ni为r进制数。n′0为只与N有关常数且满足 n 0 n 0 ′ mod r = 1
算法分为3个步骤:
第一步:计算中间结果mi
1 for i=0 to s-1
1.1   for j=0 to i-1
            S:=S+ajbi-j+mjni-j
1.2   mi := Sn’0mod r,
1.3   S  := S+min0
1.4   S  := S/r,
第二步:计算最终结果存于mi
2 for i=s to 2s-1
2.1 for j=i-s+1 to s-1
           S:=S+ajbi-j+mjni-j
2.2 mi-s:=S mod r,
2.3 S:=S/r,
第三步:调整结果到区间[0,N]
令M=(ms-1ms-2…m1m0),若M≥N则输出M-N,否则输出M
可以看出,改进的算法中,位数很长的大数被分解为相对较小的数来分别进行计算,改善了由大数的加法和乘法进位链过长的问题。本设计综合考虑了时钟频率和所需的总时钟数两方面的因素后,S定为4,相应的r=264
发明内容
本发明的目的在于提供一种时间周期少、流水线连续、速度快、面积小的基于改进的Montgomery算法的模乘器。
本发明特征在于,该模乘器是一种在外部状态机的控制下对输入数据按改进的Montgomery算法操作的,位长233位的模乘器,该算法把位长很长的大数分解为相对较小的数来分别进行计算,即
把n位2进制的被乘数A视为s位的r进制数,表示为:A=as-1as-2…a1a0,ai为r进制数,
把n位2进制的乘数B视为s位的r进制数,表示为:B=bs-1bs-2…b1b0,bi为r进制数,
把n位2进制的模N视为s位的r进制数,表示为:N=ns-1ns-2…n1n0,ni为r进制数,
其中s=4,r=264,i=0,1,2,3,
所述基于改进的Montgomery算法的模乘器含有:输入单元、中间单元、预计算单元、输出单元和一个多路选择器,其中:
输入单元,含有:
第一采用7级流水的64位乘法器,输入数据为a和b;
第二采用7级流水的64位乘法器,输入数据为n和中间结果m;
第一128位寄存器,该寄存器的输入端与所述的第一采用7级流水的64位乘法器的输出端相连;
第二128位寄存器,该寄存器的输入端与所述的第二采用7级流水的64位乘法器的输出端相连;
中间单元,含有:
一个128位加法器,该加法器的两个输入端分别与所述第一128位寄存器和第二128位寄存器的输出端相连;
一个129位寄存器,该寄存器的输入端与所述128位加法器的输出端相连;
预计算单元,含有:
133位加法器I、133位加法器II、133位加法器III,所述各133位加法器的一个输入端分别和所述129位寄存器的输出端相连;
133位寄存器I、133位寄存器II、133位寄存器III,所述各133位寄存器的输入端分别依次与所对应133位加法器的输出端相连,所述各133位寄存器的输出端分别依次与所述个133位加法器的另一个输入端相连,
多路选择器,该选择器的各输入端分别同时与所述各133位寄存器的输出端相连;
输出单元,含有:
一个133位加法器IV,该加法器IV的两个输入端分别于所述多路选择器、129位寄存器的输出端相连;
一个133位寄存器IV,该寄存器IV的输入端与所述133位加法器IV的输出端相连,该寄存器的输出端在输出数据的同时又与所述第二采用7级流水的64位乘法器的输入中间结果m用的输入端相连;
在外部状态机的控制下,在i=0的循环内,所述第一采用7级流水的64位乘法器被依次按以下步骤输入数据:
在第一次等待计算结果S=a0b0的时钟周期内,被提前输入i=1时循环内用的与前一级运算结果无关的包括a0、b1、a1、b0在内的数据,产生相应的部分积a0b1、a1b0,在外部状态机的控制下送入所述预计算单元累加并寄存在寄存器I中;
在第二次等待计算结果m1=sn’0时钟周期内,被提前输入i=2时的循环内的数据a0、b2、a1、b1、a2、b0,产生相应的部分积a0b2、a1b1、a2b0,在外部状态机的控制下送入预计算单元累加并寄存在寄存器II中,n’0为只与N有关常数且满足 n 0 n 0 ′ mod r = 1
在第三次等待计算结果m1n0时钟周期内,被提前输入i=3时的循环内的数据a0、b3、a1、b2、a2、b1、a3、b0,产生相应的部分积a0b3、a1b2、a2b1、a3b0,在外部状态机的控制下送入预计算单元累加并寄存在寄存器III中;
在所述外部状态机的控制下,在i=1、i=2、i=3的循环内,同样按i=0循环内所属的步骤依次进行;
所述的129位寄存器和多路选择器,按照i=0,1,2,3各个不同的循环周期,把所寄存的各相应数据送往所述133位加法器IV累加后送往所述133位寄存器IV寄存,该寄存器IV把中间结果m送往第二采用7级流水的64位加法器,直到所有各循环结束,输出最终运算结果,
以上所述的基于改进的Montgomery模乘器是在数字集成电路上实现的。
本设计用Verilog进行行为级、RTL级编码和功能仿真,验证系统功能的正确性。基于SMIC 0.18微米工艺库完成逻辑综合(DC),并提取门延时信息,进行门级仿真验证,确保功能正确性和时序上的准确性。最终,本模乘器关键路径时延约3.8ns,考虑到布局布线阶段可能引入的连线延时和I/O pin等因素,整个芯片时钟典型频率可以达到200MHz,面积约2mm2,完成一次模乘需要108个时钟周期。
附图说明
图1.本发明所述模乘器的电路框图。
具体实施方式
本设计的模乘器电路结构如图1所示,是用ASIC芯片实现的。
整个数据通路由输入单元、中间单元、预计算单元、输出单元和多路选择器五个单元构成。输入单元包括a、b、n三个输入端口和两个64位乘法器;中间单元包括一个128位的加法器和一个129位寄存器;预计算单元由加法器I、加法器II、加法器III和寄存器I、寄存器II、寄存器III构成;输出单元由加法器IV和寄存器IV构成。
本设计的一个特点在于:尽管模乘器的操作数已经被分解为位长相对较短的64位数,但64位的乘法器的时延还是比较大的,在0.18um的工艺下仍达到20ns以上,限制了系统的时钟频率。因此本设计采用了7级流水线结构的乘法器以缩短其关键路径的时延到4ns以内。本设计的另一个特点是具有独特的预计算单元:虽然流水线结构可以提高系统的时钟频率,但是Montgomery算法本身的特点会造成流水线的停顿,导致效率系统下降,实际的运算速度变慢。根据这个问题,我们提出了预计算单元,在相关数据未就绪导致流水线停顿时提前计算其他数据,提高了流水线乘法器的利用率,使问题得到有效地缓解。
现在我们具体分析一下上述数据通路在执行2.4中Montgomery算法时,流水线停顿是怎么发生的,预计算单元又是如何解决该问题的:
以第一步为例,i=0时,我们需要产生部分积a0b0、m0n0并累加;i=1时,我们需要产生部分积a0b1、m0n1、a1b0、m1n0并累加;i=2时,我们需要产生部分积a0b2、m0n2、a1b1、m1n1、a2b0、m2n0并累加;i=3时,我们需要产生部分积a0b3、m0n3、a1b2、m1n2、a2b1、m2n1、a3b0、m3n0并累加。
其中ai、bi、ni都是输入数据,随时能进入乘法器用以生成相应的部分积,不会引起流水线的停顿,而mi为中间运算的结果,如果其在计算的过程当中时被乘法器调用就会导致流水线输入数据的中断。如在i=0的循环中,a0、b0进入乘法器计算部分积a0b0,此时应同时输入m0和n0,但m0是S(即部分积a0b0)乘n’0得到的,显然此时还没有就绪。不难看出在i=0的循环中,流水线乘法器停顿了三次,第一次等待S=a0*b0的计算;第二次是等待m0=S*n’0的计算;第三次是等待m0*n0的计算,每一次等待7个时钟周期(流水线深度)。可见普通的没有预计算单元的数据通路在i=0的循环内会浪费21个时钟周期。实际上这样的浪费不止发生在i=0的循环内,而是发生在每一个循环内,所以光第一步的4个循环就要浪费84个时钟周期。
为了解决这个问题,更高效地利用流水线乘法器,节省时钟周期的开销,我们在第一次等待时提前将i=1时的循环内与前一级运算结果无关的数据,包括a0、b1、a1、b0等送入乘法器,产生相应的部分积在状态机的控制下进入预计算单元累加并寄存在寄存器I中;在第二次等待时将i=2时的循环内的数据a0、b2、a1、b1、a2、b0送入乘法器,产生相应的部分积送入预计算单元累加并寄存在寄存器II中;同理在第三次等待时将i=3时的循环内的数据a0、b3、m0、n3、a1、b2、a2、b1、a3、b0送入乘法器,产生相应的部分积送入预计算单元累加并寄存在寄存器III中。当算法真正进入i=1、i=2或i=3循环体时,寄存器I、寄存器II、寄存器III中的部分积可以直接送入输出单元进行累加而不必临时计算。当然,在i=1、i=2或i=3循环中,也会遇到流水线停顿的情况,此时就可以预先计算步骤2中各个循环中的数据,以此类推。
这种机制的核心在于不让流水线乘法器停顿下来,而是不断地使后续循环中的不相关数据进入乘法器,提前计算以后将用到的部分积送到预计算单元累加然后寄存起来,在需要的时候就可以将寄存的数据直接送到输出单元的加法器中进行累加,从而节约了大量的时钟周期。

Claims (1)

1.基于改进的蒙哥马利算法的模乘器,其特征在于,该模乘器是一种在外部状态机的控制下对输入数据按改进的蒙哥马利算法操作的,位长233位的模乘器,该算法把位长很长的大数分解为相对较小的数来分别进行计算,即
把n位2进制的被乘数A视为s位的r进制数,表示为:A=as-1as-2…a1a0,ai为r进制数,
把n位2进制的乘数B视为s位的r进制数,表示为:B=bs-1bs-2…b1b0,bi为r进制数,
把n位2进制的模N视为s位的r进制数,表示为:N=ns-1ns-2…n1n0,ni为r进制数,
其中s=4,r=264,i=0,1,2,3,
所述基于改进的蒙哥马利算法的模乘器含有:输入单元、中间单元、预计算单元、输出单元和一个多路选择器,其中:
输入单元,含有:
第一采用7级流水的64位乘法器,输入数据为a和b;
第二采用7级流水的64位乘法器,输入数据为n和中间结果m;
第一128位寄存器,该寄存器的输入端与所述的第一采用7级流水的64位乘法器的输出端相连;
第二128位寄存器,该寄存器的输入端与所述的第二采用7级流水的64位乘法器的输出端相连;
中间单元,含有:
一个128位加法器,该加法器的两个输入端分别与所述第一128位寄存器和第二128位寄存器的输出端相连;
一个129位寄存器,该寄存器的输入端与所述128位加法器的输出端相连;
预计算单元,含有:
133位加法器I、133位加法器II、133位加法器III,各133位加法器的一个输入端分别和所述129位寄存器的输出端相连;
133位寄存器I、133位寄存器II、133位寄存器III,各133位寄存器的输入端分别依次与所对应133位加法器的输出端相连,所述各133位寄存器的输出端分别依次与所述各133位加法器的另一个输入端相连,
多路选择器,该多路选择器的各输入端分别同时与所述各133位寄存器的输出端相连;输出单元,含有:
一个133位加法器IV,该133位加法器IV的两个输入端分别与所述多路选择器、129位寄存器的输出端相连;
一个133位寄存器IV,该133位寄存器IV的输入端与所述133位加法器IV的输出端相连,该133位寄存器IV的输出端在输出数据的同时又与所述第二采用7级流水的64位乘法器的输入中间结果m用的输入端相连;
在外部状态机的控制下,在i=0的循环内,所述第一采用7级流水的64位乘法器被依次按以下步骤输入数据:
在第一次等待计算结果S=a0b0的时钟周期内,被提前输入i=1时循环内用的与前一级运算结果无关的包括a0、b1、a1、b0在内的数据,产生相应的部分积a0b1、a1b0,在外部状态机的控制下送入所述预计算单元累加并寄存在寄存器I中;
在第二次等待计算结果m1=S n’0时钟周期内,被提前输入i=2时的循环内的数据a0、b2、a1、b1、a2、b0,产生相应的部分积a0b2、a1b1、a2b0,在外部状态机的控制下送入预计算单元累加并寄存在寄存器II中,n’0为只与N有关的常数,且满足 n 0 n 0 ′ mod r = 1 ;
在第三次等待计算结果m1n0时钟周期内,被提前输入i=3时的循环内的数据a0b3、a1、b2、a2、b1、a3、b0,产生相应的部分积a0b3、a1b2、a2b1、a3b0,在外部状态机的控制下送入预计算单元累加并寄存在寄存器III中;
在所述外部状态机的控制下,在i=1、i=2、i=3的循环内,同样按i=0循环内所述的步骤依次进行;与i=0的循环内进行的运算不同的一点是,i=1时只需进行第二次等待与第三次等待所对应的运算,i=2时只需进行第三次等待所对应的运算。
所述的129位寄存器和多路选择器,按照i=0,1,2,3各个不同的循环周期,把所寄存的寄存器I、II、III中的相应数据送往所述133位加法器IV累加后送往所述133位寄存器IV寄存,该寄存器IV把中间结果m送往第二采用7级流水的64位加法器,直到所有各循环结束,输出最终运算结果,
以上所述的基于改进的蒙哥马利算法的模乘器是在数字集成电路上实现的。
CNB2005101167031A 2005-10-28 2005-10-28 基于改进的蒙哥马利算法的模乘器 Expired - Fee Related CN100470464C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005101167031A CN100470464C (zh) 2005-10-28 2005-10-28 基于改进的蒙哥马利算法的模乘器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005101167031A CN100470464C (zh) 2005-10-28 2005-10-28 基于改进的蒙哥马利算法的模乘器

Publications (2)

Publication Number Publication Date
CN1786900A CN1786900A (zh) 2006-06-14
CN100470464C true CN100470464C (zh) 2009-03-18

Family

ID=36784382

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101167031A Expired - Fee Related CN100470464C (zh) 2005-10-28 2005-10-28 基于改进的蒙哥马利算法的模乘器

Country Status (1)

Country Link
CN (1) CN100470464C (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100557715C (zh) * 2006-08-11 2009-11-04 福昭科技(深圳)有限公司 利用一组ecc电路并行处理多组数据的方法
CN101764787B (zh) * 2008-12-24 2012-12-05 上海华虹集成电路有限责任公司 基于ucps协议中ecc素数特殊性的快速模乘方法
CN103226461B (zh) * 2013-03-26 2016-07-06 中山大学 一种用于电路的蒙哥马利模乘方法及其电路
CN103176768B (zh) * 2013-03-27 2016-07-13 清华大学 计算经典模乘的模乘方法以及可扩展模乘器
CN104683094B (zh) * 2013-11-29 2018-10-26 上海华虹集成电路有限责任公司 用于rsa密码的蒙哥马利阶梯算法
CN103888246A (zh) * 2014-03-10 2014-06-25 深圳华视微电子有限公司 低功耗小面积的数据处理方法及其数据处理装置
CN105099652B (zh) * 2014-05-04 2018-01-16 博雅网络游戏开发(深圳)有限公司 数据加密、解密方法和装置
CN105099684B (zh) * 2014-05-08 2019-08-16 国民技术股份有限公司 一种模幂运算的处理方法、装置及密码设备
CN104951279B (zh) * 2015-05-27 2018-03-20 四川卫士通信息安全平台技术有限公司 一种基于NEON引擎的向量化Montgomery模乘器的设计方法
CN105068784B (zh) * 2015-07-16 2018-02-16 清华大学 实现基于蒙哥马利模乘的Tate对算法的电路
CN109284085B (zh) * 2018-09-25 2023-03-31 国网湖南省电力有限公司 一种基于fpga的高速模乘和模幂运算方法及装置
CN112286490B (zh) * 2020-11-11 2024-04-02 南京大学 一种循环迭代乘加运算的硬件架构及方法
CN112286496B (zh) * 2020-12-25 2021-03-30 九州华兴集成电路设计(北京)有限公司 蒙哥马利算法的模乘器和电子设备
CN112685003A (zh) * 2021-01-05 2021-04-20 南京大学 一种用于获取同源密码的模乘结果的运算装置
CN114840174B (zh) * 2022-05-18 2023-03-03 广州万协通信息技术有限公司 一种使用多乘法器快速实现蒙哥马利模乘的系统及方法
CN115344237B (zh) * 2022-10-19 2023-03-28 无锡沐创集成电路设计有限公司 结合Karatsuba和蒙哥马利模乘的数据处理方法

Also Published As

Publication number Publication date
CN1786900A (zh) 2006-06-14

Similar Documents

Publication Publication Date Title
CN100470464C (zh) 基于改进的蒙哥马利算法的模乘器
EP0801345B1 (en) Circuit for modulo multiplication and exponentiation arithmetic
CN102231102B (zh) 基于余数系统的rsa密码处理方法及协处理器
JP4201980B2 (ja) マルチプレシジョン整数演算用の装置
CN100435090C (zh) 可扩展高基蒙哥马利模乘算法及其电路结构
CN100536390C (zh) 一种椭圆曲线密码协处理器
JPH08263316A (ja) モンゴメリ法によるモジュラ乗算の実施方法
CN104679474A (zh) 有限域gf(2^227)上的乘法器及模乘算法
CN100583757C (zh) 一种ecc\rsa加解密协处理器
CN101021777B (zh) 基于除数(2n-1)的有效求模操作运算
CN101630244B (zh) 一种流水线型椭圆曲线双标量乘法系统及方法
Chen et al. A high-performance unified-field reconfigurable cryptographic processor
CN109144472B (zh) 一种二元扩域椭圆曲线的标量乘法及其实现电路
Zeghid et al. Speed/area-efficient ECC processor implementation over GF (2 m) on FPGA via novel algorithm-architecture co-design
CN100527073C (zh) 高效模乘方法及装置
CN205721742U (zh) 适用于模除算法的新架构及非交织一维脉动架构
WO2000065433A9 (en) Method for multiplication in galois fields using programmable circuits
CN109284085B (zh) 一种基于fpga的高速模乘和模幂运算方法及装置
Hani et al. FPGA implementation of RSA public-key cryptographic coprocessor
Mahapatra et al. RSA cryptosystem with modified Montgomery modular multiplier
Zimmermann et al. High-performance integer factoring with reconfigurable devices
US5948051A (en) Device improving the processing speed of a modular arithmetic coprocessor
Pinckney et al. Public key cryptography
Leung et al. A low power asynchronous GF (2ˆ173) ALU for elliptic curve crypto-processor
Nedjah et al. Four hardware implementations for the m-ary modular exponentiation

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: 20090318

Termination date: 20101028