期刊鉴别 论文检测 免费论文 特惠期刊 学术答疑 发表流程

基于easyARM615的AES算法实现

时间:2013-12-28 10:14 文章来源:http://www.lunwenbuluo.com 作者:李莉 李秀滢 点击次数:

  【摘要】随着高性能、低功耗的嵌入式系统的广泛应用,具有安全保密功能的嵌入式产品将占有较大市场。本文围绕基于ARM615的AES算法设计实现,研究了AES的整体架构、设计原则、算法描述,并设计了具体的测试系统,利用RS232通讯实现PC机与ARM615系统的接口通信,通过调用相对独立的加解密模块实现数据的加解密运算,并实现了与PC机加解密结果的对比。
  【关键词】AES算法;ARM615;加密
  1引言
  随着计算机通信技术的飞速发展以及互联网的应用,人们对信息安全的要求也越来越高,信息安全已成了当今尤为重要且需迫切解决的问题。经过几十年的发展,目前保障信息安全的手段日趋多样化,包括信息加密、数字签名、用户最小化权限、入侵检测、防火墙等,其中比较常用的还是信息加密。
  2AES算法原理
  AES算法作为美国国家标准与技术研究院(NIST)甄选发布取代DES的新一代加密标准。它采用对称分组密码体制,数据块长度和密钥长度都可变,与DES的Feistel结构不同,其轮函数采用替代/置换(SP)网络的迭代结构,由非线性层(字节替代),线性混合层(行移动、列混合),密钥加层(密钥加)组成,加解密结构呈对称性。其128比特密钥的加密安全性,比DES的56比特密钥强10倍。
  通常取明密文的分组长度为128比特,密钥的长度可为128、192或256比特,一般用Nk=4、6、8代表密钥的字数(1字=32比特),在本设计中选用Nk=4,即密钥长度为128比特。为保证算法的安全,加密轮数Nr与密钥长度Nk关系密切,其间关系如表1所示,由此可知Nk=4时,Nr为10。
  AES加/解密包括密钥扩展(KeyExpansion)、初始轮(InitialRound)、重复轮(Rounds)、最终轮(FinalRound)。重复轮分别包括字节替代(SubBytes)、行移动(ShiftRows)、列混合(MixColumns)、密钥加(AddRoundKey),最终轮没有列混合。其流程如图1所示。
  3AES算法实现
  事实证明,目前只存在攻击7轮的AES-128和AES-192算法,这里对Nk=4、Nr=10的AES-128算法进行实现。
  3.1密钥扩展
  密钥扩展将128bit的外部密钥(又称初始密钥)扩展成更长的比特串,再划成多个128比特的分组作为子密钥,即K0、K1、K2、K3、K4、K5、K6、K7、K8、K9、K10,以完成各轮的密钥加,其中K0是外部密钥本身。密钥扩展有同步和异步两种方式,这里采用异步方式,即在加密前进行密钥扩展准备好10轮子密钥。下面以子密钥K0生成子密钥K1为例,介绍密钥扩展过程。
  将K0的后4个字节A30~A33取出,暂存到temp.decimal[4]中。调用子函数Twfour(),将temp.decimal[4]循环左移1字节,然后通过S盒替代,运算结果的首字节temp.decimal[0]与当前轮常数RC异或,再将此4字节与A00~A03按位异或,即得到K1的首4字节B00~B03。而B10~B13=B00~B03A10~A13,B20~B23=B10~B13A20~A23,B30~B33=B20~B23A30~A33。
  轮常数RC值与加密轮数Nr间的关系如表2所示。
  3.2重复轮加密
  重复轮加密即为9次迭代的一个单轮运算,完整的重复轮包括字节替代(SubBytes)、行移动(ShiftRows)、列混合(MixColumns)、密钥加(AddRoundKey)四步操作。
  字节替代是关于字节的非线性可逆变换。将有限域GF(28)=X8+X4+X3+X+1上仿射变换所有的可能结果排成一个S盒(S盒的具体内容参见文献4),该替代规模为16×16=256个字节。在分组密码算法,S盒的密码强度直接决定了密码算法的好坏。代码实现中,可将状态矩阵data.hex[4][4][2]各个字节转换为0~15十进制,作为S盒索引she.ray[4][4][2]的行列值,进行二元域上的映射,结果重组即得data.hex[4][4][2]矩阵。下面是替代过程:
  for(i=0;i<4;i++)
  {for(j=0;j<4;j++)
  {m=int(data.hex[i][j][0]);
  n=int(data.hex[i][j][1]);
  if(m<='9')m-=48;elsem-=87;
  if(n<='9')n-=48;elsen-=87;
  data.hex[i][j][0]=she.ray[m][n][0];
  data.hex[i][j][1]=she.ray[m][n][1];}
  }
  行移动是指4*4=16字节的data.decimal[4][4]矩阵,0~3各行各字依次左移0~3字节,循环判断当前行数,借助临时变量temp,互换元素位置即可。

  •   论文部落提供核心期刊、国家级期刊、省级期刊、SCI期刊和EI期刊等咨询服务。
  •   论文部落拥有一支经验丰富、高端专业的编辑团队,可帮助您指导各领域学术文章,您只需提出详细的论文写作要求和相关资料。
  •  
  •   论文投稿客服QQ: 论文投稿2863358778 论文投稿2316118108
  •  
  •   论文投稿电话:15380085870
  •  
  •   论文投稿邮箱:lunwenbuluo@126.com

联系方式

  • 论文投稿客服QQ: 论文投稿2863358778
  • 论文投稿客服QQ: 论文投稿2316118108
  • 论文投稿电话:15380085870
  • 论文投稿邮箱:lunwenbuluo@126.com

热门排行

 
QQ在线咨询
咨询热线:
15380085870
微信号咨询:
lunwenbuluoli