web-dev-qa-db-fra.com

L'utilisation de hasibeenpwned pour valider la force du mot de passe est-elle rationnelle?

J'ai entendu de plus en plus que la liste de mots de passe haveibeenpwned est un bon moyen de vérifier si un mot de passe est assez fort pour être utilisé ou non.

Je suis confus par cela. D'après ce que je comprends, la liste hasibeenpwned provient de comptes qui ont été compromis, que ce soit parce qu'ils ont été stockés en texte brut, en utilisant un chiffrement faible ou pour toute autre raison. Cela semble avoir peu à voir avec la force du mot de passe. Il pouvait y avoir des mots de passe très forts qui étaient stockés en texte brut, et donc compromis, et seraient vraiment très bien à utiliser tant qu'ils n'étaient pas utilisés en combinaison avec l'e-mail/nom d'utilisateur d'origine. Le fait que leurs hachages soient connus (duh, le hachage d'un mot de passe particulier est connu!) N'a pas d'importance si l'endroit où vous les stockez est salé. Bien que cela ne fasse vraiment pas de mal d'exclure ces mots de passe, comme peut-être un pirate commencerait par cette liste lors du forçage brutal, et il est facile d'en choisir un autre.

Mais c'est l'inverse qui m'inquiète - il y aura toujours très facilement des mots de passe qui ne figurent pas sur la liste. "longishpassword" à ce moment n'a pas eu de compte utilisant ce mot de passe qui a été touché par une fuite. Cela ne signifie cependant pas que si une fuite de hachages se produisait, ce mot de passe serait sûr. Ce serait très facile à casser.

Quelle est la justification de la vérification d'un mot de passe (sans adresse e-mail/nom d'utilisateur) par rapport à la liste haveibeenpwned pour voir s'il vaut la peine d'être utilisé? Est-ce une bonne utilisation de la liste ou est-ce erroné?

éditer:

Il est beaucoup trop tard pour changer la portée de la question maintenant, mais je voulais juste être clair, cette question venait du point de vue de la vérification des mots de passe des autres (par exemple lorsque les utilisateurs s'inscrivent sur votre site Web ou que des personnes de votre organisation reçoivent Comptes AD) pas pour valider la force d'un mot de passe personnel. Donc, tous les commentaires disant "utilisez simplement un gestionnaire de mots de passe" ne m'ont pas été utiles.

C'est certainement l'une de vos étapes de validation, mais on ne peut pas s'y fier entièrement.

Étant donné que la plupart des utilisateurs réutilisent les mots de passe et créent des mots de passe en utilisant une base de mots relativement petite, une attaque par dictionnaire est un moyen particulièrement efficace de deviner les mots de passe. Étant donné que HIBP est régulièrement mis à jour, il aura de nombreux mots de passe fréquemment utilisés, et donc des candidats probables qu'un attaquant de dictionnaire essaierait. C'est donc un bon point de départ à vérifier. Cependant, le simple fait que votre mot de passe ne figure pas dans la liste ne signifie pas que votre mot de passe ne sera pas facilement deviné. C'est juste que les mots de passe connus figureraient en haut de leur liste de mots de passe pour essayer avec du texte extrait d'Internet, des combinaisons de mots avec des chiffres/symboles, des transpositions, etc. À mesure que de nouvelles fuites de mots de passe se produisent, HIBP et d'autres outils de ce type deviennent plus utiles, et les listes de mots de passe des pirates pour essayer de devenir plus efficaces pour eux également.

J'ai été assez surpris de voir que certains mots de passe que je connais sont assez faciles à deviner et sont certainement utilisés sur plusieurs sites, pas sur la liste HIBP, donc je peux garantir que ce n'est pas le déterminant de la force du mot de passe (tout comme l'exemple dans la question ). Cependant, si j'ai trouvé ce que je pense être un mot de passe fort et qu'il figure sur la liste, je ne l'utiliserais certainement pas.

27

"Fort" a toujours eu l'intention de signifier "non devinable". La longueur et la complexité contribuent à rendre un mot de passe plus "impossible à deviner", mais un mot de passe long, complexe mais couramment utilisé est tout aussi faible que Pa$$w0rd.

Si un mot de passe se trouve dans la liste HIBP, les attaquants savent que le mot de passe a plus de chances d'être choisi par des personnes, par conséquent, il pourrait être utilisé à nouveau. Ces listes seront donc frappées en premier.

Donc, si votre mot de passe est sur la liste, il est "devinable".

Si votre mot de passe n'est pas sur la liste, alors d'une approche d'attaque par dictionnaire, il est moins devinable et pas ce que les autres ont choisi, et par implication (pour autant que cela vaut), est "moins devinable" ". Bien entendu, de nombreux autres facteurs peuvent rendre votre mot de passe "plus devinable", même s'il ne figure pas sur la liste HIBP.

Comme toujours, un mot de passe généré aléatoirement est le plus "impossible à deviner" et une longueur maximale et un mot de passe généré aléatoirement sont extrêmement difficiles à renforcer. Et si vous le générez au hasard, alors pourquoi ne pas choisir la longueur maximale?

69
schroeder

Pour répondre correctement à cette question, vous devez penser comme le pirate informatique qui veut trouver votre mot de passe.

Mais pour éviter d'avoir à plonger directement dans une façon de penser mathématique, commençons plutôt par penser à un concurrent dans le jeu télévisé Lego Movie "Où sont mes pantalons?"

De toute évidence, lorsque le concurrent veut trouver ses vêtements, la première chose qu'il fera est d'aller dans sa garde-robe. Si cela ne s'avère pas fructueux, ils pourraient vérifier leurs tiroirs, suivis par la chaise dans le coin de la pièce, puis par le panier à linge, et peut-être le panier du chien si le chien est du genre vilain à voler des pantalons. Tout cela arrivera avant de commencer à chercher dans le réfrigérateur.

Ce qui se passe ici, c'est bien sûr que le concurrent recherchera d'abord les endroits les plus probables. Ils auraient pu systématiquement parcourir chaque pied carré de la maison dans une grille, auquel cas ils devraient en moyenne vérifier la moitié de la maison. D'un autre côté, avec cette stratégie, ils ont de bonnes chances de l'obtenir du premier coup et ne s'attendraient certainement pas à couvrir la moitié de la maison.

Un hacker veut idéalement faire la même chose. Supposons qu'ils sachent que le mot de passe qu'ils recherchent est composé de 8 lettres minuscules. Ils pourraient essayer de les étudier une par une, mais il y a 208 827 064 576 options possibles, donc une supposition complètement aléatoire donnée a environ 1 chance sur 208 milliards d'avoir raison. D'un autre côté, il est bien connu que "mot de passe" est le mot de passe le plus courant. (sauf quand il est interdit) En fait, en regardant les données de haveibeenpwned, la chance que la bonne réponse soit "mot de passe" est d'environ 1 sur 151. Pas 151 milliards, seulement 151. Donc, c'est plus d'un milliard de fois plus probable qu'une estimation aléatoire et ils seraient stupides de ne pas commencer avec ça. (Et évidemment, puisque vous voulez que votre mot de passe ne soit pas trouvé, vous voulez éviter de choisir par quoi commencer)

Maintenant, la question est de savoir si cela se généralise au-delà du mot de passe. Vaut-il la peine de travailler sur une liste de mots de passe divulgués? Pour un peu d'informations, considérez cette citation de la version originale écrite .

Je suis passé à la liste Anti Public qui contenait 562 077 488 lignes avec 457 962 538 adresses e-mail uniques. Cela m'a donné encore 96 684 629 mots de passe uniques qui ne figurent pas déjà dans les données Exploit.in. Dans l'autre sens, 83% des mots de passe de cet ensemble avaient déjà été vus auparavant.

Ce qui nous dit, c'est qu'en gros, un mot de passe sélectionné au hasard a plus de 80% de chances de figurer dans la liste. La liste contient quelques centaines de millions d'entrées, contre quelques centaines de milliards d'options pour des mots de passe aléatoires à 8 lettres. Donc, en gros, notre pirate essayant des mots de passe à 8 lettres aurait une chance de 0,1% sans la liste dans le temps où il pourrait obtenir 80% de chance avec la liste. De toute évidence, ils voudraient l'utiliser. Et encore une fois, vous pourriez aussi bien l'éviter. Après tout, vous avez encore des centaines de milliards d'options à choisir, et vous pouvez obtenir des milliers de milliards en allant simplement à neuf lettres!

C'est la justification pour vérifier la liste.

Maintenant, votre première préoccupation est qu '"il y aura toujours très facilement des mots de passe qui ne figurent pas sur la liste". C'est peut-être vrai. Par exemple, "kvym" ne figure pas sur la liste. Ce n'est que 4 lettres. Il n'y a qu'un demi-million de mots de passe qui sont de 4 lettres minuscules ou plus courtes, donc si les gens sont susceptibles de préférer des mots de passe courts, un pirate les feuilleterait en une fraction du temps qu'il faudrait pour terminer la liste des fuites. Il est probable qu'ils essaieraient les deux.

La réponse à cela est évidente. Utilisez les deux règles. N'utilisez pas un mot de passe qui est apparu dans une violation et n'utilisez pas un mot de passe très court. Si vous avez un mot de passe aléatoire d'une longueur significative, vous avez plus qu'assez d'options qu'un pirate n'a pas de raccourci pour trouver.

30
Josiah

D'autres expliquent pourquoi c'est une bonne idée. Je vais prendre une direction différente.

Du point de vue de la conformité, les normes NIST pertinentes, Publication spéciale NIST 800-63, Digital Identity Guidelines exigent spécifiquement que lorsque les utilisateurs définissent leur mot de passe, il doit être vérifié par rapport à une liste des mots de passe précédemment compromis. La section pertinente est SP 800-63B, Authentication and Lifecycle Management, section 5.1.1.2 , qui dit

Lors du traitement des demandes d'établissement et de modification de secrets mémorisés, les vérificateurs DEVRAIENT comparer les secrets potentiels à une liste contenant des valeurs connues pour être couramment utilisées, attendues ou compromises. Par exemple, la liste PEUT inclure, mais sans s'y limiter:

  • Mots de passe obtenus à partir de corpus de violation précédents.
  • Mots du dictionnaire.
  • Caractères répétitifs ou séquentiels (par exemple, "aaaaaa", "1234abcd").
  • Mots spécifiques au contexte, tels que le nom du service, le nom d'utilisateur et ses dérivés.

Si le secret choisi se trouve dans la liste, le CSP ou le vérificateur DEVRA informer l'abonné qu'il doit sélectionner un secret différent, DEVRA fournir la raison du rejet et DEVRA obliger l'abonné à choisir une valeur différente.

Par définition, tout ce qui se trouve via l'API Pwned Passwords sont des "valeurs connues pour être [...] compromises".

Si votre organisation doit se soucier de la conformité, sachez que les deux principales normes de mots de passe sont incompatibles. La norme de sécurité numérique de l'industrie des cartes de paiement (PCI-DSS) stipule que les mots de passe doivent être modifiés tous les 30 jours, doivent être une combinaison de majuscules, de minuscules, de chiffres et de symboles, etc., tandis que la norme NIST stipule que les mots de passe ne doivent pas expirent arbitrairement en fonction des dates et ne doivent pas avoir de règles complexes sur la classe de caractères autorisés, mais doivent être suffisamment flexibles pour permettre aux utilisateurs d'utiliser n'importe quelle combinaison de classes de caractères.

Il appartient à votre organisation de déterminer la norme à respecter, bien sûr.

Si vous développez pour une agence sous le département américain du Commerce, vous devez suivre les normes NIST, point final. C'est la loi. (Et pour tout ce qui concerne la loi, vérifiez auprès du service juridique de votre organisation, ne me faites pas aveuglément confiance.)

Si vous travaillez sur un système qui traite les informations de paiement, vous êtes fortement encouragé à suivre le PCI-DSS. Si vous venez d'avoir une boutique en ligne et que vous utilisez un processeur de paiement tiers, cela ne s'applique pas à vous. Il n'a pas le poids de la loi, mais vous devriez vérifier avec vos avocats, car le non-respect de la norme PCI-DSS peut vous exposer à la négligence en cas de problème.

Si aucun de ces éléments ne s'applique, alors pour moi, les normes NIST sont les plus sensées. Ayez plusieurs discussions approfondies avec votre équipe de sécurité, effectuez des recherches et déterminez ce qui vous convient le mieux.

À titre d'exemple pour déterminer ce qui est le plus logique pour vous, dans mon organisation, nous ne rejetons pas les mots de passe qui avaient moins de 10 accès dans l'API Pwned Passwords. Nous affichons toujours un message d'avertissement indiquant à l'utilisateur que, même si le mot de passe a été détecté en violation, nous l'avons quand même accepté. Et, qu'ils devraient envisager de passer à l'utilisation d'un gestionnaire de mots de passe pour générer des mots de passe vraiment aléatoires. J'ai la chance d'être dans une organisation où nous pouvons parler aux utilisateurs et nous pouvons avoir des discussions honnêtes sur la gestion des mots de passe. D'autres devront ajuster leurs approches pour répondre aux besoins de leur organisation.

14
Ghedipunk

Faisons le calcul:

Supposons que chaque personne sur terre ait utilisé jusqu'à 1000 mots de passe jusqu'à présent. Cela fait environ 10 billions de mots de passe, ce qui est ~ 243 si je ne me trompe pas. Choisir any le mot de passe existant au hasard est donc à peu près aussi bon qu'un mot de passe de caractère vraiment aléatoire de 8 à 9 caractères sensible à la casse. Pas très bien. Voir cette réponse .

Cela signifie essentiellement que, en théorie, non seulement on ne doit pas réutiliser un mot de passe, on ne doit pas réutiliser un mot de passe qui a été utilisé par qui que ce soit. Les mots de passe qui ont été utilisés auparavant sont fondamentalement une grosse attaque de dictionnaire en attente de se produire.

4
kutschkem

Je dois admettre que je suis un peu perdu dans ce que signifie fort de nos jours. J'aime à penser que fort signifie un mot de passe complexe et long. Mais cela ne fait pas un bon mot de passe car il peut encore être facilement deviné.

Comme vous le notez déjà: "un pirate commencerait par cette liste lors du forçage brutal". Donc, si votre mot de passe apparaît dans cette liste, votre mot de passe sera rapidement deviné et cela signifie que ce n'est pas un bon mot de passe.

Il y a une explication sur le site Web lorsque vous entrez une chaîne qui ne figure pas dans la liste:

Ce mot de passe n'a été trouvé dans aucun des mots de passe Pwned chargés dans Have I Been Pwned. Cela ne signifie pas nécessairement que c'est un bon mot de passe, mais simplement qu'il n'est pas indexé sur ce site.

L'utilisation de la liste HIBP est un moyen de vérifier la facilité avec laquelle votre mot de passe sera deviné, mais n'est pas une indication de sa force. Vous devez utiliser un vérificateur de force de mot de passe pour cela, qui souvent ne vérifiera pas les listes de mots de passe divulgués. La liste des mots de passe HIBP et un vérificateur de la force des mots de passe se complètent.

2
LVDV

Une fois le mot de passe envoyé à un site de vérification de mot de passe aléatoire, il est n'est plus sécurisé. L'utilisation de tels sites n'est certainement pas une bonne idée avec les mots de passe que vous (allez) utiliser.

Rien n'empêche un tel site d'ajouter le mot de passe que vous avez testé directement dans la liste de mots, puis de le vendre à des pirates.

Encore une fois: utiliser de tels sites avec de vrais mots de passe est à mon humble avis très mauvaise idée.

1
Firzen

Il y a beaucoup de bonnes réponses sur cette page, mais je ne vois personne considérer le concept de bourrage des informations d'identification .

Il repose sur le fait que de nombreux utilisateurs ont le même nom d'utilisateur (adresse e-mail, vraiment) et mot de passe sur plusieurs sites. Vous pouvez donc récupérer une liste de noms d'utilisateur/mots de passe (similaire à ce que HIBP utilise), et simplement déclencher toutes les paires de la liste sur le site Web que vous souhaitez pénétrer.

En vous assurant qu'aucun de vos utilisateurs n'a de mot de passe présent dans aucune des listes connues de HIBP, vous bloquez très efficacement cette attaque.

1
Geir Emblemsvag

Mais c'est l'inverse qui m'inquiète - il y aura toujours très facilement des mots de passe qui ne figurent pas sur la liste. "longishpassword" à ce moment n'a pas eu de compte utilisant ce mot de passe qui a été touché par une fuite. Cela ne signifie cependant pas que si une fuite de hachages se produisait, ce mot de passe serait sûr. Ce serait très facile à casser.

Vous avez raison à 100% que l'absence dans la base de données des mots de passe Pwned de HIBP ne garantit pas qu'un mot de passe est solide. Cependant, je pense que vous sous-estimez l'énorme valeur de la vérification des mots de passe par rapport à la base de données HIBP. Le fait est que le cas qui vous préoccupe - un mot de passe faible qui n'est pas dans la base de données HIBP - est considérablement moins courant que les mots de passe faibles qui le sont dans la liste.

Troy Hunt (le créateur de HIBP) écrit longuement sur ses projets, et son article de blog de 2018 "86% des mots de passe sont terribles (et autres statistiques)" donne ce que je pense devrait être extrêmement révélateur exemple (édité par souci de concision):

Mais je me suis toujours demandé - quel genre de pourcentage de mots de passe les [Mots de passe en attente] bloqueraient-ils réellement? Je veux dire, si vous aviez 1 million de personnes dans votre système, est-ce que le quart d'entre elles utilisent des mots de passe précédemment violés? Une moitié? Plus? Ce dont j'avais besoin pour tester cette théorie était une violation de données qui contenait des mots de passe en texte brut, en avait un volume important et ce devait être un que je n'avais jamais vu auparavant et ne faisait pas partie des sources que j'ai utilisées pour créer le Pwned Liste des mots de passe en premier lieu.

Et puis CashCrate [une grosse brèche et fuite] est arrivé.

Sur ces 6,8 millions d'enregistrements, 2 232 284 des mots de passe étaient en texte brut. Donc, à la grande question posée plus tôt, combien d'entre eux étaient déjà dans les mots de passe Pwned? Ou en d'autres termes, combien d'abonnés CashCrate utilisaient des mots de passe terribles déjà connus pour avoir été violés?

Au total, il y avait 1.910.144 mots de passe sur 2.232.284 déjà dans le jeu de mots de passe Pwned. En d'autres termes, 86% des abonnés utilisaient des mots de passe déjà divulgués dans d'autres violations de données et disponibles pour les attaquants en texte brut.

Donc, même si vous avez raison de penser que les mots de passe Pwned ne résolvent pas tout le problème, le volume de fruits à faible coût qu'il traite est énorme. Combinez-le avec un vérificateur de force de mot de passe scientifiquement bien fondé comme zxcvbn et vous mordez un autre gros morceau:

password:               longishpassword
guesses_log10:          8.09552
score:                  3 / 4
function runtime (ms):  2
guess times:
100 / hour:   centuries (throttled online attack)
10  / second: 5 months (unthrottled online attack)
10k / second: 3 hours (offline attack, slow hash, many cores)
10B / second: less than a second (offline attack, fast hash, many cores)

Et après avoir détruit les fruits bas, vous avez probablement des rendements décroissants rapidement.

1
Luis Casillas