La tua descrizione è un po 'confusa e sembra sbagliata. In particolare, vediamo che Alice compila qui Diffie-Hellman mezzo g K A e poi procede per inviare ... il suo segreto Diffie-Hellman < em> K A a Bob, che non è affatto quello che dovrebbe fare.
Plain Diffie-Hellman funziona come segue:
- Alice genera (casualmente) il suo K A segreto e calcola g K A .
- Bob genera (a caso) il suo K B segreto e calcola g K B .
- Alice invia g K A a Bob.
- Bob invia g K B ad Alice.
- Alice calcola (g K B ) K A , usandola segreto K A e il valore inviato da Bob.
- Bob calcola (g K A ) K B , usando il suo segreto K B e il valore inviato da Alice.
Con la magia della matematica, Alice e Bob finiscono con lo stesso valore, che è il segreto condiviso che usano da quel momento per qualsiasi crittografia di cui hanno bisogno per parlarsi.
Per la variante autenticata , vengono eseguiti gli stessi calcoli; ma Alice e Bob possiedono anche coppie di chiavi asimmetriche utilizzabili per firme digitali , e le usano: Alice firma ciò che invia a Bob e Bob verifica quella firma (utilizzando la chiave pubblica di Alice). Allo stesso modo, Bob firma ciò che invia ad Alice e Alice verifica quella firma (usando la chiave pubblica di Bob).
Si noti che in nessun modo Alice invia K A (lui "DH secret") a Bob in qualsiasi forma. Bob non invia nemmeno K B ad Alice. E non c'è crittografia da nessuna parte . Potresti imbatterti in molti tutorial che pretendono di spiegare le firme digitali in termini di crittografia (solitamente come "crittografia con la chiave privata"). Queste spiegazioni sono tracce di epoche più antiche (la fine degli anni '70, di fatto, nell'era della discoteca originale ) e, in realtà, sono semplicemente sbagliate e molto confuse. Quindi non pensare in questi termini. Le firme sono firme, la crittografia è crittografia.
Il DH autenticato è ciò che viene fatto, ad esempio, in SSL / TLS con le suite di crittografia "DHE". È anche ciò che accade in SSH (versione 2).
Ci sono due ragioni principali per l'utilizzo di un Diffie-Hellman "effimero" ("effimero" perché Alice e Bob generano i loro segreti DH K A e K B al volo):
-
Le coppie di chiavi "permanenti" possedute da Alice e Bob potrebbero non essere idonee per nient'altro che le firme. Una fonte di confusione (di nuovo) è che non esiste un algoritmo one chiamato RSA; ce ne sono almeno due, uno per la crittografia e uno per le firme, e sembrano essere in grado di utilizzare lo stesso tipo di coppie di chiavi. Tuttavia, anche se una coppia di chiavi RSA può essere utilizzata sia per la crittografia sia per le firme, esistono buone ragioni non farlo. Esistono anche altri algoritmi di firma (ad esempio ECDSA) le cui chiavi non possono essere utilizzate (almeno non facilmente) per la crittografia.
-
L'uso dei segreti DH temporali fornisce Inoltra segretezza , che è buono. Vale a dire, le chiavi permanenti di Alice e Bob devono essere memorizzate da qualche parte; quindi potrebbero, potenzialmente, essere rubati in seguito. Con un semplice scambio di chiavi basato su RSA (no DH, Alice crittografa una chiave di sessione casuale con la chiave pubblica di Bob e Bob la decrittografa), l'ulteriore ladro di chiavi potrebbe usarlo per decrittografare una sessione passata. Con il DH e le firme, questo problema non si verifica; anche se le chiavi private di firma di Alice e Bob vengono rivelate in seguito, le loro comunicazioni passate non possono essere decifrate. L'intero concetto di segreto in avanti ruota intorno all'idea che i "segreti DH", essendo generati al volo, conservati solo nella RAM e distrutti immediatamente dopo il completamento dello scambio di chiavi DH, sono immuni da ulteriori furti.