Mar 22, 2014

PKI has failed

Giusto per postare anche qualcosa di serio. Ho letto oggi questo articolo intitolato "DNSSEC has failed" col quale concordo totalmente: "Still, after all these years that DNSSEC has been around it is still way too hard for common DNS engineers to configure DNSSEC properly. There are way too many details and caveats that they have to know about, and there are no easy scripts to do this, and if there are, they are certainly not included in the regular packages".
Ne approfitto allora per copiare qui un intervento che ho scritto qualche settimana fa su un argomento, la Public Key Infrastructure, di cui mi sono interessato per la mia tesi di laurea a guarda caso per una delle mie prime esperienze lavorative. L'opinione che sostengo, maturata dopo anni di serena analisi, è che la PKI ha fallito. In particolare, qui prendo spunto dall'idea -nefasta, a mio parere- di RPKI.

Il concetto di Public Key Infrastructure è fallito, e dovremmo metterci il cuore in pace e smettere di pensare che possa risolvere problemi di autenticazione e autorizzazione in larga scala. Il rischio maggiore di adottare sistemi come RPKI non è quello di "censure" ordinate da questo o quel tribunale, ma la debolezza intrinseca di un sistema che si basa su 1) strutture come le Certificate Authorities e le Registration Authorities che per essere utilizzabili in maniera efficace e "scalabile" si espongono a notevoli rischi di compromissione, e 2) meccanismi di controllo delle informazioni (le Certificate Revocation List) che in realtà non sono utilizzati da nessuno.
Prendiamo ad esempio la debacle Diginotar di qualche anno faanche se nel frattempo i casi simili si sono moltiplicati. Primo problema: la certificate authority è stata compromessa, e sono stati creati certificati digitali "falsi", che poi sono stati distribuiti e utilizzati in giro per il mondo per chissà quali scopi. Pensiamo a cosa succederebbe se (anzi, quando) un caso del genere accadesse con certificati che garantiscono la bontà di certi annunci BGP (ipersemplificando). Secondo: cosa fu fatto per temponare il problema Diginotar? i vendor di browser http produssero (nemmeno troppo tempestivamente) aggiornamenti software per rimuovere Diginotar dalle liste dei certificati "trusted" incluse di default nei browser. Sbagliatissimo. La PKI si basa sul fatto che per ogni certificato deve esistere una Certificate Revocation List consultabile in tempo reale: il meccanismo è stato pensato appunto per evitare procedure demenziali come quella di dover rimuovere il certificato della CA compromessa da tutti i software che lo utilizzano. Peccato che nessuno utilizzi le CRL. Il controllo è sempre disabilitato di default; provate ad abilitarlo e poi mi dite com'è l'esperienza di navigazione https. Ora, una RPKI che funzionasse *come si deve* dovrebbe controllare la relativa CRL *ogni volta* che utilizza un certificato di chiave pubblica di terzi per validare una qualsiasi informazione; vi pare una cosa realisticamente fattibile? Nel momento in cui si "sorvola" sull'utilizzo delle CRL, tutto il castello della PKI cade.
Per queste ragioni, RPKI mi sembra soltanto, nel migliore dei casi, un'illusione.

No comments: