CodeKitHub
Kodeerimistööriistad

HMAC-i generaator

Viimati uuendatud:

See tööriist arvutab HMAC-i (Hash-based Message Authentication Code) salajasest võtmest ja sõnumist, kasutades aluseks olevat räsifunktsiooni SHA-1, SHA-256, SHA-384 või SHA-512. Erinevalt tavalisest räsist nõuab HMAC jagatud salajast võtit, seega tõestab see, et sõnum pärineb selle võtme omanikult ja seda pole edastamise ajal muudetud — just seetõttu kasutavad API-d HMAC-e päringute allkirjastamiseks ja veebihaagid saatja kontrollimiseks. Kõik toimub kohalikult teie brauseri sisseehitatud Web Crypto API kaudu; teie salajast võtit ja sõnumit ei saadeta kunagi ühelegi serverile.

HMAC-SHA1
HMAC-SHA256
HMAC-SHA384
HMAC-SHA512

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

  1. Sisestage oma salajane võti väljale "Secret Key".
  2. Sisestage sõnum, mida soovite autentida, väljale "Message".
  3. HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 ja HMAC-SHA512 tulemused genereeritakse kohe (märkige "Uppercase output", kui teie sihtsüsteem eeldab suurtähti).
  4. Klõpsake "Copy" vajaliku HMAC-i kõrval.

Näide

Sisend

Secret Key: key
Message: The quick brown fox jumps over the lazy dog

Tulemus

HMAC-SHA256: f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
HMAC-SHA1: de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9

See 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.

AlgoritmVäljundi suurusTüüpiline kasutus
HMAC-SHA1160-bit (40 kuueteistkümnendmärki)Pärandsüsteemide API-d, vanemad OAuth 1.0a allkirjad
HMAC-SHA256256-bit (64 kuueteistkümnendmärki)API päringute allkirjastamine, JWT HS256, veebihaagi kontroll
HMAC-SHA384384-bit (96 kuueteistkümnendmärki)Kõrgema kindlusega allkirjad, kus on vajalik pikem väljund
HMAC-SHA512512-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.

Seotud tööriistad