SSH tipo-chiave, rsa, dsa, ecdsa, ci sono risposte facili per le quali scegliere quando?

150

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

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

Google può fornire alcune informazioni sulle differenze tra i tipi, ma non in modo conclusivo. Quindi la mia domanda è: ci sono risposte "facili" per gli sviluppatori / amministratori di sistema con poca conoscenza della crittografia, quando scegliere quale tipo di chiave?

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

    
posta user50849 30.10.2012 - 13:50
fonte

4 risposte

118

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, come per lo standard SSH ( RFC 4251 e successive), ma questo è cambiato di recente: OpenSSH Per impostazione predefinita, 7.0 e superiore non accettano più le chiavi DSA.

ECDSA è computazionalmente più leggero, ma avrai bisogno di un client o server veramente piccolo (ad esempio un processore ARM incorporato a 50 MHz) per notare la differenza.

In questo momento , non vi è alcun motivo relativo alla sicurezza per preferire un tipo rispetto a qualsiasi altro, assumendo chiavi sufficientemente grandi (2048 bit per RSA o DSA, 256 bit per ECDSA); la dimensione della chiave è specificata con il parametro -b . Tuttavia, alcune versioni ssh-keygen possono rifiutare chiavi DSA di dimensioni diverse da 1024 bit, che è attualmente ininterrotta, ma probabilmente non così robusta 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.

    
risposta data 30.10.2012 - 14:07
fonte
20

Come dice Gilles, DSA è rischioso perché se si creano firme (e l'uso della chiave con un client ssh per effettuare l'accesso sta effettivamente creando firme) su una casella con un RNG errato, la chiave può essere compromessa. AIUI ha reso Debian fondamentalmente abbandona DSA per le chiavi utilizzate sulla loro infrastruttura alla luce di il fiasco del generatore di numeri casuali Debian OpenSSL.

link

ECDSA è relativamente nuovo, da qualche ricerca rapida sembra che sia stato introdotto in 5.7. Afaict molti di questi sistemi sono fuori supporto e probabilmente dovrebbero essere migrati, ma sappiamo tutti che non succede. Ad esempio, Debian spremere e ubuntu lucid. ECDSA ha dei vantaggi in quanto una chiave può essere molto più piccola di una chiave RSA o DSA per lo stesso livello di (presunta) sicurezza. Sfortunatamente condivide lo svantaggio di DSA di essere sensibile ai generatori di numeri casuali sbagliati. Ci sono anche preoccupazioni sul fatto che le curve ellittiche tradizionalmente usate potrebbero essere state chiuse a chiave.

ED25519 è un'opzione ancora più nuova, introdotta da openssh 6.5. È una variante dell'algoritmo ECDSA, ma risolve il problema del generatore di numeri casuali e utilizza una curva "niente dalla mia manica". Probabilmente sarà l'opzione migliore a lungo termine, ma al momento ci sono ancora sistemi supportati là fuori che non hanno openssh sufficientemente nuovo.

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

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

    
risposta data 10.08.2013 - 01:06
fonte
10

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

    
risposta data 30.10.2012 - 14:07
fonte
7

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

Non consiglio l'uso di chiavi DSA. A partire da OpenSSH 7.0, SSH non supporta più le chiavi DSA per impostazione predefinita. Poiché le note di rilascio per OpenSSH 7.0 dicono , "il supporto per le chiavi host e user ssh-dss è disabilitato di default a run-time". Pertanto, l'utilizzo di chiavi DSA (ssh-dss) causerà solo 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à automaticamente richiesta una password per sbloccare la chiave SSH quando tenti di usarla su Fedora.

Le chiavi RSA sono completamente prive di questi mal di testa di compatibilità. Sono i più usati e sembrano essere i migliori supportati. Pertanto, ti consiglio di generare le chiavi RSA, per evitare di annoiarti in seguito.

Come nota redazionale, la decisione di OpenSSH di disabilitare il supporto DSA è un po 'sconcertante: le chiavi DSA a 1024 bit hanno circa lo stesso sicurezza come chiavi RSA a 1024 bit, quindi non è chiaro il motivo per cui OpenSSH disabilita il supporto per le chiavi DSA a 1024 bit ma mantiene 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 semplicemente tutte le chiavi DSA, indipendentemente dalla lunghezza.) Inoltre, OpenSSH supportava le chiavi DSA che sono più lunghe di 1024 bit di lunghezza; non è chiaro il motivo per cui il supporto per loro è stato disabilitato. Oh bene, così va.

    
risposta data 23.12.2015 - 02:17
fonte

Leggi altre domande sui tag