《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的改進DES算法的實現(xiàn)
基于FPGA的改進DES算法的實現(xiàn)
來源:電子技術應用2011年第4期
張捍東, 朱明慧
安徽工業(yè)大學 電氣信息學院, 安徽 馬鞍山243002
摘要: 介紹了DES算法原理,詳細分析了子密鑰生成、S盒和輪函數(shù)的設計。將DES算法采用資源優(yōu)先方案,在輪函數(shù)內(nèi)部設置流水線架構(gòu),提高了整體處理速度;簡化子密鑰與原始密鑰的生成關系,實現(xiàn)子密鑰在迭代過程的動態(tài)分發(fā);利用雙重case語句實現(xiàn)S盒的變換功能,加快算法執(zhí)行速度。運用硬件描述語言Verilog,采用自頂向下的設計思想,在FPGA平臺上實現(xiàn)了改進DES算法的功能。
關鍵詞: FPGA DES Verilog語言
中圖分類號: TP309.7
文獻標識碼: A
文章編號: 0258-7998(2011)04-0138-04
The implementation of improved DES algorithm based on FPGA
Zhang Handong, Zhu Minghui
School of Electrical Engineering and Information, Anhui University of Technology, Ma′anshan 243002,China
Abstract: In the paper, on the foundation of introducing the principle of the DES algorithm, the generation of sub-key, the design of S-box and the round-function are analyzed in detail. The DES algorithm adopts the scheme of optimal resources. Firstly, by setting the pipeline architecture inside the round-function, it improves the processing speed of whole system. Secondly, by simplifying the generation relationship between sub-key and original key, it implements the dynamic distribution of sub-key during the iteration. Thirdly, by using the double case statement, it implements the trans-formation function of S-box and accelerates the execution speed of the DES algorithm. With the help of using the hardware description language (Verilog) and the top-down design idea, it implements the function of improved DES algorithm on the FPGA platform.
Key words : data encryption standard (DES); verilog language; FPGA


    為了解決數(shù)據(jù)在網(wǎng)絡通信中的安全傳輸問題,通常采用分組加密技術對數(shù)據(jù)信息進行加密保護,其中最具有代表性的是數(shù)據(jù)加密標準DES。DES加密算法已成為應用非常廣泛的一種分組對稱加密算法,該算法具有極高的安全性。到目前為止,除了窮舉搜索法對DES算法進行攻擊外,還沒有發(fā)現(xiàn)更有效的方法。目前,DES算法廣泛應用于衛(wèi)星通信、網(wǎng)關服務器、網(wǎng)絡通信設備、智能卡(IC卡)等領域[1]。其實現(xiàn)方法通常分為軟件實現(xiàn)和硬件實現(xiàn)兩種,由于軟件實現(xiàn)時速度較慢,最快速度不到150 Mb/s[2],且利用軟件實現(xiàn)DES算法在安全性方面也存在隱患,而應用硬件實現(xiàn)則可以克服以上的問題。現(xiàn)場可編程門陣列(FPGA)在算法實現(xiàn)方面具有靈活性、物理安全性,相對于軟件實現(xiàn),在速度和性能上具有明顯的優(yōu)勢。
    DES算法是以多輪的密鑰變換輪函數(shù)、子密鑰和數(shù)據(jù)異或運算的輪函數(shù)為特征,相應的硬件實現(xiàn)方法有兩種:一種是通過輪函數(shù)的16份硬件拷貝,達到深度細化的流水線處理,實現(xiàn)性能最優(yōu);另一種是通過時分復用,重復調(diào)用1份輪函數(shù)的硬件拷貝,以時間換空間,從而得到硬件資源占用的最小化。通過對系統(tǒng)的性能和資源占用進行綜合考慮,本文采用資源優(yōu)先方案。
    采用此方案系統(tǒng)消耗的資源較少,但運行速度受限。改進的方法是采取在輪函數(shù)內(nèi)部設置流水線結(jié)構(gòu)來提高整體處理的速度,同時子密鑰變換輪函數(shù)提供子密鑰,應與迭代輪函數(shù)保持同步工作狀態(tài),以減少迭代運算帶來的等待延遲。通過設置迭代輪計數(shù)器產(chǎn)生的算法狀態(tài)執(zhí)行指示位,控制輪函數(shù)的輸入和反饋,實現(xiàn)輪函數(shù)的復用。
1 DES算法概述與原理
  DES是一種分組加密算法,將64 bit的明文模塊輸入用64 bit密鑰加密得到64 bit密文輸出。其64 bit密鑰中有效密鑰只有56 bit,其余8 bit為奇偶校驗位,不參與運算。同時,它也是對稱加密算法,其加密和解密運算過程是一樣的,區(qū)別僅僅在于迭代時子密鑰的使用順序,算法本身并沒有任何變化。DES算法的處理流程如圖1所示。

    圖1(a)是整個算法的實現(xiàn)處理流程,64 bit的明文輸入模塊經(jīng)過初始置換IP后,改變了分組中每個bit的順序,并把置換輸出分為L0、R0兩部分;進入16輪迭代運算,每一輪迭代都要用到輪函數(shù)f,第16輪迭代兩輸出左右互換的結(jié)果R16、L16作為逆初始置換IP-1的輸入;64 bit的R16、L16經(jīng)過逆初始置換得到64 bit的密文輸出,IP·IP-1=I。
    圖1(b)是單輪迭代運算過程,也是一非線性變換的作用過程。第i輪迭代過程的具體描述可表示為[3]:
  
其中,㈩表示2 bit串的“異或”(按位模2加)。
    輪函數(shù)f是迭代運算的核心部分,正是在密鑰控制下多次利用論函數(shù)進行加密變換,才達到實現(xiàn)擴散和混淆的效果。輪函數(shù)f的功能由四個部分按順序完成:(1)將32 bit Ri-1輸入通過擴展E變換擴展為48 bit的數(shù)據(jù); (2)將擴展后的48 bit數(shù)據(jù)與對應的48 bit子密鑰Ki“異或”; (3)將異或結(jié)果分成8個6 bit分組,8個分組在8個不同的非線性S盒的作用下被轉(zhuǎn)變?yōu)?個4  bit分組,其中每個S盒都將6 bit輸入映射為4 bit輸出;(4)將S盒的輸出結(jié)果經(jīng)過P盒的換位置換,得到f(Ri-1,Ki)的32 bit輸出。
    DES實際有效的密鑰長度為56 bit,對于56 bit的密碼信息,每7 bit擴充1 bit奇偶校驗位,從而得到64 bit外部密鑰。外部密鑰輸入后,首先經(jīng)過重排PC-1表(剔除奇偶校驗位,打亂密碼信息順序)得到56 bit原始密鑰,并分成兩部分28 bit的輸出。每部分按循環(huán)移位次數(shù)表[4]移位,并按重排PC-2表置換得到每輪迭代所需的48位子密鑰。
2 DES算法的FPGA實現(xiàn)
    本設計選用資源優(yōu)先方案,即僅用硬件實現(xiàn)單輪密鑰變換和密鑰加數(shù)據(jù)運算的輪函數(shù),通過重復16次調(diào)用這一功能模塊來實現(xiàn)一次DES加/解密運算。該設計方案原理圖如圖2所示。當數(shù)據(jù)裝載信號置為高電平時,待加/解密數(shù)據(jù)通過數(shù)據(jù)選擇器送到輪函數(shù)的入口。同時在輪計數(shù)器的控制下,算法狀態(tài)執(zhí)行位置1。在第一個時鐘到來時,將數(shù)據(jù)(B1、B2)通過輪函數(shù)實現(xiàn)第一輪變換,經(jīng)過第一輪變換后的數(shù)據(jù)被寄存器鎖存。在下一個時鐘到來時,與相應輪的子密鑰一起再次被送到輪函數(shù)的輸入端,這樣循環(huán)16輪后,算法狀態(tài)執(zhí)行位置0,輸出最終數(shù)據(jù)。

    本文在對DES算法進行建模時,將整個算法分為子密鑰生成模塊、S盒非線性變換模塊、單輪迭代運算模塊和頂層模塊四個部分。其中,單輪迭代運算模塊調(diào)用子密鑰生成模塊和S盒模塊實現(xiàn)了一輪迭代運算功能。
