毕业设计(论文)AES和Camellia算法的软、硬件实现.doc

上传人:laozhun 文档编号:3020104 上传时间:2023-03-08 格式:DOC 页数:44 大小:2.12MB
返回 下载 相关 举报
毕业设计(论文)AES和Camellia算法的软、硬件实现.doc_第1页
第1页 / 共44页
毕业设计(论文)AES和Camellia算法的软、硬件实现.doc_第2页
第2页 / 共44页
毕业设计(论文)AES和Camellia算法的软、硬件实现.doc_第3页
第3页 / 共44页
毕业设计(论文)AES和Camellia算法的软、硬件实现.doc_第4页
第4页 / 共44页
毕业设计(论文)AES和Camellia算法的软、硬件实现.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《毕业设计(论文)AES和Camellia算法的软、硬件实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)AES和Camellia算法的软、硬件实现.doc(44页珍藏版)》请在三一办公上搜索。

1、 学号:20031122AES和Camellia算法的软、硬件实现Application of AES and Camellia on Softwareand Hardware系 别: 电子信息工程系专 业: 电子信息工程班 级: 0311班学生姓名: 指导教师: 日 期: 年 月 至 年 月【摘 要】对于一个密码算法的评估不仅在于算法的安全性,还在于算法的实现性能。密码算法的实现性能评估主要依据三个标准:实现的难度、占用的资源、实现的速度。本次设计通过实现AES和Camellia两个分别采用SP结构和Feistel结构的著名密码算法,分析其实现性能,研究算法结构、实现平台对算法实现性能的影响

2、。【关键词】AES Camellia SP结构 Feistel结构 FPGA VHDL【Abstract】Evaluation of a cipher arithmetic includes not only security but also performance of application which is evaluated mainly according difficulty, resource and throughput of application. In this design, arithmetic of AES and Camellia, the two famous

3、 cipher arithmetic which are respectively application of SP Net and Feistel Net, are implemented to analyze their performance and study the influence of the two different arithmetic nets and application platforms.【Keywords】AES Camellia SPN Feistel FPGA VHDL目 录前 言11 概述21.1密码学简介21.2 已发表的AES与Camellia的研

4、究结果21.3 本论文研究意义31.4 本论文的组织结构32 AES与Camellia算法描述42.1符号约定42.2 Feistel网络与SP网络的介绍与比较42.2.1 Feistel网络42.2.2 SP网络52.2.3 Feistel网络与SP网络的比较52.3 AES算法描述52.3.1 输入输出和中间状态与密钥52.3.2 AES的加密算法62.3.3 AES的解密算法82.3.4 AES的密钥扩展92.4 Camellia算法描述92.4.1 Camellia的加密算法92.4.2 Camellia的解密算法122.4.3 Camellia的密钥扩展133 开发语言与开发环境介绍

5、163.1 软件开发语言与开发环境的选择163.2 硬件开发语言与开发环境的选择163.2.1 开发环境163.2.2 开发语言173.3 硬件器件的选择183.3.1 ASIC与FPGA之间的选择183.3.2 器件选择与介绍194 AES与Camellia算法的实现214.1 软件实现214.1.1 AES软件实现的关键环节分析214.1.2 Camellia软件实现的关键环节分析224.1.3软件实现结果比较与分析234.2 硬件实现254.2.1 硬件实现系统分析254.2.2 AES的硬件实现284.2.3 Camellia的硬件实现324.2.4 系统测试与比较33结 论37致 谢

6、38参考文献39前 言2000年10月2日,美国的NIST宣布采用Rijndael算法作为AES(Advanced Encryption Standard),并于2001年11月26日发布正式的197号标准AES标准。随后欧洲的NESSIE也选出了Camellia和AES作为128bit分组算法的标准。Camellia和AES都旨在被推广用于加密公共敏感、秘密信息。Camellia和Rijndael的安全性在其参与标准的评选过程中都已经通过了许多密码专家的测试和评估,在未来的一段时间内能够保证其抵抗各类已知的、未知的攻击和分析。就其良好的安全性和可实现性,这两个密码算法在我国也大受欢迎,并正在

