Cryptography AES CBC中初始化向量的意义是什么?

Cryptography AES CBC中初始化向量的意义是什么?,cryptography,Cryptography,我计划使用对称加密将文件从计算机a传输到计算机B。密码是手动输入两台计算机的,永远不会在线传输。据我所知,IV不是机密信息,它将与加密数据一起传输,并且每次都应随机化以获得新的数据块。我的问题是。。为什么?我不能每次都给它一个街区的0吗?它必须有一些存在的原因。IV用于加密您传输的第一个数据块。用IV对第一块明文进行异或运算,然后对结果进行加密 每个消息都有一个唯一的IV确保第一个块从一个消息更改到下一个消息,即使内容和加密密钥都相同。否则,即使攻击者无法读取实际内容,消息也可能会受到流量分析的

我计划使用对称加密将文件从计算机a传输到计算机B。密码是手动输入两台计算机的,永远不会在线传输。据我所知,IV不是机密信息,它将与加密数据一起传输,并且每次都应随机化以获得新的数据块。我的问题是。。为什么?我不能每次都给它一个街区的0吗?它必须有一些存在的原因。

IV用于加密您传输的第一个数据块。用IV对第一块明文进行异或运算,然后对结果进行加密

每个消息都有一个唯一的IV确保第一个块从一个消息更改到下一个消息,即使内容和加密密钥都相同。否则,即使攻击者无法读取实际内容,消息也可能会受到流量分析的影响。一个典型的例子是消息格式,在这种格式中,每条消息的开头基本相同,但有一个“To:”字段告诉消息发送给谁,或者有一个“Re:”部分告诉主题

在这种情况下,随着时间的推移进行分析可能会揭示第一个块与流量类型、触发消息的事件等相关的模式。基于此,攻击者可以(例如)至少知道何时检测到不同类型的事件,即使无法直接解密/读取任何明文


摘要:每条消息都有一个唯一的IV,即使内容和密钥相同,也可以确保消息之间每个块的加密版本不同。

此外:CBC通过对上一个密文块(向量)进行异或,确保密文块不同于另一个密文块(即使其内容相同)用纯文本。显然,这对第一个块不起作用,因此如果密钥被重用以加密另一条消息,则需要一个IV(初始化向量)。次要说明:如果IV是静态的,则多个块可能等于先前加密的块,直到遇到以前未遇到的块为止。@owlstead:是--静态IV(也就是说,从一条消息到下一条消息没有变化)基本上是没有意义的。我认为IV类似于散列密码上的盐——在每种情况下,它基本上都会迫使攻击者查看每条消息(密码)在隔离状态下,不能将它们作为一个组来处理。哦,这很聪明。我检查了由内置在.net中的AES生成的加密字节,似乎IV在加密/解密时会自动应用,所以我不必手动将其与第一个块异或,对吗?@user81993:我没有使用.net,但它肯定是seems认为,给定一种运行模式和一个IV,它将在该运行模式下适当地使用IV。