首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加密h(k)以击败分区甲骨文攻击

加密h(k)以击败分区甲骨文攻击
EN

Cryptography用户
提问于 2021-03-10 02:47:03
回答 1查看 120关注 0票数 1

在检查MAC之前加密h(k) (甚至仅仅是k)并验证它是否足以击败分区甲骨文攻击,从而使整个方案变得健壮/提交(而不依赖于密码的属性,不像0填充)?

更新1:

基本上是E_k(h(k)\mathbin\|m)E_k(k\mathbin\|m),其中E是像(x)chacha20poly1305那样的AEAD模式。k是从pkdf (如argon2/scrypt/etc )的密码派生出来的。开始时,它是在两端计算的,但解密密码的方也会检查消息之前是否附加了h(k) (或仅仅是k)。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2021-03-10 14:46:43

如果oracle返回信息(标记是否正确),则分区oracle攻击有效。如果没有回应,就根本没有甲骨文。这些信息也可以从侧面渠道获得.

分区oracle只是通过分组密码来加速密码攻击。密码是从一组可能的密码列表\mathcal{D}中选择的,相应的密钥由PBKDF生成。相应的密钥被分组在可以正确解密的密文下面。这里必须注意的是,正确解密的密文根本不需要一些有意义的明文。攻击者只要求在分组密钥下,密文具有返回给它们的有效或无效标记信息。这种攻击之所以有效,是因为GCM和Poly1305是不提交的,也就是说,在计算上可以找到一对密钥和在这两个密钥下解密的密文(带标记)。

用于更新1

基本上是E_k(h(k)\mathbin\|m)E_k(k\mathbin\|m),其中E是像(x)chacha20poly1305那样的AEAD模式。k是从pkdf (如argon2/scrypt/etc )的密码派生出来的。开始时,它是在两端计算的,但解密密码的方也会检查消息之前是否附加了h(k) (或仅仅是k)。

如果使用E_k(h(k)\mathbin\|m)E_k(k\mathbin\|m),则可能出现两种情况;

  1. 标签无效。这意味着oracle必须返回\texttt{tag invalid}响应。现在,这是分区oracle攻击的核心。他们向服务器发送了一个具有k密码有效标记的密文。返回无效只会从k密码列表中删除\mathcal{D}密码。如果通信是单向的,那么就不需要返回任何标记.但这真的取决于协议。通常的协议必须作出反应。
  2. 标签是有效的。在这种情况下,我们回到你的修改。现在,您将响应为消息格式无效。Viola,分区oracle仍然获得当前测试的k密码包含自标记传递以来的有效密码的信息。

当然,对于这两种情况,攻击者都有需要消除的虚假否定。发生这种情况的可能性很小。

主要的缓解措施是使用尚未标准化的提交AEAD,或者使用带有一个密钥的HMAC作为加密-然后HMAC。记住,使用强密码总是被推荐的。

用于更新2

第一个也包含kh(k)的块在检查MAC标记之前将被解密(作为一个例外,与下面的块不同)。这是为了在验证MAC标记之前,验证消息中加密的kh(k)是否与我们正在解密的k匹配(以便不泄漏有关MAC标记是否无效的信息)。如果加密的k或h(k)与解密k不匹配,则解密中止(在检查任何MAC标记之前)

在这种情况下,我看不出分区甲骨文攻击会有什么效果。攻击者仍然可以分组,但如果使用SHA-256,则随机文本具有密钥哈希的概率为1/2^{256}。因此,没有可行的攻击。

标准的在线密码攻击仍然有效。因此,仍然适用通常的具有良好强度的密码建议。

我不喜欢在同一密钥下加密密钥的想法,尽管我们并不认为AES或ChaCha20会出现问题。如果我做错了,有人可以纠正我。

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

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

复制
相关文章

相似问题

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