我正在做一些关于Windows密码的研究,我有点问题。
Windows加密用户密码并将其存储在:C:\WINDOWS\system32\config\SAM
通过 NTLM 算法加密它们(加上Syskey)
NTLM 也是一种网络身份验证协议,所以我搞砸了。
我想知道 NTLM加密是否与 NTLM网络协议相同。我的意思是,在Windows中,当您键入用户和密码时,如果系统在同一系统(localhost)上启动网络协议,就像它们是太不同的计算机(ip)一样。
或者,如果它们是两个具有相同名称的不同的东西。 如果有人可以给我一些关于两种方法的差异的解释,那将是很好的。
希望你能理解我的问题,因为我不是英国人! 提前谢谢!
答案 0 :(得分:3)
免责声明:我为Microsoft工作,但不在Windows或任何开发NTLM的团队工作。这些知识来自外部来源,因此可能不准确。
NTLM有两个方面:单向哈希算法和身份验证协议。
单向散列函数是Windows操作系统用来存储密码的函数(在秘密文件中,正如您所注意到的那样)。当然,这是因为明文密码不需要存储在磁盘上。当您在登录屏幕上键入密码时,它将使用NTLM哈希算法进行哈希处理,并与秘密文件中的现有哈希值进行比较。如果匹配,您将进行身份验证。如果没有,系统会提示您再次输入密码。
身份验证协议是一种质询/响应协议,可对CIFS或HTTP等一些在线协议进行身份验证。该算法利用上述NTLM哈希算法,以便根据用户键入的密码构建对服务器挑战的响应。可以从Microsoft的开放规范许可证中获得NTLM身份验证协议的协议规范。
要回答您的问题,当您登录Windows时,可能只是使用NTLM哈希并针对磁盘文件进行检查,而不是进行一些网络调用。当然,如果您的计算机恰好是域控制器(并且,不知何故,无法执行Kerberos),那么它可以通过网络对localhost进行NTLM身份验证,但这是一个非常人为的例子。当然,如果您在本地计算机上访问网络资源(例如,CIFS文件共享或访问网站),那么您将使用网络身份验证协议,而不是直接访问秘密文件。
答案 1 :(得分:0)
NTLM不是网络协议。这是一种身份验证协议。它们是完全不同的东西。
这里对NTLM进行了很好的讨论。特别注意NTLM不再使用的事实(它已被Kerberos和NTLM2取代,这两者都在链接文章中定义和讨论)。