×

详解DES加密算法原理
  

一般社员 923

{{ttag.title}}
1、什么是DES

DES(Data Encryption Standard)是一种对称加密算法。它是在20世纪70年代初期由IBM研发的。它的设计目标是提供高度的数据安全性和性能,并且能够在各种硬件和软件平台上实现。

2、DES的基本概念

DES使用56位的密钥和64位的明文块进行加密。DES算法的分组大小是64位,因此,如果需要加密的明文长度不足64位,需要进行填充;如果明文长度超过64位,则需要使用分组模式进行分组加密
虽然DES算法的分组大小是64位,但是由于DES算法的密钥长度只有56位,因此DES算法存在着弱点,容易受到暴力破解和差分攻击等攻击手段的威胁。因此,在实际应用中,DES算法已经不再被广泛使用,而被更加安全的算法所取代,如AES算法等。
尽管DES已经被取代,但它在密码学的历史上仍然具有重要意义。通过DES可以帮助我们了解对称密钥加密算法的基本概念和运作原理。

3、DES的加密流程

当输入了一条64位的数据之后,DES将通过以下步骤进行加密。在第4部分中,我们对每个流程进行详解。

  • 1、初始置换(IP置换):将输入的64位明文块进行置换和重新排列,生成新的64位数据块。

  • 2、加密轮次:DES加密算法共有16个轮次,每个轮次都包括四个步骤:


      a. 将64位数据块分为左右两个32位块。

      b. 右侧32位块作为输入,经过扩展、异或、置换等操作生成一个48位的数据块。这个48位的数据块被称为“轮密钥”,它是根据加密算法的主密钥生成的子密钥。

      c. 将左侧32位块和轮密钥进行异或运算,结果作为新的右侧32位块。

      d. 将右侧32位块与原来的左侧32位块进行连接,生成一个新的64位数据块,作为下一轮的输入。

  • 3 末置换(FP置换):在最后一个轮次完成后,将经过加密的数据块进行置换和重新排列,得到加密后的64位密文。


总的来说,DES加密的过程就是通过一系列置换、异或、扩展等运算,将明文分成若干个小块,然后根据主密钥生成一系列的轮密钥,利用轮密钥对每个小块进行加密,最终将加密结果重新组合成一个整体,得到密文。

4、DES算法步骤详解4.1 初始置换(Initial Permutation,IP置换)

IP置换是将输入的64位明文块进行置换和重新排列,生成新的64位数据块。
目的:增加加密的混乱程度,使明文中的每一位都能够对后面的加密过程产生影响,提高加密强度。
我们将把64位的顺序按下表中规定的顺序放置,图中的数字是在64位明文中每个比特的索引位置。注意,在DES中,这个置放规则是固定的

即将原来位于第58个位置的数据放在第1个位置,原来位于第50个位置的元素放在第2个位置,第42个放在第3个,34->4以此类推…

初始置换的逆置换(Final Permutation,FP置换)是将加密后的数据块进行置换和重新排列,得到最终的加密结果,与初始置换相对应。

4.2 加密轮次

初始置换完成后,明文被划分成了相同长度(32位)的左右两部分,记作L0,R0。接下来就会进行16个轮次的加密了。
我们从单独一个轮次来看。首先把目光聚焦在R0这里。

右半部分R0会作为下一轮次的左半部分L1的输入。其次,R0会补位到48位和本轮次生成的48位K0(马上讲K0的生成)输入到F轮函数中去。F函数的输出结果为32位,结果F(R0,K0)会和L0进行异或运算作为下一轮次右半部分R1的输入。
以此类推,重复16轮运算。所以,上面描述的过程可以用以下公式表述。

4.3 F轮函数

我们讲到在每轮加密中,会将R和K输入到F中,接下来我们看看F函数中做了哪些处理。

4.3.1 拓展R到48位

将32位的R0右半部分进行扩展,得到一个48位的数据块。同样的,数据拓展也是根据一个固定的置换表。红框中就是我们要补位的数据。

由此可见,扩展过程的每一位都是根据上述的置换表从输入的32位数据块中提取出来的。原始数据的第32位被补充到了新增列的第一个,第5位被补充到了第二个新增列的第一个,以此类推…

4.3.2 子密钥K的生成

