我在这里找到了我认为是对甲骨文填充攻击的一个简单的解释:http://robertheaton.com/2013/07/29/padding-oracle-attack/
然而,我被这里的专家们认为很容易找到的东西弄糊涂了。
当您打开链接并浏览到题为“操纵密码文本”的分节时,有一条语句说.
如果服务器说我们已经生成了一个带有有效填充的明文,那么我们可以很好地确定
P2'[16]必须是01。
我无法理解为什么01的值意味着填充是OK的。我知道,根据PKCS#5,获得01作为最后一个字节的唯一方法是只有1字节的填充。但是根据这个页面上的例子,我没有看到任何表明数据有1字节填充的东西。因此,我不明白为什么01的结果被认为是成功的。
是否有人能够查看文档并建议01来自何处?
发布于 2016-07-09 18:31:26
实际上,我们并不关心原始消息的填充量;我们关心修改后的明文(即修改后的密文的解密结果)是否有良好的填充。
如果最后一个块有以下模式之一,则填充将有效:
XX XX XX XX XX XX XX 01XX XX XX XX XX XX 02 02XX XX XX XX XX 03 03 03XX XX XX XX 04 04 04 04XX XX XX 05 05 05 05 05等
(其中XX是任意字节值)。如果我们修改密文,然后解密器解密并找到一个有效的填充,那么我们就知道最后一个块中的值就是这些模式之一。
现在,为什么我们一开始认为第一个,而实质上忽略了其他?那么,对于随机更改(即,如果攻击者处于攻击的初始阶段,并且可能没有关于解密的信息),那么最后一个块将具有概率为1/256的最后一个字节01;其余的选项的概率总计将小于1/65280,因此以相当高的概率接受明文的最后字节表示明文的最后一个字节是01。
https://crypto.stackexchange.com/questions/37608
复制相似问题