Reklama

Lámání hesel silou grafické karty

Hackerem chce být nemálo mladíků. Představa získávání hesel a nabourávání e-mailových schránek svých (ne)přátel opravdu lákavá je: přesto však často zůstane pouze u fantazírování. Změní na tom něco ohromný výpočetní výkon grafických karet a GPGPU platforma nVidia CUDA?

Problematika prolamování kódů se dá rozdělit na dvě oblasti: použití slovníkové metody (kdy testujeme slova ze slovníku – pokud je u použitého řetězce vrácena číslice 1, máme heslo) a metody hrubé síly (kdy ručně/skriptem zkoušíme všechny možné kombinace řetězců od/do dané délky), spíše známější pod anglickým termínem „brute force“. O první metodě tento článek není, nás bude zajímat právě hrubá síla.

nVidia CUDA

Samotné zkoušení mnoha řetězců a jejich kombinací je úloha vysoce paralelizovatelná, tj. čím více procesorových jader máme k dispozici, tím lépe. Procesorová jádra nemusí být ani nikterak komplexní, stačí nám pouze schopnost náhodné generace znaků a jejich míchání (shuffle). I proto se k tomuto hodí relativně jednoduché stream procesory grafických karet, které pro náš účel postačí více než bohatě.

Reklama

Jakžtakž bezpečné (alespoň dle ohlasů, co jsem mohl slyšet) je osmimístné heslo s následujícími parametry: A-Z, a-z, 0-9. Wikipedia tvrdí, že vyzkoušení takovéhoto množství kombinací (je jich celkem 218,3 bilionů) zabere (za předpokladu vyzkoušení sta iterací za sekundu) 70 000 let. To je docela dlouhá doba.

Délka lámání hesel (wikipedia.org)

Délka lámání hesel (zdroj: Wikipedia.org)

S pomocí grafické karty by mohl být čas mnohem kratší. Podívejme se nyní na aplikaci teoretických poznatků do praxe, tj. jak se vlastně hesla v současnosti šifrují.

Co se týče bezpečnosti hesel na internetu, je absolutně základní metodou použití nějakého hašovacího algoritmu (nemohu nezmínit faux-pas serveru Živě.cz v roce 2007). V minulosti (a někdy i dnes, i když to nelze doporučit) se hojně používalo MD5, poté, co v něm bylo roku 2004 objeveno větší množství chyb, se od něj začalo upouštět. Dnes bych doporučil používat SHA1, které má sice také pár chyb, i tak je ale mnohem bezpečnější, než jeho předchůdce.

MD5 poznáme jednoduše: vždy se jedná o 128bitový otisk (SHA1 používá delší, 160bitový hash). V oblíbeném a široce užívaném jazyku PHP je aplikace funkce md5() opravdu triviální:

Použití MD5

Právě přes otisky řetězců vede cesta, jak se dobrat k heslu: jednoduše budeme ověřovat otisky náhodně vygenerované série řetězců s daným otiskem; najdeme-li shodu, náš vygenerovaný řetězec je výsledek našeho snažení. Tak jednoduché to však není, další klacek pod nohy nám háže sůl, anglicky „salt“.

Použití soli má svůj význam: cílem je zabránit zneužití otisků v případě nabourání databáze, kde se nacházejí hashe. Vždy je totiž oddělena funkční část aplikace (scripty) a úložiště dat, k oběma by mělo být jiné heslo (jiné složení, délka). Co to znamená v praxi? Pokud byl programátor chytrý a své vygenerované hashe dále posolil, získáme pouze bezcenné hashe. Víc vám možná napoví kód níže.

Použití soli

Sami můžete vidět, že nynější otisk je naprosto odlišný od původního. Útočník se dostal pouze k jakýmsi kódům, které formálně vypadají jako MD5 hashe, budou mu však k ničemu. Dalším krokem útočníka bude nabourání serveru, na kterém jsou PHP soubory, vystudovat z nich metodu, kterou dodatečně šifrujeme, a pokračovat dále (naši metodu bude muset doprogramovat do své crackovací aplikace, aby mu vycházely otisky stejného ražení, jako máme my – následně již bude schopen heslo odhalit).