DES算法采用了每轮子密钥生成的方式来增加密钥的复杂性和安全性。每轮子密钥都是由主密钥(64位)通过密钥调度算法(Key Schedule Algorithm)生成的。DES算法的密钥调度算法可以将64位的主密钥分成16个子密钥,每个子密钥48位,用于每轮加密中与输入数据进行异或运算。
通过子密钥生成的流程图来看下整个过程。

  • 1、将64位主密钥经过置换选择1(Permuted Choice 1简写为PC-1)后输出了56位,将其分为左右两个28位的数据块,分别记为C0和D0。同上面我们讲过的置换规则一样,PC-1置换函数也是一个固定的置换表。
    从PC-1的置换表中可以看到,舍弃掉的8位数据是原始数据中每8位数据的最后一位,也就是我们所熟知的奇偶检验位。这8位被丢弃是因为它们对于密钥的安全性没有贡献,而且能够使DES算法的计算速度更快。

  • 2、对C0和D0进行循环左移操作。循环左移完成后生成C1和D1。因此,在16个轮次的计算当中会得到16个32位的数据块C1-C16和D1-D16。在DES中循环左移也有固定的规则

    对于i=1,2,…,16,对于Ci和Di,若i为1,2,9或16,则循环左移一位,否则循环左移两位。

  • 3、 对于C1,D1,将它们经过置换选择2(Permuted Choice 2 简写位PC-2)后,得到48位的子密钥K1,用于每轮加密中与输入数据进行异或运算。PC-2置换的输入是由PC-1置换生成的56位的密钥,而它的输出是48位的子密钥。PC-2置换将56位的密钥重新排列,丢弃了8位并选取了其中的48位作为子密钥。PC-2的置换规则如下:


[color=rgba(0, 0, 0, 0.75)]1417112415
3281562110
2319124268
1672720132
415231374755
304051453348
444939563453
464250362932

即PC-2置换表的第一行表示选择了输入密钥中的第14、17、11、24、1和5位,并将它们作为输出子密钥的前6位。以此类推…

  • 4、至此,经过PC-2后的结果就是我们当前轮次的子密钥K1了。在整个DES加密过程中会生成16个48位子密钥K1-K16,分别用于DES算法中的16轮加密过程,从而保证每轮加密所使用的密钥都是不同的,增加了破解的难度。

4.3.3 当前轮次的子密钥与拓展的48位R进行异或运算

当前轮次的子密钥Ki与拓展的48位Ri进行异或运算。运算结果会作为接下来S盒替换的输入

4.3.4 S盒替换(Substitution Box substitution)

S盒替换(Substitution Box substitution)是一种在密码学中广泛使用的加密技术。它是将明文中的一组比特映射到密文中的一组比特的过程,用于增强密码的安全性。DES中S盒替换用于将上一轮异或运算的48位结果映射到32位输出中去。

同样的,S盒也是一种置换表。在DES的每一轮计算中S盒都是不一样的。这里我以第一轮计算中的S盒为例。从上图中我们看到,S盒内部有8个S块,记作S1-S8。每个S块都会接收6位字符作为输入并输出四位字符。这里我们以第一个S盒S1为例。他是一个4*16的置换表。

[color=rgba(0, 0, 0, 0.75)]1441312151183106125907
0157414213110612119538
4114813621115129731050
1512824917511314100613

例如输入101010到S1中。S1会将这六位的第一位和第六位拿出来10作为S1的行,中间四位0101拿出来作为S1的列。我们转换成十进制,此时映射到这个S盒的位置就是(2,5)对应S盒的第3行第6列(索引都从0开始数)。

所以这个输入的结果是6,将6转化为二进制110,S盒的输出是4位,所以得S(101010)=0110

因此,可以看到S盒其实是一种非线性的加密技术,它能够抵御许多传统的密码分析攻击,如差分攻击和线性攻击。

4.3.5 P盒替换

P盒替换将S盒替换的32位输出作为输入,经过上述固定的替换表进行替换后即为最后F轮函数的结果。

该结果F(R0,K0)与L0进行异或运算得到下一轮的右半部分R1

4.4 逆置换(Inverse Permutation)


在经过16轮次计算后,DES会对最后的结果进行最后一次置换。即为最后的输出结果。

5、DES的优缺点

优点:

  • 安全性高:DES算法使用密钥进行加密和解密,相同的明文使用不同的密钥加密后得到的密文是不同的。密钥越长,加密的安全性就越高。
  • 算法简单:DES算法的加密和解密过程非简单,基于对称加密,使用相同的key进行加解密。
  • 适用广泛:DES算法是最早也是最广泛使用的加密算法之一,被广泛应用于电子商务、电子邮件、虚拟私人网络等领域,具有广泛的适用性和可移植性。

