初始化向量的特征

时间:2010-05-07 21:15:49

标签: encryption random cryptography initialization-vector

我绝不是一名加密专家,我一直在阅读围绕Stack Overflow和维基百科的几个问题,但在定义IV及其用法方面,没有什么是真正“明确的”。

我发现的要点:

  • 为了加强加密,将IV添加到明文消息之前
  • IV是真正随机的
  • 每条消息都有自己独特的IV
  • 时间戳和加密哈希值有时会被用来代替随机值,但是这些被认为是不安全的,因为时间戳可以被预测
  • WEP(在802.11中)的一个弱点是,IV将在特定数量的加密后重置,从而重复IV

我确信还有许多其他要点,任何人都可以想到我错过的任何其他特征吗?

1 个答案:

答案 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的众多罪行之一。