周慶芳
[摘要]隨著密碼分析技術(shù)的不斷發(fā)展,超期服役的DES算法已被攻破,3DES算法有了很大的生存空間,被大量用來代替已經(jīng)不安全的DES算法。本文通過對可編程邏輯器件FPGA的相關(guān)基礎(chǔ)知識的學(xué)習(xí)和對3DES算法的研究,以FPGA為平臺進(jìn)行3DES算法的實(shí)現(xiàn)設(shè)計(jì),具有一定的實(shí)際應(yīng)用意義。
[關(guān)鍵詞]FPGA 3DES 設(shè)計(jì) 應(yīng)用
一、引言
網(wǎng)絡(luò)安全除了依賴安全的網(wǎng)絡(luò)通信協(xié)議及應(yīng)用協(xié)議外,更多地取決于網(wǎng)絡(luò)設(shè)備所提供的加/解密功能。目前,基于DES算法的加,解密硬件廣泛應(yīng)用于國內(nèi)衛(wèi)星通信、網(wǎng)關(guān)服務(wù)器以及其他大量的數(shù)據(jù)傳輸業(yè)務(wù)中。DES算法是一種采用傳統(tǒng)加密方法的分組密碼,它的算法是對稱的,既可用于加密又可用于解密。
隨著密碼分析技術(shù)的發(fā)展,DES算法已被攻破,在不對原有應(yīng)用系統(tǒng)做大的改動的情況下,3DES算法有了很大的生存空間,被大量用來代替已經(jīng)不安全的DES算法。本文通過對可編程邏輯器件FPGA的相關(guān)基礎(chǔ)知識的學(xué)習(xí)和對3DES算法的研究,以FPGA為平臺進(jìn)行3DES算法的實(shí)現(xiàn)設(shè)計(jì),經(jīng)仿真驗(yàn)證該系統(tǒng)能夠?qū)崿F(xiàn)加/解密功能,具有廣泛的市場應(yīng)用前景。
二、算法介紹
3DESs~DES的一個(gè)更安全的變形。其中s盒是3DES(DES)算法的心臟,靠它實(shí)現(xiàn)非線性變換。
3DES算法可以描述如下:設(shè)ek(x)和dk(x)分別表示用DES算法對64位的位串加密和解密,密鑰為k;64位的密文c是通過執(zhí)行下面的運(yùn)算得到的:
c=ek3(dk2(ek1(x))
其中,k1、k2、k3是56位的DES密鑰。從密文c導(dǎo)出明文x的3DES的解密過程是加密過程的反過程,其描述如下:
x=dk1(ek2(dk3(c)))
三、3DES的設(shè)計(jì)與實(shí)現(xiàn)
(一)設(shè)計(jì)過程
3DES(DES)算法沒有大量的復(fù)雜數(shù)學(xué)計(jì)算(如乘、帶進(jìn)位的加、模等),在加,解密過程和密鑰生成過程中僅有邏輯運(yùn)算和查表運(yùn)算。這些特點(diǎn)為采用FPGA進(jìn)行高速設(shè)計(jì)提供了契機(jī)。由于DES算法中每個(gè)分組需經(jīng)過16輪運(yùn)算,如果采用順序電路構(gòu)架則每過16輪運(yùn)算才能得到一個(gè)加密分組,大大降低了加密效率。高速DES運(yùn)算電路采用流水結(jié)構(gòu),16步迭代設(shè)計(jì)16個(gè)運(yùn)算模塊,分別稱作LUNl、LUN2、…、LUNl6,數(shù)據(jù)在各模塊間流水運(yùn)算。當(dāng)系統(tǒng)對第i個(gè)輸入的數(shù)據(jù)元素進(jìn)行第j段運(yùn)算的同時(shí),還可以對第i+1個(gè)數(shù)據(jù)進(jìn)行第卜1段的運(yùn)算,對第i+2個(gè)輸入的數(shù)據(jù)元素進(jìn)行第i-2段的運(yùn)算……以此提高系統(tǒng)的運(yùn)算效率。
(二)控制電路
控制電路是整個(gè)系統(tǒng)的控制中心,可以采用移位寄存器或計(jì)數(shù)器加譯碼電路構(gòu)成,為減少信號毛刺,提高電路運(yùn)算的穩(wěn)定性與工作速度。這里選用一個(gè)17bits的串人并出移位寄存器,其中16bits用于生成算法的每輪運(yùn)算的使能信號,另外1bit用于生成指示加密輸出的ready信號。
(三)密鑰生成模塊
密鑰生成模塊與流水構(gòu)架DES運(yùn)算電路的工作時(shí)序相對應(yīng),其16步迭代運(yùn)算所需子密鑰必須同時(shí)生成。密鑰生成模塊由選擇控制電路PC-1、選擇輸出、壓縮置換電路PC-2構(gòu)成。該部分的輸入是64bits初始密鑰,輸出為每次迭代運(yùn)算用的子密鑰,使能控制信號、模式控制信號。64bits初始密鑰經(jīng)過置換選擇PC-1去除校驗(yàn)位并被分離成左右兩部分,各28bits,在模式控制信號(加密或脫密)及內(nèi)部狀態(tài)機(jī)信號控制下,根據(jù)移位表,選擇輸出,經(jīng)壓縮置換PC-2同時(shí)形成各步迭代所需運(yùn)算子密鑰。
四、系統(tǒng)仿真
(一)3DES加/解密運(yùn)算模塊
3DES算法進(jìn)行3次DEs算法,所以只要寫出DES算法的程序,進(jìn)行例化調(diào)用即可。
(二)密鑰生成模塊
密鑰生成模塊是系統(tǒng)的核心模塊,采用隨機(jī)方式生成的密鑰,具有代表性。
五、小結(jié)
本文通過對3DES加/解密算法的設(shè)計(jì),展示出了FPGA在3DEs加/解密算法上的應(yīng)用,讓我們從一個(gè)更高的角度來理解FPGA的設(shè)計(jì),在以后的設(shè)計(jì)實(shí)踐中應(yīng)從FPGA接口方面考慮來完善該設(shè)計(jì)。該系統(tǒng)主要包括密鑰生成模塊、控制電路等幾個(gè)方面設(shè)計(jì)3DES加/解密系統(tǒng),經(jīng)仿真驗(yàn)證該系統(tǒng)能夠?qū)崿F(xiàn)加/解密功能,具有廣泛的市場應(yīng)用前景。