Bcrypt come funzione di derivazione chiave?

9

Ho letto molte voci nello stack exchange su bcrypt e perché dovrebbe essere migliore di PBKDF2 in termini di memorizzazione delle password .

Sto chiedendo ora se bcrypt è migliore di PBKDF2 in termini di derivazione della chiave? Nel mio caso, devo solo derivare una chiave simmetrica per la crittografia AES (ad esempio una lunghezza della chiave di 256 bit). Questa chiave non deve essere salvata, è solo utilizzata al volo per la crittografia. Cosa suggeriresti, bcrypt è migliore in questo scenario rispetto a PBKDF2?

Saluti, Pits

    
posta Pits 24.01.2012 - 16:07
fonte

1 risposta

8

Bcrypt restituisce un risultato a 192 bit, né più né meno. Questo è un inconveniente se si desidera una chiave più lunga di 192 bit, ad es. una chiave AES a 256 bit. In questa situazione, ti consiglio di prendere l'output bcrypt e di eseguirne l'hashing con una funzione hash sicura con un output sufficientemente grande per la lunghezza del materiale chiave richiesta (ad esempio se hai bisogno di una chiave di crittografia a 256 bit e a 128 -bit tasto MAC, utilizzare SHA-384 o SHA-512). Altrimenti, bcrypt è considerato valido per quanto riguarda la derivazione della chiave.

(Generare una chiave di crittografia a 256 bit da un valore di 192 bit non ha molto senso, ma usare AES a 256 bit invece di AES a 128 bit non ha molto senso, praticamente parlando. il sistema bcrypt-powered, in ogni caso, è che le chiavi provengono da una password memorizzata dall'uomo, bcrypt rende tollerabile , ma neanche lontanamente sicuro come una chiave a 128 bit veramente casuale, tanto meno un Chiave a 192-bit o 256-bit. Quindi se hai bisogno di una chiave a 256-bit per "ragioni amministrative", generando quella dall'output di bcrypt e una funzione di hash non creerebbe alcun problema di sicurezza reale aggiuntivo.)

Bcrypt ha un piccolo inconveniente in quanto se dividi un output di bcrypt a 192 bit in tre valori a 64 bit, è matematicamente garantito che i tre valori a 64 bit saranno distinti l'uno dall'altro. Quindi, l'output di bcrypt può essere distinto da quello di un oracolo casuale esaminando circa 2 64 uscite distinte di bcrypt (per valori casuali di 192 bit, ci si potrebbe aspettare di incontrare una collisione di blocco - due dei tre valori a 64 bit uguali tra loro - dopo una media di 2 valori 64 / 3). Questo è un pregiudizio molto leggero che non ha conseguenze pratiche per la sicurezza.

    
risposta data 24.01.2012 - 16:30
fonte

Leggi altre domande sui tag