Strategia di protezione dagli attacchi dei dizionari Keepass

5

Sebbene sia piuttosto interessato, sono tutto tranne che un esperto in Sicurezza delle Informazioni, per favore reindirizzami su qualsiasi risorsa utile se la mia domanda è stupida o correggimi se le mie supposizioni sono sbagliate.
Durante la lettura della pagina Keepass Security mi è sembrato che il flusso di lavoro della generazione della password effettivamente utilizzata per crittografare il file kdbx dalla password immessa dall'utente (supponendo che nessun file chiave o l'account utente di Windows sia utilizzato) è il seguente:

  1. Prendi la password inserita dall'utente e cancellala (SHA-256)
  2. Genera password casuale / recuperale dal file kdbx
  3. Cripta l'hash dall'1% di volte inN utilizzando la chiave da 2
  4. Hash l'output di 3 usando nuovamente SHA-256

Quindi, l'output di 4 è la chiave per essere effettivamente utilizzato per crittografare il database.
Quello che mi sto chiedendo è: perché la seccatura con la chiave memorizzata in chiaro e crittografia? Perché non omettere solo i passaggi 2 e 3 e hash la password inserita dall'utente N (o forse C*N , con C che rappresenta la relazione temporale tra AES-encrypting e SHA-256-hashing) volte? Sono abbastanza sicuro di trascurare qualcosa di importante qui e sarei grato se potessi illuminarmi.

    
posta TheWolf 19.04.2014 - 23:45
fonte

2 risposte

4

[Divulgazione: lavoro per AgileBits, i creatori di 1Password]

Potrei avere la mia storia sbagliata qui, ma credo che KeePass sia progettato per funzionare con i database di PasswordSafe e che PasswordSafe sia stato progettato prima dell'adozione generale di PBKDF2. Quindi quello che stiamo vedendo qui è un approccio "casalingo" per fare il lavoro che PBKDF2 è stato progettato per fare. (E naturalmente PBKDF2 non è l'ideale, ecco perché il mondo sta cercando un successore).

La scelta di AES (in KeePass) rispetto a HMAC (come è tipicamente usata in PBKDF2) come PRF per ogni round non è davvero una grande differenza, poiché entrambi sono PRF. In effetti, PBKDF2 potrebbe essere usato in tale modalità (sebbene l'abbia mai visto solo con HMAC).

È interessante notare che entrambi gli schemi soffrono del problema dell'utilizzo di una chiave / sale costante per il PRF. Questo è ora riconosciuto come un (piccolo) problema (tra uno più grande) con PBKDF2.

Così fuori dalla mia testa e basato esclusivamente sulla tua descrizione di cui sopra, non vedo che lo schema sia peggiore (anche se leggermente migliore) di PBKDF2. Non è così generale come PBKDF2 in termini di flessibilità nella dimensione delle chiavi derivate, ma probabilmente è una buona cosa. Oltre a questo, appare (ancora una volta, solo da uno sguardo casuale) molto simile a PBKDF2-HMAC nei suoi punti di forza e di debolezza.

Nel corso degli anni, sono passato dalla descrizione di PBKDF2 come "Anche il burro di arachidi mantiene i cani amichevoli" a "I bambini delle persone tengono anche i mangimi". Nonostante ciò, lo usiamo ancora (con attenzione) in 1Password, ma attendiamo con impazienza un successore di PBKDF2, scrypt e bcrypt .

    
risposta data 20.04.2014 - 20:06
fonte
3

Che aspetto sembra essere KeePass per l'hashing della password, utilizzando la crittografia AES come parte del processo. Il tasto AES qui svolge il ruolo di salt . Il sale è un parametro non segreto che seleziona la funzione effettiva utilizzata per elaborare la password di input (cioè non c'è una funzione hash one , ma un'intera famiglia, e il sale ti dice quale deve essere Usato). Sali contrastare le tabelle precalcolate e, più in generale, evitare che la ripartizione dei costi tra le istanze di attacco:. Un attaccante non può riutilizzare il lavoro speso per password cracking un hash ad un'altra password hash, perché l'altra password hash utilizza un diverso sale

Più teoria una pratica sulle funzioni di hashing delle password è disponibile .

La funzione KeePass sembra essere un progetto personalizzato, che è (in generale) una cosa negativa. Inoltre, si è basata su AES, in modo un utente malintenzionato può velocizzare l'attacco utilizzando un PC che comprende le AES-NI codici operativi , ovvero un PC di base.

    
risposta data 20.04.2014 - 13:29
fonte

Leggi altre domande sui tag