我一直在阅读它是如何工作的,它在如何减慢暴力尝试方面真的很酷,但它仍然感觉不安全.
让我们说有人偷了我的数据库数据,包括我的所有用户密码哈希,并知道我使用password_hash来哈希我的密码.他不能用他的字典和password_verify循环访问我的密码来获取访问权限吗?
解决方法:
添加到@adeneo的答案,
bcrypt,pbkdf2,scrypt和现代密码散列策略的要点是缓慢的.
是的,如果从数据库(sqli)获得结果哈希,您只需尝试密码并尝试验证每个密码.
但是,只是尝试密码有点轻描淡写.我们来看看一些数学.
使用bcrypt的password_hash()的默认成本大约需要0.1秒来散列密码.这意味着验证密码哈希需要大约0.1秒.
英语中大约有1,000,000个单词.要尝试每一个,您需要验证1,000,000次.每秒0.1秒,即100,000秒(约27小时).
对于泄露的单个密码哈希,有1,000,000个猜测需要27个小时.由于每个哈希都带有一个salt,攻击者需要为每个泄漏的哈希重复这些猜测.
如果您的数据库有100万用户,只需要针对密码尝试字典就需要76,000个cpu年(一个cpu为76,000年,76,000个cpu为1年,或者之间的任何交易).
从正确的角度来看,25 GPU cluster上的md5()每秒可以进行大约180,000,000,000个猜测.要检查数百万字典条目与DB中的百万哈希值,它需要大约5.5秒.
137 GPU秒与76,000 cpu年.这就是使用bcrypt的原因.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。