it-swarm-eu.dev

Tipo di chiave SSH, rsa, dsa, ecdsa, ci sono risposte facili per quale scegliere quando?

Come qualcuno che sa poco sulla crittografia, mi chiedo quale scelta faccio quando creo ssh-keys.

ssh-keygen -t type, dove type è dsa, rsa ed ecdsa.

Google può fornire alcuni informazioni sulle differenze tra i tipi, ma non nulla di conclusivo. Quindi la mia domanda è: ci sono risposte "facili" per sviluppatori/amministratori di sistema con scarse conoscenze di crittografia, quando scegliere quale tipo di chiave?

Spero in una risposta nello stile di "Usa DSA per X e Y, RSA per Z ed ECDSA per tutto il resto", ma mi rendo anche conto che è del tutto possibile che risposte così semplici non siano disponibili.

164
user50849

In pratica, una chiave RSA funzionerà ovunque. Il supporto ECDSA è più recente, quindi alcuni vecchi client o server potrebbero avere problemi con le chiavi ECDSA. Una chiave DSA utilizzata per funzionare ovunque, secondo lo standard SSH ( RFC 4251 e successive), ma questo è cambiato di recente: OpenSSH 7.0 e versioni successive non accettano più le chiavi DSA per impostazione predefinita.

L'ECDSA è più leggero dal punto di vista computazionale, ma avrai bisogno di un client o un server veramente piccolo (diciamo 50 MHz integrato ARM) per notare la differenza.

In questo momento , non vi è alcun motivo relativo alla sicurezza di preferire un tipo rispetto a un altro, presupponendo chiavi sufficientemente grandi (2048 bit per RSA o DSA, 256 bit per ECDSA); la dimensione della chiave è specificata con -b parametro. Tuttavia, alcuni ssh-keygen le versioni potrebbero rifiutare chiavi DSA di dimensioni diverse da 1024 bit, che attualmente non è interrotto, ma probabilmente non è così robusto come si potrebbe desiderare. Quindi, se ti concedi qualche leggera paranoia, potresti preferire RSA.

Per riassumere, fai ssh-keygen -t rsa -b 2048 e sarai felice.

127
Thomas Pornin

Come dice gilles, DSA è rischioso perché se fai firme (e usare la tua chiave con un client ssh per fare il login sta effettivamente facendo firme) su una scatola con un RNG cattivo la tua chiave può essere compromessa. AIUI ha reso Debian praticamente abbandonare DSA per le chiavi usate sulla loro infrastruttura alla luce del fiasco del generatore di numeri casuali Debian OpenSSL.

http://meyering.net/nuke-your-DSA-keys/

L'ECDSA è relativamente nuovo, da alcune ricerche rapide sembra che sia stato introdotto in 5.7. Afaict la maggior parte di questi sistemi non è supportata e probabilmente dovrebbe essere migrata, ma sappiamo tutti che a volte non succede. Ad esempio, Debian squeeze e ubuntu lucid. L'ECDSA presenta dei vantaggi in quanto una chiave può essere molto più piccola di una chiave RSA o DSA per lo stesso livello di sicurezza (presunto). Purtroppo condivide lo svantaggio di DSA di essere sensibile a generatori di numeri casuali errati. Si teme inoltre che le curve ellittiche utilizzate tradizionalmente possano essere state backdoor.

ED25519 è un'opzione ancora più recente, introdotta da openssh 6.5. È una variante dell'algoritmo ECDSA ma risolve il problema del generatore di numeri casuali e utilizza una curva "niente nella manica". Sarà probabilmente la migliore opzione a lungo termine, ma in questo momento ci sono ancora sistemi supportati là fuori che non hanno aperture sufficientemente nuove.

Quindi IMO che rende RSA (con una chiave di 2048 o 4096 bit a seconda di quanto sei paranoico) rimane la scelta più ragionevole per un uso generale.

Modifica: aggiorna alla situazione attuale a partire da marzo 2017.

25
Peter Green

DSA ed ECDSA hanno chiavi a lunghezza fissa e sono standard del governo degli Stati Uniti, il che significa che conoscono più gli standard rispetto al pubblico in generale. RSA è meglio conosciuto e puoi generare chiavi più lunghe con esso (il valore predefinito è 2048 rispetto alla lunghezza fissa di 1024 bit di DSA), quindi è (probabilmente) meglio da usare.

9
GdD

Usa RSA. Non per motivi di sicurezza, ma per motivi di compatibilità.

Non consiglio di usare le chiavi DSA. A partire da OpenSSH 7.0, SSH non supporta più le chiavi DSA per impostazione predefinita. Come le note sulla versione di OpenSSH 7.0 dicono , "Il supporto per ssh-dss Host e chiavi utente è disabilitato di default in fase di esecuzione". Pertanto, l'uso delle chiavi DSA (ssh-dss) provoca mal di testa.

Le chiavi ECDSA potrebbero essere migliori, ma purtroppo le chiavi ECDSA possono anche causare mal di testa di compatibilità su alcune piattaforme. Su Fedora, gnome-keyring-daemon non rileva automaticamente le chiavi SSH ECDSA, quindi non ti verrà richiesta automaticamente una password per sbloccare la chiave SSH quando provi a usarla su Fedora.

Le chiavi RSA sono completamente prive di questi mal di testa di compatibilità. Sono i più utilizzati e quindi sembrano essere i migliori supportati. Pertanto, ti consiglio di generare le chiavi RSA, per salvarti dai fastidi in seguito.


Come nota editoriale, la decisione di OpenSSH di disabilitare il supporto DSA è un po 'sconcertante: le chiavi DSA a 1024 bit hanno approssimativamente la stessa sicurezza delle chiavi RSA a 1024 bit, quindi non è chiaro perché OpenSSH abbia disabilitato il supporto per 1024 -bit chiavi DSA ma mantengono il supporto per le chiavi RSA a 1024 bit. (OpenSSH supporta ancora RSA; ha un controllo speciale per disabilitare le chiavi RSA che sono 768 bit o più brevi, ma per DSA, disabilita solo tutte le chiavi DSA, indipendentemente dalla lunghezza.) Inoltre, OpenSSH utilizzato per supportare chiavi DSA che sono più lunghe di 1024 bit di lunghezza; non è chiaro perché il supporto per loro sia stato disabilitato. Oh bene, così va.

8
D.W.