Quali sono le differenze tra le chiavi RSA, DSA e ECDSA utilizzate da ssh?

6

Nella mia directory /etc/ssh/ , posso vedere tre che ho tre diversi tipi di chiavi ssh:

-rw------- 1 root root    607 Oct  4 22:43 ssh_host_dsa_key
-rw-r--r-- 1 root root    623 Oct  4 22:43 ssh_host_dsa_key.pub
-rw------- 1 root root    241 Oct  4 22:43 ssh_host_ecdsa_key
-rw-r--r-- 1 root root    194 Oct  4 22:43 ssh_host_ecdsa_key.pub
-rw------- 1 root root   1602 Oct  4 22:43 ssh_host_rsa_key
-rw-r--r-- 1 root root    378 Oct  4 22:43 ssh_host_rsa_key.pub

Quali sono le differenze tra le chiavi RSA, DSA e ECDSA di ssh e ho bisogno di tutte e tre? Si prega di spiegare la differenza tra loro e come usarli.

    
posta Chaminda Bandara 02.02.2018 - 08:23
fonte

1 risposta

6

A cosa servono questi file?

Queste sono le chiavi host che identificano in modo univoco il tuo host. Quando OpenSSH viene avviato per la prima volta, genererà questi keypair. Quando un client SSH si connette al server, pubblicizzerà l'intenzione di autenticare l'host utilizzando un particolare algoritmo. Poiché molti sono supportati, OpenSSH genera semplicemente uno di ciascun tipo. Ciò consente al tuo server di essere identificato con più tipi di impronte digitali.

Tratto dalla pagina man OpenSSH, ssh(1) :

When connecting to a server for the first time, a fingerprint of the server's
public key is presented to the user (unless the option StrictHostKeyChecking
has been disabled). Fingerprints can be determined using ssh-keygen(1):

    $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

If the fingerprint is already known, it can be matched and the key can be
accepted or rejected. If only legacy (MD5) fingerprints for the server are
available, the ssh-keygen(1) -E option may be used to downgrade the fingerprint
algorithm to match. 

I file che terminano in .pub non sono sensibili. Vengono trasmessi a qualsiasi client che tenta una connessione. I file senza quell'estensione sono le chiavi private. Se vengono divulgati, chiunque sarà in grado di impersonare il server SSH su qualsiasi client. Le chiavi private sono utilizzate per dimostrare al cliente che le chiavi pubbliche trasmesse sono di fatto di proprietà del server.

Durante la connessione a un server SSH, si verificano una serie di eventi:

  • Il client SSH si collega al server e pubblicizza il suo algoritmo preferito.
  • Il server invia la chiave pubblica desiderata al client, se è supportato.
  • Il client calcola l'impronta digitale della chiave pubblica.
  • Per la prima connessione, l'impronta digitale viene salvata in known_hosts .
  • Per le connessioni successive, l'impronta digitale viene confrontata con quella salvata.

Alla prima connessione, l'impronta digitale viene visualizzata all'utente e all'utente viene richiesto di accettare l'impronta digitale. Questo è noto come TOFU o Trust-On-First-Use. Nelle connessioni successive, l'impronta digitale viene verificata in modo silenzioso e automatico. In caso di mancata corrispondenza, il client SSH rifiuterà di connettersi e avviserà l'utente che potrebbe essersi verificato un attacco MITM. Questo comportamento garantisce che tutte le connessioni future siano autentiche finché la prima connessione è autentica. Un attacco MITM, o il server SSH che cambia le sue chiavi host per qualsiasi motivo, invaliderà questo e richiederà la riautenticazione.

Di quali file hai bisogno?

Non hai bisogno di tutti e tre e puoi rimuoverli, ma un client SSH sarà in grado di verificare l'impronta del tuo server solo se ha un'impronta digitale supportata memorizzata nel file known_hosts . Come minimo, le chiavi RSA dovrebbero essere conservate. Non tutti i client supportano ECDSA e DSA (CE) presenta alcuni problemi di sicurezza e in genere non è più raccomandato. Non c'è nessun svantaggio nel tenerli tutti, però. Un breve riepilogo degli algoritmi comunemente disponibili dal punto di vista della sicurezza:

  • RSA è ben considerato e supportato ovunque. È considerato abbastanza sicuro. Le dimensioni delle chiavi comuni vanno fino a 4096 bit e fino a 1024. La dimensione della chiave è regolabile. Devi scegliere RSA .
  • DSA non è più in uso comune, poiché scarsa casualità quando genera una firma può perdere la chiave privata. In passato, era garantito che funzionasse dappertutto secondo RFC 4251 , ma non è più così. DSA è stato standardizzato come solo 1024 bit (in FIPS 186-2, sebbene FIPS 186-3 abbia aumentato tale limite). OpenSSH 7.0 e più recenti disattivano questo algoritmo.
  • ECDSA è più recente e si basa su DSA. Ha la stesse debolezze come DSA , ma generalmente si ritiene che sia più sicuro, anche con dimensioni di chiavi più piccole. Usa le curve NIST (P256).
  • Ed25519 , mentre non uno che hai elencato, è disponibile sulle nuove installazioni di OpenSSH. È simile all'ECDSA ma utilizza una curva superiore , e non presenta gli stessi punti deboli quando gli RNG deboli vengono utilizzati come DSA / ECDSA. Generalmente è considerato il più strong dal punto di vista matematico.
risposta data 02.02.2018 - 14:52
fonte

Leggi altre domande sui tag