我们可以使用密钥作为 AES 的 IV 吗?

Can we use the key as the IV for AES?

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

可以,但不安全。

通常的做法是对 iv 使用加密安全的随机字节序列,并将 iv 附加到加密数据之前。这允许解密函数具有相同的 iv.

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

安全性交易效率不是一个好主意,如果基准测试没有证明需要额外的效率,那就是过早的优化。

唐纳德·高德纳:

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature optimization is the root of all evil (or at least most of it) in programming.

你的安全问题加倍了。普通 IV 可以按原样与密文消息一起发送,通常放在它前面。如果您的 IV 与密钥相同,那么您必须保持 IV 与密钥一样安全,这意味着您不能进行通常的前置操作。您必须向 'key exchange' 流程添加一个 'IV exchange' 流程。

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