【问题标题】:Reusing the key if the IV is changed each time如果 IV 每次都更改,则重用密钥
【发布时间】:2020-05-01 12:47:40
【问题描述】:

我正在创建一个程序,该程序将加密文件夹中的文件并允许我稍后解密它们。

我目前正在使用 AES-GCM,我想知道是否使用相同的密钥但更改每次加密的 IV 是否是正确的方法?

我正在使用 mBedTLS 来执行此操作,并且我能够使用 AES-GCM 和硬编码密钥和 IV 成功加密/解密文件。但是出于安全原因,我想确保我正在更改需要更改的内容以及出于性能原因,而不是更改不需要的内容。

【问题讨论】:

  • 另一种方法是使用 KBKDF(例如 HKDF)通过组合主密钥和 Info 为每个文件派生另一个密钥,只要它对每个文件都是唯一的,它可以是任何东西.然后,您甚至可以将 nonce 设置为全零字节。优点是您可以选择任何加密方案/模式(尽管使用较大的密钥大小(例如 256 位)可能对此类方案有利)。

标签: encryption cryptography aes aes-gcm


【解决方案1】:

是的,

即使是单个 AES-GCM 随机数重用也可能是灾难性的,使用相同的静态密钥。

一个随机数重用会泄漏明文的异或,因此如果一个明文已知,对手可以完全解密另一个。

因此,每条消息只能使用相同的[nonce (IV), key] 元组一次。

完美 很好使用具有相同静态键的新随机数/IV。

AES-GCM 使用 32-bit 计数器运行,因此不幸的是,使用相同的密钥、随机数 (IV) 对,您只能安全地加密 ~ 64GB 的数据 (2^39-256 bits)

如果您想改用更安全的密码,我推荐 XSalsa20 或 XChaCha20,它们提供 192-bit 随机数大小,有效地允许使用相同的密钥、随机数对加密几乎“无限”数量的消息。

【讨论】:

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