【问题标题】:Does IV work like saltIV是否像盐一样工作
【发布时间】:2010-12-29 07:26:12
【问题描述】:

在 AES 中,我的理解是 salt 是使密码更安全的东西,它不会被添加到加密文本中。但是IV是用来加密第一个消息块的东西,将被添加到加密文本中。

我有什么问题吗?

【问题讨论】:

    标签: encryption aes


    【解决方案1】:

    AES 本身不直接使用盐(或者实际上是 IV)。

    当您使用 基于密码的加密 (PBE) 时,您可以将盐与 AES 结合使用。在这个方案中,人类记忆的密码与盐结合使用,以生成 AES 密钥。使用盐是为了使相同的密码不会总是生成相同的密钥;但是,由于接收者必须能够生成正确的密钥,因此盐必须与加密数据一起传输。

    如果您在某些分组密码模式(如 CBC)中使用 AES,则需要 IV。在这种情况下,它用于确保相同密钥下的相同明文数据并不总是加密为相同的密文。同样,接收方需要 IV 才能正确解密数据,因此它必须与加密数据一起传输。

    因此,如果您在 CBC 模式下使用带有 AES 的 PBE 作为基础密码,您可能需要同时发送 PBE salt 和 CBC IV 以及加密数据。

    【讨论】:

    • 如果 salt 和 IV 都与加密数据一起发送,那么拥有它们有什么意义?因为攻击者很容易从数据中得到salt和IV,那么唯一的工作就是获取passphrase,这和没有salt和IV的方法不一样?
    • 再次仔细阅读我的回复。使用盐因此相同的密码并不总是生成相同的密钥 - 这意味着,除其他外,攻击者无法离线构建密码到密钥的字典。 IV 同样确保相同的明文不会产生相同的密文 - 这意味着攻击者无法建立一组婴儿床。这些不会阻止蛮力攻击(你不能这样做) - 但它们可以最大限度地提高蛮力攻击所需的时间/内存,并有效地防止一些预计算。
    • 感谢您的快速回复。我的理解是一种没有盐的加密,IV 将类似于方程 f(data) = x(passphrase) 而有盐和 IV 的一个将是 f(data) = x + y(salt) + z(IV) 你得到y 和 z,那么第二个方程将与第一个方程相同。我在这里有什么误解吗?
    • 是的,你误解的是第二个等式实际上是X'(data, passphrase, salt, IV) - 盐和IV的影响不能分开考虑。
    • 盐和静脉注射不是多余的吗?如果我在 AES CBC 模式下使用 PBE,并且始终使用相同的 IV,但始终使用随机生成的盐,这还不够吗?生成的密码都是唯一的,因为我永远不会加密相同的明文两次。我在这里错过了什么?
    【解决方案2】:

    我不太明白你在说什么,但这里是一个概述。

    盐用于加密散列,以消除使用rainbow table 破解方法成功的可能性。 (彩虹表是密码哈希的反向查找表)

    IV 用于对较大文件进行加密,以避免相似部分加密到相同的内容。

    它们非常相似,但有以下区别。

    盐通常在加密之前或之后添加(据我所知)。这意味着加密也是在盐上执行的。

    IV 总是与加密结果进行异或运算。之所以后来做,是因为只有第一个块使用 IV,其余的使用前一个块进行异或。

    区别很重要,因为与密码的加密形式进行异或运算的盐很容易被破解,并且 IV 旨在阻止模式识别样式攻击与密码文件的字典攻击。

    【讨论】:

      【解决方案3】:

      没有。 IV 防止其他相同的消息看起来相同。这会泄露信息,特别是您多次传输同一消息的事实。

      【讨论】:

      • 同一明文上的 2 个不同的 IV 将产生 2 个不同的密码,就像 2 个不同的盐也会这样做。我认为你没有很好地回答这个问题。
      【解决方案4】:

      要添加到@Guvante 答案,IV 专门用于 CBC 模式(密码块链接模式) 并且与 EBC 模式相比,它增加了更多的安全性(如果两个相同的块使用相同的密钥加密,它们会产生相同的密码),IV 修复了这个问题。

      Salting 更像是一个哈希术语,用于对抗彩虹攻击,它不会使黑客攻击成为不可能,但会使发现相同密码之间的模式变得不可行,因此相同的明文密码不会产生相同的哈希。 它们非常相似,但了解它们的使用和实现很重要。

      【讨论】:

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