5.6. KRB_SAFE Message Specification (Spezifikation der KRB_SAFE-Nachricht)
5.6. KRB_SAFE Message Specification (Spezifikation der KRB_SAFE-Nachricht)
Dieser Abschnitt spezifiziert das Format einer Nachricht, mit der eine Seite (Client oder Server) einer Anwendung manipulationsgeschützte Daten an die Gegenseite senden kann. Es wird vorausgesetzt, dass zuvor ein Session Key ausgetauscht wurde (z. B. über KRB_AP_REQ/KRB_AP_REP).
5.6.1. Definition von KRB_SAFE
Die KRB_SAFE-Nachricht enthält Nutzerdaten sowie eine kollisionsresistente, mit dem zuletzt per Subkeys ausgehandelten Verschlüsselungsschlüssel (oder dem Session Key, falls keine Aushandlung stattfand) gekeyte Prüfsumme. Die Felder sind:
KRB-SAFE ::= [APPLICATION 20] SEQUENCE {
pvno [0] INTEGER (5),
msg-type [1] INTEGER (20),
safe-body [2] KRB-SAFE-BODY,
cksum [3] Checksum
}
KRB-SAFE-BODY ::= SEQUENCE {
user-data [0] OCTET STRING,
timestamp [1] KerberosTime OPTIONAL,
usec [2] Microseconds OPTIONAL,
seq-number [3] UInt32 OPTIONAL,
s-address [4] HostAddress,
r-address [5] HostAddress OPTIONAL
}
pvno und msg-type
Wie in Abschnitt 5.4.1 beschrieben. msg-type ist KRB_SAFE.
safe-body
Platzhalter für den Nachrichtenkörper von KRB_SAFE.
cksum
Prüfsumme über die Anwendungsdaten mit Key Usage 15.
Die Prüfsumme wird über die Kodierung der KRB-SAFE-Sequenz berechnet. Zuerst wird cksum auf Typ null und Länge null gesetzt und die Prüfsumme über die Kodierung der KRB-SAFE-Sequenz berechnet. Anschließend wird cksum auf dieses Ergebnis gesetzt. Zuletzt wird die KRB-SAFE-Sequenz erneut kodiert. Dieses Verfahren weicht von RFC 1510 ab, entspricht aber der gängigen Praxis.
user-data
Teil von KRB_SAFE und KRB_PRIV; enthält die anwendungsspezifischen Daten des Senders für den Empfänger.
timestamp
Teil der Header von KRB_SAFE und KRB_PRIV; aktuelle Zeit des Senders. Der Empfänger kann so erkennen, dass die Nachricht frisch erzeugt wurde und kein Replay ist.
usec
Mikrosekundenteil des Zeitstempels in den Headern von KRB_SAFE und KRB_PRIV.
seq-number
Wie in Abschnitt 5.3.2 beschrieben.
s-address
Absenderadresse: vom Sender der Nachricht verwendete Adresse.
r-address
Empfängeradresse. Sie kann für manche Anwendungen (z. B. Broadcast) entfallen; der Empfänger darf solche Nachrichten ablehnen. Zusammen mit s-address kann sie helfen, falsch oder böswillig zugestellte Nachrichten zu erkennen.