Szótár keresés

Szótári támadás ( angol  szótártámadás ) - a biztonsági rendszer elleni támadás a hitelesítéshez használt jelszavak teljes felsorolásának ( angol  brute-force ) módszerével , amelyet az összes szó ( jelszavak tiszta formájában vagy titkosított formájában ) egymás utáni ellenőrzésével hajtanak végre. képek) bizonyos típusú és hosszúságúak a szótárból , hogy később feltörjék a rendszert és hozzáférjenek a minősített információkhoz . [1] Ez az esemény a legtöbb esetben negatív jellegű, ellentétes az erkölcsi és törvényi normákkal.

A szótárban való keresés és a jelszó összetettsége

A valószínűségszámítás szempontjából a jelszó megválasztása determinisztikus és logikus. A jelszó lehet: születési dátum, név, tárgy, számkészlet, a billentyűzeten szorosan elhelyezett betűsorozat. Általános esetben a fentiek összefűzve vannak.

Ezeknek a feltételezéseknek az eredménye, hogy a jelszóválasztás előre meghatározottsága kulcsszerepet játszik a szótári keresési módszer alapjául szolgáló algoritmusok kiválasztásában .

Kétféle támadás létezik:

Lehetőség van a jelszó erősségi pontszámának kiszámítására, különösen a sikeres szótári támadások arányának meghatározására . A siker valószínűségi pontszáma a szótári támadás során feltört jelszavak számának és a kísérletek teljes számának arányaként határozható meg .

Történelmi információk

Az Internet  Worm 1988-as használata a jelszavak feltörésének jól dokumentált esetét szolgáltatja. [2] A féreg egy sor szótárral próbálta feltörni a jelszavakat. A támadás első szakaszában a Unix rendszer jelszófájljából vett felhasználóneveket tartalmazó szavakat használtak. Ha ez nem járt sikerrel, egy belső szótárt használtak, amely 432 általánosan használt internetes zsargon szót tartalmazott. Ha a második lépés nem járt sikerrel, egy 24474 szóból álló Unix szótárat használtunk. A féreg üres jelszót is keresett. A megtámadott webhelyek arról számoltak be, hogy a jelszavak körülbelül 50%-át sikeresen feltörték ezzel a stratégiával.

A következő lépés Daniel Klein munkája volt .  [3] Eredményeinek bemutatása érdekében titkosított Unix rendszerjelszófájlokat gyűjtött össze . Ez a gyűjtemény körülbelül 15 000 különböző felhasználónév/jelszó párost ( bejelentkezés/jelszó ) tartalmazott . Klein egy sor szótárat és egy sor mechanizmust készített a permutációk lehetővé tételére. Az általa biztosított szótár körülbelül 60 000 tételből állt. Ez a lap neveket, helyeket, fiktív utalásokat, bibliai kifejezéseket, kifejezéseket W. Shakespeare verseiből stb. tartalmazott. Egy permutációs stratégia alkalmazása után (nagybetűk használata, nyilvánvaló helyettesítések, számok permutációi) több mint 3,3-es jelszóteret kapott. millió lehetőség. A szótár használata segített Kleinnek bizonyos szervereken az összes jelszó 24,2%-át feltörni.  

1991-1992-ben. Eugene Spafford( eng.  Eugene Spafford ) a statisztikák alapján egy olyan szótárt sikerült összeállítania, amellyel a kiválasztott szervereken a jelszavak 20%-a feltört. [négy]

2000-ben a Cambridge-i Egyetem kutatócsoportja végzett egy tanulmányt, amelyben 195 kivonatolt jelszót támadtak meg, amelyek 35%-át sikeresen feltörték. [5]

táblázat: A szisztematikus kutatás során talált jelszavak százalékos aránya
Kutató(k) / projekt Idő A jelszavak ellenőrizve A megtalálás százaléka, [%]
Internetes féreg [2] 1988 ezrek ~50
Klein tanulmánya [3] 1990 15000 24.2
Spafford tanulmánya[négy] 1992 13787 20.0
A Cambridge-i Egyetem kutatói [5] 2000 195 35.0

