关 闭

新闻中心

EEPW首页 > 安全与国防 > 设计应用 > 在ARM微处理器上实现Rijndael加密算法

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

——
作者: 时间:2006-06-09 来源: 收藏

引 言
    2000年10月2日,美国国家标准局NIST宣布,比利时密码学家Joat Daemen和Vincent Rijmen设计的“RijndaeI算法”以安全性好、运算速度快、存储要求低、灵活性强最终当选AES。该算法对目前的各种威胁是免疫的。这标志着信息技术有了新的安全工具,为计算机网络和电子商务的发展提供了强有力的保障。
    在当前数字信息技术和网络技术高速发展的后PC时代,技术已经广泛地渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术以及人们的日常生活等方方面面中,成为目前最热门的技术之一。
    本文使用北京博创兴业科技有限公司研制的UP-NETARM300嵌入式开发板,在ARM SDT 2.51集成开发环境下,建立基于μC/OS-Il操作系统的工程文件,分别调用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 (State, CipherKey)  {

KeyExpansion (CipherKey, ExpandKey);  //密钥扩展

AddRoundKey (State, RoundKey);  //轮密钥加

For (i=1;i<Nr;i++)  

Round (State, ExpandKey+4*i);  //轮变换

FinalRound (State, ExpandKey+4 * Nr);  //最后一轮变换}

Round (State, RoundKey){  //轮变换

SubByte (State);  //字节代换

ShiftRow(State);  //行移位

MixColumn(State);  //列混淆

AddRoundKey(State, RoundKey);  轮密钥加

FinalRound(State, RoundKey) {  //最后一轮变换

SubByte(State);

ShiftRow(State);

AddRoundKey(State,RoundKey); 
1. 2算法所使用的主要变换
(1)字节代换SubByte
    用一个简单的查表操作代替了基于矩阵乘法的复杂仿射变换。Rijndael定义了一个16



评论


相关推荐

技术专区

关闭