【发布时间】:2016-10-04 20:10:02
【问题描述】:
我希望更有效地生成随机密钥和随机 IV 用于加密。但是将随机密钥用作IV是否可行且安全?
【问题讨论】:
-
我投票结束这个问题,因为这不是关于编程的。它也是Problems with using AES Key as IV in CBC-Mode 的跨站点副本。
标签: encryption aes encryption-symmetric symmetric-key
我希望更有效地生成随机密钥和随机 IV 用于加密。但是将随机密钥用作IV是否可行且安全?
【问题讨论】:
标签: encryption aes encryption-symmetric symmetric-key
可以,但不安全。
通常的做法是对 iv 使用加密安全的随机字节序列,并将 iv 预先添加到加密数据中。这使得解密函数具有相同的iv。
通过使用随机 iv 如果相同的消息使用相同的密钥加密,则密文将不同,使用密钥将允许相同的密文。拥有相同的密文可能会泄露关键信息。
以效率换取安全并不是一个好主意,如果基准测试没有证明额外的效率是必要的,那就是过早的优化。
唐纳德·高德纳:
真正的问题是程序员在错误的地方和错误的时间花费了太多时间来担心效率;过早的优化是编程中万恶之源(或至少是大部分)。
【讨论】:
您的安全问题加倍。一个普通的 IV 可以通过密文消息按原样发送,通常附加在它前面。如果您的 IV 与密钥相同,那么您必须使 IV 与密钥一样安全,这意味着您不能进行通常的前置操作。您必须在“密钥交换”流程中添加“IV 交换”流程。
所有这些都是额外的工作。更容易使用标准 CSPRNG 生成您的 IV 并添加它。
【讨论】: