A kriptográfiai hash függvény (CHF) egy olyan algoritmus, amely olyan adatokon futtatható, mint például egy egyedi fájl vagy egy jelszó, és így ellenőrző összegnek nevezett értéket állít elő.
A CHF fő célja egy adat hitelességének ellenőrzése. Két fájl csak akkor feltételezhető azonosnak, ha az egyes fájlokból ugyanazt a titkosítási hash függvényt használva generált ellenőrző összegek azonosak.
Egyes gyakran használt kriptográfiai hash függvények közé tartozik az MD5 és az SHA-1, bár sok más is létezik. Ezeket gyakran "hash függvényeknek" nevezik, de ez technikailag nem helyes. A hash függvény egy általános kifejezés, amely magában foglalja a CHF-eket, valamint más típusú algoritmusokat, például a ciklikus redundancia-ellenőrzéseket.
Kriptográfiai hash-függvények: használati eset
Tegyük fel, hogy letölti a Firefox böngésző legújabb verzióját. Valamilyen oknál fogva nem a Mozilla webhelyéről kellett letöltenie. Mivel nem olyan webhelyen tárolják, amelyben megtanult megbízni, szeretne megbizonyosodni arról, hogy a most letöltött telepítőfájl pontosan megegyezik a Mozilla által kínált fájllal.
Egy ellenőrzőösszeg-kalkulátor segítségével egy adott kriptográfiai hash-függvény, például az SHA-2 segítségével számítja ki az ellenőrző összeget, majd ezt hasonlítja össze a Mozilla webhelyén közzétetttel. Ha egyenlőek, akkor teljesen biztos lehet benne, hogy a letöltött letöltés az, amelyet a Mozilla szánt Önnek.
Megfordíthatók a kriptográfiai hash-függvények?
A kriptográfiai hash függvények célja, hogy megakadályozzák az általuk létrehozott ellenőrző összegek eredeti szövegekre való visszafordítását. Azonban annak ellenére, hogy gyakorlatilag lehetetlen visszafordítani őket, nem garantálják 100 százalékosan az adatok védelmét.
A hackerek szivárványtáblázatot használhatnak az ellenőrzőösszeg egyszerű szövegének kitalálására. A Rainbow táblázatok olyan szótárak, amelyek ezer, millió vagy akár milliárd ellenőrző összeget sorolnak fel a megfelelő egyszerű szöveges érték mellett.
Bár ez technikailag nem fordítja meg a kriptográfiai kivonatoló algoritmust, de akár az is lehet, tekintve, hogy ilyen egyszerűen kivitelezhető. A valóságban, mivel egyetlen szivárványtábla sem tud felsorolni minden lehetséges ellenőrzőösszeget, általában csak egyszerű kifejezéseknél, például gyenge jelszavaknál hasznosak.
Íme egy szivárványtábla egyszerűsített változata, amely bemutatja, hogyan működik az SHA-1 kriptográfiai hash függvény használata:
Példa a szivárványtáblázathoz | |
---|---|
Egyszerű szöveg | SHA-1 Ellenőrzőösszeg |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
jelszó1 | e38ad214943daad1d64c102faec29de4afe9da3d |
ilovemydog | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
dallas1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
A hackernek tudnia kell, hogy melyik kriptográfiai hash algoritmust használta az ellenőrző összegek generálásához, hogy kitalálja az értékeket.
A fokozott védelem érdekében egyes felhasználói jelszavakat tároló webhelyek további funkciókat hajtanak végre a kriptográfiai hash algoritmuson az érték generálása után, de még a tárolás előtt. Ez a folyamat egy új értéket hoz létre, amelyet csak a webszerver ért meg, és amely nem egyezik az eredeti ellenőrző összeggel.
Például egy jelszó beírása és az ellenőrző összeg generálása után a jelszó több részre osztható, és átrendezhető, mielőtt a jelszóadatbázisban tárolná, vagy bizonyos karaktereket felcserélhet másokkal. Amikor a felhasználó legközelebbi bejelentkezésekor megkísérli a hitelesítést, a szerver megfordítja ezt a kiegészítő funkciót, és az eredeti ellenőrző összeget újra előállítja annak ellenőrzésére, hogy a felhasználó jelszava érvényes-e.
Ezen lépések megtétele korlátozza a feltörések hasznosságát, ahol az összes ellenőrző összeget ellopják. Az ötlet az, hogy egy ismeretlen funkciót hajtsanak végre, tehát ha a hacker ismeri a kriptográfiai hash algoritmust, de az egyénit nem, akkor a jelszó ellenőrző összegeinek ismerete nem hasznos.
Jelszavak és kriptográfiai hash-függvények
Egy adatbázis a szivárványtáblákhoz hasonló módon menti a felhasználói jelszavakat. A jelszó megadásakor a rendszer létrehozza az ellenőrző összeget, és összehasonlítja az Ön felhasználónevével rögzítettel. Ezután hozzáférést kap, ha a kettő azonos.
Tekintettel arra, hogy a CHF nem visszafordítható ellenőrzőösszeget állít elő, biztonságos-e, ha olyan egyszerűvé teszi jelszavát, mint 12345, a 12@34 helyett $5, egyszerűen azért, mert magukat az ellenőrző összegeket nem lehet megérteni? Nem, és itt van az ok.
Ezt a két jelszót nem lehet megfejteni, ha csak az ellenőrző összegekre nézünk:
MD5, 12345: 827ccb0eea8a706c4c34a16891f84e7b
MD5 12@34$5-ért: a4d3cc004f487b18b2ccd4853053818b
Első pillantásra azt gondolhatja, hogy megfelelő a jelszavak bármelyikének használata. Ez igaz, ha egy támadó megpróbálta kitalálni a jelszavát az MD5 ellenőrző összeg kitalálásával, amit senki sem tesz, de nem igaz, ha brute force vagy szótári támadást hajtanak végre, ami egy általános taktika.
A brute force támadás akkor következik be, amikor több véletlenszerű szúrás történik a jelszó kitalálásakor. Ebben az esetben könnyű lenne kitalálni a 12345, de elég nehéz véletlenszerűen kitalálni a másikat. A szótári támadás abban hasonlít, hogy a támadó a gyakori (és nem túl gyakori) jelszavak listájából minden szót, számot vagy kifejezést kipróbálhat, és a 12345 a gyakori jelszavak közé tartozik. jelszavak.
Bár a kriptográfiai hash függvények nehezen kitalálható ellenőrző összegeket állítanak elő, mégis összetett jelszót kell használnia minden online és helyi felhasználói fiókhoz.
További információ a kriptográfiai hash-függvényekről
Úgy tűnhet, hogy a kriptográfiai hash függvények a titkosításhoz kapcsolódnak, de a kettő eltérő módon működik.
A titkosítás egy kétirányú folyamat, amelynek során valamit titkosítanak, hogy olvashatatlanná váljanak, majd később visszafejtik, hogy újra normálisan használhassák. Titkosíthatja a tárolt fájlokat, hogy bárki, aki hozzáfér, ne tudja használni őket, vagy használhatja a fájlátviteli titkosítást a hálózaton keresztül mozgó fájlok titkosításához, például az Ön által online feltöltött vagy letöltött fájlokhoz.
A kriptográfiai hash függvények másképp működnek, mivel az ellenőrzőösszegeket nem egy speciális kivonatolási jelszóval kell megfordítani. A CHF-ek egyetlen célja két adat összehasonlítása, például fájlok letöltése, jelszavak tárolása és adatok adatbázisból való lehívása során.
Lehetőség van arra, hogy egy kriptográfiai hash függvény ugyanazt az ellenőrző összeget állítsa elő a különböző adatokhoz. Amikor ez megtörténik, ütközésnek nevezik, ami óriási probléma, tekintve, hogy a függvény lényege, hogy minden egyes adatbevitelhez egyedi ellenőrző összegeket készítsen.
Ütközések azért fordulhatnak elő, mert minden CHF egy rögzített hosszúságú értéket állít elő, függetlenül a bemeneti adatoktól. Például az MD5 kriptográfiai kivonatoló függvény 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 és e10adc3949ba09abbe7f3 blokk összesenf859abbe3f859abbe2e10adc3949ba09abbe8f5.
Az első ellenőrző összeg a következőtől származik: 12345. A második több mint 700 betűből és számból jött létre, a harmadik pedig a 123456. Mindhárom bemenet különböző hosszúságú, de az eredmények mindig csak 32 karakter hosszúak, mivel az MD5 ellenőrző összeget használták.
Nincs korlátozva a létrehozható ellenőrző összegek száma, mert a bemenet minden apró változtatása teljesen más ellenőrző összeget eredményez. Mivel az egy CHF előállítható ellenőrző összegek száma korlátozott, mindig fennáll az ütközés lehetősége.
Ezért jöttek létre más kriptográfiai hash függvények. Míg az MD5 32 karakterből álló értéket generál, az SHA-1 40 karaktert, az SHA-2 (512) pedig 128 karaktert. Minél több az ellenőrző összeg karaktereinek száma, annál kisebb az ütközés valószínűsége.