我对已知明文攻击和选择明文攻击的概念感到非常困惑。在我看来,这两个是同一件事,但绝对不是。

谁能向我解释这两者有何不同?

评论

欢迎使用密码学堆栈交换。您的问题之所以被迁移到这里,是因为它与密码学的更多理论部分相关,而这在这里是热门话题(而在Security Stack Exchange上则不是那么多)。请在这里也注册您的帐户,以便能够发表评论并接受答案。

非常相似(但更通用)的问题:crypto.stackexchange.com/questions/13274/…

#1 楼

主动攻击者和被动攻击者之间的区别:


已知的明文攻击:攻击者至少知道明文和密文的一个样本。在大多数情况下,这是真实的通信记录。例如,如果使用XOR密码,它将显示密钥plaintext xor ciphertext
选择明文攻击:攻击者可以指定自己的明文并进行加密或签名。他可以精心制作它,以了解有关算法的特征。例如,他可以提供一个空文本,该文本包含一个“ a”,两个“ aa”,...。例如:如果使用Vigenère密码,则很容易提取密钥长度并恢复密钥。重复一个字母。

所以第二种攻击方式功能更强大。

评论


$ \ begingroup $
出于完整性考虑,请注意“已知明文”是“选择明文”的特例。
$ \ endgroup $
– B-Con
2012年6月10日23:39

$ \ begingroup $
@Pacerier我希望不会。
$ \ endgroup $
–Miles Rout
2014年4月12日在1:28

$ \ begingroup $
@Hendrik,那么,哪种加密可以防止选择的明文攻击?那有可能吗?
$ \ endgroup $
–起搏器
15年2月16日在23:17

$ \ begingroup $
迄今为止,@ Pacerier AES在CPA下被认为是安全的。请注意,Hendrik指出,如果您在此类攻击期间无法学到有用的信息,则该方案是CPA安全的。即使更改了一点,AES仍会“完全”产生完全不同的输出。
$ \ endgroup $
– Lekensteyn
16 Mar 8 '16 at 10:44

$ \ begingroup $
@Hendrik:“已知的明文攻击”只能应用于流密码,而不能应用于分组密码(AES,DES等)。请告诉我,对吗?
$ \ endgroup $
–rashok
16年8月12日在15:45

#2 楼

已知的明文攻击是,如果您知道任何已加密的明文并拥有生成的加密文件,则可以使用有缺陷的加密算法来破坏其余的加密。

示例:我们使用旧的pkzip加密方法看到了这一点。在这种情况下,如果存档中有任何未加密的文件,则可以使用它来获取破解其余部分的密钥。

选择的纯文本攻击是一样的事情,除了您可以选择明文,可能会有用。在这种情况下,攻击者确定将加密的内容,然后使用结果确定加密的密钥(或其他不太有用的信息)。

示例:一个很好的示例是XOR加密。如果您可以选择纯文本并查看结果,则可以使用它们来轻松确定所使用的密钥。

您还可以使用带有无盐哈希的已知明文攻击。因此,如果我选择一个密码并且可以看到生成的哈希,则可以搜索是否还有其他类似的哈希,因此知道它们具有相同的密码。

是的,它们基本上是同一件事,这实际上仅取决于您要使用的工作或要完成的工作。

评论


$ \ begingroup $
+1,但是xor是基于已知明文的攻击的标准示例:cyphertext = key xor明文暗含key =明文xor cyphertext。
$ \ endgroup $
–亨德里克·布鲁默曼
2012年6月10日在22:04



$ \ begingroup $
如果您知道纯文本$ X $及其加密形式$ Y $,其中$ Y = X \ oplus Z $,$ Z $是密钥,那么密钥可以作为$ X \ oplus Y $恢复,以及是否您可以选择$ X $(如在选择的纯文本攻击中那样),或者只是偶然地得到一些与您无关的$ X $(如在已知的纯文本攻击中)。您可以通过选择纯文本$ X = 0 $来将密钥直接获取为$ Y $来略微缓解生活(这与已知的纯文本攻击中执行$ X \ oplus Y $相对),但是我认为并非如此很大的优势。
$ \ endgroup $
– Dilip Sarwate
2012年6月10日22:08

#3 楼

正如其他人指出的那样,如果只有已知的纯文本和密文,则有一些密码可能会被破解。通常,因此,这些密码被认为非常脆弱,并且在任何地方都不会使用。或者我应该说,在使用它们的地方,密钥是随机生成(伪)的,并且只能使用一次。

但是,如果攻击者可以选择明文,则更常用的密码将变得不安全。特别是在这方面,公钥密码学有一个明显的弱点,因为对明文进行签名与对密文进行解密的操作完全相同。如果攻击者可以使目标签署任何用目标公钥加密的消息(即发送到目标)并检索签名,则攻击者已恢复了该消息的明文。这是将数字签名方案设置为仅对消息的哈希而不是整个消息本身进行签名的原因之一。

在更复杂的攻击中,使用大量选定的纯文本可以揭示密文中的模式,这些模式反过来又揭示了密钥的某些(如果不是全部)位。通常,尽管如此,所选明文的数量是巨大的:数百万至数万亿甚至更多。

易受已知明文攻击的密码当然易受所选明文攻击的影响,但更重要的是可以将其破坏无需访问加密设备。仅拦截通信会破坏密码。另一方面,选择的明文攻击确实需要访问加密设备,因此只要加密设备本身是安全的,就被认为是安全的。

评论


$ \ begingroup $
“对纯文本进行签名与对密文进行解密完全相同”。例如,RSA-OAEP是一种非对称加密算法,RSA-PSS是一种非对称签名算法,原始RSA并不是密码算法,而是一个人的构件。 (填充方案并不是区分基于RSA的签名和加密算法的唯一方法; Schneier建议使用不同的公共指数,而常识则避免为这两个目的使用相同的密钥。)
$ \ endgroup $
–吉尔斯'所以-不再是邪恶的'
2012年6月13日14:03

$ \ begingroup $
@ Gilles,RSA非常是一种加密算法。由于其许多缺点,它被用作构建块,但没有必要使用其他任何东西。 OP询问了选择的vs已知的明文攻击,以及使用RSA的原因之一是因为它很容易受到选择的明文攻击的影响,因此这是一个很好的例子,说明了选择的明文如何做已知的事情纯文本不能。
$ \ endgroup $
–主要专业
2014年3月24日22:27



$ \ begingroup $
好吧。原始RSA是一种加密算法,但不是(好的)加密或签名算法。关键点在于,对纯文本进行签名与对密文进行解密是不同的操作。它们通常使用不同的密钥(因为它们应该具有不同的管理策略),并且填充也不同。
$ \ endgroup $
–吉尔斯'所以-不再是邪恶的'
2014年3月24日22:59

$ \ begingroup $
@Giles相反,关键点在于,在最基本的RSA公钥加密中,对纯文本进行签名与解密密文完全相同。查一下
$ \ endgroup $
–主要专业
2014年3月25日在7:10

#4 楼

已知的明文攻击

您对受害者的嗅觉很多,但是每个受害者都是密文,因此您对他们一无所知。而且,您可以通过任何方式学习受害者的计划文本;但是您不知道明文是哪个密文。因此,您必须解决此问题。

选择明文攻击

您知道一个明文,并且知道该明文是哪个密文。然后尝试解决加密系统的算法。

评论


$ \ begingroup $
[-1]在KPA中,您确实知道哪个消息对应于哪个密文。因此,这个答案是错误的。这两个游戏之间的所有变化是谁提供消息列表
$ \ endgroup $
–密码学家
2014年3月24日10:38在