it-swarm-eu.dev

Quali sono le migliori pratiche di ssh-keygen?

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.

138
Tom Hale

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 .

135
Adam Katz

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.

21
Jakuje

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
5