¿Cómo afecta a la facilidad de descifrar las contraseñas de usuario robadas la obtención de todas las sales en texto plano junto a las contraseñas hash y saladas?

El propósito de la sal es simplemente aumentar el esfuerzo de trabajo involucrado en descifrar los hashes de contraseñas. No pretende ser un secreto, y no puede convertirse en un secreto completo: la aplicación debe poder recuperar tanto la sal como el hash de la base de datos. Además, los mecanismos de hash de contraseñas existentes no separan la sal del hash de tal manera que podría colocarlo en otro lugar; Por lo general, son partes de la misma cadena codificada.

Una buena regla general es asumir que un atacante que puede comprometer su aplicación puede ver toda la información que la aplicación puede ver. Esto incluye toda su base de datos, esquema y código fuente. Cualquier cosa que deba mantenerse en secreto no debe almacenarse de manera reversible en ninguna de estas ubicaciones. (El cifrado de la base de datos es un tema separado y aborda una amenaza diferente).

La mejor manera de proteger las contraseñas de sus usuarios es utilizar un mecanismo de hash de contraseña establecido diseñado con un factor de trabajo alto y / o ajustable, como bcrypt, scrypt, PKBDF2 o PHPass.

Todos los mecanismos de encriptación / hashing son básicamente crackeables dado el poder de cómputo suficiente, pero obviamente se requiere practicidad aquí: descifrar una contraseña de Facebook puede ser divertido, pero no es tan rentable como una contraseña de cuenta bancaria.

Por lo tanto, tener el archivo de contraseña hace que descifrar las contraseñas sea mucho más fácil que no tenerlas, ya que puede hacer análisis de diccionario en las contraseñas mucho más fácil que de otra manera. Pero todavía no es fácil si la contraseña en sí es resistente al ataque del diccionario, ya que el craqueo por fuerza bruta es costoso en términos computacionales. Los hackers probablemente ganarán más dinero cultivando bitcoins con una potencia informática equivalente.

Sin embargo, si los usuarios eligen contraseñas simples, tener sales fuertes y algoritmos de hash realmente no protegen las contraseñas de ser descifradas.

El eslabón más débil en las contraseñas son las contraseñas mismas, no los algoritmos. Las computadoras se pueden asegurar lo suficiente como para que la ingeniería social haya sido el método de piratería más rentable durante mucho tiempo.

Seguro que hace que sea más fácil encontrar el valor de texto en claro correspondiente para la contraseña hash cuando tiene la sal que entró en ese hash en particular. Se ha reducido su superficie de ataque al rango de valores posibles, suponiendo que conozca la sal y el algoritmo de hash.

Me gustaría señalar que almacenar la sal junto a la entrada en hash, especialmente sin garantía, es una muy mala idea. Las sales se consideran entidades criptográficas ya que sin ellas, su seguridad no puede funcionar. Deben almacenarse en criptostores seguros con acceso limitado y controlado. Solo el algoritmo de autenticación utilizado para cifrar contraseñas con fines de comparación necesita acceso a la sal. Una tienda de sal separada, salero como mínimo, como mínimo.