一種橢圓曲線密碼的點加/點倍的實現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及橢圓曲線密碼技術(shù)領(lǐng)域,尤其是涉及一種橢圓曲線密碼的點加/點倍 運算的實現(xiàn)方法。
【背景技術(shù)】
[0002] 橢圓曲線密碼(Ellipt ic Curve Cryptography, ECC)體制因其單比特安全強度 遠超過RSA系統(tǒng),被公認為是公鑰密碼未來的發(fā)展方向。ECC的層次結(jié)構(gòu)自上而下可以分4 層,分別為:(1)應(yīng)用層的頂層協(xié)議,具體包括密鑰交換、數(shù)據(jù)加/解密、數(shù)字簽名、簽名認證 等應(yīng)用協(xié)議。(2)群運算層的點乘算法,主要有Double-and-Add、Montgomery、窗口 NAF等 多種點乘調(diào)度算法。(3)曲線層的點加調(diào)度算法和點倍調(diào)度算法,主要涉及到仿射坐標(biāo)系和 不同投影坐標(biāo)系下點加/點倍算法的不同表現(xiàn)形式。(4)有限域?qū)拥哪_\算,主要有模加、 減算法和模乘算法。
[0003] 橢圓密碼曲線算法的底層運算單元是模乘、模加和模減。有了這三個基本單元,就 可以實現(xiàn)橢圓密碼曲線算法,但是僅靠這三個基本單元實現(xiàn)的橢圓密碼曲線算法的速度比 較慢。為了進一步的提高橢圓曲線算法的運算速度,需要把軟件實現(xiàn)的點加/點倍算法改 成硬件實現(xiàn)。然而現(xiàn)有技術(shù)中協(xié)處理器的硬件實現(xiàn)點加/點倍,都是通過設(shè)計狀態(tài)機來實 現(xiàn)的,為了要實現(xiàn)雙域的點加/點倍,一共需要設(shè)計四個狀態(tài)機,如果用邏輯來實現(xiàn)四個狀 態(tài)機,則會導(dǎo)致狀態(tài)機的控制邏輯復(fù)雜,而且實現(xiàn)面積龐大。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的在于設(shè)計一種橢圓曲線密碼的點加/點倍運算的實現(xiàn)方法,解決上 述問題。
[0005] 為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:
[0006] -種橢圓曲線密碼的點加/點倍運算的實現(xiàn)方法,采用FIFO存儲器作為指令存儲 器;包括如下步驟:
[0007] 步驟101,判斷所述FIFO存儲器中的存儲數(shù)據(jù)是否已滿;
[0008] 步驟101. 1,若所述FIFO存儲器中的存儲數(shù)據(jù)已滿,則重新判斷;
[0009] 步驟101. 2,若所述FIFO存儲器中的存儲數(shù)據(jù)未滿,執(zhí)行步驟102 ;
[0010] 步驟102,判斷所述FIFO存儲器中是否包含F(xiàn)IFO指令;
[0011] 步驟102. 1,若所述FIFO存儲器中已包含所述FIFO指令,則執(zhí)行步驟103 ;
[0012] 步驟102. 2,若所述FIFO存儲器中未包含所述FIFO指令,則在所述FIFO存儲器中 逐條的寫入所述FIFO指令,執(zhí)行步驟103 ;
[0013] 步驟103,所述FIFO存儲器執(zhí)行所述FIFO指令,實現(xiàn)橢圓曲線密碼的點加/點倍 運算。
[0014] 優(yōu)選的,所述FIFO存儲器為16個。
[0015] 優(yōu)選的,所述FIFO存儲器為帶有32位長度FIFO指令的存儲器。
[0016] 優(yōu)選的,所述FIFO指令包括模乘指令、模減指令和模加指令。
[0017] 優(yōu)選的,所述步驟103中,當(dāng)所述FIFO存儲器執(zhí)行完畢所述FIFO指令時,將所述 FIFO存儲器中的一個寄存器的標(biāo)志位拉高,作為結(jié)束標(biāo)識,當(dāng)所述FIFO存儲器未執(zhí)行完畢 所述FIFO指令時,繼續(xù)執(zhí)行所述FIFO指令。
[0018] FIFO即先入先出隊列。First Input First Output的縮寫,先入先出隊列,這是 一種傳統(tǒng)的按序執(zhí)行方法,先進入的指令先完成并引退,跟著才執(zhí)行第二條指令。
[0019] 本發(fā)明的有益效果可以總結(jié)如下:
[0020] 通過本發(fā)明實現(xiàn)了點加/點倍的高速運算,本發(fā)明將點加/點倍中的模乘、模加和 模減三個基本操作設(shè)計成基本指令;專有指令和FIFO相結(jié)合的方式來共同實現(xiàn)點加/點倍 的操作;然后由CPU按照點加/點倍的指令順序,把指令存到FIFO存儲器中;FIFO存儲器, 按照先入先出的原則順序執(zhí)行指令;實現(xiàn)了本發(fā)明在硬件上,只需有模乘、模加和模減這三 個基本單元;軟件上,由于協(xié)處理直接處理基本指令,減少了軟件的等待時間,CPU可以并 行處理一些別的事務(wù)。本發(fā)明在較少硬件資源條件下能滿足橢圓曲線密碼雙有限域點加/ 點倍高速運算。通過本發(fā)明最大程度的優(yōu)化了硬件資源,大大的提高了運算速度。
【附圖說明】
[0021] 圖1為本發(fā)明FIFO存儲器的結(jié)構(gòu)示意圖。
[0022] 圖2為本發(fā)明的橢圓曲線密碼的點加/點倍運算的實現(xiàn)方法的流程圖。
[0023] 圖3為本發(fā)明的橢圓曲線密碼的點加/點倍運算的實現(xiàn)后的仿真波形圖。
【具體實施方式】
[0024] 為了使本發(fā)明所解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合 附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用 以解釋本發(fā)明,并不用于限定本發(fā)明。
[0025] 本發(fā)明的目的在于提出一種采用專用指令和FIFO存儲器相結(jié)合的方式來實現(xiàn)雙 域的點加/點倍操作。采用這種方式實現(xiàn)的點加/點倍,硬件能夠滿負荷地運轉(zhuǎn),所以性能 和狀態(tài)機實現(xiàn)的性能幾乎是一樣的,但是這種方式比狀態(tài)機實現(xiàn)更靈活,而且面積更小。
[0026] 接下來以素域的點倍為例,介紹一下設(shè)計思想:
[0027] 橢圓曲線的方程:Y2 = X2+ax+b。
[0028] P 是橢圓曲線上的點 P = (X1, Y1, Z2) e E,求 P 的點倍:2P = (X3, Y3, Z3) e E。
[0029] 在雅克比坐標(biāo)系下,求2P的公式如下:
[0030] 先求處= 11, B = 4X!A, c = 8A2,錄從_:+_|
[0031] 再求 X2 = u2_2B,Y3 = u (B-X3)-C, Z3 = S2Z1
[0032] 因為硬件只有一個模乘、模加和模減單元,所以具體實現(xiàn)的時候需要分為23步來 實現(xiàn):
[0033] 1)模乘:求 D 中的 ZUmod M
[0034] 2)模乘:求 D 中的 Zllmod M
[0035] 3)模乘:求 D 中的 a*Zr4mod M
[0036] 4)模乘:求 D 中的)Q~2mod M
[0037] 5)模乘:求 D 中的 2*Π ~2πι〇(1 M
[0038] 6)模乘:求 D 中的 3*Π ~2πι〇(1 M
[0039] 7)模加:求 D = 3*Xl~2+a*Zl~4mod M
[0040] 8)模乘:求 A = Yl~2mod M
[0041] 9)模乘:求 B 中的 X1*A mod M
[0042] 10)模加:求 B 中的 2*Π*Α mod M
[0043] 11)模加:求