7、逐步取代DES等密码算法成为信息安全应用中密码算法的主流。选用一个密码算法,不仅要考虑到其安全性,还要考虑到其实现的速度和资源消耗。本次毕业设计内容涉及Camellia和AES的实现优化,分别做成两个模块,可用于以后的研究测试和应用。另外,比较二者实现的资源消耗和运行速度,为密码系统设计时算法的选用和实现提供依据。特别在FPGA实现方面,选用有不同特性的芯片比较实现结果,找出不同芯片适合的实现风格,为以后的算法硬件实现提供参考。AES和Camellia分别是SP结构和Feistel结构的代表性密码算法。通过研究AES和Camellia总结出SP结构和Feistel结构的特性、实现优势,为新的密

8、码设计选用结构提供参考。1 概述1.1密码学简介密码学是一门古老而又年青的科学。从公元前五世纪的皮带卷筒密码器发展到现代的公钥密码、椭圆曲线密码,密码学随着科技的发展不断向前并衍生出新的分支。在这过程中,密码学的应用领域也在不断扩大,从当初运用于军事发展到现在运用于百姓日常交流中的敏感信息加密。随着现代网络通信的快速发展,信息安全越来越受人重视,密码学也就发挥着越来越重要的作用。许多国家都投入了大量的人力物力进行密码研究,其中有为国防军事安全的,也有为保护政府敏感信息和民众私人通信的。由于处理器处理速度的迅速提高,DES无法继续保证其加密安全性,美国国家标准和技术研究所(NIST)于1997年

9、1月1日发布公告征集新的加密标准,即AES,用于替代DES和3DES。NIST的目标是确定一种保护敏感(无密级的)信息的、公开的、免费的并且全球通用的算法作为AES。在征集公告中,NIST对算法作了最低要求:算法必须是对称密钥体制的分组密码,并且支持128位的分组长度和128、192、256位的密钥长度。2000年10月2日,NIST正式宣布Rijndael算法作为AES并开始征集公众评议,并于2001年11月26日发布了正式的197号标准AES标准。而欧洲委员会也于2001年1月开始支持一项称为NESSIE(New European Schemes for Signatures, Integ

10、rity, and Encryption)的工程,希望推出一套不仅包括分组密码,还包括流密码、Hash函数、消息认证码、数字签名和公钥加密等在内的强安全性的密码标准。其中选用了Camellia 和 AES 作为128bit 分组密码算法的标准。1.2 已发表的AES与Camellia的研究结果AES和Camellia都是近几年出现的全球瞩目的两个安全性较高、结构较为简单的密码算法,并且由此引来了全球包括我国的许多密码研究者和实现者的研究兴趣,到现在为止,已经产生了大量的研究成果。以下是对AES和Camellia研究的部分发表成果:1 J. Daemen and V. Rijmen, AES P

11、roposal: Rijndael, AES algorithm submission, September 3, 1999.2 Tim Good and Mohammed Benaissa, AES on FPGA form the Fastest to the Smallest, 2005.3 Kazumaro Aoki and Tetsuya Ichikawa Masayuki Kanda, Camellia: A 128-Bit Block Cipher Suitable for Multiple Platforms, September 26, 2001.4 Final report

12、 of European project number IST-1999-12324, named New European Schemes for Signatures, Integrity, and Encryption, April 19, 2004.5 冯登国,林东岱,吴文玲,欧洲信息安全算法工程,2003年8月。6 胡予濮,张玉清,肖国镇,对称密码学,2002年8月。1.3 本论文研究意义Camellia和Rijndael的安全性在其参与标准的评选过程中都已经通过了许多密码专家的测试和评估,在未来的一段时间内能够保证其抵抗各类已知的、未知的攻击和分析。就其良好的安全性和可实现性,这两

13、个密码算法在我国也大受欢迎,并正在逐步取代DES等密码算法成为信息安全应用中密码算法的主流。选用一个密码算法,不仅要考虑到其安全性,还要考虑到其实现难度、实现的速度和资源消耗。本次毕业设计内容涉及Camellia和AES的实现优化,并可分别作成两个模块,可用于以后的研究测试和应用。另外,比较二者实现的资源消耗和运行速度,为密码系统设计时算法的选用和实现提供参考。1.4 本论文的组织结构本文分共5部分,正文四个章节和结论。第一章 概述,对本文讨论对象和研究的意义进行简单的介绍;第二章 AES与Camellia算法描述,详细描述本文所研究的两个算法;第三章 开发语言与开发环境介绍,介绍本文对应的算

