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

更新时间:2024-05-29 21:53:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

摘要

随着信息技术的发展,计算机应用渗透到社会生活的各个领域,特别是军事的应用,使人们对信息的依赖程度越来越高,因而信息安全技术显得格外重要。加密作为信息安全中一个最为有力的武器,正在发挥着重要的作用。

DES (Data Encryption Standard)加密算法在成为加密标准到今天,经历了长期的考验。实践证明DES算法的安全性是能够满足大部分的安全要求的。采用软件方式实现的DES算法会在很大程度上占用系统资源,造成系统性能的严重下降,而DES算法本身并没有大量的复杂数学计算,在加/解密过程和密钥生成过程中仅有逻辑运算和查表运算,因而,无论是从系统性能还是加/解密速度的角度来看,采用硬件实现都是一个理想的方案。

随着微电子技术的发展,可编程逻辑器件由早期的只读存贮器((PROM)发展到今天十分流行并广泛应用的现场可编程门阵列FPGA 。 FPGA具有体系结构和逻辑单元灵活,集成度高以及实用范围宽等特点,可以实现较大规模的电路,编程也很灵活,而且设计开发周期短,设计制造成本低,开发工具先进,标准产品无需测试,质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产。

所以,应用FPGA来设计和实现DES加密算法具有十分重要的现实意义和广阔的应用前景。本文设计实现了一种基于FPGA的DES加密系统。

概括起来,本文主要完成了以下几方面的主要工作: 1: 完成了DES加密系统的整体设计。整个系统包括DES加密核心模块,UART通信接口模块和BLOCKRAM存储模块。

2: 以EITS2003开发板为硬件开发平台,ISEwebpack为开发软件,用Verilog硬件描述语言设计并且实现了三大模块的具体功能及整体连接。

3: 用PC,串口调试工具,UART通信接口和EITS2003开发板测试并验证了整个系统的功能。

4: 探讨了DES加密系统在军事通信总站内的应用。

关键字:DES, FPGA, Verilog, UART, B1ockRAM, 数据加密

ABSTRACT

With the development of information technology, the application of computer has come into social any field. Especially in military field, people rely on information more seriously. So information security becomes very important. Encryption as a sort of power weapon is widely used in the field of information security.

DES (Data Encryption Standard) encryption arithmetic has stood the long test from when it became the encryption standard to now. It is proved by much practice that the security of the DES encryption can satisfy the voluminous need of security. Implementing the DES arithmetic by software will engross much system resource and make the system function decline. But the DES arithmetic has not much and complex mathematics count and only has logic operation and look-up-table operation. So, thinking from the point of system function and speed of encryption and decryption, implementing the DES arithmetic by hardware is an ideal project.

With the development of micro-electronic technology, the programmable logic device develop from earlier ROM to very popular and extensive applied FPGA(Field Programmable Gate Array) today. The FPGA has the characteristic of flexible system structure and logic unit, high Integration and wide application. Especially, the FPGA can carry out the more large-scale circuit, programmed flexibly. When the engineers use the FPGA to design and develop the product, the time is short, the cost is low, the tool is advanced, the standard product don't need to test, the quality is steady and the product can be inspected on line. So, the FPGA is widely used to design and make product.

Therefore, using the FPGA to design and implement the DES encryption arithmetic is very important and it will be widely used in much field. The main contributions of the paper are as follow:

1: Completed the whole design of the DES encryption system .The whole system includes the DES encryption core module, he UART communication interface module and Block RAM memory module. 2: Used the Verilog hardware design language to design and implement the function and the whole connection of the three modules by the EITS2003 as the hardware development flat roof and the ISEwebpack as the software development tool.

3: Used the PC, SCOMAssistant, the UART communication interface and the EITS2003 development plat roof to test and rerify the function of the whole system.

4: Discussed the application of the DES encryption system in the military communication station. Key words: DES,FPGA, Verilog, UART, BIockRAM, Data Encryption

摘要…………………………………………..………………………………………………..工 ABSTRACT…………………………………………………………………………………..工工 第一章绪论……………………………………………….. ………………………………………1

1. 1 DES的基本概念及特点……………………………………………………………. …..1 1. 2基于FPGA的DES加密系统的研究背景,意义,及应用前景………………………..1 1. 2. 1 DES加密系统现状及发展………………………………………………...……..1 1. 2. 2 PLD发展过程……………………………………………….. …………………..1 1. 3本文主要工作及章节安排…………………………………………………………….....2 1. 3. 1本文主要工作………………………………………………….……………..…..2 1.3.2章节安排……………………………………………………………………….…..2 本章小结…………………………………………………………………………………..…..3 第二章DES加密算法原理及系统开发环境……………………………………………….……..4 2. 1 DES加密算法原理……………………………………………………………...………..4 2. 1. 1 DES加密算法原理简介……………………………………………...…………..4 2. 1. 2初始序列变换IP………………………………………………….………………5 2. 1. 3加密函数f………………………………………………..……….………………6 2. 1. 4子密钥生成………………………………………………..……..………………9 2. 2系统开发环境………………………………………………..………….………………11 2. 2. 1硬件开发平台E工TS2003……………………………………………………..11 2. 2. 2软件开发工具ISE WebPack……………………………………..……………..12 2. 2. 3硬件描述语言Verilog HDL………………………………….………..………..13 本章小结…………………………………………………………………..…………………15 第三章DES加密系统设计与实现……………………………………………………..………..16 3. 1 DES加密系统设计方案………………………………………………………………..16 3. 1. 1 DES加密核心设计方案………………………………………………………..16 3. 1. 2通信接口设计方案………………………………………………………….…..17 3. 1.3 BlockRAM存储模块设计方案…………………………………………...……..18 3. 1. 4系统设计实现的功能…………………………………………………..….……18 3. 2 DES加密系统的实现………………………………………………...…………………19 3. 2. 1 DES加密核心模块的实现………………………………………..………...…..19 3. 2. 2 UART通信接口模块的实现………………………………………………..…..21 3.2.3 B1ockRAM存储模块的实现………………………………….…………..……..22 3. 2. 4 DES加密系统整体设计结果………………………………….…………..……25 本章小结…………………………………………………………………….………….……31 第四章性能分析与功能验证...................………………………………………….…..................32 4. 1性能分析…………………………………………………………………..…….………32 4. 1. 1 DES加密核心的性能分析………………………………………..…….………32 4. 1. 2整体性能分析……………………………………………………..…………….32 4. 2功能验证…………………………………………………………………..…………….33 4. 2. 1基于ModelSim仿真的功能验证………………………………….……………33 4. 2. 2实际硬件验证…………………………………….………………..……………34 本章小结………………………………………………………………………..……………36

第五章DES加密系统在军事通信总站内的应用……………………………………………..37 5. 1 DES加密系统在军事通信总站内的应用背景………………………………………37 5. 2军事通信总站用户服务呼叫中心系统结构………………………………………….37 5. 3 DES加密系统在军事通信总站用户服务呼叫系统中的应用………………………39 本章小结……………………………………………………………………………………40 结束语……………………………………………………………………………………………41 参考文献…………………………………………………………………………………………42 致谢………………………………………………………………………………………………42

第一章绪论

1.1 DES的基本概念及特点

数据加密标准(Data Encryption Standard, DES)[1],作为ANSI的数据加密算法(Data Encryption Algorithm ,DEA)和IS0的DEA-1,成为一个世界范围内的标准己经20多年了。尽管它带有过去时代的特征,但它很好地抗住了多年的密码分析,除可能的最强有力的敌手外,对其他的攻击仍然是安全的。

DES是一个分组加密算法,它以64位为分组对数据加密。64位一组的明文从算法的一端输入,64位的密文从另一端输出。DES是一个对称算法:加密和解密用的是同一种算法。密钥的长度为56位。(密钥通常表示为64的数,但每个第8位都用作奇偶校验,可以忽略。)密钥可以是任意的56为的数,且可在任意的时候改变。其中极少量的数被认为是弱密钥,但能容易地避开它们。所有的保密性依赖于密钥。[2]

1. 2 基于FPGA的DES加密系统的研究背景,意义,及应用前景

1.2.1 DES加密系统现状及发展

随着信息技术的发展,计算机应用渗透到社会生活的各个领域,特别是在军事中的应用,使人们对信息的依赖程度越来越大,从而使信息安全技术显得格外重要。从技术角度讲,网络安全除了依赖安全的网络通信协议及应用协议外,更多地取决于网络设备如交换机、路由器、网桥等所提供的加/解密功能。目前,基于DES算法的加/解密硬件广泛地应用于军事,卫星通信、网关服务器、机顶盒、视频传输以及其它大量的数据传输业务中。

DES (Data Encryption Standard)加密技术是一种常用的对称加密技术,该技术算法公开,加密强度大,运算速度快,在各行业甚至军事领域得到广泛的应用。DES算法从1977年公布到现在已有将近30年的历史,虽然有些人对它的加密强度持怀疑态度,但现在还没有发现实用的破译DES的方法。并且在应用中,人们不断提出新的方法增强DES算法的加密强度,如3重DES算法、带有交换S盒的DES算法等.因此 DES算法在信息安全领域仍有广泛地应用。

采用软件方式实现的DES算法会在很大程度上占用系统资源,造成系统性能的严重下降,而DES算法本身并没有大量的复杂数学计算(如乘、带进位的加、模等运算)[3],在加/解密过程和密钥生成过程中仅有逻辑运算和查表运算,因而,无论是从系统性能还是加/解密速度的角度来看,采用硬件实现都是一个理想的方案。

1.2. 2 PLD发展过程

当今社会是数字化的社会,是数字集成电路广泛应用的社会。信息高速公路,多媒体电脑,移动电话系统,数字电视,各种自动化设备以及我们日常的一些小制作都要用到数字集成电路。随着科学技术的发展,数字集成电路本身也在不断地进行更新换代.它由早期的电子管,晶体管,小规模集成电路,中规模集成电路,大规模集成电路,发展到超大规模集成电路以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务己不完全由半导体厂商来独立承担。系统设计们更愿意自己设计专用集成电路

(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好在实验室就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)[4] 。

早期的可编程逻辑器件只有可编程只读存贮器(ROM),紫外线可擦除只读存贮器(EPROM)和电可擦除只读存贮器(EEPROM)。其后,出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。这一阶段的产品主要有PAL(可编程逻辑阵列)和GAL(通用阵列逻辑)。这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使他们只能实现规模较小的电路。而FPGA和CPLD则都具有体系结构和逻辑单元灵活,集成度高以及实用范围宽等特点。他们可以实现较大规模的电路,编程也很灵活,而且有具有设计开发周期短,设计制造成本低,开发工具先进,标准产品无需测试,质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产。几乎所有应用门阵列,PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。FPGA芯片及其开发系统问世不久,就受到世界范围内电子工程设计人员的广泛关注和普遍欢迎。

综上所述,应用FPGA来设计和实现DES加密系统具有十分重要的现实意义和广阔的应用前景。

1.3本文主要工作及章节安排

1.3.1本文主要工作

本文研究的主要内容就是应用FPGA来设计和实现DES加密系统.具体完成了以下三方面的工作:

I: 完成了DES加密系统的整体设计。整个系统包括DES加密核心模块,UART通信接口模块和BLOCKRAM存储模块。

2: 以EITS2003开发板为硬件开发平台,ISEwebpack为开发软件,用Verilog硬件描述语言设计并且实现了三大模块的具体功能及整体连接。

3: 用PC,串口调试工具,UART通信接口和EITS2003开发板测试并验证了整个系统的功能。

1.3.2章节安排

全文共分五章,各章内容安排如下:

第一章介绍了DES加密系统的研究背景,现状,意义及应用前景。

第二章介绍了DES加密算法原理以及系统的开发环境。

第三章介绍了DES加密系统的设计与实现。整个系统由三大模块组成:DES加密核心,UART通信接口模块和BLOCKRAM存储模块。

第四章对系统进行了性能分析并对系统进行了功能验证。

第五章介绍了DES加密系统在军事通信总站内的应用方案。

本章小结

本章首先介绍了DES的基本概念及特点,然后讲述了DES加密系统的研究背景, 现状,意义及应用前景。本章的最后给出了本文的主要研究工作及各章节的安排。

第二章DES加密算法原理及系统开发环境

2.1 DES加密算法原理

2. 1. 1 DES加密算法原理简介

DES运算的明文(加密前数据)和加密密钥都是64位的,将原始数据经过初始的置换,然后与子密钥(由加密密钥产生)经过一系列迭代运算,最后再经过逆置换,即可到密文(加密后数据)。解密过程与此类似。分组密码是将明文消息编码表示后的数字序列X1,X2,?Xi.划分成长为m的组X=(

X.X01...Xm?1),各组(长为m的矢量)分别在密钥K=(K)

的控制下变换成等长度的输出数字序列(Y?数E?V

×K,Vyy.....y01n?1)(长为n的矢量),其加密函

nn是n维矢量空间。K 为密钥空间,

K

如图1所示,DES算法是64位明文由一个初始序列变换(IP)开始,经过16轮的加密 运算,再通过初始序列变换的逆变换(IIP)得到所需的密文。在每一轮中,数列块的右边32 位数据和密钥(KEY)一起传送给函数f,函数f运算的结果再和数列块左边32位数据进行异 或操作。其中S盒(选择函数)是DES算法的心脏,靠它实现非线性变换[5]。

2. 1. 2初始序列变换IP

如表1所示:

表2-1 IP

IP运算可以描述为将原数据序列中第58位作为新序列中的第1位,原序列中的第50 位作为新序列中的第2位,其他位也都同样地进行序列变换,最后一位数据是原序列的第 7位。

图1中的具体运算如以下算式(1),(2),(3)所示:

[6]

L’=R’ (1)

R=L⊕f(R,K) Kn=KS(n,KEY) (2)

Ln=Rn-1

Rn=Ln-1⊕f(R,Kn) (3)

初始序列变换的逆运算(IIP)如表2所示:

表2-2 IP

序列变换的过程和IP类似。

2.1.3加密函数f

加密函数f的运算框图如图2所示[7]。

图2-2加密函数f的运算框图

E运算是一个函数,它将32位输入数据扩充为48位的数据块作为输出。E(R)的前

三位在R中的位置分别是32, 1和2,而E(R)中的最后两位则分别是R中是第32和1位。

表2-3 E变换表

每个单独的选择函数S1 ,S2... ., S8 ,将6位数据块作为输入,并且产生4位数据块作为输出,选择函数S,根据下表进行运算。

表2-4选择函数S1

假设S1是如上表定义的选择函数,B是输入的6位数据块,那么S1(B)定义如下:B的第1和6位构成0~3的一个数,设它为i。B的中间4位代表0~15的一个数,设它为j。在上表中查询第i行,第j列的那个数。比如,输入6位数据为011011,行是01,表示第1行,列由1101定义,表示第13列。第l行第13列的数是5,那么输出就0101

选择函数S1 ,S2... ., S8分别如下所示;

表2-5选择函数S

图2-2中的P运算如下表所示:

表2-6 P运算

2.1.4子密钥生成

图2-3子密钥生成

首先,64位的密钥KEY通过阵列选择变换操作PC-1,成为48位数据。

这48位数据又被分成两个部分,第1部分为C0,第2部分为D0。如果KEY的数据从1到64进行标号,那么C0就分别是KEY的57, 49, 41, ??,44和36位,同样地,D0分别是KEY的63, 55, 47,??,12和4位。

表2-7 PC-1

C0和D0定义后,再接着定义Cn和Dn如何从Cn-1:和Dn-1得到,n=1,2, ??,16。 这是根据表7的每个数据块的左移运算完成的。

表2-8左移表

比如,C3和D3分别由C2和D2通过左移两位得到,C16和D16分别由C15和Dl5左移位得到。为了得到子密钥,Cn和Dn需经过阵列选择变换PC-2的运算[8] a。PC-2如下:

表2-9 PC-2

DES算法的原理和整个过程如上所述。

2.2系统开发环境

2. 2.1硬件开发平台EITS2003

EITS2003是多用途EDA(电子设计自动化)开发实验平台,核心器件是Xilinx公司的Spartan-IIE系列的FPGA芯片,可选型号的门阵列规模从5万门到30万门不等.Spartan一IIE基于先进的Virtex-E FPGA架构,专为价格敏感的消费类电子设计,具有强大的功能,可能达到与ASIC相比拟的系统级集成度[9]。

平台在设计中兼顾了试验与科研开发的需要,在提供了大量可用IO同时,采用核心芯片“嵌入式”的架构,使得可以在Spartan-IIE多种型号间自由选择所需的目标芯片。这种主芯片嵌入式结构,连同平台设计中采用的其他耐用性措施,使得平台具有灵活的使用方式,长期的使用寿命和低廉的维护费用。

EITS2003实验平台在FPGA周围提供了丰富的资源:有串口,PS/2接口,VGA接口,LED和七段数码显示管,拨码开关和按钮,AT89S52单片机,SRAM, 12C, A/D, D/A转换,扬声器,电源,时钟晶振等[10]。

EITS2003的用户可以在PC机上通过并口对FPGA进行配置,也可以使用板上的单片机配合EEPROM来配置FPGA。

EITS2003的性能与特点:

*可编程逻辑器件Xilinx Spartan-IIE系列FPGA-XC2S100E,PQ208封装,10万门,其他兼容可选的FPGA规模从5万门到30万门不等。

*板载晶体震荡器,50MHz频率,可选购晶振频率从l0MHz到100MHz:

*六个按钮和一个八路拨码开关,可用作通用地逻辑输入;

*八个LED和四个七段数码管,可用来显示FPGA和单片机的输出信息; *标准RS232接口,可方便的连接PC及其他工业设备; *标准PS/2接口,用来外联键盘或鼠标,扩展输入设备; *标准VGA接口,可显示64种颜色;

*集成Xilinx PBI型并口下载接口,允许PC机下载配置文件; *ADC电路,把FPGA的数字信号转换成模拟信号输出;

*板载Atmel S系列的AT89S52单片机,可减轻FPGA编程负担,也可独立进行单片

机实验,AT89S52不需要编程器,在线可编程;

*I2C EERPROM-24C256,提供另一种通用存储方式; *恒定直流供电,分为5V, 3. 3V, 1.8V o 实物图如下:

图2-4 EITS2003实验开发板

2. 2. 2软件开发工具ISE WebPack

EITS2003选用的软件是Xilinx公司提供的ISE5.2 WebPack,加上配合ISE使用的ModelSim Xilinx Edition(MXE)5.6E[11]。WebPack是基于Xilinx工SE的一个软件套件,提供了原理图输入,综合,布局布线,编程下载等功能。

在仿真方面,Mentor公司的Model Technology为Xilinx ISE专门定制T一个Xilinx版本的ModelSim,称为ModelSim Xilinx Edition(MXE)。 MXE可以用来做逻辑仿真(前仿真),也可以做精确的布局布线后仿真(后仿真)。

配合MXE的仿真,ISE WebPack提供T基于GUI的TestBench生成工具,方便直观的生成用户想要的测试模块。

下面是WebPack结合MXE的典型设计流程:

图2-5 WebPack典型设计流程

1:根据设计思路进行逻辑输入,可以选择的有:使用ECS进行原理图输入,使用Design Entry进行硬件描述语言输入(VHDL, Ver i logHDL, ABEL),使用StateCAD进行状态机转换图的输入。

2:使用MXE进行功能仿真,仿真时可以自己单步控制逻辑量的变化,也可以用语言

写一个TestBench来进行仿真,还可以使用WebPack中提供的TestBench生成工具HDL

Bencher来用图形化的界面生成一个TestBencho

3:使用Xilinx ISE WebPack中集成的XST综合工具进行逻辑综合。 4:在布局布线这个步骤中,对FPGA来说,有四个步骤: 1) Translate一解释设计,执行规则检查。

