Passa al contenuto principale

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.