请告诉我可以为这样的任务构建什么样的攻击。有一个字符串(它的长度不超过5)。该字符串用零填充到 16 个字节,然后使用 CBC 加密。IV 是当前时间。加密后,我们可以得到字符串:IV+密文。还可以访问使用相同密钥加密任意消息的预言机。有必要确定地解密这个字符串。
请告诉我可以为这样的任务构建什么样的攻击。有一个字符串(它的长度不超过5)。该字符串用零填充到 16 个字节,然后使用 CBC 加密。IV 是当前时间。加密后,我们可以得到字符串:IV+密文。还可以访问使用相同密钥加密任意消息的预言机。有必要确定地解密这个字符串。
实际上,我们说的是对 1 块密文的攻击,通过简单的操作,变成 1 块(实际上是对 ECB 的攻击)
密文攻击方案:
Json -> Base64
Base64 -> CBC_Byte[16]
CBC_Byte[] xor IV[16] -> ECB_Byte[16]
然后,它仅在结果字节数组上使用长度为 5的字典进行暴力破解。
[0..9]
搜索次数 10 ^ 5 = 十万个选项。最多几分钟(包括网络休息请求)。据我了解情况:
攻击思路:
因为 在 CBC 模式下,第一个块的加密方案如下所示:
那么你可以使用P n:
其中 P t是所需的明文,则
如果С n = С 0,P t和 将是所需的 P 0。
因为 由于可能的P t相对较少( 111 110,考虑到较短的字符串),因此可以组织它们的完整枚举。通过请求当前时间,可以以高概率预测P n形成的下一个 IV n 。当然,您需要检查文本是否实际上使用每个值的预测初始化向量进行了加密。