ugrás a tartalomhoz

Ismét könnyebbek lettek az MD5 támadások

Hojtsy Gábor · 2005. Aug. 22. (H), 19.54
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.
 
1

Többszörös kódolás?

saxus · 2005. Aug. 23. (K), 00.23
Esetleges megoldás lehetne még az, hogy kétszer kódoljuk le a jelszót, esetleg második kódolásra SHA1-l, amelyet szintén támogat a PHP, és ráadásul nem 128, hanem 160 bites. Nem tartom túl valószínűnek, hogy MD5 hashek hasheit is sűrűn belerakják egy-egy ilyen adatbázisba.

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...
2

Még egyszerűbb

Bártházi András · 2005. Aug. 23. (K), 07.03
Minden jelszóhoz még kódolás előtt fűzzed hozzá, hogy "Weblabor". :)

-boogie-
3

??

dtaylor · 2005. Aug. 23. (K), 09.30
Szia!

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 ]
4

<Nincs cím>

Anonymous · 2005. Aug. 23. (K), 10.11
Mert a szótárban biztos van olyan szó hogy "feri", de olyan biztos nincs, hogy "feriweblabor".
Persze mást is hozzá lehet fűzni, pl a felhasználó regisztálásának dátumát, azonosítóját,...
6

miért is lett egyébként könnybb?

Anonymous · 2005. Aug. 23. (K), 10.20
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
7

érdekes

Hojtsy Gábor · 2005. Aug. 23. (K), 11.50
Érdekes, éppen ez van a hírben is.
8

Az md5 kiszámolása elhagyható

Jano · 2005. Aug. 23. (K), 12.06
Annyival mindenképpen könnyebb, hogy a szótár md5 kodólását nem kell elvégezned, csak összehasonlításokat!
5

<Nincs cím>

Anonymous · 2005. Aug. 23. (K), 10.12
nemtom,
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
9

<Nincs cím>

saxus · 2005. Aug. 23. (K), 12.53
Naigen, ha kapunk js-ses md5 hash-t. Bár ha rakunk mellé még egy hidden mezőt, mondjuk md5 néven, és abba kódoljuk el a jelszót, majd töröljük az eredeti mezőből, akkor meg lehet oldani, hogy akkor is menjen, ha nincs vagy tiltott a javascript.

Amúgy meg hogy tudom rühelleni, mikor egy szimpla mezei link helyett egy nagy halom post művelet van.
10

<Nincs cím>

Anonymous · 2005. Aug. 23. (K), 18.38
Amúgy meg hogy tudom rühelleni, mikor egy szimpla mezei link helyett egy nagy halom post művelet van.


Pedig lehet szívni mindenféle prefetcher "internet gyorsító"-kkal ha sima linkként teszed pl. a felhasználó törlését :)