鉴于有多少主要网站被黑客入侵,而他们的密码数据库解密了什么才是保证身份验证的最佳方式?
基本上我感兴趣的是一种方法来保护对网站的某个部分的访问权限,使得黑客在任何情况下都不会让黑客获取用户的密码。
没有什么是无懈可击的,但至少让它变得非常难以破解。
答案 0 :(得分:5)
http://codahale.com/how-to-safely-store-a-password/
bcrypt
使用bcrypt。 使用bcrypt。 使用bcrypt。 使用bcrypt。 使用bcrypt。 使用bcrypt。 使用bcrypt。 使用bcrypt。 使用bcrypt。
MD5
,SHA1
,SHA256
,SHA512
,SHA-3
等?} 这些都是通用哈希函数,用于计算摘要 在尽可能短的时间内获取大量数据。这意味着他们是 非常适合确保数据的完整性和完全垃圾的存储 密码。
现代服务器可以计算约的MD5哈希值 330MB every second。如果你的 用户的密码为小写,字母数字,长度为6个字符, 你可以在周围尝试每个可能的那个大小的密码 40秒。
而且没有任何投资。
如果你愿意花费大约2,000美元,一周或两周就会花钱 CUDA,你可以把你的 自己的小超级计算机集群,它会让你 try around 700,000,000 passwords a second。 而这个速度你将以超过的速度破解这些密码 每秒。
重要的是要注意盐对于防止字典无用 攻击或蛮力攻击。你可以使用巨盐或许多盐或 手工采摘,遮荫生长,有机Himalayan pink salt。 考虑到这一点,它不会影响攻击者尝试候选密码的速度 哈希和数据库中的salt。
Salt或no,如果你使用的是为速度而设计的通用哈希函数 你很好,真正有效。
bcrypt
解决了这些问题如何?基本上,这很慢。它使用了Blowfish的变体
加密算法的键控时间表,并引入了工作因子,其中
允许您确定哈希函数的成本。因为
这一点,bcrypt
可以跟上摩尔定律。随着计算机越来越快,你可以
增加工作因素,散列会变慢。
bcrypt
比MD5
慢多少?取决于工作因素。运用
工作因子为12,bcrypt
在约0.3秒内哈希密码yaaa
我的笔记本电脑。另一方面,MD5
只需不到一微秒。
所以我们谈论的是 5个左右的数量级。而不是开裂
密码每隔40秒,我会在 12年左右开始破解它们。您的
密码可能不需要那种安全性,您可能需要更快
比较算法,但bcrypt
允许您选择速度的平衡
和安全。使用它。
答案 1 :(得分:0)
除了正确的密码处理(如bcrypt,如上所述),您需要在专用设备/机器上进行密码散列。
这个用于密码散列的“设备”是一个单独的系统,它包含所谓的“本地参数”,它是散列函数的额外输入(例如,128位强随机数)。主机系统(您的应用程序,用户进行身份验证)必须无法读取此本地参数。
如果您的密码数据库/应用程序遭到入侵,使用这样的专用计算机进行密码哈希会为您带来额外的安全保障。