Hallo iedereen
Ik gebruik nu een simpele salt om de wachtwoorden in de database te versleutelen:
Is het mogelijk om alle wachtwoorden in de database te veranderen naar een moeilijkere salt, bvb:PHP Code:
md5($salt.$password);
Dus dat ik uit de huidige md5 salted hash het originele wachtwoord kan halen om dan opnieuw te encrypten (de salt is uiteraard gekend).PHP Code:
md5($salt.md5($password).$salt);
Alvast bedankt
Herman
- Verander salt: originele wachtwoorden terugvinden
-
04-02-2011, 11:38 #1
- Berichten
- 92
- Lid sinds
- 15 Jaar
Verander salt: originele wachtwoorden terugvinden
-
In de schijnwerper
-
04-02-2011, 11:40 #2
- Berichten
- 651
- Lid sinds
- 17 Jaar
Re: Verander salt: originele wachtwoorden terugvinden
$codering_1 = md5($salt.$password);
$codering_2 = md5($salt.$codering_1);
Zoiets?!
-
04-02-2011, 12:08 #3
- Berichten
- 92
- Lid sinds
- 15 Jaar
Re: Verander salt: originele wachtwoorden terugvinden
Het is de bedoeling om uit de md5 salted hash het originele wachtwoord te halen. De salt is uiteraard gekend :)
-
04-02-2011, 12:14 #4gast5581 Guest
Re: Verander salt: originele wachtwoorden terugvinden
md5 is niet terug te draaien in theorie.
-
04-02-2011, 12:39 #5
- Berichten
- 1.410
- Lid sinds
- 16 Jaar
Re: Verander salt: originele wachtwoorden terugvinden
Nee kan niet, maar je kunt alle wachtwoorden toch dubbel "zouten"?
Waarom zou je de originele wachtwoorden terug willen halen (wat praktisch niet mogelijk is)?
-
04-02-2011, 12:43 #6
- Berichten
- 360
- Lid sinds
- 14 Jaar
Re: Verander salt: originele wachtwoorden terugvinden
Doe Sha1, dan weet je zeker dat je goed zit de komende tien jaar.
-
04-02-2011, 12:45 #7
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: Verander salt: originele wachtwoorden terugvinden
Mja, met een rainbow table kan het misschien lukken en wat bruteforce.. maar ik denk dat zowel ik als de meeste die hier zitten niet voldoende weten om een md5 hash te kraken. een MD5 hash is er nu eenmaal om niet teruggedraaid te kunnen worden en om te vergelijken met een andere hash waarde. Je zou eventueel de huidige data in je tabel nog eens met een extra salt kunnen hashen;
$hash = md5($newsalt.$currenthash);
dan heb je in feite
$hash = md5($newsalt.md5($salt.$password));
Weet niet of je daar veel mee opschiet? Uiteraard wel rekening ermee houden dat je zowel de oude als nieuwe salt gebruikt bij het nieuw invoeren van een gebruiker..
Aanvullend bericht:
Ik ben toevallig bezig met een boek (PHP5 CMS Framework Development) waarin het volgende staat:
"In theory, SHA-1 is stronger than MD5, while MD5 is faster to process. Unfortunately, it turned out that there is at least n weakness in SHA-1, so although is has become more popular, it is not certain that it is any stronger than MD5. The real weakness in both is that hashed passwords can be retrieved quite quickly if they are common words or names. A sophisticated method of cracking a set of hashed passwords is to use a technique known as rainbow tables, which can cover a large number of possible passwords very quickly".
Welke zwakheid SHA-1 heeft meld hij niet, misschien omdat het dan te makken is voor mensen om er misbruik van te maken?Laatst aangepast door Joshua de Gier : 04-02-2011 om 12:49 Reden: Automatisch samengevoegd.
-
04-02-2011, 12:59 #8
- Berichten
- 3.430
- Lid sinds
- 16 Jaar
Re: Verander salt: originele wachtwoorden terugvinden
Dit is niet mogelijk. MD5 levert altijd een 128-bits hashwaarde op (de php-functie md5() levert als default een hexadecimaal getal op wat wordt gereturned als string van 32 karakters), wat betekent dat er een gelimiteerd aantal hashes is (128 bits, oftewel 2^128 ≈ 3,4 * 10^38). Dit betekent ook dat er voor hashes dus meer dan 1 waarde is waarbij md5(waarde) dezelfde hash oplevert. Oftewel, een MD5 hash heeft meer dan 1 waarde waarmee dezelfde hash gegenreerd kan worden, en daardoor is er niet 1 definitieve originele waarde te vinden.
Door middel van zogenaamde rainbow tables (http://en.wikipedia.org/wiki/Rainbow_table) is het mogelijk om een originele corresponderende waarde te vinden die de hash oplevert, wat zou doen vermoeden dat het wel mogelijk is wat je wil. Het is echter zo dat, ookal leveren md5($var1) en md5($var2) dezelfde waarde op, md5($var1 . 'string') en md5($var2 . 'string') niet per definitie dezelfde waarde opleveren.
Het is dus simpelweg niet mogelijk. Zelfs al zou je een string vinden waarvoor geld dat md5($var) gelijk is aan de hash (en is het is niet per toeval het originele password), is het niet mogelijk om er voor te zorgen dat je een nieuwe hash met een extra salt krijgt die gechecked kan worden met het originele wachtwoord. Dat is overigens ook het idee van salten: Als md5($var1) gelijk is aan md5($var2) betekent dat niet dat md5($salt . $var1) gelijk is aan md5($salt . $var2) (tenzij $var1 gelijk is aan $var2 natuurlijk, want dan zijn de parameters die worden doorgeven gelijk). Indien dit niet zo was zou het hele salt-principe ook geen nut hebben.
-
04-02-2011, 13:12 #9
- Berichten
- 92
- Lid sinds
- 15 Jaar
Re: Verander salt: originele wachtwoorden terugvinden
Bedankt voor de antwoorden. Leuk om te horen dat MD5 toch zeer veilig is, zeker met een salt.
Na het lezen van de reacties denk ik dan ook dat het niet per se nodig is om er een tweede salt aan toe te voegen, dat het zo eigenlijk al veilig genoeg is en zo goed als niet te kraken :)
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic