首页
学习
活动
专区
圈层
工具
发布

XCBC认证
EN

Cryptography用户
提问于 2019-09-20 11:43:19
回答 1查看 337关注 0票数 1

所以XCBC是用来对抗对CBC的攻击长度的,但是修改到底是如何使这个攻击失败的呢?我所能找到的只有几篇关于为什么2键XCBC不安全的论文。

EN

回答 1

Cryptography用户

发布于 2019-09-20 12:10:01

这次修改到底是如何使这次攻击失败的?

首先,让我们快速回顾一下XCBC是如何工作的:

  1. 接收消息m和三个键(k_1,k_2,k_3),其中k_1分组密码 (或固定域PRF)的键,k_2,k_3是长度为n的随机字符串,块密码的块长度(或PRF的输入长度)。
  2. m=m_1\mathbin\|\dotsb\mathbin\|m_\ell拆分为大多数n位的大小块,其中只有最后一个块的大小为{\leq} n
  3. 如果最后一个块的长度严格短于n,那么就用一个1位和零位填充它,然后k_2中的XOR,否则XOR k_3中的最后一个块。
  4. 现在,在第三步的结果上应用标准的CBC-MAC,键是k_1

接下来要知道的是CBC是一个PRF (从而是一个安全的MAC),如果没有有效的输入可以是另一个有效输入的严格前缀,也就是说,CBC接收例如m_1m_1\mathbin\|m_2作为输入是不可能发生的。

现在的问题是上面的填充是如何实现这种无前缀编码的。它是通过利用这样一个事实来实现的,即您不可能知道k_2k_3,因此您无法构造与填充块相同的中间块。一个简单的例子:假设您查询块m_1,该块被填充到m_1\oplus k_2,然后查询另一个消息m_1\mathbin\|m_2,该消息被填充到m_1\mathbin\|(m_2\oplus k_2)。显然,m_1\oplus k_2不是m_1\mathbin\|(m_2\oplus k_2)的前缀。此外,要构造前缀,您必须通过尝试和错误(假设块密码/固定域PRF是好的)找到m_1\oplus k_2,这相当于正确猜测k_2

另外,请参见“用于任意长度消息的CBC MACs :三键构造”由布莱克和罗格威从2000年对上述内容的更正式的处理。

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

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

复制
相关文章

相似问题

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