HMAC-generator
Signer en melding med en hemmelig nøkkel. Ingenting sendes.
- Kjører i nettleseren din — teksten din sendes aldri noe sted
- Ingen registrering, ingen kvoter, gratis å bruke så ofte du vil
Slik fungerer det
En HMAC beviser to ting samtidig: at en melding ikke er endret, og at den som har laget den kjenner den delte hemmeligheten. Den brukes til å signere webhooks, API-forespørsler og nedlastingslenker på det meste av nettet.
Annerledes enn en vanlig hash, på den måten som betyr noe
Hvem som helst kan beregne SHA-256 av en melding, så en ren hash beviser ingenting om hvem som har laget den – endre meldingen, beregn hashen på nytt, og ingen kan se forskjell. En HMAC blander en hemmelig nøkkel inn i beregningen, så den kan ikke beregnes på nytt uten nøkkelen. Det er hele poenget, og derfor bruker webhook-signaturer HMAC og ikke en hash.
Trygg verifisering
Når du kontrollerer en HMAC på en server, bør du sammenligne den med en funksjon som tar like lang tid uansett – crypto.timingSafeEqual i Node, hash_equals i PHP. En vanlig == returnerer så snart to byte er forskjellige, og tiden det tar avslører hvor mye av signaturen som var riktig, noe som med litt tålmodighet er nok til å forfalske en. Det er et reelt angrep, ikke et teoretisk.
Hvilken algoritme
SHA-256, med mindre noe annet er angitt. SHA-1 er med fordi mange eldre API-er fortsatt krever HMAC-SHA-1, og HMAC-SHA-1 er ikke brutt slik som vanlig SHA-1 er – men det er ingen grunn til å velge det til noe nytt.
Hex eller Base64
Rent et spørsmål om hva motparten forventer. Hex er dobbelt så langt og lettere å lese; Base64 er mer kompakt og vanlig i HTTP-hoder. Den samme signaturen vises i begge.
Nøkkelen din blir her
Generert med nettleserens egen Web Crypto API. Nøkkelen og meldingen sendes aldri noe sted, og det er den eneste ansvarlige måten å tilby dette på – et signeringsverktøy som laster opp hemmeligheten din har gitt fra seg det hemmeligheten skal beskytte.
HMAC-generator – spørsmål
Hva er forskjellen på HMAC og en hash?
En hash kan beregnes på nytt av hvem som helst. En HMAC krever den hemmelige nøkkelen, så den beviser hvem som har laget den.
Hvilken algoritme bør jeg bruke?
SHA-256, med mindre et API angir noe annet. SHA-1 tilbys for eldre systemer som fortsatt krever det.
Bør jeg bruke hex eller Base64?
Det motparten forventer. Begge vises for samme signatur.
Hvorfor må sammenligningen ta like lang tid hver gang?
En vanlig sammenligning avsluttes ved første avvik, og tidsforskjellen avslører hvor mye som var riktig – nok til å forfalske en signatur.
Sendes den hemmelige nøkkelen noe sted?
Nei. Alt kjører i nettleseren din via Web Crypto API.