web-dev-qa-db-fra.com

Est-il sûr de vérifier le mot de passe par rapport à l'API HIBP Pwned Passwords lors de l'enregistrement du compte?

L'utilisateur enregistre un compte sur une application Web. Les mots de passe sont salés et hachés. Mais est-il sûr de vérifier le mot de passe par rapport à HIBP Pwned Passwords API , avant de le saler et de le hacher? Bien sûr, l'application utilise TLS.

Donc, si le mot de passe est trouvé sur une violation - ne permettez pas d'enregistrer un compte. Si le mot de passe n'est pas trouvé en violation - salez-le et stockez-le dans une base de données.

La même chose s'appliquerait si vous changez le mot de passe.

39
Bitenieks

Have I Been Pwned? permet à quiconque de télécharger la base de données complète pour effectuer les vérifications localement.

Si ce n'est pas une option, l'utilisation de l'API est sûre, car elle utilise k-anonimity qui vous permet d'effectuer la vérification sans transmettre le mot de passe/hachage complet.

60
Benoit Esnard

Si l'opérateur de l'API Pwned Passwords est malveillant (ou si le service est piraté par une personne malveillante ou si quelqu'un intercepte votre communication), il peut mentir à propos de certains mots de passe (renvoyer uniquement un sous-ensemble de mots de passe qu'il connaît pour ce hachage), enregistrer où le demande, identifiez le site Web appartenant à cet ID, identifiez le compte (en fonction du temps de création, par exemple) et testez-le avec les mots de passe sur lesquels il a menti, pour une chance décente de compromettre le compte.

Il s'agit d'un scénario assez improbable (le propriétaire de l'API est un professionnel de la sécurité respectable, la liste des hachages connus est publique, et faire ce type d'attaque sans être détecté serait difficile), donc cela dépend de votre aversion au risque. . Si vous exécutez un forum de discussion, l'utilisation de l'API est certainement une bonne idée. Si vous gérez une banque électronique, peut-être pas tant que ça.

Télécharger la base de données et effectuer les vérifications localement est bien sûr plus sûr, mais pas une tâche triviale, compte tenu de la taille.

13
Tgr

Comme demandé, non.

Dès la publication de cette réponse, la question demande s'il est sûr d'envoyer un mot de passe "avant de le saler et de le hacher", ce qui signifie en clair. Vous ne devez jamais envoyer un mot de passe en texte brut à un tiers (le deuxième peut être OK si vous vous connectez actuellement). Même le hachage du mot de passe ne suffit pas, car un Rainbow Table peut être utilisé pour rechercher le mot de passe. C'est pourquoi lorsque j'ai vu quelqu'un (hachage et) envoyer chaque mot de passe dans une base de données KeePass à HIBP , je l'ai immédiatement appelé.

Comme d'autres réponses l'ont souligné, il existe une nouvelle version de HIBP qui inclut k-anonymity (voir ce lien et les autres réponses pour plus d'informations). Cependant, cela divulgue toujours quelques informations sur les mots de passe (vers HIBP et tout potentiel MITM attaquant. Divulging certaines informations est loin d'être aussi mauvais que la fuite de tout le mot de passe, mais c'est toujours quelque chose qui devrait vous inquiéter. Ce que vous voulez vraiment, c'est que vos mots de passe soient sécurisés et non anonymes .

En fin de compte, si vous voulez vous assurer qu'aucune information sur vos mots de passe n'est divulguée lors du processus de vérification, vous devez télécharger toute la base de données des mots de passe pwned, hacher et vérifier votre mot de passe localement (dans ce cas, sur le serveur car personne ne veut télécharger la base de données entière juste pour créer un compte). Ne stockez pas le mot de passe ou le hachage que vous comparez à la base de données n'importe où, stockez uniquement le hachage salé dans votre base de données de mots de passe réelle.

12
NH.