2) Map一对不同的目标器件来计算和分配资源。

3) Place and Route一对可配置逻辑块进行布局,使用布线资源. 4) Configure一生成可以下载编程的Bit流文件。

5:在布局布线后,也可以使用与功能仿真相同的TestBench来对设计进行仿真,这

称为后仿真。后仿真结合了布局布线的因素,可以精确的反映下载后芯片内部的执行情况,可以观测逻辑变量的延迟情况,毛刺,冒险竞争等。 6:使用WebPack集成的IMPACT工具进行下载芯片。

2. 2. 3硬件描述语言Yerilog IiDL

硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。利用这种语言,

数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路ASIC或现场可编程门阵列FPGA自动布局布线工具,把网表转换为要实现的具体电路布线结构[12]。

硬件描述语言HDL的发展至今己有20多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急需一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世纪80年代后期,VHDL和Verilog HDL语言适应了这种趋势的要求,先后成为IEEE标准。

Verilog.HDL是一种应用广泛的硬件描述语言,可以用于从算法级,门级到开关级的多种抽象层次的数字系统设计。 Verilog HDL是在1983年,由GDA (Gateway Design Automation)公司的PhilMoorby首创的。Phil Moorby后来成为Verilog-XL的主要设计者和Cadence公司的第一合伙人。在1984~1985年,Phil Moorby设计出T第一个名为Verilog-XL的仿真器;1986年,他对Verilog HDL的发展又作出了另一个巨大的贡献:提出了用于快速门级仿真的XL算法。 随着Verilog-XL算法的成功,Verilog HDL语言得到迅速发展。1989年,Cadence公司收购} GDA公司,Verilog HDL语言成为Cadence公司的私有财产。1990年,Cadence公司决定公开Verilog HDL语言,于是成立了OVI (Open Verilog International)组织,负责促进Verilog HDL语言的发展。基于Verilog HDL的优越性,IEEE于1995年制定了Verilog HDL的IEEE标准,即Verilog HDL 1364-1995; 2001年发布了Verilog HDL 1364-2001标准。在这个标准中,加入了 Verilog HDL-A标准,使Verilog有了模拟设计描述的能力。 从语法结构上看,Verilog HDL语言与C语言有许多相似之处,并继承和借鉴了C语言的多种操作符和语法结构。下面列出的是Verilog HDL硬件描述语言的一些主要特点: ? ? ?

