我希望更有效地为加密生成随机密钥和随机 IV。但是使用随机密钥作为 IV 是否可行且安全?
问问题
1005 次
2 回答
2
你可以,但它不安全。
通常的做法是对 iv 使用加密安全的随机字节序列,并将 iv 预先添加到加密数据中。这允许解密函数具有相同的iv。
通过使用随机 iv,如果使用相同的密钥对相同的消息进行加密,则密文将不同,因此密钥将允许相同的密文。拥有相同的密文可能会泄露关键信息。
为安全而交易效率不是一个好主意,如果没有证明基准测试需要额外的效率,那就是过早的优化。
唐纳德·克努斯:
真正的问题是程序员在错误的地方和错误的时间花费了太多时间来担心效率。过早优化是编程中万恶之源(或至少是大部分)。
于 2016-06-05T02:17:31.643 回答
0
你的安全问题加倍。普通的 IV 可以使用密文消息按原样发送,通常附加在它的前面。如果您的 IV 与密钥相同,那么您必须使 IV 与密钥一样安全,这意味着您不能进行通常的前置操作。您必须在“密钥交换”流程中添加“IV 交换”流程。
所有这些都是额外的工作。更容易使用标准 CSPRNG 生成您的 IV 并预先添加它。
于 2016-06-05T15:46:51.497 回答