HMAC-Generator
Signieren Sie eine Nachricht mit einem geheimen Schlüssel. Es wird nichts übertragen.
- Läuft in Ihrem Browser — Ihr Text wird nirgendwohin gesendet
- Ohne Anmeldung, ohne Kontingent, so oft nutzbar, wie Sie möchten
So funktioniert es
Ein HMAC belegt zwei Dinge zugleich: dass eine Nachricht nicht verändert wurde und dass derjenige, der sie erzeugt hat, das gemeinsame Geheimnis kennt. Damit werden im Web an den meisten Stellen Webhooks, API-Anfragen und Download-Links signiert.
Anders als ein einfacher Hash, und zwar in dem Punkt, auf den es ankommt
Jeder kann den SHA-256 einer Nachricht berechnen, daher sagt ein bloßer Hash nichts darüber aus, wer ihn erzeugt hat: Man ändert die Nachricht, berechnet den Hash neu, und niemand merkt es. Ein HMAC bezieht einen geheimen Schlüssel in die Berechnung ein und lässt sich deshalb ohne den Schlüssel nicht neu berechnen. Das ist der ganze Sinn, und deshalb verwenden Webhook-Signaturen HMAC statt eines Hashs.
Sicher überprüfen
Wenn Sie einen HMAC auf einem Server prüfen, vergleichen Sie ihn mit einer Funktion mit konstanter Laufzeit – crypto.timingSafeEqual in Node, hash_equals in PHP. Ein gewöhnliches == kehrt zurück, sobald sich zwei Bytes unterscheiden, und die benötigte Zeit verrät, wie viel der Signatur stimmte. Das genügt, um mit etwas Geduld eine zu fälschen. Das ist ein echter Angriff, kein theoretischer.
Welcher Algorithmus
SHA-256, sofern nichts anderes vorgegeben ist. SHA-1 ist enthalten, weil viele ältere APIs noch HMAC-SHA-1 verlangen und HMAC-SHA-1 nicht so gebrochen wurde wie einfaches SHA-1 – es gibt aber keinen Grund, ihn für etwas Neues zu wählen.
Hex oder Base64
Das hängt allein davon ab, was die Gegenseite erwartet. Hex ist doppelt so lang und leichter zu lesen; Base64 ist kompakter und in HTTP-Headern üblich. Dieselbe Signatur wird in beiden Formen angezeigt.
Ihr Schlüssel bleibt hier
Erzeugt mit der Web Crypto API des Browsers selbst. Schlüssel und Nachricht werden nirgendwohin gesendet, und nur so lässt sich dies verantwortungsvoll anbieten – ein Signatur-Tool, das Ihr Geheimnis hochlädt, hat genau das aus der Hand gegeben, was das Geheimnis schützt.
HMAC-Generator – Fragen
Wie unterscheidet sich HMAC von einem Hash?
Einen Hash kann jeder neu berechnen. Ein HMAC braucht den geheimen Schlüssel und belegt daher, wer ihn erzeugt hat.
Welchen Algorithmus sollte ich verwenden?
SHA-256, sofern eine API nichts anderes vorgibt. SHA-1 wird für ältere Systeme angeboten, die ihn noch verlangen.
Sollte ich Hex oder Base64 verwenden?
Was auch immer die Gegenseite erwartet. Beide Formen werden für dieselbe Signatur angezeigt.
Warum muss der Vergleich in konstanter Zeit erfolgen?
Ein normaler Vergleich bricht beim ersten Unterschied ab, und der Zeitunterschied verrät, wie viel richtig war – genug, um eine Signatur zu fälschen.
Wird mein geheimer Schlüssel irgendwohin gesendet?
Nein. Alles läuft in Ihrem Browser über die Web Crypto API.