AES加密算法FGPA优化与实现_第1页
AES加密算法FGPA优化与实现_第2页
AES加密算法FGPA优化与实现_第3页
AES加密算法FGPA优化与实现_第4页
AES加密算法FGPA优化与实现_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AES加密算法FGPA优化与实现摘要伴随着人们对于网络信息安全越来越重视的情况下,从而产生和发展的数据加密系统,其理论核心就是加密算法。加密算法虽然在历史长河中不断的更新换代,直到现在被广泛采用的加密算法是AES(AdvancedEncryptionStandard)算法,就是因为AES的安全性能能够确保近20年内不被破解。本文介绍了在Verilog语言下的AES加密算法,以及相关的知识及简单运算,提出一种基于FPGA去实现AES算法的优化方案。在设计过程中,用Verilog语言对电路进行RTL级的描述,生成原理图。使用Model公司的ModelSim仿真工具进行仿真。为了进行加密算法的面积优化,我对加密时的计算方法进行了优化,提高模块的利用率,减小硬件面积,从而达到面积优化的优化目的。通过使用ISE14.7仿真软件进行实验,使用XilinxVirtex-5XC5VLX50T板子进行仿真。通过时钟频率的延迟时间的对比,对该优化进行总结。最后的实验数据结果验证了正确性。关键词VerilogHDL;AES加密算法;FPGA实现

OptimizationandimplementationofAESencryptionalgorithmFGPAAbstractAspeoplepaymoreandmoreattentiontonetworkinformationsecurity,thecoreofthetheoryofthedataencryptionsystemproducedanddevelopedistheencryptionalgorithm.Althoughtheencryptionalgorithmhasbeencontinuouslyupdatedinthelonghistory,theencryptionalgorithmwidelyuseduntilnowistheAES(AdvancedEncryptionStandard)algorithm,becausethesecurityperformanceofAEScanensurethatitwillnotbecrackedinthepast20years.ThisarticleintroducestheAESencryptionalgorithminVeriloglanguage,aswellasrelatedknowledgeandsimpleoperations,andproposesanoptimizationschemebasedonFPGAtoimplementtheAESalgorithm.Inthedesignprocess,VeriloglanguageisusedtodescribethecircuitattheRTLlevelandgenerateaschematicdiagram.UseModel'sModelSimsimulationtoolforsimulation.Inordertooptimizetheareaof​​theencryptionalgorithm,Ioptimizedthecalculationmethodduringencryptiontoimprovetheutilizationrateofthemoduleandreducethehardwarearea,soastoachievetheoptimizationpurposeofareaoptimization.TheexperimentwasconductedbyusingISE14.7simulationsoftware,andtheXilinxVirtex-5XC5VLX50Tboardwasusedforsimulation.Throughthecomparisonofthedelaytimeoftheclockfrequency,theoptimizationissummarized.Thefinalexperimentaldataresultsverifythecorrectness.KeywordsVerilogHDL;AESencryptionalgorithm;FPGAimplementation

目录1绪论 61.1加密算法的演变过程 61.1.1古典加密算法 61.1.2现代加密算法 61.2AES加密算法的研究现状与趋势 71.2.1AES加密算法在国内外的研究现状 71.2.2AES算法的趋势 81.3课题研究背景与意义 81.4论文的主要内容 91.5论文的结构安排 92AES加密算法的介绍 112.1AES算法 112.2AES的基本结构 122.3AES加密算法的实现 142.3.1S盒变换 142.3.2行变换 152.3.3列混合 162.3.4密钥扩展 162.4本章小结 173开发环境介绍 183.1硬件描述语言 183.2XilinxIESDesignSuite14.7开发环境 183.3仿真工具ModelSim 193.4本章小结 194FPGA的实现与优化 204.1基本模块实现 204.1.1轮密钥加(AddRoundKey) 204.1.2字节替换(SubBytes) 204.1.3行移位(ShiftRows) 214.1.4列混合(MixColumns) 214.2AES算法的主模块 224.3AES加密算法的优化 224.4设计方法 224.5本章小结 235AES加密算法的优化仿真 245.1AES加密算法接口描述 245.2AES加密算法仿真 245.3优化前后对比 265.4本章小结 27总结 28致谢 29参考文献 30

