跳到主要内容

5.1. ASN.1 兼容性的具体注意事项

概述

本节解决实现者必须了解的特定 ASN.1 编码和兼容性问题,以确保互操作性。

5.1.1. ASN.1 唯一编码规则

所有 Kerberos 消息使用唯一编码规则 (Distinguished Encoding Rules, DER) 进行编码。DER 是基本编码规则 (Basic Encoding Rules, BER) 的子集,确保每个值都有唯一编码。

关键要求

  • 对所有消息使用 DER 编码
  • 没有可选的编码选择
  • 需要确定长度编码
  • SET 和 SET OF 排序的特定规则

5.1.2. 可选整数字段

Kerberos 消息中的可选整数字段具有特定的编码规则:

  • 如果存在,必须进行编码
  • 如果不存在,必须完全省略
  • 如果字段存在,则应显式编码零值
  • 实现必须正确处理存在和不存在的情况

5.1.3. 空的 SEQUENCE OF 类型

当 SEQUENCE OF 类型不包含任何元素时:

  • 某些实现可能编码为零长度
  • 其他可能完全省略该字段
  • 实现必须接受两种形式
  • 生成时,遵循 DER 规则

5.1.4. 无法识别的标记号

遇到无法识别的标记号时:

  • 接收者应该保留编码
  • 接收者应该忽略其存在
  • 接收者不得仅因未知标记而拒绝消息
  • 例外:未知的授权数据可能需要特殊处理

5.1.5. 大于 30 的标记号

大于 30 的 ASN.1 标记号使用多字节编码:

  • 实现必须支持多字节标记
  • 必须正确处理长格式标记编码
  • 这确保了协议的可扩展性

实现指导

  • 仔细验证 ASN.1 解码
  • 尽可能保留未知扩展
  • 严格遵守 DER 编码规则
  • 使用各种 ASN.1 编码器/解码器测试兼容性

参考

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