專利名稱:橢圓曲線點乘硬件快速實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,更進一步涉及密碼學(xué)領(lǐng)域中的橢圓曲線點乘硬件快速實現(xiàn)方法。該方法可以用于固定點與非固定點的點乘運算,從而提高橢圓曲線數(shù)字簽名 (ECDSA),橢圓曲線加解密(ECIES),橢圓曲線密鑰分配(ECDH)和橢圓曲線密鑰對生成的運算速度。
背景技術(shù):
目前,國內(nèi)外在對于基于橢圓曲線點乘運算上主要有兩種方法,梳法和蒙哥馬利點乘方法。微軟公司在其專利申請文件“橢圓曲線點乘法”(公開號CN 101507176A,申請?zhí)?200680031543. 3,申請日2006. 6. 29)中提出一種新的用梳法表示k的點乘計算方法,通過將奇整數(shù)k轉(zhuǎn)換成二進制,然后再將該二進制配置成梳比特列,并且提出了一種更高效的比已知的梳法保存更少點的梳法變形,梳法變形在抗簡單能量分析攻擊上具體比較好的表現(xiàn)。這種方法存在的明顯不足是,只能適合于固定點的點乘運算,應(yīng)用范圍窄。而且該方法在運算時還需要進行預(yù)計算,從而增加在系統(tǒng)外的開銷,使得其應(yīng)用范圍有一定的限度。清華大學(xué)在其專利申請文件“橢圓曲線密碼系統(tǒng)的倍點系統(tǒng)”(公開號 CN101262345A,申請?zhí)?00810055618. 2,申請日20081. 4)與“橢圓曲線密碼系統(tǒng)的點加系統(tǒng)”(公開號CN 101221491A,申請?zhí)?00810055610. 6,申請日2008. 1. 4)中公開了一種新型的倍點和點加系統(tǒng),將點乘運算分解為點加和倍點運算,分別投影到仿射坐標系和雅格比投影坐標系,然后在不增加面積的情況下,以流水線結(jié)構(gòu)將點加和倍點組合在一起,從而達到在一個基本層面優(yōu)化橢圓曲線的點乘性能。該方法存在的不足是,這種點乘運算的組合方法在進行點乘運算時,其復(fù)雜度將隨k值的增加而增加,而且在點乘運算速度過慢的問題上沒有很大的改進。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的不足,提出了一種適用于硬件實現(xiàn)的快速點乘方法。該方法可以使點乘運算在滿足通用性的前提下能夠以較小的面積和較快的速度來完成運算,從而提高了 E⑶SA,ECIES,橢圓曲線密鑰對的生成和E⑶H的運算速度。本發(fā)明實現(xiàn)的思路是,基于Lopez和Dahab兩位學(xué)者提出的基于蒙哥馬利算法的橢圓曲線點乘算法,利用硬件并行運算的特點,在資源消耗量沒有明顯的增加的情況下,將點乘運算中比較耗時的步驟進行拆分,重新組合形成一個新的比較節(jié)省時間的點乘硬件實現(xiàn)方法。本發(fā)明的具體實現(xiàn)步驟如下(1)數(shù)據(jù)輸入通過數(shù)據(jù)輸入端接收來自外部一個隨機數(shù)和一個二進制域橢圓曲線基點;(2)獲取隨機數(shù);
(3)獲取兩倍基點的χ坐標值通過乘法組合運算獲取兩倍基點的χ坐標值,在標準投影坐標下將基點、兩倍基點的X坐標值、Z坐標值分別存放在寄存器\、\、\、Z2中;(4)調(diào)用寄存器中的值主狀態(tài)機調(diào)用上一次運算結(jié)束后存放在寄存器&、Zp&、 Z2中的值;(5)判斷位操作主狀態(tài)機從隨機數(shù)的最高位開始往低位進行逐位判斷,若隨機數(shù)當(dāng)前判斷位的值為1,則執(zhí)行步驟(6),若為0,則執(zhí)行步驟(7);(6)基點乘法1運算6a)主狀態(tài)機同時做以下四個乘法運算調(diào)用乘法模塊求寄存器^CpZ1中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器&、4中值的乘積,其結(jié)果存放在寄存器\中;調(diào)用乘法模塊求寄存器&、&中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器^CyZ1中值的乘積;其結(jié)果存放在寄存器4中;6b)主狀態(tài)機同時做以下五個運算調(diào)用乘法模塊求基點X坐標值和寄存器τγ中值的乘積,將乘積結(jié)果存放在寄存器 Z3中;調(diào)用乘法模塊求寄存器z3、Z4中值的乘積,將結(jié)果存放在寄存器\中;將寄存器與4中的值相加后求平方,其結(jié)果存放在寄存器4中;將寄存器&中的值求四次方,其結(jié)果存放在寄存器)(2中;將寄存器&中的值求四次方,其結(jié)果存放在寄存器&中;6c)主狀態(tài)機同時做以下三個運算主狀態(tài)機調(diào)用乘法模塊求b與寄存器&中值的乘積,再將乘積結(jié)果與寄存器)(2中值相加,其結(jié)果存放在寄存器中,其中,b是二進制橢圓曲線Weierstrass方程的一個系數(shù);將寄存器&中值求平方,其結(jié)果存放在寄存器&中;將寄存器Z3、Z4中值相加,其結(jié)果存放在寄存器)(2中;6d)發(fā)出一個完成信號給步驟(8);(7)基點乘法2運算7a)主狀態(tài)機同時做以下四個乘法運算調(diào)用乘法模塊求寄存器^CpZ1中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器&、4中值的乘積,其結(jié)果存放在寄存器\中;調(diào)用乘法模塊求寄存器&、&中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器^CyZ1中值的乘積;其結(jié)果存放在寄存器4中;7b)主狀態(tài)機同時做以下五個運算調(diào)用乘法模塊求基點χ坐標值和寄存器&中值的乘積,將乘積結(jié)果存放在寄存器 A中;調(diào)用乘法模塊求寄存器Z3J4中值的乘積,將結(jié)果存放在寄存器&中;將寄存器&與 4中值相加后求平方,其結(jié)果存放在寄存器4 ;將寄存器&中值求四次方,其結(jié)果存放在寄存器&中;將寄存器4中值求四次方,其結(jié)果存放在寄存器&中;7c)主狀態(tài)機同時做以下三個運算主狀態(tài)機調(diào)用乘法模塊求b與寄存器)(2中值的乘積,再將乘積結(jié)果與寄存器&中值相加,其結(jié)果存放在寄存器&中,其中,b是二進制橢圓曲線ffeierstrass方程的一個系數(shù);將寄存器τ,中值求平方,其結(jié)果存放在寄存器\中;將寄存器T^和\中值相加,其結(jié)果存放在寄存器)(2中;
7d)發(fā)出一個完成信號給步驟(8);(8)判斷重復(fù)條件主狀態(tài)機在收到6d)或7d)發(fā)出的任意一個完成信號之后,完成以下步驟8a)控制當(dāng)前判斷位向下移一位;8b)根據(jù)當(dāng)前判斷位是否還在隨機數(shù)內(nèi),檢查隨機數(shù)最低位是否已經(jīng)根據(jù)步驟 (5)完成了判斷,如果完成了判斷,則執(zhí)行步驟(9),否則,重復(fù)執(zhí)行步驟;(9)獲取點乘的χ坐標值主狀態(tài)機通過對存放在寄存器^C1J1中的X坐標值和Z坐標值進行除法運算,得到了點乘的X坐標值;(10)基點乘法3運算IOa)主狀態(tài)機調(diào)用存放在寄存器Xp Zp X2, Z2中的值;IOb)主狀態(tài)機同時做以下三個乘法運算調(diào)用乘法模塊求寄存器\中值和基點χ坐標值的乘積,其結(jié)果存放在寄存器L。 中;調(diào)用乘法模塊求寄存器中值和基點X坐標值的乘積,其結(jié)果存放在寄存器\中;調(diào)用乘法模塊求寄存器4、4中值的乘積,其結(jié)果存放在寄存器&中;IOc)主狀態(tài)機同時做以下四個運算將基點χ坐標值和點乘χ坐標值相加,其結(jié)果存放在寄存器\中;將寄存器W 中值相加,其結(jié)果存放在寄存器4中;將寄存器中值相加,其結(jié)果存放在寄存器&中; 將基點χ坐標值平方后與基點ι坐標值相加,其結(jié)果存放寄存器中;IOd)主狀態(tài)機同時做以下三個乘法運算調(diào)用乘法模塊求寄存器中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器W中值的乘積,其結(jié)果存放在寄存器\中;調(diào)用乘法模塊求寄存器中值和基點X坐標值的乘積,其結(jié)果存放在寄存器&中;IOe)主狀態(tài)機將寄存器與&中值相加,其結(jié)果存放在寄存器中;IOf)主狀態(tài)機調(diào)用求逆模塊,對寄存器\中值進行一次求逆,將求逆結(jié)果存放在寄存器Z5中;IOg)主狀態(tài)機調(diào)用一個乘法模塊求寄存器Z5、Z3中值的乘積,將乘積結(jié)果存放在寄存器Z3中;IOh)主狀態(tài)機調(diào)用一個乘法模塊求寄存器τ,、Z3中值的乘積,將乘積結(jié)果存放在寄存器Z3中;IOi)主狀態(tài)機將寄存器A的值與基點的y坐標值相加,得到點乘y坐標值;(11)輸出將得到的點乘的χ坐標值和y坐標值通過數(shù)據(jù)輸出端口進行輸出操作。本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點第一,本發(fā)明在基點乘法1運算、基點乘法2運算和基點乘法3運算中,采用硬件并行運算的方法,克服了現(xiàn)有技術(shù)中運算速度過慢的問題,在資源消耗量沒有明顯的增加的情況下,提高了運算速度。第二,本發(fā)明的所有步驟均不需要對基點進行預(yù)計算,克服了現(xiàn)有技術(shù)中需要預(yù)計算而額外增加資源消耗的問題和預(yù)計算只能使用于固定點點乘的問題,在復(fù)雜度適中的情況下,適用于固定點點乘與非固定點點乘,提高了通用性。
圖1為本發(fā)明方法流程圖。
具體實施例方式結(jié)合附圖1,對本發(fā)明的步驟做進一步的描述。本發(fā)明的實施例選擇標準投影坐標下基于二進制正規(guī)基的191位橢圓曲線。由于在正規(guī)基下的平方和開方就是移位運算,加法在硬件下實現(xiàn)也是一個逐位異或,因此將加法和平方兩個運算放到主狀態(tài)機中進行。步驟1.數(shù)據(jù)輸入通過數(shù)據(jù)輸入端接收來自外部一個隨機數(shù)和一個二進制域橢圓曲線基點。步驟2.獲取隨機數(shù);隨機數(shù)的獲取步驟是,主狀態(tài)機調(diào)用預(yù)判斷模塊,從輸入的固定位數(shù)的隨機數(shù)最高位開始判斷,遇到0繼續(xù)往低位走,遇到1停止,從停止位對隨機數(shù)進行截取,得到一個新的可供運算的隨機數(shù)。步驟3.獲取兩倍基點的χ坐標值通過乘法組合運算獲取兩倍基點的χ坐標值, 在標準投影坐標下將基點、兩倍基點的X坐標值、Z坐標值分別存放在寄存器Xp Z1, \、Z2 中,乘法組合運算的方法是,主狀態(tài)機通過調(diào)用乘法模塊,將基點的X坐標值四次方后加1, 再將基點的χ坐標值平方,得到在標準投影坐標下兩倍基點的X坐標值和Z坐標值;主狀態(tài)機對X坐標值和Z坐標值進行相除,得到兩倍基點的χ坐標值。步驟4.調(diào)用寄存器中的值主狀態(tài)機調(diào)用上一次運算結(jié)束后存放在寄存器 ^Ζρ x2、Z2中的值。步驟5.判斷位操作主狀態(tài)機從隨機數(shù)的最高位開始往低位進行逐位判斷,若隨機數(shù)當(dāng)前判斷位的值為1,則跳轉(zhuǎn)至步驟(6),若為0,則跳轉(zhuǎn)至步驟(7)。步驟6.基點乘法1運算6a)主狀態(tài)機同時做以下四個乘法運算調(diào)用乘法模塊求寄存器^CpZ1中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器&、4中值的乘積,其結(jié)果存放在寄存器\中;調(diào)用乘法模塊求寄存器&、&中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器^CyZ1中值的乘積;其結(jié)果存放在寄存器4中;6b)主狀態(tài)機同時做以下五個運算調(diào)用乘法模塊求基點χ坐標值和寄存器τγ中值的乘積,將乘積結(jié)果存放在寄存器 A中;調(diào)用乘法模塊求寄存器Z3J4中值的乘積,將結(jié)果存放在寄存器&中;將寄存器&與 4中的值逐位異或后循環(huán)左移一位,其結(jié)果存放在寄存器4中;將寄存器&中的值循環(huán)左移兩位,其結(jié)果存放在寄存器)(2中;將寄存器&中的值循環(huán)左移兩位,其結(jié)果存放在寄存器 X1中;6c)主狀態(tài)機同時做以下三個運算
主狀態(tài)機調(diào)用乘法模塊求b與寄存器&中值的乘積,再將乘積結(jié)果與寄存器)(2中值進行逐位異或操作,其結(jié)果存放在寄存器&中,其中,b是二進制橢圓曲線ffeierstrass 方程的一個系數(shù);將寄存器&中值循環(huán)左移一位,其結(jié)果存放在寄存器&中;將寄存器&、 Z4中值進行逐位異或操作,其結(jié)果存放在寄存器&中;6d)發(fā)出一個完成信號給步驟⑶;從而得到了在標準投影坐標下當(dāng)前判斷位對應(yīng)的兩個不同迭代形式點乘的X坐標值和ζ坐標值,這些坐標值存放在寄存器中中。步驟7.基點乘法2運算7a)主狀態(tài)機同時做以下四個乘法運算調(diào)用乘法模塊求寄存器^CpZ1中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器&、4中值的乘積,其結(jié)果存放在寄存器\中;調(diào)用乘法模塊求寄存器&、&中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器^CyZ1中值的乘積;其結(jié)果存放在寄存器4中;7b)主狀態(tài)機同時做以下五個運算調(diào)用乘法模塊求基點X坐標值和寄存器&中值的乘積,將乘積結(jié)果存放在寄存器 A中;調(diào)用乘法模塊求寄存器Z3J4中值的乘積,將結(jié)果存放在寄存器&中;將寄存器&與 Z6中值逐位異或后循環(huán)左移一位,其結(jié)果存放在寄存器& ;將寄存器&中值循環(huán)左移兩位, 其結(jié)果存放在寄存器&中;將寄存器4中值循環(huán)左移兩位,其結(jié)果存放在寄存器&中;7c)主狀態(tài)機同時做以下三個運算主狀態(tài)機調(diào)用乘法模塊求b與寄存器)(2中值的乘積,再將乘積結(jié)果與寄存器&中值進行逐位異或操作,其結(jié)果存放在寄存器&中,其中,b是二進制橢圓曲線ffeierstrass 方程的一個系數(shù);將寄存器&中值循環(huán)左移一位,其結(jié)果存放在寄存器&中;將寄存器& 和\中值進行逐位異或操作,其結(jié)果存放在寄存器&中;7d)發(fā)出一個完成信號給步驟⑶;從而得到了在標準投影坐標下當(dāng)前判斷位對應(yīng)的另外兩個不同迭代形式點乘的X 坐標值和ζ坐標值,這些坐標值存放在寄存器中\(zhòng)、w\中。步驟8.判斷重復(fù)條件主狀態(tài)機在收到6d)和7d)發(fā)出的任意一個完成信號之后,完成以下步驟8a)控制當(dāng)前判斷位向下移一位;8b)根據(jù)當(dāng)前判斷位是否還在隨機數(shù)內(nèi),檢查隨機數(shù)最低位是否已經(jīng)根據(jù)步驟 (5)完成了判斷,如果完成了判斷,則執(zhí)行步驟(9),否則,重復(fù)執(zhí)行步驟0)。步驟9.獲取點乘的χ坐標值主狀態(tài)機通過對存放在寄存器^C1J1中的X坐標值和Z坐標值進行除法運算,得到了點乘的X坐標值。步驟10.基點乘法3IOa)主狀態(tài)機調(diào)用存放在寄存器Xp Zp X2, Z2中的值;IOb)主狀態(tài)機同時做以下三個乘法運算調(diào)用乘法模塊求寄存器\中值和基點χ坐標值的乘積,其結(jié)果存放在寄存器L。 中;調(diào)用乘法模塊求寄存器rL7j中值和基點X坐標值的乘積,其結(jié)果存放在寄存器τ、中;調(diào)用乘法模塊求寄存器4、4中值的乘積,其結(jié)果存放在寄存器\中;IOc)主狀態(tài)機同時做以下四個運算將基點χ坐標值和點乘χ坐標值進行逐位異或操作,其結(jié)果存放在寄存器τγ中; 將寄存器中值進行逐位異或操作,其結(jié)果存放在寄存器T^中;將寄存器\、\2中值進行逐位異或操作,其結(jié)果存放在寄存器τ,中;將基點X坐標值循環(huán)左移一位后與基點y坐標值逐位異或,其結(jié)果存放在寄存器4中;IOd)主狀態(tài)機同時做以下三個乘法運算調(diào)用乘法模塊求寄存器&、&中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器z5、Z2中值的乘積,其結(jié)果存放在寄存器\中;調(diào)用乘法模塊求寄存器中值和基點X坐標值的乘積,其結(jié)果存放在寄存器&中;IOe)主狀態(tài)機將寄存器τ、與中值進行逐位異或操作,其結(jié)果存放在寄存器& 中;IOf)主狀態(tài)機調(diào)用求逆模塊,對寄存器τ,中值進行一次求逆,將求逆結(jié)果存放在寄存器Z5中;IOg)主狀態(tài)機調(diào)用一個乘法模塊求寄存器Z5、Z3中值的乘積,將乘積結(jié)果存放在寄存器Z3中;IOh)主狀態(tài)機調(diào)用一個乘法模塊求寄存器τ,、Z3中值的乘積,將乘積結(jié)果存放在寄存器Z3中;IOi)主狀態(tài)機將寄存器A中的值與基點的y坐標值進行逐位異或操作,得到點乘的1坐標值。步驟11.輸出將得到的點乘的χ坐標值和y坐標值通過數(shù)據(jù)輸出端口進行輸出操作。
權(quán)利要求
1. 一種橢圓曲線點乘硬件快速實現(xiàn)方法,其具體步驟如下(1)數(shù)據(jù)輸入通過數(shù)據(jù)輸入端接收來自外部一個隨機數(shù)和一個二進制域橢圓曲線基點。(2)獲取隨機數(shù);(3)獲取兩倍基點的χ坐標值通過乘法組合運算獲取兩倍基點的χ坐標值,在標準投影坐標下將基點、兩倍基點的X坐標值、Z坐標值分別存放在寄存器^CpZp&、&中;(4)調(diào)用寄存器中的值主狀態(tài)機調(diào)用上一次運算結(jié)束后存放在寄存器)^3^)^ 中的值;(5)判斷位操作主狀態(tài)機從隨機數(shù)的最高位開始往低位進行逐位判斷,若隨機數(shù)當(dāng)前判斷位的值為1,則執(zhí)行步驟(6),若為0,則執(zhí)行步驟(7);(6)基點乘法1運算6a)主狀態(tài)機同時做以下四個乘法運算調(diào)用乘法模塊求寄存器^CpZ1中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器)(2、&中值的乘積,其結(jié)果存放在寄存器\中;調(diào)用乘法模塊求寄存器&、Z2中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器^CyZ1中值的乘積;其結(jié)果存放在寄存器Z6中;6b)主狀態(tài)機同時做以下五個運算調(diào)用乘法模塊求基點χ坐標值和寄存器\中值的乘積,將乘積結(jié)果存放在寄存器中;調(diào)用乘法模塊求寄存器中值的乘積,將結(jié)果存放在寄存器&中;將寄存器&與& 中的值相加后求平方,其結(jié)果存放在寄存器4中;將寄存器)(2中的值求四次方,其結(jié)果存放在寄存器)(2中;將寄存器4中的值求四次方,其結(jié)果存放在寄存器&中; 6c)主狀態(tài)機同時做以下三個運算主狀態(tài)機調(diào)用乘法模塊求b與寄存器&中值的乘積,再將乘積結(jié)果與寄存器&中值相加,其結(jié)果存放在寄存器&中,其中,b是二進制橢圓曲線ffeierstrass方程的一個系數(shù);將寄存器&中值求平方,其結(jié)果存放在寄存器&中;將寄存器中值相加,其結(jié)果存放在寄存器)(2中;6d)發(fā)出一個完成信號給步驟(8);(7)基點乘法2運算7a)主狀態(tài)機同時做以下四個乘法運算調(diào)用乘法模塊求寄存器^CpZ1中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器)(2、&中值的乘積,其結(jié)果存放在寄存器\中;調(diào)用乘法模塊求寄存器&、Z2中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器^CyZ1中值的乘積;其結(jié)果存放在寄存器Z6中;7b)主狀態(tài)機同時做以下五個運算調(diào)用乘法模塊求基點χ坐標值和寄存器中值的乘積,將乘積結(jié)果存放在寄存器中;調(diào)用乘法模塊求寄存器中值的乘積,將結(jié)果存放在寄存器&中;將寄存器&與& 中值相加后求平方,其結(jié)果存放在寄存器4 ;將寄存器&中值求四次方,其結(jié)果存放在寄存器)(2中;將寄存器&中值求四次方,其結(jié)果存放在寄存器&中; 7c)主狀態(tài)機同時做以下三個運算主狀態(tài)機調(diào)用乘法模塊求b與寄存器)(2中值的乘積,再將乘積結(jié)果與寄存器&中值相加,其結(jié)果存放在寄存器&中,其中,b是二進制橢圓曲線ffeierstrass方程的一個系數(shù);將寄存器&中值求平方,其結(jié)果存放在寄存器&中;將寄存器τ,和τ 中值相加,其結(jié)果存放在寄存器)(2中;7d)發(fā)出一個完成信號給步驟(8);(8)判斷重復(fù)條件主狀態(tài)機在收到6d)或7d)發(fā)出的任意一個完成信號之后,完成以下步驟 8a)控制當(dāng)前判斷位向下移一位;8b)根據(jù)當(dāng)前判斷位是否還在隨機數(shù)內(nèi),檢查隨機數(shù)最低位是否已經(jīng)根據(jù)步驟(5)完成了判斷,如果完成了判斷,則執(zhí)行步驟(9),否則,重復(fù)執(zhí)行步驟;(9)獲取點乘的χ坐標值主狀態(tài)機通過對存放在寄存器^j1中的X坐標值和Z坐標值進行除法運算,得到了點乘的χ坐標值;(10)基點乘法3運算IOa)主狀態(tài)機調(diào)用存放在寄存器 ^ΖρΧ” &中的值; IOb)主狀態(tài)機同時做以下三個乘法運算調(diào)用乘法模塊求寄存器\中值和基點χ坐標值的乘積,其結(jié)果存放在寄存器中;調(diào)用乘法模塊求寄存器中值和基點χ坐標值的乘積,其結(jié)果存放在寄存器\中;調(diào)用乘法模塊求寄存器4、&中值的乘積,其結(jié)果存放在寄存器&中; IOc)主狀態(tài)機同時做以下四個運算將基點χ坐標值和點乘χ坐標值相加,其結(jié)果存放在寄存器\中;將寄存器τ、、\中值相加,其結(jié)果存放在寄存器中;將寄存器z4、X2中值相加,其結(jié)果存放在寄存器\中;將基點χ坐標值平方后與基點ι坐標值相加,其結(jié)果存放寄存器中; IOd)主狀態(tài)機同時做以下三個乘法運算調(diào)用乘法模塊求寄存器4、&中值的乘積,其結(jié)果存放在寄存器&中;調(diào)用乘法模塊求寄存器z5、Z2中值的乘積,其結(jié)果存放在寄存器\中;調(diào)用乘法模塊求寄存器&中值和基點χ坐標值的乘積,其結(jié)果存放在寄存器&中;IOe)主狀態(tài)機將寄存器A與\中值相加,其結(jié)果存放在寄存器A中; IOf)主狀態(tài)機調(diào)用求逆模塊,對寄存器&中值進行一次求逆,將求逆結(jié)果存放在寄存器&中;IOg)主狀態(tài)機調(diào)用一個乘法模塊求寄存器&、Z3中值的乘積,將乘積結(jié)果存放在寄存器4中;IOh)主狀態(tài)機調(diào)用一個乘法模塊求寄存器Z4、Z3中值的乘積,將乘積結(jié)果存放在寄存器4中;IOi)主狀態(tài)機將寄存器τ、的值與基點的y坐標值相加,得到點乘y坐標值;(11)輸出將得到的點乘的χ坐標值和y坐標值通過數(shù)據(jù)輸出端口進行輸出操作。
2.根據(jù)權(quán)利要求1所述的橢圓曲線點乘硬件快速實現(xiàn)方法,其特征在于,步驟(2)中所述隨機數(shù)的獲取步驟是,主狀態(tài)機調(diào)用預(yù)判斷模塊,從輸入的固定位數(shù)的隨機數(shù)最高位開始判斷,遇到0繼續(xù)往低位走,遇到1停止,從停止位對隨機數(shù)進行截取,得到一個新的可供運算的隨機數(shù)。
3.根據(jù)權(quán)利要求1所述的橢圓曲線點乘硬件快速實現(xiàn)方法,其特征在于,步驟(3)中所述乘法組合運算的方法是,主狀態(tài)機通過調(diào)用乘法模塊,將基點的χ坐標值四次方后加1, 再將基點的χ坐標值平方,得到在標準投影坐標下兩倍基點的X坐標值和Z坐標值;主狀態(tài)機對X坐標值和Z坐標值進行相除,得到兩倍基點的χ坐標值。
全文摘要
本發(fā)明公開一種橢圓曲線點乘硬件快速實現(xiàn)方法,本發(fā)明基于蒙哥馬利算法的橢圓曲線點乘算法,采用硬件并行運算的特點,在資源消耗量沒有明顯的增加的情況下,將點乘運算中比較耗時的步驟進行拆分,重新組合,設(shè)計出了基點乘法1、基點乘法2和基點乘法3三個新的并行運算模塊,同時在方法開始時增加了一個對隨機數(shù)的預(yù)判斷,形成了一個新的比較節(jié)省時間的點乘硬件實現(xiàn)方法。在資源消耗量沒有明顯的增加的情況下,提高了運算速度。同時在復(fù)雜度適中的情況下,適用于固定點點乘與非固定點點乘,提高了通用性。
文檔編號G06F7/72GK102306091SQ201110191950
公開日2012年1月4日 申請日期2011年7月8日 優(yōu)先權(quán)日2011年7月8日
發(fā)明者劉彥明, 張志強, 李小平, 董慶寬, 陳峙屹 申請人:西安電子科技大學(xué)