La crittografia a chiave pubblica risolve il problema di scambiarsi segreti senza incontrarsi, ma ne apre un altro: come fai a sapere che una chiave pubblica appartiene davvero a chi dice di esserne titolare? Se un malintenzionato riuscisse a farti credere che la sua chiave è quella della tua banca, tutta la cifratura del mondo non ti proteggerebbe. I certificati digitali e le autorità di certificazione esistono per rispondere a questa domanda.
Che cos'è un certificato digitale
Un certificato è un piccolo documento elettronico, quasi sempre nel formato standard X.509, che contiene principalmente:
- il soggetto, cioè a chi appartiene la chiave (un nome di dominio, una persona, un'organizzazione);
- la chiave pubblica del soggetto;
- l'emittente, cioè l'autorità che ha rilasciato il certificato;
- il periodo di validità, con data di inizio e di scadenza;
- gli usi consentiti della chiave, per esempio autenticare un server web o firmare documenti;
- la firma digitale dell'emittente su tutti questi dati.
È proprio la firma dell'emittente a dare valore al certificato. Chi lo riceve verifica quella firma e, se si fida dell'emittente, si fida anche dell'associazione tra soggetto e chiave pubblica.
Le autorità di certificazione
Un'autorità di certificazione (in inglese Certificate Authority, CA) è un soggetto che verifica l'identità di chi richiede un certificato e, se la verifica ha esito positivo, lo firma. Il tipo di verifica dipende dal certificato:
| Tipo | Cosa viene verificato |
|---|---|
| DV (Domain Validation) | Che il richiedente controlli il dominio |
| OV (Organization Validation) | Anche l'esistenza dell'organizzazione |
| EV (Extended Validation) | Controlli più approfonditi sull'organizzazione |
Per i siti web la verifica più comune è la DV: la CA chiede di pubblicare un valore particolare su una pagina del sito o in un record DNS, dimostrando così il controllo del dominio. Servizi come Let's Encrypt hanno reso questo processo gratuito e completamente automatico, ed è uno dei motivi per cui oggi quasi tutto il web è in HTTPS.
Attenzione a un equivoco diffuso: un certificato DV dimostra che stai parlando con il dominio indicato, non che il sito sia onesto. Anche un sito di phishing può avere un certificato perfettamente valido per il suo dominio ingannevole.
La catena di fiducia
Le CA non firmano i certificati dei siti direttamente con la loro chiave più importante. La struttura è a livelli:
- certificato radice (root): autofirmato, custodito con misure di sicurezza molto rigide, spesso offline;
- certificato intermedio: firmato dalla radice, usato per le operazioni quotidiane;
- certificato finale (leaf): quello del sito o della persona, firmato dall'intermedio.
Il tuo browser e il tuo sistema operativo contengono un elenco di certificati radice considerati affidabili, chiamato root store. Quando visiti un sito, il server presenta il proprio certificato e quelli intermedi; il browser risale la catena fino a una radice presente nel suo elenco. Se la catena è completa e tutte le firme sono valide, la connessione viene considerata autentica.
Questa struttura limita i danni: se un certificato intermedio viene compromesso, si può revocare quello senza sostituire la radice in tutti i dispositivi del mondo.
Quando un certificato non è più affidabile: la revoca
Un certificato può dover essere invalidato prima della scadenza, per esempio se la chiave privata del sito è stata rubata. Esistono due meccanismi principali:
- CRL (Certificate Revocation List): elenchi pubblicati dalla CA con i certificati revocati;
- OCSP: un servizio che risponde in tempo reale sullo stato di un singolo certificato.
Nella pratica la revoca ha sempre funzionato in modo imperfetto, perché i browser non possono bloccare ogni connessione in attesa di una risposta. Anche per questo la tendenza è verso certificati di durata sempre più breve: un certificato che scade in poche settimane limita la finestra di abuso se la chiave viene compromessa, e spinge verso il rinnovo automatico.
Certificate Transparency: controllare chi controlla
Il sistema delle CA ha un punto debole evidente: qualsiasi CA presente nel root store può, in teoria, emettere un certificato per qualsiasi dominio. Nel 2011 la compromissione dell'autorità olandese DigiNotar portò all'emissione di certificati fraudolenti per domini molto noti e alla rimozione di quella CA dai browser.
Per rendere visibili gli abusi è nata la Certificate Transparency: i certificati per il web devono essere registrati in registri pubblici, a sola aggiunta, consultabili da chiunque. Il titolare di un dominio può così controllare se qualcuno ha ottenuto un certificato a suo nome senza autorizzazione. Esistono servizi gratuiti che inviano un avviso quando compare un nuovo certificato per i tuoi domini: è una buona pratica attivarli.
Consigli pratici
- Non ignorare mai un avviso di certificato non valido su un sito in cui inserisci credenziali.
- Se gestisci un sito, automatizza il rinnovo dei certificati per evitare scadenze improvvise.
- Proteggi la chiave privata del server con la stessa cura di una password amministrativa.
- Monitora i registri di Certificate Transparency per i tuoi domini.
In sintesi
- Un certificato X.509 lega una chiave pubblica a un soggetto ed è firmato da un'autorità di certificazione.
- La fiducia si basa su una catena che risale a un certificato radice presente nel root store.
- Un certificato valido prova l'identità del dominio, non l'onestà del sito.
- La revoca è imperfetta, per questo i certificati hanno durate sempre più brevi.
- La Certificate Transparency rende pubblici i certificati emessi e permette di scoprire abusi.