het is te kraken als je ten 1ste weet dat het MD5 is,
maar nu wordt het toch overal gebruikt,
maar je kan het makelijk moeilijk maken,
door gewoon de MD5 in 2 te splitsen en in de omgekeerde volgorde te zetten.
Het is kraakbaar, d.m.v. bruteforce.
Het gaat wel lang duren voordat je het gekraakt hebt.
4 of 5 letters duurt ongeveer 5 tot 10 minuten.
Maar als het meer tekens worden, en ook leestekens, gaat het veel langer duren.
Als je er goed mee omspringt niet. Dus als je al bovenstaande stappen volgt (verder coderen op eigen manier) wordt het al veiliger, en noch moeilijker om alle mogelijkheden via een programma af te gaan met een md5 als input. Dmv bruteforce online via een programma mogelijkheden laten invullen zal het al sneller gefixt zijn. Maar na 10 keer proberen een time out inzetten van 5 minuten. En als er in die 5 minuten meer dan 20 keer is geprobeerd directe IP ban ofzo.
Voordeel is dat 1 hash meerdere opties heeft. Nadeel is dat als je 1 van die andere opties invult het wordt gezien als het juiste passwoord.
Wie zegt dat?
Bij mijn weten is dat sha1.
Mede omdat deze een hexadecimaal getal van 40 tekens terug stuurt en md5 van 32. En ook omdat de naam voor "secure hash algorithm" staat.
SHA0, MD4, MD5, HAVEL128 en RIPEMD hebben "collision" aanvallen gehad. Dit wil zeggen dat strings met dezelfde md5 waarde zijn gevonden. Dit is een vorm van kraken daar je hiermee een deel van het algoritme ontsluierd en het naar je hand kan zetten.
Het is mogelijk geweest een "collsion" te vinden in SHA1 doormiddel van een loop van '60 miljard * 5 miljard' (ik kan zo'n getal niet uitspreken:))
@Lightblade: ik denk dat het meer voor het onderscheppen van het passwoord tussen de pc van de gebruiker de server gebruikt wordt.
Er bestaan brute force crackers maar deze hebben meestal maanden nodig om een 8+ wachtwoord te vinden
Een wachtwoord tot 4 heb je in 2-3 minuten maximum (met een 2GHz cpu) en to 6 in een uurtje maximum. Je moet wel een deftige soft, met goede en snelle algoritmes hebben om zulke tijden te halen.
Ik heb zelf eens voor de fun een brite farce scriptje in PHP gemaakt en volgen de brekeningen (zat een timer functie die restijd berekend) kan een wachtwoord van 8 characters to 300 dagen in beslagnemen (veel minder als de laatste letter toevallig een 'a' is).
Een paar tips :
- belangrijke wachtwoorden altijd 8 of meer characters en gebruik van een mix : klein- en hoofdletters, cijfers speciale character (mischien zelfs een character die niet op je toetsenbord staat : ALT-XXXX)
- gebruikt alternative methodes om een MD5 hash te maken in je scripts. vb : strrev(md5($a))
Ook al vindt iemand de hash moet hij nog je code hebben om verder te kunnen ;)
correct and full MD5 collisions can and have been efficiently found. Their approaches also apply to three other hash algorithms: HAVAL, MD4, and RIPEMD. The audience responded to the presentation of Feng, et al with a standing ovation, and the statement that MD4 collisions could be computed "by hand" was made for dramatic effect. While a significant milestone, the emergence of these attacks is not a sudden surprise, considering the longstanding warnings, and prior recommendations (since 1996) to use the more secure and standard SHA1.
Daarom denk ik ook dat sha1 dus veiliger is.
Thomas - 08/09/2005 13:11 (laatste wijziging 08/09/2005 13:11)
Moderator
De zwakste schakel is volgens mij nog altijd de gebruiker .
Verder kun je nog allerlei maatregelen treffen rondom het gebruik van een algorithme, zoals (er van uitgaande dat we het over het beveiligen van wachtwoorden hebben):
- max aantal inlogpogingen in een bepaald tijdsinterval, op basis van IP
- de gebruiker verplichten een moeilijk te raden wachtwoord te kiezen
- de gebruiker verplichten het wachtwoord eens om de zoveel tijd te veranderen
- ...
Volgens mij is md5() niet te kraken (behalve met brute-force), omdat er informatie verloren gaat. Als je een tekst hebt van 3000 tekens wordt dat met md5() veel minder. Dus je verliest informatie, dus je kunt het origineel niet meer terugkrijgen.
Mocht dit niet zo zijn is dit geen probleem. Hashen is altijd veel sneller dan de-hashen. Dus als een computer het wachtwoord in 1 uur kan de-hashen, kan een computer in 0.001 sec hashen. Dus dan md5() je het 1000 keer, dan duurt het 1000 uur om het te de-hashen, en 1 sec om het te hashen.
Alles is gewoon te kraken, alleen lijkt het me zeer moeilijk om bv zo'n algoritme te kraken. Je moet al zeer veel verstand hebben van Wiskunde en van ASM programmeren...
Op PHP.net in de function lijst staat een link bij MD5/SHA1/CRC32 die het algoritme uitlegt van MD4-5. Heb die ook net gevonden en die aan het lezen, lijkt me niet simpel om zoiets om te draaien
Verder zou ik het doen zoals Fangaron zegt...
vraagje @joel: waarom? is het ledenscript te kraken misschien nu?
Ook al vindt iemand de hash moet hij nog je code hebben om verder te kunnen ;)
- ja das waar, maar als je met cookies werkt om automatisch in te loggen, zet de persoon gewoon deze hash in zijn cookie en is hij ingelogd onder de desbetreffende gebruikersnaam. (Andere oplossing het passwoord ongehashed in een cookie zetten is ook niet veilig)
Md5 is te cracken en het is hellemaal niet moeilijk.
This alleen lang durig vb:
Een wachtwoord in md5 van 6 characters duurt 1 uur om te vinden.
Een wachtwoord van 8 characters 7 uur etc.
En als je gaat werken met een rainbow table dan kan je zelfs een md5 wachtwoord in 7 minuten vinden.
md5 is dus hackbaar zonder probleem!
@Zwobbel: and what about als
"dit is een ongelooflijk debiele tekst"
en "blaat" dezelfde hash hebben?
Met een passwoord maakt het niet veel uit. Stel het passwoord is blaat en je vult die ongelooflijk debiele tekst in dan ben je binnen. Maar soms zitten systemen niet zo in elkaar, en moet je dus echt de originele hash hebben.
Dude ik dacht het ook tot mijn maat het bewees en als ge me niet geloof kzal effe vrage aan hem welk programma jusit dat het was.
Wie laatste lacht best lacht!
Een wachtwoord van 4 karakters kan ik ook ff met een program decoderen, maar je zegt dat je maat een wachtwoord van 8 karakters kan decoderen in 7 uur ? Wil ik toch nog wel eens zien
Met mijn Dual 2800 haal ik het niet in minder als een week met een beperkte character set !!!
Ongeveer een jaar geleden hebben japaners een md5 crack (brute force) in minder als 24u gehaald (niet veel minder) en de gebruikte machine was een 'super computer' zoals een blue gene
Dus : minder als 7 uren enkel met beperkt character set
Probeer deze eens : f96f6aab438c0c1c619b151c1c37641d
Heb deze juist gemaakt en enkel 7 character begruikt
Ik geef je een week de tijd ;)
Na een week post ik de oplossing
PS : een hash nog een Hashen enz... is goed als je het 1 keer doet, maar meer is onzin omdat je het aantal gelijke oplossingen verhoogt
Door een hash (een of meer keer opnieuw) te hashen vergroot je volgens mij het aantal mogelijkheden. Als je een wachtwoord 3x hashed lijkt het mij moeilijker te kraken dan wanneer het 2x is gehashed.
Stel dat elke hash 10 mogelijke wachtwoorden heeft (het zijn er waarschijnlijk meer). Dan levert 1x hashen 10 mogelijkheden, 2x hashen 10x10 mogelijkheden, 3x hashen 10x10x10 mogelijkheden etc..
@FangorN: op dat vlak heb je volledig gelijk. Het aantal mogelijkheden vergroot, dus de originele waarde is moeilijker terug te vinden.
Echter als het om passwoorden gaat en bv. aaaaaaaaaaaaaaaaaaaaaaaaaaaaa (gewoon random hash even nemen) de waarde "halo" en de waarde "123789321" heeft. Dan maakt het niet uit wat je in je tekstvlak invult: "halo" of "123789321", je wordt in beide gevallen toegelaten. Daarom ben ik voorstander om md5 met sha1 te combineren. Omdat "halo" en "123456321" een totaal verschillende hash hebben bij sha1 en bij sha1 zullen er ook wel overeenkomsten zijn, maar die zijn dan weer in md5 verschillend. Dus [of] je vind de originele hash, [of] je vind er geen.