【问题标题】:Kerberos TGT renewalKerberos TGT 更新
【发布时间】:2018-01-03 20:57:07
【问题描述】:

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

我的问题是:

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

【问题讨论】:

    标签: authentication kerberos


    【解决方案1】:

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

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

    作为仅供参考,我还建议您编辑您的帖子并添加“身份验证”标签,以扩大受众范围。


    Diagram pictured above taken courtesy of computerworld.com

    参考资料:
    Kerberos: An Authentication Service for Computer Networks
    Kerberos Authentication Protocol

    【讨论】:

    • 谢谢。这清楚了很多。更新 TGT 时是否创建了新的会话密钥?
    • Yes -> 用于授予票证 (TGT) 和服务票证的会话密钥是短暂的,并且仅在该会话或服务票证有效时使用。每个人:technet.microsoft.com/en-us/library/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    相关资源
    最近更新 更多