Clés SSH RSA ou ed25519 : laquelle choisir ?

Utilisez ed25519 pour toute nouvelle clé. Il offre à peu près la même sécurité que RSA 3072 avec une clé bien plus courte, et toutes les versions d'OpenSSH depuis la 6.5, parue en 2014, le gèrent. Utilisez RSA, avec au moins 3072 bits, uniquement quand un serveur ou un équipement n'accepte pas ed25519. Une clé RSA existante de 3072 ou 4096 bits reste tout à fait correcte : rien ne presse de la remplacer.

Mis à jour le . La génération de clés, les tailles et les options héritées ont été exécutées avec OpenSSH 10.0 sur Debian 13, sur un serveur de test limité à l'ancien algorithme ssh-rsa.

La comparaison

Ed25519RSA 3072RSA 4096
Sécurité estiméeEnviron 128 bits128 bitsEntre 128 et 192 bits
Fichier de clé publique92 octets564 octets736 octets
Fichier de clé privée, sans phrase secrète399 octets2590 octets3369 octets
Choix de la tailleAucun, toujours 256 bitsRéglée avec -bRéglée avec -b
Prérequis de l'autre côtéOpenSSH 6.5 ou plus récentPresque tout serveur SSHPresque tout serveur SSH

Les tailles de fichiers viennent de clés que nous avons générées avec le commentaire you@laptop. Les estimations de sécurité viennent de la RFC 8032 pour ed25519 et de NIST SP 800-57 pour RSA.

Ce qui compte vraiment

  • Moins de choix où se tromper. Une clé ed25519 n'a qu'une taille : personne ne peut en créer une faible par accident. ssh-keygen ignore -b pour ce type : nous avons demandé 4096 et obtenu 256.
  • Des clés publiques courtes. Une seule ligne, qui tient dans un message ou un fichier de configuration sans être coupée.
  • La protection du fichier. Une clé sans phrase secrète sur un portable volé est exposée, quel que soit son type. Cela compte bien plus que la différence entre les deux algorithmes.

Pour garder chaque clé et sa phrase de passe au même endroit, voyez le gestionnaire de clés SSH avec coffre chiffré.

Générer chaque type

ssh-keygen -t ed25519 -C "you@laptop"
ssh-keygen -t rsa -b 4096 -C "you@laptop"

Sans -b, les clés RSA font 3072 bits, valeur par défaut depuis OpenSSH 8.0. Depuis OpenSSH 9.5, ssh-keygen sans -t crée une clé ed25519. Voir comment générer une clé ed25519 pour toutes les étapes.

Tailles des clés RSA

  • Moins de 1024 bits : ssh-keygen refuse avec Invalid RSA key length: minimum is 1024 bits.
  • 1024 bits : à éviter. On peut encore la générer, mais un serveur dont RequiredRSASize est plus élevé la refuse. Ce réglage existe depuis OpenSSH 9.1 et vaut 1024 par défaut.
  • 2048 bits : le NIST l'évalue à 112 bits de sécurité. Elle fonctionne, mais c'est l'ancien minimum : remplacez-la à votre prochaine rotation de clés.
  • 3072 ou 4096 bits : choisissez l'une de ces tailles si vous avez besoin de RSA.

Quand RSA reste le bon choix

  • Un serveur fait tourner un OpenSSH antérieur à la 6.5.
  • Un vieil équipement réseau, une appliance ou un système embarqué n'indique que des clés RSA dans sa documentation.
  • Une règle de conformité ou un système en mode FIPS limite les types de clés utilisables. Vérifiez la liste auprès de votre fournisseur.

Vous pouvez garder une clé de chaque type et n'utiliser RSA que pour les hôtes qui en ont besoin :

Host old-server
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes

Se connecter à de vieux systèmes

Une clé RSA n'est pas la même chose que la signature qu'on fait avec elle. Depuis OpenSSH 8.8, le client n'utilise plus l'ancienne signature ssh-rsa, qui repose sur SHA-1, sauf si vous le demandez. Le même fichier de clé fonctionne toujours avec les signatures plus récentes rsa-sha2-256 et rsa-sha2-512, gérées par OpenSSH depuis la 7.2.

Un serveur qui ne connaît que l'ancien algorithme produit cette erreur :

Unable to negotiate with 203.0.113.10 port 22: no matching host key type found. Their offer: ssh-rsa

Pour cet hôte seulement, et uniquement si vous ne pouvez pas le mettre à jour, réactivez l'ancien algorithme :

ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa user@old-server

Cela affaiblit la connexion : ne le mettez pas sous Host *. Une nouvelle clé RSA n'y change rien, car le problème vient de la signature et non de la clé. Voir aussi no mutual signature supported et no matching key exchange.

DSA et ECDSA

DSA a disparu : OpenSSH 10.0 l'a supprimé, et ssh-keygen -t dsa répond désormais unknown key type dsa. Remplacez toute clé DSA qu'il vous reste. ECDSA fonctionne et il est très répandu, mais il n'offre aucun avantage sur ed25519 sauf si un système l'impose.

Vérifier les clés que vous avez

for f in ~/.ssh/*.pub; do ssh-keygen -lf "$f"; done

Le premier nombre est la taille et le dernier mot est le type, par exemple 3072 SHA256:... you@laptop (RSA).

Questions

RSA 4096 est-il plus fort qu'ed25519 ?

Sur le papier, son estimation de sécurité est un peu plus haute, mais les deux sont bien au-delà de ce qu'on sait attaquer aujourd'hui : ce n'est donc pas une raison de le choisir. Le risque pratique est le vol du fichier de la clé privée, et une phrase secrète aide dans les deux cas.

Puis-je convertir une clé RSA en ed25519 ?

Non. Ce sont deux types de clés différents. Générez une nouvelle clé ed25519, ajoutez sa clé publique à vos serveurs, testez la connexion, puis retirez l'ancienne clé publique.

Un ordinateur quantique change-t-il le choix ?

Non, pas entre ces deux-là : un ordinateur quantique assez puissant casserait les deux. OpenSSH 10.6 active un type de clé hybride post-quantique, créé avec ssh-keygen -t mldsa44-ed25519, mais il faut la 10.6 ou plus récente des deux côtés. Pour l'échange de clés, voir le guide sur l'avertissement post-quantique.

Sources

Autres guides : Clés et connexion

Tous les guides