logo资料库

基于ARM嵌入式系统的AES加密算法实现.pdf

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
科技信息 博 士 ·专 家论 坛 基 于 ARM 嵌 八 式 系 统 昀 AES加 峦 簧 法 实 坝 南通 大 学江 苏省专 用 集成 电路设 计 重点 实验 室 金 丽 [摘 要 ]文章 阐述 了 AES算法 的原理 ,使 用 了基 于 AP,dVI7的 SEP3203嵌入 式 系统 实验平 台 ,在 ARaM ADS集成开发环境 下 ,移植 ~C/OS-II实时 操 作 系统 ,建 立 并 编 译 AESEncrypt汇 编 文 件 ,对 轮 函数 采 用子 程 序 调 用 方 法 ,在 嵌 入 式 系统 上 高 效 的 实现 了 高级 加 密标 准 AES算 法。 [关键词 ]AES ARdM btC/OS-II 高级加 密 1.引言 随着 计算机运算 能力 的飞速发展 ,以及互 联网所带来 的巨大并行 计算能力 ,DES的安全性 日显脆弱 。AES的基本要求 是比三重 DES快 且至少与 三重 DES一样安 全 ,分组 长度为 128比特 ,密 钥长度 为 128、 192和 256比特可选 。AES作 为新一代 的数据 加密标 准汇聚 了强 安全 性 、高性能 、高效率 、易用和灵活等优点”1。 随着信息化 、智能化 、网络化 的发 展 ,嵌入式 技术得到 了广泛 的发 展空间 ,嵌入式系统作为计 算机硬件 和软件 的综合体 ,它 的技术 开发和 人们的生活越来越紧密结合 ,所 以嵌入式 系统的信息安全性显 得尤为 重要 。本文使用 的是南 京博芯 电子技术有 限公司研制 的 GD02嵌 入式 系统实验开 发平 台 ,GDO2采用 当前 流行的 ARM7TDMI核 32位嵌 入式 处理器,在 ARM ADSI.2集成开发 环境下 ,通过 移植 ~C/OS—II实时操 作 系统 ,建立并编译 AES汇编 文件 ,根据 ARM 的编程特 点 ,高效 的实 现 了高 级 加 密 标 准 AES算 法 。 2.AES算 法 原 理 AES是一个迭代的 、对称密钥分组 的密码 ,它可 以使用 的三种密钥 长度对应 的加密 轮数 Nr分 别为 1O、l2、l4,并且用 128位分 组加密和解 密数据 。本文介绍的密钥长度三种都可选 。加密 的每一轮 由三层组成 : 非线性层 ,由 16个 s一盒并置而成 ,进行 Subbyte()运算 ,起 到混淆 的作 用 ;线性混合 层 ,进行 ShiftRow()运算 和 Mixcolumn()运算 ,确保 多轮之 上 的高度 扩散 ;密钥 加层 ,进行 AddRoundKey()运算 ,子密 钥简单 的异 或到 中间状态上[21。其加密和解密算法原理流程 图如 图 1所示 : 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(2s)中的乘法逆运算 。GF(2~ 中的乘法 (以·表示 )是多项式 的模 2乘 积通过免去进位 ,再模~个次数 为 8的不可约 多项式约化得到 。s一盒 是可逆转的 ,它通 过两步变换得 蛰l: 表 l S盒 的 十 六进 制 表示 0 l 2 3 4 S 6 1 日 9 a b C d l 0 f 63 70 7"/ 7b f2 6b 6f c5 30 O1 67 21> fe d7 ab 16 1 82 c9 7d fa 59 ●7 f0 dd a o i4 12 c0 2 b7 fd 93 26 36 3f f7 。c 34 a5 e 5 fl 71 8_8 31 15 3 O4 o7 23 03 l8 96 05 旦a 07 12 80 e2 eb 27 地 75 4 09 83 2a la U) 6e 5a a0 52 3b d 6 b3 29 e3 2f 84 5 53 dl DO eft 2O f0 b1 6a ob b e 3, ta 10 5B cf 6 do ef n £b 43 4d 33 85 45 £9 02 7f 50 3O 9f a8 7 51 a3 l0 Bf 92 9d 39 fS b0 b6 da 21 t0 £f f3 8 cd O0 13 eC 5f 97 ●4 17 o4 a7 7e 3d 64 5d 19 73 g 60 Bi 4f do 29 2a 90 88 I6 0e b B 1^ d- 5e 她 ‘如 a eO 32 3a Oa 4, 06 24 5a a2 d3 a0 62 ’1 95 e4 19 b e7 ce 31 6d 8d d5 ae a9 6o S6 f4 ea 65 7a ae O8 o ba 78 2S 29 lo a6 M 06 08 dd 7l 1f 4b bd 8b 8a d T0 3e b5 66 48 03 f6 0e 61 35 57 b, B6 01 1d ,e e el fB 9日 ll 69 d9 8e 94 9b 1e 87 e’ Ce 55 2B df f 8a al B9 Od bf e6 ●2 68 41 99 2d 0f b0 54 bb 16 (1)在有限域 GF位中求得乘逆 ,其中 ‘0o’的逆 就是 它本身 。 (2)运用下 面的仿射变换(GF(2)中): :b。① ① ① 脚 ① +枷 ①c 图 1 AES加 密 和 解 密 流 程 由图可知 ,解 密是加 密的逆过程 ,所 以本文 主要介绍 AE加密过 程 。 2.1加 密 在加密 初始 ,首先用 128位数据分 组 ,然后进 行子密钥 加 ,具 体加 密 流 程 的 用 c伪 码 表示 如 下 : Cipher(byte in『4 Nb], byte out[4 Nb],word w[Nb (Nr+1)】) begin byte state[4,Nb】 state=in AddRoundkey(state,Wfo,Nb-l1) for round=l step 1 toNr一1 SubBytes(state) ShiftRows(state) MixColumns(state) AddRoundkey(state,w[round Nb,(round+1) Nb-1]) enffor l 0 0 O 用矩阵形式表示 ,仿射变换结果如下 : Ib0’I l 1 1 1 1 1 {b1’{10 1 1 1 1 lb2’l}0 0 1 1 1 fb3’J f0 0 0 1 l I 1 I 1 0 0 0 1 J ’J J 1 1 0 0 0 1 l I 1 1 1 0 0 【b ’J l1 1 1 1 0 2.1.2ShiftRows()变 换 1 1 1 1 1 l 1 1 + O l O O S叫 S 是 Su SIj Su Sl I Sl】 , S¨ S蜘 [=!!望 !! S∞ su l S3j 图 2 ShiftRows()变 换 ShiftRows()变换是进行行变换 ,即对 State矩 阵进行移位操作 ,第一 行不变 ,第二行循 环左 移一位 ,第 三行循环左移 两位 ,第 四行循 环左移 三 位 。 具 体 如 图 2所 示 。 2.1.3MixColumns()变换 基金项 目:本文 系南通 大学 自然科 学基金项 目(08Z067 o 作者简介 :金 丽(1978一),女 ,江 苏南通人 ,南通大 学专用集成 电路设计 重点 实验 室教师 ,硕士 ,讲师 ,主要研究方向为嵌入式软件、信息安全。 一 1 一 ,
科技信息 博士 ·专家论坛 MixColumns()运算是把状态 中的每一列看作 GF(2S)]2的多项式与 一 固定多项式 a(x)={03}x (O1lx {0l}x+l02)相乘然后模多项式 x4+1 根 据矩阵的乘法运算 ,设 s‘(x】=:a(x)①s(x),可得到 : s’q ({02). 0({o3}.st ①s ④s s。一产s ({021.s· 0(1o3l·s ①s s’ sq ④s- ({o2}.8 ①({O3}.s s‘ (1031.8 0st ①s ①(f02J·s 因此一列中的四个字节替换如图 3所示 : 图 3 MixColumns()变 换 2.1.4AddRoundkey()变换 AddRoundKey()变 换是与扩展 密钥的异或运 算 ,即根据加密 的轮 数用相应 的扩展密钥的四个数据项 和中间状态矩阵上的列进行按位异 或 : 【s’ s’l s’轴s’ =【 s-ps s 0 w 】 具体如图 4所示 : So+ S¨ S S∞ Sl‘ ——, — 一 一 SLo 0 Slj S2 S如 S” S s3 Slo ■■_ S S” I —— \ \ \ S S’ s'o 3 、s S’__1 S+I.j 2 +] S。h S‘2 0 2 s|2j 一 S。l0 s._‘ sI SS '■ _ 图 4 AddRoundKey()变 换 2.2密钥扩展 KeyExpansion 密钥扩展算 法首先利用初始密钥产生 出加密所需要 的所有密钥 , 然后对该密钥序列中的除第一个和最后一个字外的密钥字进行逆列 混 合处理 。得到解密过程所需要的所 有密钥 。 密钥扩展 总共产 生 Nb(Nr+1)个双字 :算 法初始需要 一个 Nb个双 字 的集合 ,接着每个轮操作都需要 Nb个 双字的密钥数据 ,最终的密钥 流程共包含了一个 4字节双字 的线性数组 w【i】。 3.基 于 ARM 系统的 AES加密算法的实现 3.1~CAOS—II操 作 系 统 的 移植 及 初 始 化 所谓移植 ,就是使一个 实时内核能在微处理器或微控制器上运行。 p~JOS-I I是一种免 费但性能稳定 的实时操作系统 ,它是为嵌入式应用 而设计的,它 的绝大部分代码是用 c语言编写的 ,CPU硬件相关部分是 用汇编语言编写的 ,总量约 200行 的汇编语言部分被压缩到最低限度 , 为的是便 于移植 到任何 一种其 它的 CPU上 。用户 只要有 标准的 ANSI 的 C交叉编译器lq,有汇编器 、连接器等软件工 具 ,就可 以将 tLC/OS—II 嵌人 到开发的产品中。它 的特点是 内核微小 ,结构清晰 ,具有 良好 的扩 展 性 日。 t~C/OS—II实 际上 可 以简单 地看作是 一个多任 务的调度 器 ,它 的 90%的代码都是用 c语言写 的,所 以只要有相应的 c语 言编译器 ,基本 上就可以直接移植 到特定处理器上。移植工作 的绝大部分都集 中在多 任务切换的实现上 ,因为这部分代码主要是用来保存 和恢复处理器现 场 ,因此 不能用 c语言 ,只能使用特定 的处理器 汇编语言完 成。将 p.C/OS—II移 植 到 ARM 处 理 器 上 ,需 要 完 成 的工 作 也 非 常 简 单 ,只 需 要 修改三个 (os_CPU.H文件 、OS_CPU—C.C文件和 OS—CPU—A.S文件 )和 ARM体 系结构相关的文件 即可 ,即它的移植代码结构图如图 5所示。 C/OS—II操作系统的初始化 的主要代码都在 c语 言编写的 main 0i$i数里。main函数是从汇编跳人 c代码 中的第一个函数 ,它首先通过 固件函数初始化(FimInit)SEP3203芯片 ,主要完成 PMU和中断的初始 化。然后调用 OSInit用以完成操作系统的初始化工作 ,最后 以 OSStart 图 5移植代码结构图 3.2AES加密算法实现 AES的加密实现的 AESEncrypt汇编源程序结构如下: AREA AESEnerypt,CODE,READONLY 定义代码段 ENTRY 程 序 人 口 START MOV R0,# 0; LDR R1,=State;取 状 态地 址 LDR R2,=Temp;取 中间 变 量 BL Roundfun … … … … … … MOV PC,lr 调 用 轮 函 数 从子程序 中返回 程 序 结 束 END 在上述 汇编程序中 ,其参数 的传 递是通过数据栈 来传递 的 ,中间 加密轮 函数的调用步骤如下 : ①BL KeyExpansion—— 进行密钥扩展 ; ②BL AddRoundkey——与扩展密钥进行异或 ,实现子密钥加 ; ③用循环语句 Loop_]i=0to9—— 中间循环 9次轮变化 ; s盒变换 时调用子程序 SubByte,进行字节替换 ;行变换时调用子程 序 ShifiRow;列变换时调用子程序 MkCdumn,进行列混淆 ;调用于程序 AddRoundkey,进行密钥加 ; ④最后一次轮变换中 ,进行 了 s盒变换 、行变换和子密钥加 。分别 调用了以下程序 。 BL SubByte BI.ShiftRow BL AddRoundkey 4.结 论 本文提 出的 AES算法是在 ARM主频率为 75MHz的嵌入式上实现 的,实验结果表明,AES一128、AES一192和 AES一256数据吞吐率分别为 192.5Mbi~、162.9Mbi~ 和 141.5Mbit/s,这 比完全 c程序进行加密的数 据吞吐率要高 。由此可知 ,运用 ARM汇编来加解 密 AES效率 高 ,速度 快 。随着嵌入式系统的 日益广泛应用 ,基于 ARM嵌入式 系统的 AES算 法实现具有一定 的应用价值 。 参 考 文 献 I 1 lI.Nechvatal,et.al,Report Oil the Development of the Advanced En- crypt'ion Standard (AES)I I J Journal of Research of the Nadonal Imtitute of Standards and Technology,v.106,Num3,M ay-June2001:11-577 [2]winiamStallings.刘 玉珍,王 丽娜,傅 建明等译.密码编码 学与 网络 安全:原理 与实践[M].第 3版.北京:电子 工业 出版社。2004 [3 Joan Daemen,Vincent R~men著 .谷 大武 ,徐胜 波译 .高级 加 密标 准(AES)算法——Rjjndael的设计[M ].北京 :清华大学出版社,2003 [4]杜 春雷编 著.ARM 体 系结构与编程 [M].北京 :清华大 学 出版 社 .2003 [5]王晓呜 ,王树新 ,张宏伟.实时操作 系统 C/OS-II在 ARM 上 的移植[M].天津大学机械 工程 学院,2007 [6]时龙兴 ,凌明 ,王学香编著.基 于 SEP3203微 处理 器的应 用开发 开始 操 作 系 统 运 行 。 [M].北京 :电子工业出版社 ,2006
分享到:
收藏