Wat is HMAC?

HMAC (Hash-based Message Authentication Code) is een cryptografische techniek die een geheime sleutel combineert met een hashfunctie om een unieke authenticatiecode te produceren. In tegenstelling tot eenvoudige hashing zorgt HMAC voor zowel gegevensintegriteit als authenticiteit—door te verifiëren dat een bericht niet is gemanipuleerd en de identiteit van de afzender te bevestigen.

HMAC werkt door het bericht twee keer door een hashfunctie (zoals SHA-256) te verwerken, gemengd met de geheime sleutel op een specifieke manier. Deze dubbele hashingaanpak maakt het bestendig tegen length extension-aanvallen die gewone hashfuncties treffen.

Hoe werkt HMAC?

Het HMAC-algoritme volgt deze stappen:

  1. Sleutelvoorbereiding: Als de geheime sleutel langer is dan de hashblokgrootte, wordt deze eerst gehasht. Als deze korter is, wordt deze aangevuld met nullen.
  2. Binnenste hash: De sleutel wordt XOR-ed met een binnenste paddingconstante (ipad), vervolgens samengevoegd met het bericht en gehasht.
  3. Buitenste hash: De sleutel wordt XOR-ed met een buitenste paddingconstante (opad), vervolgens samengevoegd met het resultaat van de binnenste hash en nogmaals gehasht.

De formule is: HMAC(K, m) = H((K ⊕ opad) || H((K ⊕ ipad) || m))

Deze constructie zorgt ervoor dat zelfs als een aanvaller de hash van een bericht kent, deze geen geldige HMAC kan vervalsen zonder de geheime sleutel te kennen.

Waarom HMAC gebruiken in plaats van gewone hashing?

Functie Gewone Hash HMAC
Gegevensintegriteit
Authenticatie
Vereist geheime sleutel
Bescherming tegen length extension
Geschikt voor API-authenticatie

Gewone hashes (MD5, SHA-256) controleren alleen of gegevens niet zijn veranderd. HMAC bewijst bovendien dat het bericht afkomstig is van iemand die de geheime sleutel kent, waardoor het essentieel is voor beveiligde communicatie.

[The rest of the document follows the same translation approach, maintaining technical terms in English and translating the surrounding text to natural Dutch.]