web-dev-qa-db-fra.com

Comment les mots de passe courts ne sont-ils pas sûrs si vous limitez le nombre de tentatives?

Sur tous les services Web qui nécessitent des mots de passe, comme gmail, vous êtes invité à définir un mot de passe long. Comme 8 caractères ou plus.

La raison étant une plus grande sécurité.

Mais les mêmes services limitent le nombre de tentatives de connexion à 3-4 tentatives avant de verrouiller votre compte et de demander plus d'informations. Quelque chose que je trouve très ennuyeux, mais c'est un autre sujet.

Alors, comment un mot de passe court n'est-il pas sûr s'il limite les tentatives de connexion? Si le mot de passe comporte 5 caractères, quelqu'un ne peut pas essayer toutes les combinaisons en seulement 3 tentatives.

32
Alex

La principale raison pour laquelle les mots de passe doivent être longs et aléatoires (c'est-à-dire à entropie élevée) est de se protéger contre les attaques par force brute hors ligne.

Les mots de passe ne sont généralement pas stockés en texte brut. Au lieu de cela, ils sont hachés . Si quelqu'un vole la base de données avec les mots de passe hachés (c'est étonnamment commun ), il ne peut pas lire directement les mots de passe. Au lieu de cela, ils doivent essayer des charges et des charges de mots de passe pour en trouver un qui correspond au hachage. Étant donné que les hachages de mot de passe ont été volés, cela peut être fait sur la machine de l'attaquant et non via le site Web lui-même (d'où hors ligne attaque). Cela signifie que les limites de nouvelles tentatives sur la page Web ne s'appliquent pas.

Les mots de passe longs et aléatoires nécessitent plus de suppositions, ils sont donc plus difficiles à déchiffrer même si la base de données est volée. C'est pourquoi ils sont encouragés sur le web.

74
Anders

Ce n'est pas aussi simple ...

À propos de bruteforce en ligne

Si le compte est complètement verrouillé après 3 tentatives, il sera facile de faire DOS (Deny Of Service) en verrouillant tous les comptes!

Le serveur doit baser sa décision de verrouillage non seulement sur le nombre de tentatives infructueuses, mais il utilisera l'adresse IP, l'ID du navigateur et inclura durée pour le verrouillage, donc si quelqu'un utilise simplement un mauvais clavier, il pourra reconnectez dans certains délai ...

À partir de là, considérant botnets, un attaquant pourrait utiliser beaucoup d'adresses IP différentes et faire de nombreux essais différents. Avec certaines options smooth et de longs délais, mots de passe courts s'affaiblit.

  • Échantillon:

    En considérant la force brute totale contre 5 caractères choisis dans a-z, A-Z, 0-9, $+"*/%&()_: 72 caractères

    72^5                 => 1'934'917'632 # all possible combination
    72^5 / 300000        =>         6'449 # botnet
    72^5*900/300000/3    =>     1'934'917 # 3 attemps -> 15' penalty
    

    En quelques secondes: cela représente environ 22 jours pour tester toutes les combinaisons.

Nota: 300000 machine une valeur moyenne arbitraire de Botnet @Wikipedia . Si le botnet 6M, le travail se terminera en moins d'une journée.

À propos de bruteforce hors ligne

Les mots de passe sont généralement stockés haché. Si quelqu'un pouvait voler votre fichier de mot de passe (en utilisant l'exploit à distance, l'ingénierie sociale ou autre), il pourrait utiliser la force brute contre hash stocké dans le fichier de mot de passe.

De là, l'attaquant n'est plus limité à 3 tentatives !!

Si votre mot de passe comporte plus de 12 caractères: 72^12 => 2'435'196'222'894'505'984. Cela devient lourd, même grâce au botnet ...

Mais tout john comme mot de passe cracker , parcourra le fichier de mot de passe volé et extraira rapidement tous les mots de passe Word et tous les mots de passe courts.

À propos des mots de passe longs et des phrases secrètes

Parce que je préfère (autant que possible) utiliser des mots de passe plutôt que des mots de passe, j'aime vraiment ça bande de XKCD :

enter image description here

Il y a donc une petite démo mathématique:

  • Considérant un mot de passe de 12 lettres avec un groupe de 72 caractères:

    $ printf "%'.u\n" $[(72**12)]
    2'435'196'222'894'505'984
    
  • Considérant 4 mots choisis au hasard choisis dans le dictionnaire américain dans Word contenant 5 à 9 lettres simples (a-z, sans accent):

    $ printf "%'u\n" $[$(
        LANG=C grep '^[a-z]\{5,9\}$' /usr/share/dict/american-english|
            wc -l) ** 4]
    2'945'898'655'785'685'681
    

    presque le même nombre de combinaisons,

    avec une longueur de phrase minimale: 5x4 = 20 lettres alphabétiques:

    $ printf "%'.u\n" $[(26**20)]
    5'350'152'024'406'097'920
    

    (La phrase secrète de craquage de force brute Nota implique une combinaison de lettres, cela réduira la combinaison totale, mais restera supérieur à 41'429 ^ 4 ... 41429 est le résultat de wc -l Dans mon test précédent)

    Et vous pourriez même ajouter du sel en ajoutant des majuscules, des chiffres et/ou tout caractère spécial ... pendant que vous restez capable de vous en souvenir!

35
F. Hauri

Pour empêcher la "pulvérisation de mot de passe" lorsque quelqu'un essaie un mot de passe commun avec plusieurs comptes.

9
paj28