Entiendo la idea básica de las sales de contraseña.
- Se genera una cadena de datos 'aleatoria'
- anteponer estos datos a una contraseña de usuario
- almacene la contraseña y la sal (sal puede que incluso en forma 'clara')
Me gusta en el siguiente escenario: Tiene una aplicación móvil del lado del cliente y una aplicación de servidor con una base de datos. El usuario se registra con un nombre de usuario y contraseña utilizando la aplicación móvil. La contraseña obtiene un valor de sal añadido y se almacena como hash en el lado del servidor. La sal también debe almacenarse en el lado del servidor, porque no confiaría en absoluto en el cliente móvil. Y la sal debe estar conectada de alguna manera a la cuenta de usuario correcta. Así que supongamos que se almacena en la misma tabla de usuario junto a la contraseña.
¿Cómo podría el uso de un salt en este caso prevenir un ataque (por ejemplo, un ataque de diccionario)? Si el atacante ya tiene acceso al servidor de la base de datos, sería fácil obtener la sal. Si el atacante usa la interfaz de la aplicación del servidor de una manera adecuada, la sal también se aplicaría a sus 'intentos de ataque para iniciar sesión'. Tal vez me esté perdiendo algún punto importante de cómo este tipo de ataque se lleva a cabo usualmente. ¿O este sistema solo sería seguro si la sal y el hashing se ejecutaran directamente en el cliente?