
2FA avancé : TOTP, FIDO2, clés de secours — Guide complet
Implémentation complète du 2FA sur Google, GitHub et Discord. TOTP vs FIDO2, backup chiffré, révocation, CLI GitHub et politiques d'équipe.
2FA avancé : TOTP, FIDO2, clés de secours
Ce guide couvre l'implémentation complète de l'authentification à deux facteurs sur les trois plateformes les plus critiques en environnement de développement et de production. On va au-delà du simple scan de QR code : gestion des seeds TOTP, rotation des clés, politiques GitHub pour les organisations, et intégration des passkeys FIDO2.
Choix de la méthode 2FA
Il existe plusieurs mécanismes de second facteur, avec des compromis très différents :
| Méthode | Résistance au phishing | Récupération | Complexité |
|—-|—-|—-|—-|
| SMS | Faible (SIM swap) | Facile | Aucune |
| TOTP (app) | Moyenne | Moyenne (backup chiffré) | Faible |
| FIDO2/WebAuthn | Très haute | Difficile sans backup | Moyenne |
| Passkey | Très haute | Via plateforme | Faible |
Recommandation 2026 : FIDO2 en primary sur les services qui le supportent (GitHub, Google), TOTP en fallback obligatoire. Ne jamais utiliser SMS seul.
—-
Outillage recommandé
Applications TOTP
Aegis Authenticator (Android) est la référence open-source :
- Chiffrement AES-256 des seeds au repos
- Export chiffré complet (format JSON documenté)
- Backup automatique vers dossier configurable
- Code source audité : https://github.com/beemdevelopment/Aegis
Raivo OTP (iOS) : alternative sérieuse, synchro iCloud optionnelle.
Itsme / Bitwarden Authenticator : si tu gères déjà Bitwarden, son module TOTP intégré (offre Premium) centralise tout.
Clés physiques FIDO2
YubiKey 5 Series (NFC recommandé) ou OnlyKey pour les environnements haute sécurité. Google Titan Key comme alternative. Budget : 50 à 80 €.
—-
Google : activation TOTP + passkey
Activer TOTP via l'interface
- Connecte-toi à myaccount.google.com/security
- Section Validation en deux étapes > Commencer
- Sélectionne Application d'authentification (ignore les propositions Google Prompt)
- Scanne le QR code avec Aegis ou extrait le secret en texte pour stockage manuel
- Valide avec un code TOTP généré
Extraire et stocker le seed TOTP manuellement
Lors de l'affichage du QR code, Google propose toujours un lien *"Je ne peux pas le scanner"* qui révèle la clé secrète en base32. Cette clé, c'est ce qu'Aegis stocke en interne. Tu peux la sauvegarder dans un coffre-fort comme KeePassXC directement dans le champ TOTP :
## Générer un code TOTP depuis la ligne de commande avec oathtool
oathtool —base32 —totp "JBSWY3DPEHPK3PXP"
## Remplace par ta vraie clé secrète base32Installer oathtool :
## Debian/Ubuntu
apt install oathtool
## macOS
brew install oath-toolkitCodes de secours Google
Google génère 10 codes à usage unique. Les télécharger et les chiffrer immédiatement :
## Chiffrer les codes de secours avec GPG
gpg —symmetric —cipher-algo AES256 google-backup-codes.txt
## Entrer une passphrase forte - le fichier chiffré porte l'extension .gpg
rm google-backup-codes.txt
## Stocker google-backup-codes.txt.gpg sur ton NAS ou coffre-fort cloudAjouter une clé physique FIDO2 sur Google
- Retourne dans Validation en deux étapes
- Section Clés de sécurité > Ajouter une clé de sécurité
- Branche ta YubiKey en USB ou approche-la en NFC
- Suis les instructions et nomme la clé
Avec une clé FIDO2, même un site de phishing parfait échoue : la vérification est liée à l'origine cryptographique du domaine.
—-
GitHub : 2FA obligatoire + configuration organisation
Activer le 2FA sur un compte personnel
## Via l'API GitHub pour vérifier le statut 2FA de ton compte
curl -H "Authorization: Bearer TON_TOKEN" \
https://api.github.com/user \
| jq '.two_factor_authentication'
## Retourne true ou falseVia l'interface :
- github.com/settings/security
- Enable two-factor authentication
- Choix : Authenticator app (TOTP) ou Security key (FIDO2)
- Pour TOTP : scanne le QR code ou copie la clé secrète base32
- Valide avec un code actif
- Télécharge les codes de secours (format texte, 16 codes)
GitHub CLI et tokens d'accès
Une fois le 2FA activé, les opérations Git via HTTPS requièrent un Personal Access Token, jamais le mot de passe du compte :
## Authentification avec GitHub CLI
gh auth login
## Choisir GitHub.com > HTTPS > Yes authenticate with browser
## gh stocke le token dans le trousseau système
## Vérifier l'état d'authentification
gh auth status
## Pour les scripts CI/CD, créer un token fine-grained
## github.com/settings/personal-access-tokens/new
## Scope minimal : Contents (read) pour la plupart des besoinsImposer le 2FA à toute une organisation GitHub
## Via l'API GitHub - Activer la contrainte 2FA pour une org
curl -X PATCH \
-H "Authorization: Bearer TOKEN_ADMIN" \
-H "Accept: application/vnd.github+json" \
https://api.github.com/orgs/NOM-ORG \
-d '{"two_factor_requirement_enabled": true}'Via l'interface : Organization Settings > Authentication security > Require two-factor authentication for everyone.
Attention : les membres sans 2FA sont immédiatement retirés de l'organisation. Prévoir une communication en amont et un délai de 48 h minimum.
Vérifier quels membres d'une org n'ont pas le 2FA
curl -H "Authorization: Bearer TOKEN_ADMIN" \
"https://api.github.com/orgs/NOM-ORG/members?filter=2fa_disabled" \
| jq '.[].login'—-
Discord : 2FA compte + serveur
Activer le 2FA sur son compte
- Paramètres utilisateur (icône engrenage) > Mon compte
- Mot de passe et authentification > Activer l'authentification à deux facteurs
- Confirme ton mot de passe Discord
- Scanne le QR code avec Aegis
- Saisis le code TOTP généré
- Télécharge les codes de secours Discord (8 codes)
Discord n'impose pas FIDO2 nativement en 2026. Le TOTP reste la méthode disponible.
Imposer le 2FA sur un serveur Discord (admin)
Via l'interface :
- Paramètres du serveur > Modération
- Niveau de sécurité > Haute : modérateurs doivent avoir le 2FA activé
Cela bloque les actions de modération (kick, ban, gestion des rôles) pour tout admin/mod sans 2FA actif.
Générer un token de bot Discord avec 2FA activé
Les bots ne sont pas concernés par le 2FA des comptes utilisateurs. En revanche, si ton compte développeur a le 2FA, la régénération de token nécessite de fournir un code TOTP :
## Vérifier les permissions d'un bot via l'API Discord
curl -H "Authorization: Bot TON_BOT_TOKEN" \
https://discord.com/api/v10/users/@me—-
Backup et récupération : stratégie complète
Export Aegis chiffré automatique
Aegis permet de configurer un dossier de backup automatique :
- Paramètres Aegis > Sauvegardes > Activer les sauvegardes automatiques
- Choisir un dossier synchronisé (Syncthing, Nextcloud, etc.)
- Le fichier exporté est chiffré AES-256 avec ta passphrase maître
Structure du fichier d'export Aegis (pour référence) :
{
"version": 1,
"header": {
"slots": [{"type": 1, "uuid": "...", "key_params": {...}}],
"params": {"nonce": "...", "tag": "..."}
},
"db": "<contenu chiffré base64>"
}Script de vérification des codes de secours
#!/bin/bash
## verify-backup-codes.sh
## Vérifie que les fichiers de codes de secours sont bien présents et récents
BACKUP_DIR="/chemin/vers/backup"
MAX_AGE_DAYS=90
for service in google github discord; do
FILE="$BACKUP_DIR/${service}-backup-codes.txt.gpg"
if [ ! -f "$FILE" ]; then
echo "MANQUANT : $FILE"
continue
fi
AGE=$(( ( $(date +%s) - $(stat -c %Y "$FILE") ) / 86400 ))
if [ "$AGE" -gt "$MAX_AGE_DAYS" ]; then
echo "OBSOLETE ($AGE jours) : $FILE"
else
echo "OK ($AGE jours) : $FILE"
fi
donechmod +x verify-backup-codes.sh
## Ajouter en cron mensuel
echo "0 9 1 * * /chemin/verify-backup-codes.sh" | crontab -—-
Dépannage : erreurs courantes
Code TOTP refusé ("Code incorrect")
L'heure de ton téléphone n'est pas synchronisée. TOTP est basé sur l'horodatage Unix.
## Vérifier l'heure système (Linux/macOS)
date
timedatectl status # Linux avec systemd
## Forcer la synchro NTP
timedatectl set-ntp true # Linux
sntp -sS time.apple.com # macOSPerdu l'accès à l'application TOTP sans codes de secours
- Google : procédure de vérification d'identité (délai 3 à 5 jours)
- GitHub : contacter le support avec preuves de propriété du compte
- Discord : support Discord uniquement, délai variable
C'est la raison principale de toujours stocker les codes de secours chiffrés hors device.
GitHub : push rejeté après activation 2FA
Le mot de passe compte ne fonctionne plus pour Git HTTPS. Utiliser un PAT :
## Configurer Git pour utiliser le trousseau système
git config —global credential.helper osxkeychain # macOS
git config —global credential.helper libsecret # Linux Gnome
## Au prochain push, saisir login + PAT (pas le mot de passe)YubiKey non reconnue sous Linux
Problème de règles udev :
## Installer les règles udev Yubico
wget https://raw.githubusercontent.com/Yubico/libu2f-host/master/70-u2f.rules \
-O /etc/udev/rules.d/70-u2f.rules
udevadm control —reload-rules && udevadm trigger—-
Hardening supplémentaire
Une fois le 2FA en place, compléter avec :
Sessions actives : audite régulièrement les sessions ouvertes sur Google (myaccount.google.com/device-activity), GitHub (github.com/settings/sessions) et Discord (Paramètres > Vie privée et sécurité > Appareils autorisés).
Alertes de connexion : active les notifications email sur chaque service pour toute nouvelle connexion depuis un appareil inconnu.
Rotation annuelle des codes de secours : régénère tes codes de secours une fois par an et mets à jour les fichiers chiffrés stockés.
Gestionnaire de mots de passe : KeePassXC supporte nativement les seeds TOTP (champ TOTP dans chaque entrée) et permet d'avoir une copie de sauvegarde locale chiffrée de tes seeds en plus d'Aegis.
## Exemple d'entrée KeePassXC avec seed TOTP en CLI
keepassxc-cli add -g -u user@exemple.com —totp-secret JBSWY3DPEHPK3PXP MonBD.kdbx GoogleL'activation du 2FA est une mesure de protection immédiate et concrète. Avec TOTP partout et FIDO2 sur Google et GitHub, ton exposition aux compromissions de compte passe de "probable" à "quasi nulle" pour les vecteurs d'attaque courants.
À lire aussi
Nmap avancé : audit réseau et détection de vulnérabilités
Maîtrisez les techniques avancées de Nmap : scripts NSE, scan furtif, timing, détection d'OS, export automatisé et intégration dans vos workflows de sécurité.
Scanner son réseau avec Nmap : le guide pas à pas
Apprenez à utiliser Nmap pour détecter les appareils connectés, les ports ouverts et les failles de sécurité sur votre réseau. Guide complet pour débutants.
Audit de mots de passe avec KeePassXC : guide technique avancé
Audit complet de votre base KeePassXC : vérification HIBP en CLI, détection de doublons, automatisation avec keepassxc-cli et hardening de la base de données.