Titkosítási Hash funkció

Kriptográfiai Hash Funkció Definíció

A kriptográfiai hasítófüggvény egyfajta algoritmus, amelyet egy adatrésszel, például egyedi fájlként vagy jelszóként futtathatunk, egy ellenőrzőösszegnek nevezett érték létrehozásához.

A kriptográfiai hash függvény fő felhasználása egy adatdarab hitelességének ellenőrzése. Két fájl esetében biztosítható, hogy azonosak legyenek, ha az egyes fájlokból létrehozott ellenőrzőösszegek ugyanazzal a kriptográfiai hasítófüggvénnyel azonosak.

Néhány általánosan használt kriptográfiai hasítófunkció az MD5 és az SHA-1 , bár sok más is létezik.

Megjegyzés: A kriptográfiai hash függvényeket gyakran csak hash függvényeknek nevezik, de ez technikailag nem helytálló. A hash függvény egy általánosabb kifejezés, amelyet általában a kriptográfiai hash függvények és más típusú algoritmusok, például a ciklikus redundancia-ellenőrzések mellett tartalmaznak.

Kriptográfiai Hash Funkciók: Egy felhasználási eset

Tegyük fel, hogy letölti a Firefox böngésző legújabb verzióját . Bármilyen oknál fogva le kellett töltenie azt a Mozilla-tól eltérő webhelyről. Ha nem olyan webhelyen tartózkodik, amelyről megtudta, hogy megbízik, győződjön meg arról, hogy a letöltött telepítési fájl pontosan ugyanaz, amit a Mozilla kínál.

Egy ellenőrzőösszeg-számológép segítségével kiszámít egy ellenőrző összeget egy adott kriptográfiai hash függvény használatával (mondjuk SHA-2), majd hasonlítsa össze azt a Mozilla webhelyén közzétett értékkel.

Ha egyenrangúak, akkor megalapozottan biztos lehet abban, hogy a letöltés megegyezik azzal a Mozilla-val, amelyet neked akarsz.

Lásd: Mi az ellenőrzőösszeg? többet ezekről a speciális számológépekről, valamint további példákat a számlák használatáról, hogy megbizonyosodjon arról, hogy a letöltött fájlok valóban azok, amire számítottak.

A kriptográfiai Hash függvények megfordulhatnak?

A kriptográfiai hasítófunkciókat úgy tervezték meg, hogy megakadályozzák az általuk létrehozott ellenőrzőösszegek visszafordítását az eredeti szövegekbe.

Annak ellenére, hogy gyakorlatilag lehetetlen megfordítani, ez nem azt jelenti, hogy 100% -ban garantálják az adatok védelmét.

A szivárványtáblát nevezhetjük, hogy gyorsan meg lehessen találni egy ellenőrzőösszeget. A szivárványtáblák alapvetően szótárak, amelyek több ezer, millió, vagy akár több milliárd példányt sorolnak fel a megfelelő szöveges érték mellett.

Noha ez technikailag nem fordítja meg a kriptográfiai hash algoritmust, ez ugyanúgy lehet, mivel egyszerűen elvégezhető. A valóságban, mivel a szivárványtábla nem tartalmazhat minden létező ellenőrző összeget, általában csak "hasznos" az egyszerű mondatokhoz ... mint a gyenge jelszavak.

Itt van egy szivárványtábla egyszerűsített változata, amely megmutatja, hogyan működik az SHA-1 kriptográfiai hash függvény használata:

Egyszerű szöveg SHA-1 ellenőrző összeg
12345 8cb2237d0679ca88db6464eac60da96345513964
password1 e38ad214943daad1d64c102faec29de4afe9da3d
szeretem a kutyámat a25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

Ahhoz, hogy ezek az értékek kiszámolhatók legyenek az ellenőrzőösszeg használatával, megkövetelné, hogy a hacker megértse, melyik kriptográfiai hash algoritmust használták fel ezek létrehozására.

A további védelem érdekében egyes weboldalak, amelyek tárolják a felhasználói jelszavakat, további funkciókat töltenek be a kriptográfiai hash algoritmushoz az érték létrehozása után, de a tárolás előtt.

Ez olyan új értéket eredményez, amelyet csak a webszerver érti, és amely nem egyezik meg pontosan az eredeti ellenőrzőösszeggel.

Például egy jelszó beírása után és az ellenőrző összeg létrehozása után több részre oszthatók, és átrendezhetők, mielőtt a jelszó-adatbázisba kerülne, vagy bizonyos karakterek cserélhetők másokkal. Amikor a felhasználó megpróbálja hitelesíteni a következő bejelentkezéskor ezt a kiegészítő funkciót, akkor a webkiszolgáló megfordítja és az eredeti ellenőrzőösszeget újból létrehozva ellenőrizheti, hogy a felhasználó jelszava érvényes-e.

Ezzel csökkentheti a hack hasznosságát, ha az összes ellenőrzőösszeget ellopták.

Ismét itt az a gondolat, hogy olyan függvényt hajtsunk végre, amely ismeretlen, így ha a hacker ismeri a kriptográfiai hash algoritmust, de nem ezt az egyéniet, akkor a jelszó ellenőrző összegek ismerete nem segít.

