Costos de algoritmos de hash vs sueño

1

Entiendo la mayoría de los conceptos detrás de la contraseña de hash, pero este aún se me escapa.

Entiendo que quieres que el hash tome algo de tiempo (un par de milisegundos) para que el atacante no pueda atacar con fuerza. Pero al mismo tiempo, no desea que el hash tome demasiados recursos informáticos.

¿Por qué no solo hash y luego sleep durante 0.1 segundos?

    
pregunta Hurricane Development 14.08.2015 - 09:10
fuente

3 respuestas

7

Las contraseñas están en hash para el caso de que un atacante pueda leer los hashes de la base de datos (por ejemplo, inyección de SQL). Después, puede utilizar la fuerza bruta con la velocidad máxima de su propio entorno, a menudo con una GPU, esto se denomina un ataque sin conexión.

Por otra parte, un modo de espera solo podría proteger de los ataques en línea, incluso cuando un atacante podría realizar varias solicitudes y esperar a que los resultados se retrasen un poco pero no sean más lentos.

    
respondido por el martinstoeckli 14.08.2015 - 09:30
fuente
1

Los hash protegen las contraseñas en caso de que el atacante se apodere de la base de datos de contraseñas. Si agregar sleep a la autenticación sería suficiente para evitar el forzamiento brutal, esto significaría automáticamente que su modelo de amenaza permite el almacenamiento de las contraseñas de forma clara porque solo le preocupan los ataques en línea. Ya que casi ningún modelo de amenaza supone que sus sistemas no se verán comprometidos (sería muy irresponsable suponer eso), debe proteger las contraseñas de modo que sean resistentes frente a los ataques sin conexión y, luego, cualquier sleep que haya agregado a su código. es completamente irrelevante.

    
respondido por el Art 14.08.2015 - 09:28
fuente
0

Lo importante es que el atacante no debe ser capaz de obtener fuerza bruta para acceder. Eso no significa necesariamente que el algoritmo hash tenga que ser lento. El flujo de inicio de sesión de extremo a extremo debe ser lo suficientemente lento. Esto se puede lograr de varias maneras:

  1. Como mencionas, cambia el algoritmo de hash para que sea lento.
  2. No permitir intentos de inicio de sesión durante un cierto tiempo después de un cierto número de intentos incorrectos.
  3. Mandar contraseñas de mayor longitud y complejidad. (Mayor longitud aumenta el número de posibilidades que se intentarán en un intento de fuerza bruta)

Las opciones 1 y 2 no sirven de nada si el pirata informático obtiene acceso a la forma de hash de la contraseña y al algoritmo de hash.

Editado con la sugerencia del comentario:

La opción 2 no sirve de nada si el pirata informático obtiene acceso a la forma de hash de la contraseña y al algoritmo de hash.

La opción 1 también es inútil si la lentitud se debe en gran parte a la suspensión que puede solucionarse (por ejemplo, si el código fuente del algoritmo hash está disponible, entonces es fácil eliminar la suspensión. Otras opciones son posibles sin el código fuente también)

    
respondido por el Turbo 14.08.2015 - 09:18
fuente

Lea otras preguntas en las etiquetas