2010-12-13 68 views
15

J'ai lu l'article sur l'incident Gawker et plusieurs articles ont été publiés concernant l'utilisation de bcrypt pour hacher les mots de passe et je veux m'assurer que mon mécanisme de hachage est suffisamment sécurisé pour évitez de passer à une autre méthode. Dans mon application actuelle, j'ai opté pour une implémentation PBKDF2 utilisant sha2-512 et un minimum de 1000 itérations. Puis-je demander des avis sur l'utilisation de PBKDF2 vs Bcrypt et si oui ou non je devrais implémenter un changement?Cryptage du mot de passe: PBKDF2 (avec sha512 x 1000) vs Bcrypt

Répondre

27

Vous êtes bon avec PBKDF2, pas besoin de passer à bcrypt.

Bien que la recommandation d'utiliser 1000 itérations ait été faite en l'an 2000, maintenant vous voudriez beaucoup plus.

En outre, vous devriez prendre plus de précautions lors de l'utilisation bcrypt:

Il est également intéressant de noter que, même si bcrypt est plus forte que PBKDF2 pour la plupart des types de mots de passe, il est en retard de longues phrases de passe; cela résulte de l'incapacité de bcrypt à utiliser plus que les 55 premiers caractères d'une phrase de passe alors que nos coûts estimés et NIST. les estimations de l'entropie de phrase secrète suggèrent que la limite de 55 caractères de bcrypt n'est pas susceptible de causer des problèmes à l'heure actuelle, les implémenteurs de systèmes qui comptent sur bcrypt pourraient être bien avisés de contourner cette limitation (p. Ex. un mot de passe pour le faire entrer dans la limite de 55 caractères) ou pour prendre des mesures pour empêcher les utilisateurs de placer trop d'entropie de mot de passe dans le 56e et les suivants caractères (par exemple, en demandant aux utilisateurs d'un site Web de taper leur mot de passe dans une entrée boîte qui ne dispose que de 55 caractères).

From scrypt paper [PDF]

Cela dit, il y a aussi scrypt.

Toute comparaison serait incomplète sans la table du papier scrypt mentionné ci-dessus:

Estimated cost of hardware to crack a password in 1 year.

compte pour Iteration PBKDF2-HMAC-SHA256 utilisés il y a 86.000 et 4.300.000.

+5

"demandant aux utilisateurs d'un site Web de taper leur mot de passe dans une zone de saisie qui ne dispose que de 55 caractères." Je suis désolé, mais comment cela s'applique-t-il au monde réel? Je peux difficilement trouver 8 mots de passe. – m33lky

+6

Je connais un gars qui utilise des séquences de super jeux d'échecs comme mots de passe. Il salue les séquences avec les noms des joueurs, les dates, les villes jouées, etc. Je connais une autre personne qui utilise des vers de poèmes épiques, avec des erreurs intentionnelles introduites. Il existe de nombreuses façons d'obtenir des mots de passe longs. – Cheeso

+1

Il convient de noter qu'il y avait une erreur dans le papier scrypt, et la coupure algorithmique réelle de bcrypt est de 72 caractères. Donc, il y a toujours une coupure, mais il y a 128 bits d'entropie de plus. Ce qui est extrêmement important. – ircmaxell

-7

Commentaire (re: le titre):

  • Ne pas utiliser le chiffrement (réversible) pour stocker les mots de passe à moins que vous devez.
  • Puisque vous avez présenté une option de hachage (non-réversible) comme alternative, je suppose que vous n'avez pas besoin de réversibilité.

avis sur l'utilisation PBKDF2 vs Bcrypt et si je ou non mettre en œuvre un changement ?

Mon avis:

Utilisez PBKDF2 sur Bcrypt. (J'ai juste plus de foi dans SHA que Blofish, pour aucune raison)

Quant à savoir si vous devriez «implémenter un changement», je ne sais pas ce que vous demandez.

Edité pour séparer plus clairement la discussion de cryptage/hachage de l'affichage de mon algorithme de préférences w/r/t.

+0

"implémenter un changement" signifie convertir mes scripts pour utiliser bcrypt au lieu de l'algo PBKDF2. – buggedcom

+4

Je ne crois pas que bcrypt soit un cryptage. C'est un mécanisme de hachage à sens unique basé sur BLOWFISH – buggedcom

+0

BCrypt * est un algorithme de hachage. –