gpt4 book ai didi

security - 登录时应该使用随机数吗?

转载 作者:行者123 更新时间:2023-12-05 08:58:13 26 4
gpt4 key购买 nike

Wikipedia给出了以下基于 nonce 的身份验证示例:

  1. 客户端从服务器请求随机数。

  2. 服务器响应随机数(即,以下称为“服务器随机数”)。

  3. 客户端使用服务器随机数、它自己的客户端随机数和用户输入的随机数生成哈希的密码。

  4. 客户端将用户输入的用户名、客户端随机数和哈希值发送到服务器。

  5. 服务器从它的服务器中检索服务器随机数和用户密码数据库,大概是通过用户名。

  6. 服务器将服务器随机数、客户端随机数和密码结合起来生成哈希。

  7. 服务器将刚刚生成的哈希值与客户端发送的哈希值进行比较。

  8. 如果哈希值匹配,则客户端通过身份验证。如果不是,则客户端是拒绝了。

这不是暗示服务器以明文形式存储用户密码吗?是否严重违反了建议保存密码的加盐哈希值而不是实际密码本身的安全原则?

最佳答案

这个协议(protocol)基本上是一个challenge–response authentication .它用于避免发送实际的 secret (例如,密码),但响应只能在知道 secret 的情况下有效。并且为了避免重放攻击,加入了随机数。

但是,上述协议(protocol)要求服务器以可检索的形式(例如,明文或加密)存储 secret 。

但是您可以通过要求客户端生成相同的密码哈希来更改协议(protocol)以允许使用密码哈希而不是明文密码:

  1. 客户端从服务器请求salt 和随机数以获取用户输入的用户名
  2. 服务器从它的数据库中检索salt,大概是通过username,并用salt和nonce(即,以下称为>服务器随机数)。
  3. 客户端使用salt和用户输入的密码生成密码哈希并使用密码哈希服务器 nonce 及其自己的 client nonce 以生成 nonce 哈希
  4. 客户端将用户输入的用户名客户端随机数随机数哈希发送到服务器。
  5. 服务器从其数据库中检索服务器随机数和用户密码哈希,大概是通过用户名
  6. 服务器结合服务器随机数客户端随机数密码哈希生成一个随机数哈希
  7. 服务器将刚刚生成的 nonce hash 与客户端发送的 nonce hash 进行比较。
  8. 如果哈希值匹配,则客户端通过身份验证。否则,客户将被拒绝。

关于security - 登录时应该使用随机数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24977352/

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