1绪论1.1加密算法的演变过程加密算法共分为古典加密算法以及现代加密算法两种。1.1.1古典加密算法古典加密算法分为两种,替代算法和置换移位法。1.替代算法算法定义是将输入字母的纯文本替换为字母、数字或符号的其余部分。恺撒密码是现代古典加密算法中最著名的替代算法之一。替代算法密码原理很简单,只需要一个字母的转换。由于有更好的加密方法,所以就会有更好的解密方法。并且无论怎么改动字母表中的字母次序,密码都有概率会被人破解。虽然在现有的英文单词中,26个英文字母呈现出的频率是不一样的,但是一旦通过对字母出现的频率进行统计,就可以轻而易举的对替换密码进行破译。所以人们为了抗击这种对字母频率剖析的行为,发明了以置换移位法充当主加密方法的加密法。2.置换移位法维吉尼亚密码是利用置换移位法的最著名的一种密码。它是一种以置换移位为根本的,通过周期更换而构成的暗码。之前讲的替代算法中,针对一切的明文字母,密钥要么是一个独一的数,要么是根本没有规律可找的。但是这些加密密钥,在维吉尼亚看来,是可以随意指定的字符串。这些加密密钥字符按照规定的顺序一个接一个地作用于明文信息字符。明文信息的长度通常大于键串的长度,并且明文的每个字符都需要具有相应的键字符,因此该键需要无休止地循环直到明文的每个字符与相应的键字符匹配为止。经典的密码系统将数学计算方法引入密码学的分析和研究中。这为现代加密技术的构成和发展奠定了扎实的基础。1.1.2现代加密算法现代加密算法分为对称式加密算法和非对称机密算法1.对称式加密算法对称加密便是加密和解密共同经过一个密钥去实现加密的。今天,一种被称为“SessionKey”的加密技术被广泛使用,它的长度是56位。2.折叠非对称式加密技术非对称加密意味着加密和解密不使用相同的密钥。通常,有“公钥”和“私钥”两个密钥,必须配对这两个密钥才能使用,不然就无没有办法读取加密文件。这里“公钥”指的是公共密钥,而“私钥”不能透露出去的密钥,只能由持有者知道,这就是它的优点。若是利用对称加密的方式在网络上进行加密文件的传输,必须要把密钥告知对方,所以很可能是会被别有用心的窃听。非对称加密方法具有两个密钥,并且可以将“公钥”公开。接收者在解密时仅需要使用其“私钥”,这可以减少密钥传输的失窃的风险。1.2AES加密算法的研究现状与趋势1.2.1AES加密算法在国内外的研究现状现在关于AES加密算法的国内外研究,主要在算法的实现和分析中。尤其是对AES加密算法的各种完成形式研究多一些。由于AES加密算法在设计时就更多的考虑到了软硬件的实现问题,所以得到了更广泛的使用。目前AES加密算法分为软、硬件两种大类实现。AES加密算法中子模块的详细优化和设计是两者的实现思想,从而优化了最终运行速度和资源[1]。在1975年之前,没有比安全局有更好的方法来判断哪种加密算法更好的了。有人说是DoubleROT13或EBG13vfterng。最后,有人呼吁要一种新的加密算法,经过国家安全局的反复设计和修改,DES被选为数据加密标准,因为它具有更短的密钥和更健壮的S盒,自成立以来已经统治了20多年,所以学术界开始研究DES,从那时起,现代密码学应运而生,这些年来,许多攻击者都在挑战,尽管DES已经被打了好几次,但他并没有削弱自己的优势地位,为了防止被攻击,DES算法被使用了三次,也就是‘Triple-DES’,这个方法非常可靠,但是运行速度不是很理想,甚至慢得出奇。他们希望它像“Triple-DES”一样健壮,但它们也需要运行更快、更灵活的加密算法,但运行更快、更灵活。所以AES加密算法诞生了,他们的发明者把自己的姓氏结合命名为:Rijndael,AES当然成了加密之王,它无处不在,就像空气一样,为了表示钦佩,英特尔在芯片中专门为他们调整了一个低级指令,这样AES就可以运行得更快[2]!AES算法达到了当时密码算法的最高峰,各个领域的科学家都在对其进行系统的科学研究。现在,人们对AES密码算法的钻研,主要表现在下面的三个方面:设计原理分析,安全性能分析,统计性能分析。不论是在密码学的基础理论上的研究,还是在实际操作和应用方面,国外研究机构在这两个方面都做得很棒,并制定了适用于本国的标准。在信息安全方面,始终处在世界领先地位是美国,但是其他国家也都不愿意放弃在信息安全领域的自主权。我国一直在信息安全领域努力工作,在理论研究方面取得了良好的成绩,但与美国等国家相比,在应用方面还存在一定的差距[3]。1.2.2AES算法的趋势国内外对AES算法的研究趋势有几个方向:(1)研究AES算法的性能提高以及算法安全性的分析(2)研究AES算法的使用方式对安全性能的影响(3)S盒的替换对于AES算法的影响(4)流水线的处理引入算法实现中在实际的应用场合中,虽然AES算法在算法的层面上已经考虑了优化的问题,但具体到AES实现的技术方面,还需要针对特定的软、硬件环境,对AES算法中的每一个子模块进行专门的优化处理。1.3课题研究背景与意义现代社会的信息化和网络化给人们的生活带来了诸多便利,但信息安全的隐患日益突出。信息获取能力和信息安全保障能力是当今21世纪综合国力[4]。经济竞争实力和生存能力的主要组成部分,是世界各国争先抢夺的重点。信息安全问题已经对国家安全,社会安全,经济安全和军事安全构成了严重明显的影响和威胁[5]。总而言之,信息安全包含系统安全和数据安全两方面。密码算法本身和开发设计的自主性取决于信息安全的自主性,这样才能完全打消密码算法是否安全的顾虑,才能放心的被用来维护国家通讯和网络的安全。尤其在国家机密队伍中,一定要本国自己开发研制属于自己打的安全技术,绝对不能直接引进其他国家的安全技术,只有自己研发才能从根本上保障国家的信息安全。密码的加密和解密技术在密码学中采用对各种操作加密的信息进行相应的数学变换的方法,从而使入侵者无法真正理解原始信息的含义,从而保护了信息的安全,达到了信息安全的目的。所以需要我们年青一代的人们去研究和掌握到更多的安全技术,这样才能尽我们中国公民的最大努力的保证网络的安全[6]。20世纪70年代以来,计算机技术发展迅速,特别是军队和政府机关对计算机技术的需求越来越大,人们在使用计算机时,必须充分利用信息系统中软硬件的机密性、完整性和可用性,以及解决、存储等问题的能力,这就是为什么计算机安全已成为当务之急。1977年,国家标准局发布了国家数据加密标准(DES),随着科学技术的进步,社会的发展将决定DES算法中所有类型的替换是否合理有效,或者替代是否会对信息加密造成一定的破坏,鉴于这种情况,替代是否会带来意想不到的风险,人们开始期待一种安全、开放的加密标准的出现。随着Internet的广泛使用以及个人数据,电子邮件和电子自动传输系统的建立和实施,信息安全已变得尤为重要。从那时起,新的增强加密标准AES成为了自己的知识。AES产品的产权之所以拥有广阔的市场。同时,AES算法研究和开发的本地化可以在很大程度上消除消费者对产品以及如何安全维护AES算法安全性的担忧。如何更快地研究和讨论AES算法,如何尽可能地节省资源,从而有效地实现基于FPGA的AES加密和解密算法,从而在速度和资源之间取得平衡。现场可编程门阵列(FPGA)的应用已经从传统的原型制作扩展到主流生产。这种变化是由商业压力驱动的,以降低设计成本、风险和实现更快的上市时间。技术的进步导致了主流制造商提供的掩模编程的大规模生产版本的FPGA结构,对于某些应用来说,这消除了将原型设计从FPGA转移到ASIC的必要性,同时仍然实现了较低的单位成本。1.4论文的主要内容本文主要描述了基于FPGA[7]实现AES加密算法的优化与实现的设计,其中重点在于FPGA的实现以及优化。以及对优化前后的数据进行了对比。1.5论文的结构安排论文的内容主要分为以下几个部分:第一章为绪论。该部分主要介绍了加密算法的演变过程和国内外的研究现状,及本篇论文的主要内容。第二章为AES加密算法的介绍。该部分介绍了加密算法的基本定义、结构、以及算法实现的加密流程。第三章为开发环境的介绍。该部分介绍了本设计所需要的开发环境、设计语言及仿真工具。第四章为FPGA的优化与实现。该部分为AES加密算法Verilog语言的实现,以及本设计的优化。第五章为AES加密算法的仿真。该部分进行对优化前后的AES加密算法在FPGA硬件上的实验,并对优化前后的数据进行对比分析。文章最后为全文总结。

