Kaj je kriptografska hash funkcija?
Kriptografska hash funkcija je algoritem, ki se lahko izvaja na podatkih, kot je posameznik mapa ali geslo za ustvarjanje vrednosti, imenovane kontrolna vsota.
Glavna uporaba kriptografske hash funkcije je preverjanje pristnosti podatka. Za dve datoteki se lahko domneva, da sta enaki le, če so kontrolne vsote, ustvarjene iz vsake datoteke, z uporabo iste kriptografske zgoščene funkcije, enake.
Nekatere pogosto uporabljene kriptografske zgoščene funkcije vključujejo MD5 in SHA-1, čeprav obstajajo tudi številni drugi.
Kriptografske hash funkcije se pogosto imenujejo "razpršene funkcije", vendar to tehnično ni pravilno. Hash funkcija je splošen izraz, ki zajema kriptografske zgoščene funkcije skupaj z drugimi vrstami algoritmov, kot so ciklična preverjanja redundance.
Kriptografske zgoščene funkcije: primer uporabe
Recimo, da prenesete datoteko najnovejša različica brskalnika Firefox. Iz neznanega razloga ste ga morali prenesti s spletnega mesta, ki ni Mozilla. Ker ne gostuje na spletnem mestu, ki ste se mu naučili zaupati, bi se radi prepričali, da je namestitvena datoteka, ki ste jo pravkar prenesli, popolnoma enaka tisti, ki jo ponuja Mozilla.
Z uporabo kalkulatorja kontrolne vsote izračunate kontrolno vsoto z uporabo določene kriptografske zgoščene funkcije, kot je SHA-2, in jo nato primerjate s tisto, ki je objavljena na spletnem mestu Mozilla. Če so enaki, ste lahko dokaj prepričani, da je prenos, ki ga imate, tisti, ki vam ga je namenila Mozilla.
Ali je mogoče kriptografske hash funkcije obrniti?
Kriptografske zgoščevalne funkcije so zasnovane tako, da preprečijo možnost obrnjenja kontrolnih vsot, ki jih ustvarijo, nazaj v izvirna besedila. Kljub temu, da jih je skoraj nemogoče razveljaviti, ni 100-odstotno zagotovljeno, da bodo zaščitili podatke.
Hekerji lahko uporabijo mavrično tabelo, da ugotovijo golo besedilo kontrolne vsote. Mavrične tabele so slovarji, ki navajajo na tisoče, milijone ali celo milijarde kontrolnih vsot poleg ustrezne vrednosti golega besedila.
Čeprav to tehnično ne obrne algoritma kriptografskega zgoščevanja, bi lahko bilo tudi, glede na to, da je tako preprosto. V resnici, ker nobena mavrična tabela ne more našteti vseh možnih kontrolnih vsot, ki obstajajo, so običajno v pomoč le za preproste fraze, kot so šibka gesla.
Tukaj je poenostavljena različica mavrične tabele, ki prikazuje, kako bi deloval pri uporabi kriptografske hash funkcije SHA-1:
Primer mavrične tabele | |
---|---|
Golo besedilo | Kontrolna vsota SHA-1 |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
geslo1 | e38ad214943daad1d64c102faec29de4afe9da3d |
ilovemydog | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
dallas 1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Heker mora vedeti, kateri kriptografski zgoščeni algoritem je bil uporabljen za generiranje kontrolnih vsot, da bi ugotovil vrednosti.
Za dodatno zaščito nekatera spletna mesta, ki shranjujejo uporabniška gesla izvede dodatne funkcije kriptografskega zgoščevalnega algoritma, potem ko je vrednost ustvarjena, vendar preden je shranjena. Ta postopek ustvari novo vrednost, ki jo razume samo spletni strežnik in se ne ujema z izvirno kontrolno vsoto.
Na primer, potem ko je geslo vneseno in ustvarjena kontrolna vsota, se lahko loči na več delov in preurejeno, preden je shranjeno v zbirki gesel, ali pa je mogoče zamenjati določene znake drugi. Ko poskuša avtentikacijo naslednjič, ko se uporabnik prijavi, spletni strežnik to obrne dodatno funkcijo in ponovno se ustvari izvirna kontrolna vsota, da se preveri, ali je uporabniško geslo velja.
Izvajanje teh korakov omejuje uporabnost vdora, kjer so ukradene vse kontrolne vsote. Ideja je, da se izvede funkcija, ki je neznana, tako da če heker pozna kriptografski zgoščeni algoritem, ne pa tistega po meri, potem poznavanje kontrolnih vsot gesla ni v pomoč.
Gesla in kriptografske zgoščene funkcije
Baza podatkov shranjuje uporabniška gesla na podoben način kot mavrična tabela. Ko je vaše geslo vneseno, se kontrolna vsota se ustvari in primerja s tistim, ki je zabeležen z vašim uporabniškim imenom. Nato vam je dovoljen dostop, če sta oba enaka.
Glede na to, da kriptografska zgoščena funkcija ustvari nepovratno kontrolno vsoto, ali je varno, da svoje geslo naredite tako preprosto kot 12345, namesto 12@34$5, preprosto zato, ker samih kontrolnih vsot ni mogoče razumeti? Ne, in tukaj je razlog.
Ti dve gesli je nemogoče razvozlati samo s pogledom na kontrolne vsote:
MD5 za 12345:827ccb0eea8a706c4c34a16891f84e7b
MD5 za 12@34$5:a4d3cc004f487b18b2ccd4853053818b
Na prvi pogled se vam morda zdi, da je v redu uporabiti katero koli od teh gesel. To velja, če je napadalec poskušal ugotoviti vaše geslo tako, da ugane kontrolno vsoto MD5, kar ne stori nihče, ni pa res, če je izveden napad z grobo silo ali slovarjem, kar je običajna taktika.
Napad z grobo silo se zgodi, ko se pri ugibanju gesla izvede več naključnih vbodov. V tem primeru bi bilo enostavno uganiti 12345, vendar je precej težko naključno ugotoviti drugega. Napad s slovarjem je podoben v tem, da lahko napadalec poskusi vsako besedo, številko ali besedno zvezo s seznama pogostih (in ne tako pogostih) gesel in 12345 je eno tistih pogostih gesel.
Čeprav kriptografske zgoščevalne funkcije proizvajajo kontrolne vsote, ki jih je težko do nemogoče uganiti, bi morali še vedno uporabite zapleteno geslo za vse vaše spletne in lokalne uporabniške račune.
Več informacij o kriptografskih hash funkcijah
Morda se zdi, da so kriptografske hash funkcije povezane s šifriranjem, vendar obe delujeta na različne načine.
Šifriranje je dvosmerni proces, pri katerem se nekaj šifrira, da postane neberljivo, nato pa se kasneje dešifrira, da se ponovno normalno uporablja. Lahko bi šifrirajte datoteke, ki ste jih shranili tako da jih nihče, ki dostopa do njih, ne more uporabljati, lahko pa jih uporabite vi šifriranje prenosa datotek za šifriranje datotek, ki se premikajo po omrežju, kot so tiste, ki jih naložite ali prenesete v spletu.
Funkcije kriptografskega zgoščevanja delujejo drugače, saj kontrolnih vsot ni mišljeno, da se obrnejo s posebnim geslom za dehashiranje. Edini namen kriptografskih zgoščenih funkcij je primerjava dveh kosov podatkov, na primer pri nalaganju datotek, shranjevanju gesel in črpanju podatkov iz baze podatkov.
Možno je, da kriptografska hash funkcija proizvede isto kontrolno vsoto za različne dele podatkov. Ko se to zgodi, se imenuje kolizija, kar je velika težava, če upoštevamo, da je celotna smisel kriptografske hash funkcije izdelati edinstvene kontrolne vsote za vsak vnos podatkov vanjo.
Do trkov lahko pride, ker vsaka kriptografska zgoščena funkcija proizvede vrednost fiksne dolžine ne glede na vhodne podatke. Na primer, kriptografska hash funkcija MD5 ustvari 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 in e10adc3949ba59abbe56e057f20f883e za tri popolnoma različne bloki podatkov.
Prva kontrolna vsota je od 12345. Drugi je bil ustvarjen iz več kot 700 črk in številk, tretji pa iz 123456. Vsi trije vnosi so različnih dolžin, vendar so rezultati vedno dolgi le 32 znakov MD5 kontrolna vsota je bil uporabljen.
Število kontrolnih vsot, ki bi jih bilo mogoče ustvariti, ni omejeno, ker naj bi vsaka drobna sprememba vnosa ustvarila popolnoma drugačno kontrolno vsoto. Ker obstaja omejitev števila kontrolnih vsot, ki jih lahko ustvari ena kriptografska zgoščena funkcija, vedno obstaja možnost, da boste naleteli na trk.
Zato so bile ustvarjene druge kriptografske zgoščene funkcije. Medtem ko MD5 ustvari 32-znakovno vrednost, SHA-1 ustvari 40 znakov, SHA-2 (512) pa 128. Večje kot je število znakov, ki jih ima kontrolna vsota, manjša je verjetnost, da bo prišlo do kolizije.