阅读对 AES 的攻击,我看到了无数关于为什么 ECB 不好的例子,以及我能理解其背后的逻辑,但我无法理解这些攻击在现实世界中的实际运作方式。
因此,我看到经常使用的一个重要示例是使用 AES-ECB 加密的会话令牌,并且作为它的会话令牌(例如 cookie),我们可以重复注入选定的明文并监视密文的变化,假设会话令牌始终使用相同的密钥进行加密。但是我们如何从中推断出正确的明文呢?
例如,假设我注入了 64 个 A 作为我的用户名,并且在返回的 cookie 的十六进制转储中,我可以看到重复的 16 字节块,这非常明确地表明加密是 AES-ECB。我可以将最后的 16 个 A 更改为 15 个 A 的 B,所以我现在不仅知道 16 A 的密文是什么样的,而且知道所有 A 和 B 的密文是什么样的。
但在那之后我被卡住了,我看不出这种攻击是如何扩展成实用的。到目前为止,我所看到的只是我们知道最后一个字节的样子,以及一堆 A。
到目前为止我看到的很好的解释是:https ://vimeo.com/41116595尽管他在 42 分钟左右失去了我,以及http://www.slideshare.net/ceng/cryptography-for-penetration-testers -pdf-版本-演示文稿
编辑:在考虑了这个问题之后,我认为更好的表达这个问题的方法是 - 假设我们控制的块是密文中的任意长度,并且总密文是任意长度,你如何计算长度要注入的前缀(A 的数量),以便您可以破译每个连续的字节?
编辑:上面的编辑形成了对问题的补充,“我们如何计算前缀的长度”实际上是不准确的。我发现计算我们无法控制的密文的前缀长度是微不足道的,正如我所看到的,ECB 攻击旨在破译在所选明文密文之后显式出现的文本。