L'azienda Mozilla sull'inizio dei test nella versione notturna di Firefox di un nuovo meccanismo per la verifica dei certificati revocati — . CRLite consente di organizzare un'efficace verifica della revoca dei certificati utilizzando un database ospitato sul sistema dell'utente. L'implementazione di CRLite sviluppata da Mozilla è sotto licenza libera MPL 2.0. Il codice per la generazione del database e i componenti server sono scritti in e Go. Le parti client aggiunte a Firefox per leggere i dati dal database sono scritte in Rust.
Il metodo di verifica dei certificati ancora in uso che coinvolge servizi esterni basati sul protocollo (Online Certificate Status Protocol) richiede un accesso di rete garantito, causa ritardi significativi nell'elaborazione della richiesta (in media 350 ms) e presenta problemi di riservatezza (i server OCSP che rispondono alle richieste ottengono informazioni sui certificati specifici, da cui si può dedurre quali siti stia visitando l'utente). Esiste anche la possibilità di una verifica locale tramite liste (Certificate Revocation List), ma uno svantaggio di questo metodo è la grande dimensione dei dati scaricati: attualmente, il database dei certificati revocati occupa circa 300 MB e continua a crescere.
Per bloccare i certificati compromessi e revocati dai certificatori, Firefox utilizza dal 2015 un elenco nero centralizzato. insieme alla consultazione del servizio per determinare possibili attività dannose. OneCRL, come in Chrome, funge da intermediario che aggrega le liste CRL dai certificatori e fornisce un servizio OCSP centralizzato per la verifica dei certificati revocati, permettendo di non inviare richieste direttamente ai certificatori. Nonostante il grande lavoro per migliorare l'affidabilità del servizio di verifica online dei certificati, i dati di telemetria mostrano che oltre il 7% delle richieste OCSP termina con un timeout (qualche anno fa questa percentuale era del 15%).
Per impostazione predefinita, nel caso in cui non sia possibile effettuare il controllo tramite OCSP, il browser considera il certificato valido. Il servizio può essere inaccessibile sia a causa di problemi di rete e restrizioni nelle reti interne, sia bloccato da attaccanti: per eludere il controllo OCSP durante un attacco MITM, è sufficiente bloccare l'accesso al servizio di verifica. Parzialmente per prevenire tali attacchi è stata implementata la tecnica , che permette di interpretare l'errore di accesso a OCSP o l'inaccessibilità di OCSP come un problema con il certificato, ma questa possibilità è facoltativa e richiede una configurazione speciale del certificato.
CRLite consente di ridurre le informazioni complete su tutti i certificati revocati in una struttura facilmente aggiornabile, di dimensioni pari a solo 1 MB, il che consente di memorizzare un'intera base di dati CRL sul lato client.
Il browser potrà sincronizzare quotidianamente la propria copia dei dati sui certificati revocati, e questo database sarà accessibile in tutte le condizioni.
CRLite raccoglie informazioni da , registro pubblico di tutti i certificati emessi e revocati, e dei risultati della scansione dei certificati su internet (vengono raccolti vari elenchi CRL dai centri di certificazione e aggregata l'informazione su tutti i certificati noti). I dati vengono confezionati utilizzando cascade , una struttura probabilistica che ammette falsi positivi per elementi assenti, ma esclude la possibilità di perdere elementi esistenti (cioè con una certa probabilità è possibile avere un falso allerta su un certificato valido, ma i certificati revocati saranno garantiti come identificati).
Per escludere falsi positivi in CRLite, sono stati introdotti ulteriori livelli correttivi di filtraggio. Dopo la generazione della struttura, vengono analizzati tutti i registri originali e si identificano i falsi positivi emersi. A seguito di questo controllo, viene creata una struttura aggiuntiva che si sovrappone in cascata alla prima e corregge i falsi positivi emersi. L'operazione viene ripetuta fino a quando i falsi positivi non vengono completamente esclusi durante il controllo. Di solito, per una copertura completa dei dati, è sufficiente creare da 7 a 10 strati. Poiché lo stato del database a causa della sincronizzazione periodica è leggermente arretrato rispetto allo stato attuale del CRL, il controllo dei nuovi certificati emessi dopo l'ultimo aggiornamento del database CRLite viene effettuato tramite il protocollo OCSP, compreso l'uso della tecnica (la risposta OCSP firmata dal certificatore viene trasmessa dal server che gestisce il sito durante la negoziazione della connessione TLS).
Grazie ai filtri di Bloom, è stato possibile comprimere il campione di dicembre delle informazioni da WebPKI, che copre 100 milioni di certificati attivi e 750 mila certificati revocati, in una struttura di 1.3 MB. Il processo di generazione della struttura è piuttosto dispendioso in termini di risorse, ma viene eseguito sul server di Mozilla e l'utente riceve un aggiornamento già pronto. Ad esempio, i dati sorgente utilizzati per la generazione richiedono circa 16 GB di memoria quando memorizzati nel database Redis, mentre in forma esadecimale, il dump di tutti i numeri di serie dei certificati occupa circa 6.7 GB. Il processo di aggregazione di tutti i certificati revocati e attivi richiede circa 40 minuti, e il processo di generazione della struttura compressa basata sul filtro di Bloom richiede ulteriori 20 minuti.
Attualmente, Mozilla prevede aggiornamenti del database CRLite quattro volte al giorno (non tutti gli aggiornamenti vengono consegnati ai clienti). La generazione di aggiornamenti delta non è ancora stata implementata: l'uso di bsdiff4, impiegato per creare aggiornamenti delta delle versioni, non garantisce un'efficienza adeguata per CRLite e gli aggiornamenti risultano insolitamente grandi. Per risolvere questo problema, è prevista una revisione del formato della struttura di archiviazione per evitare ricostruzioni e rimozioni di livelli inutili.
CRLite attualmente opera in Firefox in modalità passiva e viene utilizzato in parallelo con OCSP per accumulare statistiche sulla correttezza del funzionamento. CRLite può essere portato in modalità di verifica principale; per farlo, in about:config è necessario impostare il parametro security.pki.crlite_mode = 2.
Fonte: opennet.ru
