Slovníkový útok ( anglicky dictionary attack ) - útok na bezpečnostní systém metodou úplného výčtu ( anglicky brute-force ) zamýšlených hesel použitých k autentizaci , prováděný postupnou kontrolou všech slov ( hesel v čisté podobě nebo jejich zašifrovaných obrázky) určitého typu a délky ze slovníku za účelem následného hacknutí systému a získání přístupu k utajovaným informacím . [1] Tato událost má ve většině případů negativní charakter, odporující morálním a legislativním normám.
Z hlediska teorie pravděpodobnosti je volba hesla deterministická a logická. Heslo může být: datum narození, jméno, objekt, sada čísel, posloupnost písmen těsně rozmístěných na klávesnici. V obecném případě je výše uvedené zřetězené .
Výsledkem těchto předpokladů je, že předurčení při volbě hesla hraje klíčovou roli při výběru algoritmů, na kterých je založena metoda vyhledávání ve slovníku .
Existují dva typy útoků:
Je možné vypočítat skóre síly hesla, zejména určit podíl úspěšných slovníkových útoků . Pravděpodobnostní skóre úspěchu lze definovat jako poměr počtu prolomených hesel při slovníkovém útoku k celkovému počtu pokusů.
Použití Internet Worm v roce 1988 poskytuje dobře zdokumentovaný případ prolomení hesla. [2] Červ se pokusil prolomit hesla prací s řadou slovníků. První fáze útoku používala sadu slov obsahujících uživatelská jména převzatá ze souboru hesel unixového systému. Pokud to nebylo úspěšné, byl použit interní slovník 432 běžně používaných slov internetového žargonu. Pokud druhý krok nebyl úspěšný, byl použit unixový slovník s 24474 slovy. Červ také zkontroloval prázdné heslo. Napadené stránky uvedly, že pomocí této strategie bylo úspěšně prolomeno asi 50 % hesel.
Dalším krokem byla práce Daniela Kleina . [3] Aby poskytl své výsledky, shromáždil zašifrované soubory unixových systémových hesel . Tato sbírka obsahovala přibližně 15 000 různých párů uživatelské jméno/heslo ( login/password ) . Klein zkonstruoval řadu slovníků a sadu mechanismů umožňujících permutace. Slovník, který poskytl, obsahoval přibližně 60 000 položek. Tento list obsahoval jména, místa, fiktivní odkazy, biblické termíny, výrazy z básní W. Shakespeara atd. Po uplatnění permutační strategie (použití velkých písmen, zřejmé substituce, permutace čísel) získal mezeru pro hesla větší než 3,3 milion možností. Použití tohoto slovníku pomohlo Kleinovi prolomit 24,2 % všech hesel na určitých serverech.
V letech 1991-1992. Eugene Spafford( ang. Eugene Spafford ) se podařilo na základě statistik sestavit slovník, se kterým podlehlo prasknutí 20 % hesel na vybraných serverech. [čtyři]
V roce 2000 provedl tým výzkumníků z University of Cambridge studii, ve které bylo napadeno 195 hašovaných hesel, z nichž 35 % bylo úspěšně prolomeno. [5]
Řešitel(é) / projekt | Čas | Hesla ověřena | Procento nálezů, [%] |
---|---|---|---|
Internetový červ [2] | 1988 | tisíce | ~50 |
Kleinova studie [3] | 1990 | 15 000 | 24.2 |
Spaffordova studie[čtyři] | 1992 | 13787 | 20,0 |
Výzkumníci z University of Cambridge [5] | 2000 | 195 | 35,0 |
Ve většině hesel je fonetická podobnost se slovy přirozeného (anglického) jazyka; důvodem je snadné zapamatování tohoto druhu informací o daném heslu. Tato vlastnost je zohledněna v "Markovových filtrech" založených na Markovově řetězci , což je standardní technika zpracování přirozeného jazyka. Přítomnost neabecedních znaků v hesle může být interpretována jako použití stavového automatu na konkrétní sadu prvků.
Abecední heslo vytvořené člověkem je v prostoru abecedních sekvencí rozmístěno nerovnoměrně. Tuto podmínku lze s velkou přesností zohlednit v "Markovových filtrech" nultého a prvního řádu: [6]
Matematicky,
nultého řádu Markova modelu:
první objednávka Markovova modelu:
kde je pravděpodobnost rozdělení posloupnosti znaků, je charakter této posloupnosti, je četnost jednotlivého znaku nebo diagramu v textu.
K odstranění nepravděpodobných řetězců ve slovníku se používá pravděpodobnostní diskretizace - je zaveden dvouúrovňový systém s prahem :
nultého řádu Markova modelu:
první objednávka Markovova modelu:
Poznámky
Pro vytvoření stavových automatů jsou v souvislosti s prolomeným heslem zavedena některá omezení a předpoklady:
Deterministické konečné automaty jsou ideálními prostředky pro výrazy s navrhovanými omezeními. [6]
Prvním krokem při vytváření slovníku založeného na konečných automatech je vytvoření sekvence regulárních výrazů ( \" malá písmena" , \" velká písmena před malými písmeny" , \"všechna velká písmena před malá" atd.).
Slovník je definován jako sada slov, která odpovídají Markovovým filtrům, a konečný počet regulárních výrazů , které jsou na ně aplikovány.
Algoritmus použitý k vytvoření slovníku se mírně liší od Markovova filtru nulové úrovně (v tomto případě bude pro různé délky slov ve slovníku použit jiný práh ). [6]
Upravený slovník je definován jako
Přepište filtr (slovník) do aditivní formy
kde .
Nechte _ Poté definujeme dílčí slovníky . Všimněte si, že je definováno , protože proto nezávisí na výběru .
Pro jakoukoli předponu obsahuje částečný slovník všechny možné sekvence znaků, které lze k této předponě připojit , takže výsledný řetězec splňuje všechny Markovovy vlastnosti.
Obecně lze napsat částečný slovník
Rekurzivní algoritmus pro výpočet velikosti částečného slovníku [6]
částečná_velikost1 ( aktuální_délka , úroveň ) { if úroveň >= práh : návrat 0 if total_length = aktuální_délka : návrat 1 součet = 0 pro každý znak v abecedě součet = součet + částečná_velikost1 ( aktuální_délka + 1 , úroveň + mu ( znak ) ) vrátit součet }Rekurzivní algoritmus pro nalezení klíče ze slovníku (vezme index v prostoru klíčů jako vstup a vrátí odpovídající klíč ) [6]
get_key1 ( aktuální_délka , index , úroveň ) { if total_length = current_length : return "" součet = 0 pro každý znak v abecedě nová_úroveň = úroveň + mu ( znak ) // vyhledáno z předem vypočítaného pole velikost = částečná_velikost1 [ aktuální_délka + 1 ][ nová_úroveň ] if součet + velikost > index // '|' odkazuje na zřetězení řetězců return char | get_key1 ( aktuální_délka + 1 , index - součet , nová_úroveň ) součet = součet + velikost // ovládací prvek sem nemůže dosáhnout print "index větší než velikost klíčového prostoru" ; odejít }Poznámky
Stejně jako u metody nulového řádu jsou definovány dílčí slovníky .
Po vyhledání řetězce v částečném slovníku se musíte starat o poslední znak (s ohledem na digram a jeho distribuci)
částečná_velikost2 ( aktuální_délka , předchozí_znak , úroveň ) { pokud úroveň >= práh : vrátí 0 , pokud celková_délka = aktuální_délka : vrátí 1 součet = 0 pro každý znak v abecedě , pokud aktuální_délka = 0 nová_úroveň = mu ( znak ) jinak nová_ úroveň = úroveň + mu ( předchozí_znak , char ) sum = suma + částečná_velikost2 ( aktuální_délka + 1 , znak , nová_úroveň ) } get_key2 ( current_length , index , prev_char , level ) { if total_length = current_length : return "" součet = 0 pro znak v abecedě , pokud aktuální_délka = 0 nová_úroveň = mu ( znak ) jinak new_level = level + mu ( prev_char , char ) size = částečná_velikost2 ( current_length + 1 , char , new_level ) if sum + size > index return char | get_key2 ( aktuální_délka + 1 , součet indexu , znak , nová_úroveň ) _ suma = suma + velikost // ovládací prvek sem nemůže dosáhnout print "index větší než velikost klíčového prostoru" ; odejít }Komentář
Existuje několik způsobů, jak čelit online slovníkovým útokům :
Poznámky
Předpokládá se, že uživatel tohoto účtu zadá správnou kombinaci přihlašovacího jména a hesla , zatímco slovníkový útok provede automatický program. Vyžaduje se, aby pokus o zadání správného hesla byl pro lidi „výpočetně jednoduchý“ a pro stroje „výpočetně obtížný“ .
Protokol je test, který umožňuje serveru rozlišit člověka od robota . Poprvé jej navrhl M. Naor ( eng. Moni Naor ) a nazývá se reverzní Turingův test ( eng. Reverse Turing test (RTT) ), jiný název pro něj je CAPTCHA . Reverzní Turingův test musí splňovat následující podmínky: [7]
Obrazový test splňuje všechny výše uvedené podmínky.
Protokol 1 (kombinace Turingova reverzního testu s libovolným autentizačním systémem) [8]
Před zahájením autentizace (před zadáním login/password
)
je uživatel požádán, aby odpověděl na zprávu RTT .
Komentář
Tato metoda není optimální pro velké systémy, protože je pro uživatele poměrně nepříjemné a psychicky obtížné zadávat odpověď na RTT test pokaždé před autentizací . [osm]
Protokol 2 (protokol přihlášení uživatele, upravená verze protokolu 1) [8]
Pokud je uživatel úspěšně přihlášen, server odešle do počítače uživatele cookie , která obsahuje záznam o autentizaci uživatele a dobu platnosti této zprávy (za předpokladu nemožnost změnit informace v cookie bez upozornění serveru (toto lze zaručit přidáním MAC ( kód pro ověření zprávy ), který se vypočítá pomocí klíče známého pouze serveru).
Poznámky
Offline slovníkovým útokům lze zabránit nebo je ztížit následujícími způsoby:
Implementace hardwaruTrusted Platform Module (TPM) je hardwarový čip, který umožňuje počítačům uchovávat data v bezpečí. Držení tajných informací (dále jen authData ) je nezbytné pro přístup a používání klíčů TPM .
Během útoku se kryptoanalytik může naučit: [9]
Kompilace slovníků na základě přijatých informací se používá v offline slovníkovém útoku k určení authData .
Metody boje - pomocí upravené kryptografické metody SPEKE( Simple Password Exponencial Key Exchange ), která je založena na algoritmu výměny klíčů Diffie-Hellman (umožňuje dvěma stranám vytvořit sdílené tajemství ( angl. strong shared secret ), založený na slabém sdíleném tajemství ( angl. slabé tajemství ), které sdílejí).
Protokol (upravená kryptografická metoda SPEKE)
1. uživatel provede příkaz potřebný pro autorizaci pomocí authData ;
2. uživatelský proces a TPM jsou součástí protokolu SPEKE
, který se používá jako slabé sdílené tajemství ;
3. Uživatelský proces vybere náhodný a odešle ho do TPM , kde je hashovací funkce ;
4. TPM vybere náhodný a odešle ho uživatelskému procesu;
5. každý z nich vypočítá tajenku ;
6. je nahrazeno jako klíč HMAC .
Poznámky