Aller au contenu

CMAC : Cipher-based Message Authentication Code

Cryptographie

CMAC : Cipher-based Message Authentication Code. « Code d'authentification de message fondé sur un chiffrement par blocs », par analogie avec un cachet de cire que seul le détenteur du sceau sait reproduire.

Construction : CMAC chaîne les blocs du message à travers un chiffrement par blocs, typiquement AES, comme en mode CBC, et garde le dernier bloc comme étiquette. Deux sous-clés dérivées de la clé principale modifient le traitement du dernier bloc selon qu'il est complet ou rembourré.

Pourquoi pas CBC-MAC : Le CBC-MAC (code d'authentification en mode CBC) brut n'est sûr que pour des messages de longueur fixe : avec des longueurs variables, on peut forger des étiquettes en recollant des messages. CMAC corrige ce défaut, preuve qu'en cryptographie une sous-clé bien placée vaut mieux qu'un long discours.

Usage : Décrit par le NIST dans la publication SP 800-38B, CMAC est courant là où l'on dispose déjà d'AES matériel mais pas de fonction de hachage, comme dans les cartes à puce et l'embarqué. Sa vérification doit comparer les étiquettes en temps constant, comme pour tout MAC.

Ce qui arrive si on s'en passe

Sans code d'authentification comme CMAC, un message chiffré ou transmis en clair peut être modifié en route sans que le destinataire s'en aperçoive. Un attaquant peut alors changer un montant, rejouer une commande ou altérer une mise à jour, et le système l'accepte comme légitime. Le chiffrement seul ne suffit pas : il cache le contenu mais ne garantit pas son intégrité. Remplacer CMAC par un CBC-MAC brut sur des messages de longueur variable rouvre la porte aux falsifications par concaténation.

Explication de la marmotte

Quand deux personnes partagent un secret, elles peuvent l'utiliser pour apposer une sorte de tampon sur chaque message. Celui qui reçoit le message recalcule le tampon avec le même secret : s'il obtient le même résultat, il sait que le message vient bien de son partenaire et que personne ne l'a modifié en route. Cette méthode fabrique ce tampon en passant le message, morceau par morceau, dans une machine à brouiller les données, puis en gardant le dernier résultat.

Où ce terme est utilisé

← Tout le glossaire