当我听说破解加密算法的方法时,我注意到人们经常关注如何快速解密以及如何减少搜索空间。但是,我总是想知道您如何识别成功的解密,以及为什么这不会形成瓶颈。还是经常假设加密/解密对是已知的?
4 回答
通常,您对解密后预期的文件格式有一定的了解,并且大多数格式都提供了一种识别它们的简单方法。例如,几乎所有二进制格式(如图像、文档、zipfile 等)都具有易于识别的标题,而文本文件将仅包含 ASCII 或仅包含有效的 UTF-8 序列。
在两个极端之间存在折衷,一方面,根本不知道任何明文,另一方面,知道所有明文。在婴儿床标题下的 Cryptonomicon 中。婴儿床是对消息中可能出现的单词或短语的有根据的猜测。例如,如果您正在解密来自二战的德国信息,您可能会猜测明文中包含短语“HelL HITLER”或“SIEG HElL”。你可能会随机挑选出一个由十个字符组成的序列,然后说,“让我们假设这代表了希特勒。如果是这样,那么它对消息的其余部分意味着什么?”
...
他坐在办公室里,拿着新鲜的 Arethusa 截获,然后去上班,把 FUNERAL 当作婴儿床:如果这组七个字母解密为 FUNERAL,那么剩下的信息会是什么样子?胡言乱语?好的,这组七个字母怎么样?
对于密钥长度短于密文长度的对称加密,保证您无法生成所有可能的纯文本。您可能会在某种程度上猜到您的纯文本将采用什么形式 - 您可能知道它是图像还是 XML,或者如果您甚至不知道那么多,那么您可以假设您将能够在它上面运行file
而不是获取“数据”。您必须希望只有少数密钥可以为您提供模糊合理的解密,并且只有一个与您正在寻找的形式相匹配。
如果您有一个示例纯文本(或部分纯文本),那么这会容易得多。
在非对称密码学中,您通常可以访问公钥。因此,加密密文的任何解密都可以使用公钥重新加密,并与原始密文进行比较,从而揭示解密是否成功。
对称加密也是如此。如果你认为你已经解密了一个密码,你也必须认为你已经找到了密钥。因此,您可以使用该密钥来加密您可能正确的解密文本,并查看加密结果是否与原始密文相同。