Verifica dell'impronta digitale SSH di un server pubblico

4

Ho letto da qualche parte che i server che hanno accesso SSH per gli utenti nel pubblico possono avere la loro chiave pubblica pubblicata pubblicamente (ad esempio, su un sito Web), in modo che le persone che accedono a tale server utilizzando SSH possano utilizzare questa chiave per verificare il impronta digitale del server.

La mia domanda: se la chiave pubblica è accessibile al pubblico, non è possibile che un utente malintenzionato lo prenda e lo sfrutti a persone man-in-the-middle che tentano di connettersi a questo server?

Inoltre, cosa c'è esattamente in questa impronta digitale SSH? È solo una chiave pubblica che è stata sottoposta a hash? O sono le informazioni specifiche del server che sono state crittografate (o firmate) dalla chiave privata del server?

    
posta Minaj 12.06.2016 - 01:36
fonte

1 risposta

4

Un utente malintenzionato non può sfruttare un'impronta digitale pubblicamente nota di una chiave pubblica, poiché la verifica non si limita al confronto dell'impronta digitale con un valore fisso.

Server presenta due informazioni su un client:

  • una chiave pubblica
  • un messaggio crittografato con la sua chiave privata (che esiste solo sul server legittimo)

Sul lato client il messaggio viene decifrato utilizzando la chiave pubblica e il suo contenuto è verificato.

All'utente viene data un'opzione per confrontare manualmente l'impronta digitale della chiave pubblica con un valore noto.

Confrontando l'impronta digitale della chiave pubblica, l'utente assicura che appartenga al server che desidera collegare. Decifrando il messaggio, l'applicazione client garantisce che il server "trattieni" la chiave privata corrispondente.

La conoscenza della chiave pubblica o delle sue impronte digitali non fornisce a un utente malintenzionato alcuna informazione sulla chiave privata del server (questo è il principio base della crittografia a chiave pubblica).

Se l'attaccante piantava un server malevolo, avrebbe comunque bisogno di usare una chiave privata per crittografare la comunicazione con il client. La comunicazione crittografata con questa chiave privata richiederebbe la decrittazione con una chiave pubblica corrispondente (diversa da quella legittima).

L'utente può quindi confrontare l'impronta digitale della chiave pubblica utilizzata con quella del server legittimo come pubblicato.

Naturalmente se un utente malintenzionato ha modificato le informazioni sulla chiave pubblica del server e lo ha sostituito con il proprio, quell'attacco avrebbe funzionato. Pertanto, l'utente deve valutare il livello di affidabilità del supporto da cui ha appreso l'impronta digitale. In parole semplici: se le informazioni relative alle impronte digitali vengono fornite su un sito HTTP non crittografato o tramite un canale compromesso, non è possibile attendersi.

Storicamente l'impronta digitale predefinita è stata presentata come hash MD5 a 128 bit sotto forma di valori esadecimali separati da due punti:

 43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8

L'impostazione predefinita è stata successivamente modificata in SHA-256, scritta come:

xrcV3g7R6sp8DVZGDEAhCL9s4TD9GFyrCbLCzHXi5iA

Un client OpenSSH consente di chiedere un hash specifico utilizzando l'opzione FingerprintHash specificata in .ssh/config o direttamente nel comando:

ssh -o FingerprintHash=md5 example.com
    
risposta data 12.06.2016 - 02:00
fonte

Leggi altre domande sui tag