web-dev-qa-db-fra.com

Mathématiquement, combien de temps faudrait-il pour déchiffrer un hachage de mot de passe bcrypt?

Donc j'utilise actuellement bcrypt pour hacher des mots de passe avec un sel généré aléatoirement (comme vu dans le module pip bcrypt), avec 12 tours.

J'ai regardé autour de moi, mais je ne trouve pas de moyen mathématique détaillé et clair d'estimer combien de temps il faudrait à un GPU puissant (ou même à d'autres méthodes de craquage) pour casser mon hachage bcrypt.

J'ai trouvé ce Gist qui décrit 8x Nvidia GTX 1080 Hashcat Benchmarks, mais je n'arrive pas à utiliser les chiffres fournis pour que bcrypt s'applique à ma mise en œuvre de l'algorithme de hachage.

11
madcrazydrumma

Ok, donc à partir de l'article que vous avez lié, nous apprenons que la configuration 8x Nvidia peut calculer environ 100 000 hachages bcrypt par seconde (H/s). Le facteur de coût utilisé pour la référence est de 5 - très faible - si l'on en croit les commentaires. Pour bcrypt, le nombre de tours est égal à deux à la puissance du facteur de coût. Donc, si le vôtre est de 12, votre hachage sera de 212/ 25 = 27 = 128 fois plus lent. Donc à partir de 105 H/s vous êtes à 103 H/s.

Maintenant, tout ce que vous devez savoir, c'est que pour casser un hachage avec n bits d'entropie, vous devez en moyenne essayer 2n-1 fois. Prenez par exemple un mot de passe composé de 8 lettres minuscules aléatoires. Il a une entropie de n = log2(268) = 38 bits. Pour le casser, vous auriez besoin de 238-1/ 1000 secondes = 4 ans.

Notez que l'indice de référence date de 2016. Avec le temps, le matériel s'accélère. Vous devrez réévaluer régulièrement votre facteur de coût pour rester à jour.

14
Anders

Il s'agit d'une idée fausse courante sur les mots de passe. Cela dépend de votre définition du mot de passe. Vous devez d'abord définir ce que vous entendez par mot de passe, comme "8 caractères alphanumériques". Une fois que vous avez défini cela, nous pouvons calculer.

Un "alphanumérique" est composé de 26 majuscules, 26 minuscules et 10 caractères numériques, ou 62 combinaisons possibles.

Pour essayer toutes les combinaisons d'un mot de passe à 8 caractères, ce serait: 62 * 62 * 62 * 62 * 62 * 62 * 62 * 62

C'est 218 000 000 000 000.

Divisé par 13094 (le nombre de hachages par seconde), et vous obtenez 16674820955 secondes, ou 528 ans.

L'impraticabilité d'essayer toutes les combinaisons conduit à d'autres stratégies, telles que le choix de mots de dictionnaire ou de "chaînes de Markov" pour tester les types de mots de passe susceptibles de choisir, au lieu d'essayer toutes les combinaisons aléatoires. Vous ne pouvez pas calculer mathématiquement à quelle vitesse c'est parce que c'est entièrement subjectif. Cela dépend de la chance, des mots de passe que les cibles ont choisis et des mots de passe que vous avez choisi de tester. C'est souvent quelque chose de l'ordre de 10% de chances de casser un mot de passe avec quelques heures de crack, mais encore une fois, c'est une expérience subjective. Selon le mot de passe que vous piratez et la façon dont vous le piratez, votre expérience variera.

Quoi qu'il en soit, le fait est que cette question n'a pas de réponse. C'est une idée fausse de la façon dont les choses fonctionnent. Et c'est pourquoi vous ne pouvez pas google la réponse.

0