¿Existe algún riesgo en usar el mismo salt para varios hashes en un usuario?

13

Ahora mismo estoy almacenando un salt y password_hash en la tabla de usuarios (cosas bastante estándar).

Surgió la necesidad de obtener un hash seguro de otro campo para un usuario. ¿Existe algún riesgo al reutilizar la misma sal utilizada en la contraseña? En otras palabras, ¿el hecho de usar la misma sal en varios hashes facilita el resquebrajamiento, asumiendo que el atacante tenía todos los hashes junto con la sal única? Si es así, ¿cuánto?

¡Gracias!

    
pregunta Brian Armstrong 15.08.2011 - 02:10
fuente

1 respuesta

12

El punto, y el único uso, de la sal es evitar que un atacante ataque varios elementos N por menos de N el costo de atacar uno. Aquí, "atacar" significa "probar valores posibles hasta que se encuentre uno que coincida con el valor hash conocido". Sin una sal, un atacante podría comparar sus conjeturas con varios valores de hash, compartiendo así el costo de calcular el hash; p.ej. el atacante tiene varios valores hash para atacar simultáneamente, o el atacante construye una tabla precalculada de valores hash para una búsqueda rápida (módulo a espacio / intercambio de tiempo, ambos ataques son idénticos).

Si usa el mismo salt para la contraseña de un usuario y para otro campo, entonces un atacante podría intentar atacar a ambos. Esto será ventajoso para el atacante solo si los valores potenciales para el otro campo también son contraseñas potenciales, y viceversa. Esto puede o no aplicarse a su contexto.

En general, las sales nunca deben reutilizarse, solo porque las consecuencias de la reutilización no son fáciles de detallar exhaustivamente. Le recomiendo que se abstenga de reutilizar sus sales.

    
respondido por el Thomas Pornin 15.08.2011 - 03:22
fuente

Lea otras preguntas en las etiquetas