Les clés YubiKey de la série 5 (et 4) proposent l’application OATH qui permet de générer des jetons de type HTOP ou HTOP

Ces jetons sont souvent utilisés comme second facteur d’authentification avec une application mobile, la plus connue étant Google Authenticator (les alternatives recommandées sont Aegis Authenticator pour Android et Tofu pour iOS).

L’avantage d’utiliser une clé YubiKey est que les paramètres permettant de générer un jeton seront stockés sur la clé et pourront ainsi être utilisés sur n’importe quelle plateforme en utilisant la clé et l’application Yubico Authenticator, disponible sur Windows, macOS, Linux, Android et iOS.
Il est également possible d’utiliser la commande ykman oath en ligne de commande.

Afin de vérifier que l’application est bien activée sur votre clé vous pouvez utilisez la commande suivante :

ykman oath info

Pour ajouter un nouvel identifant HOTP ou TOTP à la clé il est possible d’utiliser la commande ykman :

ykman oath add --oath-type [TOTP|HOTP] --digits [6|7|8] --algorithm [SHA1|SHA256|SHA512] --issuer TEXT --period INTEGER NAME

En général les options --oath-type, --digits, --algorithm et --period ne sont pas nécessaires, les valeurs par défaut étant celles généralement utilisées par la plupart des sites proposant ce type de facteur d’authentification.
Sur la trentaine de codes que j’ai ils utilisent tous sans exception ces paramètres (GitHub, GitLab, Dropbox ou encore Twitter).
Le paramètre --issuer permet d’indiquer le service (par exemple Dropbox ou GitHub) et l’argument NAME permet de préciser le compte (par exemple Dropbox:<EMAIL>).

La commande vous demandera alors le secret qui sera utilisé comme paramètre de génération des jetons (il est également possible de préciser le secret en tant que dernier argument de la commande mais cela exposera votre secret dans l’historique du shell).

N’oubliez pas d’ajouter l’identifiant sur votre seconde clé YubiKey, voire sur une application mentionnée précédemment.

Il est important de noter que l’un des inconvénients d’utiliser les clés YubiKey est qu’il est impossible d’extraire par la suite les informations. Si vous perdez l’une de vos clés vous ne pourrez pas par la suite les ajouter à une nouvelle clé.

L’une des solutions possibles est d’ajouter également ces clés à une application permettant d’exporter les identifiants.
C’est le cas de Aegis Authenticator par exemple, qui permet de faire un export chiffré de sa base de données et qui propose un script Python pour déchiffrer ensuite cette base, ce qui vous offre également la possibilé de sauvegarder vos identifiants OATH OTP (Tofu sur iOS ne propose malheureusement pas encore d’export).

Vous pouvez aussi ajouter les informations à votre gestionnaire de mots de passe (1Password le propose, ou bien vous pouvez sauvegarder le QR code sous forme d’image).
Personnellement je ne recommande pas cette solution, cela réduisant la sécurité de vos comptes, vos mots de passe et vos seconds facteurs d’authentification étant stockés au même endroit.

Une autre information importante à noter est que les clés YubiKey 5 peuvent seulement stocker 32 identifiants OATH OTP.
C’est généralement suffisant mais il reste possible d’atteindre cette limite.

Une fois les identifiants ajoutés à votre clé vous pouvez les lister :

ykman oath list

Et bien entendu vous pouvez générer un code :

ykman oath code

Cela affichera les codes pour tous les identifiants stockés sur la clé.

Vous pouvez bien sûr restreindre afin de n’afficher le code que pour un service, par exemple Dropbox :

ykman oath code dropbox

Enfin vous pouvez bien sûr supprimer un identifiant :

ykman oath delete dropbox

Ou tout supprimer et réinitialiser la configuration de l’application OATH :

ykman oath reset

Enfin il est également possible d’ajouter un niveau de protection en demandant la saisie d’un mot de passe pour accéder aux identifiants :

ykman oath set-password (--remember)

L’option --remember permet de retenir le mot de passe sur la machine afin de ne pas avoir besoin de le saisir tout le temps.