🏠 Accueil

🔐 Démonstration WebAuthn/FIDO2

Authentification sans mot de passe avec analyse des vecteurs d'attaque

🎯 Démonstration
🛡️ Analyse de Sécurité
⚠️ Vecteurs d'Attaque

📝 Enregistrement

Créez une nouvelle clé de sécurité (passkey)

💡 Information : L'enregistrement crée une paire de clés cryptographiques. La clé privée reste sur votre appareil, seule la clé publique est envoyée au serveur.

✅ Authentification

Utilisez votre clé de sécurité pour vous authentifier

💡 Information : L'authentification utilise un défi cryptographique. Le serveur vérifie la signature sans jamais recevoir la clé privée.

🗂️ Credentials enregistrés (Local)

🛡️ Pourquoi WebAuthn est sécurisé

✅ Avantages de FIDO2/WebAuthn :

  • Pas de secret partagé : La clé privée ne quitte jamais l'appareil
  • Protection contre le phishing : Les credentials sont liés au domaine (origin binding)
  • Pas de rejeu possible : Chaque authentification utilise un challenge unique
  • Résistance aux bases de données compromises : Seules les clés publiques sont stockées
  • Authentification forte : Nécessite possession + présence utilisateur

🔐 Composants cryptographiques :

  • Algorithmes : ES256 (ECDSA), RS256 (RSA), EdDSA
  • Attestation : Preuve que la clé provient d'un authentificateur légitime
  • Challenge : Nonce aléatoire empêchant le rejeu
  • Origin : Domaine vérifié cryptographiquement

📊 Flux d'authentification

1. Client demande authentification
2. Serveur génère un challenge aléatoire
3. Authenticator signe le challenge avec clé privée
4. Client envoie la signature au serveur
5. Serveur vérifie avec la clé publique
6. Authentification réussie ✓
                    

⚠️ Vecteurs d'Attaque et Mitigations

⚠️ Important : Ces scénarios sont présentés à des fins éducatives pour comprendre les limites de WebAuthn et concevoir des systèmes plus sûrs.

🎣 1. Phishing du consentement utilisateur

Description : Un attaquant crée un faux site ressemblant au vrai. L'utilisateur authentifie volontairement sur le faux site.

Limite : ❌ Ne fonctionne PAS avec WebAuthn ! L'origin binding empêche cette attaque.

✅ Mitigation WebAuthn :
  • Le credential est lié au domaine exact (example.com ≠ examp1e.com)
  • Le navigateur vérifie automatiquement l'origin
  • Impossible d'utiliser un credential sur un autre domaine

💻 2. Malware sur l'appareil de l'utilisateur

Description : Un malware sur l'ordinateur de la victime intercepte les sessions après authentification.

Impact : ⚠️ Contourne l'authentification APRÈS qu'elle ait réussi.

✅ Mitigations :
  • Sessions courtes avec ré-authentification fréquente
  • Détection d'anomalies comportementales
  • Antivirus et EDR sur les endpoints
  • Step-up authentication pour actions sensibles

🔑 3. Vol physique de l'authentificateur

Description : L'attaquant vole la clé de sécurité physique (YubiKey, etc.)

Impact : ⚠️ Peut compromettre le compte si pas de protection supplémentaire.

✅ Mitigations :
  • Utiliser un PIN sur l'authentificateur
  • Vérification biométrique (TouchID, FaceID)
  • Enregistrer plusieurs authentificateurs de backup
  • Révocation rapide si vol signalé

🐛 4. Vulnérabilité d'implémentation côté serveur

Description : Erreurs dans la validation des assertions WebAuthn (challenge, origin, signature).

Impact : 🔴 CRITIQUE - Peut permettre le bypass complet.

✅ Mitigations :
  • Utiliser des bibliothèques WebAuthn bien testées
  • Toujours vérifier : origin, challenge, signature, counter
  • Audits de sécurité réguliers
  • Tests de pénétration spécifiques WebAuthn

🔄 5. Attaque Man-in-the-Middle (MITM)

Description : Interception de la communication entre client et serveur.

Limite : ❌ Inefficace contre WebAuthn si HTTPS est utilisé correctement.

✅ Mitigations :
  • HTTPS obligatoire (WebAuthn ne fonctionne qu'en HTTPS)
  • HSTS (HTTP Strict Transport Security)
  • Certificate Pinning pour applications mobiles

🎓 Conclusion pédagogique :

WebAuthn/FIDO2 est extrêmement robuste cryptographiquement. Les "attaques" se concentrent principalement sur :

  • 📱 Le compromis de l'appareil (pas de WebAuthn)
  • 🏢 Les erreurs d'implémentation serveur
  • 👤 L'ingénierie sociale (vol physique)
  • 🌐 Les faiblesses dans d'autres parties du système