Brevet FR3086483A1 — publié le 20200327

DOMAINE TECHNIQUE AUQUEL SE RAPPORTE L'INVENTION La présente invention concerne de manière générale le domaine des algorithmes cryptographiques de chiffrement authentifié. Elle concerne plus particulièrement un procédé de production d'un code d'authentification et un dispositif de traitement cryptographique associé. ARRIERE-PLAN TECHNOLOGIQUE On connaît des algorithmes cryptographiques de chiffrement authentifié 10 tels que l'algorithme dénommé GCM (pour "Galois Counter Mode"). Dans de tels algorithmes cryptographiques, on associe un algorithme de chiffrement par blocs, qui génère des données chiffrées comprenant une pluralité de blocs de données ordonnés, et un algorithme de production d'un code d'authentification associé à ces données chiffrées. 15 On prévoit par exemple pour ce faire dans le cadre de l'algorithme GCM que, pour chaque bloc de données, un mot de sortie est déterminé en fonction d'un premier produit obtenu par multiplication (dans le corps de Galois concerné) d'un mot de combinaison par un multiplicateur, ce mot de combinaison étant lui-même obtenu par combinaison par ou exclusif d'un mot d'entrée et du bloc de 20 données concerné. OBJET DE L'INVENTION Dans ce contexte, la présente invention propose un procédé de production d'un code d'authentification associé à des données (par exemple des données chiffrées) comprenant une pluralité de blocs de données ordonnés, dans 25 lequel, pour chaque bloc de données, un mot de sortie est déterminé en fonction d'un premier produit obtenu par multiplication d'un mot de combinaison par un multiplicateur, le mot de combinaison étant obtenu par combinaison par ou exclusif d'un mot d'entrée et du bloc de données concerné, caractérisé en ce qu'il comprend une étape de détermination d'un mot de masquage et une étape de 30 détermination d'un mot correctif égal à la combinaison par ou exclusif du mot de masquage et d'un second produit obtenu par multiplication du mot de masquage par le multiplicateur, et en ce que, pour chaque bloc de données, le mot de sortie est déterminé au moyen d'une combinaison par ou exclusif d'une pluralité de données incluant le premier produit associé à ce bloc de données et le mot 2 correctif. En effet, les inventeurs se sont rendu compte que les algorithmes de chiffrement authentifié présentés en introduction pouvaient être l'objet d'attaques par canal auxiliaire visant à obtenir le multiplicateur afin de pouvoir générer 5 ultérieurement de faux codes d'authentification. Le procédé proposé ci-dessus permet de manipuler les données sous forme masquée (au moins par le mot de masquage). L'utilisation du mot correctif (et notamment son application lors de la détermination du mot de sortie) permet par ailleurs de conserver le masque inchangé tout au long du procédé, malgré l'utilisation d'une multiplication (qui impliquerait en théorie une mise à jour du masque par multiplication, ce qui représente un coût calculatoire important). On note que la multiplication mentionnée ici est une multiplication dans un corps de Galois, précisément ici dans le corps de Galois de cardinal 21, où I est la longueur en bits de chaque bloc de données précité (et/ou des mots d'entrée et/ou de mots de sortie et/ou du multiplicateur et/ou du mot correctif et/ou du code d'authentification). D'autres caractéristiques envisageables à titre optionnel sont les suivantes : - pour au moins un bloc de données, le mot d'entrée est égal au mot de sortie déterminé pour le bloc de données précédent ; - pour le premier bloc de données, le mot d'entrée est obtenu en fonction de données d'authentification et du multiplicateur ; - le procédé comprend une étape de combinaison par ou exclusif d'une partie au moins des données d'authentification et du mot de masquage ; - le code d'authentification est déterminé en fonction du mot de masquage et du mot de sortie obtenu pour le dernier bloc de données ; - le mot d'entrée et/ou le mot de combinaison et/ou le mot de sortie et/ou le mot de masquage ont une longueur de 128 bits. Selon une possibilité de mise en oeuvre (dont un exemple est décrit ci- après en référence à la figure 4), le procédé peut comprendre les étapes suivantes : - détermination d'un mot de masquage additionnel initial ; - mémorisation du mot de masquage additionnel initial dans un élément de mémorisation en tant que mot de masquage courant ; 3 - pour chaque bloc de données, lecture du mot de masquage courant dans l'élément de mémorisation, obtention d'un troisième produit par multiplication du mot de masquage courant par le multiplicateur, et mémorisation du troisième produit dans l'élément de mémorisation en tant que nouveau mot de masquage 5 courant. Selon cette possibilité où plusieurs masques sont utilisés, le mot de masquage est conservé tout au long du processus comme expliqué ci-dessus, tandis que le mot de masquage additionnel est mis à jour par multiplication. Autrement dit, le procédé peut alors comprendre les étapes suivantes : 10 - détermination d'un premier ensemble de masque(s) et d'un second ensemble de masque(s), le premier ensemble comprenant le mot de masquage, - pour chaque masque du premier ensemble, détermination d'un mot correctif associé égal à la combinaison par ou exclusif du masque concerné et d'un produit obtenu par multiplication du masque concerné par le multiplicateur. 15 Pour chaque bloc de données, le mot de sortie peut alors être déterminé au moyen d'une combinaison par ou exclusif du premier produit associé à ce bloc de données et des mots correctifs respectivement associés aux masques du premier ensemble. Le(s) masque(s) du premier ensemble peut (peuvent) ainsi être conservé(s) tout au long du procédé. 20 Le procédé peut alors comprendre par ailleurs, pour chaque détermination d'un mot de sortie, une étape de mise à jour de chacun des masques du second ensemble au moyen d'une multiplication par le multiplicateur. Afin d'optimiser l'équilibre entre temps de traitement et sécurité, on peut prévoir par exemple que la différence entre le nombre de masque(s) du second 25 ensemble et le nombre de masque(s) du premier ensemble est égale à 0 ou 1. L'invention propose également un dispositif de traitement cryptographique comprenant un module de chiffrement conçu pour produire des données (par exemple des données chiffrées) comprenant une pluralité de blocs de données ordonnés, et un module d'authentification conçu pour produire un 30 code d'authentification associé auxdites données, dans lequel le module d'authentification est conçu pour obtenir, pour chaque bloc de données, un mot de combinaison par combinaison par ou exclusif d'un mot d'entrée et du bloc de données concerné, et pour déterminer un mot de sortie en fonction d'un premier produit obtenu par multiplication du mot de combinaison par un multiplicateur, 4 caractérisé en ce qu'il comprend une unité de détermination d'un mot de masquage et une unité de détermination d'un mot correctif égal à la combinaison par ou exclusif du mot de masquage et d'un second produit obtenu par multiplication du mot de masquage par le multiplicateur, et en ce que le module 5 d'authentification est conçu pour déterminer, pour chaque bloc de données, le mot de sortie au moyen d'une combinaison par ou exclusif d'une pluralité de données incluant le premier produit associé à ce bloc de données et le mot correctif. Les caractéristiques optionnelles présentées plus haut en termes de procédé peuvent éventuellement s'appliquer à un tel dispositif 10 DESCRIPTION DETAILLEE D'UN EXEMPLE DE REALISATION La description qui va suivre en regard des dessins annexés, donnés à titre d'exemples non limitatifs, fera bien comprendre en quoi consiste l'invention et comment elle peut être réalisée. Sur les dessins annexés : 15 - la figure 1 représente schématiquement les éléments principaux d'une entité électronique au sein de laquelle est mise en oeuvre l'invention ; - la figure 2 représente sous forme fonctionnelle des éléments de l'entité électronique de la figure 1 ; - la figure 3 représente un premier exemple de procédé de production 20 d'un code d'authentification conforme à l'invention ; - la figure 4 représente un second exemple de procédé de production d'un code d'authentification conforme à l'invention. La figure 1 représente schématiquement les éléments principaux d'une entité électronique 1 au sein de laquelle est mise en oeuvre l'invention. Cette entité 25 électronique est par exemple une carte à microcircuit, telle qu'une carte à circuit intégré universelle (ou UICC pour "Uniyersal Integrated Circuit Caro"'). En variante, il pourrait s'agir d'un élément sécurisé (ou SE pour "Secure Element') - par exemple un microcontrôleur sécurisé ; un tel élément sécurisé est par exemple intégré à un dispositif électronique portatif (ou "hand-held electronic device" selon 30 l'appellation anglo-saxonne), tel qu'un terminal de communication ou un passeport électronique. Selon une autre variante encore, l'entité électronique 1 pourrait être un ordinateur ou un module matériel de sécurité (ou HSM pour "Hardware Security Module"). L'entité électronique 1 comprend un processeur 2 (ici un 5 microprocesseur), une mémoire vive 4 et une mémoire non-volatile réinscriptible 6 (par exemple de type EEPROM pour "Electrically Erasable and Programmable Read-Only Memory'). L'entité électronique 1 pourrait éventuellement comprendre en outre une mémoire morte. La mémoire vive 4 et la mémoire non-volatile 5 réinscriptible 6 (ainsi que le cas échéant la mémoire morte) sont chacune liées au processeur 2 de sorte que le processeur 2 peut lire ou écrire des données dans chacune de ces mémoires. Une de ces mémoires, par exemple la mémoire non-volatile réinscriptible 6, mémorise des instructions de programme d'ordinateur, dont certaines 10 permettent la mise en oeuvre de l'un des procédés décrits ci-dessous en référence aux figures 3 et 4 lorsque ces instructions sont exécutées par le processeur 2. Les mémoires 4, 6 stockent également des données représentatives de valeurs utilisées lors de la mise en oeuvre de ce procédé. La mémoire non-volatile réinscriptible 6 mémorise en particulier une clé cryptographique K (utilisée comme 15 décrit plus bas). Comme expliqué plus bas, l'entité électronique 1 est conçue (ici grâce à certaines des instructions mémorisées dans une mémoire 4, 6 de l'entité électronique 1 et exécutables par le processeur 2 de l'entité électronique) pour mettre en oeuvre un procédé de production d'un code d'authentification T (en 20 anglais : "authentication tag") un tel procédé comprend ici au moins une étape de traitement cryptographique (telle qu'une étape de chiffrement d'un bloc de données Di par application d'un algorithme cryptographique de chiffrement utilisant la clé cryptographique K). L'entité électronique 1 est donc un dispositif de traitement cryptographique. 25 L'entité électronique 1 comprend en outre une interface de communication 8 avec des dispositifs électroniques externes. Dans le cas décrit ici où l'entité électronique 1 est une carte à microcircuit, l'interface de communication 8 comprend par exemple des contacts affleurant sur une face de la carte à microcircuit. En variante, l'interface de communication 8 pourrait être réalisée par 30 un module de communication sans contact. De manière générale, l'interface de communication 8 peut être un module de communication (filaire ou sans fil) avec une autre entité électronique. Dans certains modes de réalisation, le processeur 2 peut ainsi recevoir des données (ici des données d'authentification A formées de m blocs Ai et/ou des 6 données à chiffrer D formées de n blocs Di) de l'autre entité électronique via l'interface de communication 8 et/ou émettre d'autres données (ici par exemple des données chiffrées C formées de n blocs C, et/ou le code d'authentification T produit comme expliqué ci-après) à destination de l'autre entité électronique via 5 l'interface de communication 8. On décrit ci-dessous des solutions pour chiffrer par bloc les données à chiffrer D et produire un code d'authentification T de ces données chiffrées C et de données d'authentification A (à seulement authentifier), ici conformément à l'algorithme GCM (pour "Galois Counter Mode"). 10 Les n blocs (ordonnés) D, de données à chiffrer D (ainsi que les n blocs ordonnées C, de données chiffrées C), les m blocs (ordonnés) A, de données d'authentification A et le code d'authentification T ont ici la même longueur (en bits), par exemple 128 bits dans le cadre de l'algorithme GCM. La figure 2 représente sous forme fonctionnelle des éléments du 15 dispositif de traitement cryptographique (ici l'entité électronique 1) conforme à l'invention. Chaque élément (module ou unité) décrit ci-dessous est mis en oeuvre en pratique par la coopération d'éléments matériels et logiciels, ici par la mise en oeuvre de fonctionnalités par le processeur 2 du fait de l'exécution, par ce 20 processeur 2; d'instructions de programme d'ordinateur mémorisées dans une mémoire de l'entité électronique 1 (par exemple la mémoire non-volatile réinscriptible 6). En variante, ces éléments pourraient être réalisés au sein d'un circuit intégré à application spécifique (ou ASIC pour "Application Specific Integrated Circuit'). 25 L'entité électronique 1 comprend ainsi un module de chiffrement 10 et un module d'authentification 20. Le module de chiffrement 10 est conçu pour appliquer un chiffrement par bloc aux blocs D, de données à chiffrer afin d'obtenir des blocs C, de données chiffrées). 30 Pour ce faire, le module de chiffrement 10 comprend un compteur 12, qui génère une valeur de compteur CNT, et une unité cryptographique 14, qui applique un algorithme cryptographique de chiffrement E à la valeur de compteur CNT courante. L'algorithme cryptographique de chiffrement E utilisé ici est un algorithme 7 de chiffrement de type AES utilisant la clé cryptographique K (mémorisée dans l'entité électronique 1 comme déjà indiqué). La valeur produite en sortie de l'unité cryptographique 14 - valeur que l'on peut donc noter EK(CNT) - est appliquée en entrée d'un opérateur de ou 5 exclusif 16, qui reçoit sur une autre entrée le bloc courant Di à chiffrer. La valeur produite en sortie de l'opérateur de ou exclusif 16 (et ainsi en sortie du module de chiffrement 10) est le bloc de données chiffrées Ci associé au bloc courant Di : C = D t EK(CNT). 10 Le module d'authentification 20 est conçu pour produire le code d'authentification T déjà mentionné, ce code d'authentification T étant associé aux blocs de données chiffrées Ci ainsi produits et aux blocs Ai de données d'authentification. Le module d'authentification 20 comprend une unité de sélection 22 qui 15 sélectionne (selon l'étape du procédé de production du code d'authentification, comme décrit ci-après en référence à la figure 3) un bloc courant de données d'authentification Ai ou le bloc courant de données chiffrées C. Le bloc ainsi sélectionné et produit en sortie de l'unité de sélection 22 est noté Bi dans la suite. 20 Le module d'authentification 20 comprend également une unité de détermination 28 conçue pour déterminer, ici par tirage aléatoire, un mot de masquage M. Le mot de masquage M a ici une longueur (en bits) identique à celle des blocs de données Di, A, Ci (soit 128 bits dans l'exemple décrit). Comme expliqué dans la suite, le mot de masquage M permet de 25 masquer les données manipulées au sein du module d'authentification 20 (chaque bloc de donnée manipulé Xi étant masqué en combinant le bloc de données concerné et le mot de masquage M par une opération de ou exclusif 0). L'unité de détermination 28 produit donc un seul mot de masquage M au cours du procédé de production du code d'authentification (mot de masquage M qui est par 30 exemple mémorisé dans la mémoire vive 4). Le module d'authentification 20 comprend également un opérateur de ou exclusif 24 qui reçoit en entrée le bloc sélectionné Bi (c'est-à-dire soit un bloc de données d'authentification A soit un bloc de données chiffrées Ci selon l'étape du procédé) et une donnée d'entrée Xi. 8 Comme cela ressortira de la présentation du procédé de production du code d'authentification en référence à la figure 3, la donnée d'entrée Xi est égale au mot de masquage M lors de la première itération, et, lors des autres itérations, est égale à la valeur de sortie Xhi obtenue à l'itération précédente. 5 Le module d'authentification 20 comprend également un opérateur de multiplication 26 qui reçoit en entrée la valeur obtenue en sortie de l'opérateur de ou exclusif 24 (soit X S Bi) et un multiplicateur H. Dans l'exemple décrit ici, le multiplicateur H est égal à la valeur EK(0) obtenue par application de l'algorithme cryptographique de chiffrement E utilisant 10 la clé cryptographique K à la valeur 0 (soit ici 128 bits de valeur nulle). Le multiplicateur H a donc une longueur en bits égale (notamment) à celle de chaque bloc Di de données à chiffrer (et donc égale à celle de chaque bloc Ci de données chiffrées), ici une longueur de 128 bits. Le multiplicateur H peut éventuellement en pratique être mémorisé au 15 sein de l'entité électronique 1 (par exemple dans la mémoire non-volatile réinscriptible 6). En variante, le multiplicateur H peut être calculé à chaque utilisation au moyen de la clé cryptographique K (mémorisée quant à elle au sein de l'entité électronique 1). L'opérateur de multiplication 26 effectue une multiplication dans le corps de Galois GF(2') des valeurs reçues en entrée, soit l'opération (Xi Bi) . H, où I 20 en, est la longueur (en bits) des blocs de données Di, Ai, Ci et "." le symbole représentant la multiplication dans le corps de Galois. Dans l'exemple décrit ici, la multiplication est donc effectuée dans le corps de Galois GF(2128). La structure de corps est par exemple construite sur la 25 base du polynôme irréductible à coefficients dans le corps de Galois GF(2) X128 + X7 + X2 + X + 1. Le module d'authentification 20 comprend en outre une unité de détermination 30 d'un mot correctif P égal à la combinaison par ou exclusif du mot de masquage H et du produit M.H obtenu par multiplication (dans le corps de 30 Galois) du mot de masquage M par le multiplicateur H. L'unité de détermination 30 comprend par exemple un opérateur de multiplication 32 qui reçoit en entrée le mot de masquage M et le multiplicateur H, et un opérateur de ou exclusif 34 qui reçoit en entrée le mot de masquage M et la sortie de l'opérateur de multiplication 32. 9 L'opérateur de ou exclusif 34 produit ainsi en sortie le mot correctif P : P M 0 Mi-1. Le module d'authentification 20 comprend enfin un opérateur de ou exclusif 36 qui reçoit en entrée le produit (Xi 0 Bi) . H (généré par l'opérateur de 5 multiplication 26) et le mot correctif P (généré par l'unité de détermination 30) afin de produire une donnée de sortie )(Hi : X111 = (Xi Bi) H P. Si on note Yi la donnée d'entrée (non-masquée) reçue en entrée à cette étape selon l'algorithme GCM (avec ainsi Xi = Yi M), on a: 10 1, Bi) - H Xhi = (Yi M) Ht P (Yi ^-- ce qui correspond à la valeur générée par cette étape selon l'algorithme GCM (valeur (Yi G Bi) . H) masquée par le mot de masquage M. L'application du mot correctif P permet ainsi de conserver le masquage par le (même) mot de masquage M lors de la mise en oeuvre de l'algorithme GCM, 15 malgré les opérations de multiplication utilisées lors des étapes de l'algorithme GCM. Le module d'authentification 20 peut comprendre en outre une unité (non représentée) de production d'un code intermédiaire masqué conçu pour produire le code intermédiaire masqué Xmnij en fonction notamment des données 20 de sortie Xr',r, (produites lors de la dernière itération de l'étape E22 décrite ci - après) et du mot correctif P, par exemple conformément à l'étape E28 décrite plus bas. Le module d'authentification 20 peut également comprendre une unité (non représentée) de production du code d'authentification T conçue pour 25 effectuer un démasquage du code intermédiaire masqué Xif,,.1, ici en appliquant le mot de masquage M au code intermédiaire masqué au moyen d'une opération de ou exclusif, et une combinaison par ou exclusif avec la valeur EK(CNTQ) conformément à l'algorithme GCM (comme prévu à l'étape E30 décrite ci-dessous). 30 La figure 3 représente un premier exemple de procédé de production d'un code d'authentification T conforme à l'invention. Un tel procédé peut par exemple être mis en oeuvre au moyen des éléments fonctionnels de la figure 2. Ce procédé débute à l'étape E2 à laquelle le processeur 2 initialise le multiplicateur H à la valeur EK(0) comme indiqué plus haut, la première donnée 10 d'entrée X0 (donnée d'entrée de la première itération de l'étape E10) à la valeur 0 (soit ici 128 bits de valeur nulle) et le compteur CNT à une valeur donnée (par exemple une valeur reçue au préalable d'une entité électronique externe via l'interface de communication 8). Dans le cas décrit ici où l'algorithme 5 cryptographique de chiffrement E utilisé est un algorithme de chiffrement de type AES utilisant la clé cryptographique K, l'initialisation du compteur CNT peut être réalisée conformément au § 7.1 du document NIST SP800-38D. L'étape E2 comprend ici en outre la mémorisation de la valeur courante (valeur initiale) du compteur CNT au sein d'une variable CNTo. 10 Comme déjà indiqué, le multiplicateur H pourrait en variante être mémorisé dans la mémoire non-volatile 6 (auquel cas il n'est pas initialisé à l'étape E2 mais seulement lu dans la mémoire non-volatile 6). Le processeur 2 détermine alors à l'étape E4 le mot de masquage M, ici par tirage aléatoire. En variante, le processeur 2 pourrait par exemple obtenir le 15 mot de masquage M par coopération avec un crypto-processeur lié au processeur 2. Le processeur 2 peut ainsi effectuer à l'étape E6 les traitements suivants impliquant le mot de masquage M : - la première donnée d'entrée X0 est masquée par combinaison avec le 20 mot de masquage M (au moyen d'une opération de ou exclusif), c'est-à-dire en pratique que le processeur calcule X0 E3 M et mémorise le résultat dans la variable X() avec écrasement ; - le processeur 2 détermine le mot correctif P = M M.H (où représente la multiplication dans le corps de Galois GF(2128), voir plus haut à ce 25 sujet les explications relatives à l'opérateur de multiplication 26 et à l'unité de détermination 30). Le processeur 2 initialise alors à 1 l'indice courant i (étape E8). Le processeur 2 détermine alors la donnée de sortie X, (relative à l'itération courante) comme suit (étape El 0) : 30 Xi JIM A1). H t. P, w 1111, où l'on rappelle que A1 est le bloc (ordonné) d'indice i parmi les données d'authentification et X1_1 est la donnée d'entrée à l'itération courante (qui correspond à la variable X0 déjà mentionnée pour i = 1 - première itération - et à la donnée de sortie de l'itération précédente pour i> 1). 11 Ainsi par exemple, lors de la première itération de l'étape E10 (pour i=1) et lorsque la première donnée d'entrée X0 est initialisée à la valeur nulle et masquée par le mot de masquage M comme indiqué ci-dessus, la donnée de sortie X, vaut (M 9 A1) . H 9 P. La première itération de l'étape El 0 met donc en 5 oeuvre dans ce cas une étape de combinaison par ou exclusif d'une partie A1 des données d'authentification A et du mot de masquage M. La donnée d'entrée Xkl étant masquée au moyen du mot de masquage M, on retrouve bien le fonctionnement recherché dans le cadre de l'algorithme GCM, avec masquage par le mot de masquage M : 10 Xi - (X11 (1) M 9 A1). H 9 M.H 9 P = (X11 9 M S Ai)H S M, soit Xi G M = (Xi_i e M Ai) . H (X; , 9 M et X; 9 M étant les valeurs normalement manipulées pour mettre en oeuvre l'algorithme GCM, sans masquage, et qui vérifient donc bien la relation voulue par l'algorithme CCM). 15 Le processeur 2 incrémente ensuite l'indice courant i (étape E12) Le processeur 2 détermine alors à l'étape E14 si le nouvel indice courant i est supérieur au nombre m de blocs A; de données d'authentification. Dans l'affirmative (cas de détermination positive illustré par la flèche P), l'ensemble de ces blocs Ai ont été traitées et le processeur 2 poursuit son 20 fonctionnement à l'étape E16 décrite plus bas. Dans la négative (cas de détermination négative illustré par la flèche N), le procédé boucle à l'étape El 0 décrite plus haut pour traitement du nouveau bloc courant Ai. A l'étape E16, le processeur 2 réinitialise l'indice i à la valeur 1. 25 Le processeur 2 incrémente ensuite le compteur CNT (étape E18). En utilisant la nouvelle valeur du compteur CNT, le processeur 2 détermine à l'étape E20 le bloc C1 de données chiffrées (bloc d'indice i) associé au bloc Di de données à chiffrer (bloc d'indice i) comme suit : = Di EK(CNT). -- 30 Ce traitement est par exemple mis en oeuvre au moyen du module de chiffrement 10 décrit plus haut. (On pourra se référer à la description du module de chiffrement 10 en référence à la figure 2 pour plus de détails sur les opérations effectuées.) Le processeur 2 peut alors déterminer à l'étape E22 la donnée de sortie 12 Xn-,+; (relative à l'itération courante) comme suit : Xrnti (Xm+i-, 0) . H P où Xm,;_t est la donnée d'entrée à l'itération courante (qui correspond, pour i = 1, à la donnée de sortie Xm de la dernière itération de l'étape E10 et, pour 5 i > 1, à la donnée de sortie de l'itération précédente). La donnée d'entrée X1 étant masquée au moyen du mot de masquage M, on retrouve bien le fonctionnement recherché dans le cadre de l'algorithme GCM, avec masquage par le mot de masquage M xrn+, e M C). H 41.^ M.H e P = (Xm+i-, n M C) 1110 'UV 10 soit e NA G NA C,) H (Xni-Hi 1 M et Xm+, W M étant les valeurs normalement manipulées pour mettre en oeuvre l'algorithme GCM, sans masquage, et qui vérifient donc bien la relation voulue par l'algorithme GCM). 15 Le processeur 2 incrémente ensuite l'indice courant i (étape E24). Le processeur 2 détermine alors à l'étape E26 si le nouvel indice courant i est supérieur au nombre n de blocs Ci de données chiffrées (égal au nombre de blocs Di de données à chiffrer). Dans l'affirmative (cas de détermination positive illustré par la flèche P), 20 l'ensemble des blocs C1 de données chiffrées ont été traitées et le processeur 2 poursuit son fonctionnement à l'étape E28 décrite plus bas. Dans la négative (cas de détermination négative illustré par la flèche N), le procédé boucle à l'étape E18 décrite plus haut pour traitement du nouveau bloc courant D. 25 A l'étape E28, le processeur 2 détermine le code intermédiaire masqué comme suit : Xm,Lit+1 = [Xmi-n (IA II bc)] P, où Xm_tr, est la donnée de sortie produite à la dernière itération de l'étape E22 (itération où i = n à l'étape E22), IA est la longueur en bits des données A 30 d'authentification (soit 128*m) codée sur 64 bits, Ic est la longueur en bits des données chiffrées C (soit 128*n) codée sur 64 bits et "Ir est l'opérateur de concaténation. Ici encore, la donnée de sortie Xm, n étant masquée au moyen du mot de masquage M, on retrouve bien le fonctionnement recherché dans le cadre de 13 l'algorithme GCM, avec masquage par le mot de masquage M : Xm+n+1 = (Xm+n M M = (Xm+n M et Xm+n+I (IA II Ic)) . H M.H M I, II Ic)) H Ir M étant les valeurs normalement manipulées dk gy P, soit 5 pour mettre en oeuvre l'algorithme GCM, sans masquage, et qui vérifient donc bien la relation voulue par l'algorithme GCM). Le processeur 2 peut alors déterminer le code d'authentification T (étape E30) on démasquant la valeur Xro-,0,1 obtenue à l'étape E28, c'est-à-dire en appliquant le mot de masquage M à la valeur au moyen d'une opération de 10 ou exclusif, et en appliquant ici également la valeur EK(CNT0) au moyen d'une opération de ou exclusif (comme prévu par l'algorithme GCM) : T = Xrin.or, M E9 EK(CNTO). lu/ En effet, comme déjà expliqué, l'application du mot correctif P au moyen d'une opération de ou exclusif aux étapes F10, E22 et E28 a permis de conserver 15 un mot de masquage M constant tout au long du procédé, malgré l'utilisation d'une multiplication dans le corps de Galois lors de ces étapes. La figure 4 représente un second exemple de procédé de production d'un code d'authentification conforme à l'invention. Ce second exemple diffère du premier exemple par l'utilisation d'un 20 masquage d'ordre t (au moyen de t masques), comme expliqué ci-après. Ce procédé débute par une étape E52 (identique à l'étape E2 décrite en référence à la figure 3) à laquelle le processeur 2 initialise le multiplicateur H à la valeur EK(0), la première donnée d'entrée X0 (donnée d'entrée de la première itération de l'étape E60) à la valeur 0 (soit ici 128 bits de valeur nulle) et le 25 compteur CNT à une valeur donnée (par exemple une valeur reçue au préalable d'une entité électronique externe via l'interface de communication 8). L'étape E52 comprend ici en outre la mémorisation de la valeur courante (valeur initiale) du compteur CNT au sein d'une variable CNTo. Le processeur 2 détermine alors à l'étape E54 une pluralité de t masques 30 M1, M1 ici par tirage aléatoire (t étant de préférence impair, par exemple égal à 3). Afin de garantir un masquage d'ordre supérieur, chaque masque Mi est déterminé par tirage aléatoire indépendamment des autres masques. Parmi ces t masques Ml, M1, on distingue dans la suite un premier ensemble de masques Mk,i, M1 (comprenant t-k masque(s)) et un second 14 ensemble de masques M1, Mk (comprenant k masque(s)), avec 0 1). Lors de cette étape, l'application des mots correctifs Pt pour les masques Mkui, ..., Mt du premier ensemble permet de maintenir inchangés ces masques (malgré la multiplication effectuée), comme expliqué plus haut (voir 30 notamment l'étape E10). Les masques MI, ...; Mk du seconde ensemble ne sont en revanche pas concernés et l'étape E60 comprend ainsi également une étape de mise à jour de chacun des masques MI, ... Mk du second ensemble en multipliant chacun de ces masques par le multiplicateur H. 15 Le processeur 2 incrémente ensuite l'indice courant i (étape E62). Le processeur 2 détermine alors à l'étape E64 si le nouvel indice courant i est supérieur au nombre m de blocs A; de données d'authentification. Dans l'affirmative (cas de détermination positive illustré par la flèche P), 5 l'ensemble de ces blocs A ont été traitées et le processeur 2 poursuit son fonctionnement à l'étape E66 décrite plus bas. Dans la négative (cas de détermination négative illustré par la flèche N), le procédé boucle à l'étape E60 décrite ci-dessus pour traitement du nouveau bloc courant A. 10 A l'étape E66, le processeur 2 réinitialise l'indice i à la valeur 1. Le processeur 2 incrémente ensuite le compteur CNT (étape E68). En utilisant la nouvelle valeur du compteur CNT, le processeur 2 détermine à l'étape E70 le bloc 0 de données chiffrées (bloc d'indice i) associé au bloc Di de données à chiffrer (bloc d'indice i) comme suit 15 C = D G EK(CNT). Ce traitement est par exemple mis en oeuvre au moyen du module de chiffrement 10 décrit plus haut. (On pourra se référer à la description du module de chiffrement 10 en référence à la figure 2 pour plus de détails sur les opérations effectuées.) 20 Le processeur 2 peut alors déterminer à l'étape E72 la donnée de sortie X,,i (relative à l'itération courante) comme suit : Xm,i = (Xmik1 C1). H Pk41 ah as ^Ir OÙ Xmi est la donnée d'entrée à l'itération courante (qui correspond, pour i = 1, à la donnée de sortie X, de la dernière itération de l'étape E60 et, pour 25 i> 1, à la donnée de sortie de l'itération précédente). Comme pour l'étape E60 décrite plus haut, l'application des mots correctifs PK, 1, ..., P1 pour les masques Mk; 1, ; M1 du premier ensemble permet de maintenir inchangés ces masques (malgré la multiplication effectuée). Les masques Ml, Mk du second ensemble ne sont en revanche pas 30 concernés et l'étape E72 comprend ainsi également une étape de mise à jour de chacun des masques MI, ..., Mk du second ensemble en multipliant chacun de ces masques par le multiplicateur H. Le processeur 2 incrémente ensuite l'indice courant i (étape E74). Le processeur 2 détermine alors à l'étape E76 si le nouvel indice courant 16 i est supérieur au nombre n de blocs C, de données chiffrées (égal au nombre de blocs D, de données à chiffrer). Dans l'affirmative (cas de détermination positive illustré par la flèche P), l'ensemble des blocs C, de données chiffrées ont été traitées et le processeur 2 5 poursuit son fonctionnement à l'étape E78 décrite plus bas. Dans la négative (cas de détermination négative illustré par la flèche N), le procédé boucle à l'étape E68 décrite plus haut pour traitement du nouveau bloc courant Di. A l'étape E78, le processeur 2 détermine le code intermédiaire masqué 10 Xm+n-1 comme suit : Xm+n+1 = [Xm+n e 0A II .H e Pk+1 e ph où Xmn est la donnée de sortie produite à la dernière itération de l'étape E72 (itération où i = n à l'étape E72), IA est la longueur en bits des données A d'authentification (soit 128*m) codée sur 64 bits, Ic est la longueur en bits des 15 données chiffrées C (soit 128*n) codée sur 64 bits et "H" est l'opérateur de concaténation. Ici encore, l'application des mots correctifs Pk+1, Pt pour les masques Mk+1, M1 du premier ensemble permet de maintenir inchangés ces masques (malgré la multiplication effectuée). 20 Les masques MI, ..., Mk du second ensemble ne sont en revanche pas concernés et l'étape E78 comprend ainsi également une étape de mise à jour de chacun des masques MI, ..., Mk du second ensemble en multipliant chacun de ces masques par le multiplicateur H. Le processeur 2 peut alors déterminer le code d'authentification T (étape 25 E80) en démasquant la valeur Xm-n+1 obtenue à l'étape E78, c'est-à-dire en appliquant successivement (au moyen d'une opération de ou exclusif) chacun des masques M1, ..., MI à la valeur Xmtnt1, et en appliquant ici également la valeur EK(CNTO) au moyen d'une opération de ou exclusif (comme prévu par l'algorithme GCM) : 30 T = Xrnirul M /h EK(CNT0). 111, REVENDICATIONS1. Procédé de production d'un code d'authentification (T) associé à des données comprenant une pluralité de blocs de données ordonnés (0), dans lequel, pour chaque bloc de données (Q), un mot de sortie (Xm.,i) est déterminé en fonction d'un premier produit obtenu par multiplication d'un mot de combinaison (Xnui C,) par un multiplicateur (H), le mot de combinaison étant obtenu par combinaison par ou exclusif d'un mot d'entrée (Xnn-1i) et du bloc de données concerné (0), caractérisé en ce qu'il comprend une étape (E4 ; E54) de détermination d'un mot de masquage (M ; MI) et une étape (E6 ; E56) de détermination d'un mot correctif (P ; PI) égal à la combinaison par ou exclusif du mot de masquage (M ; MI) et d'un second produit (M.H ; M1.H) obtenu par multiplication du mot de masquage (M ; MI) par le multiplicateur (H), et en ce que, pour chaque bloc de données (0), le mot de sortie (Xm4) est déterminé au moyen d'une combinaison par ou exclusif d'une pluralité de données incluant le premier produit associé à ce bloc de données (0) et le mot correctif (P ; P1). 2. Procédé selon la revendication 1, dans lequel, pour au moins un bloc de données, le mot d'entrée est égal au mot de sortie déterminé pour le bloc de données précédent. 3. Procédé selon la revendication 1 ou 2, dans lequel, pour le premier bloc de données (CI), le mot d'entrée (Xm) est obtenu en fonction de données d'authentification (A) et du multiplicateur (H). 4. Procédé selon la revendication 3, comprenant une étape de combinaison par ou exclusif d'une partie au moins (Al) des données d'authentification (A) et du mot de masquage (M ; MO. 5. Procédé selon l'une des revendications 1 à 4, dans lequel le code d'authentification est déterminé en fonction du mot de masquage (M ; M1) et du mot de sortie (Xmtn) obtenu pour le dernier bloc de données (Cn). 18 6. Procédé selon l'une des revendications 1 à 5, comprenant les étapes suivantes : - détermination (E54) d'un mot de masquage additionnel initial (M1) ; 5 - mémorisation du mot de masquage additionnel initial (M1) dans un élément de mémorisation en tant que mot de masquage courant ; - pour chaque bloc de données (Ci), lecture du mot de masquage courant (Mi) dans l'élément de mémorisation, obtention d'un troisième produit (K/11.H) par multiplication du mot de masquage courant (MI) par le multiplicateur (H), et 10 mémorisation du troisième produit (MtH) dans l'élément de mémorisation (E72) en tant que nouveau mot de masquage courant. 7. Procédé selon l'une des revendications 1 à 5, comprenant les étapes suivantes : 15 - détermination (E54) d'un premier ensemble de masque(s) (Mkhl. Mt) et d'un second ensemble de masque(s) (M1, Mk), le premier ensemble comprenant le mot de masquage (M1), - pour chaque masque (Mk-hl, Mt) du premier ensemble, détermination (E56) d'un mot correctif associé (Pk,, ; Pt) égal à la combinaison par ou exclusif du 20 masque concerné (Mk+, ; Mt) et d'un produit (Mk.H.H ; Mt.H) obtenu par multiplication du masque concerné (Mk-h, ; MI) par le multiplicateur (H), dans lequel, pour chaque bloc de données (Ci), le mot de sortie (Xrr,h_i) est déterminé au moyen d'une combinaison par ou exclusif du premier produit associé à ce bloc de données (Ci) et des mots correctifs (Pkm, Pt) respectivement associés 25 aux masques (Mk+1, Mt) du premier ensemble, le procédé comprenant, pour chaque détermination d'un mot de sortie (X,whi), une étape (E72) de mise à jour de chacun des masques du second ensemble au moyen d'une multiplication par le multiplicateur (H). 30 8. Procédé selon la revendication 7, dans lequel la différence entre le nombre de masque(s) du second ensemble et le nombre de masque(s) du premier ensemble est égale à 0 ou 1. 9. Procédé selon l'une des revendications 1 à 8, dans lequel le mot 19 d'entrée, le mot de combinaison, le mot de sortie et le mot de masquage ont une longueur de 128 bits. 10. Dispositif de traitement cryptographique (1) comprenant un module 5 de chiffrement (10) conçu pour produire des données comprenant une pluralité de blocs de données ordonnés (C1), et un module d'authentification (20) conçu pour produire un code d'authentification (T) associé auxdites données, dans lequel le module d'authentification (20) est conçu pour obtenir, pour chaque bloc de données (Ci), un mot de combinaison par combinaison par ou exclusif d'un mot 10 d'entrée (Xi) et du bloc de données concerné (Ci), et pour déterminer un mot de sortie (Xiti) en fonction d'un premier produit obtenu par multiplication du mot de combinaison par un multiplicateur (H), caractérisé en ce qu'il comprend une unité (28) de détermination d'un mot de masquage (M) et une unité (30) de détermination d'un mot correctif (P ; Pt) 15 égal à la combinaison par ou exclusif du mot de masquage (M ; Mt) et d'un second produit obtenu par multiplication du mot de masquage (M ; Mt) par le multiplicateur (H), et en ce que le module d'authentification (20) est conçu pour déterminer, pour chaque bloc de données (C1), le mot de sortie (Xi±1) au moyen d'une 20 combinaison par ou exclusif d'une pluralité de données incluant le premier produit associé à ce bloc de données (0) et le mot correctif (P ; P1).