In che modo SSH utilizza sia RSA che Diffie-Hellman?

16

Il protocollo SSH 2 consente di utilizzare le chiavi DSA, ECDSA, ED25519 e RSA quando si stabilisce una connessione sicura a un server. (Tieni presente questa domanda che conosco solo la procedura e le funzionalità di RSA e non posso parlare con gli altri metodi)

Ciò che mi confonde, è secondo man sshd , Diffie-Hellman è usato per lo scambio di chiavi:

For protocol 2, forward security is provided through a Diffie-Hellman key agreement. This key agreement results in a shared session key. The rest of the session is encrypted using a symmetric cipher...

Questo porta a due domande:

  1. Dove entra in gioco la chiave RSA se non viene utilizzata durante lo scambio di chiavi?
  2. Perché è richiesto un secondo protocollo (in questo caso, Diffie-Hellman)? Perché non utilizzare la chiave pubblica RSA del client per crittografare la chiave di sessione sul server e inviarla al client?
posta IQAndreas 26.12.2014 - 17:33
fonte

1 risposta

25
  1. La chiave host viene utilizzata per firmare i parametri Diffie-Hellman. è usato durante lo scambio di chiavi; RSA è un algoritmo di firma e un algoritmo di crittografia. Da quello che posso dire, la chiave del client (in authorized_keys ) non è usata affatto nello scambio di chiavi; viene usato solo dopo scambio di chiavi per firmare un particolare messaggio e dimostrare che il client ha la chiave privata (un lato dei parametri DH firmati è sufficiente per prevenire un MITM, perché l'attaccante non può impersonare sia client e server, è più facile fare in modo che il server abbia sempre una coppia di chiavi che fare in modo che il client debba sempre avere una coppia di chiavi).

  2. Il modo in cui SSH usa DH è come un algoritmo effimero : i parametri DH vengono generati per le singole sessioni e vengono distrutti non appena non sono più necessari. L'unica cosa per cui la coppia di chiavi a lunga durata viene utilizzata è l'autenticazione. Ciò fornisce inoltro segreto : il furto della chiave privata non consente di decrittografare le vecchie sessioni.

    Se RSA è stato utilizzato per crittografare la chiave di sessione, quindi qualcuno che ha registrato quella sessione, acquista il server SSH anni dopo che è stato rimosso, e ottiene la chiave privata dal suo disco fisso può usarlo per decifrare la chiave di sessione e usarla per leggere l'intera comunicazione. Se RSA è usato per firmare parametri DH, allora l'unico modo per sfruttare una chiave privata rubata è in un attacco man-in-the-middle, e ciò può essere sventato dall'operatore del server che cambia la chiave e dire a tutti i suoi utenti delle chiavi cambiate. Con lo scambio di chiavi effimero, nulla di necessario per decodificare una sessione registrata viene memorizzato più a lungo di quanto non debba essere.

    Questa è anche una configurazione utilizzata sempre più spesso per le sessioni TLS (lì, dove i certificati hanno date di scadenza, una chiave privata non ha nemmeno avere per essere tenuta segreta dopo la sua scadenza perché non dovrebbe È possibile utilizzarlo in un attacco man-in-the-middle, perché gli utenti ignorano i certificati scaduti, ma è possibile capire perché la crittografia effimera è piacevole).

risposta data 26.12.2014 - 20:47
fonte

Leggi altre domande sui tag