Zum Inhalt springen

Services, Wiki-Artikel, Blog-Beiträge und Glossar-Einträge durchsuchen

↑↓NavigierenEnterÖffnenESCSchließen
Kryptographie Glossar

HMAC (Hash-based Message Authentication Code)

Kryptographischer Mechanismus zur Integritätsprüfung und Authentifizierung von Nachrichten: kombiniert eine Nachricht mit einem geheimen Schlüssel in einer Hash-Funktion, sodass nur Parteien mit dem Schlüssel den Code verifizieren können.

HMAC (Hash-based Message Authentication Code) ist ein Mechanismus für die gleichzeitige Prüfung von Integrität (wurde die Nachricht verändert?) und Authentizität (kommt die Nachricht vom erwarteten Absender?). Er kombiniert eine kryptographische Hash-Funktion mit einem geheimen Schlüssel.

Wie HMAC funktioniert

HMAC(K, M) = H(K XOR opad || H(K XOR ipad || M))

Wobei:
  K    = geheimer Schlüssel
  M    = Nachricht
  H    = Hash-Funktion (z.B. SHA-256)
  ipad = innerer Pad (0x36 wiederholt)
  opad = äußerer Pad (0x5c wiederholt)

Praktisch: HMAC berechnet aus Schlüssel + Nachricht einen deterministischen “Fingerabdruck”. Nur wer den gleichen Schlüssel kennt, kann:

  1. Einen gültigen HMAC berechnen
  2. Einen empfangenen HMAC verifizieren

HMAC vs. einfache Hash-Funktion

Problem mit einfachem Hash: SHA-256(Nachricht) - jeder kann den Hash berechnen und bei einer manipulierten Nachricht einen neuen gültigen Hash erstellen.

HMAC-Lösung: HMAC-SHA256(Schlüssel, Nachricht) - ohne den geheimen Schlüssel kann niemand einen gültigen MAC erstellen oder verifizieren.

Length Extension Attack: Bestimmte Hash-Funktionen (MD5, SHA-1, SHA-256) sind anfällig für Length Extension Attacks. HMAC schützt dagegen durch seine doppelte Hash-Struktur.

Verwendung in der Praxis

API-Signaturen: Fast alle modernen APIs (AWS, Stripe, GitHub Webhooks, Twilio) nutzen HMAC-SHA256 zur Request-Authentifizierung:

Signature = HMAC-SHA256(API_SECRET, timestamp + method + path + body)

JWT (JSON Web Tokens): HMAC-SHA256 (HS256) ist einer der häufigsten JWT-Signing-Algorithmen - obwohl für kritische Anwendungen asymmetrische Signaturen (RS256, ES256) bevorzugt werden sollten.

DKIM: Email-Signierung nutzt HMAC-ähnliche Signaturen mit privaten Schlüsseln.

TLS: HMAC wird im TLS-Record-Layer für die Nachrichtenintegrität verwendet (in TLS 1.2; TLS 1.3 nutzt AEAD-Modi die MAC integriert haben).

Passwort-Hashing-Algorithmen: PBKDF2 (Password-Based Key Derivation Function 2) nutzt HMAC intern für seine Iteration.

Sicherheitsempfehlungen

  • HMAC-SHA-256 oder HMAC-SHA-512 verwenden (MD5 und SHA-1 sind veraltet)
  • Schlüssel mindestens so lang wie die Hash-Ausgabe (256 Bit für SHA-256)
  • Schlüssel regelmäßig rotieren
  • Constant-time Vergleich beim Verifizieren (verhindert Timing-Angriffe)
  • Nicht HMAC für Passwort-Hashing verwenden - dafür bcrypt/Argon2 nutzen

HMAC vs. Digitale Signatur

HMACDigitale Signatur
SchlüsseltypSymmetrisch (gleicher Schlüssel)Asymmetrisch (privat/öffentlich)
GeschwindigkeitSehr schnellLangsamer
Nicht-AbstreitbarkeitNein (beide Parteien kennen den Schlüssel)Ja (nur Sender hat privaten Schlüssel)
Typischer EinsatzAPI-Auth, Integrität zwischen zwei vertrauenden ParteienDigitale Dokumente, Zertifikate, Code Signing

Cookielose Analyse via Matomo (selbst gehostet, kein Tracking-Cookie). Datenschutzerklärung