为什么要使用初始化向量(IV)?


如何使用IV?
使用IV的优缺点是什么?
为什么代替IV?
如果IV随机性不足,那么各种安全属性会发生什么变化呢?如果是,这是IV和Key区别开的属性吗?
鉴于IV通常是公开的,是否存在涉及改变IV的中间人攻击的攻击?


评论

另请参阅我的问题-crypto.stackexchange.com/questions/726/…。它有一些相关信息

相关:密钥,IV和随机数之间的主要区别是什么?

#1 楼

许多密码算法表示为迭代算法。例如,当在CBC模式下用块密码对消息加密时,每个消息“块”首先与先前的加密块进行异或,然后对异或的结果进行加密。第一个块没有“上一个块”,因此我们必须提供常规的备用“第零个块”,我们称其为“初始化向量”。一般来说,IV是开始运行算法所需的任何数据,并且不是秘密的(如果是秘密,我们将其称为“密钥”,而不是IV)。

如果看一下MD5,您会发现它是一种迭代算法,具有“运行状态”(四个32位字),并按64字节块处理消息数据,每个块均产生下一个运行状态。最终状态是哈希输出。这必须以常规的初始状态开始,该状态在RFC的3.3节中进行了描述。

由于IV具有一定的成本(例如,它必须沿着消息进行传输),所以它不仅存在出于美学原因:使用IV的算法需要它来实现某种安全性,这可能意味着对IV可能具有的值有所限制。这实际上取决于算法。例如,对于MD5,IV是固定的,这不是问题。对于CBC,请参阅上一个问题的答案。由于统一的随机性是一个困难的要求(ale是稀缺资源,尤其是在嵌入式系统中),因此,如果加密算法仅需要非重复的IV(例如,简单的计数器),则这是一件好事。这就是诸如EAX之类的较新的加密模式。

IV可以公开,但没有什么可以强迫您公开。它的生命周期仍然不同于密钥,因为(对于对称加密)您需要为每个消息使用新的IV,但不一定需要新的密钥。例如,使用TLS 1.2,在隧道设置过程中会创建一个会话密钥(“握手”),然后将数据加密为如此多的“记录”(每个记录最多16 kB数据),并且每个记录都有自己的IV 。

评论


$ \ begingroup $
我将在您的security.se问题上添加一个链接,以显示滥用IV如何成功进行攻击,因为它很好地显示了破坏IV方案(例如WEP)的缺点。
$ \ endgroup $
–松饼
2014年10月1日14:14

$ \ begingroup $
这是我所见过的关于“初始化向量”的最好解释!感谢您的完整答复。
$ \ endgroup $
–BattleTested-битвапроверено
16年6月15日,11:50

#2 楼

好吧,使用IV的不同模式之间IV的确切原因略有不同。在较高的级别上,IV的作用是充当随机器,因此即使每个加密的消息相似,每个加密的消息也似乎被加密为随机模式。通常,当您对同一封邮件进行两次加密时(更通常地,当您加密的两封邮件相关时),IV会掩盖。

要回答您的特定问题: />如何使用IV?
这是指定给各种分组密码操作模式的输入之一。加密器和解密器都需要IV的副本来处理消息。这个IV不必是秘密的。 IV的确切操作模式取决于该模式。对于CBC模式,CBC模式将每个块与前一个密文块进行XOR。对于第一个块(没有前一个块),IV代表前一个密文块。
使用IV的优点/缺点是什么?
如果使用的操作模式是使用IV,必须使用IV;那么问题就变成了“我们发送一个明确的消息,还是让加密器/解密器就它们将如何计算IV达成共识”。后期的工作方式取决于他们的共识,以及满足IV的操作方式的要求的程度。如果问题是“为什么使用使用IV的操作模式”,那么,使用确定性加密方法,则当您两次加密同一条消息时就无法掩饰。即使不必担心,在加密相关消息(例如,前16个字节完全相同的消息)时,也很难掩盖。无需静脉注射即可解决。它确实包含非标准模式。
为什么使用IV而不是较长的密钥(其中密钥的某些部分是公开的?)?
因为需要为每条消息更改IV。
会发生什么IV是否具有足够的随机性?
这确实取决于操作模式。在一个极端情况下,我们具有GCM和CTR模式,如果IV完全可预测,它就不会在乎(另一方面,如果对两个不同的消息使用相同的IV,则安全属性将失败;因此,我们经常使用计数器生成GCM和CTR IV)。在另一个极端,我们有CBC,已知可预测的IV允许解密程序通过一些工作来恢复纯文本(这不仅是理论上的弱点,有人最近宣布了一种使用此弱点来恢复PayPal身份验证cookie的工具。 TLS 1.0)。
IV始终是公共知识吗?
它们不一定是公共知识。但是,它们是可以的,并且因为将它们从加密器传输到解密器的最简单方法就是将它们包括在密文中,所以它们通常是。
鉴于IV经常是公开的,是否有涉及到人的攻击?我希望中间加密攻击能够改变IV?
我希望任何加密机制也应包括一个完整性检查,以应对这种情况。如果对纯文本进行此检查,则IV中的任何更改也会修改纯文本,因此将对其进行检查。如果此检查是密文,则该检查将需要包括对IV的检查。


评论


$ \ begingroup $
“因为IV需要针对每条消息进行更改。”珀金不同意他的回答:“例如,对于MD5,IV是固定的,这不是问题。”
$ \ endgroup $
– Ethan Heilman
2011-09-20 17:13

$ \ begingroup $
我在考虑加密算法的IV,Tom提出了哈希算法中IV的更一般情况。
$ \ endgroup $
–雨披
2011-09-20 17:47