HMAC-generator
Onderteken een bericht met een geheime sleutel. Er wordt niets verzonden.
- Draait in je browser — je tekst wordt nergens naartoe gestuurd
- Geen aanmelding, geen quota, gratis te gebruiken zo vaak je wilt
Hoe het werkt
Een HMAC bewijst twee dingen tegelijk: dat een bericht niet is gewijzigd en dat degene die het heeft gemaakt het gedeelde geheim kent. Hiermee worden webhooks, API-verzoeken en downloadlinks op het grootste deel van het web ondertekend.
Anders dan een gewone hash, op het punt dat ertoe doet
Iedereen kan de SHA-256 van een bericht berekenen, dus een kale hash bewijst niets over wie hem heeft gemaakt: wijzig het bericht, bereken de hash opnieuw en niemand merkt het. Een HMAC verwerkt een geheime sleutel in de berekening, dus hij kan zonder die sleutel niet opnieuw worden berekend. Dat is precies de bedoeling, en daarom gebruiken webhookhandtekeningen HMAC in plaats van een hash.
Veilig controleren
Vergelijk een HMAC op een server met een functie die in constante tijd werkt: crypto.timingSafeEqual in Node, hash_equals in PHP. Een gewone == stopt zodra twee bytes verschillen, en de tijd die dat kost verraadt hoeveel van de handtekening klopte, genoeg om er met geduld een te vervalsen. Het is een echte aanval, geen theoretische.
Welk algoritme
SHA-256, tenzij iets anders is voorgeschreven. SHA-1 is opgenomen omdat veel oudere API's nog HMAC-SHA-1 vereisen, en HMAC-SHA-1 is niet gebroken zoals gewone SHA-1, maar er is geen reden om het voor iets nieuws te kiezen.
Hex of Base64
Het hangt er puur van af wat de andere kant verwacht. Hex is twee keer zo lang en makkelijker te lezen; Base64 is compacter en komt vaak voor in HTTP-headers. Dezelfde handtekening wordt in beide getoond.
Je sleutel blijft hier
Gegenereerd met de eigen Web Crypto API van de browser. De sleutel en het bericht worden nergens naartoe verstuurd, en alleen zo is het verantwoord om dit aan te bieden: een ondertekentool die je geheim uploadt, geeft precies weg wat het geheim moet beschermen.
HMAC-generator: veelgestelde vragen
Wat is het verschil tussen HMAC en een hash?
Een hash kan door iedereen opnieuw worden berekend. Een HMAC heeft de geheime sleutel nodig, dus hij bewijst wie hem heeft gemaakt.
Welk algoritme moet ik gebruiken?
SHA-256, tenzij een API iets anders voorschrijft. SHA-1 is beschikbaar voor oudere systemen die het nog vereisen.
Moet ik hex of Base64 gebruiken?
Wat de andere kant verwacht. Beide worden getoond voor dezelfde handtekening.
Waarom moet de vergelijking in constante tijd gebeuren?
Een gewone vergelijking stopt bij de eerste afwijking, en het tijdsverschil verraadt hoeveel er klopte, genoeg om een handtekening te vervalsen.
Wordt mijn geheime sleutel ergens naartoe verstuurd?
Nee. Alles draait in je browser via de Web Crypto API.