Nap, mint nap használunk jelszavakat a legkülönbözőbb rendszerekben, mind hallottunk már róla, hogy egy ideális jelszónak milyennek kell lennie, na meg milyennek nem, ezzel kapcsolatban egészen jó kis összefoglalót írt annak idején az Index
Azt már jóval kevesebben tudják, hogy azért fontos, hogy más-más helyen teljesen más jelszót adjunk meg, mert a különböző portálok jelszókezelési gyakorlata nagyban eltérhet. Szögezzük le: az a rendszer, ami a jelszóemlékeztető használatakor nem jelszóváltásra alkalmas URL-t küld, hanem magát a jelszót, régen rossz, mert egyértelmű jele annak, hogy a jelszó egyszerű szövegként, titkosítatlanul van tárolva. Sok ilyen hely van, de ideális esetben a jelszó titkosított, így gyakorlatilag maga a szerver sem tudja azt.
A jelszavak titkosítására leggyakrabban alkalmazott algoritmus az ún. MD5 hash,
aminek a lényege, hogy az MD5 algó által hash-elt, "bedarált" jelszóból egy fix hosszúságú karaktersorozat lesz, amiből lehetetlen visszakövetkeztetni az eredeti jelszót.
Amikor olyan webhelyre lépünk be, ami így tárolja a jelszavakat, sok megoldásnál az történik, hogy a jelszó beírásakor a kliensoldalon, azaz a saját számítógépünk kiszámítja a jelszó MD5-lenyomatát, majd azt küldi át a neten a szervernek, nem pedig magát a jelszót. A szerver ezt összeveti azzal, amit korábban kapott vagy kiszámított, majd tárolt a jelszó beállításakor. Ha egyezik a két hash, az azt jelenti, hogy a jelszó megadása helyes volt, hiszen csak két azonos jelszónak lehet azonos az MD5-lenyomata.
Dacára annak, hogy az MD5-ben már több sebezhetőséget is találtak az elterjedése óta, még mindig a leggyakrabban használt digest algoritmus, bár általában a célnak megfelel. Ezek a sebezhetőségek, amikről most nem fogok írni.
Ismeretes a jelszótörésnek azon módja, amikor egy program az összes lehetséges jelszót végigpróbálgatja (brute force), kezdve az értelmes szavakkal ("szótár módszer"), majd folytatva egyre bonyolultabb karakterláncokkal*. Ez a módszer hashelt jelszavak esetén értelemszerűen nem alkalmazható, hiszen a hash-t kellene megtalálni, ami mindig szép hosszú, randomnak tűnő karakterlánc. Sőt, egyetlen karakter eltérés a jelszóban is teljesen más lenyomatot eredményez. Példaként:
zughekker: 1494244c51af23f29ec068d249fb9b1f
zughekke: 0234980a60358c122c43ab6e4d5257d8
A brute force egy kifinomultabb változata az, amikor a program olyan lenyomatokat próbálgat végig, amit értelmes kifejezésekből generáltak ki korábban, hiszen a felhasználók sokszor értelmes kifejezést adnak meg jelszóként. Ezek az úgynevezett szivárványtáblák
tartalmazzák egy rakás különböző, korábban máshonnan begyűjtött jelszó és természetesen iszonyúan sok értelmes kifejezés MD5-jét. A brute force ezúttal magukkal az MD5 lenyomatokkal próbálkozik, ha pedig az egyik egyezik azzal, amire a feltört rendszer azt jelzi vissza, hogy helyes a jelszó, akkor a program a szivárványtáblából megkeresi az eltrafált MD5-höz tartozó jelszót és kiadja azt.
Vegyük észre, hogy ha jelszavunk kellően bonyolult és hosszú, erre a támadási típusra is immunis, hiszen a szivárványtábla a korábban megszerzett szókincsével dolgozik! Az összes lehetséges MD5 hash végigpróbálgatása lehetetlen a variációk nagy száma miatt.
Adja magát a kérdés: oké, de hogyan lehet hatékony, azaz jó nagy szivárványtábla, azaz több GB-os adattábla összeállításához elegendő jelszót begyűjteni, amik még csak nem is értelmes szavak? Az értelmes szavak begyűjthetők a netről, hiszen azokból matematikailag kevés van, legfeljebb néhány millióval kell számolni. A megoldás az, hogy egyszerűen csak rá kell venni a net népét' hogy saját maga adja meg jelszavait.
Ha valaki megnézi a wikipedia MD5 szócikkét, még az is idézi a http://www.md5decrypter.com/ webhelyet, ami állítólagosan az MD5-ből nyeri ki a jelszót, ami ugyebár nem lehetséges. Néha mégis sikerrel jár! Próbaként adjátok meg neki a fent leírt 2 hash valamelyikét, láss csodát, vissza fogja dobni válaszként, hogy "zughekker" vagy "zughekke". Egyszerű, értelmes szavakból alakított hash-t is jó eséllyel meg fog találni. A webhelynek persze van egy encrypter része is, amelyik a jelszót alakítja MD5-té, amit sokan ki is próbálnak, majd ellenőrzésként naivan megnézik a decrypter-ben, hogy tényleg "vissza tudja-e fejteni", nagy meglepetésükre megjelenik az általuk korábban megadott szó! Ha viszont ez matematikai lehetetlenség, nyilván illúzióról van szó. A trükkre magyarázatára mostanra áltag felhasználóként is lazán rájöhettél.
A site egy szóval nem említi, de az összes bele dobott jelszót tárolja annak kigenerált MD5 lenyomatával együtt, nem csoda hát, hogy olyan szépen gyarapszik az adatbázisuk és persze, hogy egyre nagyobb és nagyobb szivárványtáblák jelennek meg a feketepiacon. Így amikor valaki hashel egy jelszót, az olyan gyorsan bekerül az adatbázisba, hogy az ellenőrzéskor már dobja is a pár másodperce beírt kifejezést. Tesztként más helyen, például a http://www.miraclesalad.com/webtools/md5.php oldalon generálj egy MD5-öt,
tenyerelj nyugodtan a billentyűzetre a szövegdobozban azért, hogy olyan szöveget kapj, amit korábban élő ember még garantáltan sehol sem írt le, pár számot is belemixelhetsz, majd másold ki a lenyomatot és próbáld a http://www.md5decrypter.com/-on visszafejtetni. Garantáltan nem hoz eredményt. Ehhez képest, ha ugyanezt a billentyűzetbe tenyerelt szöveget itt hasheled, utána ellenőrzöd, mily' "meglepő", meg fogja találni.
Azaz az adatbázist maguk a felhasználók bővítik anélkül, hogy tudnának róla, ami azon a banálisan egyszerű tényen alapul, hogy sokan megnézik kíváncsiságból, hogy mi a jelszavuk MD5-lenyomata, utána pedig ellenőrzi, hogy a copy-paste-tel decrypter-be tett hash-t ismeri-e a webhely. A felhasználó csak ámul, bámul, esetleg még kipróbál pár általa használt jelszót, aztán simán lehet, hogy mire rájön, hogy minden jelszavát megadta, de ekkorra már mindegy. Már ha egyáltalán rájön.
Az így felhízlalt szivárványtáblák pedig eladhatók jó kis összegekért hasonlóan a mindenféle bárgyúsággal kicsalt MSN-címjegyzékekhez.
Gyakorlatilag az adathalászatnak egy speciális esetéről van szó, hiszen itt is önként szolgáltatják a felhasználók az információt.
*a jelszó pont annyira karaterkombináció, mint amennyi köze van a kombinációs zárnak a kombinációkhoz: semmi. A jelszó valójában ismétléses variáció, ahogy a kombinációs zár is valójában "variációs" zár.
Naivitással hízlalt szivárványtáblák?
2009.02.05. 16:58 | Zughekker Zita | Szólj hozzá!
Címkék: elemzés magánszféra felhasználói biztonság
A bejegyzés trackback címe:
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

UTOLSÓ OKOSSÁGOK