Strumento per sviluppatori

Generatore di HMAC

Firma un messaggio con una chiave segreta. Non viene trasmesso nulla.

Generatore di HMAC Funziona sul tuo dispositivo
  • Funziona nel tuo browser — il tuo testo non viene mai inviato da nessuna parte
  • Nessuna registrazione, nessuna quota, gratis da usare quante volte vuoi

Come funziona

Un HMAC dimostra due cose insieme: che un messaggio non è stato alterato e che chi lo ha prodotto possiede il segreto condiviso. È ciò che firma webhook, richieste API e link di download in gran parte del web.

Diverso da un semplice hash, in ciò che conta

Chiunque può calcolare lo SHA-256 di un messaggio, quindi un hash semplice non dimostra nulla su chi lo ha creato: si cambia il messaggio, si ricalcola l'hash e nessuno se ne accorge. Un HMAC inserisce una chiave segreta nel calcolo, quindi non può essere ricalcolato senza la chiave. È tutto lì il punto, ed è il motivo per cui le firme dei webhook usano HMAC e non un hash.

Verificare in sicurezza

Quando controlli un HMAC su un server, confrontalo con una funzione a tempo costante — crypto.timingSafeEqual in Node, hash_equals in PHP. Un normale == restituisce il risultato appena due byte differiscono, e il tempo impiegato rivela quanta parte della firma era giusta, il che basta per falsificarne una con un po' di pazienza. È un attacco reale, non teorico.

Quale algoritmo

SHA-256, a meno che qualcosa non specifichi altro. SHA-1 è incluso perché molte API più vecchie richiedono ancora HMAC-SHA-1, e HMAC-SHA-1 non è stato compromesso come lo SHA-1 semplice — ma non c'è motivo di sceglierlo per qualcosa di nuovo.

Esadecimale o Base64

Dipende solo da ciò che si aspetta l'altra parte. L'esadecimale è lungo il doppio e più facile da leggere; Base64 è più compatto e comune negli header HTTP. La stessa firma viene mostrata in entrambi.

La tua chiave resta qui

Generato con la Web Crypto API del browser. La chiave e il messaggio non vengono mai inviati da nessuna parte, che è l'unico modo responsabile di offrire questo strumento — uno strumento di firma che carica il tuo segreto ha consegnato proprio ciò che il segreto protegge.

FAQ

Generatore di HMAC — domande

In cosa un HMAC è diverso da un hash?

Un hash può essere ricalcolato da chiunque. Un HMAC richiede la chiave segreta, quindi dimostra chi lo ha prodotto.

Quale algoritmo devo usare?

SHA-256, a meno che un'API non indichi altro. SHA-1 è disponibile per i sistemi più vecchi che lo richiedono ancora.

Devo usare esadecimale o Base64?

Quello che si aspetta l'altra parte. Per la stessa firma vengono mostrati entrambi.

Perché il confronto deve avvenire in tempo costante?

Un confronto normale termina subito al primo carattere diverso, e la differenza di tempo rivela quanta parte era corretta — abbastanza per falsificare una firma.

La mia chiave segreta viene inviata da qualche parte?

No. Tutto viene eseguito nel tuo browser tramite la Web Crypto API.