AES,密码块链接模式,静态初始化向量和更改数据

问题描述 投票:2回答:3

当使用AES(或可能是大多数的任何密码),这是不好的做法,重新使用初始化向量(IV),对于给定的关键。例如,假设我加密的数据块使用密码块链接(CBC)模式的给定IV。对于数据的下一个块中,IV应当改变(例如,随机数可以被增加或东西)。我不知道,不过,(而且大多出于好奇),多少存在安全隐患的是,如果使用相同的IV,如果可以保证的是,前四个字节的块被递增。换句话说,要被加密的数据的假设2块是:

0x00000000someotherdatafollowsforsomenumberofblocks
0x00000001someotherdatathatmaydifferormaynotfollows

如果相同的IV用于两个数据块,有多少信息会被泄露?

encryption cryptography aes
3个回答
3
投票

在这种特殊情况下,它可能是确定(但不这样做,反正)。 “有效IV”是您的第一加密块,其被保证是为每个消息不同(只要该随机数相同的密钥下真正永不重复),因为块密码操作是双射。因为你改变的关键,同时为你改变“IV”,因为即使是完全可预测的输入攻击者不应该是能够预测的分组密码的输出这也是不可预测的,只要(分组密码表现为伪随机函数)。

它是,但是,很脆弱。有人长谁是保持这个协议你已经转移到择木而栖后很可能不明白的安全很大程度上取决于非重复的随机数,并可以“​​优化”了出来。正在发送一个额外的块中的每个消息的真实IV真正的开销,你买不起?


2
投票

马克,你描述的是几乎什么是Appendix C of NIST SP800-38a建议。具体地讲,有两种方法来产生的IV:

  1. 产生一个新的随机IV为每个消息。
  2. 对于每一个消息中使用新的唯一随机数(这可能是一个计数器),加密随机数,并使用该结果作为IV。

第二个选项看起来非常相似,你提出了什么。


1
投票

嗯,这取决于加密算法的块大小。对于64个字节通常的块大小我不认为这将使任何区别。第一比特将是许多块中相同的,在进入块密码之前,但结果不会有任何可识别的图案。对于块大小<4个字节(我不认为出现这种情况),将有所作为,因为第一个块(或多个)将始终是关于模式相同,泄露的信息。只是我的观点。

编辑:

发现了这个

“对于CBC和CFB,重用IV泄露关于明文的第一个块的某些信息,和关于由两个消息共享任何共同的前缀”

来源:我的大学讲座:)

© www.soinside.com 2019 - 2024. All rights reserved.