欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

基于ARM嵌入式系统的AES加密算法实现(图文)

时间:2011-04-24  作者:秩名

论文导读:本文使用的是南京博芯电子技术有限公司研制的GD02嵌入式系统实验开发平台,GD02采用当前流行的ARM7TDMI核32位嵌入式处理器,在ARMADS1.2集成开发环境下,通过移植μC/OS-II实时操作系统,建立并编译AES汇编文件,根据ARM的编程特点,高效的实现了高级加密标准AES算法。将µC/OS-II移植到ARM处理器上,需要完成的工作也非常简单,只需要修改三个(OS_CPU.H文件、OS_CPU_C.C文件和OS_CPU_A.S文件)和ARM体系结构相关的文件即可,即它的移植代码结构图如图5所示。
关键词:AES,ARM,μC/OS-II,高级加密
 

1.引言

随着计算机运算能力的飞速发展,以及互联网所带来的巨大并行计算能力,DES的安全性日显脆弱。AES的基本要求是比三重DES快且至少与三重DES一样安全,分组长度为128比特,密钥长度为128,192和256比特可选。AES作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点[1]。

随着信息化、智能化、网络化的发展,嵌入式技术得到了广泛的发展空间,嵌入式系统作为计算机硬件和软件的综合体,它的技术开发和人们的生活越来越紧密结合,所以嵌入式系统的信息安全性显得尤为重要。本文使用的是南京博芯电子技术有限公司研制的GD02嵌入式系统实验开发平台,GD02采用当前流行的ARM7TDMI核32位嵌入式处理器, 在ARM ADS1.2集成开发环境下,通过移植μC/OS-II实时操作系统,建立并编译AES汇编文件,根据ARM的编程特点,高效的实现了高级加密标准AES算法。

2.AES算法原理

AES 是一个迭代的、对称密钥分组的密码,它可以使用的三种密钥长度对应的加密轮数Nr分别为10、12、14,并且用 128 位分组加密和解密数据[3]。本文介绍的密钥长度三种都可选。加密的每一轮由三层组成:非线性层,由16个S-盒并置而成,进行Subbyte()运算,起到混淆的作用;线性混合层,进行ShiftRow()运算和Mixcolumn()运算,确保多轮之上的高度扩散;密钥加层,进行AddRoundKey()运算,子密钥简单的异或到中间状态上[2]。其加密和解密算法原理流程图如图1所示:

图1 AES加密和解密流程

由图可知,解密是加密的逆过程,所以本文主要介绍AE加密过程。

2.1加密

在加密初始,首先用128位数据分组,然后进行子密钥加,具体加密流程的用C伪码表示如下:

Cipher(bytein[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])

begin

byte state[4,Nb]

state=in

AddRoundkey(state,w[0,Nb-1])

for round=1 step 1to Nr-1

SubBytes(state)

ShiftRows(state)

MixColumns(state)

AddRoundkey(state,w[round*Nb, (round+1 )*Nb-1])

enf for

SubBytes(state)

ShiftRows(state)

AddRoundkey(stae,w[Nr*Nb,(Nr+1)*Nb-1])

out=state

end

在加密流程中,分别运用了SubBytes() 、ShiftRows()、 MixColumns()和AddRoundkey()等四个独立的变换,对状态矩阵进行了处理。

2.1.1SubBytes()变换

SubBytes()变换即S-盒运算,是将每个字节通过S-盒(如表1所示)做非线性运算。S-盒选取的是有限域GF(28)中的乘法逆运算。GF(28)中的乘法(以表示)是多项式的模2乘积通过免去进位,再模一个次数为8的不可约多项式约化得到。免费论文。S-盒是可逆转的,它通过两步变换得到:

表1 S盒的十六进制表示

(1)在有限域GF位中求得乘逆,其中‘00’的逆就是它本身。免费论文。

(2)运用下面的仿射变换(GF(2)中):

用矩阵形式表示,仿射变换结果如下:

=+

2.1.2ShiftRows()变换

ShiftRows()变换是进行行变换,即对State矩阵进行移位操作,第一行不变,第二行循环左移一位,第三行循环左移两位,第四行循环左移三位。具体如下图2表示:

图2 ShiftRows()变换

2.1.3MixColumns()变换

MixColumns()运算是把状态中的每一列看作GF(2 8)上的多项式与一固定多项式相乘然后模多项式,根据矩阵的乘法运算,设,可得到:

因此一列中的四个字节替换如图3所示:

图3 MixColumns()变换

2.1.4AddRoundkey()变换

AddRoundKey()变换是与扩展密钥的异或运算,即根据加密的轮数用相应的扩展密钥的四个数据项和中间状态矩阵上的列进行按位异或:

具体如图4所示:

图4 AddRoundKey()变换

2.2密钥扩展KeyExpansion

