Security musings

Catégories

Tags

🔍 Licence d'Utilisation 🔍

Sauf mention contraire, le contenu de ce blog est sous licence CC BY-NC-ND 4.0.

© 2025 à 2042 Sébastien Gioria. Tous droits réservés.

Dans l’article précédent, nous avons vu comment déléguer l’authentification à des géants comme Google ou Microsoft via OAuth2. C’est un grand pas en avant, mais il reste un problème : pour se connecter chez Google, l’utilisateur tape souvent… un mot de passe.

Aujourd’hui, nous attaquons la racine du mal. Nous allons voir comment FIDO2 et WebAuthn permettent de supprimer définitivement le concept de “secret partagé” entre le client et le serveur.

Le problème du “Secret Partagé”

Le modèle classique fonctionne ainsi :

  1. Vous connaissez le mot de passe.
  2. Le serveur connaît le mot de passe (ou plutot son hash !!!).
  3. Pour entrer, vous montrez le mot de passe au serveur.

C’est symétrique. Si le serveur est piraté, votre secret est volé. Si vous le tapez sur un faux site, votre secret est volé.

La solution : La Cryptographie Asymétrique (Clé Publique / Privée)

FIDO2 repose sur le même principe mathématique que SSH ou HTTPS. Au lieu d’un seul secret, nous avons une paire de clés.

  1. La Clé Privée 🗝️ : Elle est générée dans votre appareil (Smartphone, PC, YubiKey). Elle ne quitte JAMAIS cet appareil. Personne ne peut la voir, même pas vous.
  2. La Clé Publique 📢 : Elle est envoyée au serveur. Comme son nom l’indique, elle est publique. Si un pirate la vole, il ne peut rien en faire. Elle sert uniquement à vérifier une signature, pas à la créer.

Comment se passe le login ? (Challenge-Response)

Fini l’envoi du mot de passe sur le réseau. Voici la “danse” cryptographique qui se produit en quelques millisecondes :

  1. User : “Je veux me connecter.”
  2. Serveur : “Ok, prouve que tu es toi. Voici un nombre aléatoire (le Challenge), par exemple 422184.”
  3. User (Device) : L’appareil prend ce challenge et le signe avec sa Clé Privée. Il envoie le résultat (la signature) au serveur.
  4. Serveur : Il utilise la Clé Publique (qu’il a stockée lors de l’inscription) pour vérifier mathématiquement que la signature a bien été faite avec la Clé Privée correspondante.

Résultat : Le serveur a authentifié l’utilisateur sans jamais voir la clé privée. Aucun secret n’a transité sur le réseau.

Passkeys vs FIDO2 “Classique”

Jusqu’à récemment, la clé privée était liée au matériel (votre YubiKey ou la puce TPM de votre PC).

  • Avantage : SĂ©curitĂ© maximale.
  • InconvĂ©nient : Si vous perdez votre clĂ©/PC, vous perdez votre compte (sauf mĂ©thodes de rĂ©cupĂ©ration lourdes).
  • ComplexitĂ© : GĂ©rer plusieurs appareils (PC, smartphone, tablette) Ă©tait compliquĂ©.
  • Solution : Utiliser une clĂ© FIDO2 par appareil, mais l’utilisateur devait gĂ©rer ça lui-mĂŞme.
  • ExpĂ©rience Utilisateur : Pas très “grand public”.

C’est là qu’interviennent les Passkeys. Une Passkey est techniquement une clé FIDO2 (“Multi-Device Credential”), mais elle est synchronisée via le Cloud du fournisseur (iCloud Keychain pour Apple, Google Password Manager, Bitwarden).

  • Avantage : Si vous perdez votre appareil, vous pouvez rĂ©cupĂ©rer vos Passkeys sur un nouvel appareil en vous connectant Ă  votre compte cloud.
  • InconvĂ©nient :
    • Vous dĂ©pendez de la sĂ©curitĂ© du fournisseur cloud (mais ils sont globalement assez bons lĂ -dessus).
    • Vous avez un point de centralisation (votre compte cloud) Ă  protĂ©ger.
    • Vos clefs privĂ©es sont stockĂ©es dans le cloud, et sont dĂ©pendantes des lois locales sur la vie privĂ©e…
  • Compromis : Vous avez une sĂ©curitĂ© très Ă©levĂ©e (pas de secret partagĂ©, pas de phishing possible) avec une expĂ©rience utilisateur fluide.

Si vous perdez votre iPhone, vos clés redescendent automatiquement sur votre nouvel iPhone dès que vous vous connectez à votre compte iCloud. C’est le compromis parfait entre sécurité “militaire” et expérience utilisateur “grand public”.

Pourquoi le Phishing est mort avec ces technologies

C’est la fonctionnalité “killer” de WebAuthn.

Lors de la création de la clé, le navigateur lie cryptographiquement la paire de clés au domaine du site web (l’origine).

  • Vous crĂ©ez une clĂ© pour google.com.
  • Un pirate vous envoie un mail : “Urgent, connectez-vous sur g00gle.com”.
  • Le site ressemble trait pour trait Ă  l’original.
  • Vous cliquez pour vous authentifier.

Le navigateur intervient :

“Je suis actuellement sur g00gle.com, mais la clé que tu me demandes a été créée pour google.com. Je refuse de signer.”

L’authentification échoue silencieusement. L’utilisateur ne peut pas se faire avoir, même par inattention.

Conclusion

Nous avons un système robuste, résistant au phishing et pratique pour l’utilisateur. FIDO2 et les Passkeys représentent une avancée majeure dans la sécurisation de l’authentification web.

Quelques Ressources Utiles