Ġeneratur HMAC
Ikkalkula HMAC-SHA1, SHA-256, SHA-384 jew SHA-512 b’ċavetta test, hex jew Base64, kseb output hex u Base64, u ivverifika firma webhook fil-brawżer tiegħek.
Il-messaġġ jiġi ffirmat eżattament kif inkiteb, ikkodifikat bħala UTF-8, inklużi l-ispazji u t-tmiem tal-linji.
- HMAC (hex)
- HMAC (Base64)
- Header tal-firma tal-webhook (stil GitHub)
It-tqabbil jaħdem f’ħin kostanti, kif għandu jagħmel server, biex il-ħin meħud ma juriex kemm karattri jaqblu.
Kif tikkalkula HMAC
- Waħħal il-Messaġġ. Għal webhook, dan irid ikun il-body mhux ipproċessat tat-talba, byte b’byte.
- Daħħal iċ-Ċavetta sigrieta u agħżel il-Format taċ-ċavetta: Test (UTF-8), Eżadeċimali jew Base64.
- Agħżel l-Algoritmu: HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 jew HMAC-SHA512.
- Ir-riżultat jiġi aġġornat waqt li tikteb; tista’ wkoll tikklikkja Iġġenera HMAC. Tikseb l-HMAC (hex), l-HMAC (Base64) u Header tal-firma tal-webhook (stil GitHub), kull wieħed b’buttuna Ikkopja.
- Biex tivverifika firma li rċevejt, waħħalha f’Qabbel ma’ firma mistennija (hex, Base64 jew sha256=…). L-għodda tgħidlek jekk taqbilx.
Il-messaġġ jiġi kkodifikat bħala UTF-8 eżattament kif inkiteb, inklużi l-ispazji u t-tmiem tal-linji. Il-kalkolu juża l-API Web Crypto tal-brawżer tiegħek; il-messaġġ u ċ-ċavetta qatt ma jitilqu mill-apparat tiegħek.
X’inhu HMAC
HMAC (hash-based message authentication code, RFC 2104) jgħaqqad ċavetta sigrieta ma’ funzjoni tal-hash:
HMAC(K, m) = H((K′ ⊕ opad) ‖ H((K′ ⊕ ipad) ‖ m))
fejn K′ hija ċ-ċavetta mimlija sad-daqs tal-blokk tal-hash (tinħasel l-ewwel jekk hija itwal), u ipad/opad huma kostanti fissi. Biss min jaf iċ-ċavetta jista’ jipproduċi l-kodiċi t-tajjeb għal messaġġ, u kwalunkwe bidla fil-messaġġ tbiddel il-kodiċi għal kollox. Għalhekk l-HMACs jiffirmaw webhooks, talbiet ta’ API (AWS Signature Version 4, pereżempju) u JSON Web Tokens HS256.
HMAC mhuwiex ċifrar: il-messaġġ ma jitħabbiex. Lanqas mhu hash tal-password; biex taħżen passwords, uża funzjoni bil-mod bħall-bcrypt jew l-Argon2.
It-tul tal-output jiddependi mill-algoritmu: 20 byte għall-SHA-1, 32 għall-SHA-256, 48 għall-SHA-384 u 64 għall-SHA-512. L-HMAC-SHA1 għadu meqjus sigur bħala MAC, imma ippreferi SHA-256 għal sistemi ġodda. Ċavetta każwali li tkun itwal daqs l-output mill-inqas (32 byte għall-HMAC-SHA256) hija rrakkomandata; ċwievet hex jew Base64 iħalluk tidħol direttament bytes każwali bħal dawn.
Verifika ta’ webhook tal-GitHub
Il-GitHub jiffirma kull kunsinna bis-sigriet tal-webhook tiegħek u jibgħat ir-riżultat fil-header X-Hub-Signature-256 bħala sha256= segwit mill-HMAC-SHA256 hex tal-body. L-eżempju tad-dokumentazzjoni tal-GitHub stess juża s-sigriet It's a Secret to Everybody u l-body Hello, World!; daħħalhom hawn bl-HMAC-SHA256 u l-header juri:
X-Hub-Signature-256: sha256=757107ea0eb2509fc211221cce984b8a37570b6d7586c22c46f4379c8b043e17
L-għalqa tat-tqabbil taċċetta l-linja kollha tal-header, il-valur sha256=…, jew firma hex jew Base64 sempliċi (Stripe, Shopify u Slack jużaw skemi simili bil-headers u l-istrings iffirmati tagħhom). Għall-SHA-384 u l-SHA-512 l-għodda turi header ġeneriku X-Signature, peress li m’hemm l-ebda standard komuni.
Tqabbil f’ħin kostanti
Server li jqabbel firem b’tqabbil normali ta’ strings jieqaf fl-ewwel karattru differenti. Billi jkejjel il-ħinijiet tar-risposta, attakkant jista’ jbassar firma valida karattru wara l-ieħor. It-tqabbil f’din l-għodda jeżamina kull byte tkun x’tkun ir-riżultat, kif għandu jagħmel server b’crypto.timingSafeEqual fil-Node.js, hmac.compare_digest fil-Python jew hash_equals fil-PHP.
Mistoqsijiet frekwenti
Għaliex l-HMAC tiegħi huwa differenti minn dak ikkalkulat mis-server tiegħi?
Il-kawżi tas-soltu huma messaġġ differenti (is-server jiffirma l-body mhux ipproċessat, filwaqt li inti waħħalt JSON riformattjat, jew it-tmiem tal-linji huma differenti), ċavetta fil-Format taċ-ċavetta żbaljat, jew algoritmu ieħor. Anke spazju żejjed wieħed ibiddel ir-riżultat kollu.
L-output għandu jkun hex jew Base64?
It-tnejn jikkodifikaw l-istess bytes. Il-GitHub juża hex, filwaqt li ħafna API oħra, bħall-Shopify, jużaw Base64. Uża l-format li tistenna s-sistema li tirċievi.
Nista’ nuża ċavetta vojta?
L-għodda taċċettaha u twissik: b’ċavetta vojta, kulħadd jista’ jikkalkula l-istess HMAC, għalhekk ma jipprovi xejn.
L-HMAC-SHA1 huwa miksur bħall-SHA-1?
L-attakki ta’ kolliżjoni tal-SHA-1 ma jkissrux l-HMAC-SHA1, li għadu meqjus sigur bħala MAC. Jibqa’ appoġġjat għal sistemi antiki bħall-header antik X-Hub-Signature, imma sistemi ġodda għandhom jużaw HMAC-SHA256 jew aktar b’saħħtu.
Iċ-ċavetta sigrieta tiegħi hija sigura hawn?
Iċ-ċavetta u l-messaġġ jiġu pproċessati biss fil-brawżer tiegħek u qatt ma jintbagħtu x’imkien. Xorta, ittratta sigriet tal-produzzjoni b’attenzjoni u biddlu jekk taħseb li kien espost.
Għodod relatati
- Ġeneratur tal-hash Iġġenera hashes MD5, SHA-1, SHA-256 u SHA-512 ta’ test jew fajls ta’ kwalunkwe daqs, u vverifika checksums. Kollox jaħdem fil-brawżer tiegħek.
- Dekodifikatur tal-JWT Iddekodifika l-header u l-payload ta’ JWT, aqra exp, iat u nbf bħala dati u ivverifika firem HS256, RS256, PS256, ES256 jew EdDSA fil-brawżer tiegħek.
- Kodifikatur u dekodifikatur tal-Base64 Kodifikatur u dekodifikatur tal-Base64 b’xejn b’appoġġ sħiħ għall-UTF-8 u għażla base64url sigura għall-URL. Jaħdem kompletament fil-brawżer, xejn ma jittella’.
- Ġeneratur u kontrollur tal-bcrypt Iġġenera hash bcrypt b’fattur tal-ispiża minn 4 sa 14, iċċekkja password kontra hash eżistenti u ara l-verżjoni, l-ispiża, is-salt u d-digest tiegħu.