密码分析:两个纯文本文件的XOR

时间:2011-04-14 22:07:37

标签: java cryptography encryption

我有一个文件,其中包含两个XORed纯文本文件的结果。如何解密此文件以解密任何一个纯文本文件?我搜索了很多,但找不到任何答案。谢谢!

修改

嗯,我也有两个密文,我为了获得两个明文的异或而进行了异或。我问这个问题的原因是因为,根据Bruce Schneier,pg。 198,Applied Cryptography,1996“......她可以将它们混合在一起并获得两个明文消息。这很容易打破,然后她可以用密文对其中一个明文进行异或,以获得密钥流。” (这与简单的流密码有关)但除此之外,他没有提供任何解释。这就是我在这里问的原因。原谅我的无知。

此外,使用的算法很简单,使用长度为3的对称密钥。

进一步编辑:

我忘了添加:我假设使用简单的流密码进行加密。

5 个答案:

答案 0 :(得分:7)

我不是密码分析师,但是如果你知道关于文件特征的某些东西,你可能有机会。

例如,假设您知道两个原始明文:

  • 包含纯ASCII英文文本
  • 是关于体育(或其他)的文章

鉴于这2条信息,您可能采取的一种方法是使用您可能期望在其中的单词扫描密文“解密”,例如“足球”,“玩家”,“得分”等。使用密文位置0处的“football”进行解密,然后是位置1,然后是2,依此类推。

如果解密字节序列的结果看起来是单词或单词片段,那么您很有可能从这两个文件中找到了明文。这可能会给你一些周围明文的线索,你可以看出这是否会产生合理的解密。等等。

使用您可能期望在明文中的其他单词/短语/片段重复此过程。


回答你的问题编辑:Schneier所说的是,如果某人有2个使用相同密钥进行XOR加密的密文,那么对这些密文进行异或将“取消”密钥流,因为:

(A ^ k) - ciphertext of A
(B ^ k) - ciphertext of B

(A ^ k) ^ (B ^ k) - the two ciphertexts XOR'ed together which simplifies to:

A ^ B ^ k ^ k - which continues to simplify to
A ^ B ^ 0
A ^ B

现在,攻击者有一个新的密文,它只由两个明文组成。如果攻击者知道其中一个明文(比如说攻击者可以合法访问A,而不是B),则可以用来恢复其他明文:

A ^ (A ^ B)
(A ^ A) ^ B
0 ^ B
B

现在攻击者拥有B的明文。

实际上比这更糟糕 - 如果攻击者拥有A而A的密文则可以恢复密钥流。

但是,我上面给出的猜测方法是上述的变种,攻击者使用(希望是好的)猜测而不是已知的明文。显然它不是那么容易,但它是相同的概念,它可以在没有已知明文的情况下完成。现在攻击者有一个密文,告诉他他何时正确猜到了一些明文(因为它导致了解密中的其他明文)。因此,即使原始XOR操作中使用的密钥是随机乱码,攻击者也可以使用具有随机乱码“删除”的文件,以便在他进行有根据的猜测时获取信息。

答案 1 :(得分:5)

您需要利用这两个文件都是纯文本的事实。从这个事实中可以得出许多含义。假设两个文本都是英文文本,您可以使用一些字母比其他字母更受欢迎的事实。请参阅this article

另一个提示是注意正确英文文本的结构。例如,每当一个语句结束,下一个语句开始时,就会有一个(点,空格,大写字母)序列。

请注意,在ASCII代码中,空格是二进制“0010 0000”,更改字母中的该位将更改字母大小写(从低到高,反之亦然)。如果两个文件都是纯文本,那么会有很多使用空间的XOR,对吗? 分析this page上的可打印字符表。

此外,最后你可以使用拼写检查。

我知道我没有为你的问题提供解决方案。 我刚刚给了你一些提示。玩得开心,请分享您的发现。 这真是一项有趣的任务。

答案 2 :(得分:4)

这很有趣。施奈尔的书确实说明这很容易打破。然后他就会把它挂在那里。我想你必须把一些练习留给读者!

Dawson and Nielson有一篇文章显然描述了文本文件此任务的自动化过程。购买单篇文章在$$方面有点儿。然而,第二篇题为A Natural Language Approach to Automated Cryptanalysis of Two-time Pads的论文引用了道森和尼尔森的作品并描述了他们做出的一些假设(主要是文本限于27个字符)。但这篇第二篇论文似乎是免费提供的,并描述了他们自己的系统。我不确定它是免费的,但它是在约翰霍普金斯大学服务器上公开提供的。

那篇论文长约10页,看起来很有趣。我现在没有时间阅读它,但可能稍后。我觉得有趣(并且告诉)它需要一篇10页的论文来描述另一个密码学家描述为“简单”的任务。

答案 3 :(得分:0)

我认为你不能 - 不知道这两个文件的结构。

答案 4 :(得分:-1)

除非你有一个明文文件,否则你无法获得另一个的原始信息。数学上表达了:

p1 XOR p2 = en

你有一个带有两个未知数的方程式,你不可能从中得到一些有意义的东西。