Tímto úsekem jsme tak trochu odběhli od nVidia CUDA, považoval jsem ale za důležité zmínit bezpečnost hesel na internetu jako takovou. Jelikož nepředpokládám, že byste byli všichni programátoři, musíte se modlit, aby vámi získané otisky byly neposolené.

Průměr: 4.2 (29 hlasů)

Komentáře

Re: Lámání hesel silou grafické karty

Autor píše: GT300 ... 512 stream procesorů na frekvenci 1,6 GHz, paměťová propustnost 256 GB/s ... uniklo mi něco? Od kdy jsou tyto domnělé informace známé a odkud pochází?
Já jen, že tato tvrzení spíše potvrzují pokračování v původní architektuře, ale nVidia stále dokola opakuje, že GT300 má zcela zbrusu novou architekturu.
Jak to tedy je?

Re: Lámání hesel silou grafické karty

Je to psáno v podmiňovacím způsobu. Po zadání GT300 do pole vyhledávání by se našly starší aktuality, kde je uveden i zdroj těchto spekulativních čísel.

Re: Lámání hesel silou grafické karty

Milujem solenie, ale aj so zmenou soli na morskú v danom prípade teda spojíme 81a997a78dd7ec52b51c1cfc442fd0e50909de06c1428671b6b4c502b82616c7 (ako MD5) a zašifrujeme s SHA-512

ba6e14a5216e47bc066b40b838b442e35d9bbf8b48cfe367901e796cd28604a243a68cebdb13285f5d10b698a442c5b8ea208e2580ca795ae68f8c3442390fbd

A ešte treba obrátiť poradie znakov :o)

Re: Lámání hesel silou grafické karty

Je úplně jedno jak výkonná bude další generace grafik - nic to na rychlosti nezmění. I kdyby se výkon zdesetinásobil, tak ve stejném čase nezpracujete ani o jediný znak delší heslo.
U NP problémů jako je tento prostě hrubý výkon nic moc nepořeší.

Re: Lámání hesel silou grafické karty

Majitele ATIn (ale i nvidia karet) si zatim muzou otestovat alespon "obnovu" hesel pomoci GPU v rar archivech.

http://www.golubev.com/rargpu.htm

Re: Lámání hesel silou grafické karty

skoda ze to neni pres to OpenCL, bylo by to zajimave, protoze (jak mate v jine novince) tak prichazejici radeon 5870x2 ma 3200 stream procesoru :D s tim by to byla docela sranda rekl bych ...

Re: Lámání hesel silou grafické karty

Srovnáváš těžko srovnatelné. Neplatí, že GTX 280 má 240 SP a HD 5870 X2 3200, tj. že je cca 13× výkonnější: 1) je to 2 × 1600 SP, 2) 1600 SP je po vynásobení pěti, fyzicky jich je 320 (neboli 2 × 320).

Re: Lámání hesel silou grafické karty

rikam snad ze to bude 13x rychlejsi ?? jen rikam ze by to slo podle me slusne poznat. ten rozdil je 240/640 coz je temer 3x tolik. jenom sem tam zapomel napsat 3200(5D) ... :) takze hned neatakovat ...

Re: Lámání hesel silou grafické karty

Ještě bych doporučil zohlednit fakt, že u GF jedou shadery na cca dvojnásobné frekvenci než u ATI, takže spíš něco jako 480/640...

A pak bych ještě zohlednil, že 5D shader u ATI má v typické aplikaci vytížení 60-80 procent... a pouze v zcela ideálně optimalizovaných aplikacích je vytížen na 100%... na rozdíl od 1D shaderu u NV, který jede vždy na 100%....

Re: Lámání hesel silou grafické karty

>Pro majitele ATi karet tedy v současnosti (aspoň co vím) k dispozici žádná takováto aplikace není a nevím ani o tom, že by měla být v plánu.

hnedle vedle odkazu od uzivatele Samtron je k dispozici i hledani hashu http://www.golubev.com/hashgpu.htm
nalezeni hashe na ATI 4870 45s vs GTX 280 163s
ovsem nize bylo pouzito 62 znaku, kdezto screenshoty zde v clanku uvadi 64 znaku (docela by mne zajimalo, ktery znak abecedy je tam navic)

