首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Encrypt+HMAC比AEAD强吗?

Encrypt+HMAC比AEAD强吗?
EN

Cryptography用户
提问于 2013-01-22 19:48:21
回答 2查看 4.9K关注 0票数 25

我遇到的一些帖子似乎暗示,使用常规加密和MAC可能比使用新的AEAD (即AES/GCM)模式更好。

https://www.daemonology.net/blog/2009-06-24-encrypt-then-mac.html

https://blog.cryptographyengineering.com/2011/12/matt-green-smackdown-watch-are-aead.html

因此,我的问题是:

AEAD是否更有可能失败(受到被选择的明文攻击,而HMAC保护加密部分更安全),如果是的话,它是否以更灾难性的方式失败?

假设您已经安全地生成了HMAC和加密密钥,那么Encrypt+HMAC是否更安全?

EN

回答 2

Cryptography用户

回答已采纳

发布于 2013-01-22 20:20:54

这是我倾向于不同意科林·珀西瓦尔的观点。

你应该使用加密-然后-HMAC当且仅当你能得到正确的。最大的缺陷是使用短路字符串比较和固定时间字符串比较.在前一种情况下,人们可以利用定时攻击来伪造任意密文的有效HMACs。使用像CBC这样的加密模式,可以用来读取加密消息的内容。其他的缺陷包括意外地实现加密和MAC或MAC-然后加密,这在历史上存在与它们的构造相关的漏洞。

另一方面,EAX和GCM模式透明地提供了这一特性。对于针对专用的AEAD模式的潜在侧通道攻击存在一些担忧,还有一个概念问题,即可能将未经身份验证的数据包传递给您的解密算法。当然,你必须得到像独特的IVs正确的细节,但你也有加密的要求-然后-MAC。

也就是说,EAX和GCM实现中的潜在缺陷可以同时为许多人修复,并向相关的库提供补丁。非密码专家天真地比较HMACs的缺陷是流行的,甚至像Google的KeyCzar这样的高调项目也犯了这个简单的错误。如果您完全知道自己在做什么,那么加密HMAC是一个可以证明是安全的构造。如果你不知道你在做什么,像EAX或GCM这样的东西可能会被发现有弱点,但它们肯定比自己实现一些东西更好。

编辑:我可能使加密-然后-HMAC听起来比实际更容易。加密时HMAC的另一个主要缺陷是HMACing信息不足,或者HMACing信息不正确.HMAC必须包括密文、附加身份验证数据和初始化向量。它可能还必须包括一个描述符(也许其他人可以确认或否认这一点),以标识所使用的加密算法。要将这些字段传递给HMAC,您必须使用一种明确地划分字段的格式。最简单的方法是在任何可变长度字段(通常只是身份验证数据和密文)之前加上一个4字节的大端长度,但是对所有字段都这样做可能是个好主意。如果没有HMAC所有这些信息,攻击者可以修改任何未包含的数据。如果您不明确地使用HMAC,攻击者就可以操纵消息边界,从而允许他进行攻击。

编辑2:加密的另一个细节HMAC我已经忘记了。希望你能看到这是多么的难做到正确。理想情况下,您不应该在安全上下文中重用相同的密钥。我不知道使用您的加密密钥作为HMAC密钥可能造成的任何攻击,但最佳做法是使用不同的密钥进行加密和身份验证。一种简单的方法(假设256位加密算法和256位HMAC)是使用一个“虚拟”512位密钥。上半部分用于加密,后半部分用于身份验证。另一种方法是使用256位密钥,但通过HKDF将其传递给512位输出;使用此方法:将其分成两部分,一部分用于加密,另一部分用于身份验证。

编辑3:几个月前,我问过一个关于安全高度相关的问题的StackExchange。托马斯·波宁的详细回答可能会有所帮助。

票数 30
EN

Cryptography用户

发布于 2016-09-13 22:45:59

我认为这个问题分为两个部分,一个是关于AEAD在原则上对Encrypt+HMAC,另一个是关于AES-GCM。

据我所知,Galois计数器模式在校验和中可能存在一些弱点,这可能会降低它的强度,并且在您确实需要重新协商之前,对传输大小(64 to )有一个众所周知的限制;请阅读本文以获得更多信息:http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/comments/CWC-GCM/Ferguson2.pdf

我还记得读过一篇论文,比较了galois场MAC计算和DJB的poly1305,指出质数(2^130-5)具有明显的优良性能。不过,对于实际攻击来说,这还不够糟糕。

这些弱点与特定的AEAD加密方案AES-GCM有关,其他的则更安全。被认为比AES-GCM更安全的AEAD密码套件的例子是来自DJB的ChaCha20+Poly1305和双工模式下的Keccak。

然而,总体情况是,与Encrypt+HMAC相比,仅作为密码库的用户,AEAD要容易得多。这并不意味着它们在技术上必须与Encrypt+HMAC不同,只需要使用一个库,其中加密和HMAC都是结合在一起的,比如ChaCha20+Poly1305。从技术上讲,ChaCha20只是一个没有身份验证的流密码,而Poly1305只是一个身份验证。另一方面,在双工模式下,Keccak实际上是以相同的操作计算身份验证和加密,因此它是通过设计集成的。

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

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

复制
相关文章

相似问题

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