Prevención de ataques de diccionario contra contraseñas de hash [duplicado]

1

Tengo un sitio web y en ese sitio uso SHA-256 y elimino las contraseñas de mis usuarios. Lo que estoy haciendo en este momento es rellenar cada letra de la contraseña del usuario con datos de la papelera antes de escribirla. La razón por la que hago esto es que si alguien obtiene un volcado de la base de datos de mi sitio (es poco probable, pero posible), los forzadores brutos / herramientas de ataque de diccionario como John el destripador no funcionarán porque la contraseña con hash no es realmente una palabra de su listas de palabras, pero una versión desordenada.

¿Es esta una estrategia viable o hay otra forma de prevenir los ataques de diccionario? Algunos usuarios han informado problemas con sus contraseñas, que pueden estar o no relacionados con mi método de "pre-hashing", pero me interesó buscar alternativas para las contraseñas de hashing. No puedo usar blowfish con ningún número seguro de rondas debido a la necesidad de que los hash de contraseña calculen en un tiempo razonable.

¿Hay implementaciones de PHP de ese nuevo algoritmo de hashing Keccak SHA3 o sería una mala idea usarlo?

    
pregunta Tar 07.10.2012 - 03:11
fuente

3 respuestas

2

No debe usar SHA-3 aún. Y no lo llamemos Keccak por claridad, no puedo recordar cómo se llamaron SHA-2 y SHA originalmente, así que supongo que los futuros lectores tampoco conocerán Keccak.

Más sobre el tema, su respuesta está aquí: ¿Cómo hash seguro las contraseñas? Esto protege contra los diccionarios y todos los demás ataques posibles de la mejor manera actualmente conocida.

    
respondido por el Luc 07.10.2012 - 03:24
fuente
0

El hash de cualquier palabra del diccionario no debe usarse solo en ninguna solución de contraseña, pero puede usar salting para evitar que lo adivine, así que las diferentes palabras obtienen hashes diferentes, incluso si la misma contraseña se repite dos veces, dos entradas de contraseña diferentes.

enlace

Estos sistemas aún son vulnerables a los ataques de la tabla arco iris, por lo que debe limitar el # auths / second por entidad, para mitigar esto.

Sobre los diferentes algos SHA, más aquí:

enlace enlace

    
respondido por el Istvan 07.10.2012 - 07:09
fuente
0

Si alguien obtiene una copia de su sitio, entonces presumiblemente también obtendrá una copia del código que lo ejecuta, en cuyo caso notarán su esquema de modificación de contraseña. Entonces se vuelve trivial modificar sus diccionarios de craqueo para compensar.

Si, por otra parte, solo obtienen una copia de la base de datos (y no su código), entonces cualquier tipo de personalización de hash será suficiente para evitar cualquier tipo de ataque. Una opción popular es agregar el hash no solo con una cadena aleatoria sino también con un secreto específico del sitio que está contenido en el código del sitio pero no en la base de datos. Esto hace que los hash de contraseña de la base de datos sean inútiles sin obtener también la clave secreta ... lo cual, con suerte, sería más difícil de conseguir.

Además, no olvide PBKDF2, un algoritmo de fortalecimiento de hash que hace que los ataques de diccionario sean más caros.

En cuanto a SHA-3, todavía faltan algunos años para que sea algo que valga la pena considerar. Primero necesita que las implementaciones se escriban, se prueben, se revisen por pares, etc. El SHA-256 o SHA-512 existentes todavía se consideran más que seguros.

    
respondido por el tylerl 07.10.2012 - 07:21
fuente

Lea otras preguntas en las etiquetas