tl; dr: Sí, es razonablemente seguro.
Cuando un atacante sabe que usas KeePass, entonces también podrían asumir que usas la configuración estándar para el generador de contraseñas. Eso les dice la longitud y el conjunto de caracteres [a-zA-Z0-9]. Esto hace que sea un poco más fácil de descifrar que si no se conociera la longitud y si esperaran que usted también use caracteres especiales. Pero incluso con ese conocimiento, las contraseñas generadas aún están lejos, lejos demasiado fuerte para la fuerza bruta.
Pero, ¿cómo se generan exactamente las contraseñas? Si fuera un generador predecible de números pseudoaleatorios, ese podría ser un punto de ataque.
Mirando el código fuente de KeePass 2.30 , el generador de contraseñas parece estar implementado en KeePassLib\Cryptography\PasswordGenerator\PwGenerator.cs
. Utiliza la clase CryptoRandomStream de KeePassLib\Cryptography\CryptoRandomStream.cs
con el cifrado de flujo Salsa20 utilizado como un generador de números aleatorios.
El generador de contraseñas funciona así:
- Se genera un número aleatorio (
PwGenerator.cs
línea 65). Utiliza el estándar RNGCryptoServiceProvider desde el marco .NET ( CryptoRandom.cs
).
- El número aleatorio generado se combina con un poco de entropía adicional si está disponible. No me he molestado en averiguar de dónde proviene esta entropía (para esto se utiliza normalmente un comportamiento impredecible del usuario, como el movimiento del mouse o las pulsaciones de teclas), pero aparentemente no se supone que la entropía esté siempre disponible.
- Se genera un hash SHA256 a partir del valor aleatorio con entropía (
CryptoRandomStream.cs
línea 114-118).
- Ese hash se usa como clave de cifrado para un cifrado de flujo Salsa20 (
CryptoRandomStream.cs
línea 119).
- El cifrado de flujo se usa como un generador de números aleatorios al alimentar repetidamente su salida como entrada (
Salsa20Cipher.cs
línea 176-196).
Para predecir una contraseña, sería necesario descifrar el generador de números aleatorios criptográficos de Microsoft y predecir la entropía (si se utiliza).
Alternativamente, si alguien descifrara el cifrado Salsa20, uno podría predecir una contraseña a partir de la contraseña anterior. Según Wikipedia "A partir de 2015, no hay ataques publicados en Salsa20" .
Saludos cordiales, desarrollador de software irracionalmente diligente.