Kaip hash'ai yra nulaužiami?

Žodyno (dictionary) ir brute force atakos

Žodyno ataka:

Trying apple          : failed
Trying blueberry      : failed
Trying justinbeiber   : failed
...
Trying letmein        : failed
Trying s3cr3t         : success!

Brute force ataka:

Trying aaaa   : failed
Trying aaab   : failed
Trying aaac   : failed
...
Trying acdb   : failed
Trying acdc   : success!

Lengviausias būdas nulaužti hash‘ą yra spėti slaptažodį, hash‘inant kiekvieną spėjimą ir tikrinti, ar spėtas hash‘as yra lygus nulaužiamam hash‘ui. Jei hash‘ai lygūs - spėjimas yra slaptažodis. Du dažniausi būdai slaptažodžio spėjimui yra žodyno atakos ir brute-force atakos.

Žodyno atakai yra naudojami failai su žodžiais, frazėmis, dažnai pasitaikančiais slaptažodžiais ir kitokiomis eilutėmis, kurios, tikėtina, gali būti naudojamos kaip slaptažodžiai. Kiekvienas žodis faile yra hash‘uotas ir tas hash‘as yra palyginamas su slaptažodžio hash‘u. Jei jie sutampa - tas žodis yra slaptažodis. Šie žodyno failai yra sudaromi paimant žodžius iš didelės apimties tekstų ir netgi iš tikrų slaptažodžių duomenų bazių. Dažnai apdorojami žodyno failai: žodžiai pakeičiami ekvivalenčiais, pakeičiant kai kurias raides panašiais skaičiais („hello“ tampa „h3110“), taip jie tampa efektyvesni.

Brute-force atakos išbando kiekvieną galimą pateikto ilgio simbolių kombinaciją. Šios atakos yra reikalaujančios labai daug kompiuterio resursų ir dažniausiai mažiausiai veiksmingos lyginant nulaužtų hash‘ų skaičių per tam tikrą laiką, tačiau jos vistiek galiausiai suranda slaptažodį. Todėl slaptažodžiai turi būti pakankamai ilgi, kad visų galimų simbolių eilučių paieška užtruktų ganėtinai ilgai ir nebūtų verta.

Nėra jokio būdo žodyno ir brute force atakoms išvengti. Jas galima padaryti mažiau efektyvias, tačiau nėra priemonių jų išvengti visiškai. Jei Jūsų slaptažodžių hash‘inimo sistema yra saugi, vienintelis būdas ją nulaužti bus paleisti žodyno ar brute-force atakas kiekvienam hash‘ui.

Sugeneruotų hash‘ų duomenų bazės (Lookup Tables)

Searching: 5f4dcc3b5aa765d61d8327deb882cf99: FOUND: password5
Searching: 6cbe615c106f422d23669b610b564800:  not in database
Searching: 630bf032efe4507f2c57b280995925a9: FOUND: letMEin12
Searching: 386f43fab5d096a7a66d67c8f213e5ec: FOUND: mcd0nalds
Searching: d5ec75d5fe70d428685510fae36492d9: FOUND: p@ssw0rd!

Sugeneruotų hash‘ų duomenų bazės yra ypatingai efektyvus metodas norint labai greitai nulaužti didelį kiekį vienodo tipo hash‘ų. Pagrindinė idėja yra saugoti iš anksto sugeneruotą slaptažodžio hash‘ą bei slaptažodį, atitinkantį šį hash‘ą, duomenų bazėje. Efektyvios duomenu bazės gali apdoroti šimtus hasho paieškų per sekundę, net jei jas sudaro daugybė milijardų hash‘ų.

Atvirkštinės informacijos paieškos lentelės (Reverse Lookup Tables)

Searching for hash(apple) in users' hash list...     : Matches [alice3, 0bob0, charles8]
Searching for hash(blueberry) in users' hash list... : Matches [usr10101, timmy, john91]
Searching for hash(letmein) in users' hash list...   : Matches [wilson10, dragonslayerX, joe1984]
Searching for hash(s3cr3t) in users' hash list...    : Matches [bruce19, knuth1337, john87]
Searching for hash(z@29hjja) in users' hash list...  : No users used this password

Ši ataka leidžia įsilaužėliui taikyti žodyno ar brute-force atakas dideliam kiekiui hash‘ų vienu metu ir net nereikia sugeneruoti informacijos paieškos lentelės.

Pirmiausia įsilaužėlis sukuria informacijos paieškos lentelę, kuri pažymi kiekvieną slaptažodžio hash‘ą, iš sukompromituoto vartotojo paskyros duomenų bazės, į vartotojų sąrašą, kurių slaptažodis buvo įsilaužėlio spėjimas. Ši ataka yra itin veiksminga, nes dažnai daug vartotojų turi tokius pačius slaptažodžius.

"Rainbow" lentelės

„Rainbow“ lentelės yra kaip informacijos paieškos lentelės, tik jų atminties sąnaudos gali būti sumažintos, panaudojant hash‘ų nulaužimo greitį, ir atvirkščiai. Kai lentelės užima mažiau vietos, jos tampa dar veiksmingesnėmis. „Rainbow“ lentelės gali nulaužti bet kokius md5 hash‘us iki 8 simbolių ilgio.

 

Apie slaptažodžių hash'ų apsaugojimą nuo nulaužimo skaitykite straipsnyje "Slaptažodžių "sūdymas" (salting)"

Serveriai.lt - hostingo paslaugų lyderis domenai