Ugrás a tartalomhoz

HMAC

A Wikiszótárból, a nyitott szótárból


Főnév

HMAC (tsz. HMACs)

  1. (informatika) Hash-based Message Authentication Code

A HMAC, vagyis Hash-based Message Authentication Code egy kriptográfiai mechanizmus, amelyet az adatok hitelesítésére és integritásának ellenőrzésére használnak. Célja, hogy egy adott üzenetről vagy adatcsomagról megbízható módon eldönthető legyen, hogy valóban a küldőtől származik-e, és hogy az adatot nem módosították menet közben.

Ez különösen fontos olyan környezetekben, ahol az adatkommunikáció nem biztonságos csatornán történik, például az interneten. Az HMAC a hashfüggvények (mint például a SHA-256 vagy SHA-1) és egy titkos kulcs kombinációját használja annak érdekében, hogy egy egyedi „lenyomatot” (kódot) generáljon az adott üzenetről.



Alapfogalmak

Ahhoz, hogy megértsük, mi az HMAC és hogyan működik, előbb tisztázzunk néhány alapfogalmat:

1. Hashfüggvény

A hashfüggvény olyan matematikai algoritmus, amely tetszőleges hosszúságú bemenetet vesz, és abból egy fix hosszúságú kimenetet állít elő. A legismertebb hashfüggvények közé tartozik:

  • MD5 (már elavult és nem biztonságos),
  • SHA-1 (szintén gyengülő biztonságú),
  • SHA-256, SHA-3 (erősebb, mai napig használatos algoritmusok).

A hashfüggvények alapvető tulajdonságai:

  • Determinisztikusak (ugyanarra a bemenetre mindig ugyanaz a kimenet),
  • Gyorsan kiszámíthatók,
  • Nehéz visszafejteni (preimage resistance),
  • Nehéz két bemenetet találni, amik ugyanazt a kimenetet adják (collision resistance).

2. Üzenethitelesítési kód (MAC)

A Message Authentication Code (MAC) célja, hogy egy adatcsomaghoz hitelesítési információt csatoljon, mely biztosítja, hogy:

  • az üzenetet nem változtatták meg,
  • az üzenet a megfelelő (titkos kulcsot ismerő) féltől származik.

A MAC-ek egyik népszerű típusa az HMAC.



Hogyan működik az HMAC?

Az HMAC működéséhez szükség van:

  • egy titkos kulcsra (K),
  • egy hashfüggvényre (pl. SHA-256),
  • és az üzenetre (M), amit hitelesíteni szeretnénk.

Az HMAC működésének alapötlete: először a kulcsot és az üzenetet egy speciális módon kombináljuk, majd ezeket kétszer is „áthasholjuk”.

A hivatalos HMAC képlet:

HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M))

Ahol:

  • H a kiválasztott hashfüggvény (pl. SHA-256),
  • K' a kulcs kiegészítve vagy levágva a hashfüggvény blokk méretére (pl. 64 bájt SHA-256 esetén),
  • ipad az „inner padding” (0x36 bájtértékekből álló tömb),
  • opad az „outer padding” (0x5c bájtértékekből álló tömb),
  • XOR művelet (bitek összehasonlítása),
  • || a bitek konkatenálása (egymás után fűzése).

Lépésről lépésre

  1. Kulcs előkészítése:
    • Ha a kulcs hosszabb, mint a hashfüggvény blokk mérete, először hasheljük.
    • Ha rövidebb, kiegészítjük nullákkal, hogy pontosan a blokk méretű legyen.
  2. Inner hash:
    • A kulcsot XOR-oljuk az ipad-dal, majd hozzáfűzzük az üzenetet, és az egészet hasheljük.
  3. Outer hash:
    • A kulcsot XOR-oljuk az opad-dal, majd hozzáfűzzük az előző hash eredményét, és újra hasheljük.

Az eredmény az HMAC kód, amelyet az üzenethez csatolhatunk. A címzett ugyanezt a folyamatot végrehajtva ellenőrizheti, hogy az üzenet valódi-e és érintetlen.



Miért biztonságos az HMAC?

Az HMAC védelmet nyújt két fő támadástípus ellen:

  1. Integritás-sértés:

Ha valaki módosítja az üzenetet, az új hash érték nem fog egyezni a várt HMAC-kal.

  1. Hamisítás:

Mivel az HMAC-hez szükséges a titkos kulcs ismerete, csak az tudja érvényes HMAC-et készíteni, aki ismeri a kulcsot.

A biztonság alapja tehát:

  • a hashfüggvény kriptográfiai ereje (nincs hatékony módja az ütközések vagy visszafejtés megtalálásának),
  • a titkos kulcs titkossága.



Felhasználási területek

Az HMAC-et széles körben használják az informatikai rendszerekben, többek között:

1. Hitelesített API-kommunikáció

Sok webszolgáltatás (pl. AWS, Azure, Google APIs) használ HMAC-et arra, hogy biztosítsa, a kérés egy jogosult ügyféltől származik. A kliens kiszámítja az üzenet HMAC-ját, és elküldi az üzenettel együtt. A szerver a saját kulcsával kiszámítja ugyanezt, és ha egyezik, elfogadja a kérést.

2. SSL/TLS protokoll

A biztonságos kommunikációt biztosító protokollok (mint az SSL és TLS) is használják az HMAC-et a kapcsolat során továbbított adatok hitelesítésére.

3. VPN-ek és IPsec

A virtuális magánhálózatok (VPN) és IPsec protokollokban is gyakori az HMAC a csomagok integritásának biztosítására.

4. Digitális aláírások alternatívája

Olyan környezetekben, ahol nincs szükség nyilvános kulcsú infrastruktúrára, az HMAC egy könnyebb, de hatékony alternatíva lehet digitális aláírásra.



Gyakori hashfüggvények HMAC-ben

  • HMAC-MD5 (ma már nem ajánlott)
  • HMAC-SHA1 (egyre kevésbé biztonságos, de még használatos)
  • HMAC-SHA256 (széles körben elfogadott, biztonságos)
  • HMAC-SHA512 (nagyobb biztonság, nagyobb teljesítményigény)



Előnyök és hátrányok

Előnyök

  • Egyszerű implementálás – meglévő hashfüggvényekre épül,
  • Hatékony – gyorsan számolható,
  • Biztonságos – ha jó kulcs és erős hashfüggvény van mögötte,
  • Széles körben elfogadott és szabványosított (pl. RFC 2104 szerint).

Hátrányok

  • Szimmetrikus kulcsot igényel – a kulcsot minden résztvevőnek titokban kell tartani,
  • Nem biztosít aláírási lehetőséget vagy visszakereshetőséget – nem használható nyilvános kulcsú aláírásként.



Összefoglalás

Az HMAC egy egyszerű, hatékony és biztonságos módja az üzenetek hitelesítésének és integritásellenőrzésének. A titkos kulcs és a hashfüggvény kombinációja miatt az adatok módosítása vagy hamisítása nagyon nehéz az illetéktelen támadók számára. Ezért az HMAC széles körben elterjedt a modern informatikai rendszerekben, különösen olyan környezetekben, ahol a biztonság kiemelten fontos.

  • HMAC - Szótár.net (en-hu)
  • HMAC - Sztaki (en-hu)
  • HMAC - Merriam–Webster
  • HMAC - Cambridge
  • HMAC - WordNet
  • HMAC - Яндекс (en-ru)
  • HMAC - Google (en-hu)
  • HMAC - Wikidata
  • HMAC - Wikipédia (angol)