基于ARM的3DES加密算法实现(1)

安全 数据安全 算法
现代密码学根据密钥类型的不同将加密算法分为对称加密算法和公开密钥加密算法。3DES算法作为对称加密算法的一种,被实践证明是一种安全性非常高的加密算法,受到了广泛的应用。下面本文就来为大家进行详细的介绍。

加密算法主要通过软件和硬件两种方式来实现,软件的实现方式具有灵活方便的优点,同时也具有加密速度受限制的缺点。采用硬件实现加密算法是实际应用中必须要考虑到的问题。目前经常采用硬件FPGA等来实现,该种实验方式具有处理速度快的特点,但是对系统的复杂度要求较高。

嵌入式微处理器具有实现简单,系统集成度高,体积小,易于移植等众多优点,因此有必要研发基于嵌入式微处理器的加密算法硬件设备,在此提出一种基于ARM处理器的3DES的硬件实现方法。

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所示。

[[33999]]

在每一轮加密过程中,函数厂的运算包括以下四个部分:

首先进行密钥序列移位,从移位后的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是实现代换、置换及密钥异或等运算的函数,那么每一轮加密的具体过程为:

[[34000]]

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

[[34001]]

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

[[34002]]

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

[[34003]]

DES算法的密钥长度是56位,三重DES算法的密钥长度是112位,加密强度显著增强,可以很好地应付各种攻击,目前尚没有可行的攻击方法,应用3DES的加密系统具有很大的实用价值。更多参考内容请读者阅读:基于ARM的硬件实现

【编辑推荐】

  1. 详细解析数据加密
  2. 生成和交换预共享密钥
  3. PKI基础内容介绍(1)
  4. 破解你的密码需要多长时间?
  5. 信息安全的核心之密码技术 上
  6. 揭露维基解密窃取机密信息新手段
责任编辑:佚名 来源: 互联网
相关推荐

2011-06-22 11:04:25

加密ARM3DES

2019-08-02 10:43:57

2010-09-08 16:01:33

加密算法协议

2023-07-30 17:44:24

CryptoJS加密字符串

2015-05-11 10:40:08

加密数字图像加密加密算法

2020-05-08 11:13:28

Python数据技术

2009-08-13 18:12:11

C#数据加密

2023-10-16 19:05:20

2009-08-04 11:08:33

ASP.NET数据加密

2012-09-13 09:58:38

2020-12-16 05:46:58

算法加密算法MD5

2021-11-22 23:20:01

加密算法架构

2023-08-02 07:27:53

2014-09-23 09:08:41

2010-09-09 10:06:56

Zigbee协议栈加密算法

2011-10-24 14:16:13

XML加密算法XML加密

2009-08-21 15:02:31

C#加密算法

2011-08-18 12:12:29

2020-05-09 14:20:11

信息安全加密

2016-11-16 15:23:09

点赞
收藏

51CTO技术栈公众号