01. La chiave di sessione

La chiave di sessione è una chiave utilizzata per implementare un canale sicuro tra mittente e destinatario mediante cifratura simmetrica. La particolarità di questa chiave è che essa è condivisa con tecniche che ne garantiscono la riservatezza. La chiave di sessione è mantenuta valida per un'intera sessione di lavoro (la cui durata dipende dal contesto applicativo) prima che venga distrutta.

Le tecniche di scambio della chiave di sessione normalmente afferiscono alla cifratura asimmetrica (di cui si è già parlato) ma esistono schemi alternativi che si possono applicare in mancanza di certificati.

Tra questi il più famoso è il protocollo crittografico per lo scambio di chiavi Diffie-Hellman.

Diffie-Hellman

L'algoritmo di Diffie-Hellman sfrutta la complessità computazionale del calcolo del logaritmo discreto per consentire lo scambio di una chiave in modo sicuro.

Purtroppo l'algoritmo Diffie-Hellman è vulnerabile all'attacco man in the middle; questo significa che durante lo scambio delle chiavi un attaccante può "intromettersi" e usurpare il ruolo di uno degli interlocutori.

Si consideri inizialmente una coppia di numeri g, p, dove p è un numero primo.

Il primo dei due interlocutori, ad esempio Alice, sceglie un numero casuale "a" e calcola il valore

A = ga mod p

(dove mod indica l'operazione modulo, ovvero il resto della divisione intera) e lo invia attraverso il canale pubblico a Bob (l'altro interlocutore), assieme ai valori g e p.

Bob da parte sua sceglie un numero casuale "b" , calcola

B = gb mod p

e lo invia ad Alice.

A questo punto Alice calcola

KA = Ba mod p

mentre Bob calcola

KB = Ab mod p

I valori calcolati sono gli stessi, in quanto KA = Ba mod p = (gb mod p)a mod p = (ga*b mod p) = (ga mod p)b mod p = Ab mod p = KB

Il valore KA = KB è la chiave ed è stata condivisa tra Alice e Bob in modo sicuro perché non è mai viaggiata né sono state scambiate tutte le parti necessarie al suo calcolo, infatti i valori a e b, scelti casualmente rispettivamente da Alice e Bob, sono rimasti segreti.

La metafora del baule

Questa metafora spiega con un esempio suggestivo, sviluppato con l'ausilio di un particolare baule a due catenacci, come due interlocutori possono condividere la chiave di un catenaccio senza mai incontrarsi e senza mai far viaggiare il baule senza catenaccio. Questa chiave rappresenta la chiave di sessione.

Alice (a sinistra) dispone di un catenaccio rosso, del quale possiede la chiave, e inserisce nel baule un catenaccio grigio e la rispettiva chiave, mantenendo per sé una copia della chiave.

Bob (a destra), riceve il baule con il catenaccio rosso. Aggiunge il catenaccio verde, del quale possiede la chiave, e rispedisce il baule ad Alice.

Alice rimuove il catenaccio rosso e spedisce nuovamente il baule a Bob.

Bob finalmente rimuove il catenaccio verde, apre il baule e recupera il catenaccio grigio con la chiave.

Da questo momento il baule viaggerà con il solo catenaccio grigio del quale sia Alice che Bob dispongono della chiave.