¿Cómo supera el problema de que la sal sea pública y conocida por el atacante? [duplicar]

0

Creo que al agregar un salt a la contraseña necesitas almacenar los valores para poder calcular el hash nuevamente. Pero, ¿qué pasa si el atacante obtiene la sal?

¿Cómo es posible agregar valor o fuerza a la contraseña si el atacante conoce la sal?

¿Qué me estoy perdiendo?

    
pregunta kiBytes 26.02.2014 - 14:43
fuente

2 respuestas

2

El problema aquí es que la misión de la sal no es ser "secreta", el propósito es ser único, de modo que cuando un atacante "intente una contraseña" con esa sal conocida solo pueda comparar el pase generado con este original hash porque todas las demás contraseñas tendrán hashes diferentes.

Por ejemplo:

Considere no tener sal:

  

usuario1: hashpass1

     

usuario2: hashpass2

     

usuario3: hashpass3

     

usuario4: hashpass1

     

usuario5: hashpass5

Como puede ver, user1 y user4 usan la misma contraseña porque el hash generado es idéntico. Entonces, cuando un atacante encuentra esto, puede marcar una palabra común, por ejemplo: "conejo" y luego comparar conejo con toda la base de datos de contraseñas. También sabrá que todos los hashes idénticos se han generado con la misma contraseña.

Esto es genial para un atacante porque solo necesita hacer Hash UNA vez para compararla con toda la base de datos.

Por otro lado, considere la misma tabla de usuarios con sal

  

usuario1: sal1: salted1hashpass1

     

usuario2: sal2: salted1hashpass2

     

usuario3: sal3: salted1hashpass3

     

usuario4: sal4: salted4hashpass1

     

usuario5: sal5: salted1hashpass5

Ahora, todos los hashes de contraseñas son diferentes debido a la sal, incluso el usuario 1 y el usuario 4 que usaron la misma contraseña tienen hashes diferentes.

Esta es una mala noticia para un atacante, ya que tendrá que calcular la palabra conejo con cada sal que encuentre en la base de datos, por lo que tendrá mucho tiempo para hacerlo. Y este es el verdadero valor agregado por la sal.

    
respondido por el kiBytes 26.02.2014 - 14:49
fuente
1

La contraseña salt no es secreta.

Sin sal, si dos contraseñas son idénticas, los hashes serán idénticos dos. Esto significa que si un atacante puede encontrar una contraseña para un usuario, también podrá determinar qué usuarios están usando la misma contraseña comparando los hashes. Además, cuando muchos hashes son idénticos, es razonable suponer que es una contraseña "popular" que convierte a esta contraseña en un objetivo para el ataque de diccionario.

Con una buena sal aleatoria (obviamente, cada contraseña debe tener una sal aleatoria diferente), todos los hashes son diferentes, incluso si la contraseña es idéntica. Por lo tanto, si un atacante ejecuta un ataque de diccionario en una base de datos de contraseñas, deberá repetir el mismo ataque desde el principio para todas las contraseñas. Hace que el ataque sea mucho más costoso en términos de tiempo y potencia de procesamiento.

    
respondido por el Jcs 26.02.2014 - 14:56
fuente

Lea otras preguntas en las etiquetas