《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 基于3-DES算法的FPGA加密應(yīng)用

基于3-DES算法的FPGA加密應(yīng)用

2008-07-28
作者:李 騫, 汪學(xué)剛, 李漢釗

??? 摘 要: 闡述了一種針對SRAM工藝FPGA的加密保護(hù)方案,并給出了主要模塊的實(shí)現(xiàn)結(jié)構(gòu)。該方案應(yīng)用當(dāng)前流行的3-DES" title="3-DES">3-DES算法對校驗(yàn)數(shù)據(jù)加密,可靠性高,占用資源少,具有較高的實(shí)際應(yīng)用價(jià)值。
??? 關(guān)鍵詞:? DES;? 3-DES;? FPGA加密;? CPLD

?

??? 在現(xiàn)代電子設(shè)計(jì)中,以FPGA為代表的數(shù)字系統(tǒng)現(xiàn)場集成技術(shù)正得到越來越廣泛的應(yīng)用。由于大規(guī)模高密度可編程邏輯器件一般都采用SRAM工藝,因此每次上電" title="上電">上電時(shí),都要對FPGA器件重新進(jìn)行配置,從而可以通過監(jiān)視配置位數(shù)據(jù)流的方法對設(shè)計(jì)進(jìn)行復(fù)制。因此,對于關(guān)鍵的核心設(shè)備有必要采用加密技術(shù)" title="加密技術(shù)">加密技術(shù),以保護(hù)設(shè)計(jì)者的知識產(chǎn)權(quán)。
??? 數(shù)據(jù)加密標(biāo)準(zhǔn)DES(Data Encryption Standard)是美國國家標(biāo)準(zhǔn)局頒布的由IBM公司研制的一種非機(jī)密數(shù)據(jù)的正式數(shù)據(jù)加密標(biāo)準(zhǔn),是一種世界公認(rèn)的較好的加密算法。而3-DES算法是為了克服DES算法密鑰只有56位的缺點(diǎn)提出的,它將密鑰擴(kuò)展為168位,到目前為止還沒有人給出攻擊3-DES的有效方法。本文給出一種基于3-DES算法的FPGA加密保護(hù)的硬件實(shí)現(xiàn)方法,具有較強(qiáng)的健壯性,足以滿足安全需求。
1 SRAM工藝FPGA存在的保密性問題及加密方法
??? 一般來說,采用SRAM工藝的FPGA芯片的配置方法主要有三種:由計(jì)算機(jī)通過下載電纜配置,用專用配置芯片配置,采用存儲(chǔ)器加微控制器的方法配置,這三種方法在加電時(shí)都需要將配置數(shù)據(jù)寫入FPGA。因此,只要對配置引腳進(jìn)行采樣就可以得到配置數(shù)據(jù)信息,從而可以對另一塊FPGA芯片進(jìn)行配置,完成對內(nèi)部電路設(shè)計(jì)的復(fù)制。
??? 由于上電時(shí)的配置數(shù)據(jù)可以被復(fù)制,因此單獨(dú)的一塊FPGA芯片無法實(shí)現(xiàn)有效加密。FPGA芯片供應(yīng)商對位數(shù)據(jù)流的定義是不公開的,所以無法通過外部的配置數(shù)據(jù)流信息推測內(nèi)部電路。也就是說,即使得到配置信息也無法知道內(nèi)部電路結(jié)構(gòu)。因此在配置完成后使FPGA處于非工作狀態(tài),利用另外一塊保密性較強(qiáng)的CPU產(chǎn)生密碼驗(yàn)證信息與FPGA進(jìn)行信息交互,只有在驗(yàn)證成功的情況下才能使FPGA正常工作,這樣就能實(shí)現(xiàn)對設(shè)計(jì)的加密。
2 DES及3-DES算法介紹
2.1 DES算法

??? DES加密技術(shù)是一種常用的對稱加密技術(shù)。該技術(shù)算法公開,加密強(qiáng)度大,加解密采用同一個(gè)密鑰,解密為加密的逆過程,明文長度64位,輸出密文64位,64位密鑰中包括8位奇偶效驗(yàn)位,因此有效長度為56位。DES算法的總體流程如圖1所示,加密過程分成三個(gè)階段:首先,64位的明文經(jīng)過初始變換(IP)被重新排列;然后,進(jìn)行l(wèi)6輪相同函數(shù)的作用,每輪的作用都含有置換和代換過程,第16輪迭代的64位輸出經(jīng)過左右32位的互換產(chǎn)生預(yù)輸出;最后,預(yù)輸出再被與初始變換(IP)互逆的逆初始變換(IP-1)作用,產(chǎn)生64位的密文。圖1的右半部分給出了使用56位密鑰的過程。開始時(shí),密鑰經(jīng)過壓縮變換(1)得到C、D兩部分,然后經(jīng)過循環(huán)左移(1)……(16)和壓縮變換(2)分別得到子密鑰K1……K16 ,供每一輪的迭代加密使用,每輪置換函數(shù)相同,但由于密鑰位的重復(fù)迭代使得子密鑰互不相同。

?

?


2.2 3-DES算法
??? 隨著計(jì)算機(jī)的運(yùn)算能力不斷提高,傳統(tǒng)的DES已經(jīng)不能完全滿足人們對數(shù)據(jù)傳輸?shù)陌踩砸螅?6位密鑰在窮舉攻擊之下比較脆弱,因此,新的更長密鑰的對稱加密算法逐步取代DES算法。3-DES使用三個(gè)不同的密鑰對數(shù)據(jù)塊進(jìn)行三次DES加密,其中第二次DES運(yùn)行在解密模式,這樣密鑰的長度就能擴(kuò)展到l68位,從而充分防范窮舉攻擊。
3 系統(tǒng)設(shè)計(jì)方案
??? 本設(shè)計(jì)使用一塊CPLD芯片對FPGA進(jìn)行加密處理,系統(tǒng)的加密能力主要由CPLD的加密能力決定,這就要求加密算法要足夠復(fù)雜,使得對驗(yàn)證信息的捕獲與識別足夠困難。具體加密過程如下:首先產(chǎn)生兩個(gè)相同的偽隨機(jī)序列發(fā)生器:一個(gè)位于SRAM工藝的FPGA內(nèi);另一個(gè)位于CPLD內(nèi)。FPGA上電配置完畢后每隔一段時(shí)間產(chǎn)生一個(gè)新驗(yàn)證數(shù)據(jù)并且向CPLD發(fā)出一個(gè)觸發(fā)信號,CPLD在接收到觸發(fā)信號后其內(nèi)部的序列發(fā)生器也生成一個(gè)相同的偽隨機(jī)數(shù)" title="隨機(jī)數(shù)">隨機(jī)數(shù)并在加密后串行發(fā)出,F(xiàn)PGA接收數(shù)據(jù)并將其解密后與自身產(chǎn)生的數(shù)據(jù)進(jìn)行比較,若結(jié)果一致則通過驗(yàn)證,若結(jié)果不一致或在規(guī)定的時(shí)間內(nèi)沒接收到數(shù)據(jù),則進(jìn)入鎖定狀態(tài)不能正常工作。之所以采用3-DES算法進(jìn)行加密是因?yàn)槭褂脝渭兊膫坞S機(jī)數(shù)加密在窮舉攻擊下極易被破解,而在3-DES算法加密之后通過對引腳采樣的方法只能取得當(dāng)前的數(shù)據(jù)流信息,無法實(shí)時(shí)產(chǎn)生正確的驗(yàn)證信息,因而系統(tǒng)的安全性可以得到極大的提高。
4 系統(tǒng)的硬件實(shí)現(xiàn)
4.1 整體結(jié)構(gòu)

??? 本系統(tǒng)分為兩個(gè)大模塊:CPLD上的FPGA_security模塊以及FPGA上的FPGA_decrypt模塊,連接方式如圖2所示。其中,F(xiàn)PGA_security模塊用來接收觸發(fā)信號、產(chǎn)生隨機(jī)數(shù)、加密并發(fā)送數(shù)據(jù),而FPGA_decrypt模塊則負(fù)責(zé)產(chǎn)生隨機(jī)數(shù)、發(fā)送觸發(fā)信號并計(jì)時(shí)、接收數(shù)據(jù)、解密、判斷比較。兩芯片之間通過同步串行接口進(jìn)行通信,TX_CLK為接口的同步時(shí)鐘,TX_BI指示數(shù)據(jù)發(fā)送的開始和結(jié)束,TXD為數(shù)據(jù)發(fā)送接口,trig_out觸發(fā)輸出,securty指示驗(yàn)證是否成功。偽隨機(jī)序列發(fā)生器采用64級移位寄存器實(shí)現(xiàn)。

