据说DES是不安全的。我猜这是因为密钥是 55 位长,所以使用蛮力最多需要 2^55 次迭代才能找出现在不多的密钥。但是如果我们迭代 2^55,我们什么时候知道什么时候停止呢?
2 回答
这是 2 56不是 2 55。
关于如何知道何时停止有几个选项。一种是您正在进行已知纯文本攻击——即,您知道特定消息的实际文本,使用它来学习密钥,然后使用它来读取其他消息。在许多情况下,您不会知道全文,但无论如何可能都知道一些内容——例如,您可能知道与您关心的所有类型的消息一起使用的地址块的一些信息,或者文件是否已被即使实际内容未知, encrypted 也可能具有可识别的标头。
如果您不知道(任何)任何消息的文本,您通常依赖于自然语言通常相当冗余的事实——对它们的结构知之甚少。举几个例子,在英语中,你知道空格通常是最常见的字符,e
是最常见的字母,几乎没有单词连续两个以上相同的字母,几乎所有单词都至少包含一个元音,等等。在典型情况下,您会进行几个不同级别的统计分析——一个非常简单的分析,可以非常快速地排除大多数可能性。对于那些通过该测试的人,您进行第二次分析,也很快排除了其余的绝大多数。
完成后,您可能需要人工判断才能在几种可能性之间进行选择——但老实说,这很不寻常。统计分析通常是完全足够的。
我可能应该补充一点,有些人发现统计分析有足够的问题,以至于他们试图阻止它,例如通过使用诸如 Huffman 压缩之类的算法压缩数据以最大化压缩数据中的熵。
这取决于内容。任何键都会产生一些输出,因此没有自动方法可以知道您找到了正确的键,除非您能猜出您正在寻找什么样的东西。如果您期望加密的数据是文本,您可以检查每个解密是否主要包含 ASCII 字母;同样,如果您认为它是 JPEG 文件,您可以检查解密是否以字符“JFIF”开头。
如果您希望数据没有被压缩,您可以对解密运行各种熵测试,寻找具有低熵的解密。