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

3
在 Erlang 的 加密 库中,没有 aes_cfb_ivec 函数。这是否意味着多轮加密应该使用相同的 IVec?或者应该像链接页面末尾的 "CBC 模式下的 DES" 示例一样使用最后一步加密的数据?
1个回答

2
IV不能被重复使用。否则,以相同的n个字节开头的两个数据包将加密成具有相同n个字节的流。这是一个严重的安全问题。
理想情况下,IV应该随机且均匀地选择(使用密码学强生成器)。但是,在CFB中,您可以使用前一个数据包的最后一个加密块作为IV。如果您查看维基百科文章中的图表,您会注意到将上一个数据包块重用作下一个数据包的IV等效于将两个数据包视为一个大消息的两个半部分,在一个运行中加密(在这方面,这等效于CBC加密)。
(只是为了明确,我谈论的是CFB-m,其中m是算法块大小。在CFB-x中,您为每个x位输入调用一次块密码;对于128位块密码(如AES),CFB-128是最有效的,因此最常用。)

否则,以相同n字节开头的两个数据包将被加密成具有相同n字节的流。我知道这一点,但在我们的情况下,这是可以接受的。 - Alexey Romanov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接