能形式化地表示电路的结构和行为。

借用高级语言的结构和语句,例如条件语句,赋值语句和循环语句等,在Verilog HDL中都可以使用,既简化了电路的描述,又方便了设计人员的学习和使用。 能够在多个层次上对所设计的系统加以描述,从开关级,门级,寄存器级到功能

级和系统级,都可以描述。设计的规模可以是任意的,语言不对设计的规模施家

任何限制。 ?

Verilog HDL具有混合建模的能力,即在一个设计中各个模块可以在不同设计层次 上建模和描述。

? 基本逻辑门,例如and, or和nand等都内置在语言中;开关级结构模型,例如 ?

pmos和nmos等也被内置在语言中,用户可以直接调用。

用户定义原语创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是

时序逻辑原语。Verilog HDL还具有内置逻辑函数。

Verilog HDL语言最大的特点就是易学易用,通过学习和使用,可以在最短的时间内掌握该语言。另外,该语言的功能强大,可以满足各个层次设计人员的需要,从高层的系统描述到地层的版图设计,都可以很好的支持。由于Verilog HDL巨大的优越性,使得它广泛流行,尤其是在ASIC设计领域,更是处于主流地位。在美国,日本等国家,Verilog HDL语言也一直是使用最为广泛的硬件描述语言,其使用人数大大超过其他语言的使用人数。在国内,Verilog HDL的应用群体也在不断扩大,越来越多的人使用该语言进行设计和仿真。

本章小结

本章先介绍了DES加密算法的基本原理,然后介绍了本系统开发的环境,包括硬件,硬件开发平台EITS2003,软件开发工具ISE WebPack和3硬件描述语言Verilog HDL。

第三章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加密核心模块的顶层框图

3. 2. 2 UART通信接口模块的实现

RS - 232的实现通常采用专用的UART(Universal Asynchronous Receiver and Transmitter)接口芯片或利用单片机本身所带有的异步通信功能,但有些情况下也需要利用可编程芯片通过软件的编制来实现UART的功能。在本设计中,为了方便文件的传输,我们也设计了基于UA RT的串口通信模块。

3. 2. 2.1通信协议

异步串口包括接收和发送两个部分。接收部分将收到的以帧为单位的串行输入信号转化为并行信号供取走。发送部分则完成信号的并一串转换。同时会给传送的8位数据加上起始位,奇偶校验位和停止位。异步串行通信关键要保证通信双方收发同步。由于没有时钟线,所以双方必须以一个固定的频率,同步的收发数据,才能保证数据传送的正确性

异步串行通信的数据传送格式如下图:

[19]

3.2.2.2 UART通信接口实现原理

串口发送数据格式:1位起始位(‘0’),8位数据位,1位停止位(‘1’),空闲位(‘1’)。 接收数据: 按照串口传输协议,检测起始位,为防止因干扰或其它因素引起的电平跳动,以波特率16倍的频率检测,一旦检测到起始位,就开始接收数据,要保证在数据位的中间取样。

对于异步接收器而言,同步的实现就是靠寻找起始位来作为一帧数据的开始。通常的做法是产生一个16倍(或32倍)于波特率的时钟信号clkl6x,当 clkl6x的前后两个脉冲沿检测到串行输入信号从高到低的跳变时,即表明一帧数据的开始,然后再经过8个clkl6x周期,以该时刻点为基准,每隔16个。1k16x周期(即串行通信周期),就将该时刻收到的串行数据移入移位寄存器rsr中,当8位数据(假设数据长度为8位)均移入寄存器后,再将rsr的内容移入二级缓冲rbr,设置数据准备好信号dataready,去控制数据的并行输出。同时,用dataready信号上升沿对接收帧数进行计数。本设计中协议规定文件以一个十六进制00数据作为结束,因此检测到帧数据为00时将RX_ done信号置高,表明文件接收完毕。如需要给出出错信号,可以判断奇偶校验位,如有错,设置校验错信号parityerror;再判断其后的停止位,如有错,则设置帧错误信号framingerrorarxd为串行输入信号,clkl6x可以根据实际的波特率由高频时钟信号分频得到。dout是并行输出信号。

发送数据: 串口数据发送相对接收较为简单,只需要依次发送起始位,数据位,停止位即可,注意波特率的计算[20]。

