Essai 11 / Numérique

[YubiKey - OpenPGP] Un jeton n’est pas le secret

Utilisez un token matériel pour les opérations OpenPGP quotidiennes, conservez une sauvegarde testée et prévoyez la récupération des comptes avant de perdre le dispositif.

Cette édition traduite est en attente d’une révision éditoriale par une personne de langue maternelle.

Une armoire à outils partagée ouverte, avec des outils à main usagés, des étiquettes de prêt vierges, un crochet vide et du matériel d’entretien.
L’accès partagé repose sur un entretien partagé. Une scène illustrative originale.

Un token matériel OpenPGP protège les sous-clés privées lors de leur usage quotidien. La signature, le déchiffrement et l’authentification s’effectuent sur le dispositif, qui ne permet pas d’exporter les clés privées. Si vous le perdez, la restauration dépend d’une sauvegarde faite avant l’importation des clés ou d’un autre dispositif contenant ces mêmes clés.

Cet article traite des sous-clés OpenPGP sur YubiKey. Conservez la clé principale de certification hors ligne, comme décrit dans Garder le secret hors de la machine. Générez et sauvegardez les sous-clés opérationnelles avant de les transférer sur la carte. Les clés générées directement sur la carte ne peuvent pas être sauvegardées dans des fichiers.

Configurez la carte avant d’importer des clés. Changez le PIN utilisateur OpenPGP d’usine (123456) et le PIN administrateur (12345678), puis définissez un code de réinitialisation. Saisissez les identifiants aux invites interactives. ykman openpgp reset et ykman piv reset effacent l’application correspondante, y compris les clés stockées ; ces opérations servent au rétablissement ou au reprovisionnement, pas à l’initialisation courante.

Bases · Distinguer protection des clés et restauration

L’ordinateur demande une opération à la carte au lieu de lire sa clé privée. Le PIN autorise l’accès. Une politique de toucher impose une interaction physique pour utiliser la clé ; elle ne permet pas de savoir si l’opération demandée est légitime.

Ni le PIN ni le toucher ne permettent une restauration. Sans sauvegarde de la clé privée de chiffrement, la perte de la carte peut rendre les données existantes illisibles. Une clé principale hors ligne permet de créer des sous-clés de remplacement, mais pas de reconstruire une clé privée de chiffrement perdue.

Identifier l’application utilisée

Une YubiKey peut prendre en charge plusieurs applications, selon le modèle. Leurs identifiants et procédures de restauration sont distincts :

YubiKey
├── OpenPGP
│   ├── User PIN
│   ├── Reset Code
│   └── Admin PIN
├── PIV
│   ├── PIN
│   ├── PUK
│   └── Management Key
├── FIDO2
├── OATH
└── OTP
  • OpenPGP : signature, déchiffrement et authentification via GnuPG.
  • PIV : authentification par certificats, avec son propre PIN, PUK et sa clé de gestion.
  • FIDO2 / U2F : authentification auprès de sites et services compatibles. Le rétablissement dépend des identifiants et méthodes de récupération enregistrés auprès de chaque service.

Un token limité à FIDO ne peut pas contenir ces sous-clés OpenPGP. Inspectez l’application OpenPGP pour vérifier où se trouve votre clé de signature :

gpg --card-status
gpg --list-secret-keys --fingerprint

ssb> indique que GnuPG référence une sous-clé sur carte. ssb indique que les données privées de la sous-clé sont disponibles localement. La référence décrit ce trousseau ; elle ne prouve pas l’absence d’une sauvegarde ou d’une autre copie locale.

Expert · Inspecter le dispositif et configurer l’accès

Inspectez le dispositif avant de modifier sa configuration. Notez son modèle, son numéro de série, son micrologiciel et les algorithmes pris en charge. Vérifiez la compatibilité des sous-clés choisies :

ykman list
ykman info
ykman openpgp info
ykman piv info
gpg --card-status

