Ataques de extensión de longitud vs.

Oct 25 2020

Leí que al salar las contraseñas, se recomienda usar una h(pwd||salt)construcción en lugar de h(salt||pwd), esta última es vulnerable a un ataque de extensión de longitud.

¿Cuáles son los posibles escenarios en los que poder extender una contraseña con sal es útil para un atacante?

Soy consciente de que hay mejores formas de almacenar contraseñas que simplemente sazonarlas, aunque todavía me gustaría saber, supuestamente en un caso donde solo se usan contraseñas saladas, cómo poder realizar ataques de extensión de longitud es útil para un atacante.

Respuestas

1 kelalaka Oct 25 2020 at 12:54

No, no son aplicables en absoluto.

Dos casos;

  1. Prueba de contraseña en línea con la interfaz de la aplicación: el atacante no tiene control para ejecutar un ataque de extensión de longitud.

  2. Los atacantes tienen acceso de escritura al servidor:

    Para poder ejecutar un ataque de extensión de longitud en las contraseñas, también debe conocer las contraseñas originales. Si una contraseña tiene hash, en realidad se almacena como

    h(salt||pwd||pad1)

    Con el ataque de extensión de longitud, será

    h(salt||pwd||pad1||extension||pad2)

    Por lo tanto, también necesitan conocer el original. Oye, espera allí , si pueden acceder para escribir, pueden modificarlo conh(salt||password that that know)

Los ataques de extensión de longitud funcionan cuando el atacante puede modificar el mensaje que se va a enviar o durante la transmisión. Un ejemplo es la API Flicker

Nota final: para las contraseñas, necesita un hash de contraseña de memoria dura con control de tiempo de cálculo (posiblemente con iteración). La tendencia actual es utilizar Argon2.