Debido a que el estiramiento de las teclas se reduce básicamente al hash hashes una y otra vez (donde sal, pimienta y contraseña individualizan la función hash, pero el principio sigue siendo el mismo), me pregunto acerca de esta pregunta.
Por un lado, los hashes deben estar tan libres de colisiones como sea posible. Para los hashes en sí, eso es teóricamente alcanzable debido a la misma longitud, pero esto daría lugar a la existencia de un mapa biyectivo, es decir, para cada hash h₁ se podría dar otro hash h₂, cuyo hash es el hash original h otra vez, por lo que Puede invertir el hash. Luego, puede "simplemente" usar la inversión para invertir toda la cadena de hashes y crear una contraseña válida; aún peor, si la sal / pimienta y la contraseña influyen en la derivación clave de la misma manera, esto podría inutilizar la salada desde que se elaboró. La contraseña podría compensar su influencia.
Por otra parte, si hashes hashes hash, esto significa que algunos hashes son más seguros que otros, algunos hashes no se pueden obtener mediante hash otro hash, pero otros hashes se pueden obtener a partir de múltiples hashes. Y estos hashes serían atractivos y serían mucho más propensos a ocurrir después de muchas rondas de hash que los inalcanzables, reduciendo efectivamente el posible espacio clave.
Entonces, ¿cuál de estas dos posibilidades es peor y cuál es el caso real en realidad? Dado que la elección de la contraseña y la sal / pimienta modifican la función de hash, ¿depende la respuesta de eso? ¿Podría resolverse este problema concatenando toda la cadena de hashes en lugar de solo la final? (Si eso no tiene un nombre, ¿puedo proponer hash cat?)