La chiave pubblica del server e il pubblico di Diffie Hellman sono gli stessi?

3

Sto cercando di capire il funzionamento di TLS . Capisco che ci sono vari modi per generare il master secret usato per crittografare i dati. Come DH (effimero DHE) e RSA. Comprendo che, quando si utilizza RSA, la chiave pre-master generata dal client viene crittografata dalla chiave pubblica del server e viene inviata al server per il calcolo del master secret. Ma per quanto riguarda il processo quando si utilizza DHE?

Vedo che le chiavi pubbliche DH sia del client che del server vengono utilizzate per calcolare il segreto del Master? Ma la chiave pubblica DH è la stessa della chiave pubblica del server?

Nel termine di Layman, la chiave pubblica RSA è considerata la chiave pubblica del server?

    
posta Anonymous Platypus 16.07.2018 - 13:12
fonte

2 risposte

2

Risposta breve: può essere , ma è complicato e dipende dal tipo di certificato del server e da quale suite di crittografia TLS è configurata per l'uso.

Questa risposta è essenzialmente una copia di questa pagina wiki openssl . Facciamo alcuni esempi.

Pure RSA

Per questi, il certificato del server conterrà una chiave RSA e userete una suite di crittografia come

TLS_RSA_WITH_....

La chiave di sessione verrà generata lato client e inviata al server crittografato con la chiave RSA del server. Per la parte di autenticazione dell'handshake, il server utilizzerà la stessa chiave RSA per produrre una firma (credo).

DH statico - anonimo

Per questi, il server utilizza le stesse chiavi DH per ogni connessione, tuttavia non esiste un certificato, quindi non c'è modo per il client di verificare che questa chiave appartenga effettivamente al server e non a un man-in-the-middle . Utilizzerai una suite di crittografia come

TLS_DH_anon_WITH_....

Nota: chiaramente questo è insicuro.

DH statico - con certificato

Per questi, il server utilizza le stesse chiavi DH per ogni connessione e la chiave pubblica verrà inserita nel certificato del server (un certificato DH anziché il più comune certificato RSA). Utilizzerai una suite di crittografia come

TLS_DH_RSA_WITH_...

Come indicato qui , l'algoritmo della firma (RSA / DSS) indica quale algoritmo di firma la CA ha usato per firmare il certificato e non c'è firma come parte dell'handshake; se il server arriva alla stessa chiave di sessione, allora deve avere la chiave privata DH corrispondente.

Nota: questo è vecchio e deprecato, le persone preferiscono DHE ora.

DHE effimero + RSA

Per questi, il certificato del server conterrà una chiave RSA e userete una suite di crittografia come

TLS_DHE_RSA_WITH_...

Poiché il DH è effimero, verrà generata una nuova chiave DH per ogni nuova connessione, quindi non è necessario inserirlo in un certificato. La chiave RSA viene utilizzata per firmare una risposta di prova per dimostrare che il server è chi dicono di essere. Questi sono i cifrari preferiti in questi giorni.

    
risposta data 19.07.2018 - 17:51
fonte
3

CloudFlare spiega che Diffie-Hellman e RSA, entrambi utilizzati nei meccanismi di scambio delle chiavi, hanno vantaggi. SSL senza chiave: i dettagli tecnici di Nitty Gritty .

The RSA and DH handshakes both have their advantages and disadvantages. The RSA handshake only uses one public key algorithm operation, RSA. A DH handshake with an RSA certificate requires the same RSA operation, but with an additional DH operation. Given that the certificate is RSA, the RSA handshake is faster to compute. Public key algorithms like RSA and DH use a lot of CPU and are the slowest part of the TLS handshake. A laptop can only perform a couple hundred RSA encryptions a second versus around ten million per second of the symmetric cipher AES.

The DH handshake requires two algorithms to run, but the advantage it brings is that it allows key establishment to happen independently of the server’s private key. This gives the connection forward secrecy, a useful property that protects conversations from being decrypted after the fact if the private key is somehow exposed. The DH version of the handshake also opens up the possibility of using non-RSA certificates that can improve performance, including ECDSA keys. Elliptic curves provide the same security with less computational overhead. A DH handshake with and elliptic curve DSA certificate and elliptic curve Diffie-Hellman key agreement can be faster than a one-operation RSA handshake.

Credo Diffie-Hellman e il suo utilizzo TLS / SSL spiegherà ulteriormente.

Presumendo la "chiave pubblica del server" viene utilizzato per l'autenticazione, quindi no. La chiave pubblica DH e la chiave pubblica del server sono non uguali. Tuttavia, ho visto opinioni contrastanti su questo argomento. TLS 1.2 sembra utilizzare DH e RSA per il meccanismo di scambio delle chiavi. DH è usato per produrre la chiave simmetrica per un algoritmo simmetrico. DH di per sé non è necessariamente un algoritmo di crittografia dei dati, ma un modo per concordare una chiave segreta tramite una rete pubblica.

    
risposta data 16.07.2018 - 19:49
fonte

Leggi altre domande sui tag