【问题标题】:Can we use the key as the IV for AES?我们可以将密钥用作 AES 的 IV 吗?
【发布时间】:2016-10-04 20:10:02
【问题描述】:

我希望更有效地生成随机密钥和随机 IV 用于加密。但是将随机密钥用作IV是否可行且安全?

【问题讨论】:

标签: encryption aes encryption-symmetric symmetric-key


【解决方案1】:

可以,但不安全。

通常的做法是对 iv 使用加密安全的随机字节序列,并将 iv 预先添加到加密数据中。这使得解密函数具有相同的iv。

通过使用随机 iv 如果相同的消息使用相同的密钥加密,则密文将不同,使用密钥将允许相同的密文。拥有相同的密文可能会泄露关键信息。

以效率换取安全并不是一个好主意,如果基准测试没有证明额外的效率是必要的,那就是过早的优化。

唐纳德·高德纳:

真正的问题是程序员在错误的地方和错误的时间花费了太多时间来担心效率;过早的优化是编程中万恶之源(或至少是大部分)。

【讨论】:

    【解决方案2】:

    您的安全问题加倍。一个普通的 IV 可以通过密文消息按原样发送,通常附加在它前面。如果您的 IV 与密钥相同,那么您必须使 IV 与密钥一样安全,这意味着您不能进行通常的前置操作。您必须在“密钥交换”流程中添加“IV 交换”流程。

    所有这些都是额外的工作。更容易使用标准 CSPRNG 生成您的 IV 并添加它。

    【讨论】:

    • 是的,但它忽略了 IV 的要点,它允许对许多不同的消息使用单个密钥。使用 key=IV 时,您需要为每条消息更改为新密钥以确保安全。 IV 只对一条消息有用;一个键可以用于许多消息,只要它们不太大。
    • 是的,这不是答案的信息。答案是保守一些额外的秘密,而实际上并没有什么额外的东西。
    猜你喜欢
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多