Sé que md5 no se considera seguro, pero ¿qué pasaría si alguien usara md5 (md5 (contraseña) .salt)? ¿No es esto técnicamente mejor / más seguro?
El hash md5(md5(password).salt)
es tan seguro como md5(password.salt)
.
Toda la diferencia que puedo ver es el cálculo adicional de MD5 md5(password)
que aumenta el tiempo de cálculo que el atacante necesita gastar un poco y puede que no suponga una gran diferencia.
Digamos que el atacante toma las 100 contraseñas más usadas como welcome,monkey
con valores md5
40be4e59b9a2a2b5dffb918c0e86b3d7,d0763edaa9d9bd2a9516280e9044d885
respectivamente.
Necesita la contraseña de fuerza bruta y sal en md5(md5(password).salt)
usando la lista welcome,monkey
.
Ejemplo: md5(md5("welcome").salt)
Puede simplemente eliminar ese cálculo adicional de MD5 utilizando la lista de valores md5 calculados una vez.
Ejemplo: md5("40be4e59b9a2a2b5dffb918c0e86b3d7".salt)
Estas combinaciones a menudo se admiten de forma remota mediante herramientas de craqueo de contraseñas. Eche un vistazo a los algoritmos de hashcat y verá muchas combinaciones similares. MD5 no es apropiado para las contraseñas de hash debido a su velocidad, forzar la fuerza bruta es demasiado fácil (alrededor de 100 Giga MD5 por segundo), por lo que no es seguro.
No
Cuando está usando el método md5 (md5 (password) .salt) es tan fuerte como md5 (password.salt). Parece que necesita más tiempo para encontrar una colisión cuando está utilizando el método md5 (md5 (contraseña) .salt). En ese caso, puede usar bcrypt para ralentizar manualmente la operación de ataque de colisión. Y usando el viejo md5 - mala idea.