CN100435091C - 大数模幂系统的硬件高基实现方法 - Google Patents

大数模幂系统的硬件高基实现方法 Download PDF

Info

Publication number
CN100435091C
CN100435091C CNB2006100203868A CN200610020386A CN100435091C CN 100435091 C CN100435091 C CN 100435091C CN B2006100203868 A CNB2006100203868 A CN B2006100203868A CN 200610020386 A CN200610020386 A CN 200610020386A CN 100435091 C CN100435091 C CN 100435091C
Authority
CN
China
Prior art keywords
unit
data
output
csa
computing
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
CNB2006100203868A
Other languages
English (en)
Other versions
CN1811698A (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.)
Chengdu Westone Information Industry Inc
Original Assignee
Chengdu Westone Information Industry Inc
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 Chengdu Westone Information Industry Inc filed Critical Chengdu Westone Information Industry Inc
Priority to CNB2006100203868A priority Critical patent/CN100435091C/zh
Publication of CN1811698A publication Critical patent/CN1811698A/zh
Application granted granted Critical
Publication of CN100435091C publication Critical patent/CN100435091C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开一种大数模幂系统的硬件高基实现方法,涉及公钥密码系统中的模幂运算硬件实现方法,是为了解决现有技术中处理高基(2H)数据的效率不高、实现频率较低、缺乏通用性的问题而提出,本发明将高基数据的模幂运算分为初始化处理单元、并行加法处理单元、模乘运算单元、模幂主体运算单元、数据输出恢复单元五个单元,通过构造动态并行加法并配用初始化存储数据表,采用简单逻辑实现模乘运算和模幂主体运算处理公钥密码系统中的高基数据,与现有技术相比,模幂主体运算仅使用或、异或、与等简单逻辑,实现频率高,相对二进制为基的数据处理方法,可提高硬件处理数据能力H倍,可应用于公钥密码系统的模幂运算硬件处理当中。

Description

