本發(fā)明涉及信息安全領(lǐng)域與硬件設(shè)計(jì)領(lǐng)域,具有涉及到一直模乘器。
背景技術(shù):
1、模乘因其能較好的掩蓋兩輸入乘數(shù)的信息而被廣泛應(yīng)用于密碼學(xué)領(lǐng)域中,是公鑰密碼學(xué)中最重要的原語之一。模乘的復(fù)雜性來源于取模操作。平凡的取模過程需要計(jì)算乘積與模數(shù)的商,涉及到相當(dāng)復(fù)雜的除法運(yùn)算,高效的模乘方案需要規(guī)避掉除法運(yùn)算。針對(duì)一般模數(shù),巴雷特約簡和蒙哥馬利約簡是兩種有效的通用模約簡方法。
2、巴雷特約簡通過一組數(shù)r,k計(jì)算出r/2k來逼近模數(shù)的倒數(shù)從而利用乘法與截?cái)嗤瓿扇∧_^程;而蒙哥馬利約簡將待模數(shù)與模數(shù)的若干倍相加,使得到的和能被2的某個(gè)冪次整除,從而規(guī)避掉了復(fù)雜的除法運(yùn)算,將其轉(zhuǎn)換成了開銷更低的移位和乘法運(yùn)算。從計(jì)算復(fù)雜度上分析,蒙哥馬利約簡具有更低的計(jì)算復(fù)雜度,但需要將輸入轉(zhuǎn)換成蒙哥馬利形式,更適合模冪這種連續(xù)大量調(diào)用模乘的運(yùn)算;而巴雷特模乘的計(jì)算復(fù)雜度略高,但不需要轉(zhuǎn)換形式,應(yīng)用場景更為廣泛。
3、目前,蒙哥馬利模乘被廣泛應(yīng)用于rsa密碼系統(tǒng)、橢圓曲線密碼系統(tǒng)、基于有限域上離散對(duì)數(shù)的密碼系統(tǒng)以及基于雙線性對(duì)的密碼系統(tǒng)中,作為最關(guān)鍵也是最復(fù)雜的基本原語操作。為了提升密碼系統(tǒng)的性能,往往會(huì)選擇使用并行程度更高的硬件平臺(tái)來加速復(fù)雜原語的實(shí)現(xiàn),因此蒙哥馬利模乘器的運(yùn)算效率直接決定了頂層密碼系統(tǒng)的運(yùn)行效率。
4、隨著安全需求的不斷增加,模乘運(yùn)算的模數(shù)長度也迅速增長。在如rsa或paillier等密碼系統(tǒng)中,滿足目前的安全需求的模數(shù)長度為4096-8192比特。在大位寬模數(shù)下,加法和乘法運(yùn)算的開銷迅速上升,對(duì)于能高效計(jì)算的蒙哥馬利模乘器的需求進(jìn)一步上升。而目前已有的蒙哥馬利模乘器普遍存在由于計(jì)算商值導(dǎo)致的關(guān)鍵路徑延長現(xiàn)象,導(dǎo)致模乘器運(yùn)行速度較低;同時(shí)現(xiàn)有的蒙哥馬利模乘器實(shí)現(xiàn)架構(gòu)強(qiáng)依賴于加法和乘法的實(shí)現(xiàn),對(duì)于模數(shù)長度較為敏感,難以在模數(shù)長度增長的情況下保持原有的運(yùn)算性能。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的在于一種蒙哥馬利模乘器,消除目前已有的蒙哥馬利模乘器普遍存在由于計(jì)算商值導(dǎo)致的關(guān)鍵路徑延長現(xiàn)象,突破現(xiàn)有蒙哥馬利模乘器實(shí)現(xiàn)架構(gòu)的速度瓶頸。具體的,本發(fā)明通過引入移位與流水化商值運(yùn)算,消除了其余并行部分對(duì)商值計(jì)算的依賴性,消除了原有架構(gòu)中商值計(jì)算對(duì)關(guān)鍵路徑的負(fù)面作用;通過改變迭代運(yùn)算中的中間值表示形式,降低了每輪迭代的壓縮級(jí)數(shù),進(jìn)一步縮短了每輪迭代的周期長度,大幅提升了模乘器的運(yùn)算速度。
2、本發(fā)明通過以下技術(shù)方案實(shí)現(xiàn)目的:一種低時(shí)延的蒙哥馬利模乘器。該模乘器包括迭代控制單元、并行部分和生成單元、多級(jí)流水的商運(yùn)算單元、輸出移位單元、部分和壓縮單元以及最終約簡單元。
3、其中迭代控制單元包括操作數(shù)循環(huán)移位寄存器和迭代輪數(shù)計(jì)數(shù)器。操作數(shù)循環(huán)移位寄存器在開始計(jì)算時(shí)輸入其中一個(gè)乘數(shù),并在后續(xù)的計(jì)算過程中,每次迭代循環(huán)右移k比特,該寄存器負(fù)責(zé)生成每輪迭代所需的輸入乘數(shù)的特定域段。迭代輪數(shù)計(jì)數(shù)器負(fù)責(zé)迭代輪次計(jì)數(shù)并在達(dá)到目標(biāo)輪次后生成輸出使能信號(hào);部分和生成單元計(jì)算完全長度-字長的部分和生成,可用于計(jì)算相關(guān)于輸入乘數(shù)的乘法以及相關(guān)于模數(shù)的乘法;多級(jí)流水的商運(yùn)算單元根據(jù)迭代中間值寄存器的輸入結(jié)果以多級(jí)流水的形式計(jì)算商值,該過程會(huì)覆蓋若干個(gè)周期;輸出移位單元計(jì)算多元表示的迭代中間值的低位進(jìn)位后,刪去低位部分將該輪的中間值送入部分和壓縮單元;部分和壓縮單元計(jì)算兩組部分和xyi,qm以及一組中間值的累和,通過一系列并置的dadda加法器或csa加法器實(shí)現(xiàn),并輸出三元表示的中間值,送入迭代中間值寄存器中;最終約簡單元分多個(gè)周期計(jì)算一個(gè)累和,對(duì)應(yīng)蒙哥馬利模乘算法的最終約簡部分。
4、迭代控制單元的輸入為一個(gè)完整長度的乘數(shù)y、時(shí)鐘信號(hào)以及工作使能信號(hào),全局參數(shù)包括模數(shù)長度mod_len、基數(shù)k以及計(jì)數(shù)器長度;輸出為長為k的乘數(shù)域段yi以及輸出使能信號(hào),當(dāng)計(jì)數(shù)器值為i時(shí),乘數(shù)域段yi=y(tǒng)[ik+2k-1:ik+k],輸出使能信號(hào)滿足當(dāng)計(jì)數(shù)器值達(dá)到mod_len/k+t-1時(shí)為1并將計(jì)數(shù)器置為0,其余時(shí)刻均為0。
5、部分和生成單元的輸入為針對(duì)一個(gè)完整長度的乘數(shù)tm以及一個(gè)字長長度的乘數(shù)tw,輸出為根據(jù)部分和生成算法所生成的一系列部分和pi,pi滿足∑pi=tmtw即可。
6、多級(jí)流水的商運(yùn)算單元的輸入為三個(gè)迭代中間值寄存器的低k(t+1)位,這里將三個(gè)迭代中間值寄存器分別記為z0,z1,z2,該單元經(jīng)過t個(gè)周期的計(jì)算后輸出商值q,q=((z0[kt+k-1:0]+z1[kt+k-1:0]+z2[kt+k-1:0])×m′[kt-1:0]mod?2kt)>>k(t-1),流水線每個(gè)周期的輸出可以根據(jù)周期時(shí)長需求定制。
7、輸出移位單元的輸入為三個(gè)迭代中間值寄存器的低k位。輸出為計(jì)算z0[k-1:0]+z1[k-1:0]+z2[k-1:0]所生成的兩個(gè)第k位的比特。該比特可以通過查表法或是邏輯函數(shù)法來計(jì)算,若輸入信號(hào)從高到低依次為z2[k-3],z1[k-2],z0[k-1],z2[k-4],z1[k-3],z0[k-2],那么對(duì)應(yīng)的兩個(gè)進(jìn)位比特的64bit真值表值為0xfffffffffffffffe與0xfffefe80fe808000,這里的最高位對(duì)應(yīng)輸入信號(hào)全1的表值,最低位對(duì)應(yīng)輸入信號(hào)全0的表值。
8、部分和壓縮單元的輸入包括三部分,與乘數(shù)相關(guān)的一系列乘法部分和xyi、與模數(shù)相關(guān)的一系列乘法部分和qm以及移位過的迭代中間值z(mì)2[:k-2],z1[:k-1],z0[:k],輸出為經(jīng)過一系列以樹形結(jié)構(gòu)排列的dadda加法器或csa加法器后的三元壓縮結(jié)果p0,p1,p2,三元壓縮結(jié)果的權(quán)重分別為0,1,2。
9、最終約簡單元的輸入為時(shí)鐘信號(hào)、移位過的迭代中間值與模數(shù)m,輸出為模乘結(jié)果z∈[0,m),最終約簡將三個(gè)迭代中間值分別與m和負(fù)m求和,最終選取值為正數(shù)的一項(xiàng)輸出作為模乘結(jié)果。
10、本發(fā)明的突出優(yōu)勢在于:本發(fā)明中的模乘器通過引入移位與流水化商值運(yùn)算,消除了其余并行部分對(duì)商值計(jì)算的依賴性,消除了原有架構(gòu)中商值計(jì)算對(duì)關(guān)鍵路徑的負(fù)面作用;通過改變迭代運(yùn)算中的中間值表示形式,降低了每輪迭代的壓縮級(jí)數(shù),進(jìn)一步縮短了每輪迭代的周期長度。在fpga平臺(tái)下實(shí)現(xiàn)的該模乘器,相較于目前已有的最快實(shí)現(xiàn)速度提升至少35%,并且額外面積開銷較少,時(shí)延面積乘積相較于目前最低的實(shí)現(xiàn)低30%。
1.一種低時(shí)延的蒙哥馬利模乘器,其特征在于,所述模乘器包括迭代控制單元、并行的部分和生成單元、多級(jí)流水的商運(yùn)算單元、輸出移位單元、部分和壓縮單元以及最終約簡單元。其中:
2.根據(jù)權(quán)利要求1所述的低時(shí)延蒙哥馬利模乘器,其特征在于,所述迭代控制單元包括操作數(shù)循環(huán)移位寄存器與迭代輪數(shù)計(jì)數(shù)器;
3.根據(jù)權(quán)利要求1所述的低時(shí)延蒙哥馬利模乘器,其特征在于,兩個(gè)并行的部分和生成單元,同時(shí)計(jì)算xyirt和
4.根據(jù)權(quán)利要求3所述的低時(shí)延蒙哥馬利模乘器,其特征在于:所述部分和生成單元針對(duì)一個(gè)完整長度的乘數(shù)輸入tm以及一個(gè)字長長度的乘數(shù)輸入tw,輸出為根據(jù)部分和生成算法所生成的一系列部分和pi,pi滿足∑pi=tmtw。
5.根據(jù)權(quán)利要求1所述的低時(shí)延蒙哥馬利模乘器,其特征在于,當(dāng)輸入三元組z0[kt+k-1:0],z1[kt+k-1:0],z2[kt+k-1:0]時(shí),多級(jí)流水的商運(yùn)算單元經(jīng)過t-1個(gè)周期完成元組權(quán)重糾正、元組值累加、kt×kt乘法與k(t-1)位右移運(yùn)算后將商值輸出到商值寄存器中參與部分和生成。
6.根據(jù)權(quán)利要求1所述的低時(shí)延蒙哥馬利模乘器,其特征在于,當(dāng)輸入三個(gè)迭代中間值寄存器的低k位時(shí),輸出移位單元計(jì)算z0[k-1:0]+z1[k-1:0]+z2[k-1:0]所生成的兩個(gè)第k位的比特后將其分別附于在兩個(gè)左移部分和域段aibrt中的最低位空白比特處,并將迭代中間值寄存器的低k位舍棄送入部分和壓縮單元。
7.根據(jù)權(quán)利要求6所述的低時(shí)延蒙哥馬利模乘器,其特征在于,所述輸出移位單元計(jì)算可以通過查表法或是邏輯函數(shù)法來計(jì)算進(jìn)位比特。
8.根據(jù)權(quán)利要求1所述的低時(shí)延蒙哥馬利模乘器,其特征在于,當(dāng)輸入兩個(gè)部分和生成單元所生成的部分和以及經(jīng)過csa處理后的迭代中間值后,部分和壓縮單元通過以csa或dadda加法器為葉子節(jié)點(diǎn)的平衡壓縮樹將部分和壓縮為三元組,將三元組送入迭代中間值寄存器中。
9.根據(jù)權(quán)利要求8所述的低時(shí)延蒙哥馬利模乘器,其特征在于,迭代中間值以三元組的形式表示,并存儲(chǔ)于長度為mod_len+k(t+1)的三個(gè)迭代中間值寄存器中。
10.根據(jù)權(quán)利要求1所述的低時(shí)延蒙哥馬利模乘器,其特征在于,所述最終約簡單元在計(jì)數(shù)器達(dá)到mod_len/k+t-1時(shí),將工作使能關(guān)閉,分多個(gè)周期迭代地計(jì)算總長度為mod_len+k比特的加法,分別計(jì)算z0+z1+z2-m與z0+z1+z2,并選取二者中為正的一項(xiàng)輸出,作為最終的模乘結(jié)果。