Je suis curieux de connaître les méthodes de craquage de mots de passe comme les attaques par dictionnaire et par force brute. De nos jours, les mots de passe sont stockés sous forme de hachages et non en texte brut sur le serveur. Comment comparer les mots de passe en texte brut du dictionnaire avec les hachages de la base de données divulguée? Comme les hachages peuvent être de différents types comme bcrypt, SHA-512 et ainsi de suite, comment les outils de craquage peuvent-ils savoir comment créer les hachages et les comparer?
Par exemple, jetez un œil à l'attaque du dictionnaire ci-dessous. Les mots de passe divulgués ne sont que des hachages et le dictionnaire contient des mots anglais simples. Alors comment les comparer? Comment l'attaquant ou les outils de craquage savent-ils quel algorithme de hachage il doit utiliser? Même le sel est là, mais comment l'attaquant sait-il ce qu'est le sel?
Pendant l'attaque par force brute, les mots du dictionnaire sont hachés avec l'algorithme de hachage et le sel correct, puis comparés au hachage dans le vidage de la base de données. L'attaquant doit donc connaître non seulement la valeur de hachage elle-même, mais l'algorithme et le sel.
Le sel est généralement stocké dans la base de données juste à côté du hachage. En fait, cela doit être. Sinon, comment le serveur Web pourrait-il hacher les mots de passe entrants lors de leur vérification? Donc, si vous avez un vidage de base de données, vous avez les sels.
Cela peut se faire de plusieurs manières:
$2b$
.