FR 3048097 A1 20170825 FR 1651445 A 20160222 1 PROCEDE DE PROTECTION D'UN CIRCUIT CONTRE UNE ANALYSE PAR CANAUX AUXILIAIRES La présente invention concerne un procédé de protection d'un circuit contre une analyse par canal auxiliaire, visant à découvrir la valeur d'une donnée secrète manipulée par le circuit, et en particulier une clé secrète utilisée par un algorithme de cryptographie pour transformer un message. La présente invention concerne notamment les circuits intégrés de carte à puce ou les composants cryptographiques matériels intégrés sur les cartes mères des ordinateurs et autres équipements électroniques et informatiques (clés USB, décodeurs de chaînes télévisées, consoles de jeu, etc.) mettant en oeuvre des algorithmes cryptographiques. La présente invention concerne également les logiciels incluant une opération de cryptographie, prévus pour être exécutés dans un environnement sécurisé ou non. La présente invention concerne notamment les circuits mettant en oeuvre un algorithme cryptographique tel qu'un algorithme de chiffrement comme DES (Data Encryption Standard) ou Triple DES, AES (Advanced Encryption Standard), RSA (Rivest, Shamir et Adleman), DSA (Digital Signature Algorithm), ECDSA (Elliptic Curve Digital Signature Algorithm). L'invention concerne également les circuits mettant en oeuvre une fonction de hachage telle HMAC (Keyed-Hash Message Authentication Code). De tels microcircuits sont équipés d'une unité centrale de traitement (CPU). Certains sont équipés de circuits dédiés au calcul cryptographique, par exemple un coprocesseur cryptographique. Ces microcircuits comportent des milliers de portes logiques qui commutent différemment en fonction des opérations exécutées. Ces commutations créent des variations de consommation de courant de courte durée, par exemple de quelques nanosecondes, qui sont mesurables. Notamment, les circuits intégrés de technologie CMOS comprennent des portes logiques qui ne consomment du courant que lors de leur commutation, correspondant au passage à 1 ou à 0 d'un noeud logique. Ainsi, la consommation de courant dépend des données manipulées par l'unité centrale et de ses différents périphériques : mémoire, 3048097 2 données circulant sur le bus de données ou d'adresse, coprocesseur cryptographique, etc. Par ailleurs, certains logiciels réalisés notamment par des techniques de cryptographie ou d'obfuscation, telle que la technique de la boite blanche 5 ("Whitebox Cryptography") peuvent intégrer une donnée secrète d'une manière telle qu'il soit très difficile de la déterminer par rétro-ingénierie. Certains logiciels peuvent également recevoir une donnée secrète de l'extérieur par un canal de communication sécurisé. De tels microcircuits peuvent être soumis à des attaques dites par canaux auxiliaires ("Side 10 Channel Analysis"), basées sur l'observation de leur consommation de courant, leur rayonnement magnétique ou électromagnétique. De telles attaques visent à découvrir les données secrètes qu'ils utilisent, notamment leurs clés de cryptographie. Les attaques par canaux auxiliaires les plus répandues mettent en oeuvre des méthodes d'analyse statistique telles que 15 l'analyse SPA ("Single Power Analysis"), et l'analyse DPA ("Differential Power Analysis"), CPA ("Correlation Power Analysis") ou l'analyse électromagnétique (EMA). L'analyse SPA (réf. [1]) ne nécessite normalement que l'acquisition d'une seule courbe de consommation de courant. Elle vise à obtenir de l'information sur l'activité du circuit intégré en observant la partie 20 de la courbe de consommation correspondant à un calcul cryptographique, puisque la courbe de courant varie suivant les opérations exécutées et les données manipulées. Les logiciels peuvent également subir de telles attaques par canaux auxiliaires durant leur exécution par un circuit. 25 Les analyses DPA (réf. [2]) et CPA permettent de retrouver la clé d'un algorithme de cryptographie grâce à l'acquisition de nombreuses courbes de consommation du circuit et l'analyse statistique de ces courbes pour trouver l'information recherchée. Elles reposent sur le postulat que la consommation d'un circuit intégré de technologie CMOS varie lorsqu'un bit passe de 0 à 1 30 dans un registre ou sur un bus, et ne varie pas lorsqu'un bit reste égal à 0, reste à égal 1 ou passe de 1 à 0 (décharge de la capacité parasite du transistor MOS). Alternativement, il peut être considéré que la consommation d'un circuit intégré de technologie CMOS varie lorsqu'un bit passe de 0 à 1 ou passe de 1 à 0 et ne varie pas lorsqu'un bit reste égal à 0 ou reste égal à 1. Cette seconde hypothèse permet d'utiliser les fonctions classiques 3048097 3 "distance de Hamming" ou "poids de Hamming" pour élaborer un modèle de consommation qui ne nécessite pas de connaître la structure du circuit intégré pour être applicable. L'analyse DPA consiste à amplifier cette différence de consommation grâce à un traitement statistique portant sur de 5 nombreuses courbes de consommation, visant à faire ressortir une différence de mesure entre deux familles de courbes de consommation distinguées en fonction d'hypothèses formulées. L'analyse CPA (réf. [3]) se base sur un modèle linéaire de consommation de courant et consiste à calculer un coefficient de corrélation 10 entre, d'une part, les points de consommation mesurée qui forment les courbes de consommation capturées et, d'autre part, une valeur estimée de consommation, calculée à partir du modèle de consommation linéaire et d'une hypothèse sur la variable à découvrir que manipule le microcircuit et sur la valeur de la clé de cryptographie. 15 L'analyse électromagnétique (EMA) se base sur le principe qu'un microcircuit peut émettre des informations sous la forme de radiations électromagnétiques en champ proche ou lointain. Étant donné que les transistors émettent des signaux électromagnétiques lorsqu'ils changent d'état, ces signaux peuvent être traités comme les signaux de variation de 20 consommation de courant par une analyse telle que l'une ou l'autre des analyses SPA, DPA et CPA. Un exemple de mise en pratique de cette analyse a été réalisé par Jean-Jacques Quisquater (réf [4]). Il existe d'autres attaques par canaux auxiliaires, telles que "Template attacks" (réf. [5]) et "Mutual Information Analysis" (MIA) (réf. [6]). Toutes les 25 attaques mentionnées précédemment se basent sur un alignement temporel de toutes les courbes analysées. En d'autres termes, toutes les mesures effectuées à un instant donné, par exemple à partir de l'instant d'activation de l'exécution d'une commande par le circuit, doivent correspondre à la même valeur manipulée par l'algorithme. 30 Afin de protéger de tels circuits et les algorithmes cryptographiques qu'ils exécutent, contre de telles attaques par canaux auxiliaires, des contre-mesures sont généralement prévues. Une famille de contre-mesures largement répandue vise à éviter un tel alignement temporel. A cet effet, ces contremesures introduisent des variations dans la fréquence d'horloge 35 cadençant les circuits de calcul, ou introduisent des cycles d'horloge factices 3048097 4 ou des opérations factices. Une autre famille de contre-mesures consiste à adapter l'algorithme à protéger pour rendre les données manipulées par le circuit indépendantes de leurs valeurs réelles. Certaines contremesures de cette famille dites "par masquage" utilisent un masque aléatoire (nombre 5 binaire) qui est combiné à une autre donnée telle que la clé et/ou le message pendant l'exécution du procédé de chiffrement. Ce type de contre-mesure est efficace mais nécessite de modifier l'algorithme, et donc nécessite un coprocesseur spécialement prévu pour sa mise en oeuvre dans le cas d'une exécution par un coprocesseur, ou un programme d'une plus grande 10 complexité dans le cas d'une exécution par l'unité centrale de traitement du microcircuit ou un coprocesseur programmé. Une contre-mesure par exécutions multiples peut être mise en oeuvre avec un coprocesseur conventionnel ne comportant pas de moyens de contre-mesure. Elle consiste simplement à exécuter le procédé de 15 chiffrement plusieurs fois au moyen de fausses clés. A cet effet, on prévoit par exemple un programme de contre-mesure qui contrôle le programme de chiffrement ou le coprocesseur, et lui fait exécuter le procédé de chiffrement plusieurs fois avec les fausses clés, dans un ordre aléatoire, de sorte que l'exécution du procédé de chiffrement avec la bonne clé (c'est-à-dire la clé 20 authentique) est "noyée" dans un ensemble d'exécutions factices. Afin de vérifier le niveau de sécurité qu'offre un circuit intégré sécurisé destiné à être commercialisé, des tests de qualification et/ou de certification sont prévus avant la commercialisation du circuit, ces tests comprenant notamment des tests de la robustesse du circuit intégré face à des analyses 25 par canaux auxiliaires visant à découvrir les données secrètes manipulées par le circuit intégré. Il existe également des tests permettant d'évaluer la résistance d'un logiciel aux attaques par canaux auxiliaires. Il est donc souhaitable de proposer des moyens de contre-mesure permettant à un circuit intégré ou un logiciel d'être considéré comme apte à 30 être utilisé dans un produit, au terme d'un processus de qualification et/ou de certification incluant un tel procédé de test. Des modes de réalisation concernent un procédé d'exécution par un circuit d'une opération cible combinant deux données d'entrée et fournissant une donnée de sortie, le procédé comprenant des étapes consistant à : 35 générer au moins une paire de mots d'entrée dans lequel chaque mot 3048097 5 d'entrée comprend deux occurrences d'au moins une partie d'une des données d'entrée respective, une des deux occurrences de la partie de donnée d'entrée dans un des mots d'entrée étant sous la forme d'un complément binaire à un de la partie de donnée d'entrée, et appliquer à 5 chaque paire de mots d'entrée, une opération dérivée fournissant un mot de sortie comprenant un résultat au moins partiel résultant de l'application de l'opération cible aux parties de données d'entrée figurant dans la paire de mots d'entrée, et un complément binaire à un du résultat. Selon un mode de réalisation, chacun des mots d'entrée de la paire 10 d'entrée comprend une donnée issue d'un générateur de nombres aléatoires ou pseudo-aléatoires. Selon un mode de réalisation, chacune des données d'entrée se trouve entièrement dans un mot d'entrée de la paire de mots d'entrée. Selon un mode de réalisation, chaque donnée d'entrée est répartie 15 dans plusieurs mots d'entrée. Selon un mode de réalisation, chaque donnée d'entrée est représentée sous la forme d'un mot de plusieurs bits, chaque bit de chaque donnée d'entrée étant inséré dans un mot d'entrée respectif. Selon un mode de réalisation, des positions respectives de la partie 20 de donnée dans chacun des mots de la paire de mots d'entrée et du mot de sortie, sont choisies d'une manière aléatoire. Selon un mode de réalisation, chacun des mots d'entrée et de sortie comprend deux occurrences d'une partie ou de l'ensemble d'une des deux données d'entrée et de sortie, respectivement, et deux occurrences du 25 complément à un de la partie ou de l'ensemble de la donnée d'entrée ou de sortie, respectivement. Selon un mode de réalisation, l'opération cible comprend une opération ou une combinaison des opérations suivantes : OU Exclusif, ET, OU, NON ET, NON OU, NON OU Exclusif, et une opération de substitution 30 utilisant une table de substitution. Selon un mode de réalisation, l'opération dérivée est configurées pour combiner les mots d'entrée d'une paire de mots d'entrée pour déterminer un mot d'index, et pour sélectionner à l'aide du mot d'index le mot de sortie dans une table. 3048097 6 Selon un mode de réalisation, l'une des données d'entrée est une donnée secrète et l'autre des données d'entrée est une donnée à traiter par une opération de cryptographie utilisant la donnée secrète. Selon un mode de réalisation, l'opération cible est une opération ou 5 une combinaison d'opérations mettant en oeuvre l'algorithme DES ou AES. Des modes de réalisation peuvent également concerner un circuit configuré pour mettre en oeuvre le procédé défini précédemment, et comprenant un processeur. Selon un mode de réalisation, le circuit comprend un coprocesseur. 10 Des modes de réalisation peuvent également concerner un dispositif comprenant un circuit tel que défini précédemment et agencé sur un support. Des modes de réalisation peuvent également concerner un produit programme d'ordinateur directement chargeable dans une mémoire interne d'un ordinateur et comprenant des portions de code qui lorsqu'elles sont 15 exécutées par un ordinateur configurent l'ordinateur pour mettre en oeuvre les étapes du procédé défini précédemment. Des exemples de réalisation de l'invention seront décrits dans ce qui suit, à titre non limitatif en relation avec les figures jointes parmi lesquelles : 20 la figure 1 représente schématiquement une architecture classique d'un circuit sécurisé, la figure 2 représente schématiquement un exemple de système de test de circuit intégré, la figure 3 représente des courbes d'un signal acquis pendant 25 l'exécution d'une opération cryptographique par le circuit sécurisé, la figure 4 représente des étapes d'un procédé de test du circuit, selon un mode de réalisation, la figure 5 représente sous la forme d'un graphe, un exemple de fonction surjective, 30 la figure 6 représente schématiquement un tableau construit selon un mode de réalisation, pour effectuer un traitement statistique, la figure 7 représente des étapes d'un procédé de test du circuit, selon un autre mode de réalisation, 3048097 7 les figures 8 et 9 représentent des étapes d'un procédé d'analyse statistique d'un ensemble de valeur obtenues par le procédé test, selon divers modes de réalisation, les figures 10 et 11 représentent sous la forme de courbes des 5 tableaux de résultat fournis par les procédés d'analyse des figures 8 et 9, les figures 12 et 13 illustrent un premier mode de protection d'une donnée, et une opération portant sur des données protégées selon ce premier mode de protection, les figures 14 et 15 illustrent un second mode de protection d'une 10 donnée, et une opération portant sur des données protégées selon ce second mode de protection, les figures 16 et 17 illustrent d'autres modes de protection d'une donnée, et une opération portant sur des données protégées selon ce troisième mode de protection, 15 la figure 18 représente schématiquement un circuit réalisant une opération modifiée pour traiter des données protégées, selon un mode de réalisation, la figure 19 représente schématiquement un circuit de calcul d'un index de l'opération modifiée, selon un mode de réalisation, 20 les figures 20 et 21 représentent des exemples de contenus d'une table du circuit de la figure 18, dépendant de l'opération à réaliser, la figure 22 représente schématiquement un circuit de calcul d'un index de l'opération modifiée, selon un autre mode de réalisation, les figures 23 et 24 représentent des exemples de contenus de la 25 table du circuit de la figure 18, selon d'autres modes de réalisation, la figure 25 représente un circuit sécurisé, selon un mode de réalisation. La figure 1 représente à titre d'exemple un circuit intégré CT sécurisé, par exemple agencé sur un support portable HD tel qu'une carte plastique ou 30 tout autre support, ou dans un terminal tel qu'un terminal mobile. Le circuit intégré comprend un microprocesseur PRC, un circuit d'entrée/sortie lOC, des mémoires M1, M2, M3 reliées au microprocesseur par un bus de données et d'adresse et, optionnellement, un coprocesseur CP1 de calcul cryptographique ou accélérateur arithmétique, et un générateur RGN de 35 nombre aléatoire. La mémoire M1 est une mémoire de type RAM ("Random 3048097 8 Access Memory") contenant des données d'application volatiles. La mémoire M2 est une mémoire non volatile, par exemple une mémoire EEPROM ou Flash, contenant des programmes application et des données non volatiles. La mémoire M3 est une mémoire morte ou mémoire ROM ("Read Only 5 Memory") contenant le système d'exploitation du microprocesseur ("Operating System"). Le circuit d'interface de communication IOC peut être du type à contact, par exemple selon la norme ISO/IEC 7816, du type sans contact à couplage inductif, par exemple selon la norme ISO/IEC 14443A/B ou 10 ISO/IEC 13693, du type sans contact par couplage électrique (circuit d'interface UHF), ou à la fois du type à contact et sans contact. Le circuit d'interface IOC peut être également relié par l'intermédiaire d'une interface spécifique, à un autre circuit comme un contrôleur NFC, ou un circuit principal d'un terminal tel qu'un terminal mobile ou un objet connecté. 15 Dans certains modes de réalisation, le circuit intégré CT peut être configuré pour exécuter des opérations de chiffrement, de déchiffrement ou de signature de messages qui lui sont envoyés, au moyen d'une fonction de cryptographie. Cette fonction de cryptographie peut être exécutée par le processeur PRC du circuit CT ou "sous-traitée" partiellement ou totalement 20 par le processeur PRC au coprocesseur CP1. La figure 2 représente un exemple de système de test de circuit intégré prévu pour mettre en oeuvre le procédé de test, selon un mode de réalisation. Il sera supposé à titre d'exemple que le système de test est configuré pour tester le circuit intégré CT de la figure 1. 25 Le système de test comporte une sonde de mesure PB reliée à un dispositif de mesure MD tel un oscilloscope numérique, pour acquérir des courbes relatives à l'activité du circuit, telles que des courbes de consommation de courant ou de variation de signaux électromagnétiques, et un moyen de calcul tel un ordinateur personnel PC. L'ordinateur PC est relié 30 au dispositif de mesure et met en oeuvre un programme de test. Ce programme de test comprend notamment une interface de communication et un programme pour communiquer avec le circuit intégré et lui adresser des messages, un programme de traitement de signal et un programme pour mettre en oeuvre des étapes de calcul du procédé selon l'invention. Dans le 35 cas où le circuit intégré est un circuit sans contact, l'interface de communication peut comprendre un lecteur de carte sans contact. 3048097 9 La sonde PB peut-être une sonde de courant (par exemple une résistance placée sur la borne d'alimentation Vcc du circuit intégré), ou une sonde électromagnétique reliée au dispositif de mesure par un amplificateur de signal AMP. Alternativement, une sonde de courant peut être combinée à 5 une sonde électromagnétique. L'étude des rayonnements électromagnétiques montre en effet qu'un rayonnement électromagnétique émis par un circuit en fonctionnement donne une information sur les commutations de bits dans le circuit intégré, à l'image de la mesure du courant consommé. L'avantage d'une sonde électromagnétique est qu'elle 10 peut être placée à proximité de la partie de circuit dont on veut analyser le fonctionnement (par exemple à proximité du coeur du microprocesseur PRC ou du coprocesseur de calcul cryptographique CP1). Par ailleurs, dans le cas d'un circuit intégré sans contact, la sonde de courant peut être remplacée par une sonde inductive qui mesure 15 l'absorption, par le circuit intégré, du champ magnétique émis par le lecteur. Une telle sonde inductive, par exemple une bobine d'antenne, peut elle-même être combinée avec une sonde de champ électromagnétique placée à proximité des zones de circuit à étudier. Ainsi, dans la présente demande, le terme "consommation de 20 courant", utilisé dans un souci de simplification du langage, désigne toute grandeur physique mesurable dont les variations en fonction du temps sont représentatives des commutations de données binaires au sein du circuit intégré ou au sein ou de la partie du circuit intégré étudiée, la grandeur physique pouvant être mesurée aux bornes du circuit intégré ou à proximité 25 de la partie étudiée du circuit intégré. Par ailleurs, la grandeur physique est échantillonnée avec une fréquence d'échantillonnage suffisamment élevée pour collecter plusieurs points par courbe, en pratique de 10 à quelques centaines de milliers de points par courbe, mais il peut être envisagé de collecter jusqu'à plusieurs millions de valeurs par courbe. 30 Le test peut également viser un logiciel ou une application. Dans ce cas, le logiciel peut être exécuté directement par le système de test ou par un programme d'émulation exécuté par le système de test. Les courbes analysées peuvent donc être par exemple des séries de valeurs transmises à une mémoire lors d'accès mémoire ou des données manipulées dans des 35 registres du circuit, ou encore des données transmises à une interface de communication du circuit, ces transmissions étant commandées par le logiciel testé. 3048097 10 Procédé de test Des modes de réalisation du procédé de test reposent sur un examen détaillé de courbes de variation en fonction du temps de signaux ou de 5 valeurs numériques, représentatifs du fonctionnement du circuit à tester pendant qu'il exécute une opération mettant en oeuvre une donnée secrète. La figure 3 représente des courbes CO, C1, Cix de valeurs en fonction du temps, qui peuvent être acquises par le système de test. Chacune de ces courbes a été obtenue en faisant exécuter une opération 10 par le circuit ou le logiciel à tester. Les opérations correspondant aux courbes CO, C1, Cix sont généralement toutes différentes. Ces opérations sont distinctes par exemple parce qu'elles consistent à appliquer une même fonction à des données d'entrée distinctes, connues, par exemple des messages à chiffrer, déchiffrer ou signer ou une signature à vérifier. 15 Alternativement, les données connues peuvent être non pas des données d'entrée de la fonction, mais des données de sortie de cette fonction, ou une partie des données d'entrée et de sortie de cette fonction. La fonction peut être n'importe quelle fonction appliquée à une même donnée secrète SD, et à une donnée d'entrée M, telle qu'une opération de 20 chiffrement ou de déchiffrement, symétrique ou asymétrique, ou encore une opération de signature, ou simplement une multiplication, modulaire ou non, par la donnée secrète (M x SD), une fonction logique XOR (OU Exclusif) avec la donnée secrète (M XOR SD), une fonction d'exponentiation modulaire, la donnée secrète étant utilisée comme exposant (MSD mod n, n 25 étant connu), ou une fonction de réduction modulaire, la donnée secrète étant utilisée comme le module (M mod SD). Un autre exemple de fonction consiste à traiter le résultat d'une opération XOR avec une table de substitution (SBOX[M XOR SD], SBOX étant la table de substitution), comme dans les algorithmes cryptographiques DES et AES. Plus généralement, 30 cette fonction doit pouvoir permettre de calculer une partie de la valeur résultant de l'opération à partir d'une partie de la donnée secrète et d'une donnée d'entrée. Dans l'exemple de la figure 3, les courbes CO, C1, Ci, Cix correspondent respectivement aux données d'entrée (ou de sortie) M[0], 35 M[1], M[i], et M[ix]. 3048097 11 La figure 4 représente des étapes S1 à S19 de traitement des valeurs collectées par le système de test durant l'exécution d'une opération cryptographique OPRK supposée connue, appliquée à une donnée secrète à découvrir, et à des données d'entrée M[0]..M[ix] également connues. Selon 5 un mode de réalisation, le but de ce test est de déterminer si la valeur de la donnée secrète fuit dans les valeurs collectées formant les courbes de la figure 3, par exemple. L'unité de traitement PC exécute tout d'abord les étapes S1 à S8. A l'étape S1, l'unité de traitement PC du système de test initialise un 10 indice i de boucle sur les données d'entrée M[0]..M[ix], ainsi qu'un tableau CH. A l'étape S2, l'unité de traitement PC active l'exécution d'une opération OPRK par le circuit MCT ou le logiciel à tester, cette opération recevant la donnée M[i], la donnée secrète étant fournie à l'opération par le circuit MCT ou le logiciel. A l'étape S3, l'unité de traitement PC collecte les valeurs 15 constituant la courbe Ci. A l'étape S4, une partie ECi des valeurs de la courbe Ci est sélectionnée, seule cette partie étant traitée dans les étapes de traitement qui suivent (figure 3). Dans l'exemple de la figure 4, cette partie est délimitée par les valeurs de la courbe Ci correspondant aux indices k et kx, par souci de simplicité. En réalité, les indices k et kx peuvent varier d'une 20 courbe Ci à l'autre. En outre, les valeurs ainsi sélectionnées dans chaque courbe ne sont pas nécessairement consécutives. Ainsi, il peut être choisi par exemple d'extraire uniquement des maximums ou des minimums locaux de chaque courbe. A noter également que la partie ECi extraite peut être la totalité de la courbe Ci. Dans le traitement qui suit, on fait l'hypothèse que les 25 données ainsi extraites contiennent une information concernant la donnée secrète recherchée. A l'étape S5, l'unité de traitement PC initialise à 0 un indice de boucle j ainsi qu'un tableau HT. A l'étape S6, l'unité de traitement PC applique une fonction surjective F1 à la valeur ECi[j] d'indice j de la partie de courbe 30 sélectionnée ECi et incrémente de un (1) une valeur dans le tableau HT, repérée par un indice égal au résultat fourni par la fonction F1. A l'étape S7, l'indice j est incrémenté de un (1). A l'étape S8, l'indice j est comparé à sa valeur maximum pour déterminer si toutes les valeurs de l'ensemble ECi ont été ainsi traitées. Si toutes les valeurs de l'ensemble ECi ont été traitées, 35 l'unité de traitement PC exécute les étapes S9 à S14, sinon elle exécute à 3048097 12 nouveau les étapes S6 à S8. De cette manière, les valeurs de l'ensemble ECi chargées dans le tableau HT se présentent sous la forme d'un histogramme spécifiant le nombre d'occurrences de chaque valeur possible retournée par la fonction F1, de sorte que la caractéristique temporelle liée 5 aux valeurs de l'ensemble ECi ne figure pas dans le tableau HT : le contenu du tableau HT ne permet pas de déterminer l'ordre dans lequel les valeurs de l'ensemble ont été collectées. La figure 5 représente un exemple de tableau HT sous la forme d'un graphe de valeurs (calculées à l'aide de la fonction F1) en abscisse, en fonction d'un nombre d'occurrences en 10 ordonnée. Aux étapes S9 et S10, l'unité de traitement PC initialise des indices g et I à 0. A l'étape S11, l'unité de traitement PC applique une opération OPR à la donnée M[i] et à une partie de la donnée secrète à déterminer SD, fixée égale à l'indice g. L'opération OPR(M, g) est supposée fournir une partie du 15 résultat de l'opération OPRK(M) (=OPR(M, SD)) exécutée à l'étape S2. Le résultat fourni par l'opération OPR est traité par une fonction surjective F2 qui fournit une valeur VL. A l'étape S12, l'unité de traitement PC incrémente une valeur stockée dans le tableau CH à trois dimensions, en un emplacement repéré par les indices g, VL et I, de la valeur HT[I] à l'indice I dans le tableau 20 HT correspondant à la donnée M[i]. La figure 6 représente un exemple de tableau CH dans lequel chaque emplacement CH[g,VL] repéré par les indices g et VL contient un tableau obtenu par le cumul de plusieurs tableaux HT en fonction de la valeur VL obtenue à l'étape S11. A l'étape S13, l'indice I est incrémenté de un (1). A l'étape S14, l'indice I est comparé à sa valeur 25 maximum lx compte tenu du nombre de valeurs distinctes possibles fournies par la fonction F1. Si l'indice I est inférieur à sa valeur maximum lx, les étapes S12 à S14 sont à nouveau exécutées, sinon les étapes S15 et S16 sont exécutées. A l'étape S15, l'unité de traitement PC incrémente de un (1) l'indice g. 30 A l'étape S16, l'unité de traitement PC compare l'indice g à sa valeur maximum gx, compte tenu du nombre de valeurs distinctes possibles pour la partie de donnée secrète considérée. Si l'indice g est inférieur à la valeur maximum gx, une nouvelle itération des étapes S10 à S16 est exécutée, sinon les étapes S17 et S18 sont exécutées. A l'étape S17, l'unité de 35 traitement PC incrémente de un (1) l'indice i pour traiter une autre courbe Ci. 3048097 13 A l'étape S18, l'unité de traitement PC compare l'indice i à sa valeur maximum ix correspondant au nombre de courbes Ci générées. Si l'indice i est inférieur à la valeur maximum ix, les étapes S2 à S18 sont à nouveau exécutées, sinon l'étape S19 est exécutée. A l'étape S19, chaque tableau de 5 cumuls contenu dans le tableau CH à l'emplacement [g,VL] contient les valeurs suivantes : CH[g, VL,O..lx] = IHTm[][0..lx] M[i] (1) les données M[i] à prendre en compte dans la somme ci-dessus étant telles que F2(OPR(M[i],g)) = VL. 10 A l'étape S19, l'unité de traitement PC effectue une analyse statistique du tableau CH visant à déterminer si une valeur de l'indice g correspond à la partie de donnée secrète recherchée. A cet effet, il est considéré que les informations résultant d'une fuite de la donnée secrète ont été accumulées dans les emplacements d'une ligne g du tableau CH, tandis 15 que les informations indépendantes de la donnée secrète sont réparties d'une manière aléatoire ou uniforme dans le tableau CH. Par conséquent, si une ligne d'indice g du tableau CH contient des valeurs plus élevées que dans le reste de ce tableau, la valeur de l'indice g à cette ligne du tableau CH correspond à la valeur de la partie recherchée de la donnée secrète SD. 20 Dans ce cas, il peut être considéré que la donnée secrète SD a fui dans les données collectées formant les courbes Ci. Les fonctions F1 et F2 peuvent être choisies de manière à correspondre au modèle de fuite du circuit ou du logiciel à tester. Ainsi, les fonctions F1 et F2 peuvent être la fonction identité, ou une fonction qui 25 calcule un poids de Hamming d'une valeur fournie en entrée de la fonction, par exemple le nombre de bits à 1 de la valeur codée en binaire, ou encore une fonction qui calcule une distance de Hamming avec une autre valeur, par exemple l'écart entre les nombres de bits à un de ces deux valeurs. A noter que le choix des fonctions F1 et F2 peut avoir une influence à la fois sur la 30 complexité du traitement statistique du tableau CH à effectuer pour déterminer la partie de la donnée secrète considérée, et sur le succès du traitement statistique pour déterminer la valeur de la partie de donnée secrète recherchée. 3048097 14 La partie de donnée secrète recherchée en exécutant les étapes S1 à S19 peut être par exemple définie sur 8 ou 16 bits. Sur 8 bits, l'indice g est affecté successivement de toutes les valeurs comprises entre 0 et 255 (ou 1 et 256). A noter que l'ordre dans lequel les valeurs de g sont testées n'a pas 5 d'importance pour le résultat du test. La partie de la donnée secrète recherchée peut également être définie sur 16 ou 32 bits. Une autre partie de la donnée secrète SD peut être déterminée en exécutant les étapes S9 à S19 en utilisant les valeurs des parties de la donnée secrète déterminées précédemment, et en forçant une autre partie 10 de la donnée secrète aux différentes valeurs possibles de l'indice g. A cet effet, les mêmes parties ECi des courbes Ci ou d'autres parties de ces courbes peuvent être extraites à l'étape S4. A noter que les ensembles de valeurs formant les courbes Ci peuvent avoir été collectés (étapes S2 et S3) avant d'exécuter les autres étapes de la 15 figure 4. En outre, un tableau HT peut avoir été constitué pour chacune des courbes Ci, avant d'exécuter les étapes S9 à S19. L'opération OPR / OPRK appliquée à la donnée secrète SD et à la donnée d'entrée M[i], peut être l'une ou une combinaison des opérations suivantes : 20 - une opération de chiffrement, ou de déchiffrement, symétrique ou asymétrique, la donnée secrète SD étant la clé de chiffrement ou de déchiffrement - une opération de signature à l'aide de la donnée secrète SD, - une multiplication, modulaire ou non, par la donnée secrète (M[i] x SD), 25 - une opération logique XOR (OU Exclusif) avec la donnée secrète (M[i] XOR SD), - une opération d'exponentiation modulaire, la donnée secrète SD étant utilisée comme exposant (M[i]SD mod n, n étant connu), - une opération de réduction modulaire, la donnée secrète SD étant utilisée 30 comme module (M[i] mod SD), - une opération de substitution par une valeur sélectionnée dans une table de substitution à l'aide de la donnée d'entrée (SBOX[M[i]], SBOX étant la table de substitution), et - une opération combinant une opération logique XOR appliquée à la donnée 35 secrète et l'opération de substitution remplaçant le résultat de l'opération 3048097 15 logique par une valeur sélectionnée dans une table de substitution à l'aide du résultat de l'opération XOR (SBOX[M[i] XOR SD]). Plus généralement, cette opération doit pouvoir permettre de calculer une partie de la valeur finale de l'opération à partir d'une partie seulement de 5 la donnée secrète et d'une donnée d'entrée. Pour mettre en évidence les valeurs accumulées correspondant aux informations relatives à la donnée secrète, les contenus de tous les tableaux HT peuvent être ajoutés entre eux pour obtenir un tableau de nombre d'occurrences cumulées par valeur possible retournée par la fonction F1. Les 10 valeurs de ce tableau de cumuls sont retranchées de tous les tableaux accumulés dans les emplacements du tableau CH[g,VL]. Ainsi, la séquence d'étapes de la figure 4 peut être modifiée conformément à la séquence représentée sur la figure 7. Les étapes montrées sur la figure 7 comprennent les étapes S9 à S19 précédemment décrites, ainsi que des étapes 15 supplémentaires S21 et S22. A l'étape S9, on a précédemment rempli un tableau à deux dimensions HT[0..ix,l] contenant tous les tableaux générés à l'étape S6 pour toutes des courbes Ci. L'étape S21 est insérée dans la boucle (entre les étapes S12 et S14) contrôlée par l'indice I permettant de sélectionner l'une des valeurs fournies par la fonction F1, par exemple après 20 l'étape S12. A l'étape S21, l'unité de traitement PC accumule chaque valeur HT[i,l] dans un tableau de cumul MHT en un emplacement repéré par l'indice I. De cette manière, le tableau MHT contiendra à l'issue du traitement, la somme de toutes les valeurs HT[i,l] d'indice i obtenues pour chacune des courbes Ci. L'étape S22 est exécutée une fois à chaque itération de la 25 boucle contrôlée par l'indice i permettant de sélectionner l'une des courbes Ci, par exemple après l'étape S14. L'étape S22 permet de compter le nombre de tableaux HT[i,l] accumulés dans chaque emplacement CH[g,VL] du tableau CH. Le résultat de ce comptage est mémorisé dans un tableau CPT. 30 La figure 8 représente des étapes S31 à S42 d'un exemple de traitement statistique du tableau CH pour tenter de déterminer la valeur de la partie recherchée de la donnée secrète SD. Les étapes S31 à S36 sont exécutées successivement. A l'étape S31, l'indice VL est initialisé à 0 et tous les emplacements d'un tableau TT sont initialisés à 1. A l'étape S32, les 35 indices g et I sont initialisés à 0 et tous les emplacements d'un tableau IT 304 809 7 16 sont initialisés à 0. A l'étape S33, une variable T, reçoit la valeur CH[g,VL,I] contenue dans le tableau CH, sélectionnée par les indices g, VL, et I, cette valeur étant divisée par la valeur de comptage située à l'emplacement CPT[g,VL] dans le tableau CPT. A l'étape S34, la valeur IT[g] à 5 l'emplacement g dans le tableau IT incrémentée du résultat élevé au carré de la division par le nombre total ix de courbes Ci, de la différence entre la valeur de la variable T et la valeur MHT[g,VL] mémorisée dans le tableau MHT, repérée par les indices g et VL. A l'étape S35, l'indice I est incrémenté de un (1). A l'étape S36, l'indice I est comparé à sa valeur maximum lx. Si 10 l'indice I a atteint sa valeur maximum lx, les étapes S37 à S39 sont exécutées, sinon une nouvelle itération est exécutée à partir de l'étape S33. A l'étape S37, la valeur TT[g] repérée par l'indice g dans le tableau TT est mise à jour en étant multipliée par la valeur IT[g] calculée aux étapes S34 à S36, exécutées lx fois. A l'étape S38, l'indice g est incrémenté de un (1). A 15 l'étape S39, l'indice g est comparé à sa valeur maximum gx. Si l'indice g est supérieur à sa valeur maximum gx, les étapes S40 et S41 sont exécutées, sinon une nouvelle itération est exécutée à partir de l'étape S33. A l'étape S40, l'indice VL est incrémenté de un (1). A l'étape S41, l'indice VL est comparé à sa valeur maximum VLx. Si l'indice VL est supérieur à sa valeur 20 maximum VLx, l'étape S42 est exécutée, sinon une nouvelle itération est exécutée à partir de l'étape S32. A l'étape S42, le tableau TT est retourné en tant que résultat de l'analyse statistique. Ainsi, à la dernière itération de la boucle de traitement incluant les étapes S32 à S41, les tableaux IT et TT contiennent les valeurs suivantes : - IT[g, VL] = CH[g, VL, I] MHT[I] i=oCPT[g, VL] ix VLx TT[g] = fJIT[g, VL] VL=O ix gx VLx CPT[g, VL] = (F2(OPR(M[i], g)) VL) MHT[I] = CH[g, VL, I] avec 1=0 et g=0 VL=0 l'opérateur "==" représentant le test d'égalité, le tableau IT étant initialisé à l'étape S33 et chargé à l'étape S34 à chaque nouvelle valeur de l'indice VL. 30 Ainsi, CPT[g,VL] représente le nombre de fois où la condition (F2(OPR(M[i],g)) == VL) est vraie. Si la donnée secrète SD a fui lors de 25 2 (2) (3) 3048097 17 l'exécution de l'opération OPRK, un emplacement du tableau TT contient une valeur nettement plus grande que les autres valeurs stockées dans ce tableau. Il en résulte que la partie de la donnée secrète SD recherchée est égale à l'indice g de la plus grande valeur se trouvant dans le tableau TT. 5 Il est à noter que les valeurs du tableau IT peuvent être additionnées au lieu d'être multipliées à l'étape S37 correspondant à l'équation (3). La mise en oeuvre d'une opération de multiplication permet simplement d'amplifier les écarts entre les valeurs du tableau TT, et donc de faire mieux apparaître la plus grande valeur correspondant à la partie de donnée secrète 10 recherchée. Il peut également être envisagé d'appliquer la fonction logarithme aux valeurs du tableau IT et d'effectuer un cumul additif des valeurs de logarithme obtenues, dans le tableau TT. La figure 9 représente des étapes S51 à S66 d'un autre exemple de traitement statistique du tableau CH pour tenter de déterminer la valeur de la 15 partie recherchée de la donnée secrète SD. Ce traitement est basé sur la fonction d'entropie de Shannon. Les étapes S51 à S55 sont exécutées successivement. A l'étape S51, l'indice g est initialisé à 0 et tous les emplacements du tableau TT sont initialisés à 0. A l'étape S52, les indices VL et let une variable SXY sont initialisés à 0. A l'étape S53, la variable SXY 20 est incrémentée de la valeur CH[g,VL,I] sélectionnée dans le tableau CH, par les indices g, VL, et I. A l'étape S54, l'indice I est incrémenté de un (1). A l'étape S55, l'indice I est comparé à sa valeur maximum lx. Si l'indice I a atteint sa valeur maximum lx, les étapes S56 à S60 sont exécutées, sinon une nouvelle itération est exécutée de l'étape S53 à l'étape S55. A l'étape 25 S56, l'indice I et une variable PXY sont initialisés à 0. A l'étape S57, une variable VXY, reçoit la valeur CH[g,VL,I] sélectionnée dans le tableau CH par les indices g, VL, et I, cette valeur étant divisée par la variable SYX calculée par les itérations S53 à S55. A l'étape S58, la variable PXY est incrémentée du produit de la variable VXY par le logarithme (par exemple en base 2) de la 30 variable VXY. A l'étape S59, l'indice I est incrémenté de un (1). A l'étape S60, l'indice I est comparé à sa valeur maximum lx. Si l'indice I a atteint sa valeur maximum lx, les étapes S61 à S63 sont exécutées, sinon une nouvelle itération est exécutée de l'étape S57 à l'étape S60. A l'étape S61, la valeur TT[g] repérée par l'indice g dans le tableau TT 35 est mise à jour en lui retranchant le produit de la valeur CPT[g,VL] divisée 3048097 18 par le nombre de courbes ix, par la variable PXY, la valeur CPT[g,VL] étant repérée par les indices g et VL dans le tableau CPT rempli à l'étape S22. A l'étape S62, l'indice VL est incrémenté de un (1). A l'étape S63, l'indice VL est comparé à sa valeur maximum VLx. Si l'indice VL est supérieur à sa 5 valeur maximum VLx, les étapes S64 et S65 sont exécutées, sinon une nouvelle itération est exécutée à partir de l'étape S53. A l'étape S64, l'indice g est incrémenté de un (1). A l'étape S65, l'indice g est comparé à sa valeur maximum gx. Si l'indice g est supérieur à sa valeur maximum gx, l'étape S66 est exécutée, sinon une nouvelle itération est exécutée à partir de l'étape 10 S52. A l'étape S66, le tableau TT est retourné en tant que résultat de l'analyse statistique. Ainsi, à la dernière itération, après l'étape S65, le tableau TT contient les valeurs suivantes : Ix C PT[g, VL] vlx C H[g, VL, I] log( C H[g, VL, I] (4) TT[g] = ix i o SXY SXY Ix SXY = C H[g, VL, I] 15 où 1=0 est calculée pour chacune des valeurs des indices g et VL, et chaque valeur de l'indice g représente une valeur possible de la partie de clé recherchée. Si la donnée secrète SD a fui lors du traitement de l'opération OPRK, un emplacement du tableau TT contient une valeur nettement plus grande que les autres valeurs stockées dans ce tableau. Il en 20 résulte que la partie de la donnée secrète SD recherchée est égale à l'indice g de la plus grande valeur se trouvant dans le tableau TT. Les figures 10 et 11 représentent des courbes C1, C2 représentant un exemple de contenu du tableau TT en fonction de l'indice g, ce dernier ayant une longueur de un octet (donc variant de 0 à 255). Les courbes Cl et C2 25 ont été obtenues à partir d'un nombre de courbes Ci de l'ordre de 500 000. La courbe Cl a été obtenue en exécutant les étapes de la figure 8, et la courbe C2, les étapes de la figure 9. Les courbes Cl et C2 présentent un pic marqué à la valeur g = 168 par rapport aux autres valeurs contenues dans le tableau TT. La valeur du pic dans la courbe Cl est supérieure à une 30 trentaine de fois les autres valeurs du tableau TT. Dans la courbe C2, la valeur du pic est supérieure à 3 fois les autres valeurs du tableau TT. 3048097 19 Efficacité des contre-mesures classiques vis-à-vis du procédé de test selon l'invention Pour que les circuits tels que les circuits intégrés puissent passer avec succès les procédures de qualification ou de certifications connues, les 5 concepteurs de ces circuits prévoient des contre-mesures dont les plus classiques consistent à introduire un aléa temporel. Cette disposition peut être effectuée en faisant varier aléatoirement la durée du cycle d'horloge cadençant le circuit, ou en introduisant des cycles de traitement ou des opérations factices à des instants choisis aléatoirement. Le calcul des 10 valeurs des tableaux HT permet de supprimer l'aspect temporel des valeurs analysées, et permet d'éviter d'avoir à synchroniser les différentes courbes des valeurs analysées. Dès lors que des informations relatives à la donnée secrète recherchée se trouvent dans les données analysées, le procédé de test décrit précédemment peut permettre de déterminer tout ou partie de la 15 donnée secrète. Contre-mesures appropriées Des modes de réalisation concernent des moyens de contre-mesure permettant à un circuit d'être considéré comme apte à être utilisé, au cours 20 d'un test de qualification ou de certification incluant le procédé de test décrit précédemment. On propose ici de protéger une opération cryptographique contre une analyse mise en oeuvre par le procédé de test tel que décrit précédemment. Dans ce contexte, l'opération reçoit une ou plusieurs données d'entrée, et 25 fournit une donnée de sortie en fonction de la valeur de la donnée d'entrée. Une contremesure, selon un mode de réalisation, consiste à représenter les données sensibles dans un format comprenant un ou plusieurs mots comprenant chacun une partie de la donnée et le complément binaire à un de cette partie, la partie considérée pouvant comprendre la totalité de la 30 donnée. Chaque mot contenant une partie de la donnée peuvent comprendre des bits supplémentaires pouvant être fixés à des valeurs aléatoires. Par ailleurs, l'opération est modifiée de manière à prendre en compte le ou les formats des données d'entrée de l'opération et à fournir une donnée de sortie dans un même format ou un format analogue à celui des données d'entrée. 35 A noter que les données d'entrée d'une opération peuvent avoir des formats 3048097 20 différents, dès lors que l'opération est adaptée pour prendre ces différents formats. Grâce au fait que les données à protéger soient représentées sous la forme de mots comprenant chacun une partie de la donnée et le complément 5 binaire à un de cette partie, le poids de Hamming de chaque mot représentant la donnée ne dépend pas de la valeur de la donnée ou de la partie de donnée dans le mot. Il n'est donc pas possible de retrouver la valeur de la donnée ou partie de donnée par une analyse statistique si le modèle de fuite du circuit correspond au poids de Hamming. 10 La figure 12 représente une donnée M qui peut être une donnée secrète et/ou une donnée d'entrée M d'une opération qui peut appartenir à un calcul de cryptographie. Dans l'exemple de la figure 12, la donnée M se présente sous la forme d'un octet formé de huit bits b0 à b7. Selon un mode de réalisation, la donnée M, SD est représentée sous la forme de 8 mots MO 15 à M7 par exemple de huit bits, comprenant chacun un bit respectif b0-b7 de la donnée M, SD, et le complément binaire à un de ce bit. Ainsi, chaque mot Mj comprend les bits bj et bj , j représentant le rang du bit bj dans la donnée M. Selon un mode de réalisation, les autres bits des mots Mj présentent des valeurs choisies aléatoirement rj1 à rj6, par exemple fournies par un 20 générateur de nombres aléatoire RNG. Les bits bj et bj peuvent être placés dans n'importe quelles autres positions dans le mot Mj. Dans l'exemple de la figure 12, chaque mot Mj présente la forme : bj -rj1-rj2-rj3- bj -rj4-rj5-rj6, (5) avec le bit bj au premier rang et le bit bj au quatrième rang. 25 La figure 13 représente une opération OPR combinant un bit Mbj de la donnée d'entrée M avec un bit SDbj d'une donnée secrète SD et fournissant un bit RDbj d'une donnée de sortie RD, j correspondant au rang du bit bj traité dans la donnée d'entrée M, SD. Les bits Mbj et SDbj sont insérés respectivement dans des mots MMj et SDMj, conformément à l'exemple 30 illustré par la figure 12. Ainsi, le mot MMj comprend le bit MBj et son complément binaire à un Mbj . De même, le mot SDj comprend le bit SDbj et son complément binaire à un SDbj . Selon un mode de réalisation, l'opération OPR appliquée à chaque bit de la donnée d'entrée et de la donnée secrète est remplacée par une 35 opération OPR1 recevant en entrée les mots MMj et SDMj, et fournissant un 3048097 21 mot de sortie RDMj. L'opération OPR1 comprend une opération de complémentation partielle de bits du mot d'entrée MMj, et fournissant un mot d'entrée modifié MMj'. L'opération OPR1 applique l'opération OPR aux mots SDMj et MMj', laquelle fournit le mot de sortie RDMj comprenant un bit RDbj 5 et son complément binaire à un RDbj. Dans le cas où l'opération OPR est une opération logique OU Exclusif, l'opération de complémentation partielle comprend par exemple une opération logique OU Exclusif combinant le mot d'entrée MMj avec un masque MSK, ce dernier comprenant un bit à 0 au rang du bit Mbj dans le 10 mot MMj, un bit à 1 au rang du bit Mbj , et des bits de valeurs quelconques "x" aux autres rangs du masque. De cette manière, le bit Mbj dans le mot MMj est complémenté à un par l'application du masque MSK pour obtenir le bit Mbj dans le mot MMj'. Il en résulte que le bit RDbj dans le mot de sortie RDMj est égal à SDbj XOR Mbj, XOR représentant l'opération logique OU 15 Exclusif, et le bit RDbj est égal à SDbj XOR Mbj, cette valeur étant bien égale au complément à un de SDbj XOR Mbj. Il est à noter que le risque de fuite dû à la présence de deux fois le bit Mbj dans le mot MMj' n'a pas d'importance si la donnée M n'a pas besoin d'être protégée. Les rangs dans les mots SDMj et MMj des bits SDbj, SDbj et Mbj, 20 Mbj sont identiques, mais peuvent être quelconques, et donc peuvent être choisis aléatoirement. Ils peuvent également différer en fonction de l'indice j. Il importe simplement que le circuit qui exécute l'opération OPR1 connaisse les emplacements de ces bits. La figure 14 représente une donnée M qui peut être une donnée 25 secrète SD et/ou une donnée d'entrée M d'une opération qui peut appartenir à un calcul de cryptographie. Dans l'exemple de la figure 14, la donnée M se présente sous la forme d'un octet formé des bits b0 à b7. Selon un mode de réalisation, la donnée M est représentée sous la forme de 8 mots M10 à M17 d'un octet comprenant chacun deux occurrences d'un bit respectif b0-b7 de 30 la donnée M, et deux occurrences du complément binaire à un de ce bit. Ainsi, chaque mot M1j comprend deux fois chacun des bits bj et bj , j étant égal au rang du bit bj dans la donnée M. Selon un mode de réalisation, les autres bits des mots M1j reçoivent des valeurs aléatoires rj1 à rj4, par exemple fournies par un générateur de nombres aléatoire RNG. Les deux 35 occurrences de chacun des bits bj et bj peuvent être placées dans 3048097 22 n'importe quelle autre position dans le mot M1j. Dans l'exemple de la figure 14, chaque mot M1j présente la forme : bj -rj1- bj -rj2-bj-rj3- bj -rj4, (6) avec le bit bj aux premier et cinquième rangs et le bit bj aux troisième et 5 septième rangs dans le mot M1j. La figure 15 représente une opération OPR combinant un bit M1bj d'une donnée d'entrée M1 avec un bit M2bj d'une autre donnée M2 et fournissant un bit RDbj d'une donnée de sortie RD. Les bits M1bj et M2bj sont insérés respectivement dans des mots M1j et M2j, conformément à 10 l'exemple illustré par la figure 14. Ainsi, le mot M1j comprend deux occurrences du bit M1bj et deux occurrences du complément binaire à un M1bj de ce bit. De même, le mot M2j comprend deux occurrences du bit M2bj et deux occurrences du complément binaire à un M2bj de ce bit. Selon un mode de réalisation, l'opération OPR appliquée à chaque bit 15 des données d'entrée M1, M2, est remplacée par une opération OPR2 recevant en entrée les mots M1j et M2j, et fournissant un mot de sortie RM1j. L'opération OPR2 comprend une première opération de complémentation partielle de bits du mot d'entrée M2j, et fournissant un mot d'entrée modifié M2j'. L'opération OPR2 applique l'opération OPR aux mots M1j et M2j', 20 laquelle fournit un mot résultant RM1j' comprenant deux occurrences d'un bit R1bj et deux occurrences du complément binaire à un R1bj de ce bit. Le mot de sortie RM1j de l'opération OPR2 est obtenu à la suite d'une seconde opération de complémentation partielle de bits du mot résultant RM1j'. Dans le cas où l'opération OPR est une opération logique OU 25 Exclusif, la première opération de complémentation partielle comprend par exemple une opération logique OU Exclusif combinant le mot d'entrée M2j avec un masque MSK1, ce dernier comprenant un bit à 0 aux rangs des premières occurrences des bits M2bj et M2bj dans le mot M2j, un bit à 1 aux rangs des secondes occurrences des bits M2bj et M2bj , et des bits de 30 valeurs quelconques "x" aux autres rangs du masque. De cette manière, les deux secondes occurrences des bits M2bj et M2bj dans le mot M2j sont complémentées à un par l'application du masque MSK1. A noter qu'à la suite de la première opération de complémentation partielle, les nombres d'occurrences de bits M2bj restent égales aux nombres d'occurrences des 35 bits M2bj . Il en résulte que le poids de Hamming du mot M2j ou M2j' ne 3048097 23 dépend pas de la valeur du bit M2bj. Le mot résultant RM1j' comprend successivement deux occurrences du bit R1bj, puis deux occurrences du bit R1bj . En effet, si le bit R1bj est égal au résultat de l'opération M1bj XOR M2bj, le second bit R1bj dans le mot RM1j' résulte bien de l'opération M1bj 5 XOR M2bj , le premier bit R1bj résulte bien de l'opération M1bj XOR M2bj , et le second bit R1bj résulte bien de l'opération M1bj XOR M2bj. La seconde opération de complémentation partielle permet d'obtenir un mot de sortie RM1j ayant un même format que les mots d'entrée M1j et M2j. La seconde opération de complémentation partielle comprend par exemple une 10 opération logique OU Exclusif combinant le mot résultant RM1j avec un masque MSK2, ce dernier comprenant des bits à 0 et à 1 respectivement aux rangs des première et seconde occurrences du bit R1bj, et des bits à 1 et 0 respectivement aux rangs des première et seconde occurrences du bit R1bj , et des bits de valeurs quelconques "x" aux autres rangs du masque. De cette 15 manière, la seconde occurrence du bit R1bj et la première occurrence du bit R1bj dans le mot RM1j' sont complémentés à un par l'application du masque MSK2. Il en résulte que le mot de sortie RM1j présente bien le format des données d'entrée M et secrète SD. Le bit R1bj dans le mot de sortie RM1j est égal à M1bj XOR M2bj, et le bit R1bj est égal à M1bj XOR M2bj, cette 20 valeur étant bien égale au complément à un de M1bj XOR M2bj. Il peut être observé sur la figure 15, que tous les mots manipulés comprennent autant de bits d'entrée M1bj, M2bj ou de donnée de sortie R1bj, complémentés à un, que de bits correspondants non complémentés à un. A noter également, que l'opération de complémentation partielle finale 25 appliquant le masque MSK2 vise simplement à mettre le mot de sortie RM1j au même format que les mots d'entrée M1j, M2j. Cette opération de complémentation partielle peut donc être omise si l'opération suivante appliquée au mot de sortie RM1j tient compte du format du mot de résultat intermédiaire RM1j'. 30 La figure 16 illustre un autre format de mot dans lequel les données à protéger peuvent être représentées, selon un mode de réalisation. Sur la figure 16, une donnée secrète SD et son complément binaire à un SD sont insérées complètement dans un mot SM2 plus grand, pouvant également comprendre des valeurs aléatoires R11, R12, par exemple générées par un 35 circuit de génération de nombres aléatoires RNG. La donnée d'entrée M est 3048097 24 également insérée dans un mot MM2 présentant le même format que le mot SM2, avec la donnée d'entrée M, son complément binaire à un M , et des valeurs aléatoire R21, R22. A titre d'exemple, les données SD et M comprennent chacune 8 bits et les mots SM2 et MM2 comprennent 32 bits. 5 La figure 16 représente également l'opération OPR appliquée aux mots MM2 et SD2 et fournissant un mot de sortie RM2. Dans l'exemple de la figure 16, cette opération est une opération OU Exclusif. Pour que le format du mot de sortie RM2 soit le même que celui de la donnée secrète SD et n'entraine pas de fuites susceptibles d'être analysées statistiquement, le mot 10 d'entrée MM2 peut subir une opération de complémentation partielle qui complémente à un la partie du mot MM2 contenant le complément à un M de la donnée d'entrée M, et ne modifie pas la partie du mot MM2 contenant la donnée M. Ainsi, le mot de sortie RM2 présente la forme suivante : RM2 = SD 0 M //R110 R21// SDOM //R12 0 R22 15 le symbole "e " représentant l'opérateur OU Exclusif et le symbole "II" représentant l'opérateur de concaténation de chaines binaires. La figure 17 illustre un autre format de mot dans lequel les données à protéger peuvent être représentées, selon un mode de réalisation. Sur la figure 17, des données M3, M4 et leurs compléments binaires à un respectifs 20 M3 , M4 sont insérées entièrement deux fois dans un mot MM3, MM4 plus grand, pouvant également comprendre des valeurs aléatoires R11, R12, R13, R14, R21, R22, R23, R24, par exemple générées par un circuit de génération de nombres aléatoires RNG. A titre d'exemple, les données M3 et M4 comprennent chacune 4 bits et les mots MM3 et MM4 comprennent 32 25 bits. A noter que ce format peut être utilisé pour des données M3, M4 comportant 8 bits, en utilisant deux mots dans ce format, chacun de ces mots comportant 4 des bits des données M3, M4. La figure 17 représente également une opération OPR3 incluant l'opération OPR à réaliser, appliquée aux mots MM3 et MM4 et fournissant 30 un mot de sortie RM3. Dans l'exemple de la figure 17, cette opération réalise une opération OU Exclusif sur les données M3, M4. L'opération OPR3 comprend une opération de complémentation partielle combinant un masque MSK3 avec l'un ou l'autre des mots MM3, MM4 (MM4 dans l'exemple de la figure 17). Cette opération de complémentation vise à complémenter la 35 seconde occurrence de la donnée M4 et la seconde occurrence de la donnée 3 04 809 7 25 complémentée M4 , figurant dans le mot MM4. A cet effet, l'opération de complémentation partielle combine le mot MM4 par une opération OU Exclusif avec le masque MSK3, lequel comprend des bits à 0 à des rangs correspondant aux rangs des bits des premières occurrences de la donnée 5 M4 et de son complément M4 , à conserver, et des bits à 1 à des rangs correspondant aux rangs des bits des secondes occurrences de la donnée M et de son complément M4 à complémenter. L'opération de complémentation fournit un mot MM4' qui est combiné par l'opération OPR avec le mot MM3. L'opération OPR fournit un mot de résultat intermédiaire RM3'. Si l'opération 10 OPR est une opération OU Exclusif, le mot RM3' comprend successivement deux occurrences de la donnée de sortie R2 (= M3 0 M4 ou M3 0 M4 ), suivies de deux occurrences de la donnée de sortie complémentée à un R2 (= M3 0 M4 ou M3 0 M4). L'opération OPR3 peut comprendre une opération de complémentation partielle finale appliquant un masque MSK4 au mot de 15 résultat intermédiaire RM3'. Cette opération de complémentation permet d'obtenir un mot de sortie RM3 dans un même format que le mot de donnée secrète SM3. A cet effet, l'opération de complémentation peut être une opération OU Exclusif combinant le mot RM3' à un masque MSK4 comprenant des bits à 0 à des rangs correspondant aux bits des données à 20 ne pas complémenter dans le mot RM3' et des bit à 1 à des rangs correspondant aux bits des données à complémenter dans le mot RM3'. Pour passer du mot RM3' au mot de sortie RM3, il suffit de complémenter dans le mot RM3' la seconde occurrence de la donnée de sortie R2 et la première occurrence de la donnée de sortie complémentée R2. Il peut être 25 observé que les mots en entrée M3, M4, en sortie RM3 et manipulés RM3' par l'opération OPR3 comportent tous deux occurrences d'une même donnée et deux occurrences de cette donnée complémentée à un. A noter également que la première opération de complémentation partielle peut ne être nécessaire si le mot d'entrée MM4 est fourni en entrée de 30 l'opération OPR3 au format du mot MM4'. Egalement, l'opération de complémentation finale fournissant le mot de sortie RM3 peut ne pas être nécessaire si l'opération qui exploite le mot de sortie est configurée pour traiter des mots ayant le format du mot de résultat intermédiaire RM3'. La figure 18 représente un circuit OPR4 réalisant une opération à 35 protéger. Ce circuit est configuré pour recevoir des bits de données d'entrée 304 809 7 26 représentés sous la forme de mots M1j, M2j ayant un format analogue à ceux décrits précédemment en référence aux figures 12 et 14. Sur ces figures, chaque bit des données d'entrées est représenté sous la forme d'un mot M1-M7, M11-M17. Ainsi, sur la figure 12, chacun de ces mots MO à M7 5 (Mj) comprend une occurrence d'un bit bj de la donnée d'entrée et une occurrence du complément binaire à un de ce bit. Sur la figure 14, chacun de ces mots M11 à M17 (M1j) comprend deux occurrences d'un bit bj de la donnée d'entrée et deux occurrences du complément binaire à un de ce bit. Selon un mode de réalisation, le circuit OPR4 comprend un circuit de calcul 10 IXCP d'un mot d'index IDX à partir des mots d'entrée M1j, M2j. Le circuit OPR4 comprend également une table LUT fournissant un mot de sortie RMj du circuit OPR4 en fonction de la valeur du mot d'index IDX. Le mot de sortie peut présenter un format analogue au format des mots d'entrée, ou encore un format attendu par une opération suivante exploitant les mots de sortie 15 RMj. La figure 19 représente un exemple du circuit de calcul d'index IXCP lorsque les mots d'entrée M1j, M2j présentent le format représenté sur la figure 12. Ainsi, chacun des mots M1j et M2j comprennent au premier rang, un bit M1bj, M2bj, et au quatrième rang un bit M1bj , M2bj égal au 20 complément binaire à un de ce bit. Le circuit IXCP comprend un circuit de décalage binaire RSC vers la droite, recevant le mot d'entrée M2j et fournissant un mot décalé IMj comprenant au premier rang un bit à 0, puis aux rangs suivants les bits du mot M2j à l'exception du dernier bit (rj6'). Le circuit IXCP comprend également un premier circuit logique de masquage 25 AND1 appliquant une opération logique ET au mot d'entrée M1j et à un mot de masquage MSK3, un second circuit logique AND2 appliquant une également une opération logique de masquage ET au mot IMj et à un mot de masquage MSK4, et un troisième circuit logique XOR appliquant une opération OU Exclusif aux mots fournis par les circuits AND1 et AND2 et 30 fournissant le mot d'index IDX. La première opération de masquage réalisée par le circuit AND1 permet de mettre à 0 les bits aux second et cinquième rangs du mot d'entrée M1j sans changer les autres bits. La seconde opération de masquage réalisée par le circuit AND2 permet de mettre à 0 les bits aux premier et quatrième rangs du mot IMj. Il en résulte que le mot 35 d'index IDX comprend les bits Ml bj et M2bj aux premier et second rangs, 3048097 27 respectivement, et les bits M1bj et M2bj aux quatrième et cinquième rangs respectivement. Les figures 20 et 21 représentent des exemples LUT1, LUT2 de la table LUT pour réaliser des fonctions logiques OU et ET, respectivement. La 5 répartition des mots dans les tables LUT1, LUT2 correspond au format du mot d'index "ABxx Àffxx" tel qu'indiqué sur la figure 19. Les tables contiennent des mots dans un format comprenant un bit C d'une donnée de sortie et un bit C égal au complément binaire à un de ce bit C. Les tables LUT, LUT1, LUT2 comprennent chacune 2" valeurs N 10 étant le nombre de bits du mot d'index IDX, soit 256 valeurs dans l'exemple des figures 20 et 21. Les valeurs dans les tables LUT1, LUT2 sont également codées sur 8 bits. Les valeurs du mot d'index et du contenu de la table LUT1, LUT2 sont indiquées dans les figures 20 et 21 de manière générique, "x" représentant un bit de valeur quelconque. Les tables LUT1, LUT2 15 reproduisent la table de vérité de l'opération logique OU, et ET, respectivement. Les bits A et B contenus dans le mot d'index IDX étant appliqués en entrée de l'opération logique et le bit C étant fourni par l'opération logique en fonction des valeurs des bits A et B. Ainsi, n'importe quelle opération logique combinant deux bits et 20 fournissant un bit peut être réalisée. Il est donc possible de réaliser d'autres opérations logiques telles qu'une opération NON ET, NON OU, OU Exclusif, NON OU Exclusif, une opération de substitution à l'aide d'une table de substitution (SBOX), ou une combinaison de ces opérations. Par ailleurs, il peut être noté qu'à partir d'une seule table LUT réalisant une opération NON 25 ET ( ET ), il est possible de réaliser n'importe quelle opération logique de base, en utilisant les équations suivantes : A (ET) B = (NON) (A ( ET ) B) A (OU) B = (À ( ET )U ) A (XOR) B = (A ( ET ) ) ( ET ) (À ( ET ) B) 30 A noter également que les opérations de complémentation (NON) appliquées aux bits A et B et au résultat de l'opération dans les équations ci-dessus peuvent être effectuées simplement en remplaçant chaque bit du mot par son complément à un, ou peuvent être omises. En effet, comme le mot de sortie RMj comprend un bit de donnée et son complément à un, il peut être 35 considéré que le mot de sortie présente un autre format dans lequel les 3048097 28 rangs des bits de donnée non complémentés et les bits de donnée complémentés sont inversés. Il est ainsi possible de construire une telle table LUT pour tous les formats possibles des mots de donnée. Cependant, il est avantageux pour 5 réduire la taille de la table de pouvoir réduire les mots d'entrée M1j, M2j en un mot d'index de même taille comme cela est réalisé par le circuit IXCP de la figure 19. Cette opération de réduction est possible en utilisant les bits quelconques "x" si le nombre de ces bits est supérieur ou égal au nombre de bits de donnée d'entrée M1bj, M2bj de l'opération en comptant les bits de 10 données complémentés à un Ml bj , M2bj . La figure 22 représente un autre exemple de circuit de calcul d'index IXC1, adapté au format de mots d'entrée M3j, M4j et de sortie, présenté sur la figure 14, c'est-à-dire avec deux occurrences d'un bit de donnée et deux occurrences du complément binaire à un de ce bit. Le circuit IXC1 comprend 15 deux circuits de masquage AND2, AND3 et un circuit XOR1 combinant les sorties des circuits de masquage par une opération OU Exclusif. Le circuit de masquage AND3 combine le mot d'entrée M3j à un masque MSK5 par une opération logique ET. Le masque MSK5 présente des bits à 0 aux troisième et cinquième rangs pour mettre à 0 la première occurrence du bit 20 complémenté M3bj et la seconde occurrence du bit de donnée M3bj figurant dans le mot M3j. Les autres bits du masque MSK5 sont à 1 pour conserver inchangés les autres bits du mot M3j. Le circuit de masquage AND4 combine le mot d'entrée M4j à un masque MSK6 par une opération logique ET. Le masque MSK6 présente des bits à 0 aux premier et septième rangs pour 25 mettre à 0 la première occurrence du bit de donnée M4bj et la seconde occurrence du bit complémenté à un M4bj figurant dans le mot M4j. Les autres bits du masque MSK6 sont à 1 pour conserver inchangés les autres bits du mot M4j. Ainsi, à la sortie du circuit XOR1, le mot d'index comprend successivement le bit d'entrée M3bj, le bit d'entrée complémenté à un M4bj, 30 le bit d'entrée M4bj, puis le bit d'entrée complémenté à un M3bj , ces bits étant séparés par un bit de valeur quelconque "x". Les figures 23, 24 représentent des exemples LUT3, LUT4 de la table LUT adaptées au format de l'index IDX fournit par le circuit IXC1 de la figure 22 et au format des mots de la figure 14. Ainsi le mot d'index IDX présente le 35 format " Axr3x BxÀx". La figure 23 reproduit la table de vérité de l'opération 3048097 29 logique NON ET ( ET ), et la figure 24 reproduit la table de vérité de l'opération logique OU Exclusif (XOR). Les tables LUT3, LUT4 contiennent donc des mots ayant deux occurrences d'un bit de sortie C de l'opération logique et deux occurrences de ce bit complémenté à un : 5 "C x C x C x Ux". Dans les figures 23 et 24, l'index IDX et le contenu des tables LUT3, LUT4 peuvent prendre 256 valeurs différentes, également indiquées de manière générique, "x" représentant un bit de valeur quelconque. Bien entendu, la table LUT peut être construite en fonction d'un mot 10 d'index IDX comprenant non pas un seul bit de la donnée d'entrée M et un bit de la donnée secrète SD, mais plusieurs bits distincts de la donnée d'entrée M et autant de bits de la donnée secrète SD. Par ailleurs, le mot d'index peut être construit simplement en concaténant les mots d'entrée M et SD. D'après les documents [7] et [8], il est possible de mettre en oeuvre 15 les algorithmes de cryptographie DES et AES en utilisant uniquement des opérations logiques de base (ET, OU, NON, OU Exclusif, NON OU Exclusif). Selon un mode de réalisation, les algorithmes de cryptographie DES et AES sont mis en oeuvre en convertissant les données d'entrée et les clés de cryptographie dans l'un des formats de représentation de mots décrits 20 précédemment, et à l'aide des opérations logiques de base réalisées suivant l'une ou l'autre des manières décrites en référence aux figures 13 et 15 à 24. La figure 25 représente un circuit intégré CT1 agencé sur un support portatif HD tel une carte plastique, et équipé d'une contre-mesure selon un mode de réalisation. Le circuit intégré comporte les mêmes organes que le 25 circuit intégré CT décrit plus haut en relation avec la figure 1, et se distingue de celui-ci en ce que le coprocesseur CP1 est remplacé par un coprocesseur CP2 mettant en oeuvre l'une et/ou l'autre des contremesures décrites précédemment. Ainsi, selon un mode de réalisation, le coprocesseur CP2 est configuré pour manipuler les données sous l'un ou plusieurs des formats de 30 représentation en mots de donnée décrits précédemment. La conversion des données d'entrée dans l'un de ces formats peut être également effectuée par le coprocesseur CP2, de même que la conversion des données de sortie. Ces conversions peuvent être effectuées totalement ou en partie par le processeur PRC. Dans le cas, le processeur PRC est apparié avec le 35 coprocesseur CP2 de manière à utiliser les mêmes formats de représentation des données d'entrée et/ou de sortie. 3048097 30 Bien entendu, la présence d'un coprocesseur est optionnelle et le processeur PRC peut réaliser l'ensemble des opérations de conversion des données en mots de données suivant un format de représentation de données, et inversement, et l'ensemble des opérations de traitement des 5 mots de données. Il apparaîtra clairement à l'homme de l'art que la présente invention est susceptible de diverses variantes de réalisation et diverses applications. En particulier, l'invention n'est pas limitée à des formats de mots d'entrée et ou de sortie d'opération comportant des bits à des valeurs aléatoires. Ainsi, 10 tous les bits d'un mot de donnée peuvent être issus d'une donnée d'entrée ou de sortie d'opération. Il importe simplement que ce format comprenne une ou plusieurs occurrences de bits de donnée et autant d'occurrences du complément binaire à un de ces bits. Un format de mot de donnée peut être défini par une taille de partie de donnée d'entrée figurant dans le mot de 15 donnée, des positions respectives et un nombre d'occurrences de cette partie et de son complément dans le mot de donnée, des données aléatoires étant présentes dans le mot de donnée, si le produit de la taille de la partie de donnée par le nombre d'occurrences de cette partie, est inférieure à la taille du mot de donnée. Ce format peut également être choisi d'une manière 20 aléatoire. Il peut également être envisagé de changer ce format à chaque exécution d'un programme mettant en oeuvre l'opération. L'invention englobe également des combinaisons des modes de réalisation précédemment décrits. Ainsi, par exemple, l'une ou l'autre des opérations OPR1, OPR2, OPR3 peut être enchainée en une seule opération 25 avec l'opération OPR4, dès lors que les mots de donnée présentent des formats compatibles. Il va de soi également que les circuits décrits précédemment peuvent être réalisés sous la forme d'un programme exécutable par un processeur. 30 3048097 31 Références citées [1] P. C. Kocher, "Timing attacks on implementations of Diffie-Hellman, RSA, DSS, and other systems" In Neal Koblitz, editor, Advances in Cryptology 5 CRYPTO '96, volume 1109 of Lecture Notes in Computer Science, pages 104-113. Springer, 1996. [2] P. C. Kocher, J. Jaffe, and B. Jun, "Differential Power Analysis" In M. J. Wiener, editor, Advances in Cryptology - CRYPTO '99, volume 1666 of 10 Lecture Notes in Computer Science, pages 388-397. Springer, 1999. [3] E. Brier, C. Clavier, and F. Olivier, "Correlation Power Analysis with a Leakage Model" In M. Joye and J-J. Quisquater, editors, Cryptographic Hardware and Embedded Systems - CHES 2004, volume 3156 of Lecture 15 Notes in Computer Science, pages 16-29. Springer, 2004. [4] J.-J. Quisquater, "ElectroMagnetic Analysis (EMA): Measures and Counter-measures for Smart Cards", Smart Card Programming and Security, Springer Berlin / Heidelberg, vol. 2140, 2001, p. 200-210 20 [5] S. Chari, J. R. Rao, and P. Rohatgi, "Template Attacks", Kaliski Jr., B.S., Koç, Ç.K., Paar, C. (eds.) CHES 2002. LNCS, vol. 2523, pp. 172-186. Springer, Heidelberg, 2003 25 [6] B. Gierlichs, L. Batina, P. Tuyls, and B. Preneel, "Mutual Information Analysis", CHES 2008, volume 5154 of LNCS, pages 426-442, Springer, 2008 [7] E. Biham, "A fast new DES implementation in software", Fast Software 30 Encryption, Vol. 1267 of the series Lecture Notes in Computer Science, pp 260-272, 2006 [8] C. Rebeiro, D. Selvakumar, "Bitslice Implementation of AES", A. S. L. Devi Cryptology and Network Security, Vol. 4301 of the series Lecture Notes 35 in Computer Science pp 203-212, 2006 REVENDICATIONS1. Procédé d'exécution par un circuit (CT1) d'une opération cible (OPR) combinant deux données d'entrée (SD, M) et fournissant une donnée de sortie (RD), le procédé comprenant des étapes consistant à : générer au moins une paire de mots d'entrée (SDMj, MMj) dans lequel chaque mot d'entrée comprend deux occurrences (SDbj, SDbj ,Mbj, Mbj ) d'au moins une partie d'une des données d'entrée respective, une des deux occurrences de la partie de donnée d'entrée dans un des mots d'entrée étant sous la forme d'un complément binaire à un ( SDbj , Mbj ) de la partie de donnée d'entrée, et appliquer à chaque paire de mots d'entrée, une opération dérivée (OPR1) fournissant un mot de sortie (RDMj) comprenant un résultat au moins partiel (RDbj) résultant de l'application de l'opération cible aux parties de données d'entrée figurant dans la paire de mots d'entrée, et un complément binaire à un ( RDbj ) du résultat. 2. Procédé selon la revendication 1, dans lequel chacun des mots d'entrée (SDMj, MMj) de la paire d'entrée comprend une donnée (rij) issue d'un générateur de nombres aléatoires ou pseudo-aléatoires (RNG). 3. Procédé selon la revendication 1 ou 2, dans lequel chacune des données d'entrée (SD, M) se trouve entièrement dans un mot d'entrée (SM2, MM2, SM3, MM3) de la paire de mots d'entrée. 4. Procédé selon la revendication 1 ou 2, dans lequel chaque donnée d'entrée (SD, M) est répartie dans plusieurs mots d'entrée (M0-M7, M10- M17). 5. Procédé selon la revendication 4, dans lequel chaque donnée d'entrée (SD, M) est représentée sous la forme d'un mot de plusieurs bits 30 (b0-b7), chaque bit de chaque donnée d'entrée étant inséré dans un mot d'entrée respectif (M0-M7, M10-M17). 3048097 33 6. Procédé selon l'une des revendications 1 à 5, dans lequel des positions respectives de la partie de donnée (SDbj, Mbj, RDbj) dans chacun des mots (SDMj, MMj) de la paire de mots d'entrée et du mot de sortie (RDMj), sont choisies d'une manière aléatoire. 5 7. Procédé selon l'une des revendications 1 à 6, dans lequel chacun des mots d'entrée (SDMj, MMj, SM3, MM3) et de sortie (RM1j, RM3) comprend deux occurrences d'une partie ou de l'ensemble d'une des deux données d'entrée (SDbj, Mbj, SD, M) et de sortie (R1bj, RD), respectivement, 10 et deux occurrences du complément à un de la partie ou de l'ensemble de la donnée d'entrée ( SDbj , Mbj , SD , M ) ou de sortie ( RDbj , RD ), respectivement. 8. Procédé selon l'une des revendications 1 à 7, dans lequel 15 l'opération cible (OPR) comprend une opération ou une combinaison des opérations suivantes : OU Exclusif, ET, OU, NON ET, NON OU, NON OU Exclusif, et une opération de substitution utilisant une table de substitution. 20 9. Procédé selon l'une des revendications 1 à 8, dans lequel l'opération dérivée (OPR4) est configurées pour combiner les mots d'entrée (M1j, M2j) d'une paire de mots d'entrée pour déterminer un mot d'index (IDX), et pour sélectionner à l'aide du mot d'index le mot de sortie (RMj) dans une table (LUT). 25 10. Procédé selon l'une des revendications 1 à 9, dans lequel l'une des données d'entrée est une donnée secrète (SD) et l'autre des données d'entrée est une donnée (M) à traiter par une opération de cryptographie utilisant la donnée secrète. 11. Procédé selon l'une des revendications 1 à 10, dans lequel l'opération cible (OPR) est une opération ou une combinaison d'opérations mettant en oeuvre l'algorithme DES ou AES. 3048097 34 12. Circuit (CT1) configuré pour mettre en oeuvre le procédé selon l'une des revendications 1 à 11, et comprenant un processeur (PRC). 13. Circuit (CT1) selon la revendication 12, comprenant un 5 coprocesseur (CP2). 14. Dispositif comprenant un circuit selon la revendication 12 ou 13, agencé sur un support (HD). 10 15. Produit programme d'ordinateur directement chargeable dans une mémoire interne d'un ordinateur et comprenant des portions de code qui lorsqu'elles sont exécutées par un ordinateur configurent l'ordinateur pour mettre en oeuvre les étapes du procédé selon l'une des revendications 1 à 11. 15