Jelszavak – legjobb és legrosszabb gyakorlat 1. rész
A felhasználók jelszavakkal való azonosítása még sokáig meg fog maradni. Egyszerűsége és ingyenessége mellette szól, s ha néhány egyszerű szabályt betartunk, megnyugtató mértékű biztonságot kapunk cserébe. Muszáj azonban pontosan értenünk a jelszavak használatának hátterét és alapjait, különben a közkézen forgó téveszmék áldozataiként a biztonság alaptalan és hamis illúziójában ringathatjuk csak magunkat. Az elmúlt években a különféle biztonsági incidensek1 következtében nyilvánosságra került sokmilliós jelszótömeg szerkezeti elemzése új veszélyforrást jelent. A következőkben a legfontosabbakat tekintem át mind a felhasználó, mind az üzemeltető oldaláról.
Az első részben egy általánosan elterjedt téveszmét és a leghétköznapibb hibákat vesszük szemügyre. A másodikban a kombinált szótár alapú támadást és egy jó jelszóválasztási módszert nézünk meg közelebbről. Végül, de nem utolsósorban az üzemeltető lehetőségeivel és felelősségével foglalkozunk.
Alapkövetelmények és téveszme
A józan paraszti észre alapozva, axiómaszerűen jelentjük ki, hogy a jó jelszónak két alapkövetelménynek kell megfelelnie: legyen a felhasználó számára könnyen megjegyezhető, az illetéktelenek számára pedig reménytelenül megtippelhetetlen.
A leggyakoribb, általánosan elterjedt téveszme szerint a jelszó attól lesz jó, hogy mindenféle fajta karaktert – kisbetűt, nagybetűt, számjegyet stb. – tartalmaz. Ez ugyan nem hátrány, de ettől a jelszó még messze nem lesz jó, és bizonyítandó ezt matematikailag kiszámoljuk lennebb, a nyers erő módszerénél.
Hasonlóan tévedés, amikor információelméleti megfontolások alapján entrópiát és redundanciát számolnak bitekben – semmilyen támadási mód esetében nincs a támadónak információja arról, hogy az épp esedékes jelszótippjében hány karakter helyes (és melyek azok). Vagy megtalálta az egyetlen2 helyes jelszót, vagy nem.
Alapvetés
A felhasználók azonosítására szolgáló módszerek három csoportba sorolhatók (egy lehetséges csoportosítási eljárás esetén). Vannak a tudás alapú, a birtoklás alapú és a biometrikus módszerek.
Az első csoportba tartoznak a hagyományos jelszavak – ezeket vizsgáljuk most – és PIN-kódok (pl. bankkártya), sőt talán ide lehetne sorolni az elfelejtett jelszavak helyreállításához használatos ellenőrző kérdéseket is.
A birtoklás alapú eljárások lényege, hogy a felhasználók kapnak valamilyen eszközt – vonalkódos vagy RF-kártyát, tokent stb. –, a belépési pontokon elegendő mennyiségű kütyüolvasó van, és a jogosított eszközök gazdái haladhatnak át a ponton. Tartalmilag ez azonos a jelszavakkal, a különbség annyi, hogy a jelszót nem a felhasználó fejében tároljuk, hanem a kütyüben. Ilyen azonosító eszközök nemcsak elektronikusak lehetnek, ősidők óta mechanikus elvűek is léteznek, mint pl. a lakatkulcs.
A biometrikus módszerek lényege, hogy az emberi test valamely egyedi sajátosságát, jellemzőjét (pl. ujjlenyomat) olvassa le és értékeli. Ilyen eljáráshoz ugyancsak kiegészítő eszközre, az adott jellemzőt leolvasni képes berendezésre van szükség. A biometrikus azonosítás hagyományos példája a portás alkalmazása.
A három módszert összevetve a következőeket tudatosíthatjuk
A jelszó ingyen van, semmilyen kiegészítő eszközre nincs szükség az alkalmazásához, a birtoklás alapú, ill. a biometrikus eljárásokhoz azonban a felhasználók és a belépési pontok számától függő mennyiségű olvasóeszköz telepítésére van szükség, birtoklás alapú esetben pedig még felhasználónként egy kütyüre is. Fölmerül a gyanú, hogy akik a leginkább igyekeznek temetni a jelszavakat, azok talán alapvetően kütyügyártásban és – forgalmazásban lehetnek érdekeltek…
Bonyolultság szempontjából is érdekes a kép. A tudás és a birtoklás alapú eljárások rendkívül egyszerűek. Érkezik egy felhasználói név és jelszó páros, és azt kell ellenőrizni, hogy ez megtalálható-e a tárolt listában. Egyszerű keresés tétele, második-harmadik programozás gyakorlaton tanítják. Biometrikus esetben a helyzet picit bonyolultabb, a kedves olvasó most vegye figyelmesen szemügyre valamelyik ujját.
Az első két esetben – a tudás és birtoklás alapúnál – a válasz egyértelmű: igen vagy nem. Biometrikus esetben azonban csak valószínűségekről beszélhetünk, és megjelennek a fals pozitív (beengedi, pedig nem lenne szabad) és a fals negatív (nem engedi be, pedig kellene) mutatók (FAR, FRR), amelyek sosem nullák. Nincs teljes bizonyosság, csak valószínűség. Vegyük ehhez hozzá, hogy minél bonyolultabb egy rendszer, annál nagyobb lehet a valószínűsége annak, hogy kiaknázható hibák vannak benne.
A felhasználók a lehető legkönnyebb megoldást keresik, amivel a munkahelyi információbiztonság tervezésekor számolni kell. Lehetőleg „könnyű” jelszót fognak választani, vagy felírják valahová. Fokozott a felírás esélye, ha a cégnél nem egységes és egyszeres bejelentkezés (single sign on) van, hanem számos különféle rendszer, különböző jelszavakkal. Tovább növeli a biztonsági kockázatokat, ha a dolgozót rákényszerítik a rendszeres jelszóváltoztatásra. Az üzemeltető legfőbb szempontja pedig értelemszerűen a takarékosság, a költségcsökkentés, ugyanakkor az iparági legjobb gyakorlat alkalmazása (függetlenül attól, hogy az valóban „legjobb gyakorlat”-e). Utóbbi pedig szintén a költségcsökkentés jegyében: nem fogja kockáztatni az audit elbukását csak azért, mert nem tette meg az általánosan elvárható intézkedéseket.
Tippelési módszerek
Ahhoz, hogy értékelni lehessen a jelszavak jóságát, a megjegyezhetőséget és a megtippelhetetlenséget kell vizsgálni, értékelni. Az elsőt aránylag könnyen el lehet intézni. Az ilyesvalami jelszavak, mint pl. X143ck&ve#!W a legtöbb ember számára megjegyezhetetlenek (a nagyon kocka rendszergarázdának viszont így hívják a macskáját). Vegyük szemügyre a második követelményt, a tippelési módszereket.
A legelső eset az ún. alap jelszavak esete. Ilyenek az asdfgh, 123456, engedjbe, titok, password stb. Ide tartoznak még a gyári alapértelmezett, és megváltoztatni elfelejtett jelszavak is (wifi eszköz). Sajnos ezek gyakoribbak, mint gondolnánk, volt rá példa, hogy valaki véletlenszerűen rábukkant egy francia nagybank hitelkezelő rendszerének egy belépési pontjára, és az ötletszerűen megadott 123456 jelszóval be is tudott lépni.3
A következő szint az, amikor valamilyen egyszerű kapcsolat van
- a) a jelszó és a személy,
- b) a jelszó és a felhasználói név között, utóbbi esetben ez lehet szövegelem szintű vagy
- c) jelentésbeli.
Lássuk az egyszerű példákat:
- a) születési dátum, gyerek neve, kedvenc színész, sportoló neve stb.;
- b) admin – admin, admin – admin.admin;
- c) Allah – Mohamed.
Akik ilyen jelszavakat használnak, megérdemlik a következményeket, és meg is fogják kapni, ha eddig még nem érte utol őket a végzetük.
A következő fokozat a szótár alapú támadás. A támadó összegyűjti egy listába a szerinte legvalószínűbb jelszavakat, és egy célprogram szépen sorjában mindet kipróbálja, és jelzi a sikeres találato(ka)t. Ennélfogva nem célszerű olyan szót választani, ami bármilyen szótárban, listában megtalálható lehet, praktikusan: amire a Google ad találatot. A módszer hatékonyságát jelentősen növeli, hogy az elmúlt évek során számos különböző helyről nagyon nagy mennyiségű valós jelszó került napvilágra, tehát vannak ismereteink a jelszóválasztási szokásokról.
A legvégső módszer pedig a nyers erő módszere. Ennél egy célprogram kipróbál minden lehetséges karakterkombinációt. Nyilvánvaló, hogy meg fogja találni a jelszót, a kérdés csak az, hogy mennyi idő alatt. Ezt három tényező határozza meg. Egyszer az alkalmazott hash-függvény számításigénye (tisztességes helyen a jelszót nem tárolják, hanem abból egy nem invertálható függvénnyel, a hash-függvénnyel kiszámolt transzformáltat tárolják). Ha ezt adottnak vesszük, marad két változó: a kipróbálandó kombinációszám és a rendelkezésre álló számítási teljesítmény. Utóbbi kettő hányadosa adja a legjobb (legrosszabb) eset időigényét. Ha ez emberi léptékben beláthatatlanul nagy, akkor (elég) jó a jelszó. A reális számítási teljesítmény (a hash függvénytől függően) néhány tízezertől akár ezermilliárd jelszó kipróbálásáig terjedhet másodpercenként.
Számoljunk! Ha a próbálgatási sebességet 10^12 próba/másodpercnek tételezzük fel, a jelszó 8 karakter hosszúságú, és 80 jel halmazából választhatunk, az időigény 80^8/10^12=1678 mp, azaz 28 perc (maximum). Ha a jelhalmaz számosságát megnöveljük a negyedével (100-ra, és ennél többféle jelet normál billentyűzet esetén nem is tudunk írni), akkor a törés időigénye megnövekszik 167 percre (kevesebb, mint három óra). Nem valami megnyugtató. Ha ellenben maradunk a 80-as karakterkészletnél, de a hosszúságot növeljük, ugyancsak negyedével, 8-ról 10-re, az időigény 28 percről rögtön 124 napra (három hónap) ugrik! Mint tudjuk, az exponenciális függvény agresszíven növekszik, míg a közönséges hatványfüggvények csak úgy szépecskén.
Ebből egyértelműen következik, hogy a jelszó nem attól lesz jó, hogy mindenféle fajta karakter van benne, hanem a hosszától. Az alap karakterkészlet számosságát eleve nem igazán lehet növelni, másrészt pedig ha igen, akkor is csak kevéssé javítja a nyers erővel szembeni ellenálló-képességet. Ellenben a jelszó hosszának növelése roppant hatékony ebből a szempontból.
Írta: Keszthelyi András – egyetemi docens -Óbudai Egyetem