Waarom? SHA-256 alleen is niet geschikt voor wachtwoordopslag
Bestand controlesums en server-side wachtwoord opslag lossen verschillende problemen. Wachtwoordopslag moet ook elke offline gok duur te maken.
In deze gids
Hashing is geen versleuteling: er is geen overeenkomstige decryptie operatie. Niettemin, na een database lekken kan een aanvaller hash raden en ze vergelijken met gestolen records zonder het passeren van uw toepassing ...
De snelheid van SHA wordt een nadeel
SHA-256 is nuttig voor integriteitscontroles en vele cryptografische toepassingen. De snelheid is ongewenst voor het opslaan van wachtwoorden. SHA256(salt + password) maakt gissen niet duur genoeg. Zout en computationele kosten dienen verschillende doeleinden.
Een credential formaat of een lus van gewone hashes niet uitvinden. Gebruik een onderhouden wachtwoord-hashing bibliotheek.
Kies een speciale wachtwoord-hashing functie
OWASP geeft de voorkeur Argon2id voor nieuwe systemen, met scrypt als alternatief indien niet beschikbaar. PBKDF2 Bcrypt blijft relevant voor oude systemen, maar heeft beperkingen, inclusief invoerlengte.
Gebruik bibliotheekfuncties voor aanmaak en verificatie, zoutopwekking en opslag van parameters. Kies kostenparameters uit de huidige begeleiding en metingen op de doelserver. Account voor gelijktijdige logins en resourcelimieten: dure hashing mag het weigeren van service niet triviaal maken. Online snelheidsbeperking blijft noodzakelijk.
Begrijp zout en peper
Een zout is willekeurig en uniek voor elke record; het hoeft niet geheim te zijn. Bewaar ook de algoritme identifier en verificatie parameters, vaak in de bibliotheek gecodeerde record.
Een peper is een optioneel geheim bewaard buiten de wachtwoord database. Het kan helpen in sommige inbreuk scenario's, maar bemoeilijkt rotatie en sleutelbeheer. Het vervangt noch zout noch een geschikte hashing functie.
Upgrade records na succesvolle verificatie
Bij een succesvolle login, controleer eerst het oude record en rehash vervolgens het ingediende wachtwoord als parameters verouderd zijn. U kunt geen originele wachtwoorden uit bestaande hashes herstellen om de hele database te migreren. Inactieve accounts hebben een aparte reset of migratiebeleid nodig. Rehashing maakt geen vorige lek ongedaan.
Test vóór de implementatie onjuiste wachtwoorden, oude migraties, lengtelimieten en belasting. Log nooit in om wachtwoorden te testen of stuur ze naar analytics.