FR3048096A1 - Procede de protection d'un circuit contre une analyse par canaux auxiliaires - Google Patents

Procede de protection d'un circuit contre une analyse par canaux auxiliaires Download PDF

Info

Publication number
FR3048096A1
FR3048096A1 FR1651444A FR1651444A FR3048096A1 FR 3048096 A1 FR3048096 A1 FR 3048096A1 FR 1651444 A FR1651444 A FR 1651444A FR 1651444 A FR1651444 A FR 1651444A FR 3048096 A1 FR3048096 A1 FR 3048096A1
Authority
FR
France
Prior art keywords
data
circuit
function
secret
substitution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
FR1651444A
Other languages
English (en)
Inventor
De La Crouee Hugues Thiebeauld
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EshardSAS
Original Assignee
EshardSAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by EshardSAS filed Critical EshardSAS
Priority to FR1651444A priority Critical patent/FR3048096A1/fr
Priority to EP17156289.5A priority patent/EP3208789B1/fr
Priority to EP17156293.7A priority patent/EP3220306B1/fr
Priority to EP17156290.3A priority patent/EP3220305B1/fr
Priority to EP17156287.9A priority patent/EP3208788B1/fr
Priority to EP17156286.1A priority patent/EP3220304B1/fr
Priority to EP17156292.9A priority patent/EP3217307B1/fr
Priority to CN201710092704.XA priority patent/CN107103229A/zh
Priority to CN201710093076.7A priority patent/CN107103246A/zh
Priority to CN201710092732.1A priority patent/CN107104783A/zh
Priority to CN201710093118.7A priority patent/CN107102919A/zh
Priority to KR1020170023803A priority patent/KR20170098733A/ko
Priority to KR1020170023792A priority patent/KR20170098730A/ko
Priority to CN201710095301.0A priority patent/CN107104784A/zh
Priority to KR1020170023789A priority patent/KR20170098729A/ko
Priority to US15/439,553 priority patent/US20170244551A1/en
Priority to KR1020170023793A priority patent/KR20170098731A/ko
Priority to KR1020170023794A priority patent/KR20170098732A/ko
Priority to US15/439,571 priority patent/US10320555B2/en
Priority to US15/439,581 priority patent/US10230521B2/en
Priority to US15/439,562 priority patent/US10505711B2/en
Priority to US15/439,578 priority patent/US10419206B2/en
Priority to CN201710096299.9A priority patent/CN107104785A/zh
Priority to US15/439,530 priority patent/US10243729B2/en
Priority to KR1020170023805A priority patent/KR20170098734A/ko
Publication of FR3048096A1 publication Critical patent/FR3048096A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

L'invention concerne un procédé d'exécution par un circuit d'une opération (OPR) combinant une donnée d'entrée (M) à une donnée secrète (SD) et fournissant une donnée de sortie, le procédé comprenant une étape de fourniture en tant que résultat de l'opération d'un premier ensemble de données de sortie (RS) dans lequel la donnée de sortie apparaît avec une probabilité égale à la probabilité d'apparition dans le premier ensemble de chacune des autres données possibles susceptibles d'être fournies par l'opération, ou d'un second ensemble de données de sortie incluant la donnée de sortie et tel que dans un ensemble de transformées résultant de l'application d'une fonction surjective choisie au second ensemble, la transformée de la donnée de sortie apparaît avec une probabilité égale à la probabilité d'apparition de chaque transformée des autres données du second ensemble, la donnée de sortie ayant un rang dans le premier ou second ensemble de données, imprédictible, mais connu du circuit.

