web-dev-qa-db-fra.com

Comment le facteur de coût de PP PhRYPT Password_Hash () BCRYPT est-il traduit dans des délais de calcul de craquage

J'essaie de bien comprendre la relation entre BCRYPT 's COST facteurs et combien de temps il faudrait une machine pour casser un mot de passe avec PHP 5.5's Password_hash ()

Les temps de cryptage que j'ai observés sur un serveur moyen pour mot de passe_hash () sont:

COST 14 takes 1.23s to 2s
COST 13 takes 0.6 to 1s
COST 12 takes about 0.3s
COST 11 takes about 0.15s
COST 10 takes about 0.08s
COST 09 takes about 0.04s
  1. Le nombre de rondes proportionnelles est-elle proportionnelle au temps pris?

  2. Le temps de calcul est-il nécessaire pour casser un mot de passe sur la même échelle linéaire ou exponentielle?

par exemple. Si un coût 10 hachage a pris 1 minute pour craquer. Combien de temps regardons-nous avec le coût 14 pour le même mot de passe? Je suppose que cela varierait en fonction de l'entropie de mot de passe. Donc, prenons donc un mot de passe moyen de 10 lettres assez faible, tel que "EasyCrack1" comme base pour le raisonnement.

6
hexalys

Comme documenté plutôt indirectement dans la page pour la fonction Crypt () , le paramètre cost est le logarithme de base-2 du nombre d'itérations ou de la mettre d'une autre manière, chaque +1 augmente à cost représente un doublement du nombre d'itérations.

Si un hachage coût 10 prend une minute pour craquer, un coût 14 prendrait 2 ^ (14-10) = 16 minutes. Cracking Un hachage cryptographique comme Bcrypt consiste à deviner ce que le mot de passe est, en hachoir et de voir si les hachages correspondent, la difficulté de la fissuration augmente proportionnellement avec le temps de hachage. Tout comme augmenter le coût par 1 double le temps de hachage, il double l'effort impliqué dans la fissuration du hachage.

8
Mark