2AES加密算法的介绍2.1AES算法高级加密标准(AES,AdvancedEncryptionStandard)为最常见的对称加密算法。对称加密算法是加、解密用同一个密钥,加、解密流程如图1:图1加、解密流程图我们都知道AES[8]加密算法实际上是一种迭代算法,它有三种可选的密钥长度:128位、192位和256位。本文讨论的是以128位位密钥长度的。Round包括基于字节的字节替换,一种行顺序和一轮键加列混合步骤。一个由四行和Nb列组成的二维数组(Nb=数据块长度/32)。密钥被设计为四行和Nk列(Nk=键块长度/32)。由NR算法转换的圈数由Nb和NK决定一起决定。AES加密算法过程如图2:图2加密算法AES中的基本模块,如图3图3基本模块2.2AES的基本结构AES加密算法是分组密码,即将纯文本分成相同长度的组,其中只有一组数据同时加密,直到整个纯文本加密为止。在AES标准规范中,包长度只能是128位,每个包为16字节(每字节8位)。密钥长度可以是128位、192位或256位。加密回合次数根据密钥的长度而有所不同,如下面表1所示:表1AES密钥长度(32位比特字)分组长度(32位比特字)加密轮数AES-1284410AES-1926412AES-2568414AES加密公式为C=E(K,P),其中加密函数E需要执行10次round函数,并且此round函数的前9次操作相同,只有第10次不同,即明文会加密10次。一轮完成所有操作。换句话说,一个明文数据包被加密了10轮。而AES的核心就是实现一轮中的所有操作。AES处理单位是字节,128位的输入明文P和输入密钥K都被分成16个字节,分别记为P=P0P1…P15和K=K0K1…K15。如,明文为P=abcdefghijklmnop,其中的字符a对应P0,p对应P15。通常,明文用字节为单位的正方形矩阵描述,我们称之为状态矩阵。在算法的每一轮中,状态矩阵的内容不断发生变化,该矩阵中字节的排列顺序为从上到下、从左至右依次排列,最后的结果作为密文输出。如下图4所示:图4状态矩阵流程能够看到,最开始输入的明文经过AES的10轮加密后,得到的矩阵已经面目全非。加密的第1轮到第9轮的轮函数包括4个操作:字节代换、行位移、列混合和轮密钥加[9]。只是在最后一轮的迭代中不执行列混合。并且,要将明文和原始密钥在加密算法的第一轮迭代之前,进行一次异或加密的操作。2.3AES加密算法的实现2.3.1S盒变换AES算法将128位明文排成4X4的矩阵,如图5。图54X4矩阵密钥也分成矩阵,如图6.图6密钥矩阵AES算法使用S盒进行字节替换,且AES的S盒是一个16X16的矩阵,变换如下表2S盒置换所示。表2S盒置换0123456789abcdef0d690e9fecce13db716b614c228fb2c0512b679a762abe04c3aa4413264986069929c4250f491ef987a33540b43edCfac623e4b31ca9c908e89580df94fa758f3fa644707a7fcf37317ba83593c19e6854fa85686b81b27164da8bf8eb0f4b70569d3561e240e5e6358d1a225227c3b012178877d40046579fd327524c3602e7a0c4c89e8eabf8ad240c738b5a3f7f2cef96115a19e0ae5da49b341a55ad933230f58cb1e3a1df6e22e8266ca60c02923ab0d534ebfbd5Db3745defd8e2f03ff6a726dbc5b51c8d1baf92bbddbc7f11d95c411f105ad8d0ac13188a5cd7bbd2d74d012b8e5b4b0e8969974a0c96777e65b9f109c56rc684fa8f07dec3adc4d2079ee5f3ed7cb3948用纯文本矩阵的每个元素作为输入来确定S盒的地址:S盒的行由字节的前四位表示,列由一个字节的最后四个字节表示,如图7。图7S盒2.3.2行变换行变换很简单,其实就是一个简单的向左循环的移位操作。当密钥长度为128位,状态矩阵的第1行不进行左移,第2行需要向左移动1字节,第3行需要向左移动2字节,第4行需要向左移动3字节,如图8:图8行移位2.3.3列混合在列混合变换中,给定一个状态,逐列进行变换,它将状态矩阵中的每个列视为系数在上的一个次数小于4的多项式[10]。并与一固定的多项式c(x)进行模相乘。其中c(x)为可逆的多项式(系数为16进制):c通过矩阵乘法进行列混合,计算位移矩阵与固定矩阵相乘得到混合状态矩阵,方程式如下所示:即:SSSS2.3.4密钥扩展密钥扩展的复杂性决定了加密算法是否具有安全性。当包含长度和密钥长度为128位时,普通AES加密算法为10轮迭代,只能计算10个子密钥。AES加密算法的密钥扩展被设计成将密钥输入扩大到128位至11位至128位。关键词AES扩展是基于一个单词(“一个单词是四个字节”)和“仅为一个关键词矩阵列。因此,需要将关键词从四个单词(“128位”)扩展到11个子密钥,总共44个。每一轮的密钥都是由前一轮的密钥和本轮密钥共同产生的。wwww2.4本章小结本章简要介绍AES密码算法的基本定义、一些基本功能、密码算法具有的性能、基本结构、设计过程中运行环境以及算法加密流程。对算法中各个结构各个模块运算过程进行了详细的描述。

