5.8. KRB_CRED Message Specification (KRB_CRED-Nachrichtenspezifikation)
5.8. KRB_CRED Message Specification (KRB_CRED-Nachrichtenspezifikation)
Dieser Abschnitt spezifiziert das Format einer Nachricht, mit der Kerberos-Credentials (Anmeldedaten) von einem Principal an einen anderen gesendet werden können. Er ist hier dargestellt, um ein gemeinsames Verfahren zu fördern, das Anwendungen beim Weiterleiten von Tickets oder beim Bereitstellen von Proxies für untergeordnete Server verwenden sollen. Dabei wird vorausgesetzt, dass ein Session Key (Sitzungsschlüssel) bereits ausgetauscht wurde, etwa über die Nachrichten KRB_AP_REQ/KRB_AP_REP.
5.8.1. KRB_CRED Definition
Die Nachricht KRB_CRED enthält eine Sequenz von Tickets, die gesendet werden sollen, sowie die Informationen, die zur Nutzung der Tickets erforderlich sind, einschließlich des Session Keys aus jedem Ticket. Die zur Nutzung der Tickets benötigten Informationen sind unter einem zuvor ausgetauschten oder zusammen mit der KRB_CRED-Nachricht übertragenen Verschlüsselungsschlüssel verschlüsselt. Die Felder der Nachricht sind wie folgt:
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 und msg-type
Diese Felder sind oben in Abschnitt 5.4.1 beschrieben. msg-type ist
KRB_CRED.
tickets
Dies sind die vom KDC speziell zur Verwendung durch den
beabsichtigten Empfänger bezogenen Tickets. Aufeinanderfolgende Tickets sind mit der
entsprechenden KrbCredInfo-Sequenz aus dem enc-part der KRB-
CRED-Nachricht gepaart.
enc-part
Dieses Feld enthält eine Kodierung der Sequenz EncKrbCredPart,
verschlüsselt unter dem Session Key, den Sender und
beabsichtigter Empfänger teilen, mit einem Key Usage Value (Schlüsselverwendungswert) von 14. Diese verschlüsselte
Kodierung wird für das Feld enc-part der KRB-CRED-Nachricht verwendet.
Implementierungshinweis: Implementierungen bestimmter Anwendungen, insbesondere
bestimmte Implementierungen des Kerberos-GSS-API-Mechanismus,
verschlüsseln den Inhalt von EncKrbCredPart der
KRB-CRED-Nachricht beim Senden nicht separat. Bei diesen GSS-
API-Mechanismen stellt dies keine Sicherheitslücke dar, da die
gesamte KRB-CRED-Nachricht selbst in einer verschlüsselten
Nachricht eingebettet ist.
nonce
Sofern praktikabel, KANN eine Anwendung die Aufnahme eines Nonce verlangen,
der vom Empfänger der Nachricht erzeugt wurde. Wird derselbe Wert
als Nonce in der Nachricht aufgenommen, liefert er den Nachweis, dass die
Nachricht frisch ist und nicht von einem Angreifer wiedergegeben wurde. Ein
Nonce DARF NIEMALS wiederverwendet werden.
timestamp und usec
Diese Felder geben die Zeit an, zu der die KRB_CRED-Nachricht
erzeugt wurde. Die Zeit dient der Absicherung, dass die Nachricht
frisch ist.
s-address und r-address
Diese Felder sind oben in Abschnitt 5.6.1 beschrieben. Sie werden
optional verwendet, um zusätzliche Absicherung der Integrität der
KRB_CRED-Nachricht zu bieten.
key
Dieses Feld ist im entsprechenden Ticket vorhanden, das über die KRB-
CRED-Nachricht übermittelt wird, und dient dazu, den Session Key vom Sender
an den beabsichtigten Empfänger zu übergeben. Die Kodierung des Feldes ist in
Abschnitt 5.2.9 beschrieben.
Die folgenden Felder sind optional. Sind sie vorhanden, können sie den Credentials in der entfernten Ticket-Datei zugeordnet werden. Werden sie weggelassen, wird angenommen, dass der Empfänger der Credentials deren Werte bereits kennt.
prealm und pname
Der Name und das Realm der delegierten Principal-Identität.
flags, authtime, starttime, endtime, renew-till, srealm, sname und caddr
Diese Felder enthalten die Werte der entsprechenden Felder aus
dem Ticket im Feld ticket. Die Beschreibungen der Felder
entsprechen denen in der KDC-REP-Nachricht.