由于实际用的板子的晶振是50MHz的,所以调用了分频子模块counter,以得到9600Hz的16倍的clkl6x的时钟。

3. 2. 2. 3 UART通信接口模块顶层框图

通过上述分析,UART通信接口模块的顶层框图如下:

图3-8 UART通信接口模块的顶层框图

3.2.3 B1ockRAM存储模块的实现 3.2.3.1 B1ockRAM存储器的原理

对FPGA内部的B1ockRAM区:

存储区大小及数据宽度可取以上几种不同组合方式。本例中选用8*512。

每一块存储区大小都为4K, SPARTAN II不同型号提供4-14块(block)不等的存储块。本例用XC2S100,使用其中的8块。

应用时可选双端(Figure1)或单端(Figure2)两种形式。由于本设计中RAM有64位数据的

读写和8位数据的读写,采用双端形式可以方便地址线的控制。

上表中提供了几种Primitive,通过调用,可实现Width分别为1, 2, 4, 8, 16在本设计中的一个调用例子如下:

RAMB4-S8-S8

ram0(.DOA(do0), .DOB(data_out64[63:56]), .ADDRA(addr_a), .CLKA(clk_slow),.

DIA(data_in8), .ENA(1'bl), .RSTA(1'b0), .WEA(we0), .ADDRB(addr_b), .CLKB(clk), .DIB(data_in64[63:56]), .ENB(1'bl), .RSTB(1'b0), .WEB(data_in64 en));

可用工NIT_ 00-INIT_ Of对4K存储区进行初始化。 应用举例:

INST \ INIT_00 =0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF;

在本设计中对默认的所有存储区初始化为0;本设计中RAM读写的时钟采用UART通信模块中的16倍于波特率的时钟信号clkl6x:数据宽度定为8,则每块地址范围为0-511,共用了8块,所以ADDR要12位,[11:0]。

3.2.3.2 B1ockRAH存储模块的顶层框图

通过上述分析,BlockRAM存储模块的顶层框图如下:

图3-10 B1ockRAM存储模块的顶层框图

3. 2. 4 DES加密系统整体设计结果 3. 2. 4.1 DES加密系统整体设计顶层框图

综上所述,DES加密系统整体设计顶层框图如下:

图3-I l整体设计顶层框图

DES加密系统顶层设计模块的源代码:

module top( clk, TX_ reset, RX_reset, RXD, TXD, RX, RX_done, TX_ena,

DECRYPT, CLKLXENABLE,Display, Control);

input clk;

input TX_ reset: input RX_reset: //input DES_ reset; input RXD; input RX; input TX_ena; input DECRYPT;

output TXD: output RX_done;

output CLKLXENABLE; output [6:0] Display; output [3:0] Control; //output flag;

reg [6:0] Display; reg [3:0] Control;

reg [1:0] LED_ Flag; //reg flag;

wire [7:0] SENDDATA; wire [7:0] DOUT;

wire [] DATAREADY; wire [11:0] FRAME_COUNTER; wire [11:0] DISPLAY_COUNTER; wire E_DATA_RDY; wire [63:0] DATA_IN64; wire [63:0] DATA_OUT64; wire rstn; wire [7:0] DIN;