3开发环境介绍3.1硬件描述语言VerilogHDL作为一种硬件描述语言,通常用来模拟算法层次的数字系统。类似于高级程序设计语言(C语言),它是以一种文本形式来描述数字系统硬件的结构和行为的语言。数字模拟系统对象的复杂性可以被单门和完整电子系统之间理解,数字系统可以在同一描述中被分层描述和明确地模拟时序建模。VerilogHDL语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制[11]。所有这些都使用同一种建模语言。此外VerilogHDL语言提供了编程语言接口通过该接口可以在模拟、验证期间从设计外部访问设计包括模拟的具体控制和运行[12]。VerilogHDL语言不仅定义了语法,而且定义了每个语法结构的清晰模拟语法。用该语言开发的模型可以由Verilog模拟器验证。语言继承了许多语言操作员和结构。VerilogHDL提供了扩展的模型功能,其中许多功能最初难以理解。当然,完整的硬件描述语言足以将最复杂的芯片描述为完整的电子系统[7]。3.2XilinxIESDesignSuite14.7开发环境Xilinx公司是全球最大的FPGA供应商,也是全球首选的FPGA嵌入式软件处理器解决方案商[10]。Xilinx公司提供全面的处理器解决方案和器件,是FPGA业界唯一同时提供处理器软核与硬核的厂商,能支持嵌入式系统设计人员为满足自己的嵌入式处理需求选择最佳的组合[10]。XilinxISEDesignSuite14.7是一款具有专业性的电子设计套件,这个软件主要面向的是电子设计、电子仿真以及开发,为用户提供多个功能模块,包括:模型设计、模拟仿真、面板布局布线、产品配置以及性能调试等;此版本被运用到航空航天与国防、数据中心、仿真和原型设计、高性能计算、无线通信等多个行业领领域,对航空航天以及国防提供了解决方案。ISE14.7版本涵盖了业界领先的FPGA和SoC器件、先进的IP解决方案以及下一代设计工具,拥有数十年在各种关键任务行业和应用中的成功经验,提供FPGA和SoC产品组合,以实现:可配置性和更低功耗的性能提升、将复杂和完整的系统集成到单个设备中、可靠性和长使用寿命等性能,方便又快捷[10]。3.3仿真工具ModelSimModelSim是MentorGraphics子公司ModelTechnology的产品,属于编译型的Verilog/VHDL混合型仿真器[11]。ISE自带的接口可自动将内部信号传入ModelSim处理.仿真的分类:在RTL层进行的是功能仿真。该仿真可以不考虑构成电路的逻辑和门的时间延迟,而是着重考虑电路在理想环境下的行为和设计构想的一致性。时序仿真(后仿真)是在电路已映射到特定的工艺环境后,将电路的路径延迟和门延迟考虑进对电路的行为影响后,比较电路的行为是否能在一定条件下满足设计构想。3.4本章小结本章介绍了AES加密算法的Verilog语言的开发环境和实现仿真的工具,从硬件描述语言开始,简要讲述了VerilogHDL,此外,介绍了FPGA的硬件的使用情况,如使用的XilinxIESDesignSuite14.7开发环境和仿真工具ModelSim。

