好的,这可能听起来像一个奇怪的问题。在跳我之前请仔细阅读好吗? ; - )
想象一下这种情况:
好的,是的,我意识到这听起来很奇怪。是的,整个会话都在SSL中,所以你可以发送密码明文。是的,我意识到可以以散列形式安全地存储明文密码。
以下是我的观点:我们的业务真实地说“我们永远不会知道您的密码”。
注意我并不是说“我们不会以明文形式存储您的密码”,而是我们真的,永远不会知道它;你永远不会把它给我们。
(想要这个的原因是不相关的,足以说用户的密码用于其他东西,例如文件加密)。
是的,我意识到你可能会说正常的做法是“在你进行散列时,密码只能在内存中以明文形式显示5ms”,但这更多是关于否定性。即,我们可以说100%我们甚至没有接收您的密码。
好的,这就是问题:
以前有人做过或听过这种事吗?
这样做有什么安全隐患?
我很难看到下行空间。例如:
好的,你现在可以跳我:)
思考,欢迎评论。
谢谢,
约翰
更新:只是想澄清一下:我并不是说这在某种程度上是对身份验证进程安全性的改进。但是,它允许用户的“真实”密码保持秘密,即使是从服务器。因此,如果真实密码用于加密文件,则服务器无法访问该文件。
我对我想要这个的原因感到非常满意,问题是它是否是阻碍对身份验证过程的安全性。
答案 0 :(得分:4)
考虑一些事情:
最终结果是salt +密码已成为他们的新密码。总的来说,我同意大多数人的意见,这样做没什么好处。
答案 1 :(得分:3)
在我看来,这个方案有一个好处,我没有看到提到(也许我错过了)。可以肯定的是,hash + salt成为真正的密码。但是,就重用密码的人的安全性而言,它增加了价值。如果我在您的网站上使用我的密码'asdfasdf'并且有人危及您的服务器,他们将无法提取我在dubdubdub.superfinance.com上使用的密码。
答案 2 :(得分:2)
这正是password hashers对网络浏览器的作用。
每个人对你的想法的问题并不是一个坏主意;只是因为你是的开发者客户端和服务器,信任客户端的计算机而不是服务器不会给你任何真正的好处(毕竟,客户端可能有一个键盘记录器或东西)。所以回答你的问题:这只是你的一个障碍。
答案 3 :(得分:1)
除了上面提到的那些问题之外的另一个问题:除非你再次对所接收的值进行散列和加盐,否则你实际上是以明文形式存储所有密码。任何获得数据库读取权限的攻击者都可以像任何用户一样进行简单的身份验证。
答案 4 :(得分:0)
所以在这一点上,它根本没有帮助。让我们假设您的SSL已被泄露。他们嗅到哈希+盐渍密码。然后他们可以发送它,因为您的服务器接受哈希+盐渍密码作为他们的密码。您正在做的只是添加一层复杂性(无法在密码框中输入密码),在这种情况下,他们可以手动将其发送到您的服务器。
更不用说如果它完成了客户端,你不仅要处理它们的哈希算法,还要处理你的盐以及你如何组合它。
总结:在我看来没有什么好处,但我可能错了。
我个人实现哈希+ salting服务器端并在登录页面强制使用SSLv3 / TLSv1。