Dinya Péter, Budapesti Corvinus Egyetem

20-21. o. kiberbiztonság garfika

Legyen legalább nyolc karakter hosszú, álljon kis- és nagybetűkből, számokból és speciális karakterekből. A jelszókreálás mantrája sokak számára ismerős, ám kevesen járnak utána, hogy ezek a megkötések miben segítenek, és mi ellen védenek.

A Ponemon Institue 2014-et a nagy adatszivárgások évének nevezte (Ponemon Institute, 2014a). Számításaik szerint a hírekben megfordult és nagy figyelmet keltő esetek során összesen több, mint 350 millió sornyi adat szivárgott ki. Azaz felhasználói azonosítók, e-mailcímek, személyi azonosítók és gyakran jelszavak kerültek a támadók birtokába. Ha ehhez hozzávesszük, hogy Európában átlagosan mintegy 170 dollárra értékeltek egy elvesztett sornyi adatot (Ponemon Institute, 2014b), számokkal is kifejezhető ezeknek az incidenseknek a jelentős súlya.

A támadók direkt és indirekt módon is megpróbálnak jelszavakhoz jutni. Előbbi esetben a támadó egyetlen specifikus jelszóra kíváncsi, és azt igyekszik megszerezni (például, hogy hozzáférjen az áldozat webes postafiókjához). Ezeknél a támadásoknál a jelszó erőssége nem sokat számít. Egyrészt a támadónak ritkán nyílik lehetősége annyiszor próbálkozni – például egy belépési felületen –, hogy akár egy gyengébb jelszót is feltörjön, másrészt az esetek döntő többségében nincs is erre szüksége, mert a legtöbb célzott támadás során megkerülik a jelszavakat.

 Titkosítva tárolják?

Előfordulhat, hogy egy szolgáltatásnál a felhasználók jelszavait titkosítás nélkül tárolják. Intő jelként szolgálhat, ha a szolgáltató meg tudja adni a felhasználó jelszavát, hiszen ez azt jelenti, hogy vagy titkosítás nélkül tárolja, vagy dekódolható (kétirányú) titkosítást használ. Az utóbbi eset nagyon ritka, mert pontosan a jelszavak védelmének érdekében visszafejthetetlen (egyirányú) titkosítást szokás használni.

A jelszavak erejének tehát inkább az indirekt támadásoknál van igazán jelentősége, vagyis azokban az esetekben, amikor egy adatszivárgás során kerül a támadó birtokába egy adatbázis a jelszavunkkal együtt (jó esetben titkosítva). Ha nincs titkosítás, akkor a behatoló egy azonnal használható kulcsot kapott, és nem számít a jelszavak semmilyen tulajdonsága – azt csinál, amit akar. Abban az esetben viszont, ha jelszavaink titkosítva vannak, a támadó olyat akar találni közöttük, amelyet fel tud törni, és a számára fontos jogosultságokkal felruházott felhasználóhoz tartozik.

Minél több idő telik el azonban a szivárgás után, annál valószínűbb, hogy a behatolást felfedezik, és újakra cserélik a jelszavakat. Ezért aztán az idő által sürgetett támadó a legkönnyebben feltörhető jelszavakkal kezdi a munkát, és halad fokozatosan a nehezebbek felé. Ilyen esetekben az erős jelszavakkal védett fiókokhoz nem fog hozzáférni, hiszen nagy eséllyel talál megfelelő felhasználót, könnyebben feltörhető jelszóval. Ideális esetben a lista minden jelszava annyira nehezen törhető fel, hogy a támadó egyiket sem tudja megfejteni, mielőtt kiderül az adatlopás.

Hogyan törik?

A jelszavak feltörésének is megvan a jól kialakult módszertana. A folyamat rendkívül egyszerű: a támadó valamilyen metodika szerint különböző kifejezéseket választ, és ezeket titkosítja azzal a módszerrel, amelyet az áldozat is használt. Ha talál az eredményei között olyan karaktersort, amely a listában is szerepel, tudni fogja annak eredeti kifejezését. Egy példán bemutatva: ha a támadó titkosítja az „alma” kifejezést, kaphatja az „ebbc3c26a34b609dc46f5c3378f96e08” karaktersort. Ha ezt megtalálja a titkosított jelszavak listájában, tudja, hogy annak a felhasználónak a jelszava „alma”.

Ez a művelet számítási kapacitástól függően másodpercenként akár többmilliárdszor is végrehajtható. Egy átlagos laptop akár másodpercenként 7670 milliószor tudna kifejezéseket titkosítani az almás példában szereplő módszerrel.
A titkosítandó kifejezések kiválasztásának alapvetően két irányzata van: a brute force és szótáras. A brute force minden lehetséges karakterkombinációt végigpróbál egyesével (pl. aaaa, aaab, …, alma), természetesen bizonyos keretek között. Gyakran használják csak rövid, egyszerűen törhető kifejezések keresésére (például 6 és 8 karakter közötti, csak kisbetűkkel írott jelszavak esetén), mert ez jelentősen megrövidíti a futási időt. A támadás előnye, hogy ugyan erőforrás-igényes, viszont végül mindenképpen megtalálja a keresett jelszót.

Szótáras támadásoknál előre megadott kifejezések listáját titkosítja a támadó. Ezek a szótárak nemcsak az adott nyelv szavait tartalmazzák, hanem korábban feltört adatbázisok jelszavait is, esetleg egy célzott szakma sajátos kifejezéseit és ezek permutációit. Utóbbi fontos pont, ugyanis tökéletesen mutatja az áldozatok és támadók közötti macska-egér játékot. Amikor az áldozatok körében elterjed egy újfajta jelszógyártási megoldás (például szótári kifejezések pontokkal elválasztva: alma.banan.korte), azt a támadók azonnal felveszik törő alkalmazásaikba. A két irány röviden összefoglalva: a brute force lassú, de biztosan talál eredményt, míg a szótáras jelentősen gyorsabb, viszont nem biztos, hogy sikerrel jár.

Mitől erős?

Az erős jelszavak kijelölésének feladata így egyértelmű: olyan karaktersort kell kreálni, amelynek visszafejtéséhez mind a brute force, mind a szótáras töréssel több idő szükséges, mint amennyi a felhasználónak kell a jelszó megváltoztatásához. Ez az idő egyéntől és szervezettől függő. Az egyszerűség kedvéért a számításokhoz válasszuk az egy évet.

A jelszó ereje három jellemzőből fakad: a hosszából, a karakterkészletéből és hogy vannak-e benne szótári kifejezések. A tényezők súlyának szemléltetésére a táblázatokban lévő számítások szolgálnak. Az Amatőr és Titán kifejezések a törést végző rendszer számítási kapacitására utalnak, ahol az Amatőr egy átlagosnak mondható, felső-középkategóriás laptop, míg a Titán a világ második legerősebb szuperszámítógépe (eredeti kutatásaimat a témában 2013 elején végeztem, akkor még az első helyen állt). Titkosítási megoldásnak az MD5-öt választottam, mert ez egy kellően ismert, sebezhető és gyorsan elvégezhető módszer. Természetesen fejlettebb titkosítás esetén a törési idők növekednek, de a különböző erősségű jelszavak közötti drasztikus különbségek bemutatására ez is megfelelő.

A hossz arra utal, hogy a jelszó hány karakterből áll. Fontos belátni, hogy önmagában vizsgálva a jelszó hossza csak brute force támadás esetén releváns. A szótáralapú támadások szavak kombinációit fogják próbálni, így ott az, hogy hány kifejezésből áll a karaktersor, fontosabb a karakterek számánál. A hossz jelentőségét bemutató táblázatban arra láthatók becslések, hogy a teljes, 94 karakteres készletből gyártott jelszavak különböző hossz esetén mennyi idő alatt törhetők fel brute force módszerrel. Jól látható az exponenciális növekedés, ahogy egy-egy karakternyi különbség másodpercekből órákat, napokat, végül éveket csinál az Amatőr rendszernél is. Mivel még a Titánnak is több, mint két év számítás kell hozzá, 11 karakternél kezdődik az a hossz, amelyet kellően biztonságosnak lehet mondani.

dinya1

A karakterkészlet jelentősége

A jelszavaknál használt karakterkészlet azért kritikus, mert az összes fajta támadást képes hátráltatni. Brute force töréseknél jelentősen meghatározza a szükséges számítások mennyiségét, szótáras támadások esetében pedig, ha egy kifejezés olyan permutációját sikerül választania a felhasználónak, amit a támadó nem ellenőriz, máris feltörhetetlen lesz a jelszava.

Ezért érdemes kis- és nagybetűket, számokat és speciális karaktereket is használni jelszavainkban (már ha engedi az adott rendszer). A csak kisbetűkből álló kifejezések használata nagymértékben csökkenti a törésnél keresett karakterek halmazát, ami a karakterkészlet jelentőségét szemléltető táblázatban érezhető igazán. Abban egy 8 karakter hosszú jelszó brute force töréséhez szükséges idő becslései láthatók, karakterkészlettől függően. Hasonlóan a hossznál, a másodpercekből itt is napok lesznek, ha minden lehetséges karaktertípusból van a jelszóban.

dinya2

A szótári kifejezések használata alatt különböző értelmes szavak, mondások, fogalmak használatát értjük a jelszóban. Ennek súlyát nem lehet egyszerűen számokkal kifejezni, viszont szemléltetés céljából a következő példa megfelelő lehet: ha egy jelentős méretű, például 32 millió kifejezésből álló szótárnál minden kifejezést 64 módon próbálunk ki (kis- és nagybetűk variálása, évszámok hozzáadása, stb.), az Amatőr konfiguráció az így kialakított listán egy másodperc negyede alatt végigmegy. Ez remélem kellően számottevő különbség a brute force törésekhez képest, hogy rámutasson a szótári kifejezések gyengeségére.

Röviden összefoglalva, az erős jelszó legalább 11 karakter hosszú, tartalmaz kis- és nagybetűket, számokat és speciális karaktereket, és nem tartalmaz szótári kifejezéseket.

A nagy kép

A jelszavak erejének forrása így már remélhetőleg kitisztult, ahogy az is, mi mikor számít, és mi ellen véd. A jelszavak azonban nem alkalmasak minden biztonsági probléma megoldására, és nem is ez a céljuk. A védekezéshez az egyetlen igazán jó, általános módszer a védelem erejét addig fokozni, míg annak sikeres leküzdéséhez a támadók erőforrásai már nem elegendők. Ha a célpont ezt védelme minden pontján képes elérni, el tudja rettenteni a támadót. Az IT biztonság ebből a szempontból egy fal, amelynek egyik téglája a jelszavak erőssége.

dinya3

Felhasznált irodalom:
Ponemon Institute (2014a). 2014: A Year of Mega Breaches
Ponemon Institute (2014b). 2014 Cost of Data Breach Study: Global Analysis
Dinya Péter (2013). Jelszavak használatával kapcsolatos megoldások, módszerek és szokások elemzése