14、法设计所用的语言和环境,解释选择的原因;第四章 AES与Camellia算法的实现,这是本次研究的主要工作也即是本文的主要内容,详细描述设计过程、算法实现细节和技巧,最后还对实现结果进行比较;结论,总结本次设计。2 AES与Camellia算法描述2.1符号约定表示比特串的连接 表示比特异或运算表示有限域上的乘法,模数为表示系数在有限域上的多项式乘法,模数为 表示比特串循环向左移位 表示比特串循环向右移位表示比特与运算表示比特或运算表示特比位取补操作的下标表示是bits长表示的左半部分表示的右半部分 用于函数输入输出表示式中,表示一个bits长的输入或输出2.2 Feistel网络与SP网络的

15、介绍与比较Feistel网络和SP网络是分组密码设计中的两种不同的整体结构类型,也是使用最多的结构类型。特别地,AES使用的是SP网络,而Camellia使用的是Feistel网络,本次研究即是通过研究这两个具体的具有代表性的密码算法研究Feistel网络和SP网络之间的联系和区别。2.2.1 Feistel网络Feistel网络(又称Feistel结构)把某一函数(通常称为F函数,又称轮函数)转化为一个置换。由于是Horst Feistel在设计分组密码时发明的,所以用了这位发明者的名字,并且因为DES的使用而流行。当前世界上著名密码中还有Twofish、MARS、FEAL、GOST、LOK

16、I、E2 、Blowfish、Camellia 和RC6等是采用Feistel结构的。(Feistel结构还分平衡Feistel和非平衡Feistel,这里只讨论平衡Feistel。)对于一个分组长度为bits的轮Feistel型分组密码,其加密过程如下:Step1:给定明文,记,其中是的左边bits,是的右边bits。Step2:进行轮循环运算。根据下列规则计算,:这里,是轮函数,是由种子密钥生成的子密钥,为子密钥的长度。Step3:输出密文在加密的最后一轮,为了使算法同时用于加密盒解密,略去“左右交换”。2.2.2 SP网络SP网络(又称SP结构,Substitution & Permut

17、ation Net,SPN)是Feistel网络的一种推广,Rijndael、SAFER和SHARK等著名密码算法都采用此结构。在这种密码结构中,每轮的输入首先经过一个由子密钥控制的可逆函数S,然后再被作用于一个置换(或一个可逆的线性变换)P。S被称为混淆层,主要起混淆的作用;P被称为扩散层,主要起扩散的作用。2.2.3 Feistel网络与SP网络的比较由以上的介绍可知,Feistel型密码具有“加解密相似”的实现优点,在硬件实现中能够节省硬件空间;而SP型密码在加解密中使用的是相逆的函数,无法共用模块。但是,Feistel型密码的扩散一般较慢,例如算法需要两轮才能改变输入的每一比特;而SP

18、型密码可以得到更快速的扩散,一轮即可改变输入的每一比特。另,为了抵抗密码分析,迭代密码一般会在第一轮加一个密钥控制的前期变换,在最后一轮加一个密钥控制的后期变换,例如AES、Camellia、MARS和E2等算法都采用了这样的措施。2.3 AES算法描述2.3.1 输入输出和中间状态与密钥AES是一个密钥迭代分组密码,分组长度为128bits,包含了轮变换对状态(AES中将轮变换的处理结果称为状态)的反复作用,用表示轮数,它依赖于密钥长度。表2.1 AES的轮数与密钥长度密钥长度(个字)468轮数()101214状态:AES的输入输出和中间的状态都是128bits,这里以标识,其中,。从左到右

19、将划分为16个字节,将这16个字节排成一个二维数组密钥:AES的密钥可取128bits、192bits或256bits。密钥长度以4字节的字为单位来表示,密钥长度记为,。那么,将bits种子密钥从左到右划分为个字节,将这个字节排成一个二维数组2.3.2 AES的加密算法AES加密算法的C伪代码描述如下:AES(State, CipherKey)KeyEexpansion(CipherKey, ExpandedKey);AddRoundKey(State, ExpandedKey0);For(i=1;iNr;i+) Round(State, ExpandedKeyi);FinalRound(St

20、ate, ExpandedKeyNr); Round(State, Kr)SubBytes(State);ShiftRows(State);MixColumns(State);AddRoundKey(State, Kr); FinalRound(State, Kr)SubBytes(State);ShiftRows(State);AddRoundKey(State, Kr); 这里Round为中间轮变换,FinalRound为最后轮变换,二者区别在于FinalRound少了MixColumns步骤。1、步骤SubBytes步骤SubBytes是AES密码中唯一的非线性变换,是一个砖匠置换。它将

