La sessione Secure Shell supporta due tipi di autenticazione del server: mediante chiave pubblica e mediante certificato (particolare forma di autenticazione con chiave pubblica).
Quando l'autenticazione della chiave pubblica viene utilizzata per l'autenticazione dell'host, si verifica la sequenza di eventi seguente.
Il client Secure Shell inizia una connessione.
Il server invia la propria chiave pubblica al client.
Il client cerca questa chiave nel proprio archivio di chiavi dell'host attendibili.
Se il client |
Si verifica questo |
---|---|
Trova la chiave dell'host e la copia del client corrisponde alla chiave inviata dal server |
L'autenticazione procede al passaggio successivo. |
Non trova la chiave dell'host |
Il client visualizza un messaggio che informa che l'host è sconosciuto e fornisce un'impronta digitale della chiave dell'host. Se il client è configurato per consentire all'utente di accettare chiavi sconosciute (impostazione predefinita), l'utente può accettare la chiave e l'autenticazione procede al passaggio successivo. Se è stato scelto di imporre il controllo rigoroso della chiave dell'host, il client chiude la connessione. |
Trova una chiave dell'host e la copia del client non corrisponde alla chiave inviata dal server |
Il client visualizza un avviso che informa che la chiave non corrisponde alla chiave esistente e visualizza un'impronta digitale della chiave inviata dal server. Se il client è configurato per consentire all'utente di accettare chiavi sconosciute (impostazione predefinita), l'utente può accettare la nuova chiave. Se è stato scelto di imporre il controllo rigoroso della chiave dell'host, il client chiude la connessione. |
Per confermare che il server dispone effettivamente della chiave privata che corrisponde alla chiave pubblica ricevuta, il client invia una richiesta (un messaggio arbitrario) al server e calcola un hash basato sul messaggio di testo.
Il server crea una firma digitale basata sul messaggio di richiesta. Per fare questo, il server calcola in modo indipendente l'hash del messaggio, quindi crittografa l'hash calcolato utilizzando la propria chiave privata. Il server allega questa firma digitale al messaggio originale e invia il messaggio firmato al client.
Il client decrittografa la firma utilizzando la chiave pubblica e confronta l'hash con il proprio hash calcolato. Se il valore corrisponde, l'host viene autenticato.