專利名稱:橢圓曲線密碼系統的點加系統的制作方法
技術領域:
本發明涉及數字簽名與認證技術領域。
背景技術:
密碼體制可以分為傳統(或對稱)加密體制和公鑰(或非對稱)加密體制兩類。1976年W.Diffie和M.E.Hellman提出了公鑰密碼的概念,對整個密碼學發展造成了深遠的影響。當前廣泛應用的公鑰密碼系統是RSA,其優點在于原理簡單,使用方便。但隨著大整數因子分解方法的不斷改進以及計算機性能的不斷提升,要保證RSA的安全性所需要的密鑰位數不斷增長,目前一般認為RSA密鑰的位數在1024bit以上才有安全保障。密鑰位數的增加直接導致了加解密速度的大幅下降以及硬件開銷的加大。
橢圓曲線密碼(ECC)是1985年由N.Koblitz和V.Miller提出的,它是利用有限域上的橢圓曲線有限群代替離散對數問題中的有限循環群后得到的一類密碼體制。由于橢圓曲線密碼具有安全性能高,處理速度快,帶寬要求低和存儲空間小等特點,與RSA相比,ECC在密鑰長度和運算速度上具有優越性。
素域上的橢圓曲線E(Fp)由Weierstrass方程定義 Ey2=x3+ax+b(modp)(1) 其中p是素數,a,b為兩個小于p的非負整數(0<a,b<∞),且滿足 4a3+27b2(modp)≠0(2) 方程(2)基于集合Ep(a,b)可定義一個有限Abel群。
在橢圓曲線密碼體制中,核心運算是點乘(kP),我們可以將點乘分解為兩種基本運算點加(ECPADD)以及倍點(ECPDBL),點加和倍點運算可以采用不同的坐標系來實現。常用的坐標系是仿射坐標系和Jacobi投影坐標系。以下分別介紹仿射坐標系和Jacobi投影坐標系。
仿射坐標系平面上過一定點O作兩條相交的軸x和y,它們的交角是ω.以定點O為原點,在每條軸上取長度單位(分別是OE1、OE2),這樣就在平面上建立了一個仿射坐標系,如圖1所示。對于平面上任一點M,過M作兩軸的平行線,與兩軸分別交于M1、M2,它們在兩軸的坐標分別是x、y,于是點M就對應有序數組(x,y)。
Jacobi投影坐標系Jacobi投影坐標系下的點(X,Y,Z)和仿射坐標系下的點(x,y)一一對應,且滿足x=X/Z2、y=Y/Z3。給定仿射坐標系下的坐標(x,y),轉換成Jacobi投影坐標系下的坐標為(X,Y,Z),其中X=x、Y=y、Z=1;給定Jacobi投影坐標系下的坐標(X,Y,Z),轉換成放射坐標系下的坐標為(x,y),且滿足x=X/Z2、y=Y/Z3。同時,仿射坐標系下的無窮遠點和Jacobi投影坐標系下的點(1,1,0)對應。
以下介紹素數域橢圓曲線點加和倍點在仿射坐標系下的定義 點加定義 如圖2所示,在橢圓曲線上取兩點P(x1,y1)和Q(x2,y2),令O點表示無窮遠點。計算 R=P+Q稱為倍點運算,其中R坐標為(xR,yR)。
1)如果x1=x2且y1=-y2,則R=P+Q=O。
2)若1)條件不成立,則有點R=P+Q,滿足 倍點定義 如圖3所示,在橢圓曲線上取一點P(x1,y1),令O點表示無窮遠點。計算R=2P稱為倍點運算,其中R坐標為(xR,yR)。
1)如果y1=0,則R=2P=O。
2)若y1≠0,則有點R=2P,滿足 由于在橢圓曲線密碼體制中求逆運算要比乘法慢,而在投影坐標系中不涉及求逆,所以一般會將仿射坐標轉換為投影坐標再進行計算。下面給出橢圓曲線在Jacobi投影坐標下點加和倍點的計算公式。可以看出,公式只用到了模加和模乘操作。
表1點加計算公式 表2倍點計算公式 點加倍點 輸入P(X1,Y1,Z1),Q(X2,Y2,1) 輸入P(X1,Y1,Z1) 輸出R(X3,Y3,Z3)=P+Q 輸出R(X3,Y3,Z3)=2P 公式公式 Z3=2Y1Z1 對于模乘運算,一般使用Montgomery模乘算法,該算法如下所示 輸入X,Y,N,R 輸出S=XYR-1mod N 步驟 1.N′=-N-1mod R 2.T=X×Y 3.M=T×N′mod R 4. 5.如果S≥N,則S=S-N 6.返回S。
可以看出,一次模乘主要分解為三次乘法運算。
計算橢圓曲線的點加和倍點,處于縮小面積的考慮,一般用的是串行計算的方法,但是,串行計算的效率比較低下,通過分析點加和倍點運算的數據相關性,可以得出在串行計算中很多相互獨立的操作也被視為有了依賴關系,從而造成時鐘周期數的浪費,本發明正是根據這一問題而提出了對于點加計算的有效解決方案。
發明內容
本發明的目的在于提出一種橢圓曲線密碼系統的點加系統,在不增加面積的情況下提高點加的運算速度,在一個基本的層面上優化橢圓曲線點乘的性能。
本發明的特征在于 該點加系統是在專用數字集成電路芯片中采用ASIC流程實現的。含有點加寄存器控制器;點加多路選擇控制器;第一多路選擇器組,由六個多路選擇器mux1、mux2、mux3、mux4、mux5、mux6構成;中間變量寄存器組,由六個中間變量寄存器Reg1、Reg2、Reg3、Reg4、Reg5、Reg6構成;第二多路選擇控制器,由四個多路選擇器lmux1、lmux2、lmux3、lmux4構成,其中 所述點加寄存器控制器,是一個有限狀態機,輸入為形式為010101……且占空比為1∶1的方波時鐘信號Clk,以及低電平有效的開始信號Start,輸出為六個各自均為2個比特的操作控制信號C1、C2、C3、C4、C5、C6,所述點加寄存器控制器在開始信號有效后按以下各輪中時鐘節拍在各個時鐘輸出不同的C1_C2_C3_C4_C5_C6各操作控制信號的組合 初始化時,令各中間變量寄存器分別為 Reg1←X1,Reg2←Y1,Reg3←Z1,Reg4←X2,Reg5←Y2,Reg6←1, (X1,Y1,Z1)為Jacobi投影坐標下橢圓曲線上的點P的坐標, (X2,Y2,1)為Jacobi投影坐標下橢圓曲線上的點Q的坐標, 令R=P+Q,點R的坐標為(x3,Y3,Z3), C1_C2_C3_C4_C5_C6中每個操作控制信號均為00,在以下敘述中省略各操作控制信號的標志; 第一輪Δ1中 在第1~第8時鐘周期,操作控制信號均為11_11_11_11_11_11, 在第9時鐘周期,操作控制信號為11_11_11_11_01_11; 第二輪Δ2中 在第10時鐘周期,操作控制信號為11_11_11_01_11_11, 在第11~第17時鐘周期,操作控制信號均為11_11_11_11_11_11, 在第18時鐘周期,操作控制信號為11_11_11_01_11_11; 第三輪Δ3中 在第19時鐘周期,操作控制信號為11_11_11_11_10_01, 在第20時鐘周期,操作控制信號為11_01_11_11_11_10, 在第21時鐘周期,操作控制信號為10_11_11_11_11_11, 在第22~第26時鐘周期,操作控制信號均為11_11_11_11_11_11, 在第27時鐘周期,操作控制信號為11_11_11_01_11_11; 第四輪Δ4中 在第28時鐘周期,操作控制信號為11_01_11_10_11_11, 在第29時鐘周期,操作控制信號為01_11_11_11_11_11, 在第30~第35時鐘周期,操作控制信號均為11_11_11_11_11_11, 在第36時鐘周期,操作控制信號為11_11_01_11_11_11; 第五輪Δ5中 在第37時鐘周期,操作控制信號為01_11_11_11_11_11, 在第38時鐘周期,操作控制信號為10_11_01_11_11_11, 在第39~第44時鐘周期,操作控制信號均為11_11_11_11_11_11, 在第45時鐘周期,操作控制信號為11_01_11_11_11_11; 第六輪Δ6中 在第46時鐘周期,操作控制信號為11_11_11_01_11_11, 在第47時鐘周期,操作控制信號為11_01_11_10_11_11, 在第48時鐘周期,操作控制信號為11_10_11_11_11_11; 所述點加多路選擇控制器,是一個有限狀態機,輸入為所述開始信號Start、所述時鐘信號Clk,輸出均為3個比特的選通控制信號CL1、CL2、CL3、CL4,所述點加多路選擇控制器在所述開始信號Start有效后的各輪中,在下述每個時鐘周期均輸出不同的選通控制信號CL1、CL2、CL3、CL4的組合; 在所述初始化時,CL1_CL2_CL3_CL4中每個選通控制信號均為000,在以后敘述中省略各選通控制信號的標志; 在所述第一輪Δ1中 在所述第1時鐘周期,選通控制信號為011_011_000_000, 在所述第2時鐘周期,選通控制信號為011_101_000_000, 在所述第3時鐘周期,選通控制信號為011_101_000_000, 在所述第4~第9時鐘周期,選通控制信號均為000_000_000_000; 在所述第二輪Δ2中 在所述第10時鐘周期,選通控制信號為100_000_000_000, 在所述第11時鐘周期,選通控制信號為101_000_000_000, 在所述第12時鐘周期,選通控制信號為001_010_000_000, 在所述第13~第18時鐘周期,選通控制信號均為000_000_000_000; 在所述第三輪Δ3中 在所述第19時鐘周期,選通控制信號為010_000_111_001, 在所述第20時鐘周期,選通控制信號為111_111_111_010, 在所述第21時鐘周期,選通控制信號為001_111_001_100, 在所述第22~第27時鐘周期,選通控制信號均為000_000_000_000; 在所述第四輪Δ4中 在所述第28時鐘周期,選通控制信號為110_110_111_010, 在所述第29時鐘周期,選通控制信號為001_000_000_000, 在所述第30時鐘周期,選通控制信號為011_101_000_000, 在所述第31~第36時鐘周期,選通控制信號均為000_000_000_000; 在所述第五輪Δ5中 在所述第37時鐘周期,選通控制信號為001_010_000_000, 在所述第38時鐘周期,選通控制信號為010_100_011_111, 在所述第39時鐘周期,選通控制信號為111_110_000_000, 在所述第40~第45時鐘周期,選通控制信號均為000_000_000_000; 在所述第六輪Δ6中 在所述第46時鐘周期,選通控制信號為000_000_000_000, 在所述第47時鐘周期,選通控制信號為000_000_010_111, 在所述第48時鐘周期,選通控制信號為000_000_000_111; 所述第一多路選擇器組,其中 各個多路選擇器mux1~mux6各自的選擇信號輸入端先后依次分別與所述點加寄存器控制器的各操作控制信號輸出端相連,分別輸入各個操作控制信號C1~C6, 各個多路選擇器mux1~mux6各自的00端先后依次輸入X1、Y1、Z1、X2、Y2、1, 各個多路選擇器mux1~mux6各自的模乘數據輸入端01共同與所述點加電路系統外的模乘器的模乘數據r_mul輸出端相連, 各個多路選擇器mux1~mux6各自的模加數據輸入端10共同與所述點加電路系統外的模加器的模加數據r_add輸出端相連; 所述中間變量寄存器組,其中 各個中間變量寄存器寄存Reg1~Reg6的第一輸入端先后依次分別與所述各多路選擇器mux1~mux6的信號D1、D2、D3、D4、D5、D6的輸出端相連,所述Reg1~Reg6的第二輸入端互連后接時鐘信號Clk的輸出端; 所述第二多路選擇器組,其中 各個多路選擇器lmux1~lmux4各自的選擇信號輸入端先后依次分別與所述點加多路選擇控制器的各選通控制信號輸出端相連,分別輸入各個選通控制信號CL1~CL4, 多路選擇器lmux1、lmux2的000輸入端互連后接所述Q點的坐標值1, 多路選擇器lmux3、lmux4的000輸入端互連后接所述模加器的模加信號r_add的輸出端, 各個多路選擇器lmux1~lmux4的001輸入端互連后接所述中間變量寄存器Reg1的信號T1的輸出端,所述信號T1的輸出端同時與所述第一多路選擇器組中的多路選擇器mux1的11輸入端相連, 各個多路選擇器lmux1~lmux4的010輸入端互連后接所述中間變量寄存器Reg2的信號T2的輸出端,所述信號T2的輸出端同時與所述第一多路選擇器組中的多路選擇器mux2的11輸入端相連, 各個多路選擇器lmux1~lmux4的011輸入端互連后接所述中間變量寄存器Reg3的信號T3的輸出端,所述信號T3的輸出端同時與所述第一多路選擇器組中的多路選擇器mux3的11輸入端相連, 各個多路選擇器lmux1~lmux4的100輸入端互連后接所述中間變量寄存器Reg4的信號T4的輸出端,所述信號T4的輸出端同時與所述第一多路選擇器組中的多路選擇器mux4的11輸入端相連, 各個多路選擇器lmux1~lmux4的101輸入端互連后接所述中間變量寄存器Reg5的信號T5的輸出端,所述信號T5的輸出端同時與所述第一多路選擇器組中的多路選擇器mux5的11輸入端相連, 各個多路選擇器lmux1~lmux4的110輸入端互連后接所述中間變量寄存器Reg6的信號T6的輸出端,所述信號T6的輸出端同時與所述第一多路選擇器組中的多路選擇器mux6的11輸入端相連, 多路選擇器lmux1、lmux2的111輸入端互連后接所述模加器的模加信號r_add的輸出端, 多路選擇器lmux3、lmux4的111輸入端互連后接所述模乘器的模乘信號r_mul的輸出端, 所述多路選擇器lmux1、lmux2的輸出信號mul1、mul2分別送入所述模乘器的兩個輸入端; 所述多路選擇器lmux3、lmux4的輸出信號add1、add2分別送入所述模加器的兩個輸入端; 在所述第一輪Δ1中,所述模乘器的輸出r_mul使 T5←T32,T4←T3×T5,T4←T3×T5,而所述模加器無輸出; 在所述第二輪Δ2中,所述模乘器的輸出r_mul使 T4←T4×T5,T6←T4×T5,T2←T1×T2,而所述模加器無輸出; 在所述第三輪Δ3中 所述模乘器的輸出r_mul使 T4←T2×T4,T2←T52,T1←T1×T6, 所述模加器的輸出r_add使 T5←T4-T1,T6←T6-T2,T1←T1+T4; 在所述第四輪Δ4中 所述模乘器的輸出r_mul使 T3←T62,T1←T1×T2,T3←T3×T5, 所述模加器的輸出r_add使 T4←T4-T2; 在所述第五輪Δ5中 所述模乘器的輸出r_mul使 T2←T1×T2,T4←T2×T4,T2←T1×T6, 所述模加器的輸出r_add使 T1←T3-T1; 在所述第六輪Δ6中 所述模加器的輸出r_add使 T4←T2-T4,T2←T4-T2,得到X3=T1,Y3=T2,Z3=T3; 符號“←”表示用右邊的數據去代替左邊的數據。
本發明基于三級流水的大數模乘器,通過分析橢圓曲線密碼點加運算的數據相關性,將其中相互獨立的運算提取出來,利用六個中間變量寄存器,重復利用了模乘器邏輯單元和寄存器單元,提高了點加的運算速度,在一個基本的層面上提高了點乘的運算速度。
本設計硬件上用ASIC實現,用Verilog進行行為級建模,用Verilog進行RTL級編碼和仿真。基于SMIC 0.18μm最壞的工藝完成綜合,并提取門延時信息,進行門級仿真驗證。測試的結果表明,與現有的設計相比,本發明在不增加面積的情況下提高了數據的吞吐率。
表3給出了本點加解決方案和串行方案的比較結果。
表3方案比較結果
圖1仿射坐標系; 圖2橢圓曲線點加運算定義; 圖3橢圓曲線倍點運算定義; 圖4橢圓曲線點加數據相關性分析; 圖5一種三級流水的模乘器結構; 圖6一種模加器結構; 圖7橢圓曲線點加實現結構; 圖8橢圓曲線點加實現流程圖。
具體實施例方式 本發明的思路在于1)利用Jacobi投影坐標系下橢圓曲線點加的計算公式,進行數據相關性分析,將相互獨立的操作提取出來,確定流水線級數為三級。2)分析點加運算中的關鍵操作,將其置為最高優先級,然后將較低優先級的操作根據運算次序依次放入流水線過程中,同時使得所用中間變量寄存器數目最小。3)根據單次模乘所需要耗費的時鐘周期數,在一般意義上提煉出針對三級流水線的點加的時間耗費; 以下詳細說明這三個思路 1)點加的數據相關性分析 如表1所示,利用Jacobi投影坐標系下橢圓曲線點加的計算公式,分析出點加的數據相關性分別如圖4所示; 圖4中,橢圓內的操作為模乘操作,方框內的操作為模加操作。模乘操作和模加操作是并行進行的,分別調用模乘器和模加器。水平方向上的操作為一層,各層內部之間的操作是相互獨立的,不存在數據依賴性。而在各層之間的操作則存在數據依賴性,必須要等上一層的數據計算完畢之后才能進行下一層的計算。二級和四級的流水線都會使得整個流水線的利用率不高。由圖4可確定流水線的級數為三級,使得流水線的利用率接近100%; 下面詳細說明點加的數據相關性分析結論 如圖4所示點加的數據相關性分析圖,第一級相互獨立的模乘操作為Z12,Y2Z1;第二級相互獨立的模乘操作為X1Y1,X2Z12,Y2Z13;第三級相互獨立的模乘操作為λ22,λ4=X2Y1Z12,λ12,Z3=λ1Z1,λ2X1,第三級相互獨立的模加操作為λ1=X2Z12-X1,λ2=Y2Z13-Y1,λ3=X2Z12+X1;第四級相互獨立的模乘操作為λ12λ3,λ6=λ12λ2X1,第四級相互獨立的模加操作為λ5=λ4-X1Y1;第五級相互獨立的模乘操作為λ5λ12,第五級相互獨立的模加操作為X3=λ22-λ12λ3;第六級相互獨立的模乘操作為λ2X3,第六級相互獨立的模加操作為λ7=λ6-λ5λ12;第七級相互獨立的模加操作為Y3=λ7-λ2X3; 如圖5所示即為一種三級流水的模乘器示例。它的輸入為乘數X,被乘數Y,以及模式mode。第一級流水對X分別對X,Y進行編碼;第二級流水為部分積選擇和部分積陣列壓縮;第三級流水為42部分積陣列壓縮。其中mode信號控制兩個多路選擇器選通從外部輸入還是已經計算出的sum結果; 如圖6所示為一種模加器示例,它由兩個加法器和一個CSA組成,輸入為x,y,n以及sel信號,輸出為z,在sel信號為高時為模加運算,sel信號為低時為模減運算; 2)點加在流水線中的調度次序 根據1)的分析確定流水線級數之后。從表1的計算公式來看,關鍵的操作是X3的得出。所以需要將計算X3的操作次序置為優先級最高。從圖4中找到X3的路徑,將路徑上的操作放在每次流水的最前。然后將其他的操作分別安插于流水線上,使得流水次數最少;另外,通過調度與分配算法,對中間變量寄存器的數目進行優化,在三級流水線下得到的優化結果是需要六個中間變量寄存器,即可完成全部點加操作; 3)點加的時間耗費 通過2)的優化過程,進行1次單獨的模乘運算耗費9個時鐘周期,1次單獨的模加運算耗費1個時鐘周期,得出的結論是利用三級流水,使用六個中間變量寄存器,經過六次流水過程即可完成點加運算,作一次點加運算所耗費的時鐘周期數C滿足 C=49(7) 根據以上三個思路,本發明提出了具體的橢圓曲線密碼的點加系統,如圖7所示為橢圓曲線點加實現的硬件圖,包括寄存器和模乘器以及模加器的連接; 圖7中的點加寄存器控制器是一個有限狀態機,它的輸入為開始信號Start與時鐘Clk,輸出均為2個比特的控制信號C1、C2、C3、C4、C5、C6,分別控制多路選擇器mux1、mux2、mux3、mux4、mux5、mux6。點加寄存器控制器在Start有效后的每個時鐘周期均輸出不同的C1_C2_C3_C4_C5_C6組合。C1、C2、C3、C4、C5、C6在Start有效后的每個時鐘周期的具體值如圖8中C1_C2_C3_C4_C5_C6所示; 圖7中的點加多路選擇控制器是一個有限狀態機,它的輸入為開始信號Start與時鐘Clk,輸出均為3個比特的控制信號CL1、CL2、CL3、CL4,分別控制多路選擇器lmux1、lmux2、lmux3、lmux4,點加多路選擇控制器在Start有效后的每個時鐘周期均輸出不同的CL1_CL2_CL3_CL4組合。CL1、CL2、CL3、CL4在Start有效后的每個時鐘周期的具體值如圖8中C1_C2_C3_C4_C5_C6所示; 圖7中有6個中間變量寄存器分別為Reg1、Reg2、Reg3、Reg4、Reg5、Reg6,用來寄存中間計算結果。它們有一個公共輸入信號為時鐘Clk。除此之外Reg1還有輸入信號D1,輸出信號T1,其中D1為多路選擇器mux1的輸出;Reg2還有輸入信號D2,輸出信號T2,其中D2為多路選擇器mux2的輸出;Reg3還有輸入信號D3,輸出信號T3,其中D3為多路選擇器mux3的輸出;Reg4還有輸入信號D4,輸出信號T4,其中D4為多路選擇器mux4的輸出;Reg5還有輸入信號D5,輸出信號T5,其中D5為多路選擇器mux5的輸出;Reg6還有輸入信號D6,輸出信號T6,其中D6為多路選擇器mux6的輸出; 圖7中的多路選擇器mux1、mux2、mux3、mux4、mux5、mux6分別用來選通中間變量寄存器Reg1、Reg2、Reg3、Reg4、Reg5、Reg6的輸入信號。它們均為4輸入1輸出,有兩個公共的輸入信號分別為r_mul和r_add,其中r_mul為模乘器的輸出,r_add為模加器的輸出。除此之外,mux1還有輸入信號X1,輸出信號D1,其中X1用來初始化寄存器T1,D1為寄存器Reg1的輸入;mux2還有輸入信號Y1,輸出信號D2,其中Y1用來初始化寄存器T2,D2為寄存器Reg2的輸入;mux3還有輸入信號Z1,輸出信號D3,其中Z1用來初始化寄存器T3,D3為寄存器Reg3的輸入;mux4還有輸入信號X2,輸出信號D4,其中X2用來初始化寄存器T4,D4為寄存器Reg4的輸入;mux5還有輸入信號Y2,輸出信號D5,其中Y2用來初始化寄存器T5,D5為寄存器Reg5的輸入;mux6還有輸入信號常量1,輸出信號D6,其中常量1用來初始化寄存器T6,D6為寄存器Reg6的輸入; 圖7中4個多路選擇器lmux1、lmux2、lmux3、lmux4均為8輸入1輸出,其中lmux1、lmux2分別用來選通模乘器的乘數和被乘數,mux3、lmux4分別用來選通模加器的加數和被加數。T1~T6為六個中間變量寄存器的輸出,1為常數。模乘器的輸入為mul1,mul2,輸出為r_mul;模加器的輸入為add1,add2,輸出為r_add;多路選擇器lmux1的輸入為1、T1、T2、T3、T4、T5、T6、r_add,輸出為mul1;多路選擇器lmux2的輸入為1、T1、T2、T3、T4、T5、T6、r_add,輸出為mul2;多路選擇器lmux3的輸入為r_add、T1、T2、T3、T4、T5、T6、r_mul,輸出為add1;多路選擇器lmux4的輸入為r_add、T1、T2、T3、T4、T5、T6、r_mul,輸出為add2; 按照圖8所示的點加的流水線實現流程,其具體步驟說明如下 令中間變量寄存器分別為T1~T6,令R=(X3,Y3,Z3),P=(X1,Y1,Z1),Q=(X2,Y2,Z2)。即計算R=P+Q 步驟(1).初始化階段 對中間變量寄存器進行初始化,T1←X1,T2←,Y1 T3←Z1,T4←X2,T5←Y2,T6←1; 步驟(2).進行第1次流水過程,對于模乘器依次進行T5←T32,T4←T3×T5,T4←T3×T5,對于模加器依次進行0←0+0,0←0+0,0←0+0,每次模乘運算耗費時鐘周期為9,每次模加運算耗費時鐘周期為1。對于模乘器,在該次流水的第1個時鐘上升沿輸入兩個乘數T3和T3,在第10個時鐘上升沿之前更新T5,在第2個時鐘上升沿輸入兩個乘數T3和T5,在第11個時鐘上升沿之前更新T4,在第3個時鐘上升沿輸入兩個乘數T3和T5,在第12個時鐘上升沿之前更新T4。從第4個到第9個時鐘上升沿的輸入對于模乘器無效。對于模加器,0←0+0表示不進行任何操作; 步驟(3).進行第2次流水過程,對于模乘器依次進行T4←T4×T5,T6←T4×T5,T2←T1×T2,對于模加器依次進行0←0+0,0←0+0,0←0+0; 步驟(4).進行第3次流水過程,對于模乘器依次進行T4←T2×T4,T2←T52,T1←T1×T6,對于模加器依次進行T5←T4-T1,T6←T6-T2,T1←T1+T4;對于模加器,在該次流水的第1個時鐘上升沿輸入兩個加數T4和T1,在第2個時鐘上升沿之前更新T5,在第2個時鐘上升沿輸入兩個加數T6和T2,在第3個時鐘上升沿之前更新T6,在第3個時鐘上升沿輸入兩個加數T1和T4,在第4個時鐘上升沿之前更新T1; 步驟(5).進行第4次流水過程,對于模乘器依次進行T3←T62,T1←T1×T2,T3←T3×T5,對于模加器依次進行T4←T4-T2,0←0+0,0←0+0; 步驟(6).進行第5次流水過程,對于模乘器依次進行T2←T1×T2,T4←T2×T4,T2←T1×T6,對于模加器依次進行0←0+0,T1←T3-T1,0←0+0; 步驟(7).模乘器停止工作,對于模加器依次進行0←0+0,T4←T2-T4,T2←T4-T2,之后有X3=T1,Y3=T2,Z3=T3,點加計算完畢;
權利要求
1.用于橢圓曲線密碼體制的點加系統,其特征在于該點加系統是在專用數字集成電路芯片中采用ASIC流程實現的。含有點加寄存器控制器;點加多路選擇控制器;第一多路選擇器組,由六個多路選擇器mux1、mux2、mux3、mux4、mux5、mux6構成;中間變量寄存器組,由六個中間變量寄存器Reg1、Reg2、Reg3、Reg4、Reg5、Reg6構成;第二多路選擇控制器,由四個多路選擇器lmux1、lmux2、lmux3、lmux4構成,其中
所述點加寄存器控制器,是一個有限狀態機,輸入為形式為010101……且占空比為1∶1的方波時鐘信號Clk,以及低電平有效的開始信號Start,輸出為六個各自均為2個比特的操作控制信號C1、C2、C3、C4、C5、C6,所述點加寄存器控制器在開始信號有效后按以下各輪中時鐘節拍在各個時鐘輸出不同的C1_C2_C3_C4_C5_C6各操作控制信號的組合
初始化時,令各中間變量寄存器分別為
Reg1←X1,Reg2←Y1,Reg3←Z1,Reg4←X2,Reg5←Y2,Reg6←1,
(X1,Y1,Z1)為Jacobi投影坐標下橢圓曲線上的點P的坐標,
(X2,Y2,1)為Jacobi投影坐標下橢圓曲線上的點Q的坐標,
令R=P+Q,點R的坐標為(X3,Y3,Z3),
C1_C2_C3_C4_C5_C6中每個操作控制信號均為00,在以下敘述中省略各操作控制信號的標志;
第一輪Δ1中
在第1~第8時鐘周期,操作控制信號均為11_11_11_11_11_11,
在第9時鐘周期,操作控制信號為11_11_11_11_01_11;
第二輪Δ2中
在第10時鐘周期,操作控制信號為11_11_11_01_11_11,
在第11~第17時鐘周期,操作控制信號均為11_11_11_11_11_11,
在第18時鐘周期,操作控制信號為11_11_11_01_11_11;
第三輪Δ3中
在第19時鐘周期,操作控制信號為11_11_11_11_10_01,
在第20時鐘周期,操作控制信號為11_01_11_11_11_10,
在第21時鐘周期,操作控制信號為10_11_11_11_11_11,
在第22~第26時鐘周期,操作控制信號均為11_11_11_11_11_11,
在第27時鐘周期,操作控制信號為11_11_11_01_11_11;
第四輪Δ4中
在第28時鐘周期,操作控制信號為11_01_11_10_11_11,
在第29時鐘周期,操作控制信號為01_11_11_11_11_11,
在第30~第35時鐘周期,操作控制信號均為11_11_11_11_11_11,
在第36時鐘周期,操作控制信號為11_11_01_11_11_11;
第五輪Δ5中
在第37時鐘周期,操作控制信號為01_11_11_11_11_11,
在第38時鐘周期,操作控制信號為10_11_01_11_11_11,
在第39~第44時鐘周期,操作控制信號均為11_11_11_11_11_11,
在第45時鐘周期,操作控制信號為11_01_11_11_11_11;
第六輪Δ6中
在第46時鐘周期,操作控制信號為11_11_11_01_11_11,
在第47時鐘周期,操作控制信號為11_01_11_10_11_11,
在第48時鐘周期,操作控制信號為11_10_11_11_11_11;
所述點加多路選擇控制器,是一個有限狀態機,輸入為所述開始信號Start、所述時鐘信號Clk,輸出均為3個比特的選通控制信號CL1、CL2、CL3、CL4,所述點加多路選擇控制器在所述開始信號Start有效后的各輪中,在下述每個時鐘周期均輸出不同的選通控制信號CL1、CL2、CL3、CL4的組合;
在所述初始化時,CL1_CL2_CL3_CL4中每個選通控制信號均為000,在以后敘述中省略各選通控制信號的標志;
在所述第一輪Δ1中
在所述第1時鐘周期,選通控制信號為011_011_000_000,
在所述第2時鐘周期,選通控制信號為011_101_000_000,
在所述第3時鐘周期,選通控制信號為011_101_000_000,
在所述第4~第9時鐘周期,選通控制信號均為000_000_000_000;
在所述第二輪Δ2中
在所述第10時鐘周期,選通控制信號為100_000_000_000,
在所述第11時鐘周期,選通控制信號為101_000_000_000,
在所述第12時鐘周期,選通控制信號為001_010_000_000,
在所述第13~第18時鐘周期,選通控制信號均為000_000_000_000;
在所述第三輪Δ3中
在所述第19時鐘周期,選通控制信號為010_000_111_001,
在所述第20時鐘周期,選通控制信號為111_111_111_010,
在所述第21時鐘周期,選通控制信號為001_111_001_100,
在所述第22~第27時鐘周期,選通控制信號均為000_000_000_000;
在所述第四輪Δ4中
在所述第28時鐘周期,選通控制信號為110_110_111_010,
在所述第29時鐘周期,選通控制信號為001_000_000_000,
在所述第30時鐘周期,選通控制信號為011_101_000_000,
在所述第31~第36時鐘周期,選通控制信號均為000_000_000_000;
在所述第五輪Δ5中
在所述第37時鐘周期,選通控制信號為001_010_000_000,
在所述第38時鐘周期,選通控制信號為010_100_011_111,
在所述第39時鐘周期,選通控制信號為111_110_000_000,
在所述第40~第45時鐘周期,選通控制信號均為000_000_000_000;
在所述第六輪Δ6中
在所述第46時鐘周期,選通控制信號為000_000_000_000,
在所述第47時鐘周期,選通控制信號為000_000_010_111,
在所述第48時鐘周期,選通控制信號為000_000_000_111;
所述第一多路選擇器組,其中
各個多路選擇器mux1~mux6各自的選擇信號輸入端先后依次分別與所述點加寄存器控制器的各操作控制信號輸出端相連,分別輸入各個操作控制信號C1~C6,
各個多路選擇器mux1~mux6各自的00端先后依次輸入X1、Y1、Z1、X2、Y2、1,
各個多路選擇器mux1~mux6各自的模乘數據輸入端01共同與所述點加電路系統外的模乘器的模乘數據r_mul輸出端相連,
各個多路選擇器mux1~mux6各自的模加數據輸入端10共同與所述點加電路系統外的模加器的模加數據r_add輸出端相連;
所述中間變量寄存器組,其中
各個中間變量寄存器寄存Reg1~Reg6的第一輸入端先后依次分別與所述各多路選擇器mux1~mux6的信號D1、D2、D3、D4、D5、D6的輸出端相連,所述Reg1~Reg6的第二輸入端互連后接時鐘信號Clk的輸出端;
所述第二多路選擇器組,其中
各個多路選擇器lmux1~lmux4各自的選擇信號輸入端先后依次分別與所述點加多路選擇控制器的各選通控制信號輸出端相連,分別輸入各個選通控制信號CL1~CL4,
多路選擇器lmux1、lmux2的000輸入端互連后接所述Q點的坐標值1,
多路選擇器lmux3、lmux4的000輸入端互連后接所述模加器的模加信號r_add的輸出端,
各個多路選擇器lmux1~lmux4的001輸入端互連后接所述中間變量寄存器Reg1的信號T1的輸出端,所述信號T1的輸出端同時與所述第一多路選擇器組中的多路選擇器mux1的11輸入端相連,
各個多路選擇器lmux1~lmux4的010輸入端互連后接所述中間變量寄存器Reg2的信號T2的輸出端,所述信號T2的輸出端同時與所述第一多路選擇器組中的多路選擇器mux2的11輸入端相連,
各個多路選擇器lmux1~lmux4的011輸入端互連后接所述中間變量寄存器Reg3的信號T3的輸出端,所述信號T3的輸出端同時與所述第一多路選擇器組中的多路選擇器mux3的11輸入端相連,
各個多路選擇器lmux1~lmux4的100輸入端互連后接所述中間變量寄存器Reg4的信號T4的輸出端,所述信號T4的輸出端同時與所述第一多路選擇器組中的多路選擇器mux4的11輸入端相連,
各個多路選擇器lmux1~lmux4的101輸入端互連后接所述中間變量寄存器Reg5的信號T5的輸出端,所述信號T5的輸出端同時與所述第一多路選擇器組中的多路選擇器mux5的11輸入端相連,
各個多路選擇器lmux1~lmux4的110輸入端互連后接所述中間變量寄存器Reg6的信號T6的輸出端,所述信號T6的輸出端同時與所述第一多路選擇器組中的多路選擇器mux6的11輸入端相連,
多路選擇器lmux1、lmux2的111輸入端互連后接所述模加器的模加信號r_add的輸出端,
多路選擇器lmux3、lmux4的111輸入端互連后接所述模乘器的模乘信號r_mul的輸出端,
所述多路選擇器lmux1、lmux2的輸出信號mul1、mul2分別送入所述模乘器的兩個輸入端;
所述多路選擇器lmux3、lmux4的輸出信號add1、add2分別送入所述模加器的兩個輸入端;
在所述第一輪Δ1中,所述模乘器的輸出r_mul使
T5←T32,T4←T3×T5,T4←T3×T5,而所述模加器無輸出;
在所述第二輪Δ2中,所述模乘器的輸出r_mul使
T4←T4×T5,T6←T4×T5,T2←T1×T2,而所述模加器無輸出;
在所述第三輪Δ3中
所述模乘器的輸出r_mul使
T4←T2×T4,T2←T52,T1←T1×T6,
所述模加器的輸出r_add使
T5←T4-T1,T6←T6-T2,T1←T1+T4;
在所述第四輪Δ4中
所述模乘器的輸出r_mul使
T3←T62,T1←T1×T2,T3←T3×T5,
所述模加器的輸出r_add使
T4←T4-T2;
在所述第五輪Δ5中
所述模乘器的輸出r_mul使
T2←T1×T2,T4←T2×T4,T2←T1×T6,
所述模加器的輸出r_add使
T1←T3-T1;
在所述第六輪Δ6中
所述模加器的輸出r_add使
T4←T2-T4,T2←T4-T2,得到X3=T1,Y3=T2,Z3=T3;
符號“←”表示用右邊的數據去代替左邊的數據。
全文摘要
用于橢圓曲線密碼體制的點加系統屬于橢圓曲線密碼系統的點加技術領域。其特征在于含有點加寄存器控制器、點加多路選擇控制器、第一多路選擇器組、中間變量寄存器組以及第二多路選擇器組;在點加多路選擇控制器輸出的選通控制信號下,在六個流水線過程內由位于點加系統外的模乘器和模加器對第二多路選擇器組輸出的乘數和加數完成點加運算;在每一個流水過程內,在所述選通控制信號控制下,模乘器和模加器分別向第一、第二兩個多路選擇器組返回中間數據;在點加寄存器控制器輸出的操作控制信號控制下,控制第一多路選擇器組中的各個多路選擇器通過中間變量寄存器組向第二多路選擇器組輸出相應的乘數和加數。本發明提高了點加運算速度,在一個基本層面上優化了橢圓曲線的點乘性能,提高了數據吞吐率。
文檔編號G06F7/60GK101221491SQ200810055610
公開日2008年7月16日 申請日期2008年1月4日 優先權日2008年1月4日
發明者李樹國, 張霄鵬 申請人:清華大學