我绝不是一名加密专家,我一直在阅读围绕Stack Overflow和维基百科的几个问题,但在定义IV及其用法方面,没有什么是真正“明确的”。
我发现的要点:
我确信还有许多其他要点,任何人都可以想到我错过的任何其他特征吗?
答案 0 :(得分:13)
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的众多罪行之一。