L'hashing della password non serve per la sicurezza delle password mentre vengono trasmesse via cavo, ma per storage sul server. Abbiamo le password hash perché a volte capita (più spesso di quanto vorremmo) che le persone cattive possano dare un'occhiata ai file e / o al database del server. Per quello che succede sul filo, abbiamo bisogno di due cose:
-
Abbiamo bisogno dell'integrità perché l'autenticazione è sempre relativa ad alcuni dati scambiati successivamente. Non vogliamo un utente malintenzionato, in grado di eseguire un attacco MitM , per attendere l'autenticazione si verifica e quindi dirottare la connessione "autenticata" dal vivo.
-
Abbiamo bisogno della riservatezza perché non vogliamo che gli hacker osservino le password in transito o persino gli hash delle password, perché un hash delle password è sufficiente per "testare le password a casa". Più in generale, di solito preferiamo che i dati sensibili che stiamo per scambiare rimangano confidenziali (non è sempre il caso, ma succede ancora spesso).
SSL fornisce entrambi. Quando si utilizza SSL (chiamato HTTPS in un contesto Web), la connessione è protetta da alterazioni, crittografata e il client è ragionevolmente sicuro di parlare al server giusto. In queste condizioni, la password può essere inviata da client a server senza alcun tipo di hash applicato, e questo è esattamente ciò che accade nella maggior parte dei siti Web in cui si digita il login e la password. Il server deve ancora memorizzare, da qualche parte nel suo database, alcuni dati che consentano la verifica della password inviata dall'utente; che l'elemento dati dovrebbe essere la password hash (con il solito assortimento di protezioni: hashing lento, sali ...).