Encryption 对于AES CBC加密,IV的重要性是什么?

Encryption 对于AES CBC加密,IV的重要性是什么?,encryption,cryptography,Encryption,Cryptography,始终对IV使用全零的安全威胁是什么?如果它允许解密加密的文本,攻击者怎么能做到这一点 更新:那么,如果第一块未加密的数据有一个从未重复的时间戳,是否仍然需要IV?不容易,但它确实会暴露有关消息的信息,这是加密试图避免的 假设您使用相同的密钥和零IV。嗅探流量的人可能会注意到消息以相同的密文开头。这给了他们一些信息。通过随机化静脉注射,这种信息泄露消失了。通过更多地了解明文数据的结构,可以发起更强大的攻击。此外,如果您以这种方式发送多条消息,由于方差减小,攻击者可能会慢慢了解有关正在使用的密钥的更

始终对IV使用全零的安全威胁是什么?如果它允许解密加密的文本,攻击者怎么能做到这一点


更新:那么,如果第一块未加密的数据有一个从未重复的时间戳,是否仍然需要IV?

不容易,但它确实会暴露有关消息的信息,这是加密试图避免的


假设您使用相同的密钥和零IV。嗅探流量的人可能会注意到消息以相同的密文开头。这给了他们一些信息。通过随机化静脉注射,这种信息泄露消失了。通过更多地了解明文数据的结构,可以发起更强大的攻击。此外,如果您以这种方式发送多条消息,由于方差减小,攻击者可能会慢慢了解有关正在使用的密钥的更多信息(只有纯文本不同,而不是纯文本和IV

如果IV始终为零,则所有消息的开头都有公共文本)(例如,“发件人”或“发件人:”信息前两个或三个密码块相同的电子邮件)将进行同样的加密。这会让攻击者利用您的密钥。这是无条件的错误。只要您使用合理的随机IV,攻击者就会失去这种利用。不要冒险。

一旦攻击者拥有一条明文消息和匹配的密文(可能她在其他地方截获了它,如目的地),她将能够知道何时发送具有相同起始序列的任何其他邮件。由于她可以了解有关加密邮件内容的信息,因此这是不安全的

它还允许攻击者执行频率分析。例如,假设您的明文消息是发送到股票市场平台后端的命令,因此它们都以
“COMMAND=BUY”
“COMMAND=SELL”开头
。这意味着加密消息仅以两个不同的密文序列开头。攻击者无法直接解密它们-但如果她以后能够通过观察市场数据观察到你下了多少销售订单,她将能够返回并计算出哪个是哪个,从现在起她将确切知道哪个是哪个顺序当你放置它们时,你正在放置它们


频率分析是简单的替换密码是如何被破坏的,这不是巧合——使用固定的IV意味着消息的初始部分实际上只是使用替换,一次使用一个块。

CBC的目的是随机化输入块,因为给定的输入块总是使用给定的k进行相同的加密ey(AES是确定性的)。输入块通过与前一个输出块XORing随机化。第一个没有前一个块的块通过与IV XORing随机化


因此,使用非随机IV意味着不随机化第一个块。如果从不使用同一个密钥两次,即每次加密新消息时都使用新密钥,则全零IV不是问题。只有当有两个非随机输入块使用s加密时,非随机化输入块的问题才相关ame键。如果对单个消息使用给定的键,则只有该消息的第一个块是非随机的,因此没有问题。但这是一个很大的“如果”。特别是,如果您可以为每条消息生成一个新密钥,那么您可能也可以为每条消息生成一个新的IV。需要一个非常具体的场景来证明在CBC中使用全零IV是正确的。

作为一个旁注,如果您需要问这类问题,您可能不应该直接使用加密原语。查看using一个更高级别的库。@nick我同意,我之前问了一个关于更高级别库的问题,我可以用()来实现。如果你有一些随机字符(例如,随机时间戳)在第一个区块中,这将替代IV提供的随机性。但是你也可以使用IV,因为如果它最终是非随机的,会怎么样。就像你决定使用当前时间一样。