Algoritmi di hashing Costi vs Sonno

1

Capisco la maggior parte dei concetti dietro la password di hashing, ma questo mi sfugge ancora.

Capisco che vuoi che l'hash impieghi un po 'di tempo (un paio di millisecondi) in modo che l'attaccante non possa forzare. Ma allo stesso tempo non vuoi che l'hashing utilizzi troppe risorse del computer.

Perché non hai solo hash e poi sleep per 0,1 secondi?

    
posta Hurricane Development 14.08.2015 - 09:10
fonte

3 risposte

7

Le password vengono sottoposte a hash per il caso in cui un utente malintenzionato può leggere gli hash dal database (ad esempio SQL-injection). Successivamente può eseguire la forza bruta con la massima velocità del proprio ambiente, spesso con una GPU, questo è chiamato un attacco offline.

Un sonno d'altra parte non può che proteggersi dagli attacchi online, anche se un utente malintenzionato potrebbe effettuare più richieste e attendere i risultati che sono un po 'ritardati ma non sono più lenti.

    
risposta data 14.08.2015 - 09:30
fonte
1

Gli hash proteggono le password nel caso in cui l'hacker si impadronisca del database delle password. Se l'aggiunta di sleep all'autenticazione sarebbe sufficiente per impedire che la forzatura bruta implichi automaticamente che il tuo modello di minaccia consenta di archiviare le password in chiaro perché sei solo preoccupato per gli attacchi online. Dal momento che quasi nessun modello di minaccia presuppone che i tuoi sistemi non saranno compromessi (sarebbe molto irresponsabile presumerlo), devi proteggere le password in modo che siano resistenti agli attacchi offline e poi a qualsiasi percentuale disleep aggiunto al tuo codice è completamente irrilevante.

    
risposta data 14.08.2015 - 09:28
fonte
0

L'importante è che l'attaccante non possa essere in grado di forzare la forza bruta per ottenere l'accesso. Ciò non significa necessariamente che l'algoritmo di hash deve essere lento. Il flusso di accesso end-to-end dovrebbe essere abbastanza lento. Questo può essere ottenuto in diversi modi:

  1. Come hai detto, modifica l'algoritmo di hashing in modo che sia lento.
  2. Disattiva i tentativi di accesso per una certa durata dopo un certo numero di tentativi sbagliati.
  3. Mandare password più lunghe e complesse. (Maggiore lunghezza aumenta il numero di possibilità da provare per il tentativo di forza bruta)

Le opzioni 1 e 2 sono inutili se l'hacker ottiene l'accesso al formato hash della password e all'algoritmo di hashing.

Modificato con il suggerimento del commento:

L'opzione 2 è inutile se l'hacker ottiene l'accesso al formato hash della password e all'algoritmo di hashing.

L'opzione 1 è anche inutile se la lentezza è in gran parte dovuta al sonno che può essere risolto (ad esempio se è disponibile il codice sorgente dell'algoritmo di hashing, allora è facile eliminare il sonno.) Altre opzioni sono possibili senza il codice sorgente troppo)

    
risposta data 14.08.2015 - 09:18
fonte

Leggi altre domande sui tag