La comparaison
| Ed25519 | RSA 3072 | RSA 4096 | |
|---|---|---|---|
| Sécurité estimée | Environ 128 bits | 128 bits | Entre 128 et 192 bits |
| Fichier de clé publique | 92 octets | 564 octets | 736 octets |
| Fichier de clé privée, sans phrase secrète | 399 octets | 2590 octets | 3369 octets |
| Choix de la taille | Aucun, toujours 256 bits | Réglée avec -b | Réglée avec -b |
| Prérequis de l'autre côté | OpenSSH 6.5 ou plus récent | Presque tout serveur SSH | Presque 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-keygenignore-bpour 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-keygenrefuse avecInvalid RSA key length: minimum is 1024 bits. - 1024 bits : à éviter. On peut encore la générer, mais un serveur dont
RequiredRSASizeest 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
- ssh-keygen(1), manuel OpenBSD
- Notes de version d'OpenSSH 8.8
- Notes de version d'OpenSSH
- RFC 8032, EdDSA
- NIST SP 800-57 Part 1 Rev. 5