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

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

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

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

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

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

如果有一些已知的算法可能会导致这种行为,那么能够打破它、了解原始数据并能够对这两个文件的更改进行测试的机会有多大?

提前致谢

有帮助吗?

解决方案

听起来它是 ECB 模式的变体,其中明文块与从文件中块的位置派生的随机数进行异或,然后在 ECB 模式下进行加密。

这将导致观察到的特征:

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top