IV 是“影响加密过程的公共价值”。IV 的要点通常是“随机化”输入数据,以避免泄漏有关哪些输入块在明文中相同的信息(因为相同的块在“现实生活”数据中经常发生)。
IV 是通过前置还是以其他方式输入,取决于使用它的算法。对于在 CBC 模式下使用块密码的对称加密,IV 被添加到加密数据之前(对于每个块,CBC 使用前一个加密块;IV 扮演加密块 -1 的角色)。
IV 与密钥的不同之处在于密钥是秘密的,而 IV 不需要是秘密的;IV 通常与加密消息一起传输。相反,IV 对于每条消息都必须是不同的,而密钥可以重复使用。实际上,对于使用相同密钥加密的每条消息,IV 必须是不同的;如果您为每条消息使用一个新密钥,那么您可以使用一个恒定的、固定的 IV。请注意,IV不必保密,但您可以根据需要保密。但是发送者和接收者必须就 IV 达成一致,并且由于每个消息的 IV 都会发生变化,因此在某些设置中,将 IV 保密可能会很不方便。
IV 是否必须是一致随机的,或者只是不重复的,取决于算法。CBC 需要随机 IV。其他模式不那么挑剔,例如 GCM。您可以使用适当的单向函数从“主密钥”派生密钥和IV。这就是 SSL 所做的。看起来比较棘手,不要在家里尝试。
重复 IV 是 WEP 的众多罪恶之一。