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

基于3-DES算法的FPGA加密應用

2008-07-28
作者:李 騫, 汪學剛, 李漢釗

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

?

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

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

?

?


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

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

?


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

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

?

?

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

?


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

?


??? 本文提出了一種FPGA加密保護的硬件方案,使用一塊CPLD與FPGA芯片進行實時信息交互,使用3-DES算法采用循環(huán)迭代方法對驗證信息加密,每次加密/解密運算需花費48個時鐘周期,使用三個56位的密鑰,且通信雙方的密鑰在每次信息驗證時都會不斷更新,每個密鑰序列的最大長度可達264-1,若對其密鑰空間中密鑰進行窮舉搜索,由于空間太大,這實際上是不可行的。實驗證明,該方案電路簡單、可靠性高,可以在FPGA芯片上正常工作。
參考文獻
[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] ?郭棟,孫峰,唐值明.加密與解密實戰(zhàn)攻略.北京:清華大學出版社,2003:225-229.

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