Brevet FR2824648A1 — publié le 20021115

PCI. PROCEDE DE PROTECTION D'UN CIRCUIT LOGIQUE CONTRE DES ATTAQUES EXTERIEURES, ET UNITE LOGIQUE CONTENANT UN CIRCUIT LOGIQUE A PROTEGER CONTRE DES ATTAQUES EXTERIEURES La présente invention concerne un procédé de protection d'un circuit logique, et par exemple d'un processeur contre des attaques extérieures. Elle s'applique notamment, mais non exclusivement, aux microprocesseurs se trouvant dans les puces des cartes à puce. La présente invention concerne également une unité logique contenant un circuit logique à protoger contre des attaques extérieures, se trouvant par exemple au sein de la puce d'une carte à puce. De manière connue, le microprocesseur incorporé dans la puce d'une carte à puce utilise lors de son fonctionnement un certain nombre de programmes. Dans ce fonctionnement, il utilise des données provenant par exemple de l'extérieur, et des données se trouvant dans la mémoire de la carte. Certaines de ces données peuvent être des données confidentielles; c'est le cas notamment du code secret de la carte. Or, durant l'exécution d'un progra m me pa r le microprocesseur, ces don nées ci rcu lent sur des bus et sont donc plus aisément détectables. Afin de protéger ces données, on peut utiliser différentes méthodes de protection. L'une de ces méthodes connues, appelée " scrambling de bus >> repose sur le chiffrage des donnces qui circulent sur les bus, ce qui assure un brouillage de bus et donc une protection supplémentaire de ces dernières. Cependant, une telle méthode est encore vulnérable. En effet, le microprocesseur et les circuits logiques contenus dans la puce sont constitués de circuits monolithiques dont les fonctionnalités sont figées une fois pour toutes en sortie de fabrication. Ces circuits monolithiques comprennent des cellules logiques, telles que des portes, des bascules, des F:\Salle\FP000003\PREMDEP\ADMIN\Texte_déposé.doc entrées-sorties, etc. .., et des connexions reliant ces cellules, ces connexions étant donc figées en sortie d'usine. Par conséquent, la puissance consommée par ces circuits lors de chaque utilisation (c'est-à-dire lors de chaque exécution d'une instruction) ne dépend que des données échangées entre les différentes cellules. Ainsi, pour détecter ces données, il suffit de solliciter le circuit au moyen d'un message d'instruction puis d'effectuer une analyse de la puissance consommée lors de l'exécution de cette instruction par le circuit. En répétant plusieurs fois cette opération et en corrélant les données obtenues à chaque fois, on augmente la quantité d'information concernant une donnée observoe et l'on fi nit par la reconstituer. U ne tel le méthode de détection est connue sous le nom de Simple Power Analysis ou Differential Power Analysis, et décrite notamment dans le document WO 99/63693. Les données contenues dans la mémoire de la carte, et plus particulièrement les données confidentielles, doivent donc être protégées de manière plus efficace contre des attaques extérieures visant à les récupérer pour ensuite utiliser la carte de manière frauduleuse. Par ailleurs, I'analyse microscopique d'un circuit logique à partir de celle des bus de connexion de ce dernier, facilement reconnaissables sur le silicium, conduit à la détection du fonctionnement logique de ce circuit, et permet notamment de le copier plus facilement. Même si des techniques de brouillage de bus sont utilisées pour empêcher ce genre d'analyses, appelées aussi attaques invasives, elles ne sont pas assez efficaces. La présente invention a donc pour but de mettre au point un procédé de protection d'un circuit logique contre des attaques extérieures, qui assure une protection plus effficaces que ceux de l'art antérieur contre les attaques par analyse de consommation ou les attaques invasives. La présente invention propose à cet effet un procédé de protection d'un circuit logique contenu dans une unité logique contre des attaques F:\Salle\FP000003\PREMDEP\ADMIN\Texte_déposé.doc extérieures à ladite unité, ledit procédé comprenant les opérations suivantes: À génération au sein de ladite unité d'une instruction de programmation d'un circuit logique programmable contenu dans ledit circuit logique À chargement au sein dudit circuit logique programmable, en réponse à ladite instruction de programmation, d'une configuration de programmation spécifique choisie parmi une pluralité de configurations de programmation distinctes les unes des autres À programmation dudit circuit logique programmable selon ladite configuration spécifique. Un circuit logique programmable est un circuit intégré qui n'a pas de fonctionnalité figée en sortie de fabrication. C'est seulement après la fabrication, lors d'une phase de programmation, que ce circuit prend sa fonctionnalité. Cette programmation peut, de manière générale pour les circuits logiques programmables, être effectuée dans un programmateur, ou, comme c'est le cas selon la présente invention, " in situ ". Cette programmation modifie les connexions reliant les cellules logiques du circuit entre elles. Les circuits logiques programmables rendant possible ce type de programmation (" in situ ") par chargement depuis l'extérieur du circuit sont notamment les circuits logiques programmables utilisant la technologie de programmation SRAM (Static Random Access Memory). Selon l'invention, pour protéger un circuit logique contre des attaques extérieures telles que celles décrites plus haut, on incorpore à ce dernier un circuit logique programmable. Une instruction de programmation du circuit logique programmable est générée et envoyée à ce dernier, de sorte qu'il va chercher une configuration de programmation parmi un certain nombre de configurations de programmation possibles, par exemple embarquées au sein d'une carte à puce, et se pogramme selon cette configuration. F:\Saie\FP000003\PREMDEP\ADMIN\Texte_déposé.doc On appelle configuration de programmation dans le cadre de la présente invention la programmation des cellules logiques (fonctions logiques simples, multiplexeurs, bascules, entrées-sorties, etc...) du circuit logique programmable, afin de leur donner une fonctionnalité, ainsi que celle de la matrice d'interconnexion entre ces cellules. Ainsi, selon l'invention, le circuit logique à protéger comporte au moins une partie qui n'est pas programmée à l'avance, c'est-à-dire qui n'est donc pas figée à l'avance, et se programme selon une configuration donnée, embarquée. La configuration et le profil de puissance du circuit Jo programmable changent donc réqulièrement. Lors d'une tentative d'attaque extérieure par analyse de la puissance consommée, cette dernière, qui dépend de la configuration du circuit logique, pourra donc étre différente à chaque fois. Ainsi, on rend beaucoup plus diffficile et longue la recherche des informations confidentielles contenues dans une carte contenant un tel circuit logique. Par ailleurs, lorsque le circuit est au repos, c'est-à-dire qu'il n'est pas alimenté, sa partie circuit logique programmable se comporte comme une bo^'te noire (les cellules logiques ne sont pas reliées entre elles), de sorte qu'aucune attaque invasive n'est possible. En effet, il n'est alors pas possible, par simple analyse des circuits connectés aux bus, de retrouver les fonctions logiques du circuit. Selon un mode de réalisation de l'invention, I'opération de génération d'une instruction de programmation peut étre effectuée à des instants définis par l'unité logique, par exemple de manière périodique suivant un signal d'horloge (provenant par exemple d'une horloge de l'unité logique), ou de manière aléatoire ou quasi-aléatoire (en utilisant par exemple une focntion Random ou Pseudo-Random), ou encore à chaque mise sous tension du circuit logique à protéger. Ainsi, la génération des instructions de programmation est décidée de manière autonome par l'unité logique, et n'est pas programmée de l'extérieur, ce qui rend les attaques encore plus difficiles. F:\Sae\FP000003\PREMDEP\ADMIN\Texte_déposé.doc En outre, I'unité logique peut étre programmée de sorte que le procédé selon l'invention est mis en _uvre lors de chaque réception d'une instruction devant mettre en _uvre le circuit logique à protéger, et avant que ce dernier ne soit activé. Ainsi, à chaque utilisation du circuit logique, consécutive à la réception d'une instruction extérieure, la puissance consommée par ce circuit logique est différente, son implémentation logique étant différente, et une protection du circuit logique contre une attaque par analyse de la puissance consommée est ainsi réalisée. De manière avantageuse, le choix de la configuration de programmation spécifique parmi les configurations configurations possibles peut être effectué de manière aléatoire lors de chaque mise en _uvre du procédé selon l'invention. On accroît ainsi la protection du circuit logique. La présente invention concerne également une unité logique comprenant: 15. un processeur : À un circuit logique protégé contre des attaques extérieures à ladite unité À une mémoire caractérisée en ce que ledit circuit logique comprend un circuit logique programmable contenant des cellules logiques et des connexions reliant lesdites cellules logiques, en ce que ladite mémoire contient une pluralité de configurations possibles pour ledit circuit logique programmable, et en ce que ladite unité comprend également des moyens pour générer des instructions de programmation dudit circuit logique programmable. Une telle unité permet de mettre en _uvre le procédé selon l'invention énoncé ci-dessus. Selon l'invention, cette unité peut en outre comprendre un générateur de nombres aléatoires, qui accro'^t la protection puisque chaque configuration est alors choisie de manière aléatoire et donc très difficilement prédictible. F:\Salle\FP000003\PREMDEP\ADMIN\Texte déposé.doc Le circuit logique à protéger peut être contenu notamment dans le processeur de cette unité. On protoge ainsi de manière accrue certaines fonctions du processeur. Le circuit logique à protéger peut également être contenu au sein d'un dispositif de sécurisation déjà présent au sein de l'unité logique, comme par exemple un crypto-coprocesseur. De manière avantageuse, le circuit logique programmable est un FPGA (Field Programmable Gate Array). Selon l'invention, le circuit logique programmable utilisé peut également être re-programmable. Ceci permet de modifier sa configuration lors de chaque exécution d'une instruction extérieure. Dans ce cas, on choisit par exemple un circuit logique programmable à EPROM (Erasable Programmable Read Only Memory) et/ou à SRAM. Une application possible de l'invention se situe dans le domaine des cartes à puce. Ainsi, une unité selon l'invention peut être contenue dans la puce d'une telle carte. - D'autres caractéristiques et avantages de l'invention appara'^tront dans la description ci-après d'un mode de réalisation de l'invention, donné à titre illustratif et nullement limitatif. La figure unique représente de manière schématique une carte à puce contenant un dispositif de protection fonctionnant selon le procédé de l'invention. On voit dans cette figure une unité logique sous forme de puce 1 pour carte à puce, comprenant: un microprocesseur 10, 25. un circuit logique 11 à protéger, contenant un circuit logique programmable 12, tel qu'un FPGA (Field Programmable Gate Array) par exemple, une mémoire 13 contenant notamment une pluralité de configurations possibles C1 à C4 pour le circuit logique programmable 12 F:\SaIe\FP000003\PREMDEP\ADMIN\Texte_cléposé.doc un générateur 14 de nombres aléatoires (qui génère de manière aléatoire un index de configuration) une interface 15 de la carte 1 avec l'extérieur un circuit d'horloge 16. Le circuit logique 11 à protéger peut être tout circuit de la carte, et par exemple tout ou partie d'un crypto-coprocesseur (tel que celui décrit dans le document mentionné plus haut), le microprocesseur lui-même ou tout autre circuit que l'on souhaite protéger contre des attaques extérieures. Un circuit FPGA 12 utilisé dans le mode de réalisation présenté sur la figure en tant circuit logique programmable comprend, de manière connue et non représentée, une pluralité de cellules logiques telles que des portes, des bascules, des entrées-sorties, etc... et des connexions reliant entre elles ces cellules logiques. De tels circuits sont classiques et commercialisés à l'heure actuelle par de nombreuses sociétés. Le FPGA 12 est re-programmable. On explique à présent le fonctionnement de la carte à puce 1 et la manière avec laquelle le circuit logique 11 à protéger est protégé selon l'invention. De manière périodique, en fonction notamment du signal d'horloge émis par le circuit d'horloge 16, le microprocesseur 10 génère une instruction de programmation du FPGA 12. Cette instruction de programmation est envoyée au FPGA 12 et en même temps au générateur de nombres aléatoires 14. Ce dernier pointe alors, selon le nombre aléatoire généré, sur l'une des configurations C1 à C4, par exemple sur la configuration C1. Le FPGA 12 va ensuite (ou en parallèle) chercher sa configuration au sein de la mémoire 13, en suivant le pointage généré par le générateur de nombres aléatoires 14. Dans l'exemple choisi, le FPGA 12 resoit donc l'instruction de se configurer selon la configuration C1, et exécute cette instruction de sorte que ses cellules logiques sont maintenant reliées et programmées selon la configuration C1. F: \Sale\FP00000:3\PREM DEP\ADMI N\Texte_déposé.cloc Dans cet exemple, on a décrit la génération par le microprocesseur d'une instruction de programmation du FPGA 12 de manière périodique en fonction d'un signal d'horloge. Ceci permet au FPGA 12 d'être reprogrammé par " décision " interne à la puce, sans l'intervention d'aucune instruction extérieure de programmation, et rend donc le procédé selon l'invention très efficace. Le même résultat peut être obtenu en programmant par exemple à l'avance le microprocesseur 10 pour qu'il génère des instructions de programmation du FPGA 12 à des instants prédéfinis, ou à des instants aléatoires ou quasi-aléatoires. On peut aussi prévoir que chaque mise sous tension du microprocesseur 10 entrane la génération par ce dernier d'une instruction de programmation du FPGA 12. Par ailleurs, on peut encore prévoir que lorsqu'une instruction provenant de l'extérieur de la carte à puce 1 est transmise à cette dernière par l'intermédiaire de l'interface 15 et doit être exécutée par le circuit logique 11, le microprocesseur 10 génère aussi une instruction de programmation du FPGA 12 et le procédé selon l'invention est mis en _uvre avant que l'instruction provenant de l'extérieur de la carte soit exécutée. Lorsqu'une autre instruction destinée à être exécutée par la carte 1 est transmise à cette dernière par l'intermédiaire de l'interface 15, le procédé ci-dessus se reproduit, et ainsi de suite. Grâce à l'utilisation du générateur de nombre aléatoires 14, la configuration du FPGA 12 change de manière aléatoire lors de chaque instruction à exécuter par le cIrcuit logique 11. De la même manière, le circuit d'horloge peut envoyer directement au FPGA 12 et au générateur de nombres aléatoires 14 une instruction de programmation, soit de fason périodique (en fonction par exemple de la fin de comptage d'un timer), soit en fonction de la détection d'une situation particulière dans le circuit 11 à partir de l'état de signaux internes, soit en F:\Salle\FP000003\PREMDEP\ADMIN\Texte_déposé.doc : -% fonction d'un reset, soit encore en fonction de la réception d'une commande particulière venue de l'extérieur. Ainsi, comme expliqué plus haut, des attaques extérieures par analyse de la consommation du circuit logique li sont rendues très difficiles du fait du changement quasiment non prédictible de la configuration du FPGA 12 que contient ce dernier. Par ailleurs, il est à noter que lorsque le FPGA 12 n'est pas sous tension, c'est-à-dire lorsqu'il n'est sollicité par aucune instruction extérieure, les connexions entre ses cellules logiques sont inexistantes, de sorte qu'il appara^'t comme une bo^'te noire (on dit aussi " mer de portes ") et rend donc impossibles les attaques invasives. Il doit alors être reprogrammé lors de chaque mise sous tension. C'est le cas notamment lorsque la technologie SRAM est utilisée dans le FPGA. Bien entendu, le mode de réalisation qui vient d'être décrit ne constitue qu'un exemple d'application du procédé selon l'invention, et l'on pourra remplacer tout moyen par un moyen équivalent sans sortir du cadre - de l'invention. Notamment, on pourra remplacer le générateur de nombres aléatoires par une programmation prédéfinie de la suite des configurations que le circuit logique programmable doit adopter. Par ailleurs, les instructions de programmation envoyées au circuit logique programmable peuvent provenir du microprocesseur, ou d'une fonction logique embarquée dans la carte, dite générateur d'instructions de programmation 17, détectant une information circulant dans la carte et agissant de manière autonome. Le circuit logique programmable selon l'invention peut être incorporé dans toute zone sensible de la carte, que l'on veut protéger. Enfin, le circuit logique programmable utilisé selon l'invention peut être choisi parmi tout type de circuit logique programmable connu, comme F:\Salle\FP000003\PREMDEP\ADMIN\Texte déposé.doc notamment les CPLD (Complex Programmable Logic Device), SPLD (Simple Programmable Logic Device), PLA (Programmable Logic Array). Tout autre type de circuit logique programmable que ceux mentionnés cidessus pout également étre utilisé dans le cadre de I'invention. Enfin, on pourra remplacer tout moyen par un moyen équivalent sans sortir du cadre de l'invention. if.. .. F:\Salle\FP000003\PREMDEP\ADMIN\Texte déposé.doc REVEN DICATIONS l. Procédé de protection d'un circuit logique (11) contenu dans une unité logique (1) contre des attaques extérieures à ladite unité, ledit procédé comprenant les opérations suivantes: génération au sein de ladite unité (1) d'une instruction de programmation d'un circuit logique programmable (12) contenu dans ledit circuit logique () chargement au sein dudit circuit logique programmable (12), en réponse à ladite instruction de programmation, d'une configuration de programmation spécifique (CI) choisie parmi une pluralité de configurations de programmation distinctes les unes des autres (C1,..., C4) programmation dudit circuit logique programmable (12) selon ladite configuration spécifique (C1). 2. Procédé selon la revendication caractérisé en ce que l'opération de génération d'une instruction de programmation est effectuée à des instants définis par ladite unité logique (). 3. Procédé selon la revendication 2 caractérisé en ce que l'opération de zo génération d'une instruction de programmation est effectuée de manière périodique ou de manière aléatoire ou quasi-aléatoire, ou encore à chaque mise sous tension dudit circuit logique. 4. Procédé selon l'une des revendications 1 à 3 caractérisé en ce qu'il est effectué lors de chaque réception par ledit circuit logique (11) d'une instruction extérieure audit circuit logique (11) à exécuter par ledit circuit logique (11), avant l'exécution de ladite instruction extérieure. F:\Salle\FP000003\PREMDEP\ADMIN\Texte déposé.doc 5. Procédé selon l'une des revendications 1 à 4 caractérisé en ce que le choix de ladite configuration spécifique est effectué de manière aléatoire lors de chaque mise en _uvre dudit procédé. 6. Unité logique (1) comprenant: À un processeur (10) À un circuit logique (11) protégé contre des attaques extérieures à ladite unité (1) À une mémoire (13) caractérisoe en ce que ledit circuit logique (11) comprend un circuit logique programmable (12) contenant des cellules logiques et des connexions reliant lesdites cellules logiques, en ce que ladite mémoire (13) contient une pluralité de configurations possibles (C1,..., C4) pour ledit circuit logique programmable (12), et en ce que ladite unité (1) comprend également des moyens (10, 16, 17) pour générer des instructions de programmation dudit circuit logique programmable (12). 7. Unité selon la revendication 6 caractérisée en ce qu'elle comprend en outre un générateur de nombres aléatoires (14). 8. Unité selon l'une des revendications 6 ou 7 caractérisée en ce que ledit circuit logique (11) est contenu dans ledit processeur (10). 9. Unité selon l'une des revendications 6 à 8 caractérisée en ce que ledit circuit logique programmable (12) est un FPGA (Field Programmable Gate Array). 1O. Unité selon la revendication 9 caractérisée en ce que ledit FPGA est du type à EPROM et/ou à SRAM. 11. Unité selon l'une des revendications 6 à 10 caractérisé en ce que ledit circuit logique programmable (12) est re-programmable. F:\Salle\FP000003\PREMDEP\ADMIN\Texte_déposé.doc 12. Unit sewn lane des ndabons 6 11 racr6e en qua ledge gn6[ateur d'inrucons de programmaBon Cat ledlt pFocesseur (10). 13. Unitd salon [une des FevendicaBons 6 12 caractrise en ce qu'eLe apparent puce done came puce. a