7.5. 协议常量和关联值
7.5. Protocol Constants and Associated Values
下表列出了协议中所使用的常量并定义了其含义。在 "specification"(规范)一节中,规定了限制此处所定义常量取值范围的区间。这使得实现可以就这些常量所可能收到的最大取值做出假设。实现在收到超出 "specification" 一节所规定范围的取值时,可以拒绝该请求,但必须能够干净地恢复。
7.5.1. Key Usage Numbers
[RFC3961] 中的加密与校验和规范要求输入一个 "key usage number"(密钥用途编号),以改变任何具体消息中所使用的加密密钥,从而使某些类型的密码学攻击更加困难。以下是本文档所分配的密钥用途取值:
1. AS-REQ PA-ENC-TIMESTAMP padata 时间戳,使用客户端密钥加密(第 5.2.7.2 节)
2. AS-REP 票据与 TGS-REP 票据(包含 TGS 会话密钥或应用会话密钥),使用服务密钥加密(第 5.3 节)
3. AS-REP 加密部分(包含 TGS 会话密钥或应用会话密钥),使用客户端密钥加密(第 5.4.2 节)
4. TGS-REQ KDC-REQ-BODY AuthorizationData,使用 TGS 会话密钥加密(第 5.4.1 节)
5. TGS-REQ KDC-REQ-BODY AuthorizationData,使用 TGS authenticator 子密钥加密(第 5.4.1 节)
6. TGS-REQ PA-TGS-REQ padata AP-REQ Authenticator 校验和,使用 TGS 会话密钥进行密钥计算(第 5.5.1 节)
7. TGS-REQ PA-TGS-REQ padata AP-REQ Authenticator(包含 TGS authenticator 子密钥),使用 TGS 会话密钥加密(第 5.5.1 节)
8. TGS-REP 加密部分(包含应用会话密钥),使用 TGS 会话密钥加密(第 5.4.2 节)
9. TGS-REP 加密部分(包含应用会话密钥),使用 TGS authenticator 子密钥加密(第 5.4.2 节)
10. AP-REQ Authenticator 校验和,使用应用会话密钥进行密钥计算(第 5.5.1 节)
11. AP-REQ Authenticator(包含应用 authenticator 子密钥),使用应用会话密钥加密(第 5.5.1 节)
12. AP-REP 加密部分(包含应用会话子密钥),使用应用会话密钥加密(第 5.5.2 节)
13. KRB-PRIV 加密部分,使用应用所选的密钥加密(第 5.7.1 节)
14. KRB-CRED 加密部分,使用应用所选的密钥加密(第 5.8.1 节)
15. KRB-SAFE 校验和,使用应用所选的密钥进行密钥计算(第 5.6.1 节)
16-18. 保留,供 Kerberos 及相关协议未来使用。
19. AD-KDC-ISSUED 校验和(见 5.2.6.4 中的 ad-checksum)
20-21. 保留,供 Kerberos 及相关协议未来使用。
22-25. 保留,供 Kerberos 版本 5 GSS-API 机制 [RFC4121] 使用。
26-511. 保留,供 Kerberos 及相关协议未来使用。
512-1023. 保留,供 Kerberos 实现的内部使用。
1024. 供未指定密钥用途取值的协议在应用中使用的加密
1025. 供未指定密钥用途取值的协议在应用中使用的校验和 1026-2047. 保留,供应用使用。
7.5.2. PreAuthentication Data Types
Padata 与数据类型 Padata 类型 说明
取值
PA-TGS-REQ 1 PA-ENC-TIMESTAMP 2 PA-PW-SALT 3 [保留] 4 PA-ENC-UNIX-TIME 5 (已废弃) PA-SANDIA-SECUREID 6 PA-SESAME 7 PA-OSF-DCE 8 PA-CYBERSAFE-SECUREID 9 PA-AFS3-SALT 10 PA-ETYPE-INFO 11 PA-SAM-CHALLENGE 12 (sam/otp) PA-SAM-RESPONSE 13 (sam/otp) PA-PK-AS-REQ_OLD 14 (pkinit) PA-PK-AS-REP_OLD 15 (pkinit) PA-PK-AS-REQ 16 (pkinit) PA-PK-AS-REP 17 (pkinit) PA-ETYPE-INFO2 19 (取代 pa-etype-info) PA-USE-SPECIFIED-KVNO 20 PA-SAM-REDIRECT 21 (sam/otp) PA-GET-FROM-TYPED-DATA 22 (嵌入于 typed data 中) TD-PADATA 22 (内嵌 padata) PA-SAM-ETYPE-INFO 23 (sam/otp) PA-ALT-PRINC 24 ([email protected]) PA-SAM-CHALLENGE2 30 ([email protected]) PA-SAM-RESPONSE2 31 ([email protected]) PA-EXTRA-TGT 41 保留的额外 TGT TD-PKINIT-CMS-CERTIFICATES 101 来自 CMS 的 CertificateSet TD-KRB-PRINCIPAL 102 PrincipalName TD-KRB-REALM 103 Realm TD-TRUSTED-CERTIFIERS 104 来自 PKINIT TD-CERTIFICATE-INDEX 105 来自 PKINIT TD-APP-DEFINED-ERROR 106 应用特定 TD-REQ-NONCE 107 INTEGER TD-REQ-SEQ 108 INTEGER PA-PAC-REQUEST 128 ([email protected])
7.5.3. Address Types
地址类型 取值
IPv4 2 Directional 3 ChaosNet 5 XNS 6 ISO 7 DECNET Phase IV 12 AppleTalk DDP 16 NetBios 20 IPv6 24
7.5.4. Authorization Data Types
授权数据类型 Ad-type 取值
AD-IF-RELEVANT 1 AD-INTENDED-FOR-SERVER 2 AD-INTENDED-FOR-APPLICATION-CLASS 3 AD-KDC-ISSUED 4 AD-AND-OR 5 AD-MANDATORY-TICKET-EXTENSIONS 6 AD-IN-TICKET-EXTENSIONS 7 AD-MANDATORY-FOR-KDC 8 保留取值 9-63 OSF-DCE 64 SESAME 65 AD-OSF-DCE-PKI-CERTID 66 ([email protected]) AD-WIN2K-PAC 128 ([email protected]) AD-ETYPE-NEGOTIATION 129 ([email protected])
7.5.5. Transited Encoding Types
Transited 编码类型 Tr-type 取值
DOMAIN-X500-COMPRESS 1 保留取值 其余全部
7.5.6. Protocol Version Number
标签 取值 含义或 MIT 代码
pvno 5 当前 Kerberos 协议版本号
7.5.7. Kerberos Message Types
消息类型 取值 含义
KRB_AS_REQ 10 初始认证请求 KRB_AS_REP 11 KRB_AS_REQ 请求的响应 KRB_TGS_REQ 12 基于 TGT 的认证请求 KRB_TGS_REP 13 KRB_TGS_REQ 请求的响应 KRB_AP_REQ 14 发往服务器的应用请求 KRB_AP_REP 15 KRB_AP_REQ_MUTUAL 的响应 KRB_RESERVED16 16 保留,用于 user-to-user 的 krb_tgt_request KRB_RESERVED17 17 保留,用于 user-to-user 的 krb_tgt_reply KRB_SAFE 20 安全(带校验和)的应用消息 KRB_PRIV 21 私有(加密)的应用消息 KRB_CRED 22 用于转发凭据的私有(加密)消息 KRB_ERROR 30 错误响应
7.5.8. Name Types
名称类型 取值 含义
KRB_NT_UNKNOWN 0 名称类型未知 KRB_NT_PRINCIPAL 1 正如在 DCE 中那样的主体名称,
或用于用户 KRB_NT_SRV_INST 2 服务及其他唯一实例(krbtgt) KRB_NT_SRV_HST 3 以主机名作为实例的服务
(telnet、rcommands) KRB_NT_SRV_XHST 4 以主机作为其余组成部分的服务 KRB_NT_UID 5 唯一 ID KRB_NT_X500_PRINCIPAL 6 编码的 X.509 可辨别名称 [RFC2253] KRB_NT_SMTP_NAME 7 形如 SMTP 电子邮件名称的名称
(例如 [email protected]) KRB_NT_ENTERPRISE 10 企业名称;可以映射为
主体名称
7.5.9. Error Codes
错误码 取值 含义
KDC_ERR_NONE 0 无错误 KDC_ERR_NAME_EXP 1 客户端在数据库中的条目已过期 KDC_ERR_SERVICE_EXP 2 服务器在数据库中的条目已过期 KDC_ERR_BAD_PVNO 3 不支持所请求的协议版本号 KDC_ERR_C_OLD_MAST_KVNO 4 客户端的密钥使用旧的主密钥加密 KDC_ERR_S_OLD_MAST_KVNO 5 服务器的密钥使用旧的主密钥加密 KDC_ERR_C_PRINCIPAL_UNKNOWN 6 在 Kerberos 数据库中找不到客户端 KDC_ERR_S_PRINCIPAL_UNKNOWN 7 在 Kerberos 数据库中找不到服务器 KDC_ERR_PRINCIPAL_NOT_UNIQUE 8 数据库中存在多个主体条目 KDC_ERR_NULL_KEY 9 客户端或服务器拥有一个空密钥 KDC_ERR_CANNOT_POSTDATE 10 票据不符合远期(postdate)条件 KDC_ERR_NEVER_VALID 11 所请求的 starttime 晚于 end time KDC_ERR_POLICY 12 KDC 策略拒绝该请求 KDC_ERR_BADOPTION 13 KDC 无法满足所请求的选项 KDC_ERR_ETYPE_NOSUPP 14 KDC 不支持该加密类型 KDC_ERR_SUMTYPE_NOSUPP 15 KDC 不支持该校验和类型 KDC_ERR_PADATA_TYPE_NOSUPP 16 KDC 不支持该 padata 类型 KDC_ERR_TRTYPE_NOSUPP 17 KDC 不支持该 transited 类型 KDC_ERR_CLIENT_REVOKED 18 客户端凭据已被吊销 KDC_ERR_SERVICE_REVOKED 19 服务器凭据已被吊销 KDC_ERR_TGT_REVOKED 20 TGT 已被吊销 KDC_ERR_CLIENT_NOTYET 21 客户端尚无效;请稍后重试 KDC_ERR_SERVICE_NOTYET 22 服务器尚无效;请稍后重试 KDC_ERR_KEY_EXPIRED 23 密码已过期;修改密码以重置 KDC_ERR_PREAUTH_FAILED 24 预认证信息无效 KDC_ERR_PREAUTH_REQUIRED 25 需要额外的预认证 KDC_ERR_SERVER_NOMATCH 26 所请求的服务器与票据不匹配 KDC_ERR_MUST_USE_USER2USER 27 服务器主体仅对用户到用户(user2user)有效 KDC_ERR_PATH_NOT_ACCEPTED 28 KDC 策略拒绝该 transited 路径 KDC_ERR_SVC_UNAVAILABLE 29 某项服务不可用 KRB_AP_ERR_BAD_INTEGRITY 31 解密字段上的完整性检查失败 KRB_AP_ERR_TKT_EXPIRED 32 票据已过期 KRB_AP_ERR_TKT_NYV 33 票据尚无效 KRB_AP_ERR_REPEAT 34 该请求为重放 KRB_AP_ERR_NOT_US 35 该票据不是发给我们的 KRB_AP_ERR_BADMATCH 36 票据与 authenticator 不匹配 KRB_AP_ERR_SKEW 37 时钟偏差过大 KRB_AP_ERR_BADADDR 38 网络地址不正确 KRB_AP_ERR_BADVERSION 39 协议版本不匹配 KRB_AP_ERR_MSG_TYPE 40 无效的消息类型 KRB_AP_ERR_MODIFIED 41 消息流被修改 KRB_AP_ERR_BADORDER 42 消息顺序错误 KRB_AP_ERR_BADKEYVER 44 所指定版本的密钥不可用 KRB_AP_ERR_NOKEY 45 服务密钥不可用 KRB_AP_ERR_MUT_FAIL 46 双向认证失败 KRB_AP_ERR_BADDIRECTION 47 消息方向不正确 KRB_AP_ERR_METHOD 48 需要使用替代的认证方法 KRB_AP_ERR_BADSEQ 49 消息中的序列号不正确 KRB_AP_ERR_INAPP_CKSUM 50 消息中使用了不恰当的校验和类型 KRB_AP_PATH_NOT_ACCEPTED 51 策略拒绝该 transited 路径 KRB_ERR_RESPONSE_TOO_BIG 52 响应过大,无法用 UDP 承载;请改用 TCP 重试 KRB_ERR_GENERIC 60 通用错误(描述见 e-text) KRB_ERR_FIELD_TOOLONG 61 该字段对本实现而言过长 KDC_ERROR_CLIENT_NOT_TRUSTED 62 保留,供 PKINIT 使用 KDC_ERROR_KDC_NOT_TRUSTED 63 保留,供 PKINIT 使用 KDC_ERROR_INVALID_SIG 64 保留,供 PKINIT 使用 KDC_ERR_KEY_TOO_WEAK 65 保留,供 PKINIT 使用 KDC_ERR_CERTIFICATE_MISMATCH 66 保留,供 PKINIT 使用 KRB_AP_ERR_NO_TGT 67 没有可供验证 USER-TO-USER 的 TGT KDC_ERR_WRONG_REALM 68 保留,供未来使用 KRB_AP_ERR_USER_TO_USER_REQUIRED 69 票据必须用于 USER-TO-USER KDC_ERR_CANT_VERIFY_CERTIFICATE 70 保留,供 PKINIT 使用 KDC_ERR_INVALID_CERTIFICATE 71 保留,供 PKINIT 使用 KDC_ERR_REVOKED_CERTIFICATE 72 保留,供 PKINIT 使用 KDC_ERR_REVOCATION_STATUS_UNKNOWN 73 保留,供 PKINIT 使用 KDC_ERR_REVOCATION_STATUS_UNAVAILABLE 74 保留,供 PKINIT 使用 KDC_ERR_CLIENT_NAME_MISMATCH 75 保留,供 PKINIT 使用 KDC_ERR_KDC_NAME_MISMATCH 76 保留,供 PKINIT 使用