PHP salt
Wat is de beste mogelijkheid voor salt van een wachtwoord? Ik snap er nog niet heel veel van. Is het het beste om de tijd in microseconden als salt te nemen? En hoe "unsalt" ik die dan later? Ik heb wat tutorials gelezen, maar snap er nog niet heel veel van.
Gr Jordy
Je 'unsalt' nooit.
Altijd een kant op. Dus steeds password encrypten / hashen...
md5 of sha1 ?
Code (php)
En wat kan ik dan op de plaats van de XXX zetten?
Gewijzigd op 21/11/2010 21:04:52 door Jordy nvt
Verder moet je nooit of te nimmer meerdere hashing / encryptie functies over elkaar heen gooien, daarmee maak je de kans op gelijke hashen groter en dat wil je dus niet.
Zo ja, typ daar maar eens "salt" in.
http://www.georgetruong.com/2009/09/02/how-to-salt-and-hash-user-passwords-in-php/ of
http://createmy.com.au/php-password-salt-and-pepper-using-sha1-md5-hash/
Zoals een echte kok zijn meester recepten niet verklapt, ookal weet je al dat het bijvoorbeeld biefstuk is. De kruidenmix (in dit geval peper en zout) maken de mix af, zorgt dat iemand nog meer mogelijkheden moet proberen, wat per extra entiteit een logaritmische toevoeging aan tijd voor het ontcijferen kan bewerkstelligen.
Ook is het aan te raden je salt dynamisch te maken, door bijvoorbeeld het emailadres van de gebruiker (mocht dit niet veranderen) er (evt gehutseld) achter de reguliere salt te plakken.
EDIT: Uiteraard is zout geen specerij / kruid ;)
Gewijzigd op 22/11/2010 17:13:43 door Pim -
Zelf betwijfel ik hoeverre men komt als de salt niet dynamisch is.
Uiteraard is het voor kleine sites niet zo belangrijk en als de hacker de hash kent, ben je ook al aardig ver heen, maar het voegt wat extra beveiliging toe, omdat de hacker (mocht het kunnen) zo niet een of andere analyse kan uitvoeren, waarmee hij de salt ontdekt, waardoor het aantal mogelijkheden drastisch wordt verkleind.
Ok, maar waren die links goed die ik stuurde?
Je moet ook op Bing of Yahoo gaan zoeken!!
Die had ik inderdaad al gelezen. Maar stel dat ik als salt de tijd in microseconden neem. Moet ik dan het wachtwoord en die tijd in de database opslaan en vervolgens "unsalten"?
Karl Karl op 21/11/2010 20:14:41:
Niet.
Je 'unsalt' nooit.
Altijd een kant op. Dus steeds password encrypten / hashen...
Je 'unsalt' nooit.
Altijd een kant op. Dus steeds password encrypten / hashen...
Ja, maar ik bedoel, ik moet wel controleren of het wachtwoord juist is als de gebruiker deze invoert, dus dan moet ik toch de salt weten?
Je UNSALT nooit, maar je matcht wel je wachtwoorden
Stel, je hebt succesvol een salt toegepast en een MD5 of SHA1 en dit is het wachtwoord als plain text:
12o3hkjb23234lnljbk234n089fgdffdgdfg
Dan zal je moeten zorgen dat je het ingevoerde wachtwoord op de login pagina weer salt en vervolgens weer met MD5 of SHA1 encrypt, om zo hetzelfde resultaat te krijgen als wat in de database staat..
Snap je?
Gewijzigd op 22/11/2010 18:46:32 door Justin S
Toevoeging op 23/11/2010 09:44:32:
Ik ga deze gebruiken: http://www.opensecuritylab.org/storing-passwords-securely-using-salt-in-php
Het gebruikt geen microseconden, maar volgensmij is die echt veilig!
Is die laatste link die ik gaf eigenlijk een goede?
Wat misschien ook wel een leuke is, is om de laatste 3 van de 32 tekens niet uit de hash te laten komen, maar random te laten zijn. Daar zal je een hacker heel wat kopzorgen mee bezorgen :)