<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于FPGA的改進DES算法的實現(xiàn)

          基于FPGA的改進DES算法的實現(xiàn)

          作者: 時間:2011-07-06 來源:網(wǎng)絡(luò) 收藏

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

          本文引用地址:http://www.ex-cimer.com/article/191110.htm

          圖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ù)進行加密變換,才達(dá)到實現(xiàn)擴散和混淆的效果。輪函數(shù)f的功能由四個部分按順序完成:(1)將32 bit Ri-1輸入通過擴展E變換擴展為48 bit的數(shù)據(jù); (2)將擴展后的48 bit數(shù)據(jù)與對應(yīng)的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算法的實現(xiàn)
          本設(shè)計選用資源優(yōu)先方案,即僅用硬件實現(xiàn)單輪密鑰變換和密鑰加數(shù)據(jù)運算的輪函數(shù),通過重復(fù)16次調(diào)用這一功能模塊來實現(xiàn)一次DES加/解密運算。該設(shè)計方案原理圖如圖2所示。當(dāng)數(shù)據(jù)裝載信號置為高電平時,待加/解密數(shù)據(jù)通過數(shù)據(jù)選擇器送到輪函數(shù)的入口。同時在輪計數(shù)器的控制下,算法狀態(tài)執(zhí)行位置1。在第一個時鐘到來時,將數(shù)據(jù)(B1、B2)通過輪函數(shù)實現(xiàn)第一輪變換,經(jīng)過第一輪變換后的數(shù)據(jù)被寄存器鎖存。在下一個時鐘到來時,與相應(yīng)輪的子密鑰一起再次被送到輪函數(shù)的輸入端,這樣循環(huán)16輪后,算法狀態(tài)執(zhí)行位置0,輸出最終數(shù)據(jù)。

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

          紅外熱像儀相關(guān)文章:紅外熱像儀原理

          上一頁 1 2 下一頁

          關(guān)鍵詞: FPGA DES 算法

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();