当使用AES(或可能是大多数密码)时,对于给定的密钥重用初始化向量(IV)是不好的做法。例如,假设我使用密码块链接(CBC)模式以给定的IV加密了一块数据。对于下一个数据块,应更改IV(例如,随机数可能会增加或有所增加)。但是,我想知道(并且大多数出于好奇)如果可以确保块的前四个字节递增,则使用相同的IV会带来多大的安全风险。换句话说,假设要加密的两个数据块是:

0x00000000someotherdatafollowsforsomenumberofblocks
0x00000001someotherdatathatmaydifferormaynotfollows


如果两个数据块使用相同的IV,将泄漏多少信息?

最佳答案

在这种情况下,可能就可以了(但是还是不要这样做)。 “有效IV”是您的第一个加密块,由于每个分组消息都是双射的,因此保证每个消息都不同(只要随机数确实永远不会在同一密钥下重复)。只要您在更改“ IV”的同时更改密钥,它也是不可预测的,因为即使使用完全可预测的输入,攻击者也将无法预测分组密码的输出(分组密码的行为类似于伪随机函数)。

但是,它非常脆弱。在您转移到绿色牧场之后很长时间仍在维护此协议的人可能不了解安全性在很大程度上取决于该非重复随机数,因此可以对其进行“优化”。为真正的IV发送每个消息额外的单个块真的是您负担不起的开销吗?

关于encryption - AES,密码块链接模式,静态初始化向量和更改数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2144101/

10-13 06:37