Les pubs vous déplaisent ? Aller Sans pub Auj.

Clés SSH expliquées Ed25519 vs ECDSA vs RSA (Arrêtez de taper Entrée)

Mis à jour le

Vous avez tapé ssh-keygen, appuyé sur Entrée quatre fois, et vous êtes arrivé à RSA. Voici pourquoi Ed25519 est la bonne solution, ce que ECDSA fait mal, et les seules situations où RSA est vraiment nécessaire.

Clés SSH expliquées : Ed25519 vs ECDSA vs RSA (Arrêtez de taper Entrée) 1
ANNONCE · Supprimer ?

Chaque développeur l’a fait. Vous tapez ssh-keygen, un assistant apparaît, qui vous demande le type de clé, la longueur en bits, le mot de passe, le chemin de sortie — et vous appuyez simplement sur Entrée jusqu’à ce que l’empreinte aléatoire apparaisse. Félicitations, vous avez maintenant une clé RSA-2048 et vous ne savez pas pourquoi ce nombre.

Réponse courte : utilisez Ed25519, arbre de dépendances différent, comportement potentiellement différent. ssh-keygen -t ed25519 -C "you@example.com" et arrêtez de lire les réponses de StackOverflow datant de 2012. Le reste de ce guide explique pourquoi — et couvre les cas légitimes où la RSA est effectivement nécessaire.

Les trois algorithmes

RSA

RSA (Rivest–Shamir–Adleman, 1977) a été l'algorithme par défaut des clés publiques sur Internet pendant des décennies. Sa sécurité repose sur la difficulté de factoriser des grands entiers, ce qui signifie que vous avez besoin de clés longues pour rester en sécurité — au minimum 2048 bits, idéalement 4096. Une clé publique RSA de 4096 bits est d'environ 800 octets. Chaque connexion implique des opérations sur ces grands nombres, ce qui est plus lent que les alternatives modernes.

L'argument principal en faveur du RSA est la compatibilité. Des serveurs SSH anciens, des équipements hérités, des appareils réseau propriétaires des années 2010 — tous utilisent le RSA. Si vous vous connectez à un système mis en place pendant la présidence d'Obama et jamais modifié depuis, le RSA pourrait être votre seule option.

ECDSA

ECDSA (Algorithme de signature numérique sur courbe elliptique) est arrivé comme une alternative plus rapide et plus petite au RSA. Une clé ECDSA de 256 bits offre une sécurité équivalente à une clé RSA de 3072 bits. Meilleure mathématique, clé plus petite, opérations plus rapides — cela semble être un gain.

Le problème est que OpenSSH utilise par défaut des courbes NIST (P-256, P-384, P-521). Ces courbes suscitent une préoccupation légitime. L'impliquation de NIST dans les normes de courbes elliptiques est historiquement problématique — l'agence a aidé à standardiser Dual_EC_DRBG, un générateur de nombres aléatoires influencé par l'NSA, découvert ultérieurement contenant une porte-voix. L'algorithme ECDSA n'est pas cassé, mais les constantes des courbes NIST ont des critères de conception obscurs. Personne ne peut prouver qu’elles n’ont pas été choisies pour donner un avantage asymétrique. La plupart des développeurs ne sont pas des cibles de l'NSA, mais il n’y a aucune raison de accepter « probablement acceptable » quand une option prouvée est disponible.

Ed25519

Ed25519 (EdDSA sur la courbe Curve25519) est celle que vous devriez utiliser. Elle a été conçue par Daniel J. Bernstein avec des critères de conception entièrement publics — les paramètres de la courbe sont dérivés de nombres « rien dans mon manteau », et non d’un processus opaque d’un comité.

Les chiffres pratiques : une clé publique Ed25519 est de 68 octets. La signature et la vérification sont plus rapides que les RSA et ECDSA. L'algorithme est immunisé aux attaques par timing par construction — aucune branche dépendante de secrets, aucune opération de temps variable. Le support a été intégré à OpenSSH 6.5 en 2014. GitHub, GitLab et Bitbucket l'ont tous soutenu depuis longtemps. Il n'y a aucun inconvénient par rapport à ECDSA et tous les avantages par rapport au RSA.

