Kriptografska zgoščevalna funkcija (CHF) je algoritem, ki ga je mogoče zagnati na podatkih, kot je posamezna datoteka ali geslo, da ustvari vrednost, imenovano kontrolna vsota.
Glavna uporaba CHF je preverjanje pristnosti podatka. Za dve datoteki se lahko domneva, da sta enaki le, če sta kontrolni vsoti, ustvarjeni iz vsake datoteke z uporabo iste kriptografske zgoščevalne funkcije, enaki.
Nekatere pogosto uporabljene kriptografske zgoščevalne funkcije vključujejo MD5 in SHA-1, čeprav obstajajo tudi številne druge. Te se pogosto imenujejo "zgoščevalne funkcije", vendar to tehnično ni pravilno. Zgoščevalna funkcija je splošen izraz, ki zajema CHF skupaj z drugimi vrstami algoritmov, kot je ciklično preverjanje redundance.
Kriptografske zgoščevalne funkcije: primer uporabe
Recimo, da prenesete najnovejšo različico brskalnika Firefox. Iz nekega razloga ste ga morali prenesti s strani, ki ni Mozilla. Ker ne gostuje na spletnem mestu, ki ste mu zaupali, 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, objavljeno na Mozillinem spletnem mestu. Če sta enaka, ste lahko razumno prepričani, da je prenos, ki ga imate, tisti, ki ga je Mozilla predvidela.
Ali je mogoče kriptografske zgoščevalne funkcije obrniti?
Kriptografske zgoščevalne funkcije so zasnovane tako, da preprečijo možnost obračanja kontrolnih vsot, ki jih ustvarijo, nazaj na izvirna besedila. Čeprav jih je praktično 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 njihove ustrezne vrednosti navadnega besedila.
Čeprav to tehnično ne obrne algoritma kriptografskega zgoščevanja, bi lahko tudi bilo, glede na to, da je to tako preprosto narediti. V resnici, ker nobena mavrična tabela ne more našteti vseh možnih obstoječih kontrolnih vsot, so običajno koristne samo za preproste fraze, kot so šibka gesla.
Tukaj je poenostavljena različica mavrične tabele, ki prikazuje, kako bi delovala pri uporabi kriptografske zgoščevalne funkcije SHA-1:
Primer mavrične tabele | |
---|---|
Plaintext | SHA-1 Kontrolna vsota |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
geslo1 | e38ad214943daad1d64c102faec29de4afe9da3d |
ilovemydog | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
dallas1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Heker mora vedeti, kateri kriptografski zgoščevalni algoritem je bil uporabljen za ustvarjanje kontrolnih vsot, da ugotovi vrednosti.
Za dodatno zaščito nekatera spletna mesta, ki shranjujejo uporabniška gesla, izvajajo dodatne funkcije na kriptografskem zgoščevalnem algoritmu, potem ko je vrednost ustvarjena, vendar preden je shranjena. Ta postopek ustvari novo vrednost, ki jo razume le spletni strežnik in ki se ne ujema z izvirno kontrolno vsoto.
Na primer, potem ko je geslo vneseno in ustvarjena kontrolna vsota, ga je mogoče ločiti na več delov in preurediti, preden se shrani v podatkovno bazo gesel, ali pa se nekateri znaki zamenjajo z drugimi. Pri poskusu preverjanja pristnosti naslednjič, ko se uporabnik prijavi, strežnik obrne to dodatno funkcijo in prvotna kontrolna vsota se znova ustvari, da preveri, ali je uporabniško geslo veljavno.
S temi koraki omejite uporabnost vdora, pri katerem so ukradene vse kontrolne vsote. Ideja je izvesti funkcijo, ki je neznana, tako da če heker pozna algoritem kriptografskega zgoščevanja, ne pa tudi tistega po meri, potem poznavanje kontrolnih vsot gesel ni v pomoč.
Gesla in kriptografske zgoščevalne funkcije
Baza podatkov shranjuje uporabniška gesla na podoben način kot mavrična tabela. Ko vnesete svoje geslo, se ustvari kontrolna vsota in primerja s tisto, ki je zabeležena z vašim uporabniškim imenom. Nato vam je odobren dostop, če sta enaka.
Glede na to, da CHF proizvede nepovratno kontrolno vsoto, ali je za vas varno, da je vaše geslo 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 dešifrirati samo s pregledovanjem kontrolnih vsot:
MD5 za 12345: 827ccb0eea8a706c4c34a16891f84e7b
MD5 za 12@34$5: a4d3cc004f487b18b2ccd4853053818b
Na prvi pogled se vam bo morda zdelo, da je v redu uporabiti katero koli od teh gesel. To velja, če je napadalec poskušal ugotoviti vaše geslo z ugibanjem kontrolne vsote MD5, česar ne stori nihče, vendar ne drži, če je izveden napad s surovo silo ali napad s slovarjem, kar je pogosta taktika.
Napad s surovo silo se zgodi, ko se pri ugibanju gesla izvede več naključnih vbodov. V tem primeru bi bilo enostavno uganiti 12345, precej težko pa je naključno ugotoviti drugo. Napad s slovarjem je podoben v tem, da lahko napadalec poskusi vsako besedo, številko ali besedno zvezo s seznama običajnih (in manj pogostih) gesel in 12345 je eno izmed teh pogostih gesla.
Čeprav kriptografske zgoščevalne funkcije proizvajajo kontrolne vsote, ki jih je težko do nemogoče uganiti, vseeno uporabite zapleteno geslo za vse vaše spletne in lokalne uporabniške račune.
Več informacij o kriptografskih zgoščevalnih funkcijah
Morda se zdi, da so kriptografske zgoščevalne funkcije povezane s šifriranjem, vendar delujeta na različne načine.
Šifriranje je dvosmerni postopek, pri katerem je nekaj šifrirano, da postane neberljivo, nato pa se pozneje dešifrira, da se spet normalno uporablja. Datoteke, ki ste jih shranili, lahko šifrirate tako, da jih nihče, ki dostopa do njih, ne more uporabiti, ali pa uporabite šifriranje prenosa datotek za šifriranje datotek, ki se premikajo po omrežju, na primer tistih, ki jih naložite ali prenesete prek spleta.
Kriptografske zgoščevalne funkcije delujejo drugače, saj kontrolne vsote niso namenjene obračanju s posebnim geslom za dehashing. Edini namen CHF je primerjava dveh podatkov, na primer pri prenosu datotek, shranjevanju gesel in črpanju podatkov iz baze podatkov.
Možno je, da kriptografska zgoščevalna funkcija proizvede isto kontrolno vsoto za različne dele podatkov. Ko se to zgodi, se temu reče trk, kar je velika težava, če upoštevamo, da je celoten namen funkcije ustvariti edinstvene kontrolne vsote za vsak vnos podatkov.
Do kolizij lahko pride, ker vsak CHF proizvede vrednost fiksne dolžine ne glede na vhodne podatke. Na primer, kriptografska zgoščevalna funkcija MD5 ustvari 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 in e10adc3949ba59abbe56e057f20f883e za tri popolnoma različne bloke podatkov.
Prva kontrolna vsota je iz 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, ker je bila uporabljena kontrolna vsota MD5.
Število kontrolnih vsot, ki jih je mogoče ustvariti, ni omejeno, ker naj bi vsaka majhna sprememba vnosa proizvedla popolnoma drugačno kontrolno vsoto. Ker obstaja omejitev števila kontrolnih vsot, ki jih lahko ustvari en CHF, vedno obstaja možnost, da naletite na kolizijo.
Zato so bile ustvarjene druge kriptografske zgoščevalne funkcije. Medtem ko MD5 ustvari 32-mestno vrednost, SHA-1 ustvari 40 znakov, SHA-2 (512) pa 128. Večje kot ima kontrolna vsota znakov, manjša je verjetnost, da bo prišlo do kolizije.