ToB企服应用市场:ToB评测及商务社交产业平台

标题: 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理 [打印本页]

作者: 科技颠覆者    时间: 2024-6-15 02:23
标题: 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理
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部分中,我们对每个流程进行详解。


总的来说,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位,用于每轮加密中与输入数据进行异或运算。
通过子密钥生成的流程图来看下整个过程。


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

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的置换表。
1441312151183106125907015741421311061211953841148136211151297310501512824917511314100613 例如输入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的优缺点

优点:

缺点:

6、DES的攻击方法

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

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分别是第一二次加密的密钥。


8、Python实现DES

由于篇幅过长,需要源码可以前去wechat公众号关注"一颗步伐树",回复"DES"获取源码。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4