Jelszavak és titkosítási funkciók

A szivárványtáblához hasonlóan az adatbázis menti a felhasználói jelszavakat. Amikor beírja a jelszavát, az ellenőrző összeget generálja, és összehasonlítja a felhasználónévvel ellátott rekordot. Ezután hozzáférést kap, ha a kettő azonos.

Tekintettel arra, hogy a kriptográfiai hash függvény nem visszafordítható ellenőrzőösszeget hoz létre, ez azt jelenti, hogy a jelszavát olyan egyszerűen, mint az 12345 helyett a 12 @ 34 $ 5 helyett egyszerűen azért, mert az ellenőrzőösszegek maguk nem érthetők meg. Ez biztosan nem , és ezért van ...

Amint láthatjuk, ez a két jelszó egyszerre nem lehet megfejteni, csak az ellenőrzőösszeg figyelembevételével:

MD5 az 12345-hez: 827ccb0eea8a706c4c34a16891f84e7b

MD5 12 @ 34 $ 5-ért: a4d3cc004f487b18b2ccd4853053818b

Így első pillantásra úgy gondolja, hogy mindegyik jelszó használatának tökéletesen megfelelő. Ez minden bizonnyal igaz, ha egy támadó megpróbálta kitalálni a jelszavát az MD5 ellenőrzőösszeg (vagyis senki sem) meggyõzõdésével, de nem igaz, ha egy brute force vagy szótár támadás történik (ez egy általános taktika).

A brute force támadás akkor jelentkezik, ha többszörös véletlenszerű szúrás történik a jelszó kitalálásakor. Ebben az esetben nagyon könnyű kitalálni "12345", de elég nehéz véletlenszerűen kitalálni a másikat. A szótáros támadás hasonló ahhoz, hogy a támadó minden szó, szám vagy kifejezést megpróbálhat a közös (és kevésbé általánosan használt) jelszavak listájáról, az "12345" pedig feltétlenül próbálkozik.

Tehát, még akkor is, ha a kriptográfiai hasítófunkciók nehezen lehetetlen-feltételezhető ellenőrző összegeket produkálnak, továbbra is összetett jelszót kell használnia az összes online és helyi felhasználói fiókhoz.

Tipp: Lásd a gyengébb és erőteljes jelszavak példáit, ha nem vagy biztos benne, hogy az illető erős jelszónak minősül-e.

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ő nagyon különböző módon működik.

A titkosítás kétirányú folyamat, ahol valami titkosítva olvashatatlanná válik, de később visszafejtésre kerül, hogy újra normálisan használják. Lehet, hogy titkosítja a tárolt fájlokat, hogy azok, akik hozzáférnek hozzájuk, nem tudják használni őket, vagy használhatják a fájl átviteli titkosítást a hálózaton átmásoló fájlok titkosításához, például az Ön által feltöltött vagy online letöltéshez.

Mint fentebb leírtuk, a kriptográfiai hash függvények másképpen működnek, mivel az ellenőrzőösszegeket nem egy speciális de-hashing jelszóval kell megfordítani, mint például a titkosított fájlok titkosítási jelszóval történő olvasását. Az egyetlen célra szolgáló kriptográfiai hash függvények két adat összevetése, például fájlok letöltése, jelszavak tárolása, adatok adatbázisból történő húzása stb.

Lehetséges, hogy egy kriptográfiai hash függvény ugyanazon ellenőrző összeget hozza létre a különböző adatelemek számára. Ha ez megtörténik, akkor ütközésnek hívják. Nyilvánvaló, hogy ez egy hatalmas probléma, figyelembe véve, hogy a kriptográfiai hash függvény teljes pontján teljesen egyedi ellenőrzőösszegeket kell létrehozni minden bevitt adat számára.

Az ütközések oka az, hogy minden kriptográfiai hash függvény határozott hosszúságú értéket ad a bemeneti adatoktól függetlenül. Például az MD5 kriptográfiai hash függvény létrehozza a 827ccb0eea8a706c4c34a16891f84e7b, az 1f633b2909b9c1addf32302c7a497983 és az e10adc3949ba59abbe56e057f20f883e három teljesen különböző adatblokkot.

Az első ellenőrző összeg 12345 , a második több mint 700 betűből és számból áll, a harmadik az 123456-ból . Mindhárom bemenet különböző hosszúságú, de az eredmények mindig csak 32 karakter hosszúak, mivel az MD5-t használták.

Amint láthatjuk, gyakorlatilag nincs korlátozás az ellenőrzőösszegek számához, amelyek létrehozhatók, mivel a bemenet minden apró változása teljesen más ellenőrzőösszeget fog előállítani. Azonban, mivel van egy korlátozás az ellenőrzőösszegek számához egy kriptográfiai hash függvényhez vezethet, mindig van lehetősége arra, hogy összeütközésbe kerül.

Ezért hoztak létre más kriptográfiai hasítófunkciókat. Az MD5 32 karakterből álló értéket generál, az SHA-1 40 karaktert generál és az SHA-2 (512) 128-at generál. Minél nagyobb az ellenőrző összeget, annál kevésbé valószínű, hogy ütközés következik be, egyedi értékeket.