Gestores de contraseñas: base de datos cifrada frente a estrategia hash

23

Estoy considerando cambiarme a una estrategia de administración de contraseñas basada en supergenpass o algo similar. Esta es una alternativa a otros administradores de contraseñas donde, en lugar de tener una base de datos de contraseñas cifradas en su clave maestra, su contraseña para cualquier sitio individual es un hash de su clave maestra + el nombre de dominio del sitio, por ejemplo. si su clave secreta era "hunter2", su contraseña para google sería sha-256("hunter2google.com") . Por lo que puedo decir, las ventajas sobre un administrador de contraseñas tradicional son:

  • No hay una base de datos cifrada que tenga el potencial de ser encontrada y descifrada
  • No hay riesgo de perder su base de datos, siempre que conozca su clave maestra y el algoritmo, siempre tendrá acceso a todas sus contraseñas
  • Sin problemas al compartir su base de datos entre dispositivos. Este esquema está descentralizado y puede usarlo en múltiples dispositivos de forma trivial.

Y la desventaja es que estás compartiendo un hash con poca sal de tu llave maestra con cada sitio en el que usas este esquema para iniciar sesión. Pero si tu clave maestra es lo suficientemente compleja, revertir su hash es imposible, ¿no?

¿Hay algo que me haya perdido? ¿Hay una diferencia de seguridad más sustancial entre estas dos estrategias de administración de contraseñas?

    
pregunta MikeFHay 12.04.2014 - 14:18
fuente

1 respuesta

22

Como comenta @CodesInChaos, una base de datos encriptada, si se hace correctamente , será al menos tan fuerte contra los ataques de fuerza bruta como un valor hash. Desde ese punto de vista, el método basado en hash no es más seguro. Sin embargo, hay detalles dependiendo del modelo de ataque:

  • Con la base de datos local de contraseñas, puede usar contraseñas aleatorias específicas del sitio. Si un sitio es hostil, entonces puede aprender su contraseña para ese sitio, pero esto no lo llevará a ningún lado porque no existe una relación matemática real entre la contraseña maestra (para el cifrado de la base de datos) y la contraseña que le muestra a los sitios. Por otra parte, tiene una base de datos local que debe almacenar en algún lugar (por ejemplo, en su computadora portátil), y si un atacante roba ese almacenamiento, entonces puede intentar un ataque de diccionario sin conexión (es decir, fuerza bruta en su contraseña maestra).

  • Con el método basado en hash, no hay ninguna base de datos, por lo que el escenario de robo de una computadora portátil ya no amenaza la confidencialidad de sus contraseñas. Para ese modelo de ataque específico, el método basado en hash es superior. Sin embargo, también implica que cada contraseña específica del sitio puede usarse para un ataque de diccionario sin conexión en la contraseña maestra. Así que esa es la compensación: está privando al ladrón local de los medios para atacar su contraseña maestra, pero le está dando ese medio a cada sitio en el que se registra.

Si su contraseña maestra es lo suficientemente segura (por ejemplo, 80 bits de entropía o más; menos podría ser suficiente es correcto se utiliza el hashing de contraseña , los ataques de diccionario no funcionan, y ambos métodos tienen una seguridad equivalente (es decir," no se puede romper con la fuerza bruta ").

Si su contraseña maestra no es lo suficientemente fuerte como , tenderé a preferir el método de base de datos, porque la seguridad física de una sola computadora portátil parece más fácil que la de que cada sitio que uso sea honesto , competente, y no bajo control hostil.

En cuanto a la facilidad de uso , se puede observar que el método basado en hash tiene los siguientes problemas:

  • Solo obtiene una contraseña por sitio de destino. Si el sitio desea forzar un restablecimiento de la contraseña y filtra los intentos de reutilizar la misma contraseña, perderá.

  • Todos los sitios no tienen requisitos uniformes. De hecho, no hay una contraseña que pueda usarse en todos los sitios , porque los requisitos de longitud y contenido utilizados en la práctica no son compatibles. Por ejemplo, algunos sitios requieren un tamaño de contraseña mínimo de 10 caracteres, mientras que otros ordenan un tamaño de contraseña máximo de 8 caracteres; también hay requisitos contradictorios sobre el uso de signos de puntuación, dígitos, ...

Ambos problemas se resuelven fácilmente al realizar un seguimiento de los requisitos de contraseña específicos del sitio y, posiblemente, de un contador específico del sitio o valor de sal para manejar los restablecimientos. Pero eso significa una "base de datos", que anula la ventaja de usabilidad del método basado en hash. Esa base de datos solo contiene datos públicos, por lo que no es necesario que esté cifrada, pero eso es todo.

    
respondido por el Thomas Pornin 12.04.2014 - 17:47
fuente

Lea otras preguntas en las etiquetas