gpt4 book ai didi

tcp - TCP 客户端服务器架构中的简单密码验证

转载 作者:可可西里 更新时间:2023-11-01 02:41:09 28 4
gpt4 key购买 nike

大家早上好。我一直在阅读(其中大部分在堆栈溢出中)关于如何进行安全密码身份验证(散列 n 次,使用盐等)但我怀疑我将如何在我的 TCP 客户端中实际实现它-服务器架构。

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

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

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

可能我没有得到一些细节,所以,任何人都可以给我一些启发吗?

最佳答案

对您的问题的简短回答肯定是站在永久存储密码散列的一边

长答案:散列密码只能防止对您的密码存储(例如数据库)具有只读访问权限的攻击者升级到更高的功率级别,并防止您知道实际的 secret 密码,因为很多用户使用相同的密码通过多个服务(很好的描述 herehere )。这就是为什么您需要在存储端进行验证(因为否则,正如您所提到的,攻击者只会发送“验证正常”消息,仅此而已)。

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

关于tcp - TCP 客户端服务器架构中的简单密码验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18575002/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com