大数模幂系统的硬件高基实现方法
技术领域
本发明涉及公开密钥密码系统中的模幂运算硬件实现方法,特别是涉及在大型模幂运算中为提高数据处理效率,通过构造动态并行加法并配用初始化存储数据表,采用简单逻辑实现模乘运算和模幂主体运算的高基(2H进制)实现方法。
背景技术
为了提高公钥密码系统的运行效率,模乘运算以及模幂运算的效率是关键。传统的除余数法和累加法实现大数模的运算效率不理想,在各种模乘算法中,Montgomery乘法是计算模乘最有效的算法之一,基本思想是由系列加法和移位来实现通常的除法操作,Montgomery乘法已成为公钥密码系统中的基本运算单元。
用硬件实现两个或者两个以上的整数加法时,可按位并行方式进行,输出两个数据,一个含各位的进位信息C,另一个含各位的异或信息S。这种进位存储加法器(Carry Save Adders,以下简记为CSA)可实现免链接保存进位加法,为公知技术。记
Figure C20061002038600051
表示按位’异或’操作,’∧’表示按位’与’操作,’∨’表示按位’或’操作,’:=’表示把右边数据或运算值赋值给左边。对三个整数X,Y,Z进行CSA加法操作,输出为C和S,满足2C+S=X+Y+Z,则CSA计算公式为:
Figure C20061002038600052
可见,CSA对任意位整数的加法操作都可以在一个节拍内并行完成,但CSA并没有完成一次完整的加法操作。因此,对于通常的加法操作,CSA并不适合,而对于需进行许多次循环的加法操作,CSA却能高效地完成。
用FPGA或CPLD等可编程逻辑器件或者ASIC芯片来实现模幂,或者用专用硬件部件实现模幂运算并通过IP核(Intellectual Property)接口供上层调用来加速公钥密码运算,是一种非常流行的做法。目前,模幂运算中的大数模乘硬件实现方法基本上分为两种:一是以并行加法CSA和模2除法操作方式实现Montgomery模乘,二是以阵列结构(Systolic Arras)处理高基数据实现Montgomery模乘。设k为模比特长度,d为RSA系统中私钥指数比特长度。用第一种方法完成一次Montgomery模乘只需k+2个时针周期,RSA签名运行时间为(k/2+2)(d/2+3)个时钟周期。取k,d=1024,用这种方法实现RSA系统,最小时钟周期可达9.5ns(器件XC2V1500-8,模乘占用8万门)。第二种方法充分利用一些器件具有的快速进位加法链结构,构造m个联接运算单元以避免太长的进位链,按此作业方式处理高基(2k/m进制)数据,Montgomery模乘需(2m+3)个时针周期,RSA签名的运行时间为(m+20)(d/2+2)个时钟周期。取m=128,以24为基,用这种方法实现RSA系统,最小时钟周期达20.7ns(器件XC40150XV-8,模乘占用3413CLBs)。
第一种方法以简单逻辑和并行加法设计,具有时针周期小,便于移植等优点,但没有突破以2为基的二进制数据处理模式,限制了数据处理的效率。第二种方法能处理高基数据并采用流水线作业方式,考虑到器件固有的延迟性,使得矩阵列设置不能太大,其实现频率与具体器件的特性密切相关,设计缺乏移植性。概括起来,第一种方法设计简单,可达到较高的实现频率,第二种方法设计较复杂,其实现频率也较低。但前者仅能处理二进制基数据,后者能处理高基数据,它们的实现速度相差并不大。
上述分析表明,利用上面两类方法进行模幂实现硬件设计,都不是最优的设计方法。并行加法和模2除法设计方法,不能处理高基(2H进制)数据的情形,限制了数据处理的效率;高基阵列设计方法的实现频率较低,实现效率与具体器件的特性密切相关,缺乏移植性和通用性。
发明内容
本发明的目的是为了解决现有模幂运算存在的效率不够理想、实现频率较低、缺乏通用性的问题,提供一种采用简单逻辑、有效提高数据处理效率,方便各类硬件芯片高速实现模幂系统的大数模幂系统的硬件高基实现方法。
本发明的目的是通过下述技术方案来实现的:
大数模幂系统的硬件高基实现方法,将数据输入可编程逻辑器件或ASIC芯片进行模幂运算,其特征在于:所述的实现方法分为五个单元,分别是初始化处理单元、并行加法处理单元、模乘运算单元、模幂主体运算单元、数据输出恢复单元,其中,
a.初始化处理单元:模幂运算的模数N按基β=2H的展开式为N=(np-1...n1n0)β,p为N的字长,其中各数字ni(i=0,...,p-1)按低位至高位排列,取
n′=β-n0 -1mod β,R=2p+2mod N,R2=R2mod N
M=n′×N=(mp...m1m0)β,Mj=j×M(j=0,...,β-1).
在ROM中按二进制形式存储下面数据:
n′,N,R,R2,{Mj,j=0,...,β-1}
b.模乘运算单元:把MX={Mj,j=0,...,β-1}存储在ROM中,输入数据有(A1,A2),(B1,B2)以及循环次数l,输出数据(CY,SY),模乘运算单元经历l(≤p+3)次循环过程,循环运算过程被分成三个模块,
(1)预计算模块
(2)动态并行加法模块
(3)循环反馈运算模块
c.模幂主体运算单元:模幂运算的模数为N,计算Y=XE mod N,输入指数E=(eh-1,eh-2,...,e1,e0)2,最高位eh-1=1(0≤h<p×H),输入明文X=(xp-1,xp-2,...,x1,x0)β<N,设模幂主体运算输出值为W,其运行过程分成三个阶段,
(1)初始阶段,模幂主体运算含两个并列的模乘运算单元,单元-1和单元-2,分别对应两组输出变量CZ和SZ,以及CP和SP;
(2)循环阶段,完成初始阶段后进入h次循环运算过程,每次循环时,并行同步运行单元-1和单元-2,取l=p+3,设单元-1输出数据为CZ和SZ,单元-2的输出数据为CP和SP,则单元-1下次运算的输入数据为CZ、SZ、CZ、SZ,单元-2下次运算的输入数据为CZ、SZ、CP、SP;
(3)末尾阶段,完成循环阶段后取CZ=0、SZ=1,取l=p+2,运行单元-2,输出CP和SP;
d.数据输出恢复单元:计算W=CP+SP,然后利用W=(wp-1,wp-2,...,w1,w0)β以及q=n′×w0mod β,计算Y=(W+q×N)/β,得到Y=XE mod N。
所述的并行加法处理单元按如下方法处理:
对并行加法的进位输出数据进行2倍处理,满足C+S=X+Y+Z+W,输入为(X,Y,Z,W),输出为(C,S)的并行加法公式为
(C,S)=CSA4TO2(X,Y,Z,W)=CSA(CSA(X,Y,Z),W)
给定数据向量(X,Y),设(Xj,Yj)=j×(X+Y),j(j<24)为奇数时,有
(X3,Y3)=CSA4TO2(X,Y,2X,2Y),
(X5,Y5)=CSA4TO2(X,Y,4X,4Y),
(X7,Y7)=CSA4TO2(X3,Y3,4X,4Y),
(X9,Y9)=CSA4TO2(X5,Y5,4X,4Y),
(X11,Y11)=CSA4TO2(X3,Y3,8X,8Y),
(X13,Y13)=CSA4TO2(X5,Y5,8X,8Y),
(X15,Y15)=CSA4TO2(X5,Y5,8X,8Y),
可见,任给j(0≤j<24)和数据向量(X,Y),至多经2层CSA4TO2计算以及简单移位处理就得到(Xj,Yj)。于是,任意给出 x = ( x H / 4 - 1 . . . x 1 x 0 ) 2 4 = 2 4 ( H / 4 - 1 ) x H / 4 - 1 + 2 4 ( H / 4 - 2 ) x H / 4 - 2 + . . . + x 0 ( H > 4,0 &le; x i < 2 4 ) 以及X和Y,再经(log2H-2)层(共20+21+...+H/8个)CSA4TO2运算以及简单移位处理,可得到(Xx,Yx)=x×(X+Y)。其中CSA表示对其后面括号内的参数进行保存进位加法处理,CSA4T02表示4个输入、2个输出的保存进位加法处理;CSA(X,Y,Z)表示对X、Y、Z进行保存进位加法处理;CSA(CSA(X,Y,Z),W)表示先对X、Y、Z进行保存进位加法处理,然后再将其结果与W进行保存进位加法处理。
所述的模乘运算单元给定中间寄存器变量RC=(rcp+1...rc1 rc0)β,RS=(rsp+1...rs1 rs0)β,以及信号变量C、S,循环运算过程三个模块具体为,
a.预计算模块,对RC和RS清零,同时计算a0
b.动态并行加法模块,在第i次循环时(i=0,1,...,l-1),由A1+A2按通常加法得到 a i = a i 1 2 H / 2 + a i 0 ( 0 &le; a i 0 , a i 1 < 2 H / 2 ) , 其中A1+A2=(ap+2...a1a0)β。若设置的H≤4,则根据上面(Xx,Yx)处理直接计算出
Figure C20061002038600085
若H>4,根据ai0和ai1,利用并行加法处理模块,经
Figure C20061002038600086
Figure C20061002038600088
及下面计算得到
( B 1 a i , B 2 a i ) = CSA 4 TO 2 ( B 1 a i 0 , B 2 a i 0 , 2 H / 2 B 1 a i 1 , 2 H / 2 B 2 a i 1 )
c.循环反馈运算模块,进行第i+1次循环时(i=0,1,...,l-1),计算t=rc0+rs0,利用第i次循环时的计算值
Figure C200610020386000811
以及ROM中的Mt值(利用t寻址,或t0,t1寻址,t=t12H/2+t0)作如下运算更新RC和RS,
(C,S)=CSA(RC,RS,Mt)(或CSA4TO2(RC,RS, M t 1 < < H / 2 , ))
(RC,RS)=CSA4TO2(C>>H,S>>H,)
rc0=rc0+(cH-1∧sH-1)
其中,cH-1,sH-1表示C和S的第H-1比特,>>H表示数据向右移H位,<<H/2表示数据向左移H/2位,其中的CSA的含义与并行加法处理单元的含义相同。
所述的模幂主体运算单元三个阶段中,
a.初始阶段中,取l=p+3,用R2、0、X、0作为输入,运行单元-1,其输出CZ和SZ反馈至单元-1和单元-2的输入单元,用R和0对CP和SP分别赋初值;
b.循环阶段中,完成初始阶段后进入h次循环运算过程,每次循环时,并行同步运行单元-1和单元-2,取l=p+3,在第i(i=0,...,h-1)次循环中,当ei=0时,CP和SP中的数据不变(不被单元-2的输出数据更新)
所述的数据输出恢复单元中,Y>N,输出Y;否则若Y≤N,输出Y=Y-N。
本发明的有益效果是,采用简单逻辑实现高基(2H进制)大数模乘运算和模幂主体运算,数据运算以高基(2H进制)形式进行,模幂主体运算仅使用或、异或、与等简单逻辑,实现频率高,实现方法与具体器件的特性无关,可移植性强。在整个模幂运算过程中,由于数据输出恢复单元的运算量极小,可以用软件形式来完成。
利用本发明实现的模幂系统,能够获得更高的数据处理能力和更快的系统响应速度,具体而言,本发明的优点主要有:
(1)以2H(H>1)进制为基进行Montgomery乘法,相对于以二进制为基进行Montgomery乘法,使得硬件数据处理能力具有成倍(近H倍)的提高。
(2)本发明中,设计的模乘运算单元仅用到或、异或、与等简单逻辑,避免了乘法和减法等复杂计算,便于各种硬件实现,并有利于改善时钟频率。
(3)本发明中,设计了有效的数据输出恢复单元,使得模幂主体运算单元成为计算主体,由此主体外运算可结合软件实现,进一步降低硬件规模和实施难度。
(4)本发明中,设计方案与具体器件特性无关,体现出良好的移植性,适合在ASIC、CPLD、FPGA等各种硬件平台上实现。
(5)本发明模乘运算单元部分,一个普通FPGA芯片实现512比特位长模乘(共花费70个时钟周期)很容易获得了120MHZ以上的时钟频率。与公开文献上其它方法给出的FPGA实现比较,其实现速率具有显著优势。
本发明适用于对速度具有严格要求的RSA、DSA等公钥密码系统(如签名速度要求每秒上千次以上),以及其它应用系统中的大数模幂(或模乘)运算部件的硬件开发。
附图说明
图1为本发明模乘运算单元框图;
图2为本发明并行加法处理模块示例框图;
图3为本发明模幂主体运算单元框图;
图4为本发明数据输出恢复单元框图;
图5为本发明模幂运算整体结构框图;
图6为本发明模乘运算流水线操作示例图。
图1中标记:100~103为模乘运算的4个输入数据;121~122为模乘运算的2个输出数据;104为初始化处理后的ROM数据;105和106为并行加法处理模块,得到标识结果;108表示通常2H进制加法器,107为其第i次输出结果(两个半字);109为数据左移H/2位;110和120为4个输入数据的并行CSA加法;111为H位的字加法;112表示利用111输出数据寻址ROM,得到115数据;113~115为积存器单元;116为3个输入数据的并行CSA加法;117为单比特与运算;118~119为左移H位运算。
图2中x<24,各标记含义:200~202为3个输入数据;203~204为数据左移n位,205~206为数据左移s位,211为数据左移2k位,212为数据左移2g位,由202确定n,s,k,g等数据;209~210为可能的输出数据,207~208为4个输入数据的并行CSA加法;213为输出数据向量。
图3中标记:301~306为6个输入数据;307为306数据的第i比特值信号;316~317为2个输出数据;308~309为2个并列的模乘运算单元;310~313分别为CZ、SZ、CP、SP积存器单元;314为由307控制的数据选通装置;315为控制信号产生装置,其中l为2个模乘运算单元的内循环计数器,h为模幂主体运算外循环计数器,clk为时钟控制信号。
图4中标记:400~403为4个输入数据;413为输出数据;404为通常2H进制加法器;405为404输出数据的最低H位数据;406为H位数据乘法;407和408分别为404和406的输出;409为通常2H进制加乘和右移运算;410为409的输出;411对Y和N进行大小判断;412为通常2H进制减法操作。
图5中标记:500为模幂的2个输入数据;505为模幂输出数据;501为模幂初始化处理单元,输出数据存储于ROM;502为模幂主体运算单元;503为并行加法处理模块(采取预存储模式时)或其它单元需要的RAM;504为数据输出恢复单元。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的说明。
大数模乘模块是目前使用的各类公开密钥密码系统的核心单元,是模幂运算的循环体。各类公开密钥密码系统的模幂运算因模长度以及幂指数长度的不同,其大数模乘的规模和循环次数也不同。比如,系统的模幂模块(基本确定系统实现时间)共需h次大数模乘循环,每次大数模乘需花费l个时针周期,加上为调用模乘模块花费d个时针周期,则模幂模块共花费共h(l+d)个时针周期,d值一般在0到2之间,因此大数模乘运算消耗基本上确定了模幂运算效率。
下面以取基28(H=8)为例,阐述本发明方案中模乘运算单元所需时钟耗费与运算效率关系。
本发明利用硬件进行模幂高基运算的实现方法,如图5所示,包括初始化处理单元501、并行加法处理单元、模乘运算单元、模幂主体运算单元502、数据输出恢复单元504共五个单元,其中,模幂主体运算单元内含有两个并行模乘运算单元,模乘运算单元内包含并行加法处理单元。模幂运算输入500中将X、E输入,经过这五个单元的处理,最后输出y=XE mod N。
首先进行初始化处理单元,在ROM中按二进制形式存储有数据{Mj,j=0,...,β-1}。若ROM存储空间较小,仅计算并储存Mj=j×M,j=0,...,24-1。因为,任给x=x124+x0(0≤x0,x1<24)以及M,得到 x &times; M = ( 2 4 M x 1 , M x 0 ) . 在模幂主体运算单元的模乘运算中,可用两个输入数据代替Mt
完成初始化处理单元后进入模幂主体运算单元,如图3所示,它由反复调用模乘运算单元来完成。下面依图1描述模乘运算单元。
本发明中模乘运算单元如图1所示,循环运算过程被分成预计算模块、动态并行加法模块、循环反馈运算模块共三个模块。
模乘运算单元中并行加法处理模块,如图2所示,任给j(0≤j<24)和数据向量(X,Y),至多经2层CSA4TO2计算以及简单移位处理就得到(Xj,Yj)。于是,任给 x = ( x 1 x 0 ) 2 4 = 2 4 ( 2 - 1 ) x 1 + 2 0 x 0 ( 0 &le; x i < 2 4 ) 以及X和Y,经CSA4TO2运算以及简单移位处理(即图1中105-106模块),可得到(Xx,Yx)=x×(X+Y),对应图1中110的输出。
模乘运算单元中通常加法A1+A2=(a0,a1,...,ap+2)可在p+2个时钟内完成,在各时钟内依次输出各数字值。预计算模块对RC和RS清零,同时计算a0
Figure C20061002038600114
完成此预计算后进入后续两个模块的循环运算过程。如图1所示,
Figure C20061002038600116
的计算可依次在前后两个时钟内完成。如图6所示,在第一个时钟周期内计算a0值,在第二个时钟周期内并行计算a1值以及值,在第三个时钟周期内并行计算a2值以及
Figure C20061002038600122
Figure C20061002038600123
Figure C20061002038600124
值,在第四个时钟周期内并行计算a3值、
Figure C20061002038600125
以及(RC,RS)值,此后已建立起四级流水线作业。在第i个时钟周期内并行计算ai值、
Figure C20061002038600126
以及(RC,RS)值,其中,ai=ai12H/2+ai0(0≤ai0,ai1<2H/2)。在已取得t值、
Figure C20061002038600127
Figure C20061002038600128
值后可在一个时钟内完成更新RC和RS的计算:
(C,S)=CSA(RC,RS,Mt)(或CSA4TO2(RC,RS, M t 1 < < H / 2 ,
Figure C200610020386001210
)),
(RC,RS)=CSA4TO2(C>>H,S>>H,
Figure C200610020386001211
),
rc0=rc0+(cH-1∧sH-1).
上面rc0值第0比特总为0,于是计算rc0+(cH-1∧sH-1)只需将rc0的第0比特用(cH-1∧sH-1)值代替。
模乘运算单元须进行l=p+3(模幂主体末尾阶段的模乘运算中l=p+2)次循环计算。模乘运算循环过程按时间顺序设计成三个层次:第一层计算ai,第二层计算
Figure C200610020386001212
第三层计算(RC,RS),于是,一次模乘运算需2~3个时钟周期完成预计算模块,以及l个时钟周期完成其它计算。设模数N位长为k=512比特,若取H=8,则按基β=28的展开式N=(np-1...n1 n0)β中,p=64。于是,l=67(或66)。如图6所示,将模乘运算单元建立起4级流水线作业,由此完成一次模乘运算花费共(l+3)=70个时钟周期。若采用通常的二进制基方法,完成一次模乘运算花费共k+2=514个时钟周期(时钟周期9.5ns,占用8万门);若采用通常的阵列结构方法,构造m个联接运算单元(快速进位加法链结构,避免太长的进位链),以24为基,取m=128,完成一次模乘运算花费共(2m+3)=259个时钟周期(时钟周期20.7ns,占用3413CLBs)。
完成模幂主体运算单元后进入数据输出恢复单元,如图4所示,输入CP,SP,N,n′,其中CP和SP分别为图3中316和317数据。数据输出恢复单元完成后得到Y=XE mod N。
在实际硬件开发中,可进行多项时钟设置,即充分利用模乘运算单元可能的最大时钟频率,提高模乘运算单元处理速度。模幂循环体单元中两个并行模乘运算单元也可改变为含模幂指数窗口处理的单个模乘运算单元设置,可减少近一半的硬件开销,但增加了模乘运算的次数。
按本发明提供的模乘方案在FPGA(Stratix-ep1s10f780c6芯片)上实现(H=8),测试结果显示,硬件开销不到10万门,最高频率达126Mhz(时钟周期8ns),其速度约为通常实现速度的8倍。

Claims (3)

1、大数模幂系统的硬件高基实现方法,将数据输入可编程逻辑器件或ASIC芯片进行模幂运算,其特征在于:所述的实现方法分为五个单元,分别是初始化处理单元、并行加法处理单元、模乘运算单元、模幂主体运算单元、数据输出恢复单元,其中,
a.初始化处理单元:模幂运算的模数N按基β=2H的展开式为N=(np-1...n1 n0)β,p为N的字长,各数字n0,n1,...,np-1依次按低位至高位排列,取
n′=β-n0 -1 mod β,R=2p+2 mod N,R2=R2 mod N
M=n′×N=(mp...m1 m0)β,Mj=j×M,j=0,...,β-1
在ROM中按二进制形式存储下面数据:
n′,N,R,R2,{Mj,j=0,...,β-1}
b.并行加法处理单元:对保存进位加法的进位输出进行2倍处理,满足C+S=X+Y+Z+W,输入为(X,Y,Z,W),输出为(C,S)的保存进位加法的公式为
(C,S)=CSA4TO2(X,Y,Z,W)=CSA(CSA(X,Y,Z),W)
任给 x = ( x H / 4 - 1 . . . x 1 x 0 ) 2 4 = 2 4 ( H / 4 - 1 ) x H / 4 - 1 + 2 4 ( H / 4 - 2 ) x H / 4 - 2 + . . . + x 0 , H>4,0≤xi<24,以及X和Y,经(log2H-2)层CSA4TO2运算以及简单移位处理,可得到(Xx,Yx)=x×(X+Y);其中CSA表示对其后面括号内的参数进行保存进位加法处理,CSA4TO2表示4个输入、2个输出的保存进位加法处理;CSA(X,Y,Z)表示对X、Y、Z进行保存进位加法处理;CSA(CSA(X,Y,Z),W)表示先对X、Y、Z进行保存进位加法处理,然后再将其结果与W进行保存进位加法处理。
c.模乘运算单元:把MX={Mj,j=0,...,β-1}存储在ROM中,输入数据有(A1,A2),(B1,B2)以及循环次数l,输出数据(CY,SY),给定中间寄存器变量RC和RS按基β=2H的展开式分别为RC=(rcp+1...rc1 rc0)β,RS=(rsp+1...rs1 rs0)β,以及信号变量C、S,模乘运算单元经历l次循环过程,循环运算被分成三个模块,
(1)预计算模块,对RC和RS清零,同时根据输入数据(A1,A2)和(B1,B2),计算A1+A2的最低位数字a0和(B1a0,B2a0);
(2)动态并行加法模块,在第i次循环时,i=0,1,...,l-1,由A1+A2按通常加法得到ai=ai12H/2+ai0,其中0≤ai1,ai0<2H/2,A1+A2=(ap+2...a1a0)β。利用ai0和ai1以及并行加法处理单元,经(B1ai0,B2ai0)和(B1ai1,B2ai1),及下面计算得到(B1ai,B2ai):
(B1ai,B2ai)=CSA4TO2(B1ai0,B2ai0,2H/2B1ai1,2H/2B2ai1)
(3)循环反馈运算模块,进行第i+1次循环时,计算t=rc0+rs0,利用第i次循环时的计算值B1ai和B2ai,以及ROM中的Mt值,可以利用t或利用t0和t1寻址Mt值,其中t=t12H/2+t0,作如下运算更新RC和RS,
(C,S)=CSA(RC,RS,Mt),或(C,S)=CSA4TO2(RC,RS,Mt1<<H/2,Mt0)
(RC,RS)=CSA4TO2(C>>H,S>>H,B1ai,B2ai).
rc0=rc0+(cH-1∧sH-1),cH-1,sH-1表示C和S的第H-1比特,其中“∧”为与操作,“>>H”表示将数据右移H位,“<<H/2”表示将数据右移H/2位;CSA的含义与并行加法处理单元的相同;
d.模幂主体运算单元:模幂运算的模数为N,计算Y=XE mod N,输入指数E的二进制展开式为E=(eh-1,eh-2,...,e1,e0)2,最高位eh-1=1,0≤h<p×H,输入明文X按基β=2H的展开式为X=(xp-1,xp-2,...,x1,x0)β<N,设模幂主体运算输出值为W,其运行过程分成三个阶段,
(1)初始阶段,模幂主体运算含两个并列的模乘运算单元,单元-1和单元-2,分别对应两组输出变量CZ和SZ,以及CP和SP;
(2)循环阶段,完成初始阶段后进入h次循环运算过程,每次循环时,并行同步运行单元-1和单元-2,取l=p+3,设单元-1输出数据为CZ和SZ,单元-2的输出数据为CP和SP,则单元-1下次运算的输入数据为CZ、SZ、CZ、SZ,单元-2下次运算的输入数据为CZ、SZ、CP、SP;
(3)末尾阶段,完成循环阶段后取CZ=0、SZ=1,取l=p+2,运行单元-2,输出CP和SP;
e.数据输出恢复单元:计算W=CP+SP,然后利用W=(wp-1,wp-2,...,w1,w0)β以及q=n′×w0 mod β,得到Y=(W+q×N)/β=XE mod N。
2、如权利要求1所述的大数模幂系统的硬件高基实现方法,其特征在于:所述的模幂主体运算单元三个阶段中,
a.初始阶段中,取l=p+3,用R2、0、X、0作为输入,运行单元-1,其输出CZ和SZ反馈至单元-1和单元-2的输入单元,用R和0对CP和SP分别赋初值;
b.循环阶段中,完成初始阶段后进入h次循环运算过程,每次循环时,并行同步运行单元-1和单元-2,取l=p+3,在第i次循环中,i=0,...,h-1,当ei=0时,CP和SP中的数据不变,不被单元-2的输出数据更新。
3、如权利要求1或2所述的大数模幂系统的硬件高基实现方法,其特征在于:所述的数据输出恢复单元中,Y>N,输出Y;否则若Y≤N,输出Y=Y-N。
CNB2006100203868A 2006-03-01 2006-03-01 大数模幂系统的硬件高基实现方法 Expired - Fee Related CN100435091C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006100203868A CN100435091C (zh) 2006-03-01 2006-03-01 大数模幂系统的硬件高基实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006100203868A CN100435091C (zh) 2006-03-01 2006-03-01 大数模幂系统的硬件高基实现方法

