FR 2960728 A1 20111202 FR 1002213 A 20100526 L'invention concerne un procédé de détermination d'une représentation d'un produit d'éléments d'un corps fini représentés chacun par une pluralité de valeurs, ainsi qu'un procédé d'évaluation d'une fonction utilisant le procédé de détermination précité. Afin d'éviter que des personnes malintentionnées puissent déduire de l'observation d'un circuit électronique les données que ce circuit manipule (principalement dans le domaine de la cryptographie), il est connu de masquer les données manipulées au moyen d'une valeur aléatoire (typiquement par combinaison de la donnée à traiter et de la valeur aléatoire au moyen d'une opération de ou exclusif, également dénommée XOR) de telle sorte que les données effectivement manipulées par le dispositif électronique diffèrent à chaque mise en oeuvre de l'algorithme concerné, même lorsque l'attaquant tente à dessein de faire reproduire l'algorithme à l'identique. De par ses propriétés, l'opération de masquage peut être vue comme une addition dans l'ensemble formé par les données envisageables, typiquement l'ensemble des mots de n bits, auquel cas l'ensemble est un corps de Galois couramment dénoté F2". Afin de lutter encore plus efficacement contre les attaques, on a prévu d'utiliser plusieurs masques pour masquer une même donnée, typiquement de sorte que la somme (au moyen de l'opération XOR) de la donnée masquée et de l'ensemble des masques permette de retrouver la donnée originale. La donnée originale est alors en quelque sorte représentée au cours des calculs par d valeurs (dont d-1 valeurs proviennent de tirages aléatoires et dont la somme vaut la donnée originale, c'est-à-dire non masquée). Le traitement de telles données représentées par une pluralité de valeurs doit être tel que les opérations appliquées à ces valeurs résultent au final au traitement souhaité pour la somme de ces valeurs, ce qui ne pose pas de difficulté lorsque la fonction à appliquer est linéaire vis-à-vis de l'opération d'addition (puisqu'il suffit alors d'appliquer le traitement souhaité à chacune des valeurs représentant la donnée afin d'obtenir les différentes valeurs représentant le résultat de l'opération). Une difficulté se pose en revanche lorsque l'on doit appliquer une 5 fonction non-linéaire, comme c'est le cas par exemple dans le cadre de l'algorithme AES. Dans le contexte de la mise en oeuvre de telles fonctions au moyen de circuits booléens, l'article "Private circuits: securing hardware against probing attacks", de Y. Ishai et al., in Crypto 2003, LNCS 2729, PP.463-481, 2003 10 propose de sécuriser les portes ET (ou portes AND) en utilisant une pluralité de valeurs aléatoires binaires. Toute fonction, éventuellement non-linéaire, implémentée en logique câblée peut ainsi être sécurisée au prix toutefois d'une augmentation de la surface de silicium utilisée. 15 Cette solution n'est par ailleurs pas applicable en pratique à une mise en oeuvre logicielle de la fonction à appliquer aux données (un traitement bit à bit sous forme logicielle étant très peu efficace), alors qu'une telle mise en oeuvre peut être préférable pour d'autres motifs. Une telle mise en oeuvre permet par exemple notamment d'éviter la présence de phénomènes électriques observables 20 (tels que des retards) liés à la réalisation du masquage par un circuit (phénomènes dénommés "glitches"), qui rendent possibles certaines attaques ou nécessitent la mise en oeuvre de contre-mesures lourdes (tels que des circuits de synchronisations additionnels). Dans ce contexte, l'invention propose un procédé de détermination 25 d'une représentation du produit d'un premier élément et d'un second élément d'un ensemble fini de cardinal strictement supérieur à deux et dans lequel sont définies une addition et une multiplication commutative et distributive par rapport à l'addition, le premier élément étant représenté par une pluralité de d premières valeurs dont la somme est égale au premier élément et associées 30 chacune à un entier compris entre 1 et d, le second élément étant représenté par une pluralité de d secondes valeurs dont la somme est égale au second élément et associées chacune à un entier compris entre 1 et d, comprenant les étapes suivantes : - pour chaque couple formé d'un premier entier compris entre 1 et d et d'un second entier strictement supérieur au premier entier, obtention d'une 5 valeur au moyen des sous-étapes suivantes : o tirage d'une valeur aléatoire associée au couple ; o première addition de ladite valeur aléatoire et du produit de la première valeur associée au premier entier et de la seconde valeur associée au second entier ; 10 o seconde addition du résultat de la première addition et du produit de la première valeur associée au second entier et de la seconde valeur associée au premier entier ; - pour chaque entier compris entre 1 et d, détermination de la valeur associée à l'entier concerné dans ladite représentation en sommant le produit 15 des première et seconde valeurs associées à l'entier concerné, les valeurs aléatoires associées aux couples dont le premier entier est l'entier concerné et les valeurs obtenues pour les couples dont le second entier est l'entier concerné. On propose ainsi d'utiliser une multiplication entre éléments de 20 l'ensemble, c'est-à-dire entre données ; toute fonction, notamment non-linéaire, sur l'ensemble peut être écrite sous une forme utilisant de telles multiplications comme expliqué plus loin. Le procédé proposé ci-dessus permet d'effectuer une telle multiplication entre deux éléments masqués à l'ordre d-1, sans compromettre le 25 masquage utilisé. On remarque que la définition donnée ci-dessus propose d'associer des valeurs à des entiers compris entre 1 et d (autrement dit de répérer des valeurs avec des indices variant de 1 à d) alors que la description qui suit utilise une indexation variant de 0 à d-1. Les indices utilisés en pratique ne sont 30 naturellement que des éléments de mise en oeuvre de l'invention qui ne se limite pas à une indexation particulière. L'association des différentes valeurs à des entiers compris entre 1 et d, telle que prévue dans les revendications, entend toute indexation envisageable en pratique. L'addition est par exemple une opération de type ou exclusif. Par ailleurs, la multiplication peut être une multiplication de polynômes à coefficients binaires suivie d'une étape de réduction par un polynôme à coefficients binaires irréductible. La multiplication peut en variante être définie comme suit : chaque élément de l'ensemble fini étant une puissance donnée d'un élément primitif, la multiplication peut alors être réalisée par une addition des exposants respectivement associés aux puissances à multiplier, modulo le cardinal du corps moins un. En pratique, le produit de deux éléments de l'ensemble est par exemple obtenu par lecture, au sein d'une table mémorisée, d'un élément associé auxdits deux éléments. S'agissant de masques, (d-1) valeurs parmi les d premières valeurs 15 sont par exemple obtenues par tirage aléatoire. Le procédé proposé ici est typiquement mis en oeuvre par un circuit électronique, par exemple par un microprocesseur, avec les avantages associés à ce type de mise en oeuvre ; en variante, il pourrait s'agir d'un circuit intégré à application spécifique. Le premier élément et le second élément sont 20 typiquement des données codées chacune sur une pluralité de bits et manipulées par le microprocesseur. L'ensemble peut être un corps de Galois F2", avec n supérieur ou égal à 2, par exemple égal à 8. Comme déjà indiqué, toute fonction pouvant être écrite sous une 25 forme utilisant les multiplications, l'invention propose en outre un procédé d'évaluation d'une fonction appliquée à un élément d'un ensemble fini, caractérisé en ce qu'il comprend la détermination d'une pluralité de valeurs représentant le résultat de l'application d'un polynôme audit élément, ladite détermination incluant au moins une étape de détermination de la 30 représentation du produit dudit élément par lui-même conforme à ce qui vient d'être envisagé. La fonction peut être non-linéaire par rapport à l'addition, auquel cas l'utilisation des procédés qui viennent d'être décrits est particulièrement avantageuse. D'autres caractéristiques et avantages de l'invention apparaitront à la lumière de la description qui suit, faite en référence aux dessins annexés dans lesquels : - la figure 1 représente un exemple de dispositif susceptible de mettre en oeuvre l'invention - la figure 2 représente un procédé mis en oeuvre par le dispositif 10 de la figure 1 et conforme aux enseignements de l'invention. La figure 1 représente les éléments principaux d'un dispositif apte à mettre en oeuvre le procédé proposé par l'invention. Ce dispositif comprend un microprocesseur 2 connecté (à travers des bus adéquats) d'une part à une mémoire réinscriptible 4 (typiquement de 15 type EEPROM) et à une mémoire vive 6. Le dispositif de la figure 1 est par exemple un micro-ordinateur. En variante, il pourrait s'agir d'un autre type de dispositif électronique, par exemple sécurisé, telle qu'une carte à microcircuit. La mémoire réinscriptible 4 contient notamment des instructions d'un 20 programme d'ordinateur PROG qui, lorsqu'elles sont exécutées par le microprocesseur 2, permettent la mise en oeuvre des procédés proposés par l'invention, tel que celui décrit ci-après. Le programme d'ordinateur PROG pourrait en variante être mémorisé sur un autre support de données (par exemple un disque dur), 25 éventuellement amovible (par exemple un disque optique ou une mémoire amovible). Dans ce cas, le programme d'ordinateur PROG peut éventuellement être d'abord transféré dans la mémoire vive 6 avant son exécution par le microprocesseur 2. Lors de son exécution par le microprocesseur 2, le programme 30 d'ordinateur PROG met en oeuvre un procédé de traitement cryptographique de données qui implique notamment une donnée x à traiter. Les données à traiter (notamment la donnée x) sont représentées au sein du dispositif de la figure 1 (et notamment de la mémoire vive 6) par des mots numériques formés chacun de plusieurs bits ; on utilise ici par exemple une représentation des données sous forme d'octets. La mémoire vive 6 mémorise les variables et données traitées, notamment celles manipulées par le procédé décrit plus loin en référence à la figure 2. Dans le cadre de leur traitement (en particulier lorsqu'il s'agit d'un traitement cryptographique), les données sont (chacune) vues comme des éléments d'un ensemble F2" comprenant 2" éléments et muni d'une structure de corps à travers la définition d'une part d'une addition entre deux éléments de l'ensemble (notée © dans la suite) et d'autre part d'une multiplication de deux éléments de l'ensemble (notée ®). On comprend que, dans le cas décrit ici où les données sont représentées par des octets, le corps F2" comprend 256 éléments (n = 8). L'addition O+ définie sur ce corps est l'opération "ou exclusif' ou XOR (qui est une opération de base du fonctionnement du microprocesseur 2). La multiplication entre deux éléments (c'est-à-dire entre deux données codées sur plusieurs bits, typiquement 8 bits) peut quant à elle être définie comme une multiplication polynomiale modulaire, ou comme la multiplication de deux puissances d'un élément primitif (ou générateur) du corps (auquel cas, cette multiplication se ramène à une addition de deux exposants de l'élément primitif modulo 2"-1). On peut se référer à ce propos à l'ouvrage "Finite fields", volume 20 de I"'Encyclopedia of mathematics and its applications", de Rudolph Lidl and Harald Niederreiter, Cambridge University Press, 2ème édition, 1997. Quelle que soit la représentation théorique utilisée, la multiplication est ici mise en oeuvre au moyen d'une table mémorisée (ici dans la mémoire réinscriptible 4). Une telle table, dénotée LUT (de l'anglais "Look-Up Table"), mémorise, pour tout couple d'éléments du corps, le résultat de la multiplication de ces éléments. Dans ce contexte, un traitement d'une donnée qui réalise la transformation de cette donnée en une autre donnée peut être vu comme une fonction du corps sur lui-même (c'est-à-dire une fonction f qui associe à tout élément x du corps, c'est-à-dire à toute donnée envisageable, un élément f(x) du corps, c'est-à-dire la donnée obtenue par le traitement). On utilise par ailleurs dans le dispositif de la figure 1 une technique de masquage selon laquelle une donnée déterminée x est manipulée seulement sous forme masquée par un ou plusieurs masque(s) x; (i > 0), typiquement déterminés par tirage aléatoire au début du traitement (c'est-à-dire en pratique au début de l'algorithme concerné, que l'on souhaite protéger par le masquage). Les masques peuvent par ailleurs être régénérés si nécessaire au cours du traitement. Le masquage utilisé ici est l'addition successive (par application de l'opération XOR) des masques x; à la donnée x à masquer. Un tel masquage est dit d'ordre supérieur lorsque plusieurs masques x; sont successivement appliqués à la donnée x. Dans ce cas, la donnée x est comme représentée lors du fonctionnement par d données x;, à savoir la donnée masquée xo et les masques xi, x2, ..., xd_1. (Les masques doivent en effet être mémorisés pour pouvoir retrouver la valeur sans masquage x). On parle de masquage d'ordre (d-1). La donnée x est donc représentée lors du traitement par d données x; dont la somme (au sens de l'addition e définie sur le corps mentionné ci-dessus) est égale à la donnée x ainsi représentée : x0 O+ x1ex2O0...eXd_1=x. Comme déjà expliqué en introduction, du fait du tirage aléatoire des masques à chaque exécution d'un algorithme, le masquage permet de modifier les valeurs manipulées lors des différentes exécutions de l'algorithme et rend difficile (voir impossible) la déduction des données effectivement traitées à partir de l'observation du circuit, avec une difficulté croissante en fonction de l'ordre de masquage. Le masquage implique toutefois en revanche un traitement particulier lorsque l'on doit appliquer à la donnée à traiter x (et donc en pratique aux données effectivement manipulées x;) une fonction f non-linéaire par rapport à l'opération de masquage (ici l'addition O+, réalisée par une opération XOR). En effet, contrairement au cas des fonctions linéaires par rapport à cette opération, la somme des résultats f(x;) de l'application de la fonction f aux données manipulées x; est (par définition même de l'absence de linéarité) différente du résultat f(x) de l'application de la fonction à la donnée traitée x. On propose ci-dessous un procédé qui permet d'obtenir, à partir des données x; (où xo e xi © x2 O+ ... O+ xd_~ = x), des données e; dont la somme sera égale à f(x) tout en conservant tout au long du calcul le masquage d'ordre (d-1). On remarque tout d'abord que la formule d'interpolation de Lagrange permet de définir un polynôme p(x) égal à la fonction f(x) en chaque élément de l'ensemble F2" : p(x) = O+ [.f (a) ® 1 1 x - b] ' aEF bEFF,,,boa a - b où le produit multiple [J utilise la multiplication ® et où x - b est le a-b produit (au sens de la multiplication ®) de l'élément (x - b) par l'inverse (toujours au sens de la multiplication ®) de l'élément (a - b). On remarque que la formule ci-dessous est rédigée sous sa forme générale (avec soustraction), mais que, dans les ensembles de type F2" étudiés ici, la soustraction (symbole "-" ci-dessus) est également mise en oeuvre par une opération XOR, notée ici O+, du fait que l'application de l'opération XOR avec un élément donné (c'est-à-dire l'addition d'un élément donné) est involutive dans ce type d'ensembles. D'après ce qui précède, la fonction f (notamment lorsqu'elle est non linéaire par rapport à l'addition 8) peut s'écrire sous forme d'un polynôme de degré 2"-1 et l'on peut donc définir la fonction f par une famille de coefficients a; tels que : 2''-t .f (x) _ O+ [a, où x° est l'élément neutre par rapport à la multiplication ®, x' est l'élément x et, pour i>1, x' est l'élément x multiplié (i-1) fois par lui-même (au moyen de l'opération E+) Le traitement d'une donnée x par la fonction f peut ainsi se ramener à une combinaison d'additions O+ et de multiplications Les additions sont naturellement linéaires vis-à-vis de l'opération de masquage (ici constituées par la même opération XOR) et la sommation des différents éléments concernés peut donc être réalisée par une sommation des d données manipulées représentant ces éléments. 10 Il en va de même pour la multiplication par chacun des coefficients a;, également linéaires par rapport à l'opération de masquage. Il convient en revanche de mettre en oeuvre un procédé spécifique pour déterminer le résultat des multiplications à mettre en oeuvre (ici pour obtenir des puissances de l'élément à traiter x) tout en conservant le masquage 15 d'ordre (d-1) du fait de la non linéarité de l'opération de multiplication par rapport à l'opération de masquage. Le procédé de multiplication d'un nombre a (représenté par d valeur a;) et d'un nombre b (représenté par d valeurs b;) proposé dans ce but est décrit à présent en référence à la figure 2. 20 On comprend que dans le cadre de l'évaluation de la fonction f décrite ci-dessus, qui n'est qu'une application possible de ce procédé, les données a et b sont toutes deux égales à la donnée à traiter x. Le procédé débute à l'étape El0 par l'initialisation à 0 d'une variable 25 On procède alors à l'étape E12 à l'initialisation d'une variable j à la valeur i+1. On détermine alors à l'étape E14 une variable r;,j par tirage aléatoire, typiquement en utilisant une fonction de génération de valeurs aléatoires réalisée sous forme logicielle et qui fait partie du programme PROG. 30 On calcule alors une variable r~,1 selon la formule (r11 O+ a; ® b) aj ® b;. On remarque que l'indice i est nécessairement différent de l'indice j dans cette formule (puisque j est initialisé à i+1 et incrémenté comme indiqué plus bas). On rappelle que, selon une notation classique, la multiplication est prioritaire sur l'addition et que l'on effectue donc d'abord les multiplications a; 0 bi et ai® b;, avant d'ajouter, au résultat de la première multiplication la valeur ri,i (au moyen d'un XOR), et d'ajouter enfin à cette somme le résultat de la seconde multiplication. On remarque que le respect de cet ordre des opérations (en particulier des additions) est impératif si l'on veut conserver la sécurité du 10 masquage. On procède alors à l'étape E18 à l'incrémentation de la variable j. On teste alors si la variable j est égale à d (qui représente comme indiqué précédemment le nombre de valeurs représentant une valeur à traiter). Dans la négative (c'est-à-dire s'il reste des valeurs de j entre i+1 et 15 d-1 qui n'ont pas été traitées), on reboucle à l'étape E14. Dans l'affirmative, c'est-à-dire lorsque le dernier passage à l'étape E16 a été fait avec valeur de la variable j égale à d-1, on procède à l'étape suivante E22. Cette étape E22 consiste à incrémenter la variable i. 20 On teste alors à l'étape E24 si la variable i est égale à (d-1). Dans la négative, on reboucle à l'étape E12 ce qui permet d'effectuer le traitement déjà décrit avec une valeur de i incrémentée. Dans l'affirmative, l'ensemble des valeurs r;,i ont été traitées (puisqu'il n'y a pas de valeurs r;,; à déterminer, et donc notamment pas de valeur rd-1, d_1) et on procède alors à la seconde partie du 25 procédé à l'étape E26. L'étape E26 consiste à initialiser la variable i à 0. On procède ensuite à l'étape E28 à laquelle on calcule le produit ;, que l'on mémorise dans une variable c;. On effectue alors l'étape E30 à laquelle on initialise la variable j à 0. 30 A l'étape E32, on teste l'égalité entre les variables i et j. Dans la négative, on ajoute (au moyen de l'opération O) dans la variable c; la variable ri ,i déterminée dans la première partie du procédé. Autrement dit, on calcule la somme c; © r;,i, somme que l'on mémorise à nouveau (avec écrasement) dans la variable c;. Dans l'affirmative à l'étape E32 (c'est-à-dire si i=j), on procède directement (c'est-à-dire sans effectuer l'étape E34) à l'étape E36. L'étape E34 est également suivie de l'étape E36, à laquelle on incrémente la variable j. On teste alors à l'étape E38 si la variable j est égale à d. Dans la négative, on boucle à l'étape E32. Dans l'affirmative on passe à l'étape E40. L'étape E40 consiste à incrémenter la variable i. On procède ensuite à l'étape E42 à laquelle on teste si la variable i est égale à d. Dans la négative, on boucle à l'étape E28 afin de déterminer la variable c; suivante. Dans l'affirmative, toutes les variables c; (pour i variant de 0 à d-1) 15 ont été déterminées et le procédé est donc terminé (étape E44). Les d valeurs c; ainsi obtenues représentent le produit c, résultat de la multiplication a ® b, c'est-à-dire que : c=a c b et co O+ et c2 O+ ...G cd_1 = c. On remarque que cette dernière égalité peut être vérifiée comme suit 20 en utilisant les propriétés de commutativité de la multiplication ®, et de distributivité de la multiplication par rapport à l'addition e d-1 d-1 O+ci=O+[a i=0 i=0 bi (© ri i )] grâce aux étapes E28 et E34, donc lmi d-1 d-1 O+ ci = O+ [ai ®bi O+ (O+ ri ~) ©(©(r.. O+ ai ®b. O a~ i=0 i=0 j>i lu d-1 d-1 O+ ci = O+ [ai Ob. O+ (O+ (ai ®b~ m ai d-1 d-1 d-1 25 O+c,=(O+ai)0(Obi) =a®b=c. On a ainsi permis d'obtenir des valeurs représentant le produit c des valeurs a et b, tout en conservant le masquage d'ordre (d-1). Le mode de réalisation qui vient d'être décrit n'est qu'un exemple possible de mise en oeuvre de l'invention, qui ne s'y limite pas. En particulier, bi ))] d'après E16, d'où i=0 i=0 l REVENDICATIONS1. Procédé, mis en oeuvre par un circuit électronique, de détermination d'une représentation du produit d'un premier élément et d'un second élément d'un ensemble fini de cardinal strictement supérieur à deux et dans lequel sont définies une addition et une multiplication commutative et distributive par rapport à l'addition, le premier élément étant représenté par une pluralité de d premières valeurs dont la somme est égale au premier élément et associées chacune à un entier compris entre 1 et d, le second élément étant représenté par une pluralité de d secondes valeurs dont la somme est égale au second élément et associées chacune à un entier compris entre 1 et d, comprenant les étapes suivantes : - pour chaque couple formé d'un premier entier compris entre 1 et d et d'un second entier strictement supérieur au premier entier, obtention d'une 15 valeur au moyen des sous-étapes suivantes : o tirage d'une valeur aléatoire associée au couple ; o première addition de ladite valeur aléatoire et du produit de la première valeur associée au premier entier et de la seconde valeur associée au second entier 20 o seconde addition du résultat de la première addition et du produit de la première valeur associée au second entier et de la seconde valeur associée au premier entier ; - pour chaque entier compris entre 1 et d, détermination de la valeur associée à l'entier concerné dans ladite représentation en sommant le 25 produit des première et seconde valeurs associées à l'entier concerné, les valeurs aléatoires associées aux couples dont le premier entier est l'entier concerné et les valeurs obtenues pour les couples dont le second entier est l'entier concerné. 30 2. Procédé de détermination selon la revendication 1, caractérisé en ce que l'addition est une opération de type ou exclusif. 3. Procédé de détermination selon la revendication 1 ou 2, caractérisé en ce que la multiplication est une multiplication de polynômes à coefficients binaires suivie d'une étape de réduction par un polynôme à coefficients binaires irréductible. 4. Procédé de détermination selon la revendication 1 ou 2, caractérisé en ce que chaque élément de l'ensemble fini est une puissance donnée d'un élément primitif et en ce que la multiplication est réalisée par une addition des exposants respectivement associés aux puissances à multiplier, modulo le cardinal du corps moins un. 5. Procédé de détermination selon l'une des revendications 1 à 4, caractérisé en ce que le produit de deux éléments de l'ensemble est obtenu par lecture, au sein d'une table mémorisée, d'un élément associé auxdits deux éléments. 6. Procédé de détermination selon l'une des revendications 1 à 5, caractérisé en ce que (d-1) valeurs parmi les d premières valeurs sont obtenues par tirage aléatoire. 7. Procédé de détermination selon l'une des revendications 1 à 6, caractérisé en ce qu'il est mis en oeuvre au sein d'un microprocesseur. 8. Procédé de détermination selon l'une des revendications 1 à 7, 25 caractérisé en ce que le premier élément et le second élément sont des données codées chacune sur une pluralité de bits. 9. Procédé de détermination selon l'une des revendications 1 à 8, caractérisé en ce que l'ensemble est un corps de Galois F2", avec n supérieur 30 ou égal à 2.20 10. Procédé de détermination selon la revendication 9, caractérisé en ce que n est égal à 8. 11. Procédé d'évaluation d'une fonction appliquée à un élément d'un ensemble fini, caractérisé en ce qu'il comprend la détermination d'une pluralité de valeurs représentant le résultat de l'application d'un polynôme audit élément, ladite détermination incluant au moins une étape de détermination de la représentation du produit dudit élément par lui-même conforme à l'une quelconque des revendications 1 à 10. 12. Procédé d'évaluation selon la revendication 11, caractérisé en ce que la fonction est non-linéaire par rapport à l'addition.