除了随机化IV之外,是否有任何安全方法可以获得用于CBC模式的IV值(例如3DES CBC)?
答案 0 :(得分:1)
NIST的special publication 800-38a讨论了附录C中生成IV的方法。提出的一种方法是使用计数器或随机数,对其进行加密并将结果用作IV。与例如相反在CTR模式下,潜在对手无法预测IV。
如果使用可预测的IV,则存在攻击。请参阅示例this paper。 (我会尝试找一个更易于访问的版本)。
答案 1 :(得分:0)
如果你想让它们变得不可预测(对任何其他人)但确保它们不会重复,你可以用一个随机密钥(为每个消息密钥生成一次)加密一个块计数器来生成IV。确保将计数器保存在持久存储中。
答案 2 :(得分:0)
任何从不重复且没有结构的东西都会起作用(我不明白为什么不可预测性很重要 - 只要消息也经过身份验证(它们应该是这样))。
如果您知道每秒不会发送多条消息,则可以使用unixtime(哈希并使用前几个字节)。
如果您可能在多个线程/进程/机器上运行,则可能需要包含一个threadid / processid / machineid。
如果您有权生成GUID,则对此进行散列并使用前8个字节也可能是一个不错的选择。
答案 3 :(得分:0)
您可能希望查看计数器模式,而不是CBC。计数器模式允许随机访问加密数据,并且可以并行化。