我了解到,Blake2在压缩已消化消息的最后一个块时,使用了一个布尔值为1的完成标志参数。
这确保不能使用blake2摘要加载blake2实现的状态并继续(长度扩展攻击)。
不过,我只是在想,既然blake2是开放源码的,难道就不能创建一个不包含完成标志的blake2变体,通过它运行原始消息以获得一个未完成的摘要,然后使用它作为状态通过标准版本的blake2进行长度扩展攻击吗?
这看起来如此琐碎,我很惊讶,我们认为它的长度扩展证明。
当然,加载SHA-256的状态比分叉blake2稍微麻烦一些,修改和加载状态。
发布于 2019-09-16 17:51:07
BLAKE2不是开源的.BLAKE2是一种规范。
在设置了最后一个比特后,状态将被最后一次调整,确保一个小的更改,甚至一个比特,产生一个完全不同的输出,不能被恢复。
长度扩展攻击意味着知道M和Hk(M),您可以在不知道键k的情况下计算Hk(M||E)。
但是使用BLAKE2,为了在完成之前计算Hk(M),您需要知道键k。如果您不知何故知道秘密密钥,则可以伪造任意消息的标记。
https://crypto.stackexchange.com/questions/74349
复制相似问题