DES
- 1、DES的加密过程
- 2、初始置换
- 3、16轮迭代变换过程
- 3.1 扩展变换/位选择函数E
- 3.2 S盒代换
- 3.3P盒置换
- 4、初始逆置换
- 5、密钥扩展
- 5.1 选择置换PC_1
- 5.2选择置换PC_2
- 6、DES的解密过程
- 7、多重DES
美国正式公布实施的DES是一个众所周知的分组密码,其 分组长度是64bit,密钥长度是56bit。
1、DES的加密过程
明文:64bit
密文:64bit
密钥:56bit
校验位:8bit
加密过程:
①首先利用初始置换IP对明文X进行换位处理,打乱原来的次序,得到一个乱序的64bit明文组;
②进行16轮迭代变换;
③将16轮迭代变换的结果进行初始逆置换,得到最后的密文。
其中绿色框是DES主流程,红色框是轮函数,也就是16轮迭代变换的过程,蓝色框是密钥生成扩展方法。
2、初始置换
输入:64bit
输出:64bit
初始置换的意义在于打乱原来输入的X的ASCII码字划分的关系,用于对明文的各个位进行换位,目的在于打乱各位的次序。
在IP中,如第一个58表示,此次置换结果X’的第1位是明文X中的第58位,置换结果X’的第2位是明文X中的第50位。
3、16轮迭代变换过程
输入:64bit
输出:64bit
迭代变换过程:
①将初始置换IP之后的结果一分为二,左边为L0,右边为R0;
②将Ri-1通过扩展置换,与对应子密钥相加,并将结果进行S盒代换和P盒置换,即f(Ri-1 , Ki),得到的结果是32bit;
③将得到的32bit的结果与Li-1进行异或得到最后的Ri;
④而Li就是原来的Ri-1
具体过程如下图所示
3.1 扩展变换/位选择函数E
输入:32bit
输出:48bit
将48bit的结果与48bit的密钥进行模2加运算,进入下一轮的S盒代换。
3.2 S盒代换
输入:48bit
输出:32bit
每个S盒的输入:6bit
每个S盒的输出:4bit
S盒代换之前,首先要将48bit的输入分成8组,一组6bit,分别使用一个S盒,一共使用8个S盒。S盒是DES算法中唯一的非线性部件,当然也是整个算法的安全性所在。
在每一个盒中,都是4x16的固定矩阵。
假设输入是b0b1b2b3b4b5,那么查找对应的S盒,第一组查S1盒,第二组S2盒。
①根据b0b5确定行号
②根据b1b2b3b4确定列号
③查找到数字M,然后用二进制表示M,也就是4位,就是这个S盒的输出结果。
以S1盒为例:假设输入是011001,行号是01,也就是1行,列号是1100,也就是12列,查找表格可以得到9,用二进制进行表示就是1001,所以对应的输出是1001。
最终将八个S盒的结果拼接起来,就是最后的32bit的输出。
3.3P盒置换
输入:32bit
输出:32bit
将S盒代换的结果作为输入进行对应的置换得到最后的32bit结果,参与后续的异或操作。
4、初始逆置换
输入:64bit
输出:64bit
逆初始置换就是初始置换的逆,在逆IP中,如第一个40表示,此次置换结果X’’的第1位是参与置换的第40位,置换结果X’’的第2位是参与置换的第8位。
是将16轮迭代置换的64bit结果进行置换(按行读取)得到最后的密文。
5、密钥扩展
输入:64bit
56bit密钥+8bit奇偶校验位
输出:16个48bit的子密钥
奇偶校验位分别位于8、16、24、32、40、48、56、64位,用于检查密钥K在产生、分配以及存储过程中可能发生的错误。
①密钥K首先进行选择置换PC_1;
②将PC_1的结果一分为二:PC_1(K)=C0D0,分别28bit;
③每一轮根据公式:
Ci = LSi(Ci-1)
Di = LSi(Di-1)分别进行循环左移,在i=1,2,9,16的时候左移1个位置,否则左移2个位置;
④每轮的C、D结果拼接起来作为选择置换PC_2的56bit输入,得到48bit的输出作为一个子密钥。
5.1 选择置换PC_1
输入:64bit
输出:56bit
选择置换PC_1用于去掉8位奇偶校验位并将剩下的56位打乱重新排列。
5.2选择置换PC_2
输入:56bit
输出:48bit
用于从CiDi中选取48位作为子密钥。
6、DES的解密过程
DES的解密过程和加密过程相同,但是在16次迭代中使用的子密钥的次序相反:第一轮使用K16,第二轮使用K15,第16轮使用K1。
具体过程如下:
①首先利用初始置换IP对密文M进行换位处理,打乱原来的次序,得到一个乱序的64bit密文组;
②进行16轮迭代变换;
③将16轮迭代变换的结果进行初始逆置换,得到最后的密文。
7、多重DES
DES的安全性完全依赖所使用的密钥。
而目前的密钥长度已经不能抵抗穷举攻击了,但是为了充分利用有关DES的已有的软件和硬件资源,一种简单的改进方案就是使用多重DES。
例如:三重DES
三重DES使用三个密钥K1,K2和K3。给定明文X,则密文y是:
y = DESK3(DESK2-1(DESK1(X)))
若给定密文y,则明文x是:
X = DESK1-1(DESK2(DESK3-1(y)))
优点:
①密钥长度很长,可以有效客服DES面临的穷举攻击;
②相对于DES,增强了抗差分分析和线性分析的能力;
③具备继续使用现有的DES实现的可能,对密码分析攻击由很强的免疫力;
④升级到三重DES比更换新算法的成本小得多。