Description

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 œuvre 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 œuvre 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 œuvre 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 nœud 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, 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 ("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 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 œuvre des méthodes d'analyse statistique telles que l'analyse SPA ("Single Power Analysis"), et l'analyse DPA ("Differential Power Analysis"), CPA ("Corrélation 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 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.
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 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 "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 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 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. 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 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 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.
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 cadençant les circuits de calcul, ou introduisent des cycles d’horloge factices 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 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 œuvre dans le cas d'une exécution par un coprocesseur, ou un programme d'une plus grande 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 œuvre avec un coprocesseur conventionnel ne comportant pas de moyens de contre-mesure. Elle consiste simplement à exécuter le procédé de 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é 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 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 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 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 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 combinant une donnée d’entrée à une donnée secrète et fournissant une donnée de sortie, le procédé comprenant une étape de fourniture en tant que résultat de l’opération d’un premier ensemble de données de sortie dans lequel la donnée de sortie présente une probabilité d’apparition égale à la probabilité d’apparition dans le premier ensemble de chacune des autres données possibles susceptibles d’être fournies par l’opération, ou d’un second ensemble de données de sortie incluant la donnée de sortie, tel que, dans un ensemble de transformées des données du second ensemble, par une fonction surjective choisie, la transformée de la donnée de sortie présente une probabilité d’apparition égale à la probabilité d’apparition de chacune des transformées des autres données du second ensemble par la fonction surjective, la donnée de sortie ayant un rang dans le premier ou second ensemble de données, imprédictible, mais connu du circuit.
Selon un mode de réalisation, l’opération comprend une opération de substitution utilisant une table de substitution, chaque élément de la table de substitution susceptible d’être sélectionné à partir de la donnée d’entrée ou d’un résultat intermédiaire, étant un ensemble de données incluant la donnée de sortie et dont les transformées respectives par la fonction surjective sont toutes différentes et comprennent une seule fois toutes les données possibles susceptibles d’être obtenues par la fonction surjective, le procédé comprenant la fourniture en tant que résultat de l’opération de substitution d’une partie de la table sélectionnée en fonction de la donnée d’entrée ou du résultat intermédiaire, la donnée de sortie ayant une position dans la partie de la table sélectionnée, imprédictible, mais connue du circuit.
Selon un mode de réalisation, la fonction surjective est choisie en fonction d’un modèle de fuite de donnée du circuit.
Selon un mode de réalisation, la fonction surjective est l’une des fonctions suivantes : la fonction identité, et une fonction fournissant le poids de Hamming de la valeur appliquée à la fonction.
Selon un mode de réalisation, l’opération comprend une opération de substitution utilisant une table de substitution, le procédé comprenant la fourniture en tant que résultat de l’opération de substitution de l’ensemble de la table de substitution, la donnée de sortie ayant une position dans la table, imprédictible, mais connue du circuit.
Selon un mode de réalisation, le procédé comprend l’exécution par le circuit de l’opération appliquée à chacune des données d’un troisième ensemble de données d’entrée défini de manière à obtenir par l’opération le premier ensemble de données qui est fourni en tant que résultat de l’opération.
Selon un mode de réalisation, les données du troisième ensemble sont obtenues par combinaison de données d’un quatrième ensemble de données avec la donnée d’entrée de l’opération ou avec la donnée secrète.
Selon un mode de réalisation, chacune des valeurs du quatrième ensemble est concaténée au moins une fois avec elle-même avant d’être combinée avec la donnée d’entrée de l’opération ou avec la donnée secrète.
Selon un mode de réalisation, l’opération appliquée à la donnée secrète et à la donnée d’entrée, comprend 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 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 logique OU Exclusif appliquée à 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.
Des modes de réalisation peuvent également concerner un circuit configuré pour mettre en œuvre le procédé défini précédemment, et comprenant un processeur.
Selon un mode de réalisation, le circuit comprend un coprocesseur.
Des modes de réalisation peuvent également concerner un dispositif comprenant un circuit tel que celui défini précédemment, 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 exécutées par un ordinateur configurent l’ordinateur pour mettre en œuvre 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 : 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 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, 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, 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 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, 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é, 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 IOC, 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 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. 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 à 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 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 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 œuvre 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.
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é 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 cas où le circuit intégré est un circuit sans contact, l’interface de communication peut comprendre un lecteur de carte sans contact.
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 à 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 peut être placée à proximité de la partie de circuit dont on veut analyser le fonctionnement (par exemple à proximité du cœur 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 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 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é 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.
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 registres du circuit, ou encore des données transmises à une interface de communication du circuit, ces transmissions étant commandées par le logiciel testé.
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 valeurs numériques, représentatifs du fonctionnement du circuit à tester pendant qu’il exécute une opération mettant en œuvre 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 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. 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 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 é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, 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], M[1], M[i], et M[ix],
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 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 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 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 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 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 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, l’unité de traitement PC exécute les étapes S9 à S14, sinon elle exécute à 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 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 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 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 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 maximum Ix compte tenu du nombre de valeurs distinctes possibles fournies par la fonction F1. Si l’indice I est inférieur à sa valeur maximum Ix, 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. 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 traitement PC incrémente de un (1) l’indice i pour traiter une autre courbe Ci. 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 cumuls contenu dans le tableau CH à l’emplacement [g,VL] contient les valeurs suivantes : (1) les données M[i] à prendre en compte dans la somme ci-dessus étant telles que F2(OPR(M[i],g)) = VL. 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 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. 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 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 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.
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 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 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 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 : - 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), - 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 étant connu), - une opération de réduction modulaire, la donnée secrète SD étant utilisée 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 secrète et l’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 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 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 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 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 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 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.
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 indices g et I sont initialisés à 0 et tous les emplacements d’un tableau IT sont initialisés à 0. A l’étape S33, une variable T, reçoit la valeur CH[g,VL,l] 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] à 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 Ix. Si l’indice I a atteint sa valeur maximum Ix, 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 Ix fois. A l’étape S38, l’indice g est incrémenté de un (1). A 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 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 :
(2)
(3) avec
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. 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 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.
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 œuvre 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 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 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 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 Ix. Si l’indice I a atteint sa valeur maximum Ix, 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 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,l] 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 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 Ix. Si l’indice I a atteint sa valeur maximum Ix, 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 est mise à jour en lui retranchant le produit de la valeur CPT[g,VL] divisée 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 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 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 :
(4) où 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 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 C1 et C2 ont été obtenues à partir d’un nombre de courbes Ci de l’ordre de 500 000. La courbe C1 a été obtenue en exécutant les étapes de la figure 8, et la courbe C2, les étapes de la figure 9. Les courbes C1 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 C1 est supérieure à une 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 à 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 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 ê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 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.
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.
On propose ici de protéger une opération cryptographique contre une analyse mise en œuvre 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 à 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. Plus généralement, la donnée à traiter présente une probabilité d’apparition dans l’ensemble de données d’entrée, égale à la probabilité d’apparition dans cet ensemble de chacune des autres données possibles susceptibles d’être traitées 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 toutes les données possibles susceptibles d’être fournies par l’opération. Plus généralement, la donnée de sortie présente une probabilité d’apparition dans l’ensemble de données de sortie, égale à la probabilité d’apparition dans cet ensemble de chacune des autres données possibles susceptibles d’être fournies par l’opération. L’ensemble 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, correspondant à la donnée d’entrée. Plus généralement, ce sous-ensemble est tel que dans un ensemble de transformées des données du sous-ensemble, par la fonction surjective, la transformée de la donnée de sortie présente une probabilité d’apparition égale à la probabilité d’apparition de chacune des transformées des autres données de ce sous-ensemble. 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 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.
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 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 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 :
(5) représentant l’opérateur OU Exclusif.
Alternativement, la donnée d’entrée M peut être combinée à la variable IRN :
(6) ou au résultat de l’opération :
(7) 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 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 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 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 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 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 à 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 concaténant plusieurs fois la variable IRN avec elle-même pour former un 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 :
(8) "//" 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 :
(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 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 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 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 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 à l’indice m. Si la variable RES est différente de ces autres données, l’indice 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 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 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 œuvre 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 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 être appliqué en entrée d’une opération suivante, chaque donnée du tableau étant transformée par cette opération. Connaissant remplacement 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 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 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 T1. Ainsi, si ces valeurs sont codées sur un octet, la valeur maximum r de 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 peuvent être définies de la manière suivante :
(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 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[i,0..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.
La valeur de l’indice kO 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 à l’élément T1[1], et ainsi de suite jusqu’à l’élément T2[p, (kO+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 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 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 table T1.
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 de celui-ci en ce que le coprocesseur CP1 est remplacé par un coprocesseur CP2 mettant en œuvre 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 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 à connaître 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 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. Références citées [1] P. C. Kocher, "Timing attacks on implémentations of Diffie-Hellman, RSA, DSS, and other Systems" In Neal Koblitz, editor, Advances in Cryptology -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 Lecture Notes in Computer Science, pages 388-397. Springer, 1999.
[3] E. Brier, C. Clavier, and F. Olivier, "Corrélation Power Analysis with a Leakage Model" In M. Joye and J-J. Quisquater, editors, Cryptographie Hardware and Embedded Systems - CHES 2004, volume 3156 of Lecture 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 [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) [6] B. Gierlichs, L. Batina, P. Tuyls, and B. Preneel, "Mutual Information Analysis”, CHES 2008, volume 5154 of LNCS, pages 426-442, Springer, 2008

Claims (13)

  1. REVENDICATIONS
    1. Procédé d’exécution par un circuit (CT1) d’une opération (OPR) combinant une donnée d’entrée (M) à une donnée secrète (SD) et fournissant une donnée de sortie, le procédé comprenant une étape de fourniture en tant que résultat de l’opération d’un premier ensemble de données de sortie (RS) dans lequel la donnée de sortie présente une probabilité d’apparition égale à la probabilité d’apparition dans le premier ensemble de chacune des autres données possibles susceptibles d’être fournies par l’opération, ou d’un second ensemble de données de sortie (RS1) incluant la donnée de sortie, tel que, dans un ensemble de transformées des données du second ensemble, par une fonction surjective choisie (F3), la transformée de la donnée de sortie présente une probabilité d’apparition égale à la probabilité d’apparition de chacune des transformées des autres données du second ensemble par la fonction surjective, la donnée de sortie ayant un rang dans le premier ou second ensemble de données, imprédictible, mais connu du circuit.
  2. 2. Procédé selon la revendication 1, dans lequel l’opération (OPR) comprend une opération de substitution utilisant une table de substitution (T2), chaque élément de la table de substitution susceptible d’être sélectionné à partir de la donnée d’entrée (M) ou d’un résultat intermédiaire, étant un ensemble de données (T2[i,0..r]) incluant la donnée de sortie et dont les transformées respectives par la fonction surjective (F3) sont toutes différentes et comprennent une seule fois toutes les données possibles susceptibles d’être obtenues par la fonction surjective, le procédé comprenant la fourniture en tant que résultat de l’opération de substitution d’une partie (T2[ij) de la table sélectionnée en fonction de la donnée d’entrée ou du résultat intermédiaire, la donnée de sortie ayant une position dans la partie de la table sélectionnée, imprédictible, mais connue du circuit.
  3. 3. Procédé selon l'une des revendications 1 et 2, dans lequel la fonction surjective (F3) est choisie en fonction d’un modèle de fuite de donnée du circuit (CT1).
  4. 4. Procédé selon l'une des revendications 1 à 3, dans lequel la fonction surjective (F3) est l’une des fonctions suivantes : la fonction identité, et une fonction fournissant le poids de Hamming de la valeur appliquée à la fonction.
  5. 5. Procédé selon la revendication 1, dans lequel l’opération (OPR) comprend une opération de substitution utilisant une table de substitution (T1), le procédé comprenant la fourniture en tant que résultat (RS) de l’opération de substitution de l’ensemble de la table de substitution, la donnée de sortie ayant une position dans la table, imprédictible, mais connue du circuit.
  6. 6. Procédé selon la revendication 1, comprenant l’exécution par le circuit (CT1) de l’opération (OPR) appliquée à chacune des données d’un troisième ensemble de données d’entrée (SD 0 IRN, M) défini de manière à obtenir par l’opération le premier ensemble de données (RS) qui est fourni en tant que résultat de l’opération.
  7. 7. Procédé selon la revendication 6, dans lequel les données du troisième ensemble (SD Θ IRN, M) sont obtenues par combinaison de données d’un quatrième ensemble de données (IRN) avec la donnée d’entrée (M) de l’opération (OPR) ou avec la donnée secrète (SD).
  8. 8. Procédé selon la revendication 7, dans lequel chacune des valeurs du quatrième ensemble est concaténée au moins une fois avec elle-même avant d’être combinée avec la donnée d’entrée (M) de l’opération (OPR) ou avec la donnée secrète (SD).
  9. 9. Procédé selon l'une des revendications 1 à 8, dans lequel l’opération (OPR) appliquée à la donnée secrète (SD) et à la donnée d’entrée (M), comprend 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 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 logique OU Exclusif appliquée à 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.
  10. 10. Circuit (CT1) configuré pour mettre en œuvre le procédé selon l’une des revendications 1 à 9, et comprenant un processeur (PRC).
  11. 11. Circuit (CT1) selon la revendication 10, comprenant un coprocesseur (CP2).
  12. 12. Dispositif comprenant un circuit selon la revendication 10 ou 11, agencé sur un support (HD).
  13. 13. 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 œuvre les étapes du procédé selon l’une des revendications 1 à 9.
FR1651444A 2016-02-22 2016-02-22 Procede de protection d'un circuit contre une analyse par canaux auxiliaires Withdrawn FR3048096A1 (fr)

Priority Applications (25)

Application Number Priority Date Filing Date Title
FR1651444A FR3048096A1 (fr) 2016-02-22 2016-02-22 Procede de protection d'un circuit contre une analyse par canaux auxiliaires
EP17156289.5A EP3208789B1 (fr) 2016-02-22 2017-02-15 Procédé de protection d'un circuit contre une analyse par canaux auxiliaires
EP17156293.7A EP3220306B1 (fr) 2016-02-22 2017-02-15 Procédé de test de la résistance d'un circuit à une analyse de canal latéral
EP17156290.3A EP3220305B1 (fr) 2016-02-22 2017-02-15 Procédé de test de la résistance d'un circuit à une analyse de canal latéral de second ordre ou plus
EP17156287.9A EP3208788B1 (fr) 2016-02-22 2017-02-15 Procédé de protection d'un circuit contre une analyse par canaux auxiliaires
EP17156286.1A EP3220304B1 (fr) 2016-02-22 2017-02-15 Procédé d'essai de la résistance d'un circuit à une analyse de canal latéral
EP17156292.9A EP3217307B1 (fr) 2016-02-22 2017-02-15 Procédé d'essai de résistance d'un circuit à une analyse de canal latéral de second ordre ou au-delà
CN201710092704.XA CN107103229A (zh) 2016-02-22 2017-02-21 测试电路对二阶或更高阶侧信道分析的抵抗力的方法
CN201710093076.7A CN107103246A (zh) 2016-02-22 2017-02-21 使电路免受侧信道分析的方法
CN201710092732.1A CN107104783A (zh) 2016-02-22 2017-02-21 使电路免受侧信道分析的方法
CN201710093118.7A CN107102919A (zh) 2016-02-22 2017-02-21 测试电路对侧信道分析的抵抗力的方法
KR1020170023803A KR20170098733A (ko) 2016-02-22 2017-02-22 2차 이상의 부채널 분석에 대한 회로의 저항력을 테스트하는 방법
KR1020170023792A KR20170098730A (ko) 2016-02-22 2017-02-22 부채널 분석으로부터 회로를 보호하는 방법
CN201710095301.0A CN107104784A (zh) 2016-02-22 2017-02-22 测试电路对二阶或更高阶侧信道分析的抵抗力的方法
KR1020170023789A KR20170098729A (ko) 2016-02-22 2017-02-22 부채널 분석에 대한 회로의 저항력을 테스트하는 방법
US15/439,553 US20170244551A1 (en) 2016-02-22 2017-02-22 Method of protecting a circuit against a side-channel analysis
KR1020170023793A KR20170098731A (ko) 2016-02-22 2017-02-22 부채널 분석으로부터 회로를 보호하는 방법
KR1020170023794A KR20170098732A (ko) 2016-02-22 2017-02-22 2차 이상의 부채널 분석에 대한 회로의 저항력을 테스트하는 방법
US15/439,571 US10320555B2 (en) 2016-02-22 2017-02-22 Method of testing the resistance of a circuit to a side channel analysis of second order or more
US15/439,581 US10230521B2 (en) 2016-02-22 2017-02-22 Method of testing the resistance of a circuit to a side channel analysis
US15/439,562 US10505711B2 (en) 2016-02-22 2017-02-22 Method of protecting a circuit against a side-channel analysis
US15/439,578 US10419206B2 (en) 2016-02-22 2017-02-22 Method of testing the resistance of a circuit to a side channel analysis of second order or more
CN201710096299.9A CN107104785A (zh) 2016-02-22 2017-02-22 测试电路对侧信道分析的抵抗力的方法
US15/439,530 US10243729B2 (en) 2016-02-22 2017-02-22 Method of testing the resistance of a circuit to a side channel analysis
KR1020170023805A KR20170098734A (ko) 2016-02-22 2017-02-22 부채널 분석에 대한 회로의 저항력을 테스트하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1651444A FR3048096A1 (fr) 2016-02-22 2016-02-22 Procede de protection d'un circuit contre une analyse par canaux auxiliaires

Publications (1)

Publication Number Publication Date
FR3048096A1 true FR3048096A1 (fr) 2017-08-25

Family

ID=56372955

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1651444A Withdrawn FR3048096A1 (fr) 2016-02-22 2016-02-22 Procede de protection d'un circuit contre une analyse par canaux auxiliaires

Country Status (1)

Country Link
FR (1) FR3048096A1 (fr)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1267514A2 (fr) * 2001-06-13 2002-12-18 Fujitsu Limited Cryptage sécurisé contre les attaques DPA par analyse différentielle de consommation de courant
FR2873523A1 (fr) * 2004-07-22 2006-01-27 Sagem Procede et dispositif d'execution d'un calcul cryptographique
FR2893796A1 (fr) * 2005-11-21 2007-05-25 Atmel Corp Procede de protection par chiffrement

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1267514A2 (fr) * 2001-06-13 2002-12-18 Fujitsu Limited Cryptage sécurisé contre les attaques DPA par analyse différentielle de consommation de courant
FR2873523A1 (fr) * 2004-07-22 2006-01-27 Sagem Procede et dispositif d'execution d'un calcul cryptographique
FR2893796A1 (fr) * 2005-11-21 2007-05-25 Atmel Corp Procede de protection par chiffrement

Similar Documents

Publication Publication Date Title
EP3220304B1 (fr) Procédé d'essai de la résistance d'un circuit à une analyse de canal latéral
CA2732651C (fr) Procede de test de la resistance d'un circuit integre a une analyse par canal auxiliaire
FR2952735A1 (fr) Procede et dispositif de detection d'attaques par injection de fautes
KR20190020632A (ko) 부 채널 분석에 대한 회로의 저항성을 테스트하는 방법
EP3300292A1 (fr) Procédé de chiffrement ou de déchiffrement protégé contre des attaques par canaux cachés
US7853010B2 (en) Testing of an algorithm executed by an integrated circuit
Lomne et al. Side channel attacks
FR3048086A1 (fr) Procede de test de la resistance d'un circuit a une analyse par canaux auxiliaires
FR3048096A1 (fr) Procede de protection d'un circuit contre une analyse par canaux auxiliaires
FR3048097A1 (fr) Procede de protection d'un circuit contre une analyse par canaux auxiliaires
EP3295297B1 (fr) Procede de securisation d'une comparaison de donnees lors de l'execution d'un programme
FR2956933A1 (fr) Circuit integre protege contre une analyse par canal auxiliaire horizontale
FR2956932A1 (fr) Procede de test de la resistance d'un circuit integre a une analyse par canal auxiliaire
FR2986884A1 (fr) Procede de generation securise d'un nombre premier, produit programme d'ordinateur et composant electronique correspondants
FR2984548A1 (fr) Procede de generation de nombres premiers prouves adapte aux cartes a puce

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20170825

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

ST Notification of lapse

Effective date: 20221005