Kerberos协议

Kerberos由MIT于1988年开发,用于分布式环境中的应用层协议,这是一个身份认证协议。其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。Kerberos在一个分布式的Client/Server体系的机构中,引入一个可信任的第三方(Kerberos服务器),使用共享密钥加密技术,让其提供认证服务。

简写

全称

作用

KDC

key distributed center

整个安全认证过程的票据生成管理服务,其中包含两个服务,AS和TGS

AS

authentication service

为client生成TGT的服务

TGS

ticket granting service

为client生成某个服务的ticket

AD

account database

存储所有client的白名单,只有存在于白名单的client才能顺利申请到TGT

TGT

ticket-granting ticket

用于获取ticket的票据

Ticket

票据

身份或权利的证明,Ticket由AS以数据报形式发放给C

client


想访问某个server的客户端

server


提供某种业务的服务

1、Kerberos要解决的问题

在一个开放的分布式网络环境中,用户通过工作站访问服务器提供的服务,存在许多问题:

  1. 工作站上的用户可以冒充另一个用户操作
  2. 用户可以改变工作站的地址冒充另一台工作站
  3. 用户可以窃听并回放他人的信息交换,获得对于某种服务的访问权或中断服务的运行
  4. 使用假冒服务器从而骗得用户的机密信息

2、Kerberos 4认证过程

认证服务交换:获得票据许可票据-- Tickettgs = EKtgs[Kc,tgs || IDc || ADc || IDtgs || TS2 || Lifetime2]

1)C → AS :IDc || IDtgs || TS1

2)AS → C : EKc[Kc,tgs || IDtgs || TS2 || Lifetime2 || Tickettgs]

票据许可服务交换:获得服务许可票据-- Ticketv = EKv[KC,V || IDc || ADc || IDv || TS4 || Lifetime4];Kc,tgs : 由AS生成允许客户端和TGS间安全交换报文;Authenticatorc = EKc,tgs[IDc || ADc || TS3]符号说明:Authenticatorc :由客户端产生认证符,证明票据的有效性

3)C → TGS :IDv || Tickettgs || Authenticatorc

4)TGS → C :Kc,tgs[KC,V || IDv || TS4 || Ticketv]

客户端/服务器端认证交换:获得服务-- Authenticatorc = EKc,v[IDc || ADc || TS5]

5)C → V : Ticketv || Authenticatorc

6)V → C :EKv[TS5 + 1]

3、Kerberos特点

  • 安全:使网络窃听者不能获得必要的信息来伪装成另一个客户。
  • 可靠:对所有以Kerberos进行控制访问的服务来说,客户无法通过Kerberos服务器的认证就意味着无法获得所需要的服务。
  • 透明:用户除了需要输入一个口令外,不必知道认证过程的存在以及细节。
  • 可伸缩:可支持大量用户和服务器。

注:Kerberos协议不是一成不变的,也是由一般的版本慢慢更新的,安全协议都是在往复发现安全隐患后越发成熟。