El valor de la sal no está en su secreto, está en su diferenciación y en la complejidad agregada. Has tocado esto un poco.
Primero, dos contraseñas con diferentes sales tienen diferentes hashes resultantes. Por lo tanto, un atacante no puede mirar una tabla de contraseñas y descubrir usuarios que comparten la misma contraseña.
En segundo lugar, mientras escribe, una tabla de arco iris se puede calcular previamente para un gran conjunto de entradas de contraseña, lo que permite una recuperación rápida de la contraseña con O (1) tiempo. Sin embargo, esto suele ser para contraseñas sin sal.
En tercer lugar, el salt para un hash de contraseña es exclusivo de ese hash y debe tener el mismo tamaño (longitud de bit) que el algoritmo de hash. Una sola tabla de arco iris es el tamaño de todas las entradas de contraseña. Suponiendo contraseñas de 8 caracteres, mayúsculas y minúsculas sensibles a mayúsculas y minúsculas (digamos 10 extra), así que son 72 caracteres. 8 * log2 (72) es de unos 50 bits. Por lo tanto, el almacenamiento de la tabla arco iris para las contraseñas de hash sha-1 es de 50 + 160 o 2 ^ 210 bits.
Con 2 ^ 202 bytes de almacenamiento, eso ya es más grande que todo el almacenamiento actual en el planeta. Creo que podemos concluir dos cosas: 1) no todas las contraseñas se colocan en una tabla de arco iris y 2) las tablas de arco iris sin sal ya son bastante grandes.
Ahora, crear arco iris para todos los medios de sal posibles que requieren 210 * 160 o 2 ^ 33600 bits de almacenamiento. Dónde colocar todos esos datos (otros universos) palidece en comparación con el tiempo requerido para crearlos (más allá del final de nuestro universo).
Las tablas de arco iris por sal no van a suceder.
El ataque adecuado es capturar la base de datos de contraseñas y ejecutar un ataque de diccionario contra entradas individuales utilizando las sales no secretas y específicas para contraseñas.