一種基于fpga的橢圓曲線標(biāo)量乘法加速電路及其算法
【專利摘要】本發(fā)明公開了一種基于FPGA的橢圓曲線標(biāo)量乘法加速電路及其算法,電路包括輸入模塊、仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊、主循環(huán)乘法模塊、投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊、輸出模塊和時(shí)鐘控制模塊;輸入?yún)?shù)經(jīng)輸入模塊將數(shù)據(jù)傳遞給仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊、主循環(huán)乘法模塊和投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊;仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊將數(shù)據(jù)傳遞給主循環(huán)乘法模塊;主循環(huán)乘法模塊將數(shù)據(jù)傳遞給投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊;投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊將數(shù)據(jù)傳遞給輸出模塊;時(shí)鐘控制模塊用于控制仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊、主循環(huán)乘法模塊和投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊的時(shí)鐘信號。本發(fā)明得到一種有限域上的運(yùn)算設(shè)計(jì)更優(yōu)的執(zhí)行電路。
【專利說明】—種基于FPGA的橢圓曲線標(biāo)量乘法加速電路及其算法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于加密算法的硬件加速領(lǐng)域,尤其涉及一種基于FPGA的橢圓曲線標(biāo)量乘法加速電路及其算法。
【背景技術(shù)】
[0002]橢圓曲線密碼體制(ECC)理論由Neal Koblitz和Victor Miller于1985年分別獨(dú)立提出,它是公鑰密碼體制的一種。公鑰密碼體制的思想由Diffie和Hellman于1976年提出,與傳統(tǒng)的私鑰密碼體制采用替代和置換的方式不同,它基于數(shù)學(xué)問題的難解性,要求密鑰成對出現(xiàn),一個(gè)是加密密鑰,另一個(gè)是解密密鑰。公鑰密碼體制有效解決了傳統(tǒng)密碼體制所面臨的密鑰分發(fā)、密鑰管理和無法提供不可否認(rèn)性的難題,公鑰密碼體制的運(yùn)算量較大,在實(shí)際應(yīng)用中常與私鑰密碼體制結(jié)合使用。RSA是一種流行的公鑰密碼算法,提出于1977年,RSA的安全性基于大整數(shù)分解的難題,能夠應(yīng)用于保密通信、密鑰管理和數(shù)字簽名等方面。
[0003]ECC依賴于橢圓曲線離散對數(shù)問題(EOTLP)的難解性,它的一個(gè)主要優(yōu)勢是在相同密鑰長度的情況下,與其他公鑰密碼體制(例如RSA)相比,ECC具有更高的安全性。這使得在應(yīng)用ECC時(shí)能夠獲得更快的處理速度并降低對帶寬和存儲空間的要求。
[0004]ECC中最主要的運(yùn)算是橢圓曲線標(biāo)量乘法運(yùn)算,它是指給定一個(gè)整數(shù)k和橢圓曲線上的一個(gè)點(diǎn)P,求曲線上另一點(diǎn)Q = kP的過程。該過程通常由點(diǎn)加和倍點(diǎn)組成,點(diǎn)加和倍點(diǎn)又基于有限域上的算術(shù)運(yùn)算。
[0005]ECC的實(shí)現(xiàn)方式可分為軟件和硬件,軟件方式可以在通用處理器借助高級編程語言較容易地實(shí)現(xiàn),但其低下的執(zhí)行效率在很多情況下無法滿足應(yīng)用對性能的要求。與軟件方式相比,硬件實(shí)現(xiàn)方式具有較高的執(zhí)行效率,其又可分為基于專用集電路(ASIC)和現(xiàn)場可編程門陣列(FPGA)兩種實(shí)現(xiàn)方式,與ASIC相比,F(xiàn)PGA的靈活性使得它可以方便的更新硬件設(shè)備上的加密算法,因此成為本發(fā)明所采用的平臺。
[0006]FPGA中的門電路可以同時(shí)翻轉(zhuǎn),使得它具有很高的并行性?,F(xiàn)有的很多基于FPGA的ECC電路設(shè)計(jì)沒有結(jié)合加密算法充分利用FPGA的高度并行性導(dǎo)致效率低下,或者硬件資源消耗嚴(yán)重,無法應(yīng)用于硬件資源有限的設(shè)備上。
【發(fā)明內(nèi)容】
[0007]為了解決上述技術(shù)問題,本發(fā)明提出了一種基于FPGA的橢圓曲線標(biāo)量乘法加速電路設(shè)計(jì),用以完成二進(jìn)制域上的橢圓曲線標(biāo)量乘法運(yùn)算。該設(shè)計(jì)結(jié)合硬件電路的特性對算法進(jìn)行改進(jìn),具有運(yùn)算速度快、電路面積小的優(yōu)勢。
[0008]為了取得上述技術(shù)效果,本發(fā)明采用以下技術(shù)方案:
[0009]—種基于FPGA的橢圓曲線標(biāo)量乘法加速電路,包括輸入模塊、仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊、主循環(huán)乘法模塊、投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊、輸出模塊和時(shí)鐘控制模塊;輸入?yún)?shù)經(jīng)輸入模塊將數(shù)據(jù)傳遞給仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊、主循環(huán)乘法模塊和投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊;仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊將數(shù)據(jù)傳遞給主循環(huán)乘法模塊;主循環(huán)乘法模塊將數(shù)據(jù)傳遞給投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊,所述主循環(huán)乘法模塊在運(yùn)行乘法運(yùn)算的同時(shí)并行執(zhí)行其他運(yùn)算操作,從而提高效率;投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊將數(shù)據(jù)傳遞給輸出模塊;時(shí)鐘控制模塊用于控制仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊、主循環(huán)乘法模塊和投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊的時(shí)鐘信號。
[0010]所述基于FPGA的橢圓曲線標(biāo)量乘法加速電路的具體電路包括5個(gè)異或運(yùn)算單元、2個(gè)平方運(yùn)算單元、2個(gè)四次方運(yùn)算單元、乘法運(yùn)算模塊、有限域上的約減運(yùn)算單元和9個(gè)多路數(shù)據(jù)選擇器;第一異或運(yùn)算單元和第二異或運(yùn)算單元均通過第一多路數(shù)據(jù)選擇器將數(shù)據(jù)傳輸給第四多路數(shù)據(jù)選擇器和第六多路數(shù)據(jù)選擇器;第三異或運(yùn)算單元與第四異或運(yùn)算單元均通過第二多路選擇器將數(shù)據(jù)傳輸給第四多路數(shù)據(jù)選擇器和第六多路選擇器;第五異或運(yùn)算單元通過第三多路選擇器將數(shù)據(jù)傳輸給第一平方運(yùn)算單元;第一平方運(yùn)算單元將數(shù)據(jù)傳輸給第五多路選擇器、第四多路數(shù)據(jù)選擇器、第二平方運(yùn)算單元和第九多路數(shù)據(jù)選擇器;第九多路數(shù)據(jù)選擇器將數(shù)據(jù)傳輸給第六多路數(shù)據(jù)選擇器;第四多路數(shù)據(jù)選擇器的輸出數(shù)據(jù)通過第一四次方運(yùn)算單元將數(shù)據(jù)傳輸給第二異或運(yùn)算單元、第四異或運(yùn)算單元和第八多路數(shù)據(jù)選擇器;第二四次方運(yùn)算單元將數(shù)據(jù)輸出給第七多路數(shù)據(jù)選擇器;第七多路數(shù)據(jù)選擇器將數(shù)據(jù)傳遞給第二四次方運(yùn)算單元和第八多路數(shù)據(jù)選擇器;第八多路數(shù)據(jù)選擇器將數(shù)據(jù)傳遞給第五多路數(shù)據(jù)選擇器;第二平方運(yùn)算模塊將數(shù)據(jù)傳輸給第六多路數(shù)據(jù)選擇器;第六多路數(shù)據(jù)選擇器與第五多路數(shù)據(jù)選擇器將數(shù)據(jù)傳輸給乘法運(yùn)算模塊;乘法運(yùn)算模塊的輸出數(shù)據(jù)經(jīng)有限域上的約減運(yùn)算單元將數(shù)據(jù)分別傳遞給5個(gè)異或運(yùn)算單元、第一至第五多路數(shù)據(jù)選擇器、第七多路數(shù)據(jù)選擇器和第九多路數(shù)據(jù)選擇器。
[0011]所述第一異或運(yùn)算單元的輸入端還連接X1 ;所述第二異或運(yùn)算單元的輸入端還連接X2 ;所述第六多路數(shù)據(jù)選擇器的輸入端還連接Xp與b ;其中XpX2分別表示投影系下兩個(gè)點(diǎn)(X1, Z1),(X2, Z2)的坐標(biāo),Xp為點(diǎn)P仿射坐標(biāo)下的xp,b為橢圓方程常數(shù)項(xiàng)。
[0012]一種基于FPGA的橢圓曲線標(biāo)量乘法加速電路的算法,包括如下步驟:
[0013]I)仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo),即進(jìn)行初始化;
[0014]2)算法的主循環(huán):算法的主循環(huán)部分包含m次循環(huán),m為二進(jìn)制表示的k的長度,k為整數(shù),每次循環(huán)處理k中的一位,每一次循環(huán)包含有限域上的6次乘法、2次平方、2次四次方和3次加法運(yùn)算;
[0015]3)將投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)。
[0016]所述步驟I)中的初始化具體操作為投影系上的兩個(gè)點(diǎn)的坐標(biāo)分別設(shè)置為(XnZ1)=(1,0), (X2, Z2) = (xp, I) ;χρ 為點(diǎn) P 仿射坐標(biāo)(xp,yp)下的 χρ。
[0017]所述步驟2)中乘法運(yùn)算與其他運(yùn)算并行運(yùn)行;每次乘法運(yùn)算之后要進(jìn)行約減,兩個(gè)連續(xù)的乘法運(yùn)算,后一個(gè)不能依賴于前一個(gè)輸出結(jié)果。
[0018]所述步驟2)中當(dāng)Iii = O時(shí),下一個(gè)周期從X2Z1開始本=I時(shí),下一個(gè)周期從X1Z2開始;其中,Ici為整數(shù)k 二進(jìn)制表示的第i位的數(shù)值,X1, Z1, X2、Z2為投影系下兩個(gè)點(diǎn)(X1, Z1),(X2, Z2)的坐標(biāo)。
[0019]所述步驟2)中的乘法運(yùn)算為Kartsuba-Ofman算法,將每一個(gè)乘法操作數(shù)分解兩次,一個(gè)m位的乘法操作數(shù)被分解為4個(gè)長度均為「m/4]的部分。
[0020]所述步驟3)中的將投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)采用Itoh-Tsujii求逆運(yùn)算,求逆運(yùn)算由有限域上的乘法和加法組成。
【專利附圖】
【附圖說明】
[0021]圖1為本發(fā)明的系統(tǒng)框架圖。
[0022]圖2為基于Montgomery方法所改進(jìn)的算法。
[0023]圖3為當(dāng)h = O時(shí),有限域上的乘法運(yùn)算與其他運(yùn)算并行執(zhí)行的流程圖。
[0024]圖4為乘法器在整個(gè)主循環(huán)中無空閑周期,并以Ici = O為例的流程圖。
[0025]圖5 為 Karatsuba-Ofman 乘法不意圖。
[0026]圖6為二進(jìn)制多項(xiàng)式平方示意圖。
[0027]其中,101、第一異或運(yùn)算單元;102、第二異或運(yùn)算單元;103、第三異或運(yùn)算單元;104、第四異或運(yùn)算單元;105、第五異或運(yùn)算單元;201、第一平方運(yùn)算單元;202、第二平方運(yùn)算單元;301、第一多路數(shù)據(jù)選擇器;302、第二多路數(shù)據(jù)選擇器;303、第三多路數(shù)據(jù)選擇器;304、第四多路數(shù)據(jù)選擇器;305、第五多路數(shù)據(jù)選擇器;306、第六多路數(shù)據(jù)選擇器;307、第七多路數(shù)據(jù)選擇器;308、第八多路數(shù)據(jù)選擇器;309、第九多路數(shù)據(jù)選擇器;401、第一四次方運(yùn)算單元;402、第二四次方運(yùn)算單元。
【具體實(shí)施方式】
[0028]下面結(jié)合附圖對本發(fā)明作進(jìn)一步說明。
[0029]橢圓曲線密碼的實(shí)現(xiàn)基于有限域上的算術(shù)運(yùn)算。有限域或者稱伽羅瓦域是指由有限個(gè)元素所組成的域。最常使用的有限域是二進(jìn)制域GF (2m)和素?cái)?shù)域GF(p),這兩種有限域所提供的安全等級是相同的,但是二進(jìn)制域上的算術(shù)運(yùn)算在硬件平臺上具有更高的執(zhí)行效率,所以本發(fā)明采用二進(jìn)制域。構(gòu)建二進(jìn)制域GF(2m)的一種方式是采用多項(xiàng)式基表示域中的元素,在這種表示方法下,每一個(gè)元素被表示為EV1Xni^Ma2XiaMatl, Bi e {O, 1}的形式。
[0030]GF(2m)上的橢圓曲線由如下的Weierstrass方程定義:
[0031]y2+xy = x3+ax2+b,
[0032]其中a、b是GF(2n)中的元素,b為常數(shù)項(xiàng),且b古O。橢圓曲線上的點(diǎn)可以用仿射坐標(biāo)或投影坐標(biāo)來表示。用仿射坐標(biāo)表示時(shí),橢圓曲線上的點(diǎn)P由GF(2m)上的2個(gè)元素(x, y)組成,用投影坐標(biāo)表示時(shí),橢圓曲線上的點(diǎn)由GF(2m)上的3個(gè)元素(X,Y,Z)表示。在仿射坐標(biāo)系下,主循環(huán)中的每一次循環(huán)都需要求逆運(yùn)算,這會造成極大的計(jì)算開銷,使用投影坐標(biāo)則可以有效避免主循環(huán)中的求逆運(yùn)算。因此本發(fā)明使用仿射坐標(biāo)作為系統(tǒng)的輸入輸出,使用投影坐標(biāo)進(jìn)行橢圓曲線標(biāo)量乘法的運(yùn)算。
[0033]圖1是本發(fā)明的系統(tǒng)框架圖。一種基于FPGA的橢圓曲線標(biāo)量乘法加速電路,包括輸入模塊、仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊、主循環(huán)乘法模塊、投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊、輸出模塊和時(shí)鐘控制模塊;輸入?yún)?shù)經(jīng)輸入模塊將數(shù)據(jù)傳遞給仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊、主循環(huán)乘法模塊和投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊;仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊將數(shù)據(jù)傳遞給主循環(huán)乘法模塊;主循環(huán)乘法模塊將數(shù)據(jù)傳遞給投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊;投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊將數(shù)據(jù)傳遞給輸出模塊;時(shí)鐘控制模塊用于控制仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊、主循環(huán)乘法模塊和投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊的時(shí)鐘信號。
[0034]本發(fā)明采用基于Montgomery方法所改進(jìn)的算法,共包括三個(gè)階段:仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)(初始化)、主循環(huán)以及投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)。
[0035]Montgomery方法的優(yōu)勢是僅有X坐標(biāo)(仿射坐標(biāo)系下)或者X和Z坐標(biāo)(投影坐標(biāo)系下)參與運(yùn)算,本發(fā)明使用標(biāo)準(zhǔn)投影坐標(biāo),仿射坐標(biāo)系下的X對應(yīng)于投影坐標(biāo)系下的X/Z。經(jīng)過初始化階段之后,投影坐標(biāo)所表示的點(diǎn)(X,Y,Z)中的X和Z參與剩余階段的運(yùn)算。算法的主循環(huán)部分包含m次循環(huán),m即為二進(jìn)制表示的k的長度,每次循環(huán)處理k中的一位。每一次循環(huán)包含有限域上的6次乘法、2次平方、2次四次方和3次加法操作。完成一次乘法運(yùn)算所消耗的時(shí)間多于其他運(yùn)算,這使得其他運(yùn)算可以并行與乘法運(yùn)算進(jìn)行,并且使主循環(huán)部分的關(guān)鍵路徑完全依賴于乘法運(yùn)算。
[0036]首先將整數(shù)k的值轉(zhuǎn)換為二進(jìn)制并對其進(jìn)行賦值;同時(shí)對投影坐標(biāo)系下的兩點(diǎn)Q(XijZ1)1P(X27Z2)進(jìn)行初始化。
[0037]其次進(jìn)行主循環(huán),算法的主循環(huán)部分包含m次循環(huán),m即為二進(jìn)制表示的k的長度,每次循環(huán)處理k中的一位。每一次循環(huán)包含有限域上的6次乘法、2次平方、2次四次方和3次加法操作。而一次循環(huán)需要的具體乘法如下:
'Tx=XyZ2[T1=X1-Z2
T2=X1-Z1T2=X2-Z1
Ti = X1-Z2, Tz=ZtT3 = X1-Z1, T2 = Z;
[0038]Ki = I.Z.,,Iii = 0.丨 Y1=T1-T2, Z1=(T^r2)- 1 ^X2=T1-T2, Z2=(T1^T2)2
X1=Xp-Z^X1, Tx=XlX2 =Xp.Z2+X2, ^=X14
^ =b-Tz+Tx, Z2=T32[X^h-Tz+Tx, Z1=T32
[0039]其中,!\、T2和T3為相應(yīng)參數(shù)的乘積,Tx和Tz為相應(yīng)參數(shù)四次方運(yùn)算結(jié)果。
[0040]最后,投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo),為兩個(gè)二次多項(xiàng)式求商的過程。其程序具體操作為:
[0041]
【權(quán)利要求】
1.一種基于FPGA的橢圓曲線標(biāo)量乘法加速電路,其特征是,包括輸入模塊、仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊、主循環(huán)乘法模塊、投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊、輸出模塊和時(shí)鐘控制模塊;輸入?yún)?shù)經(jīng)輸入模塊將數(shù)據(jù)傳遞給仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊、主循環(huán)乘法模塊和投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊;仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊將數(shù)據(jù)傳遞給主循環(huán)乘法模塊;主循環(huán)乘法模塊將數(shù)據(jù)傳遞給投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊,所述主循環(huán)乘法模塊在運(yùn)行乘法運(yùn)算的同時(shí)并行執(zhí)行其他運(yùn)算操作,從而提高效率;投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊將數(shù)據(jù)傳遞給輸出模塊;時(shí)鐘控制模塊用于控制仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo)模塊、主循環(huán)乘法模塊和投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)模塊的時(shí)鐘信號。
2.如權(quán)利要求1所述的一種基于FPGA的橢圓曲線標(biāo)量乘法加速電路,其特征是,所述基于FPGA的橢圓曲線標(biāo)量乘法加速電路的具體電路包括5個(gè)異或運(yùn)算單元、2個(gè)平方運(yùn)算單元、2個(gè)四次方運(yùn)算單元、乘法運(yùn)算模塊、有限域上的約減運(yùn)算單元和9個(gè)多路數(shù)據(jù)選擇器;第一異或運(yùn)算單元和第二異或運(yùn)算單元均通過第一多路數(shù)據(jù)選擇器將數(shù)據(jù)傳輸給第四多路數(shù)據(jù)選擇器和第六多路數(shù)據(jù)選擇器;第三異或運(yùn)算單元與第四異或運(yùn)算單元均通過第二多路選擇器將數(shù)據(jù)傳輸給第四多路數(shù)據(jù)選擇器和第六多路選擇器;第五異或運(yùn)算單元通過第三多路選擇器將數(shù)據(jù)傳輸給第一平方運(yùn)算單元;第一平方運(yùn)算單元將數(shù)據(jù)傳輸給第五多路選擇器、第四多路數(shù)據(jù)選擇器、第二平方運(yùn)算單元和第九多路數(shù)據(jù)選擇器;第九多路數(shù)據(jù)選擇器將數(shù)據(jù)傳輸給第六多路數(shù)據(jù)選擇器;第四多路數(shù)據(jù)選擇器的輸出數(shù)據(jù)通過第一四次方運(yùn)算單元將數(shù)據(jù)傳輸給第二異或運(yùn)算單元、第四異或運(yùn)算單元和第八多路數(shù)據(jù)選擇器;第二四次方運(yùn)算單元將數(shù)據(jù)輸出給第七多路數(shù)據(jù)選擇器;第七多路數(shù)據(jù)選擇器將數(shù)據(jù)傳遞給第二四次方運(yùn)算單元和第八多路數(shù)據(jù)選擇器;第八多路數(shù)據(jù)選擇器將數(shù)據(jù)傳遞給第五多路數(shù)據(jù)選擇器;第二平方運(yùn)算模塊將數(shù)據(jù)傳輸給第六多路數(shù)據(jù)選擇器;第六多路數(shù)據(jù)選擇器與第五多路數(shù)據(jù)選擇器將數(shù)據(jù)傳輸給乘法運(yùn)算模塊;乘法運(yùn)算模塊的輸出數(shù)據(jù)經(jīng)有限域上的約減運(yùn)算單元將數(shù)據(jù)分別傳遞給5個(gè)異或運(yùn)算單元、第一至第五多路數(shù)據(jù)選擇器、第七多路數(shù)據(jù)選擇器和第九多路數(shù)據(jù)選擇器。
3.如權(quán)利要求2所述的一種基于FPGA的橢圓曲線標(biāo)量乘法加速電路,其特征是,所述第一異或運(yùn)算單元的輸入端還連接X1 ;所述第二異或運(yùn)算單元的輸入端還連接X2 ;所述第六多路數(shù)據(jù)選擇器的輸入端還連接xp與b ;其中Xp X2分別表示投影系下兩個(gè)點(diǎn)(X1, Z1),(X2, Z2)的坐標(biāo),xp為點(diǎn)P仿射坐標(biāo)下的xp,b為橢圓方程常數(shù)項(xiàng)。
4.如權(quán)利要求1所述的一種基于FPGA的橢圓曲線標(biāo)量乘法加速電路的算法,其特征是,包括如下步驟: 1)仿射坐標(biāo)轉(zhuǎn)化為投影坐標(biāo),即進(jìn)行初始化; 2)算法的主循環(huán):算法的主循環(huán)部分包含m次循環(huán),m為二進(jìn)制表示的k的長度,k為整數(shù),每次循環(huán)處理k中的一位,每一次循環(huán)包含有限域上的6次乘法、2次平方、2次四次方和3次加法運(yùn)算; 3)將投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)。
5.如權(quán)利要求4所述的一種基于FPGA的橢圓曲線標(biāo)量乘法加速電路的算法,其特征是,所述步驟I)中的初始化具體操作為投影系上的兩個(gè)點(diǎn)的坐標(biāo)分別設(shè)置為(XpZ1) = (I,O),(X2, Z2) = (xp, I) ;xp 為點(diǎn) P 仿射坐標(biāo)(xp, yp)下的 xp。
6.如權(quán)利要求4所述的一種基于FPGA的橢圓曲線標(biāo)量乘法加速電路的算法,其特征是,所述步驟2)中乘法運(yùn)算與其他運(yùn)算并行運(yùn)行;每次乘法運(yùn)算之后要進(jìn)行約減,兩個(gè)連續(xù)的乘法運(yùn)算,后一個(gè)不能依賴于前一個(gè)輸出結(jié)果。
7.如權(quán)利要求4-6任一所述的一種基于FPGA的橢圓曲線標(biāo)量乘法加速電路的算法,其特征是,所述步驟2)中當(dāng)Iii = O時(shí),下一個(gè)周期從X2Z1開始本=I時(shí),下一個(gè)周期從X1Z2開始;其中,Ici為整數(shù)k 二進(jìn)制表示的第i位的數(shù)值,X1, Z1, X2、Z2為投影系下兩個(gè)點(diǎn)(X1, Z1),(X2, Z2)的坐標(biāo)。
8.如權(quán)利要求7所述的一種基于FPGA的橢圓曲線標(biāo)量乘法加速電路的算法,其特征是,所述步驟2)中的乘法運(yùn)算為Kartsuba-Ofman算法,將每一個(gè)乘法操作數(shù)分解兩次,一個(gè)m位的乘法操作數(shù)被分解為4個(gè)長度均為的部分。
9.如權(quán)利要求8所述的一種基于FPGA的橢圓曲線標(biāo)量乘法加速電路的算法,其特征是,所述步驟3)中的將投影坐標(biāo)轉(zhuǎn)化為仿射坐標(biāo)采用Itoh-Tsujii求逆運(yùn)算,求逆運(yùn)算由有限域上的乘法和加法組成。
【文檔編號】H04L9/06GK104184578SQ201410370767
【公開日】2014年12月3日 申請日期:2014年7月30日 優(yōu)先權(quán)日:2014年7月30日
【發(fā)明者】蔡曉軍, 劉帥, 鞠雷, 賈智平 申請人:山東大學(xué)