¿Bcrypt encima de md5 reduce su seguridad?

9

Un proyecto de GitHub que verifiqué recientemente tiene una seguridad defectuosa, ya que están usando un md5 () sin sal para cifrar las contraseñas. Abrí un error y lo reconocieron. Sin embargo, la transición de md5 () a bcrypt significaría que todos los usuarios tendrían que iniciar sesión para poder migrar la contraseña.

Entonces, mi pregunta es, ¿ si el uso de bcrypt sobre md5 () reduce la seguridad?

// For already logged in users:
if (password_verify(md5($_POST['pass']), $DBHash)) {

  }

De esa manera, toda la base de datos podría migrarse fácilmente, en lugar de migrar a cada usuario individualmente.

¿Debería haber algún otro problema además del hecho de que PHP podría agotarse si no se maneja correctamente? (alrededor de 1 segundo por cada hash).

    
pregunta Francisco Presencia 22.11.2013 - 13:16
fuente

1 respuesta

15

Absolutamente no. De hecho, este es casi el procedimiento estándar para la migración de un esquema de hashing débil a cifrado en cada proyecto con el que trabajé.

Lo que suele suceder es que se establece una marca para cada usuario que indica que sus contraseñas usan el esquema anterior, y cada vez que inician sesión, la aplicación usa la lógica de inicio de sesión compatible con versiones anteriores. Una vez que el usuario inicia sesión, tiene su contraseña de texto sin formato, y ahora puede simplemente tomar la nueva contraseña y almacenarla usando solo bcrypt, y desactive la bandera. Todos los usuarios nuevos utilizan el nuevo esquema de solo bcrypt.

Alternativamente, puede seguir la sugerencia de CodesInChaos y atenerse a la nueva bcrypt(md5()) . Si bien es cierto que no tiene ningún beneficio de seguridad, personalmente me gusta mantenerlo solo bcrypt() .

    
respondido por el Adi 22.11.2013 - 13:24
fuente

Lea otras preguntas en las etiquetas