21、状态中的每个字节非线性地变换为另一个字节。每个字节做如下两个变换:Step1:将每个字节都变换为有限域中的乘法逆元素,规定00的逆元为00;Step2:对Step1中的结果作仿射变换,仿射变换得定义如下:SubBytes满足可逆性,且不存在不动点或相反的不动点。SubBytes同样可以通过查表的方式实现。(SubBytes表在有关AES的书都有介绍,这里不再赘述。)2、步骤ShiftRows步骤ShiftRows是一个字节换位,它将状态中的行按照不同的偏移量进行循环移位。如下:3、步骤MixColumns步骤MixColumns对一个状态逐列进行变换。4、步骤AddRoundKey状态序列与对

22、应的子密码的每一比特按顺序进行位异或运算。2.3.3 AES的解密算法AES解密算法的C伪代码描述如下:AES(State, CipherKey)KeyEexpansion(CipherKey, ExpandedKey);AddRoundKey(State, ExpandedKey0);For(i=1;iNr;i+) InvRound(State, ExpandedKeyi);InvFinalRound(State, ExpandedKeyNr); InvRound(State, Kr)InvShiftRows(State); InvSubBytes(State);AddRoundKey(St

23、ate, Kr);InvMixColumns(State); InvFinalRound(State, Kr)InvShiftRows(State);InvSubBytes(State);AddRoundKey(State, Kr); 1、步骤InvShiftRows步骤InvShiftRows是步骤ShiftRows 的逆移位。2、步骤InvSubBytes步骤InvSubBytes是步骤SubBytes的逆变换. 3、步骤AddRoundKey同2.3.2的第4部份,只是轮子密钥按逆顺序取自扩展密钥。4、步骤InvMixColumns步骤InvMixColumns是步骤MixColumns

24、的逆变换。以矩阵乘法表示,即为:2.3.4 AES的密钥扩展加解密所需的总共个字的轮密钥都由个字的种子密钥扩展生成。其中 ,Step1:,为个字种子密钥Step2:for(i=1;i6 and i mod Nk =4)temp = SubWord(temp);end if;= xor temp; 其中,RotWord()的返回值为一个4字节的字,它是输入的4个字节字循环左移1字节的结果。Rcon是常数,Rconj=(,00,00,00), ,2.4 Camellia算法描述2.4.1 Camellia的加密算法Camellia的分组长度亦为128bits,密钥长度为128bits、192bit

25、s或256bits,根据不同的密钥长度,加密轮数有略微不同。密钥长度为128bits时,使用3次6轮处理,需要18个轮密钥;密钥长度为192bits或256bits时,使用4次6轮处理,需要24个轮密钥。Camellia的加密过程见图2.1、图2.2。图2.1 Camellia的加密过程(密钥为128bits)图2.2 Camellia的加密算法(密钥为192bits或256bits)1、子密钥Camillia中子密钥都是由种子密钥扩展生成,请见2.4.3 Camellia的密钥扩展。2、函数函数如图2.3所示。图2.3 Camellia的轮函数函数定义如下:其中、为4个盒,它们和有限域上的逆

26、函数在方式意义下等价,它们的代数式如下:、均可用查表实现。(这四个表在关于Camellia的书中都有介绍,在此不再赘述。)其中、和定义如下:在有限域中约定,是中的一个元素,且满足;是中满足的一个元素。3、函数其中, 图2.4函数4、函数 其中, 图2.5函数 2.4.2 Camellia的解密算法Camellia的解密结构与加密结构类似,不同之处在于子密钥的使用顺序,见图2.6、图2.7。图2.6 Camellia的解密过程(密钥为128bits)图2.7 Camellia的解密过程(密钥为192或256bits)2.4.3 Camellia的密钥扩展Camellia的密钥扩展首先又密钥编排过

