Inventaire en lecture seule
Vérifier les interfaces USB/NFC, versions de firmware, capacités FIDO2, OTP, PIV et OpenPGP des deux clés sans modifier de slots.
Authentification matérielle et continuité
Une clé principale pour l'usage quotidien et une seconde clé pour la continuité. Cette page décrit une architecture cible et les vérifications en lecture seule, pas un état matériel en direct.
Schéma conceptuel public. Aucun numéro de série, code PIN/PUK, secret OTP, clé privée, certificat personnel, chemin d'escrow ou information de compte n'est publié. « Observé » signifie documenté lors d'une vérification antérieure, pas revérifié aujourd'hui.
Sélectionnez un nœud pour explorer son rôle. Les liens décrivent une fonction ou une dépendance, jamais une synchronisation automatique des secrets entre les deux clés.
La clé de secours exige son propre enrôlement auprès des services : il n'existe pas de copie automatique de ses clés privées.
Vérifier les interfaces USB/NFC, versions de firmware, capacités FIDO2, OTP, PIV et OpenPGP des deux clés sans modifier de slots.
Enregistrer les deux clés séparément sur chaque compte critique, garder une méthode de reprise indépendante et tester la connexion avec chacune.
Conserver une clé SSH matérielle de secours dédiée (ed25519-sk), vérifier le toucher et le code PIN et tester l'accès de manière non destructive.
Inventorier les emplacements (dont 9A et 82), vérifier les dates et la chaîne de confiance ; renouveler les certificats expirés seulement après sauvegarde et autorisation explicite.
Documenter l'usage d'OpenPGP et les interactions GPG-agent/pcscd ; différencier certificat PIV, sous-clé OpenPGP et clé SSH FIDO.
Conserver le défi-réponse historique comme mécanisme distinct de FIDO2. Vérifier le slot et l'application cliente sans divulguer ni reprogrammer le secret.
Produire deux archives age distinctes, valider empreintes et chemins de restauration sans secret dans les journaux ; bloquer la procédure si deux sauvegardes sont le même fichier.
Tester le déverrouillage avec la clé principale et le scénario de secours ; documenter les dépendances et la procédure de rotation après une perte.
Simuler la perte de la clé principale : comptes prioritaires, SSH, coffre, certificats, récupération des archives et journal de preuves expurgées.
Commandes indicatives pour un environnement déjà configuré. Les variables entre $ et les noms de machines sont des exemples. Aucune opération de provisionnement de la YubiKey n'est déclenchée par cette page.
Enrôler séparément les deux YubiKey sur GitHub, Cloudflare ou un fournisseur d'identité compatible. Tester ensuite chacune des clés.
Prérequis : Compte compatible WebAuthn, accès déjà rétabli et méthode de récupération indépendante.
Attention : Enregistrement depuis les paramètres de sécurité du service : ajouter une clé principale puis une clé de secours. Éviter toute dépendance à un seul appareil.
Référence : FIDO Alliance
Utiliser une identité matérielle ed25519-sk déjà enregistrée sur le serveur ; l'opération demande généralement le toucher de la clé et éventuellement un PIN.
Prérequis : OpenSSH avec prise en charge FIDO, clé publique déjà autorisée dans authorized_keys et méthode de secours SSH indépendante.
Attention : Ne pas remplacer la seule identité SSH fonctionnelle. La clé locale est un handle, pas une copie de la clé privée.
ssh -V
ssh -i ~/.ssh/id_ed25519_sk user@host.exampleRéférence : Yubico SSH FIDO2
Signer un commit avec une identité SSH matérielle dédiée, distincte de l'authentification SSH si possible.
Prérequis : Clé de signature ed25519-sk existante ; clé publique enregistrée comme clé de signature dans GitHub ; Git compatible.
Attention : Ces commandes modifient la configuration Git locale. Ne pas affirmer qu'un commit est Verified sans vérification côté forge.
git config --local gpg.format ssh
git config --local user.signingkey "$HOME/.ssh/id_ed25519_sk_git_signing.pub"
git config --local commit.gpgsign trueRéférence : Yubico Git FIDO2
Utiliser une sous-clé de signature OpenPGP présente dans la YubiKey ; git appelle gpg-agent et exige éventuellement toucher/PIN.
Prérequis : Sous-clé OpenPGP et gpg-agent opérationnels ; empreinte de clé publique vérifiée.
Attention : Ne pas confondre clé PIV, sous-clé OpenPGP et clé SSH FIDO. Aucun changement de PIN ou de sous-clé automatisé.
gpg --card-status
git config --local gpg.format openpgp
git config --local user.signingkey "$GPG_SIGNING_FINGERPRINT"
git config --local commit.gpgsign trueRéférence : GitHub signing commits
Stocker la configuration sensible chiffrée dans Git et l'injecter à la demande sans publier le clair. SOPS utilise un destinataire age, qui peut être logiciel ou fourni par un plugin YubiKey.
Prérequis : Fichier déjà chiffré, destinataire déclaré dans .sops.yaml, identité age accessible et commande de développement autorisée.
Attention : Ne jamais committer un fichier .env en clair ni afficher les variables en console. Une identité age logicielle n'est pas automatiquement protégée par la YubiKey.
sops edit config/dev.enc.yaml
sops exec-env config/dev.enc.yaml 'just dev-up'Référence : SOPS
Déchiffrer les secrets de développement avec une identité age déjà provisionnée dans une YubiKey, sans créer de fichier en clair. L’accès reste soumis au PIN/toucher configuré sur le matériel.
Prérequis : Identité age-plugin-yubikey existante, fichier d'identité accessible, plugin compatible installé, destinataire YubiKey déjà inscrit dans la politique SOPS et destinataire de secours indépendant.
Attention : L'exemple est une lecture et un lancement de processus, pas un provisioning PIV. La commande exec-env convient seulement aux secrets en valeurs scalaires de premier niveau ; ne jamais afficher l'environnement ou committer des secrets déchiffrés.
age-plugin-yubikey --list
SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/yubikey-identity.txt" \
sops exec-env config/dev.enc.yaml 'just dev-up'Référence : age-plugin-yubikey
Après une configuration autorisée du plugin age-plugin-yubikey, chiffrer pour un destinataire issu du matériel et déchiffrer à l'aide de l'identité de plugin.
Prérequis : Plugin installé, slot PIV prévu et validé, fichier d'identité du plugin sauvegardé, destinataire vérifié et politique de reprise indépendante.
Attention : La génération initiale de l'identité peut modifier le slot PIV : ne pas l'exécuter sans validation. Une identité sur clé USB n'est pas une clé privée PIV résidente.
age-plugin-yubikey --list
age -r "$AGE_YUBIKEY_RECIPIENT" -o artifact.age artifact.txt
age -d -i "$AGE_YUBIKEY_IDENTITY_FILE" artifact.age | sha256sumRéférence : age-plugin-yubikey
Chiffrer un dump PostgreSQL sans créer de fichier intermédiaire en clair. Destiner le flux à plusieurs clés de reprise indépendantes.
Prérequis : Droits pg_dump limités, destinataires age validés dans recipients.txt, destination de backup sécurisée et test de restauration planifié.
Attention : Le listing ne remplace pas une restauration réelle isolée. Utiliser des destinataires indépendants et contrôler le code de retour de chaque étape.
set -o pipefail
pg_dump -Fc --no-owner "$PGDATABASE" | age -R recipients.txt -o postgres.dump.age
age -d -i "$AGE_IDENTITY_FILE" postgres.dump.age | pg_restore --listRéférence : PostgreSQL pg_dump
Apposer une signature détachée sur une sauvegarde déjà chiffrée afin de contrôler l'origine et l'intégrité avant restauration.
Prérequis : Sous-clé GPG de signature accessible sur YubiKey, fichier postgres.dump.age déjà produit et copie fiable de la clé publique.
Attention : La signature ne chiffre pas le backup. Valider l'empreinte du signataire et vérifier avant toute restauration.
gpg --local-user "$GPG_SIGNING_FINGERPRINT" --detach-sign --armor --output postgres.dump.age.asc postgres.dump.age
gpg --verify postgres.dump.age.asc postgres.dump.ageRéférence : GnuPG
Inspecter le certificat d'authentification PIV (slot 9a), son expiration, son émetteur et les usages autorisés. Pour l'usage client TLS, configurer le middleware PKCS#11.
Prérequis : YubiKey accessible, ykman installé, certificat existant ; chaîne d'autorité de certification approuvée.
Attention : L'export ne contient que le certificat public, mais peut révéler une identité personnelle. Ne pas publier dans Git ; ne pas régénérer les clés en diagnostic.
ykman piv info
ykman piv certificates export 9a auth-public.pem
openssl x509 -in auth-public.pem -noout -subject -issuer -datesRéférence : Yubico PIV
Activer WebAuthn/FIDO2 pour la connexion au coffre, puis enregistrer la seconde clé séparément et vérifier les codes de récupération hors ligne.
Prérequis : Instance et client compatibles, session de secours, code de récupération conservé hors ligne.
Attention : Dans les paramètres du compte, activer la connexion en deux étapes WebAuthn puis enregistrer et tester les deux clés.
Référence : Bitwarden two-step login
Faire protéger l'accès humain à HashiCorp Vault par un fournisseur OIDC qui impose FIDO2/WebAuthn ; Vault peut également appliquer sa propre MFA selon les méthodes prises en charge.
Prérequis : Méthode OIDC configurée dans Vault et MFA imposée en amont par l'IdP.
Attention : Vault ne prend pas automatiquement WebAuthn en MFA native. Ne pas confondre MFA du fournisseur d'identité et politique MFA interne à Vault.
vault login -method=oidcRéférence : HashiCorp Vault MFA
Associer une base KeePassXC au mécanisme HMAC-SHA1 du slot OTP de la YubiKey. Prévoir la reprise indépendamment de la clé principale.
Prérequis : Slot défi-réponse existant, KeePassXC compatible, copie de test de la base et procédure de reprise validée.
Attention : Ne jamais reprogrammer le slot OTP sans sauvegarde du secret. Deux clés distinctes ne déverrouillent pas automatiquement la même base.
Référence : KeePassXC
Conserver les secrets OATH-TOTP dans la YubiKey et afficher les codes via Yubico Authenticator, si le service ne prend pas WebAuthn en charge.
Prérequis : Application OATH configurée, service compatible TOTP et méthode de secours.
Attention : Le TOTP est moins résistant à l'hameçonnage que WebAuthn. OATH-TOTP et le slot OTP HMAC-SHA1 KeePassXC sont deux applications différentes.
Référence : Yubico Authenticator
Les sigles employés dans le graphe et dans le plan.
Fast IDentity Online 2
Standard d'authentification forte avec clé matérielle, notamment pour l'accès sans mot de passe.
Web Authentication
API Web utilisée pour enregistrer puis authentifier une clé de sécurité.
Client to Authenticator Protocol
Protocole entre navigateur/système et authentificateur matériel.
Secure Shell
Protocole d'accès distant ; la variante -sk emploie un authentificateur FIDO.
Personal Identity Verification
Application de carte à puce pour les certificats et opérations cryptographiques.
Public-Key Cryptography Standards #11
Interface standard pour accéder aux objets cryptographiques d'un module ou d'une carte.
GNU Privacy Guard
Logiciel pour gérer les clés et les signatures OpenPGP.
Open Pretty Good Privacy
Standard ouvert de chiffrement et de signature des données.
One-Time Password
Mot de passe à usage unique ; ne pas confondre avec WebAuthn.
Hash-based Message Authentication Code
Code d'authentification calculé à partir d'une clé secrète et d'une fonction de hachage.
Secure Hash Algorithm 1
Fonction de hachage historique utilisée par certains modes défi-réponse ; ne pas généraliser cet usage à la signature moderne.
Near Field Communication
Communication radio courte portée avec un téléphone ou un lecteur compatible.
Personal Identification Number
Code personnel de déverrouillage de la clé.
PIN Unblocking Key
Code de déblocage du PIN de l'application PIV, à conserver hors ligne.
Certificate Authority
Autorité de certification qui émet ou signe des certificats.
age encryption tool
Outil de chiffrement de fichiers utilisé pour les sauvegardes chiffrées.
Multi-Factor Authentication
Authentification multifacteur : au moins deux facteurs indépendants, par exemple mot de passe et clé matérielle.
Secrets OPerationS
Outil d'édition et de chiffrement des secrets structurés, notamment avec age.
OpenID Connect
Protocole d'identité sur OAuth 2.0 utilisé notamment pour la connexion fédérée à Vault.
Identity Provider
Fournisseur d'identité qui authentifie l'utilisateur et applique éventuellement WebAuthn.
Initiative for Open Authentication
Famille de standards pour les codes de vérification, distincte de l'application OTP défi-réponse.
Time-based One-Time Password
Code temporaire fondé sur le temps, généralement à six chiffres.
Transport Layer Security
Protocole de protection des connexions réseau ; peut utiliser un certificat client.
ITU-T X.509
Norme de format et de validation de certificats à clé publique.
Structured Query Language
Langage de bases de données utilisé notamment par PostgreSQL.
Documentation de référence: Yubico · FIDO Alliance · age