Passwords 将密码添加到密码中

Passwords 将密码添加到密码中,passwords,password-protection,Passwords,Password Protection,我正在开发第一个需要登录的web应用程序,现在我必须决定如何存储密码。我已经读了很多关于密码散列和添加盐的正确方法的书。我突然想到,大多数推荐的方法都依赖于数据库中存储的信息的一些变化,这些变化与密码散列有关,可以是将用户名的全部或部分用作salt或其他随机值 相反,我想使用用户自己的密码作为密码上的盐。使用一种算法来混淆密码,并以某种方式将其作为salt添加到自身中。当然,如果攻击者同时访问存储的哈希和算法的源代码,这将受到损害,但在这种情况下,任何salt都会受到损害。我的应用程序可能真的不

我正在开发第一个需要登录的web应用程序,现在我必须决定如何存储密码。我已经读了很多关于密码散列和添加盐的正确方法的书。我突然想到,大多数推荐的方法都依赖于数据库中存储的信息的一些变化,这些变化与密码散列有关,可以是将用户名的全部或部分用作salt或其他随机值

相反,我想使用用户自己的密码作为密码上的盐。使用一种算法来混淆密码,并以某种方式将其作为salt添加到自身中。当然,如果攻击者同时访问存储的哈希和算法的源代码,这将受到损害,但在这种情况下,任何salt都会受到损害。我的应用程序可能真的不需要这种级别的安全性,但这只是我在阅读时开始考虑的问题

我只是想从更有经验的开发人员那里得到一些反馈。任何反馈都将不胜感激

  • 简单地复制密码可能仍然容易受到字典攻击,例如,密码“hello”变为“hellohello”,因此可能是字典的一部分
  • 使用加扰密码作为salt使攻击者能够使用字典,然后通过在每个条目上添加加扰密码为所有条目生成彩虹表
  • 为什么要更改任何开发人员都能理解的经过验证的算法?只要按默认方式执行,您的代码就可以由其他人维护
  • “我的应用程序可能真的不需要这种级别的安全性”——直到那个时候它才被黑客攻击。使用盐,几乎不需要额外的努力。现在就做

    “完全不需要存储密码salt”:salt可以非常小(6字节)。这几乎不会影响性能

  • 简单地复制密码可能仍然容易受到字典攻击,例如,密码“hello”变为“hellohello”,因此可能是字典的一部分
  • 使用加扰密码作为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漏洞、漏洞中收集的数百万密码中的一个顶级密码。。。。例如:

    当你有上千个顶级密码要使用的时候,为什么还要麻烦使用暴力强制呢

    因此,您的第一个最佳防御措施是使用单词列表过滤用户的错误密码选择。也就是说,首先不要允许用户选择弱密码或已知密码

    如果有人偷走了你的密码数据库,那么他或她将使用这些相同的密码列表来尝试猜测你用户的密码。他或她是