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.