ighashgpu.exe /h:a5179470d52a4a5eb20c7059e41cb8c7 /t:md5 /c:scd /max:6
...
Found 1 CAL device(s)
Starting brute-force attack, Charset Len = 62, Min passlen = 4, Max passlen = 6
Charset (unicode -> 0) [ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123
456789]
Hash type: MD5, Hash: a5179470d52a4a5eb20c7059e41cb8c7
Device #0: [RV7x0] 750.00 Mhz 800 SP
CURPWD: cwn73n DONE: 89.77% ETA: 5s AVRSPD: 1158.8M
Found password: [1A2b3C], HEX: 31 41 32 62 33 43
Processed 51 942 260 736 passwords in 45s.
Thus, 1 160 306 052 password(s) per second in average.

Re: Lámání hesel silou grafické karty

trochu jsem zkoušel ten IGHASHGPU a v mém případě byl oproti CUDA Multiforcer o dost pomalejší, při stejném nastavení charsetu. Pro porovnání IGHASHGPU vs. CUDA Multi 09:05sec / 03:48sec.
Zajímavostí je že mi CUDA Multi v průměru počítala 64.7M/sec a IGHASHGPU 94.4M/sec
[ještě drobný edit] BarsWF MD5 bruteforcer v0.8 toto heslo opět se stejným nastavením, rozlousknul za 00:20sec s půměrem počítání GPU: 97.55 M/s plus CPU: 80.72 M/s, celkem program uvádí 175.64 MHash/sec (jen aby se do mě někdo nenavezl že já neumím počítat :-)
...
sestava Core 2 Duo E6750, GeForce 8600 GTS - 1320.00 Mhz 32SP

Re: Lámání hesel silou grafické karty

pokud mel BarsWF parametr "-c 0aA" (jako v prikladu na webu), tak pravdepodobne zacina od cisel
tj. nemusi prohledat ~90% keyspace jako IGHASHGPU, ale nejspis jen ~10%
pri pouziti "-c aA0" by zrejme dosahl srovnatelneho casu

/edit
v puvodnim prispevku jsi mel u IGHASHGPU nastavenu max. delku hesla 9 znaku (misto 6)
"Starting brute-force attack, Charset Len = 62, Min passlen = 4, Max passlen = 9"
vetsi delka hesla muze mit vliv na dobu zpracovani, coz by vysvetlovalo tu nesrovnalost mezi dobou zpracovani a rychlosti testovani hashu

Re: Lámání hesel silou grafické karty

Mel si pravdu, s tím pořadím charsetu, proto jsem změnil metodiku a u všech programu nastavil počítání z jediného charsetu. Počítalo se přesně sedmi-místné heslo které se skláda z velkých písmen "ZZZZZZZ" hash "92b44ba0e1b986249327e67fa505b56e" výsledky byly následující

CUDA 0.61 beta 2:39sec 63,5 M/s
IGHASHGPU 0.61 1:26sec 96,6 M/s
BarsWF 0.8 0:45sec 179,82 M/s

Re: Lámání hesel silou grafické karty

Pomerne velky rozdiel v prospech BarsWF je sposobeny tym, ze vyuziva okrem grafickej karty aj vsetky jadra procesoru. NV GT8600 ma "len" 32 stream procesorov, preto sa vpliv procesoru vyrazne prejavi na vysledku.

Pokial ide cisto o vypocet na grafickej karte tak na nVidiach ma BarsWF oproti IGHASHGPU 10% navrch, na kartach ATI je optimalizovanejsi IGHASHGPU o cca 10%.

Koho viacej zaujima problematika a nerobi mu problem anglicky alebo rusky jazyk, odporucam toto forum: http://3.14.by/forum/

Re: Lámání hesel silou grafické karty

Ach jo

Autor by si mohl udělat pořádek v názvosloví.

Hacker znamená něco jiného než co je prezentováno v článku.

MD5, rodina SHA nejsou šifrovací funkce, ale funkce hašovací.

V MD5 nebyly nalezeny chyby, ale našel se způsob, jak snadno generovat kolize. Tyto kolize jsou nebezpečné v elektronickém podpise, kde se MD5 nikdy nepoužívala (a koncem tohoto roku v této funkci doslouží i SHA-1). Na ověření správnosti staženého souboru i ověření hesla je MD5 stále dobře použitelná. Útoky tímto směrem nejsou známy (je to mnohem těžší).

