Dubbi sull'handshake di tls

2

Sto studiando la stretta di mano di Tls e ho qualche dubbio.

Dopo che il client ha convalidato il certificato digitale presentato dal server, il passo successivo è il contratto di scambio delle chiavi utilizzando, ad esempio, RSA per encrpificare e decrittografare i dati scambiati durante la sessione tls. In questo processo RSA il client genera un numero casuale e utilizza la chiave pubblica del server per crittografare questo numero casuale generato e inviare questo numero crittografato al server.

Questo numero casuale è il segreto pre-master. Il server utilizza la sua chiave privata per decrittografare il pre master secret. Da questo segreto pre-master, il client e il server possono generare il segreto principale che contina la chiave simmetrica da utilizzare nella crittografia dei messaggi. Questo segreto pre-master, poiché è stato crittografato utilizzando la chiave pubblica del server, può essere decrittato solo dal server con la sua chiave privata. Dubbio: Quindi, a causa di ciò la sicurezza nello scambio di chiavi dipende dalla chiave privata del server, giusto?

Quindi, se il pre master secret è encrpyeed con la chiave pubblica del server, se un ataccker può ottenere la chiave privata è possibile che l'attaccante possa decifrare le informazioni trasmesse nell'handshake e ottenere così l'accesso alla chiave master per decrittografare i dati trasmessi durante una sessione, sia che si tratti di dati di una sessione precedente o nuova. Dubbio: per risolvere questo problema c'è il concetto di perfetto segreto in avanti, giusto? Se esiste una garanzia che tutte le informazioni vengano crittografate prima che la chiave privata sia compromessa, continua a essere sicuro.

Dubbio: E per usare questo perfetto segreto in avanti l'algoritmo dh effimero dovrebbe essere usato giusto? Per generare un nuovo set di parametri dh per ogni sessione. Il mio dubbio su questo è, nel caso di un sito che utilizza https, come facciamo a sapere se usa dh o effimero dh? E quando usare dh o effimero dh in un sito https?

    
posta JonD 21.10.2017 - 21:58
fonte

1 risposta

2

Le tue ipotesi su come funziona TLS sono per lo più corrette, cioè le idee di base sono corrette ma alcuni dettagli (come il modo in cui viene generato il pre-master-secret) sono sbagliati.

... in case of a site that uses https how do we know if it uses dh or ephemeral dh? And when to use dh or ephemeral dh in a https site?

Quale autenticazione, tipo di scambio di chiavi, crittografia simmetrica e MAC viene utilizzata è specificata dal codice. Il client offre alcuni codici e il server seleziona uno dei codici offerti. I codici che usano DH effimero sono quelli con DHE o ECDHE nel loro nome, ad esempio TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384. I codici che utilizzano DH non effimera sono quelli con solo DH o ECDH nel nome, come TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384.

DH non effimero richiede che i parametri statici DH (vedi L'uso di TLS / SSL di DH non-effimero vs DHE ) si trova all'interno del certificato. Questo tipo di certificato e quindi il tipo di scambio di chiavi è molto raro. Se controlli i browser correnti nel test del client SSLLabs vedrai che nessuno di questi offre anche cifrari DH / ECDH al server ma solo DHE / ECDHE.

    
risposta data 21.10.2017 - 22:12
fonte

Leggi altre domande sui tag