Versija 1 nuo 2015-05-12 14:43:00

Išvalyti žinutę
Locked History Actions

Rainbow Tables

VAIVORYKŠTĖS LENTELĖ (RAINBOW TABLE)

Vaivorykštes lentelė, tai speciali paieškos lentelės versija (angl. lookup table) naudojama kriptografinių maišos funkcijų pakeitimui, kuri naudoja protingą kompromisą tarp paieškos laiko ir atminties (angl. time-memory tradeoff) lentelės mechanizmą. Vaivorykštes lentelės naudojamos slaptažodžių gavimui naudojant maišos funkcijas. Taip pat naudojamos pulti simetriškus skaičius kurių pagrindas yra atviras tekstas. Kompiuterių sistemos kurios naudoja slaptažodžius autendefikavimui turi kažkokiu tai būdu atpažinti įvesto slaptažodžio teisingumą. Pačiu paprasčiausiu sprendimo būdu iškilusios problemos yra visų prieinamų slaptažodžių sąrašo saugojimas kiekvienam vartotojui. Šio metodo minusas, kad įsilaužimo metu nesankcionuotas vartotojas žinos visus slaptažodžius. Daugiau paplitusiu variantu yra reikšmių saugojimas naudojant kriptografinę hash funkciją. Dauguma hashų greitai apskaičiuojami. Todėl įsilaužėlis gavęs priėjimą prie hashų gali greitai patikrinti slaptažodžius ar jie dar yra galiojantis, tinkami. Tam, kad taip neatsitiktų reikia naudoti ilgesnius slaptažodžius, tuo pačiu didinant slaptažodžių sąrašą. Paprastiems slaptažodžiams, kuriems nenaudota salt funkcija įsilaužėlis gali iš anksto apskaičiuoti hashų reikšmes visiems trumpiems slaptažodžiams ir išsaugoti juos lentelėje. Tokiu būdu galima surasti sutapimus ankščiau gautoje lentelėje. Kuo ilgesnis slaptažodis tuo ilgesnė lentelė, ir tam reikia daugiau atminties juos saugojimui. Alternatyviu variantu yra pirminių grandžių hasho saugojimas. Tai pareikalaus daugiau skaičiavimų slaptažodžio paieškai ir sumažins reikalingos atminties panaudojimo saugojimui. Vaivorykštės lentelės yra patobulinta hash grandžių idėja. Jos efektyviai sprendžia kolizijos problemą įvedant redukcijos funkcijas R1, R2, ...,RK. Redukcijos funkcijos yra naudojamos iš eilės, kurios susimaišo su hašavimo funkcija: H, R1, H, R2, ..., H, RK. Tokiu būdu dvi grandinės gali susilieti sutampant vienai ir tai pačiai operacijai. Todėl užtenka tikrinti ar yra kolizijos paskutines grandinių reikšmes, o tai nereikalauja papildomos atminties. Paveikslėlyje pateiktas pavyzdys hash re3xes. (Pav. 1) 1. Pirmiausia apskaičiuojamas grandies ilgis 1 nuo pirminio hasho: R3("re3xes")="rambo". Duotas slaptažodis nėra galutinis ne vienoje lentelės grandinėje. 2. Apskaičiuojama grandinės ilgis 2: R3(H(R2("re3xes")))="linux23". 3. Duotas slaptažodis surastas lentelėje. Imama grandinės pradžia (slaptažodis "passwd"). 4. Atstatoma lentelės grandinę iki tol kol bus gautas pirminis hashas „Re3xes“. 5. Ieškomas hashas surastas grandinėje. Ataka sėkminga. Slaptažodis yra „culture“.

LAIKAS IR ATMINTIS

Vaivorykštes lentelė sukuriama galimų slaptažodžių grandžių sudarymo principu. Tokių lentelių sudarymas ilgiau užtrunka nei paprastų paieškos lentelių bet sunaudojama daug mažiau atminties. Nors reikalauja daugiau laiko (lyginant su paprastais metodais kaip žodyno ataka) pirminio slaptažodžio atkūrimui. Paprastos lentelės sukūrimui šešiaženkliui slaptažodžiui su baitiniais simboliais prireiks 2566 = 281 474 976 710 656 blokų atminties, taip kaip vaivorykštės tik- 2566•⅔ = 4 294 967 296 blokų.

APSAUGA NUO VAIVORYKŠTĖS LENTELIŲ

Labiausiai paplitęs būdas apsisaugoti nuo vaivorykštės lentelių yra salt funkcija. Tai yra neapkeičiama hash funkcija. Tam, kad atkurti slaptažodį reikia žinoti visas galimas lentelių variacijas salt funkcijos. Salt funkcija turi būti pakankamai ilga, susidedanti iš 6-8 simbolių, nes kitaip galima išgauti lentelės kiekvienai salt reikšmei. Bendrai salt prailgina slaptažodį ir jo sudėtingumą. Tai labai padeda, kai lentelės yra apskaičiuotos atitinkamam ilgiui ir tam tikriems simboliams. Sekantis budas apsisaugoti nuo įsilaužimų yra raktų ištempimas ( key stretching). Pvz:. raktas = hash(slaptažodis + salt) for 1 to 65536 do raktas = hash (raktas + slaptažodis + salt) Toks būdas, kuris pavaizduotas pavyzdyje, leidžia sumažinti išankstinių apskaičiavimų galimybes. Taip kaip tarpinių reikšmių naudojimas padidina laiką slaptažodžio gavimui ir sumažina laiką per kuri galima išgauti slaptažodį.