我的问题有2个部分。第一个是“我正在使用什么类型的加密”,另一个是“打破它的可能性是什么”(一旦找到加密算法)。
所以,我得到了原始文件和加密文件,并且当原始文件发生变化时,我能够测试加密行为。我发现的最重要的线索是:
原始和加密文件的大小完全相同(请注意,大小是0x10 = 128位的乘积)
加密块大小似乎是128位。当原始文件上的字节发生更改时,相同的128位块会在加密文件上发生更改,有时(可能)会更改上一个或下一个块。但大多数时候只有这个块。文件的其余部分根本没有变化。
原始文件上有重复的部分(例如,16个字节的00值),但它们中没有部分在加密文件上具有相同的128位块结果。因此,第二个块中的16个字节00的加密结果与下一个块中的16个字节00不同。
记住这些线索,您能猜出它可以是什么类型的算法吗?我认为这是一个AES 128位,但线索#2排除了CBC模式,而线索#3排除了ECB!似乎是“介于”之间的东西......在任何其他模式下它都可以是AES 128吗?你还能想到什么?
如果有一些已知的算法可能导致该行为,那么有什么机会能够破解它,知道原始数据并能够对2个文件的更改进行测试?
提前致谢
答案 0 :(得分:2)
这听起来像是ECB模式的一种变体,其中明文块与在ECB模式下加密之前从文件中的块位置派生的随机数进行异或。
这将导致观察到的特征:
(nonce可以像计数器一样简单。)
这个计划很薄弱。它会受到针对ECB模式的相同类型的频率分析攻击 - 它只需要更多的密文。您收集的任何明文/密文对都可以在您找到的任何未知密文中重复使用相同的块位置。