HMAC ist ein schlüsselbasierter Hash-Nachrichten-Authentifizierungscode: Dieselbe Nachricht erzeugt mit unterschiedlichen Schlüsseln völlig unterschiedliche Ergebnisse. Dadurch lässt sich sowohl prüfen, ob Daten verändert wurden, als auch bestätigen, dass die Nachricht von einer Partei mit dem entsprechenden Schlüssel stammt. API-Signaturen, Webhook-Callback-Prüfungen und der Schutz von Download-URLs vor Manipulation verwenden HMAC.
Unterstützt werden HMAC-SHA1, HMAC-SHA256, HMAC-SHA384, HMAC-SHA512 sowie HMAC-SHA3-224, SHA3-256, SHA3-384 und SHA3-512, insgesamt 8 Algorithmen. SHA1 wird als nicht empfohlen gekennzeichnet, standardmäßig wird SHA256 verwendet. Schlüssel und Nachricht können jeweils als UTF-8, Hex oder Base64 interpretiert werden, die Ausgabe ist als Hex oder Base64 möglich. Damit lassen sich die Anforderungen verschiedener API-Dokumentationen direkt abbilden.
Der Prüfmodus verwendet einen Vergleich in konstanter Zeit, um Informationslecks durch unterschiedliche Vergleichsdauern zu vermeiden. Der Ergebnisbereich zeigt Digest-Länge, Nachrichtenlänge und Schlüssellänge und hilft dabei festzustellen, ob der Schlüssel abgeschnitten wurde oder zusätzliche Leerzeichen enthält. Die Seite weist außerdem darauf hin, dass JWT-Signaturen Base64URL verwenden, das sich bei Padding und zwei Zeichen von Standard-Base64 unterscheidet.
Bei der Hex-Interpretation von Schlüssel oder Nachricht werden ungültige Zeichen oder eine ungerade Länge direkt angezeigt. Fehler beim Base64-Parsing werden ebenfalls eindeutig gemeldet, statt eine falsche Signatur zu erzeugen. Leere Nachrichten oder Schlüssel sowie ein fehlender erwarteter HMAC im Prüfmodus führen zunächst zu einem Hinweis zum Vervollständigen der Eingaben.
Die gesamte HMAC-Berechnung erfolgt lokal im Browser. Es gibt keine serverseitige Berechnungs-API und Schlüssel sowie Nachrichten werden weder übertragen noch gespeichert. Trotzdem sollten Testschlüssel und keine echten Produktionsschlüssel verwendet werden.
Kommentare 0