Progetto

Progetto C3T-Awareness

Lo scambio delle chiavi crittografiche

sticker

PERCHÉ LO SCAMBIO DELLE CHIAVI È IMPORTANTE

Per preservare la riservatezza dei dati durante la trasmissione, i cosiddetti protocolli di trasferimento file sicuro (come ad esempio FTPS, HTTPS e SFTP) devono crittografare i dati attraverso la crittografia simmetrica.

Questo tipo di crittografia richiede che le due parti in comunicazione dispongano di una chiave condivisa per poter cifrare e decifrare i messaggi.

Il problema è che, fare in modo che due parti abbiano una chiave condivisa non è un compito facile; esse potrebbero essere geograficamente separate da lunghe distanze e, inoltre, potrebbero non essersi nemmeno mai incontrate.

La chiave non può essere semplicemente scambiata tramite uno degli ordinari metodi di comunicazione (es. e-mail), in quanto chiunque ne venga in possesso sarebbe in grado di decifrare tutti i file che le due parti si invierebbero.

C’è bisogno di un metodo facile da usare, sicuro e altamente scalabile, progettato per le veloci vie interconnesse – ma altamente insicure – di Internet. Ecco perché sono stati sviluppati protocolli di scambio chiave con lo scopo di consentire a due parti di scambiare chiavi simmetriche su reti non sicure come Internet.

SCAMBIO DELLA CHIAVE NELL’ HTTPS

Il protocollo crittografico più comune quando si fa riferimento alla rete Internet è l’HTTPS (HyperText Transfer Protocol Secure).

In questo caso, il processo di scambio della chiave viene eseguito durante quello che è noto come “handshake SSL”, cioè quello step preliminare prima dello scambio di file e/o messaggi cifrati.

In particolare, c’è un’applicazione (detta client) – può essere ad esempio un browser web come Firefox o Google Chrome – che richiede una connessione ad un server (es. pagina web qualsiasi) inviando un messaggio noto come “client Hello”. Questo solitamente consiste di un insieme di dati casuali e di una lista detta “suite di cifratura”, cioè un insieme di algoritmi per lo scambio di chiavi, la crittografia simmetrica e l’autenticazione dei messaggi.

Non appena il server riceve il client Hello, cercherà nel proprio elenco di suite di cifratura supportate, lo confronterà con l’elenco inviatogli dal client e (idealmente) sceglierà il migliore. Analogamente, in particolare, verrà scelto l’algoritmo per lo scambio della chiave più adeguato, così che, client e server, possano avviare il processo di scambio della chiave.

L’ ALGORITMO DI DIFFIE HELLMAN

Nel 1976, Whitfield Diffie e Martin Hellman pubblicarono un protocollo crittografico – oggi noto come scambio di chiavi Diffie-Hellman – che consentiva di stabilire dei canali sicuri tra utenti nei quali scambiarsi le chiavi di cifratura, anche se un intruso controllava il canale di comunicazione.

Nell’implementazione originale (e più semplice) del protocollo si considera inizialmente un numero g, generatore del gruppo moltiplicativo degli interi modulo p, dove p è un numero primo.

Uno dei due interlocutori (sia 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 l’altro interlocutore (sia Bob), assieme ai valori g e p. Bob 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 Ba mod p = Ab mod p.

I due interlocutori sono entrambi in possesso della chiave segreta e possono cominciare ad usarla per cifrare le comunicazioni successive. Si noti che un attaccante può ascoltare tutto lo scambio, ma per calcolare i valori “a” e “b” avrebbe bisogno di risolvere l’operazione del logaritmo discreto, che è computazionalmente onerosa e richiede parecchio tempo (sicuramente molto più del tempo di conversazione tra i 2 interlocutori).

example-DH

-- scarica la brochure --