2

我的问题有两个部分。第一个是“我正在使用哪种可能的加密类型”,另一个是“破解它的机会是多少”(一旦找到加密算法)。

所以,我得到了原始文件和加密文件,当原始文件发生变化时,我能够测试加密的行为。我发现的最重要的线索是:

  1. 原始文件和加密文件的大小完全相同(注意大小是 0x10 = 128 位的乘积)

  2. 加密块大小似乎是 128 位。当原始文件上的一个字节发生变化时,加密文件上的相同 128 位块会发生变化,有时(可能)前一个或下一个块也会发生变化。但大多数时候只有这个块。文件的其余部分根本没有改变。

  3. 原始文件上有重复的部分(例如 16 字节的 00 值),但它们在加密文件上没有相同的 128 位块结果。因此,第二个块中的 16 个字节的 00 与下一个块中的 16 个字节的 00 具有不同的加密结果。

记住这些线索,你能猜出它是什么类型的算法吗?我以为它是 AES 128 位,但线索 #2 不包括 CBC 模式,而线索 #3 不包括 ECB!似乎是那些“之间”的东西......它可能是任何其他模式下的 AES 128 吗?你还能想到什么?

如果有几个已知的算法可能导致该行为,那么能够破坏它、知道原始数据并能够对 2 个文件的更改进行测试的可能性有多大?

提前致谢

4

1 回答 1

2

这听起来像是 ECB 模式的一种变体,其中明文块与一个随机数进行异或运算,该随机数是在以 ECB 模式加密之前从文件中的块位置派生的。

这将导致观察到的特征:

  • 文件大小没有增加(因此没有 IV);
  • 输入中的单个字节变化会影响整个输出块。

(随机数可以像计数器一样简单)。

这个方案很弱。它很容易受到与 ECB 模式相同的频率分析攻击——它只需要更多的密文。此外,您收集的任何明文/密文对都可重复用于您找到的任何未知密文中的相同块位置。

于 2009-11-03T12:19:05.650 回答