bscrypt, scrypt v / s iterativo SHA-x [duplicato]

1

Entrambi gli algoritmi di hashing bcrypt e scrypt sono progettati per aumentare le risorse necessarie durante il calcolo. Le password di hashing con questi algoritmi possono essere utili in quanto rende più difficile l'attività di un utente malintenzionato offline.

Il tempo richiesto per hash una password può essere aumentato aumentando il numero di iterazioni in bcrypt. L'utente malintenzionato deve quindi eseguire queste iterazioni in modo sequenziale in quanto non esiste alcuna scorciatoia presunta.

La memoria richiesta per hash una password può essere aumentata in scrypt. L'attaccante avrà quindi bisogno di una grande quantità di memoria per montare attacchi paralleli.

Come, capisco entrambi questi tentativi di algoritmo per contrastare gli attacchi paralleli.

La mia domanda è: possiamo rendere SHA-x o qualsiasi algoritmo di hash sicuro esistente iterativo e ad alta intensità di memoria, e ottenere la stessa funzionalità di bcrypt e scrypt?

    
posta Curious 20.11.2014 - 05:17
fonte

2 risposte

3

Esiste già una funzione di hash "iterativa"; si chiama PBKDF2 . Bcrypt è ancora preferibile perché PBKDF2 può essere completamente ottimizzato su GPU.

La progettazione di una buona funzione di hashing della password è un lavoro difficile; ma sì, la funzione di hash esistente è un buon elemento costruttivo, quindi è probabile che a un certo punto siano coinvolti. Effettivamente, guarda scrypt : inizia e termina con un'invocazione PBKDF2, quindi un sacco di hashing. Ma la durezza della memoria viene da ciò che accade tra queste due fasi di hashing. Non si tratta di un semplice assemblaggio di funzioni di hash che forniscano la durezza della memoria; proprio come una macchina non è semplicemente "ruote che vanno dove vuoi": le ruote sono essenziali, ma c'è di più in una macchina che in ruote.

I crittografi sono attualmente impegnati a progettare e analizzare nuove funzioni di hashing della password che cercano di essere migliori (in qualche modo) di PBKDF2, bcrypt e scrypt. Questo è il Concorso di hashing password . Alcuni dei candidati riutilizzano le funzioni di hash esistenti (ad es. Catena), ma, come scrypt, il loro bel "hashing delle password" le proprietà (ad es. la durezza della memoria) provengono dal resto del design.

    
risposta data 20.11.2014 - 13:18
fonte
1

La tua comprensione dei motivi per cui si dovrebbe usare scrypt e bcrypt è corretta.

Sì, potresti, almeno in teoria, produrre un nuovo algoritmo che richiede tempo e memoria, e potrebbe incorporare una funzione di hash crittograficamente sicura esistente. È possibile aumentare il tempo attraverso l'iterazione e aumentare la memoria richiedendo un numero elevato di valori precedenti disponibili per calcolare il valore successivo. Ma perché? Come hai sottolineato, ci sono già delle funzioni che lo fanno, progettate da crittografi, sottoposte ad ispezione da parte di altri, e che hanno resistito alla prova del tempo.

Provare a tirare la tua cripto è molto pericoloso. La tua domanda spiega perché: "non esiste una scorciatoia presunta". Non è sufficiente che un algoritmo abbia un tempo e una memoria intensi; deve anche essere resistente agli attacchi di scorciatoia. Gli attacchi di scorciatoia possono essere sottili e intelligenti, ed evitarli, o persino individuare le vulnerabilità è difficile, specialmente nel proprio lavoro, che "sai" è corretto. È molto più probabile che tu finisca con quello che qualcun altro ha definito "funzioni hash stravaganti" che risultano avere scorciatoie facili.

Se si desidera progettare i propri algoritmi crittografici, ottenere prima un dottorato di ricerca. in matematica con una concentrazione in cripto. La NSA ti assumerà quando avrai quel dottorato. Dopo di ciò, trascorri dieci anni lavorando su Crypto alla NSA e potresti essere qualificato per sviluppare nuovi algoritmi crittografici.

    
risposta data 20.11.2014 - 12:33
fonte

Leggi altre domande sui tag