我的问题可能与“利用一次性键盘重用的优势?”相同,但实际上我确实阅读了所有答案,但这些答案都没有帮助我提供所需的详细信息。

我是密码学的新手,我的问题是有两次对OTP进行时间片攻击。然后我又得到了一个我应该解密的密文。

我知道对两个密文进行XOR运算后,我得到了其原始消息的XOR。

我的问题是

我试图取3个密文$ C_1,C_2 $和$ C_3 $。

然后得到$ S_1 = C_1 \ oplus C_2 \ oplus $ ' ',也会得到$ S_2 = C_1 \ oplus C_3 \ oplus $ ' '。之后,我比较了$ S_1 $和$ S_2 $中的所有对应字符,以及
$ S_1 [ i] = S_2 [i] $,然后我计算$ S_1 [i] \ oplus C_2 [i] $得到$ K [i] $。

我在编码前在纸上进行了尝试,并且有效,但我可能会遗漏某些东西。

这是正确的方法吗?为什么起作用?

评论

如果string1 [i] == string2 [i],则仅意味着C2 [i] == C3 [i](因此M2 [i] == M3 [i])。您无需进行任何XOR操作即可检查该事实。 C2对string1进行XOR运算后,您会得到C1 XOR“空格”,乍一看似乎与key [i]不相关。我还没有详细讨论该类的EC分配,但是我认为您应该利用这样一个事实,即按“空格”进行XOR运算只会更改原始字符的大小写。您可以使用该事实来分析XOR或两个纯文本消息,这是通过对它们的两个各自的密文进行XOR来获得的。

是的,您完全正确。我误认为那部分,但这是我第一次进行密码学试验。我现在知道了

“类”是否包含免责声明,该方法需要具有$ m_1 \ neq m_2 $才能使该方法起作用?

@DilipSarwate:如果$ m_1 = m_2 $,则该密钥仍仅使用一次。因此,很明显,$ m_1 \ neq m_2 $

#1 楼

嗯,经典的答案是“在收到两个原始消息的XOR之后该怎么做”,这是在拖拉婴儿床。

,您猜测一个常用短语是可能以一种纯文本形式出现(针对ASCII英文的经典示例是5个字母“ the”),并且在不同位置对两个原始消息的XOR进行异或。如果其中一个明文具有婴儿床的文本(在我们的示例中为“”),那么异或的结果就是该位置的其他明文;如果两个明文都没有,则“异或”的结果很可能是乱码。并且,一旦有了一个合理的短节,就可以对其进行扩展(例如,如果您知道明文之一是“ na **”,则可以浏览所有以“ na”开头的单词的字典,使用用作婴儿床,然后查看是否使其他明文有意义。

此外,您通常可以直接从位模式中推断出事物。例如,如果消息为ASCII,则需要注意的一点是,设置了字母的第6位,但清除了空格,数字和(大多数)标点的第6位;因为空格比数字和标点符号更常见,所以您可以很好地猜测文本中空格的位置(尽管不告诉您特定空格出现在哪条消息中)。

现在,如果您有11条消息都使用相同的填充板(“ 11次填充”)进行了加密,则事情会变得更加容易。显然,您可以在一条消息上抓一张婴儿床,然后对另外10条消息进行检查。如果这10个都有意义,那么几乎可以肯定是准确的。更好的是,通过观察可以区分空格和字母(同样,通过比较位6),您可以找到所有空格出现在消息中的位置。这些都像一个字符的婴儿床,可能实际上揭示了所有消息的所有文本。

评论


$ \ begingroup $
非常感谢,我解决了这个问题。正如您所说,我从“”开始,得到了“ robab”,我猜是“可能”。我一直在猜测,直到解决了整个问题。再次感谢。
$ \ endgroup $
– Samer Makary
2012年4月1日在20:23

$ \ begingroup $
此外,请考虑更常见文件的内容-有时一堆二进制文件使用相同的OTP进行XORd。如果您知道类型,某些标头模式可以使超级轻松地确定密钥,例如,某些图像类型具有一长串空字节。
$ \ endgroup $
–deed02392
2014年3月13日在8:22

#2 楼

通常,即使$ m_1 \ oplus m_2 $的已知信息不足以唯一地确定$ m_1 $和$ m_2 $,即使已知两者都是英文文本。举一个简单的例子,$$ \ text {“ one one”} \ oplus \ text {“ two two”} = \ text {“ one two”} \ oplus \ text {“ two one”}。$$

但是,实际上,可能有可能对$ m_1 $和$ m_2 $获得相当好的猜测;典型的方法与用于破解经典密码的方法类似,并且依赖于以下事实:英文文本(以及许多其他类型的数据)中存在很多冗余。

例如首先,猜测其中至少一条消息可能包含单词“ the”,并可能用空格包围。因此,可以使用五个字符的字符串“  the ”,将它与$ m_1 \ oplus m_2 $的每个五个字符的子字符串进行XOR运算,然后查找看起来像英语的结果(通过肉眼或使用统计分析的计算机)。 />
现在,假设这样获得的五个字符的子字符串之一是“ messa”。现在我们(或一台计算机)可以猜测接下来的两个字符可能是“ ge”(或也许是“ gi”)。现在,我们可以对$ m_1 \ oplus m_2 $的后两个字符进行XOR运算,看看结果是否自然地适合于“  the ”之后;如果结果是“ la”,则我们可以暂时假设我们的猜测是正确的;如果是“ q%”,我们可能猜错了。我们可以通过这种方式来确认并进一步扩展我们的猜测,也许最终可以将单独的猜测片段连接在一起,直到我们对两条消息的全部或至少大部分内容有了合理的猜测为止。

#3 楼

我刚遇到这个问题,并且感到惊讶的是,没有人引用该论文:Mason等人的《自然语言方法对两次填充进行自动密码分析》。在ACM CCS 2006上。这显示了如何以自动化和智能的方式解决此问题。

评论


$ \ begingroup $
请不要仅仅丢弃链接/参考作为答案,而应至少总结一下链接资源的内容(/总体思路)。
$ \ endgroup $
– SEJPM♦
16年1月31日在10:49

$ \ begingroup $
所述文件已经在OP中链接的问题的答案中被引用。该问题更特定于特定的家庭作业问题,其中预期的方法基于寻找空间。
$ \ endgroup $
– CodesInChaos
16年5月12日在7:58