【问题标题】:Why DES is insecure? How do we know when to stop iterating and that we've found out the key? [closed]为什么 DES 不安全?我们怎么知道什么时候停止迭代并且我们已经找到了关键? [关闭]
【发布时间】:2013-10-06 13:57:29
【问题描述】:

据说DES是不安全的。我猜这是因为密钥是 55 位长,所以使用蛮力最多需要 2^55 次迭代才能找出现在不多的密钥。但是如果我们迭代 2^55,我们什么时候知道什么时候停止?

【问题讨论】:

  • 继续尝试解密你拥有的任何加密的东西,直到它是正确的?
  • 使用已知的明文。
  • 简而言之 - 你总是在运行已知明文攻击。也许你的知识是片面的,但如果你想破解密码,你必须知道一些事情。
  • 这个问题似乎是题外话,因为它是关于密码学(不包括编程),请查看 crypto.stackexchange.com。

标签: c cryptography cryptanalysis


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    是 256 不是 255。

    关于如何知道何时停止有几个选项。一个是您正在进行已知纯文本攻击——即,您知道特定消息的实际文本,使用它来学习密钥,然后使用它来读取其他消息。在许多情况下,您不知道 完整 文本,但无论如何都可能知道一些内容——例如,您可能知道某个地址块的一些信息,该地址块用于您关心的所有类型的消息,或者如果文件已加密,即使实际内容未知,也可能具有可识别的标头。

    如果您不知道任何消息的(任何)文本,您通常依赖于自然语言通常相当冗余的事实——对它们的结构知之甚少。举几个例子吧等。在典型情况下,您会进行几个不同级别的统计分析——一个非常简单的分析,可以非常快速地排除大多数的可能性。对于那些通过该测试的人,您可以进行第二次分析,并很快排除绝大多数其他人。

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

    我可能应该补充一点,有些人发现统计分析存在足够的问题,因此他们试图阻止它,例如通过使用霍夫曼压缩等算法压缩数据以最大化压缩数据中的熵。

    【讨论】:

      猜你喜欢
      • 2011-08-08
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      相关资源
      最近更新 更多