工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->综合电路图->FPGA电路图->基于FPGA的信息安全系统设计

基于FPGA的信息安全系统设计

作者:angelazhang时间:2015-07-08浏览次数:2283

系统开发设计:

1.项目名称及主要内容

本项目名称是:基于FPGA的信息安全系统设计。

主要内容为:本模块采用xilinx公司的Spartan 3E系列XC3S500E型FPGA作为核心控制芯片,对采集到底模拟信号进行数字转换后通过3DES算法进行加密、然后通过网络传输,再经过解密算法解密出明文数据。尽管DES已被证实是不安全的算法(主要是密钥太短),但三重DES增加了密钥长度,由56位增加到112或168位,有更高的安全性,而且在新一代因特网安全标准IPSEC协议集中已将DES作为加密标准。利用3DES可以使原系统不作大的改动,所以对3DES的研究仍有很大的现实意义。在此使用了3DES算法,保证了系统功能的完整性与数据传输的安全性。该识别模块可用于国内外卫星通信、网关服务器、机顶盒、视频传输以及其它大量的数据传输业务中,也可和计算机等设备联机使用,满足各个方面的不同需求,因此它的设计具有很广泛的应用前景和市场价值。


2.项目关键技术及设计

系统框图见下图



2.1 A/D、D/A模块

这两个模块功能是完成信号的转换功能,实现模拟信号与数字信号之间的转化。


2.3 数据加密(解密)

将转换好的明文数据存储在事先固化好的RAM1,基于3DES算法模块对明文进行加密,并将密文存储到RAM2中,并通过数据库技术连接到网络,通过网络传播,将传送后的密文数据采集到RAM3中,通过解密算法模块对密文解密存储到RAM4。


算法总体结构:通过一个密钥控制模块为3DES提供三个56位的密钥以及加/解密控制信号。密钥的输入是28位的,所产生的三个56位密钥并不是同一时间提供给3DES的,相互之间有16个时钟的延时,这样可以保证修改密钥后并不影响先前流水线的工作。再加上输入、输出接口就构成了该设计的总体结构,如图5所示。限于图的大小,不影响理解的部分信号没有画出。加/解密的流程是先输入六组28位的密钥,然后就可以发送需要加/解密的数据了,中间可以有间断,如果需要更改密钥,也是先输入改后的密钥,再输入数据,可实时更改,无需等到流水线中最后一组数据加/解密完成。



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)是一个常常应用于数据流控制的处理技巧,典型的乒乓操作方法如图1所示。


乒乓操作的处理流程为:输入数据流通过“输入数据流选择单元”将数据流等时分配到两个数据缓冲区,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口RAM(DPRAM)、单口RAM(SPRAM)、FIFO等。我们选择单口ram就可以实现其功能。


在第1个缓冲周期:将输入的数据流缓存到“数据缓冲模块1”;在第2个缓冲周期:通过“输入数据选择单元”的切换,将输入的数据流缓存到“数据缓冲模块2”,同时将“数据缓冲模块1”缓存的第1个周期数据通过“输出数据选择单元”的选择,送到“数据流运算处理模块”进行运算处理;


在第3个缓冲周期:通过“输入数据选择单元”的再次切换,将输入的数据流缓存到“数据缓冲模块1”,同时将“数据缓冲模块2”缓存的第2个周期的数据通过“输出数据选择单元”切换,送到“数据流运算处理模块”进行运算处理。如此循环。


乒乓操作的最大特点是通过“输入数据选择单元”和“输出数据选择单元”按节拍、相互配合的切换,将经过缓冲的数据流没有停顿地送到“数据流运算处理模块”进行运算与处理。把乒乓操作模块当做一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿,因此非常适合对数据流进行流水线式处理。所以乒乓操作常常应用于流水线式算法,完成数据的无缝缓冲与处理。


乒乓操作的第二个优点是可以节约缓冲区空间。比如在WCDMA基带应用中,1个帧是由15个时隙组成的,有时需要将1整帧的数据延时一个时隙后处理,比较直接的办法是将这帧数据缓存起来,然后延时1个时隙进行处理。这时缓冲区的长度是1整帧数据长,假设数据速率是3.84Mbps,1帧长10ms,则此时需要缓冲区长度是38400位。如果采用乒乓操作,只需定义两个能缓冲1个时隙数据的RAM(单口RAM即可)。当向一块RAM写数据的时候,从另一块RAM读数据,然后送到处理单元处理,此时每块RAM的容量仅需2560(=38400/15)位即可,2块RAM加起来也只有5120位的容量。


另外,巧妙运用乒乓操作还可以达到用低速模块处理高速数据流的效果。这里我们选择乒乓操作方式来工作。


2)加密模块中存在一些问题,例如:3DES的代码还不完善,补充之后在仿真是出现不定态:


3)Ram中存在的问题:直接调用Ip核可以简洁地生成我们所需要的ram,但在前仿真时Modelsim SE 总是出现错误。直接按照书上的仿真例子去试验,也仿真不出来,初步推测是软件破译的不全,有些库无法调用所造成。




评论

技术专区