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