PROGRAMMIAMO
File - Certificati digitali
L'attacco man-in-the-middle

La crittografia a chiave pubblica è stata inventata per risolvere il problema della distribuzione delle chiavi. Tuttavia, se non è usato correttamente, esso rimane attaccabile, come mostra il seguente esempio.

Supponiamo che Bob voglia comunicare con Alice. A tale scopo Alice deve conoscere la chiave pubblica di Bob (e Alice quella di Bob: in questo esempio però concentriamoci solo su uno dei due sensi di comunicazione). Siccome tale chiave è completamente inutile per decifrare messaggi, si è detto che Bob può affidare la distribuzione di tale chiave anche a canali non sicuri.

Per esempio Bob potrebbe inviare la sua chiave pubblica ad Alice via mail. Supponiamo ora che la mail di Bob venga intercettata da Eva. Questa potrebbe cancellare il messaggio di Bob per Alice (contenente la chiave pubblica di Bob) e sostituirlo con un proprio identico messaggio in cui inserisce la propria chiave pubblica (la chiave pubblica di Eva). In questo modo Alice riceverà una chiave e, credendo si tratti di quella di Bob, la userà per cifrare i messaggi a lui rivolti. Tali messaggi però potranno essere facilmente intercettati e letti da Eva, poiché in realtà la chiave che Alice ha usato è la chiave pubblica di Eva.

Attacco Man In the Middle a distribuzione chiave pubblica RSA

Come si vede la distribuzione della chiave pubblica è soggetta ad attacchi del tipo man-in-the-middle: se una terza persona si inserisce nella distribuzione della chiave, tale chiave può essere sostituita compromettendo la sicurezza dell'intero processo di comunicazione.

Generalizzando un po' si può vedere come ci sia il problema di identificare correttamente il proprietario di una certa chiave pubblica. Nel nostro esempio, Alice viene ingannata perché crede che la chiave ricevuta sia quella di Bob, mentre è quella di Eva. Facendo un esempio più pratico: quando ci colleghiamo a un sito di acquisti online, usiamo il nostro numero di carta di credito perché questo numero viene cifrato dal nostro browser con la chiave pubblica del sito, prima di essere inviato a quest'ultimo. Ma come facciamo ad essere sicuri che il nostro browser utilizzi davvero la chiave pubblica del sito di acquisti e non invece la chiave pubblica di qualche malfattore intenzionato a rubare il numero della nostra carta? 

Firma digitale

La cifratura asimmetrica con chiave privata e pubblica consente di risolvere anche il problema dell'identificazione del mittente. Quando Alice riceve un messaggio da Bob, come fa ad essere sicura che si tratti veramente di lui? Tenete presente che la chiave di cifratura per Alice è pubblica e dunque chiunque avrebbe potuto inviarle un messaggio cifrato con tale chiave, spacciandosi per Bob.

All'inizio abbiamo tuttavia detto che le due chiavi possono essere usate in modo intercambiabile. Sebbene normalmente i messaggi vengano cifrati usando la chiave pubblica del destinatario e decifrati da quest'ultimo con la sua chiave privata, nulla vieta di fare al contrario. Nel nostro esempio Bob potrebbe allegare al proprio messaggio un secondo messaggio più breve contenente solo il proprio nome.

Il punto è che Bob cifra la propria firma usando la propria chiave privata (quella cioè usata normalmente per decrittare i messaggi ricevuti e che solo lui possiede). Quando Alice riceve il messaggio, essa legge la firma allegata usando la chiave pubblica di Bob. Siccome Bob è l'unico a possedere la chiave privata corrispondente, solo lui può averlo cifrato e dunque la sua identità è confermata.

In realtà il messaggio allegato non contiene il nome del mittente ma un codice alfanumerico, detto hash. In pratica il codice hash è una stringa di caratteri e numeri generata a partire dal file in chiaro che contiene il messaggio. In altre parole: il codice hash permette di sapere se il file decrittato corrisponde all'originale che è stato inviato. Essendo tale codice crittato con la chiave privata del mittente, abbiamo la certezza sia dell'identità di chi ha spedito il messaggio sia del fatto che il messaggio non sia stato contraffatto.

 

Certificati digitali e Certification authority

Nella crittografia asimmetrica un certificato digitale è un documento elettronico che attesta l'associazione univoca tra una chiave pubblica e l'identità di un soggetto (una persona, una società, un computer, etc). In pratica i certificati digitali sono dei file usati per garantire l'identità di un soggetto, sia esso un server o una persona.

