毕业论文-基于FPGA的AES加密算法设计与实现_第1页
毕业论文-基于FPGA的AES加密算法设计与实现_第2页
毕业论文-基于FPGA的AES加密算法设计与实现_第3页
毕业论文-基于FPGA的AES加密算法设计与实现_第4页
毕业论文-基于FPGA的AES加密算法设计与实现_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

大连东软信息学院本科毕业设计(论文)论文题目论文题目:基于FPGA的AES加密算法设计与实现系所:电子工程系专业:电子信息工程(集成电路设计与系统方向)学生姓名:学生学号:指导教师:导师职称:讲师完成日期:2014年4月28日大连东软信息学院DalianNeusoftUniversityofInformation大连东软信息学院毕业设计(论文)摘要V基于FPGA的AES加密算法设计与实现摘要随着信息产业在我国国民经济中扮演越来越重要的角色,信息技术的发展和数据传输的安全性受到了有关部门的重视,加强网络信息安全的加密产品具有广泛的应用前景。数据加密系统的理论核心是加密算法。目前被业界广泛采用的对称加密算法是AES算法。因此,本课题主要研究AES加密算法的原理及实现。加密算法的实现有多种方式,通过硬件来实现加密算法性能上能够得到很大的优化。在加密数据量比较大和实时性要求比较高的场合得到了广泛的应用。对比ASIC和FPGA实现的复杂度与成本,最终本文选择重点描述FPGA实现AES加密算法。首先,本论文介绍了AES加密算法的原理,同时讲述了它与Rijndael加密的异同。其特点是安全高效、容易拓展优化和硬件实现简单。其次,研究了算法实现的关键技术。在设计过程中,完成了整体结构的规划和各模块的端口定义后,用Verilog语言对电路进行了RTL级的描述。之后,使用Model公司的ModelSim仿真工具进行了软件平台上的仿真,实现了128bit密钥的加解密逻辑功能。在硬件的实现方面,使用了Altera公司的Cyclone系列芯片,仿真基本达到了要求,这也证明了设计的正确性。最后,分析了AES加密算法实现的性能和占用资源情况。关键词:AES,FPGA,Rijndael加密,加密算法大连东软信息学院毕业设计(论文)AbstractDesignandImplementationoftheAlgorithmofAESEncryptionBasedonFPGAAbstractWiththeinformationindustryplaysmoreimportantroleinthecountryeconomy,thedevelopmentofcommunicationtechniqueandsecurityofdatatransferistakenseriousbysomegovernmentdepartment.Theencryptproductwhichisusedtostrengthennetinformationsecurityhasextensiveforeground.Encryptionalgorithmsarethecoretheoryofencryptionsystem.Currently,AESalgorithmiswidelyusedintheindustry,anditisoneofthesymmetricencryptionalgorithms.Therefore,thissubjectmainlyinvestigatesAESencryptarithmeticprincipiumanditsupgrade,andthenoffersthedesignofhardwareimplement.Therearemanywaystoachieveencryptionsystem,buthardwareimplementcangetgreatoptimizedinperformance.Ithasbeenwidelyusedinthesituationthattheencrypteddataislargeandthereal-timerequirementsarerelativelyhigh.ContrastwithASICandFPGAinimplementationcomplexityandcost,ultimatelyselecttodescribetheFPGAimplementationAESencryptionalgorithminthisthesis.Atfirst,thissubjectintroducestheprincipiumofAESarithmetic.ItgivesthesimilaritiesanddifferenceswithRijndaelEncryptionatthesametime.TheAESarithmeticcontainsthefollowingcharacteristics:security,highefficiency,easyoptimizedandeasyprogressofhardwareimplement.Inaddition,thesubjectintroducesthepivotaltechniqueoftheimplementation.Withintheprocessofdesign,afterIcompletetheprogrammingofthewholeconfigurationandthedefiningofportofeachpart,IconducttheRTLleveldescriptionofcircuitwiththelanguageofVerilog.ThenIusethetoolofModelSim,theproductofModelCorporation,tocompletetheemulationwhichisbasedonsoftware.Itachievesthelogicfunctionof128bitskey.Ontheimplementationofhardware,IalsousetheCMOSchipofCycloneserieswhichcomesfromAlteraCorporation.Theresultofthesynthesisalmostreachestherequestofdesign,anditprovesthecorrectnessofthedesign,too.Finally,thethesisanalyzestheperformanceofAESalgorithmandtheoccupationofresources.Keywords:AES,FPGA,RijndaelEncryption,EncryptionAlgorithm大连东软信息学院毕业设计(论文)目录目录TOC\o"1-3"\u摘要 IAbstract II第1章绪论 11.1 加密算法的演变 11.1.1数据加密标准 11.1.2高级加密标准 11.2AES加密技术的研究现状 21.3课题研究的意义 21.4论文的主要内容 3第2章关键技术介绍 42.1数学基础 42.2AES加密算法的原理 72.3AES加密算法的工作模式 82.3.1电子密码本模式 92.3.2密文链接模式 92.3.3密码反馈模式 102.3.4输出反馈模式 112.3.5计数器模式 122.4AES加密的过程 122.4.1字节代替 132.4.2行移位 142.4.3列混合 142.4.4轮密钥加 152.4.5密钥扩展 16第3章系统分析 173.1AES加密算法的架构 173.2AES加密算法的接口时序 173.3各个子模块的详细设计 183.3.1加解密模块 183.3.2控制模块 193.3.3密钥扩展模块 20第4章系统设计 214.1构架概述 214.2加解密模块的详细设计 214.2.1加密算法的FPGA实现 214.2.2解密算法的FPGA实现 224.3系统的功能结构设计 224.3.1S盒模块 224.3.2字节代替模块 224.3.3列混合模块 234.3.4密钥扩展模块 23第5章系统实现 255.1AES加密系统的流程图 255.2AES加密系统的总体设计 265.3功能仿真 265.3.1S盒模块 265.3.2列混合模块 265.3.3密钥扩展模块 275.3.4AES加密模块 275.3.5AES解密模块 28第6章系统测试 296.1时钟频率 296.2资源占用 296.3功耗 296.4性能比较 30第7章结论 31参考文献 32致谢 34大连东软信息学院毕业设计(论文)-第1章绪论计算机技术和网络技术的发展极大地丰富了人们的眼界和接受外界信息的方式,大量重要敏感的信息通过公用通信设施和计算机网络进行交换。因此,处理高效的加密和解密数据信息的密码学重新进入人们的视线,它很好地解决了数据机密性保护和身份认证等方面的难题。绪论部分首先将介绍加密算法的演变,接着讨论一下AES加密技术的研究现状,最后讲述本课题的研究意义和论文的主要内容。加密算法的演变1.1.1数据加密标准1972年,为了保护计算机通信过程数据的安全性,美国国家标准局制定了一个保护计算机通信和数据安全性的计划,主要通过开发一个完善的加密标准来实现。并于1973年开始公开召集算法,到1974年开始第二次征集,当时IBM的Lucifer所开发的变形被选中,在1976年成为联邦的数据加密标准,而且开始投入使用。数据加密标准的使用范围扩展地很快,到后来美国的国防单位也开始采用数据加密标准。数据加密标准是第一个被人们公认的加密标准,而且是比较实用的。但是随着计算机处理的速度越来越快,由于数据加密标准的密钥长度比较短,因此其破解的难度也越来越低。到1987年,数据加密标准已经缺乏了安全性,只是由于其广泛的应用范围以及没有合适的加密算法的出现而没有被取代。1.1.2高级加密标准由于数据加密标准不再安全,在1997年,美国国家标准和技术研究所开始进行高级加密标准的研究,并开始公开正式召集相应的加密算法。为了弥补数据加密标准被淘汰时给数据加密领域带来的空缺,因此致力于提出一种可以保护重要信息,免费向大众公开而且是全世界通用的高级加密算法。其中,美国国家标准局在算法的征集中规定了算法的最低满足要求,首先算法必须是分组密码,属于对称密钥体制,其次需要支持128bit的分组长度以及128、192、256三种不同长度的密钥。在1988年,美国国家标准局第一次召开了高级加密标准的候选会,会议中公开了15种高级加密标准的算法,由公众来对这15个公布的算法进行选择和评估。在评估进行了一年之后,美国国家标准局在1999年第二次主持召开了算法候选会议,这次会议中,美国国家标准局决定从15个算法中选取出5个待选算法进行最后的比较。同样,这5个算法的评估继续由公众来完成,评估的过程持续了一年的时间。美国国家标准局为了从候选算法中选出最好的算法作为高级加密标准,在评估截止时间之前的一个月,第三次召开了加密算法候选会议,这次会议的展开,主要对公众的评估结果做了详细的分析和对比,从而为AES算法的确定准备了详细而可靠的依据。美国国家标准局于2000年正式宣布确定Rijndael算法为高级加密标准算法,随后根据公众给出的评论,对Rijndael算法的草案进行修改和完善,直到2001年才正式发布了高级加密标准,并规定高级加密标准于2002年5月26号正式生效,至此历经数年的研究才完成高级加密标准对数据加密标准的取代。1.2AES加密技术的研究现状算法的设计原理、统计性能分析以及安全性能分析是高级加密算法主要研究的三个方面。设计原理方面的研究主要包括设计的算法所遵照的原则、算法各组成部分的数据基础以及算法所采用的系统结构。算法统计性能是指研究算法数据随机化的能力。目前,对Rijndael算法相关统计性能方面投入的研究还比较少,统计测试所选择的测试项目和测试数据的结构一般都不相同,但大多数测试都是基于美国国家标准局统计测试工具包进行。算法安全性能的研究主要是分析对现有的密码有可能进行的攻击,研究的内容主要包括专用攻击、差分密码分析、强力攻击、线性密码分析以及插值攻击。目前,对于线性密码分析和差分密码分析已经有比较深入的研究,而对专用攻击的研究主要集中在对基本的攻击原理进行分析,寻找算法合理的代数表示则是对插值攻击的研究主要目的。1.3课题研究的意义随着计算机领域以及通信领域的飞速发展,数据信息的可靠存储、保密处理和保密传输变得越来越重要。特别是随着互联网的广泛普及,网上购物、网上金融、电子邮件、个人即时聊天以及通信等成为人们生活中必不可少的一部分,这些过程中所涉及到的数据信息安全保护显得相当重要,只有可靠的安全保障,才能维持这些业务的正常进行。在我国,对加密算法的关注还不是很多,对于AES算法的加密芯片的研究就更少了,目前只有少数成型的加密芯片在市面上流行,因此研究加密算法的FPAG实现,可以为加密芯片的设计提供一定的见解和理论依据,而且能够为我国的信息安全产业做出有效的贡献。加密算法可以广泛地应用在电子钥匙、智能卡、银行卡等多种安全电子产品中,具有非常广泛的应用方向和前景,因此研究基于FPGA的AES加密算法的设计与实现有着极其重要的意义。1.4论文的主要内容本课题设计了一种基于FPGA的AES加密系统,主要内容包括AES加密系统各功能模块的详细设计和整体结构的设计,而且对加密系统进行了功能仿真和性能分析。绪论部分主要介绍加密算法的演变、分组加密算法的国内外现状及本课题研究的意义,同时给出了本论文的内容和结构。第二章介绍了密码学的相关理论以及AES加密算法设计过程中的关键技术。第三章介绍了AES加密系统的设计,其中对加密过程进行了详细地分析。第四章重点讲述了AES加密算法的FPGA实现架构和各个子模块的架构,对AES加密系统的整体结构及各个模块进行了设计。第五章论述了AES加密算法的验证,对整个设计进行了功能仿真。第六章对AES加密算法FPGA实现的性能参数进行了测试,主要涉及时钟频率、占用资源和功耗三个方面。结论部分总结了全文的研究内容和设计的创新点。大连东软信息学院毕业设计(论文)第2章关键技术介绍2.1数学基础(1)有限域在一个有限域中,元素可以通过多种方式来表示。对于任意素数的方幂q,能够唯一确定一个有限域GF(q),因此上的所有元素是同构的。尽管有限域有这种特点,但不同元素的表示方法对上的一些相关运算的复杂度有很大影响。由组成的字节b可以表示为系数在{0,1}中取值的多项式:++++++x+(2-1)十六进制数0x57转换为二进制数是2’b01010111,则这个字节可以表示为。在多项式的运算中,上两个元素的和是属于,和的系数由原来两个元素的系数进行模2加得到。上两个元素的乘法运算的结果也是属于,因此必须先在中确定一个8次不可约多项式,中两个元素进行乘法运算的过程是这两个多项式的乘积然后和这个8次不可约多项式的模。对于Rijndael加密,确定的8次不可约多项式为:m(x)=(2-2)用十六进制数可以表示为0x11B,用二进制数可以表示为2’b100011011。一次乘法运算的过程如下:()()=()modm(x)(2-3)虽然运算过程不属于标准的字节运算,但也可以简单地描述整个计算过程。另外,对于,u≠0,其乘法逆元计算,可直接通过中的多项式进行欧几里德扩充的方法计算得到:(2-4)其中,u=,v=。即=mod或者。(2)中的多项式4字节长度的向量在中可以表示为次数低于4的多项式。多项式的加法运算是各个字节对应的系数相加,也就是4字节长度的向量之间进行异或运算。同样,在乘法运算时,为了使运算得到的结果中多项式的次数低于4,需要将多项式乘积得到的结果对进行取模操作。运算过程如下:(2-5)其中(2-6)(2-7)(2-8)(2-9)上述运算用矩阵可以表示为:(2-10)多项式M(x)并不是上的不可约多项式,因此这种多项式的乘法不属于群运算。但是在Rijndael加密算法中,只有当乘以一个有逆元的多项式时才能使用这种乘法运算。定理描述如下:系数在上的多项式是模可逆的,当且仅当矩阵在上可逆。(2-11)证明过程如下:是模可逆的,当且仅当存在多项式使得()()=1mod()(2-12)()()=mod()(2-13)()()=mod()(2-14)()()=mod()(2-15)当且仅当存在多项式使得(2-16)(3)位运算有限域中的元素可以使用特征多项式来描述。字节可以表示为一个系数属于{0,1}的多项式:(2-17)系数取不同值的时候,与其对应的一共有256个字节和256个多项式。例如十六进制数0x57,用多项式可以表示为。定义两个字节之间的和运算是进行按位异或运算。定义两个字节之间的乘积运算是其对应多项式的乘积,然后和一个8次不可约二进制多项式的模。不可约多项式是指在上只有1和本身两个因子的多项式,其中m(x)=。例如,,即()()(2-18)===()mod()=(2-19)(4)四字节运算一个四字节和一个次数小于4的多项式对应。定义两个字节的加法运算是其对应多项式的系数之和,即=,(2-20)(2-21)定义两个字节的乘法运算是与其对应的多项式相乘然后和d(x)=的模,即(2-22)其中(2-23)(2-24)(2-25)(2-26)上述运算用矩阵可以表示为:(2-27)2.2AES加密算法的原理AES加密算法使用一种置换或代替的网络结构,并且对轮函数进行迭代运算。轮函数包括行移位、字节代替、列混合以及轮加密钥。在加解密过程中,除了最后一轮之外,每轮都执行相同的操作。AES加密算法结构,如图2.1所示。图2.1AES加密算法结构在AES算法中,加解密过程需要进行很多次的数据变换,每次变换后的结果称为状态。状态可以用一个二维矩阵表示,该矩阵有4行,Nb列,其中Nb等于明文或密文分组长度除以32。它是按照列优先的原则,从上到下、从左到右依次映射到矩阵中。状态矩阵,如表2.1所示。表2.1状态矩阵a0,0a0,1a0,2a0,3a1,0a1,1a1,2a1,3a2,0a2,1a2,2a2,3a3,0a3,1a3,2a3,3类似地,密钥也可以用一个二维矩阵表示,该矩阵有4行,Nk列,其中Nk等于密钥长度除以32。它也是按照列优先的原则,从上到下、从左到右依次映射到矩阵中。密钥矩阵,如表2.2所示。表2.2密钥矩阵k0,0k0,1k0,2k0,3k1,0k1,1k1,2k1,3k2,0k2,1k2,2k2,3k3,0k3,1k3,2k3,3AES加密算法规定明文和密文分组长度只能是128bit,即Nb=4,但密钥长度可以是128、192或256bit。因此,迭代轮数Nr是由密钥长度Nk决定的,密钥长度不同,那么迭代轮数就不同,具体如表2.3所示。表2.3迭代轮数与密钥长度的关系AES-128AES-192AES-256Nk468Nr1012142.3AES加密算法的工作模式分组密码是对长度固定的消息进行加密的,但是大部分消息的长度都不等于分组长度,因此产生了分组密码的工作模式,它是由加密算法、可选的反馈机制和算术或逻辑运算组成的。工作模式应该是简单、有效以及容易实现,而且不会降低分组密码算法的安全性。AES加密算法中主要使用五种工作模式,分别是电子密码本模式、密码链接模式、密码反馈模式、输出反馈模式和计数器模式。电子密码本模式和密码链接模式主要工作于分组密码中,而密码反馈模式和输出反馈模式是以分组密码作为流密码来运算的工作模式。2.3.1电子密码本模式电子密码本模式是AES加密算法中最早使用的,同时也是最简单的一种模式,它每次只能处理一个分组,并且各个分组独立地进行加解密。其工作原理是首先将明文或密文数据分成若干个分组,每个分组的长度和密钥的长度要保持一致,然后采用相同的密钥进行加解密。如果明文相同,那么密文也一定相同,因此就构造了一个能列举出所有明文和密文数据的电子密码本。电子密码本模式的优点是速度快、可以并行操作,而且错误不会传播,它的缺点是数据的长度必须是分组长度的整数倍,否则最后一个分组需要进行特殊的处理。其次在密钥一定的情况下,相同的明文对应着相同的密文,所以这种模式的另一个缺点是很容易暴露数据的格式和特性,同时提供了一些漏洞,对于分组与数据非常多的时候,其安全性就会比较低。它的工作原理,如图2.2所示。图2.2电子密码本模式2.3.2密文链接模式在密文链接模式中,加密时,初始向量IV和第一组明文数据进行异或逻辑运算,并且将得到的结果加密后,就能获得第一组密文数据,然后将其与第二组明文数据异或后的结果再加密后,就得到了第二组密文数据,这样进行下去直到整个明文加密结束。解密时,首先第一组密文数据解密,然后将解密后的结果和初始向量IV进行异或逻辑运算后得到第一组明文数据,并且将第一组密文与第二组密文解密后的结果再进行异或逻辑运算后就可以得到第二组明文数据,这样进行下去直到整个密文解密结束。密文链接模式中某位明文数据的错误只会对当前分组造成影响,但是某位密文数据的错误不仅会对当前分组造成影响,还会影响到下个分组的明文数据是否正确。它的工作原理,如图2.3所示。图2.3密文链接模式2.3.3密码反馈模式密码反馈模式可以进行实时流操作,它和传统的分组密码工作模式不同,当进行加解密时,使用序列密码的方式,将分组加密算法当作同步序列的密钥产生器。它的工作原理是在移位寄存器中,加入初始向量IV,进行分组加密,然后将输出的密钥序列和明文或者密文进行异或运算,再经过移位后,就可以将输出的结果反馈到移位寄存器中。密码反馈模式的优点是最小可以按字节长度实现加解密功能,而且适用于需要进行实时传输的流操作,它的缺点是会引起错误的传播。它的工作原理,如图2.4所示。图2.4密码反馈模式2.3.4输出反馈模式输出反馈模式进行加解密的时候,使用序列密码的方式,将分组加密算法当作同步序列的密钥产生器,整个过程和密码反馈模式非常类似,不过在输出反馈模式中,是将前nbit的输出直接地反馈到移位寄存器中,以此作为下一组的输入。输出反馈模式和密文链接模式、密码反馈模式相同,当初始向量IV不同时,即使输入相同的明文也会得到不同的输出。输出反馈模式的优点是在某个位置上的错误不会进行传播,只会对明文或密文中的该位产生影响,它的缺点是消息抗篡改的能力下降,难以及时发现密文是否被篡改过。它的工作原理,如图2.5所示。图2.5输出反馈模式2.3.5计数器模式计数器模式的工作原理是对计数器的值进行分组加密,并且产生密钥序列,然后将其与明文通过异或逻辑运算就能得到密文,以此来实现加解密的功能。它的工作原理,如图2.6所示。图2.6计数器模式2.4AES加密的过程AES加密算法是由字节代替、行移位、列混合和轮密钥加四个变换组成的。加密算法结构,如图2.7所示。图2.7AES加密算法结构2.4.1字节代替字节代替是将每个字节做非线性变换,通过查表操作可以变换为另外一个字节。字节代替操作,如图2.8所示。图2.8字节代替操作S盒的行用输入字节的高4位表示,S盒的列用输入字节的低4位表示,通过查找S盒中相应位置的元素,即可作为输出。S盒是一个16×16的矩阵变换,如图2.9所示。图2.9S盒变换S盒变换其实是一个从输入到输出的代数运算过程。首先初始化S盒,第m行n列的元素可以初始化为0xmn,然后将每个字节看作在有限域上的元素,并且把它们替换成有限域中的乘法逆,再将每个元素标记为(a7a6a5a4a3a2a1a0)的形式,最后对每一位做如下仿射变换:(2-28)其中,bi是构成新元素的第i位,ci是值为0x63的字节c的第i位,即c7c6c5c4c3c2c1c0=01100011。这样,S盒中的元素就被替换为b7b6b5b4b3b2b1b0。字节a和给定的矩阵相乘后,其结果再与固定向量值0x63进行异或运算。该仿射变换用矩阵表示形式如下:(2-29)2.4.2行移位在行移位过程中,状态矩阵中的第一行保持不变,将第二行到第四行进行左移操作,移位值和Nb有关,在AES加密算法中Nb恒等于4。行移位操作,如图2.10所示。图2.10行移位操作2.4.3列混合列混合是对状态矩阵中的每一列进行变换,并且通过矩阵相乘来实现。列混合操作,如图2.11所示。图2.11列混合操作根据上的多项式乘法,整个变换过程中的运算可以用如下矩阵表示:(2-30)通过矩阵运算,原来矩阵中的每一列就被转换成如下所描述的新序列:(2-31)(2-32)(2-33)(2-34)其中,是指按位异或运算,乘法操作需要按照模乘的规则来进行计算。2.4.4轮密钥加轮密钥加是将状态矩阵和子密钥进行模2相加,即异或逻辑运算。轮密钥加操作,如图2.12所示。图2.12轮密钥加操作2.4.5密钥扩展密钥扩展的目的是为轮密钥加变换提供轮子密钥。AES算法利用外部输入密钥K进行加密,对密钥进行扩展可以得到4(Nr+1)个字的扩展密钥。位置调换模块是把一个长为四个字节的序列左移一个字节变成。字节代替模块是将输入的四字节序列中的每一个字节进行S盒替代,将替换后的序列作为输出。Rcon模块是将表示为32bit的字符串。其中,X=(02),是X=(02)的(i-1)次幂的十六进制数。外部输入密钥K是扩展密钥的前Nk个字,字w[i]等于它前一个字w[i-1]与前Nk个字w[i-Nk]异或运算后的结果,即w[i]=w[i-1]XORw[i-Nk]。但如果i是Nk的倍数,那么w[i]=w[i-Nk]XORSubWordw[i-1]XORRcon[i/Nk]。第3章系统分析3.1AES加密算法的架构AES加密系统包括密钥扩展模块,数据的初始化序列模块,结束序列模块,轮变换模块,以及对整个系统进行控制的逻辑单元。加密模块的内部工作原理,如图3.1所示。图3.1AES加密核内部工作原理初始化序列模块是对于加密明文进行矩阵排列,方便后面进行轮变换中使用。轮变换模块是子密钥完成轮变换以后,接收初始化后的明文,并且让结束序列模块来进行处理。结束序列模块是对于加密完成后的密文进行反矩阵排列后送出的加密过程。密钥扩展模块是依据子密钥生成模型来编写的,可以产生轮变换的10轮子密钥。一个时钟周期提供一轮子密钥。一次AES加密过程,进行10轮变换,因此密钥扩展模块需要提供10轮变换的子密钥。逻辑控制模块是控制整个加密时序的开始和结束,而且还控制各个子模块运行的先后顺序。ld信号表示一次加密过程的开始,done信号表示一次加密过程的结束。3.2AES加密算法的接口时序128bit的加密过程可以在12个时钟周期内完成。加密模块的接口时序,如图3.2所示。图3.2AES加密核接口时序AES加密模块接收到ld信号为高电平的时候,会在key总线和text_in上分别采样128BIT的密钥和明文。在12个时钟周期后,经过AES加密核的运算,将done信号提高,表示加密已经完成,就能够读取text_out上的密文数据。其中,AES加密核的接口信号名、位宽、类型、功能,如表3.1所示。表3.1AES加密核的接口信号说明NameWidth(Bit)DirectionDescriptionclk1Inputcoreclockrst1Inputresetld1Inputloaddone1outputdonekey128Inputkeytext_in128Inputinputtextblocktext_out128outputoutputtextblock3.3各个子模块的详细设计3.3.1加解密模块在每一轮进行轮变换的过程中,行移位是状态矩阵按照字节的循环移位。轮密钥加是将当前状态的分组矩阵和128bit密钥进行异或运算。字节代替是一个替换操作,涉及有限域上运算,可以使用查表法来实现,虽然操作简便,但是将占用很多的存储资源,并且电路的面积会受到影响,为了在一定程度上约束各个功能模块所使用的面积,因此经过综合考虑之后,本论文实现的字节变换运算,和查表法相比起来,效率更高。在列混合变换中,核心是实现有限域乘法,由于AES加密算法中所描述的有限域乘法定义为一个字节变量和另一个字节常量之间的乘法,而列混合是对状态矩阵中的每一列进行变换。所以根据定义,为了实现该变换,首先进行单字节变换,然后进行四字节变换。轮变换的基本结构,如图3.3所示。图3.3轮变换的基本结构四个变换的功能模块加上一个多路选择器,就能够实现轮运算,生成了一个轮运算模块。其中,四个变换是组合逻辑,而密文是从时序逻辑输出。控制模块对选择信号、轮密钥分组和循环数分别进行控制,并最终产生完成信号。根据AES加密算法的要求,在使用128bit密钥的外部流水线结构时,需要进行10轮的轮变换。3.3.2控制模块控制模块的主要功能是产生控制和协调其它模块的信号,其主要控制的是密钥扩展模块中轮计数器的输出信号、子密钥的存储、保存和加解密延时的输入信号、每一级流水线在数据处理过程中的选择信号、每轮计算的循环次数和加解密数据输出并且产生有效标志位。由于在系统结构上并没有很多的状态切换,因此控制功能的实现是利用计数器、存储器构成的时序电路。密钥加载是输入密钥的使能信号,当数据进入加解密模块时会产生一个标志位,将它作为轮计数器中的置零信号,论文中定义了一个变量rcnt,用于进行轮计数功能。子密钥的存储控制会产生kb_ld信号和kcnt信号。其中,kb_ld是子密钥存储的使能信号,kcnt是子密钥存储的计数器,并且选择存储模块。流水线结构主要是控制数据的选择、循环、输出以及产生有效标志位。当处理数据输入时会产生一个done信号表示载入,输出时会产生一个标志位的done信号,从而本级输出的标志位能够作为下一级流水线的载入信号来使用。数据选择通过载入信号来控制,当载入信号为高电平时,选通的是输入数据,当载入信号为低电平时,选通的是经过轮变换模块处理后的数据。数据循环的功能是由计数信号和计数使能信号完成的,计数信号初始值在载入信号有效时赋值,而且让使能信号开始计数。3.3.3密钥扩展模块密钥扩展可以分为并行扩展和非并行扩展。密钥扩展模块包括字移位、字替换、轮常数和异或逻辑运算,其中字替换采用查找S盒列表的方法。密钥扩展总共需要产生11个子密钥,每个子密钥包括4个字,分别记为Wi[0],Wi[1],Wi[2],Wi[3],其中初始密钥是输入的128bit密钥,即Wi[0]=key[127:96],Wi[1]=key[95:64],Wi[2]=key[63:32],Wi[3]=key[31:0],后一个子密钥是由前一个子密钥计算得到的。子密钥的产生过程可以通过always语句描述如下:Always@(posedgeclk)w[0]<=k_valid?key[127:96]:w[0]^subword^rcon;Always@(posedgeclk)w[1]<=k_valid?key[95:64]:w[0]^w[1]^subword^rcon;Always@(posedgeclk)w[2]<=k_valid?key[63:32]:w[0]^w[1]^w[2]^subword^rcon;Always@(posedgeclk)w[3]<=k_valid?key[31:0]:w[0]^w[1]^w[2]^w[3]^subword^rcon;其中,k_valid是密钥输入的控制信号,当k_valid有效时,产生初始子密钥,并且在每个时钟到来时产生各轮所需要的子密钥。subword是由S盒所构成的字节代替模块产生32bit字节。rcon是由控制模块产生的。第4章系统设计4.1构架概述加密单元,可以实现数据的加密功能,是整个系统的核心模块。密钥扩展单元,通过初始密钥,并且利用一系列算法计算出多轮密钥,同时存储中间产生的子密钥。控制单元,用于产生控制信号来协调其它所有模块的运作。AES加密算法的硬件实现基本逻辑构架,如图4.1所示。图4.1AES加密的逻辑结构外部密钥和明文在每完成一个明文分组输入后产生一个启动脉冲,用于触发控制单元输出控制信号,来辅助加密单元以及密钥扩展单元协同工作,当该组明文加密完成后,产生完成脉冲,控制单元通过该脉冲进行下一步工作的控制。4.2加解密模块的详细设计4.2.1加密算法的FPGA实现在AES加密算法中,字节替代是乘法逆运算,因此数学计算比较复杂,但是可以通过查找表来实现该变换;行移位是不同行使用不同位移量的循环移位操作,只需要简单的逻辑电路就可以实现;列混合是有限域中多项式的乘法运算,也可以通过查找表来实现该变换;轮密钥加是进行异或运算。AES加密模块,如图4.2所示。图4.2AES加密模块4.2.2解密算法的FPGA实现AES解密模块是对加密后的数据进行解密,并且验证其加密过程的正确性。AES解密模块和加密模块的工作原理相类似。其中,AES解密算法包括初始化排列模块,轮变换模块,密钥扩展模块,密钥翻转缓冲模块,最终排列模块。密钥翻转缓冲模块存储所有轮子密钥,然后将它们按照相反的顺序提供给加密轮变换模块。AES解密模块,如图4.3所示。图4.3AES解密模块4.3系统的功能结构设计4.3.1S盒模块S盒模块执行替换操作,它是由有限域上的多项式的乘法和求乘法逆运算组成的,本论文对字节替代操作使用查找S盒的方式实现,避免复杂的乘法运算。查找S盒的方式有三种,第一种是通过查找M4K存储器的方式来实现,第二种是定义一个常量存储S盒,第三种是使用并行赋值语句。本论文选择最后一种方式。S盒模块,如图4.4所示。图4.4S盒模块4.3.2字节代替模块字节代替是Rijndael算法中唯一的非线性变换,它是对每一字节进行替换操作。字节代替模块只需要例化S盒模块就可以得到。字节代替模块,如图4.5所示。图4.5字节代替模块4.3.3列混合模块列混合变换是将状态矩阵中的每一列都和一个常数矩阵进行二进制乘法运算。因为有限域中的任何元素都能表示为2的不同次幂的和,所以二进制乘法运算能通过异或运算和倍乘运算实现。将有限域中每个元素的倍乘运算结果存储在一张16×16的查找表中,因此列混合变换能通过异或运算和查找表来实现。这样,只通过一个16×16的查找表资源,就可以有效避免有限域中繁琐的乘法运算,提高了系统的加密速度。列混合模块,如图4.6所示。图4.6列混合模块4.3.4密钥扩展模块密钥扩展模块是初始密钥进行轮变换时所需要的,它的扩展方式可以分为并行扩展和非并行扩展。并行扩展是轮变换和密钥扩展同时进行,在轮变换时产生轮变换所需要的子密钥,加密过程中可以选择这种扩展方法,每一组数据加密时都需要进行密钥扩展,这种方法适合频繁更换密钥的加密系统;非并行扩展是在加密过程开始之前,密钥扩展模块就已经产生所有的子密钥,进行密钥加时,直接选取子密钥。非并行扩展的方法优点是快速方便,但是要有另外的存储空间来存放子密钥。本论文设计的加密系统选择非并行扩展的方式。密钥扩展模块,如图4.7所示。图4.7密钥扩展模块大连东软信息学院毕业设计(论文)第5章系统实现5.1AES加密系统的流程图设X是128bit的明文数据,Y是128bit的密文数据,则AES加密的过程可以用X和Y之间的表达式可以表示如下:(5-1)其中,“”表示符合运算。表示X的一种变换=X,为第i轮的字密钥,与输入数据进行异或运算。S表示S盒变换,对每个字节按照S盒进行字节代替,S盒是一个预先确定好的转换表。R表示行置换。C表示列置换。AES加密流程,如图5.1所示。图5.1AES加密流程5.2AES加密系统的总体设计根据AES加密算法的设计要求,本系统可由以下4个模块组成:S盒模块、字节代替模块、列混合模块和密钥扩展模块。RTL级系统总体设计,如图5.2所示。图5.2RTL级系统总体设计5.3功能仿真5.3.1S盒模块输入不同字节,输出的是经过S盒变化后的数据。S盒模块的仿真,如图5.3所示。图5.3S盒模块仿真通过查找S盒列表,验证了S盒模块的正确性。5.3.2列混合模块列混合变换是对状态矩阵进行逐列变换,其中每一列都和一个常数矩阵进行多项式二进制的乘法运算。列混合模块的仿真,如图5.4所示。图5.4列混合模块仿真5.3.3密钥扩展模块密钥扩展是从原始密钥中产生用于加密的各轮子密钥。密钥扩展模块的仿真,如图5.5所示。图5.5密钥扩展模块仿真5.3.4AES加密模块加密模块是对AES加密算法的功能进行验证,输入加密密钥和明文数据,就能得到加密后密文数据。加密模块的仿真,如图5.6所示。图5.6加密模块仿真输入密钥128'h0001_2001_7101_98AE_DA79_1714_6015_3594和明文数据128'h0001_0001_01A1_98AF_DA78_1734_8615_3566,可以得到密文数据128'h6cdd_596B_8F56_42CB_D23B_4798_1A65_422A,说明经过功能仿真后得到的密文输出结果正确,同时也证明了所设计的加密系统能正确执行AES加密算法。5.3.5AES解密模块使用解密模块来解密经过加密后的密文数据,可以得到加密前的明文数据,说明加密过程和解密过程形成一个闭环加解密系统。解密模块的仿真,如图5.7所示。图5.7解密模块仿真输入密钥128'h0001_2001_7101_98AE_DA79_1714_6015_3594和密文数据128'h6cdd_596B_8F56_42CB_D23B_4798_1A65_422A,可以得到明文数据128'h0001_0001_01A1_98AF_DA78_1734_8615_3566,说明经过功能仿真后得到的明文输出结果正确,同时也证明了所设计的解密系统能正确执行AES解密算法。通过对测试数据进行功能仿真后的结果可以分析得出,本课题所设计的系统功能正确,能够执行AES加解密算法,而且所执行的加解密算法就是高级加密标准。大连东软信息学院毕业设计(论文)第6章系统测试6.1时钟频率设计的系统使用QuartusII11.0软件,综合编译后进行时序仿真。AES算法的设计理论内部处理时延是2ns,但在应用中,为了安全考虑,主时钟周期应该在10ns以上。假设FPGA主时钟频率是100M,那么完成128bit的加密需要8个时钟周期才能完成加密数据的输出。根据上述计算,满负荷运行时,加密速度可以达到1.6Gbit/s。如果使用500M主时钟的理论极限值,那么全负荷加密速度是616Mbyte/s。从理论上讲,当FPGA的内部时钟足够快的时候,只要系统的时钟是稳定,就不会有任何问题。由于受器件、逻辑、延时、噪声等各种条件的影响,AES核不能保证在更高的时钟下是正常运行的。仅在一个稳定的频率下才可以运行,FPGA设计验证时钟频率为60MHZ,AES内核吞吐量能够达到590Mbit/s。6.2资源占用设计选用的器件是Altera公司Cyclone系列的EP2C35F672C6。Cyclone系列FPGA芯片的内核由全铜工艺制造。根据QuartusII11.0软件的编译结果,AES加密算法的资源占用情况,如图6.1所示。图6.1资源占用情况6.3功耗在系统的设计过程中,低功耗是必须要考虑的问题。几种常用的功耗如下:待机功耗是能量由于漏电流ICCINT的存在,该设备在待机模式下消耗;静态功耗是漏电功耗,是一个稳定状态时的功耗;动态功耗是由翻转电路引起的,是器件内部节点电容充放电和短路功耗;IO功耗是VCCIO电源,主要是从连接到输出引脚,电路输出驱动器阻抗模式和外部匹配网络的充电、放电电流,以及外部开关和设备的外部负载电容;配置功耗是配置设备时消耗的能量,在初始化的时候,设备需要启用IO引脚,并且重置寄存器,使其进入工作状态。使用QuartusII11.0软件中的PowerPlayPowerAnalyzerTool功耗分析工具可以估算AES加密系统仿真时的功耗情况,如图6.2所示。图6.2功耗情况AES加密系统的功耗是0.15611(W)。其中,动态功耗0(W),静态功耗0.08008(W),I/O功耗0.07603(W)。6.4性能比较为了研究设计的性能,将本论文所设计的AES加密算法与一些其他FPGA实现的设计进行了横向对比。从已发表的文献中收集到设计的性能参数,如表6.1所示。表6.1AES加密算法的性能参数设计者吞吐量(Gbit/s)实现器件LERodriguez4.12XCV2600E22708ARKL3.563XCV1000E34628加解密并行设计4.7XCV3200EFG115646844一种分组加密0.475EP1S20F780C511636Chitu0.722Xilinx8650LU-10.283Xilinx6976SP-1-10.476Xilinx7080Joon0.411Xilinx5160通过和上述收集到的数据的比较,可以看出AES加密系统资源占用量比较少,而且拥有更快的速度和更好的速度面积比。大连东软信息学院毕业设计(论文)第7章结论如今,网络和电子商务的高速发展,对加密技术的可靠性的要求也越来越高。从发展的角度来看,加密装置可以是硬件设备或一块插卡,外接在主机的串口或者并口,并且具备速度快、低延时的特性。基于FPGA的加密技术与之前的主流硬件实现方式相比,拥有高速、低成本、微小封装尺寸、低功耗以及保密效果好等优点。另外,在时间和空间方面的利用上,基于FPGA的加密技术拥有多种可行方案,对空间代价和时间代价侧重点不同,更有助于在各种实际环境中的优化。使用FPGA芯片对加密算法进行实现为算法的评估提供了一条有效的新途径,如果通过软件来实现的话,算法的效率受到操作系统平台的影响,算法在不同系统平台上的工作效率并不成线性的关系,相互之间差距很大,而如果使用FPGA芯片来实现的话,加密算法的效率与FPGA芯片的物理特性有一定关系,但是这个影响不是很大。对各种实现方法进行比较后,本文最终选择FPGA芯片来实现AES加密算法。在设计加密算法的过程中,使用外部流水线电路结构,采用无反馈的加密工作模式,同时存储子密钥,实现并行计算,最后通过使用Verilog语言成功实现了AES加密算法的硬件描述,算法的功能仿真结果正确,并且采用Altera公司的FPGA芯片进行下载测试,测试的结果和预期基本一致。本文对AES加密算法进行设计与实现,并完成了RTL级编码,但开发的AES加密核的密钥是128bit,有一定的局限性。所以,实现一个能够配置AES加密算法的IP核,可以增加加密算法的灵活性,有利于在不同的应用场合中使用AES加密。参考文献[1]黄小苑,戴紫彬.基于FPGA的AES算法芯片设计实现[J],微电子学与计算机,2005,22(8):62-64[2]曾毅,鲁欣,付宇卓.一种优化可配置的AES密码算法硬件实现[J],微电子学与计算机,2004,21(12):34-37[3]何德彪,胡进,陈建华.基于FPGA的高速AES实现[J],华中科技大学学报,2010,38(2):101-103[4]韩雯.AES加密算法及其IC设计方法研究[D],青岛科技大学,2008[5]蔡志翔.AES密码算法加速器的设计与实现[D],浙江大学,2010[6]杨宏志,韩文报,董博.类AES分组密码统一框架及其FPGA实现[J],计算机科学,2010,37(4):103-105[7]钱松,周钦,俞军.AES算法的一种高效FPGA实现方法[J],微电子学与计算机,2005,22(7):8

温馨提示

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

评论

0/150

提交评论