sales secretas; ¿Por qué frenan al atacante más que a mí?

54

Al estudiar las diapositivas de Dan Boneh para 'Gestión de sesión y Autenticación de usuario '(2011) menciona' sales secretas 'en la diapositiva' Otras defensas '(diapositiva 48 de 58).

Sugiere almacenar en la base de datos:

Alice|SA|H(pwA , SA , rA)

En el que Alice es el nombre de usuario, SA la sal asociada con Alice y H(pwA , SA , rA) el resultado del hashing de la contraseña de Alicia pwA junto con la sal y un pequeño valor aleatorio rA .

No entiendo por qué agregar un valor aleatorio corto r (8 bits) ralentiza la verificación en un factor de 128, mientras que un atacante se ralentiza en un factor de 256.

    
pregunta harm 06.12.2016 - 18:06
fuente

3 respuestas

101

Esto probablemente se explicaría en la conferencia auditiva que acompañan estas diapositivas.

Mi conjetura es que está calculando esto asumiendo que los usuarios generalmente ingresan sus contraseñas correctas. Solo necesita alternar entre las opciones para r hasta que encuentre una que produzca un hash correcto.

Si le han dado la contraseña correcta, entonces se encontrará con un r que produce un hash correcto; cuando esto suceda exactamente variará (ya que es aleatorio), pero en promedio, pasará por la mitad de las opciones totales (2 ** 8 = 256, 256/2 = 128) antes de encontrarlo.

Sin embargo, el atacante usualmente intentará contraseñas incorrectas . Esto significa que tendrán que probar cada una de las opciones de r , que son las 256 completas.

    
respondido por el Xiong Chiamiov 06.12.2016 - 18:44
fuente
15

Solo para agregar algo más a respuesta de Xiong :

En el caso de un compromiso de la base de datos, un atacante intentará recuperar todas las contraseñas (o al menos las más interesantes), lo que significa que debe probar cada contraseña candidata con cada posible "sal secreta", lo cual es bastante costoso

Mientras tanto, el servidor solo necesita recorrer la posible "sal secreta" con la contraseña ingresada por el usuario. Es probable que no solo la contraseña sea correcta, sino que solo es una para cada inicio de sesión de usuario

    
respondido por el Mr. E 06.12.2016 - 19:58
fuente
1

Además de lo anterior:

protección contra Rainbow Tables y ataques Bruteforce (distribuidos).

Las tablas arco iris contienen los resultados de cualquier hash dado, lo que significa que si tienes uno para un tipo de hashing determinado (sha1 por ejemplo). Simplemente puede buscar el resultado y 'descifrar' un conjunto de hashes con bastante facilidad. Lo cual no funciona si tiene bloques de hash o cada hash individual salado.

Lo mismo ocurre con los ataques Bruteforce distribuidos. Si intenta realizar ingeniería inversa / adivinar de nuevo un resultado de hash (usando debilidades de seguridad en un algoritmo de hash), puede usar estos para acelerar hashes similares. El uso de múltiples máquinas (la parte distribuida) que comienza a buscar un desplazamiento adicional, aumenta considerablemente la posibilidad de un golpe. Si el golpe puede ocurrir en cualquier lugar dentro de un rango dado, la posibilidad de un golpe aumenta enormemente si comienzas en varias compensaciones al mismo tiempo. Además, cualquier hash descubierto puede volver a probarse con los otros hashes dentro del conjunto que estás intentando atacar con fuerza bruta.

Todo esto se vuelve inútil cuando se agrega un hash, ya que el resultado ya no es lineal, predecible o no se puede buscar.

    
respondido por el RC NL 07.12.2016 - 15:06
fuente

Lea otras preguntas en las etiquetas