✖

Jelszavak biztonsága

Annak a támadónak, aki jelszóval védett alkalmazásba (jelszavas RAR-fájlba, e-mailbe…) próbál bejutni, több lehetősége van arra, hogyan jusson eredményre a jelszó ismerete nélkül. Egyesek némi intelligenciát, leleményességet és tudást igényelnek, mások inkább kis szerencsét és fizikai erőnlétet. Foglaljuk össze tehát először, milyen lehetőségei vannak a támadónak.

Hogyan törjük fel valaki jelszavát

  • Megkeressük azt, aki ismeri a jelszót (például az e-mail tulajdonosát), és megszerezzük tőle – rábeszéljük, megvesztegetjük, megverjük. Ezt a módszert a cikkben nem fogom tovább ismertetni :-).
  • Megpróbáljuk valahogy feltűnés nélkül kicsalni a jelszót a tulajdonostól, például hamis e-maillel; szakszerűbben ezt phishingnek, magyarul adathalászatnak nevezik. A módszer lényege, hogy a fiók tulajdonosának küldünk egy e-mailt, amelyben arra kérjük, hogy küldje vissza a felhasználónevét és jelszavát. Csak rajtad múlik, mennyire lesz hihető az üzenet; maga a kérés valószínűleg nem elég, ehhez valamilyen történetet is hozzá kell tenni. Gyakran találkozhatunk azzal, hogy elromlott az adatbázis, ezért felszólítunk minden felhasználót, hogy adja meg újra a jelszavát és a nevét, különben megszüntetjük a postaládáját, és így tovább. Ha az üzenet igazán komolynak látszik, a sikerességi arány nem szokott kicsi lenni.
  • Szótáras támadás – letöltünk az internetről néhány csomagot a leggyakoribb jelszavakkal, és mindet kipróbáljuk. Ha szerencsénk van, és a tulajdonosnak valamilyen gyakoribb jelszava van, valóban könnyen megszerezzük. Ebből következik az alapvető tanulság – ne válassz olyan jelszót, amelynek van értelme. Válaszd például az alma jelszót, és garantálom, hogy az első kezdő hacker néhány másodperc alatt feltöri. Ez talán a leghatékonyabb módszer: ha igazán nagy jelszószótárad van, a felhasználók nagy részének jelszavát különösebb erőfeszítés nélkül kitalálhatod.
  • A brute force a legostobább módszer, a nyers erő. Abból áll, hogy kipróbáljuk a világon létező összes lehetséges jelszóváltozatot. A program egy bizonyos algoritmus szerint sorban összerakja a betűket, és megnézi, hogy eltalálta-e a keresett jelszót. Amikor megtalálja, elmenti, és befejezi a futást. Ezt a módszert tárgyaljuk tovább.

Nyers erő

A módszert használó program csak különböző variációkat állít elő a szavakból, és kipróbálja, hogy véletlenül eltalálta-e a jelszót. Számoljuk ki, mennyi ideig tarthat egy ilyen próbálgatás.

Tegyük fel, hogy van egy ötkarakteres jelszavunk, amely csak az angol ábécé kisbetűiből áll (ékezetes betűk, például á, é, ő nélkül). Az angol ábécé betűinek száma huszonhat. Most már egyszerűen kiszámolhatjuk, hányféle jelszót állíthatunk össze öt ilyen betűből. Variációkat fogunk használni, mert számít a sorrend (a labda jelszó nem ugyanaz, mint a dabla, noha ugyanazokból a betűkből áll), és ismétléses variációkat kell használnunk, mert a betűk a jelszavakban ismétlődhetnek. Lássuk a számítást. Az ismétléses variációk képlete Vnk,i=nk. Az n helyére behelyettesítjük azoknak a betűknek a számát, amelyekből választunk – az angol ábécé betűinek számát –, a k helyére pedig a jelszót alkotó betűk számát, esetünkben ötöt. Eredményül 265 adódik, ami körülbelül tizenkétmillió különböző változat. Sok ez vagy kevés?

Ez attól is függ, milyen gép áll rendelkezésünkre. Egy régebbi vacak másodpercenként kevés összehasonlítást végez, a szupermodern számítógépek ennél tízezerszer többet. Én ezekben a példákban azzal számolok, hogy a számítógép másodpercenként tízmillió összehasonlítást és kiértékelést végez. Valószínűleg mindenkinek feltűnik már, hogy az ötkarakteres jelszót egy ilyen számítógép két másodpercen belül megfejtené, ami valóban nem jó eredmény. De ne adjuk fel.

Erősítjük a jelszót

