我正在阅读有关ASP.Net 身份验证和授权的链接,这 5 个步骤用于解释 NTLM 身份验证。
客户端将用户名和密码发送到服务器。
服务器发送质询。
- 客户端以 24 字节结果响应质询。
- 服务器通过联系域控制器检查响应是否正确计算。
- 如果一切正常,它就会批准请求。
问题:
- 在客户端发送用户名和密码后,我无法理解发生了什么。尤其是“挑战”和“24字节结果”这两个词
- 向服务器发送用户名/密码时使用哪种加密方法?
我正在阅读有关ASP.Net 身份验证和授权的链接,这 5 个步骤用于解释 NTLM 身份验证。
客户端将用户名和密码发送到服务器。
服务器发送质询。
问题:
以下是官方来源的措辞:
以下步骤概述了 NTLM 非交互式身份验证。第一步提供用户的 NTLM 凭据,并且仅作为交互式身份验证(登录)过程的一部分进行。
- (仅限交互式身份验证)用户访问客户端计算机并提供域名、用户名和密码。客户端计算密码的加密哈希并丢弃实际密码。
- 客户端将用户名发送到服务器(以明文形式)。
- 服务器生成一个 16 字节的随机数,称为挑战或随机数,并将其发送给客户端。
- 客户端使用用户密码的哈希加密这个挑战并将结果返回给服务器。这称为响应。
- 服务器向域控制器发送以下三项:
- 用户名
- 发送给客户端的挑战
- 从客户端收到的响应
- 域控制器使用用户名从 Security Account Manager 数据库中检索用户密码的哈希值。它使用此密码哈希来加密挑战。
- 域控制器将其计算的加密质询(在步骤 6 中)与客户端计算的响应(在步骤 4 中)进行比较。如果它们相同,则认证成功。
因此,挑战是服务器生成的消息,由客户端和 DC 使用帐户密码的哈希加密,并在 DC 上进行比较。
加密方法在 NTLM 版本和不同服务器设置之间是可变的。
这是维基百科的一些内容:
LMv2 和 NTv2 都使用用户密码和其他识别信息的 NT 哈希对客户端和服务器质询进行哈希处理。确切的公式是从存储在 SAM 或 AD 中的 NT 哈希开始,然后使用 HMAC-MD5 继续对用户名和域名进行哈希处理。