3.7. 用户到用户认证交换
概述
用户到用户认证是 Kerberos 协议的一种变体,允许两个客户端相互认证,而不要求任何一方维护长期密钥。这在点对点场景中特别有用。
问题
在标准 Kerberos 模型中:
- 服务器维护长期密钥
- 客户端使用在服务器长期密钥中加密的票据向服务器认证
- 这对于点对点认证效果不佳,因为任何一方都不想维护长期密钥
解决方案
用户到用户认证:
- 一个用户获得 TGT
- 第二个用户请求第一个用户的票据
- 票据使用第一个用户 TGT 的会话密钥加密(而非长期密钥)
- 第二个用户向第一个用户出示此票据以进行认证
协议流程
- 用户 A 从 AS 获得 TGT
- 用户 B 向 TGS 发送 TGS_REQ:
- 请求用户 A 的票据
- 包含 ENC-TKT-IN-SKEY 选项
- 包含用户 A 的 TGT
- TGS 发出使用用户 A 的 TGT 会话密钥加密的票据
- 用户 B 向用户 A 出示票据
- 用户 A 可以使用 TGT 会话密钥解密票据
- 两个用户共享来自新票据的会话密钥
要求
- 必须在 TGS 请求中设置 ENC-TKT-IN-SKEY 选项
- 必须向 TGS 提供第一个用户的 TGT
- 第一个用户必须有可用的 TGT 以解密传入的票据
使用场景
- 点对点应用
- 工作站到工作站通信
- 任何一方都不维护长期密钥的场景
- 移动或临时服务
安全考虑
- 两个用户都必须有有效的 TGT
- 第一个用户 TGT 的会话密钥用作加密密钥
- 在对等方之间提供相互认证
- 对等服务不会暴露长期密钥
参考
完整技术细节请参阅 RFC 4120 第 3.7 节。