Kerberos协议实现访问控制

Kerberos协议主要用于网络身份鉴别,该协议的特点是只要输入一次身份验证信息就可以访问多个服务,而且访问更加安全。其基本原理图如下所示:


该协议主要分为两大步骤。

第一步:Client获取TGT(ticket-grantingticket)

1.客户端输入身份信息向KDC(密钥分配中心)发送请求,KDC根据客户端发送的身份信息向Ticket granting service请求取得TGT。然后KDC采用其与请求Client约定的加密策略对TGT进行加密,将TGT发送到Client。

2. Client收到KDC响应后,使用约定的解密策略对反馈的TGT进行解密,得到TGT。


第二步:使用第一步得到TGT请求服务

1.Client将第一步取得的TGT与请求的服务发送给KDC服务器。KDC根据请求信息为Client和请求的Service直接生成一个Session Key,用于Cilent 与Service直接的身份鉴别。

然后KDC将Session key发送给Service,但KDC不会直接将Session Key发给Service。而是将Session key和请求用户的用户名,IP,请求过期时间,以及时间戳等信息使用与该Service约定的加密算法将这些信息加密成一个Ticket,进行加密。并发给Client,由转发给Service。由于Session Key是Client与Service通信的依据,所以要将Session Key再与之前加密生成的Ticket采用KDC与Client之间的加密算法进行加密,加密后发送个客户端。

2.Client收到服务器响应后,采用解密算法获取Session key。由于客户端不知道KDC与Service之间的解密策略,自然无法将Ticket解密,无法篡改Tieket中的信息。Client将用户名,IP等需要的相关信息使用Session Key将其打包加密为一个Authenticator和Ticket一起发送到Service。

3.Service收到Tiket后使用约定的解密策略进行解密,取得Session Key,用户名,IP等封装的信息。然后使用Session Key将Authenticator解密,获取用户名,IP等信息与Tieket中取得的信息比较验证用户信息。如果匹配,向Client返回信息。

相关文章
相关标签/搜索