Kehittäjätyökalu

HMAC-generaattori

Allekirjoita viesti salaisella avaimella. Mitään ei lähetetä.

HMAC-generaattori Toimii laitteellasi
  • Toimii selaimessasi — tekstiäsi ei lähetetä minnekään
  • Ei rekisteröitymistä, ei kiintiöitä, ilmainen käyttää niin usein kuin haluat

Näin se toimii

HMAC todistaa kaksi asiaa kerralla: että viestiä ei ole muutettu ja että sen tuottajalla on yhteinen salaisuus. Sillä allekirjoitetaan webhookit, rajapintapyynnöt ja latauslinkit suurimmassa osassa verkkoa.

Tavallisesta tiivisteestä eroaa olennaisella tavalla

Kuka tahansa voi laskea viestin SHA-256-tiivisteen, joten pelkkä tiiviste ei todista mitään sen tekijästä: muuta viestiä, laske tiiviste uudelleen, eikä kukaan huomaa eroa. HMAC sekoittaa laskentaan salaisen avaimen, joten sitä ei voi laskea uudelleen ilman avainta. Se on koko idea, ja siksi webhook-allekirjoituksissa käytetään HMAC:ia eikä tiivistettä.

Turvallinen tarkistus

Kun tarkistat HMAC:in palvelimella, vertaa sitä vakioaikaisella funktiolla: crypto.timingSafeEqual Node.js:ssä, hash_equals PHP:ssä. Tavallinen == palauttaa heti, kun kaksi tavua eroaa, ja siihen kuluva aika paljastaa, kuinka suuri osa allekirjoituksesta oli oikein, mikä riittää sellaisen väärentämiseen kärsivällisellä yrittämisellä. Hyökkäys on todellinen, ei teoreettinen.

Mikä algoritmi

SHA-256, ellei jokin muuta määrää. SHA-1 on mukana, koska monet vanhemmat rajapinnat vaativat edelleen HMAC-SHA-1:tä, eikä HMAC-SHA-1 ole murtunut samalla tavalla kuin pelkkä SHA-1 – mutta ei ole syytä valita sitä mihinkään uuteen.

Heksa vai Base64

Pelkästään kysymys siitä, mitä toinen osapuoli odottaa. Heksa on kaksi kertaa pidempi ja helpompi lukea; Base64 on tiiviimpi ja yleinen HTTP-otsakkeissa. Sama allekirjoitus näytetään molemmissa.

Avaimesi pysyy täällä

Luodaan selaimen oman Web Crypto API:n avulla. Avainta ja viestiä ei lähetetä minnekään, mikä on ainoa vastuullinen tapa tarjota tällainen työkalu – allekirjoitustyökalu, joka lähettää salaisuutesi palvelimelle, on luovuttanut juuri sen, mitä salaisuus suojaa.

UKK

HMAC-generaattori – kysymykset

Miten HMAC eroaa tiivisteestä?

Kuka tahansa voi laskea tiivisteen uudelleen. HMAC tarvitsee salaisen avaimen, joten se todistaa, kuka sen tuotti.

Mitä algoritmia minun pitäisi käyttää?

SHA-256, ellei rajapinta määrää toisin. SHA-1 on tarjolla vanhoille järjestelmille, jotka edelleen vaativat sitä.

Pitäisikö käyttää heksaa vai Base64:ää?

Sitä, mitä toinen osapuoli odottaa. Sama allekirjoitus näytetään molemmissa muodoissa.

Miksi vertailun pitää olla vakioaikainen?

Tavallinen vertailu päättyy heti ensimmäiseen eroavaan kohtaan, ja ajoituksen ero paljastaa, kuinka suuri osa oli oikein – tarpeeksi allekirjoituksen väärentämiseen.

Lähetetäänkö salainen avaimeni jonnekin?

Ei. Kaikki toimii selaimessasi Web Crypto API:n kautta.