In che modo un file chiave aumenta la sicurezza di un gestore di password?

19

I gestori di password come KeePass hanno spesso un'opzione per utilizzare un key file oltre a una password principale.

Non capisco come ciò accresca la sicurezza.

(Nota: KeePass consente anche di usare un file chiave invece di una password principale, ma in questa domanda ti sto chiedendo specificatamente di usare uno in aggiunta a una password principale.)

Poiché il database delle password non può essere decifrato senza il file chiave, il file chiave deve essere memorizzato da qualche parte, proprio come il database delle password stesso. Perché il file chiave è più difficile da ottenere per un avversario rispetto al database delle password stesso?

    
posta HighCommander4 19.10.2013 - 08:05
fonte

4 risposte

18

I metodi di autenticazione possono spesso essere suddivisi in una delle tre aree: qualcosa che l'utente conosce, qualcosa che l'utente ha e qualcosa che l'utente è.

Le password sono qualcosa che l'utente sa. L'utente lo memorizza nella sua testa e può "recuperarlo" dalla memoria come e quando è necessario.

Il file chiave agisce come qualcosa che l'utente ha. Idealmente, questo file chiave deve essere archiviato in un luogo sicuro.

Personalmente, ho copie del mio database delle password ovunque . Il mio desktop ha una copia, il mio portatile ha una copia, il mio telefono ne ha una copia, il mio tablet ne ha una copia. Conservo il mio database delle password su Dropbox che mi permette di tenerlo sincronizzato tra i miei vari dispositivi.

Tuttavia, non memorizzo il mio file di chiavi insieme con il mio database delle password. Il mio telefono e tablet ne ha una copia, perché non è possibile inserire un'unità USB in questi dispositivi, ma il mio desktop e il mio portatile no. Conservo il mio file di chiave su un drive USB che tengo sulla mia persona in ogni momento. Ciò rende leggermente più difficile per un utente malintenzionato ottenere il mio file chiave.

L'utilizzo di un file chiave in aggiunta a una password principale è utile, poiché aumenta la difficoltà di compromettere il database delle password con successo.

    
risposta data 19.10.2013 - 08:18
fonte
6

Il file chiave contiene la chiave utilizzata per crittografare il database. Spesso è anche protetto da una password. Se non si dispone del file chiave, è impossibile ricavare la chiave dal testo cifrato per ottenere l'equivalente in testo normale. Quindi, se un utente malintenzionato dovesse ottenere il tuo database, avrebbe comunque bisogno di ottenere il tuo file di chiavi, qualcosa che hai . Se il file di chiavi è inoltre crittografato con una password (come dovresti), allora ha anche bisogno di qualcosa sai . Quindi questo è due fattori di autenticazione .

Se si archivia il file di chiavi lungo il database, un utente malintenzionato dovrebbe "solo" aver bisogno di bruteforce o di dizionario per attaccare il file di chiavi (che è molto più piccolo e richiede molto meno tempo dell'attacco all'intero database). Tuttavia, se si dispone di una password complessa, questa operazione dovrebbe durare quasi per sempre (a seconda della casualità / entropia della password).

Ma aggiungere un altro fattore aggiunge ulteriore sicurezza in quanto un utente malintenzionato dovrà comunque ottenere due cose da te, anziché una.

È un po 'come archiviare le tue chiavi su un portachiavi. Ma non conserverai la tua chiave accanto alla tua porta chiusa, giusto? Bene, questo è simile.

    
risposta data 19.10.2013 - 09:52
fonte
2

Oltre a fungere da "qualcosa che hai" , l'opzione per utilizzare un file di chiavi consente una maggiore flessibilità negli altri due fattori ( "qualcosa che conosci" e "qualcosa che sei" ) senza dover implementare esplicitamente tale comportamento nell'applicazione.

Example 1: "Something you know" could be run through a custom or stronger key derivation function than KeePass (especially v1.x compatible) can support; then loaded in as a keyfile.

Example 2: "Something you are" could be run through a biometric scanner that writes out a bio-signature which is then run through a trapdoor function and/or key derivation function to be loaded into KeePass which has no native awareness of biometrics, especially on operating systems with no "TWAIN" equivalent biometric standard.

Example 3: "Something you are" in the more generic sense of prove you are a human* by regenerating the keyfile (or one stage thereof) from a human typing in a CAPTCHA image (or one or another possible successors) stored publicly along with the keystore.

In sostanza, l'opzione keyfile può agire come un generico catch-all per qualsiasi fonte di entropia che si possa immaginare - entro il limite dello schema di crittografia del keystore sottostante (256 bit per KeePass).

* O HAL 9000.

    
risposta data 19.10.2013 - 12:34
fonte
2

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.

    
risposta data 20.10.2013 - 07:30
fonte

Leggi altre domande sui tag