Ismét könnyebbek lettek az MD5 támadások
Az utóbbi napokban több helyen is felbukkant a GData nevű webhely linkje, ahol több mint tizenkét millió szó és md5 hash érték párja érhető el. Sok fejlesztő használja a PHP vagy valamely SQL adatbázis md5() függvényét, hogy a felhasználók jelszavait elkódolja. Lévén egyirányú kódolás, ez lehetővé teszi, hogy a kódból ne tudják automatikusan visszaállítani a jelszót. Ha azonban gyakori jelszavakat, vagy gyakori módszerekkel előállított jelszavakat használunk, egy kód szótár alapján visszafejthetőek az eredeti karaktersorozatok. Ezért nem örülnek sokan ennek az óriási mértékű adatbázisnak.
Ahogy Ilia Alshanetsky is megjegyzi blog bejegyzésében, a probléma nem feltétlenül az md5() használatában van, hanem a jelszavak egyszerűségében. Amennyiben valamilyen módon nyilvánosságra kerülnek a webhelyünk felhasználóinak md5() segítségével kódolt jelszavai, szinte biztos, hogy több eredeti értékét is meg lehet fejteni a szótáras visszafejtés segítségével.
Miként kerülhetjük el ezt a problémát? Természetesen mindent meg kell tennünk, hogy az md5 segítségével kódolt jelszavak ne kerülhessenek illetlen kézbe. Arra az esetre, ha ez mégis megtörténne, az md5() hívásokban csak az alkalmazásunk által ismert kiegészítő karaktersorozatokat használhatunk. Ennek elegánsabb módja a crypt() függvény használata lehet, bár az nem működik egységesen minden platformon. Mindezeken túl természetesen felhasználóink oktatása is egy megoldási út lehet, azaz bizonyos tipikus jelszavak és minták felismerése esetén visszautasíthatjuk a jelszó beállítását, és komolyabbat kérhetünk.
■ Ahogy Ilia Alshanetsky is megjegyzi blog bejegyzésében, a probléma nem feltétlenül az md5() használatában van, hanem a jelszavak egyszerűségében. Amennyiben valamilyen módon nyilvánosságra kerülnek a webhelyünk felhasználóinak md5() segítségével kódolt jelszavai, szinte biztos, hogy több eredeti értékét is meg lehet fejteni a szótáras visszafejtés segítségével.
Miként kerülhetjük el ezt a problémát? Természetesen mindent meg kell tennünk, hogy az md5 segítségével kódolt jelszavak ne kerülhessenek illetlen kézbe. Arra az esetre, ha ez mégis megtörténne, az md5() hívásokban csak az alkalmazásunk által ismert kiegészítő karaktersorozatokat használhatunk. Ennek elegánsabb módja a crypt() függvény használata lehet, bár az nem működik egységesen minden platformon. Mindezeken túl természetesen felhasználóink oktatása is egy megoldási út lehet, azaz bizonyos tipikus jelszavak és minták felismerése esetén visszautasíthatjuk a jelszó beállítását, és komolyabbat kérhetünk.
Többszörös kódolás?
Egy átlag jelszó kb 8 betűig terjed, az 50 karakterrel (8!^50) számolva kb. 40 ezer milliárd jelszót jelent, míg egy MD5 hash (128 bites számként nézve 0-tól maximumig) figyelembe véve lényegessen több (16^32 = ~3,4*10^38) lehetséges kombinációt ad. Szerintem nincs az az elvetemült ember, aki ennyi hash-t feltöltene egy adatbázisba.
Persze, ha a legnépszerűbb 12 millió jelszó MD5 hashét lekódoljuk MD5-l, akkor már egyszerűbb visszakeresni, de jelenleg szerintem nincs ilyen adatbázis :-). Persze, ha nemcsak MD5-t használunk...
Még egyszerűbb
-boogie-
??
Ez miért is segít azon, hogy md5 kulcshoz visszafelé rendelik hozzá a jelszót, és ezen szótár alapján dolgoznak? :)
--
[ Dönci ]
<Nincs cím>
Persze mást is hozzá lehet fűzni, pl a felhasználó regisztálásának dátumát, azonosítóját,...
miért is lett egyébként könnybb?
az egésznek akkor van értelme, ha már lezúztam magamnak egy adott oldalról vagy gépről a felhasználók listáját és md5ös jelszavukat.
ahol ezt meg meg lehet tenni, ott nem ez a legfőbb gond.
szvsz
mrbond
érdekes
Az md5 kiszámolása elhagyható
<Nincs cím>
ahol nagyon fontos a védelem ott https, meg minden egyéb md5, sha1, saját kód, stb trükk.
ez olyan mint az autóriasztó. ha gyári akkor bármely hivatásos tolvajnak könnyű meló, ha pedig egyedi akkor azt nem nagyon fogják babrálni.
egyébként régebben csináltam azt, hogy a felhasználó bepötyögte a jelszót a formba, majd azt js-es md5 kóddal elküldtem a sitnek. az megint md5 ölt rajta 1-et, és ezt hasonlította össze az adatbázisban tárolt (szintén kétszer md5ölt) értékkel. ez jó volt, mert sima plain httpn keresztül is lehetett (viszonylag) biztonságosan authentikálni.
tudom, hogy ez sem véd az atomcsapás ellen, de legaláb nem mentek a passok plaintextben
mrbond
<Nincs cím>
Amúgy meg hogy tudom rühelleni, mikor egy szimpla mezei link helyett egy nagy halom post művelet van.
<Nincs cím>
Pedig lehet szívni mindenféle prefetcher "internet gyorsító"-kkal ha sima linkként teszed pl. a felhasználó törlését :)