Brevet FR2871310A1 — publié le 20051209

CIRCUIT LOGIQUE CONFIGURABLE RESISTANT A UNE ATTAQUE DPA La présente invention se rapporte à des circuits logiques configurables, tels que des FPGA (FPGA pour field programmable gate array ou réseau de grilles programmables de champ), et leur utilisation dans des applications critiques du point de vue de la sécurité. De nos jours, de nombreux traitements de la vie quotidienne sont commandés et influencés, respectivement, par des circuits intégrés. Des circuits intégrés forment, par exemple, une partie significative des systèmes io électroniques dans une voiture pour commander l'injection de carburant, la libération du coussin gonflable et de nombreux autres systèmes. De nos jours, les circuits intégrés jouent également un rôle important en liaison avec des transferts d'argent sans liquide. Des cartes de paiement, des cartes à puce ou des cartes intelligentes sont des exemples de l'utilisation des circuits intégrés en liaison avec des transferts d'argent sans liquide. Les circuits intégrés qui y sont utilisés traitent des données secrètes qui doivent être connues, par exemple, uniquement de la personne qui a délivré la carte et qui ne doivent pas être connues par un tiers, telles qu'une clé de cryptographie ou analogue. Un inconvénient des cryptocontrôleurs est qu'ils sont soumis à des attaques de tiers après la délivrance de la carte. L'une de ces attaques est, par exemple, l'attaque DPA (DPA pour differential power analysis ou analyse de puissance différentielle). Dans une attaque DPA sur un algorithme exécuté sur un circuit intégré, l'attaquant tire des conclusions concernant les données traitées, telles que la clé cryptographique, à partir de variations basses dépendant des données de la consommation de puissance du circuit. En fonction de la technologie d'intégration utilisée du circuit, les variations qui dépendent des données de la consommation de courant du - circuit proviennent, par exemple, des opérations de commutation des transistors intérieurs du circuit. Dans le cas d'une technologie CMOS, par exemple, chaque opération de commutation conduit à une impulsion de courant, dont plusieurs d'entre elles chevauchent alors le profil de consommation de courant globale du circuit. Afin d'empêcher qu'une attaque DPA soit couronnée de succès, une dépendance en fonction des données de la consommation de courant doit être fournie. Ceci est effectué dans des cryptocircuits câblés, principalement par l'utilisation de ce que l'on appelle des logiques à rail double, où il est garanti déjà sur le niveau de bit unique que la consommation de puissance globale est indépendante des données à traiter, telles que la clé io cryptographique. Ceci est effectué en codant chaque bit logique à l'intérieur du circuit intégré en tant qu'une paire de valeurs sur deux lignes et rails différents, respectivement, d'où le nom logique à rail double. Un bit de la valeur 1 est, par exemple, codé par une ligne qui est dans un état de logique haut et l'autre ligne dans un état de logique bas, et vice versa, un bit de la valeur 0 est codé par une ligne qui est dans un état de logique bas et l'autre dans un état de logique haut. Le résultat d'une fonction logique de deux bits codés à rail double est de nouveau un bit codé à rail double. Ces fonctions logiques plus petites se combinent alors à un cryptocontrôleur ou à un cryptoprocesseur à l'intérieur d'un cryptocontrôleur pour mettre en oeuvre un algorithme cryptographique, en maintenant la caractéristique décrite. En raison du codage des bits individuels dans des états logiques opposés respectivement, chaque bit conduit à au moins une opération de commutation lorsque la valeur de bit est modifiée. Au cours du temps, de plus en plus de variations d'attaque ont été développées pour des cryptocontrôleurs. De manière correspondante, le nombre de mécanismes de protection à mettre en oeuvre dans des cryptocontrôleurs a augmenté. L'effet est que les cryptocontrôleurs sont uniquement difficiles à mettre en oeuvre sur des petites zones. Dans des articles à production de masse, tels que des circuits intégrés sur cartes, l'effort pour intégrer tous les mécanismes de sécurité dans un câble et un circuit intégré est toujours intéressant en raison du grand nombre. De nos jours, jusqu'à la délivrance de la carte, un cryptocontrôleur terminé passe simplement par des transferts de logiciel après sa production matérielle. D'abord, par exemple, un système de fonctionnement est chargé dans le cryptocontrôleur. Dans le cas d'une carte à puce à multiapplication, ce système de fonctionnement permet, par exemple, que plusieurs applications puissent s'effectuer sur le cryptocontrôleur sans représenter des risques de sécurité mutuels. Un délivreur de carte peut alors transférer ses applications sous la forme de logiciel sur le cryptocontrôleur et émettre en sortie les cartes s à puce terminées. II serait maintenant souhaitable, pour un producteur de cryptocontrôleurs, de mettre en oeuvre des parties de circuit logique configurables à l'intérieur du cryptocontrôleur, par exemple sous la forme d'un FPGA. Une telle possibilité permettrait au producteur de cryptocontrôleurs io d'offrir une possibilité à des délivreurs de cartes d'adapter des parties des cryptocontrôleurs, qui ont jusqu'à maintenant été câblés en raison des exigences de performance, à ses besoins adaptés de manière spécifique. L'intégration possible de FPGA dans des circuits intégrés à carte à puce ou de sécurité a, par exemple, été suggérée dans DE 10105987 Al, dont la demanderesse est également la demanderesse de la présente demande. Le dispositif de traitement de données qui y est suggéré comporte un circuit logique programmable de fonctions avec une interface de programmation. L'interface de programmation est protégée d'un accès non autorisé par une unité de commande d'autorisation, de sorte qu'une adaptation de fonctions adaptées sur mesure de dispositifs à semi-conducteur peut être effectuée, mais une modification ultérieure par des personnes non autorisées est effectivement empêchée. Cependant, dans de nombreuses applications de sécurité, la technique de DE 10105987 Al d'intégrer un FPGA dans un circuit intégré de carte à puce rencontre des limites en raison des exigences de sécurité élevées. Pour de nombreuses applications critiques du point de vue de la sécurité, des mises en oeuvre FPGA antérieures ne sont pas adaptables, puisqu'elles ne sont pas résistantes à des attaques DPA, c'est-à-dire qu'elles ne sont pas sûres vis-à-vis d'une attaque avec les procédés de l'analyse de puissance différentielle. De cette manière, des mises en oeuvre actuelles de circuit logique reconfigurable, telles que des FPGA, peuvent à peine être utilisées sur des circuits intégrés à carte à puce ou à sécurité, puisqu'ici une sécurité vis-à-vis des attaques DPA est presque toujours exigée. En outre, l'intégration d'un FPGA commun dans une carte à 35 puce est décrite dans DE 10040854 A1, une technique de mise en oeuvre qui par conséquent a les mêmes inconvénients que dans le document DE 10105987 Al mentionné précédemment. FR 2824648 décrit l'intérêt d'un FPGA classique en ce qu'il décrit qu'une fonction égale peut être configurée sur un FPGA d'une manière légèrement différente. Ainsi, jusqu'à maintenant, aucun système logique reconfigurable, tel qu'un FPGA, n'a été intégré dans des circuits intégrés de cartes à puce ou de sécurité. Toute fonction doit déjà être déterminée à l'avance dans la conception du circuit intégré et doit être mise en oeuvre sous une forme appropriée qui est sûre vis-à-vis des attaques DPA. Une reconfiguration to ultérieure de circuits intégrés à carte à puce antérieurs n'est pas possible, à peine une modification logicielle. Il est ainsi souhaitable d'avoir un circuit logique reconfigurable qui peut être intégré dans des cryptocontrôleurs et des circuits intégrés de sécurité, respectivement, en remplissant les exigences de résistance visà-vis ts d'attaques DPA de la plupart des cryptoapplications. Dans un papier maître intitulé "An investigation of differential power analysis attacks on FPGA-based Encryption systems" ou "Une enquête sur les attaques par analyse de puissance différentielle sur des systèmes de cryptage basés sur des FPGA" par Larry T. McDaniel III, des attaques DPA sur des systèmes de cryptage fondés sur des FPGA sont décrites de manière générale. L'objectif de la présente invention est de mettre à disposition un circuit logique configurable plus résistant aux attaques DPA. Cet objectif est atteint par un circuit logique configurable ayant une pluralité de blocs logiques et une structure de connexion par l'intermédiaire de laquelle les blocs logiques peuvent être interconnectés, caractérisé en ce que les blocs logiques sont mis en oeuvre dans une technique à rail doublle. Une idée centrale de la présente invention est qu'un circuit logique configurable plus sûr ou plus résistant aux attaques DPA peut être obtenu en mettant en oeuvre des blocs logiques, qui sont compris dans le circuit logique configurable, ou dont le circuit logique configurable est construit, respectivement, suivant une technique à rail double. N'importe quelle configuration possible du circuit logique configurable est alors, en tant que telle, plus résistante aux attaques DPA, puisqu'il traite toujours toutes les données sous forme codée à rail double. L'intégration d'un circuit logique configurable suivant l'invention de ce genre résistant à des attaques DPA dans un cryptocontrôleur et un circuit intégré à carte à puce ou de sécurité, respectivement, fournit plusieurs avantages, comparée à des solutions de cryptocontrôleurs câblés classiques. Une fonction d'adaptation aux besoins peut être réalisée d'une manière beaucoup plus efficace du point de vue de la puissance et beaucoup plus efficace du point de vue de la performance sur un circuit logique configurable résistant aux DPA, tel qu'un FPGA, réalisé sur un cryptocontrôleur, que cela Io n'est possible par logiciel. A l'inverse, la possibilité de réaliser des circuits résistant à l'attaque DPA de circuits intégrés de cartes à puces ou de sécurité en tant que FPGA promet une réalisation bien moins coûteuse de circuits pouvant être adaptés qu'il n'est possible pour un circuit câblé. Conformément à un mode de réalisation préféré de la présente invention, le circuit logique peut non seulement être configuré une fois, mais est reconfigurable. Une telle possibilité de reconfiguration d'un circuit logique reconfigurable réalisée sur un cryptocontrôleur permet à un délivreur de cartes ou à un client d'effectuer une reconfiguration également dans le champ ou sur site, respectivement. En outre, le savoirfaire du client est généralement protégé dans le cas d'une configurabilité, car même le producteur de la carte à puce ne connaît pas la configuration dans laquelle le client a réglé le circuit logique configurable. Même dans toutes les puces d'une série, la même fonction peut être configurée d'une manière légèrement différente sur le circuit logique configurable, tel que le FPGA, intégré dans la puce. Un avantage supplémentaire de la présente invention est que, dus à sa réalisation uniforme, des circuits logiques configurables, tels que des FPGA, sont sûrs par rapport à une étude inverse classique de la disposition, puisque le circuit réalisé est simplement dans l'information de configuration qui ne fait pas partie de la disposition. Comme développement de ce principe, des circuits logiques configurables conformes à la présente invention, tels qu'en particulier ceux intégrés dans des cartes à puce, pourraient être reconfigurés de manière sporadique dans le champ, de sorte que toujours la même fonction et le même algorithme, respectivement, soient réalisés par le circuit logique configurable, mais toujours d'une manière différente. Des possibilités, par conséquent, sont, par exemple, des sessions terminales où les cartes à puce communiquent avec les terminaux. D'autre part, un producteur de cartes à puce peut offrir de nouvelles fonctions résistant à l'attaque DPA, sans concevoir une nouvelle puce ou produire de nouveaux masques. Ainsi, il est également utile d'un point de vue économique pour des volumes plus petits qui ne justifieraient pas une conception de puce individuelle. Un avantage supplémentaire est la disponibilité très rapide de puces avec des extensions adaptées sur mesure. Des modes de réalisation préférés de la présente invention sont décrits ci-dessous en référence aux dessins annexés. Ceux-ci représentent: à la Figure 1 un schéma synoptique d'un FPGA conforme à un mode de réalisation de la présente invention; à la Figure 2 un schéma synoptique d'un cryptocontrôleur avec un FPGA intégré conformément à un mode de réalisation de la présente 15 invention; et à la Figure 3 une partie d'un schéma synoptique d'un FPGA conforme à un autre mode de réalisation de la présente invention. Le FPGA indiqué à la Figure 1 de manière générale par la référence numérique 10 comporte trois interfaces vers l'extérieur, à savoir une interface 12 d'entrée, une interface 14 de sortie et une interface 16 de programmation et de configuration, respectivement. Par l'intermédiaire des interfaces 12 et 14 d'entrée et de sortie, le FPGA 10 peut recevoir des données de l'extérieur et les émettre en sortie en direction de l'extérieur en fonction des données entrées et en fonction de la configuration réglée. Les interfaces 12 et 14 peuvent être des interfaces série ou parallèles, des interfaces fonctionnant de manière synchrone ou asynchrone ou analogues. L'interface 16 de programmation sert à régler la configuration du FPGA 10, comme cela est décrit ci-dessous plus en détail. A l'intérieur, le FPGA 10 est agencé suivant plusieurs unités logiques, ce que l'on appelle des blocs 18a, 18b, 18c et 18d logiques. Simplement à titre d'exemple, quatre blocs 18a - 18d logiques sont représentés à la Figure 1. Cependant, le FPGA 10 peut également avoir n'importe quel nombre de blocs 18 - 18d logiques. En outre, on suppose simplement à titre d'exemple, à la Figure 1, que les blocs 18a - 18d logiques sont structurés de la même manière à l'intérieur. Mais les blocs logiques du FPGA 10 pourraient également être variables. Les blocs 18a - 18d logiques représentent les unités les plus petites du FPGA 10. Parmi eux, peuvent être des blocs logiques qui sont configurables en leur fonction. A la Figure 1, il est supposé, à titre d'exemple, que les blocs 18a - 18d logiques sont tous les quatre configurables. Les blocs 18a - 18d logiques peuvent agir, par exemple, en tant que tables de consultation. La valeur n bit à une entrée n bit des blocs 18a - 18d logiques est utilisée comme indice dans un réseau de mémoire (non représentée) associé au bloc logique, et le résultat, à savoir la valeur qui y est io lue, est alors émise en sortie à une sortie m bit du bloc logique. Un bloc logique configurable peut également effectuer la fonction d'un multiplexeur qui sélectionne des bits d'une manière configurable à partir d'un signal d'entrée n bit à une entrée n bit du bloc logique, qu'il émet en sortie à la sortie m bit du bloc logique. A la Figure 1, il est supposé à titre d'exemple que les blocs logiques 18a - 18d ont une entrée à 2 bits pour recevoir les bits A et B et une sortie à 1 bit pour émettre en sortie le résultat C. D'autres granularités du FPGA 10 pourraient également être possibles, dans lesquelles la granularité indique la dimension et la complexité de ses blocs 18a - 18d logiques. En particulier, une entrée ayant plus de bits et une sortie ayant plus de bits ainsi qu'un comportement en stockage du bloc logique seraient possibles. Les blocs 18a - 18d logiques sont mis en oeuvre dans une technique à rail double. Cela signifie que tout bit entrant et sortant est codé à rail double. Ainsi, deux entrées existent pour chaque bit entrant, à savoir une entrée non inversée et une entrée inversée. Un bit entrant de la valeur 1 est, par exemple, égal à un état de logique haut à l'entrée non inversée et à un état de logique bas à l'entrée inversée. Un bit entrant de la valeur 0 sera alors, par exemple, égal à un état de logique bas à l'entrée non inversée et à un état de logique haut à l'entrée inversée. Comme cela a déjà été mentionné, il est supposé à titre d'exemple, à la Figure 1, que chaque bloc 18a - 18d logique reçoit deux bits et, par conséquent, chaque bloc 18a - 18d logique à la Figure 1 comporte deux paires d'une entrée non inversée et inversée, à savoir les entrées A et B non inversées et les entrées Â et B inversées. La même chose s'applique à un bit de sortie. Ainsi, conformément à la présente demande, un bloc logique doit être considéré comme mis en oeuvre suivant une technique à rail double lorsque des bits codés à rail double aux entrées résultent de nouveau en un bit codé en rail double à la sortie ou des sorties, respectivement, du bloc logique. Comme mentionné ci-dessus, les blocs 18a - 18d logiques de la Figure 1 ont simplement, à titre d'exemple, une sortie à 1 bit. De manière correspondante, ils comportent une sortie C non inversée et une sortie C inversée. Un bit codé à rail double est entré et sorti, respectivement, à chaque entrée et sortie inversée et non inversée, respectivement. Les blocs logiques (CLB) configurables et les blocs logiques io (PLB) programmables, respectivement, 18a - 18d peuvent être interconnectés et peuvent également être connectés à l'interface 12 d'entrée et à l'interface 14 de sortie par l'intermédiaire d'une structure 20 de connexion, qui est représentée schématiquement à la Figure 1 par des traits pointillés. Cela signifie que la structure 20 de connexion permet de connecter une paire respective d'entrée et de sortie non inversée et inversée, respectivement, et une entrée et sortie à 1 bit, respectivement, à un ou plusieurs d'une sélection des autres entrée et sorties à 1 bit, respectivement, du même et/ou d'autres blocs logiques. La structure 20 de connexion permet également d'appliquer les bits à l'interface 12 d'entrée dans une forme codée à rail double à certaines entrées des blocs 18a - 18d logiques et, d'une manière correspondante, à connecter les sorties de bits des blocs 18a - 18d logiques à des positions de bits correspondantes de l'interface 14 de sortie. Bien évidemment, il est possible que la structure de connexion ne permette pas de connecter chaque entrée des entrées 12, A et B à rail double, respectivement, à chaque sortie C à rail double, et vice versa, il ne sera pas possible de connecter chacune des sorties 14, C à rail double à chacune des entrées A, B à rail double. La structure 20 de connexion est configurable, de sorte qu'elle peut être ajustée pour savoir quelle entrée est connectée à quelle sortie. Par conséquent, la structure 20 de connexion comporte des conducteurs internes, qui chacun sont connectés à une entrée respective et à une sortie respective, respectivement, et à un rail respectif, respectivement, non inversé ou inversé, et des lignes de distribution. A la Figure 1, des conducteurs 22a, 22b, 22c et 22d pour la sortie de bits du bloc 18a logique et l'entrée B de bits du bloc 18c logique, ainsi que deux lignes 24a et 24b de distribution sont représentés à titre d'exemple. Des points d'interconnexion configurables et programmables (CIP et PIP, respectivement) sont à des points de noeud entre des conducteurs 22a - 22d et des lignes 24a - 24d de distribution, qui peuvent être commandés pour connecter un conducteur à une ligne de distribution d'une manière conductrice ou non. Quatre CIP 26a - 26d sont représentés à la Figure 1. Les CIP peuvent être conçus comme des transistors et également comme des fusibles ou des antifusibles. Les conducteurs, les lignes de distribution et les CIF' représentés sont simplement une petite découpe de la structure 20 de connexion. Ici, on suppose, à titre d'exemple, que les io transistors sont des CIP. Le FPGA 10 de la Figure 1 est à titre d'exemple un FPGA reconfigurable. Cela signifie qu'il peut être reconfiguré après une configuration. Pour mémoriser la configuration, le FPGA 10 comporte une mémoire 28. La mémoire 28 peut, par exemple, être une mémoire volatile ou non volatile. Des modes de réalisation à titre d'exemple pour la mémoire 28 comportent des RAM, des flashes ou des EEPROM. Comme indiqué par des flèches, des sorties de la mémoire 28 sont connectées aux blocs 18a - 18d logiques et la structure de connexion 20 pour faire passer des données de configuration mémorisées dans la mémoire 28 sous la forme de signaux de configuration sur des blocs 18a - 18d logiques et la structure 20 de connexion, respectivement, afin de les configurer de manière correspondante. Les données de configuration fournies dans la mémoire 28 peuvent être mémorisées de la même manière par l'intermédiaire de l'interface 16 de programmation qui est connectée à une entrée de la mémoire 28. Comme la structure du FPGA 10 de la Figure 1 a été décrite ci-dessus, un traitement de configuration sera décrit ci-dessous. Dans une configuration, d'abord les données de configuration et les données de programmation, respectivement, sont appliquées à l'interface 16 de programmation. Ces données de programmation sont alors mémorisées dans la mémoire 28 et passées vers les blocs 18a - 18d logiques et la structure 20 de connexion. Plus précisément, des bits individuels des données de programmation font commuter des transistors individuels dans les blocs 18a - 18d logiques pour qu'ils soient conducteurs ou non conducteurs. En ce qui concerne la structure 20 de connexion, des bits individuels des données de programmation font commuter, par exemple, les CIP 26a - 26d en tant que Io moyens de commutation de la structure 20 de connexion, pour qu'ils soient conducteurs ou non conducteurs. Ensuite, à cet instant, le FPGA 10 est configuré. Dans l'état configuré, appliquer un signal d'entrée à l'interface 12 d'entrée conduit à ce que le signal d'entrée qui est appliqué soit traité de manière appropriée par les blocs 18a - 18d logiques d'une manière déterminée par la configuration dans la mémoire 28, une valeur de sortie correspondante étant ainsi émise en sortie à l'interface 14 de sortie. Le traitement est résistant à l'attaque DPA, puisque tous les blocs logiques sont Io mis en oeuvre dans une technique à rail double, et les bits codés à rail double traités sont passés sous cette forme codée dans la structure 20 de connexion. Pour minimiser le nombre des bits de programmation des données de programmation et pour éviter des erreurs dans la programmation qui conduisent à des traitements qui ne sont pas sûrs du point de vue de l'attaque DPA, la structure 20 de connexion est formée préférablement de sorte qu'elle permet uniquement la connexion d'une entrée/sortie codée à rail double avec une entrée/sortie de bit codé à rail double, mais aucune connexion individuelle entre des terminaux non inversés et inversés, respectivement. En d'autres termes, n'importe quelle reconfiguration et modification d'un bit dans la donnée de programmation, respectivement, se rapportant au réglage de la structure 20 de connexion conduit toujours à ce qu'une paire de bornes non inversée et inversée soit connectée d'une manière différente que précédemment, par exemple les deux ne sont plus connectées à une ligne de distribution respective ou sont uniquement maintenant zs connectées à une ligne de distribution. En liaison avec l'exemple de la Figure 1, par exemple, les CIP 26a et 26b pourraient uniquement être reconfigurés ensemble mais jamais individuellement. La même chose s'applique aux CIP 26c et 26d. En liaison avec toutes les parties de circuit du FPGA 10 se rapportant à la configuration, il peut être dit que la même chose peut être conçue suivant une technique à rail simple, puisque celle-ci ne contribue pas à la consommation de puissance pendant le fonctionnement du FPGA 10, c'està-dire dans l'état configuré, c'est à dire lorsque l'information secrète est traitée, et ainsi ne peut pas révélé le traitement des données secrètes par le biais d'attaques DPA, Par conséquent, ceci s'applique aux parties 28, 20 de circuit et aux transistors internes et aux parties de circuit de configuration, respectivement, des blocs 18a - 18d de commutation. En outre, il convient de noter que, de préférence, la structure 20 de connexion est disposée de sorte que, dans n'importe quelle configuration possible, n'importe quelle borne ou terminal de bit est connectée à une autre borne de bit de telle manière qu'à la fois le trajet de connexion et le nombre de CIP entre la borne non inversée d'une borne à rail double, d'une part, et la borne inversée de la borne à rail double, d'autre part, ont la même longueur ou sont égaux respectivement. Ceci évite une dépendance de données Io accidentelle dans la consommation de courant du FPGA 10 qui apparaîtrait malgré le codage à rail double des bits, qui serait créée par des capacités de rechargement de différentes valeurs. Dans l'exemple de la Figure 1, ceci est obtenu en agençant les blocs 18a 18d logiques en colonnes et rangées, les lignes de distribution s'étendant suivant la direction des rangées et les conducteurs s'étendant suivant la direction des colonnes. La structure de FPGA de ce genre peut également être conçue d'une manière différente. La Figure 3 représente un mode de réalisation d'une partie d'un FPGA où des CLB 202 sont agencés en colonnes et rangées, dans lequel à la fois les deux lignes 204 de distribution s'étendant dans la direction des rangées entre les CLB 202, et les lignes 206 de distribution s'étendant dans la direction des colonnes entre les CLB 202 sont fournies en tant que partie de la structure de connexion. Aux points de croisement des lignes 204, 206 de distribution, des points d'interconnexion configurables et des CIP 208, respectivement, sont fournis, qui sont configurables pour connecter la paire des lignes 204 de distribution ou une paire des lignes 206 de distribution à une paire de conducteurs 210, qui sont de nouveau connectés à des entrées à rail double des CL13 202. La configuration du CIP 208 est commandée par l'intermédiaire des lignes 212 de commande d'un bloc 214 de configuration associé, respectivement. Le bloc 214 de configuration associé à un certain CIP 208 est connecté à des entrées de commande et de configuration du CLB 202 associé par l'intermédiaire de lignes 216 de commande qui sont également configurables. Les blocs 214 de configuration commandent la configuration du CIP 208 associé et du CLB 202 associé par l'intermédiaire de données de 35 configuration qui peuvent être entrées à partir de l'extérieur par l'intermédiaire d'une borne de configuration du FPGA. Toutes les données de configuration possibles de tous les blocs 214 de configuration résultent toujours en une configuration du FPGA de la Figure 3 où des signaux codés à rail double sont transmis sur les conducteurs en maintenant leur codage à rail double et atteignent et quittent les CLB, respectivement. En d'autres termes, dans toute configuration possible, il est garanti que tous ces signaux codés à rail double sont transmis, en outre, en tant que signaux codés à rail double par l'intermédiaire des lignes 204 de distribution par l'intermédiaire de paires de lignes de distribution. En outre, de manière indépendante de la configuration, il est garanti que les deux rails d'un signal codé à rail double transmis parl'intermédiaire de la structure de connexion ont une longueur égale et s'étendent aux bornes du même nombre de CLB. En d'autres termes, dans toute configuration possible, les conducteurs 210 peuvent simplement être connectés avec des paires déterminées à l'avance de lignes 204 et 206 de distribution, respectivement, et ces paires de lignes 204, 206 de distribution peuvent également, de nouveau, être uniquement connectées à l'intérieur de ces paires par les CI P 208, mais pas de manière indépendante les unes des autres pour différentes configurations. Les signaux de commande, qui sont transmis par l'intermédiaire des lignes 212 et 216 de commande, respectivement, sont transmis sur des lignes simples, c'est-à-dire des codes à rail simple, ce qui signifie avec un codage où le premier état logique sur une ligne représente une première valeur du signal à transmettre, tandis qu'un deuxième état différent du premier état sur la même ligne représente une deuxième valeur du signal à transmettre qui est différente de la première valeur. Ceci est possible puisque ces signaux sont modifiés uniquement une fois pendant leur configuration, et restent sinon non changés et ainsi ne contribuent pas à la consommation de puissance. En d'autres termes, le mode de réalisation de la Figure 3 représente un noyau de FPGA, constitué d'éléments de parties identiques, à savoir un CLB 202, un CIP 208 et un bloc 214 de configuration. Dans tous les signaux à rail double, ce qui signifie les signaux transmis par l'intermédiaire des lignes 210, 204 et 206, il est garanti par la construction du FPGA que les signaux associés codant une paire de valeurs sont agencés et guidés de manière identique, de sorte qu'aucune différence dans le profil de courant n'est produit lorsque l'un ou l'autre des signaux se commute. Ceci s'applique toujours, en particulier de manière indépendante de la configuration de réglage en cours. Comme mentionné ci-dessus, les données de configuration statiques peuvent être passées par des signaux à rail simple vers les CLB 202 et le CIP 208, respectivement, ce qui diminue l'effort de disposition et les exigences de surface. En référence à l'interface de programmation, il convient de noter qu'également deux interfaces distinctes peuvent être prévues pour un réglage distinct de la configuration des blocs et de la structure de connexion, à la place de l'interface 16 en commun. En d'autres termes, dans le FPGA 10 de la Figure 1, tous les bits logiques sont codés en tant qu'une paire de valeurs, dans laquelle des bits sont alors combinés en le FPGA 10 configuré finalement par les blocs 18a - 18d logiques en maintenant cette caractéristique. Par conséquent, tous les CLB sont conçus suivant une technique à rail double. Ici, le système logique (non représenté), qui détermine la configuration d'un CLB, peut être conçu suivant une technique à rail simple classique, puisqu'il ne se commute pas pendant le fonctionnement du circuit et ne peut pas ainsi contribuer à une consommation du courant dépendant des données. Le FPGA 10 global est alors combiné à partir de ces CLB en tant que sous- circuits les plus petits, dans lequel les connexions entre les CLB sont également programmables par l'intermédiaire des éléments désignés sous le terme CIP ou PIP. Ici, on devra porter attention au fait que les deux connexions d'un système logique 18a - 18d à rail double vers l'étage suivant, tel qu'à partir d'un bloc 18a logique vers un bloc 18c logique, aient la même longueur et soient guidées par l'intermédiaire du même nombre de CIP, de sorte qu'aucune nouvelle dépendance de données n'apparaisse dans la consommation de courant. II convient de noter qu'il a été décrit dans la description des précédents modes de réalisation en liaison avec les CIP et ces parties de circuit à l'intérieur des CLB qui sont responsables de la configuration que ceux-ci sont réalisés sous une forme de technique à rail simple. Ceci s'applique en ce que les signaux de commande que l'on a transmis à partir de la mémoire et du bloc de configuration, respectivement, vers les mêmes, soient présents suivant un codage à rail simple. D'autre part, cependant, les CIP et les parties de circuit à l'intérieur des CIP sont conçus de sorte qu'ils maintiennent le codage à rail double des données traitées par l'ensemble du FPGA indépendamment de la configuration de réglage. Jusqu'à maintenant, il pouvait être dit que les CIP et les parties de circuit à l'intérieur des CLB sont présents suivant une technique à rail double. Si l'on prend cette technique, comparée à des réalisations FPGA classiques, les circuits pour des CLB et des CIP dans les modes de réalisation décrits ci-dessus sont entièrement modifiés par la réalisation suivant une technique à rail double, tandis que la technique de circuit pour la partie de bloc de configuration et la partie de mémoire, respectivement, pourrait être reprise principalement non modifiée à Io partir d'un FPGA existant. La "résistance à l'attaque DPA" ne peut pas être obtenue de la même manière par des FPGA classiques. Conformément aux modes de réalisation ci-dessus, cette propriété est valable indépendamment de la configuration utilisée actuellement, c'est-à- dire de la fonction réalisée par le FPGA. II ne nécessite pas plus de considérations par l'utilisateur programmant le FPGA mais est toujours donné automatiquement. Comparé à un circuit à rail double résistant à l'attaque DPA classique sous forme de câble, des possibilités d'application totalement différentes résultent des modes de réalisation précédents en raison du caractère reconfigurable complet du FPGA. Contrairement à un circuit à rail double classique sous forme de câble qui a uniquement une très faible capacité de configuration, s'il en a d'ailleurs, et ainsi doit être conçu de manière spécifique pour réaliser un certain algorithme, les modes de réalisation de la présente invention permettent la réalisation de n'importe quel algorithme d'une manière qu'on ne peut pas modifier et qui résiste à une attaque DPA dans un seul et même circuit. Les modes de réalisation ci-dessus des Figures 1 et 3 se rapportent à un FPGA qui résiste à des attaques DPA en tant que FPGA "autonome". Cependant, la présente invention peut également être appliquée à un module FPGA intégré, qui est uniquement partiellement construit suivant une manière qui résiste à une attaque DPA conformément à l'invention décrite, dans lequel, dans la configuration du FPGA, il faut faire attention que les sous-algorithmes à protéger viennent se placer à l'intérieur de la partie résistant à l'attaque DPA du FPGA, tandis que les parties non sécurisées traitent uniquement des données non pertinentes vis-à-vis d'attaques DPA. Le mode de réalisation décrit ci-dessus en référence à la Figure 1 se rapportait principalement à un FPGA 10, sans adresser une application plus détaillée. La Figure 2 représente un mode de réalisation possible où un FPGA 10 est, par exemple, utilisé en tant que partie d'un cryptocontrôleur et d'un circuit intégré à carte à puce ou d'un circuit intégré 100 de sécurité, respectivement. Le cryptocontrôleur 100 de la Figure 2 comporte une CPU 102, plusieurs unités 104 périphériques, telles que des coprocesseurs ou analogues, à la Figure 2 une unité 104 étant simplement représentée à titre d'exemple, et le FPGA 10. Une interface 106 données/énergie du cryptocontrôleur 100 est connectée à l'unité centrale ou CPU 102 qui est de nouveau connecté aux unités 104 périphériques et au FPGA 10 par io l'intermédiaire d'un bus 108 de données. Pour la programmation et la configuration, respectivement, du FPGA 10, le cryptocontrôleur 100 comporte une interface 110. Une unité 112 de commande d'autorisation est connectée entre l'interface 110 et l'interface de programmation du FPGA 10, ce qui garantit que des données de programmation vers le FPGA 10 sont simplement mises en oeuvre par des personnes autorisées. Une personne autorisée, telle que le délivreur de données, est, par exemple, capable de régler les données de programmation du FPGA 10 par l'intermédiaire d'une authentification appropriée comparée à l'unité 112, de sorte que ce dernier prend une fonction critique d'un point de vue de la sécurité dans le cryptocontrôleur 100, telle qu'une fonction de paiement ou analogue. L'unité centrale ou CPU 102 effectuant l'application du cryptocontrôleur 100 peut communiquer avec l'interface d'entrée/sortie du FPGA 10 configurée par l'intermédiaire du bus 108 de données. La résistance vis-à-vis de l'attaque DPA du cryptocontrôleur 100 est maintenue puisque le FPGA 10, comme décrit ci-dessus, est résistant à l'attaque DPA. En référence à la Figure 2, il convient de noter qu'une interface 110 fournie de manière individuelle du cryptocontrôleur 100 ne doit pas être prévue pour configurer le FPGA 10, mais que la configuration et la reconfiguration du FPGA 10 peuvent également être effectuées par l'intermédiaire de l'interface 106 de données, c'est-à-dire par l'intermédiaire de l'interface qui est sinon fournie pour une communication entre le cryptocontrôleur 100 et la borne ou terminal ou analogue. La tâche de vérifier l'autorisation de l'unité 112 pourrait, dans ce cas, être effectuée par l'unité centrale ou CPU 102.. En ce qui concerne la description précédente, il convient de noter que la présente invention n'est pas limitée à des FPGA reconfigurables, mais peut également être utilisée dans des systèmes logiques qui peuvent être programmés uniquement une fois, ce qui signifie de manière générale des systèmes logiques programmables par utilisateur (UPL) et des circuits programmables par fonction, respectivement. Ainsi, dans le mode de réalisation ci-dessus, une mémoire 28 peut également être une ROM ou une PROM. En outre, des FPGA conformes à la présente invention peuvent être tous types de FPGA connus, tels que des SRAM, ou des FPGA à base de flashes ou d'anti-fusibles. La différence entre des FPGA à base de SRAM, anti-fuses ou flashes se trouve dans la mise en oeuvre réelle de la mémoire dans le mode de réalisation de la Figure 1 ou les blocs de configuration du mode de réalisation de la Figure 3. En outre, la présente invention n'est pas limitée à des FPGA en tant que circuits logiques configurables. Ainsi, il serait 1s possible que la structure 20 de connexion de la Figure 1 ne soit pas configurable. A l'inverse, il pourrait être possible qu'aucun des blocs logiques ne soit configurable, ruais simplement la structure de connexion. En outre, un circuit logique configurable suivant l'invention peut être mis en oeuvre suivant n'importe quelle technologie, ce qui signifie non seulement dans des technologies CMOS où chaque opération de commutation de transistor contribue à la consommation de courant du circuit logique configurable, mais également dans d'autres ayant une consommation de courant qui dépend des données traitées. De préférence, chaque bloc logique a au moins une paire de bornes pour recevoir ou émettre en sortie un signal codé à rail double, la structure de connexion étant configurable pour connecter les blocs logiques, de telle manière que des paires de bornes soient connectées par paires. De préférence, le circuit logique comporte en outre une première interface de programmation pour configurer la structure de connexion, de sorte qu'une reconfiguration à la première interface de programmation conduit au moins à une reconnexion des deux bornes d'une paire de bornes. De préférence, au moins l'un des blocs logiques est un bloc logique configurable, ayant en outre une deuxième interface de programmation pour configurer les blocs logiques configurables. De préférence, les première et deuxième interfaces de programmation forment une interface de programmation commune. De préférence, la structure de connexion peut être reconfigurée et comporte un premier circuit couplé à la première interface de programmation et est mise en oeuvre suivant une technique à rail simple. De préférence, les blocs logiques configurables sont reconfigurables et ont un deuxième moyen de commutation connecté à la deuxième interface de programmation et mis en oeuvre suivant une technique à rail simple. Io De préférence, le circuit logique est intégré dans une puce ensemble avec un processeur de cryptographie. De préférence, la structure de connexion est formée de sorte qu'indépendamment d'une configuration de la structure de connexion, chaque connexion d'une première borne d'une première paire de bornes vers une première borne d'une deuxième paire de bornes passe par juste autant de noeuds de connexion configurables que le fait la connexion respective de la deuxième borne de la première paire de bornes à une deuxième borne de la deuxième paire de bornes. De préférence, la structure de connexion est en outre formée de sorte qu'indépendamment d'une configuration de la structure de connexion, chaque connexion de la première borne de la première paire de bornes vers la première borne de la deuxième paire de bornes a exactement la même longueur qu'une connexion de la deuxième borne de la première paire de bornes à une deuxième borne de la deuxième paire de bornes. De préférence, sur la base d'une technique d'intégration, chaque opération de commutation de transistor contribue à la consommation de courant du circuit logique configurable. REVENDICATIONS 1. Circuit logique configurable ayant une pluralité de blocs (18a - 18d) logiques et une structure (20) de connexion, par l'intermédiaire de 5 laquelle les blocs logiques peuvent être interconnectés, caractérisé en ce que les blocs (18a - 18d) logiques sont mis en oeuvre suivant une technique à rail double. 2. Circuit logique configurable suivant la revendication 1, caractérisé en ce que chaque bloc (18a - 18d) logique a au moins une paire io de bornes (A, Â) pour recevoir ou émettre en sortie un signal codé à rail double, la structure de connexion étant configurable pour connecter les blocs (18a 18d) logiques de telle manière que des paires de bornes soient connectées par paires. 3. Circuit logique configurable suivant la revendication 1 ou 2, caractérisé en ce qu'il comporte en outre une première interface (16) de programmation pour configurer la structure (20) de connexion, de sorte qu'une reconfiguration à la première interface de programmation conduit au moins à une reconnexion des deux bornes d'une paire de bornes. 4. Circuit logique configurable suivant l'une des revendications précédentes, caractérisé en ce qu'au moins l'un des blocs (18a - 18d) logiques est un bloc logique configurable, ayant en outre une deuxième interface (16) de programmation pour configurer les blocs (18a - 18d) logiques configurables. 5. Circuit logique configurable suivant la revendication 3 et 4, caractérisé en ce que les première et deuxième interfaces (16) de programmation forment une interface (16) de programmation commune. 6. Circuit logique configurable suivant la revendication 3 ou la revendication 5, caractérisé en ce que la structure (20) de connexion peut être reconfigurée et comporte un premier circuit couplé à la première interface (16) de programmation et est mise en oeuvre suivant une technique à rail simple. 7. Circuit logique configurable suivant la revendication 4, caractérisé en ce que les blocs (18a - 18d) logiques configurables sont reconfigurables et ont un deuxième moyen de commutation connecté à la deuxième interface (16) de programmation et mis en oeuvre suivant une technique à rail simple. 8. Circuit logique configurable suivant l'une des revendications précédentes, caractérisé en ce qu'il est intégré dans une puce ensemble avec un processeur de cryptographie. 9. Circuit logique configurable suivant l'une des revendications 1 à 8, caractérisé en ce que la structure (20) de connexion est formée de sorte qu'indépendamment d'une configuration de la structure (20) de connexion, chaque connexion d'une première borne (C) d'une première paire de bornes vers une première borne (B) d'une deuxième paire de bornes passe par juste autant de noeuds (26c, 26d) de connexion configurables que le fait la lo connexion respective de la deuxième borne (C) de la première paire de bornes à une deuxième borne (B) de la deuxième paire de bornes. 10. Circuit logique configurable suivant l'une des revendications 1 à 8, caractérisé en ce que la structure (20) de connexion est en outre formée de sorte qu'indépendamment d'une configuration de la structure (20) de connexion, chaque connexion de la première borne (C) de la première paire de bornes vers la première borne (B) de la deuxième paire de bornes a exactement la même longueur qu'une connexion de la deuxième borne (C) de la première paire de bornes à une deuxième borne (B) de la deuxième paire de bornes. 11. Circuit logique configurable suivant l'une des revendications précédentes, fondé sur une technologie d'intégration, caractérisé en ce que chaque opération de commutation de transistor contribue à la consommation de courant du circuit logique configurable.