Tech Blog.

Thoughts, stories, ideas.

Yubikey configuration

14. October 2016

Les Yubikeys (fabricant Yubico) sont des jetons matériels bon marché pour l’authentification multifactorielle.
Outre les Yubikeys, Yubico produit également les YubiHSM, qui sont des modules Hmatériels Sde sécurité Mmodules. HSM sont utilisés pour stocker diverses clés privées x509 dans le matériel pour éviter qu’elles ne soient volées par un hacker.
En plus de Yubico, il y a aussi le fabricant Nitrokey, qui produit des jetons matériels ouverts et HSM.
Il existe actuellement deux produits de Yubico qui sont très bien adaptés à l’authentification à deux facteurs, car ils peuvent gérer la plupart des protocoles: D’une part le Yubikey 4 et d’autre part le Yubikey Neo.

Fonctionnalité

Les deux produits Yubikey 4 et Yubikey Neo ont chacun deux emplacements et une mémoire compatible PIV. Ces deux emplacements peuvent être utilisés pour différentes fonctions. Les éléments suivants sont pris en charge :

  • Secure static password
  • Yubico OTP
  • OATH – HOTP (basé sur le comptoir)
  • OATH – TOTP (basé sur le temps)
  • FIDO U2F
    Une explication plus détaillée de ces formats peut être trouvée dans notre dernier billet de blog.
    La mémoire compatible PIV peut être utilisée pour les deux fonctions suivantes :
  • PIV-Kompatible SmartCard (x509 certificats)
  • OpenPGP SmartCard

Comparez Yubikey 4 contre Yubikey Neo

Le Yubikey 4 est plus récent que le Yubikey Neo et possède en comparaison une mémoire SmartCard pour des clés RSA 4096 bits au lieu de seulement 2048 bits. D’autre part, il ne dispose pas de la fonctionnalité NFC requise pour l’authentification sur les téléphones mobiles.
Yubikey 4 est un matériel tellement nouveau que les distributions Linux actuelles, qui ne sont pas à la pointe du progrès, n’offrent pas encore d’outils de personnalisation. En retour, le Yubikey Neo est bien supporté par toutes les distributions actuelles.

Configuration

Pour configurer les Yubikeys, vous pouvez utiliser l’outil en ligne de commande ykpersonalize (Source Code, Debian Package,ArchLinux Packageorg/packages/community/x86_64/yubikey-personalization/))) et l’outil GUI yubikey-personalization-gui (Code source,Paquet Debian,Paquet ArchLinux). Les paquets de Debian Jessie sont trop vieux pour supporter Yubikey 4. Cependant, le Yubikey Neo fonctionne sans aucun problème.
Dans ce qui suit, nous allons travailler sur un ArchLinux avec un Yubikey 4. Cependant, si le logiciel le prend en charge, il doit être identique sur tous les systèmes, qu’il s’agisse de Yubikey 4 ou de Yubikey Neo.

udev

Pour pouvoir accéder aux Yubikeys depuis l’espace utilisateur, udev doit être adapté. Pour ce faire, un fichier est créé dans le répertoire /etc/udev/rules.d puis chargé via sudo udevadm control --reload. Ceci est seulement nécessaire pour charger le nouveau fichier de configuration sans redémarrer le système.
Les règles suivantes sont nécessaires pour que FIDO U2F fonctionne :

# FIDO U2F
ACTION!="add|change", GOTO="u2f_end"

# Yubico YubiKey
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0113|0114|0115|0116|0120|0402|0403|0405|0406|0407|0410", TAG+="uaccess"

# Happlink (formerly Plug-Up) Security KEY
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="f1d0", TAG+="uaccess"

#  Neowave Keydo and Keydo AES
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1e0d", ATTRS{idProduct}=="f1d0|f1ae", TAG+="uaccess"

# HyperSecu HyperFIDO
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="096e", ATTRS{idProduct}=="0880", TAG+="uaccess"

LABEL="u2f_end"

Si FIDO U2F ou la SmartCard ne fonctionne pas encore, vous devez vérifier si le numéro de fournisseur USB et l’ID produit sont présents dans la liste ci-dessus. L’identification du fournisseur et du produit à saisir peut être consultée à l’aide de la commande suivante:
lsusb | grep Yubico | awk '{print $6}'

Système préconfiguré pour SmartCard

