Il bcrypt in cima a md5 riduce la sua sicurezza?

9

Un progetto GitHub che ho controllato di recente ha una sicurezza imperfetta poiché sta usando un md5 () non salato per cancellare le password. Ho aperto un bug e loro lo hanno riconosciuto. Tuttavia, la transizione da md5 () a bcrypt significherebbe che ogni utente dovrebbe effettuare il login in modo da poter migrare la password.

Quindi la mia domanda è, usa bcrypt su md5 () per ridurne la sicurezza?

// For already logged in users:
if (password_verify(md5($_POST['pass']), $DBHash)) {

  }

In questo modo, l'intero database potrebbe essere migrato facilmente, invece di migrare ogni utente individualmente.

Ci dovrebbero essere altri problemi oltre al fatto che PHP potrebbe scadere se non gestito correttamente? (circa 1 secondo per ogni hash).

    
posta Francisco Presencia 22.11.2013 - 13:16
fonte

1 risposta

15

Assolutamente no. In realtà, questa è quasi la procedura standard per la migrazione da uno schema di hashing debole a bcrypt in ogni progetto con cui ho lavorato.

Ciò che accade di solito è che per ogni utente viene impostato un flag che indica che le loro password utilizzano lo schema precedente e ogni volta che accedono all'applicazione utilizza la logica di login compatibile con le versioni precedenti. Una volta che l'utente ha effettuato il login, hai la password in chiaro, e ora puoi semplicemente prendere la nuova password e salvarla usando solo bcrypt, quindi disattiva il flag. Tutti i nuovi utenti usano il nuovo schema bcrypt-only.

In alternativa, puoi seguire il suggerimento di CodesInChaos e continuare con il nuovo bcrypt(md5()) . Anche se ha ragione a dire che non c'è alcun guadagno in termini di sicurezza, personalmente mi piace tenerlo solo per bcrypt() .

    
risposta data 22.11.2013 - 13:24
fonte

Leggi altre domande sui tag