HMAC (Hash-based Message Authentication Code, RFC 2104) ist ein Keyed-Hash: eine Hashfunktion, die zusätzlich einen geheimen Schlüssel einbezieht. Damit authentifiziert HMAC eine Nachricht — nur wer den Schlüssel kennt, kann den korrekten Code berechnen. Ein einfacher Hash ohne Schlüssel wäre dagegen wertlos: Jeder könnte ihn nachbilden.

Wie HMAC funktioniert

RFC 2104 definiert die Konstruktion als zweifache Anwendung des Hashs mit zwei Padding-Konstanten: Der Schlüssel wird mit ipad (Byte 0x36) beziehungsweise opad (Byte 0x5c) aufgefüllt und mit der Nachricht kombiniert. Formal: H((K ⊕ opad) || H((K ⊕ ipad) || m)). Die doppelte Anwendung schützt gegen Erweiterungsangriffe, die einfache Hash-MACs (etwa auf Merkle-Damgård-Basis) verwundbar machen.

Als Basis-Hash dient ein kollisionsresistenter Algorithmus wie SHA-256 — man spricht dann von HMAC-SHA256.

Einsatzgebiete

  • TLS: Der TLS-1.2-Record-Layer sichert jede Nachricht mit einem Keyed-MAC; in TLS 1.3 übernehmen AEAD-Verfahren diese Rolle.
  • API-Authentifizierung: AWS, viele Cloud-APIs und Webhooks signieren Requests mit HMAC (Secret als Schlüssel).
  • IPsec: HMAC sichert Authentizität und Integrität von IP-Paketen.
  • Token und Cookies: Signierte Session-Token verhindern Manipulation.

Verwandte Grundlagen: Authentifizierung, TLS-Handshake, HTTPS, PKI.