Le CBC-MAC fait partie des algorithmes utilisés pour mettre en place des codes d’authentification de message ou MAC. Le dispositif est axé sur un chiffrement par bloc employé selon un mode d’opération appelé le CBC ou le Cipher Block Chaining, une notion formulée en 1985 dans un standard du NIST.
Comment ça fonctionne ?
Pour que ce soit plus simple, prenons un exemple concret. Imaginons que pour prévenir des virus, vous préservez une version hachée de tous les fichiers systèmes figurant sur votre ordinateur. Lorsqu’un virus tente d’attaquer le fichier système, vous pourrez alors le remarquer puisque les versions hachées ne coïncident plus. Cependant, si le virus est plus redoutable dans ce cas, il peut changer la version hachée et vous ne vous en rendrez pas compte. Si cela arrive, le mieux est de stocker un code d’authentification qui dépendra d’une clé secrète que vous serez le seul à connaitre. Le virus pourra donc modifier le fichier système mais ne pourra pas calculer le code d’authentification qui correspond à chaque fichier. Vous pourrez ainsi détecter que vos fichiers ont été modifiés.
Entrons plus dans le détail
Le code d’authentification de message est une fonction h(M,K) où M est le message et K la clé secrète renvoyant un texte de longueur prédéterminée. L’algorithme vérifie plusieurs propriétés. Il est très facile de calculer h(M,K). Cependant, si on connait des exemples de code ayant été calculés avec une clé semblable, que nous définissons comme h(M1,K) ou encore h(Mn,K) et que si on dispose d’un nouveau message M, mais que nous ne disposons pas de la clé K, il est impossible d’estimer la fonction h. Quand deux ou plusieurs individus utilisent des codes d’authentification de message, l’expéditeur et le destinataire se mettent d’accord sur une clé secrète qu’ils doivent utiliser via un canal sécurisé. Ainsi, lorsqu’il envoie un message M, il calcule automatiquement son MAC à partir de la clé secrète et transmet le message M et son code MAC. Au moment où le destinataire reçoit le message, il calcule aussi le MAC avec sa propre clé et fait la comparaison avec la version qu’il a reçue. Si les deux clés sont semblables, il peut s’assurer que son message n’a pas été modifié sinon c’est que quelque chose n’est pas normal.
Comment les codes sont-ils fabriqués ?
Le moyen le plus simple pour fabriquer des codes d’authentification de message est l’utilisation de l’algorithme de chiffrement par blocs ou le CBC. L’avantage est que tous les blocs chiffrés dépendent du précédent. Par ailleurs, le dernier bloc que nous appellerons Cr dépend de tout le message et non pas seulement du dernier bloc. Il peut donc servir de MAC pour le message M. Pour que ce soit plus sûr, il faut chiffrer ce dernier bloc pour que ça devienne le réel MAC du message. Nous parlons alors d’EMAC ou Encrypted Mac. Outre cette méthode, il est aussi possible de construire un code d’authentification de message en utilisant une fonction de hachage appelée HMAC. Cette fonction ne dépend pas d’une clé alors qu’on peut produire une fonction de hachage à l’aide d’un code d’authentification de message.