一种AES密码算法的实现_第1页
一种AES密码算法的实现_第2页
一种AES密码算法的实现_第3页
全文预览已结束

下载本文档

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

文档简介

一种AES密码算法的实现密码学是保障信息安全的核心技术,应用涉及军事、国防、商贸及人们日常生活的各个方面。2001年美国标准技术研究所决定用AES算法逐渐取代日益不安全的56bit密钥长度的数据加密标准(DES)算法。AES算法是迭代分组密码算法,分组长度为128bit,而密钥长度可为128bit、192bit、256bit,其对应不同的密钥长度相应的迭代循环次数为10轮、12轮、14轮。现实现的是128bit的AES算法[1-2]。一种AES算法实现是采用轮展开的流水线结构[3],吞吐量很大可达到10Gb/s量级,但消耗大量的逻辑面积。考虑在资源少的FPGA上实现AES算法,能满足低端应用的加、解密速度一般不超过100Mb/s的需求。现设计采用顺序结构[3],多轮加密共用一个轮运算结构,加密模块和解密模块共用一个密钥扩展模块,能保持较高加解密速率,同时节省了逻辑面积,在50MHz时钟下加解密速率可达530Mb/s。1AES算法描述AES算法中的字节表示为有限域上的元素,并在有限域上定义加法和乘法两种运算,运算的基本单位是字节和双字(4个字节)。AES算法将128位的中间结果和密钥都分成16个字节,构成4×4以字节为元素的状态矩阵,AES在加解密过程中就是以状态矩阵为操作对象的。加密算法中每一次轮操作都由字节替换、行移位、列混淆和轮密钥加这四个函数组成,最后一次轮操作不含列混淆操作。2在FPGA上实现AES算法2.1顶层结构图该设计的顶层结构图如图1所示,由控制模块、加密模块、解密模块、密钥扩展模块、随机存储器(RAM)和FIFO组成。接口采用16位并行数据总线结构。加密数据流向为:明文数据通过数据总线写入16位入128位出的FIFO缓存;由控制模块启动AES加密模块进行一次加密运算;运算完成输出128bit密文存入128位入16位出的FIFO中。解密过程与之相同。加密模块和解密模块完全独立,保证模块能同时进行加密和解密运算,以满足快速双向保密通信的需求。

2.2加解密部分设计2.2.1加密模块

由于输入8次16位数据才能提供一个128bit明文,这一过程至少需要8个时钟,因此采用逻辑面积较大的多轮展开流水线结构方式意义不大。该设计采用多轮运算复用一个轮操作结构的顺序方式,设计原理图如图2所示。轮运算包括轮密钥加、字节替换、行移位和列混淆4个部分。其中,轮密钥加只是轮数据与轮密钥进行异或运算,结构比较简单;行移位也只是简单的逻辑连线,几乎不产生时延并且几乎不耗逻辑资源。字节替换如果采用模乘求逆运算[4]实现,则逻辑延时较长,速度较慢。为加快速度,采用时延小的基于只读存储器(ROM)查找方式的S盒结构,即输入8bit数据作为地址而相应数据输出则为字节替换后的8bit数据。S盒结构若采用基于块存储的查找表(LUT)来实现,一个轮运算中16个S盒将占用16×128个LUT,占用逻辑资源较大。可采用FPGA内部集成的块RAM来实现S盒。列混淆是系数在有限域上的四次多项式矩阵乘法,输入列向量(X0,X1,X2,X3),输出列向量(Y0,Y1,Y2,Y3),加密过程是在上乘以01、02、03、01,解密过程是乘以09、0E、0B、0D。为了优化用FPGA逻辑实现,采用一个xtime函数来实现上的乘02运算,对输入的一个字节b做以下变换[5]:xtime={b[6:0],1'b0}^(8'h1b&{8{b[7]}})。则列混淆在上所有矩阵乘法就

温馨提示

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

评论

0/150

提交评论