跳到主要内容

5.8. KRB_CRED 消息规范

5.8. KRB_CRED Message Specification​

本节规定了一种消息的格式,可用于将一个主体的 Kerberos 凭据发送给另一个主体。这里提供此格式,是为了鼓励应用在转发票据或向下级服务器提供代理时采用一种通用的机制。它假定会话密钥已经交换过,例如可能已经通过使用 KRB_AP_REQ/KRB_AP_REP 消息完成。

5.8.1. KRB_CRED 定义​

KRB_CRED 消息包含要发送的一组票据,以及使用这些票据所需的信息(包括每张票据的会话密钥)。使用票据所需的信息在先前已交换或随 KRB_CRED 消息一并传送的加密密钥下加密。消息字段如下:

   KRB-CRED        ::= [APPLICATION 22] SEQUENCE {
pvno [0] INTEGER (5),
msg-type [1] INTEGER (22),
tickets [2] SEQUENCE OF Ticket,
enc-part [3] EncryptedData -- EncKrbCredPart
}
   EncKrbCredPart  ::= [APPLICATION 29] SEQUENCE {
ticket-info [0] SEQUENCE OF KrbCredInfo,
nonce [1] UInt32 OPTIONAL,
timestamp [2] KerberosTime OPTIONAL,
usec [3] Microseconds OPTIONAL,
s-address [4] HostAddress OPTIONAL,
r-address [5] HostAddress OPTIONAL
}
   KrbCredInfo     ::= SEQUENCE {
key [0] EncryptionKey,
prealm [1] Realm OPTIONAL,
pname [2] PrincipalName OPTIONAL,
flags [3] TicketFlags OPTIONAL,
authtime [4] KerberosTime OPTIONAL,
starttime [5] KerberosTime OPTIONAL,
endtime [6] KerberosTime OPTIONAL,
renew-till [7] KerberosTime OPTIONAL,
srealm [8] Realm OPTIONAL,
sname [9] PrincipalName OPTIONAL,
caddr [10] HostAddresses OPTIONAL
}

pvno 和 msg-type

这些字段已在第 5.4.1 节中描述。msg-type 为 KRB_CRED。

tickets

这些是从 KDC 获取的、专供预期接收方使用的票据。连续的票据与 KRB-CRED 消息 enc-part 中相应的 KrbCredInfo 序列一一配对。

enc-part

此字段保存 EncKrbCredPart 序列的编码,该编码在发送方与预期接收方共享的会话密钥下加密,密钥用途值为 14。这一加密编码用于 KRB-CRED 消息的 enc-part 字段。

实现说明:某些应用的实现(最显著的是某些 Kerberos GSS-API 机制的实现),在发送时并不单独加密 KRB-CRED 消息中 EncKrbCredPart 的内容。对于此类 GSS-API 机制而言,这并非安全漏洞,因为整个 KRB-CRED 消息本身已嵌入在一条加密消息之中。

nonce

如果切实可行,应用可以要求包含一条由消息接收方生成的 nonce。如果消息中所包含的 nonce 取值与其相同,则证明该消息是新鲜的、且未被攻击者重放。nonce 绝不可被复用。

timestamp 和 usec

这些字段指定 KRB-CRED 消息的生成时间。该时间用于提供消息为新鲜的保证。

s-address 和 r-address

这些字段已在第 5.6.1 节中描述。它们可选地用于提供 KRB-CRED 消息完整性的额外保证。

key

此字段存在于 KRB-CRED 消息所传递的相应票据中,用于将会话密钥从发送方传递给预期接收方。该字段的编码在第 5.2.9 节中描述。

以下字段是可选的。如果存在,则可以与远程票据文件中的凭据相关联。若省略,则假定凭据的接收方已知晓它们的取值。

prealm 和 pname

被委派主体身份的名称和 realm。

flags、authtime、starttime、endtime、renew-till、srealm、sname 和 caddr

这些字段包含票据(ticket 字段中)相应字段的取值。这些字段的描述与 KDC-REP 消息中的描述完全一致。