据我所知,发生冲突会减少对哈希算法的暴力攻击所需的工作,因为有多个输入具有相同的输出。
然而,我不清楚的是其他类型的攻击会受到碰撞的帮助,它们真的有多么不利?并非所有在散列算法中发现的弱点都会使算法技术上变弱。即使发生碰撞,暴力仍然是不可行的。那么碰撞会使其他攻击变得更容易吗?
也是不可能附加某种额外的校验和或摘要作为最终散列的附加部分以防止冲突?例如,通过在输出上添加几个校验和字节可以减少冲突产生与校验和相结合的相同哈希输出的概率?甚至可能在追加校验和之前对其进行哈希处理以使其值更安全?
o = hash(i)& (散列(校验和(i))的
答案 0 :(得分:2)
可能还有更多,但这两个来得更多。
在第一种情况下,通过在哈希中包含进程ID以防止冲突来解决此问题。在第二种情况下,当新文件替换现有文件时,会添加错误消息。
答案 1 :(得分:0)
鉴于评论,问题似乎与密码破解有关。
发现哈希密码的问题通常使用常用密码列表,请参阅SecLists。
阻止此类攻击的主要方法是使用密码散列方法来创建消耗大量时间的密码验证程序,通常大约100毫秒。这些功能包括PBKDF2,Argon2,password_hash,bcrypt等。
在SHA2及以上版本中发现碰撞的可能性非常小,因为在密码破解时不予考虑,没有额外的优势。
此外,攻击者通常对单个密码不感兴趣,而是从访问用户数据库获得的大部分密码。然后这些凭证在黑暗的网络上大量出售。特别是一个用户受到攻击,即Spear网络钓鱼,通常有更好的方法。
有关详细信息,请参阅:
Infosec password-cracking-tools
Arstechnica How I became a password cracker
高级密码恢复hashcat