跳到主要内容

3.7. 用户到用户认证交换

概述

用户到用户认证是 Kerberos 协议的一种变体,允许两个客户端相互认证,而不要求任何一方维护长期密钥。这在点对点场景中特别有用。

问题

在标准 Kerberos 模型中:

  • 服务器维护长期密钥
  • 客户端使用在服务器长期密钥中加密的票据向服务器认证
  • 这对于点对点认证效果不佳,因为任何一方都不想维护长期密钥

解决方案

用户到用户认证:

  • 一个用户获得 TGT
  • 第二个用户请求第一个用户的票据
  • 票据使用第一个用户 TGT 的会话密钥加密(而非长期密钥)
  • 第二个用户向第一个用户出示此票据以进行认证

协议流程

  1. 用户 A 从 AS 获得 TGT
  2. 用户 B 向 TGS 发送 TGS_REQ:
    • 请求用户 A 的票据
    • 包含 ENC-TKT-IN-SKEY 选项
    • 包含用户 A 的 TGT
  3. TGS 发出使用用户 A 的 TGT 会话密钥加密的票据
  4. 用户 B 向用户 A 出示票据
  5. 用户 A 可以使用 TGT 会话密钥解密票据
  6. 两个用户共享来自新票据的会话密钥

要求

  • 必须在 TGS 请求中设置 ENC-TKT-IN-SKEY 选项
  • 必须向 TGS 提供第一个用户的 TGT
  • 第一个用户必须有可用的 TGT 以解密传入的票据

使用场景

  • 点对点应用
  • 工作站到工作站通信
  • 任何一方都不维护长期密钥的场景
  • 移动或临时服务

安全考虑

  • 两个用户都必须有有效的 TGT
  • 第一个用户 TGT 的会话密钥用作加密密钥
  • 在对等方之间提供相互认证
  • 对等服务不会暴露长期密钥

参考

完整技术细节请参阅 RFC 4120 第 3.7 节