Come funziona la crittografia SSH?


34

Ho letto di generare 2 chiavi (private e pubbliche) sull'host client e di copiare la chiave pubblica sull'host del server.

A quanto ho capito, (correggimi se sbaglio): il server crittografa i dati con la chiave pubblica e li invia al client, il client li decodifica con la chiave privata.

Ma se devo crittografare i dati sul client per l'invio al server, come succede?

La chiave pubblica crittografa i dati sul client? Ma come può il server decodificarlo, se ha solo la chiave pubblica?

Come funziona la crittografia SSH?

Risposte:


35

Prima cosa dopo aver stabilito la connessione TCP, entrambi i sistemi concordano su una chiave di sessione , usando protocolli come scambio di chiavi DH , ECDH o GSSAPI. Questa chiave è simmetrica e temporanea: entrambe le parti utilizzano la stessa chiave per crittografare e decrittografare i dati utilizzando algoritmi come AES o RC4 .

La coppia di chiavi client non viene mai utilizzata per crittografare i dati, ma solo per l' autenticazione : "publickey" è uno dei numerosi metodi disponibili, in cui il client presenta la propria chiave pubblica insieme alla prova della proprietà della chiave privata. Allo stesso modo, la coppia di server viene utilizzata solo per autenticare il server durante gli scambi di chiavi DH o ECDH; nessun dato viene crittografato utilizzandolo.

Il protocollo SSH2 è documentato in diversi RFC , tra cui:

  • RFC 4253 - Protocollo di livello di trasporto Secure Shell (SSH)
  • RFC 4419 - Scambio di gruppo Diffie-Hellman
  • RFC 4432 - Scambio di chiavi RSA
  • RFC 4462 - Autenticazione GSSAPI e scambio di chiavi

13

La prima cosa che penso che devi capire è che mentre molti protocolli di crittografia come SSH e SSL usano la PKI per scopi di autenticazione, quasi nessuno di questi sistemi utilizzerà la PKI per trasmettere effettivamente il payload.

La PKI richiede troppa intensità di CPU per essere utilizzata per la trasmissione dei dati del payload effettivo. Quello che succede è che la PKI viene utilizzata per negoziare una chiave generata casualmente, da utilizzare con un protocollo di crittografia simmetrica. Anche il protocollo da utilizzare è negoziato e dovrebbe essere il protocollo più forte su cui i due sistemi possono concordare. Quindi, una volta effettuata la stretta di mano iniziale e la negoziazione, praticamente tutto è solo una crittografia simmetrica standard.


2
Per ulteriori letture, ciò è sostanzialmente spiegato in RFC4253 , pagina 15.
slhck,

12

Ecco alcuni esempi pratici, si supponga che la chiave A sia stata mantenuta segreta ed è quindi la chiave privata e la chiave B sia stata pubblicata in un luogo accessibile al pubblico e quindi sia la chiave pubblica.

Quindi, se vuoi inviare un messaggio a tutti e vuoi che verifichino che provenga da te e che non sia stato modificato durante la consegna, invierai il tuo messaggio e includerai un hash del messaggio crittografato con la chiave A. Quindi chiunque La chiave B può decrittografare l'hash, confrontarlo con il messaggio ricevuto e verificare che il messaggio provenga da te (a causa del fatto che solo una persona con chiave A potrebbe aver generato il payload crittografato che ha decrittografato con successo l'hash e perché tu sei l'unica persona con chiave A che potrebbe venire solo da te). Questo si chiama firma .

Ora diciamo che qualcuno vuole inviarti un messaggio segreto ma non vuole rivelare chi sono. Possono crittografare il loro messaggio con una chiave simmetrica (come Zoredache ha detto che simmetrica è molto più economico da fare), quindi prendere quella chiave e crittografarla con la chiave B e inviarla a te. Perché solo la chiave A può decrittografare qualcosa che è stato crittografato con la chiave B, nessun altro può vedere cosa c'è nel messaggio che ti è stato inviato. Ecco come funziona la normale crittografia e come SSH scambia i dati.


3

Ecco una descrizione relativamente accessibile dei calcoli alla base del funzionamento della crittografia a chiave pubblica-privata.

Una descrizione ancora più basilare della BBC è qui .


Ho aggiunto un nuovo link alla BBC che spiega questo processo e parte della storia.
Chogg

1

Scrivi

"La chiave pubblica crittografa i dati sul client? Ma come può il server decrittografarli, se ha solo la chiave pubblica?"

Non ne so molto, ma penso di poter rispondere abbastanza chiaramente.

Se A vuole inviare un messaggio a B, A utilizza la chiave pubblica di B. Ecco come B è quindi in grado di decrittografarlo.

Se A usasse la propria chiave pubblica per crittografare il messaggio, allora effettivamente B non sarebbe in grado di decrittografarlo.

Questo è spiegato qui

http://www.comodo.com/resources/small-business/digital-certificates2.php

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.