Le PIN utilisateur OpenPGP autorise l’usage des clés. Le PIN administrateur contrôle les opérations de gestion. Le code de réinitialisation peut débloquer le PIN utilisateur. Changez les identifiants dans le menu interactif de GnuPG :

gpg --card-edit
gpg/card> admin
gpg/card> passwd
1 - change PIN
2 - unblock PIN
3 - change Admin PIN
4 - set the Reset Code

Définissez les limites de tentatives selon vos besoins. Sur YubiKey NEO, leur modification remet les PIN aux valeurs d’usine ; changez de nouveau ces PIN ensuite. Référence API Yubico. Cet exemple autorise cinq tentatives pour le PIN utilisateur, trois pour le code de réinitialisation et six pour le PIN administrateur. Vérifiez les compteurs affichés :

ykman openpgp access set-retries 5 3 6
ykman openpgp info
gpg --card-status

L’ordre attendu est PIN utilisateur / code de réinitialisation / PIN administrateur : 5 3 6. Un PIN utilisateur bloqué peut être réinitialisé avec l’identifiant de récupération approprié. Si l’accès administrateur est bloqué et que l’application doit être réinitialisée, les clés stockées sont effacées.

Exigez un toucher pour signer, déchiffrer et s’authentifier. Utilisez on pour garder la politique configurable. Vérifiez le nom du slot de chiffrement accepté par votre version de ykman : dec ou enc. Réappliquez et vérifiez les politiques après l’importation des clés. Référence OpenPGP de YubiKey Manager.

ykman openpgp keys set-touch sig on
ykman openpgp keys set-touch dec on
ykman openpgp keys set-touch aut on
ykman openpgp info

Si vous utilisez aussi PIV, configurez-le séparément. Son PIN d’usine est 123456 et son PUK 12345678 ; changez-les ainsi que la clé de gestion par défaut. Modifier les limites de tentatives PIV remet le PIN et le PUK aux valeurs d’usine : définissez donc ces limites en premier.

Pour la clé de gestion PIV, conservez une clé aléatoire en lieu sûr hors du dispositif avec un algorithme compatible avec son micrologiciel, ou utilisez ykman piv access change-management-key --protect pour générer et stocker une clé protégée par le PIN sur le dispositif. Ces options gèrent l’accès PIV ; aucune ne sauvegarde les clés OpenPGP. Référence PIV de YubiKey Manager.

ykman info
ykman openpgp info
ykman piv info
gpg --card-status

Tester la sauvegarde avant de transférer les sous-clés

Une carte ne peut pas exporter une clé privée OpenPGP importée. Effectuez ces étapes avant d’en dépendre :

  1. Exportez les données privées de la clé principale et des sous-clés sur un support chiffré.
  2. Restaurez la sauvegarde dans un trousseau distinct de confiance et testez les opérations nécessaires. Un trousseau dans /dev/shm ne rend pas à lui seul l’ordinateur hors ligne et n’empêche pas le swap.
  3. Configurez les identifiants et limites de tentatives de la carte.
  4. Transférez les sous-clés opérationnelles avec keytocard.
  5. Réappliquez les politiques de toucher. Vérifiez sec# et ssb> dans le trousseau quotidien.
  6. Testez la carte, puis déconnectez-la et testez la restauration depuis la sauvegarde ou une seconde carte provisionnée.

Rangez la sauvegarde chiffrée séparément du token. Sans procédure de restauration testée, le token reste un point de défaillance unique.

Expert · Transférer chaque sous-clé dans le slot correspondant

Utilisez l’empreinte complète de votre clé principale. Vérifiez l’ordre réel des sous-clés avant de sélectionner un numéro. Travaillez depuis un trousseau contenant uniquement les sous-clés privées pour garder la clé principale hors ligne. N’écrasez pas les slots existants sauf si leur remplacement est prévu et restaurable.

gpg --edit-key E6B0933DD47E3B2F823334F0A567B3B17C27BF6D
gpg> key 1
gpg> keytocard
Please select where to store the key:
   (1) Signature key
   (3) Authentication key
