Scambio chiavi Diffie Hellman autenticato

2

Sembra che la versione da manuale di Diffie-Hellman sia suscettibile all'uomo nell'attacco centrale e l'uso delle firme digitali potrebbe impedire che questo attacco si verifichi.

Le firme digitali potrebbero essere implementate durante lo scambio di chiavi Diffie-Hellman nel modo seguente

  1. Alice ha una coppia di chiavi pubbliche / private (SKa, PKa).
  2. Bob ha una coppia di chiavi pubbliche / private (SKb, PKb).
  3. Alice genera la sua chiave segreta Ka usa la sua chiave privata SKa per firmare (g ^ Ka) per produrre Signature s (m)
  4. Alice usa PKb chiave pubblica di Bob per crittografare la sua chiave segreta Ka.
  5. Alice invia oltre Ka e s (m) crittografati a Bob
  6. Bob utilizzerà la sua chiave privata SKb per decifrare Ka crittografato per ottenere C e utilizzare la chiave pubblica Alice PKa su s (m) per ottenere D
  7. Bob autentica assicurandosi che C == D

Ho tre domande riguardo a questo

  1. Questo è il modo in cui lo scambio di chiavi diffie-hellman autenticato tramite le firme digitali viene normalmente eseguito? Altrimenti, come si fa normalmente?
  2. Perché ci preoccupiamo di questo tipo di scambio di chiavi in cui il mittente e il destinatario devono inviare le loro chiavi prima di utilizzare la chiave combinata quando possiamo crittografare la chiave utilizzando la chiave privata dei mittenti seguita dalla chiave pubblica del destinatario e inviare all'altra parte?
  3. Ci sono dei difetti con la mia implementazione dello scambio di chiavi autenticato Diffie-Hellman?
posta Computernerd 18.11.2014 - 13:12
fonte

1 risposta

9

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.

risposta data 18.11.2014 - 17:36
fonte