Perché rigenerare l'hash di una password?

4

Ho letto link su come memorizzare le password usando PHP e MySQL, il modo sicuro. Elbert dice:

  • Use a cryptographically strong hashing function like SHA-1 or even SHA-256 (see PHP's hash() function).
  • Use a long and random salt for each password.
  • Use a slow hashing algorithm to make brute force attacks near impossible.
  • Regenerate the hash every time a users logs in.

Ottengo le prime tre regole, tuttavia non vedo perché la password debba essere rigenerata continuamente. Perché è così?

    
posta Keelan 11.04.2013 - 20:44
fonte

1 risposta

8

Ciò che il poster del blog probabilmente significa è che dovresti eseguire l'hash della password fornita quando l'utente tenta di accedere e dovrai eseguire tale hash per ogni tentativo di accesso, poiché il server memorizza solo l'hash.

È possibile, ma non è probabile, che l'autore intendesse davvero cambiare il sale e ricalcolare un nuovo hash ad ogni accesso, il che sarebbe piuttosto stupido, spiegando perché lo considero "improbabile". Ma hey, questo è Internet, tutto può succedere.

Il post del blog è parzialmente giusto. Sì, hai bisogno di un hash lento e salato . Ma no, un ciclo di hashing fatto in casa non può essere perdonato. Gli algoritmi crittografici non devono essere improvvisati; fatto in casa è cattivo . Ciò che deve essere usato è una costruzione ben controllata che è stata ispezionata da molti crittografi per molto tempo. Vedi questa risposta per i dettagli sulle solite soluzioni. In PHP, questo significa utilizzare la funzione crypt() con il parametro CRYPT_BLOWFISH .

(Oltre alla necessità di usare costruzioni standard, è anche importante usare un'implementazione fast , poiché l'intero concetto di hashing lento è una competizione muscolare tra la macchina dell'attaccante e la macchina del difensore. L'utilizzo delle funzioni standard di PHP consente l'accesso alle implementazioni di codice nativo, che saranno molto più efficienti di qualsiasi altra cosa scritta in PHP.)

    
risposta data 11.04.2013 - 20:55
fonte

Leggi altre domande sui tag