2.1子密鑰的生成
    DES算法每一輪次迭代都需要一個子密鑰參與“異或”運算。傳統(tǒng)的硬件實現(xiàn)時,通過對外部密鑰的換位重組,以及每次迭代對應的不同次數(shù)的循環(huán)移位,預先生成子密鑰。這樣不僅語言描述復雜,占用的硬件資源較多,而且每輪密鑰移位次數(shù)也不同,需要的運算時間不同,會給算法的迭代運算帶來更大的等待延遲。
    外部密鑰先后經(jīng)過置換重排1、第n輪的循環(huán)移位和置換重排2這三個步驟得到第n輪的子密鑰。通過分析可知這一系列處理都只是位的置換,每輪迭代需要每一位子密鑰,相對于外部密鑰的每一位存在一定固定的對應關系。為了降低資源消耗,提高算法執(zhí)行速度,設計中可將三個步驟合并成一次位的置換。采用硬件描述語言Verilog HDL對子密鑰生成模塊進行組合邏輯設計,其仿真結(jié)果如圖3所示。圖中,mode為工作方式(=0時,加密;=1時,解密);外部密鑰為十六進制數(shù)133457799bbcdff1時,prekey為外部密鑰被剔除奇偶校驗位生成的56 bit有效密鑰重排PC-1得到的原始密鑰,newkey為經(jīng)過重排PC-2置換的48 bit子密鑰。只要改變迭代輪數(shù)ki,就會預先生成子密鑰。迭代輪數(shù)的變化是通過輪計數(shù)器來控制。

    此設計方案消除了子密鑰之間的相關性,便于子密鑰在迭代過程中動態(tài)分發(fā)。同時,簡化了子密鑰的產(chǎn)生,有效地節(jié)約了硬件資源。
2.2 單輪迭代運算模塊
    DES算法是典型的迭代分組密碼算法,實現(xiàn)過程的核心是16輪次迭代運算。16輪迭代運算過程完全相同,只是輪迭代的輸入?yún)?shù)不同。迭代運算中的輪函數(shù)f是非線性的,它是每輪實現(xiàn)擴散和混淆的關鍵。其中,E盒擴展置換和P盒置換都是線性變換,而S盒代換部件是一個十分復雜的非線性函數(shù),正是經(jīng)過它的非線性變換才使明文實現(xiàn)了較好的混亂,達到加解密的效果,從而具有較強的安全性。因此,S盒設計在整個DES算法中是非常關鍵的。
    S盒的功能描述:如果用a1a2a3a4a5a6表示6 bit輸入,那么4 bit的輸出值可以通過查表得到,行的a1a6索引的表示與列的a2a3a4a5索引表示均為二進制數(shù)。因此,建立S盒模型時,一般采用case語句來實現(xiàn)。用case多分支選擇語句實現(xiàn)S盒有兩種方法:(1)直接使用輸入為6變量,輸出為4變量的case語句對S盒描述,形成一個4 bit 64個存儲空間的表。此方法可讀性強,但8個S盒需要8×64個存儲空間,占用大量資源,綜合效率低,速度慢,不利于整個系統(tǒng)設計實現(xiàn); (2)由于S盒是一個4×16的二維數(shù)組,使用雙重case語句,外層使用2個變量,對應S盒輸入的第1、6位。內(nèi)層使用4個變量,對應S盒輸入的第2、3、4、5 位。采用雙重case語句可以直接定位輸出結(jié)果。該方案可充分利用FPGA的內(nèi)部資源,提高綜合效率,加快算法執(zhí)行速度。經(jīng)過綜合后,單個S盒的實現(xiàn)僅占用24個邏輯單元,相對于直接使用6個變量的case語句的實現(xiàn),占用資源約減少50%。
     本文對單輪迭代運算進行功能模塊設計,實現(xiàn)過程調(diào)用了密鑰生成模塊和S盒模塊。由于該設計的子密鑰是獨立產(chǎn)生的,彼此不相關,因此在一輪運算中,不需把子密鑰輸出作為下輪運算用來產(chǎn)生密鑰的輸入。子密鑰通過控制信號直接控制子密鑰生成模塊產(chǎn)生分發(fā),在一輪運算中只參與與E擴展后的數(shù)據(jù)進行“異或”運算,既節(jié)省了器件的管腳資源,又提高了算法的執(zhí)行效率。同樣,S盒在具體實例調(diào)用時,亦采用了此方法。單輪迭代變換仿真結(jié)果如圖4所示。圖中,ki_i為控制子密鑰動態(tài)分發(fā)的控制信號;L_i和R_i是第i輪非線性變換的輸入;R_i是經(jīng)過輪函數(shù)一系列運算生成的數(shù)據(jù)與輸入L_i“異或”,產(chǎn)生的結(jié)果作為輸出R_o;把R_i直接賦值給輸出L_o。

2.3 頂層模塊的設計與實現(xiàn)
    頂層模塊的功能就是調(diào)用單輪迭代運算模塊,實現(xiàn)16輪次循環(huán)迭代,完成DES算法的總體設計。采用組合邏輯設計實現(xiàn)了數(shù)據(jù)的初始置換IP、輪函數(shù)f、子密鑰的產(chǎn)生以及最后的逆初始置換IP-1。圖5所示為DES算法的最終設計工程文件生成的原理圖。

    頂層模塊僅在數(shù)據(jù)裝載控制信號load為高電平時,接收外部數(shù)據(jù)din;發(fā)送控制信號ready為高電平時,輸出dout為有效數(shù)據(jù)。由于16輪迭代的每一輪運算都要用到上一輪的最后計算結(jié)果,并且每輪迭代都是調(diào)用單輪迭代運算模塊。因此,設計了算法執(zhí)行狀態(tài)指示位dt,用來協(xié)調(diào)控制整個DES算法的各輪迭代運算結(jié)果的反饋賦值。采用Altera公司的CycloneII系列的EP2C8Q208C8器件作為平臺,在Quartus II 8.0下對Verilog HDL代碼進行綜合,然后布局布線對其進行時序仿真,仿真結(jié)果完全符合時序要求,達到了設計目的。由表1給出的DES算法硬件實現(xiàn)性能對比結(jié)果表明,在資源使用和實現(xiàn)速度方面,本文算法實現(xiàn)方案都比較理想。DES系統(tǒng)的實現(xiàn)所占用的邏輯單元數(shù)僅為468,小于整個硬件資源的6%,可見設計資源得到了極大的優(yōu)化利用。
    本文的創(chuàng)新點:在傳統(tǒng)硬件實現(xiàn)資源優(yōu)先方案的基礎上,采取在輪函數(shù)內(nèi)部設置流水線結(jié)構(gòu)來提高系統(tǒng)的整體運行速度,既節(jié)省了硬件資源,又提高了系統(tǒng)的性能;簡化了子密鑰與外部密鑰的生成關系,消除了各個子密鑰之間的相關性,保證了在子密鑰和數(shù)據(jù)異或運算的輪函數(shù)實現(xiàn)時,子密鑰的動態(tài)分發(fā)。
    通過對整個DES算法的詳細分析,提出了合理的分模塊設計思想,并采用Verilog硬件描述語言對算法進行了驗證仿真。設計文件最終生成的原理圖可以完成DES算法的功能,對其進行適當改進,可以作為功能模塊嵌入到實際系統(tǒng)中,實現(xiàn)通信數(shù)據(jù)的實時、可靠傳輸,具有一定的實際應用價值。
