Sono utili più iterazioni di bcrypt?

1

In che modo si confrontano questi due modi di hashing, in termini di sicurezza?

bcrypt(15, bcrypt(15, bcrypt(15, bcrypt(15, "password"))))

bcrypt(15, "password")

So che, di solito, l'iterazione su un metodo di hashing non lo rende più sicuro, ma quando un utente malintenzionato trova il testo in chiaro del primo bcrypt, non è questo testo in chiaro un altro hash crittografico che deve applicare nuovamente a bruteforce, e questo tante volte quante sono le iterazioni?

    
posta Magix 11.08.2016 - 10:14
fonte

2 risposte

4

BCrypt è stato ben progettato e ci sono state molte riflessioni sul suo funzionamento. C'è un'impostazione speciale inclusa chiamata fattore di lavoro per aggiungere lavoro quando l'utente malintenzionato tenta di decifrare la password.

Queste due soluzioni richiedono lo stesso tempo per il calcolo.

bcrypt(15, bcrypt(15, bcrypt(15, bcrypt(15, "password"))))

bcrypt(17, "password")

(il fattore di lavoro 16 impiega il doppio del tempo di 15 e il 17 richiede quattro volte il tempo di 15)

Non c'è niente da guadagnare nel complicare la procedura del codice. Basta scegliere il fattore di lavoro ideale. Di solito suggerisco di regolare il fattore di lavoro in modo che occorra ~ 100ms per completare (con la protezione DoS bruta appropriata) sull'hardware di destinazione. (notando che l'hardware dell'attaccante sarebbe probabilmente più veloce)

Se stai cercando dei modi per migliorarlo, ti suggerirei di Pepper in attesa prima della password. Pepper è semplicemente una stringa casuale che non è memorizzata con l'hash stesso. È possibile eseguire l'hard-code del pepe nell'applicazione o salvarlo in un file di testo separato. (non nel database) Raccomando di usare un peperone con 72-bit di entropia. (12 caratteri Base64 o 18 caratteri esadecimali)

Poiché BCrypt ha una lunghezza massima di 55-56 byte , potrebbe essere saggio prima eseguire un hash SHA-256 su Pepper e Password, per ottenere una stringa esadecimale di 32 caratteri, che si adatta perfettamente a BCrypt. (altrimenti, supponendo di aver usato un pepe di 12 caratteri, qualsiasi carattere oltre la password di 43 byte sarebbe troncato) Grazie a @Walfrat .

    
risposta data 11.08.2016 - 15:12
fonte
3

L'algoritmo di BCrypt sta già eseguendo il loop dei propri dati, se vuoi maggiore sicurezza aumenta il fattore di carico (il tuo 15 qui).

Inoltre, in base a questo post: Bcrypt ha una lunghezza massima della password ? , BCrypt ha una lunghezza massima di 50 ~ 55 byte e in base a questo ( link ) un hash Bcrypt è lungo 59 ~ 60 byte. Quindi non funzionerà o potrebbe finire male a seconda dell'implementazione.

    
risposta data 11.08.2016 - 10:50
fonte

Leggi altre domande sui tag