I browser e i sistemi operativi sono dotati di una serie di certificati SSL predefiniti per organizzazioni ben note, come i certificati radice delle CA.
Comprendo che il modello di fiducia è il seguente: scelgo (in realtà gli sviluppatori del mio software scelgono per me) alcune importanti autorità di certificazione e decido di fidarmi di loro. Anche se non mi rivolgo quasi mai ai siti di queste CA, i siti che utilizzo utilizzano certificati dipendenti dalle CA, in modo tale da fidarsi automaticamente di qualsiasi certificato derivante da un certificato di origine di cui mi fido.
Tuttavia, mi fido dei siti che visito oltre alle CA radice . Quindi, non voglio usare questo modello basato sull'albero. Invece, mi piacerebbe che fosse mia responsabilità personale verificare e archiviare individualmente il certificato di ogni sito che visito. Capisco che ciò possa comportare rischi poiché le mie risorse per il rilevamento di certificati compromessi sono limitate.
Sembra che oggi potrei fare questo: posso cancellare tutti i miei certificati di root e iniziare ad aggiungere eccezioni per ogni sito che visito (assumendo che decido di fidarmi di loro). Tuttavia, questo introdurrebbe un periodo di regolazione molto frustrante in cui la mia navigazione viene spesso interrotta dal fatto di dover aggiungere costantemente un'eccezione per i siti che navigo spesso.
Immagino inoltre che questa impraticabilità possa essere facilmente risolta: molti siti che visito sono casi controversi, affidabili, semplici come Google, StackExchange, siti di notizie e così via. Se alcuni sconosciuti casuali su Internet concordavano sul fatto che un certificato è il legittimo certificato SSL per www.cnn.com, potrei crederci e usare solo il certificato che hanno dato (quali sono le probabilità che queste persone abbiano compromesso il certificato della CNN? e allo stesso tempo ha cospirato per fabbricare un consenso apparente a favore del certificato falsificato?). Quindi, potrebbe esserci un repository online di siti comuni e non contestuali, in modo da poter scaricare i loro certificati in blocco ogni anno o giù di lì e ridurre in modo massiccio il numero di eccezioni che devo aggiungere. Ovviamente, casi delicati come la mia banca non verrebbero inclusi in questo repository: controllerei manualmente il certificato personalmente dopo un'attenta considerazione.
Ciò eliminerebbe la mia necessità di fidarsi dei certificati di root ed eliminare il rischio di CA compromesse o malevoli. In cambio, il nuovo rischio è che ci sia un'operazione molto concertata per avvelenare il deposito con certificati falsi di un sito irrilevante che è stato compromesso proprio mentre scarico i miei certificati per l'anno (posso ulteriormente confrontare quelli con quelli che ho già avere e scrutare le modifiche inaspettate). L'impatto sull'usabilità è trascurabile: dopo aver installato il mio browser, ho solo bisogno di scaricare una zip piena di certificati e di scaricarli nella mia cache dei certificati. Ora dovrei decidere personalmente se fidarti di siti oscuri o sensibili invece di fidarti automaticamente di loro attraverso il certificato di root, ma forse non è una cosa così brutta.
È possibile questo tipo di modello? Esiste già un repository di questo tipo? Ci sono dei difetti importanti che non ho considerato?
Si noti che sono interessato anche alle implicazioni di problemi di sicurezza di vecchia data. Per esempio, penso che sia interessante considerare l'implicazione dell'adozione del mio schema sopra proposto, data la possibilità che la mia CA principale e la mia banca siano già state compromesse e lo siano già da diversi anni.