为什么在加密解密加密模式下计算三重DES?为什么中间要解密?自从对称密码中的DES以来,不是解密=加密吗?
为什么在 EDE 模式下使用三重 DES?
它是为了向后兼容普通 DES。如果您在前两个操作中使用相同的密钥,它们会被取消,您会得到一个在单个 DES 密钥下加密的密文。
解密与加密不同。对称是指两者都使用相同的密钥,但实际步骤实际上是相反的。
作为“对称”意味着加密和解密 KEYS 相同(或易于从另一个计算),而不是算法。这并不意味着加密=解密。然而,在 DES 的情况下,它是一个有 16 轮的 Feistel 密码 - 加密实际上与解密的过程相同 - 这实际上有助于在硬件上轻松实现密码,除非在 DES 中有一个密钥调度,这意味着不同的子-key 在每一轮中都使用,因此以一种方式运行它成为加密(密钥 1 ~ 16)并以另一种方式运行它解密(密钥 16 ~ 1)。
有 3-DES EDE(加密解密加密)和 EEE 两种配置以及 3 种密钥方案选择,1 密钥 2 密钥(2TDEA)和 3 密钥(3TDEA)。另请注意,DES 的设计也是基于考虑使用定制硬件以提高效率。
3-DES 使用 EDE,因此您可以输入相同的密钥三次,这实际上与仅使用 DES 和那个密钥相同 - 这是向后兼容性。这遵循使用三个单独的密钥,因为您可以在硬件中实现 3-DES 算法(或无法更改密码模式),需要三个密钥三重 DES 以及向后兼容性。例如,一个实现可能是用户在设置存储或数据库中设置密钥,如果想要 3 密钥 DES 将使用密钥 AAAAAAAAAAAAAAABBBBBBBBBBBBBBCCCCCCCCCCCCCC 但如果想要向仅实现了 DES 的资源发送消息,那么它将使用密钥 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA程序员可能在 3-DES EDE 中进行了硬编码。同样对于 2 键 3-DES,用户可以输入 AAAAAAAAAAAAAAAABBBBBBBBBBBBAAAAAAAAAAAAAAA 作为键。该函数可能只是 encrypt(messsage, key) 而不是 encrypt(message, key1, key2, key3, configuration)。这就是为什么将 EDE 用于 3-DES 是标准的原因,密钥选择 1/2/3 与实际加密实现相对分离。从安全的角度来看,使用 Encrypt Encrypt 或 Encrypt Decrypt 与我们上面提到的相同,区别只是使用的子密钥的重新排序,因为密钥 1 和密钥 2 无论如何都是不同的。还应该注意的是,DES 密钥需要 8 个奇偶校验位,因此密钥实际上是 64 位长,并且每个字节都有一个奇偶校验位,但实际可见性将随实现而变化。2key 3-DES 做 k1, k2, k1 的原因是这样的。如果在 EDE 模式下使用 k1,k1,k2,您实际上只能通过 k2 加密,如果您使用 k1,k1 加密,
双 DES 实际上与 2 密钥 3-DES 不同,双 DES 很容易在中间攻击中遇到,您预先计算所选明文的 DES 加密并使用 2^56 x 64 位空间存储它,然后您就有了为了让系统为您加密所选的纯文本并解密它直到它与存储的值之一匹配,然后您拥有两个候选密钥,使用另外 1/2 明文/密文对,然后您可以测试这些密钥以查看如果他们真的是正确的。这是一个时空权衡,据说可以有效地将密钥大小减少到 56 位 + 数据库搜索时间。但是,2 密钥 3-DES 并非如此,因为我们先用密钥 1 加密,然后用密钥 2 加密,然后再用密钥 1 加密,要在中间相遇,无论如何您都必须预先计算密钥 1 和密钥 2 的加密,而不是减少所需的时间。在这种情况下,对 2 个密钥 3-DES 的攻击需要 2^56 个 CHOSEN 纯文本/密文对并将密钥减少到 56 位 - 但是纯文本/密文对可能非常困难,具体取决于访问系统协议。作为未经授权的用户,您可能无法加密消息或依赖随机生成的值。如果您有 n 个 KNOWN 对,另一种攻击也会将安全性降低到 2^(120-n)。所以这些攻击的实用性是有问题的。我相信这是在下面的参考资料中提出的。我相信无论使用 EDE 还是 EEE,3 密钥 3-DES 仍然容易受到中间相遇攻击,这有效地将其安全性降低到 112 位。这样做的原因是您可以计算密钥 1 上所选明文的加密,并使用与双重 des 攻击相同的空间量来存储它们,
由于这些漏洞,使用 3TDEA 比使用 2TDEA 更好,所以我怀疑会有很多使用 2TDEA 的新应用程序(我相信 NIST 可能会建议不要使用它)。然而,我能想到使用 2 键的唯一原因是键的大小更小,所以这是空间效率。最初在最近对 2-key 的攻击之前,2-key 和 3-key 虽然具有相似的安全性 ~112 位,所以从实施者的角度来看,“如果它是相同的,为什么还要浪费时间使用额外的密钥”?或者,您可能正在迁移到或从使用 128 位的不同算法(请记住,这是 2TDEA 密钥的实际大小,包括奇偶校验位)并且不想更改密钥,或者更改密钥是不可行的 - 或密钥生成算法以前的系统是 128 位,所以你也不要
C. van Oorschot 和 Michael J. Wiener。1991.对两密钥三重加密的已知明文攻击。在密码技术理论与应用研讨会论文集(密码学进展 - EUROCRYPT '90)中,Ivan Bjerre Damgård(主编)。Springer-Verlag New York, Inc.,纽约,纽约,美国,318-325。
(写这篇文章的原因 - 我很快就会有一个考试,希望这涵盖了所有内容,欢迎任何更正)。
为什么在 EDE 中解密在中间?-
最初你有一个明文,所以你只能加密它。所以你必须从加密开始。-所以EDE中的第一个E
在第一次加密之后,你得到了一个密文——你只能解密它——所以我们在 EDE 中间得到了第二个D
然后用同样的逻辑我们有最终的E
通过在所有这些 enc/dec 序列中使用不同的密钥来实现三重 DES(通过使用更长的密钥)的额外安全性。所以三重 DES 长密钥(168 位)实际上是所有这些标准 DES 56 位密钥的组合。
但是出于兼容性原因,在 EDE 序列中使用相同的 56 位密钥是有机会的 - 这使得三重 DES 可以作为简单的 DES 工作