He leído algunas veces que al almacenar contraseñas, es una buena práctica 'doble hash' de las cadenas (por ejemplo, con md5 y luego sha1, ambas con sales, obviamente).
Supongo que la primera pregunta es, "¿es esto realmente correcto?" Si no es así, por favor, descarte el resto de esta pregunta :)
La razón por la que pregunto es que, a primera vista, diría que esto tiene sentido. Sin embargo, cuando lo pienso, cada vez que se vuelve a agregar un hash (posiblemente con algo agregado), todo lo que puedo ver es que hay una reducción en el límite superior de la 'singularidad' final ... ese límite está relacionado con La entrada inicial.
Permítanme decirlo de otra manera: tenemos x número de cadenas que, cuando se procesan, se reducen a y posibles cadenas. Es decir, hay colisiones en el primer set. Ahora, desde el segundo conjunto hasta el tercero, ¿no es posible que ocurra lo mismo (es decir, colisiones en el conjunto de todas las cadenas 'y' posibles que resultan en el mismo hash en el tercer conjunto)?
En mi cabeza, todo lo que veo es un 'embudo' para cada llamada de función hash, 'canalizando' un conjunto infinito de posibilidades en un conjunto finito y así sucesivamente, pero obviamente cada llamada está trabajando en el conjunto finito anterior, dándonos un establecer no más grande que la entrada.
¿Quizás un ejemplo explicará mis divagaciones? Tome 'hash_function_a' que le dará a 'a' y 'b' el hash '1', y le dará a 'c' y 'd' el hash '2'. Usando esta función para almacenar contraseñas, incluso si la contraseña es 'a', podría usar la contraseña 'b'.
Tome 'hash_function_b' que le dará a '1' y '2' el hash '3'. Si tuviera que utilizar que como un 'hash de secundaria' después 'hash_function_a' a continuación, incluso si la contraseña es 'a' que podría utilizar 'b', 'c' o 'd'.
Además de todo eso, entiendo que se deben usar sales, pero en realidad no cambian el hecho de que cada vez que estamos asignando entradas 'x' a salidas 'menores que x'. No pienso
¿Puede alguien explicarme qué es lo que me falta aquí?
¡Gracias!
EDITAR: por lo que vale, no hago esto yo mismo, uso bcrypt. Y no estoy realmente preocupado sobre si es útil o no para 'usar ciclos' para un 'hacker'. Realmente me pregunto si el proceso reduce o no la "seguridad" desde un punto de vista de colisión hash.
MD5(password)
. Dijimos que no es seguro, por lo que sugirieron usar en su MD5(MD5(password))
lugar ...