La maggior parte degli utenti digiterebbe semplicemente ssh-keygen
e accetta ciò che viene fornito per impostazione predefinita.
Ma quali sono le migliori pratiche per generare ssh
chiavi con ssh-keygen
?
Per esempio:
Uso -o
per il formato chiave OpenSSH anziché per il vecchio formato PEM (OpenSSH 6.5 ha introdotto questa funzione quasi 3 anni fa il 30-01-2014 )
Come si dovrebbe calcolare il numero di round di KDF da usare con -a
?
Dovrebbero -T
essere utilizzato per testare i primi candidati per la sicurezza? Che cosa -a
valore da utilizzare con questo?
Per i diversi tipi di chiave, quali sono i minimi consigliati -b
dimensioni bit?
ecc ... (nella pagina del manuale ) è presente una serie di opzioni da capogiro.
Raccomando l'articolo Secure Secure Shell , che suggerisce:
ssh-keygen -t ed25519 -a 100
Ed25519 è uno schema EdDSA con tasti molto piccoli (dimensioni fisse), introdotto in OpenSSH 6.5. Questi hanno una complessità simile a RSA a 4096 bit grazie a crittografia a curva ellittica (ECC). L'opzione -a 100
Specifica 100 round di derivazioni chiave, rendendo la password della tua chiave più difficile da forzare.
Tuttavia, Ed25519 è un algoritmo chiave piuttosto nuovo con incomplete adozione , quindi potrebbe non essere disponibile su tutti i server. Per quelli, genera una chiave RSA a 4096 bit:
ssh-keygen -t rsa -b 4096 -o -a 100
(L'opzione -o
Richiede OpenSSH v6.5 + ed è l'impostazione predefinita a partire dalla v7.8, quindi non è più presente nella pagina man ssh-keygen
. Ciò determina l'utilizzo di un nuovo formato OpenSSH per memorizzare la chiave anziché il valore predefinito precedente, PEM . Ed25519 richiede questo nuovo formato, quindi non è necessario dichiararlo esplicitamente dato -t ed25519
. Una pagina man precedente affermava che "il nuovo formato ha aumentato la resistenza al cracking della password a forza bruta". Vedi questa risposta per maggiori dettagli.)
Non considerare l'altro nuovo algoritmo ECC chiamato ECDSA . È considerato sospetto (ha punti deboli noti e poiché il governo degli Stati Uniti è stato coinvolto nel suo sviluppo, potrebbe essere compromesso oltre a quello). Ed25519 è stato sviluppato senza alcun coinvolgimento del governo noto.
Stai lontano dalle chiavi DSA ("ssh-dss"): non sono solo sospette, DSA non è sicuro .
La maggior parte degli utenti digiterebbe semplicemente
ssh-keygen
E accetterebbe ciò che viene dato di default.
Sì. Per garantire la sicurezza delle persone, deve essere semplice. Pertanto l'opzione predefinita dovrebbe essere sicura, compatibile e veloce. Puoi fornire alternative, ma il valore predefinito dovrebbe essere "abbastanza buono" per coloro a cui non importa. Pertanto RSA (2048) nel vecchio formato PEM è l'impostazione predefinita al momento.
- Usa
-o
Per il formato chiave OpenSSH anziché per il vecchio formato PEM (OpenSSH 6.5 ha introdotto questa funzione quasi 3 anni fa il 30-01-2014)
Tre anni non sono niente. Molti container sono riusciti a evolversi in questi anni, ma SSH è qui da più di 20 anni e deve ancora trattare con i clienti più anziani. Il nuovo formato OpenSSH non è ancora ampiamente adottato e supportato.
- Come si dovrebbe calcolare quanti round di KDF usare con
-a
?
Dipende dal caso d'uso. La creazione della chiave per il repository "roba" su Github sarà diversa dalla creazione di chiavi nella agenzia nazionale preferita come autorità di certificazione o per accedere a super- documenti segreti su server dedicati.
Come sottolineato, questo è solo per il nuovo formato, che non è ancora ampiamente utilizzato e aumenta il tempo di decrittografia della chiave. Il numero predefinito di round è 16
(sarebbe bello vederlo documentato da qualche parte). Altro nella domanda di crittografia .
-T
Dovrebbe essere usato per testare i numeri primi candidati per la sicurezza? Quale valore-a
Utilizzare con questo?
No. Viene utilizzato per generare numeri primi (/etc/ssh/moduli
) Per lo scambio di chiavi DH. Non viene utilizzato in alcun modo per generare chiavi SSH. Come generare e testare il file moduli
è spiegato nel capitolo separato MODULI GENERATION
Della pagina di manuale per ssh-keygen
.
- Per i diversi tipi di chiave, quali sono le dimensioni minime consigliate
-b bit
?
Questo non è specifico per SSH, ma in genere le dimensioni delle chiavi sono consigliate dal NIST in questo documento , pagina 12 (per 2015):
RSA (2048 bits)
ECDSA (Curve P-256)
L'Ed25519 ha dimensioni fisse, quindi il parametro -b
Viene ignorato.
Ecco una riga per Ed25519 in base ai valori consigliati: (senza passphrase)
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 -q -N ""
Un altro per RSA:
ssh-keygen -t rsa -b 4096 -o -a 100 -f ~/.ssh/id_rsa -q -N ""
-N
: Nuova passphrase-q
: Silenzio ssh-keygen