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?