Beste Tweakers,
Ik ben voor mijn CMS bezig met de beveiliging, hiervoor wil ik een systeem ontwikkelen dat zowel veilig is qua login data die verzonden wordt als wel de opslag van wachtwoorden van gebruikers.
Om de login data veilig te stellen maak ik gebruik van een challenge/response voor elke request ism client side md5 hashing. Wat ik doe is het volgende;
Dit zorgt er voor dat de wachtwoorden niet in plain text over de lijn gaan en dat een response maar één keer gebruikt kan worden.
Nu komt echter het probleem, om het achterhalen van de wachtwoorden uit de database tegen te gaan (mocht deze in verkeerde handen vallen) sla ik de wachtwoorden in mijn db op met behulp van een salt.
echter, het wachtwoord uit de database kan ik nu niet meer vergelijken met de challenge, aangezien deze laatste niet beschikt over de salt.
Nu had ik al een opzet gemaakt waarbij de gebruiker eerst zijn gebruikersnaam moest invoeren, waarna de salt van de server werd opgehaald en gebruikt werd bij het opstellen van de response, maar samen met een vriend van me kwamen we er al achter dat een dergelijk systeem geen meerwaarde had (aangezien het wachtwoord op die manier nog af te leiden viel)
Ik heb uiteraard de nodige security guides gelezen, het probleem is alleen dat ze of wel een veilig login script geven, of het hebben over password salting, maar niet echt over een combinatie van deze twee
Mijn vraag is of er mensen zijn die dit probleem vaker zijn tegen gekomen en of zij hiervoor een oplossing weten.
Bronnen;
http://phpsec.org/articles/2005/password-hashing.html
http://blogs.msdn.com/eri...r-challenge-response.aspx
http://blog.alfbox.net/in...thentication-without-ssl/
*note* Uiteraard is het niet nodig om de wachtwoorden te versleutelen bij het inloggen als er gebruik wordt gemaakt van SSL, het systeem moet echter ook veilig zijn als er geen gebruik wordt gemaakt van SSL!
Ik ben voor mijn CMS bezig met de beveiliging, hiervoor wil ik een systeem ontwikkelen dat zowel veilig is qua login data die verzonden wordt als wel de opslag van wachtwoorden van gebruikers.
Om de login data veilig te stellen maak ik gebruik van een challenge/response voor elke request ism client side md5 hashing. Wat ik doe is het volgende;
code:
1
2
3
4
| Alice -> Server : request login pagina Server -> Alice : login pagina + challenge Alice -> Server : gebruikersnaam + md5(challenge + md5(password)) ("response") Server -> alice : if(response == md5(challenge + db_password)){ $login =true; }else{ $login = false; } |
Dit zorgt er voor dat de wachtwoorden niet in plain text over de lijn gaan en dat een response maar één keer gebruikt kan worden.
Nu komt echter het probleem, om het achterhalen van de wachtwoorden uit de database tegen te gaan (mocht deze in verkeerde handen vallen) sla ik de wachtwoorden in mijn db op met behulp van een salt.
code:
1
| db_password = md5(salt + md5(password)) |
echter, het wachtwoord uit de database kan ik nu niet meer vergelijken met de challenge, aangezien deze laatste niet beschikt over de salt.
Nu had ik al een opzet gemaakt waarbij de gebruiker eerst zijn gebruikersnaam moest invoeren, waarna de salt van de server werd opgehaald en gebruikt werd bij het opstellen van de response, maar samen met een vriend van me kwamen we er al achter dat een dergelijk systeem geen meerwaarde had (aangezien het wachtwoord op die manier nog af te leiden viel)
Ik heb uiteraard de nodige security guides gelezen, het probleem is alleen dat ze of wel een veilig login script geven, of het hebben over password salting, maar niet echt over een combinatie van deze twee
Mijn vraag is of er mensen zijn die dit probleem vaker zijn tegen gekomen en of zij hiervoor een oplossing weten.
Bronnen;
http://phpsec.org/articles/2005/password-hashing.html
http://blogs.msdn.com/eri...r-challenge-response.aspx
http://blog.alfbox.net/in...thentication-without-ssl/
*note* Uiteraard is het niet nodig om de wachtwoorden te versleutelen bij het inloggen als er gebruik wordt gemaakt van SSL, het systeem moet echter ook veilig zijn als er geen gebruik wordt gemaakt van SSL!
[ Dislect ]