Kriptográfiai hash függvény

A Wikipédiából, a szabad enciklopédiából

A hash függvények (kiejtése: hes, magyarul hasítófüggvények) olyan informatikában használt eljárások, amelyekkel bármilyen hosszúságú adatot adott hosszúságra képezhetünk le. Az így kapott véges adat neve hash/hasító érték. Ezek az algoritmusok az 1980-as évek legvégén az elektronikus aláírás megjelenésével váltak szükségessé. A hasítófüggvények a számítástechnikában, elsősorban a tároló technikában, már az 1950-es évek elején megjelentek[1].

Előállítása[szerkesztés | forrásszöveg szerkesztése]

Mivel a hash képzése összefonódik az informatikai technológiákkal, így jellemzően byte vagy néhány byte méretű csomagokra vonatkozik a hash algoritmus, amelyet a kiindulási adaton ismételve kapható a kívánt eredmény. A hash algoritmusban mindig definiálva van, hogy mit kell kezdeni azokkal az esetekkel, amikor töredék csomaggal kellene dolgozni. Legtöbbször valamilyen rögzített értékkel (pl. 0x00 feltöltő byte) kiegészítés történik mindaddig, amíg egész csomag nem képződik. Alapvető elvárás, hogy a hash algoritmus csak a bemenő adat bájtjaitól és azok sorrendjétől függjön, tehát determinisztikus/előre meghatározott legyen.

A hash minősége[szerkesztés | forrásszöveg szerkesztése]

A végtelenből végesbe történő leképzés miatt egyértelmű, hogy eltérő fájltartalom is eredményezhet azonos hash kulcsot. A kellően nagyra választott hash kulcs esetén azonban ilyen ütközés rendkívül ritka.

A hash algoritmus minőségi jellemzője a kulcs szélességen túl a következő feltételek teljesülésével mérhető le:

  • a kiindulási adathoz tetszőleges byte hozzáírásával a hash kulcs véletlenszerűen megváltozik
  • a kiindulási adatból tetszőleges byte elvételével (eltekintve attől, ha a feltöltő értékkel megegyező tartalom kerül elvételre) a hash kulcs véletlenszerűen megváltozik
  • két (nem egyező) byte felcserélésével a hash kulcs véletlenszerűen megváltozik
  • tetszőleges byte átírásával a hash kulcs véletlenszerűen megváltozik
  • egy ismert tartalom nem módosítható algoritmussal meghatározható módon úgy, hogy a kulcsa a kívánt értékre változik meg

A hash kulcs véletlenszerű változását minden részének (tehát bitjeinek) is teljesíteniük kell. A hash minőségét a kulcs szélességét meghaladó adattartalomra lehet csak érdemben vizsgálni, ennél kisebb méretre még túlzottan sok feltöltő érték befolyásolhatja az eredményt.

A hash felhasználása[szerkesztés | forrásszöveg szerkesztése]

A hash kiválóan használható kriptográfiai és biztonságtechnikai területen.

Ha eltekintünk attól a csekély valószínűségtől, hogy két különböző fájl azonos hasht produkálhat, akkor alkalmazható fájlok eredetiségének vizsgálatára. Ismert állapotban elkészítve fájlok hash kulcsát szavatolható, hogy az esetleges megváltozás utólag megállapítható, tehát a fájlok integritása ellenőrizhető. Két eltérő nevű, de azonos tartalmú fájl egyezősége megállapítható.

Jellemzően a hash mellett a méret is tárolásra kerül illetve a megbízhatóság fokozható 2 különböző hash algoritmussal készített kulcs tárolásával.

A legelterjedtebb kriptográfiai hasító algoritmusok[szerkesztés | forrásszöveg szerkesztése]

SHA[szerkesztés | forrásszöveg szerkesztése]

Az SHA (Secure Hash Algorithm) az Egyesült Államok Nemzeti Szabvány és Technológia Hivatala (NIST) által kibocsátott szabványos eljárások összefoglaló elnevezése. (SHA-1, SHA-224, SHA-256, SHA-384 és SHA-512) [2] Az első változatát 1993-ban fejlesztették az NSA felügyelete alatt. Ez 160 bit hosszúságú üzenetkivonatot (message digest) képez amelyet ezt követően a DSA elektronikus aláírás algoritmusban használhatunk. Az SHA-512 hasonló elvek alapján működik mint az SHA-1 de lényegesen nagyobb adat mennyiséget képes kezelni. A bemenete 2128-1 bit hosszúságú lehet. Ezt egyébként, a feldolgozás során 1024 bites blokkokra osztja. A kapott hasító érték összességében 512 bit hosszúságú és 8 db 64 bites blokk alkotja.

Message Digest[szerkesztés | forrásszöveg szerkesztése]

A Message Digest (magyarul: üzenetkivonatoló) több különféle hasító algoritmus vagy üzenetkivonatoló közös elnevezése. A legismertebbet, az MD2-t 1989-ben dolgozta ki Ronald L. Rivest az MIT-ben. Az MD algoritmus az SHA algoritmushoz hasonlóan működik: tetszőleges hosszúságú bemenetből 128 bit hosszúságú hasító értéket generál. Az MD2-t eredetileg 8 bites gépekre optimalizálták, az újabb változatok (MD4, MD5) már 32 bites rendszerekhez készültek. Az SHA-hoz hasonlóan a bemenetet blokkokba rendezi 16 bites blokkokat használva.

RIPEMD[szerkesztés | forrásszöveg szerkesztése]

A RIPEMD (angolul: RACE Integrity Primitives Evaluation Message Digest) hasító függvényt a RIPE konzorcium (Hans Dobbertin, Anton Bosselaers és Bart Preneel) alkotta meg 1996-ban. Eredetileg 128 bites hasító értéket szolgáltatott majd az igényeknek megfelelően ezt 160 bitre növelték (RIPEMD-160).

Jegyzetek[szerkesztés | forrásszöveg szerkesztése]

Forrás[szerkesztés | forrásszöveg szerkesztése]

Kapcsolódó szócikkek[szerkesztés | forrásszöveg szerkesztése]

Külső hivatkozások[szerkesztés | forrásszöveg szerkesztése]