專利名稱:大數(shù)模乘器電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及密碼學領(lǐng)域,特別是涉及一種加密解密算法中的重要模塊---大數(shù)模 乘器的電路結(jié)構(gòu)。
背景技術(shù):
近年來,隨著信息化社會的發(fā)展和密碼學商業(yè)應(yīng)用的普及,人們對信息安全和保 密的重要性認識不斷提高,密碼學受到前所未有的重視。除傳統(tǒng)的密碼應(yīng)用系統(tǒng)外,密碼 學還應(yīng)用于提供加密,簽名,認證,密鑰管理,分配等領(lǐng)域。加解密算法也層出不窮,如 ECC (Elliptic CurvesCryptography,橢圓曲線加密算法),RSA (RSA公開密鑰加密算法), DSA (數(shù)字簽名算法)等。1985年N. Koblitz和Miller提出將橢圓曲線用于密碼算法,其根據(jù)是有限域 上的橢圓曲線上的點群中的離散對數(shù)問題ECDLP (EllipticCurve Discrete Logarithm ftxAlem)。破解橢圓曲線密碼體制的時間復雜度是完全指數(shù)階的。與其他加密算法相比,有 抗攻擊性強,計算量小,處理速度快,占用資源少,帶寬要求低等特點,使得其在保密通信, 數(shù)字簽名,無線網(wǎng)絡(luò)等領(lǐng)域有廣泛的應(yīng)用前景。大數(shù)模乘運算作為ECC加密算法中的基本運算單元,貫穿ECC算法整個流程。大 數(shù)模乘器的性能直接影響到整個ECC處理器的面積和功耗,所以對大數(shù)模乘器的改進顯得 尤為重要。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種大數(shù)模乘器電路,能夠提高資源利用率,節(jié) 省芯片面積。為解決上述技術(shù)問題,本發(fā)明的大數(shù)模乘器電路包括—個二輸入與門,其兩個輸入端分別輸入N位數(shù)據(jù)A[N-1:0]和B的第i位數(shù) 據(jù)B[i],輸出端連接到第三個二選一選擇器MUX3的輸入端;將B的第i位數(shù)據(jù)B[i]與 A[N-1:0]中的每一位數(shù)據(jù)做與運算,S卩如果B[i]為1時,直接將A[N-1:0]作為二輸入與 門的運算結(jié)果輸出到MUX3 ;如果B[i]為0時,則將0作為二輸入與門的運算結(jié)果輸出到 MUX3 ;數(shù)據(jù)左移1位模塊,其輸入端連接到N+2位加法器的輸出端Dout_c,其輸出端連 接到第一個二選一選擇器MUXl的輸入端;將N+2位加法器的輸出結(jié)果C左移一位輸出到 MUXl ;第一個二選一選擇器MUX1,兩個輸入端分別連接到N+2位加法器的輸出端Dout_c 以及數(shù)據(jù)左移1位模塊的輸出端,其輸出端連接到第二個二選一選擇器MUX2的輸入端;在 選擇與控制模塊的控制下,選擇N+2位加法器的輸出C或者數(shù)據(jù)左移1位模塊的輸出2C輸 出到第二個二選一選擇器MUX2 ;第二個二選一選擇器MUX2,其一個輸入端連接到第一個二選一選擇器MUXl的輸出端,另一個輸入端輸入常數(shù)0,其輸出端連接到N+2位加法器的輸入端Din_a ;在選擇與控 制模塊的控制下,選擇第一個二選一選擇器MUXl的輸出C或者0輸出到N+2位加法器;第三個二選一選擇器MUX3,其一個輸入端連接到二輸入與門的輸出端,另一個輸 入端輸入常數(shù)負P(即-P),其輸出端連接到N+2位加法器的輸入端Din_b ;在選擇與控制 模塊的控制下,選擇二輸入與門的輸出結(jié)果或者常數(shù)-P輸出到N+2位加法器;N+2位大數(shù)加法器,其兩個輸入端中,Din_a端連接到第二個二選一選擇器MUX2的 輸出端,0丨11_13端連接到第三個二選一選擇器MUX3的輸出端,其輸出端Dout_c同時連接到 第一個二選一選擇器MUXl的輸入端、左移1位模塊的輸入端和大數(shù)模乘器的輸出端C ;對 其輸入的數(shù)據(jù)進行加法運算,產(chǎn)生的結(jié)果由Dout_c端輸出;選擇與控制模塊,包含一個N+2位比較器,用于控制所述三個二選一選擇器,以及 整個運算過程的數(shù)據(jù)流向和運算過程,保證整個電路正常工作;其中,0≤i≤N-I ;A, B,P均是位寬為N的二進制無符號大數(shù)。采用Blakley算法實現(xiàn)大數(shù)模乘器時,需要用到多個大數(shù)加法器來參與運算。隨 著安全性要求提高,使得大數(shù)位數(shù)N增加,由此帶來的資源消耗越來越大。本發(fā)明的大數(shù)模乘器電路能節(jié)省兩個N+2位加法器和一個N+2位比較器資源 ’傳 統(tǒng)電路實現(xiàn)Blakley算法時至少需要三個N+2位大數(shù)加法器和兩個N+2位比較器;而本發(fā) 明的電路結(jié)構(gòu)通過資源復用,只需要一個N+2位大數(shù)加法器和一個N+2位比較器,從而節(jié)省 了大量芯片面積,降低了功耗;本發(fā)明實現(xiàn)過程簡單,可用于設(shè)計ECC,RSA等加密處理器, 適用于在FPGA及ASIC中實現(xiàn)。
下面結(jié)合附圖與具體實施方式
對本發(fā)明作進一步詳細的說明圖1是大數(shù)模乘器電路一實施例結(jié)構(gòu)圖;圖2是大數(shù)模乘器運算流程圖。
具體實施例方式如圖1所示,在一實施例中,所述的大數(shù)模乘器電路包括一個二輸入與門,一個數(shù) 據(jù)左移1位模塊,三個二選一選擇器MUXl,MUX2和MUX3,一個N+2位加法器以及選擇與控 制模塊。其中,選擇與控制模塊包含一個用來比較C與P大小的N+2位比較器,一個下標i 與1相減的電路以及一個用于判斷i是否小于0的比較器,用于控制所述三個二選一選擇 器,以及整個運算過程的數(shù)據(jù)流向和運算過程,保證整個電路正常工作。在所述選擇與控制 模塊的控制和協(xié)調(diào),使得整個電路在滿足模乘功能的前提下,實現(xiàn)N+2位比較器和N+2位加 法器的復用。模乘一般表示為C = (A*B)mod P 0 ≤ A,B < P其中A,B, P都是位寬為N的二進制無符號大數(shù)。模乘器由兩部分運算組成,先對 A和B作乘法運算,然后再模以P。1983年Blakley基于該計算式提出了一種加法型模乘算法,其設(shè)計思想是將模乘 轉(zhuǎn)換為一系列加法運算。為使最終結(jié)果C小于P,每次計算的中間結(jié)果都需做求模運算。
Blakley 算法如下輸入A= {An_1 An^2-A1, A0IB = {Bn_1 Bn^2-B1, B0Iρ = {Ph,Pn^P1,p0}C = O輸出C=(A*B)modP其中,C= UwCnCcJ運算過程如下UC = O;2、For i = Oto(N-I);3、 {4、C = 2〇+Α*Βν_η ;5、If (C 彡 P);6、C = C_P;7、If (C 彡 P);8、C = C_p;9、}10、Return C。由上面的Blakley算法可知,在第4步,第6步和第8步都需要進行加法運算,需 要3個N+2位加法器;在第5步和第7步都需要進行比較操作,需要2個N+2位比較器。由 于Blakley算法中的所有運算都是串行的,故能通過加法器的復用來節(jié)省系統(tǒng)資源。本發(fā) 明就是采取第6步和第8步的加法運算復用第4步所使用的N+2位加法器,同時第5步和 第7步共用同一個N+2位比較器。N+2位加法器的兩個輸入端分別為Din_a,Din_b,輸出端為Dout_c,則在選擇與
控制模塊的控制下,不同時期加法器的輸入輸出情況如下表所示
Din aDin bDout c第4步i = 00A*B[i]A*B[i]i乒02CA*B[i]2C + A*B[i]第6/8步C-PC+ (-P)當A,B到達時,A的值直接輸入模乘器,而B的值由高到低按位輸入模乘器,C的 初始值為0,計數(shù)器i的初始值為N-1,在選擇與控制模塊的控制下大數(shù)模乘器電路開始運 算,最終的運算結(jié)果由大數(shù)模乘器電路的輸出端C輸出。參見圖2,所述大數(shù)模乘器運算流程是大數(shù)模乘器初始化時,A = {A[N-1],… A[1],A
},B = {B [N-1], -B[1],B
},P = {P [N-1],…P [1],P
},累計變量 C 也是 N位數(shù),值為0,下標i的值為N-I ;第一次運算時,大數(shù)模乘器輸出端C輸出的初始值為0, 經(jīng)MUX2送往N+2位加法器,同時把A*B [i]的值經(jīng)MUX3送往N+2位加法器,然后由N+2位加法器進行兩者相加的運算C = 0+A*B[i];運算完成后,把運算結(jié)果C送往N+2位比較器 中,與P進行比較;如果C不小于P,則把C的值送往MUXl,經(jīng)MUX2送往N+2位加法器,同時 把常數(shù)-P送往N+2加法器,使C與-P做加法運算C = C+ (-P);運算完畢,再把運算結(jié)果C 送到N+2位比較器中,與P進行比較,如果C仍然不小于P,則重復上面得操作;如果C小于 P,則本次的運算過程結(jié)束,計數(shù)器i自減1,并判斷減1后計數(shù)器的值i是否小于0,如果i 不小于0,說明B中還有數(shù)據(jù)位沒有參與運算,則把本次的運算結(jié)果C左移1位,經(jīng)由MUX1, MUX2送往N+2位加法器,同時把AB[i]經(jīng)MUX3送往N+2位加法器,開始下一次的運算;如 果i小于0,說明B中所有數(shù)據(jù)位都參與了運算,此時運算已經(jīng)完成,輸出運算結(jié)果C。由于0彡A,B < P,即有ZC+A^^+i < 3P,故在傳統(tǒng)的模乘結(jié)構(gòu)中,用1個N+2位 加法器完成2C+A*Bn_h運算后,為保證2C+A*Bn_H的運算結(jié)果小于P,還需兩個N+2位的比 較器和兩個N+2位的加法器來做求模運算OC+A^Hjmod P。而在本發(fā)明中,做求模運算 (2C+A*BN_1_i)mod P時所需的兩次加法運算操作復用做2C+A*Bn_h運算的那個N+2位加法 器,同時兩次比較操作復用同一個N+2位比較器。選擇與控制模塊控制三個二選一選擇器 來選擇加法器的輸入數(shù)據(jù)。由此可知,與現(xiàn)有的技術(shù)相比,本發(fā)明能節(jié)省一個N+2位比較器 和兩個N+2位加法器。在安全性要求越來越高的今天,密碼體系中操作數(shù)的位寬N越來越 大,N+2位寬的加法器和比較器所占用的資源在密碼系統(tǒng)中的比重也越來越大,從而使得本 發(fā)明所帶來的資源節(jié)約顯得愈發(fā)重要。以上通過具體實施方式
對本發(fā)明進行了詳細的說明,但這些并非構(gòu)成對本發(fā)明的 限制。在不脫離本發(fā)明原理的情況下,本領(lǐng)域的技術(shù)人員還可做出許多變形和改進,這些也 應(yīng)視為本發(fā)明的保護范圍。
權(quán)利要求
1.一種大數(shù)模乘器電路,其特征在于,包括一個二輸入與門,其兩個輸入端分別輸入N位數(shù)據(jù)A [N-1 0]和B的第i位數(shù)據(jù)B [i], 輸出端連接到第三個二選一選擇器MUX3的輸入端;將B的第i位數(shù)據(jù)B[i]與A[N-1:0]中 的每一位數(shù)據(jù)做與運算;數(shù)據(jù)左移1位模塊,其輸入端連接到N+2位加法器的輸出端Dout_c,其輸出端連接到第 一個二選一選擇器MUXl的輸入端;將N+2位加法器的輸出結(jié)果C左移一位輸出到MUXl ;第一個二選一選擇器MUX1,兩個輸入端分別連接到N+2位加法器的輸出端Dout_c以及 數(shù)據(jù)左移1位模塊的輸出端,其輸出端連接到第二個二選一選擇器MUX2的輸入端;在選擇 與控制模塊的控制下,選擇N+2位加法器的輸出C或者數(shù)據(jù)左移1位模塊的輸出2C輸出到 第二個二選一選擇器MUX2 ;第二個二選一選擇器MUX2,其一個輸入端連接到第一個二選一選擇器MUXl的輸出端, 另一個輸入端輸入常數(shù)0,其輸出端連接到N+2位加法器的輸入端Din_a ;在選擇與控制模 塊的控制下,選擇第一個二選一選擇器MUXl的輸出C或者常數(shù)0輸出到N+2位加法器;第三個二選一選擇器MUX3,其一個輸入端連接到二輸入與門的輸出端,另一個輸入端 輸入常數(shù)-P,其輸出端連接到N+2位加法器的輸入端Din_b ;在選擇與控制模塊的控制下, 選擇二輸入與門的輸出結(jié)果或者常數(shù)-P輸出到N+2位加法器;N+2位大數(shù)加法器,其兩個輸入端中,Din_a端連接到第二個二選一選擇器MUX2的輸出 端,0丨11_13端連接到第三個二選一選擇器MUX3的輸出端,其輸出端Dout_c同時連接到第一 個二選一選擇器MUXl的輸入端、左移1位模塊的輸入端和大數(shù)模乘器的輸出端C ;對其輸 入的數(shù)據(jù)進行加法運算,產(chǎn)生的結(jié)果由Dout_c端輸出;選擇與控制模塊,包括一個N+2位比較器,用于控制所述三個二選一選擇器,以及整個 運算過程的數(shù)據(jù)流向和運算過程,保證整個電路正常工作;其中,0彡i彡N-I ;A, B, P均是位寬為N的二進制無符號大數(shù)。
2.根據(jù)權(quán)利要求1所述的大數(shù)模乘器電路,其特征在于所述二輸入與門進行與操作 時,如果B的第i位數(shù)據(jù)B[i]為1時,直接將A[N-1:0]作為二輸入與門的運算結(jié)果輸出到 MUX3 ;如果B的第i位數(shù)據(jù)B[i]為0時,則將0作為二輸入與門的運算結(jié)果輸出到MUX3。
3.根據(jù)權(quán)利要求1所述的大數(shù)模乘器電路,其特征在于第一次運算時,大數(shù)模乘器輸 出端C輸出的初始值為0,經(jīng)MUX2送往N+2位加法器,同時把A*B [i]的值經(jīng)MUX3送往N+2 位加法器,然后由N+2位加法器進行兩者相加的運算C = 0+A*B[i];運算完成后,把運算 結(jié)果C送往N+2位比較器中,與P進行比較;如果C不小于P,則把C的值送往MUXl,經(jīng)MUX2 送往N+2位加法器,同時把常數(shù)-P送往N+2加法器,使C與-P做加法運算C = C+ (-P);運 算完畢,再把運算結(jié)果C送到N+2位比較器中,與P進行比較,如果C仍然不小于P,則重復 上面得操作;如果C小于P,則本次的運算過程結(jié)束,計數(shù)器i自減1,并判斷減1后計數(shù)器 的值i是否小于0,如果i不小于0,說明B中還有數(shù)據(jù)位沒有參與運算,則把本次的運算結(jié) 果C左移1位,經(jīng)由MUXl,MUX2送往N+2位加法器,同時把AB[i]經(jīng)MUX3送往N+2位加法 器,開始下一次的運算;如果i小于0,說明B中所有數(shù)據(jù)位都參與了運算,此時運算已經(jīng)完 成,輸出運算結(jié)果C。
全文摘要
本發(fā)明公開了一種大數(shù)模乘器電路,包括一個二輸入與門,一個數(shù)據(jù)左移1位模塊,三個二選一選擇器MUX1,MUX2,MUX3;一個N+2位大數(shù)加法器;選擇與控制模塊,包括一個N+2位比較器,用于控制所述三個二選一選擇器,以及整個運算過程的數(shù)據(jù)流向和運算過程,保證整個電路正常工作;在所述選擇與控制模塊的控制和協(xié)調(diào),使得整個電路在滿足模乘功能的前提下,實現(xiàn)N+2位比較器和N+2位加法器的復用。本發(fā)明能節(jié)省大量芯片面積,降低功耗,而且實現(xiàn)過程簡單,可用于設(shè)計ECC,RSA等加密處理器,適用于在FPGA及ASIC中實現(xiàn)。
文檔編號G06F7/72GK102117195SQ20091020205
公開日2011年7月6日 申請日期2009年12月30日 優(yōu)先權(quán)日2009年12月30日
發(fā)明者左耀華 申請人:上海華虹集成電路有限責任公司