Gli algoritmi di codificazione asimmetrica sono basati sulla condivisione di una chiave pubblica fra i diversi utenti.
Generalmente la condivisione di questa chiave avviene attraverso una directory (di solito in formato LDAP) oppure un sito web. Tuttavia questa modalità di condivisione soffre di una grande lacuna niente garantisce che la chiave sia effettivamente quella dell'utente alla quale è associata. In effetti un pirata può decodificare la chiave pubblica presente nella directory sostituendola con la propria chiave pubblica. Così il pirata avrà la capacità di decifrare tutti i messaggi che erano stati codificati con la chiave presente nella directory.
Quindi un certificato permette di associare una chiave pubblica ad un'entità (una persona, un terminale, ecc.) per assicurarne la validità. Il certificato è in qualche modo la carta d'identità della chiave pubblica, rilasciato da un organismo chiamato autorità di certificazione (spesso siglata CA per Certification Authority). L' ente di certificazione è incaricata di rilasciare i certificati, di assegnare loro una data di validità (equivalente alla data limite di scadenza dei prodotti alimentari), nonché di revocare eventualmente i certificati prima di questa data in caso di compromissione della chiave (o del proprietario).
I certificati sono dei piccoli file divisi in due parti: la parte con le informazioni e quella con la firma dell'autorità di certificazione.
La struttura dei certificati è regolamentata dallo standard X.509 dell'UIT (più esattamente X.509v3), che definisce le informazioni contenute nel certificato: la versione di X.509 alla quale il certificato corrisponde; il numero di serie del certificato; l'algoritmo di codificazione usato per firmare il certificato; il nome (DN, per Distinguished Name) dell'autorità di certificazione emettente; la data di inizio validità del certificato; la data di fine validità del certificato; l'oggetto d'uso della chiave pubblica; la chiave pubblica del proprietario del certificato; la firma di chi emette il certificato (thumbprint).
L'insieme di queste informazioni (informazioni+chiave pubblica del richiedente) è firmato dall'autorità di certificazione, il che significa che una funzione hash crea un'impronta di queste informazioni, poi questo hash è codificato attraverso la chiave privata dell'autorità di certificazione, dato che la chiave pubblica è stata precedentemente diffusa su larga scala per permettere agli utenti di verificare la firma dell'autorità di certificazione:
Quando un utente vuole comunicare con un'altra persona, gli basta procurarsi il certificato del destinatario. Questo certificato contiene il nome del destinatario, nonché la sua chiave pubblica, ed è firmato dall'autorità di certificazione. È quindi possibile verificare la validità del messaggio applicando una parte della funzione hash delle informazioni contenute nel certificato, decifrando la firma dell'autorità di certificazione con la chiave pubblica di quest'ultima e comparando i due risultati:
Si distinguono differenti tipi di certificati secondo il livello di firma:
I certificati auto-firmati sono dei certificati ad uso interno. Firmati da un server locale, questo tipo di certificati permettono di garantire la confidenzialità degli scambi all'interno di un'organizzazione, ad esempio per i bisogni di una rete intranet. È quindi possibile effettuare un'autenticazione degli utenti grazie a dei certificati auto-firmati;
I certificati firmati da un organismo di certificazione sono necessari quando si tratta di assicurare la sicurezza degli scambi con degli utenti anonimi, ad esempio nel caso di un sito web sicurizzato accessibile al pubblico. Il certificatore terzo permette di assicurare all'utente che il certificato appartiene effettivamente all'organizzazione alla quale dichiara di appartenere.
I certificati servono principalmente in tre tipi di contesti:
Il certificato cliente, immagazzinato nelle risorse del computer dell'utente oppure contenuto in un contenitore come una SIM card, che permette di identificare un utente e di associargli dei diritti. Nella maggioranza delle situazioni, esso è trasmesso ai server al momento di una connessione, che attribuisce dei diritti, in funzione dell'accreditamento dell'utente. Si tratta di una vera carta d'identità digitale che utilizza un paio di chiavi asimmetriche di una lunghezza che va da 512 a 1024 bit;
Il certificato server installato su un server web permette di assicurare il collegamento tra il server e il proprietario del servizio. Nel caso di un sito web, permette di garantire che l'URL e in particolare il dominio della pagina web appartengono effettivamente a questa o quell'azienda. Inoltre permette di mettere in sicurezza le transazioni con gli utenti grazie al protocollo SSL;
Il certificato VPN è un tipo di certificato installato nelle apparecchiature di rete che permette di codificare i flussi di comunicazione pezzo per pezzo fra due punti (ad esempio due siti di un'azienda). In questo tipo di situazione, gli utenti possiedono un certificato client, i server usano un certificati server e le apparecchiature di comunicazione uno privato (solitamente un certificato IPSec.
Foto: © Pixabay.