linux 3des加密工具,基于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所示。

164eb5ca4bc737d1f44efb13e440d7db.png

在每一轮加密过程中,函数厂的运算包括以下四个部分:首先进行密钥序列移位,从移位后的56位密钥序列中选出48位;然后通过一个扩展置换将输入序列32位的右半部分扩展成48位,再与48位的轮密钥进行异或运算;再者通过8个s盒将异或运算后获得的48位序列替代成一个32位序列;最后对32位序列应用置换P进行置换变换,得到-厂的32位输出序列。将函数厂的输出与输入序列的左半部分进行异或运算后的结果作为新一轮加密过程输入序列的右半部分,当前输入序列的右半部分作为新一轮加密过程输入序列的左半部分。上述过程重复操作16次,便实现了DES的16轮加密运算。

假设Bi是第i轮计算的结果,则Bi为一个64位的序列,Li和Ri分别是Bi的左半部分和右半部分,Ki是第i轮的48位密钥,且f是实现代换、置换及密钥异或等运算的函数,那么每一轮加密的具体过程为:

dc9b07bbe51079c023415a973c49789f.png

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

ac0f0fab70d742fd9a648c4b2c4877b8.png[page]

在3DES加密算法中,加密过程用两个不同的密钥K1和K2对一个分组消息进行三次DES加密。首先使用第一个密钥进行DES加密,然后使用第二个密钥对第一次的结果进行DES解密,最后使用第一个密钥对第二次的结果进行DES加密。

64ac8a0d059f50ed803514291d9dba98.png

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

b2362c8d4f5bbccef9ffed89121c246e.png

DES算法的密钥长度是56位,三重DES算法的密钥长度是112位,加密强度显著增强,可以很好地应付各种攻击,目前尚没有可行的攻击方法,应用3DES的加密系统具有很大的实用价值。

2 基于ARM的硬件实现根据满足3DES算法和一般嵌入式应用的需求,在此设计了一个基于ARM微处理器的嵌入式系统。以三星S3C2410处理器作为系统的核心,用嵌入式Linux作为操作系统。加密的数据可以存放于NAND FLASH等存储介质上,加密后的结果可以通过液晶屏直观地显示出来,实现用户交互。在此设计过程中,难点是图形显示与加密函数的实现。这里通过移植MiniGUI,并在其上开发显示程序,完成了两者之间的联系,实验结果给出了3DES算法的演示效果。整个系统的具体实现如下。

2.1 系统设计框图

系统的核心部分是ARM微处理器,由ARM微处理器和其他一些功能单元构成了完整的嵌入式系统。这里的ARM微处理器选为基于ARM920T核心的S3C2410处理器芯片,其工作频率最高达200 MHz;外围包括64 MB的NAND FLASH和64 MB的RAM、键盘接口、串口、CPLD译码单元、网络单元、语音单元、LCD及触摸屏等。上述部件共同构建了嵌入式系统的硬件平台。系统核心框架如图3所示。

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作为输出,部分主函数如下:

c6f632bbe89d8b38922b25af4e80e167.png

721b64d02eb1391a1568027c1d3c236a.png

其中调用的show(hdc)是3DES加密算法的具体实现。实验的简单演示结果如图4所示。实验结果表明,该系统可以实现正确的加密和解密功能,因此可以用基于ARM的嵌入式3DES加密系统进行数据加密,保证信息的安全。采用这种嵌入式微处理器的方法实现起来简单,体积小,易于移植到其他系统中,与采用FPGA的方法相比,实现起来灵活,系统复杂度低。

75529f7f32652e455b8379c79c0bf2a2.png

3 结 语

在此结合嵌入式系统的特点及3DES加密算法,实现了基于ARM的3DES的加密算法的系统设计,详细阐述了3DES算法原理及加密系统的实现过程,并给出了演示结果。此系统具有方便、灵活、体积小,可定制等特点,因此在实际应用中有一定的参考意义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值