Publications (2)

Publication Number Publication Date
CN1811698A CN1811698A (zh) 2006-08-02
CN100435091C true CN100435091C (zh) 2008-11-19

Family

ID=36844646

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100203868A Expired - Fee Related CN100435091C (zh) 2006-03-01 2006-03-01 大数模幂系统的硬件高基实现方法

Country Status (1)

Country Link
CN (1) CN100435091C (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101510148B (zh) * 2009-04-02 2014-10-29 北京中星微电子有限公司 一种指数运算方法和装置
CN102207847B (zh) * 2011-05-06 2013-12-04 广州杰赛科技股份有限公司 基于蒙哥马利模乘运算的数据加解密处理方法及装置
CN103645883A (zh) * 2013-12-18 2014-03-19 四川卫士通信息安全平台技术有限公司 基于fpga的高基模乘器
CN107193536B (zh) * 2017-05-18 2020-09-01 浪潮金融信息技术有限公司 一种多维化动态数据的分组处理方法及系统
CN112100673A (zh) * 2020-09-29 2020-12-18 深圳致星科技有限公司 用于隐私计算的联邦学习加速器和rsa交集计算方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1172390A (zh) * 1996-04-05 1998-02-04 冲电气工业株式会社 模幂运算电路和系统及模幂运算方法
US5764554A (en) * 1994-11-08 1998-06-09 Sgs Thomson Microelectronics Method for the implementation of modular reduction according to the Montgomery method
CN1492316A (zh) * 2003-09-09 2004-04-28 大唐微电子技术有限公司 一种蒙格玛丽模乘算法及其模乘、模幂运算电路
CN1547111A (zh) * 2003-12-01 2004-11-17 成都卫士通信息产业股份有限公司 一种用于模幂运算的指数动态滑动窗口的划分控制方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764554A (en) * 1994-11-08 1998-06-09 Sgs Thomson Microelectronics Method for the implementation of modular reduction according to the Montgomery method
CN1172390A (zh) * 1996-04-05 1998-02-04 冲电气工业株式会社 模幂运算电路和系统及模幂运算方法
CN1492316A (zh) * 2003-09-09 2004-04-28 大唐微电子技术有限公司 一种蒙格玛丽模乘算法及其模乘、模幂运算电路
CN1547111A (zh) * 2003-12-01 2004-11-17 成都卫士通信息产业股份有限公司 一种用于模幂运算的指数动态滑动窗口的划分控制方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
快速模幂算法及其硬件实现. 周芬,高志强.微电子学,第30卷第6期. 2000
快速模幂算法及其硬件实现. 周芬,高志强.微电子学,第30卷第6期. 2000 *

Also Published As

Publication number Publication date
CN1811698A (zh) 2006-08-02

Similar Documents

Publication Publication Date Title
CN110351087B (zh) 流水线型的蒙哥马利模乘运算方法
CN100405361C (zh) 用于执行计算操作的方法、系统以及设备
CN100470464C (zh) 基于改进的蒙哥马利算法的模乘器
CN101782845B (zh) 一种椭圆曲线密码的高速运算装置和方法
CN101216754B (zh) 基于模乘运算的数据加解密处理的方法及装置
CN100435091C (zh) 大数模幂系统的硬件高基实现方法
WO2003052583A2 (en) Logic circuit for performing modular multiplication and exponentiation
CN100504758C (zh) 多字乘法-累加电路和蒙哥马利模乘法-累加电路
CN101834723A (zh) 一种rsa算法及其ip核
CN103793199A (zh) 一种支持双域的快速rsa密码协处理器
CN113783702A (zh) 一种椭圆曲线数字签名与验签的硬件实现方法和系统
CN113794572A (zh) 一种高性能椭圆曲线数字签名与验签的硬件实现系统和方法
CN101630244B (zh) 一种流水线型椭圆曲线双标量乘法系统及方法
CN103780381A (zh) 基于高基脉动阵列的蒙哥马利算法的实现装置及方法
CN104007953A (zh) 一种基于四操作数Montgomery模乘算法的模乘器电路结构
CN205721742U (zh) 适用于模除算法的新架构及非交织一维脉动架构
US6424987B1 (en) Method for the implementation of a specific modular multiplication operation relating to the montgomery method
CN116561819A (zh) 一种基于Toom-Cook环上多项式乘法的加解密方法及环上多项式乘法器
JP3659320B2 (ja) 乗算モジュール、乗法逆元演算回路、乗法逆元演算制御方式、該乗法逆元演算を用いる装置、暗号装置、誤り訂正復号器
CN109284085A (zh) 一种基于fpga的高速模乘和模幂运算方法及模型
CN1696894B (zh) 大数模乘计算乘法器
Zimmermann et al. High-performance integer factoring with reconfigurable devices
Wang et al. TCPM: A reconfigurable and efficient Toom-Cook-based polynomial multiplier over rings using a novel compressed postprocessing algorithm
Ch et al. Hardware design of a 256-bit prime field multiplier suitable for computing bilinear pairings
Nedjah et al. High-performance hardware of the sliding-window method for parallel computation of modular exponentiations

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

Termination date: 20160301

CF01 Termination of patent right due to non-payment of annual fee