Kerberos协议

介绍

Kerberos是一种网络认证协议,用于验证用户与主机身份的身份验证协议。

Windows Server 操作系统可以实现kerberos版本5身份验证协议和公钥身份验证的扩展,用于传输授权数据和委派。Kerberos身份验证客户端可作为支持提供程序(SSP)实现,并且通过安全支持提供程序接口(SSPI)就行访问。初始用户身份验证与Winlogon单个登录体系结构相集成。

Kerberos 密钥发行中心(KDC)与在域控制器上运行的其他Windows Server安全服务集成。KDC使用域的Active Directory域服务数据库作为其安全数据库。Active Directory域服务是域或林中的默认Kerberos实现的必须的。

协议框架

Kerberos协议中主要包含:

  1. 访问服务的Client
  2. 提供服务的Server
  3. KDC(Key Distribution Center)密钥分发中心

    • Authentication Server(AS):用于验证Client端的身份,通过验证就会给一张TGT(Ticket Granting Ticket)票给Client
    • Ticket Granting Server(TGS):作用是通过AS发送给的Client的票(TGT)获取访问Server端的ST(Service Ticket)

一般情况下KDC 服务默认安装在域控中,CilentServer为域内的用户或者服务。

认证流程(身份认证服务交换 、票据授权服务交换、客户端/服务认证交换)

Kerberos协议 - 图1

  1. Client向KDC发起请求ASREQ,请求的凭据是Client hash加密的时间戳

  2. KDC使用Client hash解密,如果正确就返回加密的的TGT,TGT里面包含了PAC,PAC包含了Client的sid,Client所在的组

    PAC(Privilege Attribute Certificate)特权属性证书,不同账户有不同的权限,PAC就是用来区分不同权限的一种方法

  1. Client凭借TGT票据像KDC发起针对特定服务的请求

  2. KDC解密,结果正确就返回加密的TGS(不管用户有没有访问权限,重要TGT正确就会返回TGS票据)

  3. Client拿着TGS票据去请求服务

  4. 服务器解密TGS,验证身份

流程比较简陋