Uno
dei principali problemi che si riscontrano negli scenari di crittografia
è sicuramente dovuto alla distribuzione delle chiavi pubbliche. Risolto
questo problema, inoltre, resta sempre un interrogativo: chi assicura che una
chiave pubblica è effettivamente quella di una determinata entità?
Quindi, l’autenticazione della chiave pubblica, cioè
il confermare che una chiave appartiene veramente all’entità (ente,
utente, …) con cui si stanno scambiando informazioni e non ad un impostore,
è un nodo fondamentale per la costruzione di sistemi di comunicazione
sicura.
Un primo modo di autenticare un dato messaggio è quello di usare la firma digitale, tuttavia il rischio di mistificazioni esiste sempre. E’ necessario dunque un documento che leghi inequivocabilmente il proprietario della chiave pubblica con la stessa: questo documento è, appunto, il certificato digitale (o Digital ID).
Chiaramente,
non è possibile pensare che un singolo possa distribuire il proprio certificato;
si ricorre, perciò, ad una Autorità di Certificazione
(CA, Certification Authority): questa deve essere
una terza parte credibile (TTP, Thrusted Third Part)
incaricata del rilascio dei certificati e della verifica dell’identità
richiedente, nonché del mantenimento di quella che va sotto il nome di
“lista di revoca dei certificati” (CRL,
Certificate Revocation List), dove sono conservati i certificati non
validi.
Alcune delle maggiori società che si occupano del rilascio dei certificati
sono: VeriSign, BelSign, AT&T, Deusche Telekom,
American Express. E’ da notare come nessuno abbia incaricato
direttamente una di queste società ad essere CA; tuttavia, esse svolgono
un ruolo davvero importante nella sicurezza delle reti, sebbene non in maniera
gratuita.
In generale un certificato contiene una chiave pubblica e la firma della CA. Un’analogia può essere fatta con il documento di identità rilasciato dal Comune di residenza!...
Uno degli standard più utilizzati per la struttura dei certificati è X.509. Un certificato basato su questo standard deve contenere, in linea di principio:
Da notare che solo la CA può aver firmato un certificato, in quanto è l’unica entità a possedere la sua chiave privata.
Una
CA può emettere un certificato anche per un’altra CA, in modo da
creare catene gerarchiche di certificati. Controllare la validità di
un certificato, quindi, significa risalire la sua catena di autorizzazioni,
fino a raggiungere quella di una CA “fidata”.
In cima alla catena gerarchica c’è una RootCA,
che possiede un certificato “auto-firmato” (root certificate).
I browser in circolazione sono configurati per dare fiducia ad un certo numero
(modificabile, ovviamente) di CA ben note, contenendo quindi i relativi root
certificate. I certificati di CA credute dall’utente, quindi, sono memorizzate
nel suo browser.
Quando si verifica un certificato si deve: controllare il suo periodo di validità, identificare la CA che lo ha rilasciato, verificare se tale CA (o un membro della catena di certificazione) è presente tra quelle che sono accreditate presso il proprio browser, verificare la firma tramite la chiave pubblica della CA che lo ha rilasciato.
I certificati possono essere utilizzati per vari scopi; tra i certificati più usati ricordiamo: