Mysql
 sql >> Database >  >> RDS >> Mysql

Migliora l'hashing delle password con un salt casuale

Un attaccante è "autorizzato" conoscere il sale - la tua sicurezza deve essere progettata in modo tale che anche con la conoscenza del sale sia ancora sicura.

Cosa fa il sale?

Il sale aiuta a difendersi dagli attacchi di forza bruta utilizzando "tabelle arcobaleno" precalcolate.
Il sale rende la forza bruta molto più costosa (in termini di tempo/memoria) per l'attaccante.
Calcolare tale tabella è costoso e di solito viene eseguito solo quando può essere utilizzato per più di un attacco/password.
SE si utilizza lo stesso salt per tutte le password, un utente malintenzionato potrebbe pre-calcolare una tabella del genere e quindi forzare brute le password in testo non crittografato ...
Finché generi un nuovo salt casuale (migliore crittograficamente forte) per ogni password di cui desideri archiviare l'hash non ci sono problemi.

SE vuoi rafforzare ulteriormente la sicurezza
Potresti calcolare l'hash più volte (hash l'hash ecc.) - questo non ti costa molto ma rende un attacco di forza bruta / calcolare "tabelle arcobaleno" ancora più costoso... per favore don non inventarti:esistono metodi standard collaudati per farlo, vedi ad esempio http://en. wikipedia.org/wiki/PBKDF2 e http://www.itnewb.com/tutorial/Encrypting-Passwords-with-PHP-for-Storage-Using-the-RSA-PBKDF2-Standard

NOTA:

L'uso di un tale meccanismo è attualmente obbligatorio dal momento che "CPU time" (utilizzabile per attacchi come rainbow table/brute force ecc.) sta diventando sempre più ampiamente disponibile (vedi ad esempio il fatto che il servizio Cloud di Amazon è tra i primi 50 supercomuter più veloci al mondo e può essere utilizzato da chiunque per un importo relativamente piccolo)!