Kerberos 原理
2024/12/3大约 2 分钟约 555 字
Kerberos 原理
客户端与 Authentication Service
第一步,客户端通过kinit USERNAME或其他方式,将客户端ID, 目标HTTP服务ID, 网络地址(可能是多个机器的IP地址列表,如果想在任何机器上使用,则可能为空),以及TGT有效期的寿命等信息发送给认证服务器 Authentication Service。

第二步,Authentication Server 将检查客户端ID是否在KDC数据库中。
此检查仅用于查看您是否存在,不验证凭据。

如果 Authentication Server 检查操作没有异常,那么KDC将随机生成一个会话密钥key,用于客户端与 Ticket Granting Service(TGS) 通信。这个Key,一般被称为 TGS Session Key。
随后 Authentication Server 将发送两条信息给客户端。
其中一条消息被称为TGT,由TGS的密钥加密,客户端无法解密。包含:
- your name/ID(客户端ID)
- the TGS name/ID
- 时间戳
- 您的网络地址(可能是多台机器的IP地址列表,如果想在任何机器上使用,则可能为空)
- TGT的生存期(可能是您最初请求的,如果您或TGS的密钥即将过期,则更低,或者在Kerberos设置期间实现的另一个限制)
- TGS Session Key
另一条消息, 由客户端密钥加密,客户端可以正常解密,。包含:
- TGS名称/ID(目标 HTTP 服务ID)
- 时间戳
- TGT的生存期(可能是您最初请求的,如果您或TGS的密钥即将过期,则更低,或者在Kerberos设置期间实现的另一个限制)
- TGS Session Key
请注意,TGS会话密钥是您和TGS之间的共享密钥。

第三步,客户端利用本地的密钥解密出第二条信息。如果本地密钥无法解密出信息,那么认证失败。
加密的TGT存储在您的凭据缓存中。
客户端与 Ticket Granting Service
这时候,客户端有了 TGT(由于本地没有TGS的密钥,导致无法解密出其数据)与 TGS Session Key。
贡献者
yueny