Your selection? 1

key N active ou désactive la sélection. Désélectionnez la sous-clé courante avant de sélectionner la suivante. Transférez la sous-clé de signature dans le slot de signature, celle de chiffrement dans le slot de déchiffrement et celle d’authentification dans le slot d’authentification. Vérifiez chaque sélection et terminez par save.

Réappliquez les politiques de toucher et inspectez la carte :

ykman openpgp keys set-touch sig on
ykman openpgp keys set-touch dec on
ykman openpgp keys set-touch aut on
ykman openpgp info
gpg --card-status

Le trousseau quotidien doit afficher une clé principale indisponible et des sous-clés sur carte. Cette sortie est illustrative :

sec#  rsa8192/A567B3B17C27BF6D  created: 2020-01-12  expires: never
ssb>  rsa4096/51D88833772723AD  created: 2020-01-12  expires: 2030-01-12
                                card-no: 0000 00000000
ssb>  rsa4096/8C7587C86EAC2F2F  created: 2020-01-12  expires: 2030-01-12
                                card-no: 0000 00000000
ssb>  rsa4096/D13AE6B65E8BE723  created: 2020-01-12  expires: 2030-01-12
                                card-no: 0000 00000000

Avec la carte connectée, signez, chiffrez et déchiffrez un fichier de test non sensible. Remplacez le destinataire par votre propre identité de test :

gpg --encrypt --sign --armor -r something@something message.txt
gpg --decrypt message.txt.asc

Si vous utilisez la sous-clé d’authentification, testez-la avec un compte isolé. Déconnectez ensuite la carte d’origine. Sur une autre machine de confiance ou dans un trousseau isolé, importez la sauvegarde et répétez la signature et le déchiffrement du même fichier. Vérifiez la signature et le contenu restauré. Si la restauration utilise une seconde carte, testez-la avec la première déconnectée.

Prévoir la récupération de chaque application

Gardez la sauvegarde principale et les certificats de révocation accessibles sans le token quotidien. En cas de perte, révoquez les sous-clés OpenPGP concernées selon la situation et distribuez le certificat public actualisé. Une sous-clé de remplacement permet de reprendre les usages futurs ; seule l’ancienne clé privée de chiffrement peut déchiffrer les données qui lui étaient destinées.

Pour les comptes FIDO, enregistrez un second authentificateur ou une autre méthode de récupération prise en charge avant de perdre le premier. Enregistrez le dispositif de secours séparément auprès de chaque service. Y copier des sous-clés OpenPGP ne duplique pas les identifiants FIDO. Vérifiez séparément la récupération du registraire, de la messagerie et de l’hébergeur Git.

L’authentification FIDO résiste à l’hameçonnage grâce à son association au service. L’authentification OpenPGP et la confirmation par toucher n’offrent pas cette même propriété. La récupération par SMS peut être vulnérable au détournement de compte et de carte SIM ; privilégiez un authentificateur de secours ou des codes de récupération hors ligne lorsqu’ils sont disponibles.

Intermédiaire · Commencer par les fonctions nécessaires

Il n’est pas nécessaire d’utiliser toutes les applications immédiatement. Commencez par FIDO pour les comptes web importants et enregistrez un dispositif de secours. Ajoutez OpenPGP si vous avez besoin de ses fonctions de signature, chiffrement ou authentification. Avant de transférer des clés existantes, vérifiez les algorithmes pris en charge et la restauration des sauvegardes. Configurez PIV pour un besoin précis d’authentification par certificats.

Vérifier la restauration sans le token d’origine

Déconnectez le token quotidien. Vérifiez que la sauvegarde documentée peut déchiffrer un fichier de test existant et produire une signature valide. Vérifiez qu’un authentificateur enregistré séparément ou une méthode de récupération permet de rétablir l’accès à chaque compte important. Documentez les étapes et répétez les tests après toute modification des clés ou identifiants.

Essai suivant →Retour au début ↑