專利名稱:橢圓曲線加密算法的協處理器的制作方法
技術領域:
本實用新型涉及橢圓曲線算法在IC卡中的芯片的實現,特別是一種橢圓曲線(ECC)加解密協處理器。
背景技術:
隨著計算機網絡的迅速發展,相互之間進行通信的用戶數量的增多,RSA等公鑰密碼體制的公鑰位數大(一般為1024比特以上)的弱點逐漸暴露出來。在提供同樣安全等級的情況下,橢圓曲線密碼系統具有更短的密鑰長度。智能IC卡(集成電路)常用在安全性要求比較高的場合。相對于傳統的磁條卡或者存儲卡,智能卡內部有mcu,不僅處理能力加強,而且提高了系統的保密能力。而智能卡,為安全原因所增加的成本卻不能太多。由于橢圓曲線密碼的密鑰較短,這可以為智能卡節省較多的存儲空間,不僅能降低智能卡成本,同時也使得其它程序可利用更多的存儲器來完成更復雜的任務。橢圓曲線密碼系統(ECC)在1985年分別由Victor Miller和Neal Koblitz獨立提出。其安全性是基于橢圓曲線上的加法群的離散對數問題(ECDLP)求解的困難性。隨著計算能力的提高需要密鑰長度的增加,ECC相對其它公鑰密碼系統(RSA)相比更具優勢。由于它的每位具有更高的安全性,導致它的運算速度高,同時節約功耗,帶寬,存儲空間和證書長度。
ECC加密中核心運算就是點乘運算,由于它計算步驟的復雜性,所以一般只有一些基本計算用硬件實現,而大部分采用軟核的方式來實現。對于時鐘頻率較低的設備,它的軟硬件交互太多,導致運算的速度慢。而一些高速實現的設計中,芯片的面積偏大。
發明內容
本實用新型目的是提出了一種在IC卡上的橢圓曲線加密算法的協處理器,在滿足系統安全性前提下,加快運算速度,減小芯片面積,從而降低用戶成本。
本實用新型的上述目的是這樣實現的,一種橢圓曲線加解密協處理器,其特征在于包括一個指令譯碼器;一個運算控制器;一個基本運算控制器;一個基本運算器;寄存器組;I/O緩沖模塊;多路選通器;其中所述指令譯碼器與運算控制模塊和I/O緩沖器相連;所述運算控制器與指令譯碼器、多路選通器和基本運算控制器分別相連;所述基本運算控制器與運算控制器和基本運算器相連;所述基本運算器與基本運算控制器和多路選通器相連;所述I/O緩沖器與寄存器組和指令譯碼器相連;所述寄存器組與I/O緩沖器和選通器相連;所述多路選通器與寄存器組和基本運算器相連。
其中,指令譯碼器(1)具有接收外部mcu的wr寫信號、rd讀信號、rst復位信號、8位的addr地址信號的輸入端;向運算控制器輸出4個經譯碼產生的啟動信號的輸出端;向控制I/O緩沖器輸出經譯碼產生的讀/寫數據的信號的輸出端;接收從運算控制器返回的狀態值的輸入端。
其中,運算控制器包括分別控制完成預計算(22nmod p)、點加(P1+P2)、倍點(2P)和求逆運算(Z-1mod p)的4個有限狀態機和一個8位的計數器,用于向指令譯碼器返回狀態值,以及產生控制多路選通器完成寄存器組與基本運算器之間數據交換的信號。
其中,基本運算控制器具有分別控制完成模乘、模減運算的2個有限狀態機和一個7位的計數器。
其中,基本運算器包括蒙哥馬利模乘電路、全加電路和臨時寄存器。
其中,I/O緩沖器包括192位的buff寄存器。
其中,寄存器組包括多個寄存器。
其中,多路選通器具有接收來自運算控制器的讀寫信號的輸入端。
其中,寄存器組模塊分別存儲加解密所需的192位模數p、明文或密文、中間臨時變量、以及橢圓曲線參數a。
其中,基本運算器中的模乘電路和全加電路使用高速全加器和2級流水的蒙哥馬利模乘器。
本實用新型的技術效果是接口方式的簡單,不需要與外部mcu做握手信號。采用狀態機方式,使運算速度大大加快。將預計算,求逆,點加,倍點運算轉化為基本的蒙哥馬利模乘和全加,規整了計算操作,減少中間步驟。合理的進行寄存器的調度,減少了寄存器的個數。整個點乘部分由外部mcu調度協處理完成,其它運算部分均由硬件完成。這樣僅根據外部數據和地址總線的寬度略做調整,就可以滿足不同寬度數據的加解密。
以下結合附圖對本實用新型進行詳細說明。
圖1是本實用新型的橢圓曲線(ECC)加解密協處理器的配置圖;圖2是圖1中的基本運算器的電路圖;圖3示出了圖1中預計算狀態機21的工作過程;圖4示出了圖1中點加控制機22的工作過程;圖5示出了圖1中求逆控制機24的工作過程;圖6示出了圖1中模乘控制機31的工作過程;圖7示出了圖1中減法控制機32的工作過程;圖8是顯示了外部mcu調度的流程圖。
具體實施方式
一般來說,本實用新型提供了運算控制器2;模乘及加法等基本運算器4;寄存器組6;譯碼及輸入出緩沖電路1,5。其中譯碼1及輸入出緩沖模塊5通過雙向數據線、外部地址、數據總線,和外部交換數據;外部數據寫入輸入出緩沖模塊5后,運算控制器2產生控制信號將輸入出緩沖寄存器中的數據讀出,寫入寄存器組的相應單元,當所需運算數據寫完后,運算控制器2依次啟動加/解密過程,相繼啟動4個狀態機,運算中產生的中間數據,經過多路選通器從基本運算器寫入寄存器組6;同時,運算控制器2還接收基本運算控制器3的狀態信號。運算控制器2還會向指令譯碼器1返回其狀態值。輸入出緩沖器5還將向外部CPU發出內部運算狀態信號。
參見圖1本實用新型的橢圓曲線加解密協處理器包括一個指令譯碼器1;一個運算控制器2;一個基本運算控制器3;一個基本運算器4;寄存器組6;I/O緩沖模塊5;多路選通器7。其中,所述運算控制器2和基本運算控制器3可以由CPU、微處理器等計算部件實現。
所述指令譯碼器1與運算控制模塊2和I/O緩沖器5相連;所述運算控制器2與指令譯碼器1、多路選通器7和基本運算控制器3分別相連;所述基本運算控制器3與運算控制器2和基本運算器5相連;所述基本運算器4與基本運算控制器3和多路選通器7相連;所述I/O緩沖器5與寄存器組6和指令譯碼器1相連;所述寄存器組6與I/O緩沖器5和選通器7相連;所述多路選通器7與寄存器組5和基本運算器4相連。
從圖1中可以看到,指令譯碼器1具有接收外部mcu的wr寫信號、rd讀信號、rst復位信號、8位的addr地址信號的輸入端;向運算控制器2輸出4個經譯碼產生的啟動信號的輸出端;向控制I/O緩沖器輸出經譯碼產生的讀/寫數據的信號的輸出端;接收從運算控制器2返回的狀態值的輸入端。
其中,運算控制器2包括分別控制完成預計算(22nmod p)、點加(P1+P2)、倍點(2P)和求逆運算(Z-1mod p)的4個有限狀態機和一個8位的計數器,用于向指令譯碼器返回狀態值,以及產生控制多路選通器7完成寄存器組與基本運算器5之間數據交換的信號。
基本運算控制器3具有分別控制完成模乘,模減運算的2個有限狀態機和一個7位的計數器。
基本運算器4包括蒙哥馬利模乘電路、全加電路和臨時寄存器。
I/O緩沖器5包括192位的buff寄存器。
寄存器組6包括多個寄存器。
多路選通器7具有接收來自運算控制器2的讀寫信號的輸入端。
寄存器組模塊6分別存儲加解密所需的192位模數p、明文或密文、中間臨時變量、以及橢圓曲線參數a。
基本運算器4中的模乘電路和全加電路使用高速全加器和2級流水的蒙哥馬利模乘器。
另外在本實用新型中,運算控制器2和基本運算控制器3都會產生數據轉移信號,控制多路選通器7,完成數據在4和6之間的交換。使得在點加和倍點運算中,即最大限度的利用了前面的計算結果,又省去了不必要的寄存器。
相應的芯片內部控制流程如圖8。指令譯碼器接收外部CPU產生的信號,譯碼發出Start開始信號,啟動輸入出緩沖器準備接受數據。隨后將點的坐標值x,y,z和橢圓曲線參數a以及素數p分別從安全的EEPROM中取出送入輸入出緩沖器中的buff寄存器中。再由輸入出緩沖器控制將buff中的數值送入寄存器組的Ti中。啟動蒙哥馬利預計算單元,采用移位模的方式完成R的計算。分別將x,y,z,a,p與R做蒙哥馬利模乘。外部mcu根據[k]中1的個數,啟動相應的點加和倍點運算,經過點加和倍點控制流程(用點加和倍點控制機完成),將結果存入相應的寄存器Ti中。啟動求逆過程,將結果換為仿射坐標。最后仿射坐標值x,y與數1做蒙哥馬利模乘,把結果換回正常值。通過輸入出緩沖器向外部mcu發出Ready信號。
再參見圖1,在上述的實現IC卡ECC加密算法的協處理器中,運算控制器包括一個8位的狀態計數器,由計數器抽頭產生的控制邏輯根據狀態控制信號的不同反過來作用于計數器,形成4個有限狀態機。它與指令譯碼器1和基本運算控制器3分別相連。4個有限狀態機,分別控制完成預計算(22nmodp),點加(P1+P2),倍點(2P)和求逆運算(Z-1mod p)。同時控制7完成寄存器組6與基本運算器4之間的數據交換,其內部狀態返回指令譯碼器1。
指令譯碼器根據輸入信號的變化,譯碼產生Pre_S信號,用于啟動預計算狀態機;產生Ad_P,Db_P信號,用于點加和倍點計算狀態機;產生Inv_S信號,用于啟動求逆狀態機。
預計算狀態機控制信號序列中會產生,Pre_work,T6_X,(-N)_Y信號。點加和倍點狀態機控制信號序列中會產生Mont_S,Sub_S,Ti_X,Ti_Y,X_Ti,Y_Ti等信號。求逆狀態機控制信號序列中會產生Mont_S,T1_X,T1_Y等信號。在這些信號序列的控制下,完成點乘運算。其中預計算控制機,在工作狀態下會啟動2中的計數器counter,記錄循環次數。
4個狀態機分別完成四種不同運算。預計算中,用每次左移1位減p的方式完成。如圖4,點加計算中,共產生16次模乘,3次全加,5次模減操作。倍點計算中,共產生10次模乘,5次全加,3次模減操作。運算控制器3向指令譯碼器1返回的狀態值A_Sta位寬為4,每位分別表示4個狀態機的狀態,由Pre_R,Ad_R,Db_R,Inv_R組成。
在圖1中,從基本運算控制器3返回運算控制器2的信號M_Sta位寬為2,每位分別表示蒙哥馬利模乘,模減的狀態,由Mont_R和Sub_R組成。
基本運算控制器3包括7位的計數器單元,和模乘,模減兩個有限狀態機。如圖6,7,每個狀態機都會產生基本運算器內部寄存器的工作信號,讀寫信號,移位信號,選通信號的一個序列控制完成模乘,模減運算。內部計數器用于控制模乘的循環次數。
運算控制器2給基本運算控制器3的控制信號有Sub_S,Mont_S兩個狀態機的啟動信號,3返回給2的A_Sta信號,它包括Sub_R,Mont_R兩個狀態機的結束信號。
如圖2所示,基本運算器4包括模乘器,全加器,存儲器單元。它通過一個多路選通器,與寄存器組相連。運算控制器2產生讀寫信號控制6中寄存器Ti到4中X,Y,R操作數寄存器,或者反之。基本運算單元中,模乘電路和全加電路構成了單元的主體。存儲單元中,5個200位的寄存器存儲加法,減法和乘法時的操作數,一般情況下寄存器N中存大素數p,循環移位寄存器X存儲另一個乘數。為了模減和加法的方便,將192位數擴展符號位后成為200位進行計算。寄存器X和Temp都是循環移位寄存器。圖中信號Pre_work由21中產生,控制全加器的操作數來自Y和N寄存器,每個clk的結果存入Y寄存器中。信號Sel_Temp,Sel_Y,Sel_R控制全加器結果送入相應寄存器中。信號X_R,#(-2)_R將X寄存器中的數或常數值-2送入R寄存器中。信號Mul_work,Mul_sel->Add由31中產生,前者表示模乘進行中,控制中間值寄存器C0,S0寄存器的輸入和寄存器X的移位;后者控制4:2加法器的結果做全加。信號Mov_T產生于24,控制寄存器Temp的移位。其中C0,S0是200位的寄存器。X,Y是200位的移位寄存器,作為模乘的兩個乘數寄存器。寄存器N放素數p。R和Y作為全加器的兩個輸入。兩級加法器完成4個輸入,2個輸出的加法,延時僅為二位全加延時。而200位的全加器采用的是文獻“A.Satoh,N.Ooba,K.Takano and E.D’Avignon,“High-speedMARS hardware,”Third Advanced Encryption Standard(AES)CandidateConference,April 2000”提到的全加器,它的全加延時僅相當于30個一位全加延時。在工作頻率不高的環境下(5-50M),200位的全加最多二個時鐘周期內就可完成。模乘的初始階段通過4中全加器預計算R的值,而后開始執行100次的循環,最后再控制全加器完成一次全加操作計算出模乘的結果。加上控制邏輯和寄存器存取時間,一次192位的模乘共需103個時鐘周期。做全加時,直接由將寄存器R和Y中的值送入全加器,計算出結果根據圖中選擇信號,決定送入哪個寄存器。做模減操作時,事實上是做了2次的全加,一次加上減數的補碼,一次加上N的2l(l=1,2,3)。計算路徑與全加類似。C00表示C0寄存器的最低位,C>>2表示數據線在該處右移2位,Mux/logic表示部分邏輯和選通器。部分邏輯中包括N寄存器的值擴展成2lN,寄存器Y中的值取反,符號位判斷等簡單邏輯。
寄存器組,它與多路選通器7和輸入出緩沖模塊5相連。它包括寄存器Ti(i=1…7)。寄存器Ti(i=1…6)存儲點的坐標或點加和倍點時的臨時結果,T7寄存器存儲橢圓曲線參數a的值。各寄存器初始值為T1=Z1,T2=Y0,T3=X0,T4=Z0,T5=Y1,T6=X1。這里的每個寄存器都與基本運算器里的寄存器建立有數據通路。如圖1,其中Ti_X,Ti_Y等(i=1…6)表示每個寄存器之間的傳輸信號。
輸入出緩沖模塊5,其與指令譯碼器1和寄存器組模塊6相連。內含一個8位循環移位的192位寄存器,它將送入的8位數據拼成192位。輸出數據時,將192位的數據8位送出。
如圖3,預計算22nmod p,采用循環移位加負p的方式實現。設p是192位的數,由于它是素數,它的首末位都是1。負p在硬件中,通過191個反相器直接將p的1-191位取反,最低位保持不變即可。第一步,將p取成負p。第二步,左移一位,與負p做一次全加,根據結果的符號位決定是取全加后的值還是原值。實際上這一步做了一次乘2和模p的操作。由計數器控制,依次循環執行這一步192次,即可得到22nmod p的值,存入基本運算模塊里乘數寄存器中,預計算結束。啟動相應點加和倍點運算的預處理,即分別將x,y,z,a送入另一個乘數寄存器,做蒙哥馬利模乘,后送入寄存器組模塊相應寄存器中。
從上述的體系結構看,本發明的協處理器在數據處理的規整性,可并行性,器件的復用性,可重構性上具有創新性。本發明最大的特點在于用加法器和狀態機實現了橢圓曲線中的模加,模減,模乘以及求逆計算。相對于以前的基于專門的乘法器,加法器,除法器的結構,有效降低了芯片的面積;同時合理安排點乘過程中的計算序列和存儲器的使用,采用多路選通器,最大程度上利用前面的運算結果而又不增加太多的寄存器,從而提高了點乘的運算速度。
下面參照圖3至圖7說明預計算狀態機21、點加控制機22、倍點點加控制機23、求逆控制機24、模乘控制機31和減法控制機32的操作過程。
首先參見圖3,預計算狀態機21操作如下空閑沒有其它信號激勵或復位情況,對外不產生控制信號。啟動 發出內部信號(-N)->Y,控制4的N寄存器中的數取反加1送入Y寄存器。具體見預計算22nmod p。
工作產生內部信號Pre_work,該信號有效時,2中counter計數器開始計數,每個clk,4中全加器的兩個輸入分別是2*Y和(-N),其結果送入Y寄存器。
完成產生內部信號Pre_ready和T7_X,Y_R,將6中寄存器T7的數送入4中X寄存器。信號Pre_ready從5中data_out數據線送出。參見圖4,點加控制機22操作如下啟動產生信號T1->X,Y。
倍點點加控制機23的操作類似點加控制機22的操作,即啟動產生信號T1->X,Y。
上述寄存器器T1…T7在6中,寄存器X,Y,R,Temp在4中。
參見圖5,求逆控制機24操作如下空閑沒有其它信號激勵或復位情況,對外不產生控制信號。
預備產生信號#-2->R,將4中寄存器R的值置為-2,同時打開全加通路,計算N+R。
啟動產生信號sel->Temp,將4中全加結果送入Temp寄存器中。同時產生信號T1->X,Y。控制6的T4寄存器中的數送入4中X,Y寄存器。
態1產生信號Mont_S,啟動模乘狀態機。
緩沖根據Temp[0]中的值,產生T1->Y信號。產生4中Temp寄存器的移位信號Mov_T,同時啟動2中counter計數器加1。
態2產生信號Mont_S,啟動模乘狀態機。
完成產生信號Inv_ready,信號Inv_ready從5中data_out數據線送出。
參見圖6,模乘控制機31操作如下空閑沒有其它信號激勵或復位情況,對外不產生控制信號。
預備產生信號打開全加通路,計算Y+N。
啟動產生信號sel->R,將4中全加結果送入R寄存器中。
態1產生信號Mul_work,啟動4中counter1計數器。
態2產生Mul_sel->Add,進行全加。
完成產生Sel->X,Y,把全加結果送入4中X,Y寄存器。產生信號Mont_R,信號Mont_R從3中返回2。
參見圖7,減法控制機32操作如下空閑沒有其它信號激勵或復位情況,對外不產生控制信號。
態1產生信號打開全加通路N+R。
態2產生信號Sel->R。打開全加通路Y+R。
完成產生信號Sel->R。產生信號Sub_R,信號Mont_R從3中返回2。
下面參照圖1說明該協處理器外部引腳功能wr1bit;wr為高,表示外部mcu要寫數據。
rd1bit;rd為高,表示外部mcu要讀數據。
clk1bit;系統時鐘。
rst1bit;硬復位信號,低有效。
addr8bits;地址線。
data_in8bits;數據輸入線。
data_out8bits;數據輸出線。
Mcu控制協處理器完成點乘運算的流程1)soffreset2)循環執行BUS->Buff指令24次,送192位的素數p。
3)buff->N4)循環執行BUS->Buff指令24次,送192位的P點X的坐標值Px。
5)buff->T36)循環執行BUS->Buff指令24次,送192位的P點Y的坐標值Py。
7)buff->T28)循環執行BUS->Buff指令24次,送192位的P點Z的坐標值Pz。
9)buff->T410)循環執行BUS->Buff指令24次,送192位的橢圓曲線參數a。
11)buff->T712)Pre_S //開始預計算13)Pre_Ready //mcu從總線上讀到14)Mont_M//開始蒙哥馬利模乘15)Mont_Ready//mcu從總線上讀到16)X->T7//4中寄存器X的值送入6中T7寄存器17)R->X //4中寄存器R的值送入4中X寄存器18)T3->Y19)Mont_M20)Mont_Ready21)X->T3,T622)R->X23)T2->Y24)Mont_M25)Mont_Ready26)X->T2,T5
27)R->X28)T4->Y29)Mont_M30)Mon_Ready31)X->T4,T132)For(i=1;i<192;i++)33)Db_S34)Db_Ready35)ifki為136)Ad_S37)Ad_Ready38)End39)Inv_S //開始求逆40)Inv_Ready41)X_R42)Mont_S43)Mont_Ready44)X_Temp45)T6_Y46)Mont_S47)MonT_Ready48)X_T649)Temp_Y50)R_X51)Mont_S52)Mont_Ready53)T5_Y54)Mont_S55)Mont_Ready
56)Set_one57)Mont_S58)Mont_Ready59)X_T560)Set_one61)T6_Y62)Mont_S63)Mont_Ready64)T6_Buff65)循環執行Buff->Bus指令24次,送出192位的P點X的坐標值Px。
66)T5_Buff67)循環執行Buff->Bus指令24次,送出192位的P點Y的坐標值Py。
第1-11步送192位的素數p,點P的X,Y,Z和參數a。
第12-31步預計算與預處理。
第32-38步點乘。
第39-41步求逆。
第42-64步將P點坐標值由jacobin坐標轉化為仿射坐標。
第65-67步送出。
權利要求1.一種橢圓曲線加解密協處理器,其特征在于包括一個指令譯碼器(1);一個運算控制器(2);一個基本運算控制器(3);一個基本運算器(4);寄存器組(6);I/O緩沖模塊(5);多路選通器(7);其中所述指令譯碼器(1)與運算控制模塊(2)和I/O緩沖器(5)相連;所述運算控制器(2)與指令譯碼器(1)、多路選通器(7)和基本運算控制器(3)分別相連;所述基本運算控制器(3)與運算控制器(2)和基本運算器(5)相連;所述基本運算器(4)與基本運算控制器(3)和多路選通器(7)相連;所述I/O緩沖器(5)與寄存器組(6)和指令譯碼器(1)相連;所述寄存器組(6)與I/O緩沖器(5)和選通器(7)相連;所述多路選通器(7)與寄存器組(5)和基本運算器(4)相連。
2.根據權利要求1所述的橢圓曲線加解密協處理器,其特征在于,指令譯碼器(1)具有接收外部mcu的wr寫信號、rd讀信號、rst復位信號、8位的addr地址信號的輸入端;向運算控制器(2)輸出4個經譯碼產生的啟動信號的輸出端;向控制I/O緩沖器輸出經譯碼產生的讀/寫數據的信號的輸出端;接收從運算控制器(2)返回的狀態值的輸入端。
3.根據權利要求1所述的橢圓曲線加解密協處理器,其特征在于,運算控制器(2)包括分別控制完成預計算、點加、倍點和求逆運算的4個有限狀態機和一個8位的計數器,用于向指令譯碼器返回狀態值,以及產生控制多路選通器(7)完成寄存器組與基本運算器(5)之間數據交換的信號。
4.根據權利要求1所述的橢圓曲線加解密協處理器,其特征在于,基本運算控制器(3)具有分別控制完成模乘,模減運算的2個有限狀態機和一個7位的計數器。
5.根據權利要求1所述的橢圓曲線加解密協處理器,其特征在于,基本運算器(4)包括蒙哥馬利模乘電路、全加電路和臨時寄存器。
6.根據權利要求1所述的橢圓曲線加解密協處理器,其特征在于,I/O緩沖器(5)包括192位的buff寄存器。
7.根據權利要求1所述的橢圓曲線加解密協處理器,寄存器組(6)包括多個寄存器。
8.根據權利要求1所述的橢圓曲線加解密協處理器,其特征在于,多路選通器(7)具有接收來自運算控制器(2)的讀寫信號的輸入端。
9.根據權利要求1所述的橢圓曲線加解密協處理器,基本運算器(4)中的模乘電路和全加電路使用高速全加器和2級流水的蒙哥馬利模乘器。
專利摘要本實用新型是一種橢圓曲線加解密協處理器,其特征在于包括一個指令譯碼器;一個運算控制器;一個基本運算控制器;一個基本運算器;寄存器組;I/O緩沖模塊;多路選通器;其中所述指令譯碼器與運算控制模塊和I/O緩沖器相連;所述運算控制器與指令譯碼器、多路選通器和基本運算控制器分別相連;所述基本運算控制器與運算控制器和基本運算器相連;所述基本運算器與基本運算控制器和多路選通器相連;所述I/O緩沖器與寄存器組和指令譯碼器相連;所述寄存器組與I/O緩沖器和選通器相連;所述多路選通器與寄存器組和基本運算器相連。本實用新型簡化了外部控制,減少了與外部MCU的交互,提高了點乘的運算速度。
文檔編號H04L9/30GK2864808SQ20052014661
公開日2007年1月31日 申請日期2005年12月23日 優先權日2005年12月23日
發明者張昌金, 孫晉文, 王濤, 蘇斌 申請人:航天信息股份有限公司