DES的变体

尽管DES的抗攻击不错,但是随即计算机硬件的迅速发展,DES也可能被破解。但是DES已经是被证明是相当好的算法,因此最好能够利用DES,用某种方法改进,而不是编写全新的加密算法。编写新的算法并不容易,要有充分的测试才能证明是否强算法。因此,DES出现了两个变体。

1. 双重DES

双重DES很容易理解。实际上是把DES通常要做的工作多做一遍。双重DES使用两个密钥K1和K2。首先对原明文用K1进行DES,得到加密文本,然后对加密文本用另一个密钥K2再次进行DES,加密这个加密文本,其过程如下图所示:
在这里插入图片描述
解密过程就是按相反的顺序解密两次,如下图所示:
在这里插入图片描述
双重加密的密文块首先先用密钥K2解密,得到单重加密的密文块。然后用K1解密这个密文块,得到原先的明文块。
一般来说如果使用n位密钥,则要进行 2 n 2^{n} 2n次运算才能试遍所有密钥。如果使用两种不同的密钥,密码分析员要进行 2 2 n 2^{2n} 22n次运算才能试遍所有的密钥。因此,基本DES要搜索 2 56 2^{56} 256,而双重DES搜索需要 2 56 × 2 2^{56\times2} 256×2(即 2 112 2^{112} 2112)个密钥。但是,引入中间人攻击的概念,这个攻击从一端加密,另一端解密,在中间匹配结果,因此称为中间人攻击。下面说明中间人攻击的工作方法:
假设密码分析员知道两个基本信息:P(明文块)和C(对应最终的密文块)。对于双重DES,P和C存在如下图的关系:
在这里插入图片描述
第一个加密结果为T,标为 E k 1 ( P ) E_{k1}(P) Ek1(P)(即用K1加密块P)。用另一个密钥K2加密这个加密文本后,我们将结果标为 C = E k 2 ( E k 1 ( P ) ) C=E_{k2}(E_{k1}(P)) C=Ek2(Ek1(P))(即用另一个密钥K2加密文本T,称为最后的密文C)。
知道P和C后,想取得K1和K2的值,需要进行如下步骤:
第一步:对密钥K1的所有值( 2 56 2^{56} 256),密码分析员使用计算机内存中的一个大表,执行下列步骤:
(1)密码分析员通过第一个加密运算明文块P,即 T = E k 1 ( P ) T=E_{k1}(P) T=Ek1(P)
(2)密码分析元存储这个操作的输出(临时密文T),放在内存中表格的下一行。
为了标语理解,用二位密钥显示这个过程(实际上,密码分析员要使用56位密钥,困难的多),如下图所示:
在这里插入图片描述
第二步:上述过程结束时,密码分析员得到密文表(T)。然后密码分析员进行逆运算,即用K2的所有取值解密已知的密文C(即执行 D k 2 ( C ) D_{k2}(C) Dk2(C))。每种情况下,密码分析员比较得到的值与密文表(T)中的所有值,这个过程如下图所示:
在这里插入图片描述
显然,这种攻击是可能的,但需要大量的内存,如果算法使用64位明文块和56位密钥,则需要用 2 56 2^{56} 256个64位块。在内存中存储T表,存在磁盘中太慢,无法有效的攻击。

2. 三重DES

三重DES就是三次执行DES,分为两大类:一种用三个密钥,另一种用两个密钥。
2.1 三个密钥的三重DES
三个密钥的三重DES如下图所示:
在这里插入图片描述
首先用密钥K1加密明文块P,然后用密钥K2加密,最后用密钥K3加密,其中K1、K2、K3各不相同。要解密密文C和取得明文P,就要执行操作 P = D k 3 ( D k 2 ( D k 1 ( C ) ) ) P=D_{k3}(D_{k2}(D_{k1}(C))) P=Dk3(Dk2(Dk1(C)))
2.2 两个密钥的三重DES
三个密钥的三重DES是相当安全的,可以用公式 C = E k 3 ( E k 2 ( E k 1 ( P ) ) ) C=E_{k3}(E_{k2}(E_{k1}(P))) C=Ek3(Ek2(Ek1(P)))表示。但是,三个密钥的三重DES有一个缺点,就是需要 56 × 3 = 168 56\times3=168 56×3=168位密钥,在实际中比较困难。因此提出了只用两个密钥的三重DES,算法如下:
(1)用密钥K1加密明文块P,得到 E k 1 ( P ) E_{k1}(P) Ek1(P)
(2)用密钥K2解密上面的输出,得到 D k 2 ( E k 1 ( P ) ) D_{k2}(E_{k1}(P)) Dk2(Ek1(P))
(3)最后用密钥K1再次加密第二步的输出,得到 E k 1 ( D k 2 ( E k 1 ( P ) ) ) E_{k1}(D_{k2}(E_{k1}(P))) Ek1(Dk2(Ek1(P)))
这个过程如下图所示:
在这里插入图片描述
要解密密文C和取得明文P,就要进行操作 P = D k 1 ( E k 2 ( D k 1 ( C ) ) ) P=D_{k1}(E_{k2}(D_{k1}(C))) P=Dk1(Ek2(Dk1(C)))
第二步的解密没有什么特别的含义,只是使三重DES用两个密钥而不是三个密钥,称为加解加密模式。与使用K1与K2的双重DES不同,用两个密钥的三重DES不会受到中间人攻击。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhInen丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值