A szótár készítésének alapelvei

A legtöbb jelszóban hangzásbeli hasonlóság van a természetes (angol) nyelv szavaival; ennek az az oka, hogy egy adott jelszóval kapcsolatos ilyen jellegű információkat könnyű megjegyezni. Ezt a tulajdonságot a Markov-láncon alapuló "Markov-szűrők" veszik figyelembe , amely a természetes nyelvi feldolgozás szabványos technikája. A nem alfabetikus karakterek jelenléte a jelszóban értelmezhető úgy, mint egy állapotgépet egy adott elemkészletre.

Markov-szűrők

Az ember által generált alfabetikus jelszó egyenlőtlenül oszlik el az alfabetikus sorozatok között. Ez a feltétel nagy pontossággal figyelembe vehető a nulla és elsőrendű "Markov-szűrőkben": [6]

  1. zérusrendű Markov-modell : minden szimbólum a saját valószínűségi eloszlása ​​szerint, az előző szimbólumoktól függetlenül jön létre.
  2. elsőrendű Markov-modell : minden digrammhoz (rendezett párhoz) hozzárendelünk egy valószínűséget, és minden szimbólumot az előzőtől feltételes függőben generálunk.

Matematikailag

a Markov-modell nulla sorrendje:

a Markov modell első rendelése:

ahol  egy karaktersorozat eloszlásának valószínűsége, ennek a sorozatnak a karaktere,  egy  egyedi karakter vagy digram gyakorisága a szövegben.

A valószínűtlen karakterláncok kiküszöbölésére a szótárban a valószínűségi diszkretizálást használják - egy kétszintű rendszert vezetnek be küszöbértékkel :

a Markov-modell nulla sorrendje:

a Markov modell első rendelése:

Megjegyzések

  1. az elsőrendű Markov-modell jobb eredményeket mutat (nagyobb százalékos hackelést ad) a nulladrendű Markov-modellhez képest . Kivétel az, amikor a jelszóstratégia egy absztrakt mondatban minden egyes szó első betűiből álló rövidítéseket használ;
  2. a betűk gyakorisági eloszlása ​​a jelszóban attól függ, hogy melyik nyelvre a szótárt összeállították (ennek a módszernek az általánosítása a jelszó létrehozásához szükséges nyelvek kombinációja).

Szűrők állapotgépekkel

Az állapotgépek létrehozásához a feltört jelszóval kapcsolatban bevezetünk néhány korlátozást és feltételezést:

  1. alfanumerikus jelszóban minden szám a végén van;
  2. az alfabetikus jelszó első betűje nagyobb valószínűséggel lesz nagybetű, mint a többi;
  3. egy alfabetikus jelszóban a kisbetűk száma nagyobb, mint a nagybetűké.

A determinisztikus véges automaták ideális eszközök a javasolt megszorításokkal rendelkező kifejezésekhez. [6]

A véges automatákon alapuló szótár felépítésének első lépése reguláris kifejezések sorozatának létrehozása ( \" kisbetűk" , \"nagybetűk a kisbetűk előtt" , \"minden nagybetű a kisbetű előtt jön" stb.).

A szótár a Markov-szűrőknek megfelelő szavak halmaza és a rájuk alkalmazott véges számú reguláris kifejezés .

Algoritmusok

A nulladrendű Markov-modell módosított szótára

A szótár felépítéséhez használt algoritmus kissé eltér a nulla szintű Markov-szűrőtől (ebben az esetben a szótár különböző szóhosszúságaihoz más küszöbértéket használunk ). [6]

A módosított szótár meghatározása:

Írd át a szűrőt (szótárat) additív formában!

ahol .

Hadd . Ezután meghatározzuk a részszótárakat . Vegye figyelembe, hogy ez azért van meghatározva , mert ezért nem függ a választásától .

Bármely előtag esetén a részszótár tartalmazza az összes lehetséges karaktersorozatot, amely az előtaghoz csatolható , így az eredményül kapott karakterlánc megfelel minden Markov-tulajdonságnak.