4FPGA的实现与优化4.1基本模块实现AES由多个轮组成,其中每个轮分为字节代替(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)、轮密钥加(AddRoundKey)4个步骤。下面介绍具体实现。4.1.1轮密钥加(AddRoundKey)AES加密算法中的轮密钥加模块就是状态和轮密钥进行异或,为更好描述AES加密算法而成的一个模块。如下模块图1。图1轮密钥加模块在具体优化的实现过程中,在生成密钥同一时钟周期的下降沿即可传递密钥,从而不必等待下一时钟上升沿的到来,减少了系统的速度延迟时间。这种方案能够提高系统工作频率和加密速度。加密的时候可以通过对密钥扩展模块的重复调用,去实现代码的高效利用,从而节省了芯片的实现面积[19]。4.1.2字节替换(SubBytes)字节替换是AES中唯一的非线性转换。该替换包含作用于状态字节的s字段。在字节转换中输入e并输出B,即替换公式B=s(e)。字节替换包括将8位二进制数转换为另一个8位二进制文件,这是唯一一对一的对应。如下模块图2。图2字节替换模块sboxmodule具体实现代码:always@(state)case(state)8'h00:dout=8'h63;8'h01:dout=8'h7c;…8'hfe:dout=8'hbb;8'hff:dout=8'h16;endcase4.1.3行移位(ShiftRows)AES输入的16个字节构成一个4X4字节的矩阵,行移位意味着第一行保持不变,第二行向左移动一个字节,第三行向左移动两个字节,第四行向左移动三个字节,如下图3所示。图3行移位4.1.4列混合(MixColumns)MixColumns模块实现AES密码列混合变换,在模块中state为128位输入端口,out为128位输出端口,模块图解见图4。图4列混淆模块4.2AES算法的主模块主模块用于实现加密模块的组合与控制,在VerilogHDL眼中,变量count的初始值为11,他是用于控制加密轮数。主模块AES模块永不实现加密模块的组合与控制,state与key为128位输入端,result位128位输出端,clk为时钟信号。存储的128bit数用16进制表示,存储为下表1表1:S00(1-8)S01(33-40)S02(65-72)S03(97-104)S10(9-16)S11(41-48)S12(73-80)S13(105-112)S20(17-24)S21(49-56)S22(81-88)S23(113-120)S30(25-32)S31(57-64)S32(89-96)S33(121-128)框图如图5。图5AES组模块框图4.3AES加密算法的优化为了进行面积的优化,我要对加密时的计算方法进行了优化,将128[11]位加密运算分成4次32位进行运算,提高模块的利用率,减小硬件面积,从而达到面积优化的优化目的,通过时钟频率的延迟时间的对比,对该优化进行总结。4.4设计方法Top一down设计,即自顶向下的设计。这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计,在功能级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,然后用综合工具将设计转化为具体门电路网表,自顶向下的设计方法是从一个抽象的高层次上形成一个设计思想,然后从整体要求出发,实现系统实际内容的细化[12]。实现后必须进行逻辑功能验证,才能进行版图设计,最后验证设计的具体电路与最初的系统功能描述是否吻合。因为设计的主要仿真和调试过程是需要在高层次上进行的,这不仅仅可以在早期时候发现结构设计上的错误,避免了因为设计工作时间过长的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。Top一down的设计必须经过“设计一验证一修改设计一再验证”的固定的流程,如果有错误、没有达到理想状态,就要不断反复,一直反复,直到能够得到的结果完全实现所要求的逻辑功能,并且在速度、功耗、和可靠性方面实现较为合理的平衡为止[13]。我在设计中基本上采用自顶向下的方法,通过该方法对系统进行划分和分解的基础上,在局部单元的实现中,也采用了自底向上的方法以便更有利于设计的实现.4.5本章小结本章主要对AES加密算法进行具体实现,将算法进行VerilogHDL语言实现的描述,对算法进行详细的、各个模块进行描述,以及加密算法的实现方法等。在实现过程中还验证算法实现的正确性。

