Alors que les ordinateurs deviennent de plus en plus puissants avec le calcul distribué ou les processeurs quantiques, il est crucial d'utiliser des algorithmes robustes pour la génération des clés ssh.
L'algorithme le plus couramment utilisé de nos jours est certainement RSA. Mais à moins d'utiliser une clé d'une longueur supérieure à 2048 bits, la sécurité d'une clé RSA ne peux plus être garantie. C'est pourquoi il est conseillé d'utiliser l'algorithme EdDSA. Nous allons voir comment créer une paire de clés en utilisant l'implémentation Ed25519 qui garantit une bonne performance tout en étant beaucoup plus robuste que RSA.
L'algorithme Ed25519
Cet algorithme a été introduit avec la version 6.5 de OpenSSH sortie au mois de janvier 2014. Il est donc plus que probable que vous soyez en mesure de l'utiliser sur toutes vos machines.
Ed25519 est une implémentation de l'algorithme EdDSA utilisant une courbe elliptique d'Edwards. Cette méthode offre à la fois de meilleures performances que les algorithmes précédents, mais est également beaucoup plus robuste.
Ed25519 produit une clé publique compacte de seulement 68 caractères dont la génération est très rapide. La clé RSA quand à elle fait plus de 500 caractères et le temps de génération est assez élevé.
Génération de la paire de clés
Comme pour RSA, nous allons utiliser la commande ssh-keygen :
ssh-keygen -t ed25519 -C "<identifiant>"
Vous devez remplacer <identifiant> par une chaîne de caractères. Il est d'usage de mettre une adresse e-mail.
Le système vous demandera ensuite de donner le nom du fichier devant contenir la clé en vous proposant par défaut id_ed25519.
Vous pouvez également donner une phrase de passe afin de renforcer la sécurité de la clé.
Deux fichiers seront créés dans le dossier .ssh de votre dossier home :
/home/<user>/.ssh/id_ed25519 /home/<user>/.ssh/id_ed25519.pub
Le premier fichier sans extension est votre clé privée. Il faut ne faut la divulguer à personne.
Le fichier .pub est la clé publique correspondante, c'est celle-ci que vous allez pouvoir partager.
Voici un exemple du processus complet :
ssh-keygen -t ed25519 -C "Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. "
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_ed25519
Your public key has been saved in /home/user/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:XdO0KAqeoyALkIss3uRHy3KNd+yiV0p2/+5yJRJorPUCette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
The key's randomart image is:
+--[ED25519 256]--+
| . |
| . + . |
|o . . o + o |
|+. . o B + . |
|*... .+ S o . |
|+o+.o.+=.o E . . |
|.. +.*oo+o. . o |
| + .+o o . |
| .o .. *+ |
+----[SHA256]-----+
Clé publique
Voici à quoi ressemble la clé publique :
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIEbXxgd5i1DAPivIhfNnlxqNOBpU/LG4414C69psBubCette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
Clé privée
Et voici la clé privée :
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACCBG18YHeYtQwD4ryIXzZ5cajTgaVPyxuONeAuvabAbmwAAAJiSGVKUkhlS
lAAAAAtzc2gtZWQyNTUxOQAAACCBG18YHeYtQwD4ryIXzZ5cajTgaVPyxuONeAuvabAbmw
AAAEDxo6UheK7tby3JN8Rxg82rSmYScD9F5rAEWfigpV9niYEbXxgd5i1DAPivIhfNnlxq
NOBpU/LG4414C69psBubAAAAEXVzZXJAdGVjaG5vZmlsLmZyAQIDBA==
-----END OPENSSH PRIVATE KEY-----
Conclusion
Bien entendu, cette paire de clé exemple a été détruite, puisque elle est maintenant exposée au grand jour ;)