Password Managers: database crittografato contro strategia di hashing

22

Sto considerando di passare a una strategia di gestione delle password basata su supergenpass o qualcosa di simile. Questa è un'alternativa ad altri gestori di password dove invece di avere un database di password crittografate sulla tua chiave master, la tua password per ogni singolo sito è un hash della tua chiave master + il nome di dominio del sito, ad es. se la tua chiave segreta era "hunter2", la tua password per google sarebbe sha-256("hunter2google.com") . Per quanto ne so, i vantaggi rispetto a un gestore di password tradizionale sono:

  • Nessun database crittografato che abbia il potenziale per essere trovato e decrittografato
  • Nessun rischio di perdere il tuo database, purché tu conosca la tua chiave master e l'algoritmo avrai sempre accesso a tutte le tue password
  • Nessun problema con la condivisione del database su tutti i dispositivi. Questo schema è decentralizzato e puoi usarlo su più dispositivi banalmente.

E lo svantaggio è che stai condividendo un hash scarsamente salato della tua chiave principale con ogni sito su cui usi questo schema per accedere. Ma se la tua chiave principale è sufficientemente complessa, l'inversione del suo hash è impossibile, giusto?

C'è qualcosa che mi è mancato? C'è una differenza di sicurezza più sostanziale tra queste due strategie di gestione delle password?

    
posta MikeFHay 12.04.2014 - 14:18
fonte

1 risposta

22

Come commenti @CodesInChaos, un database crittografato, se fatto correttamente , sarà almeno altrettanto strong contro gli attacchi brute-force come un valore hash. Da quel punto di vista, il metodo basato su hash non è più sicuro. Ci sono tuttavia dei dettagli, a seconda del modello di attacco:

  • Con il database locale delle password, è possibile utilizzare password casuali specifiche del sito. Se un sito è ostile, allora potrebbe apprendere la password per quel sito, ma questo non lo porterà da nessuna parte perché non esiste una reale relazione matematica tra la password principale (per la crittografia del database) e la password che mostri ai siti. D'altra parte, hai un database locale che devi memorizzare da qualche parte (ad esempio nel tuo computer portatile), e se un utente malintenzionato ruba tale spazio di archiviazione, allora può provare un attacco di dizionario offline (cioè forza bruta sulla tua password principale).

  • Con il metodo basato su hash, non esiste alcun database, quindi lo scenario di furto del laptop non minaccia più la riservatezza delle password. Per quel modello di attacco specifico, il metodo basato sull'hash è superiore. Tuttavia, implica anche che ogni password specifica del sito possa essere utilizzata per un attacco di dizionario offline sulla password principale. Quindi questo è il compromesso: stai privando il ladro locale di mezzi per attaccare la tua password principale, ma stai dando tali mezzi a tutti i siti in cui ti sei registrato.

Se la tua password principale è abbastanza strong (diciamo 80 bit di entropia o più, meno potrebbe essere sufficiente è corretta hashing password viene utilizzato), quindi gli attacchi dizionario non funzionano, ed entrambi i metodi hanno una sicurezza equivalente (cioè" non si può distruggere con la forza bruta ").

Se la tua password principale è non abbastanza strong, tenderò a preferire il metodo del database, perché garantire la sicurezza fisica di un singolo laptop sembra più semplice che garantire che ogni singolo sito che uso sia onesto , competente e non sotto controllo ostile.

Come per usabilità , si può notare che il metodo basato su hash ha i seguenti problemi:

  • Ottieni una sola password per sito di destinazione. Se il sito desidera forzare una reimpostazione della password e esclude tentativi di riutilizzare la stessa password, allora perdi.

  • Tutti i siti non hanno requisiti uniformi. In effetti non esiste una password che possa essere utilizzata su ogni sito, perché i requisiti di lunghezza e contenuto utilizzati nella pratica non sono compatibili. Ad esempio, alcuni siti richiedono una dimensione minima della password di 10 caratteri, mentre altri richiedono una dimensione massima della password di 8 caratteri; ci sono anche requisiti in conflitto sull'uso di segni di punteggiatura, cifre, ...

Entrambi i problemi sono facilmente risolti tenendo traccia dei requisiti della password specifici del sito e, eventualmente, di un contatore specifico del sito o di un valore di sale per gestire le reimpostazioni. Ma ciò significa un "database", che annulla il vantaggio dell'usabilità del metodo basato sull'hash. Quel database contiene solo dati pubblici quindi non ha bisogno di essere crittografato, ma questo è tutto.

    
risposta data 12.04.2014 - 17:47
fonte

Leggi altre domande sui tag