Capire la cattura wireshark per la scambio di chiavi ssh

Ho bisogno di capire lo scambio di chiavi SSH, ho cercato di leggere il documento RFC, ma sembra molto difficile capire così ho bloccato i pacchetti utilizzando wireshark, ho trovato diversi pacchetti per ssh keyexchange

SSHv2 Client: Key Exchange Init SSHv2 Server: Key Exchange Init SSHv2 Client: Diffie-Hellman Key Exchange Init SSHv2 Server: Diffie-Hellman Key Exchange Reply SSHv2 Client: Diffie-Hellman GEX Init SSHv2 Server: Diffie-Hellman GEX Reply SSHv2 Client: New Keys 

Può uno spiegarmi each pacchetto in dettaglio o sequenza di scambio di chiavi ssh?

  • Trasmetta multicast (ad un'altra LAN) tramite WAN distriggersndo il multicast
  • Modo più veloce per rispecchiare un sito FTP
  • possibili soluzioni per la distribuzione e la manutenzione dei computer ubuntu aggiornati (e lo stesso)
  • Aggiungere una directory alla radice Web Apache?
  • Linux per recuperare un range di byte da un file
  • Come condividere NFSv4 un file system ZFS su FreeBSD?
  • 2 Solutions collect form web for “Capire la cattura wireshark per la scambio di chiavi ssh”

    Prima di tutto dovresti capire il concetto di uno scambio di Diffie-Hellman. Permette di stabilire un canale tra 2 endpoint con queste funzionalità:

    • Protegge dagli intercettazioni. Qualcuno che annusa il canale non può decrittografarlo.
    • Diffie-Hellman NON protegge contro gli attacchi uomo-in-mezzo. Questo tipo di attacchi è impedito tramite la verifica della chiave host. Questo è fatto dopo lo scambio DH, quindi è crittografato e non può essere analizzato con wireshark in questo momento.
    • Genera numero random che non può essere determinato da nessuno dei due coetanei, ma i due insieme. Questo è un concetto interessante per me.

    • Dall'articolo wikipedia qui è una struttura semplificata dello scambio:

      1. Sia g un numero pubblico noto da un gruppo loopsco finito.
      2. Alice prende un numero naturale random a e invia g a a Bob.
      3. Bob seleziona un numero naturale random b e invia g b ad Alice.
      4. Alice calcola (g b ) a = g ab
      5. Bob calcola (g a ) b = g ab

    Di conseguenza essi hanno generato un segreto random sicuro ab .

    E ORA PER LA COPERTURA DEL FILO!

    1. Client SSHv2: chiave di scambio Init

      Trattative di parametri diversi, come compressione e alcuni algoritmi di cripta.

    2. Server SSHv2: chiave di scambio Init

      Rispondi sopra

    3. SSHv2 Cliente: Diffie-Hellman Exchange Key Init

      Negoziazione dei parametri DH sul gruppo matematico. (Per maggiori dettagli, vedere sezione RFC4419, sezione 3).

    4. SSHv2 Server: Diffie-Hellman Rispondere a chiave di scambio

      Rispondi sopra.

    5. SSHv2 Cliente: Diffie-Hellman GEX Init

      Primo scambio effettivo di DH. Seguendo la notazione di wikipedia questo sarebbe il passo 2 (Alice invia g a ).

    6. SSHv2 Server: Diffie-Hellman GEX Rispondi

      Lo scambio termina (Bob manda g b ).

      Dopo aver ricevuto questo pacchetto, i due coetanei conoscono la chiave segreta (g ab ) e creano un canale pseudo-sicuro con esso (protetto contro l'intercettazione random, ma non contro gli attacchi uomo-in-mezzo).

    7. Client SSHv2: nuove chiavi

      Questo mi sembra un semplice messaggio di riconoscimento per me. È piccolo e non contiene dati significativi.

      Ok, suppongo che succede molto dopo (verifica di chiave pubblica del server, authentication degli utenti, creazione di canali di dati per shell / sftp / scp / tunnel, ecc.). Non so i dettagli esatti e (un) per fortuna tutto questo è crittografato.

    Riferimenti utili:

    1. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange
    2. http://www.ietf.org/rfc/rfc4251.txt

    Il client e il server iniziano con l'invio reciprocamente le versioni del protocollo e del software che utilizzano.

     SSHv2 Client: Key Exchange Init 

    Qui, il client indica al server gli algoritmi che support per each function (crittografia, MAC, scambio di chiavi, authentication host, compressione), in ordine di preferenza.

     SSHv2 Server: Key Exchange Init 

    Il server fa lo stesso. Si noti che può submit questo messaggio prima di averlo ricevuto dal client.

    Dalle due liste di algoritmi, il client e il server calcolano indipendentemente la stessa suite di cifratura. Ad esempio, scelgono lo stesso algorithm di scambio kex (e avviene subito dopo).

     SSHv2 Client: Diffie-Hellman Key Exchange Init SSHv2 Server: Diffie-Hellman Key Exchange Reply SSHv2 Client: Diffie-Hellman GEX Init SSHv2 Server: Diffie-Hellman GEX Reply 

    Lo scambio di chiavi Diffie-Hellman consente al cliente e al server di finire con un segreto condiviso che un osservatore sulla networking non può immaginare fattibilmente. Ad esempio, deriverebbero da questo segreto una chiave per l'algorithm di crittografia.

    Si noti che la risposta del server contiene anche la chiave di host pubblico (o certificati). Se è una chiave pubblica e il client non lo ha mai visto, il client richiede solitamente l'utente se deve fidarsi di esso:

    L'autenticità dell'host 'debian.org (130.89.148.14)' non può essere stabilita.
    L'impronte digitale ED25519 è SHA256: bNnjFMvzsNhkwzRHwGRbTIUM4XzUjlLrBl / 7MzCbndw.

     SSHv2 Client: New Keys 

    Con il messaggio New Keys , il client significa:

    Hey server! Tutti i seguenti messaggi da me utilizzeranno le cifre che abbiamo negoziato.

    Il server deve inoltre submit un messaggio di nuovo tasto al client.

    Il mio principale riferimento è la RFC per il protocollo di trasporto SSH: https://tools.ietf.org/html/rfc4253 . Questo è lo strato più basso di SSH, in cui sono basati tutti gli altri servizi SSH (authentication utente, shell, inoltro X11, ecc.).

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.