Protegiendo contraseñas usando una longitud de hash corta

1

¿Alguien utiliza longitudes de hash deliberadamente cortas para que las contraseñas aumenten la posibilidad de colisiones falsas positivas en caso de un ataque de fuerza bruta en la base de datos?

Al intentar decidir sobre una longitud de hash, mi suposición predeterminada era "el almacenamiento es barato, hazlo enorme". Sin embargo, en realidad, dado que la debilidad de una contraseña a menudo es que es corta o fácil de adivinar, ninguna cantidad de hash ayudaría a los usuarios en el caso de una violación de la base de datos.

Eso me hizo preguntarme: ¿Alguien usa deliberadamente hashes cortos para ocultar mejor la contraseña original? Si solo hay, digamos, un millón de hashes posibles, obtendrás colisiones por todos lados. De todos modos, cuando la aplicación se ejecuta normalmente, no permitirá que un atacante intente más de un puñado de veces, lo que reduce la posibilidad de que afortunado se acerque a cero. Si la base de datos está comprometida, un atacante será forzado y hallazgo brutal. Todas las contraseñas fáciles sin importar cuál sea su esquema de hash. Sin embargo, si la probabilidad de colisiones es alta, es probable que una fuerza bruta encuentre una contraseña que el usuario no pueda reutilizar en ningún otro lugar.

Supongo que deberías elegir una longitud que proteja lo suficiente la entrada aleatoria de colisiones en un puñado de intentos, mientras que también tienes una probabilidad relativamente alta de tener múltiples palabras de diccionario que coincidan. Y tal vez ese equilibrio no existe.

Entonces mi pregunta es: ¿Alguien hace eso? ¿Hay un nombre para eso?

    
pregunta Vectorjohn 01.11.2017 - 00:00
fuente

2 respuestas

4

No estoy al tanto de que alguien haga esto, actualmente o históricamente.

Veo a lo que te refieres: resistencia al descubrimiento de contraseñas, pero aumentar la probabilidad de colisión como una forma de mitigar los ataques sin conexión es de dudoso valor. Cualquier posible beneficio de hacerlo se ve compensado por los inconvenientes:

  • Si un usuario específico es el objetivo, a menos que haya muchas colisiones, sería fácil para el atacante probar todas las colisiones contra otro sitio o filtrarse hasta que obtuvieran una coincidencia ... lo que confirmaría el verdadero contraseña y cancelar cualquier beneficio de las colisiones.

  • A medida que aumenta el número de colisiones, aumenta el riesgo de un falso positivo en línea para la autenticación (con el sitio original).

  • Esto también significa que se reduce la confiabilidad / no repudio de la autenticación. Otra persona que no sea el usuario podría (teóricamente) iniciar sesión como usuario, sin la contraseña real del usuario. Por lo general, el riesgo de esto es efectivamente cero en el mundo real cuando se utiliza una función hash suficientemente resistente a la colisión. Pero al deliberadamente buscar colisiones, se podría argumentar que no se siguen las mejores prácticas que aseguran la no repudiación en la práctica.

En su lugar, puede obtener una gran cantidad del beneficio que está buscando simplemente almacenando material extra privado (una clave de cifrado o un pimiento) en un HSM . Si se implementa correctamente, esto le dará cierta resistencia real al ataque fuera de línea, sin los inconvenientes de las colisiones frecuentes.

    
respondido por el Royce Williams 01.11.2017 - 04:08
fuente
0

El único beneficio de este esquema es que si su propia base de datos está comprometida, es poco probable que comprometa la cuenta de su usuario en otro sitio , no en el suyo, porque es probable que ese otro sitio use un algoritmo hash diferente (y un salt diferente) para que la contraseña original sea realmente requerida, no para una colisión de hash.

Por otra parte, si contraen una colisión con el hash de la contraseña, para su sitio no importa si no es la contraseña original, pueden usar esa contraseña para iniciar sesión en su cuenta. sitio. Por lo tanto, una colisión con una contraseña corta y común podría comprometer a alguien con una contraseña original aleatoria larga. Esto es malo.

Básicamente, está dando un beneficio dudoso a otros sitios a expensas de su propia seguridad. Parece muy equivocado, así que dudo mucho que alguien lo esté haciendo.

    
respondido por el Ben 01.11.2017 - 15:04
fuente

Lea otras preguntas en las etiquetas