Brevet FR2980657A1 — publié le 20130329

Arrière-plan de l'invention L'invention se rapporte au domaine des circuits électroniques sécurisés destinés à manipuler des variables sensibles, par exemple des clés cryptographiques. L'invention concerne notamment la sécurité d'une carte à circuit intégré incluant un microcontrôleur. Le fonctionnement d'un module électronique embarqué dans lequel un composant, par exemple un microcontrôleur, effectue des opérations manipulant des variables, est susceptible d'être observé par un attaquant. En effet, il a été démontré que les interactions physiques d'un tel module avec son environnement extérieur sont dépendantes des opérations effectuées par le composant ainsi que des valeurs des variables manipulées par ces opérations. Des exemples de telles interactions sont la consommation de courant du module (signal PA), le rayonnement électromagnétique (signal EMA) ou bien le signal de radio fréquence (signal RFA) qui permet à une carte sans contact de s'alimenter et de communiquer. Dans le domaine des attaques passives, le but de l'attaquant est d'analyser ces signaux pour obtenir de l'information sur les données sensibles qui sont manipulées par le composant, typiquement une clé cryptographique. Ces attaques se divisent en 2 catégories : l'analyse simple et l'analyse différentielle. Dans le premier cas, l'attaquant utilise une seule mesure pour obtenir de l'information sur une donnée sensible. Dans le cas de l'analyse différentielle, l'attaquant utilise plusieurs centaines, voire plusieurs milliers de mesures d'un même événement puis il les analyse en utilisant des outils statistiques tels que le coefficient de corrélation de Pearson. Le premier objectif des attaques différentielles consiste à se synchroniser précisément lors de l'exécution d'une opération utilisant une variable sensible. Comme ce type d'attaque nécessite un grand nombre de mesures du même événement, l'attaquant doit pouvoir se synchroniser précisément sur cet événement lors de l'exécution de chaque commande. En effet, des mesures mal synchronisées vont augmenter énormément le nombre de mesures nécessaires à la réussite de l'attaque. Par exemple, si une attaque requiert n mesures pour retrouver de l'information lors d'un calcul cryptographique lorsque l'instruction sensible est toujours exécuté à l'instant t, alors cette même attaque requière x2 n mesures si l'instruction sensible est exécuté à l'instant t qu'une fois sur x. Pour donner un exemple concret, une attaque nécessitant 1 000 mesures lorsqu'il n'y a pas de désynchronisation, nécessite 100 000 mesures si le signal est désynchronisé de manière uniforme sur 10 instants différents. Les fabricants de carte à puce ont donc proposé diverses contre-mesures pour désynchroniser le signal afin d'augmenter la difficulté de mener une attaque différentielle. La figure 1 représente un premier exemple de contre-mesure, consistant en l'ajout aléatoire d'opérations factices : ceci est effectué en exécutant aléatoirement des instructions n'impactant pas le fonctionnement du code, typiquement des instructions NOP (pour « No Operation »). Sur la figure 1, on a représenté, en fonction du temps qui s'écoule vers la droite, le signal d'horloge CLK, des instructions n-2, n-1, n et n+1 exécutées pendant des périodes d'horloge successives, et le signal SA susceptible d'être analysé par un attaquant, qui est par exemple la consommation de courant du module (signal PA) ou son rayonnement électromagnétique (signal EMA). L'attaquant s'intéresse plus particulièrement au signal SA lors de l'exécution de l'instruction n, mis en évidence par une flèche. Lors d'une exécution El des d'instructions, les instructions sont exécutées successivement lors de chaque période d'horloge. Par contre, lors d'une autre exécution E2 des d'instructions, une instruction NOP a été ajoutée aléatoirement entre les instructions n-2 et n-1. Ceci a pour effet de décaler temporellement le signal SA correspondant à l'instruction n. La figure 2 représente un deuxième exemple de contre-mesure, consistant à faire varier aléatoirement la période du signal d'horloge CLK. Ceci est effectué en modifiant à la volée la valeur de la période d'horloge. Ceci implique entre autre que d'une commande à l'autre les événements n'auront pas lieux exactement au même moment, ce qui désynchronise le signal. De manière similaire à la figure 1, on a représenté sur la figure 2, en fonction du temps qui s'écoule vers la droite, le signal d'horloge CLK, des instructions n-2, n-1, n et n+1 exécutées pendant des périodes d'horloge successives, et le signal SA susceptible d'être analysé par un attaquant. L'attaquant s'intéresse plus particulièrement au signal SA lors de l'exécution de l'instruction n, mis en évidence par une flèche. Dans le cas de la figure 2, le signal d'horloge CLK présente une période variable. Ainsi, les périodes du signal CLK lors d'une exécution El des instructions sont différentes des périodes du signal CLK lors d'une autre exécution E2 des instructions. Ceci a pour effet de décaler temporellement le signal SA correspondant à l'instruction n. Les contre-mesures des figures 1 et 2 permettent donc de décaler de manière aléatoire le signal correspondant à la fuite d'information liée à l'exécution d'une instruction sensible. Cependant, au sein d'un cycle d'horloge, le signal correspondant à l'instruction attaquée est toujours le même d'une exécution à l'autre. Ainsi, il peut être possible pour un attaquant de reconnaître ce signal et ainsi de localiser temporellement l'instruction qu'il cherche à attaquer, malgré les contre-mesures de désynchronisation précitées. Dans le cas d'une instruction impliquant la transition d'une variable composée de plusieurs bits sur un bus, chaque ligne du bus est pilotée par une porte respective en fonction de la valeur du bit correspondant et, lors de l'exécution de l'instruction, les portes commutent simultanément. Les lignes de bus présentant une capacité importante, la consommation de courant des portes lors de la commutation est importante. La commutation simultanée des portes se traduit donc par un pic de consommation de courant. Ceci est illustré par la figure 3 qui représente le signal d'horloge CLK et le signal d'analyse SA qui est dans ce cas la consommation de courant du module. A chaque exécution de l'instruction attaquée, le signal SA présente un pic élevé dont la forme dépend de la valeur de la variable. Ce signal peut donc permettre à un attaquant qui réussit à déjouer les contre-mesures de désynchronisation précitées d'obtenir des informations sur la valeur de la variable. Le document US 2008/0123446 Al propose une solution à ce problème, consistant à introduire un délai aléatoire dans la commutation des portes correspondant aux différents bits d'une variable. Comme les portes logiques commutent chacune à un instant différent, la consommation de courant est composée de plusieurs pics de faible amplitude. La consommation de courant est donc étalée dans le temps et est par conséquent moins visible par un attaquant car plus sujette au bruit. De plus, d'une exécution à l'autre, un instant déterminé ne correspond pas toujours au même bit. La forme de la consommation de courant est donc modifiée d'une exécution à l'autre, ce qui rend difficile pour un attaquant de reconnaitre le signal pour se synchroniser. La solution présentée dans ce document nécessite toutefois une pluralité d'unités de retard et une matrice de commutation, ce qui rend le circuit électronique complexe et coûteux. Le document FR 2 932 336 décrit une solution similaire. Cette solution nécessite l'utilisation, pour chaque bit, d'une pluralité d'unités de retard et d'un multiplexeur, ce qui rend également le circuit électronique complexe et coûteux. Il existe donc un besoin pour une amélioration des contre-mesures destinées à empêcher les attaques visant un circuit électronique comprenant au moins un composant exécutant des instructions de manière cadencée par un signal d'horloge. Objet et résumé de l'invention L'invention propose un circuit électronique comprenant au moins un composant apte à exécuter des instructions de manière cadencée par un signal d'horloge, au moins une desdites instructions comprenant la commande, lors d'une période du signal d'horloge, de la commutation de m + 1 portes logiques en fonction d'une variable composée de m + 1 bit, m étant un nombre naturel, dans lequel une unité de commande est configurée pour commander la commutation desdites m + 1 portes logiques à des instants différents de ladite période d'horloge. Ce circuit électronique est remarquable en ce que ladite unité de commande comprend m + 1 portes d'entrée, chaque porte d'entrée recevant en entrée un desdits bits et étant reliée en sortie à l'une desdites portes logiques, une charge réactive qui dépend d'un signal de commande pouvant être modifié aléatoirement d'une exécution à l'autre étant reliée entre la sortie de la porte inverseuse et l'entrée de la porte logique. Grâce à ces caractéristiques, chaque porte logique commute à un instant différent de la période d'horloge. La consommation de courant du circuit électronique présente donc m + 1 pics de faible amplitude (par comparaison à l'unique pic de forte amplitude de la figure 3). La consommation de courant est plus étalée dans le temps et est par conséquent moins visible par un attaquant car plus sujette au bruit. De plus, en modifiant aléatoirement le signal de commande, on peut modifier l'ordre de commutation des portes logiques correspondant aux différents bits d'une exécution à l'autre. Les pics successifs ne correspondent donc pas toujours aux mêmes bits. La forme du signal d'analyse que peut observer un attaquant est donc modifiée d'une exécution à l'autre, ce qui rend difficile de se synchroniser lorsqu'une technique de désynchronisation du type décrit en introduction est mise en oeuvre. De plus, même s'il parvient à se synchroniser, une mesure réalisée à un instant tO ne peut viser qu'un des m +1 bits de la variable, ce bit n'apparaissant à l'instant tO qu'une fois sur m + 1 en moyenne. L'attaque demandera donc (m + 1)2 fois plus de mesures. Enfin, l'unité de commande du circuit électronique est réalisée avec uniquement une porte d'entrée et une charge réactive variable par bit. Elle ne nécessite pas de nombreux circuits de retard ni de multiplexeur ou de démultiplexeur. Il peut donc s'agir d'une unité particulièrement simple et peu couteuse. De préférence, pour chaque bit, la charge réactive comprend une pluralité de condensateurs et une pluralité d'interrupteurs dont l'état dépend du signal de commande. En variante, on peut utiliser des inductances. Chacune des portes logiques peut être une porte qui pilote une ligne de bus. L'invention est particulièrement intéressante dans ce cas car comme les lignes de bus présentent une capacité importante, la consommation des portes qui les pilotent est élevée. L'invention s'applique toutefois à d'autres portes qui présentent une consommation importante lors de la commutation. Les portes d'entrée peuvent être des portes inverseuses. Le circuit électronique peut comprendre des moyens pour modifier de manière aléatoire la période du signal d'horloge. Le microcontrôleur peut être configuré pour exécuter de manière aléatoire au moins une instruction prédéterminée. Ces mesures de désynchronisation contribuent, en combinaison avec la commutation à des instants différents, à sécuriser le circuit électronique contre les attaques. Le composant peut être un microcontrôleur. La présente invention concerne aussi une carte à circuit intégré incluant un circuit électronique conforme à l'invention. Brève description des dessins D'autres caractéristiques et avantages de la présente invention ressortiront de la description faite ci-dessous, en référence aux dessins annexés qui en illustrent un exemple de réalisation dépourvu de tout caractère limitatif. Sur les figures : la figure 1 est un graphe qui illustre une contre-mesure de décalage aléatoire d'un signal par ajout d'instructions, la figure 2 est un graphe qui illustre une contre-mesure de décalage aléatoire d'un signal par variation d'une période d'horloge, la figure 3 est un graphe qui représente un signal d'horloge et un signal d'analyse lors de l'exécution d'une instruction impliquant la transmission d'une variable sur un bus, selon l'art antérieur, la figure 4 représente une porte logique inverseuse, la figure 5 est un graphe qui représente la consommation de courant de la porte de la figure 4, en fonction du temps, la figure 6 représente une porte logique inverseuse dont la sortie est reliée à un condensateur, la figure 7 est un graphe qui représente le signal de sortie de la porte de la figure 6, en fonction du temps, la figure 8 représente un circuit électronique selon un mode de réalisation de l'invention, et - la figure 9 est un graphe qui représente la consommation de courant des portes logiques du circuit de la figure 8, en fonction du temps. Description détaillée d'un mode de réalisation La présente invention se rapporte à un circuit électronique comprenant au moins un composant, par exemple un microcontrôleur, apte à exécuter des instructions de manière cadencée par un signal d'horloge. Il s'agit par exemple d'un circuit de carte à puce. L'invention concerne également une carte à circuit intégré incluant un tel circuit électronique. Au moins une des instructions exécutées par le microcontrôleur comprend la commande, lors d'une période du signal d'horloge, de la commutation de m + 1 portes logiques en fonction d'une variable composée de m + 1 bit, m étant un nombre naturel. Dans l'exemple décrit ci-après, les portes logiques sont des pilotes de lignes de bus. Toutefois, l'invention s'applique à tout type d'élément fuyant. Par élément fuyant, on entend un élément qui présente une forte consommation de courant lors de la commutation. Avant de décrire en détail le circuit électronique en référence à la figure 8, on décrit les figures 4 à 7 qui illustre les principes physiques utilisés dans la présente invention. La figure 4 représente une porte logique 7. La porte logique 7 est une porte inverseuse. Ainsi, lorsque son signal d'entrée passe d'une valeur représentant un bit 0 à une valeur représentant un bit 1 avec une pente P, son signal de sortie passe d'une valeur représentant un bit 1 à une valeur représentant un bit 0. La figure 5 est un graphe qui représente la consommation de courant C (mesuré dans la résistance R) de la porte logique 7 de la figure 4 en fonction du temps, lors d'une telle commutation. Les courbes 10, 11, 12 et 13 correspondent respectivement à des valeurs décroissantes de la pente P. On constate sur la figure 5 que la consommation de la porte inverseuse 7 est dynamique, c'est-à-dire qu'elle consomme uniquement pendant une commutation. On constate également que plus la pente est lente, plus le pic de consommation de la porte arrive tardivement. Ainsi, en commandant des portes inverseuses avec des signaux d'entrée de pentes différentes, il est possible de commander la commutation des portes à des instants différents. La figure 6 représente une porte logique 8 dont la sortie est reliée à un condensateur C. La porte logique 8 est une porte inverseuse. Ainsi, lorsque son signal d'entrée passe d'une valeur représentant un bit 0 à une valeur représentant un bit 1, son signal de sortie passe d'une valeur représentant un bit 1 à une valeur représentant un bit 0. La figure 7 est un graphe qui représente le signal de sortie S de la porte logique 8 de la figure 6 en fonction du temps, lors d'une telle commutation. Les courbes 14, 15, 16 et 17 correspondent respectivement à des valeurs croissantes de la capacité du condensateur C. On constate sur la figure 7 que la pente du signal de sortie S dépend de la valeur de cette capacité. Plus précisément, plus la capacité est élevée, plus la pente est lente. Ainsi, la charge capacitive en sortie d'une porte logique permet de contrôler la pente du signal de sortie. Les constatations effectuées sur les figures 4 à 7 sont exploitées dans le circuit électronique 1 selon un mode de réalisation de l'invention, représenté sur la figure 8. Le circuit électronique 1 de la figure 8 comprend un microcontrôleur (non représenté), des pistes Bo, B1,..., Bo, correspondant aux bits 0 à m d'une variable de m+1 bits, des portes inverseuses 2, des condensateurs C, des interrupteurs 3, des portes logiques 4 et un bus 5 composé de lignes Lo, L1,..., Lm. Les portes logiques 4 sont des portes inverseuses, chacune pilotant une des lignes du bus 5. Dans une variante, le microcontrôleur est relié aux pistes Bo, B1,..., Bm et le bus 5 permet de relier le microcontrôleur à un circuit de mémoire. Dans une autre variante, un circuit de mémoire est relié aux pistes Bo, B1,..., Bo, et le bus 5 permet de relier le circuit de mémoire au microcontrôleur. Dans les deux cas, au moins une des instructions exécutées par le microcontrôleur comprend l'émission d'une variable de m + 1 bit sur les pistes Bo, B1,..., Bm. Chacune des pistes Bo, B1,..., Bff, est reliée à l'entrée d'une des portes inverseuses 2. Chaque porte inverseuse 2 est reliée en sortie à l'entrée d'une des portes logiques 4 correspondante. Entre la sortie d'une porte inverseuse 2 et l'entrée de la porte logique 4 correspondante, n condensateur de capacité C sont reliés à la masse par l'intermédiaire d'interrupteurs 3, réalisés par exemple avec un transistor NMOS. Pour chaque bit 0 à m, un signal de commande Ao à Am composé de n bits commande l'ouverture ou la fermeture des interrupteurs 3. Plus précisément, si le bit j du signal de commande i, noté A,(j), vaut 1, l'interrupteur 3 est fermé et le condensateur correspondant est connecté. Si le A,(j) vaut 0, l'interrupteur 3 est ouvert et le condensateur correspondant est déconnecté. Ainsi, pour un bit i donné, le poids de Hamming du signal de commande A, correspondant indique donc le nombre de condensateurs connectés. Par exemple, si tous les interrupteurs pour le bit i sont fermés (tous les bits de A,(j) à '1'), tous les condensateurs C sont connectées et s'additionnent. En sortie de la porte inverseuse 2, la charge capacitive est maximale et la pente du signal qui attaque la porte logique 4 est la plus lente. Au contraire, si tous les interrupteurs sont ouverts (tous les bits de A,(j) à '0'), la charge capacitive est minimale et la pente qui attaque la porte logique 4 est la plus rapide. Le fonctionnement du circuit électronique 1 est le suivant. Les signaux de commandes Ao, Am sont générés aléatoirement à chaque exécution de manière à présenter chacun un poids de Hamming différent. Lorsque le microcontrôleur exécute une instruction nécessitant la transmission d'une variable de m + 1 bits sur le bus 5, les bits 0 à m de la variable sont émis sur les pistes Bo à B'. Chacune des portes inverseuses 2 commute en fonction de la valeur du bit qu'elle reçoit en entrée, et son signal de sortie présente une pente qui dépend du signal de commande A, correspondant. Comme le nombre de condensateurs connectés est différent pour chaque bit, la pente du signal de sortie de la porte inverseuse 2 varie d'un bit à l'autre. La porte logique 4 correspondante commute en présentant un pic de consommation de courant décalé dans le temps en fonction de la pente du signal provenant de la porte inverseuse 2. Comme les pentes sont différentes d'un bit à l'autre, chaque porte logique 4 commute à un instant différent de la période d'horloge. Lors d'une exécution suivante, les signaux de commande Ao à Am sont modifiés aléatoirement. Ainsi, pour un bit donné, le nombre de condensateurs connectés varie, ce qui implique une modification de l'instant de commutation de la porte logique 4 30 correspondante. Les portes inverseuses 2, les condensateurs C et les interrupteurs 3 forment une unité de commande 6 apte à commander la commutation des portes logiques 4 à des instants différents de la période d'horloge, et à modifier l'ordre de commutation des portes logiques 4 correspondant aux différents bits en fonction des signaux de 35 commande Ao à Am pouvant être modifié aléatoirement d'une exécution à l'autre. La consommation de courant du circuit électronique 1 dépend principalement de la consommation des portes logiques 4 qui doivent piloter les lignes de bus Lo à Lm de capacité élevée. En effet, le pilotage de ces lignes devant être fait sur un coup d'horloge, ces portes doivent être constituées de gros transistors pour charger les lignes Lo à Lm rapidement, d'où une forte consommation pour les portes logiques 4. En comparaison, les portes inverseuses 2 peuvent être plus petites, les capacités à ajouter pour modifier leurs pentes en sortie en seront d'autant plus faibles. La figure 9 est un graphe qui illustre la consommation de courant des portes inverseuses 4 du circuit électronique 1 en fonction du temps lors d'une période d'horloge, dans un exemple d'une variable de 4 bits (m = 3) et de 3 condensateurs (n = 3). Lors d'une exécution El, les signaux de commande des interrupteurs 3 sont : A0=000 ; A1=011 ; A2=001 ; A3=111. Les pics de consommation de courant successifs correspondent donc aux bits BitO, Bit2, Bitl et Bit3. Lors d'une autre exécution E2, les signaux de commande des interrupteurs 3 sont : A0=001 ; A1=111 ; A2=011 ; A3=000. Les pics de consommation de courant successifs correspondent donc aux bits Bit3, BitO, Bit2 et Biti. En comparant la figure 9 avec la figure 3, on remarque principalement deux différences. Premièrement, comme chaque porte logique commute à un instant différent de la période d'horloge, la consommation de courant du circuit électronique 1 présente 4 pics de faible amplitude (par comparaison à l'unique pic de forte amplitude de la figure 3). La consommation de courant (signal SA) est plus étalée dans le temps et est par conséquent moins visible par un attaquant car plus sujette au bruit. Deuxièmement, comme on modifie aléatoirement l'ordre de commutation des portes logiques correspondant aux différents bits, les pics successifs ne correspondent pas aux mêmes bits lors de l'exécution El et lors de l'exécution E2. La forme du signal d'analyse SA est donc modifiée d'une exécution à l'autre, ce qui rend difficile pour un attaquant de se synchroniser lorsqu'une technique de désynchronisation du type décrit en introduction est mise en oeuvre. De plus, même s'il parvient à se synchroniser, une mesure réalisée à un instant tO ne peut viser qu'un des 4 bits de la variable, ce bit n'apparaissant à l'instant tO qu'une fois sur 4 en moyenne. L'attaque demandera donc 42 = 16 fois plus de mesures. Enfin, l'unité de commande 6 du circuit électronique 1 est réalisée avec uniquement une porte inverseuse par bit, des condensateurs et des interrupteurs. Elle ne nécessite pas de nombreux circuit de retard ni de multiplexeur ou de démultiplexeur. Il peut donc s'agir d'une unité particulièrement simple et peu couteuse. On a représenté une ligne de bus pilotée par une succession de deux portes inverseuses, à savoir un porte d'entrée (porte inverseuse 2) et une porte logique 4. En variante, l'invention peut être mise en oeuvre avec une succession de plus de deux portes inverseuses de tailles croissantes, les condensateurs étant placés en sortie de la première porte (la plus petite). Dans ce cas, les retards introduits sont propagés par les portes suivantes. REVENDICATIONS1. Circuit électronique (1) comprenant au moins un composant apte à exécuter des instructions de manière cadencée par un signal d'horloge (CLK), au moins une desdites instructions comprenant la commande, lors d'une période du signal d'horloge, de la commutation de m + 1 portes logiques (4) en fonction d'une variable composée de m + 1 bit, m étant un nombre naturel, dans lequel une unité de commande (6) est configurée pour commander la commutation desdites m + 1 portes logiques (4) à des instants différents de ladite période d'horloge, caractérisé en ce que ladite unité de commande (6) comprend m + 1 portes d'entrée (2), chaque porte d'entrée (2) recevant en entrée un desdits bits et étant reliée en sortie à l'une desdites portes logiques (4), une charge réactive qui dépend d'un signal de commande (A0,..., Am) pouvant être modifié aléatoirement d'une exécution à l'autre étant reliée entre la sortie de la porte inverseuse (2) et l'entrée de la porte logique (4). 2. Circuit électronique selon la revendication 1, dans lequel, pour chaque bit, la charge réactive comprend une pluralité de condensateur (C) et une pluralité d'interrupteurs (23) dont l'état dépend dudit signal de commande (A0,..., Am). 3. Circuit électronique selon l'une des revendications 1 et 2, dans lequel chacune desdites portes logiques (4) est une porte qui pilote une ligne (L0,..., Lm) de bus (5). 4. Circuit électronique selon l'une des revendications 1 à 3, dans lequel lesdites portes d'entrée sont des portes inverseuses. 5. Circuit électronique selon l'une des revendications 1 à 4, comprenant des moyens pour modifier de manière aléatoire la période dudit signal d'horloge. 6. Circuit électronique selon l'une des revendications 1 à 5, dans lequel ledit composant est configuré pour exécuter de manière aléatoire au moins une instruction prédéterminée. 7. Circuit électronique selon l'une des revendications 1 à 5, dans lequel ledit composant est un microcontrôleur. 8. Carte à circuit intégré incluant un circuit électronique (1) selon l'une des revendications 1 à 7.