微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于状态机和流水线技术的3DES加密算法及其FPGA设计

基于状态机和流水线技术的3DES加密算法及其FPGA设计

时间:07-08 来源: 点击:

流水线处理是高速设计中的一个常用设计手段。如果某个设计的处理流程可分为若干步骤,而且整个数据处理是"单流向"的,即没有反馈,前一个步骤的输出是下一个步骤的输入,则可以考虑用流水线设计方法提高系统的工作频率。流水线设计是一种技巧,它在很长组合路径的中间点引入寄存器。寄存器会增加等待时间,但却能增加速度,减少逻辑级。此外,附加寄存器虽然会增加一定的功耗,但却极大地减少了毛刺。流水线处理方式之所以频率较高,是因为复制了处理模块,它是FPGA设计中面积换取速度思想的具体体现。DES的16轮运算结构是相同的,符合流水线设计的要求,所以基于DES的结构特点,将前面的状态机模块作为流水线的一个单元,这样DES共有四个状态,串联起来形成四级流水线。因状态机中有寄存器,能保证流水线的工作,所以各单元间不需再加寄存器。状态机及流水线结构如图3所示,图中给出了由密钥直接生成各子密钥的移位数。将DES模块复制三份,就形成了16级流水线,所不同的是流水线内部是状态机结构,所以每四个时钟周期才会得到一组加/解密结果。这种结构同样适用于数据端是8位和32位的。

2.3 S盒的设计和接口设计

在3DES算法中,S盒代替是算法的关键所在。其它的运算都是线性的,易于分析和实现,而S盒是非线性的,因此S盒的设计和优化将直接影响整个系统的性能。DES的8个S盒都是6输入、4输出的结构,适合于用ROM来实现,因此用VHDL定义如下结构设计的ROM:

input:in std_logic_vector(5 downto 0);

output :out std_logic_vector(3 downto 0);

subtype s_word is std_logic_vector(3 downto 0);

subtype s1_rangeij is integer range 0 to 63;

type s_type is array(s1_rangeij) of s_word;

constant s:s_type:=(("1110"),("0100"),("1101"),("0001")……);

function logic2int(din:std_logic_vector(t downto 0))return s1_rangeij -二进转换为十进制

output<=s(logic2int(input));

经综合后,每个S盒只用了24个逻辑单元。

3DES是64位分组大小的加密算法,数据线一般是8位、16位或32位,为此增加了输入、输出接口,这部分接口完成的功能就是串/并转换和并/串转换。以16位输出接口为例,设计中将加/解密出来的数据从低位到高位在valid信号有效的情况下同时存入四个16位寄存器,再通过一个选择器依次将数据送出。该选择器不同于普通的多路选择器,它是由valid信号触发其内的计数功能,从而依次将寄存器中数据输出,如图4所示。输入接口要简单一些,只需一个64位可移位的寄存器,在第四个16位数据到来后才将这一组64位数据送给加密模块。这种结构非常容易用硬件描述语言实现。
2.4 总体结构

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

本设计在ALTERA公司的Quartus II环境下用VHDL、Verilog HDL实现设计输入,采用同步时钟,成功编译、综合、适配和仿真,并下载到Stratix系列FPGA芯片EP1S25F780C5中。在综合的过程中用逻辑锁等技术进行了优化。消耗逻辑单元16250个,设计时钟频率可达95.07MHz。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top