破解安全认证信息数据库存储

时间:2012-09-25 00:23:35

标签: php security passwords

鉴于有多少主要网站被黑客入侵,而他们的密码数据库解密了什么才是保证身份验证的最佳方式?

基本上我感兴趣的是一种方法来保护对网站的某个部分的访问权限,使得黑客在任何情况下都不会让黑客获取用户的密码。

没有什么是无懈可击的,但至少让它变得非常难以破解。

2 个答案:

答案 0 :(得分:5)

http://codahale.com/how-to-safely-store-a-password/

使用bcrypt

使用bcrypt。 使用bcrypt。 使用bcrypt。 使用bcrypt。 使用bcrypt。 使用bcrypt。 使用bcrypt。 使用bcrypt。 使用bcrypt

为什么不{MD5SHA1SHA256SHA512SHA-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可以跟上摩尔定律。随着计算机越来越快,你可以 增加工作因素,散列会变慢。

bcryptMD5慢多少?取决于工作因素。运用 工作因子为12,bcrypt在约0.3秒内哈希密码yaaa 我的笔记本电脑。另一方面,MD5只需不到一微秒。

所以我们谈论的是 5个左右的数量级。而不是开裂 密码每隔40秒,我会在 12年左右开始破解它们。您的 密码可能不需要那种安全性,您可能需要更快 比较算法,但bcrypt允许您选择速度的平衡 和安全。使用它。

答案 1 :(得分:0)

除了正确的密码处理(如bcrypt,如上所述),您需要在专用设备/机器上进行密码散列。

这个用于密码散列的“设备”是一个单独的系统,它包含所谓的“本地参数”,它是散列函数的额外输入(例如,128位强随机数)。主机系统(您的应用程序,用户进行身份验证)必须无法读取此本地参数。

如果您的密码数据库/应用程序遭到入侵,使用这样的专用计算机进行密码哈希会为您带来额外的安全保障。