Általában részleges szótár írható

Rekurzív algoritmus egy részszótár méretének kiszámításához [6]

részleges_méret1 ( jelenlegi_hossz , szint ) { if level >= threshold : return 0 if total_length = current_length : return 1 sum = 0 minden egyes karakterhez az ábécében sum = sum + partial_size1 ( jelenlegi_hosszúság + 1 , szint + mu ( karakter ) ) return sum

Rekurzív algoritmus kulcs keresésére egy szótárból (bemenetként egy indexet vesz a kulcstérben, és visszaadja a megfelelő kulcsot ) [6]

get_key1 ( jelenlegi_hossz , index , szint ) { if total_length = jelenlegi_hossz : return "" sum = 0 az ábécé minden egyes karakterére new_level = level + mu ( char ) // kinézett az előre kiszámított tömbből size = partial_size1 [ current_length + 1 ][ new_level ] if sum + size > index // '|' karakterlánc-összefűzésre utal, visszatérési karakter | get_key1 ( jelenlegi_hossz + 1 , index - összeg , új_szint ) összeg = összeg + méret // a vezérlő nem ér ide print "index nagyobb, mint a kulcstér mérete" ; kilépés }

Megjegyzések

  1. a részleges_méret1 csak egyszer kerül kiértékelésre ( kulcsonként nem egyszer ) ;
  2. a get_key1 a kriptográfiai elemzés során kerül kiszámításra ;
  3. a teljes kulcstér megtekintéséhez futtassa a get_key1 paramétert aktuális_hossz = 0 és level = 0 értékkel .
Az elsőrendű Markov-modell szókincse

A nulla sorrendű módszerhez hasonlóan a részleges szótárak is definiálva vannak .

Miután megkeresett egy karakterláncot a részleges szótárban , aggódnia kell az utolsó karakter miatt (figyelembe véve a digramot és annak eloszlását)

részleges_méret2 ( jelenlegi_hossz , előző karakter , szint ) { if level >= threshold : return 0 if total_length = current_length : return 1 sum = 0 minden karakterhez az ábécében if current_length = 0 new_level = mu ( char ) else new_level = level + mu ( prev_char ) , karakter ) összeg = összeg + részleges_méret2 ( jelenlegi_hossz + 1 , karakter , új_szint ) } get_key2 ( jelenlegi_hossz , index , előző karakter , szint ) { if total_length = current_length : return "" sum = 0 a karakterhez az ábécében if current_length = 0 new_level = mu ( char ) else új_szint = szint + mu ( előző karakter , karakter ) méret = részleges_méret2 ( jelenlegi_hossz + 1 , karakter , új_szint ) if összeg + méret > index return char | get_key2 ( jelenlegi_hossz + 1 , index - összeg , karakter , új_szint ) sum = összeg + méret // a vezérlő nem éri el ide print "index nagyobb, mint a kulcstér mérete" ; kilépés }

Megjegyzés

  1. a hibrid algoritmusok használata jobb eredményeket ad a szótári kereséssel végzett kriptográfiai elemzéshez . [6]

A szótári támadások alapvető elhárítása

Online szótári támadások elleni küzdelem

Számos módja van az online szótártámadások elleni küzdelemnek :

  1. késleltetett válasz : a megadott  bejelentkezési/jelszó párhoz a szerver kis, speciálisan generált igen/nem válaszkésleltetést használ (például legfeljebb egy válasz másodpercenként;
  2. fiók zárolása :  egy fiókot több (előre meghatározott számú) sikertelen bejelentkezési/jelszói kísérlet után zárolnak ( például egy fiókot egy órára zárolnak öt helytelen jelszókísérlet után);
  3. a Proof-of-Work használatával ;
  4. só és lassú hash függvények használata a kliens oldalon.

Megjegyzések

  1. ezek az intézkedések a legtöbb esetben ésszerű időn belül megakadályozzák a szótári támadást és az azzal járó jelszó feltörést;
  2. Az online szótári támadások elleni küzdelem megvalósításának adatai lehetővé teszik a felhasználói fiókok hosszú távú blokkolását a támadási időszak helyes megválasztásával.
Felhasználó hitelesítési protokollok

Feltételezzük, hogy a megfelelő bejelentkezési/jelszó kombinációt a fiók felhasználója adja meg , míg a szótártámadást egy automatikus program hajtja végre. Szükséges, hogy a helyes jelszó megadásának kísérlete "számításilag egyszerű" legyen az emberek számára, és "számításilag nehéz" legyen a gépek számára.

A protokoll egy teszt, amely lehetővé teszi a szerver számára, hogy megkülönböztesse az embert a bottól . Először M. Naor ( eng.  Moni Naor ) javasolta, és fordított Turing-tesztnek ( Reverse Turing-teszt (RTT) ) hívják, másik neve pedig CAPTCHA . A fordított Turing-tesztnek a következő feltételeknek kell megfelelnie: [7] 

  1. automatikus generálás;
  2. egyszerű végrehajtás egy személy számára;
  3. bonyolultság a gépek számára;
  4. kicsi az esélye, hogy kitalálja a választ.

A képteszt minden fenti feltételnek eleget tesz.

1. protokoll (a Turing-féle fordított teszt kombinációja bármely hitelesítési rendszerrel) [8]

A felhasználót felkérik, hogy válaszoljon egy RTT üzenetre a hitelesítés megkezdése előtt (a bejelentkezés/jelszó megadása előtt ).

Megjegyzés

Ez a módszer nem optimális nagy rendszerek számára, mivel a felhasználó számára meglehetősen irritáló és pszichológiailag nehéz minden hitelesítés előtt megadni a választ az RTT-tesztre . [nyolc]

2. protokoll (felhasználói bejelentkezési protokoll, az 1. protokoll módosított változata) [8]

Ha a felhasználó sikeresen bejelentkezett, a szerver egy cookie -t küld a felhasználó számítógépére , amely tartalmazza a felhasználó hitelesítésének rekordját és az üzenet érvényességi idejét (feltételezve, hogy a süti információinak a szerver értesítése nélkül történő megváltoztatásának képtelensége (ez egy MAC ( üzenet hitelesítési kód ) hozzáadásával garantálható , amelynek kiszámítása egy csak a szerver által ismert kulccsal történik). 

1. a felhasználó beírja a bejelentkezési nevet/jelszót . Ha a számítógépe a szerver által biztosított sütiket tartalmazza , a cookie -t a szerver kéri le; 2. bejelentkezés/jelszó hitelesítés ; 3. ha a bejelentkezés/jelszó igaz, akkor a. ha a süti érvényes állapotban van (a szerver általi módosítás dátumáig igazolta), és a felhasználót azonosító (és a cookie -ban tárolt) rekord megegyezik a megadott bejelentkezési névvel , akkor a felhasználó hozzáférést kap a szerverhez; b. ellenkező esetben a szerver létrehoz egy RTT tesztet és elküldi a felhasználónak. A felhasználó csak az RTT-kérésre adott helyes válasz után fér hozzá a szerverhez ; 4. ha a bejelentkezés/jelszó pár hibás, akkor a. nagy valószínűséggel (ahol ez egy rendszerparaméter, például ), a felhasználónak felajánlja, hogy teljesítse az RTT-tesztet , és a választól függetlenül a szerverhez való hozzáférés blokkolva lesz; b. valószínűséggel a kapcsolat azonnal blokkolódik.

Megjegyzések

  1. feltételezhető, hogy a felhasználó kevés számítógépet használ, és nem valószínű, hogy a támadást valamelyik számítógépről hajtják végre;
  2. a bejelentkezési folyamat webböngészőt használ, és cookie -k szükségesek;
  3. A protokoll algoritmusa úgy van felépítve, hogy az RTT üzenet generálása csak két esetben fordul elő: ha a felhasználó számítógépén a cookie -bejegyzés érvénytelen, és ha a bejelentkezés/jelszó pár hibás. Ez lehetővé teszi a szerverek kiürítését ezzel a protokollal;
  4. A valószínűség a bejelentkezés/jelszó pár függvénye . Vannak esetek, amikor rögzített bejelentkezési/jelszói értékek esetén vagy csak a fiókok zárolása történik, vagy több hiba esetén csak RTT-üzenetek generálódnak.

Az offline szótári támadások elleni küzdelem

Az offline szótári támadásokat a következő módokon lehet megelőzni vagy megnehezíteni:

  • ismert érték hozzáadása a hashing - salthoz ( angol   )
  • lassú hash függvény használatával, pl. scrypt
Hardver implementáció

A Trusted Platform Module (TPM)  egy hardveres chip, amely lehetővé teszi a számítógépek számára az adatok biztonságának megőrzését. A TPM-kulcsok eléréséhez és használatához titkos információk (a továbbiakban - authData ) birtoklása szükséges .

A támadás során a kriptoanalitikus megtanulhatja: [9]

  1. bejelentkezés az authData és a kérésre adott TPM - válasz eléréséhez ;
  2. közös titok( eng. share  secret ) az authData - hoz és a TPM - válaszhoz társítva .

Az offline szótártámadások során a kapott információk alapján szótárakat állítanak össze az authData meghatározására .

Harcmódszerek - módosított SPEKE kriptográfiai módszerrel( Simple Password Exponential Key Exchange ), amely a Diffie-Hellman kulcscsere algoritmuson alapul (lehetővé teszi, hogy két fél közös titkosságot hozzon létre ( eng.  erős megosztott titok ), gyenge megosztott titok alapján ( eng.  gyenge titok ), amelyet megosztanak).

Protokoll (módosított kriptográfiai metódus SPEKE)

1. a felhasználó végrehajtja a jogosultsághoz szükséges parancsot authData -val ; 2. a felhasználói folyamatot és a TPM -et a SPEKE protokoll tartalmazza
, gyenge megosztott titokként használva ;
3. A felhasználói folyamat kiválaszt egy véletlenszerűt, és elküldi a TPM -nek , ahol  a hash függvény ; 4. A TPM véletlenszerűen választ egyet , és elküldi a felhasználói folyamatnak; 5. mindegyik kiszámít egy titkot ; 6. helyébe a HMAC kulcs lép .


Megjegyzések

  1. a választás korlátozásait a Diffie-Hellman kulcscsere algoritmus írja le ;
  2. a hash függvény kiválasztását a titkosítási módszer határozza meg a kriptoprocesszorban ( TPM chip ).
  3. a protokoll fejlesztés alatt áll. [9]

Lásd még

Jegyzetek

  1. Shirey R. Megjegyzéskérés : 4949 . – 2007. augusztus.  
  2. 1 2 Spafford Eugene. The Internet Worm: Crisis and Aftermath (angol) . - Az ACM közleményei, 1989. június. - P. 678-687 .  
  3. 1 2 Daniel V. Klein. Felmérés a jelszóbiztonságról és annak javításairól //  USENIX Association. – 1990.  
  4. 1 2 Spafford Eugene. Az újrafelhasználható jelszavak választásának megfigyelése  //  USENIX Association. - 1992. július 31. Az eredetiből archiválva : 2011. július 20.
  5. 1 2 Yan Jianxin, Blackwell Alan, Anderson Ross, Gran Alasdair. A jelszavak megjegyezhetősége és biztonsága – néhány empirikus eredmény / Markus Kuhn. – 2000. szeptember.  
  6. 1 2 3 4 5 6 Narayanan Arvind, Shmatikov Vitaly. Gyors szótári támadások jelszavak ellen az idő- tér kompromisszum használatával . — 2005. november 7–11.  
  7. Naor Moni. Ember ellenőrzése a hurokban vagy azonosítás a Turing-teszttel . – 1996. szeptember 13.  
  8. 1 2 3 Pinkas Benny, Sander Tomas. Jelszavak védelme a szótári támadásokkal szemben .  
  9. 1 2 Chen Liqun, Ryan Mark. Ofine szótári támadás a TCG TPM gyenge engedélyezési adatai ellen, és megoldás (angol) .  

Linkek