27、程生成中间序列,并由种子密钥和中间序列通过移位生成子密钥,密钥编排算法如图2.8所示,输入为、,当密钥长度为128bits时输出,当密钥长度为192bits或256bits时输出和。当密钥为128bits时,种子密钥为 当密钥为192bits时,种子密钥为当密钥为256bits时,种子密钥为图2.8 Camellia密钥编排算法 在密钥编排过程中,用到了6个64bits的常数,它们是表2.2 密钥为128bits时的子密钥表2.3 密钥为192/256bits时的子密钥3 开发语言与开发环境介绍本论文的目的在于,讨论AES、Camellia在实际运用中各方面性能的对比,以得出一个可参考的结论,

28、为两个算法的实际运用的选择提供参考。因而在设计中会采用实际开发中常用的开发语言和开发环境,特别在硬件方面会选用时下开发较常用的和最近推出的芯片类型。3.1 软件开发语言与开发环境的选择在软件方面,本次设计选用了Microsoft Visual C+6.0编译软件和C语言进行软件的编译和测试。C语言应用广泛,优点众多,易于理解,移植性强,接近伪码。另外,应用C语言进行算法测试具有以下优点:l 容易实现;l 有助于算法的理解;l 容易转换为其他软件硬件语言;l 为算法的其他实现方式提供测试向量。3.2 硬件开发语言与开发环境的选择3.2.1 开发环境本设计选用了Quartus II7.0 软件作为

29、硬件开发环境。Quartus II 软件是Altera公司推出的综合开发工具,集成了Altera 的FPGA/CPLD 开发流程中所涉及的所有工具和第三方软件接口。通过使用此综合开发工具,设计者可以创建、组织和管理自己的设计。而Quartus II Version 7.0 完全版本发布于2007年2月,是较新的一个版本。1、Quartus II具有的优点Quartus II 7.0软件对Altera新的Stratix III、Cyclone III器件以及其他CPLD、FPGA和结构化ASIC系列提供软件支持。其性能和效能改进的其它亮点包括:l 多处理器支持:支持多处理器计算机在编译时进行并行

30、处理,从而缩短了编译时间。Quartus II软件首次实现了由FPGA供应商提供的多处理器支持,发挥了新的多核处理器的优势。l 分离窗口支持:Quartus II软件GUI用户可以在桌面上独立移动各个工具窗口,方便了设计分析和管理。l 芯片规划器:新的集成平面规划器和芯片编辑器进行详细地设计平面分析和工程更改单(ECO)编辑。l 高级I/O时序:支持设计人员在Quartus II软件中输入电路板走线参数,实现更精确的I/O分析,更迅速地达到时序逼进。l 引脚规划改进:从引脚规划器结果中自动建立顶层设计文件,实现更彻底的I/O分析,加速实现电路板设计。l Windows 64位版本:Quartu

31、s II软件64位版本运行在Microsoft Windows XP Professional x64上,设计人员可以充分利用计算机的4Gbytes内存优势。l 扩展Linux支持:除了Red Hat Enterprise Linux外,Quartus II软件还支持SUSE Linux Enterprise 9。 Quartus II软件7.0性能和效能在业界首屈一指,支持最新的Cyclone III系列,包括含有120,000个LE、4Mbits存储器以及288个乘法器的EP3C120器件在所有FPGA供应商免费软件包所支持的器件中,它是密度最大的。其特性包括快速方便实现时序逼近的Time

32、Quest时序分析器,缩短了编译时间的渐进式编译以及基于团队的设计,降低了功耗的PowerPlay功耗分析和优化工具,以及可进行系统级设计的SOPC Builder和DSP Builder工具。2、Quartus II 7.0支持的器件Quartus II 7.0软件支持的器件,有 Stratix III 和 Stratix II GX、 Stratix II、 Stratix GX、 Stratix、 MAX7000S、 MAX7000B、 MAX7000AE、 MAX7000A、 MAX II、 HardGopy II、 FLEX6000、 FLEX10KE、 FLEX10KA、 FLEX

