Los cripógrafos pueden señalar que, cuando lees la letra pequeña, no hay ninguna prueba de que las funciones hash seguras realmente existan. Lo único que tenemos ahora son candidatos para los que aún no se ha encontrado ninguna debilidad.
Así que lo mejor que puede esperar es una función que ha sobrevivido al escrutinio de muchos criptógrafos durante mucho tiempo. Además, necesita tener una salida lo suficientemente amplia (256 bits son suficientes si desea lograr la "seguridad de 128 bits" y superar eso tiene poco sentido). En este momento, a partir del verano de 2011, esto apunta a SHA-256 o SHA-512, no a Whirlpool.
Basar el recuento de iteraciones en el tiempo que tarda en una máquina típica es una buena idea, pero basar en el tiempo que realmente toma su máquina es < fuerte> no una buena idea. De lo contrario, podría terminar con un número bajo de iteraciones para algunas contraseñas porque la máquina estaba manejando muchas solicitudes en ese instante (una situación que un atacante podría forzar, por cierto). El uso de muchas iteraciones sirve para frustrar a los atacantes haciendo que el hash de contraseñas sea lento en la computadora del atacante , lo que también hace que su sistema sea lento es un subproducto desafortunado; pero el verdadero objetivo es cualquier poder de la máquina que el atacante pueda reunir. Ya que realmente no puede hacer puntos de referencia en la máquina del atacante, tiene que recurrir a estimaciones aproximadas, por lo tanto, un conteo fijo, lo más alto posible siempre que la carga promedio sea tolerable en su sistema (la palabra importante aquí es "promedio", que descalifica una medida dinámica según su intención de realizar).
Además, la máquina del atacante no necesita verse como la tuya; puede ser, por ejemplo, una GPU o una FPGA , que ofrece distintas capacidades de computación de lo que puede obtener en un servidor típico. Desea una función para la cual un atacante no pueda obtener grandes mejoras de rendimiento mediante el uso de hardware que no sea PC. De nuevo, esto promueve SHA-256 o SHA-512, que están diseñados para la eficiencia de la CPU (con operaciones aritméticas de 32 o 64 bits), no Whirlpool, que puede beneficiarse de optimizaciones de hardware similares a aquellas para las que se diseñó AES.
Finalmente, las iteraciones son solo parte del trabajo; También necesitas una sal suficientemente larga y única. Las iteraciones y la salazón pueden ser un poco difíciles de hacer al mismo tiempo; le recomendamos encarecidamente que utilice una construcción estándar como PBKDF2 (aunque fue pensado como una función de derivación de claves, no una contraseña) hasher, PBKDF2 resulta ser razonablemente bueno en eso también.