【问题标题】:Recover AES IV if only key and plaintexts are known如果只知道密钥和明文,则恢复 AES IV
【发布时间】:2015-05-07 00:31:35
【问题描述】:

如果我在AES-CBC模式下解密一个密文,并且第一个块的解密明文与原始已知明文不匹配,很明显用于解密的IV与加密时使用的IV不匹配。

用于加密或解密的 IV 都不为人所知。

如果我知道密文,我可以执行以下操作来查找加密期间使用的 IV(尝试过并且有效):

  1. 设置 IV=0
  2. x = 解密(密文,IV)
  3. originalIV = x xor originalPlaintext

如果我知道原始明文(加密前)、解密后的错误明文和密钥,是否有办法恢复加密中使用的 IV?

【问题讨论】:

  • 我投票结束这个问题,因为它是关于密码学而不是编程的。正确的论坛是 crypto.stackexchange.com,这将是一个很好的问题。
  • @ArtjomB。他的问题是如何在没有密文的情况下做到这一点。波奇:这不可能。 IV 与纯文本和密钥无关,它可以是任何可能的值。
  • 感谢@deviantfan,这似乎是正确的。我可以验证它,因为我最终在 1 个方程中得到了 2 个未知数。所以它无法解决。
  • 您可以只执行第 3 步,不是吗?你甚至不需要钥匙。
  • @MaartenBodewes 不,第 3 步需要从第 2 步获得的 x,而第 2 步又需要密钥和密文。但密文未知。

标签: encryption cryptography aes


【解决方案1】:

假设我理解了这个问题:这是绝对可能的,而且绝对是题外话。请注意,您不应该在程序员论坛上提出加密问题,否则您会得到各种错误的答案。

D 成为你的密码解密函数。如果您有已知的明文PT、密钥K 和CBC 模式下的密文CT,那么您可以通过以下方式恢复用于加密的第一个IV

IV0 = D(CT0) ^ PT0

在您的步骤中,我假设decrypt 您的意思是 CBC 模式。这是有效的,因为对于单个块 CBC_Decrypt(K,IV=0,CT) == D(K,CT)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多