Brevet FR3145222A1 — publié le 20240726

La présente invention concerne un procédé (100) pour protéger un dispositif électronique contre des attaques par canal auxiliaire. Le dispositif électronique est configuré pour exécuter un algorithme cryptographique manipulant des variables appartenant à un corps fini et impliquant au moins une fonction non-linéaire appliquée à une variable secrète à protéger. La fonction comporte une fonction d'élévation à une puissance et une fonction affine telles que . Le procédé comporte un masquage (101) de la variable secrète sous la forme ou sous la forme , ainsi que l’utilisation (102, 103) de deux tables de substitution et . Les éléments de et sont préalablement calculés pour les différentes valeurs pouvant être prises par les variables , et . L’accès à chacune de ces deux tables statiques s’effectue par un sous-ensemble strict des variables , et éventuellement utilisées pour former . Figure 5 Protection contre les attaques par canal auxiliaire d’un algorithme cryptographique impliquant une table de substitution La présente invention appartient au domaine de la cryptographie. Plus particulièrement, l’invention concerne un procédé pour protéger un algorithme cryptographique contre des attaques par canal auxiliaire lorsque l’algorithme utilise une table de substitution. L'invention a également pour objet un dispositif électronique implémentant un tel procédé. Etat de la technique antérieure Il existe aujourd’hui de nombreux dispositifs électroniques comportant un processeur configuré pour exécuter un algorithme cryptographique. Un tel dispositif électronique correspond par exemple à une carte à puce, un circuit intégré de type microcontrôleur, ou un appareil électronique comportant un composant cryptographique (ordinateur, téléphone portable, carte de paiement, dispositif de création de signature électronique, etc.). Les algorithmes cryptographiques considérés dans la présente demande utilisent une clé secrète pour calculer une information de sortie à partir d'une information d'entrée. Il peut s'agir par exemple d'une procédure de chiffrement, de déchiffrement, d'authentification, de signature ou de vérification de signature. Le chiffrement AES (acronyme anglais de « Advanced Encryption Standard », en français « norme de chiffrement avancé ») est un exemple d'algorithme cryptographique symétrique. Il est aujourd'hui considéré comme relativement sûr et utilisé dans de nombreuses applications (par exemple dans le chiffrement de certaines applications de communication ou dans le chiffrement du contenu d’un disque dur). Les algorithmes cryptographiques sont construits de tel sorte qu'il n'est en pratique pas possible de découvrir la clé secrète uniquement à partir de l'information d'entrée et de l'information de sortie. Les opérations exécutées par le processeur du dispositif électronique pour mettre en œuvre l'algorithme cryptographique engendrent des variations de certaines grandeurs physiques telles que la consommation électrique, le rayonnement électromagnétique, la température, l'intensité acoustique ou la durée d'exécution. Ces variations sont dépendantes des données utilisées dans les différentes opérations. Plus particulièrement, dans la mesure où certaines opérations de l'algorithme impliquent la clé secrète, les variations observées peuvent présenter une corrélation avec la valeur de la clé secrète. Une personne malintentionnée peut alors effectuer des mesures d'une ou plusieurs grandeurs physiques, puis exploiter ces mesures par analyse statistique afin d'obtenir des informations sur la clé secrète utilisée par l'algorithme. Ce type d'attaque est connu sous le nom d' « attaque par canal auxiliaire » (SCA pour l’acronyme anglais « Side-Channel Attack »). Plusieurs types d'attaques par canal auxiliaire sont connus, par exemple les attaques de type DPA (acronyme anglais pour « Differential Power Analysis »), « attaque par modèle » (« Template Attack » en anglais), ou CPA (pour l’acronyme anglais « Correlation Power Analysis », en français « analyse de la puissance de corrélation »). On définit généralement l'ordre d'une attaque par canal auxiliaire en fonction du nombre de variables que l'attaquant cherche à déterminer à partir des mesures observées. Par exemple, pour une attaque du premier ordre, l'attaquant s'intéresse uniquement à la valeur d'une variable à un instant donné. Pour une attaque du second ordre, l'attaquant s'intéresse à la valeur de deux variables différentes à deux instants donnés potentiellement différents. Il est généralement admis que la difficulté de mettre en œuvre une attaque par canal auxiliaire augmente de façon exponentielle avec l'ordre de l'attaque. Il est connu de protéger un dispositif électronique contre les attaques par canal auxiliaire en masquant les variables secrètes utilisées par l'algorithme cryptographique et en modifiant les opérations effectuées sur ces variables secrètes (ou sur des variables intermédiaires calculées à partir des variables secrètes) pour que les opérations portent sur des représentations masquées de ces variables et non plus directement sur les variables elles-mêmes. Il convient pour cela de modifier les opérations de l'algorithme pour les adapter à la technique de masquage utilisée. Il existe différentes techniques de masquage. Le principe général du masquage est de faire la séparation d’une variable secrète en plusieurs parties (« shares » en anglais). Les opérations de l’algorithme sont alors effectuées sur les différentes parties de la variable secrète et non plus directement sur la variable secrète elle-même. Il est ensuite possible, grâce à la connaissance des valeurs des parties en lesquelles la variable secrète a été initialement séparée, de déterminer une valeur de sortie de l'algorithme à partir d'un résultat final des opérations de l'algorithme effectuées sur lesdites parties. Les différentes techniques de masquage partagent ce principe, mais utilisent différentes sortes de décomposition d’une variable secrète. Il est connu par exemple d’utiliser un masquage booléen, un masquage multiplicatif ou un masquage affine (le masquage affine est une combinaison du masquage booléen et du masquage multiplicatif). Ces différentes techniques de masquages ne sont cependant pas directement compatibles avec l’utilisation d’une table de substitution (ou S-Box pour « Substitution Box » en anglais) associée à une fonction non-linéaire, comme c’est par exemple le cas dans l’algorithme AES. Le document « Affine Masking against Higher-Order Side Channel Analysis », G. Fumaroli et al., décrit une application du masquage affine à la S-Box de l’AES. La S-Box est gérée au moyen d’une table de substitution S-Box’ précalculée de telle sorte que , où est la fonction associée à la S-Box de l’AES, est la fonction associée à la table de substitution S-Box’, et , et sont des variables de masquage déterminées aléatoirement. La table S-Box’ doit alors être recalculée à chaque fois que les variables de masquage sont changées, ce qui peut impacter significativement les performances de l’algorithme. Les opérations « . » et « + » correspondent ici respectivement à la multiplication et l’addition de corps fini. Le document « Formal Analysis of the Entropy / Security Trade-Off in First- Order Masking Countermeasures against Side -Channel Attacks », M. Nassar et al., décrit une application du masquage booléen à la S-Box de l’AES. Il est proposé de restreindre l’ensemble des valeurs pouvant être prise par la variable de masquage et de précalculer une table de substitution S-Box’ pour chacune de ces valeurs. Cette solution n’est cependant pas bien adaptée au masquage affine car le masquage affine implique d’utiliser deux variables de masquage, et cela entraîne un grand nombre de valeurs possibles pour le couple formé par les deux variables. Or, le masquage affine présente une meilleure résistance aux attaques par canal auxiliaire. Le document « Secure Multiplicative Masking of Power Functions », L. Genelle et al., décrit une méthode pour évaluer la S-Box de l’AES de manière masquée. La S-Box est décomposée en une fonction puissance et une fonction affine. Les auteurs présentent comment évaluer la S-Box en effectuant la fonction puissance avec un masquage multiplicatif, et en effectuant tout le reste de l’AES (fonction affine inclue) en masquage booléen. Cette méthode nécessite cependant des conversions du masquage multiplicatif vers le masquage booléen et inversement, ce qui nuit aux performances de l’algorithme. D’autre part, contrairement au masquage affine, le masquage booléen et multiplicatif sont ici utilisés séparément et non de manière combinée. Il convient donc de trouver de nouvelles solutions de protection contre les attaques par canal auxiliaire afin d'obtenir un compromis intéressant entre performance et sécurité. La présente invention a pour objectif de remédier à tout ou partie des inconvénients de l’art antérieur. A cet effet, et selon un premier aspect, il est proposé par la présente invention un procédé pour protéger un dispositif électronique contre une attaque par canal auxiliaire. Le dispositif électronique comporte un processeur configuré pour exécuter un algorithme cryptographique manipulant des variables appartenant à un corps fini et impliquant au moins une fonction de substitution non-linéaire appliquée à une variable secrète à protéger. La fonction comporte une fonction d'élévation à une puissance et une fonction affine telles que , où est une constante et est une fonction linéaire par rapport à une opération d’addition du corps fini . Le procédé est mis en œuvre par le processeur du dispositif électronique. Le procédé comporte : un masquage de la variable secrète par une fonction de masquage telle que , chacune des variables et étant choisie aléatoirement parmi les éléments de ou parmi un sous-ensemble de , la variable étant choisie non nulle ; une application à , en fonction de , d’une première table de substitution correspondant à la fonction d’élévation à la puissance et dont les éléments ont été préalablement calculés pour les différentes valeurs pouvant être prises par et ; une application au résultat obtenu en sortie de la première table de substitution , en fonction de , d’une deuxième table de substitution correspondant à la fonction affine et dont les éléments ont été préalablement calculés pour les différentes valeurs pouvant être prises par et . Par l’expression « la première table de substitution correspond à la fonction d’élévation à la puissance » on entend que la fonction associée à la table de substitution comprend une étape d’élévation à la puissance (autrement dit la fonction associée à n’est pas nécessairement limitée à une élévation à la puissance ).De même, par l’expression « la deuxième table de substitution correspond à la fonction affine » on entend que la fonction associée à la table de substitution comprend une étape d’application de la fonction affine (autrement dit la fonction associée à n’est pas nécessairement limitée à la fonction affine ). Le masquage affine permet de sécuriser l'utilisation de la variable secrète . L'utilisation des deux tables et permet de faciliter la prise en compte du masquage lors de l'application de la fonction de substitution à la variable secrète ; en effet, les deux tables et sont précalculées et utilisées de telle sorte qu'on obtienne en sortie de un résultat qui correspond à une représentation masquée (avec un masquage affine présentant le même masque multiplicatif ) du résultat qui aurait été obtenu si on avait appliqué la fonction à la variable secrète . L'utilisation des deux tables et est particulièrement robuste contre les attaques par canal auxiliaire car seul un sous-ensemble strict des parties (« shares ») obtenues par le masquage est utilisé pour évaluer chacune des tables. L'utilisation des deux tables et permet en outre de limiter l'impact du masquage sur l'empreinte mémoire. Dans des modes particuliers de mise en œuvre, l’invention peut comporter en outre l’une ou plusieurs des caractéristiques suivantes, prises isolément ou selon toutes les combinaisons techniquement possibles. Dans des modes particuliers de mise en œuvre, le résultat peut s’écrire sous la forme où est une variable déterminée en fonction de et/ou , et le procédé comporte : une application aux variables et d’une troisième table de substitution dont les éléments ont été préalablement calculés pour les différentes valeurs pouvant être prises par et ; une soustraction du résultat obtenu en sortie de la deuxième table de substitution au résultat obtenu en sortie de la troisième table de substitution pour obtenir un résultat sous la forme , où est une variable déterminée en fonction de et/ou . De telles dispositions permettent de ramener le masque booléen de la représentation masquée obtenue en sortie de la table dans un ensemble spécifique. Cela simplifie l'exploitation de la représentation maquée obtenue en sortie de . L'invention peut également s'appliquer à une combinaison d'un masquage affine avec un masquage carré, ou à une combinaison d'un masquage booléen avec un masquage carré. Ainsi, la présente invention porte également sur un procédé pour protéger un dispositif électronique contre une attaque par canal auxiliaire. Le dispositif électronique comporte un processeur configuré pour exécuter un algorithme cryptographique manipulant des variables appartenant à un corps fini binaire et impliquant au moins une fonction de substitution non-linéaire appliquée à une variable secrète à protéger. La fonction comporte une fonction d’élévation à une puissance et une fonction affine telles que , où est une constante et est une fonction linéaire par rapport à une opération d’addition du corps fini binaire . Le procédé est mis en œuvre par le processeur du dispositif électronique. Le procédé comporte : un masquage de la variable secrète par une fonction de masquage telle que , chacune des variables , et étant choisie aléatoirement parmi les éléments de ou parmi un sous-ensemble de , chacune des variables et étant choisie non nulle ; une application à , en fonction de , d’une première table de substitution correspondant à la fonction d’élévation à la puissance et dont les éléments ont été préalablement calculés pour les différentes valeurs pouvant être prises par et ; une application au résultat obtenu en sortie de la première table de substitution , en fonction de et , d'une deuxième table de substitution correspondant à la fonction affine et dont les éléments ont été préalablement calculés pour les différentes valeurs pouvant être prises par , et . Dans des modes particuliers de mise en œuvre, le résultat peut s’écrire sous la forme où est une variable déterminée en fonction de et/ou , et le procédé comporte : une application aux variables , et d'une troisième table de substitution dont les éléments ont été préalablement calculés pour les différentes valeurs pouvant être prises par , et ; une soustraction du résultat obtenu en sortie de la deuxième table de substitution au résultat obtenu en sortie de la troisième table de substitution pour obtenir un résultat sous la forme , où est une variable déterminée en fonction d’un ou plusieurs éléments parmi , et . Dans des modes particuliers de mise en œuvre, la variable est choisie dans un sous-ensemble strict de , chacune des valeurs pouvant être prise par la variable est associée à un index, et l'application de la première table de substitution est effectuée en fonction de l'index associé à la variable . Dans des modes particuliers de mise en œuvre, la variable est choisie dans un sous-ensemble strict de , chacune des valeurs pouvant être prise par la variable est associée à un index, et l'application de la deuxième table de substitution est effectuée en fonction de l'index associé à la variable . Dans des modes particuliers de mise en œuvre, la variable est choisie dans un plus petit ensemble d’entiers naturels défini tel que, pour tout entier naturel n’appartenant pas à , il existe une valeur appartenant à telle que, pour toute variable appartenant à , est égal à . Par exemple si on considère le corps fini binaire , l’ensemble peut correspondre à l’ensemble {0, 1, 2, …, 7}. Seules les valeurs appartenant à sont prises en compte pour construire la table de substitution . L’ensemble pourrait aussi correspondre à {1, 2, 3, …, 8}, ou à {2, 3, 4, …, 9}, etc. La variable peut aussi avantageusement être choisie dans un sous-ensemble strict de l’ensemble (pour limiter encore davantage le nombre de valeurs possibles pouvant être prise par , et ainsi limiter la taille de la table ). Dans des modes particuliers de mise en œuvre, chacune des valeurs pouvant être prise par la variable est associée à un index, et l’application de la deuxième table de substitution est effectuée en fonction de l’index associé à la variable . Le fait d’utiliser un index associé au masque booléen, au masque affine ou au masque multiplicatif (plutôt que d’utiliser directement la valeur du masque) permet de renforcer la sécurité contre une attaque par canal auxiliaire et de limiter l’impact du masquage sur l'empreinte mémoire. Dans des modes particuliers de mise en œuvre, le sous-ensemble et le sous-ensemble sont différents et choisis de manière à obtenir un poids de Hamming constant pour toutes les valeurs pouvant être prises par une concaténation de avec l’index correspondant à ou . De telles dispositions permettent de limiter les fuites en transition. On appelle fuite en transition une fuite résultant de l’utilisation d’une même ressource matérielle par deux variables l’une après l’autre ; la fuite dépend alors simultanément des valeurs des deux variables. On modélise typiquement une fuite en transition par une distance de Hamming entre les deux variables. Dans des modes particuliers de mise en œuvre, l'algorithme cryptographique est l'algorithme « Advanced Encryption Standard », aussi connu sous l'acronyme AES. Selon un deuxième aspect, la présente invention concerne un produit programme d’ordinateur pour l’exécution d’un algorithme cryptographique. Le programme comprend des instructions de code qui, lorsqu’elles sont exécutées par un processeur d’un dispositif électronique, configurent ledit processeur pour exécuter un procédé selon l’un quelconque des modes de mise en œuvre précédents. Selon un troisième aspect, la présente invention concerne un dispositif électronique comprenant une mémoire mémorisant un tel produit programme d’ordinateur, et un processeur configuré pour l’exécuter. D’autres caractéristiques et avantages de l’invention apparaîtront à la lecture d’un mode de réalisation préférentiel de l’invention, décrit en référence aux figures jointes parmi lesquelles : ] représente de manière schématique un dispositif électronique configuré pour exécuter un algorithme cryptographique. illustre de manière schématique la mise en œuvre d’une fonction non-linéaire appliquée à une variable secrète à protéger. illustre de manière schématique un masquage de la variable secrète par masquage affine et l’application d’une fonction à la variable masquée pour obtenir en sortie une représentation masquée du résultat de l’application de la fonction à la variable secrète . représente de manière schématique les principales étapes d’un procédé selon l’invention pour protéger un algorithme cryptographique contre des attaques par canal auxiliaire, dans le cas d’un masquage affine. représente de manière schématique les principales étapes d’un procédé selon l’invention pour protéger un algorithme cryptographique contre des attaques par canal auxiliaire. illustre de manière schématique un masquage de la variable secrète par une combinaison d’un masquage affine et d’un masquage carré, et l’application d’une fonction à la variable masquée pour obtenir en sortie une représentation masquée du résultat de l’application de la fonction à la variable secrète . représente de manière schématique les principales étapes d’un procédé selon l’invention pour protéger un algorithme cryptographique contre des attaques par canal auxiliaire, dans le cas d’un masquage affine combiné à un masquage carré. Exposé détaillé de modes de réalisation particuliers La décrit de manière schématique un dispositif électronique 10 comportant un processeur 11 configuré pour exécuter un algorithme cryptographique. Le processeur 11 est configuré par des instructions de code 13 sauvegardées dans une mémoire 12 du dispositif électronique 10. Les instructions de code 13 forment un programme d’ordinateur (ou programme informatique) qui met en œuvre l’algorithme cryptographique. Le dispositif électronique 10 correspond par exemple à une carte à puce, un composant cryptographique (par exemple un circuit intégré de type microcontrôleur), ou un appareil électronique comportant un composant cryptographique (ordinateur, téléphone portable, carte de paiement, dispositif de création de signature électronique, etc.). L’algorithme cryptographique manipule des variables appartenant à un corps fini . Il peut s’agir d’un corps fini binaire, et dans ce cas l’opération d’addition du corps fini binaire correspond au « OU exclusif » (XOR). Il peut toutefois également s’agir d’un corps fini non binaire, et dans ce cas l’opération d’addition du corps fini correspond à une addition modulaire. On se place dans le cas où l’algorithme cryptographique implique au moins une fonction de substitution non-linéaire appliquée à une variable secrète qu’il convient de protéger. La figure 2 illustre schématiquement l’application de la fonction non-linéaire à une variable secrète à protéger. On se place en outre dans le cas où la fonction comporte une fonction d'élévation à une puissance et une fonction affine telles que , où est une constante et est une fonction linéaire par rapport à l’opération d’addition de . A titre d’exemple nullement limitatif, l’algorithme cryptographique considéré peut correspondre à tout ou partie d’un algorithme cryptographique symétrique tel qu’AES. La fonction peut en effet correspondre à la fonction associée à la table de substitution (S-Box) de l’algorithme AES. La S-Box de l’AES est en effet composée d’une inversion et d’une fonction affine dans le corps fini binaire . La représente de manière schématique les principales étapes d’un procédé 100 pour protéger un tel algorithme cryptographique contre des attaques par canal auxiliaire. Tel qu’illustré sur la figure 5, le procédé 100 comporte un masquage 101 de la variable secrète par une fonction de masquage. Dans des modes particuliers de mise en œuvre, il peut s’agir d’un masquage affine. Les figures 3 et 4 décrivent les étapes du procédé 100 dans le cas où l’on considère un masquage affine. Dans des modes particuliers de mise en œuvre, il peut également s’agir d’une combinaison d’un masquage affine avec un masquage carré, ou d’une combinaison d’un masquage booléen avec un masquage carré. Le cas du masquage affine combiné à un masquage carré sera décrit ultérieurement en référence aux figures 6 et 7. Mise en œuvre avec un masquage affine : Les figures 3 et 4 illustrent le cas où un masquage affine est utilisé. Tel qu’illustré sur ces figures, l’étape de masquage 101 de la variable secrète comporte un tirage aléatoire (« rand ») d’une valeur pour une variable correspondant à un masque multiplicatif, et un tirage aléatoire d’une valeur pour une variable correspondant à un masque booléen (ou un masque « arithmétique » si on place dans un corps fini non binaire). La fonction de masquage peut alors s’écrire sous la forme . Chacune des variables et est choisie aléatoirement parmi les éléments de ou parmi un sous-ensemble de . La variable est choisie pour être non nulle. , et correspondent alors aux trois parties (« shares ») du masquage de la variable secrète . Tel qu’illustré sur la figure 3, pour prendre en compte le masquage 101, il serait envisageable de déterminer une table de substitution S-Box’ dont la fonction de substitution associée est telle que . Autrement dit, cette solution reviendrait à déterminer une table de substitution S-Box’ telle que la sortie de la table de substitution S-Box’ soit une représentation masquée (avec un masquage affine présentant le même masque multiplicatif ) du résultat qui aurait été obtenu appliquant la table de substitution S-Box à la variable secrète . Toutefois, cette solution nécessiterait de recalculer la table S-Box’ à chaque fois que les variables de masquage et sont changées, ce qui impacterait significativement les performances de l’algorithme. Il serait également envisageable de précalculer toutes les valeurs possibles pour la table S-Box’ en fonction de toutes les valeurs pouvant être prises par le couple de variables ( , ), mais cela impacterait significativement la taille de la mémoire requise. L’invention repose avantageusement sur une décomposition de la table S-Box’ en au moins deux tables de substitution, en exploitant d’une part les propriétés du masquage multiplicatif vis-à-vis de la fonction d'élévation à la puissance , et d’autre part les propriétés du masquage booléen vis-à-vis de la fonction affine . Ainsi, et tel qu’illustré sur les figures 4 et 5, le procédé 100 comporte une application 102 d’une première table de substitution à la représentation masquée de la variable secrète. Cette première table de substitution correspond à l’étape d’élévation à la puissance de la fonction non-linéaire . En effet, la fonction de substitution associée à comporte un calcul d’une élévation à la puissance appliqué à . Avantageusement, tous les éléments de la table sont préalablement calculés pour les différentes valeurs pouvant être prises par et . Dans l’exemple illustré sur la figure 4, la table de substitution prend en entrée et et fournit en sortie le résultat , où est une variable déterminée en fonction de et/ou . La variable présente une distribution indépendante de la variable secrète . Il est possible par exemple de prendre . Toutefois, il est avantageux de choisir une valeur pour différente de la valeur de car cela permet de réduire l’impact d’une fuite en transition entre l’entrée et la sortie de cette table. La variable peut éventuellement être choisie dans un ensemble différent de l’ensemble utilisé pour choisir la variable . Il est important de noter que la table est évaluée en fonction de et mais sans utiliser la variable . Le résultat en sortie de la table peut alors s’écrire sous la forme : Tel qu’illustré sur les figures 4 et 5, le procédé 100 comporte une application 103 d’une deuxième table de substitution au résultat obtenu en sortie de la première table de substitution . Cette deuxième table de substitution correspond à l’étape affine de la fonction non-linéaire . En effet, la fonction de substitution associée à comporte un calcul de la fonction affine appliqué (indirectement) à . Par exemple, et tel qu’illustré sur la figure 4, la fonction affine est appliqué à ). Avantageusement, tous les éléments de la table sont préalablement calculés pour les différentes valeurs pouvant être prises par et . Il est important de noter que la table est évaluée en fonction de et mais sans utiliser la variable . Tel qu’illustré sur la figure 4, la table de substitution prend en entrée et et fournit en sortie le résultat . Le résultat en sortie de la table peut alors s’écrire (en utilisant la linéarité de la fonction ) : On obtient ainsi en sortie de la table de substitution une représentation masquée de avec un masquage affine de même masque multiplicatif . De façon optionnelle, et tel qu’illustré sur les figures 4 et 5, le procédé 100 peut comporter deux étapes supplémentaires 104 et 105 pour s’affranchir du terme obtenu en sortie de la table de substitution . Dans ce but le procédé 100 comporte une application 104 d’une troisième table de substitution aux variables et . Avantageusement, tous les éléments de la table sont préalablement calculés pour les différentes valeurs pouvant être prises par et . Il est important de noter que la table est évaluée en fonction de et mais sans utiliser . Tel qu’illustré sur la figure 4, la table de substitution prend en entrée et et fournit en sortie le résultat . La variable est une variable déterminée en fonction de et/ou . La variable présente une distribution indépendante de la variable secrète . Il est possible par exemple de prendre ’. Toutefois, il est avantageux de choisir une valeur pour différente de la valeur de car cela permet de réduire l’impact d’une fuite en transition entre la sortie de la table et la sortie de la table . La variable peut éventuellement être choisie dans un ensemble différent de l’ensemble utilisé pour choisir la variable . Le procédé 100 comporte ensuite une soustraction 105 du résultat obtenu en sortie de la deuxième table de substitution au résultat obtenu en sortie de la troisième table de substitution pour obtenir un résultat sous la forme : On obtient ainsi une représentation masquée de avec un masquage affine de masque multiplicatif et de masque booléen . On peut noter qu’en choisissant , on obtient en sortie une représentation masquée de avec exactement le même masquage que celui appliqué à la variable secrète . L’étape de soustraction 105 pourrait également être optionnelle. La table de substitution pourrait en effet directement fournir la valeur de la partie booléenne du résultat obtenu en sortie de la table . Dans ce cas, la table prend en entrée et et calcule . L’impact mémoire du procédé 100 dépend de la taille des ensembles dans lesquels sont choisies les variables , et . Comme indiqué précédemment, ces variables peuvent être choisies chacune dans un sous-ensemble de . Notons le cardinal de l’ensemble , et les cardinaux des ensembles dans lequel sont choisies les variables et ’ respectivement (ensembles des masques booléens), et le cardinal de l’ensemble dans lequel est choisie la variable (ensemble des masques multiplicatifs). Alors, le nombre d’éléments dans la table est égal à ; le nombre d’éléments dans la table est égal à et le nombre d’éléments dans la table est égal à . Par comparaison, si on utilisait une seule table de substitution S-Box’ correspondant à la fonction décrite en référence à la figure 3, alors il faudrait que la table S-Box’ comporte un nombre d’éléments égal à . Pour limiter l’impact mémoire du procédé 100, il est avantageux de choisir des ensembles restreints pour les variables et , de telle sorte que la somme des tailles (en nombre d’éléments) des tables , et reste faible devant la taille de la table S-Box’, c’est-à-dire pour que : Par exemple si et , alors la somme des tailles des tables , et est égale à 8448 alors que la taille de la table S-Box’ est égale à 65536. Toutefois, plus et sont grands et meilleur sera le niveau de sécurité. Il y a donc un compromis entre impact mémoire et sécurité. D’autre part, le procédé 100 permet d’améliorer le niveau de sécurité car chaque évaluation avec l’une des tables de substitution , et est effectuée en manipulant un sous-ensemble strict des parties (« shares ») obtenues par le masquage, et cela rend plus difficile une attaque par canal auxiliaire. Enfin, le procédé 100 offre de bonnes performances en termes de rapidité d’exécution. En effet, chaque évaluation avec l’une des tables de substitution , et est rapide à effectuer car les tables sont précalculées. Lorsqu’un ensemble restreint est utilisé pour le choix du masque multiplicatif et/ou des masques booléens et , il est envisageable d’associer à chaque masque un index. Par exemple si est l’ensemble , et si , on a alors seize masques booléens possibles dont les valeurs sont comprises entre 0 et 255 inclus. On peut alors associer à chaque valeur possible du masque booléen un index différent dont la valeur est comprise entre 0 à 15. Cette association présente plusieurs intérêts. Utiliser un index au lieu du masque permet en effet d’éviter de manipuler la valeur du masque et ainsi diminuer l’impact des fuites en transition. D’autre part, utiliser un index au lieu du masque permet de limiter la taille de la mémoire à allouer pour construire la table de substitution (sans l’index, les valeurs en entrée seraient comprises entre 0 et 255 au lieu d’être comprises entre 0 et 15). Les tables de substitution , et prennent chacune deux variables en entrée. Il est possible de les implémenter en utilisant des tables à deux entrées, ou en utilisant des tables dont l’unique entrée est une combinaison des deux variables concernées (par exemple pour la table de substitution , on peut concaténer avec l’index du masque booléen ). Avantageusement, le sous-ensemble et le sous-ensemble peuvent être différents et choisis de manière à ce que la concaténation de avec l’index du masque ou ait un poids de Hamming constant quel que soit la valeur de , voire de manière à ce que la distance de Hamming entre un masque et cette concaténation soit également constante. De telles dispositions permettent d’éviter des fuites en valeurs et de limiter encore davantage les fuites en transition. Il convient de noter que, pour l’exemple décrit ci-dessus en référence aux figures 3 et 4, on s’est placé dans le cas d’un corps fini binaire. Le masquage affine est alors la combinaison d’un masquage multiplicatif avec un masquage booléen, et l’opération d’addition du corps fini binaire correspond à un OU exclusif (XOR). Rien n’empêche toutefois de se placer dans le cas d’un corps fini non binaire. Dans ce cas, le masquage affine est la combinaison d’un masquage multiplicatif avec un masquage arithmétique, et l’opération d’addition du corps fini non binaire correspond à une addition modulaire (et dans ce cas le terme « booléen » utilisé ci-avant dans la description des figures 3 et 4 peut être remplacé par le terme « arithmétique »), et la multiplication est l’opération de multiplication modulaire. Dans ce cas, les masques multiplicatifs doivent être choisis dans l’ensembles des nombres premiers avec le modulo (par exemple, dans l’ensemble des nombres impairs dans le cas d’un corps fini ayant un cardinal pouvant s’écrire sous la forme d’une puissance de deux). Mise en œuvre avec un e combinaison d’un masquage affine et d’un masquage carré : Les figures 6 et 7 illustrent le cas où le procédé 100 décrit à la figure 5 repose sur une combinaison d’un masquage affine avec un masquage carré (au lieu d’un simple masquage affine comme dans le cas décrit ci-avant en référence aux figures 3 et 4). Dans le cas où un masquage carré est utilisé, le corps fini doit être un corps fini binaire. Le masquage « carré » d’une variable secrète est décrit dans la demande de brevet FR 2203809 déposée le 25 avril 2022. Le masquage carré comporte la détermination d’une variable aléatoire et une élévation à la puissance de la variable secrète. Le masquage carré est basé sur la linéarité de l’opération d’élévation à la puissance d’une puissance de deux par rapport à l’addition du corps fini binaire (OU exclusif) : Le masquage carré est particulièrement performant pour les opérations d’addition, de multiplication et de puissance en tant qu’opérations de corps fini binaire grâce au comportement linéaire de ces opérations vis-à-vis d’une élévation à une puissance de deux. En outre, le masquage carré est particulièrement robuste contre les fuites en transition. Tel qu’illustré sur les figures 6 et 7, l’étape de masquage 101 de la variable secrète comporte alors un tirage aléatoire (« rand ») d’une valeur pour une variable correspondant à un masque multiplicatif, un tirage aléatoire d’une valeur pour une variable correspondant à un masque booléen, et un tirage aléatoire d’une valeur pour une variable correspondant au masquage carré. Tel qu’illustré sur les figures 6 et 7, la fonction de masquage peut alors s’écrire sous la forme , chacune des variables , et étant non nulle et choisie aléatoirement parmi les éléments de ou parmi un sous-ensemble de . Il convient de noter que le cas où la variable est nulle correspond au cas du masquage affine décrit ci-avant en référence aux figures 3 et 4. Le cas où la variable est choisie dans l’ensemble {1} correspond au cas d’une combinaison d’un masquage carré avec un masquage booléen. , , et correspondent alors aux quatre parties (« shares ») du masquage de la variable secrète . Tel qu’illustré sur la figure 6, pour prendre en compte le masquage 101, il serait envisageable de déterminer une table de substitution S-Box’ dont la fonction de substitution associée est telle que . Autrement dit, cette solution reviendrait à déterminer une table de substitution S-Box’ telle que la sortie de la table de substitution S-Box’ soit une représentation masquée (avec le même masque multiplicatif et le même masque carré ) du résultat qui aurait été obtenu en appliquant la table de substitution S-Box à la variable secrète . Toutefois, cette solution nécessiterait de recalculer la table S-Box’ à chaque fois que les variables de masquage , et sont changées, ce qui impacterait significativement les performances de l’algorithme. Il serait également envisageable de précalculer toutes les valeurs possibles pour la table S-Box’ en fonction de toutes les valeurs pouvant être prises par le triplet de variables ( , , ), mais cela impacterait significativement la taille de la mémoire requise. Pour pallier ces problèmes, la table S-Box’ est décomposée en au moins deux tables de substitution. Ainsi, et tel qu’illustré sur la figure 7, le procédé 100 comporte une application 102 d’une première table de substitution à la représentation masquée de la variable secrète. Cette première table de substitution correspond à l’étape d’élévation à la puissance de la fonction non-linéaire . En effet, la fonction de substitution associée à comporte un calcul d’une élévation à la puissance appliqué à . Avantageusement, tous les éléments de la table sont préalablement calculés pour les différentes valeurs pouvant être prises par et . Dans l’exemple illustré sur la figure 7, la table de substitution prend en entrée et et fournit en sortie le résultat , où est une variable déterminée en fonction de et/ou . La variable présente une distribution indépendante de la variable secrète . Il est possible par exemple de prendre . Toutefois, il est avantageux de choisir une valeur pour différente de la valeur de car cela permet de réduire l’impact d’une fuite en transition entre l’entrée et la sortie de cette table. La variable peut éventuellement être choisie dans un ensemble différent de l’ensemble utilisé pour choisir la variable . Il est important de noter que la table est évaluée en fonction de et mais sans utiliser les variables et . Le résultat en sortie de la table peut alors s’écrire sous la forme : Tel qu’illustré sur la figure 7, le procédé 100 comporte une application 103 d’une deuxième table de substitution au résultat obtenu en sortie de la première table de substitution . Cette deuxième table de substitution correspond à l’étape affine de la fonction non-linéaire . En effet, la fonction de substitution associée à comporte un calcul de la fonction affine appliqué (indirectement) à . Par exemple, et tel qu’illustré sur la figure 7, la fonction affine est appliqué à ). Avantageusement, tous les éléments de la table sont préalablement calculés pour les différentes valeurs pouvant être prises par , et . Il est important de noter que la table est évaluée en fonction de , et mais sans utiliser la variable . Tel qu’illustré sur la figure 7, la table de substitution prend en entrée , et et fournit en sortie le résultat . Le résultat en sortie de la table peut alors s’écrire (en utilisant la linéarité de la fonction et la linéarité de l’élévation à une puissance d’une puissance de deux) : On obtient ainsi en sortie de la table de substitution une représentation masquée de avec avec le même masque multiplicatif et le même masque carré . De façon optionnelle, et tel qu’illustré sur la figure 7, le procédé 100 peut comporter deux étapes supplémentaires 104 et 105 pour s’affranchir du terme obtenu en sortie de la table de substitution . Dans ce but le procédé 100 comporte une application 104 d’une troisième table de substitution aux variables , et . Avantageusement, tous les éléments de la table sont préalablement calculés pour les différentes valeurs pouvant être prises par , et . Il est important de noter que la table est évaluée en fonction de , et mais sans utiliser . Tel qu’illustré sur la figure 7, la table de substitution prend en entrée , et et fournit en sortie le résultat . La variable est une variable déterminée en fonction d’un ou plusieurs éléments parmi , et . La variable présente une distribution indépendante de la variable secrète . Il est possible par exemple de prendre ’. Toutefois, il est avantageux de choisir une valeur pour différente de la valeur de car cela permet de réduire l’impact d’une fuite en transition entre la sortie de la table et la sortie de la table . La variable peut éventuellement être choisie dans un ensemble différent de l’ensemble utilisé pour choisir la variable . Le procédé 100 comporte ensuite une soustraction 105 du résultat obtenu en sortie de la deuxième table de substitution au résultat obtenu en sortie de la troisième table de substitution pour obtenir un résultat sous la forme : On obtient ainsi une représentation masquée de avec une combinaison d’un masquage affine et d’un masquage carré, avec un masque multiplicatif , un masque carré et un masque booléen . On peut noter qu’en choisissant , on obtient en sortie une représentation masquée de avec exactement le même masquage que celui appliqué à la variable secrète . L’étape de soustraction 105 pourrait également être optionnelle. La table de substitution pourrait en effet directement fournir la valeur de la partie booléenne du résultat obtenu en sortie de la table . Dans ce cas, la table prend en entrée , et et calcule . Les avantages du procédé 100 mentionnés précédemment pour le cas du masquage affine sont également valables pour le cas de la combinaison d’un masquage affine avec un masquage booléen (rapidité d’exécution car les tables sont précalculées, impact mémoire limitée par l’utilisation de deux ou trois tables de substitution au lieu d’une seule, sécurité renforcée par le fait d’utiliser pour chaque table de substitution seulement un sous-ensemble strict des parties (« shares ») obtenues par le masquage de la variable secrète ). En outre, le fait d’utiliser un masquage carré en plus du masquage affine peut permettre d’améliorer le niveau de sécurité du procédé 100, notamment pour limiter les fuites en transition. Si on note le cardinal de l’ensemble dans lequel est choisie la variable (ensemble des masques carrés). Alors, le nombre d’éléments dans la table est égal à ; le nombre d’éléments dans la table est égal à et le nombre d’éléments dans la table est égal à . Par comparaison, si on utilisait une seule table de substitution S-Box’ correspondant à la fonction décrite en référence à la figure 6, alors il faudrait que la table S-Box’ comporte un nombre d’éléments égal à . Pour limiter l’impact mémoire du procédé 100, il est avantageux de choisir des ensembles restreints pour les variables , et , de telle sorte que la somme des tailles des tables , et reste faible devant la taille de la table S-Box’, c’est-à-dire pour que : Là encore, il est possible d’utiliser un index au lieu du masque carré lors des accès aux tables de substitution et (pour réduire la taille mémoire de ces tables). Les tables de substitution , et prennent chacune deux ou trois variables en entrée. Il est possible de les implémenter en utilisant des tables à deux ou trois entrées, ou en utilisant des tables dont l’unique entrée est une combinaison des deux ou trois variables concernées (par exemple pour la table de substitution , on peut concaténer avec l’index du masque booléen et avec l’index du masque carré ). Exemple d’application à la S-Box de l’AES : Une implémentation de l’invention a été évaluée en termes de performance et de sécurité en appliquant un masquage affine à une variable secrète en entrée de la S-Box de l’AES. On se place donc dans le corps fini binaire . Le masque booléen et le masque multiplicatif sont chacun choisis dans un sous-ensemble de seize valeurs possibles. Les valeurs du sous-ensemble de masques booléens et du sous-ensemble de masques multiplicatifs ont été choisies de manière à minimiser d’un point de vue théorique la fuite en poids de Hamming et en distance de Hamming des variables manipulées au cours des calculs. Dans cet exemple d’implémentation, on utilise des tables à simple entrée, en concaténant les deux variables d’entrée pour accéder aux tables. Un microcontrôleur STM32F7 a été utilisé pour cette évaluation. L’exécution d’un AES masqué en utilisant le procédé 100 selon l’invention pour l’évaluation de la S-Box prend 7061 cycles d’horloge. Pour référence, une implémentation directe de la norme de l’AES non sécurisée prend 7145 cycles d’horloge. Les deux implémentations sont compilées en activant les optimisations du compilateur à leur niveau le plus élevé (-O3). Une implémentation de l’AES avec un masquage booléen d’ordre ‘1’ utilisant des tables recalculées pour la S-Box prend 10831 cycles. L’implémentation selon l’invention est donc plus efficace qu’une implémentation par masquage booléen, et elle présente de très bonnes performances en termes de rapidité d’exécution (sensiblement aussi rapide qu’une implémentation basique non sécurisée). Comparée à des implémentations non sécurisées mais plus optimisées, l’implémentation selon l’invention présente un temps d’exécution deux à quatre fois plus long, mais bien meilleur que l’implémentation de masquage booléen d’ordre ‘1’ qui présente un temps d’exécution trois à six fois plus long. Du point de vue de la sécurité, l’implémentation selon l’invention ne montre aucune fuite suite à un t-test non spécifique mettant en jeu 400 000 mesures électromagnétiques (t-value mesurée de 4.24, inférieure à la limite de détection du t-test qui est de 4.5). A titre de comparaison, une implémentation non protégée montre des pics de t-value à plus de 300 (à comparer encore une fois à la limite fixée à 4.5), et l’implémentation en masquage booléen montre des pics à plus de 40 (notamment dû à des effets non contrôlés comme des fuites en transitions, qui sont mieux prises en charge par le masquage affine). La solution proposée par l’invention permet donc d’obtenir un très bon compromis entre sécurité et performance. La description ci-avant illustre clairement que, par ses différentes caractéristiques et leurs avantages, la présente invention atteint les objectifs fixés. En particulier, l’invention permet d’optimiser (en termes de temps de calcul et d’empreinte mémoire) la prise en compte d’un masquage affine éventuellement combiné à un masquage carré lors de l'application d’une fonction de substitution non linéaire à une variable secrète . Il est à noter que les modes de mise en œuvre et de réalisation considérés ci-dessus ont été décrits à titre d’exemples non limitatifs, et que d’autres variantes sont par conséquent envisageables. Notamment, rien n’empêcherait d’ajouter des constantes identiques (ou même des expressions dépendant de ) dans les tables et , puisque les résultats de ces deux tables peuvent être soustraits l’un à l’autre. Rien n’empêcherait non plus de modifier les résultats obtenus en sortie des tables par des fonctions injectives. Il suffit en effet de modifier la table suivante pour compenser l’effet de cette fonction injective. Par exemple, la table pourrait calculer ) (au lieu de calculer ), et la table pourrait prendre en compte que sa première entrée est multipliée par trois et qu’il faut la diviser par trois avant de l’utiliser. De telles modifications ne représentent que des variantes de l’invention. Procédé (100) pour protéger un dispositif électronique (10) contre une attaque par canal auxiliaire, ledit dispositif électronique (10) comportant un processeur (11) configuré pour exécuter un algorithme cryptographique manipulant des variables appartenant à un corps fini et impliquant au moins une fonction de substitution non-linéaire appliquée à une variable secrète à protéger, ladite fonction comportant une fonction d'élévation à une puissance et une fonction affine telles que , où est une constante et est une fonction linéaire par rapport à une opération d’addition du corps fini , le procédé étant mis en œuvre par le processeur (11) du dispositif électronique (10), ledit procédé (100) étant caractérisé en ce qu ’il comporte : un masquage (101) de la variable secrète par une fonction de masquage telle que , chacune des variables et étant choisie aléatoirement parmi les éléments de ou parmi un sous-ensemble de , la variable étant choisie non nulle ; une application (102) à , en fonction de , d’une première table de substitution correspondant à la fonction d’élévation à la puissance et dont les éléments ont été préalablement calculés pour les différentes valeurs pouvant être prises par et ; une application (103) au résultat obtenu en sortie de la première table de substitution , en fonction de , d’une deuxième table de substitution correspondant à la fonction affine et dont les éléments ont été préalablement calculés pour les différentes valeurs pouvant être prises par et . Procédé (100) selon la revendication 1 dans lequel le résultat peut s’écrire sous la forme où est une variable déterminée en fonction de et/ou , et le procédé (100) comporte : une application (104) aux variables et d’une troisième table de substitution dont les éléments ont été préalablement calculés pour les différentes valeurs pouvant être prises par et ; une soustraction (105) du résultat obtenu en sortie de la deuxième table de substitution au résultat obtenu en sortie de la troisième table de substitution pour obtenir un résultat sous la forme , où est une variable déterminée en fonction de et/ou . Procédé (100) pour protéger un dispositif électronique (10) contre une attaque par canal auxiliaire, ledit dispositif électronique (10) comportant un processeur (11) configuré pour exécuter un algorithme cryptographique manipulant des variables appartenant à un corps fini binaire et impliquant au moins une fonction de substitution non-linéaire appliquée à une variable secrète à protéger, ladite fonction comportant une fonction d’élévation à une puissance et une fonction affine telles que , où est une constante et est une fonction linéaire par rapport à une opération d’addition du corps fini binaire , le procédé étant mis en œuvre par le processeur (11) du dispositif électronique (10), ledit procédé (100) étant caractérisé en ce qu ’il comporte : un masquage (101) de la variable secrète par une fonction de masquage telle que , chacune des variables , et étant choisie aléatoirement parmi les éléments de ou parmi un sous-ensemble de , chacune des variables et étant choisie non nulle ; une application (102) à , en fonction de , d’une première table de substitution correspondant à la fonction d’élévation à la puissance et dont les éléments ont été préalablement calculés pour les différentes valeurs pouvant être prises par et ; une application (103) au résultat obtenu en sortie de la première table de substitution , en fonction de et , d'une deuxième table de substitution correspondant à la fonction affine et dont les éléments ont été préalablement calculés pour les différentes valeurs pouvant être prises par , et . Procédé (100) selon la revendication 3 dans lequel le résultat peut s’écrire sous la forme où est une variable déterminée en fonction de et/ou , et le procédé (100) comporte : une application (104) aux variables , et d'une troisième table de substitution dont les éléments ont été préalablement calculés pour les différentes valeurs pouvant être prises par , et ; une soustraction (105) du résultat obtenu en sortie de la deuxième table de substitution au résultat obtenu en sortie de la troisième table de substitution pour obtenir un résultat sous la forme , où est une variable déterminée en fonction d’un ou plusieurs éléments parmi , et . Procédé (100) selon l'une quelconque des revendications 1 à 4 dans lequel la variable est choisie dans un sous-ensemble strict de , chacune des valeurs pouvant être prise par la variable est associée à un index, et l'application (102) de la première table de substitution est effectuée en fonction de l'index associé à la variable . Procédé (100) selon l'une quelconque des revendications 1 à 5 dans lequel la variable est choisie dans un sous-ensemble strict de , chacune des valeurs pouvant être prise par la variable est associée à un index, et l'application (103) de la deuxième table de substitution est effectuée en fonction de l'index associé à la variable . Procédé (100) selon une combinaison des revendications 5 et 6, dans lequel le sous-ensemble et le sous-ensemble sont différents et choisis de manière à obtenir un poids de Hamming constant pour toutes les valeurs pouvant être prises par une concaténation de avec l’index correspondant à ou . Procédé (100) selon l'une quelconque des revendications 4 à 7 en combinaison avec la revendication 3, dans lequel la variable est choisie dans un plus petit ensemble d’entiers naturels, ou dans un sous-ensemble strict de l’ensemble , l’ensemble étant défini tel que, pour tout entier naturel n’appartenant pas à , il existe une valeur appartenant à telle que, pour toute variable appartenant à , est égal à . Procédé (100) selon la revendication 8 dans lequel chacune des valeurs pouvant être prise par la variable est associée à un index, et l’application (103) de la deuxième table de substitution est effectuée en fonction de l’index associé à la variable . Procédé (100) selon l'une quelconque des revendications 1 à 9 dans lequel l'algorithme cryptographique est l'algorithme « Advanced Encryption Standard », aussi connu sous l'acronyme AES. Produit programme d’ordinateur pour l’exécution d’un algorithme cryptographique, ledit programme comprenant des instructions de code (13) qui, lorsqu’elles sont exécutées par un processeur (11) d’un dispositif électronique (10), configurent ledit processeur (11) pour exécuter un procédé (100) selon l’une quelconque des revendications 1 à 10. Dispositif électronique (10) comprenant un processeur (11) et une mémoire (13) mémorisant un produit programme d’ordinateur selon la revendication 11, ledit processeur (11) étant configuré pour exécuter ledit programme d’ordinateur.