Mis see tööriist on?
HMAC tähendab Hash-based Message Authentication Code. See ühendab salajase võtme sõnumi ja standardse räsifunktsiooniga (nt SHA-256), et luua kindla pikkusega väljavõte. Igaüks, kellel on sama võti ja sõnum, arvutab täpselt sama HMAC-i — kuid ilma võtmeta on arvutuslikult võimatu luua kehtivat HMAC-i sõnumi jaoks, isegi kui teate kasutatavat räsialgoritmi.
See ongi peamine erinevus tavalisest räsist: tavaline räsi (MD5, SHA-256 jne) võtab sisendiks ainult sõnumi, seega saab seda arvutada igaüks ja see ei tõesta midagi selle looja kohta. HMAC võtab sõnumi *ja* salajase võtme, seega tõestab kehtiv HMAC, et saatjal oli see saladus — see on autentimismehhanism, mitte ainult terviklikkuse kontroll.
HMAC on ametlikult standardiseeritud NIST-i poolt dokumendis FIPS 198-1 ja määratletud internetiprotokollide jaoks dokumendis IETF RFC 2104. See tööriist arvutab HMAC-e brauseri natiivse Web Crypto API abil (`crypto.subtle.sign` HMAC algoritmiga), mis rakendab RFC 2104 korrektselt, mitte käsitsi kirjutatud JavaScripti versiooni.
Miks seda kasutada?
- Allkirjastage API päringud, et vastuvõttev server saaks kontrollida, kas päring pärineb jagatud saladuse omanikult ja seda pole muudetud.
- Kontrollige veebihaakide (webhook) andmekogumeid (Stripe, GitHub, Shopify ja sarnased teenused allkirjastavad kõik oma veebihaagi sisu HMAC-SHA256-ga).
- Looge autentimistokeneid või ühekordseid koode, mis sõltuvad jagatud saladusest.
- Võrrelge oma HMAC-i rakenduse väljundit teadaoleva õige võrdlusväärtusega.
- 100% kohalik: teie salajane võti ja sõnum ei lahku kunagi brauserist, seega on turvaline testida päriseid saladusi.
Kuidas kasutada
- Sisestage oma salajane võti väljale "Secret Key".
- Sisestage sõnum, mida soovite autentida, väljale "Message".
- HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 ja HMAC-SHA512 tulemused genereeritakse kohe (märkige "Uppercase output", kui teie sihtsüsteem eeldab suurtähti).
- Klõpsake "Copy" vajaliku HMAC-i kõrval.
Näide
Sisend
Secret Key: key
Message: The quick brown fox jumps over the lazy dogTulemus
HMAC-SHA256: f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
HMAC-SHA1: de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9See on standardne avaldatud testivektor: võtmega "key" ja selle täpse sõnumiga annavad HMAC-SHA256 ja HMAC-SHA1 igas korrektses rakenduses alati need väärtused, nii et saate selle tööriista väljundit sõltumatult kontrollida.
HMAC vs tavaline räsi: millal vajate võtit
Otsustav küsimus on: kas peate tõestama, kes selle väljavõtte lõi, või lihtsalt seda, et sisu pole muutunud? Kui avalikust kontrollsummast piisab — kontrollimaks, et allalaaditud fail vastab avaldaja teatatule, kirjete dubleerimise vältimine — töötab tavaline räsi ja seda saab kontrollida igaüks, ilma võtmeta. Kui peate tõestama, et väljavõtte sai luua ainult kindla saladuse omanik — API kutsuja autentimine, veebihaagi saatja usaldamine — vajate HMAC-i, sest tavaline räsi annab saladuseta ründajale sama võimekuse kehtivat väljavõtet võltsida nagu tegelikul saatjal.
→ Multi-Algorithm Hash Generator · JWT Decoder · MD5 Generator
Nelja HMAC-algoritmi võrdlus
Kõik neli kasutavad sama HMAC-konstruktsiooni RFC 2104-st, erinedes ainult aluseks oleva räsifunktsiooni ja seega väljundi pikkuse poolest.
| Algoritm | Väljundi suurus | Tüüpiline kasutus |
|---|---|---|
| HMAC-SHA1 | 160-bit (40 kuueteistkümnendmärki) | Pärandsüsteemide API-d, vanemad OAuth 1.0a allkirjad |
| HMAC-SHA256 | 256-bit (64 kuueteistkümnendmärki) | API päringute allkirjastamine, JWT HS256, veebihaagi kontroll |
| HMAC-SHA384 | 384-bit (96 kuueteistkümnendmärki) | Kõrgema kindlusega allkirjad, kus on vajalik pikem väljund |
| HMAC-SHA512 | 512-bit (128 kuueteistkümnendmärki) | Maksimaalse pikkusega väljavõtted kõrgeima turvalisusega rakendustele |
Levinud kasutusjuhud
- Väljuvate API päringute allkirjastamine jagatud saladusega, et server saaks kutsuja identiteeti kontrollida.
- Sissetulevate veebihaagi andmekogumite kontrollimine (Stripe-Signature, GitHub X-Hub-Signature-256 ja sarnased päised kasutavad kõik HMAC-SHA256-t).
- HS256/HS384/HS512-ga allkirjastatud JWT allkirjaosa genereerimine ja valideerimine.
- Kontrollimine, et teie server- või kliendipoolne HMAC-i rakendus vastab oodatud väljundile enne juurutamist.
Korduma kippuvad küsimused
Mis on HMAC?
HMAC (Hash-based Message Authentication Code) ühendab salajase võtme sõnumiga räsifunktsiooni abil, et luua väljavõte, mis tõestab nii sõnumi terviklikkust kui ka saatja võtme omamist. See on määratletud NIST FIPS 198-1 ja IETF RFC 2104 standardites.
Mille poolest erineb HMAC tavalisest räsist?
Tavaline räsi (SHA-256, MD5 jne) võtab sisendiks ainult sõnumi — seda saab arvutada igaüks, seega tõestab see ainult, et sõnumit pole rikutud, mitte kes selle saatis. HMAC võtab sõnumi ja salajase võtme: kui peate tõestama, et sõnum pärineb kindla saladuse omanikult (API allkiri, veebihaagi saatja), vajate HMAC-i. Kui peate lihtsalt kontrollima, et fail või sõnum pole muutunud, ega hooli autorsuse tõestamisest, piisab tavalisest räsist.
Kas mu salajane võti saadetakse serverisse?
Ei. See tööriist arvutab HMAC-i täielikult teie brauseris, kasutades Web Crypto API-t. Teie võtit ja sõnumit ei edastata kunagi kuhugi — võite turvaliselt testida päriseid tootmiskeskkonna saladusi.
Millist algoritmi peaksin kasutama — SHA-1, SHA-256, SHA-384 või SHA-512?
Kasutage HMAC-SHA256, kui konkreetne süsteem ei nõua teisiti — see on de facto standard API allkirjastamiseks (kasutavad AWS, Stripe, GitHubi veebihaagid ja enamik kaasaegseid API-sid) ning pakub tugevat turvavaru. HMAC-SHA1 on endiselt levinud pärandsüsteemides (nagu vanemad OAuth 1.0a rakendused), kuid SHA-1 aluseks olev räsi on nõrgem; HMAC-SHA384/512 kasutatakse seal, kus on vaja spetsiaalselt pikemat väljundit või lisaturvamarginaali.
Kas HMAC-SHA1 on ebaturvaline, kuna tavaline SHA-1 on murtud?
2017. aasta kollisiooniründed murdsid SHA-1 kui tavalise räsifunktsiooni, kuid HMAC-SHA1 peetakse endiselt krüptograafiliselt usaldusväärseks, sest HMAC-i turvalisus ei sõltu kollisioonikindlusest samal viisil. Sellegipoolest eelistage uute süsteemide jaoks HMAC-SHA256 või kõrgemat — sellel puudub praktiline puudus ja see väldib küsimust täielikult.
Millised on HMAC-i tavalised päriselu kasutusalad?
REST API päringute allkirjastamine, et server saaks kontrollida, kas kutsuja omab jagatud API saladust; veebihaagi andmekogumite kontrollimine teenustelt nagu Stripe, GitHub ja Shopify, et teada, kas päring tuli tõesti neilt ega ole võltsitud; ajapõhiste ühekordsete paroolide (TOTP/HOTP) genereerimine kaheastmeliseks autentimiseks; ning JWT tokenite allkirjastamine HS256/HS384/HS512 algoritmidega.