NTLM není šifrovací (ani hašovací funkce) ale protokol.

Metoda kterou jste předvedl předpokládá, že máte k disposici otisk hesla. No ale v takovém případě již obvykle máto co potřebujete. Tedy DB s daty, případně jste již v systému. Abyste se dostal k uloženým hashům, tak v OS musíte být superuživatelem a v té chvíli je otisk hesla asi tak to poslední co vás zajímá.

Abych tu vaši metodu posunul do astronomických jednotek, stačí délku hesla prodloužit o několik málo znaků.

Crackovat heslo na dálku takto rychle nelze, protože systémy to záměrně zdržují (tak ne nedostanete ani na těch wikipedistických 100/s).

Re: Lámání hesel silou grafické karty

Díky za upozornění, opraveno.

Re: Lámání hesel silou grafické karty

v MD5 byla nalezena slaba mista, coz z kryptografickeho hlediska odpovida chybe v pouzitem algoritmu
utoky (napr. distribuce linux packages) jsou celkem jednoduche, dobre popsane a pouzitelne
NTLM je sice protokol, ale pri jeho pouziti je snadne odchytit uzivatelska hesla ze site a pote je (z duvodu spatne implementace) celkem snadno ziskat
MD5 hash hesla byva vetsino ulozen na disk/flash, tj. pokud clovek ziska pristup k dane pameti (nebo prenosu cfg. souboru po siti), tak ma moznost se pokusit o ziskani hesla offline
prodlouzeni delky hesla neni na skodu, ale v pripade spatne implementace (NTLM, SSH na debianu, ..) je 'na prd'

Re: Lámání hesel silou grafické karty

zaujimavy clanok.
len vasa doveryhodnost v mojich ociach poriadne utrzila tym linkom na hulanov clanok.

Re: Lámání hesel silou grafické karty

Dôvod? V čom je článok zlý? Len preto, že ho písal Hulán? Nebuďte smiešny. Článok je trefný, normálny človek nerieši či to písal Janko Hraško, či Radek Hulán, ide o informatívnu hodnotu. Niektoré články RH ju obsahujú až dosť. Škoda, že ľudia ich nečítajú len preto, že majú nálepku RH :)

Re: Lámání hesel silou grafické karty

Pokud má důvěryhodnost ve Vašich očích klesla, mrzí mě to. Zbytek toho, co bych Vám pověděl já, zesumarizoval trefně 5c0.

Re: Lámání hesel silou grafické karty

iba doplnim,
v sucastnosti je najrychlejsi (opravte ma ak sa mylim) md5 bruter pre karty nVidia (a procesory podporujuce SS2, co su dnes snad vsetky) BarsWF, najdete ho na http://3.14.by/en/md5. vyhodou je, ze program vytazi aj vsetky jadra procesoru. nevyhodou podpora iba md5 a to, ze momentalne nepodporuje hashlist, da sa zadat iba jeden hash.
link na autorov benchmark: http://3.14.by/en/read/md5_benchmark

zaujimave je aj formu, kde autor odpoveda snad na kazdy dotaz.

+ doplnim vlastny screenshot (Core2Duo @ 2.8 GHz + GTX 260 OC shaders @ 1470 MHz): http://img156.imageshack.us/img156/8122/barswf.jpg

Re: Lámání hesel silou grafické karty

>v sucastnosti je najrychlejsi (opravte ma ak sa mylim) md5 bruter pre karty nVidia
vyse odkazovany ighashgpu vypada lepe 1158.8M hash/s vs 808M hash/s (C2D @ 3GHz + ATI ATI 4870 vs C2D @ 2.8GHz + GTX 260 OC)
prehledne porovnani vykonu ruzneho HW viz http://www.golubev.com/about_cpu_and_gpu_2_en.htm

ve vhodnych pripadech je mohonasobne rychlejsi pouzit rainbow tables viz napr. http://project-rainbowcrack.com/

Re: Lámání hesel silou grafické karty

edit: komentar presunuty