关于 Kerberos 认证协议流程
这周网络安全课布置的作业是了解 Kerberos 认证协议的流程,于是我自学了相关知识,整理笔记如下,如有错误,欢迎指正!
1. 基本概念
-
Kerberos 认证是一个基于票据的认证机制,旨在在不安全的网络环境中提供强大的身份验证服务
-
Kerberos 认证流程涉及四个个主要参与者:
-
客户端(用户)
-
认证服务器(AS,Authentication Server)
-
票据授予服务器(TGS,Ticket Granting Server)
-
应用服务器(为用户提供服务的设备或系统)
-
-
其中,AS 和 TGS 是第三方,用于验证 Kerberos 客户机的身份,为应用服务器提供认证服务
2. 认证过程
2.1 举例
纯文字感觉不太好理解,我们先用图片和公式来梳理下认证流程:
- 假设有四个角色:客户端(C),认证服务器(AS),票据授予服务器(TGS),和应用服务器(S)
- 记客户端的密码为 \(k_C\) ,AS 和 TGS 的密钥分别为 \(k_{AS}\) 和 \(k_{TGS}\) ,应用服务器的密钥为 \(k_S\) ,以下是详细的流程:

① C ==> AS:
-
\(E{k_C}(ID_{TGS}, TS_1)\)
-
\(TS_1\) 是时间戳,可以用于防止重放攻击
-
客户端C给认证服务器AS发送包含其身份信息的请求,请求获得对票据授予服务器的访问权,发送票据服务器TGS的ID和时间戳(是用客户端的密钥进行的加密)
-
② AS ==> C:
- \(E_{k_C}(ID_{TGS}, K_{C,TGS}, TS_1)\)
- \(E_{k_{TGS}}(ID_C, K_{C,TGS}, TS_1)\)
- \(K_{C,TGS}\) 是 C 和 TGS 之间的会话密钥
- AS 就会验证客户端的身份,然后发送两个重要的信息:
- 一是客户端和TGS之间的会话密钥 \(K_{c,tgs}\)
- 二是TGT(Ticket Granting Ticket,票据授予票据),即 \(E_{k_{TGS}}(ID_C, K_{C,TGS}, TS_1)\),客户端无法解密这个,之后它会将其原封不动发给TGS
③ C ==> TGS:
- \(E_{k_{C,TGS}}(ID_S, TS_2)\)
- \(TGT\),也就是 \(E_{k_{TGS}}(ID_C, K_{C,TGS}, TS_1)\)
- \(TS_2\) 是新的时间戳
- C 使用 \(K_{C,TGS}\) 加密请求,并附上 \(TGT\)
④ TGS ==> C:
- \(E_{k_{C,TGS}}(ID_S, K_{C,S}, TS_2)\)
- \(E_{k_S}(ID_C, K_{C,S}, TS_2)\)
- \(K_{C,S}\) 是 C 和 S 之间的会话密钥
- TGS就会先解密TGT,验证客户端的身份,然后生成客户端和应用服务器之间的会话密钥 \(K_{c,s}\)
- TGS发送两个信息给客户端:
- 一是加密的会话密钥 \(K_{c,s}\)
- 二是加密的服务票据(Service Ticket),即 \(E_{k_S}(ID_C, K_{C,S}, TS_2)\),同理,客户端无法解密这个,之后它会将其原封不动发给S
⑤ C ==> S:
- \(E_{k_{C,S}}(ID_C, TS_3)\)
- \(Ticket\),也就是 \(E_{k_S}(ID_C, K_{C,S}, TS_2)\)
- \(TS_3\) 是新的时间戳
- C 使用 \(K_{C,S}\) 加密请求,并附上服务票据 \(Ticket\)
⑥ S ==> C:
- \(E_{k_{C,S}}(TS_3 + 1)\)
- S 验证服务票据和时间戳,然后使用 \(K_{C,S}\) 加密 \(TS_3 + 1\)作为回应
2.2 具体流程(纯文字)
下面是一个典型的 Kerberos 认证过程,分成六个主要步骤:
(1)客户端请求AS(认证服务器):
- 客户端向认证服务器发送一个包含其身份信息的请求(通常是用户名),请求获得对票据授予服务器的访问权,这个请求可以包含一个时间戳,用于防止重放攻击。
(2)AS(认证服务器)回复客户端:
- 认证服务器验证客户端的身份,然后发送两个重要的信息:
- 一是客户端和票据授予服务器之间的会话密钥\(K_{c,tgs}\)
- 二是TGT(Ticket Granting Ticket,票据授予票据),TGT是加密的,包含客户端的身份信息和会话密钥,只有票据授予服务器能解密
(3)客户端请求TGS(票据授予服务器):
- 客户端使用从AS获得的会话密钥加密一个新的请求(包含对目标服务的访问要求)和TGT,发送给票据授予服务器,这个请求通常也包含一个新的时间戳。
(4)TGS(票据授予服务器)回复客户端:
- 票据授予服务器首先解密TGT,验证客户端的身份,然后生成客户端和目标服务(应用服务器)之间的会话密钥\(K_{c,s}\)
- TGS发送两个信息给客户端
- 一是加密的服务票据(Service Ticket)
- 二是加密的会话密钥
(5)客户端请求应用服务器:
- 客户端使用从TGS获得的服务票据和会话密钥向目标服务(应用服务器)发起请求
- 服务票据是加密的,只有目标服务能解密
(6)应用服务器回复客户端:
- 应用服务器解密服务票据,验证客户端的身份,然后使用会话密钥与客户端建立安全的通信。
在整个过程中,Kerberos 保证了身份验证的安全性和数据的保密性。

浙公网安备 33010602011771号