In primo luogo, le mie scuse per la matematica, e per semplificare eccessivamente la matematica!
La differenza tra DHE e ECDH in due punti elenco:
- DHE utilizza aritmetica modulare per calcolare il segreto condiviso.
- ECDH è come DHE ma, inoltre, utilizza curve algebriche per generare chiavi (una curva ellittica è un tipo di algebrica curva).
Il metodo generale in entrambi i casi è ancora Diffie-Hellman . (O lo chiamiamo Diffie-Hellman-Merkle in questi giorni?)
La perfetta segretezza in avanti si ottiene utilizzando coppie di chiavi temporanee per proteggere ogni sessione: vengono generate secondo necessità, conservate nella RAM durante la sessione e scartate dopo l'uso.
Le coppie di chiavi "permanenti" (quelle convalidate da un'autorità di certificazione) vengono utilizzate per la verifica dell'identità e la firma delle chiavi temporanee mentre vengono scambiate. Non per assicurare la sessione.
Questo spiega le cose un po 'meglio?
Modifica: per esaminare i tuoi esempi in dettaglio ...
secret session key that's never shared
Bene, questa è la definizione di scambio di chiavi DH, ma non è correlata alla perfetta segretezza in avanti. DH consente a entrambe le parti di calcolare in modo indipendente il segreto condiviso , senza trasmettere il segreto condiviso in chiaro, sul canale ancora non sicuro.
session key that changes based on random input from both users
... Certamente entrambi i lati della connessione useranno fonti locali di casualità per derivare le loro chiavi di sessione temporanee, ma penso che il fraseggio di cui sopra manchi il punto: la perfetta segretezza in avanti si ottiene scartando le chiavi della sessione dopo l'uso.
session key that is derived from a shared secret that only the 2 users know
Ormai stai pensando "In che modo questo fatto ci offre un perfetto segreto in avanti?" Per sottolineare il punto: il perfetto segreto in avanti si ottiene scartando le chiavi della sessione dopo l'uso.