密钥扩展算法首先利用初始密钥产生出加密所需要的所有密钥,然后对该密钥序列中的除第一个和最后一个字外的密钥字进行逆列混合处理,得到解密过程所需要的所有密钥。

密钥扩展总共产生Nb(Nr + 1)个双字:算法初始需要一个Nb个双字的集合,接着每个轮操作都需要Nb个双字的密钥数据,最终的密钥流程共包含了一个4字节双字的线性数组w[i]。

3.基于ARM系统的AES加密算法的实现

3.1μC/OS-II操作系统的移植及初始化

所谓移植,就是使一个实时内核能在微处理器或微控制器上运行。μC/OS-II是一种免费但性能稳定的实时操作系统,它是为嵌入式应用而设计的,它的绝大部分代码是用C语言编写的,CPU硬件相关部分是用汇编语言编写的,总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU上。免费论文。用户只要有标准的ANSI 的C交叉编译器[4],有汇编器、连接器等软件工具,就可以将µC/OS-II嵌人到开发的产品中。它的特点是内核微小,结构清晰,具有良好的扩展性[5]。

µC/OS-II实际上可以简单地看作是一个多任务的调度器,它的90%的代码都是用C语言写的,所以只要有相应的C语言编译器,基本上就可以直接移植到特定处理器上。移植工作的绝大部分都集中在多任务切换的实现上,因为这部分代码主要是用来保存和恢复处理器现场,因此不能用C语言,只能使用特定的处理器汇编语言完成。将µC/OS-II移植到ARM 处理器上,需要完成的工作也非常简单,只需要修改三个(OS_CPU.H文件、OS_CPU_C.C文件和OS_CPU_A.S文件)和ARM 体系结构相关的文件即可,即它的移植代码结构图如图5所示。

µC/OS-II操作系统的初始化的主要代码都在C语言编写的main()函数里。main函数是从汇编跳入C代码中的第一个函数,它首先通过固件函数初始化(FirmInit)SEP3203芯片,主要完成PMU和中断的初始化。然后调用OSInit用以完成操作系统的初始化工作,最后以OSStart 开始操作系统运行。

图5 移植代码结构图

3.2AES加密算法实现

AES的加密实现的AESEncrypt汇编源程序结构如下:

AREA AESEncrypt,CODE, READONLY

定义代码段

ENTRY 程序入口

START

MOVR0,#0;

LDRR1,=State; 取状态地址

LDRR2,=Temp;取中间变量

BL Roundfun

………………调用轮函数

MOVPC,lr从子程序中返回

END程序结束

在上述汇编程序中,其参数的传递是通过数据栈[6]来传递的,中间加密轮函数的调用步骤如下:

①BL KeyExpansion――进行密钥扩展;

②BLAddRoundkey ――与扩展密钥进行异或,实现子密钥加;

③用循环语句Loop_ii=0 to 9 ――中间循环9次轮变化;

S盒变换时调用子程序SubByte,进行字节替换;行变换时调用子程序ShiftRow;列变换时调用子程序MixColumn,进行列混淆;调用子程序AddRoundkey,进行密钥加;

④最后一次轮变换中,进行了S盒变换、行变换和子密钥加。分别调用了以下程序。

BL SubByte

BL ShiftRow

BL AddRoundkey

4.结论

本文提出的AES算法是在ARM主频率为75MHz的嵌入式上实现的,实验结果表明,AES-128、AES-192和AES-256数据吞吐率分别为192.5Mbit/s、162.9Mbit/s和141.5Mbit/s,这比完全C程序进行加密的数据吞吐率要高。由此可知,运用ARM汇编来加解密AES效率高,速度快。随着嵌入式系统的日益广泛应用,基于ARM嵌入式系统的AES算法实现具有一定的应用价值。


参考文献
[1]J.Nechvatal,et.al,Report on the Development of the AdvancedEncryption
Standard(AES)[J],Journal of Research of
the National Institute of Standards and
Technology,v.106,Num3,May-June2001:11-577
[2]WilliamStallings.刘玉珍,王丽娜,傅建明等译.密码编码学与网络安全:原理与实践[M],第3版.北京:电子工业出版社,2004
[3]Joan Daemen,Vincent Rijmen著;谷大武,徐胜波译. 高级加密标准(AES)算法――Rijndael的设计[M]. 北京:清华大学出版社,2003
[4]杜春雷编著.ARM体系结构与编程[M].北京:清华大学出版社,2003
[5]王晓鸣,王树新,张宏伟.实时操作系统µC/OS-II在ARM上的移植[M].天津大学机械工程学院. 2007
[6]时龙兴,凌明,王学香编著.基于SEP3203微处理器的应用开发[M],北京:电子工业出版社,2006
 

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:基于ajax的IETM动态目录树的设计与实现
下一篇论文:基于AT89C52自行车里程/速度计的设计和制作(图文)
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
最新计算机论文
读者推荐的计算机论文