web-dev-qa-db-fra.com

Facteur de travail bcrypt optimal

Quel serait un facteur de travail bcrypt idéal pour le hachage de mot de passe.

Si j'utilise un facteur 10, il faut environ 0,1 seconde pour hacher un mot de passe sur mon ordinateur portable. Si nous nous retrouvons avec un site très fréquenté, cela se transforme en beaucoup de travail en vérifiant simplement les mots de passe des gens.

Il serait peut-être préférable d'utiliser un facteur de travail de 7, ce qui réduirait le travail de hachage de mot de passe à environ 0,01 par connexion d'ordinateur portable?

Comment décidez-vous du compromis entre la sécurité par force brute et le coût opérationnel?

78
Chris

N'oubliez pas que la valeur est stockée dans le mot de passe: $2a$(2 chars work)$(22 chars salt)(31 chars hash). Ce n'est pas une valeur fixe.

Si vous trouvez que la charge est trop élevée, faites en sorte que la prochaine fois qu'ils se connectent, vous cryptez vers quelque chose de plus rapide à calculer. De même, au fil du temps et que vous obtenez de meilleurs serveurs, si la charge n'est pas un problème, vous pouvez améliorer la force de leur hachage lorsqu'ils se connectent.

L'astuce consiste à faire en sorte que cela prenne à peu près le même temps pour toujours dans l'avenir avec la loi de Moore. Le nombre est log2, donc chaque fois que les ordinateurs doublent de vitesse, ajoutez 1 au nombre par défaut.

Décidez du temps que vous souhaitez qu'il prenne pour forcer le mot de passe d'un utilisateur. Par exemple, pour certains dictionnaires Word courants, la création de votre compte les a probablement déjà avertis que leur mot de passe était faible. Si c'est l'un des 1000 mots communs, disons, et qu'il faut à un attaquant 0,1s pour tester chacun, cela leur achète 100s (enfin, certains mots sont plus courants ...). Si un utilisateur a choisi "Word de dictionnaire commun" + 2 chiffres, cela fait plus de deux heures. Si votre base de données de mots de passe est compromise et que l'attaquant ne peut obtenir que quelques centaines de mots de passe par jour, vous avez acheté la plupart de vos utilisateurs des heures ou des jours pour changer leurs mots de passe en toute sécurité. Il s'agit de leur faire gagner du temps.

http://www.postgresql.org/docs/8.3/static/pgcrypto.html a quelques temps pour casser des mots de passe pour vous. Bien sûr, les mots de passe qu'ils énumèrent sont des lettres aléatoires. Mots du dictionnaire ... En pratique, vous ne pouvez pas sauver le gars dont le mot de passe est 12345.

99
Zer