第一点:只有当这两种加密算法单独使用时,才会有实际的安全性提高,它们独立地容易受到穷举搜索的影响,即使用太小的密钥。这是主要问题,最好解决这个问题。穷举搜索仅适用于密钥大小,以便可以使用现有或可预见的技术枚举密钥空间。128 位密钥会抵制这种尝试是有充分理由的。因此,如果你使用一个像样的加密算法,就没有必要“加倍”它。除了“不能破坏它”之外,没有任何安全级别:你不能不破坏算法而不是“根本不”。
在过去,双倍或三倍算法被用来重用以前的算法,这些算法本身就太弱了;最好的例子是Triple-DES(又名“3DES”),它建立在之前的 DES 之上。DES 及其 56 位密钥空间容易受到穷举搜索的影响(已经完成)。正如@CodesInChaos 在他的评论中指出的那样,双倍和三倍不会让您物有所值:双 DES 将使用 112-but 密钥,但不会提供 112 位安全性。
简而言之,对于双 DES,攻击者将使用第一个 DES 和所有可能的密钥k 1(2 56种可能性)加密已知明文,并使用所有可能的密钥k 2(再次2 56种可能性)解密已知密文,然后在两组 2 56个“中间值”中寻找匹配项。匹配将花费大约 2·56·2 56,即大约 2 63 (这是对两组进行排序的成本,以便通过线性搜索检测匹配项)。使用归并排序,排序和匹配步骤只需要线性访问,因此与硬盘兼容。我们在这里谈论的是 2 57 128 位值(两个已知的明文块,因此密钥不会有歧义),也就是 2 61字节,也就是 2 百万 TB。一百万个硬盘很贵……但在技术上是可行的,与 2 112穷举键搜索相反。
因此,加倍算法并没有带来那么多好处。从弱算法开始时,三倍增加了安全性(至少当弱点仅与密钥大小有关时),但是,同样,没有投入的努力那么多(使用 3DES,你有 168 位密钥,但阻力是“唯一的”高达 2 112)。当然,三倍还意味着将性能除以三,这在任何给定的上下文中可能是可以容忍的,也可能是不能容忍的。三倍,四倍...不能解决其他问题,例如块太小(3DES仍然使用DES的64位块,这意味着在加密大约2 32时会出现严重问题 使用给定密钥(即大约 32 GB,按照今天的标准,这并不多)来块价值的数据)。
最好从没有详尽搜索问题的加密算法(如AES )开始,从而使加倍或三倍无用。加倍(或三倍)算法就像一个钉腿:如果你不幸失去了一条腿,它可以帮助你保持直立;但是,如果可能的话,最好保留你的两条生物腿。