Cosa fa
HMAC (codice di autenticazione del messaggio basato su hash, RFC 2104) combina una chiave segreta con una funzione di hash per firmare un messaggio. Il destinatario, che conosce la stessa chiave, ricalcola l’HMAC e lo confronta con quello ricevuto. Se il messaggio è stato modificato o il mittente non conosceva la chiave, i valori non coincidono.
Gli HMAC sono ovunque: firme dei webhook (GitHub, Stripe, Slack), richieste API firmate, JWT con HS256, firma dei cookie e password monouso. Questo strumento calcola insieme HMAC-MD5, HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 e HMAC-SHA512, così puoi confrontare il valore con quello del tuo sistema.
Come si usa
- Inserisci la Chiave segreta. Cambia il Formato chiave se la chiave è data in byte hex o Base64 invece che come testo.
- Incolla il Messaggio o fai clic su Esempio.
- Tutti gli HMAC si aggiornano mentre scrivi. Scegli output Hex o Base64 e copia il valore che ti serve.
Il messaggio è codificato in UTF-8 esattamente come lo scrivi, spazi e a capo compresi.
Esempio
Con la chiave key e il messaggio The quick brown fox jumps over the lazy dog, l’HMAC-SHA256 è f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8. Puoi verificarlo da riga di comando:
echo -n "The quick brown fox jumps over the lazy dog" | openssl dgst -sha256 -hmac "key"
Nota il -n: senza, echo aggiunge un a capo e l’HMAC cambia.
Verificare i webhook
Per verificare un webhook prendi il corpo grezzo della richiesta prima del parsing JSON, costruisci la stringa indicata dal fornitore (spesso timestamp.body), calcola l’HMAC con il tuo segreto di firma e confrontalo con l’header della firma. Nel tuo codice confronta le firme con una funzione a tempo costante per evitare attacchi a tempo.
Domande frequenti
› Qual è la differenza tra un hash e un HMAC?
Chiunque può calcolare un hash semplice come SHA-256. Un HMAC mescola nell'hash una chiave segreta, quindi solo chi conosce la chiave può generare o verificare il valore. È un codice di autenticazione del messaggio, non solo un checksum.
› Quale algoritmo HMAC conviene usare?
HMAC-SHA256 è la scelta abituale ed è quello richiesto dalla maggior parte di API e webhook. Va bene anche HMAC-SHA512. HMAC-MD5 e HMAC-SHA1 sono ancora considerati sicuri come MAC, ma usali solo se un sistema datato li richiede.
› Perché il mio HMAC non corrisponde a quello del server?
Controlla i byte esatti del messaggio (un a capo finale o spazi JSON diversi cambiano tutto), il formato della chiave (testo, hex o Base64) e la codifica dell'output. I fornitori di webhook spesso firmano una stringa composta da un timestamp e dal corpo grezzo della richiesta.
› La mia chiave segreta viene salvata o inviata?
No. L'HMAC viene calcolato nel browser. La chiave resta solo nella memoria di questa pagina: non viene salvata, non finisce nella barra degli indirizzi e non è inclusa nei link di condivisione.