DIY编程器网

标题: 基于ARM的3DES加密算法实现 [打印本页]

作者: liyf    时间: 2012-1-16 18:42
标题: 基于ARM的3DES加密算法实现

                      引 言
  现代密码学根据密钥类型的不同将加密算法分为对称加密算法和公开密钥加密算法。3DES算法作为对称加密算法的一种,被实践证明是一种安全性非常高的加密算法,受到了广泛的应用。加密算法主要通过软件和硬件两种方式来实现,软件的实现方式具有灵活方便的优点,同时也具有加密速度受限制的缺点。采用硬件实现加密算法是实际应用中必须要考虑到的问题。目前经常采用硬件FPGA等来实现,该种实验方式具有处理速度快的特点,但是对系统的复杂度要求较高。嵌入式微处理器具有实现简单,系统集成度高,体积小,易于移植等众多优点,因此有必要研发基于嵌入式微处理器的加密算法硬件设备,在此提出一种基于ARM处理器的3DES的硬件实现方法。
  1 3DES算法原理
  DES是美国国家标准局颁布的数据加密算法,作为世界范围内的公开加密标准已经使用了20多年。随着计算机处理速度的提高,DES算法面临着一些安全威胁,DES采用56位密钥,曾经有人用穷举搜索法对DES进行过密钥搜索攻击。近年来也有人提出了差分和线性攻击方案,该方案的实施必须有超高速计算机的支持。为了增强DES算法应对差分或线性攻击的可能性,人们提出了一系列改进方案,采用增加密钥长度是一种可行的途径。为了增加密钥的长度,可将分组密码进行级联,在不同的密钥作用下,连续多次对一组明文进行加密。其中,最有效的方法是使用三重DES加密,它可使加密密钥长度扩展到128位,在提高加密强度的同时,足以应付目前的各种攻击。
  DES是一个分组加密算法,它以64位为分组对数据加密。64位的分组明文序列作为加密算法的输入,经过16轮加密得到64位的密文序列。加密的密钥为64位,实际长度为56位,DES算法的保密性取决于密钥。DES对64位的明文分组进行操作。首先通过一个初始置换IP,将64位的明文分成各32位长的左半部分和右半部分,该初始置换只在16轮加密过程进行之前进行一次。在经过初始置换操作后,对得到的64位序列进行16轮加密运算,这些运算被称为函数f,在运算过程中,输入数据与密钥结合。经过16轮运算后,左、右两部分合在一起得到一个64位的输出序列,该序列再经过一个末尾置换IP-1,获得最终的加密结果。过程如图1所示。






  以上操作的详细过程如图2所示。






  解密过程首先使用第一个密钥进行DES解密,然后使用第二个密钥对第一次的结果进行DES加密,最后再使用第一个密钥对第二次的结果进行DES解密。






  2.2 操作系统移植
  该系统建立在嵌入式Linux系统之上,因此首先要移植Linux系统到ARM处理器上。嵌入式Linux是按照嵌入式操作系统要求设计的一种小型操作系统。一由一个内核以及一些根据需要进行定制的系统模块组成。
  要构建运行环境,首先移植BootLoader到嵌入式系统中,通过BootlLoader可以完成对系统板上的主要部件,如CPU,SDRAM,FLAsH、串行口等进行初始化。分配内存空间的映射,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统准备好正确的环境。Linux内核采用了稳定版的linux-2.4.18内核。该系统采用Cramfs文件系统,Cramfs被设计为简单较小的只读可压缩文件系统,因此很适合用作嵌入式的文件系统。可以利用工具软件BusyBox和Mkcramfs制作Cramfs文件系统。做好文件系统后下载到开发板上,可以看到Linux系统运行正常。
  2.3 MiniGUI图形界面显示
  MiniGUI是针对嵌入式设备,跨操作系统的图形界面支持系统,MiniGUI为实时嵌入式操作系统提供了非常完善的图形及用户界面支持。MiniGUI小巧、灵活且对中文的支持性最好。从技术架构上看,MiniGUI包括几个模块:输入抽象层、输出抽象层、消息模块、窗口模块、图形设备接口模块及.MiniGUI组件。
  要想使MiniGUI能在本硬件系统上执行,需要移植MiniGUI到S3C2410开发平台。首先,安装交叉编译链,下载相关资源:libminigui-1.3.4.tar.gz,minigui-res-1.3.3.tar.gz,经过相应的配置和交叉编译后就可以把相应的库拷贝到Cramfs文件系统的目录,重新用Mkcramfs工具制作文件系统。对于应用程序,只需要经过交叉编译后执行可执行程序即可。
  该系统利用MiniGUI图形界面作为3DES的演示输出。消息机制是MiniGUI运行的基础,应用程序通过接收消息与外界交互。消息由系统和应用程序产生,比如创建窗口时系统会产生MSG_CREAT消息,用户在窗口中的各种操作都会产生一系列相应消息。系统采用了逻辑字体输出,建立逻辑字体的函数为Create-LogFont,设置设备hdc实用指定逻辑字体的函数为SelectFont。用TextOut作为输出,部分主函数如下:






  其中调用的show(hdc)是3DES加密算法的具体实现。实验的简单演示结果如图4所示。实验结果表明,该系统可以实现正确的加密和解密功能,因此可以用基于ARM的嵌入式3DES加密系统进行数据加密,保证信息的安全。采用这种嵌入式微处理器的方法实现起来简单,体积小,易于移植到其他系统中,与采用FPGA的方法相比,实现起来灵活,系统复杂度低。
  3 结 语
  在此结合嵌入式系统的特点及3DES加密算法,实现了基于ARM的3DES的加密算法的系统设计,详细阐述了3DES算法原理及加密系统的实现过程,并给出了演示结果。此系统具有方便、灵活、体积小,可定制等特点,因此在实际应用中有一定的参考意义。
            




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2