单点登录(SSO)的核⼼--kerberos⾝份认证协议技术参考
(⼀)
微软Windows Server 2003操作系统实现Kerberos 版本5的⾝份认证协议。Windows Server 2003同时也实现了公钥⾝份认证的扩
展。Kerberos⾝份验证的客户端实现为⼀个SSP(security support provider),能够通过SSPI(Security Support Provider Interface)进⾏访问。最初的⽤户⾝份验证是跟Winlogon的单点登录架构集成在⼀起的。Kerberos的KDC(Key Distribution Center)跟Windows Server 2003的域控制器DC(domain controller)上的安全服务集成在⼀起,KDC使⽤域的活动⽬录数据库作为它的安全帐户数据库,缺省
的Kerberos实现要求活动⽬录的⽀持。
这个主题将解释Windows Server 2003是怎样⽀持Kerberos V5协议及其扩展的。
Kerberos ⾝份验证
Kerberos V5⾝份验证协议提供⼀个在客户端跟服务器端之间或者服务器与服务器之间的⾝份验证机制(并且是相互的⾝份验证机制)Windows Server 2003把Kerberos V5⾝份验证协议实现为⼀个能够通过S
SPS(Security Support Provider Interface)的SSP(security support provider),另外,Windows Server 2003还通过使⽤智能卡的公共密钥证书(public key certificates)进⾏初始⾝份验证来扩展此协议。
Kerberos的密钥分发中⼼ KDC(Key Distribution Center)使⽤活动⽬录的服务数据库作为⾃⼰安全帐户数据库。NTLM 和 Kerberos的缺省实现都需要活动⽬录的⽀持。
Kerberos V5协议假设客户端和服务端的最初信息交换发⽣在开放的⽹络环境中,在⽹上传输的数据包能够被监视并能被任意修改。这个假设的环境,跟现在的因特⽹⾮常相似,攻击者可以⾮常容易的伪装为⼀个客户端或者⼀个服务器,也能很容易的窃听和篡改合法客户端和服务端之间的通讯。
微软的Kerberos V5协议实现是:
Windows Server 2003的缺省⾝份认证
Kerberos V5协议成为Windows 2003的缺省⾝份验证,Windows Server 2003还为了能⽀持Windows NT Server 4.0等⾮Kerberos的操作系统还⽀持NTLM协议。
基于RFC 1510及其修订草案
Kerberos协议是成熟的、⼴泛应⽤的、开放的标准,微软Kerberos V5协议的实现遵循RFC的标准,因此能提供跟其他实现的互操作。
可扩展性
Kerberos 架构允许你指定另外的或者可以替换的安全⽅案。并且,可以通过智能卡的公钥/私钥来提供缺省的共享安全密钥过程。
⾝份认证带来的好处
Kerberos V5协议⽐NTLM协议更安全、更灵活,更有效,⽤Kerberos⾝份验证能够获得的好处是:
当Windows的服务为某个客户端访问资源时会扮演这个客户端,在多数情况下,在本机上⼀个服务能够为客户端完成访问资源的⼯作,因为NTLM和Kerberos都能为服务提供需要扮演客户端的信息。可是,在分布式应⽤被设计为前端服务扮演客户端连接到在其他服务器上的后端服务,Kerberos V5协议包括⼀个允许服务扮演客户端连接到其他服务器上的服务的代理机制,NTLM则没有这样的功能。
Interoperability.
微软的Kerberos V5实现是基于IETF的推荐标准规范。这样,Windows Server 2003的Kerberos V5实现就为其他使⽤Kerberos V5协议的⽹络的互操作打下了基础。
对于NTLM,为了验证每⼀个客户端,应⽤服务器必须连接到域控制器以证实客户端⾝份。对于Kerberos V5⾝份验证协议,服务器不⽤去连接域控制器,相应的,服务器可以检验客户端提供的验证票。客户端可以为特定的服务获取⼀次验证票并在⼀次登录过程中反复使⽤这个验证票。可更新的会话票据(session tickets)替代了pass-through authenticatio(不知道怎么翻译)。
通过使⽤Kerberos协议,在⽹络连接的⼀端都可以验证⽹络另⼀端的声明是它⾃⼰的实体。虽然NTLM允许服务器验证客户端的⾝份,但是它没有提供客户端验证服务端⾝份的功能,也没有提供服务器验证另⼀个服务器⾝份的功能。NTLM被设计为假设服务器都是真实的⽹络环境,Kerberos则没有这个假设。
协议标准
Kerberos⾝份验证协议⼏⼗年前起源于⿇省理⼯学院,是由“Athena”项⽬的⼯程师开发的。第⼀个公开发⾏的版本是Kerberos版本4。在被⼴泛的使⽤后,协议的开发者发布了Kerberos第五版本。
Kerberos V5现在成为IETF的标准,Windows Server 2003中Kerberos V5的实现严格的遵循了RFC 1510定义的标准,另外,Kerberos消息
中的安全令牌(security tokens)的格式和机制遵循RFC 1964定义的标准。
Kerberos V5协议规定了以下机制:
l        验证⽤户⾝份。当⼀个⽤户需要获取访问⼀个服务器的权利,服务器需要验证⽤户的⾝份,考虑⼀个场景,⽤户声称他是,⽐
如,Alice@tailspintoys。因为访问资源是基于⾝份关联的许可,服务器必须确定⽤户就是他⾃⼰声称的⽤户。
l        安全的打包⽤户名,⽤户名(⽤户的主名,在本例中就是Alice@tailspintoys),和⽤户的⾝份信任凭证(credentials)被打包在⼀个叫做票据(ticket)的数据结构中
l        安全的传送⽤户信任凭证。票据被加密后,Kerberos消息在⽹络上传送⽤户的信任凭证(credentials)。
注意:
虽然Kerberos协议验证⽤户的⾝份,它并不授权访问。这是个重要的区别。在其他情形中的票据,象驾驶执照,就同时提供了⾝份和驾驶车辆的许可。Kerberos的票据仅仅⽤来证明这个⽤户就是它⾃⼰声称的那个⽤户。在⽤户⾝份得以确认后,本地的安全权限将决定给予访问权限或者拒绝访问。
Kerberos消息被多种加密密钥加密以确保没⼈能够篡改客户的票据或者Kerberos消息中的其他数据。
l        长期密钥(Long-term key)
⼀个密钥(只有⽬标服务器和KDC知道),并⽤来加密客户端访问这个⽬标服务器票据的密钥。
l        Client/server会话密钥(session key)
⼀个短期的、单此会话的密钥,是在⽤户的⾝份和权限已经被确认后由KDC建⽴的⽤于这个⽤户的跟某个服务器之间的加密往来信息使⽤的密钥
l        KDC/⽤户会话密钥(session key).
是KDC跟⽤户共享的⼀个密钥,被⽤于加密这个⽤户跟KDC之间的消息。
Kerberos V5协议使⽤了对称加密和⾮对称加密两种加密技术
因为⼤多数Kerberos的加密⽅式是基于只⽤于KDC和⽤户之间或者KDC和⽹络服务之间的密钥,Kerberos V5被设计为采⽤对称加密,即使⽤同⼀个密钥来加密和加密消息。
微软的Kerberos协议实现能够使⽤有限的⾮对称加密,⼀个私钥/公钥对被⽤于加密和解密来⾃客户端或者⽹络服务的初始验证信息。
⾝份验证防⽌数据包重⽤
Kerberos⾝份验证机制建⽴并安全的传送⼀个带有客户票据的信任凭证(通常基于⼀个唯⼀的时间戳),信任凭证是唯⼀并且⼀次使⽤有效。这个限制使有⼈获取并重⽤客户端票据或者尝试偷取客户的⾝份的可能性降到最⼩。
协议的扩展
Windows Server 2003实现Kerberos V5协议的扩展,这个扩展在初始⾝份认证时采⽤公钥证书来替代常规的对称加密密钥。这个改进允许协议⽀持⽤智能卡交互登录。公钥⾝份验证扩展是基于IETF⼯作组的草案协议。
⾝份验证的相关技术
下图显⽰了Windows Server 2003中Kerberos⾝份验证同其它技术如何配合的。依赖是客户端或服务端应⽤是⽤户模式(user-mode)还是核⼼模式(kernel-mode)的应⽤,他们分别使⽤Secur32.dll 或者Ksecdd.sys,调⽤SSPI跟Local Security Authority Subsystem (LSASS)通讯
下表是参与kerberos⾝份验证的组件的描述
Component Description
Kerberos.dll被⽤来⼝令或者智能卡交互式登录实现⼯业标准的协议SSP。它也
是Windows 2000 和 Windows Server 2003⾸选的⾝份验证⽅式。
Kdcsvc.dll Kerberos密钥分发中⼼(KDC)服务,它回应客户端票据授权票(ticket-granting
tickets)的申请
Ksecdd.sys在核⼼模式(kernel-mode)下⽤户跟LSASS通讯的核⼼安全设备驱动
Lsasrv.dll LSA服务,强制安全策略和担当LSA安全包管理器
Secur32.dll Secur32.dll 是在⽤户模式(user mode)下实现SSPI的组件
Windows Server 2003是⽤SSP来实现Kerberos V5⾝份验证协议,是操作系统提供的⼀个动态链接库(DLL),系统使⽤Kerberos SSP, Kerberos.dll,是⾝份验证的第⼀选择。在LSA为⼀个交互式登录的⽤户建⽴了⼀个安全的上下⽂,为了⽀持Kerberos信息的签名和封装,正在运⾏的⽤户安全上下⽂装载另外⼀个Kerberos SSP实例
因为Kerberos⾝份验证协议是Windows Server 2003⾸选协议,所有域服务都⽀持Kerberos SSP,包括:
l        AD活动⽬录要求使⽤LDAP(Lightweight Directory Access Protocol)
l        使⽤RPC的远程服务或workstation management
l        客户-服务器⾝份验证
l        使⽤Common Internet File System/server message block (CIFS/SMB)的远程⽂件访问
l        分布式⽂件系统管理
l        IIS的intranet⾝份验证
html怎么实现登录验证功能l        Internet Protocol security (IPSec)的安全验证
l        为域⽤户和计算机发放证书的请求
⾝份验证依赖于
本节讨论和该书Kerberos⾝份验证依赖项以及和他们的关系
Kerberos ⾝份认证依赖于客户端功能,这些功能内建于Windows Server 2003、Windows XP、Window
s 2000操作系统。如果⼀个客户端、域控制器或者⽬标服务器运⾏于更早的操作系统下,那它就不天然的⽀持Kerberos ⾝份验证。
⽹络连通性
⼀旦Kerberos ⾝份认证发⽣,在客户端、域控制器和⽬标服务器之间必须有TCP/IP⽹络连接,关于TCP/IP更多的信息,参考“TCP/IP Technical Reference.”
客户端使⽤全限定名fully qualified domain name(FQDN)访问域控制器,DNS必须能够保证客户端能够获得这个域控制器的地址。最好不要使⽤DNS主机⽂件,关于DNS的更多信息,参看“DNS Technical Reference.”
Kerberos ⾝份验证不⽀持更糟的操作系统,⽐如Windows NT 4.0。你必须使⽤活动⽬录服务中的⽤户和计算机,本地帐户和Windows
NT域帐户不能被由于Kerberos ⾝份验证
为了Kerberos ⾝份验证能正常的发挥作⽤,在⽹络中的所有域和森林使⽤相同的时间源以保证⽹络中的所有计算机时间同步。⼀个活动⽬录域控制器担当权威的时间源,它保证所有的域具有相同的时间。更多信息,参看“Windows Time Service Technical Reference.”
服务主体名(SPNs) 是运⾏在服务器上服务的唯⼀标识符。每⼀个使⽤Kerberos ⾝份验证的服务都需要有个SPN以使客户端能够在⽹络上标识这个服务。没有正确的设置SPNs, Kerberos ⾝份验证就是不可能的。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。