Kerberos TGT 更新

Kerberos TGT renewal

我对续订 TGT 的理解是,新密钥是使用用户密码(或派生密码)加密的,以便他们可以对其进行解密。但这意味着必须将密码存储在内存中才能使用新的 TGT。

我的问题是:

  1. 我的理解有误吗?新的 TGT 密钥可以使用旧的 TGT 密钥加密吗?
  2. 如果密码存储在内存中(因此不会再次提示用户)为什么要创建可更新的 TGT 而不是只获取新的 TGT?

请允许我纠正您对此的理解。 Kerberos 的工作原理是将密钥嵌入到票证中,票证有两种类型:TGT 和服务票证 (ST)。实际密码不会存储在内存中,也不会放入票证中。加密机制使用密码的派生加上一些额外的项目来防止中间人攻击和重放攻击。

  1. 新 TGT 未使用旧 TGT 密钥加密。这是因为部分加密使用了时间戳,当然时间戳总是在变化。因此,旧的 TGT 一旦时间到期或用户请求新的 TGT 就会失效。此外,TGT 既没有使用用户密码加密,也没有简单地派生密码。 TGT 使用时间戳和 KDC 的主密钥加密,后者只有 KDC 知道。用户无法解密 TGT。但是通过拥有它,用户证明了他是他所说的那个人,因为当他第一次请求 TGT 时,他已经通过发送一个认证器来证明自己的身份,该认证器基本上是他的密码的哈希值、时间戳和一些其他项目(例如 IP 地址)。
  2. 密码永远不会存储在内存中,默认情况下 TGT 是可更新的。只有当已签发TGT的账户即将到期,或已被停用时,该账户的用户才会无法获得新的TGT。重要的是要认识到无缝单点登录体验的一部分意味着默认情况下 TGT 是可更新的。 TGT虽然是“更新”,但实际上是全新的TGT。可更新标志仅意味着该用户可以获取新的 TGT。如果您查看对此的网络跟踪,您会发现这是一张新票。最后,除了用户之外,唯一可以 confirm/verify 此哈希值的实体是 KDC。

仅供参考,我还建议编辑您的 post 并添加 'authentication' 标签以扩大受众范围。


Diagram pictured above taken courtesy of computerworld.com

参考文献:
Kerberos: An Authentication Service for Computer Networks
Kerberos Authentication Protocol