Ad ogni certificato digitale è associato un intervallo temporale di validità: di conseguenza ogni certificato può essere revocato se scaduto. Altre condizioni che determinano la revoca di un certificato sono la compromissione della chiave privata ed ogni cambiamento nella relazione soggetto-chiave pubblica, ad esempio dovuto al cambiamento della mail del richiedente.

I certificati digitali vengono rilasciati dalle cosiddette autorità di certificazione. Una Autorità di Certificazione (Certification Authority, solitamente abbreviato con CA) rilascia i certificati a chi ne fa richiesta dopo averne verificato l'identità. La CA svolge il ruolo di garante dell'identità di chi usa il certificato da lei rilasciato, un po' come fanno le autorità di pubblica sicurezza (prefettura, comune, etc…) che emettono documenti di identificazione quali il passaporto o la carta d'identità.

Processo di certificazione

Chiunque può verificare la validità di un certificato, in quanto le CA devono mantenere un pubblico registro dei certificati emessi e una Lista dei Certificati Revocati (Certification Revocation List) disponibile per la verifica per via telematica da parte di tutti gli utenti. L'elenco delle più diffuse autorità di certificazione è solitamente precaricato nei browser più diffusi al momento dell'installazione.

Esistono due tipi di CA:

Un certificato emesso da una CA tipicamente contiene:

Esistono vari standard per la creazione di certificati, attualmente il più affermato è quello definito dallo standard internazionale X.509.

Come funziona in pratica

FASE 1: RICHIESTA DEL CERTIFICATO DIGITALE

Supponiamo che Mario Rossi, il gestore di comprafacile voglia un certificato digitale per garantire di essere il legittimo proprietario della sua chiave pubblica.

A tale scopo deve rivolgersi una delle Certificate Authority abilitate a tale scopo. In Italia per esempio esiste un Elenco Pubblico Certificatori, che contiene una lista di tutti gli enti abilitati al rilascio di questo tipo di certificati (https://www.agid.gov.it/piattaforme/firma-elettronica-qualificata/prestatori-di-servizi-fiduciari-attivi-in-italia ).

Supponiamo ad esempio che Mario Rossi decida di rivolgersi ad Aruba, uno dei siti abilitati al rilascio dei certificati digitali. Il primo passo è inviare la richiesta ad Aruba, insieme a una copia della propria chiave pubblica e a tutti i dati personali del proprietario del sito.

FASE 2: VERIFICA DELL'IDENTITA'

La seconda fase consiste nella verifica della identità della persona che richiede il certificato digitale.

In pratica, nel nostro esempio, Aruba dovrà verificare (attraverso controlli, chiamate telefoniche o anche incontri di persona) che Mario Rossi sia davvero il proprietario di comprafacile e della sua chiave pubblica.

FASE 3: CREAZIONE DEL CERTIFICATO DIGITALE

A questo punto Aruba, dopo aver confermato l'identità di Mario Rossi, cifra le informazioni del proprietario (dati personali e chiave pubblica) usando la propria chiave privata (cioè la chiave privata di Aruba).

Questo documento (file) cifrato con la chiave privata dell'Autorità di Certificazione (nel nostro esempio Aruba) è appunto il certificato digitale.

In pratica ogni browser contiene un elenco di tutte le chiavi pubbliche delle Autorità di Certificazione abilitate al rilascio dei certificati digitali. In questo modo il browser è in grado di verificare se il certificato digitale ricevuto è stato davvero autorizzato da una Autorità di Certificazione. Infatti il certificato digitale viene criptato usando la chiave privata dell'ente certificatore: in questo modo chi lo riceve può verificare che si tratta di un certificato originale, decrittandolo con la chiave pubblica del certificatore.

Acquisti in rete protetti col certificato digitale

Torniamo al nostro esempio iniziale di Alice che vuole fare acquisti su comprafacile. A tale scopo invia una richiesta al sito e questo risponde inviando ad Alice una copia del suo certificato digitale:

Osserva che comprafacile non invia ad Alice direttamente la propria chiave pubblica. Invece invia il certificato digitale al cui interno si trova la chiave pubblica di comprafacile.

A questo punto Alice può leggere dentro al certificato digitale la chiave pubblica di comprafacile ed è quindi in grado di iniziare lo scambio sicuro dei dati. Un eventuale man-in-the-middle che intercettasse il certificato digitale inviato da comprafacile ad Alice potrebbe provare a sostituirlo con un proprio certificato digitale, ma la sostituzione non funzionerebbe. Alice infatti si accorgerebbe subito che il certificato digitale ricevuto non è l'originale, perché non è stato crittato usando la chiave privata del sito di acquisti.

 

precedente - successiva

Sito realizzato in base al emplate offerto da

http://www.graphixmania.it