Qual è la differenza tra DH e DHE?

18

Ho letto Bulletproof SSL e TLS

Diffie Hellman è un meccanismo di scambio di chiavi, in cui ogni server e client condividono il segreto cioè g ^ x e g ^ y rispettivamente l'uno con l'altro dove g è il generatore di qualche gruppo. Calcolano il segreto S = (g ^ y) ^ x e (g ^ x) ^ y rispettivamente. Nota che un attaccante nel mezzo non può ottenere il valore di S da g ^ x e g ^ y, poiché il logaritmo discreto è un problema difficile. Ma un attaccante attivo può mascherare e ingannare sia il server che il client.

OrainRSA_DH,ilvalorecheilserverinviaalclient,cioèg^x,èfissoememorizzatonelcertificato.Quindi,ilmessaggio"ServerKeyExchange" non viene inviato. Ora, il client invia il suo valore g ^ y nel messaggio "ClientKeyExchange" e questo viene crittografato con l'algoritmo di crittografia a chiave pubblica RSA il cui server dei certificati è già stato inviato nel messaggio "Certificato".

In RSA_DHE, il messaggio "ServerKeyExchange" ha luogo dove il server invia g ^ x al client.

Ora la mia domanda è qual è la differenza tra i due? Poiché il segreto premaster viene calcolato dal valore (g ^ x) ^ y, pertanto, anche in RSA_DH, se il client invia diversi valori g ^ y in ogni sessione, il valore (g ^ x) ^ y sarà diverso. (Penso che anche se non mantiene ancora il mio argomento) Pertanto otterrà il segreto in avanti come in RSA_DHE. E il povero aggressore non sarà in grado di ottenere il segreto premaster anche dopo aver ottenuto il valore di g ^ y compromettendo la chiave privata del server. Quindi, in entrambi i casi, non sarà in grado di calcolare il segreto premaster. Quindi perché si dice che quello effimero (RSA_DHE) ottenga la segretezza in avanti e l'altro no?

    
posta prakharjain 11.04.2016 - 17:10
fonte

2 risposte

16

Diffie-Hellman è un algoritmo asimmetrico, con una chiave pubblica e una chiave privata.

In una suite di crittografia "DH_RSA", la coppia di chiavi "permanente" del server è una coppia di chiavi DH. La chiave pubblica è nel certificato del server. Tale certificato, come qualsiasi altro certificato, è stato firmato da una CA e tale CA utilizza una coppia di chiavi RSA (è ciò che significa "RSA" in "DH_RSA").

In una suite di crittografia "DHE_RSA", la coppia di chiavi permanenti del server ha tipo RSA; la chiave pubblica RSA è nel certificato del server (la suite di crittografia non dice nulla sul tipo di chiave utilizzata dalla CA di emissione, ma di solito è anche RSA). Quando un client si connette, il server genera una coppia di chiavi DH transitoria e invia la chiave pubblica al client come messaggio ServerKeyExchange ; il server firma quel messaggio con la sua chiave privata RSA permanente.

Il segreto di inoltro è una proprietà definita relativamente a un ulteriore furto di segreti del server. Le suite di crittografia "DHE_RSA" forniscono il segreto di sicurezza perché il vero segreto di scambio delle chiavi (la chiave privata DH) è transitorio, quindi non salvato dal server - se il server non salva quella chiave sul suo disco, allora dovrebbe essere immune da ulteriori furti. Al contrario, "DH_RSA" implica che la chiave privata DH sia memorizzata da qualche parte sul disco rigido del server e, se tale chiave viene rubata, la sessione registrata passata può essere decodificata.

Si deve notare che alcuni server manterranno le coppie di chiavi DH in giro per un po 'di tempo, di solito nella RAM; non creano una nuova coppia di chiavi DH per ogni cliente. Questo comportamento presenta alcuni vantaggi in termini di prestazioni, ma indebolisce leggermente la segretezza in avanti, per definizione. Questo dipende molto dal modello che utilizzi per definire "ulteriore furto": stai parlando di recuperare un vecchio disco fisso in un cassonetto o un malware che ispeziona il contenuto della RAM?

    
risposta data 11.04.2016 - 17:46
fonte
2

But I was not able to understand why simple RSA_DH does not support forward secrecy.

Diciamo che alice è il client e Bob è il server e usa i nomi delle variabili dal tuo diagramma.

In non emphreal dh b fa parte del certificato, il che significa che B è un segreto a lungo termine. Eve registra la sessione includendo il valore di a.

Qualche tempo dopo Eve si impossessa di B, forse ha hackerato il server, forse ha chiamato i suoi amici in forze dell'ordine che hanno costretto l'amministratore del server a consegnarlo. Eve può quindi calcolare un B e quindi calcolare la sessione segreta e decrittografare la sessione.

Con empreal dh B è solo un segreto a breve termine. Il successivo compromesso del server di Eve è molto meno probabile che lo sveli.

    
risposta data 13.04.2016 - 14:18
fonte

Leggi altre domande sui tag