1

我正在考虑使用以下方法实现安全用户身份验证。那么如何从询问用户名开始并将其提交到服务器。提交时,服务器将查找与该用户相关的密码。它会附加一些值(比如时间戳或任何其他可以发送回客户端的附加值)。它将使用一些公钥算法对其进行加密并将其发送回客户端。现在将提示客户端输入密码。现在,当用户输入密码并提交时,密码值将附加与服务器中附加到密码相同的值;使用相同的公钥算法生成加密字符串并与从服务器接收的值进行比较。如果它们相等,则用户已通过身份验证并且可以创建会话,否则会失败。

我想知道这种方法在性能方面是否可行且有效;以及违反这种方法的难度。

4

1 回答 1

2

这个协议非常糟糕,因为它允许攻击者使用离线方法来破解密码。这意味着攻击者只能向服务器发送一个请求,他将收到加密的密码+时间戳(基本上是密码的哈希),然后他将能够暴力破解密码离线。使用一个好的字典、一组好的规则和几个 GPU,这可以很容易地完成。

实际上,服务器不应该向客户端发送任何与密码相关的信息(“密码正确”或“密码不正确”除外)。

于 2013-07-23T12:48:54.890 回答