Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TCP客户机-服务器体系结构中的简单密码认证_Tcp_Client Server_Password Protection_Password Encryption - Fatal编程技术网

TCP客户机-服务器体系结构中的简单密码认证

TCP客户机-服务器体系结构中的简单密码认证,tcp,client-server,password-protection,password-encryption,Tcp,Client Server,Password Protection,Password Encryption,大家早上好。 我一直在阅读关于如何进行安全密码身份验证(散列n次、使用salt等)的文章(这里大部分是在stackoverflow中),但我对如何在我的TCP客户机-服务器体系结构中实际实现它表示怀疑 我已经实现并测试了我需要的方法(使用jasypt digester),但我的疑问是在哪里进行哈希及其验证 至于我读到的内容,一个好的做法是避免传递密码。在这种情况下,服务器将发送散列密码,客户端将使用用户输入的密码进行测试。之后,我必须告诉服务器身份验证是否成功。好的,这不起作用,因为任何连接到服

大家早上好。 我一直在阅读关于如何进行安全密码身份验证(散列n次、使用salt等)的文章(这里大部分是在stackoverflow中),但我对如何在我的TCP客户机-服务器体系结构中实际实现它表示怀疑

我已经实现并测试了我需要的方法(使用jasypt digester),但我的疑问是在哪里进行哈希及其验证

至于我读到的内容,一个好的做法是避免传递密码。在这种情况下,服务器将发送散列密码,客户端将使用用户输入的密码进行测试。之后,我必须告诉服务器身份验证是否成功。好的,这不起作用,因为任何连接到服务器正在读取的套接字并发送“身份验证确认”的人都将登录

另一个选项是将密码的has发送到服务器。在这种情况下,我看不到散列的任何实际好处,因为“攻击者”只需发送相同的散列进行身份验证


可能我没有得到一些详细信息,所以,有人能告诉我这一点吗?

你的问题的简短答案肯定是永久存储密码哈希的那一方

答案很长:哈希密码只允许防止对密码存储(如数据库)具有只读访问权限的攻击者升级到更高的功率级别,并防止您知道实际的密码,因为许多用户在多个服务中使用相同的密码(良好的描述和说明)。这就是为什么您需要在存储端进行验证(因为正如您所提到的,otherwize攻击者只会发送“validation ok”消息,仅此而已)

然而,如果您想要实现真正安全的连接,简单的密码哈希是不够的(正如您还提到的,攻击者可以嗅探TCP流量并显示哈希)。为此,您需要建立一个安全连接,这比仅仅散列密码要困难得多(在web世界中,您输入密码的页面应该始终通过HTTPS提供)。SSL/TLS应该用于此目的,但是这些协议位于TCP之上,因此您可能需要另一个解决方案(通常,您需要有一个可信的证书源,需要验证服务器证书,需要生成一个公共对称加密密钥,然后加密您发送的所有数据)。建立安全的加密连接后,加密数据对嗅探是无用的,攻击者永远不会知道密码的散列