HMAC-Signatur

HMAC (Hash-basierter Message Authentication Code) kombiniert einen geheimen Schlüssel mit einer Nachricht mithilfe einer Hash-Funktion, um einen kurzen Wert zu erzeugen, der nur von jemandem reproduziert werden kann, der denselben Schlüssel und dieselbe Nachricht besitzt. Er bietet Authentizität und Integrität zugleich, ohne Public-Key-Kryptographie.

So funktioniert es

Der Sender berechnet HMAC(Geheimnis, Nachrichtentext) und speichert das Ergebnis im Header. Der Empfänger berechnet dasselbe für den empfangenen Nachrichtentext und vergleicht die Ergebnisse. Weichen Nachrichtentext oder Schlüssel voneinander ab, stimmen die Werte nicht überein. Der Vergleich muss in konstanter Zeit erfolgen: Ein normaler Stringvergleich liefert bereits beim ersten abweichenden Byte einen frühen Rückgabewert, wodurch genügend Zeitinformationen preisgegeben werden, um bei ausreichend vielen Versuchen eine gültige Signatur zu rekonstruieren.

Das Missverständnis

Eine Signatur beweist nicht die Aktualität einer Nachricht. Eine gültig signierte Nutzlast bleibt dauerhaft gültig, sodass ein Angreifer sie nach dem Abfangen erneut abspielen kann. Deshalb werden Signaturen üblicherweise anhand eines Zeitstempels und des Nachrichtentextes berechnet, und Empfänger verwerfen Nachrichten, die älter als einige Minuten sind.

Probieren Sie es hier aus

Lösen Sie eine Webhook-Übermittlung aus und überprüfen Sie `x-funapi-signature` anhand des Ihnen bei der Anmeldung zugewiesenen Geheimnisses. Ändern Sie ein einziges Byte der Nutzdaten, und die Überprüfung schlägt fehl – genau das ist der Sinn der Sache.

Quellen

Weitere Begriffe

Diese Seite auf Englisch lesen

Alle Glossarbegriffe · Testtechniken · Alle 39 Mock-REST-APIs

Zuletzt aktualisiert