在CFB模式下加密多个数据包时,是否需要更改IV?

时间:2010-09-24 06:43:21

标签: erlang aes

在Erlang crypto库中,没有aes_cfb_ivec函数。是否意味着同一IVec应该用于多轮?或者是否应该使用最后一步的加密数据,如链接页面末尾的“CBC模式下的DES”示例?

1 个答案:

答案 0 :(得分:2)

IV MUST NOT 可以重复使用。否则,以相同 n 字节开头的两个数据包最终将加密为具有相同 n 字节的流。这是一个很强的安全问题。

理想情况下,IV应随机均匀地选择(使用密码强的发生器)。但是,使用CFB,您可以使用上一个数据包中的最后一个加密块作为IV。如果你看一下Wikipedia article中的图表,你会注意到将下一个数据包块重新用作下一个数据包就相当于将两个数据包视为一个大消息的两半,在一次运行中加密(在尊重,这相当于CBC加密)。

(为了清楚起见,我说的是CFB- m 其中 m 是算法块大小。在CFB- x 你对于每个 x 位输入调用块密码一次;对于128位块密码(如AES),CFB-128是最有效的,因此是最常用的。)