33、10K、 Cyclone III、 Cyclone II、 Cyclone、 APEX20KE、 APEX20KC、 APEX II、 ACEX1K。3.2.2 开发语言电子系统的设计主要有原理图输入法和硬件描述语言设计两种方法。原理图输入法是设计规模较小的电路时经常采用的方法,这种方法直接法设计的系统用原理图的方式表现出来,具有直观、形象的优点,尤其对表现层次结构、模块化结构更为方便。但原理图方式不够灵活,并且不利于将设计方案移植到ASIC中,所以原理图输入方法越来越少用,逐渐被HDL描述语言设计所取代。硬件描述语言(HDL,Hardware Description Language)是一种

34、用文本形式来描述和设计电路的语言。到目前,已有数十种硬件描述语言,但只有VHDL和Verilog HDL以强大的功能和通用性适应于多领域、多层次,被普遍认同为标准HDL语言,先后成为IEEE标准。它们都能形式化的、抽象的表式电路的结构和行为,支持逻辑设计中层次与领域的描述,可借用高级语言的特点来简化电路的描述,具有电路仿真与验证机制以保证设计的正确,支持电路描述由高层到低层的综合和转换,便于文档管理,易于理解和移植重用。本设计中选用VHDL语言,它具有较高的通用性,拥有广泛的设计群体,语法架构自由,也相对容易掌握。3.3 硬件器件的选择3.3.1 ASIC与FPGA之间的选择硬件器件有专用集成

35、电路(ASIC)或现场可编程逻辑阵列(FPGA)两种。专用集成电路实现起来耗时较多,同时所需的费用也比较昂贵,而现场可编程逻辑阵列则能提供弹性的设计方式,并允许多次清除和重新烧录,可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同软件就可实现不同的功能。表3.1是在数据处理性能、功能、设计开发过程三方面特性指标的比较。表3.1 FPGA与ASIC特性比较FPGA ASIC 数据处理性能特性并行处理数据能力支持支持流水线方法支持支持字长可变可变速度快非常快功能特性功能的配置性能不能抗干扰能力有限强对密钥访问的控制一般强开发设计过程硬件描述语言VHDL,Verilog HDLVHDL,Ve

36、rilog HDL设计周期较长长开发工具成本较贵非常昂贵测试成本较贵昂贵维护及更新成本较贵昂贵从设计开发的工程来看,这两种方法系统设计和编程可以采用相同的硬件描述语言,只是在设计周期、设计所需工具的费用、测试及维护更新的费用上,ASIC方法要比FPGA方法昂贵。在应用方面,FPGA速度越来越高,综合其他方面的优势,已经有开始取代ASIC的趋势,所以在本次研究中只选用FPGA 作为测试器件。这里的加密主要是指对数据进行的加密,硬件加密最突出的优点是速度比软件加密快很多,因此经常用于大量的存储数据的加密和对速度有较高要求的通信数据的加密。因此,在本次研究中将依照以下标准选用测试的器件:l 当前运用

37、较广泛的FPGA器件;l 有发展前景的FPGA器件;l 厂商新推出的FPGA器件。3.3.2 器件选择与介绍由于当前Altera的FPGA运用较为广泛,且具有代表性,所以在本次测试中只选用了Altera推出的芯片系列。但是可以由此将测试结果推广到其他FPGA芯片中。以下对选用的Altera的FPGA器件做一个简单的介绍。1、Stratix II系列EP2S15F484C3 器件Stratix II器件的突出特点是90nm+ALM(自适应逻辑模块),可实现最大化的集成度,和以往的大容量体系相比,大大降低了成本,并且支持128位AES加密。Stratix II器件的市场一直在扩大,成为主流器件,并

38、将继续保持较长的一段时间。表3.2 EP2S15器件的性能表器件M512s RAM块M4Ks RAM块RAM总容量DSP块嵌入式硬件乘法器()锁相环(PLL)最大用户I/O引脚逻辑单元(LEs)EP2S151047841932812966343124802、Stratix系列EP1S10F780C5器件Stratix在2002年初推向市场刚开始就以其突出的性价比占领了高端FPGA市场。表3.2 EP1S10器件的性能表器件M512s RAM块M4Ks RAM块Mega RAM块RAM总容量DSP块嵌入式硬件乘法器()锁相环(PLL)最大用户I/O引脚逻辑单元(LEs)EP1S109460192

