Generator HMAC
Podpisz wiadomość tajnym kluczem. Nic nie jest przesyłane.
- Działa w przeglądarce — twój tekst nigdy nie jest nigdzie wysyłany
- Bez rejestracji, bez limitów, za darmo, tak często, jak chcesz
Jak to działa
HMAC dowodzi dwóch rzeczy naraz: że wiadomość nie została zmieniona i że ten, kto go wygenerował, zna wspólny sekret. To właśnie nim podpisuje się webhooki, żądania API i linki do pobierania w większości internetu.
Inaczej niż zwykły skrót, w sposób, który ma znaczenie
Każdy może obliczyć SHA-256 wiadomości, więc sam skrót niczego nie dowodzi co do autora — zmień wiadomość, oblicz skrót ponownie i nikt nie zauważy różnicy. HMAC wplata w obliczenia tajny klucz, więc nie da się go obliczyć ponownie bez klucza. O to właśnie chodzi i dlatego podpisy webhooków używają HMAC, a nie zwykłego skrótu.
Bezpieczna weryfikacja
Gdy sprawdzasz HMAC na serwerze, porównuj go funkcją działającą w stałym czasie — crypto.timingSafeEqual w Node, hash_equals w PHP. Zwykłe == kończy działanie, gdy tylko dwa bajty się różnią, a czas, jaki to zajmuje, zdradza, jaka część podpisu była poprawna, co przy odrobinie cierpliwości wystarcza do sfałszowania podpisu. To realny atak, a nie teoretyczny.
Który algorytm
SHA-256, chyba że coś określa inaczej. SHA-1 jest uwzględniony, bo wiele starszych API nadal wymaga HMAC-SHA-1, a HMAC-SHA-1 nie został złamany tak jak zwykły SHA-1 — ale nie ma powodu, by wybierać go do czegokolwiek nowego.
Hex czy Base64
To wyłącznie kwestia tego, czego oczekuje druga strona. Hex jest dwa razy dłuższy i łatwiejszy do odczytania; Base64 jest bardziej zwarty i częsty w nagłówkach HTTP. Ten sam podpis jest pokazany w obu postaciach.
Twój klucz zostaje tutaj
Generowane za pomocą wbudowanego w przeglądarkę Web Crypto API. Klucz i wiadomość nigdy nie są nigdzie wysyłane, a to jedyny odpowiedzialny sposób oferowania takiego narzędzia — narzędzie do podpisywania, które przesyła twój sekret, oddaje to, co ten sekret chroni.
Generator HMAC — pytania
Czym HMAC różni się od skrótu?
Skrót może obliczyć każdy. HMAC wymaga tajnego klucza, więc dowodzi, kto go wygenerował.
Którego algorytmu użyć?
SHA-256, chyba że API określa inaczej. SHA-1 jest dostępny dla starszych systemów, które nadal go wymagają.
Wybrać hex czy Base64?
To, czego oczekuje druga strona. Ten sam podpis jest pokazany w obu postaciach.
Dlaczego porównanie musi trwać stały czas?
Zwykłe porównanie kończy się przy pierwszej różnicy, a różnica w czasie zdradza, ile było poprawne — to wystarczy, by sfałszować podpis.
Czy mój tajny klucz jest gdzieś wysyłany?
Nie. Wszystko działa w twojej przeglądarce dzięki Web Crypto API.