Si è rotto lo scrypt, finalmente?

7

Se capisco correttamente, in base a questo: link , sembra che l'attaccante possa semplicemente creare una versione ottimizzata di scrypt che produce la stessa uscita con efficienza estremamente elevata (ad esempio con N = 2 ^ 14, p = 8, r = 1, richiede solo 1 KB anziché 16 MB per l'esecuzione, mentre aumenta la CPU fattore di lavoro di soli N / 2).

    
posta dnang 18.08.2014 - 16:42
fonte

2 risposte

20

La risposta breve è: no . Questo non è quello che ho detto, né quello che ho insinuato.

Utilizzando il compromesso che ho identificato e discusso, puoi scambiare la memoria per il tempo della CPU. Quindi sì, puoi ridurre una particolare derivazione da 16MiB a 8 KiB (circa). Tuttavia, fare ciò richiederà alla CPU diversi ordini di grandezza più logica da eseguire. Una certa efficienza è ottenuta dalla localizzazione della cache, ma in generale dovrebbe essere molto più lenta. (in media, circa 8.000 volte più lento della versione 16MiB, ma fino a 16.000 volte più lento, a seconda delle esatte distribuzioni casuali dell'algoritmo).

C'è un'alternativa più interessante però. Il mio attacco era un all-or-not-bais. In pratica, elimina completamente l'array V, a costo di aumentare la complessità. Ma puoi fare un compromesso più sfumato. È possibile tagliare l'array a metà e ri-calcolare ogni altro valore. O taglialo ad ogni terzo valore. Scambiando spazio di archiviazione per lo spazio della CPU. Ma in misura diversa. Questo è comunemente definito come un defibrillatore TMTO (Time-Memory-TradeOff Defeater).

Ho eseguito un analisi più approfondita, inclusa una proposta di correzione su questo thread . Vale la pena notare che almeno una delle proposte per la Competizione hash password utilizza il mio algoritmo aumentato.

Quindi no, lo scrypt è ancora incredibilmente strong. E per il suo caso d'uso principale (come KDF), è un po 'meglio delle alternative.,

Il punto che stavo cercando di fare con il mio post, è che quando non ottimizzato in modo ottimale (usato con impostazioni improprie) o con impostazioni molto veloci, può essere significativamente più debole degli algoritmi esistenti. Specificamente per archiviazione password . Dove conosci il risultato e stai cercando il materiale sorgente (password).

    
risposta data 18.08.2014 - 17:15
fonte
1

Si noti che scrypt è vulnerabile agli attacchi a tempo: numero 18 · pbhogan / scrypt , il che significa che un l'utente malintenzionato che ha accesso all'host su cui si sta eseguendo l'hashing delle password ha alcuni modi aggiuntivi per comprendere le password. Quindi non è rotto, ma presenta degli svantaggi rispetto ad es. bcrypt.

    
risposta data 10.08.2016 - 18:52
fonte

Leggi altre domande sui tag