0Pricing
Cryptology Academy · Lektion

HMAC in APIs: Anforderungssignierung

Implementieren Sie HMAC-basierte Anforderungssignierung und Schutz vor Replay-Angriffen.

HMAC in APIs: Anforderungssignierung ist eine kostenlose Cryptology Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cryptology Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.

Willkommen

HMAC-basierte Signaturen für Anfragen werden von AWS, GitHub, Stripe und Twilio verwendet, um API-Aufrufe zu authentifizieren. In dieser Lektion erstellen wir ein vollständiges System zur Signierung von Anfragen.

Warum API-Anfragen signieren?

API-Schlüssel in URLs können in Proxyservern, im Browserverlauf und in Serverprotokollen aufgezeichnet werden. Bei der Signierung von Anfragen wird der vollständige Request-Body in den MAC einbezogen. Dadurch wird sichergestellt, dass die Nutzlast nicht verändert wurde und der Schlüssel nicht allein offengelegt wird.

AWS Signature Version 4

AWS SigV4 berechnet: 1. Canonical Request (Methode + URL + Header + Hash des Bodys) 2. String to sign (Datum + Region + Service + Hash des Canonical Request) 3. Signing key = HMAC(HMAC(HMAC(HMAC('AWS4'+secret, date), region), service), 'aws4_request') 4. Signature = HMAC(signing_key, string_to_sign)

Überprüfung von GitHub-Webhooks

GitHub signiert jede Webhook-Nutzlast: X-Hub-Signature-256: sha256=HMACHEX Verify: import hmac expected = 'sha256=' + hmac.new(secret, payload, 'sha256').hexdigest() hmac.compare_digest(expected, received_signature)

Bedrohung durch Replay-Angriffe

Wenn ein Angreifer eine gültig signierte Anfrage abfängt, kann er sie mehrfach erneut senden. Eine einmal signierte Überweisung über 100 $ könnte 1000-mal wiederholt werden. HMAC allein verhindert KEINE Replay-Angriffe.

Replay-Schutz auf Basis von Zeitstempeln

Nehmen Sie einen Zeitstempel in die signierte Nachricht auf. Lehnen Sie Anfragen ab, die älter als 5 Minuten sind. Stripe sendet X-Stripe-Signature mit einem Zeitstempel. GitHub verwendet X-GitHub-Delivery (UUID), also keinen zeitstempelbasierten Mechanismus.

Replay-Schutz auf Basis von Nonces

Nehmen Sie für jede Anfrage einen zufälligen Nonce auf. Der Server speichert verwendete Nonces (in Redis mit TTL). Lehnen Sie jede Anfrage mit einem bereits gesehenen Nonce ab. Für verteilte Systeme ist dies zuverlässiger als Zeitstempel.

Implementierung der Anfrage-Signierung

import hmac, hashlib, time, os def sign_request(secret, method, path, body, timestamp=None): ts = timestamp or str(int(time.time())) payload = f'{method}\n{path}\n{ts}\n' + hashlib.sha256(body).hexdigest() sig = hmac.new(secret.encode(), payload.encode(), 'sha256').hexdigest() return ts, sig

Überprüfung auf der Serverseite

def verify_request(secret, method, path, body, ts, received_sig): # Check timestamp freshness if abs(time.time() - int(ts)) > 300: # 5 minutes return False # Recompute and compare _, expected = sign_request(secret, method, path, body, ts) return hmac.compare_digest(expected, received_sig)

JWT mit HMAC (HS256)

HS256-JWTs verwenden HMAC-SHA256 mit einem gemeinsamen Geheimnis. Der Server signiert und überprüft die Tokens. Einschränkung: Jede Partei, die über den Schlüssel verfügt, kann Tokens fälschen. Für asymmetrisches Vertrauen (Authentifizierung durch Dritte) verwenden Sie RS256 oder ES256.

Strategie zur Schlüsselrotation

Rotieren Sie HMAC-Schlüssel regelmäßig: Generieren Sie einen neuen Schlüssel, unterstützen Sie während eines Übergangsfensters (24 Stunden) den alten und den neuen Schlüssel und nehmen Sie anschließend den alten außer Betrieb. AWS SigV4 leitet Schlüssel aus datierten Secrets ab und ermöglicht dadurch eine tägliche Rotation.

Schnelltest

Warum reicht die HMAC-Signierung von Anfragen allein nicht aus, um Replay-Angriffe zu verhindern?

Zusammenfassung

Die HMAC-Signierung von Anfragen mit Replay-Schutz ist implementiert. Als Nächstes vergleichen wir CMAC und Poly1305 als blockchiffrierbasierte Alternativen für MACs.

Häufig gestellte Fragen

Ist die Lektion „HMAC in APIs: Anforderungssignierung“ kostenlos?

Ja — der vollständige Text von „HMAC in APIs: Anforderungssignierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cryptology Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „HMAC in APIs: Anforderungssignierung“?

Implementieren Sie HMAC-basierte Anforderungssignierung und Schutz vor Replay-Angriffen. Du übst Cryptology Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Cryptology Academy zu starten?

Keine Vorkenntnisse erforderlich. Cryptology Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „HMAC in APIs: Anforderungssignierung“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Cryptology Academy-Lektion Code schreiben und ausführen?

Ja. Jede Cryptology Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. MAC-Konzepte und Length-Extension-Angriffe
  2. HMAC-Aufbau und Sicherheitsnachweis
  3. HMAC in APIs: Anforderungssignierung
  4. CMAC und Poly1305: MACs für Blockchiffren
← Zurück zu Cryptology Academy