?


4.2? DES加密模塊
4.2.1 加密變換模塊

??? DES的初始變換和逆變換都是對數(shù)據(jù)的換位操作,在硬件實(shí)現(xiàn)上只需一些連線資源。在經(jīng)過初始變換之后,明文被分為L和R兩部分,之后要經(jīng)過16層加密變換,如圖3所示。每層變換的輸出作為下一輪迭代的輸入。每層變換的公式為:
???

?

?

??? 為節(jié)省硬件成本,16層加密變換過程通過對單層加密變換的反復(fù)調(diào)用來實(shí)現(xiàn),每個(gè)時(shí)鐘周期" title="時(shí)鐘周期">時(shí)鐘周期將輸出結(jié)果用鎖存器鎖存,以便下次調(diào)用。整個(gè)加密變換過程需16個(gè)時(shí)鐘周期。每輪的密鑰為48位子密鑰,由子密鑰生成部分提供,f{R(n),K(n)}是加密函數(shù),它是DES加密的核心。
4.2.2? f函數(shù)模塊
??? 加密函數(shù)f{R(n),K(n)}的運(yùn)算主要包括擴(kuò)展運(yùn)算E,S盒運(yùn)算和P盒運(yùn)算。32位的輸入經(jīng)過E表擴(kuò)展為48位,然后與48位的子密鑰進(jìn)行模2加得到48位的結(jié)果。48位的數(shù)據(jù)通過S盒變換為32位,再通過P盒進(jìn)行一次置換得到加密函數(shù)的輸出。E運(yùn)算和P盒實(shí)際上都是一次位的置換,沒有很復(fù)雜的運(yùn)算。S盒由8個(gè)特殊的6位到4位的變換構(gòu)成一個(gè)復(fù)雜的非線性變換[1],是加密函數(shù)的關(guān)鍵??紤]到所選用芯片內(nèi)部的四輸入查找表結(jié)構(gòu),先將S盒的實(shí)現(xiàn)邏輯表達(dá)式進(jìn)行化簡,化簡時(shí)先固定2個(gè)變量,化簡另外4個(gè)變量,在實(shí)現(xiàn)時(shí)使用雙重case語句,外層使用2個(gè)輸入,內(nèi)層使用4個(gè)輸入,從而充分利用內(nèi)部資源。
4.2.3? 子密鑰生成
??? 64位的輸入密鑰中第8,16,…,64位包含了8個(gè)奇偶效驗(yàn)位,壓縮變換除去了奇偶效驗(yàn)位,并對剩下的56位進(jìn)行位置換,有效的56位密鑰經(jīng)過壓縮變換后分成C和D兩部分。從第一個(gè)周期開始,每個(gè)時(shí)鐘C和D循環(huán)左移一位或兩位,鎖存后作為下一輪輸入, 同時(shí)C、D兩部分也在合并后通過壓縮變換產(chǎn)生48位的子密鑰K1、K2、K3……K16,作為f函數(shù)輸入。在解密過程中子密鑰的生成順序與加密過程正好相反,此時(shí)從第二個(gè)周期開始,每個(gè)時(shí)鐘C和D循環(huán)右移一位或兩位,即可得到K16、K15、K14……K1。
4.3? 3-DES加密/解密過程
??? 3-DES加密/解密實(shí)現(xiàn)框圖如圖4所示,其加密過程分三步:(1)使用密鑰KEY1對明文進(jìn)行DES加密得到A;(2)使用密鑰KEY2對A進(jìn)行DES解密運(yùn)算得到B;(3)使用KEY3對B再進(jìn)行一次DES加密得到密文。該算法最快速的實(shí)現(xiàn)方法是采用流水線實(shí)現(xiàn),但由于運(yùn)算速度對加密保護(hù)的影響不大,在設(shè)計(jì)時(shí)應(yīng)優(yōu)先考慮電路資源的節(jié)省。DES加密過程和解密過程的區(qū)別僅在于子密鑰給出的順序不同,因此選用循環(huán)迭代的設(shè)計(jì),即對同一DES模塊調(diào)用三次。子密鑰的生成在三次DES運(yùn)算中也使用同一模塊,其輸入信號包括時(shí)鐘clk、count[1:0]、密鑰key_in[64:1]、觸發(fā)信號trig,輸出信號為子密鑰keysub[48:1],其中count[1:0]指示DES運(yùn)算的次數(shù),用來控制C、D循環(huán)左/右移位。3-DES的解密過程為加密過程的反變換,即第一、三次變換為DES解密,第二次為DES加密,使用密鑰的順序與加密時(shí)相反。

