web-dev-qa-db-fra.com

Quelles sont les meilleures pratiques ssh-keygen?

La plupart des utilisateurs taperaient simplement ssh-keygen et acceptez ce qui leur est donné par défaut.

Mais quelles sont les meilleures pratiques pour générer des clés ssh avec ssh-keygen?

Par exemple:

  • Utilisation -o pour le format de clé OpenSSH plutôt que pour l'ancien format PEM (OpenSSH 6.5 a introduit cette fonctionnalité il y a presque 3 ans le 2014-01- )

  • Comment calculer le nombre de tours de KDF à utiliser avec -a?

  • Devrait -T être utilisé pour tester la sécurité des candidats premiers? Quoi -a valeur à utiliser avec cela?

  • Pour les différents types de clés, quel est le minimum recommandé -b tailles de bits?

  • etc ... (il y a un ensemble d'options ahurissant dans la page de manuel ).

138
Tom Hale

Je recommande l'article Secure Secure Shell , qui suggère:

ssh-keygen -t ed25519 -a 100

Ed25519 est un schéma EdDSA avec de très petites clés (taille fixe), introduit dans OpenSSH 6.5. Ceux-ci ont une complexité similaire à RSA à 4096 bits grâce à cryptographie à courbe elliptique (ECC). L'option -a 100 Spécifie 100 tours de dérivations de clés, ce qui rend le mot de passe de votre clé plus difficile à utiliser par force brute.

Cependant, Ed25519 est un algorithme de clé assez nouveau avec adoption incomplet, il peut donc ne pas être disponible sur tous les serveurs. Pour ceux-ci, générez une clé RSA 4096 bits:

ssh-keygen -t rsa -b 4096 -o -a 100

(L'option -o Nécessite OpenSSH v6.5 + et est la valeur par défaut à partir de la v7.8, elle n'est donc plus présente dans la page de manuel ssh-keygen. Cela dicte l'utilisation d'un nouveau format OpenSSH pour stocker la clé plutôt que la valeur par défaut précédente, PEM . Ed25519 nécessite ce nouveau format, nous n'avons donc pas besoin de l'indiquer explicitement étant donné -t ed25519. Une page de manuel précédente déclarait que "le nouveau format a augmenté la résistance à la fissuration par mot de passe par force brute". Voir cette réponse pour plus de détails.)

Ne considérez pas l'autre nouvel algorithme ECC appelé ECDSA . Il est considéré comme suspect (il a faiblesses connues et puisque le gouvernement américain a été impliqué dans son développement, il peut être compromis au-delà). Ed25519 a été développé sans aucune implication connue du gouvernement.

Restez bien à l'écart des clés DSA ("ssh-dss"): elles ne sont pas seulement suspectes, DSA n'est pas sécurisé .

135
Adam Katz

La plupart des utilisateurs taperaient simplement ssh-keygen Et accepteraient ce qui leur est donné par défaut.

Oui. Pour assurer la sécurité des personnes, il faut que ce soit simple. Par conséquent, l'option par défaut doit être sûre, compatible et rapide. Vous pouvez fournir des alternatives, mais la valeur par défaut devrait être "assez bonne" pour ceux qui s'en moquent. Par conséquent, RSA (2048) dans l'ancien format PEM est actuellement la valeur par défaut.

  • Utilisez -o Pour le format de clé OpenSSH plutôt que pour l'ancien format PEM (OpenSSH 6.5 a introduit cette fonctionnalité il y a presque 3 ans le 2014-01-30)

Trois ans, ce n'est rien. Beaucoup de conteneurs ont réussi à évoluer au cours de ces années, mais SSH est ici depuis plus de 20 ans et doit encore traiter avec des clients plus âgés. Le nouveau format OpenSSH n'est pas encore largement adopté et pris en charge.

  • Comment calculer le nombre de tours de KDF à utiliser avec -a?

Dépend du cas d'utilisation. La création de votre clé pour votre repo "stuff" sur Github sera différente de la création d'une clé dans votre agence nationale préférée en tant qu'autorité de certification ou pour accéder à des super- documents secrets sur serveur dédié.

Comme indiqué, ce n'est que pour le nouveau format, qui n'est pas encore largement utilisé et cela augmente le temps de décryptage de la clé. Le nombre de tours par défaut est 16 (ce serait bien de le voir documenté quelque part). Plus dans la Question de cryptographie .

  • Faut-il utiliser -T Pour tester la sécurité des nombres premiers candidats? Quelle valeur -a Utiliser avec cela?

Non. Il est utilisé pour générer des nombres premiers (/etc/ssh/moduli) Pour l'échange de clés DH. Il n'est utilisé en aucune façon pour générer des clés SSH. La façon de générer et de tester le fichier moduli est expliquée dans le chapitre séparé MODULI GENERATION De la page de manuel de ssh-keygen.

  • Pour les différents types de clés, quelles sont les tailles minimales recommandées -b bit?

Ce n'est pas spécifique à SSH, mais généralement les tailles de clés sont recommandées par le NIST dans ce document , page 12 (par 2015):

RSA (2048 bits)
ECDSA (Curve P-256)

Le Ed25519 a une taille fixe, donc le paramètre -b Est ignoré.

21
Jakuje

Voici une doublure pour Ed25519 basée sur les valeurs recommandées: (sans phrase secrète)

ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 -q -N ""

Un autre pour RSA:

ssh-keygen -t rsa -b 4096 -o -a 100 -f ~/.ssh/id_rsa -q -N ""
  • -N: Nouvelle phrase secrète
  • -q: Silence ssh-keygen
5
Yassine ElBadaoui