Domanda:
Qualche esperto di sicurezza consiglia bcrypt per l'archiviazione delle password?
Sam Saffron
2010-09-16 05:05:57 UTC
view on stackexchange narkive permalink

In superficie bcrypt, un algoritmo di sicurezza di 11 anni progettato per l'hashing delle password da Niels Provos e David Mazieres, che si basa sulla funzione di inizializzazione utilizzata nell'algoritmo blowfish approvato dal NIST sembra quasi troppo buono per essere vero. Non è vulnerabile alle tabelle arcobaleno (poiché crearle è troppo costoso) e nemmeno agli attacchi di forza bruta.

Tuttavia, 11 anni dopo, molti usano ancora SHA2x con salt per memorizzare gli hash delle password e bcrypt lo è non ampiamente adottato.

  • Qual è la raccomandazione del NIST per quanto riguarda bcrypt (e l'hashing delle password in generale)?
  • Cosa dicono importanti esperti di sicurezza (come Arjen Lenstra e così via) sull'utilizzo di bcrypt per l'hashing delle password?
Su questo argomento, questa è una lettura interessante: http://www.tarsnap.com/scrypt/scrypt.pdf
vedi anche: http://stackoverflow.com/questions/1561174/sha512-vs-blowfish-and-bcrypt/1561245#1561245
Sì, bcrypt ha molti sostenitori esperti, anche se ovviamente vuoi regolare il numero di iterazioni con le prestazioni e ottimizzare altre difese tenendo a mente gli attacchi DoS. Vedere anche [Come eseguire l'hashing sicuro delle password? - IT Security] (http://security.stackexchange.com/questions/211/how-to-securely-hash-passwords) e [L'hash delle password aggiunge sale + pepe o è abbastanza sale?] (Http: // security. stackexchange.com/questions/3272/password-hashing-add-salt-pepper-or-is-salt-enough)
@tkbx Alcuni anni fa, forse. In realtà, MD5 non è più considerato sicuro. Dai un'occhiata a [MD5 considerato nocivo oggi] (http://www.win.tue.nl/hashclash/rogue-ca/) del 2008, per esempio.
Volevo dire che qualsiasi esperto di sicurezza consiglierebbe bcrypt. `: P`
Come nota rapida, prendo personalmente bcrypt o pbkdf2 (a seconda della piattaforma) e misuro impostazioni diverse. A seconda di cosa lo sto usando, utilizzo le impostazioni che richiedono un certo tempo. Come per un'applicazione desktop, mirerei a circa 80 ms (ho un laptop relativamente veloce), o per un server farei un benchmark sul server e mirerei a seconda del traffico che mi aspetto.
Per rispondere alla domanda nel titolo: Sì.Sono un Architetto senior della sicurezza delle informazioni e scrivo regolarmente politiche crittografiche per i nostri clienti.bcrypt è uno degli algoritmi che raccomando esplicitamente per l'hashing delle password.
Al giorno d'oggi, nel 2019, raggiungerei Argon2 durante l'hashing delle password.
Cinque risposte:
Thomas Pornin
2011-08-19 23:30:27 UTC
view on stackexchange narkive permalink

Bcrypt ha il miglior tipo di reputazione che si possa ottenere per un algoritmo crittografico: è in circolazione da un po 'di tempo, usato abbastanza ampiamente, "ha attirato l'attenzione", e tuttavia rimane ininterrotto fino ad oggi .

Perché bcrypt è in qualche modo migliore di PBKDF2

Se guardi la situazione in dettaglio, puoi effettivamente vedere alcuni punti in cui bcrypt è migliore di, ad esempio PBKDF2. Bcrypt è una funzione di hashing della password che mira ad essere lenta. Per essere precisi, vogliamo che la funzione di hashing della password sia il più lenta possibile per l'attaccante mentre non sia intollerabilmente lenta per i sistemi onesti . Poiché i "sistemi onesti" tendono a utilizzare hardware generico standard (cioè "un PC") che è anche disponibile per l'attaccante, il meglio che possiamo sperare è fare l'hashing delle password N tempi più lenti sia per l'attaccante che per noi. Quindi aggiustiamo N in modo da non eccedere le nostre risorse (la prima delle quali è la pazienza dell'utente, che è davvero limitata).

Ciò che vogliamo evitare è che un attaccante possa utilizzare hardware non per PC che gli permetterebbe di soffrire meno di noi del lavoro extra implicito da bcrypt o PBKDF2. In particolare, un aggressore industrioso potrebbe voler utilizzare una GPU o un FPGA. SHA-256, ad esempio, può essere implementato in modo molto efficiente su una GPU, poiché utilizza solo operazioni aritmetiche e logiche a 32 bit in cui la GPU è molto brava. Quindi, un utente malintenzionato con 500 $ di GPU sarà in grado di "provare" molte più password all'ora rispetto a quello che potrebbe fare con 500 $ di PC (il rapporto dipende dal tipo di GPU, ma un rapporto 10x o 20x lo farebbe essere tipico).

Bcrypt fa molto affidamento sugli accessi a una tabella che viene costantemente modificata durante l'esecuzione dell'algoritmo. Questo è molto veloce su un PC, molto meno su una GPU, dove la memoria è condivisa e tutti i core competono per il controllo del bus di memoria interno. Pertanto, la spinta che un utente malintenzionato può ottenere dall'utilizzo della GPU è piuttosto ridotta, rispetto a ciò che l'attaccante ottiene con PBKDF2 o progetti simili.

I progettisti di bcrypt erano abbastanza consapevoli del problema, motivo per cui hanno progettato bcrypt dal codice a blocchi Blowfish e non una funzione SHA- *. Notano nel loro articolo quanto segue:

Ciò significa che si dovrebbe rendere qualsiasi funzione di password il più efficiente possibile per l'impostazione in cui opererà. I progettisti di crypt non sono riusciti a farlo. Hanno basato crypt su DES, un algoritmo particolarmente inefficiente da implementare nel software a causa di molte trasposizioni di bit. Hanno scontato gli attacchi hardware, in parte perché la crittografia non può essere calcolata con l'hardware DES stock. Sfortunatamente, Biham in seguito ha scoperto una tecnica software nota come bitslicing che elimina il costo delle trasposizioni di bit nell'elaborazione di molte crittografie DES simultanee. Sebbene il bitslicing non aiuterà nessuno ad accedere più velocemente, offre una velocità impressionante per le ricerche di password a forza bruta.

che mostra che l'hardware e il modo in cui può essere utilizzato è importante. Anche con lo stesso PC del sistema onesto, un utente malintenzionato può utilizzare il bitslicing per provare diverse password in parallelo e trarne vantaggio, perché l'attaccante ha diverse password da provare, mentre il sistema onesto ha solo uno alla volta.

Perché bcrypt non è sicuro in modo ottimale

Gli autori di bcrypt lavoravano nel 1999. A quel tempo, la minaccia era un ASIC personalizzato con conteggi di gate molto bassi. I tempi sono cambiati; ora, il sofisticato attaccante utilizzerà un grande FPGA, ei modelli più recenti (ad esempio Virtex di Xilinx) hanno blocchi RAM incorporati, che consentono loro di implementare Blowfish e bcrypt in modo molto efficiente. Bcrypt richiede solo 4 kB di RAM veloce. Mentre bcrypt fa un lavoro decente nel rendere la vita difficile a un attaccante potenziato dalla GPU, fa ben poco contro un attaccante che brandisce FPGA.

Ciò ha spinto Colin Percival a inventare scrypt nel 2009 ; questa è una funzione simile a bcrypt che richiede molta più RAM. Questo è ancora un nuovo design (solo due anni) e da nessuna parte così diffuso come bcrypt; Lo reputo troppo nuovo per essere raccomandato in generale. Ma la sua carriera dovrebbe essere seguita.

( Modifica: si è scoperto che scrypt non è stato completamente all'altezza delle sue promesse. Fondamentalmente, è buono per ciò per cui era stato progettato, cioè proteggere la chiave di crittografia per il disco rigido principale di un computer: questo è un contesto di utilizzo in cui l'hashing può utilizzare centinaia di megabyte di RAM e diversi secondi di CPU. Per un server occupato che autentica le richieste in arrivo, il budget della CPU è molto inferiore, perché il server deve essere in grado di servire più richieste simultanee contemporaneamente e non rallentare fino a una scansione sotto carichi di picco occasionali; ma quando scrypt utilizza meno CPU, utilizza anche meno RAM, questo fa parte di come la funzione è definito internamente. Quando il calcolo dell'hash deve essere completato entro pochi millisecondi di lavoro, la quantità di RAM utilizzata è così bassa che scrypt diventa, tecnicamente, più debole di bcrypt.)

Cosa consiglia il NIST

NIST ha rilasciato la pubblicazione speciale SP 800-132 sull'argomento della memorizzazione delle password con hash. Fondamentalmente raccomandano PBKDF2. Ciò non significa che ritengano bcrypt insicuro; non dicono niente di bcrypt. Significa solo che il NIST ritiene PBKDF2 "abbastanza sicuro" (e certamente è molto meglio di un semplice hash!). Inoltre, il NIST è un'organizzazione amministrativa, quindi sono tenuti ad amare tutto ciò che si basa su algoritmi già "approvati" come SHA-256. D'altra parte, bcrypt proviene da Blowfish che non ha mai ricevuto alcun tipo di benedizione (o maledizione) NIST.

Anche se raccomando bcrypt, seguo comunque NIST in quanto se implementi PBKDF2 e lo usi correttamente ( con un numero di iterazioni "alto"), è abbastanza probabile che la memorizzazione delle password non sia più il peggiore dei tuoi problemi di sicurezza.

Cos'è un conteggio "alto" di iterazioni? E non capisco davvero perché continui a consigliare bcrypt su PBKDF2
TL; DR: bcrypt è migliore di PBKDF2 perché PBKDF2 può essere accelerato meglio con le GPU. In quanto tale, PBKDF2 è più facile da usare offline con l'hardware di consumo.
@ExplosionPills La mia regola pratica per un conteggio "alto" di iterazioni è: il più grande possibile senza che troppi utenti si lamentino del ritardo. Generalmente ottimizzo bcrypt / pbkdf2 per impiegare circa 250-500 ms (1-2 secondi per gli account amministratore) sul mio server di produzione mentre è sotto carico leggero. Questa politica sembra tenere traccia delle impostazioni bcrypt consigliate da OpenBSD e di qualsiasi altro consiglio dipendente dal contesto che ho trovato.
Nessuna parola su scrypt? :)
@EliCollins: Sono piuttosto curioso qui: l'utilizzo di un numero elevato di iterazioni potrebbe introdurre la possibilità di attacchi DDOS contro il server? Ad esempio, se dovessi POST centinaia di tentativi di accesso al server contemporaneamente, il server verrebbe immediatamente sopraffatto dal tentativo di eseguire l'hash di tutte le password. Ci sono modi per evitare questo potenziale problema?
@GeorgeEdison Mi stavo chiedendo anche questa domanda e non ho trovato una buona risposta. 1) È possibile limitare la frequenza della pagina di accesso in base al carico, ma ciò non si adatta bene. 2) offload l'hashing su un server separato, quindi il DDOS influisce solo sugli accessi simultanei, ma questa è solo una variante dell'opzione 1. 3) usa un nonce (ad esempio il token csrf) per aggiungere un [hashcash] (http: // en. wikipedia.org/wiki/Hashcash)- la prova del lavoro al tuo login, ma questo non aiuta molto contro una botnet. 4) Il DDOS deve prima trovare un account utente valido, quindi ritarda gli errori degli utenti non validi con una chiamata sleep () in modo che corrisponda al tempo hash.
@GeorgeEdison per evitare DDOS controlla il nome utente prima di controllare la password. Quindi se ci sono stati più tentativi di accesso falliti di seguito per quell'utente (diciamo, 10 di loro) rifiuta la password senza nemmeno controllarla a meno che l'account non si sia "raffreddato" per alcuni minuti. In questo modo un account può essere DDOS ma non l'intero server, e rende impossibile la forza bruta anche di password orribilmente deboli senza un attacco offline.
@AbhiBeckert Cosa succede se l'utente legittimo viene scoperto mentre tenta di accedere mentre il suo account è attaccato da una botnet? (Risposta: DOS). Inoltre, saltare il controllo della password per nomi utente errati fornisce un oracolo basato sul tempo che dice all'aggressore quali account esistono. Se mantieni l'IP per accessi riusciti (ci sono buone ragioni per non farlo), puoi dare priorità a quegli IP e controllare la password anche se il nome utente è "bloccato".
La benedizione del NIST non ha lo stesso peso di una volta. http://www.wired.com/threatlevel/2013/09/nsa-backdoor/all/ (dubito che questo si applichi a PBKDF2, ma è uno spunto di riflessione).
@TerisRiel Non mi importa se l'account di un utente va offline a causa di un attacco DOS. Nel mondo reale in realtà non accade, e se lo fa ... beh, è ​​meglio dell'account che viene violato.
Certo, DOS l'utente, riceverà un avviso che lo avviserà che sta succedendo qualcosa (se, come dice @Abhi Beckert, accade anche nella vita reale). Evita un attacco Oracle dormendo qualsiasi nome utente non riuscito per il tempo che impiegheresti a controllare la password.
scrypt è ancora troppo nuovo per essere utilizzato?
Lo scrypt @JanusTroelsen: si è rivelato non buono come previsto; Ho aggiunto un paragrafo appropriato nella risposta.
BCrypt sembra essere crackato ora: questo influisce sulla risposta? http://www.itproportal.com/2015/09/11/11-million-unbreakable-ashley-madison-passwords-broken/
@MatthewMartin: hai letto l'articolo sbagliato - bcrypt non è affatto crackato; le password attaccate sono state sottoposte ad hashing due volte, una volta con bcrypt e una volta con una debole invocazione casalinga di MD5. I ricercatori hanno rotto il debole hash fatto in casa basato sull'MD5 (cioè non l'hanno "infranto", hanno semplicemente provato molte password fino a quando non è stata trovata una corrispondenza, ed è stato veloce perché l'hash fatto in casa era molto veloce e non salato).
@ThomasPornin Quindi fondamentalmente hanno deciso di rendere bcrypt "ancora più sicuro"? La mia regola pratica è "Se questo miglioramento è così buono, gli esperti lo avrebbero trovato molto prima di me".
@corsiKa: era più un caso di due sviluppatori che lavoravano sulle stesse password utente, ma non parlavano tra loro; uno che sa cos'è bcrypt, l'altro non lo sa. Questo è il caso di una regola generica: se l'attaccante ha la possibilità di scegliere tra due modi per ottenere le informazioni che cerca, sceglierà per lui il più semplice.
Quanto è aggiornata questa risposta nel 2016? Ad esempio, come regge Argon2 (che ha vinto il Password Hashing Competition) rispetto a PBKDF2, bcrypt, ecc.? Poiché si tratta di un post di ampia lettura, sarebbe bello vedere aggiornamenti periodici a questa risposta che ne riaffermano la rilevanza o aggiornano le sue raccomandazioni.
@ThomasPornin Penso che un paragrafo su Argon2 sarebbe la ciliegina sulla torta di questa già eccellente risposta.
@joshreesjones Penso che meriti una domanda a parte, poiché questa domanda e risposta riguardano specificamente bcrypt.
Stai tornando completo?
Secondo il suggerimento, si dovrebbe prima controllare il nome utente, quindi fallire rapidamente se il nome utente non è presente: ciò significa che un utente malintenzionato può apprendere quali nomi utente esistono e quali no.Per evitare di trapelare, vorresti che ogni controllo della password fosse della stessa durata.
@MikkoRantalainen Le GPU moderne (anche nel 2012 quando hai scritto quel commento) possono facilmente gestire bcrypt.Il requisito è per 4 KiB di memoria veloce.Ciò significa che ogni shader GPU deve avere almeno quella quantità di memoria allocata dal pool globale di memoria.Una GPU con, diciamo, 500 shader e 1 GiB di VRAM sarà in grado di fornire a ogni shader un intero ** 2 MiB ** di memoria.Anche uno con 256 MiB di VRAM (che è molto basso) può allocare oltre cento volte più memoria di quanto bcrypt richiede a 500 shader.Ora, gli ASIC d'altra parte ...
@forest il punto di bcrypt e GPU non è che bcrypt richiede enormi quantità di memoria.Se hai bisogno di spendere molta memoria, vedi scrypt.L'algoritmo bcrypt riguarda l'accesso casuale della RAM che non era il punto di forza delle GPU.Le GPU più recenti hanno meno problemi con questo, ma PBKDF2 è ancora un compito più semplice per le GPU.
@MikkoRantalainen L'accesso casuale dipende fortemente dalla chiave?L'accesso casuale su una singola pagina di memoria da 4 KiB sembra che non sarebbe particolarmente difficile per una GPU, anche se la memoria GDDR5 ha una latenza maggiore rispetto a DDR3 o DDR4.
@forest Non sono sicuro che il modello di accesso dipenda dalla chiave.Secondo https://github.com/freedomofpress/securedrop/issues/180#issuecomment-29662610 https://www.usenix.org/system/files/conference/woot14/woot14-malvoni.pdf https: // crypto.stackexchange.com/a/401/1267 e https://crypto.stackexchange.com/a/35352/1267 sembra che le GPU abbiano problemi con modelli di accesso pseudocasuali che * modificano * la memoria e, di conseguenza, le GPU non sono più veloci conbcrypt rispetto a CPU con prezzi simili.
@MikkoRantalainen Oh, interessante!Quindi sembra che ogni gruppo di core abbia la propria memoria condivisa (che è molto veloce), insieme alla memoria principale (che è lenta per l'accesso simultaneo).Almeno nel 2011, la memoria condivisa era troppo piccola per contenere 4 KiB.Mi chiedo se questo sia cambiato per qualsiasi GPU moderna.
Vedere anche: "Balloon Hashing: una funzione memory-hard che fornisce una protezione fornibile contro gli attacchi sequenziali" https://eprint.iacr.org/2016/027.pdf (in particolare il capitolo 5)
Sono un noob.Qualcuno mi dica perché non dovrei semplicemente scambiare la mia password e poi eseguirla tramite bcrypt o scrypt.Nessun aggressore controllerà entrambi se la maggior parte di Internet non lo fa.
Giu
2010-09-16 12:39:02 UTC
view on stackexchange narkive permalink

bcrypt ha un vantaggio significativo rispetto a un hash SHA-256 semplicemente salato: bcrypt utilizza un algoritmo di configurazione della chiave modificato che è abbastanza costoso. Questo si chiama rafforzamento della chiave e rende una password più sicura contro gli attacchi di forza bruta, poiché l'attaccante ha ora bisogno di molto più tempo per testare ogni possibile chiave.

Nel post del blog chiamato " Basta con The Rainbow Tables: What You Need To Know About Secure Password Schemes ", che personalmente ti consiglio di leggere, Thomas Ptacek, l'autore e un ricercatore di sicurezza consiglia l'uso di bcrypt.

Personalmente , Ultimamente ho esaminato PBKDF2, che è una funzione di derivazione della chiave che applica una funzione pseudo-casuale (ad es. Hash crittografico) alla password di input insieme a un salt, quindi deriva una chiave ripetendo il processo tante volte quanto specificato. Sebbene sia una funzione di derivazione della chiave, utilizza il principio del rafforzamento della chiave al suo centro, che è una delle tante cose a cui dovresti tendere quando decidi come generare in modo sicuro un hash di una password.

Per citare Thomas Ptacek dal post collegato sopra:

La velocità è esattamente ciò che non vuoi in una funzione di hash della password.

L'assunto di base di bcrypt è che sia lento, ma questo è solo un presupposto, potrebbe esistere un punto debole che consente di ridurre drasticamente i tempi di esecuzione, oppure le evoluzioni hardware potrebbero aggirare la lentezza (come per Scrypt). PKBDF, d'altra parte, si basa su un hash ben testato per il quale esiste già un hardware abbastanza veloce e quasi ottimale, il che significa che i parametri di tempo e complessità sono ben noti (e possono essere sfruttati attraverso la ripetizione). I difensori di PKBDF sanno esattamente cosa possono fare gli attaccanti entro un ordine di grandezza, i difensori di bcrypt no.
@EricGrange: è vero che i difensori PKBDF sanno cosa possono fare gli attaccanti.Sfortunatamente, gli attaccanti possono fare almeno 10-20 volte più velocemente dei difensori.Il difensore vuole usare bcrypt perché * attualmente * sembra * dare molto meno vantaggio all'attaccante.Fondamentalmente i fan di bcrypt pensano che l'algoritmo sembri abbastanza buono per fidarsi e rende il campo di gioco più livellato per il difensore e l'attaccante.Se pensi che dare un aumento delle prestazioni di almeno 10-20 volte all'attaccante sia ok, allora PKBDF è la scelta migliore perché i compromessi sono meglio compresi.
@EricGrange Questo è vero per TUTTI gli algoritmi.Con il passare del tempo e la crescente crittoanalisi, possiamo diventare sempre più sicuri (ma mai completamente sicuri) che un particolare algoritmo non abbia una particolare debolezza.L'idea che possiamo conoscere con certezza i rischi per PBKDF2 ma non per bcrypt è assurda.
Secondo https://www.usenix.org/system/files/conference/woot14/woot14-malvoni.pdf, l'attaccante è solo 2 volte più veloce con hardware personalizzato rispetto a bcrypt defender che utilizza una CPU i7 generica.Sembra molto meglio dell'attaccante essere 10-20 volte più veloce con PKBDF rispetto al difensore.
Steven Sudit
2010-09-18 06:51:13 UTC
view on stackexchange narkive permalink

Penso che il suggerimento di Gui su PBKDF2 abbia valore, anche se so che Rook è in forte disaccordo. Se solo fossero stati chiari sul loro ragionamento!

Indipendentemente da ciò, non c'è motivo di usare un hash SHA-256 salato rispetto a HMAC-SHA256. HMAC ha il vantaggio di bloccare gli attacchi di estensione.

+1 per aver menzionato HMAC, che ho completamente dimenticato di menzionare come l'alternativa più sicura a un hash SHA-256 semplicemente salato. Gli attacchi di estensione della lunghezza sono ben noti; l'API di Flickr una volta è stata compromessa perché era solita firmare le chiamate API utilizzando `MD5 (secret + argument list)` (vedere "[Vulnerabilità di Flickr's API Signature Forgery] (http://netifera.com/research/flickr_api_signature_forgery.pdf)" [ PDF] per ulteriori informazioni)
In che modo HMAC è rilevante per l'archiviazione delle password non recuperabili?
@curiousguy (Meglio tardi che mai ...) La memorizzazione di una password con hash con un salt può essere eseguita calcolando un [HMAC] (http://en.wikipedia.org/wiki/Hash-based_message_authentication_code), utilizzando la password come HMAC chiave e il sale come messaggio HMAC. Questo è più sicuro che calcolare ingenuamente "H (salt || password)", sebbene sia preferibile una funzione di hashing della password reale come bcrypt.
@curiousguy HMAC è il PRF più comunemente utilizzato in PBKDF2. Quindi non usare nemmeno l'HMAC nudo. Usa PBKDF2 (con HMAC-SHA256 o HMAC-SHA512), bcrypt o scrypt. Questo è tutto. Non inventare o utilizzare nient'altro. Gli schemi personalizzati sono destinati ad essere sbagliati. Questi tre sono ben controllati e facili da usare. Renditi conto che PBKDF2 è il più vulnerabile agli attacchi di dizionario con accelerazione hardware e scrypt è il meno vulnerabile.
PBKDF2
2012-07-11 21:30:35 UTC
view on stackexchange narkive permalink

NIST è un'organizzazione governativa con sede negli Stati Uniti e quindi segue gli standard FIPS (con sede negli Stati Uniti), che non includono il blowfish, ma includono SHA-256 e SHA-512 (e anche SHA-1 per la firma non digitale applicazioni, anche in NIST SP800-131A, che delinea per quanto tempo ogni algoritmo precedente può essere utilizzato per quale scopo).

Per qualsiasi azienda richiesta per conformarsi agli standard US NIST o FIPS, bcrypt non è un'opzione valida . Se svolgi affari in quella nazione, controlla separatamente le leggi e le normative di ogni nazione.

PBKDF2 va bene; il vero trucco è ottenere le schede Tesla (basate su GPU) nei server onesti in modo che le iterazioni possano essere rese abbastanza alte da competere con i cracker basati su GPU. Per PBKDF2 nel 2012, OWASP consiglia almeno 64.000 iterazioni sul loro Cheat Sheet per l'archiviazione delle password, raddoppiate ogni 2 anni.

Mi sembra che usare scrypt o bcrypt (cambiare il software) sia più facile che aggiungere hardware costoso (in termini di costi iniziali e costi energetici) a milioni di server. Ad un livello più alto, qualsiasi funzione di estensione dei tasti è solo un tentativo di aggiungere più entropia alla password. Se (e solo se) la password è abbastanza forte per iniziare (ad esempio un numero casuale a 128 bit codificato come 10 parole diceware), una singola iterazione di PBKDF2 è una protezione adeguata.
Lo scopo delle funzioni * crypt o PBKDF2 è quello di memorizzare la password in modo tale che sia molto difficile trovare la password originale. Non rendono la password più sicura. Una singola iterazione di PBKDF2 rende facile indovinare con forza bruta quale sia la password. Se ci vuole un secondo di tempo della CPU per ipotesi, la forzatura bruta diventa irrealistica.
Una GPU non aiuterà un server web ad hash una o poche password velocemente. Aiuta solo ad hash molte (migliaia) di password contemporaneamente.
Come mai il NIST pensa che PBKDF2 vada bene, quando bcrypt è più difficile da usare a livello locale?E questo significa che se si dispone di un servizio che crittografa utilizzando "bcrypt", le aziende statunitensi non potranno utilizzare il servizio?
La NSA potrebbe esercitare pressioni sul NIST per introdurre backdoor (ad esempio https://www.wired.com/2013/09/nsa-backdoor/).Diffidare delle raccomandazioni del NIST e ricontrollare sempre con accademici indipendenti.
David C. Bishop
2016-01-07 04:18:25 UTC
view on stackexchange narkive permalink

Potrebbe valere la pena dare un'occhiata ad Argon2 che ha vinto la Password Hashing Competition.

Benvenuti nello scambio di stack di sicurezza delle informazioni. Poiché questa risposta non si rivolge direttamente a bcrypt, potrebbe essere meglio lasciarla come commento. Grazie per aver dedicato del tempo a rispondere a una domanda e spero che tu abbia un'esperienza positiva e istruttiva qui!
Ho dato un'occhiata a questo concorso, la [lista] (https://password-hashing.net/submissions.html) dei candidati non include bcrypt, scrypt e PBKDF2.
@AmirForsati - Comprendeva derivati di bcrypt (pesce palla) e scypt (yescrypt).È possibile / probabile che uno derivi anche da PBKDF2, ma non li ho esaminati abbastanza da vicino per dirlo.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 2.0 con cui è distribuito.
Loading...