參考文獻
[1] 王簡瑜, 張魯國. 基于FPGA實現(xiàn)DES算法的性能分析 [J]. 微計算機信息, 2007, 23(3-2): 217-218.
[2] MCLOONE M, MCCANNY J V. High-performance FPGA implementation of DES using a novel method for implementing the key schedule [J]. IEEE, Circuits Devices System. 2003, 150(5): 373-378.
[3] 鄭東, 李祥學, 黃征. 密碼學—密碼算法與協(xié)議[M]. 北京: 電子工業(yè)出版社, 2009.
[4] STALLINGS W. Cryptography and network security principles and practices[M]. Prentice Hall,1996.
[5] 姚霽, 劉建華, 范九倫. 一種密鑰可配置的DES加密算法的FPGA實現(xiàn)[J].電子技術應用,2009,35(7):145-148.
[6] 張峰, 鄭春來, 耶曉東. DES加密算法的FPGA實現(xiàn)[J].現(xiàn)代電子技術, 2008, 31(7):80-82.
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久av在线| 久久久久99| 久久高清一区| 亚洲女同性videos| 亚洲少妇在线| 夜色激情一区二区| 亚洲美女免费精品视频在线观看| 136国产福利精品导航| 狠狠色狠狠色综合系列| 狠狠爱www人成狠狠爱综合网| 国产精品一区=区| 欧美日韩一区二区欧美激情| 欧美日韩18| 欧美—级a级欧美特级ar全黄| 女生裸体视频一区二区三区| 美女精品国产| 欧美高清成人| 欧美精品在线一区二区| 欧美伦理在线观看| 欧美日韩情趣电影| 欧美三区在线| 国产精品久久久久影院亚瑟| 国产精品二区二区三区| 国产精品午夜在线| 国产欧美精品日韩区二区麻豆天美| 国产精品女主播在线观看| 国产精品视频九色porn| 国产精品一区二区三区观看| 国产女人aaa级久久久级| 国产日产欧美精品| 国产在线视频欧美| 在线日韩一区二区| 亚洲激情成人网| 日韩午夜高潮| 亚洲一二三区在线观看| 欧美一区二区三区的| 久久精品亚洲一区二区| 亚洲精选国产| 亚洲少妇诱惑| 欧美一级大片在线观看| 久久亚裔精品欧美| 欧美激情视频在线播放| 欧美三区视频| 国产精品一区免费在线观看| 国产专区精品视频| 亚洲国产一二三| 日韩午夜高潮| 午夜精品久久久久久| 久久精品一区二区三区不卡牛牛| 亚洲国产欧美一区| 一区二区激情| 欧美中文在线字幕| 欧美不卡一区| 欧美日韩一区二区免费在线观看| 国产精品中文字幕在线观看| 激情久久久久久久久久久久久久久久| 欧美一级理论性理论a| 欧美日韩免费一区二区三区| 六月婷婷一区| 欧美色精品天天在线观看视频 | 久久久蜜桃一区二区人| 欧美精品一区二区三区四区| 国产欧美日韩在线视频| 亚洲国产欧美国产综合一区| 亚洲制服av| 亚洲精品一级| 久久爱www| 欧美裸体一区二区三区| 国产一区二区三区高清播放| 亚洲每日在线| 欧美在线网址| 亚洲——在线| 免费亚洲一区二区| 国产精品一区二区久激情瑜伽| 在线观看亚洲专区| 亚洲视频中文字幕| 亚洲日本国产| 欧美一区二区三区四区夜夜大片| 欧美韩日视频| 国语自产精品视频在线看抢先版结局| 日韩网站在线观看| 亚洲国产欧美日韩另类综合| 香蕉乱码成人久久天堂爱免费| 欧美看片网站| 狠狠操狠狠色综合网| 亚洲一区欧美二区| 一区二区三欧美| 蜜臀久久99精品久久久久久9| 国产伦精品一区二区三区在线观看 | 久久久精品五月天| 国产精品福利在线观看网址| 亚洲欧洲在线一区| 久久精品国产第一区二区三区| 性xx色xx综合久久久xx| 欧美三级免费| 亚洲国产第一| 欧美在线视频观看免费网站| 欧美一级二级三级蜜桃| 国产精品扒开腿做爽爽爽视频| 亚洲激情视频网站| 亚洲国产高清在线| 久久综合电影| 国产亚洲免费的视频看| 亚洲午夜在线观看| 亚洲一区中文| 欧美日韩视频| 亚洲精品在线观看视频| 亚洲美女在线看| 女同一区二区| 在线观看av不卡| 久久精品亚洲国产奇米99| 久久久av毛片精品| 国产亚洲一区二区三区在线观看 | 国产精品国产三级国产aⅴ9色| 亚洲裸体视频| 99精品欧美一区二区三区| 免费亚洲一区| 在线日韩中文字幕| 亚洲国产欧美一区二区三区久久| 久久久综合视频| 国内精品久久久| 久久国产精品久久国产精品| 久久蜜桃资源一区二区老牛 | 欧美第一黄网免费网站| 亚洲国产欧美精品| 99视频超级精品| 欧美日韩免费| 亚洲调教视频在线观看| 性久久久久久久久| 国产午夜精品麻豆| 久久国产精品久久久久久久久久| 久久久久久999| 黄色av日韩| 亚洲精品女人| 欧美日韩在线电影| 一区二区三区色| 午夜一区二区三区不卡视频| 国产乱码精品一区二区三区不卡| 午夜久久影院| 久久尤物电影视频在线观看| 在线观看91久久久久久| 亚洲免费观看在线视频| 欧美日韩亚洲视频一区| 亚洲综合视频在线| 久久久久久亚洲精品不卡4k岛国| 激情成人在线视频| 亚洲精品一区二区三区福利| 欧美日韩免费观看一区二区三区| 一区二区高清在线| 久久国产精品久久久久久电车| 国产一区二区成人久久免费影院| 亚洲国产成人一区| 欧美国产日韩xxxxx| 一区二区欧美视频| 久久精品国产亚洲一区二区三区| 亚洲第一色中文字幕| 亚洲视频欧美视频| 国产视频丨精品|在线观看| 91久久精品一区二区别| 欧美三级电影网| 欧美一乱一性一交一视频| 美女精品在线观看| 9色国产精品| 久久精品一二三区| 亚洲激情一区二区| 欧美亚洲视频| 亚洲第一精品电影| 亚洲自拍电影| 一区二区三区中文在线观看 | 99国产精品99久久久久久粉嫩| 欧美性久久久| 久久精品91久久久久久再现| 欧美日韩亚洲综合在线| 欧美一区二区三区电影在线观看| 欧美电影在线免费观看网站| 亚洲主播在线观看| 欧美1区2区3区| 亚洲一区三区电影在线观看| 欧美ed2k| 亚洲在线中文字幕| 欧美电影免费观看高清| 午夜一区二区三区在线观看| 欧美精品七区| 久久精品观看| 国产精品久久国产三级国电话系列| 久久精品夜色噜噜亚洲aⅴ| 欧美视频一区| 亚洲国产成人av| 国产精品久久久久9999吃药| 亚洲精品专区| 国产亚洲精品福利| 亚洲视频国产视频| 在线电影国产精品| 性色av一区二区怡红| 日韩一区二区精品视频| 久久婷婷久久一区二区三区| 中文欧美日韩| 欧美精品免费视频| 亚洲国产成人久久| 国产欧美日韩视频|