为什么kerberos需要TGT?

mak*_*XIE 3 kerberos

我正在学习KDC的设计,发现该协议需要3轮信息交换。但我认为 TGT 的步骤是重复的且不必要的,因为 KDC 可以在第一轮中发送票证。那么为什么要设计第二轮呢?兑换TGT有什么用?

在此输入图像描述

Ste*_*eve 5

这并非没有必要。这是一个长期优化。

使用 Kerberos,KDC 和客户端之间有两个流:

  • AS-REQ:将人工提供的凭证交换为票据(例如密码、证书等)。
  • TGS-REQ 将 KDC 提供的票据交换为另一票据。

AS-REQ 可以请求任何它想要的票证。实际上它只要求krbtgt. AS-REQ 旨在评估所使用的凭据、在备份目录中查找身份、应用任何策略以及 KDC 认为实际上是昂贵操作的任何其他操作。凭证验证/派生/等。可能是一项昂贵的操作。查询目录以获取组成员身份等信息(例如在 Active Directory 的情况下)的成本非常昂贵。这对于客户端来说代价高昂,因为它很可能总是进行密钥派生,对于 KDC 来说代价高昂,因为它总是要查询目录。

如果您要求krbtgt解锁对 TGS-REQ 流程的访问权限。

TGS-REQ 流程验证krbtgt,在目录中查找所请求的服务,并将 krbtgt 票证的内部内容复制到所请求的服务票证中。这要快几个数量级,因为它跳过了 AS-REQ 流中发生的大部分内容。它仍然会查询目录,但与其他所有内容相比,这很便宜。客户端现在不进行任何密钥派生。

更重要的是,现在您不再需要在内存中保留长期凭证,因为您拥有 TGT。