Avant propos

Dans cet article, je vais vous montrer comment vous authentifier à votre serveur SSH avec une clé FIDO2. J’ai récemment fait l’acquisition de 4 microcontrôleurs Raspberry Pico 2 afin de les convertir en tant que clés FIDO à pas cher. 2 sont au format USB A et 2 au format USB C. Je précise bien des Raspberry Pico 2 (RP2350) car ils disposent du Secure Boot et du Secure Lock ; ce qui n’est pas le cas des Pico première génération.

Création de notre clé FIDO2

Installation de pico-fido

  1. Prennez en main votre Pico, maintenez le bouton BOOT enfoncé et branchez-le à votre ordinateur
  2. Votre Pico devrait apparaître sur votre explorateur de fichiers. Si tel est le cas, vous pouvez relâcher le bouton. De même, vous pouvez monter le disque. Affichage du volume sur KDE
  3. Rendez-vous sur Pico Keys pour télécharger la version nécessaire pour votre Pico. Téléchargement de pico-fido
  4. Déplacez le .uf2 que vous venez de télécharger dans votre Pico. Il devrait redémarrer et clignoter en vert.
  5. Rendez-vous sur Pico Commissioner depuis un navigateur chromium afin de configurer votre pico-fido. Je vous recommande de prendre cette configuration. Une fois que vous avez choisi, cliquez sur “Commission via WebUSB”. Choisissez votre clé et cliquez sur Suivant. “Commissioned successfully!” devrait alors apparaître et votre Pico devrait clignoter en rouge. PS : J’ai réduit la puissance de la LED car de base elle flash les yeux. J’ai activé le Secure Boot et le Secure Lock. Je n’ai pas activé la courbe elliptique Secp256k1 car elle n’est pas supportée sur Android et j’utilise ce système. Enfin, j’ai appliqué le VID:PID de Yubico afin de pouvoir profiter de leur outil Yubico Authenticator que l’on utilisera juste après. Paramètres Pico Commissioner

Flash des paramètres de Pico Commissioner

PS : Si vous avez flash une mauvaise version du firmware, vous pouvez effacer tout le contenu de votre Pico avec pico-nuke

Configuration de notre clé sur Yubico Authenticator

  1. Installez le logiciel Yubico Authenticator sur votre machine. Un paquet sur AUR est disponible. Il porte le nom de yubico-authenticator-bin (on peut aussi configurer en cli avec ykman).
  2. Pour les utilisateurs sur Linux, veuillez activer le service pcscd avec la commande systemctl enable --now pcscd.service
  3. Ouvrez Yubico Authenticator. Vous pouvez renommer votre clé et changer la couler pour la différencier et retirer des services qui ne vous intéressent pas depuis le menu principal (je désactive personnellement la fonction Yubico OTP depuis l’outil “Parcourir applications”). Menu principal Yubico Authenticator
  4. Je vous recommande de vous rendre dans “Passkeys” et de cliquer sur “Définir PIN”. Après avoir appliqué cette fonction, vous seriez obligé de taper ce code PIN lorsque vous brancheriez votre Pico sur une machine pour accéder aux clés FIDO2.

Création de la clé ed25519-sk dans votre clé FIDO2

  1. Installez le paquet libfido2 sur votre machine
  2. Exécutez cette commande pour générer votre clé
ssh-keygen -t ed25519-sk -O resident -O verify-required -O application=ssh:prd-nginx-01 -O user=basile -C "Ceci est un commentaire" -f ~/.ssh/id_ed25519

Infos diverses :

  • -t ed25519-sk indique le format de clef basée sur les courbes elliptiques ed25519
  • -O resident permet de sauvegarder la clé privée dans la clé FIDO2
  • -O verify-required demande à l’utilisateur son code PIN et de toucher sa clé pour valider le login
  • -O application=ssh:nom de l’app permet d’indiquer des indentifiants différents pour chaque machine. Je recommande d’utiliser le hostname de votre serveur comme application
  • -O user=basile permet de générer plusieurs clés avec le même nom d’application
  • -C “Ceci est un commentaire” vous permet d’ajouter plus de précisions sur l’utilisation de la clé
  • -f ~/.ssh/id_ed25519 indique l’emplacement où doit être généré l’identification de la clé résidente Génération de la clé ed25519-sk
  1. Vérifiez que la clé est bien ajoutée à votre liste de clés FIDO2 en retournant sur Yubico Authenticator. Clé ed25519-sk sauvegardée sur Pico