Glossario

HMAC

codice di autenticazione del messaggio basato su hashhash con chiave

HMAC è un codice di autenticazione del messaggio con chiave costruito da una funzione di hash crittografica.

Definizione

HMAC significa Hash-based Message Authentication Code. Combina una chiave segreta con una funzione di hash crittografica per produrre un tag di autenticazione di dimensione fissa per un messaggio.

Un verificatore con la stessa chiave segreta ricalcola il tag sugli esatti byte del messaggio e lo confronta con il tag ricevuto. Una corrispondenza indica che il messaggio non è cambiato e che il tag è stato creato da qualcuno che conosceva la chiave condivisa.

Come funziona

HMAC calcola hash di chiave e messaggio in due passaggi annidati con costanti di padding diverse. Questa costruzione è più sicura del semplice hash(key || message), che può essere vulnerabile con alcune funzioni di hash.

La funzione di hash scelta determina la dimensione del tag: HMAC-SHA256 produce 32 byte, di solito scritti come 64 caratteri esadecimali. HMAC-SHA512 e HMAC-SHA384 producono tag più lunghi, mentre HMAC-SHA1 resta soprattutto per compatibilità.

Uso e limiti

HMAC è usato per firme API, webhook, dati di sessione, JWT HS256 e messaggi di protocollo quando entrambe le parti condividono già un segreto. Fornisce integrità e autenticazione, non riservatezza: il messaggio non viene nascosto.

Usa una chiave segreta casuale, conserva gli esatti byte firmati e confronta i tag con un confronto a tempo costante nel codice applicativo. Per verifica pubblica senza segreto condiviso usa una firma digitale.

Domande frequenti

No. HMAC autentica un messaggio ma non lo nasconde. Usa la cifratura separatamente quando il messaggio deve restare confidenziale.

Un hash normale non ha una chiave segreta, quindi chiunque può modificare il messaggio e calcolare un nuovo hash. HMAC richiede il segreto condiviso per creare un tag valido.

No. La verifica ricalcola il tag dal messaggio originale e dalla chiave segreta; non recupera nessuno dei due valori dal tag.

Vedi anche