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 节。