Az ötkarakteres jelszó egyáltalán nem biztonságos, néhány értelmesebb rendszer még ilyen rövid jelszó választását sem engedi. Azt mondják, a jelszó ne legyen rövidebb nyolc karakternél. Számoljuk ki, hány variáció létezik a nyolckarakteres jelszóra. Az előző esethez hasonlóan itt is csak az angol ábécé kisbetűit vesszük figyelembe. Behelyettesítünk a képletbe, és 268 adódik, ami körülbelül kétszáz milliárd variáció. Ez már szebb szám. A számítógép az összes variációt hat óránál kevesebb idő alatt kiértékelné. Ez jobb, mint az előbb, de nézzük meg, mennyit nőne a jelszó ereje, ha nagybetűket, számjegyeket és olyan speciális karaktereket is használnál, mint az aláhúzás, a kötőjel és hasonlók.

Kisbetű 26 van, nagybetű is 26, ez összesen 52 karakter. Ehhez hozzá kell adnunk a 10 számjegyet és néhány speciális karaktert. Nem mindenhol engedélyezett minden speciális karakter, ezért az egyszerűség kedvéért csak nyolc speciális karakterrel számolok, hogy a karakterek száma szép kerek 70 legyen. A jelszó hossza ismét nyolc. Behelyettesítés után ez a szám adódik: 708, ami a jobb szemléltetés kedvéért körülbelül 5,8 · 1014, szavakkal majdnem hatszáz billió variáció. Ez már igen tiszteletre méltó szám. A számítógépünk az összes variációt tizenhatezer óra alatt ellenőrizné! Ez majdnem két év. A támadónak nagyon nagy szerencsére lenne szüksége ahhoz, hogy belátható időn belül megtalálja a jelszót. Ráadásul ismernie kellene a jelszavad hosszát; ha nem ismerné, az alacsonyabb karakterszámú változatokat is át kellene vizsgálnia.

Vannak, akik annyira aggódnak az adataik miatt, hogy számjegyekből álló jelszót használnak. Ezek a jelszavak nagyon jól ellenállnak a szótáras támadásnak, mert aligha szerepel a gyakran használt jelszavak valamelyik szótárában éppen 41 274 390 553. Sajnos az ilyen jelszavak a szótáras támadásnak ugyan ellenállnak, de a brute force támadásnak kevésbé. Számjegy ugyanis csak tíz van, ezért a variációk száma mindig 10k. A jelszó erejét csak a hossza tartja fenn. Az előbbi, mindenféle karaktert használó nyolckarakteres jelszónak körülbelül 5,8 · 1014 variációja volt. Hogy a számjegyes jelszóval legalább ugyanezt elérjük, tizenöt számjegyűnek kellene lennie, vagyis majdnem kétszer annyi karakterből kellene állnia. Jól látszik, hogy hatékonyabb rövidebb jelszót választani, de többféle karakterrel.

Ne becsüld alá a támadót

A támadó lehet ravasz. Tegyük fel, hogy az előző sorok elolvasása után úgy döntöttél, hogy a jelenlegi „szilvafa” jelszavadat legalább „Szilvafa”-ra írod át, amivel a lehetséges variációk száma sokszorosára nő, hiszen a támadónak az algoritmusában már a nagybetűket is figyelembe kell vennie. A támadó azonban feltételezheti, hogy nagybetű csak az első helyen lesz, mert azt könnyebb megjegyezni, és nem szokás a szó közepén nagybetűt használni. Ezért írhat egy algoritmust, amely átvizsgálja a csupa kisbetűs szavak összes variációját, esetleg egyetlen nagybetűvel közvetlenül az elején.

Az eredeti jelszavad bonyolultsága (most azt értem rajta, hány variáció lehetett összesen, ha ugyanazt a jelszóalakot tartjuk meg – nyolc kisbetű) 268 volt. Ha a támadó nem gondolkodna, az új jelszó bonyolultsága 528 lenne, de ha a fent vázolt algoritmust használná, a jelszó bonyolultsága 52 · 267 lenne. A jelszó első helyén kis- és nagybetű is állhat, ezekből összesen 52 van, a további hét helyen pedig már csak kisbetűk, ami szokásos ismétléses variáció.

A támadó azt is tudhatja például, hogy a jelszavad négy betűből és négy számjegyből áll, összekeverés nélkül, a számjegyek mindig egymás után, a betűk is egymás után. Az ilyen jelszó bonyolultságát így számolnánk ki: az első betűnégyesnek összesen 264 variációja van, a második, számjegyekből álló négyesnek 104 variációja. Ezt a két eredményt ezután összeszorozzuk: 264 · 104. Ha a támadó nem tudná, hogy elöl a számjegyek vagy a betűk állnak-e, az előző eredményt még meg kellene szoroznunk kettővel.

Megnézheted még ezeket a táblázatokat, amelyekben a jelszótörés sebességei szerepelnek.