Usa la fuerza bruta para mitigar la fuerza bruta

2

Solo una idea que tuve, y estoy seguro de que hay mucho material sobre este tema, así que estoy buscando un indicador de dónde puedo encontrar más información.

Mi idea es esta ...

Al almacenar una contraseña en una base de datos, es común almacenarla como un hash. Esto es débil contra las tablas del arco iris, que se mitiga agregando sal, y también es débil contra los ataques de fuerza bruta.

Estoy pensando que es posible almacenar el hash, modificado con una pequeña cadena aleatoria ...

Usando md5

mypass -> 2b643a4d56186389d84dbb3a9a483e99

Si tiene el hash, la contraseña se puede encontrar simplemente copiando todas las contraseñas posibles y comparando el hash, así que ...

// append a random 3 character string of a-z characters, we can use "xth" for this example
mypassxth -> 02a2247c788681af6ce1bb5fa66dd4c0

La cadena aleatoria nunca se almacena, nunca se comparte y solo reside en la memoria del servidor en el momento de almacenar el hash.

Esto hace que la búsqueda de contraseñas sea menos eficiente, ya que el servidor debe verificar cualquier solicitud entrante mediante el proceso de forzado de la entrada parcialmente completa contra el hash almacenado, lo que en este caso significaría un límite superior de 17576 (26 ^ 3) controles para validar la contraseña.

También haría que el ataque de fuerza bruta sea mucho más difícil en este caso, un límite superior (suponiendo solo a-z) de 5429503678976 (26 ^ 9) en lugar de 308915776 (26 ^ 6).

Supongo que es como usar una sal muy pequeña, que no se almacena en ningún lugar, lo que requiere un forzamiento brutal durante las operaciones de búsqueda.

Suponiendo que no me esté perdiendo por completo algo obvio que haga que esto no funcione, ¿puede alguien decirme cómo se llama este concepto o señalarme algún lugar donde pueda leer sobre él?

    
pregunta Billy Moon 01.04.2013 - 14:21
fuente

1 respuesta

10

En serio, no seas un Dave y enrolla tu propio criptográfico.

Use un KDF comprobado como PBKFD2 , bcrypt o scrypt para cifrar sus contraseñas. Consulte esta gran respuesta para obtener más información sobre cómo cifrar las contraseñas de forma segura.

Para su esquema, mypass ya no es su contraseña. mypassxth es. Un atacante no tiene problemas simplemente forzando la contraseña con su bonita y pequeña GPU ya que está usando MD5 . Esto NO tiene relación con la capacidad de los atacantes de imponer una fuerza bruta a su contraseña, y solo hace que la administración de contraseñas sea mucho más costosa computacionalmente para sus servidores.

Si está utilizando un buen KDF como bcrypt en lugar de MD5 para el hashing de contraseñas, este esquema agregará mucho de carga adicional en sus servidores con muy poca ganancia.

    
respondido por el Ayrx 01.04.2013 - 14:27
fuente

Lea otras preguntas en las etiquetas