最新新闻:

南京博芯电子技术有限公司研制的GD02嵌入式系统实验开发平台

时间:2022-04-30 17:00:39来源:网络整理

基于ARM嵌入式系统的AES加密算法实现(图文) 基于ARM嵌入式系统的AES加密算法实现(图文),GD02采用目前流行的ARM7TDMI内核32位嵌入式处理器,在ARMADS1.2 集成开发环境,通过移植COS-II实时操作系统,建立编译AES汇编文件,根据ARM编程特点,高效实现先进的加密标准AES算法。将COS-II移植到ARM处理器上,需要做的工作也很简单。只需要修改三个文件(OS_CPU.H文件、OS_CPU_C.C文件和OS_CPU_A.S文件)和ARM架构相关的文件。即其移植代码结构图如图5所示。 关键词:AES, ARM、COS-II、高级加密1.介绍随着计算机计算能力的飞速发展以及互联网带来的巨大并行计算能力aes算法原理,DES的安全性越来越脆弱。AES 的基本要求是它比三重 DES 更快,并且至少与三重 DES 一样安全,块长度为 128 位,密钥长度为 128、192 和 256 位可选。作为新一代的数据加密标准,AES集安全性强、高性能、高效率、易用性和灵活性等优点于一身。随着信息化、智能化、网络化的发展,嵌入式技术获得了广阔的发展空间。嵌入式系统作为计算机软硬件的综合体,与人们生活的结合越来越紧密。

采用南京博信电子科技有限公司开发的GD02嵌入式系统实验开发平台。GD02采用目前流行的ARM7TDMI内核32位嵌入式处理器。在ARMADS1.2集成开发环境下,通过移植COS-II实时操作系统,构建编译AES汇编文件,根据ARM的编程特点高效实现先进的加密标准AES算法。AES 算法原理 AES 是一种迭代的、对称的密钥分组密码。它可以使用的三个密钥长度对应的加密轮数 Nr 为 10、12、14 和 128 对比特组中的数据进行加密和解密。引入的三个密钥长度是可选的。每轮加密由三层组成:非线性层,由16个S-box并列组成,执行Subbte()操作,起到混淆的作用;线性混合层,执行 ShiftRo() 操作和 Mixolumn() 操作,以确保多轮的高度扩散;密钥加法层,进行AddRoundKe()操作,子密钥简单异或到中间状态。其加解密算法原理流程图如图1所示: 从图中可以看出AES加解密过程,解密是加密的逆过程,所以主要介绍AE加密过程。加密 加密开始时,首先使用 128 位数据包,然后添加子密钥。具体的加密过程用C伪代码表示如下:CipherAddRoundkeAddRoundkeout=stateend 在加密过程中,分别使用了SubBtes()、ShiftRos()、MixColumns。() 和 AddRoundke() 是四个独立的变换,分别处理状态矩阵。

1.1SubBtes() 变换 SubBtes() 变换是S-box 操作,即通过S-box 对每个字节进行非线性操作(如表1 所示)。S-box选择有限域GF中的乘法逆运算。GF 中的乘法(用 表示)是通过消除进位和对 8 次不可约多项式取模来减少多项式的模 2 乘积而获得的。论文。S盒是可逆的,它是通过两步变换得到的:盒的十六进制表示乘以有限域GF位,其中00的倒数就是它本身。纸。使用如下仿射变换):用矩阵形式表示,仿射变换结果如下: 1.2ShiftRos() 变换 ShiftRos() 变换是进行行变换,即 对State矩阵进行移位操作,第一行不变aes算法原理,第二行左移一个位置,第三行左移两个位置,第四行左移三个职位。具体如图2所示:ShiftRos()变换1.3MixColumns()变换MixColumns()操作就是把状态中的每一列看成GF上的多项式乘以固定多项式再取模多项式,根据乘法矩阵的运算 let 可以得到: 所以一列中的四个字节被替换,如图 3 所示: MixColumns() 变换 1.4AddRoundke() 变换 AddRoundKe() 变换是与扩展密钥,即根据加密轮数,

密钥扩展一共产生Nb个双字:算法最初需要一组Nb个双字,然后每一轮操作需要Nb个双字的关键数据。最终的密钥过程共包含 4 个字节的双字。单词的线性数组。3.基于ARM系统的AES加密算法的实现3.1 COS-II操作系统移植与初始化所谓移植就是让实时内核运行在微处理器或微控制器上。COS-II 是一款性能稳定的实时操作系统。它专为嵌入式应用而设计。它的代码大部分是用语言编写的,CPU硬件的相关部分是用汇编语言编写的,总共大约 200 行的汇编语言部分被压缩到最低限度,以便于移植到任何其他 CPU。纸。用户只要有标准的ANSI交叉编译器、汇编器、链接器等软件工具,就可以将COS-II嵌入到开发的产品中。它的特点是内核小、结构清晰、可扩展性好。COS-II其实可以简单的看成是一个多任务调度器,它90%的代码都是用C语言编写的,所以只要有对应的C语言编译器,基本上可以直接移植到特定的C语言上。在处理器上。大部分的移植工作都集中在多任务切换的实现上,因为这部分代码主要是用来保存和恢复处理器场景,所以用C语言做不到,但只能使用特定的处理器汇编语言来完成。将COS-II移植到ARM处理器上,需要做的工作也很简单,只需要修改三个文件(OS_CPU.H文件、OS_CPU_C.C文件和OS_CPU_A.S文件)和ARM相关的文件架构,即其移植代码结构图如图5所示。

COS-II操作系统初始化的主要代码在C语言编写的main函数中。main 函数是第一个从程序集中跳转到 C 代码的函数。它首先通过固件函数初始化(FirmInit)SEP3203芯片,主要完成PMU的初始化和中断。然后调用OSInit完成操作系统的初始化,最后用OSStart启动操作系统。移植代码结构图3.2AES加密算法实现AES加密AESEnrpt汇编源程序结构如下:AREAAESEnrpt,CODE,READONLY定义代码段ENTRY程序入口STARTMOVR0,#0;LDRR1,=状态;取状态地址 LDRR2 , =Temp; 取中间变量 BLRoundfun 调用轮函数 MOVPC,lr 子程序返回 END 程序结束。上述汇编器中,其参数的传递是通过数据栈传递的,中间加密轮函数的调用步骤如下: BLKeExpansion进行Key扩展;BLAddRoundke 与扩展密钥异或,实现子密钥相加;采用

声明:文章仅代表原作者观点,不代表本站立场;如有侵权、违规,可直接反馈本站,我们将会作修改或删除处理。

猜您喜欢

图文推荐

热点排行

精彩文章

热门推荐