在客户端散列密码是否有安全意义

Does it make security sense to hash password on client end

如果在跨行发送用户密码并将其保留在内存中的纯文本中之前对其进行哈希,这会提高应用程序的安全性吗?

我假设这通过保护存储在客户机内存中的数据来减轻一小部分漏洞。但实际上,如果我们担心有人在读客户的记忆,可能会有更大的问题我们无法解决。

在客户机端散列有点不对劲。

客户端密码散列是一种常见的做法吗?这样做还有什么好处或缺点吗?

编辑:假设通信通道是安全的(SSL)。在什么条件下使用这种方法是可以接受和值得的?我之所以这么问是因为"安全专家"建议我在某些应用程序功能中使用这种方案。


不。

当客户端发送东西时,无论是P还是H(P)H(H(P))任何截获的人都可以简单地重新发送完全相同的东西,从而使类似这样的功能等同于直接使用密码。

这就是为什么您应该使用nonce;服务器可以发出一些随机垃圾k,客户机将计算H(P,k),并将其发送到服务器。HMAC是这种方法的一种流行实现。

如果服务器从不接受同一个nonce两次,那么这是安全的,可以抵御重播攻击。


正如其他人指出的那样,发送散列密码并不能提高您站点的安全性(因为您接受散列密码,所以坏人只需要知道散列版本)。它也不是很安全,因为坏人可能会加载你的登录页面并检查部署的JavaScript或Java。

它所做的是防止监视数据包的人能够提取密码,这是相当有用的。许多人在多个站点上使用同一个密码(除了更高安全性的站点之外,我对所有站点都使用相同的密码),因此,如果您可以从这些站点上获得一个密码,则可以登录到其他站点上的其他帐户。

它还可以防止真正的密码被存储在您的站点上,即使是暂时的,如果您的站点被破坏,这可能会提供一点额外的安全性。

所以,虽然我认为用户端散列可能是一件好事,但不值得再麻烦了。

而且,正如其他人告诉你的,不要破坏你自己的安全。有太多的事情会出错。你不会像一个训练有素的坏人那样注意到他们。


在您描述的场景中,散列与来自安全POV的密码完全相同:如果我截获了散列,我不需要知道密码,我可以将截获的散列发送给服务器。

为了避免这个问题,身份验证协议有一定的长度;安全性很难,您最好选择和实现一个理解良好的协议,而不是滚动自己的协议。

如果您的流量超过了SSL,那么您就不会被拦截,而散列则不会给您带来额外的好处。


是的,你应该。P></

IEEE有日期在which emails和违约暴露密码的10万是从博客。P></

ieeelog.com http:/ / /P></

IEEE should not have暴露明显,他们的博客!but if they had the at the client端密码hashed have been近,this as就不会坏。P></

as the美国第一的答案,你应该在目前的使用。如果你不能利用足够长(例如128位),你不真的需要担心的服务器将不重用,as the same(Ask for the不能正确crng assuming种子两次,等)。P></


不,客户端散列不能"完全"保护密码。当选择在客户机上散列密码时,提交到服务器的摘要实质上就是密码。如果部署了SSL,这本身就不是问题。

然而,这个方案最终产生的问题比它解决的要多。如果服务器在不执行任何进一步加密操作(尤其是对输入数据进行哈希处理)的情况下,将客户端提交的哈希与数据库中存储的哈希进行比较,则出于所有实际目的,密码将以明文存储。任何有权访问存储哈希的人都可以将其重新提交到服务器并获得对帐户的访问权。

简单来说,如果提交的哈希(与提交的哈希相同)通过应用程序中的任何其他漏洞(例如,通过SQL注入)泄漏,则应用程序存在一个漏洞,其中对密码的保护不充分。

如果必须修复基础漏洞,则有必要将提交的哈希视为明文密码,然后在与存储的哈希进行比较之前,应对其进行哈希处理(最好使用salt)。


我想在一个环境让感恩;你不想知道的plaintext the client'任何密码。如果你的客户在客户端的哈希,哈希散列,然后盐和迭代的方式你会在the same plaintext PW。其他比它的愚蠢的那个点。P></


只需确保通过安全通道(SSL)发送密码即可。如果客户机可以读取应用程序的私有内存,那么很可能他们有更大的问题,比如键盘记录器。


如果你使用安全远程密码协议(SRP),你会过得更好。它是为这个设计的。


我可以给你方法different kind of如果你have not SSL客户端的哈希密码,你可以在服务器端和客户端使用了它hashed在线商店hashing another method and them在线数据库当用户登录密码给process with the same匹配与存储的密码hashes双hashedP></


hashing在线客户端上另一个巨大的洞opens:你可能hashing expose the algorithm。你不要说this is whether(基于Web客户端或客户端的JavaScript =)厚,但你给他们更多的信息。is given the通道安全,你不要担心密码被sniffed the clear text。P></

如果你besides hashing algorithm……,你会好的盐,盐曝光,如果你让他们过,which means to the access数据库,他们可以decrypt摇篮到每个密码。P></