Informazioni sulla sicurezza del certificato

2

Sto leggendo Reti di computer di Tanenbaum e Weatherall. Nel capitolo 8 descrivono le comunicazioni sicure usando lo scambio di chiavi pubbliche tramite certificati. Descrivono una situazione in cui Alice invia messaggi a Bob e un uomo nel mezzo (Trudy) sta cercando di intercettare i messaggi di Alice. Descrivono ciò che Trudy può fare per cercare di indurre Alice a credere che lei stia comunicando con Bob. La conclusione che traggono è che non può.

Tuttavia c'è una situazione non coperta:

Supponiamo che Bob abbia un certificato contenente la sua chiave pubblica e un hash firmato da un'autorità di certificazione. Rende questo certificato disponibile a chiunque come è pratica comune

Trudy ottiene il certificato di Bob e lo modifica sostituendo la chiave pubblica di Bobs con la sua.

Trudy intercetta la richiesta di Alice per la pagina di Bob. Trudy rimanda una pagina falsa ad Alice contenente il certificato modificato. Quando Alice ottiene questa pagina falsa, vede che quando esegue l'algoritmo SHA-1 sul certificato, otterrà un hash che è d'accordo con quello che ottiene quando applica la chiave pubblica della CA al blocco della firma (il blocco della firma non ha cambiato dall'originale di Bob). Quindi Alice cripta il suo messaggio a Bob usando la chiave pubblica di Trudy (Trudy ha inserito questo nel certificato quando lo ha modificato). Trudy ora può decifrare e leggere il messaggio che intercetta da Alice.

Lo scenario sopra funzionerà?

    
posta joe90p 24.10.2013 - 18:49
fonte

2 risposte

1

Il certificato non contiene l'hash; è, in qualche modo, il contrario.

Potrebbe essere più semplice saltare la nozione di "hash" e parlare direttamente della firma . I contenuti del certificato di Bob (in particolare, il nome di Bob e la chiave pubblica di Bob) sono firmati dalla CA. Trudy non può modificare un bit di esso senza invalidare la firma; e Trudy non può correggere la firma in seguito perché l'algoritmo della firma è crittograficamente strong e Trudy non conosce la chiave CA privata . Questo è ciò che evita il problema a cui stai alludendo. In effetti, un certificato è immutabile .

Ora, dove si inserisce la funzione di hash? È una componente tecnica della firma digitale. Quando alcuni dati devono essere firmati, i dati vengono prima sottoposti a hash, risultando in un valore hash che viene quindi utilizzato come input per il resto dell'algoritmo della firma. Lo facciamo perché gli algoritmi di firma usano oggetti matematici con una struttura pesante che non può ospitare dati di lunghezza arbitraria; un valore di hash ha una dimensione fissa e breve (ad esempio 20 byte se la funzione di hash è SHA-1), quindi l'algoritmo di firma funziona bene su questo. Anche l'uso di una funzione di hash intermedia è sicuro perché la funzione di hash è resistente a preimage secondario . Questo è un termine tecnico che significa che Trudy non può modificare i dati senza modificare anche il valore hash (e quindi invalidare la firma).

Non esiste un campo "valore hash" nel certificato, che può essere modificato indipendentemente; al contrario, il valore hash viene calcolato dinamicamente sul certificato completo (ovvero, tutto ciò che è firmato). Questo calcolo viene eseguito dalla CA quando firma il certificato; è fatto di nuovo da chiunque verifichi la firma.

(Per essere precisi, la presenza di questa funzione di hash è importante anche per la sicurezza di alcuni algoritmi di firma, ad esempio DSA, ma questo è tecnico. Non oscuriamo il problema.)

    
risposta data 24.10.2013 - 20:34
fonte
6

L'hashing del certificato produce un'impronta digitale univoca per i contenuti dei certificati, inclusi nome, date, firmatario, chiave, tutto. Se modifichi qualsiasi parte del certificato, (che include la sostituzione della chiave pubblica con la tua), l'hash memorizzato non corrisponde più al contenuto.

Quindi, tu dici di sostituire anche l'hash? Non proprio: ogni certificato è firmato e firmato significa che l'hash è crittografato con la chiave privata del firmatario. Non è possibile sostituire l'hash senza sostituire la firma (poiché l'hash è parte della firma) e non è possibile sostituire la firma senza firmare nuovamente il certificato e non è possibile firmare nuovamente il certificato se non si ha la chiave privata del firmatario.

Quindi l'unica parte che potrebbe effettivamente sostituire la chiave di Bob con Trudy è la CA. E l'intero punto del PKI è che ti fidi della CA di non farlo. Se non ti puoi fidare della CA, allora l'intero sistema va in pezzi.

Nota del mondo reale Nota che questo è precisamente il problema con il PKI SSL globale che abbiamo oggi. Non sappiamo se possiamo avere più fiducia nelle CA. Nello specifico, non sappiamo se le potenti organizzazioni (governi, ecc.) Stanno facendo pressione sulle AC per firmare certificati illegittimi. È molto probabile che l'esercito cinese o la NSA statunitense abbia certificati validi e firmati per Google, Facebook o qualsiasi altra organizzazione. È qui che entra in gioco blocco dei certificati . In effetti, Chrome e molti altri browser predefiniti per certicati per Google e altri servizi popolari, quindi anche un certificato valido non è accettato a meno che non sia un certificato specifico , o firmato da un specifico CA.

    
risposta data 24.10.2013 - 19:02
fonte

Leggi altre domande sui tag