了解一下NTLM

2023-10-07 22:09
文章标签 了解 一下 ntlm

本文主要是介绍了解一下NTLM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NTLM 在客户机与服务器之间提供身份认证的安全包。

NTLM   身份验证协议 是 质询/应答身份验证协议,是Windows   NT   4.0   及其早期版本中用于网络身份验证的默认协议。Windows   2000   中仍然支持该协议,但它不再是默认的。  

 

NTLM身份验证过程:

ntlm 是用于 Windows NT 和 Windows 2000 Server 工作组环境的身份验证协议。它还用在必须对 Windows NT 系统进行身份验证的混合 Windows 2000 Active Directory 域环境中。当 Windows 2000 Server 转换为不存在下层 Windows NT 域控制器的本机模式时,禁用 NTLM.然后 Kerberos v5 变成企业级的默认身份验证协议。

ntlm 身份验证机制:



http://dotnet.chinaitlab.com/UploadFiles_6597/200608/20060808164125589.gif


                    NTLM 质询/应答机制


下面概述质询/应答机制:

· 用户请求访问。用户尝试通过提供用户凭据登录到客户端。登录前,客户端计算机缓存密码的哈希值并放弃密码。客户端向服务器发送一个请求,该请求包括用户名以及纯文本格式的请求。

· 服务器发送质询消息。服务器生成一个称为质询的 16 字节随机数(即 NONCE),并将它发送到客户端。

· 客户端发送应答消息。客户端使用由用户的密码生成的一个密码哈希值来加密服务器发送的质询。它以应答的形式将这个加密的质询发回到服务器。

· 服务器将质询和应答发送到域控制器。服务器将用户名、原始质询以及应答从客户端计算机发送到域控制器。

· 域控制器比较质询和应答以对用户进行身份验证。域控制器获取该用户的密码哈希值,然后使用该哈希值对原始质询进行加密。接下来,域控制器将加密的质询与客户端计算机的应答进行比较。如果匹配,域控制器则发送该用户已经过身份验证的服务器确认。

· 服务器向客户端发送应答。假定凭据有效,服务器授予对所请求的服务或资源的客户端访问权。


Kerberos 身份验证的优势:

与 NTLM 身份验证相比,Kerberos 身份验证具有以下优势:

· 相互身份验证。当客户端使用 Kerberos v5 协议对特定服务器上的特定服务进行身份验证,Kerberos 为客户端提供网络上恶意代码不会模拟该服务的保证。

· 委托支持。使用 Kerberos 身份验证对客户端进行身份验证的服务器可以模拟这些客户端,并使用该客户端的安全上下文访问网络资源。

· 性能。Kerberos 身份验证提供优于 NTLM 身份验证的改进的性能。

· 简化的信任管理。具有多个域的网络不再需要一组复杂的显式、点对点信任关系。

· 互操作性。Microsoft 实现的 Kerberos 协议基于向 Internet 工程任务组 (IETF) 推荐的标准跟踪规范。因此,Windows 2000 中协议的实现为与其他网络的互操作奠定了基础(其中 Kerberos 版本 5 用于身份验证)。

kerberos 身份验证机制

 Kerberos 身份验证协议的简化视图:

http://dotnet.chinaitlab.com/UploadFiles_6597/200608/20060808164126557.gif


                  Kerberos 身份验证


当客户端对网络服务进行身份验证之后,kerberos v5 协议遵循以下步骤:

· 客户端从 KDC 请求 TGT.用户试图通过提供用户凭据登录到客户端。客户端计算机上的 Kerberos 服务向密钥发行中心 (KDC) 发送一个 Kerberos 身份验证服务请求。该请求包含用户名、请求票证授予票证(ticket-granting ticket,TGT)所获取的服务信息,以及使用用户的长期密钥(即密码)加密的时间戳。

注 在 Windows 2000 Server 或 Windows Server 2003 操作系统上,域控制器充当 KDC,而 Active Directory 宿主安全帐户数据库。

· 身份验证服务发送加密的 TGT 和会话密钥。KDC 为来自 Active Directory 的用户获取长期密钥(即密码),然后解密随请求一起传送的时间戳。如果该时间戳有效,则用户是真正的用户。KDC 身份验证服务创建一个登录会话密钥,并使用用户的长期密钥对该副本进行加密。然后,该身份验证服务创建一个 TGT,它包括用户信息和登录会话密钥。最后,该身份验证服务使用自己的密钥加密 TGT,并将加密的会话密钥和加密的 TGT 传递给客户端。

· 客户端从 TGT 请求服务器访问。客户端使用其长期密钥(即密码)解密登录会话密钥,并在本地缓存它。此外,客户端还将加密的 TGT 存储在它的缓存中。访问网络服务时,客户端向 KDC 票证授予服务(ticket-granting service,TGS)发送一个包含信息的请求,这些信息包括用户名、使用用户登录会话密钥加密的验证者消息、TGT,以及用户想访问的服务(和服务器)名称。

· TGS 发送加密的会话密钥和票证。KDC 上的 TGS 使用自己的密钥解密 KDC 并提取登录会话密钥。它使用该登录会话密钥解密验证者消息(通常是时间戳)。如果验证者消息成功解密,TGS 从 TGT 提取用户信息,并使用用户信息创建一个用于访问该服务的服务会话密钥。它使用该用户的登录会话密钥对该服务会话密钥的一个副本进行加密,创建一个具有服务会话密钥和用户信息的服务票证,然后使用该服务的长期密钥(密码)对该服务票证进行加密。然后,TGS 将加密的服务会话密钥和服务票证添加到客户端。

· 客户端发送服务票证。客户端访问服务时,向服务器发送一个请求。该请求包含验证者消息(时间戳),该消息使用服务会话密钥和服务票证进行加密。

· 服务器发送加密的时间戳以进行客户端验证。服务器解密服务票证并提取服务会话密钥。通过使用服务会话密钥,服务器解密验证者消息(时间戳)并计算它。如果验证者通过测试,则服务器使用服务会话密钥对验证者(时间戳)进行加密,然后将验证者传回到客户端。客户端解密时间戳,如果该时间戳与原始时间戳相同,则该服务是真正的,客户端继续连接。

服务的主要名称

kerberos v5 身份验证协议之所以使用服务的主要名称 (SPN),原因如下:

· 支持相互身份验证。

· 允许一个客户端请求票证,进而允许该客户端与特定服务通讯。

例如,如果某个客户端需要获得一个票证,并对在侦听端口 4766 运行的计算机 (myserver) 上的特定服务 (myservice) 进行身份验证,则该客户端使用根据该信息构造的名称从 KDC 请求一个票证,如下所示:

MyService/MyServer:4766在 Active Directory 中注册的 SPN 在该名称和运行所请求的服务的域帐户之间维护一个映射。通过使用该机制,恶意用户难以在网络上模拟服务。恶意用户必须禁用实际服务并从该网络移除实际服务器。然后,恶意用户必须向网络中添加一台同名的新计算机并公开重复的服务。由于客户端使用具有相互身份验证的 Kerberos v5 协议,因此该客户端将无法使用重复的服务,除非它可以提供配置实际服务进行运行的域帐户的密码。

这篇关于了解一下NTLM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/160733

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

【详细介绍一下GEE】

GEE(Google Earth Engine)是一个强大的云计算平台,它允许用户处理和分析大规模的地球科学数据集,如卫星图像、气候模型输出等。以下是对GEE用法的详细介绍: 一、平台访问与账户设置 访问GEE平台: 用户可以通过访问Google Earth Engine的官方网站来开始使用GEE。 创建账户: 用户需要注册并登录Google账户,然后申请访问GEE平台。申请过程可能需要提

PHP: 深入了解一致性哈希

前言 随着memcache、redis以及其它一些内存K/V数据库的流行,一致性哈希也越来越被开发者所了解。因为这些内存K/V数据库大多不提供分布式支持(本文以redis为例),所以如果要提供多台redis server来提供服务的话,就需要解决如何将数据分散到redis server,并且在增减redis server时如何最大化的不令数据重新分布,这将是本文讨论的范畴。 取模算法 取模运

Weex入门教程之1,了解Weex

【资料合集】Weex Conf回顾集锦:讲义PDF+活动视频! PDF分享:链接:http://pan.baidu.com/s/1hr8RniG 密码:fa3j 官方教程:https://weex-project.io/cn/v-0.10/guide/index.html 用意 主要是介绍Weex,并未涉及开发方面,好让我们开始开发之前充分地了解Weex到底是个什么。 以下描述主要摘取于

Java了解相对较多!

我是对Java了解相对较多,而对C#则是因工作需要才去看了一下,C#跟Java在语法上非常相似,而最初让我比较困惑的就是委托、事件部分,相信大多数初学者也有类似的困惑。经过跟Java的对比学习,发现这其实跟Java的监听、事件是等同的,只是表述上不同罢了。   委托+事件是观察者模式的一个典型例子,所谓的委托其实就是观察者,它会关心某种事件,一旦这种事件被触发,这个观察者就会行动。   下

使用WebP解决网站加载速度问题,这些细节你需要了解

说到网页的图片格式,大家最常想到的可能是JPEG、PNG,毕竟这些老牌格式陪伴我们这么多年。然而,近几年,有一个格式悄悄崭露头角,那就是WebP。很多人可能听说过,但到底它好在哪?你的网站或者项目是不是也应该用WebP呢?别着急,今天咱们就来好好聊聊WebP这个图片格式的前世今生,以及它值不值得你花时间去用。 为什么会有WebP? 你有没有遇到过这样的情况?网页加载特别慢,尤其是那

初步了解VTK装配体

VTK还不太了解,根据资料, vtk.vtkAssembly 是 VTK库中的一个重要类,允许通过将多个vtkActor对象组合在一起来创建复杂的3D模型。 import vtkimport mathfrom vtk.util.colors import *filenames = ["cylinder.stl","sphere.stl","torus.stl"]dt = 1.0renW

Post-Training有多重要?一文带你了解全部细节

1. 简介 随着LLM学界和工业界日新月异的发展,不仅预训练所用的算力和数据正在疯狂内卷,后训练(post-training)的对齐和微调方法也在不断更新。InstructGPT、WebGPT等较早发布的模型使用标准RLHF方法,其中的数据管理风格和规模似乎已经过时。近来,Meta、谷歌和英伟达等AI巨头纷纷发布开源模型,附带发布详尽的论文或报告,包括Llama 3.1、Nemotron 340

了解elementUI的底层源码, 进行二次开发

Element UI 是一个基于 Vue.js 的桌面端组件库,广泛用于构建美观、交互友好的用户界面。要深入理解 Element UI 的底层源码并进行二次开发,你需要掌握以下几个关键点: Vue.js 原理 Element UI 是基于 Vue.js 构建的,因此首先需要熟悉 Vue.js 的核心概念和机制,包括: ● 组件系统:Vue.js 的组件化思想,如何定义组件、使用组件、传递属性和事