5AES加密算法的优化仿真5.1AES加密算法接口描述设计的AES加密算法的硬件设计系统的部分接口以及功能描述如下表1:表1接口(信号)位宽(bit)In/Out描述Clk1In时钟Key128In密钥State128In输入Result128Out输出Clk:时钟信号端口,位宽1bit,为加密提供时钟;Key:密钥输入加载端口,位宽128bit,是用来加载输入端输入的128位初始密钥的。State:数据输入端口,位宽128bit,是用来输入要加密的初始明文的。Result:数据输出端口,位宽128bit,将加密操作后的128位数据进行输出。运行代码得到的RTL原理图,如图1:图1RTL原理图5.2AES加密算法仿真在拥有了AES加密算法的代码后,我使用ISEDesignSuite14.7在Xilinx

Virtex-5XC5VLX50T板子上进行FPGA硬件下载,占用资源情况结果如下。AES加密算法的速度优化数据结果如图2,图3和图4,Slice为275,Slice

LUTs为624,LUT-FF为267,Minimumperiod为3.893ns,所以延迟时间为38.93ns,Timing为256.842MHz,Power为565.53mW。图2DeciceUtilizationSummary图3延迟时间截图图4功耗截图在运行没有错误之后,我就使用了Modelsim仿真工具对它进行了仿真验证,因为Modelsim是一个专业的仿真器,效率高,功能强大。下面仿真波形图5和图6分别是面积优化的波形图和速度优化的波形图,在这里进行一个对比。图5面积优化波形图图6速度优化波形图图7是设计的PTL原理图的顶层模块的中的底层部分设计图:图7PTL底层设计图(部分)5.3优化前后对比上面的数据截图均为优化前的AES加密算法在FPGA上的实现,在速度优化后,AES加密算法的速度优化数据结果如图8,图9和图10,Slice为9061,LUT-FF为0,Maximumcombinationalpathdelaty为32.361ns,也就是延迟时间为32.361ns,Timing为256.842MHz,Power为565.53mW。图8DeciceUtilizationSummary图9延迟时间图10功耗截图通过优化前后的延迟时间,优化前延迟时间为38.93ns,优化后的延迟时间缩短了一些,缩短为32.361ns,由此数据比较可以得出,本设计的优化是成功了的。5.4本章小结本章主要是写,AES加密算法的代码的优化前后的仿真截图,包括延迟时间、功耗数据、等运行截图以及速度、面积优化的波形图,通过数据的对比,验证本设计的正确性。

