Ancora una domanda di salting-and-hashing-for-web-sites è stata lasciata sullo zerbino dello StackExchange di Information Security.
L'approccio spesso menzionato per la gestione delle password dei siti Web consiste nell'utilizzare un linguaggio lato server per utilizzare un algoritmo di hash appropriato (allungato o progettato in altro modo per consumare risorse di elaborazione eccessive), combinare con un sale randomizzato e voilà: a password memorizzata in sicurezza Ovviamente sto semplificando eccessivamente.
Anche se questo impedisce alle tabelle del database rubate di contenere passphrase potenzialmente riutilizzate, significa comunque che la password deve essere consegnata al server da sottoporre all'hash, il cui risultato viene confrontato con l'hash memorizzato. SSL lo protegge durante il trasporto, naturalmente, ma c'è ancora una finestra della passphrase in chiaro che esiste per l'hashing.
Cosa succede se l'hashing è stato effettuato sul lato client? L'utente userebbe comunque una passphrase che non corrisponde al risultato finale memorizzato e un individuo esperto di tecnologia che ignora il codice JavaScript e invia direttamente un hash non otterrebbe alcun risultato. Inoltre, l'hashing sul lato server potrebbe essere implementato per i client privi di JavaScript. In questo modo, il carico del server viene ridotto e un server comprimamente nascosto non otterrebbe alcuna password man mano che il sito continua a funzionare.
TL; DR: l'unico problema che riesco a vedere è che la randomizzazione del client per il sale non può essere considerata attendibile. È questa l'unica ragione per cui questo approccio non è più ampiamente raccomandato?