0%

DES

加密过程

数学描述

整体结构

子密钥生成

64位的密钥分为8个字节,每个字节的前7位是真正的密钥位,第8位是奇偶校验位,因此,DES真正的密钥只有56位。

置换选择$1$

作用:

  1. 从64位密钥中去掉8个奇偶校验位
  2. 将其余56位密钥打乱重排,且将前28位作为$C_0$,后28位作为$D_0$

矩阵:

(矩阵中第一个数字57,表明原密钥中的第57位移到$C_0$中的第1位)

置换选择$2$

作用:从$C_i$和$D_i$(56位)中选择出一个48位的子密钥$K_i$

矩阵

循环左移

迭代次数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
循环左移位数 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

初始置换$IP$

作用:增加了输入数据的随机性和混淆性,将输入的64位数据分为左半部分和右半部分,为后续的轮函数(Feistel函数)做准备。

矩阵:

加密函数

选择运算$E$

作用:将32位的数据扩展为48位,以便与48位的子密钥模2相加,并满足代替函数组S对数据长度的要求。

矩阵:

代替函数组$S$

构成:由8个代替函数(S盒)组成,函数组的输入是一个48位的数据,每个S盒有6位输入,产生4位的输出。

作用:引入非线性运算,增加加密算法的复杂性,从而增强其安全性。在DES中,每个S盒都是由固定的置换操作和一系列代替操作构成的,这些操作共同实现了非线性变换,使明文位和密钥位之间的关联变得非常复杂,难以推断出密钥信息。

代替规则:S盒的6位输人 $b_1b_2b_3b_4b_5b_6$ 中的第1位 $b_1$ 和第6位 $b_6$ 组成的二进制数 $b_1b_6$ 代表选中的行号、其余4位数字 $b_2b_3b_4b_5$ 所组成的二进制数代表选中的列号,而处在被选中的行号和列号交点处的数字便是S盒的输出(以二进制形式输出)。以 $S_1$ 为例,设输入 $b_1b_2b_3b_4b_5b_6 = 101011$,第1位和第6位数字组成的二进制数 $b_1b_6 = 11 = (3)_{10}$,表示选中 $S_1$ 的行号为3的那一行,其余4位数字所组成的二进制数为 $b_2b_3b_4b_5 = 0101 = (5)_{10}$,表示选中 $S_1$ 的列号为5的那一列,交点处的数字是9,则 $S_1$ 的输出为1001。

矩阵:

置换运算$P$

作用:把S盒输出的32位数据打乱重排,得到32位的加密函数输出。用P置换来提供扩散,把S盒的混淆作用扩散开来。

矩阵:

逆初始置换$IP^{-1}$

作用:逆初始置换$IP^{-1}$是初始置换$IP$的逆置换,它把16次加密迭代的结果打乱重排,形成64位密文,使用$IP$的同时必须使用$IP^{-1}$,以确保加密算法的可逆性和对合性。

矩阵:

解密过程

原理分析

  • 由于DES的运算是对合运算,所以解密和加密可公用同一个运算,只是子密钥使用的顺序不同。
  • 把64位密文当做明文输入,而且第1次解密迭代使用子密钥$K_{16}$,第2次解密迭代使用子密钥$K_{15}$,以此类推,第16次解密迭代使用子密钥$K_1$,最后的输出便是64位明文。

数学描述

安全性分析

  • 具有很强的抗差分攻击和抗线性攻击能力,其中抗差分攻击能力更强;但是,难以抵抗并行计算的穷举攻击。
  • 密钥较短(56位)。
  • 存在一些弱密钥和半弱密钥,即由一些密钥产生的16个子密钥完全相同,或者部分相同。
  • 存在互补对称性,使得DES在选择明文攻击下所需的工作量减半。即,设$C=DES(M,K)$,则有$\overline{C}=DES(\overline{M},\overline{K})$。

3DES

优点:

  • 密钥足够长(112位或168位),安全性高,可以抵抗穷举攻击。
  • 当3DES中各密钥相同时,等价于DES的加解密,因此兼容性好。

缺点:加解密速度慢,分组长度只有64位。

2密钥的3DES

3密钥的3DES