Intégrité ET authenticité
Le MAC : un code d'authentification avec clé
Pour lier une empreinte à un émetteur, on remplace le hachage nu par un code d'authentification de message, ou MAC (Message Authentication Code).
La définition
Un MAC est une fonction qui prend deux entrées et produit une courte étiquette :
tag = MAC(clé_secrète, message)
Cette étiquette (le tag) est souvent appelée balise ou code d'authentification. Le point crucial : sans la clé, on ne peut pas calculer le bon tag pour un message donné.
Le protocole complet
Alice et Bob partagent d'avance une même clé secrète K. L'échange se déroule ainsi :
ALICE (clé K) BOB (clé K)
------------ -----------
tag = MAC(K, M)
|
| envoie [ M ] [ tag ]
+-----------------------------------> reçoit M, tag
tag' = MAC(K, M)
tag' == tag ?
oui -> accepte
non -> rejette
Bob recalcule lui-même le tag à partir du message reçu et de sa copie de la clé. Si son résultat tag' est identique au tag reçu, il a la preuve de deux choses en même temps : le message n'a pas changé (intégrité) et il vient de quelqu'un qui connaît K, donc d'Alice (authenticité).
Pourquoi Mallory échoue
Reprenons l'attaquant actif du chapitre précédent. Mallory veut substituer M'. Il lui faudrait joindre MAC(K, M'). Mais il ne connaît pas K. Il ne peut donc produire aucun tag valide, et Bob rejette le message forgé.
MAC contre signature
On confond parfois MAC et signature numérique. Les deux authentifient, mais le modèle de clé diffère profondément :
| MAC | Signature | |
|---|---|---|
| Type de clé | symétrique (partagée) | asymétrique (privée/publique) |
| Qui peut créer un tag | les deux parties | seul le détenteur de la clé privée |
| Qui peut vérifier | ceux qui ont la clé | tout le monde (clé publique) |
| Non-répudiation | non | oui |
Comme Alice et Bob partagent la même clé, un MAC ne prouve pas lequel des deux a émis le message : chacun aurait pu produire le tag. Il n'offre donc pas la non-répudiation. En échange, il est bien plus rapide qu'une signature et suffit quand les deux parties se font confiance.
En résumé
Un MAC combine une clé secrète et un message pour produire un tag que seul un détenteur de la clé peut calculer. L'émetteur envoie message + tag ; le récepteur recalcule le tag avec la clé partagée et compare. Cela garantit intégrité et authenticité à la fois. Contrairement à une signature (clé asymétrique, vérifiable par tous, non-répudiation), le MAC repose sur une clé symétrique partagée : plus rapide, mais sans preuve de l'émetteur exact.

