首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AEAD如何保证认证加密和普通AES没有?

AEAD如何保证认证加密和普通AES没有?
EN

Cryptography用户
提问于 2019-12-11 21:35:44
回答 1查看 492关注 0票数 0

这是对我刚才问题的跟进。与其他模式(如CBC或ECB)相比,这更多地是出于对AEAD (如CCM或GCM)工作方式的好奇。

假设您有AES-256-CBC加密的数据块,每个数据块都加密了一个适当的值(没有冲突)。与相同的数据块相比,使用AES-256-GCM加密数据的安全性和非认证性如何降低?其他模式都无法阻止的对抗性攻击是什么?

据我所知,如果对手用另一个有效的密文替换整个密文块,这将无法在非AEAD模式下被检测到,但会被AEAD检测到。

但是,如果数据是用一个明显可见的nonce编码的(一个常见的实现将密文的前面加在一个nonce),那么就可以用一个以前有效的密文替换整个密文(因为已知nonce )。

我是否正确地理解了正确的实现需要存储所有以前使用过的非them,并且从不重用它们?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2019-12-11 22:20:34

但是,如果数据是用一个明显可见的nonce编码的(一个常见的实现将密文的前面加在一个nonce),那么就可以用一个以前有效的密文替换整个密文(因为已知nonce )。

这被称为“重放攻击”,通常在更高的级别上处理。

一种简单的方法是TLS方法;它只在两边保留一个记录计数器,并且AAD包含了计数器(每个记录的增量)。如果有人要重播记录,原始加密器的计数器(在某个原始值处)和解密器的计数器(在某个较大的值处)将不一样,因此完整性检查将失败。

另一种方法是DTLS和IPsec方法;它们不假定可靠的传输(一方发送的数据包可能无法发送到接收方,或者数据包可能会出现故障),因此双方的计数器不一定是同步的。因此,要做的是让加密器保留一个计数器,该计数器在数据包中显式地发送(并且包含在AAD中)。然后,接收器检查计数器,看看它是否以前见过;如果是,它拒绝数据包。这可以防止重放攻击;如果攻击者使用原始计数器值重放数据包,则数据包将被上述逻辑拒绝;如果它调整计数器,则GCM完整性检查将失败。

当然,还有其他可能的策略;这只是在实践中使用的两种策略。

假设您有AES-256-CBC加密的数据块,每个数据块都加密了一个适当的值(没有冲突)。与相同的数据块相比,使用AES-256-GCM加密数据的安全性和非认证性如何降低?

我刚刚向您展示了GCM如何防止重放攻击;还有一些消息重排序攻击,需要更高级别的协议来防范。GCM本身可以保护您免受其他攻击,这些攻击会将消息修改为有效的加密器尚未生成的内容。在constrast上,CBC模式没有;攻击者可以在不被检测到的情况下对CBC加密的消息进行许多修改(除非您还包括某种MAC,任何人都会这样做)。

票数 3
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/76365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档