我在哪里加盐并哈希我的密码?在客户端还是主机?

eri*_*ork 3 security

我认为直接在客户端的机器上加密和散列密码会更聪明.原因是,我实际上从不想获得用户的密码.这是一个字符串应该是他的秘密,而不是我们两个人.现在有人争辩说,你想让盐保密,所以你不能通过频道以明文形式发送它.显然,事实并非如此.所以现在我没有看到任何理由,为什么我不应该只是从客户端请求哈希.你怎么看?

编辑讨论向主机发送客户端密码的问题实际上不是直接问题.客户端的问题是将密码从他的计算机中发送出去.乐观的客户可能会认为他的计算机是保存区域.但是那条电缆(或天线)的一切都是夏娃的领地.在安全场景中,你永远不会偏执.所以再次:密码永远不会离开客户端计算机!

Jer*_*fin 8

发送任何密码或其散列允许攻击者记录的哈希值,并在重放攻击中使用它.

您通常希望使用质询/响应协议,这意味着您发送一个随机数.客户端使用其密码短语作为密钥对该随机数进行加密(或进行密钥散列),然后发回结果.你这样做,看看两场比赛.

这使您可以验证匹配的密钥,而不必每次都通过不安全的通道发送密钥.

至于你最初如何获得数据以进行比较,是的,你通常希望客户端对密码进行散列,然后使用服务器的公钥对其进行加密,并发送该加密的结果.

  • @erikb:是的——在任何情况下,盐通常都应该是公众知识;它不需要保密即可完成其工作。 (2认同)