A kriptográfiai hash függvény olyan hash függvény, amely tetszőleges méretű adatokkal rögzített méretű képet társít, és amelynek alapvető tulajdonsága, hogy gyakorlatilag lehetetlen megfordítani , vagyis ha egy nullapont képe A függvény kiszámítása nagyon hatékonyan, egy bizonyos értékű képként szolgáló bemeneti nullapont inverz számítása gyakorlati szempontból lehetetlennek bizonyul. Emiatt egy ilyen funkcióról azt mondják , hogy egyirányú .
Ezeket az egyirányú funkciókat mindenütt jelenlétük miatt a modern rejtjelezés munkalovainak nevezték . Ezen funkciók bemeneti adatait gyakran üzenetnek nevezik ; a kimeneti értéket gyakran hash értéknek , ujjlenyomatnak , lábnyomnak vagy aprítottnak nevezik (angolul: Message digest or digest , hash ).
Az ideális kriptográfiai kivonatoló funkció a következő négy tulajdonsággal rendelkezik:
A kriptográfiai hash függvények a szimmetrikus kriptográfia primitívjei , de egy építőkockát alkotnak, amelyet széles körben használnak a kriptográfiai sémák (szimmetrikus és aszimmetrikus egyaránt ) tervezésében, különösen a digitális aláírásokban , az üzenet hitelesítési kódjaiban és más hitelesítési formákban .
A NIST Secure Hash Algorithm (SHA) függvények példák a kriptográfiai hash függvényekre.
A legtöbb kriptográfiai kivonatoló funkció úgy lett megtervezve, hogy bármilyen hosszúságú bitsorozatot vegyen be bemenetként (esetleg a hossz korlátozott, de a kötött nagyon magas), és kimenetként fix hosszúságú hash értéket állítson elő.
Formális definíciójuk szerint a kriptográfiai kivonatoló funkciók a standard modellben különböző biztonsági szinteket igényelhetnek, amelyeket a következő tulajdonságok határozhatnak meg:
Megjegyezhetõ, hogy egy olyan algoritmus, amely lehetõvé teszi egy preimázs megtalálását, szintén használható ütközés biztosítására; Ezzel szemben az ütközéses hatékony támadás hiánya azt jelenti, hogy a preimázsban nincs hatékony támadás. A gyakorlatban az alkalmazott kriptográfiai kivonatoló funkciókat úgy tervezték, hogy ellenálljanak az ütközéseknek, ez a tulajdonság magában foglalja a másik kettőt is. És még ha az elméleti kriptográfiában néha szükség van a hash függvények használatára a gyengébb hipotézisekben az elméleti számítási hatékonyság érdekében, a gyakorlatban inkább a legerősebb biztonsági tulajdonságokkal rendelkező szabványosított funkciókat részesítjük előnyben.
Informálisan ezek a tulajdonságok azt jelentik, hogy egy rosszindulatú ellenfél nem cserélheti le vagy módosíthatja a bemenő adatokat digitális ujjlenyomatuk megváltoztatása nélkül . Tehát, ha két csatornának ugyanaz a digitális lábnyoma, akkor nagyon bízhat abban, hogy azonosak.
A kriptográfiailag biztonságos hash függvénynek továbbra is lehetnek nemkívánatos tulajdonságai. Jelenleg a népszerű kriptográfiai hash funkciók ( MD5 , SHA-1 és a legtöbb SHA-2 ) kiszolgáltatottak az üzenet hosszát meghosszabbító támadásoknak: valóban, ha ismert a hash ( m 1 ) és az m 1 hossza , akkor a megfelelő m 2 kiválasztásával , a támadó kiszámíthatja a kivonatot ( m 1 || m 2 ) ahol || az összefűzést jelöli. Ez a szolgáltatás hash függvényeken alapuló hitelesítési algoritmusok megtörésére használható. A HMAC ( Keyed-Hash Message Authentication Code ) kijavítja ezt a gyengeséget.
A kriptográfiai kivonatoló funkciók biztonsága növelhető, ha további tulajdonságokat igényelnek ezekhez a funkciókhoz. Például,
Az algoritmusok ellenőrző összegét ( ellenőrző összegét ), mivel a CRC32 és más ciklikus redundancia-ellenőrzéseket úgy tervezték, hogy megfeleljenek a sokkal alacsonyabb követelményeknek, és általában nem megfelelőek a kriptográfiai hash függvényekként. Például CRC-t használtak az üzenetek integritásának ellenőrzésére a WEP titkosítási szabványban , de gyorsan felfedeztek egy olyan támadást, amely kihasználta az ellenőrző összeg linearitását.
A bizonyítható biztonságban a véletlenszerű orákulum modell egy idealizált biztonsági modell, ahol a kriptográfiai hash függvényeket véletlenszerű függvényeknek tekintik. Ez a módszertan lehetővé teszi olyan eredmények bizonyítását, amelyek egyébként nem lehetségesek. Például a Fiat-Shamir transzformáció elsősorban azon a tényen alapul, hogy a hash függvényt véletlenszerű függvényként használják.
Ezt a módszertant azonban néha kritizálják, mert irreálisnak tartják, és előnyben részesítjük a standard modellt és a fenti definíciókat azokban az esetekben, amikor ezek elegendőek. Így Boneh és Franklin első Identity- Based Encryption ( IBE ) biztonságosnak bizonyult a Random Oracle modellben, mielőtt Boneh és Boyen felfedezték az IBE-t a Standard Model-ben, csak ütközésálló hash funkciókkal.
A rejtjelezés gyakorlatában a nehéz általában azt jelenti, hogy bármelyik ellenfél számára elérhető, és ezt mindaddig, amíg a rendszer biztonságát fontosnak tartják . A kifejezés jelentése a védendő információk értékétől függ, mivel a rosszindulatú ügynök által a feladatra fordítható erőfeszítés általában arányos a nyereség elvárásával. Az ellenfél feldolgozási képességének értékelésénél figyelembe kell venni azt az időtartamot is, amely alatt az információkat védeni kell. Valójában, mivel a kriptográfiai ismeretek és a számítógépek feldolgozási teljesítménye gyorsan növekszik, ezt a tényt figyelembe kell venni az ellenfél kapacitásának becsléséhez 10 vagy 20 év alatt. Mivel azonban az üzenet bontásához szükséges erőfeszítés nagyon gyorsan növekszik a kivonatolási érték hosszával, a feldolgozási teljesítmény akár ezerszeres növekedését semlegesíthetjük úgy, hogy hozzáadunk tízbites hash értéket.
Bizonyos elméleti elemzések, nehéz az alábbi konkrét matematikai értelmében: nem megoldható aszimptotikus polinomiális időben . Ez a nehéz definíció fontos a kriptográfiai kivonatoló funkciók tanulmányozása során, amelyek bizonyítottan biztonságosak, de a gyakorlatban általában nem garantálják a biztonságot. Például egy exponenciális idő algoritmus néha elég gyorsan feloldható egy támadás lehetővé tételéhez. Ezzel szemben egy polinom idő algoritmus (például olyan, amely n számjegyű kulcshoz n 20 lépést igényel ) túl lassú lehet a gyakorlati megvalósításhoz.
Íme egy példa a kriptográfiai kivonat használatára:
Az előző forgatókönyv egy egyszerű ígéret példája . A gyakorlatban Alice és Bob gyakran számítógépes programok voltak, és a titok valami kevésbé könnyen elcsalható, mint egy kirakós megoldás.
A kriptográfiai kivonatolás egyik fontos alkalmazása a fájl (vagy üzenet) integritásának ellenőrzése. Például egy fájl módosítása az átvitel során (vagy bármely más tevékenység) bebizonyítható a fájl kivonatértékének összehasonlításával az átvitel előtt és után.
A gyakorlatban a fájl digitális aláírására szolgáló algoritmusok többsége nem ellenőrzi, hogy a fájl nem változott-e meg, hanem hogy a fájl kivonatolási értéke nem változott-e. A kriptográfiai kivonatoló funkciók jellemzői miatt azonban a kivonatolási érték ellenőrzése bizonyítéknak tekinthető arra, hogy maga a fájl eredeti.
Az MD5 , SHA-1 vagy SHA-2 algoritmusok által kapott hash értékeket néha a megfelelő fájlokkal együtt megjelenítik a webhelyeken vagy a számítógépes fórumokon, hogy lehetővé tegyék a fájlok integritásának ellenőrzését. Ez a gyakorlat megalapozza a bizalom láncolatát, feltéve, hogy a kivonatolási értékek megjelennek a HTTPS által védett webhelyen .
Fontos az alkalmazott hash funkció biztonsága, különösen az ellenállás egy preimage támadással szemben. A FLAME számítógépes féreg például 2012-ben kihasználta azt a tényt, hogy a Microsoft által használt megbízható tanúsítványok MD5-es ujjlenyomatot írtak alá , hogy diszkréten telepíthessék magukat a rendszer összetevőjének színlelésével.
A kriptográfiai kivonatolás másik alkalmazása a jelszóellenőrzés ( Roger Needham kitalálása ). Az összes felhasználói jelszó tiszta tárolása hatalmas biztonsági rést eredményezhet, ha a jelszófájl sérül. A veszély csökkentésének egyik módja az, hogy az egyes jelszavaknak csak a kivonatértékét tárolja. A felhasználó hitelesítéséhez a felhasználó által megadott jelszót kivonatolják, és összehasonlítják a tárolt kivonatolási értékkel. Ezzel a megközelítéssel az elveszett jelszavakat nem lehet helyreállítani, ha elfelejtik őket; új jelszavakra kell cserélni.
A jelszót gyakran összekapcsolják egy nem titkos kriptográfiai sóval, mielőtt alkalmazzák a kivonatoló funkciót. Ha a sózás véletlenszerű (minden felhasználónak más a só) - ami ma már a szokás -, akkor a sót a jelszó hash értékével tároljuk. Ekkor lehetetlen előre kiszámolt hash értékeket tartalmazó táblákat készíteni a közös jelszavakhoz. A kulcs levezetési funkciók, például a PBKDF2 , a Bcrypt vagy a Scrypt , általában egy kriptográfiai hash függvény ismételt hívásait használják, hogy növeljék a tárolt jelszó kivonatokkal szembeni erőszakos támadások végrehajtásához szükséges időt .
2013-ban egy Jelszó-hash verseny nevű jelszó-elosztó versenyt hirdettek meg egy új szabványos jelszó-hash algoritmus kiválasztására. 2015. július 20-án az Argon2- t választották a verseny győztesének. A következő hasheket is elismerték: Catena , Lyra2 (en) , Scrypt és Makwa .
A munkabizonyítás egy olyan gazdasági intézkedés, amelynek célja a szolgáltatás megtagadásának és más visszaéléseknek, például a spamnek az megakadályozása azáltal, hogy munkát igényel a szolgáltatás igénylőjétől. A munka általában komplex számítás, amelyet egy számítógép végez. Ezeknek a munkáknak a fő jellemzője az aszimmetriájuk: a munkának mérsékelten nehéznek (de lehetségesnek) kell lennie az igénylő számára, de könnyen ellenőrizhetőnek kell lennie a szolgáltató számára. Egy népszerű rendszer - amelyet a Bitcoin és a Hashcash bányászatban használnak - a hash függvény részleges inverzióját használja . A kérelmezőnek meg kell találnia egy olyan üzenetet, amelynek hash értéke nulla bit számmal kezdődik. Az átlagos munka, amelyet a küldőnek meg kell végeznie az érvényes üzenet megtalálása érdekében, exponenciális a hash érték kezdeténél szükséges nullák számához képest, míg a címzett egyetlen hash függvény végrehajtásával ellenőrizheti a javasolt válasz érvényességét. Tehát a Hashcash esetében , mivel a feladónak olyan üzenetet kell generálnia, amelynek hash értéke nullával rendelkezik az első 20 bitben, átlagosan 2 20 üzenetet kell megpróbálnia érvényes üzenet megtalálásához.
A kivonatérték a fájl megbízható azonosításának módjaként is használható; számos forráskód- kezelő rendszer , köztük a Git , a Mercurial és a Monotone , a különféle tartalomtípusok (fájlok tartalma, könyvtárfák stb.) sha1sum-ját használja egyedi azonosításukhoz. A hash értékeket a peer-to-peer fájlmegosztó hálózatokon található fájlok azonosítására használják . Például egy ed2k hivatkozásban az MD4 egyik változatának hash értéke kombinálva van a fájlmérettel, elegendő információt biztosítva a fájl forrásainak megkereséséhez, letöltéséhez és tartalmának ellenőrzéséhez.
A kivonatolási funkció egyik fő alkalmazása az , hogy lehetővé tegye az elem gyors keresését a kivonat táblában . A kriptográfiai hash függvények különleges fajta hash funkciók is szolgálnak erre a célra. Azonban a szokásos hash függvényekhez képest a kriptográfiai hash függvények számítási szempontból sokkal drágábbak. Ezért csak olyan környezetben használják őket, ahol meg kell védeni a potenciálisan rosszindulatú résztvevők általi beavatkozás (a várható adatokkal megegyező hash-értékkel rendelkező adatok létrehozása) kockázataitól.
A kriptográfiai hash függvények ál-véletlenszerű számok és bit- karakterláncok előállításánál is felhasználhatók , vagy új kulcsokat vagy jelszavakat nyerhetnek egy biztonságos kulcsból vagy jelszóból.