2010-12-13 30 views
15

He estado leyendo sobre el incidente de Gawker y han surgido varios artículos con respecto al uso de bcrypt para contraseñas hash y quiero asegurarme de que mi mecanismo hash sea lo suficientemente seguro como para evitar cambiar a otro método. En mi aplicación actual, he optado por una implementación de PBKDF2 utilizando sha2-512 y un mínimo de 1000 iteraciones.Encriptación de contraseña: PBKDF2 (usando sha512 x 1000) vs Bcrypt

¿Puedo pedir opiniones sobre el uso de PBKDF2 frente a Bcrypt y si debo implementar o no un cambio?

Respuesta

27

Eres bueno con PBKDF2, no necesitas saltar a bcrypt.

Aunque, la recomendación de utilizar 1000 iteraciones se realizó en el año 2000, ahora usted querría mucho más.

Además, debe tener más cuidado al usar bcrypt:

También vale la pena señalar que, si bien es más fuerte que bcrypt PBKDF2 para la mayoría de los tipos de contraseñas, la que se retrasa la contraseña de frase larga; esto se debe a la incapacidad de bcrypt para usar más de los primeros 55 caracteres de una frase de contraseña, mientras que nuestros costos estimados y NIST's. las estimaciones de entropía de contraseña positiva sugieren que la limitación de 55 caracteres de bcrypt no es que pueda causar problemas en este momento; los implementadores de sistemas que se basan en bcrypt podrían evitar esta limitación (por ejemplo, al "prehibirse") una frase de contraseña para que coincida con el límite de 55 caracteres) o para dar pasos a para evitar que los usuarios introduzcan demasiada entropía de contraseña en los caracteres 56th y posteriores (por ejemplo, solicitando a los usuarios de un sitio web que escriban su contraseña en una entrada caja que solo tiene espacio para 55 caracteres).

From scrypt paper [PDF]

Dicho esto, también hay scrypt.

Cualquier comparación no estaría completo sin la tabla del papel scrypt mencionado anteriormente:

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

recuento de iteración para PBKDF2-HMAC-SHA256 utilizan existen 86.000 y 4.300.000.

+5

"pidiendo a los usuarios de un sitio web que escriban su contraseña en un cuadro de entrada que solo tiene espacio para 55 caracteres". Lo siento, pero ¿cómo es aplicable esto al mundo real? Apenas puedo inventar contraseñas de 8 caracteres. – m33lky

+6

Conozco a un chico que usa secuencias de grandes juegos de ajedrez como contraseñas. Él salda las secuencias con los nombres de los jugadores, las fechas, las ciudades jugadas, etc. Conozco a otra persona que usa versos de poemas épicos, con errores intencionales introducidos. Hay muchas formas de obtener contraseñas rápidas. – Cheeso

+1

Debe tenerse en cuenta que hubo un error en el papel de scrypt, y el límite algorítmico real de bcrypt es de 72 caracteres. Entonces todavía hay un límite, pero tiene 128 bits más de entropía. Lo cual es extremadamente significativo. – ircmaxell

-7

Comentarios (re: el título):

  • No utilice el cifrado (reversible) para almacenar las contraseñas a menos que debe.
  • Dado que presentó una opción hashing (no reversible) como alternativa, supongo que no necesita reversibilidad.

opiniones sobre el uso de PBKDF2 vs Bcrypt y si es o no debería poner en práctica un cambio ?

Mi opinión:

Uso PBKDF2 sobre Bcrypt. (Solo tengo más fe en SHA que en Blofish, sin ninguna razón)

En cuanto a si debe 'implementar un cambio', no sé lo que está pidiendo.

Editado para separar más claramente la discusión de cifrado/hash de la indicación de mis preferencias con el algoritmo r/t.

+0

"implementar un cambio", es decir, convertir mis scripts para usar bcrypt en lugar del algoritmo PBKDF2. – buggedcom

+4

No creo que bcrypt sea cifrado. Es una base de mecanismo hash de una manera en BLOWFISH – buggedcom

+0

BCrypt * is * un algoritmo hash. –

Cuestiones relacionadas