Aunque estoy bastante interesado, soy todo menos un experto en seguridad de la información, reenvíeme a cualquier recurso útil si mi pregunta es estúpida o corríjame si mis suposiciones son erróneas.
Al leer la página de seguridad de Keepass , me pareció que el flujo de trabajo de generar la contraseña que realmente se usa para cifrar el archivo kdbx de la contraseña ingresada por el usuario (asumiendo que no se usan archivos de claves o cuenta de usuario de Windows) es como sigue:
- Tome la contraseña ingresada por el usuario y córtela (SHA-256)
- Genere una contraseña aleatoria / recupérela del archivo kdbx
- Cifre el hash de 1
N
veces usando la clave de 2 - Hash la salida de 3 usando SHA-256 de nuevo
Entonces, la salida de 4 es la clave que se utilizará realmente para cifrar la base de datos.
Lo que me pregunto es: ¿por qué la molestia con la clave almacenada en formato simple y encriptado? ¿Por qué no simplemente omite los pasos 2 y 3 y el hash de la contraseña ingresada por el usuario N
(o tal vez C*N
, siendo C
la relación de tiempo entre el cifrado AES y el hash SHA-256) veces? Estoy bastante seguro de que estoy pasando por alto algo importante aquí y te agradecería que me iluminaras.