El punto de una sal única es este: el trabajo que realiza el atacante para descifrar la contraseña con sal de un usuario no se puede reutilizar contra otro usuario. Por lo tanto, aborda este punto de su pregunta:
Incluso si tuviera que volver a calcular el hash para cada usuario, es solo un cálculo para cada usuario. Y si la aplicación de una sal es O (1), ¿no debería deshacer el costo de cada usuario O (n)?
Piénsalo de esta manera. Supongamos que tiene usuarios de n y el atacante va a realizar conjeturas de contraseña de m . Si no tiene sales, el atacante puede verificar cada una de sus contraseñas m contra todos los usuarios de n , lo que significa que pueden realizar m × n usuario / contraseña par conjeturas.
Por otro lado, con las sales únicas, cada una de las conjeturas de contraseña del m del atacante solo es aplicable a un usuario. Por lo tanto, solo pueden realizar m usuarios / contraseñas de par de contraseñas. Esta es una gran victoria para el defensor.
Y este análisis asume que el atacante conoce todas las sales. Entonces, la respuesta a su pregunta, estrictamente hablando, es que las sales pueden ser públicas porque ofrecen una gran mejora de seguridad incluso si el atacante las conoce. (En contraste con las claves, por ejemplo, los cifrados ofrecen seguridad no contra un atacante que conoce la clave).
Podemos modificar un poco tu pregunta y preguntar: ¿por qué no mantener las sales en secreto? Bueno, eso es realmente una cosa; el nombre popular para "sales secretas" es Pimienta , y hay personas que los usan: ofrecen más seguridad más allá de lo que hacen las sales públicas. Pero muchas personas simplemente no creen que la seguridad adicional valga la pena el tiempo y la molestia de mantener secretos adicionales. Otros son realmente escépticos de que agrega más seguridad en la práctica:
Sin embargo, otros son más positivos sobre los pimientos. Cabe destacar que la llamada a presentación de la Competencia de hash de contraseña permitió específicamente que los algoritmos acepten una "clave secreta" (pepper) además de una sal
Pero una cosa es segura: usar pimientos es mucho más complejo que usar sales públicas, debido a las medidas adicionales necesarias para asegurarse de que un compromiso de la base de datos de contraseñas no comprometa los pimientos.