基于VerilogHDL及AES加密电路设计.doc_第1页
基于VerilogHDL及AES加密电路设计.doc_第2页
基于VerilogHDL及AES加密电路设计.doc_第3页
基于VerilogHDL及AES加密电路设计.doc_第4页
基于VerilogHDL及AES加密电路设计.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计报告(论文) 基于Verilog HDL的AES加密电路设计 所属系 电子工程系 专 业 电子科学与技术 学 号 01310248 姓名 张 学 敏 指导教师 王 刚 起讫日期 2014.02 - 2014.05 设计地点 东南大学成贤学院 毕业设计报告(论文)诚信承诺 本人承诺所呈交的毕业设计报告(论文)及取得的成果是在导师指导下完成,引用他人成果的部分均已列出参考文献。如论文涉及任何知识产权纠纷,本人将承担一切责任。 学生签名:日 期:基于Verilog HDL的AES加密电路设计摘 要 现在的信息化社会,计算机技术正飞速地朝着快速、便携方向发展,这就意味着电子形式的数据及个人信息正逐渐被我们广泛使用。因此,网络信息安全这个名词逐渐进入人们的眼球。如何才能保证私密信息不被外界窃取已经成为现在学者们研究的重点项目。本课题正是在这样的背景下提出的,目的是基于Verilog HDL设计一个AES加密电路。课题完成过程中的主要内容包括AES加密算法的原理分析和优化设计,以及后续的硬件实现。设计AES加密电路的核心就是AES加密算法的实现。因此,本文先对AES算法的原理进行了介绍,包括S-盒、行列混合变换及AES流水线结构等。其次,本文将AES加密电路进行了模块划分,就Verilog HDL描述及Modelsim仿真作了一一介绍。最后给出了用SYNOPSYS的DC和ASTRO进行综合以及自动布线的设计过程。关键字: AES;加密标准;算法;Verilog HDL;Modelsim . The design of AES encryption circuit based on Verilog HDLAbstract Nowadays , the computer technology is in a rapid development in the direction of fast and portable in the information society . This means that the electronic form of data and personal information is widely used by us . Therefore , the network information security has aroused peoples attention . The way of how to keep the private information away from the outside world to steal has became the focus of the scholars study now . This topic is put forward in the background I mentioned before in purpose that design a circuit of AES encryption based on Verilog HDL . There are serval tasks to be done according to the subject , including the principle of AES encryption algorithm in the process of analysis and the subsequent hardware implementation . Firstly , the core of the design of AES encryption circuit is the implementation of AES encryption algorithm . Therefore , this article introduces the principle of AES algorithm , including the S-box 、shiftrows、mixcoloumns and AES line ranks , etc . Secondly , this paper compared the AES encryption circuit module partition and introduced Verilog HDL description and Modelsim simulation one by one . Finally , it gives the design process of use Synopsys DC and Astro to finish the comprehensive and automatic wiring . Key Words : AES ; Encryption Standard ; Algorithm ; Verilog HDL ; Modelsim .目 录第一章 绪论11.1 课题研究背景及意义11.2 研究现状11.2.1 国内外加密算法的研究现状11.2.2 数据加密标准的研究现状11.3 课题主要研究内容21.3.1 设计流程的介绍21.3.2 软硬件实现方式的介绍2第二章 AES算法的原理研究42.1 分组密码的研究42.2 AES 加密算法的数学理论52.2.1 含有有限个元素的域52.2.2 有限域上的多项式及运算52.3 轮变换与密钥扩展72.4 AES 加密算法工作模式102.5 AES算法的整体结构102.6 本章总结12第三章 AES 算法模块的设计及仿真133.1 开发环境介绍133.1.1 硬件描述语言(HDL)介绍133.1.2 Modelsim仿真软件133.2 AES 加密模块总体架构133.3 位变换模块设计SubBytes及S-box153.4 列混合变换模块设计MixColumns163.5 密钥扩展模块设计keysched173.6 加密模块Testbench设计18第四章 AES加密系统的综合与布局布线204.1 综合及布线开发工具的介绍204.1.1 Synopsys DC204.1.2 Synopsys Astro204.2 综合和布局布线204.2.1 过程概述204.2.2 DC生成的门级电路和报告204.2.3 Astro版图生成流程234.2.4 Astro生成的版图23第五章 总结与展望255.1 全文总结255.2 展望25致 谢26参考文献27II东南大学成贤学院毕业论文第1章 绪论1.1 课题研究背景及意义在我们工作和生活的当今社会中,信息技术飞速地发展,个人数据的安全性日益被人们重视,网络信息安全这个名词逐渐进入人们的眼球。如何才能保证私密信息不被外界窃取已经成为现在学者们研究的重点项目。加密技术不仅局限于计算机范畴,现在已经涉及到生物医疗、国防、航天等等领域。就拿我们息息相关的现实生活来说,我们的私人账号,个人密码,网络账户资料等信息在互联网上的传输交换过程都离不开加密技术,有了足够安全的加密方法,我们才能更从容地享受信息时代的极大便利性。自上世纪70年代起,DES加密标准一直都是数据加密领域的重量级角色。然而,伴随着电子技术的快速发展,计算机硬件的表现可以说在稳步飙升,数据交换量空前,DES加密标准的安全性面临空前的挑战,事实上,实践表明DES已渐渐不堪复用,无法满足高端用户的需求。因此,从1997年1月开始,美国国家标准与技术研究所(NIST)高瞻远瞩地开始征集新一代的加密标准,并在2001年11月公布了高级数据加密标准(AES),从此确立了AES加密算法在数据加密算法领域不可动摇的地位。AES设计目的就是用于取代渐渐过时的DES以及其升级版本3DES,进入21世纪后,AES算法开始走向成熟,被广泛地应用于各个不同领域,其实用性、安全性的强悍不容置疑。绪论部分我将着重介绍国内外加密算法以及数据加密标准的研究现状,对课题主演研究的内容作简要概括,并对比软硬件实现方式的优缺点,在此基础上介绍设计流程。1.2 研究现状1.2.1 国内外加密算法的研究现状密码技术主要由密码编码技术和密码分析技术两部分组成。为了使用户的数据得到保护,运用高效的算法和协议对数据进行加密和认证的技术被称为密码编码技术,相反,通过分析算法和协议,进行各种攻击从而达到破解密码的目的的行为称为密码分析技术。加密技术和密码分析技术两者相互矛盾,多年以来它们相互竞争,于斗争中加密技术飞速发展。从目前已经被提出的加密思想来看,一种就是公钥密码、分组密码、序列密码等基于数学思想的加密技术。另一种则打破了常规思路,把量子密码学、DNA技术以及混沌技术等一系列非常规手段应用到了信息加密上,不可不谓是另辟蹊径。本文的主要研究对象是传统的基于数学的密码理论。根据加、解密过程是否使用相同的密钥,又能够将传统加密技术往下细分成私钥和公钥体制,即对称和非对称密码体制。加、解密过程中使用的密钥相同的密码体制称为公钥密码,这种加密算法往往由复杂的非线性变换组成,在商业领域广泛应用。相反,加、解密过程密钥不同的称为私钥密码体制。1976年,在美国斯坦福大学这个自由的学术天堂,Diffie和 Hellman提出了具有建设性意义的公钥密码的思想,时至今日,公钥密码早已经早已传遍大江南北,在全球范围内广泛流传,大量的应用使其不断发展,这过程中公钥密码又得到了长足的发展,并向下衍生出许多版本,RSA和Rabin体制、Diffie-Hellman 和ElGamal体制等等。1.2.2 数据加密标准的研究现状DES联邦加密标准是从1972年开始提出计划,并历时4年,克服种种困难,在全球各优秀的加密算法中鹤立鸡群,在1976年一举拿下美国联邦标准的桂冠。在之后的几年里,DES加密标准迅速升温,全球范围内DES开始渗透到各行各业,当然了,加密算法最新都是为军事服务的,后来逐渐进入民用领域。从上世纪七十年代到当今的21世纪,这近30年间在加密标准领域,DES可谓是独占鳌头。然而,在瞬息万变的今天,新生事物层出不穷,计算机领域的更新换代速率更是惊人的快。硬件技术飞速发展,网络传输速率空前,数据交换越来越频繁,且数据的位宽也越来越长,DES的淘汰落伍似乎已成定局,DES最致命的缺陷就是密钥长度太短,56位的密钥长度已经不能胜任许多应用。因此,后续曾经出现过DES的升级版本,叫做三重DES。然而事实证明三重DES并不能提供理论上的168位加密的安全性能。因此,新的加密算法的升级换代迫在眉睫。早在上世纪末,NIST就预见到在不久的将来对新的更安全的加密标准的迫切需求,因此,NIST开始在全球范围征集优秀的加密算法。此次征集的目的就是要确立一个适用于全球范围内各行各业,具有较强通用能力的新一代加密标准,并且替代现有的即将过时的DES加密算法。AES的先进性决定了其筛选的严格程度,这个征集过程历时3年,进行三轮层层筛选,第一轮选出15种候选算法,第二轮对前一轮结果进行筛选,只剩下5个算法晋级,最后一轮又经过详细论证及三次研讨会议,才最终确立了Rijndael算法的先进地位,并于2001年将其命名为AES新一代高级加密标准。1.3 课题主要研究内容1.3.1 设计流程的介绍要设计一个AES加密电路,其核心就是AES加密算法的实现。因此,该课题的首要任务就是对先前已有的AES算法进行研究学习,然后再根据自己预期的功能需求对AES算法进行优化设计,包括S-盒优化、列混合变换优化及AES流水线结构优化等。接下来就是AES算法的实现了。首先要用硬件描述语言(Verilog HDL)进行顶层模块的描述并完成仿真验证,同时生成目标文件。在完成基本设计后,使用SYNOPSYS的DC和ASTRO进行综合以及自动布图设计,最后利用CADENCE进行模拟和验证。1.3.2 软硬件实现方式的介绍其实要想实现AES算法有两种手段,即软件实现和硬件实现。软件实现方式:即使用一种语言在一个操作系统或单片机上编写加密程序。 优点:便捷、经济,使用灵活,方便移植。 缺点:安全性能堪忧,处理速率不高,运行效率较低。硬件实现方式:优点:可以方便地设计并行处理以提高运行速度,安全性能可靠。 缺点:设计成本较高,且开发相对困难,灵活性不佳。 硬件实现方法又可分为专用集成电路(ASIC)方法和现场可编程逻辑门阵列(FPGA)方法。7对比这两种实方法的优缺点如表1-1所示。表1-1 ASIC与FPGA性能对比FPGAASIC数据并行处理可并行可并行流水线支持支持密钥访问权限一般严格速度较软件实现方法快非常快字长可变可变抗干扰一般强是否能进行功能配置是否设计周期较软件实现方法长很长开发成本昂贵较贵测试成本昂贵较贵维护及更新成本昂贵较贵描述硬件所使用的语言Verilog HDL、VHDLVerilog HDL、VHDL 总的来说,AES加密算法的软件实现方法虽然具有便捷、经济,使用灵活,方便移植等优点。但是在很多实际应用中,软件加密方案并不能完全满足现实需求。因此,本次课题的学习目标是重点掌握优势更为明显的硬件实现方法。另外,由于本次毕设的最终要求是完成版图的设计,所有工作都是基于模拟层面,不需要制作出昂贵的板子,所以课题要求选择用抗干扰能力更强的ASIC方法来实现AES加密电路。第2章 AES算法的原理研究2.1 分组密码的研究分组密码、序列密码都属于对称密码的范畴。现阶段由于技术的发展,密码的位宽越来越宽,由开始的56位,到现在的128位可扩展密钥,分组密码的优于序列密码的趋势已初现端倪。分组密码中,加密、解密过程其实就是明文分组和密文分组进行相互转换的过程。分组密码的设计思想就是把密钥扩展算法从加密算法的整体中分割出来,密钥的扩展不收加密算法的影响。分组密码把明文按一定长度进行分组,一般为128位,然后同长度可扩展的密钥分组一起被送入加密算法,经过一系列的变换和复杂运算,最终将明文分组转换成位宽相同的密文分组,加密过程至此结束。相反,解密过程就是一个逆运算,加、解密过程中使用的密钥分组是相同的。AES算法运用的是迭代型分组算法,安全性高,灵活性好,并且迭代型分组易于在软硬件中实现。明文分组轮函数F1轮函数F2轮函数F3轮函数FN密文分组初始密钥K密 钥 扩 展 算 法K1K2K3KN图2-1 迭代型分组密码结构从结构上来看的话,迭代型分组密码又可以往下细分成三大类,包括Feistel结构、SP 结构以及其它结构。SP和Feistel结构分别如图2-2(a)(b)所示。LiRiFKiLi+1Ri+1轮 输 入S 层轮 输 出P 层子密钥 (a) (b)图2-2:网络结构由于AES算法使用的结构类型是SP,因此,本文着重介绍SP网络结构。从图2-2(a)中可以看出,SP结构从上往下依次是轮输入、S层、P层、轮输出,然后子密钥作用于S层。结构非常简单,便于分析。明文和密钥共同作用于S层,在这一步中要完成的工作就是扰乱明文与密钥彼此之间的联系,使非法用户无法从外界区分明文和密钥,从而达到对密码分析技术的免疫,即提高抵抗攻击的能力。SP结构中的P层主要承担着扩散的工作,经过这一层的计算,明文分组中的任何一点变动,都会引起相应密文的无规律变化。使密文的多样性得到极大的拓展,使线性攻击等手段对其无能为力。2.2 AES 加密算法的数学理论2.2.1 含有有限个元素的域有限域的,我们把它定义成一个域中包含的要素的个数是有限的,且这个集合中单个要素的个数我们将它定义成有限域的阶。在公式中m表示阶,p则代表特征值。在AES加密算法中,最常用的特征值是2。2.2.2 有限域上的多项式及运算有限域转化为传统的多项式如下所示。 , (2.1)由式(2.1)我们可以看出,以一个8位的数据为例,转换后的多项式如式2.2所示。 (2.2)需要注意的是,此多项式的系数是一个8位二进制数的每一位的数值,即非0即1。举个列子,现在有一个多项式,那么它对应的8位二进制数就是1010011,因此,其对应的十六进制数就是A3。1)有限域上多项式的加法运算AES加密算法中,通过我们人为地定义,把一个字节(即8位的二进制数)的数据转换成数学中常用的多项式,这就把不易计算分析的二进制数直观地用符合我们正常思维的数学多项式的计算来表示。举个例子,十六进制数A389多项式计算如(2.3)所示。二进制计算式:101001110001010 = 00101001多项式计算式: (2.3)2)有限域上多项式的乘法运算 多项式的乘法关于多项式的加法满足分配律、交换律和结合律,单位元为。选取一个L次多项式,称其为约化多项式。这样才能让乘法运算在有限域中具有封闭性。因此,多项式和的乘积表示为模约化多项式下多项式的代数乘积7。 (2.4)定义时,称为的逆元。为了定义字节乘法,被广泛地用于AES加密算法的多项式为: (2.5)如在有限域中,16进制数 57 和 83 所表示的多项式的乘积可以用16 进制数 C1 表示。多项式表示为: (2.6) (2.7) 在有限域中还有一种乘法运算叫做乘,记作: 多项式表示为: ) (2.8)在这个式子中,要是为0,多项式的系数依次向左移动1比特,最右边空出来的1个比特我们用0来填充,这样的改变并不影响该等式的结果;如若为1的话。那么乘积结果减,与 16进制数 1B 异或。3)有限域上多项式的四字节运算 有限域中四字节表示为次数小于4的多项式。它的加法运算与一字节相同,通过各系数的异或运算来实现。 多项式表示为:( ; (2.9) 四字节的乘法运算采用的约化多项式为:( (2.10) 多项式和的乘积多项式表示为: (2.11)根据幂的次数进行区分,得出其矩阵表示为: (2.12)2.3 轮变换与密钥扩展1) S盒变换S-BOX S-Box操作是一个非线性的字节替换。它由两个子转换组成;乘法逆元素和仿射变换。每个字节的乘法逆元素运算: (2.13)仿射变换(这个步骤执行): (2.14) 加密过程 解密过程添加常数,是为了防止S-box没有定点,或没有相反的定点。 加密 令 要实现AES两个子步骤,通常需要SubBytes转换,如表2所示。表中数据的大小是8位16*16即256 x 8位的ROM,数据规模不大,可以以一个简单的方式与现代设计工具相结合。然而当硬件大小受到限制或者出现不能合并的ROM的时候,反演硬件就显得相当有必要性。这种情况下,主要问题是如何实现高效S-box。仿射变换,但是需要少量的门电路,这就会造成一定的延迟。根据Rijndael,AES应用了多项式。这是一个本原不可约多项式。大部分的作者和设计工程师都认为的计算是相当复杂的。好消息是,前人已经总结了一套实用的S-box计算方法。以下列举两个方法:(1) 结合表2-1进行查表;(2) 使用CAD工具优化逻辑功能,合成并优化逻辑函数,计算元素的反演。利用复合材料的使用领域设计的低功耗S-box转换。元素中定义的映射。在底层领域对乘法和反演进行了优化。这种方法既吸引了(2.14)的技术,又和(2.16)中的许多有用的想法相一致。为了减少了一些不必要的资源浪费,字段转换只应用于S-box计算。没有必要进一步分解复合场最低的地场。工作在复合材料领域,乘法逆元素是相对自由的。然而,总的来,我们必须把中的元素映射到,其中。因此变换和逆变换矩阵是很重要的。元素可以被映射到元素,利用多项式表示元素,其中是初始的不可约多项式。结果映射在(2.15)、(2.16)的正逆矩阵中。 , (2.15)(2.16)上图左侧的元素在上面的矩阵中表示最低有效位。利用映射元素形式,从到是简单的乘法逆计算反演。因为总数据字节比较小,反演使用直接映射真值表的方法,在消耗较少的资源下查找数据。此外,在Rijndae1系统中数据以最初始的字节格式存在。令数据字节表示成,那么 。由可以推导出: (2.17) (2.18) (2.19) (2.20)本文阐述了这种方法的扩展数量管道状态选项S-Box设计。图1所示的128位数据路径是4个32位的数据路径。因为一个S-Box计算块只需要8位的数据集,我们的确需要16个平行单位。字节替换计算也是KeyScheduling计算过程所需的关键。一轮128位关键是需要在每一轮的AES操作。然而只有32位:4字节替换8位的需求。因此只有4个16位的S-Box共享密钥更新的计算。S 盒如表2-1所示。表2-1 S-BOX2) 行移位变换ShiftRows 行移位变换就是以字节为单位对数据进行循环移动,这种变换是线性的,它其实就是SP网络结构中S层的组成部分,主要作用是混淆明文与密钥。3) 列混合变换MixColoumns 列混合变换属于代替变换,列混合运算表达式为:4)密钥加法(AddRoundKey)密钥加法KeyScheduling扩展初始128位密码键生成圆键。圆键可以动态生成数据转换,或者他们是提前计算和存储,以供后续使用。这种轮密钥用于加密或解密的数据转换是动态计算。密钥加法本质就是128位的异或运算。5)密钥扩展(ExpendedKey)AES加密算法是十轮迭代型分组密码算法,密钥扩展和加、解密过程是分开的,因此密钥扩展在整个加密算法中就显得尤为重要,密钥扩展主要是由密钥分组的位宽以及迭代轮数决定的,主要负责为加密或解密算法提供各轮运算所需要的密钥。2.4 AES 加密算法工作模式 本文的第一章节里面就曾提到,AES加密算法属于分组密码,分组密码的设计思想就是将不同位宽的明文和密钥分成固定长度的明文组和密钥组。因此,可想而知在我们现实生活的应用中,所要加密的明文位宽不可能完全一致,有可能高于或低于分组长度,鉴于现实应用的多样性,AES加密算法就有必要应用不同的工作模式,这样才能达到最优的工作效率。确保AES能胜任各行各业的加密需求。 事实上,工作模式的问世要远远早于AES,要上溯到19世纪80年代。现如今,比较成熟且应用较为广泛的几种工作模式包括:电子密码本模式(Electronic Code Book)、密文连接模式(Cipher Block Chaining)、密码反馈模式(Cipher Feedback)和输出反馈模式(Output Feedback)等。由于篇幅有限,本文只对以上几种工作模式作简要说明。 1)电子密码本模式(ECB)电子密码本模式,分组长度128位,若明文长度不足128位的话,就在空缺的数据位上添加上空字符。由于AES加密算法的特性,决定了电子密码本模式只能在明文分组较少的实例中拥有良好表现,一旦碰到分组数量较多且重复率较高的情况,ECB模式速度快的优势就无法弥补其安全隐患的缺陷了。2)密文链接模式(CBC)密文链接模式,先将一个明文分组进行加密,其结果存储在寄存器中,然后明文分组再与寄存器中的密文进行逐位异或,异或的结果与密钥分组一齐被送入加密电路。该模式的流水线是串行模式,加密结构牵一发而动全身,明文分组的一丝变化,都会导致密文分组的连锁反应。 3) 密码反馈模式(CFB)密码反馈模式,初始向量位于一串数据的最高位,加密完成后最前面的8比特与明文最初8比特进行异或运算,生成密文最初8比特。然后将该8比特的数据移动到队列的最后,其它位依次左移动8个比特。密码反馈模式的工作方式与CBC有很大的相似性。 4) 输出反馈模式(OFB)输出反馈模式相较于CFB,变块密码为流密码就是输出反馈模式最大的特点,其它基本与CFB模式相仿。然而,抵抗力较弱,安全性存在缺陷,无法并行处理数据等等先天性的缺点也制约了其发展。2.5 AES算法的整体结构 AES加密算法为替代/置换(SP)型网络结构,轮变换的轮函数由以下三层组成:S层(非线性层):由字节代换函数(SubBytes)组成,进行非线性S 盒变换,起混淆作用,确保达到掩盖明文、密文、密钥关系的目的。P层(线性混合层):进行列混淆变换MixColumn和行移位变换ShiftRow,主要是为了确保多轮迭代后的数据高度扩散。密钥加层:进行轮密钥加变换(AddRoundKey),控制子密钥的产生,使明文与扩展出的密钥更有效地结合。AES 的算法结构非常简单,以一个明文分组长度为128bit,轮数为10的加、解密整体结构为例。对加密和解密操作,算法从轮密钥加开始,接下来执行9轮迭代运算,每一轮都包含字节代换、行移位、列混淆、轮密相加这四个阶段的代换,最后1轮运算只包含字节代换、行移位、轮密相加这三个阶段。加、解密过程中10轮迭代中的每个阶段均是可逆的。解密过程中,对字节代换、行移位变换和列混淆变换,它们分别使用相对应的逆函数。而轮密钥相加阶段的逆就是用同样的轮密钥和分组相异或的过程。事实上AES的加密过程和解密过程相类似,加密过程是正运算,解密过程就是相应的逆运算。AES加密算法的工作流程如图2-3所示。轮密相加明 文轮密相加字节代换行变换列变换轮密相加字节代换行变换列变换轮密相加字节代换行变换轮密相加逆向行变换逆向字节代换轮密相加逆向列变换逆向行变换逆向字节代换轮密相加逆向列变换轮密相加逆向字节代换逆向行变换扩展密钥密 钥明 文密 文密 文第一轮第九轮第十轮第一轮第九轮第十轮图2-3 明文分组长度为128bit,轮数为10的AES加、解密流程图2.6 本章总结本章节着重介绍了AES加密算法的工作原理,从其数学理论基础,到AES加密算法的模块介绍,再到其总体工作流程的剖析,全方位地展示了AES加密算法的基本结构。此外,本章章首还对分组密码以及分组密码的两种主要结构进行了介绍,虽说不很详尽,但是也简要概括了分组密码的结构流程和工作模式。全方位地阐述了AES算法的工作原理。理解这些知识点对更深层次、更透彻地理解AES加密算法大有帮助,此外,这也为后续的加密电路的设计工作打下了良好的基础。第3章 AES 算法模块的设计及仿真3.1 开发环境介绍3.1.1 硬件描述语言(HDL)介绍硬件描述语言即Hardware Description Language,简称HDL。HDL提供了一种将硬件电路通过文字的形式表现出来的方法。它不仅用于描述已有的电路,还可通过对预期功能的描述达到设计电路的目的。该过程就是首先用HDL语言描述目标电路,然后运用相关工具进行仿真(如Modelsim)、生成相应的目标文件(如EDA),最后再用ASIC或者FPGA方式来实现电路。硬件描述语言发展至今,已经衍生出了多种针对于不同应用目的硬件描述语言。它们一般面向特定的领域、针对特定的应用、采用特定的层次,订制程度高,但是由于彼此之间缺乏相应的通用标准,因而基本不能跨领域通用。最终,VHDL和VerilogHDL在优胜劣汰中生存了下来,并先后成为IEEE标准。3.1.2 Modelsim仿真软件Modelsim是一款硬件描述语言仿真软件,其性能之优秀在业内是有目共睹的,Mentor公司凭借它在仿真软件领域遥遥领先。相比较于其它仿真软件,Modelsim只靠着一个内核就可以同时兼容VHDL、Verilog HDL两种语言的仿真,这一优势可谓独树一帜,无人能及。与此同时Tcl/Tk技术、单一内核仿真技术和直接优化编译技术这些看家本领无疑都成为Modelsim软件的加分点,这些独有的技术造就了其速度快且代码编译不受使用平台的限制等优点。个性化的图形界面以及可自由配置的用户接口等因素都让Modelsim成为仿真软件的首选。3.2 AES 加密模块总体架构本课题研究的AES加密共有7个部分,分别是:SubBytes、ShiftRows、MixColumns、AddRoundkey、S-box、Key Expansion,其中Encrypt模块由SubBytes、ShiftRows、MixColumns、AddRoundkey、S-box这5个部分组成,完成加密功能。Key Expansion模块是密钥扩展模块,主要作用是完成密钥的扩展和子密钥的输出。Control模块控制电路选择加密或解密模块实现不同的功能。其总体架构如图3-1所示。AES加密模块顶层的外部接口及部分端口功能说明分别如图3-2、表3-1所示。AES加密电路仿真波形如图3-3所示。Mix ColumnsSub BytesShift RowsAdd Round keyS-boxControlKey Expansion控制信号数据输入密钥图3-1 AES加密总体架构clkresetload_idata_i127.0decrypt_ikey_i127.0ready_odata_o127.0图3-2 AES加密模块顶层外部接口示意表3-1 AES加密模块部分端口说明端口名称端口类型端口描述load_iinput数据加载decrypt_iinput加密控制data_iinput127:0数据输入key_iinput127:0外部密钥输入data_ooutput127:0数据输出ready_ooutput完成信号图3-3 AES加密电路仿真波形3.3 位变换模块设计SubBytes及S-box位变换模块(SubBytes)是一个将数组中每一个字节变换为另外一个字节的过程,且该过程中的变换为非线性的,它是一个字节大小的非线性变换。另外,与AES其它模块一样,位变换是可逆的。位变换过程如图3-4所示。位变换模块外部接口如图3-5所示。位变换(SubBytes)模块仿真波形如图3-6所示。S盒模块(S-box)仿真波形如图3-7所示。S-BoxSr,sSr,sS0,0S0,1S0,2S0,3S1,0S1,1S1,2S1,3S2,0S2,1S2,2S2,3S3,0S3,1S3,2S3,3S0,0S0,1S0,2S0,3S1,0S1,1S1,2S1,3S2,0S2,1S2,2S2,3S3,0S3,1S3,2S3,3图3-4 位变换过程示意图clkresetstart_idata_i127.0decrypt_isbox_data_i7.0ready_odata_o127.0sbox_data_o7.0sbox_decrypt_o图3-5 位变换模块外部接口图3-6 位变换模块仿真波形图3-7 S盒模块(S-box)仿真波形3.4 列混合变换模块设计MixColumnsMixColumns变换是一个实现状态数组逐列进行变换的过程,它最主要的部分是有限域乘法。MixColumns是列的变换,它包括word_mixcolumn模块,然而每个word_mixcolumn又包括4个byte_mixcolumn。因此,列混合变换实际就是对字变换和字节变换的调用。另外,由于shiftrows模块是一个简单的以字节为单位的循环移动过程,所以该模块可以在列混合变换模块中体现,从而节省空间,提高运算效率。列混合变换过程及外部接口分别如图3-8、3-9所示,Mixcolumns模块仿真波形如图3-10所示。MixcolumnsS0,0S0,1S0,2S0,3S1,0S1,1S1,2S1,3S2,0S2,1S2,2S2,3S3,0S3,1S3,2S3,3S0,0S0,1S0,2S0,3S1,0S1,1S1,2S1,3S2,0S2,1S2,2S2,3S3,0S3,1S3,2S3,3S0,0S1,0S2,0S3,0S0,0S1,0S2,0S3,0图3-8 列混合变换过程clkresetstart_idata_i127.0decrypt_iready_odata_o127.0图3-9 列混合变换Mixcolumns模块外部接口图3-10 列混合变换Mixcolumns模块仿真波形3.5 密钥扩展模块设计keysched密钥扩展模块是整个AES加密电路中比不可少的一部分,AES算法的可靠性就是依赖于密钥的保密程度。在AES算法中,初始密钥通过密钥扩展模块进行变换,从而产生每一轮加密运算中所需要的轮密码。密钥的扩展根据扩展时序又能够被分成非并行扩展和并行扩展。并行扩展:轮运算与子密钥的生成是同步的,即每一轮轮运算开始的同时,下一轮运算所需要的子密钥也相应地产生了。非并行扩展:子密钥生成和轮运算过程是不同步的,密钥扩展模块单独运行,并将生成的各轮子密钥进行存储,然后供各轮加解密运算使用。这两种密钥扩展方案理论上都是可行的,然而并行扩展密钥在解密过程中的第一个子密钥是加密过程中最后一轮的子密钥,因此,解密过程就必须要在这一轮加密结束后才能开始。同时解密过程还需要与之匹配的解密密钥的扩展电路,这就造成了一定的资源浪费。相比较而言非并行扩展就不存在这样的问题,所以,本课题采用的是非并行扩展方案。密钥扩展模块状态机及外部接口分别如图3-11、3-12所示,仿真波形如图3-13所示。000100001010011clkresetstart_ilast_key_i127.0round_i3.0sbox_data_i7.0ready_osbox_access_osbox_data_o7.0sbox_decrypt_onew_key_o127.0 图3-11 keysched模块状态机 图3-12 keysched模块外部接口图3-13 keysched模块仿真波形3.6 加密模块Testbench设计该模块的目的就是验证在给予AES加密模块相同的明文、完全一致的密钥时,输出结果是否相同。验证过程的原理如图3-14所示。Testbench模块仿真波形如图3-15所示。AES 1AES 2激 励算法转换检 查 输 出 结 果图3-14 Testbench验证原理图图3-15 Testbench仿真波形第4章 AES加密系统的综合与布局布线4.1 综合及布线开发工具的介绍4.1.1 Synopsys DC Design Compile,简称DC,它是synopsys的综合软件和优化工具,它能够把寄存器(RTL)级的代码转化为门级网表。综合过程包括转译(Translation)、优化(Opitimization)和映射(Mapping)这三个步骤。转译是软件根据预设自动地将硬件描述语言翻译成与其相对应的功能模块(包括模块之间的拓扑结构)的过程。优化:综合器根据外部施加的一定条件(包括时序和电路面积的限制等),按照预定的算法对转译的结果进行逻辑优化。映射:综合器根据外部施加的一定条件(包括时序和电路面积的限制等),从已知的工艺库中搜索符合条件的元器件来组成实际电路。 在使用synopsys DC进行综合时,工艺库,目标库,标志库等参数是必不可少的,DC工具在工作时就是根据这些参数来确定所使用的相关算法及优化方案的。4.1.2 Synopsys Astro Synopsys Astro是一个优化、布局、布线的设计环境,它是为超深亚微米(UDSM)IC设计订制的。它能够满足5千万门级、时钟频率达到GHz等技术需求。得益于Synopsys的两项新技术(PhySiSys和Milkyway DUO结构),Astro拥有优秀的优化及布局布线能力。4.2 综合和布局布线4.2.1 过程概述本次试验利用DC实现生成.v,.sdf和.sdc文件,然后利用Astro进行版图的生成。DesignCompiler可以针对层次化的组合电路或者时序电路的速度、面积和可布性进行优化,按照所定义的电路的测量特征所达到的目标,DC综合一个电路并将其放入目标库,这样可以生成适用于计算机辅助设计工程(CAE)工具的原理图或网表。应用Synopsys公司开发的后端设计工具Astro可以完成布局布线的设计,同时Astro还具有时序优化的功能,可以再一次流程中使设计电路达到预设的指标。4.2.2 DC生成的门级电路和报告如图4-1、4-2、4-3、4-4所示,为DC综合后的门级电路图。图4-1 DC综合后门

温馨提示

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

评论

0/150

提交评论