Lezione del 30/04/2024

Revocation

Abbiamo due entita’ che possono su canali di comunicazione sicuri, abbiamo visto anche le firme, le chiavi pubbliche ad identita’ e le certification authority e del loro lavoro onesto per rilasciare e gestire le chiavi. Quando controlliamo la validita’ di un certificato dobbiamo verificare che un certificato sia stato anche ritirato nel caso.

Che cosa succede se una CA si comporta male? perche’ magari hanno rubato i dati ad una CA e quindi vengono fatti certificati fraudolenti. Oppure perche’ una CA per motivi politici e’ stata corrotta e si comporta male, dando certificati che non vanno bene.

Untitled

Due certificati validi su microsoft.com, che bel casino!

Noi facciamo calare tutta la fiducia a partire dalla root. Come fa una ca o google ad accorgersi che qualcuno ha rilasciato un certificato falso? Non abbiamo nessun meccanismo automatico di notifica o verifica. Fino a che ci fidiamo delle ca, bella, ma non siamo sempre al riparo. Possiamo cercare di irrobustire PKI: limitiamo le attivita’ della CA o le facciamo piu’ verificabili e abbiamo alcune categorie di soluzioni possibili: possiamo fare una sorta di whitelisting della CA. Ms sa che si affida 1,2,3 CA al massimo Quindi che cosa facciamo? Ci fidiamo di pochissime, anziche’ di tante → curiamo bene le liste di CA

Altra cosa da fare e’ il PINNING: che cosa vuol dire? Il browser fa una richiesta e a volte gli risponde una pagina di login, immagina quando vado ad unimore. Il pinning e’ quando (nonostante tutta la verifica dei certificati), io decido che di un determinato dominio accetto solamente una serie ristretta di certificati, se qualcuno mi da altri certificati, non lo accetto. Non e’ tra quelli pinnati all’interno della mia applicazione. Questa soluzione e’ veramente potente, come google che si e’ fatta la sua CA e lascia certificati solamente per i suoi siti.

Questa soluzione viene usata da principali browser ma non e’ generale e nemmeno scala bene, perche’ dovrei fare pinning di ogni sito, ma lo faccio solamente quando ho tutta la catena di sviluppo.

Certificate Transparency

Come si fa? Certificate Transparency: idea di rendere trasparenti le attivita’ delle CA, per cui un rilascio ha delle evidenze per cui possono accorgermi se ci sono rilasci per nome di dominio mio.

Un conto e’ ora andare a monitorare queste informazioni. Questi che fanno queste operazioni sono esterni e fanno delle audit praticamente. Se la situazione e’ fatta bene diventa piu’ difficile comprometterle entrambe.

Abbiamo una architettura completamente nuova:

Untitled

Ci sono questi log services che fanno da log, non rilasciano certificano ma loggano le operazioni delle CA. Chi interagisce? Le ca ma anche gli owner dei certificati. Ci sono anche Signed Certificated Timestamp praticamente mi va a dire che una ca ha rilasciato un certificato in un determinato momento per una determinata persona. Lo posso andare a chiedere come ulteriore conferma. Che testimonia che quel certificato valido e’ presente in un log service. Dal punto di vista client facciamo un controllo in piu’ e chiediamo un SCT e certifichiamo che ci sia nel log service.

Abbiamo poi monitor e auditor, mantengono un log service sempre controllato. Un audit e’ di una compagnia, unimore ha il suo ct auditor come programma automatica che controlla tutti i unimore.it che siano miei. Un auditor per una specifica organizzazione. I monitor ricercano invece anomalie = ca che fa troppi certificati, robe strane varie ed eventuali.

Solitamente grandi organizzazioni hanno sistemi di monitor di grandezza ragguardevole. Questa architettura si mette in parallelo alla solita struttura che avevamo visto prima. Tutto pero’ dipende dai client che controllano gli SCT, perche’ altrimenti casca tutto!

Se e’ il log service a comportarsi male? non ne dobbiamo avere uno solo, ma almeno un paio gestiti da entita’ aziende diverse da loro, che gestiscano gli stessi dati possibilmente. Una ca manda ai log services piu’ famosi ogni volta che faccio qualcosa. Questo aumenta la possibilita’ di trovare anomalie per i ct monitor.

come i browser si fidano di alcune ca, cosi’ ci si fida di alcuni log services. Lo user agent controlla la presenza dei log, non sono solamente una lista. Questi dati vengono salvati in merkle tree, strutturi dati verificabili in cui vado solamente in append only e dipende dalle righe precendeti, non posso fare tutto quello che mi pare, non posso andar a fare modifiche o altre cavolate.

Quindi tutte le righe sono collegate (tipo blockchain o merkle train). Ci sono servizi con api che ti permettono di fare interrogazioni comodamente.