La réutilisation des mots de passe est extrêmement problématique. Il est triste que les gens ne soient pas conscients des risques impliqués pour leur compte et leurs données. Les attaquants utilisent des adresses e-mail et des mots de passe provenant de violations de données antérieures et tentent d'accéder à d'autres sites web. Les gestionnaires de mots de passe qui génèrent des mots de passe aléatoires sont une mesure parfaite contre ces attaques, générant des mots de passe aléatoires pour chaque site web. Mais qu'en est-il de tous ces anciens mots de passe ? Nous venons de lancer une nouvelle fonctionnalité, permettant aux utilisateurs de vérifier leurs mots de passe contre une grande base de données grâce à haveibeenpwned.com. Avec ce nouvel outil dans notre ceinture, il est possible de vérifier les mots de passe contre un ensemble de données de près de 5 milliards de comptes avec des mots de passe.
Le service Pwned Passwords a été créé en août 2017 après que le NIST a publié des recommandations spécifiant que les mots de passe fournis par les utilisateurs devraient être vérifiés par rapport aux violations de données existantes. La justification de ce conseil et des suggestions sur la manière dont les applications peuvent exploiter ces données sont décrites en détail dans l'article de blog intitulé Introducing 306 Million Freely Downloadable Pwned Passwords. En février 2018, la version 2 du service a été lancée avec plus d'un demi-milliard de mots de passe, chacun avec un décompte supplémentaire du nombre de fois qu'ils ont été exposés.
(Source: https://haveibeenpwned.com/Passwords)
Une petite vidéo donnant une meilleure idée de son fonctionnement. L'API montre la progression de l'analyse. Comme c'est un service gratuit, nous respectons la limitation et ne voulons pas causer de dommages, donc les requêtes sont limitées à une par 1,5 seconde.
Dans un premier temps, tous les secrets contenant vos mots de passe sont téléchargés depuis le serveur. Dans un deuxième temps, chaque secret est déchiffré dans votre navigateur avant qu'un hash sha1 du mot de passe ne soit créé. Les hashs sha1 ont une longueur de 160 bits (40 caractères en hexadécimal). Le hash sha1 est divisé en un préfixe (5 caractères hexadécimaux) et un suffixe (35 caractères hexadécimaux). Le préfixe est envoyé à l'API haveibeenpwned.com qui vérifie sa base de données et renvoie une liste de suffixes. Le client comparera le suffixe du mot de passe avec la liste des suffixes reçus et marquera le mot de passe comme compromis ou non. C'est une façon efficace d'interroger la base de données de mots de passe sans réellement envoyer le mot de passe (ou ses dérivés faibles) et est connue sous le nom de k-anonymisation.