39、04486486426105703、Cyclone 系列EP1C20F400C6器件Cyclone FPGA基于Stratix 的工艺构架,重新定义它的特性和规格,以降低成本,其应用只要是定位在终端市场,如消费类电子、计算机、工业和汽车等领域。表3.3 EP1C20器件的性能表器件M4Ks RAM块RAM总容量锁相环(PLL)最大用户I/O引脚逻辑单元(LEs)EP1C20642949122301200604、Cyclone II 系列EP2C20F484C6器件Cyclone II FPGA 是基于Stratix II 的90nm 工艺推出的低成本的FPGA,在芯片总体性能上要优于Cyclo

40、ne 系列器件。表3.4 EP2C20器件的性能表器件M4Ks RAM块RAM总容量嵌入式硬件乘法器()锁相环(PLL)最大用户I/O引脚逻辑单元(LEs)EP2C2052239616524315187524 AES与Camellia算法的实现4.1 软件实现4.1.1 AES软件实现的关键环节分析方法1:AES的软件实现,将按AES原理每一步骤分别实现,不进行步骤整合。主要影响AES实现结果的是SubBytes(),MixColumns()的实现。1、S-盒的实现S-盒的实现中包含8bits数在上求逆的步骤,这是S-盒实现的一个关键点。如果采用直接计算的方式实现上求逆,需要消耗大量的时间,从

41、而影响到整个算法的实现速度。因此,拟采用查表的方式一次性实现S-盒中的所有运算。在本设计中以一个256个字节表的方式实现S-盒。2、MixColumns()和InMixColumns()的实现MixColumns()和InMixColumns()的实现关键在于上乘法的步骤。在本设计中同样以查表方式实现上乘法,即mul(a,b) = Alogtable(Logtablea + Logtableb)%255。方法2:依32位处理器特性,以更适合32位处理器的数据处理方式,使实现速度达到更快。记轮输入的状态阵列为,对应轮输出的状态阵列为,该轮子密钥的状态阵列为。设、各自表示输入、输出、子密钥的状态阵

42、列上行列元素。于是轮函数可以表示为;定义4个真值表、,它们都是8比特输入/32比特输出的函数,即都是4字节字的256阶阵列表。定义如下:;。4个真值表共占用4K字节的空间。利用这4个表将轮函数写为:;进一步,即可以将4个真值表缩减为1个真值表,只占用1K字节的空间,但每个列需要3次额外的循环移位操作为代价。轮函数写为:4.1.2 Camellia软件实现的关键环节分析Camellia的软件实现中,难点在于移位环节,关键点在于S-盒、函数P实现。1、移位在Camellia中的移位位数不满足8的整数倍数,实现起来比较复杂。在中用到32位数据的循环移位;在密钥扩展中用到128位数据的循环移位。本次设

43、计中将二者分别实现。32位数据的循环移位实现如下,其中n为移位的位数:Step1:完成8的整数倍移位n8 = n/8;m8 = n%8;k=1;for(;n8=1;n8/=2)if(n8%2)for(h=0;h-1;j-=k)tmp2 = Sj+h;Sj+h = tmp1;tmp1=tmp2;k=k*2;Step2:完成剩下的小于8的移动位数k1 = S0/Bm8-1; for(j=3;j=0;j-)k2 = Sj/Bm8-1;Sj = Sj*B7-m8+k1;k1 = k2; 128位数据的循环移位以类似的方式实现。2、S-盒Camellia中有4个S-盒,但都是由同一个S盒通过输出移位或输

44、入移位产生的。为保证实现的速度,本设计中编辑了4个S-盒表,以查表方式实现S-盒。3、函数P编辑8行8列矩阵,P88 = 1,0,1,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,1,1,0,1,1,0,1, 0,1,1,1,1,1,1,0, 1,1,0,0,0,1,1,1, 0,1,1,0,1,0,1,1, 0,0,1,1,1,1,0,1, 1,0,0,1,1,1,1,0;for(i=0;i8;i+)ti = Zi;Zi = 0; for(i=0;i8;i+)for(j=0;j8;j+)if(Pij=1)Zi = tj; 4.1.3软件实现结果比较与分析AES与Camellia的软件实现比较主要还是关注其实现速度的比较。密钥安装时间是指完成一次密钥扩展的时间;加解密的时间是指完成一次加密或解密的时间,其中加解密的速度(也即是吞吐量)以每秒处理的数据量为评估对象,。表4.1 32bits处理器(Visual C+,Pentium 4,1.69GHz,256MB内存)算法

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号