🍋
Menu
Security

HMAC

HMAC (Code d'Authentification de Message par Hachage)

Un code d'authentification de message qui combine une fonction de hachage cryptographique avec une clé secrète, vérifiant à la fois l'intégrité des données et l'authenticité de l'expéditeur en une seule opération.

Détail technique

HMAC est défini dans le RFC 2104 comme HMAC(K, m) = H((K' ⊕ opad) || H((K' ⊕ ipad) || m)), où H est une fonction de hachage (SHA-256, SHA-384), K' est la clé avec padding, opad est 0x5c répété et ipad est 0x36 répété. La construction à double hachage empêche les attaques par extension de longueur qui affectent le simple H(K || m). HMAC-SHA256 est utilisé dans les JWT (JSON Web Tokens), les webhooks API (Stripe, GitHub), les signatures AWS v4 et le TLS PRF. La résistance à la falsification dépend du secret de la clé — la compromission de la clé invalide toute vérification. La comparaison à temps constant du HMAC est essentielle pour prévenir les attaques temporelles.

Exemple

```javascript
// HMAC — Web Crypto API example
const data = new TextEncoder().encode('sensitive data');
const hash = await crypto.subtle.digest('SHA-256', data);
const hex = Array.from(new Uint8Array(hash))
  .map(b => b.toString(16).padStart(2, '0')).join('');
```

Outils associés

Termes associés