Zum Hauptinhalt springen

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.