¿El generador de contraseñas aleatorias de keepass es completamente seguro y confiable?

12

¿Estoy seguro usando keepass para generar contraseñas? Por ejemplo, mis cuentas, ¿estoy seguro usando una contraseña generada por keepass? ¿Podrían generarse de forma segura mis futuras claves maestras de keepass en keepass? ¿Qué método se utiliza? Keepass 2.30 para Windows y Linux.

Gracias, Usuario de Keepass iranalmente paranoico.

    
pregunta keepass_fan 13.12.2015 - 03:08
fuente

1 respuesta

18

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í:

  1. Se genera un número aleatorio ( PwGenerator.cs línea 65). Utiliza el estándar RNGCryptoServiceProvider desde el marco .NET ( CryptoRandom.cs ).
  2. 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.
  3. Se genera un hash SHA256 a partir del valor aleatorio con entropía ( CryptoRandomStream.cs línea 114-118).
  4. Ese hash se usa como clave de cifrado para un cifrado de flujo Salsa20 ( CryptoRandomStream.cs línea 119).
  5. 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.

    
respondido por el Philipp 13.12.2015 - 04:20
fuente

Lea otras preguntas en las etiquetas