【问题标题】:Security of Exclusive-OR (XOR) encryption异或 (XOR) 加密的安全性
【发布时间】:2010-10-18 11:52:00
【问题描述】:

众所周知,XOR 加密非常弱。但是,如果我有一个由多个不同(理想情况下是素数)长度的密钥组成的密钥,这些密钥组合起来形成一个更长的密钥,那它有多弱。例如,我有一个长度为 5、9 和 11 的文本密钥。如果我只是使用 XOR 加密应用第一个密钥,那么它应该很容易破解,因为加密字节将每 5 个字节重复一次。但是,如果我“覆盖”这些键中的 3 个,我会得到 5*9*11 = 495 的有效非重复长度。这对我来说听起来很强大。如果我使用一首诗的几节诗句,每行作为键,那么我的非重复长度将比大多数文件大得多。这会有多强(前提是密钥保密!:)

【问题讨论】:

  • 有什么理由不使用例如AES?
  • @Kimvais 实际上很好.. (en.wikipedia.org/wiki/…)。但是在流和块密码中大量使用异或并没有取得惊人的成功。 OP 应该阅读有关流密码而不是“XOR 加密”的信息。

标签: security encryption private-key computability


【解决方案1】:

XOR 加密与密钥流一样强大。如果您使用“一次性密码”(仅使用一次的物理生成的随机数序列)进行异或运算,那么您的加密理论上是牢不可破的。但是,您确实存在隐藏和分发密钥的问题。

所以你的问题归结为 - “由三个文本字符串组成的密钥流有多安全/随机?”答案是“一点也不安全”。可能足以挡住你的小妹妹,但如果你有像我这样聪明的小妹妹,就不一定了。

【讨论】:

  • ) 我一直在阅读 this question - 我明白你所说的 3 个字符串不够强。但是,如果我使用诗歌示例并最终得到一个比被加密文件更长的有效密钥长度,它应该是相当安全的吧?
  • 不,绝对不是,但是在这篇文章中解释原因需要很长时间。这取决于你为什么要写它。如果您正在编写它以了解安全性,那么我将从一个单词版本开始,然后编写一个程序来破坏它,然后再到 2 个单词,编写一个程序来破坏它等等。你会弄清楚为什么是不安全的,并为自己学到很多东西。
  • 如果你真的想使用一个安全的算法,把你的诗,散列到一个密钥,然后使用一个免费的、经过良好测试的算法——例如en.wikipedia.org/wiki/Advanced_Encryption_Standard。您将受益于数百名聪明的头脑已经检查过它并且尚未发现任何问题。
【解决方案2】:

“已知明文”攻击呢?如果您知道同一字符串的加密和明文版本,则可以检索密钥。

http://en.wikipedia.org/wiki/XOR_cipher

http://en.wikipedia.org/wiki/Known-plaintext_attack

http://en.wikipedia.org/wiki/Stream_cipher_attack

【讨论】:

  • 是的,但是已知明文攻击只适用于确定用于编码已知明文的密钥部分。如果密钥是与消息一样长或更长的非重复序列,则此攻击没有价值。
  • 是的,但你可以抢走那条消息,有时这就是你所需要的;) 此外,一次性填充算法有其自身的问题,主要是对方如何知道什么密钥这一次。
【解决方案3】:

如果 P 和 Q 是两个独立的密码方法,则复合密码函数 P(Q(x)) 不会比 P(x) 或 Q(x) 中的强者弱,但不一定也变得有意义地更强。为了使复合密码函数获得任何强度,组成它的操作必须满足某些标准。任意组合弱密码,无论使用多少次,都不太可能产生强密码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多