¿Por qué almacenar un salt junto con la contraseña hash? [duplicar]

9

Comprenda la necesidad de proteger las credenciales con hashes que son costosos y usar sales criptográficamente aleatorias.

Lo que me gustaría entender es por qué almacenaría la sal junto con el hash en la base de datos, ¿esto no anula el punto de tener uno?

Tome una vulnerabilidad de inyección SQL en la que puedo volcar los datos en la tabla de Usuario. Si tengo acceso al Hash, así como a la sal, ¿no hace que mi intento de fuerza bruta sea más fácil (como lo es para no saber la sal?).

Si se almacena la sal con el hash, ¿esto no anula el punto de protección contra los ataques del arco iris? (si un atacante tiene acceso a la base de datos).

    
pregunta whoami 22.09.2015 - 18:36
fuente

1 respuesta

24

Puedo ver de dónde vienes, pero la respuesta es básicamente "para eso no es la sal". Si estoy tratando de descubrir la contraseña de un usuario particular , el salt no ayuda mucho si está justo al lado del hash. Sin embargo, no es esperado ser útil en esa situación, ya que es muy difícil descifrar la contraseña de un usuario individual.

El punto de la sal es que es algo que se agrega a cada contraseña antes de hacer un hash, de modo que cada contraseña es única; si los dos usuarios tienen hunter2 como contraseña, los hashes deben ser diferentes.

Supongamos que un atacante está pescando en una base de datos (o en una amplia gama de bases de datos) para encontrar a todas aquellas personas cuya contraseña sea letmein123 . Sin sal, pueden hacer el hash una vez y buscar el hash.

Sin una sal si un atacante detecta dos o más hashes idénticos en la base de datos, indica que esta es una contraseña débil (ya que varios usuarios han elegido la misma) y pueden concentrarse en descifrar esta primero.

Pero el salt es un prefijo / sufijo específico del usuario que se agrega a la contraseña antes del hash, por lo que (incluso con un salt "público") un atacante tiene que volver a calcular el hash para cada usuario, por lo que debe verificar una contraseña. contra 10000 usuarios no es más eficiente que verificar 10000 contraseñas contra un usuario, que es el punto.

    
respondido por el cloudfeet 22.09.2015 - 19:16
fuente

Lea otras preguntas en las etiquetas