Perché la chiave pubblica utilizzata sul lato server per una connessione ssh?

1

Non mi è chiaro perché l'autenticazione della chiave SSH abbia bisogno della chiave pubblica salvata sul server. Di solito i passaggi coinvolti sono:

  • Genera una coppia di chiavi sul client
  • La chiave pubblica viene salvata sul server e la chiave privata viene utilizzata dal client per eseguire l'autenticazione

Non ho mai visto una soluzione del tipo:

  • Genera una coppia di chiavi sul server
  • Chiave pubblica salvata sul client

Penso che l'ultima soluzione sia possibile ma mai utilizzata a causa dell'impossibilità di garantire l'accesso a un numero limitato di utenti: la chiave pubblica può essere utilizzata da chiunque durante la fase di autenticazione. È questo il caso o altre motivazioni sono presenti?

    
posta Alvin 08.07.2018 - 11:44
fonte

2 risposte

6

Sono disponibili più chiavi e schemi di crittografia in SSH:

  1. Chiavi del server, per autenticare il server per l'utente. Il server ha la chiave privata e consegna la chiave pubblica a chiunque chieda.
  2. Chiavi client, per autenticare il client sul server. Il client ha la chiave privata, il server il pubblico.

Scopo del # 1 è quello di autenticare il server per l'utente. L'utente può utilizzare la chiave pubblica per verificare che il server abbia conoscenza della chiave privata. Ciò garantisce che non ci sia un uomo nell'attacco intermedio , poiché non sarebbe in grado di produrre il stesse chiavi.

Scopo del # 2 è quello di autenticare l'utente sul server. Il server può utilizzare la chiave pubblica per verificare che l'utente abbia conoscenza della chiave privata.

L'autenticazione può essere eseguita dal server utilizzando la chiave pubblica del client per crittografare un numero casuale . Se il client ha la chiave privata corrispondente, può decodificare il numero casuale e comunicare al server il valore. Ciò dimostra che il client ha la chiave privata corrispondente e quindi autentica l'utente, senza rivelare alcuna informazione a prescindere dal fatto che abbia la chiave privata.

Il client può fare lo stesso con la chiave del server; crittografa un numero casuale e trasmetti al server e chiedi al server di decrittografarlo.

Per la crittografia dei dati in transito, nessuno dei due viene utilizzato. Un codice simmetrico, con chiavi effimere, viene utilizzato per la crittografia dei dati che passano sul filo. La chiave per questo viene elaborata utilizzando un protocollo di scambio di chiavi .

Questa è ovviamente una breve panoramica ed è semplificata. Maggiori informazioni possono essere trovate in questo testo breve e non tecnico sull'autenticazione ssh.

    
risposta data 08.07.2018 - 12:32
fonte
-2

Penso che questi video spieghino molto bene:

Crittografia a chiave pubblica - Computerphile

Se non puoi / non vuoi vedere il video, ecco un breve riassunto:

Una coppia di chiavi è composta da due chiavi che possono crittografare qualcosa ma il prodotto crittografato può essere decifrato solo dalla sua coppia.

Il server ha le chiavi pubbliche e private e il client ha le chiavi pubbliche e private che il client ha ricevuto dal server.

La chiave pubblica del server viene trasmessa a tutti.

La chiave pubblica del client è memorizzata sul server come host conosciuto, ma può anche essere trasmessa a chiunque. È semplicemente importante che il server sappia a chi appartiene quella chiave pubblica.

Quando il cliente vuole contattare il server, prima cripta lo stream con la sua chiave privata e poi la chiave pubblica del server.

Il server può quindi verificare con la chiave pubblica del client che effettivamente era il client che ha richiesto l'accesso perché solo il client ha la sua chiave privata e nessuno sa quale sia il contenuto dello scambio di dati perché l'unico in grado di decifrare il resto di esso è il server.

Quindi, per rispondere alla tua preoccupazione, no, quella chiave pubblica non viene salvata sul client, ma piuttosto trasmessa a tutti sempre.

    
risposta data 08.07.2018 - 19:53
fonte

Leggi altre domande sui tag