基于FPGA的DES加密系统设计与实现(5)

2019-04-21 17:44

第三章DES加密系统设计与实现

3.1 DES加密系统设计方案

整个系统包括DES加密核心,UART通信接口和BLOCKRAM存储模块三大功能块,DES加密核心即对DES算法的硬件实现,以在合理的资源占用下实现尽可能高的性能为目标;而UART通信接口则负责加密核心与外界通信链路之间的数据吞吐。由于外界通信链路的速率不尽相同,如何协调加密核心与通信接口之间的数据率也是一个值得考虑的问题。FPGA内部的B1ockRAM主要起到两方面作用:1、缓冲数据;2, UART与DES模块之间的位宽转换。

3.1.1 DES加密核心设计方案

DES加密算法以多轮的密钥变换轮函数和密钥十数据运算轮函数为特征,与之相对应的硬件实现,既可以通过轮函数的16份硬件拷贝,达到深度细化的流水线处理,实现性能上的最优;也可以通过分时复用,重复调用一份轮函数的硬件拷贝,以时间换空间,从而得到硬件资源占用上的最小化。究竟选择怎么样的实现方式,根据实际硬件条件进行了选择。 1 性能优先方案:

采用循环全部打开和流水线结构来设计。循环全部打开后,实现全部16个轮函数的硬件级联,只要一个时钟周期就可以完成一个数据块的加密或解密;通过多占很大的空间来换得速度上的大幅度提高,然后再在每轮的中间加上寄存器来实现流水线。在第一时钟周期,第一块数据经过第一轮处理存入寄存器1中。在下一个时钟周期,寄存器1中的结果经过第二轮处理存入寄存器2中;同时,第二块数据可以经过第一轮处理存入寄存器1。这样,多块数据实现了同时处理,使得加/解密速度可以提高近16倍,确实让性能有了大幅度的提高,但是由于实验平台上搭载的Spartan IIE FPGA总资源为10万门左右,一味地追求性能无疑是不切实际的。后来的综合验证肯定了这一观点[13]。 2 资源优先方案:

与性能优先方案相反,资源优先仅硬件实现一套密钥变换轮函数和密钥+数据运算轮函数,通过反复16次调用这一硬件结构来实现一次DES加密运算。这在大大减少硬件开销的同时也在性能上作出了相应的牺牲。

基于性能和资源占用的综合考虑,采取了以资源优先方案为基础的实现形式,通过在轮函数内部设置3级流水线,提高整体处理的速度性能;将数据+密钥轮函数和密钥变换函数在硬件上单独实现,减少了相邻流水线级间的逻辑复杂度[14]

最终采取的整体方案可以用下图简要表示:

图3-1 DES加密核心原理图

通过设置轮计数器对所进行的轮运算进行计数,控制DATAMUX和KEYMUX两个数据选

择器选择进入轮函数运算的是加密中间数据还是原始输入数据,以达到复用轮函数的目

的。

3.1. 2通信接口设计方案

通信接口负责为DES加密核心吞吐数据,需要根据不同的通信介质进行设计,以以太网应用为例,需实现相应的以太网MAC控制器以与物理层设备接口,或提供与已有以太网控制器硬件相接口的逻辑总线。但是考虑到通用性的问题,由于通信链路速率的不同,通信接口与DES加密核心之间很难实现数据传输和加密的同步,因此需要在两者之间设计相应的机制。在数据跨越不同时钟边界时,如何稳定可靠地传输数据是一个值得重视的问题,而握手或缓冲是常用的实现方案。由于Xilinx系列的FPGA普遍提供了片B1ockRAM.并且支持双端口、独立时钟操作,采用双口RAM实现FIFO缓冲为解决这一问题提供了切实可行的方案。

考虑实验平台上硬件条件的限制,现成可用的通信接口只能选择UART。由于UART传输的低速率,无疑成为了整个系统性能的瓶颈,使得加密性能的实际测试无法进行。但是从功能演示和熟悉系统实现的流程上来说,UART的简易、可操作又不失为一个不错的选择。因此,在本设计中,选取了UART作为通信接口

[15]

UART通信接口部分的系统框图如下图所示:

图3-2 UART通信接口原理图

3.1.3 B1ockRA11存储模块设计方案

对FPGA内部的B1ockRAM,考虑采用8片片内B1ockRAM并行的方式,UART数据帧(8位宽度)循环串行写入,DES模块则采取8片并行输入输出的方式来达到位宽匹配的目的[16]。

3.1.4系统设计实现的功能

本设计采用时钟独立的双口RAM,实现UART与DES加密核心之间的数据缓冲;采用片内8片8位宽度BlockRAM并行输入输出,实现与DES加密数据总线的位宽匹配。 整个系统功能如下图所示:

图3-3系统功能简图

3.2 DES加密系统的实现

本设计采用试验开发板EITS2003上Xilinx公司SPARTANIIE结构的XC2S100e作为算法载体,通过UART串口进行实验板和PC的通信,将所需加(解)密的文件通过串口下载到FPGA的BLOCKRAM中,在FPGA中实现控制器和DES模块以及密钥的生成,通过控制器实现加、解密功能,最后将加(解)密完成的数据再次通过串口传回PC,可以通过现成的DES算法程序检验正确性。从前面的介绍可以看到,DES算法没有大量的复杂数学计算(如乘、带进位的加、模等),在加/解密过程和密钥生成过程中仅有逻辑运算和查表运算。

这些特点为采用FPGA进行硬件实现提供了可能性和可行性。

3. 2.1 DES加密核心模块的实现 3. 2.1.1 S盒设计

通过分析发现,S盒在整个设计中占了很大的比重。S盒性能的提高对于整个设计性能会有很大的改善,因此S盒是整个设计优化的重点[17]。

DES的8个S盒分别是一个满足特殊性能的6~4位的变换。在VHDL或Verilog语言中,可以直接用CASE语句来实现。这是最简单的实现方法,但是HDL语言都属于高级语言,它们强烈依赖于编译器的优化能力,往往对设计者来说,涉及得越少、编程越简单,代码效率越不高,这对于性能考虑的实现来说是不可取的。在实现过程中通过分析工具也发现,依赖于编译器的实现不但复杂,而且占用大量的空间。这样,S盒成了速度的瓶颈,为此,采用ROM来实现。XC2S100的LUT可以配置为16X 1位的ROM,把输入的6位作为地址,对应的地址空间里存放的就是输出的4位,从而实现了6\位的查找表LUT,所需时间只是FPGA中CLB的传输时间加上传输线上的延时,如图8。

图3-4 S盒在XC2S100e的实现

3.2.1.2密钥生成器设计

密钥生成器的设计是独立于DES轮函数运算实现的,采用3级流水线来与轮函数中的流水线相平衡,单轮的实现如图9。

其中,3级流水线由移位寄存器(SR)和1个触发器(FF)构成,在SR中完成两级流水线,在FF中实现第三级。XC2S100的LUT中的每个查找表LUT可以用来生成1~16个移位寄存器,而且在一个单独的可配置逻辑功能块CLB中连接8个移位寄存器来构成一个128位的移位寄存器

[18]

图3-5单轮子密钥生成在XC2S100e的实现

3. 2. 1. 3 DES加密核心模块的顶层框圈

通过上述分析,DES加密核心模块的顶层框图如下:

图3-6 DES加密核心模块的顶层框图


基于FPGA的DES加密系统设计与实现(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018学年杭州中考科学模拟卷3 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: