J’ai récemment parlé complexité de mot de passe mais en réalité le problème est souvent ailleurs. La taille et la complexité n’ont aucune importance si quelqu’un peut deviner quel mot de passe vous utilisez après juste quelques essais.
Jean réutilise son mot de passe
Je connais l’email de Jean ? Il me suffit de regarder quels mots de passe il a utilisé sur d’autres sites, et de les tester un à un.
La plupart des sites ont un problème de sécurité un jour ou l’autre. Souvent les données extraites se retrouvent publiques d’une façon ou d’une autre. Parfois on y trouve des mots de passe en clair ou mal protégés. Il suffit de piocher dedans.
Testez Have I Been Pwned, vous verrez que des tiers peuvent déjà connaitre plusieurs de vos mots de passe.
Paul n’a aucune imagination
Je ne connais pas l’email de Paul ? Qu’importe. Je peux déjà tester les mots de passe les plus courants, et les variations de ceux-ci.
Ne vous croyez pas original. Même ajouter une date, un chiffre, un symbole, changer une lettre, inverser le mot de passe, quelqu’un l’a déjà fait. En quelques milliers de combinaisons j’ai déjà énormément de mots de passe habituels.
Même les méthodes « choisir x mots du dictionnaire » sont vulnérables si c’est l’utilisateur qui choisit ses mots dans sa tête. Le plus souvent on tombera dans quelques centaines de mots, toujours les mêmes.
Par le passé j’ai utilisé un personnage de littérature, auquel j’ai ajouté un chiffre et un symbole. Croyez-le ou non, on trouve plus d’une dizaine d’occurrences sur Have I Been Pwned.
Have I Been Pwned
J’ai cité Have I Been Pwned. Ils mettent à disposition une base de tous les mots de passe qui ont publiquement fuité.
Si vous laissez des tiers saisir des mots de passe sur votre service, vous devriez télécharger leur base, puis chercher dedans à chaque fois qu’un de vos utilisateur saisit un nouveau mot de passe. Le mot de passe est déjà dedans ?
Alors il y a un risque de sécurité et vous devriez en alerter l’utilisateur.
Si vous voulez aller plus loin, tentez quelques variations simples : Si le mot de passe se termine par un nombre, essayez les deux ou trois nombres précédents. Si le mot de passe à des symboles ou chiffres en début ou fin, retirerez-les et testez le mot de passe résultant.
Tout ça ne vous coûte quasiment rien si ce n’est un peu de stockage et le téléchargement de la nouvelle base Have I Been Pwned de temps en temps, mais ça va éviter bien des risques à vos utilisateurs.
5 réponses à “Sécuriser les nouveaux mots de passe”
Tester les mots de passe présents dans « Have I Been Pwned » : pertinent, à condition d’être explicite dans le message d’erreur, sinon Paul et Jean ne vont pas comprendre pourquoi `MarsE1lle2019!` ne passe pas.
Du coup, ça implique de faire de la pédagogie, parce qu’il faut expliquer le mot de passe est long et complexe en soi MAIS qu’il fait partie d’un dictionnaire DONC qu’il est vulnérable à une attaque de ce type…
J’ai ma petite idée sur la frustration et le taux d’abandon engendré…
Et si l’avenir pour les sites, c’était plutôt le no-password (utilisation directe de l’email comme authentification, avec envoi d’un lien de connexion unique) ?
Il y a effectivement tout un enjeu d’UX, mais je ne suis vraiment pas le plus pertinent pour y proposer des solutions.
L’e-mail ? Ce système qui envoie des données en texte brut sur le réseau ? Pour de la sécurité ?…
C’est du même niveau que les mots de passes de sécurité de Google avec les numéros d’authentification par sms (G-394820). C’est pas sécurisé, parce qu’envoyé en clair.
Je ne suis pas expert en sécurité, mais je pense qu’une solution serait à chercher du côté des technologies de chiffrement (type clé U2F)
La question est de « contre qui se bat-on ? ». Si effectivement tu te bas contre des gros hébergeurs (AWS, G Cloud, Azure, OVH) ou contre les fournisseurs des emails de tes clients (Gmail, Outlook, Yahoo, Orange, Free, SFR) *et* que tu les crois capables d’aller faire de l’inspection réseau et des manipulations malicieuses pour récupérer le lien d’authentification, alors effectivement c’est un problème.
Maintenant si c’est le cas, tu l’as dans l’os de toutes façons parce que la plupart des services utilisent l’email comme confirmation pour faire une récupération de mot de passe. L’email est *déjà* un point qui permet de t’authentifier. Il suffirait à l’attaquant de demander une réinitialisation de ton mot de passe et d’attendre l’email.
Si tu veux faire mieux il faut interdire la récupération des mots de passe par email et passer par un processus manuel complexe. C’est ce que font certaines boites pour les gens qui activent une 2FA forte, mais on parle là d’enjeux qui dépassent le compte Instagram de monsieur tout le monde.
Petite doc perso pour l’utilisation de KeepassXC, versoin récente et multi-OS de Keepass.
https://ladoc.cemea.org/doku.php/utilisateurs:keepassxc
Perso, je suis fan ! Tu héberges toi-même ta base de données et tu sécurises ton accès comme tu le veux.
Si ça peut aider…