我认为直接在客户端的机器上加密和散列密码会更聪明.原因是,我实际上从不想获得用户的密码.这是一个字符串应该是他的秘密,而不是我们两个人.现在有人争辩说,你想让盐保密,所以你不能通过频道以明文形式发送它.显然,事实并非如此.所以现在我没有看到任何理由,为什么我不应该只是从客户端请求哈希.你怎么看?
编辑讨论向主机发送客户端密码的问题实际上不是直接问题.客户端的问题是将密码从他的计算机中发送出去.乐观的客户可能会认为他的计算机是保存区域.但是那条电缆(或天线)的一切都是夏娃的领地.在安全场景中,你永远不会太偏执.所以再次:密码永远不会离开客户端计算机!
发送任何密码或其散列允许攻击者记录的哈希值,并在重放攻击中使用它.
您通常希望使用质询/响应协议,这意味着您发送一个随机数.客户端使用其密码短语作为密钥对该随机数进行加密(或进行密钥散列),然后发回结果.你这样做,看看两场比赛.
这使您可以验证匹配的密钥,而不必每次都通过不安全的通道发送密钥.
至于你最初如何获得数据以进行比较,是的,你通常希望客户端对密码进行散列,然后使用服务器的公钥对其进行加密,并发送该加密的结果.