0

AES 的 CBC 模式指定要使每条消息唯一,应使用 IV。IV应该是随机的并且只使用一次,否则它可能允许人们解密使用相同密钥的其他密文。

C中的rand()函数是否适合生成此 IV?它通常以当前时间播种的事实是否使其容易受到某种攻击?

4

1 回答 1

2

快速回答是否定的。不要对初始化向量使用非密码安全的随机生成器。初始化向量未加密发送,因此可以认为它们可以由这些函数之一生成。但这应该会导致弱点,我将解释:如果您使用较差的(并且rand()是如此弱的随机例程),您将缩小您正在生成的可能 IV 的空间。一个例子就足够了:

假设您在某些加密消息中使用 8 字节 IV。但是您使用的随机函数有一个 8 位种子,只有 256 个可能的字节序列可以从如此差的随机函数生成,所以可能最多只能生成 256 个可能的 IV(即使它们显示纯随机性,或在整个空间上广泛分布的散列值)知道这一点的攻击者可以复制可能的 IV 的整个 256 空间,使它们完全无用。

于 2017-07-17T06:23:42.977 回答