tigtools

HMAC-generátor

Kulcsolt üzenethitelesítő kódot (HMAC) számíthat ki egy üzenethez és titkos kulcshoz, vagy ellenőrizhet egy kapott aláírást. A kulcs és az üzenet a böngészőjében marad.

Böngészőben fut Regisztráció nélkül

A kulcs és az üzenet csak ezen a böngészőlapon kerül feldolgozásra, és soha nem kerül elküldésre sehová. Ennek ellenére ne illesszen be éles környezetben használt titkos kulcsot megosztott vagy nem megbízható számítógépen.
Kulcsformátum

Pontosan a beírt szövegként, UTF-8 kódolással kerül aláírásra. A szóköz a végén vagy egy sortörés megváltoztatja az eredményt.

Kimenet

Illesszen be egy aláírást hex (bármilyen kis- vagy nagybetűvel) vagy Base64 formátumban, hogy összehasonlítsa a fenti eredménnyel.

Használata

  1. Adja meg a titkos kulcsot, és válassza ki, hogy egyszerű szöveg vagy hex bájtok.
  2. Illessze be az üzenetet, például a webhook payloadját pontosan úgy, ahogyan érkezett.
  3. Válassza ki a szolgáltatása által használt algoritmust és kimeneti kódolást; a HMAC gépelés közben frissül.
  4. Aláírás ellenőrzéséhez illessze be az ellenőrző mezőbe, és keresse az „Egyezés” feliratot.

Hogyan működik

A HMAC (RFC 2104) egy titkos kulcsot egy hashfüggvénnyel kombinál, és olyan aláírást hoz létre, amelyet csak a kulcs birtokosa tud előállítani. Az olyan szolgáltatások, mint a webhookok és az aláírt API-kérések, minden üzenethez HMAC-ot küldenek, hogy a fogadó ellenőrizhesse, hogy az üzenet hiteles és változatlan-e.

Ez az eszköz a böngésző Web Crypto API-ját (crypto.subtle.importKey és sign) használja, és az RFC 4231, valamint az RFC 2202 tesztvektorai alapján van ellenőrizve. A szöveges kulcs és az üzenet UTF-8-ként van kódolva. A hex kulcs nyers bájtokra dekódolódik; a szóközök, a kettőspontok és a bevezető 0x előtag figyelmen kívül marad. A HMAC-SHA-256 a leggyakoribb választás; a HMAC-SHA-1 MAC-ként még biztonságosnak számít, de elsősorban régebbi API-k használják.

Ha az aláírása nem egyezik, ellenőrizze az alábbi, leggyakrabban eltérő részleteket: a pontos üzenetbájtokat (sok webhook-szolgáltató a nyers törzset írja alá, nem az újraformázott JSON-t), a szolgáltató által az aláírt sztringhez adott időbélyeget vagy előtagot, hogy a kulcsot szövegként használja-e, vagy előbb hex, illetve Base64 formátumból kell-e dekódolni, valamint hogy a várt aláírás hex vagy Base64 formátumú-e, és van-e olyan előtagja, mint a „sha256=”, amelyet az összehasonlítás előtt el kell távolítani.

Példák

RFC 4231 teszteset

A „Jefe” kulcs (szöveg), a „what do ya want for nothing?” üzenet és a HMAC-SHA-256 eredménye: 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. A betöltéséhez használja a „Példa kipróbálása” lehetőséget.

Webhook-aláírás ellenőrzése

A szolgáltató minden kéréshez X-Signature: sha256=… fejlécet küld. Illessze be a nyers kéréstörzset üzenetként, a webhook titkos kulcsát pedig kulcsként, válassza a HMAC-SHA-256 és a Hex lehetőséget, majd illessze be a „sha256=” utáni értéket az ellenőrző mezőbe.

Hex kódolású kulcs

Egyes rendszerek hex karakterláncként adják ki a kulcsokat, például 0b0b0b…. Válassza a Hex kulcsformátumot, hogy az eszköz a dekódolt bájtokkal írja alá; ugyanazon karakterlánc szövegként kezelése teljesen más eredményt ad.

Gyakori kérdések

Mi a különbség a HMAC és a sima hash között?

Egy egyszerű hash-t (például SHA-256-ot) bárki kiszámíthat egy üzenetből. A HMAC viszont egy titkos kulcstól is függ, ezért csak az tudja előállítani vagy ellenőrizni, aki ismeri a kulcsot. Ez igazolja, hogy az üzenet a kulcs birtokosától származik, és nem módosították.

Miért nem egyezik az én HMAC-om a szerveren lévővel?

A bemeneti bájtok szinte mindig eltérnek: soremelések, üres karakterek, a JSON-kulcsok sorrendje, karakterkódolás, vagy egy kulcs, amelyet hex vagy Base64 formátumból kellene dekódolni. Emellett ugyanabban a kódolásban hasonlítsa össze (hex vagy Base64), és távolítsa el az olyan előtagokat, mint a „sha256=”.

Elküldi bárhová a titkos kulcsomat?

Nem. A kulcsot és az üzenetet kizárólag a Web Crypto API használja ezen a böngészőlapon. Nem töltődnek fel, nem tárolódnak, és nem kerülnek bele az analitikába.

A HMAC-SHA-1 még biztonságos?

A SHA-1 ütközési támadások közvetlenül nem törik fel a HMAC-SHA-1-et, és kompatibilitási okokból továbbra is elfogadott. Új rendszereknél használjon HMAC-SHA-256-ot vagy erősebbet.

Adatvédelem

A kulcs, az üzenet és az eredmény kizárólag ezen a böngészőfülön létezik. Semmit nem töltünk fel, nem tárolunk, és nem küldünk el elemzőrendszereknek; csak egy anonim eseményt rögzítünk arról, hogy az eszközt használták.