Tweets by @buherablog
profile for buherator at IT Security Stack Exchange, Q&A for IT security professionals

A BitBetyár Blog

Túljártál a nagyokosok eszén? Küldd be a mutatványodat! (e-mail a buherator gmailkomra jöhet)

Full-Disclosure / Névjegy / Coming out


Promó

H.A.C.K.

Címkék

0day (110) adobe (87) adobe reader (21) anonymous (26) apple (60) az olvasó ír (49) blackhat (20) botnet (22) bug (200) buherablog (44) buhera sörözés (39) bukta (49) deface (38) dns (22) dos (29) esemény (82) facebook (26) firefox (64) flash (33) gondolat (31) google (59) google chrome (36) hacktivity (37) hírek (117) incidens (224) internet explorer (88) iphone (35) java (50) jog (22) kína (21) kriptográfia (68) kultúra (21) linux (24) malware (43) microsoft (142) móka (48) mozilla (23) office (26) oracle (40) os x (43) patch (197) php (20) politika (31) privacy (58) programozás (22) safari (34) sql injection (62) windows (85) xss (77) Címkefelhő

Licensz

Creative Commons Licenc

MD5 ütköztetés

2007.11.22. 17:20 | buherator | 2 komment

Rambo írt egy remek kis összefoglalót arról, hogy milyen elterjedt módszerek léteznek a különböző módokon tárolt jelszavak hatékony (gyors) megszerzésére. A poszt végén szóba kerül az MD5 és annak "megerősítésének" lehetősége, amelyről eszembe jutott egy szintén nem újkeletű, de annál érdekesebb és rengeteg félreértésre okot adó dolog, nevezetesen az MD5 hash-ek ütköztetési lehetőségei, amely jól illusztrálja az erős kriptográfiai algoritmusok konstruálásának hihetetlen nehézségét is. Nem fogok belemenni az MD5 vagy a hash algoritmusok ismertetésébe, ezeknek nézzen utána az akinek szüksége van rá, csapjunk rögtön a lecsóba! A módszer megismeréséhez a legjobb kiindulópont Peter Selinger idevégó oldala, amelynek egy kivonatát igyekszem most itt magyarul közzétenni.

Az MD5 algoritmust a kriptoguru Ron Rivest fejlesztette ki 1991-ben az MD4 megerősítéseként. 2005 márciusában azonban két kínai szakértő, Xiaoyun Wang és Hongbo Yu kritikus hibára hívta fel a figyelmet. Publikációjuk lényegében arról szól, hogy hogyan lehet egy adott adatsorhoz rövid idő alatt egy másik, eltérő tartalmút generálni úgy, hogy ez után a két halmazhoz tartozó MD5 hash megegyezzen. Konkrétabban a támadás segítségével 128 byte-nyi (két MD5 blokknyi) adatot lehet megváltozatani valahol a fileban a hash megváltoztatása nélkül. Ez önmagában is súlyos problémákat vet fel az algoritmussal kapcsolatban, de a felfedezésből kiindulva rövid időn belül még veszélyesebb megoldások születtek.

Egy valódi támadáshoz ugyanis általában nem elegendő, ha az algoritmus által megkötött kezünkkel csak olyan változtatásokat tudunk végrehajtani, amelyek használhatatlan, de legalábbis felettébb gyanús kimeneteket generálnak.

Magnus Daum és Stefan Lucks két azonos hash-ű PostScript dokumentumot hozott létre, melyek közül az egyik egy köszönetnyilvánítást, a másik viszont egy felhatalmazást tartalmaz. Hát igen, nem mindegy, hogy csapba szarni vagy szarba csapni...

Eduardo Diaz egy olyan módszert mutatott be, amely segítségével két program két azonos hash-sel rendelkező archívumba csomagolható. A módszert továbbfejlesztve megszületett két különböző viselkedéssel, de azonos MD5 hash-sel rendelkező futtatható állomány: egy Hello World és egy vinyótörlő (ami persze csak ugratja az embert ;) - Linuxos változatok is vannak Selinger oldalán), valamint az "ultimate weapon", Patrick Stach evilize könyvtára, melynek segítségével tetszőleges állományokat klónozhatunk - 128 byte eltéréssel, de azonos hash-sel!

Az emberek többsége ezeknek az információknak a hallatán vagy komolyan beparázik, vagy felteszi a kérdést: "na és akkor mi van?". Mindkét hozzáállás mögött elfogadható érvek állnak: kisebb fajta hisztériára ad okot, hogy az eddig (jobban mondva 2005-ig) sérthetetlennek hitt MD5 alapú ellenőrzőösszegek és üzenetpecsétek ilyen "egyszerűen" átverhetők. Az MD5 olyan alkalmazásokban van jelen tömegesen, amelyekben az emberek feltétlenül megbíznak (meg kell bízniuk), ezért az esetleges hamisítások jó eséllyel fel sem tűnnek.
 
A hidegvér mellett szól azonban, hogy valódi környezetben veszélyes támadást intézni ezen módszerrel még mindig viszonylag nehéz, a legtöbb felhasználóval szemben egyszerűen nem éri meg ezt a módszert használni. A hiba nem érinti a MD5-tel hashelt jelszavakat sem. Azokon a helyeken viszont, ahol a hitelesító eljárások átverése nagy haszonnal kecsegtethet (pl. banki, kormányzati rendszerek) ajánlott az MD5-öt más eljárásokra cserélni. Rivest az SHA-1-et javasolta, bár erre is létezik tk. elvi ütköztetéses támadás, melynek optimuma 2^35 lépésszám, melyet eddig nem sikerült megközelíteni, jelenleg az SHA-1 Collision Search Graz project keretében dolgoznak az ügyön. Az amerikai nemzetbiztonsági hivatal (NSA) legfrissebb algoritmusai jelenleg az SHA-1 kiterjesztései nagyobb pecsétméretekre (512 bit), de ezeket közel sem tesztelték olyan intenzíven mint az előzőeket.

Címkék: kriptográfia md5

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.

Aikon 2007.11.22. 19:34:02

Ez a 2^35 tulajdonképpen milyen lépésszám? Mert egyáltalán nem hangzik durvának. Pl. egy kis-közepes kapacitású merevlemez bájtról-bájtra történő leolvasása is ilyen nagyságrendű lépésszám, de egy merevlemez klónozása mégis elég hamar megvan. (igaz, ott blokkokat olvasunk, de egy blokk elérési ideje ms nagyságrend, szóval gyakorlatikag mindegy)

buherator · http://buhera.blog.hu 2007.11.23. 09:00:59

Megfogtál, az SHA Collision Project oldalán elég kevés info áll rendelkezésre, a vonatkozó tanulmányt pedig 25$ fejében lehet letölteni, úgyhogy biztosat nem tudok mondani.
A támadás _elvben_ kivitelezhető, tehát valószínűleg arról van szó, hogy _elvileg_ idéig lehet lenyomni a lépésszámot. A dolog nagy vonalakban úgy működik, hogy megpróbálják az SHA-1 bemenetének részeit úgy fixálni, hogy a kimeneten nagyobb valószínűséggel forduljon elő ütközés, majd a maradék nem fixált részek végigpróbálására igyekeznek minél jobb algoritmust találni, ami több faktorra történő optimalizációt jelent.
Látszik tehát, hogy az algoritmusban elég sok a bizonytalanság, az optimum elérésére kevés az esély. A poszton minden esetre pontosítok.