为什么我们不使用多种算法来防止像 SHAttered 这样的攻击?

信息安全 哈希 正直
2021-08-13 05:52:31

简单的问题:MD5 和 SHA1 都容易受到碰撞攻击。可以合理地假设我们要切换到的下一个算法 SHA256 也有这样的问题,但由于需要找到这样的冲突,所以它被隐藏了。

问题是,我们为什么不使用多种算法来验证文件完整性呢?比如,对同一个文件使用多种算法计算多个校验和,并且只有在它们都匹配时才声明它可以接受?我的意思是,现在在智能手机上找到 MD5 的冲突是可行的,而 SHAttered 攻击已证明找到 SHA1 的冲突是可行的。但是,如果您必须找到 MD5 和 SHA1 的冲突,那不会也增加所需的时间吗?


澄清:虽然这个特定的建议实际上可能在某些地方使用,但我要说的是:为什么通常不建议将这种技术作为升级到 SHA256 的替代方案

2个回答

使用多个散列函数与定义一个新的散列函数完全相同,只是比“更好”的安全散列慢得多,而且几乎没有设计理由。

因此,虽然在您的 ad-hoc H(x)=MD5(x)||SHA1(x) 中发现冲突确实比在组件中发现冲突更难,但它的效率要低得多,而且可能比目的更不安全-内置函数,如 SHA2-512 或 SHA3-512。甚至 SHA2-256 在过去十年的密码分析中也没有表现出任何弱点。

将链式哈希函数应用到明文中并不一定会使某些东西“更安全”。

如果我们可以回答将 MD5 应用于 SHA1(或相反)是否会削弱生成的哈希(例如,通过减少熵),那么该建议将是有意义的。