总结通过这次的毕业设计,我学到了许多许多。刚开始是学习了Verilog语言的是如何使用的和以及Verilog语言的含义,为后面的程序设计打下基础。尽管Verilog语言与C语言相比是类似的,语法简单,但实际操作起来,便可以发现它的困难所在。所以还是需要多动脑,多动手去实际操作,才能做到真的学会这门语言。本文主要是钻研如何才能使基于FPGA的AES加密算法进行优化与实现,我所想到的优化是将AES加密算法的速度进行优化,这就需要对算法中的加密算法进行一个优化,这也是我消耗时间最长的学习的地方。因为自己学习这个加密算法的时间不长,所以做到的优化很小,但还是有一点的加快。在整个毕业设计的学习过程和代码调试过程中,我也学会了如何才能静下心去研究,也找到了应该有的学习态度。最后,虽然优化的效果不是很明显,但对于我自己而言,确实一个很大的进步。我会在以后的学习、工作中,吸取经验、巩固自己,争取做到最好的自己。

致谢本次设计以及本篇论文的完成,我要感谢我的导师李浪教授,因为他的学识以及治学态度,让我钦佩,选择李老师作为导师也是一个非常正确的选择。因为这让我学到了许多新的知识,扩展了我的视野。我很荣幸能够成为李老师的学生。同时我也要感谢我们学院的邹祎老师、张剑老师以及实验室的各位同学的帮助。是他们给予了我很多的帮助和指导,启发了我的思路,帮助我进步,并且在我有很多困惑的时候,依旧不厌其烦的帮助我解决。并且还要谢谢研究AES加密算法的前辈们,是因为他们的研究,我才能够做出我的设计。还要感谢大学四年所有的任课老师和辅导员老师们,他们教会了我很多知识,以及做人的道理。最后,谨以此文,感谢所有在大学期间支持、关心以及帮助过我的老师、同学,感谢你们。

参考文献[1]DaemenJ,RijmenV.ThedesignofRijndael:AES,theadvancedEncryptionStandard[M]//TheDesignofRijndael:AES-TheAdvancedEncryptionStandard.DBLP,2002.[2]JoanDaemen,Vince

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论