文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190106
中文引用格式: 楊丹陽,楊萱,陳韜,,等. 基于Kogge-Stone加法器改進的雙域模乘器[J].電子技術(shù)應(yīng)用,,2019,45(8):75-78,,82.
英文引用格式: Yang Danyang,,Yang Xuan,Chen Tao,,et al. Dual-field modular multiplier using Kogge-Stone adder[J]. Application of Electronic Technique,2019,,45(8):75-78,,82.
0 引言
公鑰密碼體制因其強大的安全性,廣泛應(yīng)用于信息安全領(lǐng)域,。橢圓曲線密碼算法與RSA相比,,具有相同安全性下運算速度更快、占用資源更少,、位寬更低的優(yōu)點,,成為新一代的公鑰密碼體制標準。橢圓曲線密碼處理器通常根據(jù)每秒鐘點乘的計算次數(shù)作為衡量其性能好壞的標準之一,。實現(xiàn)點乘運算,,要大量調(diào)用模乘、模除和模加減等有限域?qū)幽_\算,。模除運算最為復雜,,耗時最多,通常引入投影坐標系,,降低調(diào)用次數(shù),。而與模乘相比,模加減的運算量幾乎可以忽略。模乘是橢圓曲線密碼算法中最基本,、最核心的一種模運算,,提高其運算速度將有效提高橢圓曲線密碼處理器性能。
如今,,設(shè)計一種靈活高效,、適用于多種安全場景的模乘器仍然是研究熱點。文獻[1]基于CPA和CSA結(jié)構(gòu)實現(xiàn)了的統(tǒng)一的MALU單元,,能夠有效完成模運算,,資源復用率高,靈活性和可擴展性強,,但是隨著運算位寬的增加,,CPA的進位鏈會成為瓶頸,大大制約著電路的性能,。文獻[2]采用64位的基4 Kogge-Stone超前進位加法器實現(xiàn)DFA,,實現(xiàn)新型的Wallace數(shù)乘法單元,縮短了運算時間,,但硬件資源占用較多,。文獻[3]在Blakley算法的基礎(chǔ)上,提出改進的Radix-4快速模乘算法,,采用Booth編碼減少迭代次數(shù),,并采用符號估計技術(shù)避免大整數(shù)比較,還基于擴展Euclidean求逆算法,,設(shè)計統(tǒng)一硬件電路,,雖然面積很小,但是運算速度不高,。本文根據(jù)基于Radix-4交錯模乘算法[4],,采用進位保留加法器(Carry Save Adder,)和Kogge-Stone加法器(Kogge-Stone Adder,,KSA)[5]組合的加法結(jié)構(gòu),,縮短電路關(guān)鍵路徑,同時支持素數(shù)域GF(p)和二元域GF(2m)的模乘運算,。根據(jù)操作數(shù)位寬控制迭代輪數(shù),,靈活適配各種長度的模乘運算。
1 背景介紹
1.1 Kogge-Stone加法器
在硬件電路設(shè)計中,,基礎(chǔ)的加減乘除運算,,最終都可以通過多次加法計算來實現(xiàn),因此加法器是許多運算模塊的基礎(chǔ)單元,,其性能好壞直接關(guān)系到整個電路的性能,。對于傳統(tǒng)加法器,如串行進位加法器、進位選擇加法器,,高位的計算需要低位的進位輸出,。隨著運算位寬的增加,加法器的進位鏈不斷增長,,大大制約著加法器的運算性能,。為了減少進位時間,1973年,,KOGGE P M和STONE H S提出了并行前綴的超前進位加法器,,使高位的計算與前一位的進位結(jié)果無關(guān),從而大大提高加法器的速度,。
本文中KSA采用4位一組的點操作,,計算延遲是log4N級點操作的延遲,與普通的二進制KSA加法器結(jié)構(gòu)相比速度提高一倍,。圖1是以計算16位加法為例的四進制KSA結(jié)構(gòu)[4],,該結(jié)構(gòu)由三種基本單元構(gòu)成,。最上面的正方型代表前置進位信號產(chǎn)生電路,,用于產(chǎn)生進位傳播信號Pi和進位產(chǎn)生信號Gi。最下面的菱形表示最終的進位生成電路與求和電路,,用于產(chǎn)生每一位的進位信號Ci與加法和Si,。中間的圓形代表Kogge-Stone樹結(jié)構(gòu),用于產(chǎn)生進位信號Ci所需的中間結(jié)果,,包括塊進位產(chǎn)生信號和塊進位傳播信號,。
1.2 進位保留加法器
進位保留加法器(CSA)常用于多操作數(shù)的加法。假設(shè)計算三個m比特的操作數(shù)A,、B和C的和,,采用CSA結(jié)構(gòu),將輸出兩個結(jié)果:本位異或結(jié)果sum與進位carry,。還需要一個加法器將sum和carry相加,,本文中,CSA和KSA共同完成三操作數(shù)相加,。
CSA用表達式可以表示為:
1.3 模乘算法分析
模乘是橢圓曲線密碼的核心運算,,本文中交錯模乘算法如算法1所示,支持素數(shù)域GF(p)和二元域GF(2m)上的運算,。
二元域運算與素數(shù)域的不同在于二元域運算沒有進位,,運算更加簡單。素數(shù)域中的模數(shù)P,,在二元域中表示為不可約多項式F(x),。模乘素數(shù)域用進行2Amod P、4Amod P和x+y+zmod P三種運算,在二元域中表示為x·A(x)mod F(x),、x2·A(x)mod F(x)和xyz,。
2 模乘結(jié)構(gòu)
2.1 模乘總體結(jié)構(gòu)
根據(jù)Radix-4交錯模乘算法,本文設(shè)計了長度可變的雙域模乘器,,其總體結(jié)構(gòu)如圖2所示,。實線框內(nèi)表示素數(shù)域的模乘運算單元,長虛線框內(nèi)表示用于二元域模乘的運算單元,。短虛線框中標出的是本結(jié)構(gòu)中的復用部分,,一是x2·A(x)modf(x)結(jié)構(gòu)復用了x·A(x)modf(x)結(jié)構(gòu);二是復用x+y+zmod P結(jié)構(gòu)中的CSA0中三操作數(shù)的異或輸出sum,,實現(xiàn)二元域上的三操作數(shù)相異或,。
該結(jié)構(gòu)由運算單元、控制器和中間數(shù)據(jù)寄存器組成,。
運算單元是雙域模乘器的核心部分,,主要包括2Amod P結(jié)構(gòu)、4Amod P結(jié)構(gòu),、x+y+zmod P結(jié)構(gòu),、x·A(x)mod f(x)結(jié)構(gòu)和x2·A(x)mod f(x)結(jié)構(gòu)。
中間數(shù)據(jù)寄存器主要用于寄存每一輪迭代計算出的U,、V,、A、B的值,,數(shù)據(jù)選擇器選擇寄存運算單元的結(jié)果,。
控制器基于狀態(tài)機設(shè)計,產(chǎn)生數(shù)據(jù)路徑中數(shù)選器的選擇信號,,以控制數(shù)據(jù)路徑中的數(shù)據(jù)流向,,完成雙域模乘運算時各個模塊的調(diào)度控制。并根據(jù)域選擇信號以及數(shù)據(jù)長度,,進行判斷執(zhí)行素數(shù)域還是二元域運算,,以及迭代輪數(shù)。
2.2 雙域模乘器運算單元
2.2.1 素數(shù)域
(1)2Amod P結(jié)構(gòu)
實現(xiàn)2Amod P,,即完成A左移一位,,再判斷2A與P的大小決定是否進行“-P”操作,以實現(xiàn)0≤2Amod P<P,。由于0≤A<P,,則0≤2A<2P,故2Amod P的結(jié)果分兩種情況:
2Amod P結(jié)構(gòu)如圖3所示,,該結(jié)構(gòu)由一個KSA和一個數(shù)據(jù)選擇器組成,。KSA主要用來計算2A-P,,數(shù)據(jù)選擇器將KSA的進位輸出作為數(shù)選信號,判斷2Amod P的輸出結(jié)果,。
(2)4Amod P結(jié)構(gòu)
實現(xiàn)4Amod P,,首先A左移兩位,再判斷4A與P的大小,,重復進行“-P”操作直至0≤4Amod P<P,。由于0≤A<P,則0≤4A<4P,,故4Amod P的結(jié)果分四種情況:
4Amod P結(jié)構(gòu)如圖4所示,,該結(jié)構(gòu)由1個CSA和3個KSA組成。并行計算4A-P,、4A-2P,、4A-3P,根據(jù)三個KSA的進位輸出作為數(shù)選信號,,選擇最后輸出結(jié)果,。
(3)x+y+zmod P結(jié)構(gòu)
實現(xiàn)x+y+zmod P,先計算x+y+z,,再判斷x+y+z與P的大小,,重復進行“-P”操作直至0≤x+y+zmod P<P。由于0≤x,、y,、z<P,,則0≤x+y+z<3P,,故x+y+zmod P的結(jié)果分三種情況:
x+y+zmod P結(jié)構(gòu)如圖5所示,該結(jié)構(gòu)由3個CSA和3個KSA組成,。并行計算x+y+z,、x+y+z-P、x+y+z-2P,,根據(jù)KSA1和KSA2的進位輸出作為數(shù)選信號,,選擇最后輸出結(jié)果。
2.2.2 二元域
二元域不同于素數(shù)域,,算法更為簡單,,移位與異或即可實現(xiàn)x乘,將操作數(shù)按位異或即可實現(xiàn)加法,,無需考慮進位,。
(1)加法結(jié)構(gòu)
本文中,二元域三操作數(shù)異或通過復用x+y+zmod P結(jié)構(gòu)中的CSA0實現(xiàn),。
(2)x乘結(jié)構(gòu)
實現(xiàn)x·A(x)mod f(x),,即將A(x)左移一位,,如果am-1=1,將之與f(x)進行異或,。
其結(jié)構(gòu)如圖6所示,,將此結(jié)構(gòu)進行級聯(lián),即可實現(xiàn),。
3 性能分析
本文采用Verilog HDL硬件描述語言對雙域模乘器進行RTL級描述,,并利用ModelSim進行功能仿真驗證。在0.18 μm CMOS工藝標準單元庫對雙域模乘器進行邏輯綜合,,綜合工具使用Synopsys公司的Design Complier,。綜合結(jié)果表明,雙域模乘器占用硬件資源66 518 gates,,最高時鐘可達到476 MHz,,計算256 bit的模乘運算僅需0.27 μs。
本文中雙域模乘器結(jié)構(gòu)的關(guān)鍵路徑在于CSA和KSA組合的加法結(jié)構(gòu),。為了驗證模乘器的性能,,將本文和其他文獻的模乘單元的性能進行比較,其結(jié)果如表1所示,。本文與文獻[2]相比,,模乘運算時間降低了20.59%,且面積減小了55.67%,。本文的運算時間是文獻[6]的3.38倍,,但面積大概只有文獻[6]的1/10。與文獻[3]相比,,雖然面積略大,,但256 bit的計算時間降低了87.2%。與文獻[7]相比,,本文速度降低不多,,但面積減小了28.26%。綜上,,本文的雙域模乘器在速度和面積上具有綜合優(yōu)勢,。
綜合比較,本設(shè)計能同時支持素數(shù)域GP(p)和二元域GP(2m)的模乘運算,,并且適配不同長度的位寬需求,,具有較強的靈活性和可擴展性。
4 結(jié)論
本文基于雙域Radix-4交錯模乘算法,,采用CSA和KSA組合的加法結(jié)構(gòu),,實現(xiàn)長度可伸縮的雙域模乘器。采用基于Kogge-Stone結(jié)構(gòu)的并行前綴加法器,,減小了進位延遲,,縮短了該模乘單元的關(guān)鍵路徑,,大大提高了運算頻率,尤其當運算位寬越大,,優(yōu)勢越明顯時,。結(jié)構(gòu)上復用了素數(shù)域x+y+zmod P結(jié)構(gòu)的CSA0加法器中的異或門實現(xiàn)二元域中的三操作數(shù)的異或,減少硬件資源,,提高單元利用率,。
參考文獻
[1] LIU Z,LIU D,,ZOU X.An efficient and flexible hardware implementation of the dual-field Elliptic curve cryptographic processor[J].IEEE Transactions on Industrial Electronics,,2017,64(3):2353-2362.
[2] 郭曉,,蔣安平,,宗宇.SM2高速雙域Montgomery模乘的硬件設(shè)計[J].微電子學與計算機,2013(9):17-21.
[3] 陳光化,,朱景明,,劉名,等.雙有限域模乘和模逆算法及其硬件實現(xiàn)[J].電子與信息學報,,2010,,32(9):2095-2100.
[4] 李泉龍.基于Kogge-Stone算法與多米諾邏輯的64位高性能加法電路設(shè)計[D].成都:西南交通大學,2016.
[5] KOGGE P M,,STONE H S.A parallel algorithm for the efficient solution of a general class of recurrence Equations[J].IEEE Transactions on Computers,,1973,C-22(8):786-793.
[6] 廖望,,萬美琳,,戴葵,等.可擴展雙域模乘器設(shè)計與研究[J].華中科技大學學報(自然科學版),,2015(9):51-54.
[7] 李嘉敏,,戴紫彬,,王益?zhèn)?可編程可伸縮的雙域模乘加器研究與設(shè)計[J].電子技術(shù)應(yīng)用,,2018,44(1):28-32,,36.
作者信息:
楊丹陽1,,楊 萱2,陳 韜1,,戴紫彬1,,李 偉1
(1.信息工程大學,河南 鄭州450001,;2.江南計算技術(shù)研究所,,江蘇 無錫214083)