DES原理分析

DES原理分析

 

数据加密标准(英语:DataEncryption Standard,缩写为 DES)是一对称密钥分组密码算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。目前DES现在已经不是一种安全的加密方法,主要因为它使用的56位密钥过短。1999年1月,distributed.net电子前哨基金会合作,在22小时15分钟内即公开破解了一个DES密钥。在2001年,DES作为一个标准已经被高级加密标准(AES)所取代。另外,DES已经不再作为国家标准科技协会(前国家标准局)的一个标准。关于AES的介绍我将另外写一篇博客。

DES是一种分组密码,它使用使用56位秘钥对64位(8字节)分组进行加密。同时是一种对称密码,即其加密和解密使用相同的秘钥。每个分组的加密分为16轮迭代,每轮是用不同的自秘钥,而子秘钥是根据主密钥k编排得出。下图为DES分组的加密流程图,其中F为Feistel网络,DES的密码学强度就是Feistel网络确保的。

DES加密示意图

       接下来详细描述一下加密细节。对于每一个明文分组(plaintext),先进行初始化置换(IP),在解密结束之后再进行逆初始化置换。所谓的置换和逆置换即是按特定的规则交换字节。


IP置换示意图


IP逆置换示意图

然后将明文分成左右两部分,作为Feistel网络的输入,对于每一轮加密,左半部分为上一轮的右半部分,右半部分为上一轮经过Feistel网络加密过的右半部分和左半部分异或。如下图所示,为Feistel网络的内部结构。

 

              子秘钥的长度为48位,而这里右半部分的长度为32位,因此需要进行扩展,也就是所谓的E盒,扩展示意图如下。

E盒示意图

扩展之后与子秘钥进行异或,作为S盒的输入,S盒一共有八个,因此此时每个S和的输入为6位的数据,而每个S盒的输出就相当于一次查表过程,数据的最高位和最低位对应于查找表的行,中间四位对应于查找表的列,例如100101的最高位和最低位对应的是11,中间四位是0010,因此对应查找表的第四行第三列。而每个查找表的数据是算法确定的。至此Feistel网络实现了右半部分的扩展(E盒)和替换(S盒)。其中S盒是整个加密过程唯一的非线性变换,并且提供了混淆。而E盒则提供了扩散,某些比特位出现在不同的字节里。

这里还有一个问题没有解决,子秘钥是如何生成的。秘钥的生成同样以初始置换开始,然后分成左右两部分,不同的轮进行不同的移位操作,并且进行轮秘钥置换取出其中的48位作为子密钥。秘钥的初始置换和子秘钥生成置换类似于明文的置换操作,这里就不贴上示意图了。以下为每轮秘钥生成的示意图。

子密钥生成

         具体的,秘钥在第1,2,9,16轮左移一位,其余的轮数左移两位,因此对于左右各28位秘钥,一共移动了28位,即加密结束时,秘钥和原来位置吻合。这也为解密埋下了伏笔。

因为Feistel网络所加密的数据并没有真正的保存下来,而是用来与左边的数据进行了异或操作,因此解密操作就是逆序的Feistel网络加密操作。因此解密操作的顺序是先进行第16轮操作,即先在Feistel网络上使用第16轮秘钥,然后15轮,以此类推。以16轮为例,目标是根据16轮的Ld16、Rd16得到L15、R15。首先Ld16即为R15,Rd16是L15和f(R15)的异或,只需要用Rd16与f(R15)异或即可得到L15,即L15两次异或f(R15),而此时R15已知为Ld16,因此只需要使用第十六轮秘钥对R15进行加密即可解密得到L15和R15。至于如何得到轮秘钥,上面已经说过,第十六轮秘钥和初始秘钥顺序一致,因此可以很容易的就解密。至于前面各轮的秘钥,则依赖于后面的秘钥,因此解密操作的速度要比加密稍慢,不过一般可以预计算出每轮的子密钥起到加速解密的作用。

关于DES的安全性讨,由于DES的秘钥长度只有56位,在现有的计算条件下暴力破解已经是一种可行方案,因此已经不再被当做一种推荐对称加密算法使用,取而代之的是AES高级加密标准算法,同时3DES也是一种兼容性替代方案,为的是兼容以前老的实现方案。虽然DES已经不再安全,但是后来的分组对称加密方法或多或少的收到了DES的影响,因此,了解DES的原理对学习分组密码理论有很好的帮助。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值