缺点:

  • 密钥长度较短:DES算法使用56位密钥,虽然在当时足够安全,但在当前计算机的处理能力下,已经不足以保证加密的安全性,易受到暴力破解攻击。
  • 无法抵抗差分密码分析攻击:DES算法无法抵抗差分密码分析攻击,这种攻击可以通过比较相同明文的密文,分析加密算法的行为并推断出密钥。
  • 比较慢:由于DES算法是一种分组密码算法,需要对64位的明文进行加密,加密速度比较慢,不适用于对大量数据进行实时加密和解密。

6、DES的攻击方法

由于DES从诞生距今已经很多年了,但是仍然有部分老旧的系统会使用DES进行加密。因为其密钥长度较短(仅56位)和已知的弱点,因此容易受到以下攻击。

  • 穷举攻击(Brute-Force Attack):由于DES算法的密钥长度较短,可能受到暴力破解攻击,攻击者可以通过穷举所有可能的密钥来尝试破解密文。尽管DES算法的加密速度比较慢,但现代计算机的计算能力很强,可以在合理时间内进行暴力破解攻击。

  • 差分密码分析攻击(Differential Cryptanalysis Attack):差分密码分析是一种比较高效的攻击方式,可以通过对明文和密文之间的差异进行分析,推导出密钥。对于DES算法,攻击者可以通过分析不同的输入和输出差异,以及密钥可能取值的概率,从而获得密钥。

  • 线性密码分析攻击(Linear Cryptanalysis Attack):线性密码分析是一种比较有效的攻击方式,可以通过线性近似计算找到密钥。对于DES算法,攻击者可以通过构造一些线性逼近,以及计算相应的概率,从而推导出密钥。

  • 工作密钥攻击(Known Plaintext Attack):在工作密钥攻击中,攻击者可以获得一些已知明文和相应的密文,然后利用这些信息来推导出密钥。对于DES算法,攻击者可以通过获得足够的已知明文和密文,来推导出密钥。

  • 生日攻击(Birthday Attack):生日攻击是一种利用概率学的攻击方式,可以在相对较短的时间内找到具有相同散列值的两个不同的输入。对于DES算法,攻击者可以使用生日攻击来找到两个不同的密钥,这些密钥都可以加密相同的明文。


7、3DES(Triple DES)

我们讲到了DES目前而言是不安全的。因此也诞生了3DES这样的算法来对DES进行加强。3DES顾名思义,就i是使用DES加密3次,使用3个密钥进行加解密。

为什么是3DES不是2DES
3DES使用了三个密钥,将DES算法的加密过程重复三次,从而大大增强了安全性。3DES的密钥长度为168位,远高于DES算法的56位密钥长度和2DES算法的112位密钥长度。2DES暴力破解的时间复杂度为O(257),仍然有很大的可能被暴力破解。
举个例子看下:
对于明文P,密文C, C由经过两次加密Ek1,Ek2得到K1,K2分别是第一二次加密的密钥。

  • 遍历P到第一次加密的K1,最多有256种可能。
  • 由于加解密是相同的key。所以我们同时还能对C进行暴力解密找key。同样有最多256种可能。
  • 当我们遍历能找到一个Ek1(P)=Dk2(C) 使用这个密钥去加解密不同的明文和加密结果(P’,C’)。
  • 如果能成功,那么此次暴力破解的时间复杂度为O(257)。因此依旧不够安全。

打赏鼓励作者,期待更多好文!

打赏
暂无人打赏

牛风喜 发表于 2024-4-23 09:34
  
每日一积累慢慢变专家
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
西北区每日一问
干货满满
【 社区to talk】
技术笔记
安全效果
新版本体验
技术咨询
功能体验
标准化排查
高手请过招
2023技术争霸赛专题
GIF动图学习
信服课堂视频
产品连连看
社区新周刊
秒懂零信任
技术晨报
自助服务平台操作指引
每周精选
技术圆桌
每日一记
玩转零信任
纪元平台
场景专题
升级&主动服务
全能先锋系列
畅聊IT
答题自测
专家问答
在线直播
MVP
网络基础知识
安装部署配置
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
运维工具
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
通用技术
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
故障笔记
排障那些事
高频问题集锦
POC测试案例
云化安全能力

本版版主

124
74
30

发帖

粉丝

关注

26
8
0

发帖

粉丝

关注

70
36
1

发帖

粉丝

关注

6
14
0

发帖

粉丝

关注

18
10
5

发帖

粉丝

关注

本版达人