5.6. KRB_SAFE Message Specification (Specifica del Messaggio KRB_SAFE)
5.6. KRB_SAFE Message Specification (Specifica del Messaggio KRB_SAFE)
Questa sezione specifica il formato di un messaggio che può essere utilizzato da entrambi i lati (client o server) di un'applicazione per inviare un messaggio a prova di manomissione al suo peer. Presuppone che una chiave di sessione sia stata precedentemente scambiata (ad esempio, utilizzando i messaggi KRB_AP_REQ/KRB_AP_REP).
5.6.1. KRB_SAFE definition (Definizione di KRB_SAFE)
Il messaggio KRB_SAFE contiene dati utente insieme a un checksum a prova di collisione codificato con l'ultima chiave di crittografia negoziata tramite sottochiavi, o con la chiave di sessione se non è avvenuta alcuna negoziazione. I campi del messaggio sono i seguenti:
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 and msg-type
Questi campi sono descritti sopra nella Sezione 5.4.1. msg-type è KRB_SAFE.
safe-body
Questo campo è un segnaposto per il corpo del messaggio KRB-SAFE.
cksum
Questo campo contiene il checksum dei dati applicativi, calcolato con un valore di key usage di 15.
Il checksum viene calcolato sulla codifica della sequenza KRB-SAFE. Prima, il cksum viene impostato su un tipo zero, valore di lunghezza zero, e il checksum viene calcolato sulla codifica della sequenza KRB-SAFE. Quindi il checksum viene impostato sul risultato di quel calcolo. Infine, la sequenza KRB-SAFE viene codificata nuovamente. Questo metodo, sebbene diverso da quello specificato in RFC 1510, corrisponde alla pratica esistente.
user-data
Questo campo fa parte dei messaggi KRB_SAFE e KRB_PRIV, e contiene i dati specifici dell'applicazione che vengono passati dal mittente al destinatario.
timestamp
Questo campo fa parte dei messaggi KRB_SAFE e KRB_PRIV. I suoi contenuti sono il tempo corrente come noto al mittente del messaggio. Controllando il timestamp, il destinatario del messaggio è in grado di assicurarsi che sia stato generato di recente, e non sia un replay.
usec
Questo campo fa parte degli header KRB_SAFE e KRB_PRIV. Contiene la parte in microsecondi del timestamp.
seq-number
Questo campo è descritto sopra nella Sezione 5.3.2.
s-address
Indirizzo del mittente.
Questo campo specifica l'indirizzo in uso dal mittente del messaggio.
r-address
Questo campo specifica l'indirizzo in uso dal destinatario del messaggio. PUÒ essere omesso per alcuni usi (come i protocolli broadcast), ma il destinatario PUÒ arbitrariamente rifiutare tali messaggi. Questo campo, insieme a s-address, può essere utilizzato per aiutare a rilevare messaggi che sono stati consegnati in modo errato o malizioso al destinatario sbagliato.