Encryption AEAD模式安全

Encryption AEAD模式安全,encryption,cryptography,encryption-symmetric,botan,Encryption,Cryptography,Encryption Symmetric,Botan,我读书的时候,, 我看到了下面的便条: 在解密过程中,如果MAC未验证,finish将抛出完整性失败的实例。如果发生这种情况,则必须销毁以前通过调用update输出的所有明文,并且不得以攻击者能够观察到的任何方式使用 确保这种情况永远不会发生的一种简单方法是从不调用update,而是始终将整个消息打包到单个缓冲区中,并在解密时调用finish 由于这种情况出现在解密中, 这是否意味着如果攻击者有权访问文件,AEAD模式是不安全的 还是我误解了什么 提前感谢。此警告的要点是,在您验证任何信息之前,

我读书的时候,, 我看到了下面的便条:

在解密过程中,如果MAC未验证,finish将抛出完整性失败的实例。如果发生这种情况,则必须销毁以前通过调用update输出的所有明文,并且不得以攻击者能够观察到的任何方式使用

确保这种情况永远不会发生的一种简单方法是从不调用update,而是始终将整个消息打包到单个缓冲区中,并在解密时调用finish

由于这种情况出现在解密中, 这是否意味着如果攻击者有权访问文件,AEAD模式是不安全的

还是我误解了什么


提前感谢。

此警告的要点是,在您验证任何信息之前,您不能信任它。请注意,AEAD密码的基本模式通常是CTR模式(其他模式也受到类似影响)。例如,攻击者可以在密文中引入错误,这些错误在同一位置转化为明文中的错误。大多数AEAD密码在下面使用CTR模式,所以攻击者可以通过这种方式翻转明文的特定位

例如,攻击者可以通过监视在处理现在无效的数据时发生的特定错误来了解明文。这就是警告的内容:在处理解密数据之前,首先需要确定其完整性和真实性

当然,这通常意味着缓存数据,直到数据被验证。出于这个原因,首先创建一个缓冲区并用密文加载它更有意义。如果你有一个好的API,你可以用明文覆盖它,这样你就不必分配两次存储空间

当然,您仍然可以将明文存储在磁盘上,只要确保在标记无效时删除对数据的访问。例如,您可以将数据存储在临时文件中,然后在验证标记后将其重命名为正确的文件名



总之,不,AEAD模式比任何其他未经身份验证的操作模式更安全,因为您可以验证消息的完整性和真实性。但是你仍然可以不正确地使用密码,这就是问题所在。

你说的“这种情况出现在解密中”是什么意思?什么情况是不确定的?@MaartenBodewes正如文件所说,我们应该防止攻击者在解密过程中观察先前输出的明文。那么攻击者可以模拟解密过程并获得一些信息吗?不,它没有这么说。如果验证失败,则明文应“不以攻击者可以观察到的任何方式使用”。也就是说,如果您对格式错误的数据采取行动,攻击者可能会因此学到一些东西——攻击者从这种情况中得到什么完全取决于应用程序。在查看解密数据之前,请确保完整性保持不变,API在完整性检查之前生成数据这一事实一开始就令人担忧,但我知道流媒体使用有时需要这样做。换句话说,在验证完整性之前,不要开始将数据发送到解析器/反序列化器等(在AEAD中:解密完成,没有错误)。理想情况下,您也不会让它缓冲到文件中,因为这可能会被观察到;但如果出于RAM限制的原因需要,请确保没有其他人可以看到它,如果出现问题,请将其烧掉。非常简洁的回答。我误解了它的含义。谢谢