4. Costruzione del ticket raccomandata
Questa sezione descrive un meccanismo di costruzione del ticket raccomandato. Le implementazioni sono incoraggiate a considerare attentamente le implicazioni di sicurezza del meccanismo di costruzione del ticket che scelgono. I ticket DEVONO essere autenticati e crittografati per prevenire modifiche e intercettazioni da parte di un attaccante. Diverse suite di cifratura appropriate includono: AES-128-CBC con HMAC-SHA-256, AES-256-CBC con HMAC-SHA-256, AES-128-GCM, AES-256-GCM, e qualsiasi altra suite di cifratura forte che fornisce autenticazione e crittografia.
Il server utilizza una chiave di crittografia per crittografare e decrittografare il ticket. Questa chiave è nota solo al server. Il server utilizza anche una chiave separata per calcolare un controllo di integrità per il ticket. Una costruzione raccomandata è descritta di seguito.
struct {
opaque key_name[16];
opaque iv[16];
opaque encrypted_state<0..2^16-1>;
opaque mac[32];
} ticket;
key_name: Questo campo identifica la chiave di crittografia utilizzata per crittografare il ticket. Si raccomanda di rendere questo valore casuale e di cambiarlo frequentemente.
iv: Questo campo contiene il vettore di inizializzazione (IV) per lo stato crittografato. L'IV DEVE essere generato casualmente per ogni ticket.
encrypted_state: Questo campo contiene lo stato di sessione crittografato. Lo stato include il master secret della sessione, la suite di cifratura, il metodo di compressione e qualsiasi altra informazione di cui il server necessita per ripristinare la sessione.
mac: Questo campo contiene un Message Authentication Code (MAC) che copre l'intero ticket, inclusi i campi key_name, iv e encrypted_state.