为什么DES不安全?我们怎么知道何时停止迭代并且我们已经找到了密钥?

时间:2013-09-30 16:01:25

标签: c cryptography cryptanalysis

它说DES不安全。我想这是因为密钥是55位长,因此使用暴力会花费最多2 ^ 55次迭代来找出现在不多的密钥。但是如果我们迭代2 ^ 55,我们何时知道何时停止?

2 个答案:

答案 0 :(得分:5)

它2 56 而不是2 55

有几种方法可以知道何时停止。一个是您正在进行已知的纯文本攻击 - 即,您知道特定消息的实际文本,使用它来学习密钥,然后使用它来读取其他消息。在许多情况下,您不会知道完整的文本,但无论如何都可能知道一些内容 - 例如,您可能知道一些与所有消息一起使用的地址块您关注的类型,或者文件是否已加密可能具有可识别的标题,即使实际内容未知。

如果您不知道(任何)任何消息的文本,您通常依赖于自然语言通常相当多余的事实 - 对其结构有很多了解。举几个例子,用英语,你知道空格通常是最常见的字符,e是最常见的字母,几乎没有单词连续两个以上相同的字母,几乎所有字都包含至少在一个典型的例子中,你做了几个不同级别的统计分析 - 一个非常简单的分析很快就排除了大多数的可能性。对于那些通过该测试的人,你做了第二次分析,很快就排除了绝大部分的分析。

当你完成后,可能你可能需要人类的判断来在几种可能性之间做出选择 - 但是说实话,这是相当不寻常的。统计分析通常是完全足够的。

我应该补充一点,有些人发现统计分析有问题,他们试图阻止它,例如通过像Huffman压缩这样的算法压缩数据,以最大化压缩数据中的熵。

答案 1 :(得分:4)

这取决于内容。任何键都会产生一些输出,因此没有自动方式知道你找到了正确的键,除非你能猜到你正在寻找什么样的东西。如果您希望加密数据是文本,则可以检查每个解密是否主要包含ASCII字母;同样,如果您希望它是JPEG文件,您可以检查解密是否以字符“JFIF”开头。

如果您希望数据不被压缩,您可以对解密进行各种熵测试,寻找低熵的解密。