HMAC (Hash-based Message Authentication Code) est un mécanisme cryptographique qui utilise une clé secrète combinée à une fonction de hachage pour vérifier à la fois l'intégrité et l'authenticité d'un message.
Qu'est-ce que HMAC ?
HMAC (Hash-based Message Authentication Code) est un mécanisme de signature cryptographique permettant de vérifier deux choses :
- L'intégrité — Le message n'a pas été modifié en transit
- L'authenticité — Le message provient bien de l'expéditeur légitime
Comment fonctionne HMAC ?
HMAC combine une clé secrète partagée entre l'expéditeur et le destinataire avec une fonction de hachage (SHA-256, SHA-512, etc.) :
- L'expéditeur crée un hash du message en utilisant la clé secrète :
HMAC(clé, message) = signature - La signature est envoyée avec le message
- Le destinataire recalcule le hash avec la même clé et compare
- Si les signatures correspondent, le message est authentique et intègre
HMAC dans le Tracking IA
Dans le contexte du tracking IA, HMAC est utilisé pour signer les événements envoyés par le tracker au serveur. Cela empêche :
- L'injection de faux événements — Un attaquant ne peut pas fabriquer de faux crawls ou referrals
- La modification en transit — Les données ne peuvent pas être altérées entre le tracker et le serveur
- Le replay attack — Combiné avec un timestamp, les anciens événements ne peuvent pas être rejoués
Exemple pratique
import hmac, hashlib
secret = "votre_hmac_secret"
message = '{"event":"crawl","bot":"GPTBot","url":"/page"}'
signature = hmac.new(secret.encode(), message.encode(), hashlib.sha256).hexdigest()
# Envoyer le message + signature dans l'en-tête X-Signature