C'è un secondo vantaggio di un file chiave, separato dalla simulazione dell'autenticazione a due fattori (2FA). Sebbene la revisione della tua domanda suggerisca che la risposta a due fattori è ciò che stai cercando nella tua risposta.
Un altro motivo per non avere la chiave di crittografia derivata direttamente dalla password master è consentire che la chiave venga creata a caso invece di essere derivata direttamente dalla password principale. Se creiamo la chiave con un CSPRNG e quindi criptiamo quella chiave con una chiave di cifratura della chiave (KEK), allora possiamo assicurarci che la chiave principale abbia tutta la forza della sua dimensione in bit. Questa è una chiave a 128 bit che sarà davvero potente a 128 bit, anche se un utente sceglie una password master scadente.
Sebbene questo non sia richiesto per le chiavi simmetriche (come usato nei gestori di password), è assolutamente vitale quando si guardano i sistemi a chiave pubblica. In questi casi la chiave privata non può essere solo qualcosa, e quindi non può essere realmente una funzione di una password e un po 'di sale. Ecco perché per cose come PGP o SSH le chiavi sono generate dal software e vengono quindi crittografate con una KEK derivata dalla password.
Ovviamente la derivazione del KEK dalla master password deve ancora essere "allungata" con una funzione di derivazione della chiave come PBKDF2 o scrypt.
Due fattori, ma non l'autenticazione
Nota: il motivo per cui ho detto " simula autenticazione a due fattori" è perché in questi casi non esiste un'autenticazione. Invece c'è decrittazione. Per molti scopi, la distinzione non ha importanza, ma ci sono casi cruciali in cui la distinzione tra una password di autenticazione (o token) da un token di crittografia è enorme.
Nel caso di qualcosa come KeePass, che non è basato sull'autenticazione (non stai dimostrando chi sei per un servizio che poi ti rilascia roba dopo successo), devi ottenere il tuo file chiave su ogni computer o dispositivo che bisogno di usare i tuoi dati su Quindi metterlo su un dispositivo USB potrebbe non funzionare se si desidera anche decrittografare i dati su un telefono. Ci potrebbero essere dei modi per farlo con KeePass, ma vista la mia (possibilmente imperfetta) comprensione dell'architettura presenterebbe alcune difficoltà che dovrebbero essere superate.