FR 3048086 A1 20170825 FR 1651443 A 20160222 1 PROCEDE DE TEST DE LA RESISTANCE D'UN CIRCUIT A UNE ANALYSE PAR CANAUX AUXILIAIRES La présente invention concerne un procédé de test d'un circuit, notamment un circuit destiné à manipuler une donnée secrète, et en particulier un circuit permettant de transformer un message par un algorithme de cryptographie utilisant une clé secrète. 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, 3048086 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 3048086 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 3048086 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. Il est parfois possible de rétablir cet alignement temporel, moyennant une expertise spécifique et un grand nombre d'essais, en particulier à l'aide d'un nombre élevé de courbes à réaligner. Il subsiste malgré tout des cas où il n'est pas possible de rétablir cet alignement temporel, si bien que les tests 25 par canaux auxiliaires échouent bien qu'une fuite de donnée secrète soit présente dans les courbes. 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 30 notamment des tests de la robustesse du circuit intégré face à des analyses 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 pouvoir proposer un procédé de test de la 35 résistance d'un circuit ou d'un logiciel à une analyse par canaux auxiliaires, 3048086 5 qui puisse en particulier détecter une fuite de donnée secrète sans nécessiter un traitement préalable d'alignement temporel de courbes de consommation de courant ou de toute autre grandeur physique ou logique représentative de l'activité du circuit. Il peut être également souhaitable que 5 ce procédé puisse permettre de tester la robustesse d'un logiciel ou d'une application, indépendamment du circuit dans lequel il est exécuté. Il peut également être souhaitable que ce procédé de test puisse être intégré dans un processus industriel de qualification et/ou de certification visant à vérifier la robustesse de circuits ou de logiciels exécutés par un 10 circuit donné, à des analyses par canaux auxiliaires et leur étanchéité en terme de fuite d'information. Il peut également être souhaitable de proposer des moyens de contre-mesure permettant à un circuit intégré ou un logiciel d'être considéré comme apte à être utilisé dans un produit, au terme d'un processus de qualification 15 et/ou de certification incluant un tel procédé de test. Des modes de réalisation concernent un procédé de test comprenant des étapes consistant à : acquérir une pluralité d'ensembles de valeurs, chaque ensemble comprenant des valeurs d'une grandeur physique ou de signaux logiques, liés à l'activité d'un circuit à tester durant l'exécution par le 20 circuit d'une opération d'un ensemble d'opérations cryptographiques distinctes appliquées à une même donnée secrète, pour chaque ensemble de valeurs, compter, par une unité de traitement, des nombres d'occurrences de transformées par une première fonction surjective appliquée à des valeurs de l'ensemble de valeurs, pour chaque opération de l'ensemble d'opérations, 25 et chacune des valeurs possibles d'une partie de la donnée secrète, calculer, par l'unité de traitement, un résultat partiel d'opération, calculer, par l'unité de traitement, des sommes de nombres d'occurrences, chaque somme étant obtenue en additionnant les nombres d'occurrences correspondant aux opérations de l'ensemble d'opérations, qui appliquées à une même valeur ou 30 valeur équivalente des valeurs possibles de la partie de la donnée secrète, fournissent un résultat partiel d'opération ayant une même valeur transformée par une seconde fonction surjective, et analyser, par l'unité de traitement, les sommes de nombres d'occurrences pour déterminer la partie de la donnée secrète, sachant que si la donnée secrète a fui dans les 3048086 6 ensembles de valeurs, elle se trouve dans les cumuls de nombres d'occurrences correspondant à la valeur de la partie de la donnée secrète. Selon un mode de réalisation, le procédé comprend une étape de sélection de valeurs dans chaque ensemble de valeurs, le comptage de 5 nombres d'occurrences étant effectué sur les valeurs sélectionnées. Selon un mode de réalisation, le procédé comprend des étapes consistant à : transmettre au circuit une pluralité de commandes distinctes, chaque commande déclenchant l'exécution par le circuit d'une des opérations de l'ensemble d'opérations, appliquée à la donnée secrète, et 10 pendant l'exécution par le circuit de chaque opération, collecter par un dispositif de mesure, les valeurs d'un des ensembles de valeurs. Selon un mode de réalisation, les ensembles de valeurs comprennent : des mesures de consommation de courant du circuit, et/ou des mesures de rayonnement électromagnétique émises par le circuit, et/ou 15 des mesures d'absorption de champ magnétique présent autour du circuit, et/ou des signaux logiques ou des valeurs numériques collectées dans le circuit. Selon un mode de réalisation, chacune des première et seconde fonctions surjectives est l'une des fonctions suivantes : la fonction identité, 20 une fonction fournissant le poids de Hamming de la valeur à laquelle la fonction est appliquée, et une fonction fournissant une distance de Hamming entre une valeur et une valeur précédente auxquelles la fonction est appliquée. Selon un mode de réalisation, le procédé comprend une étape de 25 rejet du circuit ou du programme exécuté par le circuit si l'étape d'analyse permet de déterminer la partie de donnée secrète recherchée. Selon un mode de réalisation, les étapes de calcul d'un résultat d'opération pour chacune des valeurs possibles d'une partie de la donnée secrète, de calcul des sommes de nombres d'occurrences, et d'analyse des 30 sommes de nombres d'occurrences, sont à nouveau exécutées pour une partie précédemment déterminée de la donnée secrète et une autre partie à découvrir de la donnée secrète. Selon un mode de réalisation, les valeurs sélectionnées dans chaque ensemble de valeurs comprennent : des valeurs consécutives de l'ensemble 35 de valeurs, et/ou des valeurs non consécutives de l'ensemble de valeurs, 3048086 7 et/ou des valeurs d'extrémums locaux de l'ensemble de valeurs, et/ou toutes les valeurs de l'ensemble de valeurs. Selon un mode de réalisation, le procédé comprend les opérations de l'ensemble d'opérations comprennent l'application d'une unique opération à 5 la donnée secrète et à une donnée d'entrée d'un ensemble données d'entrées, l'unique opération comprenant au moins une des opérations suivantes : une opération de chiffrement ou de déchiffrement, symétrique ou asymétrique, une opération de signature, une multiplication, modulaire ou non, par la donnée secrète, une opération logique OU Exclusif avec la 10 donnée secrète, une opération d'exponentiation modulaire, la donnée secrète étant utilisée comme exposant, une opération de réduction modulaire, la donnée secrète étant utilisée comme module, 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, et une opération combinant une opération 15 logique OU Exclusif avec la donnée secrète et une opération de substitution remplaçant le résultat de l'opération logique par une valeur sélectionnée dans une table de substitution à l'aide du résultat de l'opération logique. Selon un mode de réalisation, le procédé comprend l'analyse des sommes de nombres d'occurrences comprend des étapes consistant à : pour 20 chaque somme de nombres d'occurrences, calculer une somme normalisée en divisant la somme de nombres d'occurrences par un nombre de sommes de nombres d'occurrences cumulées correspondant, pour chaque valeur possible de la partie de donnée secrète et chaque valeur possible de résultat partiel transformé, calculer une somme d'écarts élevés au carré, entre 25 chaque somme normalisée correspondant à la valeur possible de la partie de donnée secrète et la valeur possible du résultat partiel transformé, et une valeur moyenne des sommes de nombres d'occurrences, divisée par un nombre d'opérations, pour chaque valeur possible de la partie de donnée secrète, calculer un cumul de sommes d'écarts correspondant à toutes les 30 valeurs possibles des résultats partiels transformés, et comparer entre eux les cumuls de sommes d'écarts, et détecter si un cumul de sommes d'écarts pour une valeur possible de la partie de donnée secrète est plus grand que les autres cumuls de sommes d'écarts. Selon un mode de réalisation, le procédé comprend l'analyse des 35 cumuls de nombres d'occurrences comprend des étapes consistant à : pour 3048086 8 chaque valeur possible de la partie de donnée secrète et chaque valeur possible de résultat partiel transformé, calculer une somme des cumuls de nombres d'occurrences, pour chaque cumul de nombres d'occurrences, calculer un cumul normalisé en divisant le cumul de nombres d'occurrences 5 par la somme des cumuls de nombres d'occurrences correspondante, et calculer le produit du cumul normalisé par le logarithme du cumul normalisé, pour chaque valeur possible de la partie de donnée secrète et chaque valeur possible de résultat partiel transformé, calculer une somme des produits correspondant à la valeur possible de la partie de donnée secrète et la valeur 10 possible de résultat partiel transformé, pour chaque valeur possible de la partie de donnée secrète, calculer un cumul de toutes les sommes de produits correspondant aux valeurs possibles des résultats partiels transformés, chaque somme de produits étant multipliée par un nombre de sommes de nombres d'occurrences correspondant, et comparer entre eux 15 les cumuls de sommes de produits, et détecter si un cumul de sommes de produits pour une valeur possible de la partie de donnée secrète est plus grand que les autres cumuls de sommes de produits. Des modes de réalisation peuvent concerner également un système de test d'un circuit, le système comprenant : un dispositif de mesure 20 configuré pour acquérir une pluralité d'ensembles de valeurs, chaque ensemble comprenant des valeurs d'une grandeur physique ou de signaux logiques, liés à l'activité d'un circuit à tester durant l'exécution par le circuit d'une opération d'un ensemble d'opérations cryptographiques distinctes, appliquées à une même donnée secrète, et une unité de traitement 25 configurée pour mettre en oeuvre le procédé défini précédemment. Selon un mode de réalisation, le système comprend une sonde de mesure reliée au dispositif de mesure pour acquérir des courbes relatives à l'activité du circuit. Selon un mode de réalisation, le système comprend un émulateur 30 exécutant une application à tester. Des modes de réalisation peuvent concerner également 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 exécutées par un ordinateur configurent l'ordinateur pour mettre en oeuvre 35 les étapes du procédé défini précédemment. 3048086 9 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 : la figure 1 représente schématiquement une architecture classique d'un circuit sécurisé, 5 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 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, 10 selon un mode de réalisation, la figure 5 représente sous la forme d'un graphe, un exemple de fonction surjective, la figure 6 représente schématiquement un tableau construit selon un mode de réalisation, pour effectuer un traitement statistique, 15 la figure 7 représente des étapes d'un procédé de test du circuit, selon un autre mode de réalisation, 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, 20 les figures 10 et 11 représentent sous la forme de courbes des tableaux de résultat fournis par les procédés d'analyse des figures 8 et 9, les figures 12 et 13 représentent des étapes d'une opération cryptographique, incluant des étapes de contremesure, selon divers modes de réalisation, 25 la figure 14 représente une table de substitution, transformée selon un procédé de contremesure, selon un mode de réalisation, la figure 15 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é, 30 par exemple agencé sur un support portable HD tel qu'une carte plastique ou 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 10C, 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 35 cryptographique ou accélérateur arithmétique, et un générateur RGN de 3048086 10 nombre aléatoire. La mémoire M1 est une mémoire de type RAM ("Random 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. 5 La mémoire M3 est une mémoire morte ou mémoire ROM ("Read Only 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 à 10 couplage inductif, par exemple selon la norme ISO/IEC 14443A/B ou 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 15 principal d'un terminal tel qu'un terminal mobile ou un objet connecté. 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 20 processeur PRC du circuit CT ou "sous-traitée" partiellement ou totalement 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 25 configuré pour tester le circuit intégré CT de la figure 1. 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 30 un moyen de calcul tel un ordinateur personnel PC. L'ordinateur PC est relié 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 35 mettre en oeuvre des étapes de calcul du procédé selon l'invention. Dans le cas où le circuit intégré est un circuit sans contact, l'interface de communication peut comprendre un lecteur de carte sans contact. 3048086 11 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 La présente demande concerne également un procédé de test de logiciel ou d'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 35 mémoire ou des données manipulées dans des registres du circuit, ou encore des données transmises à une interface de communication du circuit, ces transmissions étant commandées par le logiciel testé. 3048086 12 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]. 3048086 13 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 51 à S8. A l'étape 51, 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 à 3048086 14 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. 3048086 15 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[i][0..lx] (1) M[i] 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. 3048086 16 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]s° 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 3048086 17 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 3048086 18 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 : - 25 IT[g VL] = CH[g VL, I] MHT[I] CPT[g,VL] ix (2) 1=0 - VLx TT[g] = nIT[g, VL] (3) VL=O ix gx VLx avec CPT[g, VL] = (F2(0PR(M[i], g)) VL) et MHT[I] = CH[g, VL, I] , i=0 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 2 3048086 19 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 I et 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,l] 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 3048086 20 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 CH[g, VL, I] log( C H[g, VL, I] (4) TT[g] = ix i=o SXY SXY iX 15 où SXY = CH[g, VL, I] 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, Selon le traitement statistique du tableau CH, on peut considérer que la partie de la donnée secrète recherchée fuit lorsqu'on obtient un pic qui se maintient à 3048086 21 une valeur supérieure à 0.9 fois la valeur la plus proche, en augmentant le nombre de courbes Ci analysées. Efficacité des contre-mesures classiques vis-à-vis du procédé de test selon 5 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 concepteurs de ces circuits prévoient des contre-mesures dont les plus classiques consistent à introduire un aléa temporel. Cette disposition peut 10 ê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 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 15 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 donnée secrète. 20 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 d'un test de qualification ou de certification incluant le procédé de test décrit précédemment. 25 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 donnée d'entrée, et 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 à exécuter l'opération à 30 protéger pour toutes les données d'un ensemble de données d'entrée comprenant une seule fois toutes les données possibles susceptibles d'être traitées par l'opération et donc comprenant la donnée à traiter par l'opération. Une autre contremesure consiste à fournir en tant que résultat de l'opération un ensemble de données de sortie comprenant une seule fois toute les 35 données possibles susceptibles d'être fournies par l'opération. L'ensemble 3048086 22 de données de sortie peut être réduit à un sous-ensemble de données dont les données transformées par une fonction surjective choisie comprennent une seule fois toutes les données susceptibles d'être obtenues par cette fonction, y compris la donnée de sortie attendue de l'opération, 5 correspondant à la donnée d'entrée. La fonction surjective choisie peut correspondre au modèle de fuite du circuit ou du logiciel à protéger. Contrairement aux contremesures de l'art antérieur consistant à "noyer" l'opération à protéger dans un flot d'opérations identiques portant sur des données aléatoires et donc décorrélées de la donnée d'entrée de 10 l'opération à protéger, il s'agit ici de faire exécuter l'opération sur d'autres données qui ne sont pas choisies aléatoirement. En effet, ces autres données sont corrélées à la donnée d'entrée dans la mesure où l'ensemble formé de ces autres données et de la donnée à traiter comprend toutes les données susceptibles d'être traitées par l'opération. 15 La figure 12 représente des étapes S71 à S77 d'un procédé de calcul d'une opération cryptographique faisant intervenir une donnée secrète SD, selon un mode de réalisation. Ce procédé est configuré pour passer avec succès le test décrit précédemment. Les étapes S71 à S76 sont exécutées successivement. A l'étape S71, une variable RN reçoit une valeur aléatoire 20 comprise entre 0 et une valeur maximum nx déterminée en fonction du nombre de bits utilisés pour coder cette variable en binaire. Ainsi, si la variable RN est codée sur 8 bits, nx est égal à 255. A l'étape S72, un indice n est initialisé à 0. A l'étape S73, une variable IRN est calculée en combinant l'indice n à la variable RN par une opération OU Exclusif. A l'étape S74, une 25 donnée de sortie RS[n] repérée par l'indice n dans un tableau de résultat RS est calculée en appliquant l'opération cryptographique OPR telle que définie précédemment, à une donnée d'entrée M, et à la donnée secrète SD. Selon un mode de réalisation, la donnée secrète SD est ici combinée par exemple par une opération XOR (OU Exclusif) à la variable IRN : 30 RS[n] = OPR(M, SD 0 IRN) , (5) " " représentant l'opérateur OU Exclusif. Alternativement, la donnée d'entrée M peut être combinée à la variable IRN : RS[n] = OPR(M 0 IRN, SD) , (6) ou au résultat de l'opération : 35 RS[n] = OPR(M, SD) 0 IRN, (7) 3048086 23 A l'étape S75, l'indice n est incrémenté de un (1). A l'étape S76, l'indice n est comparé à la valeur maximum nx, et s'il est inférieur à la valeur nx, une nouvelle itération du calcul est exécutée aux étapes S73 à S76. Dans le cas contraire, l'étape S77 est exécutée. A l'étape S77, la donnée de 5 sortie recherchée, figurant dans le tableau RS à un indice n1 est retourné, cet indice n1 ayant la valeur de l'indice n de l'itération où la variable IRN était à 0, si l'opération de combinaison avec la valeur IRN à l'étape S74 est une opération XOR. En effet, le résultat de l'opération OU Exclusif appliquée à une donnée D et 0 ne transforme pas la donnée D. A noter que l'extraction 10 de la donnée de sortie recherchée dans le tableau RS, effectuée à l'étape S77, peut être réalisée à la suite d'autres opérations. Dans ce cas, toutes les données mémorisées dans le tableau RS sont traitées par ces autres opérations. Ainsi, dans le cas de l'algorithme AES par exemple, l'opération OPR est par exemple l'opération XOR combinant une donnée d'entrée avec 15 une première clé utilisée lors d'une première ronde de l'algorithme. Les opérations suivantes de l'algorithme AES peuvent être exécutées sur toutes les données stockées dans le tableau RS, et les résultats successifs de ces opérations stockés dans le tableau RS. Ainsi, les opérations de décalage des lignes (Shift Rows) et de mélange des colonnes (Mix Columns) peuvent être 20 appliquées sur chaque élément du tableau RS. La donnée de sortie recherchée peut être extraite du tableau de résultat RS à une étape ultérieure du traitement jugée moins sensible aux attaques. Ces dispositions sont applicables également à l'algorithme DES ou Triple DES. Par ailleurs, la donnée d'entrée M et la donnée secrète SD sont 25 codées par des mots binaires ayant un même nombre de bits. Chaque valeur donnée à la variable IRN doit également présenter le même nombre de bits que les données M et SD. Si les données M et SD sont codées par des mots de 8 bits, la variable IRN est également codée sur 8 bits. Le nombre d'itérations nx devant être exécutées entre les étapes S73 à S76 est égal à 30 2x, x étant la taille en nombre de bits des données M et SD. Si les données M et SD sont codées par des mots de 16, 32 ou 64 bits, il peut être souhaitable de limiter ce nombre d'itérations. A cet effet, la variable IRN peut être codée sur 8 bits, et les opérations de combinaison de la donnée secrète SD ou de la donnée d'entrée avec la variable IRN peuvent être effectuées en 35 concaténant plusieurs fois la variable IRN avec elle-même pour former un 3048086 24 mot de la taille de la donnée secrète SD ou de la donnée d'entrée M. Ainsi, dans le cas où les données M et SD sont codées sur 16 bits, la variable IRN sur 8 bits est concaténée avec elle-même pour obtenir une donnée sur 16 bits. L'opération exécutée à l'étape S73 devient alors : 5 RS[n] = OPR(M, SD 0 IRNIIIRN) , (8) "Ir représentant l'opérateur de concaténation de mots binaires. Dans le cas où les données M et SD sont codées sur 32 bits, chaque valeur de la variable IRN sur 8 bits est concaténée avec elle-même 3 fois pour obtenir une valeur sur 32 bits. L'opération exécutée à l'étape S73 devient alors : 10 RS[n] = OPR(M, SD 0 IRN//IRN//IRN//IRN) . (9) Plus généralement, lorsque la variable IRN est combinée à chaque itération à la donnée de sortie de l'opération OPR, les valeurs de la variable IRN peuvent être choisies de telle manière que leurs transformées par une fonction surjective choisie F3 comprennent une seule fois toutes les valeurs 15 possibles susceptibles d'être obtenues par cette fonction. La fonction F3 peut être la fonction identité, comme c'est le cas pour les étapes de la figure 12, ou une fonction dont l'ensemble image est plus réduit comme dans la figure 13. Ainsi, la figure 13 représente des étapes S80 à S90 d'un procédé de 20 calcul d'une opération cryptographique faisant intervenir une donnée secrète SD, selon un autre mode de réalisation. Ce procédé est configuré pour passer avec succès le test décrit précédemment. Les étapes S80 à S84 sont exécutées successivement. L'étape S80 est identique à l'étape S71. A l'étape S81, un indice n est initialisé à 1 et un indice m est initialisé à 0. A 25 l'étape S82, la valeur à l'indice 0 d'un tableau RS1 reçoit le résultat de l'opération OPR appliquée à la donnée d'entrée M et à la donnée secrète SD, ce résultat étant combiné à la donnée aléatoire RN par l'opération OU Exclusif. L'étape S83 est identique à l'étape S73. L'étape S84 est identique à l'étape S74 à la différence que le résultat du calcul effectué à cette étape est 30 mémorisé par une variable RES. En outre, la donnée IRN calculée à l'étape S83 est combinée par une opération OU Exclusif au résultat fourni par l'opération OPR. A l'étape S85, la transformée par la fonction F3 de la variable RES est comparée avec les autres données stockées dans le tableau RS aux emplacements désignés par des indices inférieurs ou égaux 35 à l'indice m. Si la variable RES est différente de ces autres données, l'indice 3048086 25 m est incrémenté de un (1) et la variable RES est stockée dans le tableau RS1 à l'emplacement repéré par l'indice m, aux étapes S86 et S87 et l'indice n est incrémenté de un (1) à l'étape S88, sinon seul l'indice n est incrémenté de un (1) à l'étape S88. A l'étape S89 suivante, l'indice n est comparé à la 5 valeur maximum nx, et s'il est inférieur à la valeur nx, une nouvelle itération du calcul est exécutée aux étapes S83 à S89. Dans le cas contraire, l'étape S90 est exécutée. L'étape S90 est identique à l'étape S77, à la différence qu'elle est appliquée au tableau RS1. La fonction F3 peut être choisie de manière à correspondre au 10 modèle de fuite du circuit ou du logiciel à protéger. Ainsi, la fonction F3 peut être par exemple la fonction de Hamming. Une autre contremesure peut être mise en oeuvre lorsque l'opération à protéger comprend une opération de lecture d'une table de correspondance ("lookup table"), à un indice correspondant à la donnée 15 d'entrée de l'opération et à la donnée secrète à protéger ou à une donnée à partir de laquelle la donnée secrète peut être déterminée. Selon un mode de réalisation, toute la table de correspondance est lue et par exemple chargée dans un ensemble de données résultantes, tel que le tableau RS. Comme précédemment, l'ensemble des données stockées dans le tableau RS peut 20 être appliqué en entrée d'une opération suivante, chaque donnée du tableau étant transformée par cette opération. Connaissant 1"emplacement de la donnée de sortie dans le tableau RS, le circuit peut à tout moment extraire la donnée de sortie. Selon un mode de réalisation, la table de correspondance est 25 transformée en une nouvelle table dans laquelle chaque emplacement contient toutes les valeurs possibles susceptibles d'être contenues dans la table de correspondance. Ainsi, la figure 14 représente une table de correspondance T1 permettant de déterminer le résultat d'une opération cryptographique en fonction de valeurs d'entrées variant de 0 à p. Selon un 30 mode de réalisation, la table T1 est remplacée par une nouvelle table T2, présentant une dimension supplémentaire telle que T2[i,k0] = T1 [i] pour toutes les valeurs possibles de l'indices i comprises entre 0 et p. Par ailleurs, toutes les valeurs T2[i,k] lorsque k varie de 0 à r comprennent toutes les valeurs possibles des valeurs susceptibles d'être mémorisées dans la table 35 T1. Ainsi, si ces valeurs sont codées sur un octet, la valeur maximum r de 3048086 26 l'indice k est égal à 255 et toutes les valeurs T2[i,k] lorsque l'indice i est fixé, et l'indice k varie de 0 à r, sont toutes différentes. Ainsi, toutes les tables T2[i,j] désignées par l'indices i contiennent les mêmes valeurs, mais ordonnées différemment. A titre d'exemple, les données dans la table 5 peuvent être définies de la manière suivante : T2[i, k] = T1[i] 0 (k + k0) mod (r + 1) . (10) pour toutes les valeurs k de 0 à r. L'exécution de l'opération à protéger consiste donc à charger dans un tableau de résultat (le tableau RS par exemple), toutes les valeurs de la table 10 T2 repérées par les l'indice i défini à partir de la donnée d'entrée (et éventuellement de la donnée secrète) : RS[0..r] = T2[i3O..r] Comme précédemment, l'étape S77 ou S90 peut ensuite être exécutée pour obtenir la donnée de sortie recherchée dans le tableau de résultat RS. 15 La valeur de l'indice k0 tel que T2[i,k0] = T1 [i], c'est-à-dire contenant les données de sortie de l'opération, peut être fixe pour toute la table T2 ou varier à chaque ligne de la table. Par exemple, la colonne T2[0..p,k0] peut contenir le tableau T1. Dans un autre exemple, l'élément de table T2[0,k0] peut être égal à l'élément T1[0], l'élément T2[1,k0+1] peut être égal à 20 l'élément T1[1], et ainsi de suite jusqu'à l'élément T2[p, (k0+p) mod(r+1)] égal à l'élément T1 [p]. Si dans cet exemple, le pas de décalage d'une ligne à l'autre de la table T2 est de un, il peut être fixé à n'importe quelle autre valeur comprise entre 1 et r-2. Au lieu de contenir toutes les valeurs entre 0 et r, chaque élément de 25 tableau T2[i] sélectionné par l'indice i, peut ne contenir que des valeurs telles que leurs transformées par la fonction surjective choisie F3 soient toutes différentes et comprennent toutes les valeurs possibles susceptibles d'être obtenues par cette fonction, y compris la donnée de sortie attendue. Cette disposition, permet de réduire la taille de la table T2, sans pour autant 30 réduire la robustesse du procédé, si la fonction F3 reproduit le modèle de fuite de la donnée secrète. Bien entendu, si la table T1 est à deux dimensions, la table T2 est à trois dimensions, chaque élément de la table T1 étant remplacé par une table à une dimension contenant toutes les valeurs possibles des éléments de la 35 table Ti. 3048086 27 La figure 15 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 circuit intégré CT décrit plus haut en relation avec la figure 1, et se distingue 5 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 fournir, non pas un unique résultat d'une opération cryptographique, mais un tableau de valeurs résultantes comprenant 10 uniquement des valeurs telles que leurs transformées respectives par une fonction surjective choisie soient toutes différentes et comprennent toutes les valeurs possibles susceptibles d'être obtenues par la fonction surjective, y compris le résultat attendu de l'opération cryptographique. Le processeur PRC est apparié avec le coprocesseur CP2 de manière à connaitre 15 l'emplacement du résultat de l'opération cryptographique se trouvant dans le tableau de valeurs résultantes fourni par le coprocesseur CP2. Le coprocesseur CP2 peut aussi être configuré pour exécuter une partie de l'opération cryptographique. Dans ce cas, le processeur PRC est configuré pour produire le tableau de valeurs résultantes comprenant 20 uniquement des valeurs telles que leurs transformées respectives par une fonction surjective choisie soient toutes différentes et comprennent toutes les valeurs possibles susceptibles d'être obtenues par la fonction surjective, y compris le résultat de l'opération cryptographique. 25 3048086 28 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 REVENDICATIONS1. Procédé de test comprenant des étapes consistant à : acquérir une pluralité d'ensembles de valeurs (Ci), chaque ensemble comprenant des valeurs d'une grandeur physique ou de signaux logiques, liés à l'activité d'un circuit à tester (CT) durant l'exécution par le circuit d'une opération (OPRK) d'un ensemble d'opérations cryptographiques distinctes appliquées à une même donnée secrète (SD), pour chaque ensemble de valeurs, compter, par une unité de traitement (PC), des nombres d'occurrences (HT) de transformées par une première fonction surjective (F1) appliquée à des valeurs (ECi) de l'ensemble de valeurs, pour chaque opération de l'ensemble d'opérations, et chacune des valeurs possibles (g) d'une partie de la donnée secrète, calculer, par l'unité de traitement, un résultat partiel d'opération, calculer, par l'unité de traitement, des sommes de nombres d'occurrences (CH), chaque somme étant obtenue en additionnant les nombres d'occurrences correspondant aux opérations de l'ensemble d'opérations, qui appliquées à une même valeur ou valeur équivalente des valeurs possibles de la partie de la donnée secrète, fournissent un résultat partiel d'opération ayant une même valeur transformée (VL) par une seconde fonction surjective (F2), et analyser, par l'unité de traitement, les sommes de nombres d'occurrences pour déterminer la partie de la donnée secrète, sachant que si la donnée secrète a fui dans les ensembles de valeurs, elle se trouve dans les cumuls de nombres d'occurrences correspondant à la valeur de la partie de la donnée secrète. 2. Procédé selon la revendication 1, comprenant une étape de sélection de valeurs (ECi) dans chaque ensemble de valeurs (Ci), le comptage de nombres d'occurrences (HT) étant effectué sur les valeurs sélectionnées. 3. Procédé selon la revendication 1 ou 2, comprenant des étapes consistant à : 3048086 30 transmettre au circuit une pluralité de commandes distinctes (OPRK), chaque commande déclenchant l'exécution par le circuit d'une des opérations de l'ensemble d'opérations, appliquée à la donnée secrète (SD), et 5 pendant l'exécution par le circuit de chaque opération, collecter par un dispositif de mesure, les valeurs d'un des ensembles de valeurs (Ci). 4. Procédé selon l'une des revendications 1 à 3, dans lequel les ensembles de valeurs comprennent : 10 des mesures de consommation de courant du circuit (CT), et/ou des mesures de rayonnement électromagnétique émises par le circuit, et/ou des mesures d'absorption de champ magnétique présent autour du circuit, et/ou 15 des signaux logiques ou des valeurs numériques collectées dans le circuit. 5. Procédé selon l'une des revendications 1 à 4, dans lequel chacune des première et seconde fonctions surjectives (F1, F2) est l'une des 20 fonctions suivantes : la fonction identité, une fonction fournissant le poids de Hamming de la valeur à laquelle la fonction est appliquée, et une fonction fournissant une distance de Hamming entre une valeur et 25 une valeur précédente auxquelles la fonction est appliquée . 6. Procédé selon l'une des revendications 1 à 5, comprenant une étape de rejet du circuit (CT) ou du programme exécuté par le circuit si l'étape d'analyse permet de déterminer la partie de donnée secrète 30 recherchée. 7. Procédé selon l'une des revendications 1 à 6, dans lequel les étapes de calcul d'un résultat d'opération pour chacune des valeurs possibles (g) d'une partie de la donnée secrète (SD), de calcul des sommes 35 de nombres d'occurrences (CH), et d'analyse des sommes de nombres 3048086 31 d'occurrences, sont à nouveau exécutées pour une partie précédemment déterminée de la donnée secrète et une autre partie à découvrir de la donnée secrète. 5 8. Procédé selon l'une des revendications 1 à 7, dans lequel les valeurs sélectionnées (ECi) dans chaque ensemble de valeurs (Ci) comprennent : des valeurs consécutives de l'ensemble de valeurs, et/ou des valeurs non consécutives de l'ensemble de valeurs, et/ou 10 des valeurs d'extrémums locaux de l'ensemble de valeurs, et/ou toutes les valeurs de l'ensemble de valeurs. 9. Procédé selon l'une des revendications 1 à 8, dans lequel les opérations (OPRK) de l'ensemble d'opérations comprennent l'application 15 d'une unique opération (OPR) à la donnée secrète (SD) et à une donnée d'entrée d'un ensemble données d'entrées (M[i]), l'unique opération comprenant au moins une des opérations suivantes : une opération de chiffrement ou de déchiffrement, symétrique ou asymétrique, 20 une opération de signature, une multiplication, modulaire ou non, par la donnée secrète, une opération logique OU Exclusif avec la donnée secrète, une opération d'exponentiation modulaire, la donnée secrète étant utilisée comme exposant, 25 une opération de réduction modulaire, la donnée secrète étant utilisée comme module, 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, et une opération combinant une opération logique OU Exclusif avec la 30 donnée secrète et une opération de substitution remplaçant le résultat de l'opération logique par une valeur sélectionnée dans une table de substitution à l'aide du résultat de l'opération logique. 3048086 32 10. Procédé selon l'une des revendications 1 à 9, dans lequel l'analyse des sommes de nombres d'occurrences comprend des étapes consistant à : pour chaque somme de nombres d'occurrences (CH), calculer une 5 somme normalisée (CH/CPT) en divisant la somme de nombres d'occurrences par un nombre de sommes de nombres d'occurrences cumulées (CPT) correspondant, pour chaque valeur possible (g) de la partie de donnée secrète et chaque valeur possible de résultat partiel transformé (VL), calculer une 10 somme d'écarts élevés au carré (IT), entre chaque somme normalisée correspondant à la valeur possible de la partie de donnée secrète et la valeur possible du résultat partiel transformé, et une valeur moyenne des sommes de nombres d'occurrences (MHT), divisée par un nombre d'opérations (ix), pour chaque valeur possible de la partie de donnée secrète, calculer 15 un cumul de sommes d'écarts (TT) correspondant à toutes les valeurs possibles des résultats partiels transformés, et comparer entre eux les cumuls de sommes d'écarts, et détecter si un cumul de sommes d'écarts pour une valeur possible de la partie de donnée secrète est plus grand que les autres cumuls de sommes d'écarts. 20 11. Procédé selon l'une des revendications 1 à 9, dans lequel l'analyse des cumuls de nombres d'occurrences comprend des étapes consistant à : pour chaque valeur possible (g) de la partie de donnée secrète et 25 chaque valeur possible (VL) de résultat partiel transformé, calculer une somme des cumuls de nombres d'occurrences (SXY), pour chaque cumul de nombres d'occurrences (CH), calculer un cumul normalisé (VXY) en divisant le cumul de nombres d'occurrences par la somme des cumuls de nombres d'occurrences correspondante, et calculer le 30 produit du cumul normalisé par le logarithme du cumul normalisé, pour chaque valeur possible de la partie de donnée secrète et chaque valeur possible de résultat partiel transformé, calculer une somme (PXY) des produits correspondant à la valeur possible de la partie de donnée secrète et la valeur possible de résultat partiel transformé, 3048086 33 pour chaque valeur possible de la partie de donnée secrète, calculer un cumul (TT) de toutes les sommes de produits correspondant aux valeurs possibles des résultats partiels transformés, chaque somme de produits étant multipliée par un nombre (CPT) de sommes de nombres d'occurrences 5 correspondant, et comparer entre eux les cumuls de sommes de produits, et détecter si un cumul de sommes de produits pour une valeur possible de la partie de donnée secrète est plus grand que les autres cumuls de sommes de produits. 10 12. Système de test d'un circuit, le système comprenant : un dispositif de mesure (MD) configuré pour acquérir une pluralité d'ensembles de valeurs (Ci), chaque ensemble comprenant des valeurs d'une grandeur physique ou de signaux logiques, liés à l'activité d'un circuit à 15 tester (CT) durant l'exécution par le circuit d'une opération (OPRK) d'un ensemble d'opérations cryptographiques distinctes, appliquées à une même donnée secrète (SD), et une unité de traitement (PC) configurée pour mettre en oeuvre le procédé selon l'une des revendications 1 à 11. 20 13. Système selon la revendication 12, comprenant une sonde de mesure (PB) reliée au dispositif de mesure (MD) pour acquérir des courbes (Ci) relatives à l'activité du circuit (CT). 25 14. Système selon la revendication 12 ou 13, comprenant un émulateur exécutant une application à tester. 15. Produit programme d'ordinateur directement chargeable dans une mémoire interne d'un ordinateur et comprenant des portions de code qui 30 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.