¿Es una buena idea usar dos sales? [duplicar]

4

¿Es una buena idea usar dos sales? Esto implica que uno sería único para el usuario, y otro sería único para el servidor, utilizando Bcrypt, por supuesto.

Por ejemplo, si está utilizando Golang como su backend, sería una buena idea generar una sal de 20 caracteres de / dev / random, hornearla en el binario de Golang y usarla con 20 caracteres. ¿Sales generadas desde / dev / urandom que son únicas para cada usuario? El proceso de hash se vería como userSalt + serverSalt + password = password digest

La idea detrás de esto es que incluso si un atacante obtiene acceso a su base de datos, aún no podría descifrar las contraseñas porque también necesitarían descompilar su servidor para obtener el serverSalt. Incluso si obtuvieran el serverSalt, necesitarían generar tablas de arco iris, lo que llevaría mucho tiempo debido a Bcrypt.

¡Gracias de antemano!

    
pregunta Belthian 24.02.2015 - 09:43
fuente

1 respuesta

9

Las sales no están destinadas a ser privadas de todos modos. Están diseñados para evitar ataques de tablas de diccionario / arco iris en sus hashes (consulte ¿Por qué están salados? hashes más seguro para el almacenamiento de contraseñas? para más detalles).

hashed_pwd = hash_function(salt + password)

Por lo tanto, usar dos sales sirve para el mismo propósito que usar una sal.

hashed_pwd = hash_function(salt1 + salt2 + password)

Si salt1 + salt2 == salt recuperas el primer código.

    
respondido por el M'vy 24.02.2015 - 09:54
fuente

Lea otras preguntas en las etiquetas