在 Windows 的 NTLM 用户身份验证

文章翻译 文章翻译
文章编号: 102716 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文讨论了 NTLM 用户身份验证在 Windows 中的以下几个方面:
  • 在 $ 帐户数据库中的密码存储
  • 通过使用 MSV1_0 身份验证程序包的用户身份验证
  • 直接传递身份验证

更多信息

在 $ 帐户数据库中的密码存储

用户记录存储在安全帐户管理器 (SAM) 数据库中或在 Active Directory 数据库中。每个用户帐户是与两个密码相关联: 兼容 LAN 管理器的密码和 Windows 密码。每个密码被加密并存储在 SAM 数据库中或在 Active Directory 数据库中。

兼容 LAN 管理器的密码是兼容的 LAN 管理器使用密码。此密码基于原始设备制造商 (OEM) 字符集。此密码不区分大小写,最多可以有 14 个字符长。此密码的 OWF 版本也是 LAN Manager OWF 或 ESTD 的版本。通过使用 DES 加密加密一个常数,使用明文密码计算此密码。LAN Manager OWF 密码为 16 个字节长。 明文密码的前 7 个字节用于计算 LAN Manager OWF 密码的前 8 个字节。计算机 LAN Manager OWF 密码的第二个的 8 个字节用于明文密码的第二个 7 字节。

Windows 密码基于 Unicode 字符集中。此密码是区分大小写的最多可以有 128 个字符长。此密码的 OWF 版本也是 Windows OWF 的密码。通过使用 RSA MD 4 加密算法计算此密码。此算法计算的明文密码字节的可变长度字符串的 16 字节摘要。

LAN 管理器密码或 Windows 密码,可能没有任何用户帐户。但是,每个尝试维护这两个版本的密码。例如对于如果用户帐户通过使用 PortUas,移植从 LAN Manager UAS 数据库,或者从 LAN 管理器客户端或 Windows 为工作组客户端更改密码将存在仅 LAN 管理器版本的密码。如果设置或在 Windows 客户端上更改密码,密码没有任何 LAN 管理器表示形式,将存在仅 Windows 版本的密码。(该密码可能具有没有 LAN 管理器表示形式因为密码是长度超过 14 个字符,或者因为 OEM 字符集中,不能表示该字符)。在 Windows 中的用户界面限制不让 Windows 密码超过 14 个字符。本文内下文中讨论了此限制的影响。

在 Windows 2000 Service Pack 2 和更高版本的 Windows 中,设置是可用的允许您阻止 Windows 存储密码的哈希 LAN 管理器。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
299656如何防止 Windows 在 Active Directory 和本地 SAM 数据库中存储 LAN 管理器哈希密码的
注意Microsoft 不支持手动或以编程方式更改在 SAM 数据库。

通过使用 MSV1_0 身份验证程序包的用户身份验证

Windows 使用 LsaLogonUser API 的所有类型的用户身份验证。LsaLogonUser API 通过调用身份验证程序包验证用户。默认状态下,LsaLogonUser 调用 MSV1_0 (MSV) 身份验证程序包。此包将包含在 Windows NT 中。将 MSV 身份验证包存储用户记录在 SAM 数据库中。该程序包将通过身份验证的用户的其他域中支持通过使用 Netlogon 服务。

在内部,MSV 身份验证包分为两部分。在连接到的计算机上运行 MSV 身份验证程序包的第一部分。第二部分将包含用户帐户在计算机上运行。当在同一台计算机上运行的两个部分时,MSV 身份验证程序包的第一部分而不涉及 Netlogon 服务调用第二部分。MSV 身份验证程序包的第一部分将识别该通过身份验证是必需的因为传递的域名称不是其自身域的名称。需要通过身份验证时 MSV 将请求传递给 Netlogon 服务。Netlogon 服务将请求路由到目标计算机上的 Netlogon 服务。反过来,Netlogon 服务将请求传递给 MSV 身份验证程序包的其他部分在那台计算机上。

LsaLogonUser 支持交互式登录、 服务登录和网络登录。在 MSV 身份验证包,登录的所有窗体传递该用户帐户的域,该域包含用户的帐户名称和用户的密码的某些功能的名称。它们将它传递给 LsaLogonUser 上时,不同类型的登录将以不同的方式表示密码。

交互式登录、 批登录和登录服务,登录客户端将在运行 MSV 身份验证程序包的第一部分的计算机上。在这种情况下,LsaLogonUser MSV 身份验证程序包的第一部分,将被传递纯文本密码。对于登录服务以及批处理登录,服务控制管理器和 $ 任务计划程序,请提供存储该帐户的凭据的一种更为安全的方法。

为 LAN Manager OWF 密码和 Windows NT OWF 密码 MSV 身份验证程序包的第一部分将转换为纯文本密码。然后,包的第一部分传递纯文本密码,NetLogon 服务或包的第二部分。第二部分然后查询 OWF 密码的 SAM 数据库,并确保它们都是完全相同。

对于网络登录连接到计算机的客户端是以前给定 16 字节挑战或"现时。如果客户端是 LAN 管理器客户端,客户端通过加密使用 16 个字节的 LAN Manager OWF 密码 16 字节挑战计算 24 字节质询的响应。LAN 管理器客户端然后将此传递到服务器的"LAN Manager 挑战响应"。如果客户端是 Windows 客户端,使用相同的算法来计算一个"Windows NT 挑战响应"。然而,在 Windows 客户端使用 16 位 Windows OWF 数据而不是 LAN Manager OWF 数据。LAN Manager 质询响应和 Windows NT 质询响应,到服务器,然后传递给 Windows 客户端。在这两种情况下服务器通过向 LsaLogonUser API 传递以下所有验证用户:
  • 域名称
  • 用户名称
  • 原始的挑战
  • LAN Manager 质询响应
  • 可选的 Windows NT 质询响应
MSV 身份验证程序包的第一部分将传递到第二部分未更改此信息。首先,第二部分查询 OWF 密码 SAM 数据库中或从 Active Directory 数据库。然后,第二部分计算质询响应通过使用从数据库和传递中的这一难题 OWF 密码。 第二部分然后将计算所得的质询响应传入的质询响应进行比较。

注意NTLMv2 还允许客户端发送一起使用的会话密钥,以帮助减少常见的攻击的风险的一项挑战。

如前面提到的密码任一版本可能已丢失 SAM 数据库中或从 Active Directory 数据库。此外,密码的任一版本可能已丢失从 LsaLogonUser 调用。如果在 SAM 数据库中的密码的 Windows 版本和从 LsaLogonUser 密码的 Windows 版本都是可用,同时使用它们。否则,使用密码的 LAN 管理器版本进行比较。此规则可帮助从 Windows 发生到 Windows 的网络登录时强制区分大小写。此规则还允许为保持向后兼容性。

直接传递身份验证

NetLogon 服务实现通过身份验证。它执行以下功能:
  • 选择要传递到身份验证请求域。
  • 选择域中的服务器。
  • 通过身份验证请求传递到选定的服务器中。
选择域非常简单。域名被传递给 LsaLogonUser。域名是按下面这样处理:
  • 如果域的名称与匹配 SAM 数据库的名称,该计算机上处理身份验证。是一个的域名称的成员在 Windows 工作站上的 SAM 数据库被认为是计算机的名称。上一个的 Active Directory 域控制器帐户数据库的名称是域的名称。 不是域的成员的计算机上, 每次登录处理本地的请求。
  • 如果指定的域名受信任此域的域,身份验证请求传递给受信任的域。Active Directory 的域控制器上的受信任域列表轻松地使用。在 Windows 域一个属于该请求总是传递给在工作站让确定是否信任指定的域的主域的主域。
  • 如果指定的域名不受信任的域的连接到指定的域名就该域名在计算机上处理的身份验证请求。NetLogon 无法区分一个不存在的域、 不受信任的域和不正确的类型化的域名。
NetLogon 域中选择一个服务器,通过一个名为发现的过程。Windows 工作站发现一个 Windows Active Directory 域控制器,其主要的域中的名称。一个 Active Directory 域控制器发现每个受信任域中的 Active Directory 域控制器的名称。不会发现该组件是在 DC 定位程序运行的 Netlogon 服务。DC 定位程序使用 NETBIOS 或 DNS 名称解析来定位所需服务器的具体取决于域和配置的信任的类型。

属性

文章编号: 102716 - 最后修改: 2006年11月1日 - 修订: 2.2
这篇文章中的信息适用于:
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Web Edition
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows XP Professional Edition
关键字:?
kbmt kbinfo kbhowto KB102716 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 102716
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com