Passwords 将密码添加到密码中
我正在开发第一个需要登录的web应用程序,现在我必须决定如何存储密码。我已经读了很多关于密码散列和添加盐的正确方法的书。我突然想到,大多数推荐的方法都依赖于数据库中存储的信息的一些变化,这些变化与密码散列有关,可以是将用户名的全部或部分用作salt或其他随机值 相反,我想使用用户自己的密码作为密码上的盐。使用一种算法来混淆密码,并以某种方式将其作为salt添加到自身中。当然,如果攻击者同时访问存储的哈希和算法的源代码,这将受到损害,但在这种情况下,任何salt都会受到损害。我的应用程序可能真的不需要这种级别的安全性,但这只是我在阅读时开始考虑的问题 我只是想从更有经验的开发人员那里得到一些反馈。任何反馈都将不胜感激Passwords 将密码添加到密码中,passwords,password-protection,Passwords,Password Protection,我正在开发第一个需要登录的web应用程序,现在我必须决定如何存储密码。我已经读了很多关于密码散列和添加盐的正确方法的书。我突然想到,大多数推荐的方法都依赖于数据库中存储的信息的一些变化,这些变化与密码散列有关,可以是将用户名的全部或部分用作salt或其他随机值 相反,我想使用用户自己的密码作为密码上的盐。使用一种算法来混淆密码,并以某种方式将其作为salt添加到自身中。当然,如果攻击者同时访问存储的哈希和算法的源代码,这将受到损害,但在这种情况下,任何salt都会受到损害。我的应用程序可能真的不
“完全不需要存储密码salt”:salt可以非常小(6字节)。这几乎不会影响性能。如果您从密码本身删除salt,您将失去salt的全部好处。然后,您可以构建一个彩虹表来获取所有密码,相同的密码将导致相同的哈希值 使用salt的主要原因是,攻击者无法构建一个rainbow表并获取存储在数据库中的所有密码。这就是为什么您应该为每个密码添加一个随机唯一的salt,然后攻击者必须分别为每个密码构建一个彩虹表。为单个密码构建彩虹表毫无意义,因为暴力强制更快(为什么不在找到密码时停止) 不要害怕做对,通常编程环境支持创建安全的散列,并为您的用户(例如PHP)处理盐分。salt通常与散列相结合用于存储,这使得它很容易存储在单个数据库字段中
我写了一个关于的小教程,也许你想看一看。如果你从密码本身删除了盐分,你将失去盐分的全部好处。然后,您可以构建一个彩虹表来获取所有密码,相同的密码将导致相同的哈希值 使用salt的主要原因是,攻击者无法构建一个rainbow表并获取存储在数据库中的所有密码。这就是为什么您应该为每个密码添加一个随机唯一的salt,然后攻击者必须分别为每个密码构建一个彩虹表。为单个密码构建彩虹表毫无意义,因为暴力强制更快(为什么不在找到密码时停止) 不要害怕做对,通常编程环境支持创建安全的散列,并为您的用户(例如PHP)处理盐分。salt通常与散列相结合用于存储,这使得它很容易存储在单个数据库字段中 我写了一个关于的小教程,也许你想看看 我只是想从更有经验的开发人员那里得到一些反馈。任何反馈都将不胜感激 OWASP的John Steven对密码存储系统进行了分析,包括威胁模式。它解释了组件及其用途,如哈希、迭代计数、salt、HMAC、HSMs等。请参阅和 开裂并不是这里唯一的威胁。更有可能的是,试图闯入您的组织的家伙将使用从Adobe漏洞、LinkedIn漏洞、Last.fm漏洞、eHarmony漏洞、漏洞中收集的数百万密码中的一个顶级密码。。。。例如: