Windows 集成验证功能块概要设计(一)


  1.1编写目的

    编写该文档的目的在于引导软件开发人员、软件测试人员以及最终用户对Windows下的认证验证的原理及实现有更好的理解。

    该文档的读者为用户代表、软件分析人员、开发管理人员、质量管理人员和测试人员。

1.2           概述

    身份认证是系统安全的一个基础方面,它用来确认尝试登录域或访问网络资源的任何用户的身份。Windows服务器系统身份认证针对所有网络资源启用“单点登录”(Single Sign-onSSO)。采用单点登录后,用户可以使用一个密码或智能卡一次登录到域,然后向域中的任何计算机验证身份。身份认证的重要功能就是它对单点登录的支持。

单点登录是一种方便用户访问多个系统的技术,用户只需在登录时进行一次注册,就可以在一个网络中自由访问,不必重复输入用户名和密码来确定身份。单点登录的实质就是安全上下文(Security Context)或凭证(Credential)在多个应用系统之间的传递或共享。当用户登录系统时,客户端软件根据用户的凭证(例如用户名和密码)为用户建立一个安全上下文,安全上下文包含用于验证用户的安全信息,系统用这个安全上下文和安全策略来判断用户是否具有访问系统资源的权限。Kerberos V5身份认证协议提供一个在客户端跟服务器端之间,或者服务器与服务器之间的双向身份认证机制。

单点登录在安全性方面提供了两个主要优点。

    对用户而言,单个密码或智能卡的使用减少了混乱,提高了工作效率。

    对管理员而言,由于管理员只需要为每个用户管理一个账户,因此域用户所要求的管理支持减少了。

 

      2     身份验证原理解析

    身份验证是一个验证客户端身份的过程,通常采用指定的第三方授权方式。客户端可能是最终用户、计算机、应用程序或服务。客户端的标识称为安全原则。为了使用服务器应用程序进行验证,客户端提供某种形式的凭据来允许服务器验证客户端的标识。确认了客户端的标识后,应用程序可以授予执行操作和访问资源的原则。

2.1           NTLM身份验证

这种验证方式需要把用户的用户名和密码传送到服务端,服务端验证用户名和密码是否和服务器的此用户的密码一致。用户名用明码传送,但是密码经过处理后派生出一个8字节的key加密质询码后传送。

    2.1.1         NTLM身份验证机制

 

图:NTLM 质询/应答机制

 

    2.1.2         概述质询/应答机制

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

 

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

 

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

 

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

 

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

 

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

2.2           Kerberos身份验证

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

  • 相互身份验证。当客户端使用 Kerberos v5 协议对特定服务器上的特定服务进行身份验证,Kerberos 为客户端提供网络上恶意代码不会模拟该服务的保证。
  • 委托支持。使用 Kerberos 身份验证对客户端进行身份验证的服务器可以模拟这些客户端,并使用该客户端的安全上下文访问网络资源。
  • 性能。Kerberos 身份验证提供优于 NTLM 身份验证的改进的性能。
  • 简化的信任管理。具有多个域的网络不再需要一组复杂的显式、点对点信任关系。
  • 互操作性。Microsoft 实现的 Kerberos 协议基于向 Internet 工程任务组 (IETF) 推荐的标准跟踪规范。因此,Windows 2000 中协议的实现为与其他网络的互操作奠定了基础(其中 Kerberos 版本 5 用于身份验证)。

    2.2.1         Kerberos身份验证机制

 

图:Kerberos 身份验证

    2.2.2         Kerberos v5 协议遵循以下步骤

  • 客户端从 KDC 请求 TGT.用户试图通过提供用户凭据登录到客户端。客户端计算机上的 Kerberos 服务向密钥发行中心 (KDC) 发送一个 Kerberos 身份验证服务请求。该请求包含用户名、请求票证授予票证(ticket-granting ticketTGT)所获取的服务信息,以及使用用户的长期密钥(即密码)加密的时间戳。
    : Windows 2000 Server Windows Server 2003 操作系统上,域控制器充当 KDC,而 Active Directory 宿主安全帐户数据库。
     
  • 身份验证服务发送加密的 TGT 和会话密钥。KDC 为来自 Active Directory 的用户获取长期密钥(即密码),然后解密随请求一起传送的时间戳。如果该时间戳有效,则用户是真正的用户。KDC 身份验证服务创建一个登录会话密钥,并使用用户的长期密钥对该副本进行加密。然后,该身份验证服务创建一个 TGT,它包括用户信息和登录会话密钥。最后,该身份验证服务使用自己的密钥加密 TGT,并将加密的会话密钥和加密的 TGT 传递给客户端。
     
  • 客户端从 TGT 请求服务器访问。客户端使用其长期密钥(即密码)解密登录会话密钥,并在本地缓存它。此外,客户端还将加密的 TGT 存储在它的缓存中。访问网络服务时,客户端向 KDC 票证授予服务(ticket-granting serviceTGS)发送一个包含信息的请求,这些信息包括用户名、使用用户登录会话密钥加密的验证者消息、TGT,以及用户想访问的服务(和服务器)名称。
     
  • TGS 发送加密的会话密钥和票证。KDC 上的 TGS 使用自己的密钥解密 KDC 并提取登录会话密钥。它使用该登录会话密钥解密验证者消息(通常是时间戳)。如果验证者消息成功解密,TGS TGT 提取用户信息,并使用用户信息创建一个用于访问该服务的服务会话密钥。它使用该用户的登录会话密钥对该服务会话密钥的一个副本进行加密,创建一个具有服务会话密钥和用户信息的服务票证,然后使用该服务的长期密钥(密码)对该服务票证进行加密。然后,TGS 将加密的服务会话密钥和服务票证添加到客户端。
     
  • 客户端发送服务票证。客户端访问服务时,向服务器发送一个请求。该请求包含验证者消息(时间戳),该消息使用服务会话密钥和服务票证进行加密。

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值