FR 2899751 A1 20071012 FR 0651296 A 20060410 L'invention concerne un procédé de traitement cryptographique de données, ainsi qu'un dispositif et un programme associés. Dans de tels procédés, on a fréquemment recours au masquage des données afin de lutter contre les attaques, par exemple du type analyse de 5 courant (notamment les attaques de type DPA ainsi dénommées d'après l'anglais "Differential Power Analysis") ou du type analyse de rayonnement électromagnétique. Les techniques de masquage consistent à combiner la donnée (c'est-à-dire en pratique le nombre) que l'on souhaite utiliser (en pratique, auquel on 10 souhaite faire subir une opération) avec un nombre imprévisible pour un attaquant extérieur (en général un nombre aléatoire ou pseudo-aléatoire) ; ainsi, les valeurs impliquées sont chaque fois différentes même en utilisant une donnée constante en entrée, ce qui rend impossible pour l'attaquant de déduire les données internes du procédé (et notamment les clés cryptographiques qu'il 15 utilise) à partir de mesures faites de l'extérieur. Le masquage des données implique toutefois un déroulement particulier du procédé, c'est-à-dire notamment des opérations supplémentaires liées au masquage et au démasquage, puisqu'il modifie les données (ou nombres) manipulées au cours du traitement alors que le résultat doit bien sûr 20 être identique à celui obtenu sans masquage. Lorsque les fonctions mises en oeuvre sont linéaires par rapport au masquage effectué, ces opérations supplémentaires sont relativement simples puisque le masque se transforme par linéarité sans impliquer toutefois de modification de la fonction utilisée. 25 La mise en oeuvre sur des fonctions non-linéaires se révèle en revanche plus problématique puisque la combinaison effectuée par le masquage ne peut pas être dissociée par linéarité dans le résultat de la fonction non-linéaire, si bien que l'application d'une fonction non-linéaire à une donnée masquée conduit le plus souvent à la mise en oeuvre d'une fonction modifiée, ce 30 qui complique naturellement le procédé. Par exemple, lorsque l'application de la fonction non-linéaire (par exemple une boîte-S ou "S-Box" dans le domaine de la cryptographie) est réalisée en pratique au moyen d'une table de correspondance (fréquemment dénommée table-S dans ce même domaine) mémorisée dans le dispositif cryptographique, l'utilisation d'une fonction modifiée conduit en général au recalcul de la table de correspondance dès qu'un nouveau masque est utilisé. Afin de tenter d'apporter une réponse à ce problème dans le cas spécifique de l'opération non-linéaire d'inversion utilisée dans le cadre de l'algorithme AES, il a été proposé dans l'article "An implementation of DES and AES, secure against some attacks" de M.-L. Akkar et C. Giraud in Cryptographic Hardware and Embedded Systems û CHES 2001, d'adapter le masque de façon à le rendre linéaire vis-à-vis de l'opération concernée : on transformait en l'espèce le masque additif en un masque multiplicatif, vis-à-vis duquel la fonction d'inversion est linéaire. Le masque utilisé est alors toutefois imposé par la fonction non-linéaire à appliquer et peut se révéler inapproprié pour une sécurisation efficace du procédé : le masquage multiplicatif est par exemple rendu inopérant lorsque la donnée à masquer est nulle. Afin de répondre à ces problèmes, et notamment de déterminer le résultat de l'application d'une fonction non-linéaire avec masquage efficace de cette opération, mais sans avoir à modifier les fonctions impliquées selon le masque utilisé, l'invention propose un procédé de traitement cryptographique de données représentées sous forme numérique, le procédé étant mis en oeuvre par une entité électronique et comprenant une transformation d'une donnée d'entrée en donnée de sortie, la donnée de sortie correspondant au résultat de l'application d'une fonction non-linéaire à la donnée d'entrée, caractérisé par les étapes suivantes : - application d'un masque à la donnée d'entrée pour obtenir une 25 donnée masquée ; - détermination de la donnée de sortie par application à la donnée masquée d'une combinaison linéaire impliquant, dans chaque terme de la combinaison, une fonction indépendante du masque et liée à la fonction non-linéaire. 30 L'utilisation d'une fonction liée à la fonction non-linéaire et indépendante du masque permet de répercuter l'influence nécessaire de la fonction non-linéaire sur la donnée masquée, sans toutefois nécessiter de modifications de ce processus selon le masque impliqué, les modifications générées par le masquage étant reportées au niveau de la combinaison linéaire. L'entité électronique est apte à manipuler les données numériques traitées, par exemple au moyen d'un microprocesseur. Le procédé est par exemple un procédé de chiffrage ou de déchiffrage de données numériques, représentant en général un message, mais également potentiellement une clé cryptographique, une donnée intermédiaire, ou une partie seulement de tels éléments. Selon un mode de réalisation particulièrement intéressant du fait de la combinaison linéaire, le masque peut être un masque additif, par exemple un masque booléen. Selon un premier exemple de réalisation, la combinaison linéaire est une somme booléenne de fonctions translatées par rapport à la fonction non-linéaire. La somme porte alors par exemple sur les fonctions translatées par un ensemble de valeurs envisageables pour la donnée masquée exceptée la valeur 15 du masque. Précisément, la donnée de sortie peut alors être obtenue au moyen du calcul de F(M ;_1 0 a), où F est la fonction non-linéaire, X le masque et M';_1 aeE,amX la donnée masquée. Selon un second exemple de réalisation, la donnée masquée est 20 représentée dans un espace vectoriel, par exemple du type GF(2)k. On propose dans ce cadre que la fonction liée à la fonction non- linéaire soit par exemple une transformée de Fourier de la fonction non-linéaire. La combinaison linéaire peut alors être une somme, pour chaque élément de l'espace vectoriel, de la transformée de Fourier pris en cet élément 25 avec un signe dépendant notamment de la donnée masquée. On peut prévoir dans ce contexte une étape, préalable à la combinaison linéaire, de masquage d'un registre contenant la somme au moyen d'un masque arithmétique et/ou une étape, postérieure à la combinaison linéaire, de conversion du masquage arithmétique du registre en masquage booléen. 30 En pratique, la donnée de sortie peut être obtenue au moyen du calcul de EF(A)(-1)'''m''-''(M''-i' , où G est l'espace vectoriel, r la transformée de AEG Fourier de la fonction non-linéaire F, X le masque et M';_1 la donnée masquée. Selon une variante mieux protégée contre les attaques, la donnée de sortie est obtenue au moyen du calcul de 1F(A)(-1)`'"'''-isa("''-i li `z'), où G est A e G l'espace vectoriel, r la transformée de Fourier de la fonction non-linéaire F, X le masque, M';_1 la donnée masquée et RI un nombre (aléatoire ou pseudo- aléatoire) déterminé par l'entité électronique et qui permet un nouveau masquage de certaines opérations. Selon une réalisation pratique, on peut prévoir une étape de détermination d'une image de la fonction liée à la fonction non-linéaire par lecture dans une table de correspondance, mémorisée par exemple en mémoire non- volatile. L'invention permet en effet d'utiliser la même table quel que soit le masque. On prévoit en général également une étape de démasquage de la donnée de sortie. Le procédé est par exemple mis en oeuvre par une séquence d'instructions mémorisées dans l'entité électronique et exécutées par un microprocesseur de l'entité électronique. L'entité électronique peut être en pratique une carte à microcircuit, particulièrement adaptée à ce type d'opérations sécurisées. L'invention propose également un dispositif électronique de traitement cryptographique de données représentées sous forme numérique, le dispositif étant apte à effectuer une transformation d'une donnée d'entrée en donnée de sortie, la donnée de sortie correspondant au résultat de l'application d'une fonction non-linéaire à la donnée d'entrée, caractérisé par des moyens pour appliquer un masque à la donnée d'entrée pour obtenir une donnée masquée, et des moyens pour déterminer la donnée de sortie par application à la donnée masquée d'une combinaison linéaire impliquant, dans chaque terme de la combinaison, une fonction indépendante du masque et liée à la fonction non-linéaire. Ce dispositif peut également inclure des caractéristiques correspondant aux modes de réalisation envisagés ci-dessus pour le procédé. L'invention propose enfin un programme d'ordinateur comprenant une suite d'instructions aptes, lorsqu'elles sont exécutées par un microprocesseur, à mettre en oeuvre le procédé évoqué ci-dessus. D'autres caractéristiques et avantages de la présente invention 5 apparaîtront en outre à la lecture de la description qui suit, faite en référence aux dessins annexés, dans lesquels : û la figure 1 représente schématiquement les éléments principaux d'une forme de réalisation possible pour une carte à microcircuit ; û la figure 2 représente l'allure physique générale de la carte à 10 microcircuit de la figure 1 ; û la figure 3 représente les étapes essentielles d'un chiffrement selon l'algorithme AES avec masquage ; û la figure 4 représente les étapes essentielles d'une itération (ou ROUND) à l'étape E110 de la figure 3 ; 15 û la figure 5 représente un premier exemple de réalisation de l'étape E202 de la figure 4 ; û les figures 6A et 6B représentent un second exemple de réalisation de l'étape E202 de la figure 4. Un exemple d'entité électronique est une carte à microcircuit 10 dont 20 les principaux éléments électroniques sont représentés à la figure 1 et qui comporte un microprocesseur 2 relié d'une part à une mémoire vive (ou RAM de l'anglais Random Access Memory) 4 et d'autre part à une mémoire à semi-conducteur non-volatile réinscriptible 6, par exemple une mémoire morte effaçable et programmable électriquement (ou EEPROM de l'anglais Electrically 25 Erasable Programable Read Only Memory). En variante, la mémoire non-volatile réinscriptible à semi-conducteur 6 pourrait être une mémoire flash. Les mémoires 4, 6 sont reliées au microprocesseur 2 par un bus chacune sur la figure 1 ; en variante, il pourrait s'agir d'un bus commun. La carte à microcircuit 10 comporte également une interface 8 de 30 communication avec un terminal utilisateur réalisée ici sous forme de contacts dont un assure par exemple une liaison bidirectionnelle avec le microprocesseur 2. L'interface 8 permet ainsi l'établissement d'une communication bidirectionnelle entre le microprocesseur 2 et le terminal utilisateur dans lequel la carte à microcircuit 10 sera insérée. Ainsi, lors de l'insertion de la carte à microcircuit 10 dans un terminal utilisateur, le microprocesseur 2 va mettre en oeuvre un procédé de fonctionnement de la carte à microcircuit 10, selon un jeu d'instructions, stockées par exemple dans une mémoire morte (ou ROM de l'anglais Read-Only Memory) û non représentée û ou dans la mémoire réinscriptible 6, qui définit un programme d'ordinateur. Ce procédé inclut en général l'échange de données avec le terminal utilisateur via l'interface 8 et le traitement de données au sein de la carte à microcircuit 10, et précisément au sein du microprocesseur 2 avec utilisation éventuelle de données stockées dans la mémoire réinscriptible 6 et de données stockées temporairement dans la mémoire vive 4. Des exemples de procédés qui mettent en oeuvre l'invention sont donnés dans la suite. La figure 2 représente l'allure physique générale de la carte à microcircuit 10 réalisée avec la forme générale d'un parallélépipède rectangle de 15 très faible épaisseur. L'interface de communication 8 pourvue des contacts déjà mentionnés apparaît clairement sur la face de la carte à microcircuit 10 visible sur la figure 2, sous forme d'un rectangle inscrit dans la face supérieure de la carte à microcircuit 10. 20 La figure 3 représente les étapes essentielles d'un procédé de chiffrement d'un mot M au sein de l'entité électronique. Le mot M est en général une partie d'un message à chiffrer ayant par exemple une longueur de 128 bits. D'autres longueurs sont naturellement envisageable, telles que les longueurs de 192 bits et 256 bits fréquemment 25 utilisées. L'exemple décrit ici utilise comme entité électronique la carte à microcircuit décrite précédemment en référence aux figures 1 et 2, mais d'autres types d'entité électronique peuvent naturellement être utilisés, tels que par exemple un ordinateur personnel. 30 Le procédé de la figure 3 réalise le chiffrement du mot M selon l'algorithme AES (de l'anglais "Advanced Encryption Standard"). Pour ce faire, l'entité électronique mémorise, par exemple au sein de la mémoire non volatile 6, une clé cryptographique K à partir de laquelle sont dérivées des sous-clés Ko, ... Kn au moyen d'une procédure d'expansion de clé. L'obtention des sous-clés Ko, ... Kn peut être réalisée selon des techniques connues et qui ne seront donc pas décrites en détail ici. On pourra se référer par exemple à la demande de brevet FR 2 838 262. On notera toutefois que l'invention, décrite dans la suite appliquée au calcul des boites-S (ou "S-box") impliquées à chaque itération (ou ROUND) de l'algorithme AES, pourrait être mise en oeuvre lors de l'application de la fonction non-linéaire utilisée dans l'algorithme de dérivation des sous-clés Ko, ... Kn. Le procédé de chiffrement commence à l'étape E100 par la réception, par exemple à travers l'interface 8 de la carte à microcircuit, du mot (en général une partie de message) M à chiffrer. On procède alors au sein de l'entité électronique au tirage d'un nombre aléatoire X utilisé comme expliqué dans la suite pour le masquage du mot M au cours d'une étape E102. Bien que l'on utilise les termes "nombre aléatoire", il s'agit par exemple en pratique d'un nombre pseudoaléatoire déterminé à l'intérieur du microprocesseur 2. De manière générale, le nombre X doit être un nombre non-prévisible de l'extérieur de l'entité électronique. On procède alors au cours d'une étape E104 au masquage du mot M afin d'obtenir un mot masqué M' par combinaison du mot M et du nombre aléatoire X au moyen d'une opération de ou exclusif (fréquemment dénommée "XOR") : M'=MO+X. On affectera dans la suite le symbole prime aux valeurs masquées (ici par exemple M') tandis que les grandeurs qui ne portent pas le symbole prime représentent les grandeurs correspondantes sans masquage, c'est-à-dire telles qu'elles auraient été obtenues au cours de l'algorithme AES réalisé sans masquage ; ces grandeurs sans masquage sont introduites ici à des fins explicatives, mais ne seront pas manipulées par le procédé décrit ici qui utilise leur version masquée, sauf naturellement pour les grandeurs M et Mn utilisées respectivement en entrée et en sortie. Il va à présent être procédé aux différentes étapes de l'algorithme AES en utilisant la donnée masquée M' selon les étapes décrites ci-dessous qui correspondent aux étapes classiques de l'algorithme AES adaptées pour tenir compte du masquage. On procède ainsi tout d'abord à la transformation initiale au moyen de la sous-clé Ko au cours d'une étape E106 : la transformation initiale consiste à appliquer la clé Ko à la donnée au moyen d'un opérateur ou exclusif. Le résultat de la transformation initiale est donc le mot M'o tel que M'o = M' Ko. Si on dénomme Mo le résultat de la transformation initiale sans masquage (Mo = M O+ Ko), on peut remarquer que le résultat M'o de l'étape E106 peut s'écrire M'o = Mo O+ X. On remarque ainsi que le résultat de l'étape E106 correspond au résultat de la transformation initiale sans masquage, masqué par la valeur du masque X. On procède après la transformation initiale à une étape E108 d'initialisation à 1 d'un indice i repérant dans la suite l'itération (ou ROUND) 10 concernée. A l'étape E110, on fait subir au mot masqué M'o obtenu à l'étape précédente (étape E106 après la transformation initiale ou itération précédente) une itération (ROUND) de l'algorithme comme décrit en détail plus bas en référence à la figure 4, afin d'obtenir un nouveau mot masqué M';. 15 Comme cela apparaîtra dans la suite, chaque itération est conçue dans l'exemple donné ici (cf. figure 4) pour que le résultat obtenu après l'itération M'; soit égal au résultat M; après l'itération i dans un algorithme sans masquage, masqué avec un masque X identique à celui introduit à l'étape E104 : après chaque itération, M'; = M; O+ X. 20 Une fois l'itération ou ROUND i réalisée, on incrémente la valeur de l'indice i au cours d'une étape E112, puis on teste au cours d'une étape E114 l'égalité i = n, où n est le nombre d'itérations plus un utilisées dans l'algorithme concerné (en général 10 itérations pour un mot de 128 bits). Si la dernière itération n'a pas été atteinte (c'est-à-dire que l'égalité i = n 25 n'est pas vérifiée), on retourne à l'étape E110 pour la mise en oeuvre de l'itération suivante. Si en revanche la dernière itération est atteinte (c'est-à-dire lorsque l'on vérifie i = n), on procède à la transformation finale lors d'une étape E116, au cours de laquelle on obtient donc un mot M'n à partir du mot M'n_1 précédemment obtenu, 30 et ce avec utilisation de la sous-clé Kn (étape E116). Le résultat de la transformation finale Min correspond ainsi au mot chiffré obtenu grâce à l'algorithme AES à partir du mot initial M, masqué avec le masque précédemment défini X. On procède alors à l'étape E118 au démasquage du mot obtenu à l'étape E116 afin d'obtenir le mot chiffré Mn : Mn = Min O+ X. Le mot chiffré Mn peut alors être émis à l'extérieur de l'entité électronique au moyen de l'interface 8 au cours d'une étape E120 qui termine le procédé de 5 chiffrage par l'entité électronique du mot M. La figure 4 présente les étapes principales mises en oeuvre au cours de chaque itération de l'étape E110 mentionnée plus haut. Comme déjà indiqué, l'itération i est appliquée à une donnée masquée M';_1 avec utilisation du masque X, ces deux valeurs étant par conséquent les 10 données reçues en entrée au cours d'une étape E200 par le procédé représenté à la figure 4. Ces données, et en particulier la donnée masquée sont tout d'abord traitées par application d'une étape couramment dénommée "Byte Sub" qui consiste à substituer les données au moyen d'une fonction F non linéaire 15 (couramment dénommée boîte-S ou "S-box"), ici selon l'un ou l'autre de deux modes de réalisation envisageables décrits ci-après en référence aux figures 5 d'une part, et 6A et 6B d'autre part. L'étape E202 permet ainsi d'obtenir le résultat B' de l'application de la fonction F non linéaire à la donnée masquée M';_1 reçue en entrée à l'étape E200. 20 Par ailleurs, l'opération F n'étant pas linéaire, on prévoit également au cours de l'étape E202 de déterminer le masque XI qui différencie le résultat obtenu B' du résultat F (M;_1) qui aurait été obtenu sans masquage (et qui est différent de F(X) du fait de l'absence de linéarité). On applique ensuite au résultat B' de l'étape E202 l'étape couramment 25 dénommée "Shift RoW' de décalage de bits de sous-blocs de B', afin d'obtenir un mot C' (étape E204). Le masque X2 masquant le mot C' après cette opération est obtenu simplement en appliquant la même opération "Shift RoW' au masque XI déterminé à l'étape E202. 30 On vérifie au cours d'une étape E205 si i est différent de n-1, et on procède, si i est différent de n-1, à l'opération "Mix Column" de multiplication de sous-blocs de C' par une matrice au cours d'une étape E206, afin d'obtenir le mot D' ; on obtient aussi le masque X3 de D' par application de l'étape "Mix Column" au masque X2. On procède alors au cours de l'étape E208 à la quatrième et dernière étape classique de l'itération, à savoir l'étape généralement dénommée "Add Round Key' pour obtenir un résultat E' par combinaison de la donnée D' obtenue à l'étape E206 avec la sous-clé K; associée à cette itération au moyen d'un ou exclusif : E'=D'O+ Ki. On peut remarquer que, contrairement à l'opération "Byte Sub" de l'étape E202 présentée en détail ci-après, les opérations "Shift Row", "Mix Column" et "Add Round Key' des étapes respectives E204, E206 et E208 sont appliquées au résultat de l'étape précédente conformément à ce qui est prévu dans l'algorithme AES. Le résultat E' de l'étape E208 correspond alors au le résultat classique de l'algorithme AES, avec masquage par le masque X3 mentionné ci-dessus. Afin d'obtenir un résultat M'; de l'itération masqué par un masque identique à chaque itération (ici le masque utilisé à l'étape E104), on corrige le masquage du résultat E' à l'étape E210 par l'opération : M'; = E' X X3. On obtient donc ainsi en sortie à l'étape E212 après l'itération i la donnée M'; masquée au moyen du masque X. La figure 5 représente un premier mode de réalisation de l'étape E202 mentionnée ci-dessus conformément aux enseignements de l'invention. On se place ici dans le cas où la fonction F est une fonction polynomiale algébrique de degré k et où l'on représente les données traitées au cours de l'étape E202 (à savoir principalement la donnée masquée M';l et le masque X) comme des éléments d'un espace vectoriel E de cardinal fini N et de dimension égale au degré k de la fonction F. L'espace vectoriel E est de préférence engendré avec une structure aléatoire au moyen de techniques connues, par exemple à chaque nouvelle exécution d'un algorithme AES. Pour simplifier l'exposé, on écrit chaque élément de E sous la forme : agi, avec j compris entre 0 et N-1 : E = { a i }04 On note comme précédemment e d'addition booléenne dans cet espace vectoriel. Le procédé mettant en oeuvre l'étape E202 selon ce premier mode de réalisation commence par une étape E300 d'initialisation d'un indice j et d'une somme booléenne S à 0. L'indice j repère l'élément ai de l'espace vectoriel E utilisé aux étapes 5 concernées. On procède à l'étape E302 à la comparaison de l'élément ai en cours au masque X reçu en entrée (voir ci-dessus l'étape E200). Si la comparaison est négative (c'est-à-dire si l'élément a; n'est pas égal au masque X), on procède à l'étape E304 où l'on détermine le résultat de 10 l'application de la fonction F à la combinaison (au moyen d'un ou exclusif) de la donnée reçue en entrée et de l'élément courant agi, ce résultat étant combiné à la valeur courante de la somme S afin d'obtenir une nouvelle valeur pour cette somme courante S. Le résultat de l'application de la fonction F est par exemple obtenu par la 15 lecture de l'image de la valeur M';_1 ai dans une table de correspondance (ou table-S) mémorisée dans la mémoire non-volatile 6. Lorsqu'il a au contraire été déterminé à l'étape E302 que l'élément courant ai est égal au masque, on procède directement à l'étape E306 sans procéder à l'étape E304. L'étape E306 suit également l'étape E304 lorsque celle-ci 20 est mise en oeuvre. L'étape E306 qui vient d'être mentionnée consiste à incrémenter la valeur de l'indice j afin de parcourir l'ensemble de l'espace vectoriel E. Ainsi, on vérifie à l'étape E308 que l'ensemble de l'espace vectoriel E n'a pas été parcouru par la comparaison de l'indice j au nombre N d'éléments de 25 l'espace vectoriel E et on retourne en cas d'inégalité à l'étape E302 précédemment décrite. Si en revanche l'égalité j = N est vérifiée à l'étape E308, tous les éléments ai de l'espace vectoriel E ont été considérés. La somme S vaut alors S = F(M ;_1 (D a). aeE,arX 30 S'agissant d'une fonction de degré k dans un espace vectoriel de dimension identique k, on peut démontrer que F vérifie la propriété suivante : F(a)= DE F, où DE F est une constante qui peut être mémorisée en mémoire vive aeE 4. On a donc S = F(M';_1 O+ X) O+ DE F, où naturellement O+ X = La somme S obtenue après l'étape E308 correspond donc au résultat F(M;_1) de l'opération "Byte Sub" qui aurait été obtenu sans masquage, résultat masqué par une valeur constante DE F. On peut ainsi retourner au cours d'une étape E310 la somme S comme résultat B' de l'étape E202 et la valeur DE F comme masque XI à l'issue de l'étape E202. On a ainsi pu appliquer la fonction non-linéaire F à la valeur masquée M;_1 en ayant recours à la fonction F elle-même, sans modification générée par la 10 présence du masque X, et avec obtention d'un résultat masqué au moyen d'un masque facile à déterminer. L'influence du masquage a en quelque sorte été déplacée à l'extérieur de l'application de la fonction F et le suivi du masque appliqué aux données manipulées s'en trouve simplifié. 15 Les figures 6A et 6B présentent les étapes principales d'un second exemple de mise en oeuvre de l'étape E202 de la figure 4 conformément aux enseignements de l'invention. Les données traitées sont considérées dans cet exemple comme des éléments d'un corps de Galois GF(2k) (dénommés G dans la suite), dans lequel on 20 peut définir la transformée de Fourier P d'une fonction F comme suit : VA E G,Ê(A) = F(Y)(-1)A.Y YEG où A.Y désigne le produit scalaire de A et Y défini comme suit A.Y = A,.Y mod 2. o On peut ainsi retrouver l'image F(Y) par une fonction F de l'élément Y en réécrivant cette fonction comme la transformée de Fourier de sa transformée de Fourier F , c'est-à-dire en pratique en appliquant la transformée de Fourier P à chaque élément du corps de Galois G et en sommant le résultat selon la formule ci- après : F(Y) = 1 F(A)(-1)A' 2 AEG Le procédé décrit ci-après utilise cette formulation de l'image F(Y) d'une fonction F, éventuellement non linéaire. Dans le cas de l'algorithme AES, la fonction F peut être choisie comme l'inversion dans GF(2k) \ {0} (avec par convention F(0)=0), ou bien comme cette même inversion suivie par la transformation affine sur GF(2) suivante qui calcule b'=(b'o,...,b'7) à partir de b=(bo, ...,b7): 0 0 0 1 1 1 1 1~,3 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 b4 1 1 1 1 1 0 0 0 1 1 1 1 1 0 Uo 1 0 0 1 1 1 1 1 V, Ainsi, on procède à l'étape E400 au tirage de trois nombres aléatoires RI, R2, R3. Comme pour l'étape E102 décrite précédemment, il s'agit ici également d'utiliser des nombres imprévisibles de l'extérieur afin de masquer les données manipulées. On initialise ensuite lors d'une étape E402 un registre S à la valeur 2kxR2+R3. On procède ensuite lors d'une étape E404 l'initialisation d'un registre A, représentant une valeur variable dans le corps de Galois G, à la valeur 0. On détermine dans la suite, dans les étapes référencées E406 à E416, le terme associé à l'élément A dans la somme exprimant l'image F(Y) en fonction de la transformée de Fourier fr. Pour ce faire, on calcule tout d'abord la valeur (-1)A M''-1 et on mémorise ce résultat dans un registre TI lors d'une étape E406. On rappelle à cet égard que la donnée M';_1 est la donnée masquée (M';_1 = Mo e X) dont on doit calculer une image masquée par la fonction non linéaire F comme déjà expliqué à propos de l'étape E202 de la figure 4. bo 1 0 On procède également lors d'une étape E408 à la somme booléenne de cettedonnée M';_1 et de l'élément courant A : O+ A, et on mémorise le résultat dans un registre T2. On procède alors au masquage de ce registre au cours d'une étape E410 par addition booléenne du nombre aléatoire RI déterminé à l'étape E400 afin de masquer l'opération de calcul du produit scalaire impliquant le masque X à l'étape suivante. Le résultat du masquage est stocké dans T2 avec écrasement. On peut alors procéder, sans risque par rapport aux attaques DPA, à la détermination du signe exprimé par (-1)x.T2, que l'on mémorise dans le registre T2 avec écrasement lors d'une étape E412. Puis on combine par multiplication le contenu des registres TI et T2 lors d'une étape E414, résultat que l'on mémorise à nouveau avec écrasement dans le registre T2. Après l'étape E414, du fait des calculs mis en oeuvre depuis l'étape 15 E406, le registre T2 contient le signe donné par On procède alors à la multiplication du registre T2 par la valeur r (A) de la transformée de Fourier r prise au point courant A, que l'on stocke à nouveau dans le registre T2 avec écrasement au cours d'une étape E416. La valeur P (A) associé à l'élément A est par exemple déterminée par 20 lecture dans une table de correspondance qui mémorise, par exemple en mémoire non volatile 8, l'ensemble des couples (Y, r (Y)), c'est-à-dire des valeurs pré-calculées r (Y) associées à chaque Y envisageable dans G. On ajoute la valeur du registre T2 après l'étape E416 à la somme courante S au cours d'une étape E418. 25 Une fois le terme relatif à l'élément A ajouté à la somme S, on incrémente l'élément A lors d'une étape E420 et on vérifie lors d'une étape E422 si tous les éléments du corps de Galois G ont été considérés. Dans la négative (c'est-à-dire si A est différent de 2k), on traite l'élément courant A qui vient d'être déterminé en procédant à l'étape E406 déjà décrite. 30 En revanche, si tous les éléments du corps de Galois G ont été traités (c'est-à-dire si A a atteint 2k), la sommation de la transformée de Fourier prise en chacun des points du corps de Galois G a été réalisée et la somme courante S vaut donc: S = 2k R2 + R3+ .Y.(Af';_,GA R, ) AEG On peut alors procéder à la division de cette valeur par 2k au moyen d'un décalage à droite du registre S de k bits lors d'une étape E424 de telle sorte que la somme S vaut alors, d'après l'expression mentionnée plus haut pour F(Y) : S = (-1)(M';_, mR, ).X F(M. ) + R2 . Afin d'obtenir le résultat souhaité, à savoir la valeur F(M;_1) masquée par un masque booléen, il convient donc de déterminer le signe devant F(M;_1) dans l'expression ci-dessus et de remplacer le masquage additif arithmétique (ci-dessus "+ R,") par un masquage additif booléen (du type "O+ R,"). Pour ce faire, on calcule la valeur M';_1 C+ RI que l'on mémorise dans le registre TI avec écrasement au cours d'une étape E426, puis on détermine le signe (-1)T1.R1, signe que l'on mémorise dans le registre TI avec écrasement au cours d'une étape E428. On peut alors déterminer le signe et convertir le masque comme indiqué ci-dessus au moyen d'un algorithme du type de celui décrit par L. Goubin dans l'article "A sound method for switching between boolean and arithmetic masking" (algorithme 2), de L. Goubin in "Cryptographie Hardware and Embedded Systems û CHES 2001", Lectures Notes in Computer Science, vol. 2162, Springer-Verlag 2001, en utilisant en entrée le couple (TI x S, -TI x R2). On obtient en sortie les valeurs recherchées, à savoir la valeur masquée B' (égale à F(Mo)O+ R2) et le masque booléen utilisé X, (égal à R2). L'utilisation de la transformée de Fourier r comme fonction liée à la fonction non- linéaire F permet ainsi de prendre en compte la fonction F par des appels à sa fonction liée r indépendamment du masque X, la prise en compte du masque X étant reportée dans d'autres termes dont le calcul est relativement simple. Dans le cas de l'algorithme AES, nous avons k = 8 û c'est-à-dire que l'on considère les données comme des éléments de GF(28). Cependant, si nous choisissions F comme l'inversion dans GF(28), on peut ramener les calculs effectués au cours du procédé présenté aux figures 6A et 6B à des calculs dans GF(24) grâce à la méthode envisagée dans l'article "Efficient implementation of the Rijndael S-box" de V. Rijmen, 2000 et développée dans la thèse de C. Paar (VLSI Architectures for Bit Parallel Computations in Galois Fields, PhD thesis, Universitàt Essen, 1994). La méthode proposée par cet article consiste à utiliser le fait que l'inverse d'un polynôme ah x + a, sur GF(24) est un polynôme a"h x + a", avec a"h=ah 5 x d-1 et a",=(ah + a,) x où d=(ah2 x {e}) + (ah x a,) + a12 avec {e} la valeur hexadécimale OxOE. On note dans la suite map l'isomorphisme défini dans la thèse de C. Paar qui prend un élément a de GF(28) en entrée et ressort les coefficient du polynôme linéaire correspondant ahx+a, dans GF(24). Selon cette variante, on procède aux étapes suivantes : on tire des nombres aléatoires sur 4 bits xd, x"h, x", ; on définit (xh, xi) comme le résultat de l'opération map(X); on détermine (àh, à,) en calculant map(M';_1) ; on calcule : cl = àh2 {e}O+àh0à,O+â,2OxdO+àh x,O+à, xhO+xh20{e}O+x,2O+xh x,; on applique le procédé des figures 6A et 6B (avec k=4) en utilisant en donnée d'entrée â (au lieu de avec pour masque Xd (au lieu de X), ce qui donne en sortie les valeurs S (au lieu de B') et x8 (au lieu de XI); - on calcule les coefficients b,, et b, du polynôme correspondant par l'isomorphisme map à la donnée de sortie B' au moyen des formules suivantes : 20 b,, = àh S O+x"hO+xh 8 O+xS àhe+xs xh b, = à, 8 O+ x",O+ b, O+ x,+Oà, xsO+x"hO+x, xs; - on construit le masque en sortie XI à partir de x"h et : X~ = map"'(x" h fi) - on construit la sortie B' à partir de b,, et : B' = map-'(b,, , ). 25 Les exemples qui viennent d'être présentés ne sont que les modes possibles de mise en oeuvre de l'invention. L'invention peut par exemple également être appliquée dans le cas d'autres algorithmes impliquant une fonction non-linéaire, tel l'algorithme DES. Le masque appliqué à la donnée en entrée de la fonction non-linéaire n'est d'ailleurs 30 pas nécessairement alors le masque X appliqué au début de l'algorithme, mais s'en déduit en général facilement comme expliqué plus haut à propos des étapes E204, E206 et E208. 10 15 Par ailleurs, comme déjà mentionné, cette approche peut être appliquée notamment à l'opération d'expansion de la clé.5 REVENDICATIONS 1. Procédé de traitement cryptographique de données représentées sous forme numérique, le procédé étant mis en oeuvre par une entité électronique et comprenant une transformation d'une donnée d'entrée (M;_I) en donnée de sortie (B'), la donnée de sortie (B') correspondant au résultat de l'application d'une fonction non-linéaire à la donnée d'entrée (M;_1), caractérisé par les étapes suivantes : - application d'un masque (X) à la donnée d'entrée (M;_1) pour obtenir une donnée masquée (M';_I) ; - détermination de la donnée de sortie (B') par application à la donnée masquée (M';_1) d'une combinaison linéaire impliquant, dans chaque terme de la combinaison, une fonction (F ; P) indépendante du masque et liée à la fonction non-linéaire (F). 2. Procédé selon la revendication 1, caractérisé en ce que le masque est un masque additif. 3. Procédé selon la revendication 2, caractérisé en ce que le masque 20 additif est un masque booléen. 4. Procédé selon la revendication 3, caractérisé en ce que la combinaison linéaire est une somme booléenne de fonctions translatées par rapport à la fonction non-linéaire. 5. Procédé selon la revendication 4, caractérisé en ce que la somme porte sur les fonctions translatées par un ensemble de valeurs envisageables pour la donnée masquée exceptée la valeur du masque. 30 6. Procédé selon la revendication 5, caractérisée en ce que la donnée de sortie est obtenue au moyen du calcul de O+ F(M';_1 O+ a), où F est la aeE,ax fonction non-linéaire, X le masque et M';_1 la donnée masquée. 25 7. Procédé selon l'une des revendications 1 à 3, caractérisé en ce que la donnée masquée est représentée dans un espace vectoriel. 8. Procédé selon la revendication 7, caractérisé en ce que la fonction 5 liée à la fonction non-linéaire est une transformée de Fourier de la fonction non-linéaire. 9. Procédé selon la revendication 8, caractérisé en ce que la combinaison linéaire est une somme, pour chaque élément de l'espace vectoriel, 10 de la transformée de Fourier pris en cet élément avec un signe dépendant notamment de la donnée masquée. 10. Procédé selon la revendication 9, caractérisé par une étape, préalable à la combinaison linéaire, de masquage d'un registre contenant la 15 somme au moyen d'un masque arithmétique. 11. Procédé selon la revendication 10, caractérisé par une étape, postérieure à la combinaison linéaire, de conversion du masquage arithmétique du registre en masquage booléen. 12. Procédé selon l'une des revendications 8 à 11, caractérisée en ce que la donnée de sortie est obtenue au moyen du calcul de où G est l'espace vectoriel, F la transformée de AeG Fourier, X le masque et M';_1 la donnée masquée. 25 13. Procédé selon l'une des revendications 8 à 11, caractérisée en ce que la donnée de sortie est obtenue au moyen du calcul de F(A)(û1)`'M_ ax.~"~,-, Amx,) où G est l'espace vectoriel, F la transformée de AEG Fourier, X le masque, la donnée masquée et RI un nombre déterminé par 30 l'entité électronique. 20 14. Procédé selon l'une des revendications 1 à 13, caractérisé par une étape de détermination d'une image de la fonction liée à la fonction non-linéaire par lecture dans une table de correspondance. 15. Procédé selon la revendication 14, caractérisé en ce que la table de correspondance est mémorisée en mémoire non-volatile. 16. Procédé selon l'une des revendications 1 à 15, caractérisé par une étape de démasquage de la donnée de sortie. 17. Procédé selon l'une des revendications 1 à 16, caractérisé en ce qu'il est mis en oeuvre par une séquence d'instructions mémorisées dans l'entité électronique et exécutées par un microprocesseur de l'entité électronique. 18. Procédé selon l'une des revendications 1 à 17, caractérisé en ce que l'entité électronique est une carte à microcircuit. 19. Dispositif électronique de traitement cryptographique de données représentées sous forme numérique, le dispositif étant apte à effectuer une transformation d'une donnée d'entrée en donnée de sortie, la donnée de sortie correspondant au résultat de l'application d'une fonction non-linéaire à la donnée d'entrée, caractérisé par : - des moyens pour appliquer un masque à la donnée d'entrée pour 25 obtenir une donnée masquée ; - des moyens pour déterminer la donnée de sortie par application à la donnée masquée d'une combinaison linéaire impliquant, dans chaque terme de la combinaison, une fonction indépendante du masque et liée à la fonction non-linéaire. 30 20. Dispositif selon la revendication 19, caractérisé en ce que le masque est un masque additif. 21. Dispositif selon la revendication 20, caractérisé en ce que le masque additif est un masque booléen. 22. Dispositif selon la revendication 21, caractérisé en ce que la 5 combinaison linéaire est une somme booléenne de fonctions translatées par rapport à la fonction non-linéaire. 23. Dispositif selon la revendication 22, caractérisé en ce que la somme porte sur les fonctions translatées par un ensemble de valeurs 10 envisageables pour la donnée masquée exceptée la valeur du masque. 24. Dispositif selon la revendication 23, caractérisée par des moyens pour obtenir la donnée de sortie au moyen du calcul de O+ F(M';_1 O+ a), où F aeE,axX est la fonction non-linéaire, X le masque et M';_1 la donnée masquée. 25. Dispositif selon l'une des revendications 19 à 21, caractérisé par des moyens pour représenter la donnée masquée dans un espace vectoriel. 26. Dispositif selon la revendication 25, caractérisé en ce que la 20 fonction liée à la fonction non-linéaire est une transformée de Fourier de la fonction non-linéaire. 27. Dispositif selon la revendication 26, caractérisé en ce que la combinaison linéaire est une somme, pour chaque élément de l'espace vectoriel, 25 de la transformée de Fourier pris en cet élément avec un signe dépendant notamment de la donnée masquée. 28. Dispositif selon la revendication 27, caractérisé par des moyens pour, préalablement à la combinaison linéaire, masquer un registre contenant la 30 somme au moyen d'un masque arithmétique. 15 29. Dispositif selon la revendication 28, caractérisé par des moyens pour, postérieurement à la combinaison linéaire, convertir le masquage arithmétique du registre en masquage booléen. 30. Dispositif selon l'une des revendications 26 à 29, caractérisée par des moyens pour obtenir la donnée de sortie au moyen du calcul de où G est l'espace vectoriel, r la transformée de AeG Fourier, X le masque et M';_1 la donnée masquée. 31. Dispositif selon l'une des revendications 26 à 29, caractérisée par des moyens pour obtenir la donnée de sortie au moyen du calcul de F(A)(û1)A"''-i "'',-,eA R > où G est l'espace vectoriel, r la transformée de AEG Fourier, X le masque, la donnée masquée et RI un nombre déterminé par le dispositif électronique. 32. Dispositif selon l'une des revendications 19 à 31, caractérisé par des moyens pour déterminer une image de la fonction liée à la fonction non-linéaire par lecture dans une table de correspondance. 20 33. Dispositif selon la revendication 32, caractérisé en ce que la table de correspondance est mémorisée en mémoire non-volatile. 34. Dispositif selon l'une des revendications 19 à 33, caractérisé par des moyens pour déterminer la donnée de sortie. 35. Dispositif selon l'une des revendications 19 à 34, caractérisé en ce que le dispositif électronique est une carte à microcircuit. 36. Programme d'ordinateur comprenant une suite d'instructions 30 aptes, lorsqu'elles sont exécutées par un microprocesseur, à mettre en oeuvre un procédé selon l'une des revendications 1 à 18. 25