Rövid megjegyzés - ez a cikk a hash jelszavak feltörésének elméletéről szól. A számítógépes bűnözők támadásainak megértése rendkívül fontos ahhoz, hogy megértsük, hogyan lehet a rendszereket ilyen típusú támadások ellen biztosítani.
De a nem önálló rendszer feltörésének kísérlete valószínűleg jogellenes az Ön joghatósága területén (ráadásul a saját rendszerei feltörése [és gyakran meg is sérti] az adott termékre vonatkozó garanciát).
Ez a cikk feltételezi a kivonatolási funkciók és az alapvető jelszavak feltörési technikák ismeretét - ha nem érti ezeket a témákat, nézze meg ezeket a cikkeket.
Tehát megszerzett egy kivonatolt jelszót. A hash erőteljes kényszerítése nagyon sokáig fog tartani. Hogyan lehet ezt a folyamatot felgyorsítani?
Várj, azt gondoltam, hogy a hash funkciók egyirányúak! Hogyan lehet feltörni a hash funkciókat?
Sajnos a jelszavak kivonatolásához használt kivonatolási funkciók nem mindig olyan biztonságosak, mint az általánosan elfogadott kivonatolási funkciók. Például a régi Windows-eszközökhöz használt hash funkciót LM Hash néven ismerik, amely annyira gyenge, hogy néhány másodperc alatt feltörhető.
Ezenkívül nem kell a kivonatot visszafejteni. Ehelyett használhatja az előre kiszámított egyszerű szöveges jelszavak és a megfelelő hash értéket (,). Ez megmondja egy hackernek, hogy a sima szöveg értéke egy adott kivonatot hoz létre.
Ezzel megtudhatja, hogy a sima szöveg értéke előállítja-e a kivonatot. Ha megad egy jelszót, a számítógép kivonja ezt az értéket, és összehasonlítja a tárolt értékkel (ahol egyezni fog), és akkor hitelesíteni tudja. Így valójában nem kell kitalálni valakinek a jelszavát, csak egy értéket, amely ugyanazt a kivonatot hozza létre.
Ezt hívják ütközésnek. Lényegében, mivel a kivonat bármilyen hosszúságú vagy tartalmú adatot képes befogadni, korlátlan lehetőségek vannak az adatok kivonatolására.
Mivel a kivonat ezt a szöveget rögzített hosszúságú tartalommá alakítja (például 32 karakter), a kivonatnak véges számú kombinációja van. Nagyon sok lehetőségről van szó, de nem végtelenről.
Végül két különböző adatsor ugyanazt a kivonatolási értéket adja.
Az előre kiszámolt táblázatok nagyon hasznosak ennek elérésében, mivel jelentős időt és számítási energiát takarítanak meg. Egy előre kiszámított kivonatkészlet használatát a jelszó kivonatának megkereséséhez „look-table támadásnak” nevezzük. Ezeket a táblázatokat a rendszergazdák használják felhasználói jelszavak erősségének tesztelésére, és gyakran online vagy megvásárolhatók. Ezeket azonban aljas hackerek is használhatják.
Ha egy jelszó nem biztonságos (tegyük fel, hogy valaki egy 5 karakter hosszú jelszót használ), akkor az viszonylag könnyen feltörhető. Például egy 5 kisbetűs jelszó csak 11 881 376 különböző jelszó létrehozására használható (26 ^ 5).
Ennek a jelszónak a kivonata esetén, még ha a hash kriptográfiailag biztonságos is (megfelelő algoritmust használ), akkor is nagyon egyszerű lenne kiszámolni az összes lehetséges jelszót és a hozzájuk tartozó hasheket. A keresőtáblák nagyon jól működnek az ilyen típusú jelszó-kivonatoknál.
A jelszavak hosszának növekedésével azonban az összes lehetséges jelszóhoz és a megfelelő hashhoz szükséges tárhely (és ennélfogva a tárolási költség) exponenciálisan növekszik.
Például, ha a feltörni kívánt jelszó 8 karakter hosszú, de számokat (10 számjegy), kisbetűket (26), nagybetűket (26) és néhány speciális karaktert (10) használ, a lehetséges jelszavak száma 722,204,136,308,736 - ami SOK Tárhely, ha rájössz, hogy mindegyik hash funkcióval van elválasztva, mint az SHA-256.
A szivárványos táblák csökkentett tárolási igények felajánlásával kezelik ezt a problémát, de több időbe telik a lehetséges jelszavak kiszámítása. A legalapvetőbb szinten ezek lényegében előre kiszámított keresőtáblák, amelyek segítségével gyorsan megtalálhatja a hash-nak megfelelő sima szöveget. Ha a hash és a sima szöveg szerepel a táblázatban - hasonlóan a szótári támadásokhoz -, akkor csak arra kíváncsi, hogy a jelszó szerepel-e a rendelkezésére álló táblázatban. Ha nem, akkor nem tudja feltörni a jelszót. Ezeket online ingyen vagy megvásárolhatja.
Nézze meg ezt a cikket a saját szivárványos táblázatok készítéséhez.
Még mindig érdekel. Hogyan működnek a szivárványos asztalok?
Ha el akarja hagyni ezek működésének részletes magyarázatát, görgessen lefelé a "Hogyan védekezzünk ezek ellen a támadások ellen" szakaszig.
Annak érdekében, hogy megóvja magát az egyes lehetséges sima szövegek kivonatolásától és tárolásától, amíg meg nem találja a szükséges hash-t (például egy keresőtáblát), kivonatolja az egyes sima szövegeket, és az eredményt egy táblázatban tárolja, hogy később utánanézhessen anélkül, hogy újrateremtené őket. Ez hosszabb időt vesz igénybe, de memóriát takarít meg.
A táblázat előállításához kivonat és egyszerű szöveg "láncait" hozza létre egy kivonatoló és egy redukciós függvény segítségével. A redukciós függvény csak sima szöveget hoz létre egy kivonatból (nem változtatja meg a kivonatot, hanem a sima kivételtől eltérően). Ez egyirányú funkció is.
Így a táblázat kiszámításához az egyik hash-t (h1) használja az R () redukciós függvényében a p1 sima szöveg létrehozásához.
R (h1) = p1.
Ezután a H () hash függvényt használja a p1 segítségével egy új hash létrehozásához.
H (pl) = h2.
Korábbi példánk segítségével:
Ha a sima szöveg halmaza [abcdefghijklmnopqrstuvwxyz] {5} (egy szivárványos táblázatot keresünk az összes jelszóból, amelyek 5 hosszúságú kisbetűkből állnak), és MD5-et (hash algoritmust) használunk:
A hash lehet ab56b4d92b40713acc5af89985d4b786 (h1). Most alkalmazzuk a redukciós függvényt, amely olyan egyszerű lehet, hogy az utolsó 5 betűt a kivonatba vesszük.
R (ab56b4d92b40713acc5af89985d4b786) = cafdb
H (cafdb) = 81a516edabf924cd0f727d329e855b1f
Miért hívják szivárványos asztaloknak?
Minden oszlop más és más redukciós függvényt használ. Tehát ha minden oszlop színes lenne, nagyon hosszú, sovány szivárvány lenne.
Különböző redukciós funkciók használata csökkenti a láncolvadások (ütközések) számát, amelyek gyakran történtek a hash-láncokkal, a szivárványos táblák elődjével. Ez lényegében azt jelenti, hogy ha továbbra is ugyanazt a redukciós funkciót használja, akkor van esély arra, hogy két különböző láncot kapjon, amelyek ugyanazon a sima szöveggé konvergálnak. Különböző redukciós funkciók használata csökkenti ennek az esélyét, bár nem lehetetlen.
Remek, hogyan hozhat létre láncot?
Lánc létrehozása érdekében a redukciós és a hash funkciót használja (mindkettő egyirányú) hashek és sima szöveg "láncának" létrehozásához. Ezeknek a „láncoknak” mindegyike folytatódna k lépésenként, és amikor a lánc véget ér, csak az első sima szöveget és az utolsó hash-t tárolja a lánc.
Tehát egy mintalánc így néz ki:
p1 -> h1 = H (p1) -> R1 (h1) = p2 -> H (p2) = h2 -> R2 (h2) = p3 -> H (p3) = h3
Az egyes redukciós funkciók különbözőek (R1, R2, R3 stb. Ábrázolva). A láncok mintatáblázata (minden sor 5 hosszúságú lánc) a következőképpen néz ki. Ne feledje, hogy ez hamis adatokkal van feltöltve, csak hogy példát adjon neked - a hash függvény nem hash függvény, amelyet a hash jelszavakhoz szokott használni.
Az R1 és R2 redukciós függvényeket a következőképpen definiáljuk: R1 a kivonat első 3 számjegyét veszi fel, az R2 pedig a kivonat utolsó 2 betűjét:
p1 -> h1 = H (p1) -> R1 (h1) = p2 -> H (p2) = h2 -> R2 (h2) = p3 -> H (p3) = h3
2 -—> abdu2934 -—> 293 -—> 83kdnif8 -—> if -—> ike83jd3
15 -—> dks2ne94 -—> 294 -—> ld932nd9 -—> ld -—> ldie938d
20 -—> ld93md8d -—> 938 -—> lxked93k -—> lx -—> 93mdkg8d
A szivárványos táblázatokban csak az első kiindulási pontot és a végpontot menti a tárolás mentése, így:
kiindulópont (sima szöveg) végpont, miután k lépi át a láncot (hash)
p1 -—> h1k
p2 -—> h2k
p3 -—> h3k
Aztán amikor van egy hash (h), ahol nem ismeri a sima szöveget (?), Összehasonlítja azt a láncokkal.
- Először ellenőrizni kell, hogy a hash szerepel-e a végső kivonatok listájában (h1k, h2k stb.). Ha igen, akkor léphet a 3. lépésre.
- Ha nem, akkor csökkentheti a kivonatot különböző sima szöveggé (R1), majd kivonatolhatja ezt a sima szöveget (a hash függvény és a következő következő redukciós függvény használatával), és összehasonlíthatja a végső kivonatok listájával (h1k, h2k, h3k stb.). Ha egyezik az egyik utolsó kivonattal, akkor az a lánc valószínűleg az eredeti kivonatot fogja tartalmazni.
- Annak érdekében, hogy megtalálja az eredeti hash-ot a láncban, vegye be az adott lánc kezdő sima szövegét (tehát ha megegyezik a h1k-vel, kezdje a p1-gyel), és alkalmazza a hash és a redukció függvényeket a lánc mentén történő mozgáshoz, amíg el nem éri az ismert hash-t és a hozzá tartozó sima szöveget. Így áthaladhat a lánc hash-jain, anélkül, hogy azok lefoglalnák a gépen a tárhelyet.
Bár nem lehet biztos abban, hogy a láncok tartalmazzák-e a szükséges kivonatot, minél több láncot generált (vagy hivatkozik), annál biztosabb lehet. Sajnos minden lánc előállítása időigényes, és a láncok számának növelése megnöveli a szükséges időt.
Hogyan védekezhet az ilyen típusú támadások ellen?
Először az összes rendszer réteges védelme. Ha más módszerekkel megakadályozhatja a rendszereinek veszélyeztetését (így a támadó nem kaphat másolatot a kivonatolt jelszavakból), akkor a támadó nem tudja feltörni őket.
Használhatja a sózást is, amely véletlenszerű értéket ad a jelszónak a titkosítás előtt. Ez azt jelenti, hogy a megtalált előre kiszámított érték (amely megegyezik a kivonattal) nem fog működni. A titkosított szöveg nem kizárólag a titkosítatlan szövegen alapul. Mivel a só minden jelszónál különbözik, mindegyiket külön-külön kell feltörni.
A sózás ma már opcióként a legtöbb fő hash típusba tartozik. Bár a Windows jelenleg nem használ sózást, a „SYSKEY” eszköz használatával titkosíthatják a tárolt kivonatokat.
Használhatja a „köröket”, vagy a jelszó többszörös kivonatolását is. A fordulók használata (különösen, ha az egyes felhasználók számára véletlenszerűen kiválasztják a körök számát) megnehezíti a hacker munkáját. Ez a sózással kombinálva a leghatékonyabb.
Sajnos egy hacker, aki rendelkezik hash jelszavakkal, hozzáférhet a felhasznált körök és a felhasznált sók számához is (mert a lista megszerzéséhez valószínűleg veszélyeztetettek. A felhasznált sót és a felhasznált körök számát a jelszó tárolja hash, ami azt jelenti, hogy ha a támadónak van egy, akkor a másik is, azonban nem fogják tudni használni az online elérhető előre kiszámított szivárványos táblákat, és ki kell számolniuk saját táblázataikat (ami rendkívül időigényes).
A jelszó feltörésének nehézségeit növelő másik módszer a bors használata. A bors hasonló a sóhoz, de bár a só nem titkos (a kivonatolt jelszóval tárolják), a borsot külön tárolják (például egy konfigurációs fájlban), hogy megakadályozzák a hackerek hozzáférését. Ez azt jelenti, hogy a paprika titkos, és hatékonysága ettől függ.
A borsnak különbözőnek kell lennie minden alkalmazáshoz, és elég hosszúnak kell lennie ahhoz, hogy biztonságos legyen. Legalább 112 bitet ajánl az Országos Szabványügyi és Technológiai Intézet.
Bár a paprika használata bizonyos esetekben hatékony lehet, vannak hátrányai is. Először: egyetlen jelenlegi algoritmus sem támogatja a paprikát, ami gyakorlatilag azt jelenti, hogy ezt lehetetlen méretben megvalósítani. Vagyis, hacsak nem saját algoritmusokat készít. Hallgassa meg Bruce Schneier-t. Ne csináld.
Ha hosszabb cikket szeretne a paprikával kapcsolatos problémákról, nézze meg ezt a szálat.
Végül használjon erős (legalább 12 karakteres), összetett jelszavakat, és valósítson meg erős jelszószabályokat az összes rendszerben. Ez magában foglalhatja a felhasználók kényszerítését erős jelszavak létrehozására, rendszeres tesztelésüket, a jelszókezelők használatát vállalati szinten, a 2FA használatának kikényszerítését stb.
Zavart abban, hogy mitől lehet erős jelszó?

Nagyon könnyűnek tűnik feltörni. Aggódnom kellene?
A hackeléssel kapcsolatban a legfontosabb megjegyezni, hogy senki sem akar több munkát végezni, mint amennyit meg kell tennie. Például a szivárványos asztalok kiszámítása sok munka. Ha van egy egyszerűbb módja a jelszavának megszerzésére, akkor valószínűleg egy aljas színész megpróbálja először (például az adathalászat!).
Ez azt jelenti, hogy az alapvető kiberbiztonsági bevált gyakorlatok engedélyezése valószínűleg a legegyszerűbb módja annak, hogy megakadályozzák a feltörést. Valójában a Microsoft nemrégiben arról számolt be, hogy a 2FA engedélyezése pusztán az automatizált támadások 99,9% -át blokkolja.

Boldog hackelést!
További olvasmányok:
További részletek a hash-láncokról
A szivárványos asztalok újabb magyarázata
A szivárványos asztalok listája online