用户中心

资讯 > 嵌入式系统

在ARM微处理器上实现Rijndael加密算法

来源:IT控制网2006.06.13阅读 3375

      引 言
    2000年10月2日,美国国家标准局NIST宣布,比利时密码学家Joat Daemen和Vincent Rijmen设计的“RijndaeI算法”以安全性好、运算速度快、存储要求低、灵活性强最终当选AES。该算法对目前的各种威胁是免疫的。这标志着信息技术有了新的安全工具,为计算机网络和电子商务的发展提供了强有力的保障。


    在当前数字信息技术和网络技术高速发展的后PC时代,嵌入式系统技术已经广泛地渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术以及人们的日常生活等方方面面中,成为目前最热门的技术之一。


    本文使用北京博创兴业科技有限公司研制的UP-NETARM300嵌入式开发板,在ARM SDT 2.51集成开发环境下,建立基于μC/OS-Il操作系统的工程文件CONTROL ENGINEERING China版权所有,分别调用ARM汇编程序和C程序在嵌入式微处理器上实现了Rijndael算法,并比较了两者的效率。下面以分组长度和

密钥长度都是128位为例,介绍调用ARM汇编程序实现加密算法的过程。本实现算法可以将密钥长度扩展
到192位或256位。

     1 Rijndael加密算法简介
     1.1 算法流程结构
    Rijndael加密算法的128位输入分组用以字节为单位的正方形矩阵描述。该数组被复制到State数组。加密过程分为四个阶段:密钥扩展、轮密钥加、Nr-1(对应128、192、256位密钥长度,Nr分别为10、12、14)轮变换及最后一轮变换。轮变换包括字节代换、行移位、列混淆和轮密钥加四个过程,最后一轮变换包括字节代换、行移位和轮密钥加三个过程。用伪C代码表示如下:
Rijndael (Statewww.cechina.cn, CipherKey)  {
KeyExpansion (CipherKey, ExpandKey);  //密钥扩展
AddRoundKey (Statewww.cechina.cn, RoundKey);  //轮密钥加
For (i=1;i<Nr;i++) 
Round (Statewww.cechina.cn, ExpandKey+4*i);  //轮变换
FinalRound (Statewww.cechina.cn, ExpandKey+4 * Nr);  //最后一轮变换}
Round (Statewww.cechina.cn, RoundKey){  //轮变换
SubByte (State);  //字节代换
ShiftRow(State);  //行移位
MixColumn(State);  //列混淆
AddRoundKey(Statewww.cechina.cn, RoundKey);  轮密钥加
FinalRound(Statewww.cechina.cn, RoundKey) {  //最后一轮变换
SubByte(State);
ShiftRow(State);
AddRoundKey(Statewww.cechina.cn,RoundKey);


     1. 2算法所使用的主要变换
     (1)字节代换SubByte
    用一个简单的查表操作代替了基于矩阵乘法的复杂仿射变换。Rijndael定义了一个16×16字节的S盒矩阵控制工程网版权所有,包含8位值所能表达的256种可能的变换。把Statc中每个字节的高4位作为行值www.cechina.cn,低4位作为列值,取出S盒中对应行列的元素作为新的字节输出。


    行移位变换ShiftRow:State的第一行保持不变,第2、3、4行分别循环左移1、2、3个字节。


     (2)列混淆变换MixColumn
    可表示为如下基于系数矩阵CoefMix与State的矩阵乘法:

点击看原图乘积矩阵中的每个元素S'ij是系数矩阵中一行元素CoefMix[ik]与State矩阵中对应一列元素State[kj]的乘积之和这里的加法与乘法都…

点击看原图


 
    乘积矩阵中的每个元素S'i,j是系数矩阵中一行元素CoefMix[i,k]与State矩阵中对应一列元素State[kwww.cechina.cn,j]的乘积之和。这里的加法与乘法都定义在有限域GF(28)上:加法即按位异或操作,乘法遵循GF(28)上的多项式乘法规则。


    (3)密钥扩展KeyExpanxsion
    以4个字密钥为输入,生成44字扩展密钥数组ω[44],为初始轮密钥加阶段和后面10






























版权声明:版权归控制工程网所有,转载请注明出处!

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688