HMAC-generator
Signér en besked med en hemmelig nøgle. Intet bliver sendt.
- Kører i din browser — din tekst sendes aldrig nogen steder hen
- Ingen tilmelding, ingen kvoter, gratis at bruge så ofte, du vil
Sådan fungerer det
En HMAC beviser to ting på én gang: at en besked ikke er blevet ændret, og at den, der har lavet den, kender den delte hemmelighed. Den bruges til at signere webhooks, API-kald og downloadlinks på det meste af nettet.
Anderledes end en almindelig hash på det punkt, der tæller
Alle kan beregne SHA-256 af en besked, så en ren hash beviser intet om, hvem der har lavet den – ændr beskeden, beregn hashen igen, og ingen kan se forskel. En HMAC blander en hemmelig nøgle ind i beregningen, så den ikke kan genberegnes uden nøglen. Det er hele pointen, og det er derfor, webhook-signaturer bruger HMAC i stedet for en hash.
Sikker verificering
Når du kontrollerer en HMAC på en server, så sammenlign med en funktion i konstant tid – crypto.timingSafeEqual i Node, hash_equals i PHP. En almindelig == returnerer, så snart to bytes er forskellige, og den tid, det tager, afslører, hvor meget af signaturen der var rigtigt, hvilket med lidt tålmodighed er nok til at forfalske en. Det er et reelt angreb, ikke et teoretisk et.
Hvilken algoritme
SHA-256, medmindre noget andet er angivet. SHA-1 er med, fordi mange ældre API'er stadig kræver HMAC-SHA-1, og HMAC-SHA-1 er ikke blevet brudt på samme måde som ren SHA-1 – men der er ingen grund til at vælge den til noget nyt.
Hex eller Base64
Alene et spørgsmål om, hvad den anden side forventer. Hex er dobbelt så langt og lettere at læse; Base64 er mere kompakt og almindeligt i HTTP-headere. Den samme signatur vises i begge.
Din nøgle bliver her
Genereret med browserens egen Web Crypto API. Nøglen og beskeden bliver aldrig sendt nogen steder hen, hvilket er den eneste ansvarlige måde at tilbyde dette på – et signeringsværktøj, der uploader din hemmelighed, har givet det væk, som hemmeligheden beskytter.
HMAC-generator – spørgsmål
Hvordan adskiller HMAC sig fra en hash?
En hash kan genberegnes af alle. En HMAC kræver den hemmelige nøgle, så den beviser, hvem der har lavet den.
Hvilken algoritme skal jeg bruge?
SHA-256, medmindre en API angiver andet. SHA-1 er med til ældre systemer, der stadig kræver den.
Skal jeg bruge hex eller Base64?
Det, som den anden side forventer. Begge vises for den samme signatur.
Hvorfor skal sammenligningen foregå i konstant tid?
En almindelig sammenligning stopper ved det første ulige tegn, og tidsforskellen afslører, hvor meget der var rigtigt – nok til at forfalske en signatur.
Bliver min hemmelige nøgle sendt nogen steder hen?
Nej. Alt kører i din browser via Web Crypto API.