wire [11:0] TOTAL_FRAME; wire [8:0] RAM_ADDR;

wire [8:0] BLOCK_COUNTER; wire MODESEL;

wire DATA_IN64_EN; wire [63:0] TEST_OUT_REG; //wire DES_reset_buf;

assign E_DATA_ RDY=1' b 1;

assign DIN[7:0]= { DOUT[0],DOUT[1],DOUT[2],DOUT[3],DOUT[4],DOUT[5],DOUT[6],DOUT [ 7]};

assign RAMADDR=FRAME_COUNTER[11:3]; assign LED4=4' b0000;

//assign RAM_ADDR=FRAME_COUNTER[11:3]; assign MODESEL=1' b 1; assign

DISPLAY_COUNTER=RX?(FRAME_COUNTER+1):(FRAME_COUNTER-8); pram

Ipram(.clk(clk),.clk_slow(CLK16X),.data_in8(DIN),.data_in64(DATA_IN64),.modesel(MODESEL),.data_in8_ en(DATAREADY),.data_in64_ en(DATA_IN64_ EN),.addr_a(FRAME_COUNTER[11:3]),.addr_b(BLOCK_COUNTER),.ramsel(FRAME_COUNTER[2:0]),.data_ out8 (SENDDATA[7:0]),.data out64(DATA_OUT64));

//IBUF rstpad(.I(DES_ reset),.O(DES_reset_ buf)); uartnew

Iuartnew(.RX(RX),.senddata(SENDDATA),.sendenable(TX_ena),.dout(DOUT),.dataready(DATAREADY),.rxd(RXD),.txd(TXD),.stdclk(clk),.rst(RX_reset),.rst2(TX_reset),.frame_counter(FRAME_COUNTER[11:0]),.RX_done(RX_done),.test(CLKLXENABLE),.total_frame(TOTALFRAME),.clkl6x (CLK16X));

des

Ides(.reset(RX),.clk (clk),.data_ bus (DATA_OUT64),.TEST_OUT

(TEST_OUT_REG),.e_data_rdy(E_DATA_RDY),.key(DATA_OUT64),.decrypt(DECRYPT),.data out(DATA_IN64),.d_ data_ rdy(DATA_IN64_ EN),.block_ counter (BLOCK_ COUNTER),.total_block(TOTAI-FRAME[11:3]));

//always @(posedge clk) // begin

// if (DES_ reset_ buf) // flag<=0' b0; // else

// flag<=0' b 1; // end

/*********七段数码管显示***********/ /*********译码部分**************/

wire[6:0] DisplayAl,DisplayA2,DisplayBl,DisplayB2;

HEX2LED myHLAl(DISPLAY_COUNTER[3:0],DisplayAl); HEX2LED myHLA2(DISPLAY_COUNTER[7:4],DisplayA2); HEX2LED myHLBl(DISPLAY一OUNTER[11:8],DisplayBl); HEX2LED myHLB2(LED4,DisplayB2);

/*******为七段码显示生成一个快时钟********/

wire clk_ LED;

wire [25:0] time_ seed;

assign time_seed=26' d50000; //综合下载时 d=26' d25_ 000_ 000; assign rstn=RX_reset; //仿真时assign d=26' d00_ 005; Freq_Div myFreq_Div( .Clk_sys(clk), .Div(time_seed), .Reset (rstn),

.Clk_user(clk_ LED)

);

/********七段码输出控制状态机*************/ always@(posedge clk_LED or negedge rstn)

begin

if(!rstn) begin

Display<=0; Control<=0; LED_ Flag<=0;

end else

begin

