《電子技術(shù)應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于System Generator的ECC加解密系統(tǒng)設計
基于System Generator的ECC加解密系統(tǒng)設計
來源:電子技術(shù)應用2012年第4期
肖雪芳1, 蘇 航2, 雷國偉2
1. 廈門理工學院 電子與電氣工程系, 福建 廈門 361024; 2. 集美大學 理學院, 福建 廈門361021
摘要: 根據(jù)橢圓曲線密碼體制的幾種關(guān)鍵算法,采用Modelsim仿真工具設計相應的算法模塊。然后將各模塊代碼通過System Generator生成對應的系統(tǒng)模塊,再將這些模塊搭建成完整的ECC系統(tǒng)。最后對整個ECC系統(tǒng)進行仿真,實驗數(shù)據(jù)進一步驗證了該設計的正確性。
關(guān)鍵詞: systemgenerator 橢圓曲線 有限域
中圖分類號: TN46;TP309
文獻標識碼: A
文章編號: 0258-7998(2012)04-0134-03
Design of ECC system based on System Generator
Xiao Xuefang1, Su Hang2, Lei Guowei2
1. Department of Electronic and Electrical, Xiamen University of Technology, Xiamen 361024, China; 2. School of Science, Jimei University, Xiamen 361021, China
Abstract: Based on several key algorithms of ECC(Elliptic Curve Cryptosystem), each module of the algorithms was designed via Modelsim tool. Then the source codes of each module were generated into its counterpart of ECC system by System Generator. and the modules were grouped into ECC system. Finally, the system was simulated and verified by experimental results.
Key words : System Generator; elliptic curve; finite field

    橢圓曲線密碼系統(tǒng)(ECC)與其他公鑰加密系統(tǒng)相比,因其密鑰長度短、安全強度高等諸多優(yōu)點,被公認為最有前途的公鑰密碼體系,受到人們的普遍關(guān)注和研究[1-4]。

    在國內(nèi)外有關(guān)ECC的研究方面,主要集中在 ECC的時間復雜度和空間復雜度上[2-4]。參考文獻[2]研究模逆和標乘的快速算法,參考文獻[3]針對KP算法將改進的Booth算法嵌入傳統(tǒng)算法,極大地降低了迭代次數(shù)和有限域運算量。參考文獻[4]將所有的模運算全轉(zhuǎn)化為模乘運算和模加運算,并改進了LSD乘法器,利用該單元進行模運算,從而其硬件實現(xiàn)了具有面積小、速度快等優(yōu)點。目前國內(nèi)的密碼技術(shù)還是落后于國外,特別是在生活應用中,國內(nèi)的企業(yè)基本上是引用國外的密碼技術(shù)進行二次開發(fā)。如果要將實現(xiàn)的橢圓曲線密碼系統(tǒng)應用到實際中,則需要通過系統(tǒng)集成芯片設計(SOC),將FPGA上實現(xiàn)的橢圓曲線密碼系統(tǒng)集成實用性的加密芯片。一旦設計過程中所需的資源和條件不夠完善,將導致加密芯片的制作難以實現(xiàn)。為此,本文借助Xilinx公司提供的強大的系統(tǒng)級硬件仿真工具System Generator[5],研究并設計ECC加解密系統(tǒng)。
1 橢圓曲線密碼體制
    由于最終是要在硬件上實現(xiàn)橢圓曲線密碼體制[6],所以本文選擇的有限域是特征為2的GF(2n),選擇的橢圓曲線方程如式(1)所示。
  
   
    可見橢圓曲線密碼體制涉及到GF(2n)上的模加運算、模乘運算、求逆運算,還有橢圓曲線的KP點乘運算,下面對幾個主要算法進行分析。
1.1 GF(2n)域上的模乘運算
    模乘模塊是整個設計中最關(guān)鍵的模塊,模乘的過程包括多項式相乘和取模兩個過程。傳統(tǒng)的乘法器是將兩個m位操作數(shù)相乘,然后對其進行f(x)求模。這樣的缺點就是需要一個2m位的寄存器來存儲中間結(jié)果,勢必會浪費資源。本文采用全串行移位相加法來實現(xiàn)模乘運算[6]。該算法只有簡單的移位和“異或”運算,但是需要大量的移位運算,如果A、B具有m位,則需要進行m-1次移位運算,這是比較耗時的。但是本文使用的FPGA工作在61.44 MHz時鐘下,m一般取值在200左右,因此全串行移位相加法大概需要的是ns級的時間,而且全串行移位算法也是最節(jié)省資源的算法。通過Modelsim仿真該模塊,得到圖1所示結(jié)果。其中, clk是系統(tǒng)時鐘61.44 MHz;reset是系統(tǒng)復位信號;en是使能端口;din是乘數(shù)輸入端口,低位在前;dout是輸出結(jié)果;rdy是輸出結(jié)果有效指示。

1.2 GF(2n)域上的模逆運算
     對于GF(2n)域上的模逆運算,當今最有效的算法就是擴展歐幾里德算法和基于費馬定理的模逆算法。擴展歐幾里德算法用時會比基于費馬定理的模逆算法用時短很多,但是相應地是以犧牲硬件資源為代價,在后面的點乘算法和最后的橢圓曲線密碼體制的實現(xiàn)耗用資源很大。擴展歐幾里德算法還要去另外設計一個多項式模塊,而基于費馬定理的模逆算法只需要反復調(diào)用先前做好的模乘模塊就行,再加上本文用的FPGA時鐘頻率本身就高,因此本文選擇費馬定理來做模逆算法。通過Modelsim仿真該模塊,得到圖2所示結(jié)果。其中,clk是系統(tǒng)時鐘61.44 MHz;reset是系統(tǒng)復位信號;en是模逆使能;din是輸入數(shù)據(jù);a_inv是輸出結(jié)果;rdy是輸出結(jié)果有效指示。

    選取參數(shù):
    K=157E51751D89C66CBDF44596BF7F653876A18C4B12
40B85A;
    x=36B3DAF8A23206F9C4F299D7B21A9C369137F2C84
AE1AA0D;
    y=7658E73433B3F95E332932E70EA245CA2418EA0EF9
8018FB;
    b=2E45EF571F00786F67B0081B9495A3D95462F5DE0A
A185EC;
    f=800000000000000000000000000000000000000000000
201。
    仿真結(jié)果:
    Cx=34EEC5768673E71B8CDC139FB8EB4ACD9989FAA
E1EC9EF1D;
    Cy=779097F490A2DA7A6B09A9518733B4817D5C21947
547D2A1。
2 System Generator搭建ECC加密系統(tǒng)
    System Generator是業(yè)內(nèi)領(lǐng)先的高級系統(tǒng)級FPGA開發(fā)工具。其作用是借助FPGA設計高性能DSP系統(tǒng)并和Simulink實現(xiàn)無縫鏈接,快速建模并自動生成代碼[5]。System Generator最大的特點就是可利用Simulink建模和仿真環(huán)境來實現(xiàn)FPGA設計,無需了解和使用RTL級硬件語言,讓DSP設計者能夠發(fā)揮基于FPGA的DSP的最大性能和靈活性,并縮短整個設計周期。前文用FPGA實現(xiàn)了ECC的各個關(guān)鍵模塊,下面用先前生成的各個模塊代碼通過System Generator的黑盒子生成各自相應的模塊。再將這些模塊搭建成完整的ECC模塊,以便在Matlab工作空間中輸入相應的參數(shù)、明文和相應的使能端口就可以實現(xiàn)加密;輸入相應的參數(shù)、密文和相應的使能端口就可以實現(xiàn)解密。但是本文所涉及的參數(shù)較大,輸入的過程很耗費時間,因此本文將參數(shù)都固定在一個ROM中間,只要控制相應的使能信號,就可以達到一個加解密的模擬過程。
2.1數(shù)據(jù)輸入模塊的搭建
    本文中的端口有使能端口和參數(shù)端口,其中,使能端口是1 bit的,就可以用計數(shù)器來實現(xiàn)。對于191個bit位的參數(shù),可先將其分解成6組的32 bit系數(shù), 存在如圖4所示的ROM中,只要改變ROM中的值就可以控制輸入?yún)?shù)的值,改變3個常數(shù)模塊就可以控制參數(shù)輸入的時刻。

 

 

2.2 ECC系統(tǒng)的搭建與仿真結(jié)果
    利用代碼生成的KP模塊、求逆模塊和乘法模塊搭建成ECC加解密系統(tǒng)。由于ECC加解密系統(tǒng)的各個子模塊有很多的反饋端口,搭建起來的圖顯得比較亂,因此可以在ECC系統(tǒng)中的m文件添加 this block.addFile()。把各個子模塊添加到ECC頂層模塊中,這樣就相當于把各個子模塊集成在統(tǒng)一的黑盒子中。
    設置運行時間為4 000 000個時鐘周期,將加解密指示信號設置為加密,點擊運行,進行加密仿真,在工作區(qū)間可以看到,明文輸入和對應的密文輸出。例如,當輸入的明文為“4129534493046158328227537522838960054530294419451055575666”時,輸出的密文為“3625519732263338515328819742424233936313311718087”。
    設置運行時間為4 000 000個時鐘周期,將加解密指示信號設置為解密,點擊運行,進行解密仿真,在工作區(qū)間可以看到密文輸入和對應的的明文輸出。例如,當輸入的密文為“362551973226333851532881974242423393631
3311718087”, 則輸出的明文為“4129534493046158328227537522838960054530294419451055575666”。
    ECC模塊加解密運算輸出有效數(shù)據(jù)的時鐘周期是第3274550,使能信號則是在第11個時鐘周期輸入,因此整個運算過程中數(shù)據(jù)的輸入輸出所耗費的時間是3274550-11=3 274 539個時鐘周期,所以對于采用時鐘頻率為61.44 MHz的FPGA來說,只要用3 274 539/61.44 ?滋s就可以完成一次加密算法,或者一次解密算法??偣灿玫臅r間為3274539/61.44 ns=53.3 ms,而若單單只用Matlab仿真運行,大概需要時間為20 min。因此采用硬件實現(xiàn)橢圓曲線密碼系統(tǒng)的優(yōu)越性不言而喻。
參考文獻  
[1] HANKERSON D,MENEZES A, VANSTONE S. Guide to elliptic curve cryptography[M]. Springer Verlag New York Inc,2004:25-147.
[2] MA S W, HAO Y L, PAN Z Q. Fast  implementation for modular inversion an d scalar multiplication in the elliptic curve cryptography[C].IITA ’08,Beijing,China,2008:488-492.
[3] 龔書,劉文江,戎蒙恬.一種橢圓曲線密碼加密算法及實現(xiàn)[J].高技術(shù)通訊,2004(3):25-28.
[4] 唐薛峰,沈海斌,嚴曉浪.GF(2^m)上橢圓密碼體制的硬件實現(xiàn)[J].計算機工程與應用,2004,40(11):96-98.
[5] 田耕,徐文波,胡彬.Xilinx ISE Design Suite 10.x FPGA開發(fā)指南[M].北京:人民郵電出版社,2008.
[6] 祝躍飛,張亞娟.橢圓曲線公鑰密碼導引[M]. 北京:科學出版社,2006.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。