Sono abbastanza nuovo per l'intera attività di hashing delle password, quindi potrei mancare qualcosa di ovvio.
Stavo osservando l'algoritmo di bcrypt, in particolare BCrypt.Net , e mi chiedevo se non sarebbe stato più sicuro calcolare un sale unico per ogni utente invece di un sale casuale?
Al momento il sale e il carico di lavoro (# round) sono esposti nella stringa di password con hash. ($ 2a $ + carico di lavoro di 2 cifre + $ + 22 caratteri salt + 31 caratteri hash password) Non stiamo aiutando i potenziali hacker dando loro il sale (se, ad esempio, vogliono forzare la password dell'amministratore)?
Non potremmo calcolare il sale per ogni utente tramite hashing (ad esempio con MD5 o SHA1) il loro indirizzo email?
Se poi salviamo solo i 31 ultimi caratteri della password hash di bcrypt, tralasciamo l'identificatore, il carico di lavoro (se lo teniamo fisso) e, soprattutto, il sale. Questo non renderebbe molto più difficile per la persona cercare di trovare la password?
(E sul lato positivo, potremmo guadagnare dello spazio del database per i database di grandi utenti, dato che la password è di soli 31 caratteri anziché 60)
Probabilmente mi manca qualcosa di ovvio, perché non posso essere la prima persona a fare questo riflesso.
Marc