if(LED_Flag===2' b00)

begin

Display<=DisplayAl: Control<=4' b0111; LED Flag<=2' b01; end

else if(LED_Flag==2' b01)

begin

Display<=DisplayA2; Control<=4' b1011; LEDes Flag<=2' b 10; end

else if(LED_Flag==2' b10)

begin

Display<=DisplayBl; Control<=4' b1101; LEDes Flag<=2' b 11; end

else if(LED_Flag====2' b 11)

begin

Display<=DisplayB2; Control<=4' b1110; LED_ Flag<=2' b00; end else

LED_Flag<=2' b00;

end end

endmodule

DES加密系统顶层设计中,des. v, pram. v, uartnew. v, HEX2LED. v为系统调用函数。

FrecLDiv. v, 3.2.4.2三大模块之间的连接

DES, BLOCKRAM, UART三个模块之间的连接关系如下图所示:

图3-12三大模块连接关系图

3.2.4.3用户约束文件

[定义用户约束文件top_constraints.ucf]

NET \NET \NET \NET \NET \NET \NET \

NET \

NET \ NET \NET \ NET \NET \”; NET \NET \NET \ NET \NET \NET \NET \NET \

用三个拨码开关分别控制UART串口传输的接收使能、发送使能和加/解密控制;用两个按

键分别作为接收和发送的清零;用两个LED分别作为UART串口传输第一帧数据的开始和所

有数据接收完毕的指示;LED数码管用来指示接收和发送帧数。

本章小结

本章先介绍了DES加密系统的整体设计方案,由三大模块组成:DES加密核心,UART 通信接口和BLOCKRAM存储模块。然后具体阐述了各个模块的原理,设计及实现过程。 最后介绍了整体设计结果。本章是本论文的重点。

第四章 性能分析与功能验证

4.1性能分析

由于采用UART作为通信接口,其低速率的瓶颈使得我们无法对整个系统的DES加密吞吐量进行有效的测试,因此这里通过[SE的仿真结果来对实现结果作一分析。 4.1.1 DES加密核心的性能分析:

完成DES加密核心模块的设计后,利用ModelSim对DES核心模块进行Post-Translate Simulate,得到仿真报告相关内容如下:

Selected Device:2s100epq208-6

Number of Slices: 557 out of 1200 46% Number of Slice Flip Flops: 582 out of 2400 24% Number of 4 input LUTs: 862 out of 2400 35% Number of GCLKs: 1 out of 4 25% Speed Grade:-6

Minimum period: 13.052ns (Maximum Frequency:76. 617MHz) Minimum input arrival time before clock: 13.230ns Maximum output required time after clock: 15.127ns Maximum combinational path delay: No path found

根据仿真结果,本设计的加密处理速度达到(64*76. 617*3 )/(16*3+3) =288.44Mbps, 将近300Mbps,完全满足普通lOM/100M网络的速率要求。考虑到实际布局布线之后的性能折扣,DES加密核心的数据吞吐量也应可在百M数量级。

4.1.2整体性能分析

整体综合仿真的报告如下:

Device utilization summary:

Selected Device: 2s100epq208-6

Number of Slices: 710 out of 1200 59% Number of Slice Flip Flops: 648 out of 2400 27% Number of 4 input LUTs: 1096 out of 2400 45% Number of bonded IOBs: 20 out of 146 13% Number of TBUFs: 24 out of 1200 2% Number of BRAMs: 8 out of 10 80%

Number of GCLKs: 1 out of 4 25% Timing Summary: Speed Grade:-6

Minimum period: 12.911ns (Maximum Frequency: 77.453MHz) Minimum input arrival time before clock: 21.516ns Maximum output required time after clock: 6.986ns

Maximum combinational path delay: No path found

整个系统可以达到的最高频率为77. 453MHz,因此,在实验板上的50MHz时钟频率下

能正常工作。

4. 2功能验证

4. 2. 1基于ModelSi.仿真的功能脸证

利用ModelSim工具对DES加密系统的Verilog代码进行Behavior & post Translate Simulate,得到的仿真波形初步验证DES加密、解密功能的正确性 [22] 。

下图是DES加密系统的ModelSim的仿真波形图:

图4-1

将上图中红色方框内的波形放大如下,可以看到三级流水线的效果,即d_data_rdy

为高的时候有连续的三个64位加密数据块输出,如下图中红色椭圆内所示。

图4-2

通过波形仿真图也可以初步检验DES加密模块的正确性。如上图中方色方框所示:

KEY: 00 00 00 00 00 00 00 00 PLAIN:80 00 00 00 00 00 00 00 OUTPUT:95 f8 a5 e5 dd 31 d9 00

与XILINX公司网站上设计参考中给出的数据一致。

另外,在H.卡茨安的《标准数据加密算法》一书中有详细的实例分析,此实例在本设计中

的验证同样正确,数据如下:

KEY:5b 5a 57 67 6a 56 67 6e (FEBRUARY) PLAIN:67 5a 69 67 5e 5a 6b 5a (RETRIEVE) OUTPUT:97 4a ff bf 86 02 2d if

4. 2. Z实际硬件脸证

在Xilinx的开发平台ISES. 2下用Verilog HDL完成设计,并进行了综合和仿真;成功下载到试验板EITS2003上的XC2S100中。

此时,可以通过各种串口调试工具对加密系统进行实际验证。采取了以下测试方案:

1、由PC通过串口向试验板发送文件和密钥,经过加密后的密文通过串口传回PC,与PC上的标准加密DES加密程序进行比对;

2、将由系统加密后的密文再次通过串口发送给该系统进行解密,与原文进行比对以达到验证的目的。各方法均验证了本设计的加/解密功能。

为了简单起见,在这里选取了与上述仿真testbench相同的测试数据来加以说明。值得说明的是,除此之外,还利用多组数据、文件进行了加解密测试,测试结果表明,整个DES加密系统的加/解密功能是可靠的。

下面是串口调试图:

图4-3

如上图,Key为5b 5a 57 67 6a 56 67 6e (FEBRUARY)

PLAIN: 67 5a 69 67 5e 5a 6b 5a (RETRIEVE) (00为预定的终止位)

Ciph OUTPUT: 97 4a ff bf 86 02 2d if,结果正确。

利用同一组Testbench对系统的解密功能进行测试,即将得出的密文连同原有密钥一同发回由系统进行解密:

图4-4

本文来源:https://www.bwwdw.com/article/ucc6.html

Top