?


4.4 實(shí)現(xiàn)結(jié)果
??? 本設(shè)計(jì)中選用的兩塊芯片都是ALTERA公司的,CPLD為MAXⅡ系列的EPM1270T144C5,F(xiàn)PGA為cycloneⅡ系列的EP2C50F484C6。FPGA部分共使用868個(gè)LE單元, CPLD部分使用629個(gè)LE單元,只占LE單元總量的49%。為充分利用硬件資源,將加密算法做了進(jìn)一步增強(qiáng),在兩芯片中各增加三個(gè)64位的隨機(jī)序列產(chǎn)生器作為密鑰的輸入。這樣一來,在通信時(shí)不但每次發(fā)送的數(shù)據(jù)不同,而且每次加密/解密的密鑰也在不斷變化,從而在原有基礎(chǔ)上又增加了算法的健壯性。最終結(jié)果如下:對于CPLD,總LE為1 039/1 270(81%),對于FPGA,總LE為1 212/50 528(2%)。可見加密模塊只占用被加密芯片較少的硬件資源,對整個(gè)系統(tǒng)沒有造成大的負(fù)擔(dān)。圖5為仿真結(jié)果,圖中TX_CLKx為同步時(shí)鐘,trig_x為觸發(fā)信號(啟動(dòng)驗(yàn)證過程),TX_BI_x為數(shù)據(jù)發(fā)送起始標(biāo)志位,TXD_x為串行數(shù)據(jù)發(fā)送端,code_add為加密前的信息,word_send_add為發(fā)送的加密后的信息,code_rec_x為接收信息,code_dec_x為解密后的信息,key_x為密鑰信息。由圖可見,當(dāng)code_add與code_dec一致時(shí)驗(yàn)證通過,此時(shí)驗(yàn)證標(biāo)志位security保持高電平。

?


??? 本文提出了一種FPGA加密保護(hù)的硬件方案,使用一塊CPLD與FPGA芯片進(jìn)行實(shí)時(shí)信息交互,使用3-DES算法采用循環(huán)迭代方法對驗(yàn)證信息加密,每次加密/解密運(yùn)算需花費(fèi)48個(gè)時(shí)鐘周期,使用三個(gè)56位的密鑰,且通信雙方的密鑰在每次信息驗(yàn)證時(shí)都會(huì)不斷更新,每個(gè)密鑰序列的最大長度可達(dá)264-1,若對其密鑰空間中密鑰進(jìn)行窮舉搜索,由于空間太大,這實(shí)際上是不可行的。實(shí)驗(yàn)證明,該方案電路簡單、可靠性高,可以在FPGA芯片上正常工作。
參考文獻(xiàn)
[1] ?National institute of standards and technology.Data Encryptlon Standard(DES).FIPS PUB 46-3,1999.
[2] ?SCHAFFER T, GLASER A, FRANZON P D. Chip-package co-implementation of a triple DES processor, advanced Packaging. IEEE Transaction 2004,27(1):194-202.
[3] ?KITSOS P, GOUDEVENOS S, KOUFOPAVLOU O. VLSI implementations of the triple-DES block cipher Electronics, Circuits and Systems. Proceedings of the 2003 10th IEEE International Conference, 2003,1(14-17):76-79.
[4] ?郭棟,孫峰,唐值明.加密與解密實(shí)戰(zhàn)攻略.北京:清華大學(xué)出版社,2003:225-229.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。