基于FPGA的信息安全系統(tǒng)設(shè)計(jì)
系統(tǒng)開(kāi)發(fā)設(shè)計(jì):
1.項(xiàng)目名稱(chēng)及主要內(nèi)容
本項(xiàng)目名稱(chēng)是:基于FPGA的信息安全系統(tǒng)設(shè)計(jì)。
主要內(nèi)容為:本模塊采用xilinx公司的Spartan 3E系列XC3S500E型FPGA作為核心控制芯片,對(duì)采集到底模擬信號(hào)進(jìn)行數(shù)字轉(zhuǎn)換后通過(guò)3DES算法進(jìn)行加密、然后通過(guò)網(wǎng)絡(luò)傳輸,再經(jīng)過(guò)解密算法解密出明文數(shù)據(jù)。盡管DES已被證實(shí)是不安全的算法(主要是密鑰太短),但三重DES增加了密鑰長(zhǎng)度,由56位增加到112或168位,有更高的安全性,而且在新一代因特網(wǎng)安全標(biāo)準(zhǔn)IPSEC協(xié)議集中已將DES作為加密標(biāo)準(zhǔn)。利用3DES可以使原系統(tǒng)不作大的改動(dòng),所以對(duì)3DES的研究仍有很大的現(xiàn)實(shí)意義。在此使用了3DES算法,保證了系統(tǒng)功能的完整性與數(shù)據(jù)傳輸?shù)陌踩浴T撟R(shí)別模塊可用于國(guó)內(nèi)外衛(wèi)星通信、網(wǎng)關(guān)服務(wù)器、機(jī)頂盒、視頻傳輸以及其它大量的數(shù)據(jù)傳輸業(yè)務(wù)中,也可和計(jì)算機(jī)等設(shè)備聯(lián)機(jī)使用,滿(mǎn)足各個(gè)方面的不同需求,因此它的設(shè)計(jì)具有很廣泛的應(yīng)用前景和市場(chǎng)價(jià)值。
2.項(xiàng)目關(guān)鍵技術(shù)及設(shè)計(jì)
系統(tǒng)框圖見(jiàn)下圖
2.1 A/D、D/A模塊
這兩個(gè)模塊功能是完成信號(hào)的轉(zhuǎn)換功能,實(shí)現(xiàn)模擬信號(hào)與數(shù)字信號(hào)之間的轉(zhuǎn)化。
2.3 數(shù)據(jù)加密(解密)
將轉(zhuǎn)換好的明文數(shù)據(jù)存儲(chǔ)在事先固化好的RAM1,基于3DES算法模塊對(duì)明文進(jìn)行加密,并將密文存儲(chǔ)到RAM2中,并通過(guò)數(shù)據(jù)庫(kù)技術(shù)連接到網(wǎng)絡(luò),通過(guò)網(wǎng)絡(luò)傳播,將傳送后的密文數(shù)據(jù)采集到RAM3中,通過(guò)解密算法模塊對(duì)密文解密存儲(chǔ)到RAM4。
算法總體結(jié)構(gòu):通過(guò)一個(gè)密鑰控制模塊為3DES提供三個(gè)56位的密鑰以及加/解密控制信號(hào)。密鑰的輸入是28位的,所產(chǎn)生的三個(gè)56位密鑰并不是同一時(shí)間提供給3DES的,相互之間有16個(gè)時(shí)鐘的延時(shí),這樣可以保證修改密鑰后并不影響先前流水線(xiàn)的工作。再加上輸入、輸出接口就構(gòu)成了該設(shè)計(jì)的總體結(jié)構(gòu),如圖5所示。限于圖的大小,不影響理解的部分信號(hào)沒(méi)有畫(huà)出。加/解密的流程是先輸入六組28位的密鑰,然后就可以發(fā)送需要加/解密的數(shù)據(jù)了,中間可以有間斷,如果需要更改密鑰,也是先輸入改后的密鑰,再輸入數(shù)據(jù),可實(shí)時(shí)更改,無(wú)需等到流水線(xiàn)中最后一組數(shù)據(jù)加/解密完成。
3 程序代碼及仿真
3des部分代碼
module des_3(key1, key2, key3, datain, sysclk, en, reset, mode1, mode2, mode3, load, ready, dataout);
input [64:1] key1;
input [64:1] key2;
input [64:1] key3;
input [64:1] datain;
input sysclk;
input en;
input reset;
input mode1;
input mode2;
input mode3;
input load;
output ready;
output [64:1] dataout;
wire flagwire1,flagwire2;
wire[64:1] datastream1,datastream2;
DES jia1(.sysclk(sysclk),.en(en),.reset(reset),.mode(mode1),
.load(load),.key(key1),.datain(datain),.dataout(datastream1),
.ready(),.flag(flagwire1));
DES jie(.sysclk(sysclk),.en(flagwire1),.reset(reset),.mode(mode2),
.load(load),.key(key2),.datain(dataistream1),.dataout(datastream2), .ready(),.flag(flagwire2));
DESjia2(.sysclk(sysclk),.en(flagwire2),.reset(reset),.mode(mode3), .load(load),.key(key3),.datain(datastream2),.dataout(dataout),
.ready(ready),.flag());
Endmodule
控制代碼
module control(sysclk, reset, load, en, ready,
ct1,ct2,ct3,ct4,ct5,ct6,ct7,ct8,
ct9,ct10,ct11,ct12,ct13,ct14,ct15,ct16);
input sysclk;
input reset;
input load;
input en;
output ready,ct1,ct2,ct3,ct4,ct5,ct6,ct7,ct8,
ct9,ct10,ct11,ct12,ct13,ct14,ct15,ct16;
wire ready,ct1,ct2,ct3,ct4,ct5,ct6,ct7,ct8,
ct9,ct10,ct11,ct12,ct13,ct14,ct15,ct16;
D d1(sysclk,reset,en,load,ct1);
D d2(sysclk,reset,en,ct1,ct2);
D d3(sysclk,reset,en,ct2,ct3);
D d4(sysclk,reset,en,ct3,ct4);
D d5(sysclk,reset,en,ct4,ct5);
D d6(sysclk,reset,en,ct5,ct6);
D d7(sysclk,reset,en,ct6,ct7);
D d8(sysclk,reset,en,ct7,ct8);
D d9(sysclk,reset,en,ct8,ct9);
D d10(sysclk,reset,en,ct9,ct10);
D d11(sysclk,reset,en,ct10,ct11);
D d12(sysclk,reset,en,ct11,ct12);
D d13(sysclk,reset,en,ct12,ct13);
D d14(sysclk,reset,en,ct13,ct14);
D d15(sysclk,reset,en,ct14,ct15);
D d16(sysclk,reset,en,ct15,ct16);
D d17(sysclk,reset,en,ct16,ready);
endmodule
4 RAM工作方式的選擇
“乒乓操作”(pingpong operation)是一個(gè)常常應(yīng)用于數(shù)據(jù)流控制的處理技巧,典型的乒乓操作方法如圖1所示。
乒乓操作的處理流程為:輸入數(shù)據(jù)流通過(guò)“輸入數(shù)據(jù)流選擇單元”將數(shù)據(jù)流等時(shí)分配到兩個(gè)數(shù)據(jù)緩沖區(qū),數(shù)據(jù)緩沖模塊可以為任何存儲(chǔ)模塊,比較常用的存儲(chǔ)單元為雙口RAM(DPRAM)、單口RAM(SPRAM)、FIFO等。我們選擇單口ram就可以實(shí)現(xiàn)其功能。
在第1個(gè)緩沖周期:將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊1”;在第2個(gè)緩沖周期:通過(guò)“輸入數(shù)據(jù)選擇單元”的切換,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊2”,同時(shí)將“數(shù)據(jù)緩沖模塊1”緩存的第1個(gè)周期數(shù)據(jù)通過(guò)“輸出數(shù)據(jù)選擇單元”的選擇,送到“數(shù)據(jù)流運(yùn)算處理模塊”進(jìn)行運(yùn)算處理;
在第3個(gè)緩沖周期:通過(guò)“輸入數(shù)據(jù)選擇單元”的再次切換,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊1”,同時(shí)將“數(shù)據(jù)緩沖模塊2”緩存的第2個(gè)周期的數(shù)據(jù)通過(guò)“輸出數(shù)據(jù)選擇單元”切換,送到“數(shù)據(jù)流運(yùn)算處理模塊”進(jìn)行運(yùn)算處理。如此循環(huán)。
乒乓操作的最大特點(diǎn)是通過(guò)“輸入數(shù)據(jù)選擇單元”和“輸出數(shù)據(jù)選擇單元”按節(jié)拍、相互配合的切換,將經(jīng)過(guò)緩沖的數(shù)據(jù)流沒(méi)有停頓地送到“數(shù)據(jù)流運(yùn)算處理模塊”進(jìn)行運(yùn)算與處理。把乒乓操作模塊當(dāng)做一個(gè)整體,站在這個(gè)模塊的兩端看數(shù)據(jù),輸入數(shù)據(jù)流和輸出數(shù)據(jù)流都是連續(xù)不斷的,沒(méi)有任何停頓,因此非常適合對(duì)數(shù)據(jù)流進(jìn)行流水線(xiàn)式處理。所以乒乓操作常常應(yīng)用于流水線(xiàn)式算法,完成數(shù)據(jù)的無(wú)縫緩沖與處理。
乒乓操作的第二個(gè)優(yōu)點(diǎn)是可以節(jié)約緩沖區(qū)空間。比如在WCDMA基帶應(yīng)用中,1個(gè)幀是由15個(gè)時(shí)隙組成的,有時(shí)需要將1整幀的數(shù)據(jù)延時(shí)一個(gè)時(shí)隙后處理,比較直接的辦法是將這幀數(shù)據(jù)緩存起來(lái),然后延時(shí)1個(gè)時(shí)隙進(jìn)行處理。這時(shí)緩沖區(qū)的長(zhǎng)度是1整幀數(shù)據(jù)長(zhǎng),假設(shè)數(shù)據(jù)速率是3.84Mbps,1幀長(zhǎng)10ms,則此時(shí)需要緩沖區(qū)長(zhǎng)度是38400位。如果采用乒乓操作,只需定義兩個(gè)能緩沖1個(gè)時(shí)隙數(shù)據(jù)的RAM(單口RAM即可)。當(dāng)向一塊RAM寫(xiě)數(shù)據(jù)的時(shí)候,從另一塊RAM讀數(shù)據(jù),然后送到處理單元處理,此時(shí)每塊RAM的容量?jī)H需2560(=38400/15)位即可,2塊RAM加起來(lái)也只有5120位的容量。
另外,巧妙運(yùn)用乒乓操作還可以達(dá)到用低速模塊處理高速數(shù)據(jù)流的效果。這里我們選擇乒乓操作方式來(lái)工作。
2)加密模塊中存在一些問(wèn)題,例如:3DES的代碼還不完善,補(bǔ)充之后在仿真是出現(xiàn)不定態(tài):
3)Ram中存在的問(wèn)題:直接調(diào)用Ip核可以簡(jiǎn)潔地生成我們所需要的ram,但在前仿真時(shí)Modelsim SE 總是出現(xiàn)錯(cuò)誤。直接按照書(shū)上的仿真例子去試驗(yàn),也仿真不出來(lái),初步推測(cè)是軟件破譯的不全,有些庫(kù)無(wú)法調(diào)用所造成。
評(píng)論