1) Poiché la memorizzazione di password in testo semplice nei database non è sicura e quindi non è una buona pratica.
password memorizzata in db="abcde" (testo normale)
2) Per evitare ciò, le password vengono memorizzate dopo essere state sottoposte a hashing utilizzando alcune tecniche di hashing affidabili come SHA256 o SHA 512 ecc.
password memorizzata in db = SHA256 ("abcde") = 36bbe50ed96841d10443bcb670d6554f0a34b761be67ec9c4a8ad2c0c44ca42c
3) Ma dal momento che le password hash sono vulnerabili agli attacchi dei tavoli arcobaleno o agli attacchi dizionario, viene applicata una nuova tecnica di salatura. Qui viene aggiunto un salt (una stringa) (normalmente prefisso o suffisso) alla password e quindi la password risultante + salt viene hash e archiviata in db.
password + salt="abcde" + "catsarecool" e < br>
password memorizzata in db = SHA256 ("abcdecatsarecool") = 8A85335AB6B09405FF34DCC146A0B690A3BFA834B8C53EBAD77F64C653A89F82
Ora posso spiegare / chiedere ciò che voglio confermare e le preoccupazioni che ho -
1) quando si usa salting (3), suppongo che anche la stringa salt debba essere memorizzata nel DB. Per favore conferma?
2) Se la stringa salata deve essere memorizzata in DB, qual è la procedura migliore: utilizzare un sale comune per tutti gli utenti dell'applicazione o un solo sale per utente.
3) a) L'intero scopo dell'hashing era che qualsiasi utente malintenzionato che ottiene il dump DB sarà in grado di vedere le password in testo semplice, che è meno sicuro rispetto a quando è sottoposto a hash.
b) E lo scopo della salatura è rendere questo lavoro più difficile rendendo impossibile l'uso di un dizionario o di un arcobaleno in quanto l'attaccante dovrà anche fare una supposizione per "sale" insieme alla password. Ma se un utente malintenzionato è in grado di ottenere il dump di DB in qualche modo, l'utente malintenzionato avrà anche i "sali" che, se memorizzati in db, vengono archiviati come testo normale. Quindi, ora che l'hacker conosce il "sale", non è il suo compito scoppiare la password tanto difficile quanto lo era quando cercava di decifrare le password con hash.
Non sono un esperto di sicurezza ma sono consapevole che per memorizzare le password, le tecniche più lente come bcrypt o scrypt o PBKDF2 saranno più appropriate. Commenti su queste o altre tecniche che sono le migliori per memorizzare le password sono i benvenuti. Ma sono preoccupato per lo scenario di cui sopra per scopi di apprendimento? Quindi condividi gentilmente i tuoi pensieri.