38

我了解唯一 IV 在加密以防止诸如频率分析之类的攻击方面很重要。问题:对于 AES CBC 加密,IV 的重要性是什么?有一个非常明确的答案来解释 IV 的重要性。

以明文形式发送 IV 是否存在安全漏洞?或者是否需要使用用于发送对称密钥的相同公钥/私钥对其进行加密?

如果 IV 需要加密发送,那么为什么不每次都生成一个新的对称密钥并将 IV 视为密钥的一部分呢?生成对称密钥的成本是否太高?或者是为了尽量减少传输的数据量?


秘密与非秘密初始化向量的最佳答案状态:

典型的密钥建立协议将导致双方都参与计算一条数据,但只有他们都知道。使用 Diffie-Hellman(或其任何椭圆曲线变体),所述共享数据块具有固定长度,并且它们无法控制其值(它们只是获得相同的看似随机的位序列)。

两个实体如何在没有共享信息的情况下得出“相同的看似随机的比特序列”?共享信息是加密发送的假设吗?而且,如果共享信息是加密发送的,为什么不直接发送 IV 加密呢?


因为应用程序需要安全地传输对称密钥,所以将 IV 与密钥本身分开似乎本质上是一种优化。还是我错过了什么?

4

2 回答 2

37

以明文形式发送 IV 不会存在安全漏洞——这类似于以明文形式存储哈希的盐:只要攻击者无法控制 IV/盐,并且只要它是随机的,就没有问题。

于 2012-01-10T14:13:26.187 回答
33

初始化向量和密钥之间的主要区别在于密钥必须保密,而 IV 不必保密 - 攻击者可以读取它,而不会对相关加密方案的安全性造成任何危险。

这个想法是您可以对多条消息使用相同的密钥,只为每个消息使用不同的(随机)初始化向量,因此纯文本之间的关系不会显示在相应的密文中。

也就是说,如果您使用像 Diffie-Hellman 这样的密钥协商方案,无论如何它都会为每个会话提供一个新的共享密钥,您也可以使用它来生成第一个初始化向量。与直接选择初始化向量并将其与消息一起发送相比,这并没有真正提供太多的安全优势,但可以节省一些带宽,以及来自随机源的一些熵。如果其中一个合作伙伴的随机性来源不好(尽管在这种情况下 DH 也不是真正安全的),它会使 IV 更加随机。

两个实体如何在没有共享信息的情况下得出“相同的看似随机的比特序列”?共享信息是加密发送的假设吗?而且,如果共享信息是加密发送的,为什么不直接发送 IV 加密呢?

Diffie-Hellman 基于群论问题:Eve 知道G带有生成器的(循环)群,g并看到两个值g^a(从 Alice 传输到 Bob)和g^b(从 Bob 传输到 Alice),其中ab是随机选择的大整数爱丽丝和鲍勃,夏娃甚至其他合伙人都不知道)。那么共享的秘密就是(g^a)^b = g^(a·b) = (g^b)^a。显然 Bob(谁知道b)可以计算秘密为(g^a)^b,而 Alice(谁知道a)可以计算(g^b)^a。Eve 不知何故需要得出这个秘密来破解协议。

在某些组中,这(称为计算 Diffie-Hellman 问题)似乎是一个难题,我们在密码学中使用这些组。(在原始 DH 中,我们使用一些大型有限素数域的乘法群的素数阶子群,在椭圆曲线 DH 中,我们使用有限域上的椭圆曲线群。其他群也有效(但其中一些是弱,例如在一个领域的加法组中,它是微不足道的)。)

然后 Alice 和 Bob 都使用密钥推导函数来推导实际的密钥材料(即双向加密密钥、MAC 密钥和起始 IV)。

于 2012-01-10T20:52:29.570 回答