¿Es md5 (sha1 (pass)) más seguro que md5 (pass)? Por ejemplo, en el caso de sqli cuando un atacante no puede obtener nuestro esquema de hashing, la fuerza bruta o el ataque de diccionario serían mucho menos eficientes. ¿Tengo razón o es inútil?
¿Es md5 (sha1 (pass)) más seguro que md5 (pass)? Por ejemplo, en el caso de sqli cuando un atacante no puede obtener nuestro esquema de hashing, la fuerza bruta o el ataque de diccionario serían mucho menos eficientes. ¿Tengo razón o es inútil?
"MD5 (SHA-1 (contraseña))" es más seguro que "MD5 (contraseña)" en el siguiente sentido: computar SHA-1 y luego MD5 en una contraseña candidata toma aproximadamente 2.5 veces el tiempo que toma computar solo MD5 en la misma contraseña. Por lo tanto, hace que los ataques ingenuos al diccionario 2.5x sean más lentos.
Todavía es patéticamente débil, por dos razones:
2.5x más lento que un solo MD5 es aún muy rápido. Con algunas GPU listas para usar, cualquier atacante con habilidades limitadas y un presupuesto de menos de 1000 dólares aún puede calcular MD5 (SHA-1 (contraseña)) varias miles de millones de veces por segundo. Consulte este sitio para obtener puntos de referencia.
Dado que el esquema es determinista y depende solo de la contraseña (no tiene "sal"), se pueden atacar varios hashes en paralelo; p.ej. con una base de datos de 1000 contraseñas con hash, el atacante puede intentar romper las 1000 por el costo informático de romper solo una. Esto puede optimizarse aún más con tablas precomputadas, en particular las tablas de arco iris .
El cifrado de contraseñas es un campo en sí mismo, y la ciencia ha progresado mucho más allá de la anidación aleatoria de un par de primitivas. Consulte esta respuesta para obtener una introducción a cómo debe ser el hashing de contraseñas. hecho (al menos por ahora; la investigación aún está activa en esa área).
(Y la esperanza de que "el atacante no puede obtener nuestro esquema de hashing" es demasiado optimista. Los atacantes, por regla general, saben mucho más sobre su propio sistema que usted mismo. "La seguridad a través de la incompetencia del atacante" es un método generalizado que tiene nunca conduzca a nada que no sea dolor y mucho rechinar de dientes.)
Lea otras preguntas en las etiquetas passwords hash cryptography md5