Avrebbe senso usare Bcrypt e PBKDF2 insieme?

9

Ho letto varie opinioni sul fatto che Bcrypt o PDBKF2 sia un metodo di hashing di derivazione della chiave migliore. La risposta sembra dipendere da molti fattori complicati che non sono facili da analizzare. L'utilizzo di entrambi (presumibilmente in modo seriale l'uno prima dell'altro) accrescerà i vantaggi di entrambi e conseguirà quindi una soluzione di sicurezza ottimale?

    
posta Dan 09.02.2012 - 20:20
fonte

1 risposta

12

Mescolare le due funzioni non sarebbe di grande aiuto. Bcrypt e PBKDF2 hanno entrambi un costo configurabile: si suppone di impostare il numero di iterazioni al valore massimo che è ancora tollerabile nella propria situazione, dato l'hardware disponibile e i vincoli ambientali (ad esempio la pazienza media dell'utente). Se si desidera utilizzare entrambe le funzioni insieme, devono condividere lo stesso budget della CPU; in altre parole, dovresti ridurre il numero di iterazioni rispetto a quello che useresti in entrambe le funzioni.

Quindi non ottieni qualcosa di più strong in questo modo; invece, ottieni un livello di sicurezza che è una media di ciò che avresti ottenuto con Bcrypt da solo o con PBKDF2 da solo.

La combinazione di due funzioni di hash o funzioni simili insieme è buona per evitare un errore catastrofico, se si scopre che è rotto; ma, supponendo che sia Bcrypt che PBKDF2 siano forti, e la domanda riguarda principalmente le prestazioni (sia bcrypt che PBKDF2 stanno facendo una ricerca esaustiva più lenta, quindi questo è tutto sulle prestazioni). Per una lentezza ottimale, combinare bcrypt e PBKDF2 è non una buona idea.

Per la scelta tra bcrypt e PBKDF2, vedi questa risposta precedente . Per riassumere:

  • Bcrypt è migliore se il tuo hardware è simile al PC (cioè ha diversi kilobyte di RAM con accesso rapido). È più difficile per l'attaccante ottimizzare la ricerca esauriente con una GPU, se si utilizza bcrypt, rispetto a PBKDF2.

  • PBKDF2 ha la benedizione del NIST (è Approvato, con una grande "A"). Il NIST non dice nulla su bcrypt.

  • Bcrypt emette 192 bit, che va bene per un token di verifica password, o se hai solo bisogno di 192 bit (o meno) di materiale chiave derivato da password. D'altra parte, PBKDF2 è una funzione di derivazione della chiave e può produrre quanti più bit desideri, il che è positivo se tu bisogno di più di 192 bit di materiale chiave.

risposta data 09.02.2012 - 21:52
fonte

Leggi altre domande sui tag