Brevet FR2902252A1 — publié le 20071214

La présente invention concerne de façon générale des dispositifs à circuits intégrés et des procédés pour les faire fonctionner, et elle concerne plus particulièrement des systèmes cryptographiques, des circuits de détection d'erreur et des procédés pour les faire fonctionner. Une carte à puce est une carte en matière plastique dans laquelle un circuit intégré (CI) peut être installé, et elle peut être similaire à une carte de crédit. Des standards pour la technologie des cartes à puce ont été définis par l'organisme International Standards Organization (ISO) et le Joint Technical Committee 1 (JTC1) de l'International Electronic Committee (IEC). La série de normes internationales ISO/IEC 7816 définit diverses caractéristiques de cartes à puce, telles que des propriétés physiques, des connexions physiques, des signaux électroniques, des protocoles de transmission, des ordres, des architectures de sécurité, des identificateurs d'applications, et des éléments de données généraux. On a considéré les cartes à puce pour l'utilisation en tant qu'appareil d'information multimédia, du fait qu'elles peuvent offrir une meilleure rétention de données que des cartes magnétiques classiques et peuvent offrir une meilleure sécurité. Les cartes à puce peuvent avoir l'avantage d'une sécurité élevée et d'une grande capacité de stockage de données, pouvant convenir pour une vaste gamme d'applications. De ce fait, des cartes à puce ont été utilisées dans des applications dans divers domaines, tels que la finance, la distribution, la circulation routière, les communications mobiles, et d'autres applications. La figure 1 est un schéma synoptique qui illustre une architecture de carte à puce classique. La carte à puce comprend une unité centrale (UC) 11, une mémoire morte (ROM) 12, une mémoire vive (RAM) 13, une mémoire morte programmable et effaçable de façon électrique (EEPROM) 14, un module d'entrée / sortie (E/S) 15 et un bus 16, comme représenté. L'UC 11 peut être configurée pour commander l'ensemble des opérations arithmétiques et de traitement de données. La mémoire morte 12 peut être configurée pour stocker le système d'exploitation, le code d'amorçage et le programme d'initialisation. La mémoire vive 13 peut être utilisée pour stocker un ou plusieurs programmes modifiables et/ou des données temporaires. La mémoire EEPROM 14 peut être utilisée pour stocker un ou plusieurs programmes d'application. Le module d'E/S 15 peut être utilisé pour permettre à l'UC 11 de communiquer avec un dispositif externe. L'UC 11, la mémoire morte 12, la mémoire vive 13 et la mémoire EEPROM 14 sont couplées par un bus 16. Le bus 16 peut inclure à la fois un bus d'adresse et un bus de données. Le bus de données peut acheminer des signaux électriques entre l'UC 11, la mémoire morte 12, la mémoire vive 13 et la mémoire EEPROM 14, conjointement à n'importe quels autres dispositifs qui peuvent être connectés au bus 16, dans le but de transférer des données entre eux. Le bus d'adresse peut connecter l'UC 11 au(x) dispositif(s) de mémoire principale, pour identifier des positions (adresses) particulières dans la mémoire principale. La largeur du bus d'adresse détermine combien de positions de mémoire individuelles peuvent être adressées. Dans des dispositifs à carte à puce, il peut être important de protéger la confidentialité et l'intégrité des données transportées sur le bus de données. De façon similaire, il peut également être important de protéger l'intégrité des adresses transportées sur le bus d'adresse. Si les données et/ou les adresses stockées / utilisées dans la carte à puce ne sont pas sécurisées, un utilisateur ou un opérateur de système peut hésiter à stocker de l'information privée ou secrète dans une carte à puce. Un accès non autorisé à une carte à puce est quelquefois appelé "intrusion". Des techniques d'intrusion incluent des attaques invasives utilisant des micro-sondes, et des attaques non invasives utilisant des outils logiciels. Des attaques non invasives peuvent faire intervenir l'accomplissement d'une analyse par des moyens indirects qui déchiffre un code de clé d'un algorithme cryptographique (par exemple l'algorithme DES) en utilisant une configuration de consommation de puissance (ou de dissipation de courant), ou des différences de temps qui sont dues à des opérations de la carte à puce. Des techniques d'analyse par des moyens indirects peuvent être classées en analyse de puissance simple (SPA pour "Simple Power Analysis") et en analyse de puissance différentielle (DPA pour "Differential Power Analysis"). La DPA et la SPA sont des procédés d'analyse d'un signal de puissance qui est généré par un dispositif à faible consommation, tel qu'une carte à puce, au cours de calculs (ou opérations), pour découvrir une information secrète stockée dans la carte à puce lorsque l'algorithme de chiffre en bloc est appliqué à la carte à puce. La DPA et la SPA peuvent être accomplies sur la base du fait que l'attaquant estime un bit spécifique d'un texte chiffré après une ronde, qui correspond à un texte en clair si le texte en clair est connu. Une contre-mesure à l'égard de la DPA et de la SPA consiste à empêcher l'attaquant de connaître le texte en clair au cours de calculs accomplis à l'intérieur de la carte à puce. Diverses contre-mesures à l'encontre de la DPA et de la SPA ont été proposées. Les contre-mesures incluent des procédés matériels et des procédés logiciels. Les procédés matériels comprennent la génération d'une puissance de bruit, la randomisation d'une séquence de fonctionnement, et/ou le filtrage d'un signal de puissance. Les procédés logiciels incluent des techniques de masquage dans lesquelles un nombre aléatoire est généré à l'intérieur d'une carte à puce et le nombre aléatoire est combiné par une fonction OU-Exclusif avec du texte en clair, pour faire apparaître le texte en clair comme un nombre aléatoire, ce qui a pour effet de rendre inopérante l'analyse de puissance. Conformément à certains modes de réalisation de la présente invention, un système cryptographique inclut une logique de chiffrement qui est configurée pour chiffrer des données d'entrée en accomplissant une opération de masque sur les données d'entrée, en utilisant une adresse associée aux données d'entrée. Dans d'autres modes de réalisation de la présente invention, la logique de chiffrement inclut un premier circuit logique et un deuxième circuit logique. Le premier circuit logique est configuré pour effectuer une première opération de masque sur les données d'entrée en utilisant au moins une partie d'une adresse, de façon à générer une première information de sortie. Le deuxième circuit logique est configuré pour effectuer une deuxième opération de masque sur la première information de sortie, en utilisant une clé, pour générer une deuxième information de sortie. Dans encore d'autres modes de réalisation de la présente invention, chacune des première et deuxième opérations de masque inclut une opération OU-Exclusif, une opération d'addition, une opération de soustraction, une opération de multiplication et/ou une opération de division. Les opérations d'addition, de soustraction, de multiplication et de division sont effectuées en relation avec un modulo. Dans encore d'autres modes de réalisation de la présente invention, un circuit de boîte S ("S-box") est configuré pour transformer la deuxième information de sortie. Un circuit de permutation est configuré pour permuter la deuxième information de sortie transformée, de façon à générer les données d'entrée chiffrées. Dans encore d'autres modes de réalisation de la présente invention, le circuit de permutation est configuré 35 pour exécuter une fonction linéaire sur la deuxième information de sortie transformée. Dans encore d'autres modes de réalisation de la présente invention, la fonction linéaire est une fonction de décalage ou une transformation linéaire de bits de la deuxième information de sortie. Dans encore d'autres modes de réalisation de la présente invention, les données d'entrée incluent au moins un octet de données. Le circuit de boîte S comprend un premier circuit de boîte S et un deuxième circuit de boîte S qui sont configurés pour transformer respectivement un premier segment de la deuxième information de sortie et un deuxième segment de la deuxième information de sortie. Dans encore d'autres modes de réalisation de la présente invention, le système cryptographique inclut une unité de traitement. La logique de chiffrement inclut un coprocesseur cryptographique qui est couplé de façon â communiquer avec l'unité de traitement. Le coprocesseur cryptographique reçoit les données d'entrée provenant de l'unité de traitement. Dans encore d'autres modes de réalisation de la 20 présente invention, la logique de chiffrement est intégrée à l'unité de traitement de façon à former une seule unité logique. Dans encore d'autres modes de réalisation de la présente invention, la logique de chiffrement inclut un 25 premier circuit logique de ronde qui est configuré pour générer une première information de sortie de circuit logique de ronde en réponse aux données d'entrée, au moins une partie d'une adresse, et une première clé. Un premier circuit de boîte S de ronde est configuré pour transformer 30 la première information de sortie du circuit logique de ronde. Un premier circuit de permutation de ronde est configuré pour permuter la première information de sortie de circuit logique de ronde de façon à générer une première information de sortie de ronde. Un deuxième circuit logique 35 de ronde est configuré pour générer une deuxième information de sortie de circuit logique de ronde en réponse à la première information de sortie de ronde, au moins une deuxième partie de l'adresse, et une deuxième clé. Un deuxième circuit de boîte S de ronde est configuré pour transformer la deuxième information de sortie de circuit logique de ronde. Un deuxième circuit de permutation de ronde est configuré pour permuter la deuxième information de sortie de circuit logique de ronde transformée, afin de générer les données d'entrée chiffrées. Conformément à des modes de réalisation supplémentaires de la présente invention, un circuit de détection d'erreur inclut un premier circuit logique qui est configuré pour effectuer une opération logique sur l'information d'entrée et sur une première configuration, de façon à générer une première information de sortie. Un deuxième circuit logique est configuré pour effectuer une opération logique sur l'information d'entrée et sur une deuxième configuration, de façon à générer une deuxième information de sortie. Un troisième circuit logique est configuré pour effectuer une opération logique sur la première information de sortie et la deuxième information de sortie, pour générer une troisième information de sortie. Un circuit de détecteur est configuré pour comparer la troisième information de sortie avec une valeur qui correspond à une combinaison logique de la première configuration avec la deuxième configuration, et pour reconnaître une erreur si la valeur n'est pas égale à la troisième information de sortie. Dans des modes de réalisation supplémentaires de la présente invention, le premier circuit logique est configuré pour effectuer une opération de masque, le deuxième circuit logique est configuré pour effectuer l'opération de masque, et le troisième circuit logique est configuré pour effectuer l'opération de masque. Dans d'autres modes de réalisation supplémentaires de la présente invention, l'opération de masque inclut une opération OU-Exclusif, une opération d'addition, une opération de soustraction, une opération de multiplication, et/ou une opération de division. Les opérations d'addition, de soustraction, de multiplication et de division sont effectuées en relation avec un modulo. Dans d'autres modes de réalisation supplémentaires de la présente invention, le circuit de détection d'erreur inclut un premier bus qui couple le premier circuit logique et le troisième circuit logique. Un deuxième bus couple le deuxième circuit logique au troisième circuit logique. Dans d'autres modes de réalisation supplémentaires de la présente invention, l'information d'entrée inclut des données d'entrée. Dans d'autres modes de réalisation supplémentaires 15 de la présente invention, l'information d'entrée inclut une adresse d'entrée. Dans d'autres modes de réalisation supplémentaires de la présente invention, un quatrième circuit logique est configuré pour effectuer une opération de masque sur la 20 première information de sortie et la première configuration, pour obtenir l'information d'entrée. Conformément à d'autres modes de réalisation de la présente invention, un système cryptographique inclut un premier circuit de chiffrement qui est configuré pour 25 générer, en réponse à des données d'entrée, une première information de sortie qui correspond à des données d'entrée chiffrées sur lesquelles une opération de masque est effectuée en utilisant une première configuration. Un deuxième circuit de chiffrement est configuré pour générer, 30 en réponse aux données d'entrée, une deuxième information de sortie qui correspond aux données d'entrée chiffrées sur lesquelles l'opération de masque a été effectuée, en utilisant une deuxième configuration. Un circuit logique d'entrée de détecteur est configuré pour effectuer 35 l'opération de masque sur la première information de sortie et la deuxième information de sortie, pour générer une troisième information de sortie. Un circuit détecteur est configuré pour comparer la troisième information de sortie avec une valeur qui correspond à la première configuration, sur laquelle l'opération de masque a été effectuée en utilisant la deuxième configuration. Une erreur est reconnue si la valeur n'est pas égale à la troisième information de sortie. Dans encore d'autres modes de réalisation de la présente invention, le premier circuit de chiffrement inclut une logique de chiffrement qui est configurée pour chiffrer les données d'entrée en effectuant l'opération de masque sur les données d'entrée, en utilisant une adresse associée aux données d'entrée. Dans encore d'autres modes de réalisation de la présente invention, la logique de chiffrement inclut un premier circuit logique qui est configuré pour effectuer l'opération de masque sur les données d'entrée en utilisant la première configuration, de façon à générer une première information de sortie de circuit logique. Un deuxième circuit logique est configuré pour effectuer l'opération de masque sur la première information de sortie de circuit logique en utilisant au moins une partie de l'adresse, de façon à générer une deuxième information de sortie de circuit logique. Un troisième circuit logique est configuré pour effectuer l'opération de masque sur la deuxième information de sortie de circuit logique en utilisant une clé pour générer une troisième information de sortie de circuit logique. Dans encore d'autres modes de réalisation de la présente invention, l'opération de masque inclut une opération OU-Exclusif, une opération d'addition, une opération de soustraction, une opération de multiplication, et/ou une opération de division. Les opérations d'addition, de soustraction, de multiplication et de division sont effectuées en relation avec un modulo. Dans encore d'autres modes de réalisation de la présente invention, un circuit de boîte S' est configuré pour transformer la troisième information de sortie de circuit logique. Un circuit de permutation est configuré pour permuter la troisième information de sortie de circuit logique transformée, afin de générer la première information de sortie correspondant aux données d'entrée chiffrées sur lesquelles l'opération de masque a été effectuée en utilisant la première configuration. Dans encore d'autres modes de réalisation de la présente invention, le circuit de boîte S' vérifie l'équation suivante : S D OU-EX Ml OU-EX A OU-EX K) = S(D OU-EX A OU-EX K) OU-EX P-1 (Ml); dans laquelle D est les données d'entrée, Ml est la première configuration, A est l'au moins une partie de l'adresse, K est la clé, P1 est un inverse de la permutation effectuée par le circuit de permutation, S ) est la fonction de transformation de boîte S', et S( ) est une autre transformation de boîte S utilisée dans une opération de déchiffrement. Bien qu'elle soit décrite ci-dessus principalement en relation avec des modes de réalisation de système et/ou de circuit de la présente invention, il faut noter que la présente invention peut être réalisée sous la forme d'un système, d'un circuit, d'un procédé et/ou d'un produit - programme d'ordinateur. D'autres caractéristiques de la présente invention seront comprises plus aisément d'après la description détaillée suivante de modes de réalisation spécifiques de celle-ci, qui est à lire en se référant conjointement aux dessins annexés, dans lesquels : la figure 1 est un schéma synoptique qui illustre une architecture de carte à puce classique; la figure 2 est un schéma synoptique qui illustre un système cryptographique conforme à certains modes de réalisation de la présente invention ; la figure 3 est un schéma synoptique qui illustre un circuit logique de chiffrement prévu pour l'utilisation dans le système cryptographique de la figure 2, en conformité avec certains modes de réalisation de la présente invention ; la figure 4 est une table de boîte S prévue pour l'utilisation dans le circuit logique de chiffrement de la figure 3, en conformité avec certains modes de réalisation de la présente invention ; la figure 5 est un schéma synoptique qui illustre un circuit logique de déchiffrement prévu pour l'utilisation dans le système cryptographique de la figure 2, en conformité avec certains modes de réalisation de la présente invention ; la figure 6 est un schéma synoptique qui illustre un système cryptographique en conformité avec des modes de réalisation supplémentaires de la présente invention ; la figure 7 est un schéma synoptique qui illustre un circuit de détection d'erreur en conformité avec certains modes de réalisation de la présente invention ; la figure 8 est un schéma synoptique qui illustre un circuit de détection d'erreur en conformité avec des modes de réalisation supplémentaires de la présente invention ; la figure 9 est un schéma synoptique qui illustre un système cryptographique incluant le circuit de détection d'erreur de la figure 7, en conformité avec certains modes de réalisation de la présente invention ; et la figure 10 est un schéma synoptique qui illustre un circuit logique de chiffrement prévu pour l'utilisation dans le système cryptographique de la figure 9, en conformité avec certains modes de réalisation de la présente invention. Bien que la présente invention se prête à diverses modifications et autres formes de réalisation, les modes de réalisation spécifiques de celle-ci sont montrés à titre d'exemple dans les dessins et seront décrits ici en détail. Il faut cependant noter qu'il n'y a aucune intention de limiter l'invention aux formes particulières exposées, mais au contraire, l'invention vise à couvrir tous les équivalents, modifications et variantes qui entrent dans l'esprit et le cadre de l'invention, tels qu'ils sont définis par les revendications. Il faut noter que lorsqu'on dit qu'un élément est "connecté à" ou "couplé à" un autre élément, il peut être directement connecté ou couplé à l'autre élément, ou bien des éléments intermédiaires peuvent être présents. Au contraire, lorsqu'on dit qu'un élément est "directement connecté à" ou "directement couplé à" un autre élément, il n'y a pas d'élément intermédiaire. Dans l'usage qui en est fait ici, les termes "et/ou" et "/" incluent absolument toutes les combinaisons d'un ou plusieurs des éléments mentionnés associés. Des numéros semblables font référence à des éléments semblables dans l'ensemble de la description. La terminologie utilisée ici vise seulement à décrire des modes de réalisation particuliers, et ne vise pas à limiter l'invention. Dans l'usage qui en est fait ici, les formes du singulier "un" et "le" visent à inclure également les formes du pluriel, sauf si le contexte indique clairement le contraire. On notera en outre que lorsque les termes "comprend" et/ou "comprenant" sont utilisés dans cette description, ils spécifient la présence de nombres entiers, caractéristiques, étapes, opérations, éléments et/ou composants mentionnés, mais n'interdisent pas la présence ou l'ajout d'un ou plusieurs autres nombres entiers, caractéristiques, étapes, opérations, éléments, composants et/ou groupes de ceux-ci. Il faut noter que bien que les termes premier et deuxième soient utilisés ici pour décrire divers composants, circuits, régions, couches et/ou sections, ces composants, circuits, régions, couches et/ou sections ne doivent pas être limités par ces termes. Ces termes sont utilisés seulement pour distinguer un composant, circuit, région, couche ou section d'un autre composant, circuit, région, couche ou section. Par conséquent, un premier composant, circuit, région, couche ou section envisagé ci-dessous pourrait être appelé un deuxième composant, circuit, région, couche ou section et, de façon similaire, un deuxième composant, circuit, région, couche ou section peut être appelé un premier composant, circuit, région, couche ou section, sans s'écarter des enseignements de la présente invention. Sauf mention contraire, tous les termes (incluant des termes techniques et scientifiques) utilisés ici ont la signification couramment admise par tout spécialiste du domaine auquel cette invention appartient. On notera en outre que des termes, tels que ceux définis dans des dictionnaires couramment utilisés, doivent être interprétés comme ayant une signification qui est en accord avec leur signification dans le contexte de la technique pertinente, et ne seront pas interprétés dans un sens idéalisé ou excessivement formel, à moins que ceci ne soit défini expressément ici. La présente invention peut être mise en oeuvre sous la forme de systèmes, procédés, et/ou produits - programmes d'ordinateur. Par conséquent, la présente invention peut être réalisée par matériel et/ou logiciel (incluant un microprogramme, un logiciel résident, un micro-code, etc.). En outre, la présente invention peut prendre la forme d'un produit - programme d'ordinateur sur un support de stockage utilisable par ordinateur ou lisible par ordinateur, avec un code de programme utilisable par un ordinateur ou lisible par un ordinateur incorporé dans le support, pour l'utilisation par un système d'exécution d'instructions, ou en relation avec ce dernier. Dans le contexte de ce document, un support utilisable par ordinateur ou lisible par ordinateur peut être n'importe quel support qui peut contenir, stocker, communiquer, propager ou transporter le programme, pour l'utilisation par le système, l'appareil ou le dispositif d'exécution d'instructions, ou en relation avec celui-ci. Le support utilisable par ordinateur ou lisible par ordinateur peut être, par exemple, mais de façon non limitative, un système, appareil, dispositif ou support de propagation électronique, magnétique, optique, électromagnétique, infrarouge ou à semi-conducteur. Des exemples plus spécifiques (une liste non exhaustive) du support lisible par ordinateur incluraient ce qui suit : une connexion électrique ayant un ou plusieurs fils, une disquette d'ordinateur portable, une mémoire vive (RAM), une mémoire morte (ROM), une mémoire morte programmable et effaçable (EPROM ou mémoire flash), une fibre optique, et une mémoire morte à disque compact (CD-ROM). On notera que le support utilisable par ordinateur ou lisible par ordinateur pourrait même être du papier ou un autre support approprié sur lequel le programme est imprimé, du fait que le programme peut être capturé de façon électronique, par exemple par lecture optique du papier ou d'un autre support, puis compilé, interprété ou traité autrement d'une manière appropriée, si nécessaire, puis stocké dans une mémoire d'ordinateur. Certains modes de réalisation de la présente invention découlent de la prise en considération du fait qu'une carte à puce, par exemple, peut inclure un système cryptographique qui peut être utilisé pour chiffrer des données en utilisant une adresse associée aux données d'entrée, à protéger contre des attaques d'intrusion telles que celles envisagées ci-dessus. Une carte à puce peut inclure un circuit de détection d'erreur dans lequel diverses opérations logiques sont effectuées sur les données transportées sur un bus de données et/ou l'adresse transportée sur un bus d'adresse, afin de déterminer si les données et/ou l'information d'adresse ont été corrompues. Certains modes de réalisation de la présente invention sont décrits ici dans le contexte d'une carte à puce qui inclut une fonction cryptographique et/ou une fonction de détection d'erreur. On comprendra que des modes de réalisation de la présente invention ne sont pas limités à des cartes à puce, et que les systèmes cryptographiques et les circuits de détection d'erreur décrits ici peuvent être utilisés dans d'autres dispositifs ou comme des dispositifs autonomes. En se référant à la figure 2, on note qu'une carte à puce 100, conforme à certains modes de réalisation de la présente invention, inclut une UC 110, un circuit cryptographique 130, un ordonnanceur de clés 140, et une mémoire 120 qui sont configurés de la manière représentée. Le circuit cryptographique 130 peut être réalisé sous la forme d'un coprocesseur pour l'UC 110. L'UC 110 et le circuit cryptographique 130 peuvent transmettre entre eux de l'information de données et d'adresse. L'ordonnanceur de clés 140 peut fournir au circuit cryptographique 130 une clê qui peut être utilisée pour chiffrer et/ou déchiffrer des données. Dans certains modes de réalisation, le circuit cryptographique 130 inclut un circuit de chiffrement 131 qui est utilisé pour chiffrer des données qui sont transportées sur le bus 150 connectant le circuit cryptographique 130 et la mémoire 120, en utilisant une adresse qui est associée aux données et/ou une clé obtenue à partir de l'ordonnanceur de clés 140. Le circuit cryptographique 130 inclut en outre un circuit de déchiffrement qui est utilisé pour déchiffrer des données chiffrées précédemment. La figure 3 est un schéma synoptique qui illustre un circuit logique de chiffrement qui peut être utilisé dans le circuit de chiffrement 131 de la figure 2, en conformité avec certains modes de réalisation de la présente invention. Le circuit logique de chiffrement inclut un premier circuit logique de ronde 210 et un deuxième circuit logique de ronde 220. Le premier circuit logique de ronde 210 inclut des circuits logiques OU-EX 211 et 212, un registre de données 213, des circuits de boîte S 214 et 215 et un circuit de permutation 216 qui sont connectés en série. Des données à chiffrer sont reçues comme une information d'entrée du circuit OU-EX 211 dans lequel une opération de masque est effectuée sur les données en utilisant une adresse (Addrl) associée aux données. Le circuit OU-EX 212 effectue une deuxième opération de masque sur l'information de sortie du circuit OU-EX 211 en utilisant une clé (Keyl) obtenue à partir de l'ordonnanceur de clés 140. Bien qu'une opération logique OU-Exclusif soit illustrée pour les opérations de masque des blocs 211 et 212 de la figure 3, on notera que l'opération de masque peut comprendre une opérationOU-Exclusif, une opération d'addition, une opération de soustraction, une opération de multiplication, et/ou une opération de division, les opérations d'addition, de soustraction, de multiplication et de division étant effectuées en relation avec un modulo, en conformité avec divers modes de réalisation de la présente invention. Le registre de données 213 conserve l'information de sortie du circuit OU-EX 212 et fournit une première partie de l'information de sortie du circuit OU-EX 212 à un premier circuit de boîte S (Sl) 214, et une deuxième partie de l'information de sortie du circuit OU-EX 212 à un deuxième circuit de boîte S (S2) 215. Une boîte S (ou "S-box") est une abréviation pour "boîte de substitution", et est couramment utilisée dans des systèmes cryptographiques. En particulier, des boîtes S peuvent être utilisées pour brouiller la relation entre un texte en clair et un texte chiffré. Dans le fonctionnement, une boîte S peut prendre un certain nombre de bits d'entrée, m, et transformer ces bits d'entrée en un certain nombre de bits de sortie, n, en utilisant par exemple une table de conversion. La figure 4 est un exemple de table de boîte S qu'on peut utiliser pour réaliser les circuits de boîte S 214 et 215. Par exemple, si les données d'entrée consistent en un octet ayant les données de valeur = 1001 1010, Addrl = 0111 0011 et Keyl = 1100 0101, alors la valeur stockée dans le registre de données est 0010 1100. L'information d'entrée de S1 214 est 0010 et l'information d'entrée de S2 215 est 1100. En se référant à la table de la figure 5, on a S1(2) = 13 = 1101 et S2(12) = 9 = 1001. L'information d'entrée du circuit de permutation 216 est donc 1101 1001. Conformément à certains modes de réalisation de la présente invention, le circuit de permutation 216 est configuré pour exécuter une fonction linéaire sur son information d'entrée. Conformément à divers modes de réalisation de la présente invention, la fonction linéaire peut être une fonction de décalage ou une transformation linéaire de bits. Dans l'exemple représenté sur la figure 3, le circuit de permutation 216 peut être configuré pour effectuer une opération de décalage telle que P1(1101 1001) = 1011 0011. Le deuxième circuit logique de ronde 220 inclut des circuits logiques OU-EX 221 et 222, un registre de données 223, des circuits de boîte S 224 et 225, et un circuit de permutation 226 qui sont connectés en série. Des opérations du deuxième circuit logique de ronde 220 sont similaires à celles envisagées ci-dessus en relation avec le premier circuit logique de ronde 210, à l'exception du fait qu'une deuxième adresse (Addr2) et une deuxième clé (Key2) sont utilisées dans les opérations de masque effectuées respectivement par les circuits logiques OU-EX 221 et 222, au lieu de la première adresse (Addrl) et de la première clé (Keyl). De plus, dans le deuxième circuit logique de ronde 220, le circuit de boîte S S1 travaille sur le segment inférieur au lieu du segment supérieur, et le circuit de boîte S S2 travaille sur le segment supérieur au lieu du segment inférieur. Les données chiffrées qui sont émises par le deuxième circuit logique de ronde 220 peuvent être très difficiles à décoder. Il en résulte que des attaques d'intrusion, comme celles envisagées ci-dessus, sur une carte à puce, peuvent être incapables d'obtenir des données confidentielles utilisées dans la carte à puce qui ont été chiffrées conformément à divers modes de réalisation de la présente invention. La figure 5 est un schéma synoptique qui illustre un circuit logique de déchiffrement qui peut être utilisé dans le circuit de déchiffrement 132 de la figure 2, en conformité avec certains modes de réalisation de la présente invention. Le circuit logique de déchiffrement inclut un premier circuit logique de ronde 310 et un deuxième circuit logique de ronde 320. Le premier circuit logique de ronde 310 inclut un circuit de permutation inverse 311, des circuits de boîtes S inverses 312 et 313, un registre de données 314 et des circuits logiques OU-EX 315 et 316 connectés en série. Le premier circuit logique de ronde 310 peut fonctionner de façon à annuler les opérations effectuées par le deuxième circuit logique de ronde 220 de la figure 3. Si l'information de sortie du premier circuit logique de ronde 210 de la figure 3 est OP et II représente une opération de concaténation, alors le circuit de permutation inverse 311 génère une information de sortie donnée par l'équation suivante P-2[P2(S2(OP OU-EX ADDR2 OU-EX KEY2) II Sl(OP OU-EX ADDR2 OU-EX K2))] = S2(OP OU-EX ADDR2 OU-EX KEY2) Il Sl(OP OU-EX ADDR2 OU-EX K2). Les circuits de boîtes S inverses 312 et 313 effectuent les opérations suivantes : S-2(S2{0P OU-EX ADDR2 OU-EX KEY2)) = OP OU-EX ADDR2 OU-EX KEY2 et S-1(Sl(OP OU-EX ADDR2 OU-EX KEY2)) = OP OU-EX ADDR2 OU-EX KEY2. Le premier circuit logique OU-EX 315 effectue l'opération suivante : OP OU- EX ADDR2 OU-EX KEY2 OU-EX ADDR2 = OP OU-EX KEY2. Enfin, le deuxième circuit logique OU-EX 316 effectue l'opération suivante : OP OU-EX KEY2 OU-EX KEY2 = OP. Par conséquent, le premier circuit logique de ronde 310 rétablit sur une sortie de celui-ci l'information de sortie du premier circuit logique de ronde 210 du circuit de chiffrement 131. Le deuxième circuit logique de ronde 320 inclut un circuit de permutation inverse 321, des circuits de boîtes S inverses 322 et 323, un registre de données 324 et des circuits logiques OU-EX 325 et 326 connectés en série. On peut faire fonctionner le deuxième circuit logique de ronde 320 pour annuler les opérations effectuées par le premier circuit logique de ronde 210 de la figure 3. Des opérations du deuxième circuit logique de ronde 320 sont similaires à celles envisagées ci-dessus en relation avec le premier circuit logique de ronde 310. Ainsi, le deuxième circuit logique de ronde 320 reçoit sur son entrée l'information de sortie du premier circuit logique de ronde 210 du circuit de chiffrement 131 de la figure 3 et génère sur sa sortie les données originales non chiffrées. En retournant à la figure 2, on note que la carte à puce 100 peut avantageusement transmettre des données chiffrées sur le bus 150 vers la mémoire 120 conformément aux divers modes de réalisation décrits ci-dessus en relation avec les figures 3 et 4. Les données chiffrées peuvent être difficiles à décoder par des techniques d'analyse de puissance, à cause des opérations de masque, des opérations de boîte S, et/ou des opérations de permutation effectuées par le circuit de chiffrement. Des modes de réalisation de la présente invention peuvent également être développés ou réduits conformément au niveau de protection désiré. Par exemple, les circuits de chiffrement et de déchiffrement décrits ci-dessus en relation avec les figures 3-5 comportent deux rondes d'opérations de chiffrement / déchiffrement. Il est possible d'utiliser un plus petit nombre ou un plus grand nombre de rondes d'opérations de chiffrement / déchiffrement, conformément à divers modes de réalisation de la présente invention. Dans les exemples décrits ci- dessus en relation avec les figures 3-5, les données d'entrée consistaient en un octet. Il peut cependant être souhaitable d'effectuer les opérations cryptographiques décrites ci-dessus sur d'autres tailles de données, en fonction de la largeur de bus. Par conséquent, les opérations décrites ci-dessus en relation avec les figures 3-5 peuvent être effectuées en parallèle pour supporter, par exemple, 16 bits, 32 bits, 64 bits, ou d'autres largeurs de bus. La figure 6 est un schéma synoptique qui illustre un système cryptographique conforme à des modes de réalisation supplémentaires de la présente invention. En se référant à la figure 6, on note qu'une carte à puce 100', en conformité avec certains modes de réalisation de la présente invention, inclut une UC 110', un circuit de chiffrement 131', un circuit de déchiffrement 132', un ordonnanceur de clés 140' et une mémoire 120', qui sont configurés comme représenté. La mémoire 120' est couplée à l'UC 110' par un bus de données 150'. Des opérations du circuit de chiffrement 131' et du circuit de déchiffrement 132' sont similaires aux opérations du circuit de chiffrement 131 et du circuit de déchiffrement 132 de la figure 2, envisagées ci-dessus. Une différence entre la carte à puce 100' de la figure 6 et la carte à puce 100 de la figure 2 consiste en ce que la logique de chiffrement dans la carte à puce 100' est intégrée à l'UC 110' de façon à former une seule unité logique, tandis que le circuit cryptographique 130 de la figure 2 est configuré comme un coprocesseur pour l'UC 110 de la figure 2. La figure 7 est un schéma synoptique qui illustre un circuit de détection d'erreur en conformité avec certains modes de réalisation de la présente invention. En se référant à la figure 7, on note que le circuit de détection d'erreur comprend une UC 410, trois circuits logiques 430, 440 et 450 et une mémoire 420 qui sont configurés comme représenté. Le bus de données couplé à l'UC 410 est connecté en parallèle aux circuits logiques 430 et 440. Le circuit logique OU-EX 431 effectue une opération de masque sur les données en utilisant une première configuration MASK1 (Ml) et stocke l'information de sortie dans un registre 432. De façon similaire, le circuit logique OU-EX 441 effectue une opération de masque sur les données en utilisant une deuxième configuration MASK2 (M2) et stocke l'information de sortie dans un registre 442. Bien qu'une opération logique OU-Exclusif soit illustrée pour les opérations de masque des blocs 431 et 441 sur la figure 7, on notera que l'opération de masque peut comprendre une opération OU-Exclusif, une opération d'addition, une opération de soustraction, une opération de multiplication et/ou une opération de division, les opérations d'addition, de soustraction, de multiplication et de division étant effectuées en relation avec un modulo, conformément à divers modes de réalisation de la présente invention. Le circuit logique 430 fournit "données d'entrée" OU-EX M1 à la sortie 460 et le circuit logique 440 fournit "données d'entrée" OU-EX M2 à la sortie 470. Les informations sur ces sorties sont respectivement fournies à des registres 451 et 452 du circuit logique 450. Le circuit logique 450 inclut en outre des circuits logiques OU-EX 453 et 454. Le circuit logique OU-EX 453 est utilisé pour récupérer les données d'entrée originales en effectuant une opération de masque sur le contenu du registre 451, en utilisant la première configuration MASK1 (Ml). L'information de sortie du circuit logique OU-EX 453 est donnée par l'équation suivante: "données d'entrée" OU-EX M1 OU-EX M1 = "données d'entrée". Les données d'entrée sont donc stockées dans la mémoire 420. Le circuit logique OU-EX 454 effectue une opération de masque sur le contenu du registre 452 en utilisant le contenu du registre 451. L'information de sortie du circuit logique OU-EX 454 est donnée par l'équation suivante : "données d'entrée" OU-EX MI OU-EX "données d'entrée" OU-EX M2 = MI OU-EX M2. Un circuit détecteur d'erreur 455 peut comparer l'information de sortie du circuit logique OU-EX 454 avec le résultat connu de M1 OU-EX M2. Si l'information de sortie du circuit logique OU-EX 454 n'est pas M1 OU-EX M2, alors les données d'entrée sur au moins une branche du double bus de données ont été corrompues et une erreur est reconnue. La figure 8 est un schéma synoptique qui illustre un circuit de détection d'erreur en conformité avec des modes de réalisation supplémentaires de la présente invention. Le circuit de détection d'erreur de la figure 8 comprend les mêmes composants que le circuit de détection d'erreur de la figure 7, avec des composants semblables désignés par les mêmes numéros de référence, mais avec un symbole prime à la fin du nombre. Cependant, au lieu de modes de réalisation à double bus de données comme illustré sur la figure 7, la figure 8 illustre des modes de réalisation à double bus d'adresse. Des opérations du circuit de détection d'erreur de la figure 8 sont similaires à celles du circuit de détection d'erreur de la figure 7, à l'exception du fait qu'elles sont appliquées à une information d'adresse transportée sur un double bus d'adresse. Conformément à des modes de réalisation supplémentaires de la présente invention, les modes de réalisation de système cryptographique des figures 2-6 peuvent être combinés avec les modes de réalisation de circuit de détection d'erreur des figures 7 et 8. En se référant à la figure 9, on voit une illustration d'un système cryptographique qui inclut un circuit de détection d'erreur, en conformité avec certains modes de réalisation de la présente invention. Le système cryptographique de la figure 9, en conformité avec certains modes de réalisation de la présente invention, inclut une UC 510, un circuit cryptographique 530, un ordonnanceur de clés 540, un circuit de détection d'erreur 550 et une mémoire 520 qui sont configurés comme représenté. Le circuit cryptographique 530 peut être réalisé sous la forme d'un coprocesseur pour l'UC 510. L'UC 510 et le circuit cryptographique 530 peuvent échanger entre eux de l'information de données et d'adresse. Dans d'autres modes de réalisation, l'UC 510 et le circuit cryptographique 530 peuvent être réalisés dans une seule unité logique, comme celle illustrée sur la figure 6, envisagée ci-dessus. L'architecture et les opérations des circuits de chiffrement 530 et 532 sont sensiblement similaires à l'architecture et aux opérations du circuit de chiffrement 131 de la figure 2, à l'exception de la conception du circuit de boîte S. De façon similaire, l'architecture et les opérations du circuit de déchiffrement 533 sont sensiblement similaires à l'architecture et aux opérations du circuit de déchiffrement 532 de la figure 2, à l'exception de la conception du circuit de boîte S inverse. Comme représenté sur la figure 9, le circuit cryptographique 530 génère "données chiffrées" OU-EX MASK1 (MI) à la sortie 560 et "données chiffrées" OU-EX MASK2 (M2) à la sortie 570. L'architecture et les opérations du circuit de détection d'erreur 550 sont les mêmes que celles des circuits logiques 450 et 450' des circuits de détection d'erreur des figures 7 et 8, respectivement. En se référant à la figure 10, on décrira un circuit logique de chiffrement qui peut être utilisé dans les circuits de chiffrement 531 et/ou 532 de la figure 9, en conformité avec certains modes de réalisation de la présente invention. Dans un but d'illustration, on décrira le circuit logique de chiffrement de la figure 10 en relation avec une implémentation du circuit de chiffrement 531. Les premier et deuxième circuits logiques de ronde 610 et 620 sont sensiblement les mêmes que les premier et deuxième circuits logiques de ronde 210 et 220 envisagés ci-dessus en relation avec la figure 3. Les sous-composants des premier et deuxième circuits logiques de ronde 610 et 620 sont numérotés de façon correspondante aux sous-composants des premier et deuxième circuits logiques de ronde 210 et 220. Cependant, contrairement au circuit logique de chiffrement de la figure 3, les circuits de boîtes S 614, 615, 624 et 625 diffèrent des circuits de boîtes S correspondants de la figure 3. Ceci vient du fait que l'information d'entrée du premier circuit logique de ronde 610 n'est pas simplement les données d'entrée, mais est les données d'entrée sur lesquelles le circuit logique OU-EX 605 a appliqué une opération de masque en utilisant la configuration MASK1 (Ml). Un objectif est de générer à la sortie du circuit de chiffrement 531 "données chiffrées" OU-EX M1. Ceci permet de supprimer la configuration MASK1 (Ml) par une simple opération de masque OU-EX, et ensuite le circuit de déchiffrement 533 peut déchiffrer les données chiffrées en utilisant la logique de chiffrement, incluant la table de boîte S de la figure 4, pour récupérer les données d'entrée originales. Pour faire en sorte que l'information de sortie du circuit de chiffrement 531 soit "données chiffrées" OU-EX M1, le nouveau circuit S1 614, 624 vérifie l'équation suivante : Sl D OU-EX M1 OU-EX A OU-EX K) = Sl(D OU-EX A OU-EX K)OU-EX P-1(M1); dans laquelle D est les données d'entrée, M1 est la première configuration, A est l'au moins une partie de l'adresse (Addrl), K est la clé (Key?), P-1 est un inverse de la permutation effectuée par le circuit de permutation 616, Sl ) est la fonction de transformation SI, et Si( ) est une autre transformation de boîte S utilisée dans une opération de déchiffrement. De façon similaire, le nouveau circuit S2 615, 625 vérifie l'équation suivante : S2 D OU-EX M1 OU-EX A OU-EX K) = S2(D OU-EX A OU-EX K)OU-EX P-1(M1); dans laquelle D est les données d'entrée, M1 est la première configuration, A est l'au moins une partie de l'adresse (Addrl), K est la clé (Keyl), P-1 est un inverse de la permutation effectuée par le circuit de permutation 10 616, Si' ) est la fonction de transformation S2, et S2( ) est une autre transformation de boîte S utilisée dans une opération de déchiffrement. Si i = D OU-EX Al OU-EX K1, alors les équations précédentes pour le nouveau circuit Si 614, 624 et le 15 nouveau circuit S2 615, 625 peuvent être écrites de la façon suivante : S1' (i OU-EX Ml) = Sl(i) OU-EX P-1 (Ml) ; et S2' (i OU-EX Ml) = S2(i) OU-EX P-1(Ml). L'information de sortie du premier circuit logique de ronde 20 610 est donnée par les équations suivantes : P(Sl i OU-EX Ml) Il S2 i OU-EX Ml)) Ce qui peut être réécrit de la façon suivante : P(Sl(i) OU-EX P-1 (M1) Il S2(i) OU-EX P-1 (Ml) = P Sl(i) Il S2 (i)) OU-EX P-1 (Ml) 25 Ce qui peut être réécrit de la façon suivante : P(Sl(i) II S2(i)) OU-EX P(P-1(M1)) = P(Sl(i) I i S2(i)) OU-EX Ml Par conséquent, l'information de sortie du premier circuit logique de ronde 610 est : ED1 OU-EX M1. On appréciera que la fonctionnalité de n'importe lesquels ou de la totalité des modules du circuit de chiffrement 131 et du circuit de déchiffrement 132 de la figure 2, du circuit de chiffrement 131' et du circuit de déchiffrement 132' de la figure 6, des circuits logiques 430, 440 et 450 de la figure 7, des circuits logiques 430', 440' et 450' de la figure 8, et des circuits de chiffrement 531, 532, du circuit de déchiffrement 533 et du circuit de détection d'erreur 550 de la figure 9, peut être réalisée en utilisant des composants matériels discrets, un ou plusieurs circuits intégrés à application spécifique (ASIC), ou un processeur de signal numérique ou un microcontrôleur programmé. Un code d'ordinateur pour accomplir des opérations de systèmes cryptographiques et/ou de circuits de détection d'erreur envisagés ci-dessus peut être écrit en un langage de programmation de haut niveau, tel que Java, C, et/ou C++, pour la commodité du développement. De plus, un code d'ordinateur pour accomplir des opérations de la présente invention peut également être écrit dans d'autres langages de programmation, tels que des langages interprétés, ceci n'étant pas limitatif. Certains modules ou routines peuvent être écrits en assembleur ou même en micro-code, pour améliorer les performances et/ou l'usage de mémoire. En conclusion de la description détaillée, il faut noter que de nombreux changements et modifications peuvent être apportés aux modes de réalisation, sans s'écarter sensiblement des principes de la présente invention. On désire que tous ces changements et modifications soient inclus dans le cadre de la présente invention, comme spécifié dans les revendications suivantes. REVENDICATIONS 1. Système cryptographique, caractérisé en ce qu'il comprend une logique de chiffrement (131) qui est configurée pour chiffrer des données d'entrée en effectuant une opération de masque sur les données d'entrée en utilisant une adresse associée aux données d'entrée. 2. Système cryptographique selon la revendication 1, caractérisé en ce que la logique de chiffrement (131) comprend un premier circuit logique (211) qui est configuré pour effectuer une première opération de masque sur les données d'entrée en utilisant au moins une partie d'une adresse (Addrl), de façon à générer une première information de sortie; et un deuxième circuit logique (212) qui est configuré pour effectuer une deuxième opération de masque sur la première information de sortie en utilisant une clé (Keyl) pour générer une deuxième information de sortie. 3. Système cryptographique selon la revendication 2, caractérisé en ce que chacune des première et deuxième opérations de masque comprend une opération OU-Exclusif, une opération d'addition, une opération de soustraction, une opération de multiplication et/ou une opération de division, les opérations d'addition, de soustraction, de multiplication et de division étant effectuées en relation avec un modulo. 4. Système cryptographique selon la revendication 3, caractérisé en ce qu'il comprend en outre : un circuit de boîte S (214, 215) qui est configuré pour transformer la deuxième information de sortie; et un circuit de permutation (216) configuré pour permuter la deuxième information de sortie transformée, de façon à générer les données d'entrée chiffrées. 5. Système cryptographique selon la revendication 4, caractérisé en ce que le circuit de permutation (216) est configuré pour exécuter une fonction linéaire sur la deuxième information de sortie transformée. FR 07 55535 05.11.2007 27 6. Système cryptographique selon la revendication 5, caractérisé en ce que la fonction linéaire est une fonction de décalage ou une transformation linéaire de bits de la deuxième information de sortie. 7. Système cryptographique selon la revendication 4, caractérisé en ce que les données d'entrée comprennent au moins un octet de données, et en ce que le circuit de boîte S comprend un premier circuit de boîte S (214) et un deuxième circuit de boîte S (215) qui sont configurés pour transformer respectivement un premier segment de la deuxième information de sortie et un deuxième segment de la deuxième information de sortie. 8. Système cryptographique selon la revendication 1, caractérisé en ce que les données d'entrée comprennent 15 au moins un octet de données. 9. Système cryptographique selon la revendication 1, comprenant en outre : une unité de traitement (110); caractérisé en ce que la logique de chiffrement (131) comprend un coprocesseur cryptographique qui est couplé de 20 façon à communiquer avec l'unité de traitement (110), le coprocesseur cryptographique recevant les données d'entrée provenant de l'unité de traitement (110). 10. Système cryptographique selon la revendication 1, comprenant en outre : une unité de traitement (110'); 25 caractérisé en ce que la logique de chiffrement (131') est intégrée à l'unité de traitement (110') de façon à former une seule unité logique. 11. Système cryptographique selon la revendication 1, caractérisé en ce que la logique de chiffrement (131) 30 comprend : un premier circuit logique de ronde (211, 212) qui est configuré pour générer une première information de sortie de circuit logique de ronde en réponse aux données d'entrée, à au moins une première partie d'une adresse (Addrl), et à une première clé (Keyl); un premier circuit 35 de boîte S de ronde (214, 215) qui est configuré pour transformer la première information de sortie de circuit FR 07 55535 05.11.2007 28 logique de ronde; et un premier circuit de permutation de ronde (216) qui est configuré pour permuter la première information de sortie de circuit logique de ronde transformée, de façon à générer une première information de sortie de ronde; un deuxième circuit logique de ronde (221, 222) qui est configuré pour générer une deuxième information de sortie de circuit logique de ronde en réponse à la première information de sortie de ronde, à au moins une deuxième partie de l'adresse (Addr2) et à une deuxième clé (Key2); un deuxième circuit de boîte S de ronde (224, 225) qui est configuré pour transformer la deuxième information de sortie de circuit logique de ronde; et un deuxième circuit de permutation de ronde (226) qui est configuré pour permuter la deuxième information de sortie de circuit logique de ronde transformée, de façon à générer les données d'entrée chiffrées. 12. Procédé pour faire fonctionner un système cryptographique, caractérisé en ce qu'il comprend l'étape suivante : chiffrer des données d'entrée en effectuant une opération de masque sur les données d'entrée en utilisant une adresse associée aux données d'entrée. 13. Procédé selon la revendication 12, caractérisé en ce que le chiffrement des données d'entrée comprend les étapes suivantes effectuer une première opération de masque sur les données d'entrée en utilisant au moins une partie d'une adresse (Addrl) de façon à générer une première information de sortie; et effectuer une deuxième opération de masque sur la première information de sortie en utilisant une clé (Keyl) pour générer une deuxième information de sortie. 14. Procédé selon la revendication 13, caractérisé en ce que chacune des première et deuxième opérations de masque comprend une opération OU-Exclusif, une opération d'addition, une opération de soustraction, une opération de multiplication et/ou une opération de division, les FR 07 55535 05.11.2007 29 opérations d'addition, de soustraction, de multiplication et de division étant effectuées en relation avec un modulo. 15. Procédé selon la revendication 14, caractérisé en ce qu'il comprend en outre les étapes suivantes transformer la deuxième information de sortie en utilisant un circuit de boîte S (214, 215); et permuter la deuxième information de sortie transformée, de façon à générer les données d'entrée chiffrées. 16. Produit - programme d'ordinateur caractérisé en ce qu'il comprend un code de programme lisible par ordinateur incorporé dans un support lisible par ordinateur, et en ce que le code de programme lisible par ordinateur est configuré pour exécuter le procédé de la revendication 12. FR 07 55535 05.11.2007