Kas yra kriptografinė maišos funkcija?

Turinys:

Kas yra kriptografinė maišos funkcija?
Kas yra kriptografinė maišos funkcija?
Anonim

Kriptografinė maišos funkcija (CHF) yra algoritmas, kurį galima paleisti naudojant duomenis, pvz., atskirą failą arba slaptažodį, kad būtų gauta reikšmė, vadinama kontroline suma.

Pagrindinis CHF naudojimas yra duomenų autentiškumo patikrinimas. Galima daryti prielaidą, kad du failai yra identiški, tik jei iš kiekvieno failo sugeneruotos kontrolinės sumos, naudojant tą pačią kriptografinę maišos funkciją, yra identiškos.

Kai kurios dažniausiai naudojamos kriptografinės maišos funkcijos apima MD5 ir SHA-1, nors yra ir daugybė kitų. Jos dažnai vadinamos „maišos funkcijomis“, tačiau tai nėra techniškai teisinga. Maišos funkcija yra bendras terminas, apimantis CHF kartu su kitų rūšių algoritmais, pvz., cikliniais pertekliaus patikrinimais.

Kriptografinės maišos funkcijos: naudojimo atvejis

Tarkime, kad atsisiunčiate naujausią „Firefox“naršyklės versiją. Dėl kokių nors priežasčių jums reikėjo jį atsisiųsti iš kitos nei „Mozilla“svetainės. Kadangi jis nėra priglobtas svetainėje, kuria išmokote pasitikėti, norėtumėte įsitikinti, kad ką tik atsisiųstas diegimo failas yra toks pat, kokį siūlo „Mozilla“.

Naudodami kontrolinės sumos skaičiuotuvą, apskaičiuojate kontrolinę sumą naudodami tam tikrą kriptografinę maišos funkciją, pvz., SHA-2, ir palyginate ją su paskelbta Mozilla svetainėje. Jei jie yra vienodi, galite būti visiškai tikri, kad atsisiuntimas yra toks, kokį „Mozilla“norėjo turėti.

Image
Image

Ar galima pakeisti kriptografines maišos funkcijas?

Kriptografinės maišos funkcijos sukurtos taip, kad nebūtų galima pakeisti jų sukuriamų kontrolinių sumų į pradinius tekstus. Tačiau, nors jų beveik neįmanoma pakeisti, nėra 100 procentų garantijų, kad jie apsaugotų duomenis.

Įsilaužėliai gali naudoti vaivorykštės lentelę, norėdami išsiaiškinti paprastą kontrolinės sumos tekstą. Vaivorykštės lentelės yra žodynai, kuriuose pateikiami tūkstančiai, milijonai ar net milijardai kontrolinių sumų kartu su atitinkamomis paprastojo teksto reikšmėmis.

Nors tai techniškai nepakeičia kriptografinio maišos algoritmo, taip pat gali būti, nes tai padaryti taip paprasta. Tiesą sakant, kadangi jokia vaivorykštės lentelė negali išvardyti visų galimų esamų kontrolinių sumų, jos dažniausiai naudingos tik paprastoms frazėms, pvz., silpniems slaptažodžiams.

Štai supaprastinta vaivorykštės lentelės versija, rodanti, kaip ji veiktų naudojant SHA-1 kriptografinės maišos funkciją:

Vaivorykštės lentelės pavyzdys
Paprastas tekstas SHA-1 Kontrolinė suma
12345 8cb2237d0679ca88db6464eac60da96345513964
password1 e38ad214943daad1d64c102faec29de4afe9da3d
ilovemydog a25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

Įsilaužėlis turi žinoti, kuris kriptografinis maišos algoritmas buvo naudojamas sugeneruojant kontrolines sumas, kad nustatytų vertes.

Siekiant papildomos apsaugos, kai kurios svetainės, kuriose saugomi vartotojų slaptažodžiai, atlieka papildomas kriptografinio maišos algoritmo funkcijas sugeneravus reikšmę, bet prieš ją išsaugant. Šis procesas sukuria naują vertę, kurią supranta tik žiniatinklio serveris ir kuri neatitinka pradinės kontrolinės sumos.

Pavyzdžiui, įvedus slaptažodį ir sugeneravus kontrolinę sumą, jis gali būti padalintas į kelias dalis ir pertvarkytas prieš išsaugant slaptažodžių duomenų bazėje arba kai kurie simboliai gali būti pakeisti kitais. Bandant autentifikuoti kitą kartą, kai vartotojas prisijungia, serveris atšaukia šią papildomą funkciją ir vėl sugeneruojama pradinė kontrolinė suma, siekiant patikrinti, ar vartotojo slaptažodis galioja.

Atlikus šiuos veiksmus apribojamas įsilaužimo, kai pavagiamos visos kontrolinės sumos, naudingumas. Idėja yra atlikti nežinomą funkciją, taigi, jei įsilaužėlis žino kriptografinį maišos algoritmą, bet ne pasirinktinį, slaptažodžio kontrolinių sumų žinojimas yra nenaudingas.

Slaptažodžiai ir kriptografinės maišos funkcijos

Duomenų bazė išsaugo vartotojų slaptažodžius panašiai kaip vaivorykštės lentelėje. Kai įvedamas slaptažodis, sugeneruojama kontrolinė suma ir palyginama su įrašyta su jūsų vartotojo vardu. Tada jums suteikiama prieiga, jei abu yra identiški.

Atsižvelgiant į tai, kad CHF sukuria negrįžtamą kontrolinę sumą, ar saugu savo slaptažodį padaryti tokį paprastą kaip 12345, o ne 12@34 $5, nes paprasčiausiai negalima suprasti pačių kontrolinių sumų? Ne, ir štai kodėl.

Šių dviejų slaptažodžių neįmanoma iššifruoti vien tik pažiūrėjus į kontrolines sumas:

MD5 už 12345: 827ccb0eea8a706c4c34a16891f84e7b

MD5 už 12@34$5: a4d3cc004f487b18b2ccd4853053818b

Iš pirmo žvilgsnio galite pamanyti, kad tinka naudoti bet kurį iš šių slaptažodžių. Tai tiesa, jei užpuolikas bandė išsiaiškinti jūsų slaptažodį atspėdamas MD5 kontrolinę sumą, o to niekas nedaro, bet netiesa, jei įvykdoma brutali jėga arba žodyno ataka, kuri yra įprasta taktika.

Grubiosios jėgos ataka įvyksta, kai atspėjant slaptažodį imama daug atsitiktinių dūrių. Šiuo atveju būtų lengva atspėti 12345, bet gana sunku atsitiktinai išsiaiškinti kitą. Žodyno ataka yra panaši tuo, kad užpuolikas gali išbandyti kiekvieną žodį, skaičių ar frazę iš įprastų (ir nelabai paplitusių) slaptažodžių sąrašo, o 12345 yra vienas iš įprastų slaptažodžių. slaptažodžiai.

Nors kriptografinės maišos funkcijos sukuria sunkiai arba neįmanomas kontrolines sumas, vis tiek turėtumėte naudoti sudėtingą slaptažodį visoms savo internetinėms ir vietinėms vartotojų paskyroms.

Daugiau informacijos apie kriptografines maišos funkcijas

Gali atrodyti, kad kriptografinės maišos funkcijos yra susijusios su šifravimu, tačiau jos veikia skirtingai.

Šifravimas yra dvipusis procesas, kai kažkas užšifruojama, kad taptų neįskaitoma, o vėliau iššifruojama, kad būtų vėl naudojama įprastai. Galite užšifruoti išsaugotus failus, kad niekas, kas juos pasiekia, negalėtų jų naudoti, arba galite naudoti failų perdavimo šifravimą, kad užšifruotumėte tinklu judamus failus, pvz., tuos, kuriuos įkeliate arba atsisiunčiate internetu.

Kriptografinės maišos funkcijos veikia kitaip, nes kontrolinės sumos nėra skirtos atšaukti naudojant specialų maišos panaikinimo slaptažodį. Vienintelis CHF tikslas yra palyginti du duomenis, pvz., atsisiunčiant failus, išsaugant slaptažodžius ir ištraukiant duomenis iš duomenų bazės.

Kriptografinė maišos funkcija gali sukurti tą pačią kontrolinę sumą skirtingiems duomenims. Kai taip nutinka, tai vadinama susidūrimu, o tai yra didžiulė problema, turint omenyje, kad visos funkcijos esmė yra padaryti unikalias kontrolines sumas kiekvienam į ją įvestam duomenims.

Susidūrimai gali atsirasti dėl to, kad kiekvienas CHF sukuria fiksuoto ilgio reikšmę, neatsižvelgiant į įvesties duomenis. Pavyzdžiui, MD5 kriptografinė maišos funkcija generuoja 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 ir e10adc3949ba59abbe5 iš viso 310adc3949ba59abbe5.

Pirmoji kontrolinė suma yra iš 12345. Antrasis buvo sukurtas iš daugiau nei 700 raidžių ir skaičių, o trečiasis yra iš 123456. Visos trys įvestys yra skirtingo ilgio, tačiau rezultatai visada yra tik 32 simbolių ilgio, nes buvo naudojama MD5 kontrolinė suma.

Kontrolių, kurias galima sukurti, skaičius neribojamas, nes kiekvienas mažas įvesties pakeitimas turėtų sukurti visiškai skirtingą kontrolinę sumą. Kadangi yra ribojamas kontrolinių sumų, kurias gali sudaryti vienas CHF, skaičius, visada yra tikimybė, kad susidursite.

Štai kodėl buvo sukurtos kitos kriptografinės maišos funkcijos. Nors MD5 generuoja 32 simbolių reikšmę, SHA-1 generuoja 40 simbolių, o SHA-2 (512) – 128. Kuo didesnis kontrolinės sumos simbolių skaičius, tuo mažesnė tikimybė, kad įvyks susidūrimas.

Rekomenduojamas: