gpt4 book ai didi

sql - 在发送到服务器之前散列密码

转载 作者:行者123 更新时间:2023-12-04 16:32:48 25 4
gpt4 key购买 nike

通过 UTF-8 编码的套接字传输发送密码时,如果我在发送数据之前使用 MD5 或 SHA-1 对密码进行哈希处理,是否被认为是安全的?请记住,我计划比较 SQL 数据库中的散列密码。我担心有人能够嗅探 UTF-8 中的散列密码,然后解密 UTF-8 编码并可以获得我的散列密码,该密码可能用于匹配我数据库中的密码。

最佳答案

如果客户端只是发送散列密码,那么散列密码就是“密码”:客户端只需要显示以进行身份​​验证的字节序列。如果攻击者可以嗅探到,那么您的协议(protocol)注定失败。

如果身份验证协议(protocol)仅包含提供一段 secret 数据(如果您愿意,可以将其称为密码),那么交换应该发生在确保 secret 性(这样 secret 数据不能被嗅探)和服务器身份验证(因此攻击者可能不会模仿服务器并说服客户端向他发送 secret 数据)。这就是您从经典 SSL/TLS 隧道(https:// URL,在 Web 上下文中)中得到的结果。

如果您无法通过服务器身份验证建立 SSL/TLS 隧道(即服务器具有客户端可以验证的证书),那么您可能需要使用带有质询的身份验证协议(protocol):服务器发送一系列随机字节(挑战)并且客户端以通过密码和挑战的串联计算的哈希值进行响应。不要在家尝试做这个!很难做到正确,尤其是当攻击者可以拦截通信(主动攻击)时。

更通用的答案是 password-authenticated key exchange协议(protocol)。 PAKE 结合了加密 key 协议(protocol)协议(protocol)(例如 Diffie-Hellman)和客户端和服务器之间的相互密码验证,以一种可以击败被动和主动攻击者的方式,即使密码相对较弱(攻击者无法获得足够的数据来“尝试”)每次猜测时不与客户端或服务器交互的密码)。不幸的是,除了数学描述之外,很少有 PAKE 算法被标准化,而且该领域是一个专利雷区。

关于sql - 在发送到服务器之前散列密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4068241/

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