Cryptography AES加密如何传输IV

Cryptography AES加密如何传输IV,cryptography,aes,initialization-vector,Cryptography,Aes,Initialization Vector,我知道unique IV在加密中很重要,可以防止频率分析等攻击。问题:有一个非常清楚的答案解释了静脉注射的重要性 以明文形式发送IV是否存在安全漏洞?或者是否需要使用用于发送对称密钥的相同公钥/私钥对其进行加密 如果需要加密IV,那么为什么每次不生成一个新的对称密钥,并将IV作为密钥的一部分?是否生成对称密钥的成本太高?还是将传输的数据量降至最低 对国家的首要回答是: 一个典型的密钥建立协议将导致双方都计算一段他们(但只有他们)都知道的数据。对于Diffie-Hellman(或其任何椭圆曲线变

我知道unique IV在加密中很重要,可以防止频率分析等攻击。问题:有一个非常清楚的答案解释了静脉注射的重要性

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

如果需要加密IV,那么为什么每次不生成一个新的对称密钥,并将IV作为密钥的一部分?是否生成对称密钥的成本太高?还是将传输的数据量降至最低


对国家的首要回答是:

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

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



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

以明文形式发送IV没有安全漏洞-这类似于以明文形式存储用于散列的salt:只要攻击者无法控制IV/salt,并且只要它是随机的,没有问题。

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

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

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

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

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

在某些组中,这(称为计算Diffie-Hellman问题)似乎是一个困难的问题,我们正在密码学中使用这些组。(在原始DH中,我们使用某个大型有限素数域的乘法群的素数阶子群,在椭圆曲线DH中,我们使用有限域上的椭圆曲线群。其他群也可以工作(但其中一些群很弱,例如,在域的加法群中,求解起来很简单)。)


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

我过去使用的方案是每次生成一个随机密钥,并使用以前共享的公钥/私钥对密钥和iv进行加密。我从来没有感觉到这会显著增加AES的有效负载(对于我的使用),但可能极其有限的通信协议对大小有更严格的要求