在我看来,填充oracle攻击主要是CBC模式加密用户关注的问题。问题:是否有其他操作模式容易遭受填充oracle攻击?如果是这样,为什么?

该答案的注释部分中有关于欧洲央行的讨论,但没有得出结论。如果ECB允许填充oracle攻击提供比明文长度更多的信息,这令我感到惊讶,但我想肯定。

答案只需要解决对称分组密码以及Wikipedia页面上提到的操作模式。

评论

您可以定义填充oracle攻击的含义吗?如果您认为在ECB模式下将块的顺序切换视为填充oracle攻击,那么您使用的是该短语的非标准含义(因为在这种情况下,您甚至都没有攻击填充功能,也没有使用填充功能作为甲骨文)。您可能只是说对机密性进行选择密文攻击吗?

@ D.W。我能想到的最好的定义是“任何依靠解密的明文消息的填充来检索明文信息的攻击”。如果攻击者只能访问密文-并且可以进行此假设-那么它将是所选密文攻击的子集。顺便说一句,我希望这个问题或多或少地暗示了这一点。显然,如果不作任何改动,CBC特定的攻击将不适用于CBC以外的任何其他模式。

#1 楼

在padding oracle攻击中,您有一个oracle,它仅告诉您特定选择的密文是否解密为正确填充的明文。那个oracle被用来建立最后一个词oracle,它被反复使用可以揭示整个消息。

它在CBC模式下工作的原因是我们可以对last的明文进行可预测的任意更改通过修改密文(倒数第二个或IV)的密文来阻止:

$$ P_i = E(C_ {i})\ oplus C_ {i-1} $$

要使另一种模式容易受到攻击,就需要相同的控制方式。


如果ECB允许填充oracle攻击提供更多功能,这会让我感到惊讶。信息比纯文本的长度要长,但是我还是要确定。


在ECB中,密文仅通过解密功能,因此对它的任何更改都会使密文无法预测

除了,我们可以做一个可预测的更改:我们可以用有效消息的任何其他密文块代替最后一个。如果它通过了填充预言,我们知道它以12|2,... 16|...|16中的一个结尾(假设使用的是填充模式),但是我们无法进行其他检查。

这不太可能之所以提供帮助,是因为文本消息(ASCII或UTF-8)将永远不会包含大多数消息-9|...|9(制表符)和10|...|10(换行符)是我能想象的仅有的消息。在“随机”二进制纯文本中,您可能至少会看到一些1,但这可能无济于事。

不过,我猜这会泄漏信息,因此应该计数作为攻击。


问题:其他操作模式是否容易受到填充oracle攻击的影响?


如上所述,ECB仅部分脆弱,但其他模式呢?

CFB,OFB和CTR都允许对最后的明文块进行可预测的更改。但是,它们本质上是不需要填充的流密码。如果实现确实使用了填充,则可能会容易受到攻击。 GCM已通过身份验证,因此它不会为攻击留出空间,而且也不需要填充。


例如,这是对$ b $字节的填充oracle攻击用$ p = 1 $到$ b $字节填充的blocksize CTR,每个字节等于$ p $,最多为blocksize的倍数:


密文就是消息的异或以及IV得出的密钥流:$ C = M \ oplus K $。您知道$ M $的最后1- $ b $个字节将被填充,因此您可以翻转最后一个字节中的单个位,对其进行测试;第二个,测试;等等,只要oracle返回0。您将找到填充长度,从而知道$ M $($ M_i = p $)和$ K $($ K_i = C_i \ oplus p $)。
设置最后的$ p $个字节,以使它们对于$ p + 1 $个字节填充是正确的(或者如果$ p = b $,则删除最后一个密文块)。现在,您可以尝试在下一个位置中的所有可能的密文字节($ p + 1 $从右边开始计数)。其中一个将通过oracle,返回1。现在您知道$ M $和$ K $的最后$ p + 1 $个字节。
您可以重复执行步骤2。任意次,找到整个密钥流和消息。


评论


$ \ begingroup $
我认为在ECB中切换块是一种填充oracle攻击。攻击不必提供完整的纯文本就可以视为成功-它确实提供了有关纯文本的信息,而不仅仅是长度。漏洞是否具有重要意义取决于使用情况。谢谢!
$ \ endgroup $
–马腾·博德威斯♦
2014年7月18日12:07



$ \ begingroup $
@MaartenBodewes,不,即使明文全为零,您也无法在PCBC上使用完全填充的oracle攻击,因为任何密文更改都会影响解密的明文,该明文将XOR到下一个块。它容易受到截断(暴露出某些块以某种正确的填充结尾)类似ECB的攻击。
$ \ endgroup $
–otus
16年5月24日在4:18

#2 楼


…还有其他操作模式容易受到填充Oracle攻击吗?


根据Vaudenay的说法,它完全限于CBC。 (两年后,这显示出是不正确的。)

填充式Oracle攻击也称为“ Vaudenay攻击”,因为它最初由Serge Vaudenay于2002年发布,并在EUROCRYPT 2002中引入,是对密码块链接的攻击。

该攻击对CBC模式下的任何块密码均有效,但其他块密码操作模式不受此影响……这尤其意味着有关对ECB填充oracle攻击的讨论没有首先没有多大意义。 ECB完全不受此攻击的影响。

有关详细信息,请查看Vaudenay的论文(PDF),该论文可通过相关的Springer页面获得。与您的问题有关的“ 6。值得一读的“不起作用的修复”(从第541页开始)。包括“ 6.4其他操作模式”(第542页)和“ 7。 “可能有效的修复程序”(第543页)。

注意事项

由于您的大多数链接都指向Wikipedia(在Wikipedia中无法提供真正的深刻见解,攻击),这告诉我您可能想看看SkullSecurity的“ padding-oracle-attacks-in-depth”文章,该文章解释了padding oracle的攻击要比Wikipedia更好(从我的角度来看)。

因为它与我上面写的内容紧密相关,所以我只引用(强调我的内容)的最后一部分:


…我已经针对以下密码成功进行了测试:


CAST-cbc
aes-128-cbc
aes-192-cbc
aes- 256-cbc
bf-cbc
山茶花128-cbc
camellia-192-cbc
山茶花256-cbc
cast-cbc
cast5- cbc
des-cbc
des-ede-cbc
des-ede3-cbc
desx-cbc
rc2-40-cbc
rc2-64- cbc
rc2-cbc
种子cbc

但这并不有趣,因为这不是对密码的攻击。这是对密码块链接(CBC)的攻击,它可以针对任何密码块进行。


无论如何……

Vaudenay之外



>问题是:在Vaudenay发表论文的两年后,另一篇论文表明Vaudenay可能说的有些错误,说事情只限于CBC…将Vaudenay的攻击置于一个新的视角:

操作模式”,由Lee,Kim,Lee和Hong撰写,
会议论文br
计算机科学讲座笔记3506:343-351
2004年12月
DOI: 10.1007 / 11496618_25


摘要

在[12]中,Vaudenay提出了在填充Oracle攻击模型下对CBC加密模式密码的侧信道攻击。对手使用密文知识确定正确的消息。考虑到各种填充方案,Black和Urtubia从多个方向概括了这些攻击[4]。在本文中,我们将这些攻击扩展到块密码的其他类型的操作模式。具体来说,我们将填充预言攻击应用于具有各种填充方案的多种操作模式。作为本文的结果,总共36个双模式中的12个和总共216个三模式中的22个易受填充预言攻击。这意味着暴露于这些类型的攻击的12个双重模式和22个三重模式没有提供比单一模式更好的安全性。


这应该为您的问题提供一个很好的见解任何其他操作模式都容易受到填充oracle攻击的影响,以及原因。

#3 楼

在以下情况下,填充Oracle攻击主要是一个问题:加密的消息将被修改并发送到目标。这些攻击试图衡量解密和验证邮件时的差异。

步骤是:


解密邮件
检查填充>错误如果错误
检查或处理数据>错误如果错误或格式
检测到损坏

填充oracle攻击试图测量步骤(2)和(3)之间的时间差或利用不同的错误消息。

因此,如果在加密数据上未应用某种MAC,则这些攻击可能适用于您的解决方案。

CBC,因为它运行在完整块上。如果您使用其他依赖于CTR模式的模式(如CTR或GCM等),则不存在此特定问题。

始终尝试使用AEAD方案或至少应用MAC(HMAC或CMAC) )到您的加密数据。但是请小心并使用Encrypt-then-MAC!

评论


$ \ begingroup $
谢谢,但这不是我要的。
$ \ endgroup $
–马腾·博德威斯♦
14年7月17日在22:12

$ \ begingroup $
对不起,我没有回答您的问题。最后,它在很大程度上取决于实施。所有仅适用于完整块的模式可能会受到影响。除了CBC和ECB及其派生方式,我不知道其他任何方式。
$ \ endgroup $
–雷神
14年7月17日在22:21

$ \ begingroup $
嗯,是的,欧洲央行在这里是错误的。我的错。
$ \ endgroup $
–雷神
14年7月18日在11:34