在线客服系统

基于easyARM615的AES算法实现

时间:2013-12-28 11:24 来源:www.fabiaoba.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,互换元素位置即可。
  列混合是将data.decimal[4][4]与列混合矩阵M(如图3)进行矩阵乘,将矩阵各行看成有限域上的多项式:b7X7+b6X6+b5X5+b4X4+b3X3+b2X2+b1X1+b,结果采用模X8+X4+X3+X+1的模乘同余规则,实际包含了64次"异或",16次"与"操作,使用多个循环嵌套可以完成每对字的异或运算。data.decimal[4][4]与M异或之前,首先暂存到c1[4][4]。由于M的元素只有三种,若用log_01(c1)表示c1^01,则c1=log_01(c1),log_03(c1)=c1^log_02(c1),所以关键要实现的是log_02(c1)运算。在有限域GF(28)上,左移1位表示"^2"运算,所以c2=log_02(c1)用C语言表达如下:if(c1<80)c2=c1<<1;elsec2=c1<<1^11b;下面M矩阵第二列"01020301"乘c1[4][4]矩阵为例:
  for(j=0;j<4;j++)
  {c2[0][j]=c1[0][j];
  c2[1][j]=log_02(c1[1][j]);
  c2[2][j]=log_03(c1[2][j]);
  c2[3][j]=c1[3][j];
  for(i=0;i<4;i++)data.decimal[k][j]=c2[i][j]^data.decimal[k][j];}
  将列混合的结果矩阵data.decimal[4][4]与当前轮子密钥key.now[4][4]按位异或进行密钥加运算,所得结果作为下一重复轮的输入。
  3.3AES加解密对称设计
  如图1所示,AES加解密过程具有对称性。在加密实现中,初始轮(InitialRound)只是密钥加操作,最终轮(FinalRound)不包含列混合。当Nk=4时共需加密10轮,用data.decimal[4][4]表示明文,key.decimal[4][4]表示密钥,L为轮数。调用ExpandedKey(),生成K1~K10轮子密钥,外部密钥即为初始轮密钥K0,然后进入Aes_perEncry(),针对128bit分组的10轮加密过程:
  InitialRound:L=0时,明文与K0进行密钥加操作。
  Rounds:L=1~9时,获得当前子密钥key.now[4][4]=key.decimal[(ll+1)*4][4],并循环以下操作SubBytes()、ShiftRows()、MixColumns()、AddRoundKey()。
  FinalRound:L=10时,在重复轮循环中实现,通过if(L<11)MixColumns(),使得最终轮剔除列混合操作。
  AES解密的实现过程与加密实现过程的不同主要体现在单轮加密中:(1)字节替代使用逆S盒,通过自我替换生成为S盒的逆she.Invray[4][4][2];(2)行移动方向取反,左移改为右移;(3)列混合用于"乘"的矩阵,需在有限域上模逆;(4)密钥扩展获得的子密钥反序成K10、K9、K8…………K0,应用于0~10轮。
  4算法功能测试
  为进行算法功能的测试,按照图5所示数据传输流程搭建测试验证系统,算法数据来自上位机的应用软件,AES算法的加解密功能在easyARM615芯片上实现,ARM615与上位机间通过串口进行通信,数据的打包分组由上位机软件完成,数据包的结构如表3所示。
  表3
  其中最低位D0为加解密模式位,当D0=1时,表示加密,D0=0时,表示解密;数据长度LONG表示要进行加解密运算的数据的长度,单位为字节;密钥固定为128bit,数据最小长度为128比特,不足128比特补0。由此可知,ARM615接收的最小长度为1+16+16=33字节,串口通信采用中断接收、轮询发送的数据传输方式。
  ARM615控制器通过中断方式接收数据,接收数据长度由接收到的第一个字节中的数据长度LONG决定,并将接收数据赋值给临时数组alldata[i],继而将数组alldata[i]拆分获得加/解密模式、密钥、数据三项信息,进行AES加/解密。最后通过RS232回送密/明文给上位机应用程序。easyARM615上的程序流程如图6所示。
  测试结果如表4所示,加解密结果正确,且与PC下的AES算法实现的结果进行了对比,结果一致。
  5结束语
  随着高性能、低功耗的嵌入式系统的广泛应用,带有安全保密功能的嵌入式系统产品将占有较大市场。本设计将AES加密算法和ARM615处理器相结合,充分体现了两者的优越性,在低制作成本条件下,提高了系统的安全性和运算速度,其实现具有一定的应用价值。
  参考文献
  [1]李晖,李丽香,邵帅.对称密码学及其应用.北京邮电大学出版社,2009年04月.
  [2]吴小博.AES加密算法分析与C++编程实现.计算机安全,2007年12月.
  [3]何明星,林昊.AES算法原理及其实现.2002年5月.
  [4]金丽.基于ARM嵌入式系统的AES加密算法实现.科技信息,2010年12期.
  [5]周立功.ARMCortex-M3开发指南.广州致远电子有限公司.2006年.
  作者简介:
  李莉(1974-),女,汉族,山东青岛人,硕士研究生,副教授,主要从事嵌入式系统及信息安全的研究。

www.fabiaoba.com),是一个专门从事期刊推广期刊发表、投稿辅导、发表期刊的网站。
  本站提供如何投稿辅导、发表期刊,寻求论文刊登合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级论文刊登/国家级论文刊登/ CSSCI核心/医学投稿辅导/职称投稿辅导。

投稿邮箱:fabiaoba365@126.com
 在线咨询: 投稿辅导275774677投稿辅导1003180928
 在线咨询: 投稿辅导610071587投稿辅导1003160816
 联系电话:13775259981

联系方式
李老师QQ:发表吧客服610071587 陈老师QQ:发表吧客服275774677 刘老师QQ:发表吧客服1003160816 张老师QQ:发表吧客服1003180928 联系电话:18796993035 投稿邮箱:fabiaoba365@126.com
期刊鉴别
  • 刊物名称:
  • 检索网站:
热门期刊
发表吧友情提醒

近来发现有些作者论文投稿存在大量剽窃、抄袭行为,“发表吧”对此类存在大量剽窃、抄袭的论文已经停止编辑、推荐。同时我们也提醒您,当您向“发表吧”投稿时请您一定要保证论文的原创性、唯一性,这既是对您自己负责,更是对他人的尊敬。

此类投稿的论文如果发表之后,对您今后的人生和事业将造成很大的麻烦,后果不堪设想,请您一定要慎重,三思而后行。

如因版权问题引起争议或任何其他原因,“发表吧”不承担任何法律责任,侵权法律责任概由剽窃、抄袭者本人承担。

 
QQ在线咨询
陈老师:275774677
张老师:1003180928
李老师:610071587
刘老师:1003160816
论文刊登热线:
137-7525-9981
微信号咨询:
fabiaoba-com

友情链接

申请链接