Comparaison côte à côte

PropriétéRSA (4096 bits)ECDSA (P-256)Ed25519
Taille de la clé publique~800 octets~200 octets68 octets
Sécurité équivalente~140 bits~128 bits~128 bits
Vitesse de signatureLentRapideTrès rapide
Immunisé aux attaques par timingNonNonOui (par conception)
Problèmes de confiance sur les courbesAucunCourbes NIST (contestées)Aucun (Curve25519)
Support OpenSSH depuisToujours5.7 (2011)6.5 (2014)
GitHub / GitLab / BitbucketOuiOuiOui

Comment générer chaque type

Le choix par défaut — utilisez cela :

ssh-keygen -t ed25519 -C "you@example.com"

Système hérité nécessite du RSA ? Utilisez au minimum 4096 bits :

ssh-keygen -t rsa -b 4096 -C "you@example.com"

ECDSA, si vous avez une raison spécifique de ne pas utiliser Ed25519 (vous n’avez probablement pas cette raison) :

ssh-keygen -t ecdsa -b 521 -C "you@example.com"

Si vous souhaitez une interface au lieu de mémoriser des flags, le Générateur de clés SSH sur IO Tools vous permet de choisir l'algorithme, la longueur en bits et les options de mot de passe sans toucher un terminal.

Cas où le RSA est effectivement nécessaire

Il existe des cas légitimes où Ed25519 n'est pas une option :

  • Daemons SSH antérieurs à 2014 — tout ce qui tourne avec OpenSSH antérieur à 6.5 ne reçoit pas Ed25519. Rare, mais réel : des systèmes embarqués, des appareils réseau, des anciens serveurs RHEL 6 qui n'ont jamais eu OpenSSH mis à jour.
  • Environnements FIPS-140-2 — les environnements fédéraux et certains environnements industriels réglementés exigent des algorithmes validés FIPS. Ed25519 n'est pas approuvé FIPS. Utilisez RSA-3072+ ou ECDSA avec P-384 dans ces environnements.
  • Politique d'entreprise SSH CA — certaines entreprises gèrent leurs propres autorités de certification SSH avec des exigences strictes sur les types de clés. Vérifiez avant de générer une clé qui sera rejetée lors de l'inscription.

En dehors de ces trois cas, l'argument en faveur du RSA est l'inertie, pas la qualité.

Le mot de passe que vous avez sauté

Quand ssh-keygen demande un mot de passe et vous appuyez sur Entrée pour le sauter, votre clé privée reste sur le disque en clair. Si quelqu’un obtient votre ordinateur, il obtient tout ce que cette clé peut accéder — chaque serveur, chaque hébergeur Git, chaque environnement de production. Ajoutez un mot de passe. Utilisez ssh-agent afin que vous ne le saisissez qu'une fois par session :

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Sur macOS, ajoutez --apple-use-keychain à ssh-add afin que le mot de passe survive les redémarrages. Sur Linux, la plupart des environnements de bureau lancent automatiquement ssh-agent — vérifiez avec echo $SSH_AUTH_SOCK.

Vous avez appuyé sur Entrée quatre fois sans avoir lu. Le prompt du mot de passe est celui qui vaut la peine de revenir.

Envie d'une expérience sans pub ? Passez à la version sans pub

Installez nos extensions

Ajoutez des outils IO à votre navigateur préféré pour un accès instantané et une recherche plus rapide

Sur Extension Chrome Sur Extension de bord Sur Extension Firefox Sur Extension de l'opéra

Le Tableau de Bord Est Arrivé !

Tableau de Bord est une façon amusante de suivre vos jeux, toutes les données sont stockées dans votre navigateur. D'autres fonctionnalités arrivent bientôt !

ANNONCE · Supprimer ?
ANNONCE · Supprimer ?
ANNONCE · Supprimer ?

Coin des nouvelles avec points forts techniques

Impliquez-vous

Aidez-nous à continuer à fournir des outils gratuits et précieux

Offre-moi un café
ANNONCE · Supprimer ?