Non sta usando pbkdf2 + scrypt + bcrypt migliore?

1

Poiché più lento è il migliore e lo stretching chiave è un modo fantastico per aumentare la sicurezza su password potenzialmente più basse, non ha senso usare tutti e tre?

Per essere chiari, si tratta di implementare un'architettura di allungamento chiave per il tuo software. Vedo molte controversie su quale sia il migliore, ma mi sembra - basta usarle tutte e tre.

    
posta Blaze 23.04.2016 - 00:57
fonte

3 risposte

10

PBKDF2, scrypt e bcrypt sono tutti configurabili ; possono essere fatti il più lentamente possibile. Il punto limite non è il computer, ma la pazienza dell'utente.

Ad esempio, supponiamo che l'utente diventi irato se l'elaborazione della password (ad es. per sbloccare un file di archivio) richiede più di 6 secondi. Se si utilizza solo bcrypt, è possibile eseguire l'ottimizzazione in modo che siano necessari 6 secondi sulla macchina. Ma se usi PBKDF2 e scrypt e bcrypt in successione, allora dovranno integrarsi nel budget di 6 secondi, il che significa che, in pratica, li configurerai con conteggi di iterazioni più bassi, ad es. 2 secondi ciascuno. Da questo punto di vista, l'utilizzo di tre algoritmi in successione non è migliore di uno; che importa è il tempo totale .

Il punto di questa lentezza configurabile è che rende le cose più difficili per l'attaccante; vuoi scegliere un algoritmo che induca ogni password a indovinare il più costoso possibile per l'attaccante. L'utente malintenzionato non ha necessariamente lo stesso hardware dell'utente (ad esempio, probabilmente cercherà di utilizzare una GPU), quindi ogni algoritmo potrebbe essere più o meno "buono". L'attaccante può sempre comprare un PC come il tuo, e quindi fare in 6 secondi quello che fai in 6 secondi; tuttavia, l'utente malintenzionato può talvolta acquistare un hardware più specializzato che sarà migliore del proprio per quella specifica attività. Questo è in particolare il caso di PBKDF2 e GPU. Come difensore, vuoi evitare una situazione del genere. Pertanto, alcuni algoritmi sono migliori di altri e, nella triade PBKDF2 / bcrypt / scrypt, si può presumere che un algoritmo sia "più strong" nel senso spiegato sopra.

Quindi, usando solo quell'algoritmo, da solo e con la sua configurazione regolata in modo tale da impiegare tutto il tempo che si può tollerare, sarà ottimale. Per definizione, l'uso di tutti e tre gli algoritmi in successione non può essere tanto strong quanto l'algoritmo unico. In pratica, questo significa che dovresti usare bcrypt: il budget che spendi su PBKDF2 è sprecato sicurezza, poiché, per lo stesso uso della CPU sulla tua macchina, bcrypt avrebbe fornito più resistenza (vedi questo per alcuni dettagli su bcrypt vs scrypt e che per ulteriori dettagli sull'hash della password in generale).

    
risposta data 23.04.2016 - 03:57
fonte
1

In realtà è piuttosto pericoloso farlo. Si potrebbe dire che si stanno aggiungendo punti di forza, ma in realtà si stanno accumulando punti deboli. PBKDF2 non ha alcuna protezione contro le GPU, ad esempio, significa che quei round sono sforzi inutili sul tuo server che l'utente / i processi devono attendere ma non contribuiscono tanto alla sicurezza quanto bcrypt (o scrypt). Bcrypt non ha alcuna protezione contro gli FPGA. Scrypt è progettato per resistere a entrambi. È quindi meglio utilizzare la funzione più potente.

Detto questo, il NIST ha dichiarato che consigliano PBKDF2 che tecnicamente è il più debole ma probabilmente è abbastanza buono. Sono sempre stati ambigili nei confronti di bcrypt però. Scrypt è il nuovo capretto sul blocco e quindi non è così provato come gli altri.

    
risposta data 18.07.2017 - 15:22
fonte
0

Molto dipendente. Dopo un certo punto la crittografia non ne vale la pena. Indipendentemente dalla sicurezza che puoi farcela. Solo perché la tecnica X è più sicura della tecnica Y se i dati vengono rubati è un argomento orribile perché in primo luogo dovresti avere la sicurezza adeguata per assicurarti che non possa essere rubato in primo luogo. Significa che stai cercando di risolvere un problema rispondendo a un altro problema completamente non correlato.

Se il tuo vettore di sicurezza è "Se il mio disco rigido viene rubato, come posso assicurarmi che i contenuti su di esso siano sicuri?" di questo è ancora ancora una cattiva idea, perché la vera risposta è quella di avere una sorta di archivio di chiavi di crittografia fuori hardware in modo che se rubano l'hardware incluso il disco fisso, non possono decodificarlo a meno che non indovinino la chiave. A quel punto l'universo morirà se la crittografia è a un livello abbastanza buono che molto spesso usa solo due di quelli in tandem.

Ricorda che hai infinito chiavi possibili. Se riesci a indovinare le ipotesi dell'infinito in un arco di tempo ragionevole sarei davvero impressionato.

    
risposta data 23.04.2016 - 01:20
fonte

Leggi altre domande sui tag