Kerberos 原理
2024年12月3日约 555 字大约 2 分钟
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。