Pour que GnuPG puisse communiquer avec une carte à puce, certaines conditions doivent être remplies. Tout d’abord, vous devez installer plusieurs paquets :

use-agent

Une configuration plus complète est montrée dans la configuration ci-dessous – ce n’est pas spécifique à la configuration de Yubikey dans cet article, mais un exemple d’une configuration GnuPG qui corrige quelques options importantes mais qui manquent.

keyserver hkp://pool.sks-keyservers.net
default-recipient-self
list-options show-uid-validity show-keyserver-urls
verify-options show-uid-validity
display-charset utf-8
utf8-strings
ask-cert-level
default-cert-level 0
keyid-format 0xLONG
use-agent
no-greeting
armor
fixed-list-mode
personal-digest-preferences SHA512 SHA384 SHA256 SHA224
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 BZIP2 ZLIB ZIP Uncompressed
cert-digest-algo SHA512
no-comments
no-emit-version

L’agent GnuPG peut également être configuré, par exemple l’agent SSH peut être remplacé par l’agent GnuPG. Cela signifie qu’en plus des clés créées spécifiquement pour SSH, la clé GnuPG peut également être utilisée dans la SmartCard.

# enable this if pinentry-gtk is installed
#pinentry-program /usr/bin/pinentry-gtk-2

default-cache-ttl 3600
max-cache-ttl 7200

# for ssh support
enable-ssh-support
default-cache-ttl-ssh 3600
max-cache-ttl-ssh 7200

Configurer les emplacements Yubikey

Avec ykinfo -a l’affectation actuelle des emplacements est émise. Les clés AES, par exemple, ne peuvent plus être lues, sinon la sécurité serait perdue.
Les Yubikeys ne sont pas préconfigurés par défaut pour U2F. Pour utiliser cette fonction, il faut changer de mode. Ceci est fait avec ykpersonalize -m86. Le Yubikey supporte alors Yubico OTP, FIDO U2F et CCID.

Yubico OTP

Lorsque les Yubikeys sont livrés, ils ont déjà une configuration OTP Yubico dans le premier emplacement. La clé AES correspondante est déjà stockée dans le YubicoCloud, ces serveurs de validation peuvent donc être utilisés immédiatement. Si vous voulez utiliser votre propre serveur de validation, la clé AES doit également y être stockée. Comme la clé AES ne peut plus être lue à partir de la Yubikey, l’emplacement doit être réécrit.
La configuration correspondante doit être créée avec l’outil ykksm-gen-keys, l’ID doit être unique. La sortie de l’outil ykksm-gen-keys est séparée par des virgules dans l’ordre suivant :

  • Numéro de série (aussi appelé ID)
  • Identité (aussi appelée nom public)
  • UID interne
  • AES Key (le vrai secret)
  • Verrouiller le mot de passe
  • Date de création
  • Dernier accès
  • Champs facultatifs

Exemple avec ID 1 :
Beispiel mit der ID 1:

$ ykksm-gen-keys 1
1,cccccccccccb,42e31d069785,cf00b1f4c2c80e395b5e7532a5929cba,d05f7e394f0e,2016-03-22T13:12:25,

Ces informations peuvent être écrites dans la Yubikey de l’emplacement 1 avec la commande suivante :

Exemple avec ID 1 :

$ ykpersonalize -1 -acf00b1f4c2c80e395b5e7532a5929cba -o fixed=cccccccccccb -o uid=42e31d069785

FIDO U2F

Pour que U2F fonctionne, Chrome ou Chromium est requis, ou Firefox nécessite l’extension u2f4moz. Le support natif dans Firefox est actuellement en cours.
La commande suivante peut être utilisée pour configurer U2F dans l’emplacement 2 :

$ ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

Ensuite, U2F est configuré dans l’emplacement 2 et la clé Yubikey peut être ajoutée et utilisée comme clé de sécurité, par exemple sur GitHub.

Validation de l’identité personnelle (SmartCard)

La carte à puce est contrôlée avec PKCS #11, comme c’est le cas avec les autres cartes à puce. Par exemple, si GnuPG doit communiquer avec la SmartCard, l’outil gpg est utilisé. L’interface de ligne de commande pour cela est accessible via gpg2 -card-edit. L’état est demandé via gpg2 -card-status. Si la requête d’état ne fonctionne qu’en tant qu’utilisateur root et non depuis l’espace utilisateur, les règles udev n’ont pas encore été chargées ou ajoutées correctement.