Il certificato digitale

Chiave pubblica o privata? Certificati X.509 o PGP? Viaggio nel mondo della crittografia per cifrare e firmare documenti e messaggi e-mail

luglio 2005 L’uso dei certificati e delle firme digitali serve
per attestare che chi esegue un’operazione (per esempio una transazione
finanziaria) o invia un messaggio (come una dichiarazione fiscale) sia colui
che afferma di essere.

Il risultato è la sicurezza delle transazioni e l’assunzione di
responsabilità da parte di chi le esegue, che non può disconoscere
i propri messaggi e operazioni.

Tutto questo viene ottenuto tramite funzioni crittografiche
(in parte già presenti nei sistemi operativi) e attraverso strutture
organizzative per la gestione delle chiavi di cifratura.

Nella crittografia a chiave pubblica, detta anche asimmetrica,
l’utente possiede due chiavi: una privata da tenere segreta e una pubblica
da comunicare al mondo.

Mentre nella crittografia simmetrica la stessa chiave serve
per cifrare e decifrare messaggi e documenti, in quella asimmetrica si usa una
chiave per cifrare (quella pubblica o quella privata) e l’altra chiave
per decifrare.

Il software utilizza un algoritmo di cifratura asimmetrica per trasformare
i dati di input (in chiaro) nei dati di output (cifrati), diversi per ogni coppia
di chiavi utilizzata nel processo.

Un esempio è Alice che cifra un messaggio con la chiave pubblica di
Roberto e glielo spedisce. Roberto è l’unico a possedere la corrispondente
chiave privata con cui può decifrare il messaggio, però non ha
la certezza che sia stata veramente Alice a inviarlo, visto che la chiave pubblica
è disponibile a tutti.

Un altro esempio vede Alice cifrare il messaggio con la propria chiave privata
e inviarlo a Roberto. Roberto decifra il messaggio con la chiave pubblica di
Alice ed è sicuro della provenienza, perché solo Alice avrebbe
potuto cifrarlo. Tuttavia, visto che tutti possono avere la chiave pubblica
di Alice, il messaggio può essere decifrato da chiunque.

Nel primo caso è garantita la riservatezza (nessuno
vede il contenuto del messaggio) ma non c’è l’autenticazione
del mittente; nel secondo esempio avviene il contrario. Per garantire l’autenticazione
e la riservatezza, si possono eseguire due cifrature in cascata, una con la
chiave privata del mittente e una con la chiave pubblica del destinatario.

Di fatto, la crittografia asimmetrica non consente di cifrare messaggi più
lunghi di qualche decina di byte, quindi in pratica viene usata per scambiarsi
in modo sicuro chiavi simmetriche con cui cifrare dati di qualsiasi lunghezza.

In pratica, quando si esegue una transazione sicura (per esempio un acquisto
da un sito di e-commerce), prima avviene uno scambio di dati cifrati con chiavi
asimmetriche, quindi le due parti ricompongono questi dati creando una chiave
simmetrica temporanea, usata solo per la durata della comunicazione.

Firma digitale
Benjamin Franklin scrisse che “tre uomini possono mantenere un segreto
se due sono morti”.

Nell’esempio visto sopra, l’unico segreto posseduto da una sola persona
(o altra entità) è una chiave privata (le chiavi simmetriche hanno
sempre due proprietari).

Perciò, se Alice vuole apporre la propria “firma” a un messaggio,
per attestarne l’autenticità, dovrà farlo utilizzando la
propria chiave privata, che nessun altro conosce.

Visto che gli algoritmi asimmetrici possono cifrare dati brevi, Alice (in
realtà il suo software) non cifra il messaggio, bensì un codice
di lunghezza fissa (e breve) ricavato dal messaggio.

Questo codice si chiama hash o digest, ed è calcolato da apposite funzioni
che garantiscono un’ampia variazione dell’hash alla minima variazione
del messaggio, oltre all’impossibilità di ricostruire il messaggio
partendo dall’hash.

L’hash può essere visto come una sorta di compressione del messaggio
in circa 10-20 byte. Immaginiamo che Alice scriva un messaggio e lo firmi; il
software calcola l’hash del messaggio, lo cifra con la chiave privata
di Alice e aggiunge l’hash cifrato al messaggio.

Alice invia a Roberto il messaggio firmato, magari allegando la propria chiave
pubblica per agevolare la decifrazione della firma. Roberto riceve il messaggio
in un formato standard, separa la firma (l’hash cifrato), la decifra con
la chiave pubblica di Alice, calcola l’hash del messaggio e verifica se
l’hash calcolato coincide con l’hash della firma.

L’esito positivo significa che nessuno ha alterato il messaggio e che
il mittente è Alice (solo lei ha la chiave privata). A prima vista sembra
che funzioni; cosa c’è che non va?

Serve un certificato
Il difetto sta nel fatto che un terzo incomodo può mettersi in mezzo
e, con una propria coppia di chiavi, può far credere a Roberto di essere
Alice, chiedendo cortesemente un bonifico di 10.000 euro.

Questo è dovuto al fatto che finora non abbiamo legato in modo sicuro
l’identità di Alice alla sua chiave pubblica, per cui chiunque
può pretendere di essere Alice fornendo una propria chiave pubblica.

Eccoci giunti quindi alla nascita del certificato, un documento che contiene
il nome del proprietario, la chiave pubblica, altre informazioni e una o più
firme digitali con cui un’autorità certificatrice (o una catena
gerarchica di tali autorità) attesta che il proprietario possiede quella
chiave pubblica.

Per la verità, un certificato digitale può avere più
formati, ma due sono i più diffusi: l’ITU-T X.509
e il formato PGP/GPG (Pretty Good Privacy e la versione free
software GNU Privacy Guard).

I certificati X.509 sono emessi da un’autorità
certificatrice riconosciuta, attraverso un processo formale che attesta l’identità
del proprietario.

I certificati PGP/GPG riportano invece le attestazioni di
altri utenti in una rete di rapporti di fiducia o Web of Trust. Poiché
enti e aziende utilizzano la cosiddetta infrastruttura a chiave pubblica (PKI),
basata sui certificati X.509 rilasciati dalle autorità certificatrici
(CA), proseguiamo il discorso in questa direzione.

continua…

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome