Las sales no necesitan ser únicas. No es un requisito absoluto. Sin embargo, cuantas más sales diferentes utilices, mayor será la seguridad, por lo que si pueden ser casi únicas, eso es bueno, pero no te preocupes por que algunas personas puedan compartir una sal debido a una asignación al azar deficiente.
Salt se usa para evitar que las personas utilicen una tabla de arco iris preparada previamente para descifrar sus contraseñas. Si usa la misma sal en todas las contraseñas, ha frustrado la tabla de arco iris preparada previamente, pero puede valer la pena que los crackers creen una tabla de arco iris personalizada para sus contraseñas con sal. Si cambia la sal para algunos usuarios, entonces reduce la ganancia potencial para el cracker al producir su tabla de arco iris. Por ejemplo, si tiene dos sales usadas al azar, entonces el cracker necesita crear dos tablas de arco iris. Si usa 50 sales al azar, entonces el cracker debe crear 50 tablas arco iris para obtener más trabajo. Si utiliza una sal generada aleatoriamente para cada usuario, el cracker tiene que recrear una nueva tabla de arco iris para cada usuario. Ahora es tanto trabajo que el cracker no se molestará en intentarlo y usará un ataque diferente en su lugar.
Si ha generado sales al azar para cada usuario, existe la posibilidad de que dos o más sales de usuario sean idénticas. Esto solo afectaría marginalmente la seguridad de los sitios. Un cracker ahora podría usar una tabla arco iris personalizada para descifrar todas las contraseñas con sal idénticas. Esto podría ser un ataque viable si el número de usuarios con sales idénticas es lo suficientemente grande. Si el número de sales idénticas está en las cifras individuales, entonces no supondría un gran problema.
El valor de la sal no tiene por qué ser un secreto. Algunas personas realizan la ocultación del valor de sal, pero en general los sistemas de contraseña no lo hacen. Mantener el secreto de la sal no proporciona mucha seguridad adicional. El propósito de la sal es asegurar que los algoritmos de contraseña no sean similares para cada usuario y, por lo tanto, bloquear los ataques de la tabla arco iris. Saber que la sal no hace que los hashes sean más fáciles de romper, siempre y cuando las sales sean generalmente casi únicas.