CBC-MAC
Un article de Wikipédia, l'encyclopédie libre.
Un MAC (Message Authentication Code) accompagnant des données a pour objet d'assurer l'intégrité de ces dernières, en permettant de vérifier qu'elles n'ont subi aucune modification, après une transmission par exemple.
CBC-MAC est l'un des algorithmes de MAC. Il est basé sur un chiffrement par bloc utilisé selon un mode d'opération CBC (cipher block chaining). Ce principe a été formulé en 1985 dans un standard du NIST (FIPS PUB 113, Standard on Computer Data Authentication).
Pour chiffrer, on découpe les données en blocs de taille adéquate (selon le chiffrement par bloc utilisé, au minimum un chiffrement par bloc de 32 bits). Les blocs sont chiffrés les uns après les autres, le résultat chiffré du bloc précédent est transmis au bloc suivant.
Sommaire |
[modifier] Description formelle
Soit Ek(Mi) l'opération de chiffrement sur un bloc de données avec la clé .
Le chiffrement se fait comme suit :
- on découpe les données en blocs de taille fixe avec un remplissage selon la norme PKCS #7 pour le dernier bloc
- on définit un vecteur d'initialisation
- on traite les blocs au fur :
Le code d'authentification correspond à une partie du dernier bloc chiffré Cn − 1 (extraction de 16 à 64 bits dans le standard du NIST).
[modifier] Sécurité
Une attaque décrite par Preneel et Van Oorschot nécessite environ 2n/2 textes connus accompagnés de leurs codes d'authentification (n est la longueur du bloc en bits), elle permet de forger des codes d'authentification. CBC-MAC n'est pas sûr avec des messages de taille variable. Pour ces raisons, il est recommandé d'utiliser XCBC-MAC si un système basé sur un MAC itératif est désiré.
[modifier] Références
- (en) Spécifications dans FIPS PUB 113
- (en) The security of cipher block chaining, M. Bellare, R. Guérin et P. Rogaway
- (en) Building MDx-MAC and building fast MACs from hash functions], Bart Preneel, P.C. van Oorschot
[modifier] Liens internes
- Keyed-Hash Message Authentication Code (HMAC)
- CMAC