Brevet FR2857535A1 — publié le 20050114

Procédé et système pour brouiller le contenu d'une cellule dans un circuit intégré La présente invention concerne d'une manière générale le contenu des cellules logiques séquentielles et plus spécifiquement la protection du contenu des registres dans des microcontrôleurs. Les circuits intégrés (IC) sont habituellement testés contre des anomalies résultant de la fabrication. L'un des tests utilisés est un test de balayage. Par ailleurs, l'un des problèmes des circuits intégrés (IC) réside dans la protection du contenu sensible des registres. Ces derniers peuvent être constitués de cellules logiques séquentielles et chacune d'elles peut être balayée. Les procédés de balayage sont très performants mais ils four- Hissent également un moyen simple de voir les valeurs logiques de nombreux réseaux ou registres du circuit intégré (IC). Après une période de fonctionnement du circuit, il est en effet possible, en utilisant le test de balayage, de récupérer le contenu de chaque registre. Ceci constitue un problème lorsque certains registres contiennent des informations sensibles comme des clés d'algorithme de cryptage ou des paramètres de filtres numériques spéciaux (ou toute autre valeur à protéger). Dans certaines applications, par exemple des microcontrôleurs sécurisés ou des cartes à puce, les tests de balayage ne sont pas utilisables ou alors, ils utilisent des procédés de balayage combinés à des générateurs de vecteurs de test intégrés et à des modules analyseurs de signature qui font que rien ne peut être récupéré au ni-veau des broches des circuits intégrés. Dans ce cas, on peut déceler des anomalies même si les entrées et les sorties de chaîne de balayage n'apparaissent pas sur la broche de niveau supérieur du circuit. Pour des modules de mémoire sur-puce et hors-puce, comme une mémoire vive statique (SRAM) ou une mémoire Flash, les données pourraient être brouillées, en utilisant des algorithmes de cryptage, lors de l'écriture et décryptées lors de la lecture. Les procédés pour protéger le contenu d'une telle mémoire sont typiquement réservés aux modules de mémoire: ils sont en effet trop complexes en termes de nombre de portes pour être appliqués à des éléments séquentiels de types cellule pré caractérisés (typique-ment des registres de configuration de périphériques ou des variables état/résultat/paramètre de filtre numéri- que). De plus, le contenu des modules mémoires ne peut être récupéré par des tests de balayage, à l'inverse des cellules séquentielles de type pré caractérisé. La figure 1 est un schéma qui illustre un microcontrôleur simplifié et un système de chaîne de balayage selon une technique antérieure. Le microcontrôleur 100 inclut un microprocesseur 102 couplé à une mémoire 104. Un décodeur d'adresses 106 reçoit et décode des adresses provenant du microprocesseur 102 pour la mémoire 104 et des périphéri- ques 108. Le décodeur d'adresses 106 et les périphériques 108 reçoivent les adresses sur un bus d'adresses 110 tan-dis que le décodeur d'adresses 106 transmet des informations de sélection concernant la sélection d'une mémoire 112 et la sélection de périphériques 114. Les données sont transmises entre le microprocesseur 102, la mémoire 104, et les périphériques 108 sur un bus de données 116. Un signal de lecture ou d'écriture est transmis entre le microprocesseur 102, la mémoire 104 et les périphériques 108 dans un signal de lecture/écriture 117. Le micro- contrôleur 100 reçoit un signal d'horloge 118 et un si- gnal de réinitialisation 120. A titre d'exemple, l'entrée 122 inclut des déclenchements d'un rythmeur et des don-nées d'entrée d'un récepteur/émetteur universel asynchrone (UART) et la sortie 124, des données de sortie d'émetteur UART. Les périphériques 108 peuvent être des logiques fonctionnelles, par exemple un UART, un crypto-traitement, un traitement de signal numérique (DSP), et un filtrage nu- mérique. Le système de chaîne de balayage 126 se connecte au microcontrôleur 100. Les lignes en pointillés sont utilisées sur les figures pour illustrer le chemin des signaux liés au système de chaîne de balayage 126, alors que les lignes continues représentent celui des signaux suivant un circuit non lié à la chaîne de balayage. Le micro-contrôleur 100 reçoit un signal de commande de chaîne de balayage sur une commande de chaîne de balayage 128 et des données sur une entrée de chaîne de balayage 130. Le microcontrôleur 100 transmet des données au système de chaîne de balayage 126 sur une sortie de chaîne de balayage 132. Dans le microcontrôleur 100, le microprocesseur 102 transmet les informations de commande et de données par la chaîne de balayage 134 aux périphériques 108. La sortie correspondant à l'entrée de la chaîne de balayage détermine si les périphériques 108 présentent des anomalies de fabrication. La figure 2 est un schéma qui illustre plus en détail, un exemple de périphérique 108 de la figure 1, selon la technique antérieure. Sur la figure 2, le périphérique 108 comprend un sous-décodeur d'adresses 200, un registre de configuration 202, et une logique de traitement 204. Les entrées du périphérique 108 comprennent une sélection de périphérique 114, un signal de lecture/écriture 117, un bus d'adresses 110, une horloge 118 et un bus de don-nées 116. La commande de chaîne de balayage 128 et l'entrée de chaîne de balayage 130 sont transmises au péri- phérique 108 le long d'une chaîne de balayage 134 (non-représentée sur la figure 2, voir figure 1). Pendant le fonctionnement normal, le sous-décodeur d'adresses 200 reçoit des signaux provenant du micropro- cesseur 102 et du décodeur d'adresses 106. Le sous-décodeur d'adresses 200 transmet un signal d'activation d'écriture le long d'une ligne d'activation d'écriture 206 à des multiplexeurs sélectionnés 208. Lorsqu'un multiplexeur reçoit un signal d'activation d'écriture, il choisit entre une entrée disponible via le bus de données 116 et une cellule séquentielle, par exemple, une bascule de type D de balayage (SDFF) 210. Les multiplexeurs 208 transmettent l'entrée reçue à leurs bascules SDFF respectives 210. Les bascules SDFF 210 transmettent à la logi- que de traitement 204 lorsqu'elles reçoivent des signaux d'horloge provenant de l'horloge 118. Une bascule de type D de balayage est une bascule de type D standard dont l'entrée D est commandée par la sortie d'un multiplexeur deux-à-un (nonreprésenté). Le multiplexeur possède des entrées SD et D ainsi qu'une broche de sélection SC (le multiplexeur deux-à-un est ici représenté comme une partie d'une bascule de type D de balayage 210 avec des entrées SC, SD et D). L'entrée SD est commandée soit par une entrée de chaîne de balayage 130 soit par la sortie provenant d'une bascule de balayage de type D précédente. Par exemple, la bascule SDFF 210-1 reçoit des données à l'entrée SD qui proviennent de l'entrée de chaîne de balayage 130, alors que la bascule SDFF 210-2 reçoit des données à l'entrée SD qui proviennent de la sortie de la bascule SDFF 210-1. Les deux bascules SDFF 210-1 et 210-2 reçoivent des signaux de commande de chaîne de balayage (signaux de sélection) à l'entrée SC issus de la commande de chaîne de balayage 130. Le microcontrôleur 100 peut être commandé normalement, il mémorise alors des valeurs dans les périphériques 108, puis commuté en mode balayage, le contenu des registres dans les périphériques 108 pouvant alors être lu et ana- lysé. En mode balayage, la bascule SDFF 210-2 va transmettre sa valeur via une sortie de registre de balayage 210 à la logique de traitement 204. La logique de traite-ment 204 transfère des données issues de la sortie de registre de balayage 214 directement vers la sortie de chaîne de balayage 132 sans en modifier la valeur. Les signaux de commande transfèrent les données de la bascule SDFF 210-1 à la bascule SDFF 210-2 puis, vers l'extérieur, à la sortie de chaîne de balayage 132. De cette manière, les données sensibles contenues dans les regis- tres ou les bascules SDFF, peuvent être lues par ce pro-cédé de balayage. Un système et un procédé sont nécessaires pour protéger les cellules séquentielles, ou le contenu du registre, dans des systèmes utilisant le procédé de chaîne de balayage. Le système doit protéger les données confidentielles chargées dans les registres tout en permettant le test de chaîne de balayage. Le système et le procédé décrits ici offrent un moyen de brouiller la valeur du registre sans affecter la fonctionnalité de la logique associée. Un réseau combinatoire de cellules logiques est placé avant le registre qui agit comme une fonction de brouillage. Celle-ci n'est spéci- fiée dans aucune fiche technique à l'usage de r 2857535 l'utilisateur puisque aucune fonctionnalité pour l'utilisateur n'y est associée. La fonction combinatoire inverse est placée après le registre. Par conséquent, même si l'emplacement du registre est connu grâce à la chaîne de registre de balayage et son contenu après une période de fonctionnement normal récupéré, il est plus difficile de discerner la signification fonctionnelle de la valeur dans l'application courante. La présente invention réduit la possibilité de récupérer le contenu d'une quelconque cellule séquentielle (registre) par le procédé de test le plus connu (balayage) sans pour autant compromettre son résultat. D'autres caractéristiques et avantages de l'invention apparaîtrons à l'examen de la description détaillée ci-après, et des dessins annexés, sur lesquels: - la figure 1 est un schéma illustrant un mi- crocontrôleur simplifié selon la technique antérieure, - la figure 2 est un schéma illustrant plus en détail un exemple de périphérique de la figure 1 selon la technique antérieure, - la figure 3 est un schéma illustrant la pré-sente invention réalisée à l'aide d'un périphérique de la figure 1, la figure 4 est un schéma illustrant un mode de réalisation de la présente invention qui utilise une fonction de brouillage prédéterminée, - la figure 5 est un schéma illustrant un mode de réalisation de la présente invention qui utilise une fonction de brouillage aléatoire, - la figure 6 est un schéma illustrant un mode de réalisation de la présente invention qui utilise une fonction de brouillage aléatoire, et - la figure 7 est un ordinogramme illustrant un procédé d'implémentation de la présente invention. Les dessins annexés comportent, pour l'essentiel, des éléments de caractère certain. Ils pourront non seulement servir à compléter l'invention, mais aussi contribuer à sa définition, le cas échéant. La présente invention peut utiliser des réseaux combinatoires pour brouiller les cellules de mémoire. Elle rend alors ce procédé plus adapté aux bascules DFF pré carac- térisées, ou SDFF, (par exemple les bascules DFF à l'intérieur d'un registre) et sécurise davantage le contenu sensible du registre. De plus, dans le cas d'un réseau combinatoire, la présente invention permet le brouillage et le désembrouillage du contenu d'un registre dans un seul cycle d'horloge. A titre de variante, un algorithme séquentiel, situé avant et après le registre visé, peut remplacer les réseaux combinatoires, bien que l'algorithme séquentiel puisse nécessiter plus d'un cycle d'horloge pour brouiller et désembrouiller le contenu du registre. On peut protéger le contenu d'un registre en n'insérant pas les bascules DFF dans la chaîne de balayage de manière à ne pas les tester. La présente invention permet de faire se dérouler le test suivant le plan prévu (ba- z 2857535 layage complet) avec un test de balayage et ce, sans perte de confidentialité. La présente invention peut être utilisée avec des éléments séquentiels fonctionnant comme un registre de configuration afin de protéger leur conte- nu et d'éviter qu'il ne soit facilement récupéré. Le système de chaîne de balayage permet une lecture du contenu des registres alors même que les registres peu-vent contenir des données sensibles ou confidentielles. La présente invention brouille les données dans le registre de telle sorte qu'il est difficile de faire coïncider la valeur récupérée avec la valeur fonctionnelle de l'application. Seules quelques personnes connaîtront le pro-cédé de brouillage, par exemple, l'architecte et le concepteur du circuit. Dès lors, si un brouillage aléatoire ou pseudo- aléatoire est utilisé, personne ne connaîtra le contenu exact des registres d'un point de vue fonctionnel. La figure 3 est un schéma qui illustre un mode de réalisation de la présente invention implémenté avec un registre de configuration dans un périphérique de la figure 1. Sur la figure 3, un sous-décodeur d'adresses 200 reçoit une sélection de périphérique 114, un signal de lecture/écriture 117, et un bus d'adresses 110. Le sous-décodeur d'adresses est connecté à un registre de configuration 202 par une ligne d'activation d'écriture 206. Le registre de configuration 202 est connecté à la logique de traitement par l'intermédiaire d'une unité de désembrouillage 310. L'unité de brouillage 300 est couplée au bus de données 116 et au registre de configuration 202. L'unité de brouillage 300 est prévue capable de, ou configurée pour , recevoir des données provenant du bus de données 116 comme entrée d'unité de brouillage. L'unité de brouillage 300 brouille l'entrée selon un procédé qui peut être prédéterminé, aléatoire, ou pseudo-aléatoire. Les données ainsi brouillées sont transmises au registre de configuration 202. Si le fonctionnement normal est interrompu et le contenu des registres lu par le système de chaîne de balayage 126, seules les données brouillées seront transmises par la sortie de registre de balayage 214 puis par la sortie de chaîne de balayage 132, protégeant ainsi le contenu des registres. L'unité de désembrouillage 310 est couplée au registre de configuration 202. L'unité de désembrouillage 310 est prévue capable de recevoir les données brouillées prove- nant du registre de configuration 202. L'unité de désembrouillage est capable de désembrouiller les données brouillées selon le procédé inverse de celui utilisé par l'unité de brouillage 300 pour brouiller les données. Les valeurs de sortie de l'unité de désembrouillage 310 doi- vent être identiques aux valeurs d'entrée du bus de don-nées 116. Bien que l'unité de brouillage 300 et l'unité de désembrouillage 310 soient représentées ici sans liai-son directe entre elles, l'homme du métier reconnaîtra qu'elles peuvent recevoir/partager une valeur générée d'une manière aléatoire ou pseudo-aléatoire. Dans un premier mode de réalisation, une fonction de brouillage agit de la manière suivante. Un premier réseau combinatoire, l'unité de brouillage 300, utilise la fonc- tion F1 et un second réseau combinatoire, l'unité de désembrouillage 310, la fonction F2. Si X est une entrée codée en binaire sur n-bit (n étant un nombre entier) dé-livrée par le bus de données 116, alors F1(X) est la va-leur de sortie obtenue comme résultat du premier réseau combinatoire. 2857535 10 Si les deux réseaux combinatoires étaient connectés en série, Y étant la sortie du premier réseau commandant l'entrée du second réseau et Z étant la sortie du second réseau (Y, X étant des valeurs binaires), alors: Y = Fl (X) , Z = F2(Y) et, Z = F2 (F1 (X)) . Si n est la taille en bits de X, Fl (X) et F2(X), alors l'expression de F1 et F2 en utilisant Z = X donne, par exemple: Fl (X) = (X + 1) mod 2n et F2(X) = (X - 1) mod 2n. Par conséquent, Z = F2 (F1(X)) = F2 (X + 1) = (X + 1) - 1 = X et Z = X F1(X), F2(X) peuvent être sélectionnées parmi diverses fonctions, y compris des tables de traduction dans les-quelles chaque valeur binaire X est codée par une autre valeur. F1(X) peut également être un traducteur code bi- paire-code de Gray et F2(X) sa fonction inverse c'est-à-dire un traducteur code de Gray-code binaire. La figure 4 est un schéma qui illustre un mode de réalisation de la présente invention utilisant une fonction de brouillage prédéterminée. Le registre de brouillage 300 inclut un inverseur 400 et une porte Ou Exclusif (XOR) 410. La fonction mathématique de l'inverseur 400 et de XOR 410 est "+ 1 modulo 4". Si des entrées D [O] et DU] de l'unité de brouillage 300 valent respectivement "1" et "1", alors la sortie d'unité de brouillage de l'unité de brouillage 300 vaut "11 + 1 modulo 4" c'est à dire "00". L'homme du métier reconnaîtra que de nombreuses fonctions différentes peuvent être utilisées pour brouiller et dé- sembrouiller les données, par exemple, "+ 1 modulo N", N étant un nombre entier quelconque. La logique de traitement 204 doit recevoir la valeur d'entrée initiale c'est-à-dire "11". Par conséquent un inverseur 420 et une porte Non Ou Exclusif (XNOR) 430 de l'unité de désembrouillage 310 doivent utiliser la fonction mathématique "- 1 modulo 4". Une entrée d'unité de désembrouillage qui vaut "00" devient alors "00 - 1 modulo 4" c'est-àdire "11". Dans un mode de réalisation, l'unité de brouillage 300 délivre une sortie d'unité de brouillage qui est chargée dans le registre de configuration 202 puis transmise à l'unité de désembrouillage 310, qui délivre ensuite une sortie désembrouillée, le tout dans un même cycle d'horloge. Si le contenu du registre de configuration 202 est récupéré par le système de chaîne de balayage 126, il n'y aura pas de cohérence entre la valeur lue et la valeur fonctionnelle telle que prévue par l'application. En effet, le système de chaîne de balayage 126 lit les valeurs d'entrée brouillées et ce avant que l'unité de désembrouillage 310 ne les ait désembrouillées en valeurs d'entrée initiales c'est-à-dire, telles que délivrées par le bus de données 116. Bien que la figure 4 représente un inverseur, des portes XOR et XNOR, toute combinaison de logique dans laquelle X = Z serait également appropriée. De plus, l'homme du métier reconnaîtra que le bus de données 116 peut avoir un nombre différent de bits et que l'unité de brouillage 300 et l'unité de désembrouillage 310 peuvent admettre des bus de données ayant des tailles différentes. La figure 5 est un schéma qui illustre un mode de réali- sation de la présente invention utilisant une fonction de brouillage aléatoire. L'unité de brouillage 300 comprend, par exemple, un additionneur à deux bits 500. Un générateur de nombres, soit aléatoire, soit pseudo-aléatoire, est couplé à l'unité de brouillage 300, par exemple, un générateur de nombres 505. Le générateur de nombres 505 délivre une valeur à une unité de mémorisation 510 ainsi qu'à l'unité de brouillage 300. L'unité de brouillage 300 reçoit cette valeur du générateur de nombres 505 et l'additionneur 500 l'ajoute à une valeur à deux bits reçue du bus de données 116. La somme obtenue comme résultat est ensuite transmise au registre de configuration 202. Ainsi, si le générateur de nombres 505 produit, par exemple,la valeur bi- naire "01", et si l'unité de brouillage 300 reçoit comme entrées D[0] et D[1] la valeur "11", alors la somme obtenue comme résultat est "00". "00" est donc la valeur binaire transmise au registre de configuration 202. L'unité de mémorisation 510 conserve la valeur délivrée par le générateur de nombres 505. De cette manière, à chaque fois que de nouvelles données sont écrites à par-tir du bus de données 116, un signal provenant de la ligne d'activation d'écriture 206 ordonne à l'unité de mé- morisation 510 de délivrer la nouvelle valeur, à défaut, l'unité de mémorisation 510 délivre la dernière valeur utilisée dans l'unité de brouillage 300. L'unité de désembrouillage 310 reçoit de l'unité de mémo- risation 510 la valeur binaire transmise par le généra- teur de nombres 505 à l'unité de mémorisation 510 dans un cycle d'horloge donné. Selon l'exemple mentionné ci-dessus, le registre de configuration 202, après avoir reçu la valeur "00" de l'unité de brouillage 300, trans- met cette valeur "00" à l'unité de désembrouillage 310. L'unité de désembrouillage 310 comprend un soustracteur à deux bits 520, elle soustrait par conséquent la valeur "01" à la valeur "00". La valeur "01" a été générée par le générateur de nombres 505 et mémorisée dans l'unité de mémorisation 510 dans le même cycle d'horloge dans lequel l'unité de désembrouillage 310 reçoit la valeur "00". Le résultat est "11", qui est la valeur initiale délivrée en sortie par le bus de données 116 au début du cycle d'horloge. Dans un premier mode de réalisation, l'unité de mémorisation 510 comporte un multiplexeur 530 et une bascule de type D (DFF) 540. Le contenu du registre de configuration 202 change à chaque fois qu'il fait l'objet d'une écriture par le bus de données 116. Dans le mode de réalisation suivant, le contenu du registre de configuration 202 change à chaque cycle d'horloge, qu'il fasse ou non l'objet d'une écri- ture. La figure 6 est un schéma qui illustre un mode de réalisation de la présente invention utilisant une fonction de brouillage aléatoire. En fonctionnement normal, le bus de données 116 transmet des données au multiplexeur 600. Le multiplexeur 600 reçoit un signal d'activation d'écriture provenant de la ligne d'activation d'écriture 206 et transmet les données reçues depuis le bus de données 116 à l'unité de brouillage 300. L'unité de brouillage 300 reçoit un nombre aléatoire ou pseudo-aléatoire du généra- teur de nombres 505 et ajoute ce nombre aux données reçues du multiplexeur 600 grâce à l'additionneur 500. Dans cet exemple, le nombre est un nombre binaire à deux bits. Le nombre brouillé obtenu comme résultat est transmis au registre de configuration 610. Le registre de configuration 610 charge chacun des bits du nombre brouillé à deux bits dans chacune des bascules SDFF. La bascule DFF 630 reçoit également le nombre aléatoire ou pseudo-aléatoire à partir du générateur de nombres 505 et dans le même cycle d'horloge dans lequel elle a reçu le nombre, elle transmet ce nombre à l'unité de désembrouillage 310. L'unité de désembrouillage 310 reçoit donc le nombre aléatoire ou pseudo-aléatoire de la bas- cule DFF 630. Elle reçoit également le contenu brouillé des bascules SDFF 620. L'unité de désembrouillage 310 soustrait alors le nombre aléatoire ou pseudo-aléatoire au nombre brouillé en utilisant un soustracteur 525. L'unité de désembrouillage 310 délivre enfin la valeur désembrouillée à la logique de traitement 204 et au multiplexeur 600. Dans un cycle d'horloge dans lequel il n'y a pas d'opération "d'écriture" du bus de données 116 vers le multi- plexeur 600, ce dernier reçoit uniquement la sortie désembrouillée de l'unité de désembrouillage 310. Sans signal d'activation d'écriture provenant de la ligne d'activation d'écriture 206, le multiplexeur 600 sélectionne la sortie désembrouillée et la transmet à l'unité de brouillage 300. L'unité.de brouillage 300 reçoit un nombre aléatoire ou pseudo-aléatoire du générateur de nombres 505 ainsi que la sortie désembrouillée, les additionne et les charge dans les bascules SDFF 620. L'effet de cette opération est de brouiller à nouveau mais à l'aide d'un nouveau nombre, à chaque cycle d'horloge, la sortie désembrouillée provenant de l'unité de désembrouillage 310. L'homme du métier reconnaîtra que le générateur de nombres 505 peut être un autre registre de configuration, un registre configurable qui ne fait pas partie du système de chaîne de balayage 126, la sortie d'un indicateur d'état d'une machine à états définis, un indicateur d'interruption, ou tout autre générateur de valeurs aléatoires ou déterminables. Les informations sensibles ou confidentielles chargées dans le registre de configuration 610 sont plus difficiles à récupérer avec une fonction de brouillage variable et continu. La figure 7 est un ordinogramme qui illustre un procédé de brouillage du contenu des cellules séquentielles dans un circuit intégré. Dans le bloc 700, a lieu le brouillage des données. Dans le bloc 710, a lieu le chargement des données brouillées dans une cellule séquentielle. Dans le bloc 720, a lieu le déchargement des données brouillées à partir de la cellule séquentielle. Dans le bloc 730, a lieu le désembrouillage des données. Un avantage de la présente invention est que les réseaux combinatoires utilisés pour brouiller et désembrouiller le registre comprennent un petit nombre de portes, ce qui leur permet de s'ajuster plus facilement sur un circuit intégré et de maintenir son coût à un niveau faible. L'homme du métier reconnaîtra à partir de la description précédente, des figures et des revendications que des modifications et des changements peuvent être apportés à la présente invention sans s'écarter de la portée de la pré-sente invention définie dans les revendications suivantes. La description ci-dessus montre. comment protéger la confidentialité du contenu des registres, c'est-à-dire les cellules séquentielles. Celles-ci peuvent contenir: - un paramètre d'un algorithme de traitement de signal. numérique, - une clé d'un algorithme de cryptage, ou - une valeur temporaire d'un bus système. Il a été décrit ici un microcontrôleur 100 mais l'invention s'applique de la même manière à un micro-ordinateur possédant un registre, ledit registre étant prévu capable de recevoir des données à partir d'un bus de données 116. Le micro-ordinateur comprend alors un système pour brouiller des données dans le registre, com- prenant une unité de brouillage 300 couplée au registre et au bus de données 116, l'unité de brouillage 300 étant prévue capable de recevoir une entrée d'unité de brouillage provenant du bus de données 116 et de produire une sortie d'unité de brouillage qui diffère de l'entrée d'unité de brouillage, dans laquelle la sortie d'unité de brouillage est transmise au registre, et une unité de désembrouillage 310 couplée au registre et prévue capable de recevoir une entrée d'unité de désembrouillage à par-tir de la cellule séquentielle et de produire une sortie d'unité de désembrouillage qui diffère de l'entrée d'unité de désembrouillage, dans laquelle la sortie d'unité de désembrouillage est égale à l'entrée d'unité de brouillage. REVENDICATIONS 1. Système pour brouiller des données dans une cellule séquentielle, ladite cellule étant prévue capable de re- cevoir des données d'un bus de données (116), comprenant: une unité de brouillage (300) couplée à la cellule séquentielle et au bus de données (116), ladite uni-té (300) étant prévue capable de recevoir une entrée d'unité de brouillage provenant du bus de données (116) et de produire une sortie d'unité de brouillage qui diffère de l'entrée d'unité de brouillage, dans laquelle la sortie d'unité de brouillage est transmise à la cellule séquentielle, et une unité de désembrouillage (310) couplée à la cellule séquentielle, ladite unité (310) étant prévue capable de recevoir une entrée d'unité de désembrouillage provenant de la cellule séquentielle et de produire une sortie d'unité de désembrouillage qui diffère de l'entrée d'unité de désembrouillage, dans laquelle la sortie d'unité de désembrouillage est identique à l'entrée d'unité de brouillage. 2. Système selon la revendication 1, dans lequel la cellule séquentielle comprend une bascule de type D (540). 3. Système selon la revendication 1, dans lequel la cellule séquentielle est un registre de configuration (202). 4. Système selon la revendication 1, dans lequel l'unité de brouillage (300) est prévue capable de produire la sortie d'unité de brouillage en utilisant une valeur aléatoire. 5. Système selon la revendication 1, dans lequel l'unité de brouillage (300) produit la sortie d'unité de brouillage en manipulant l'entrée d'unité de brouillage à l'aide d'une opération de brouillage: + 1 modulo N, N étant un nombre entier. 6. Système selon la revendication 5, dans lequel l'unité de brouillage (300) comporte en outre un inverseur (400) et une porte Ou Exclusif XOR (410). 7. Système selon la revendication 5, dans lequel l'unité de désembrouillage (310) produit la sortie d'unité de désembrouillage en manipulant l'entrée d'unité de désembrouillage à l'aide d'une opération de désembrouil- lage: - 1 modulo N, N étant un nombre entier. 8. Système selon la revendication 7, dans lequel l'unité de désembrouillage (310) comporte en outre un inverseur (420) et une porte Non Ou Exclusif XNOR {430). 9. Système selon la revendication 1, dans lequel l'unité de brouillage (300) produit la sortie d'unité de brouillage en manipulant l'entrée d'unité de brouillage à l'aide d'une fonction de brouillage et l'unité de désem- brouillage (310) produit la sortie d'unité de désembrouillage en manipulant l'entrée d'unité de désembrouillage à l'aide d'une fonction de désembrouillage, la fonction de désembrouillage étant l'inverse de la fonction de brouillage. 10. Système selon la revendication 9, dans lequel l'unité de brouillage (300) reçoit un nombre, la fonction de brouillage étant prévue capable de manipuler l'entrée d'unité de brouillage à l'aide dudit nombre. 11. Système selon la revendication 10, dans lequel l'uni-té de désembrouillage (310) reçoit le nombre, la fonction de désembrouillage étant prévue capable de manipuler l'entrée d'unité de désembrouillage à l'aide dudit nom- bre. 12. Système selon la revendication 11, comprenant en outre un générateur de nombres {505), prévu capable de générer le nombre, et une unité de mémorisation (510) pré- vue capable de mémoriser ledit nombre pour l'unité de désembrouillage (310). 13. Système selon la revendication 12, dans lequel le générateur de nombres (505) est un générateur de séquences aléatoires. 14. Système selon la revendication 12, dans lequel l'uni-té de mémorisation (510) est un multiplexeur (530) couplé à une bascule de type D (540). 15. Système selon la revendication 12, dans lequel la cellule séquentielle reçoit un signal d'horloge (118) et est prévue capable de recevoir des données à des intervalles définis par ledit signal {118), dans lequel l'uni- té de mémorisation (510) et le générateur de nombres (505) reçoivent ledit signal (118) et dans lequel l'unité de brouillage (300) est prévue capable de transmettre la sortie d'unité de brouillage à la cellule séquentielle à des intervalles définis par le signal d'horloge {118) et une réception de données. 16. Système selon la revendication 11, dans lequel l'uni-té de brouillage (300) comporte en outre des moyens de multiplexage prévus capables de recevoir l'entrée d'unité de brouillage et la sortie d'unité de désembrouillage. 2857535 2.d 17. Système selon la revendication 16, comprenant en outre un générateur de nombres (505) prévu capable de générer le nombre ainsi qu'une unité de mémorisation (510) prévue capable de mémoriser ledit nombre pour l'unité de désembrouillage (310). 18. Système selon la revendication 17, dans lequel le générateur de nombres (505) est un générateur de séquences 10 aléatoires. 19. Système selon la revendication 17, caractérisé en ce que l'unité de mémorisation (510) est une bascule de type D (540). 20. Système selon la revendication 17, comprenant en outre un moyen de diriger la sortie de l'unité de désembrouillage (310) vers l'entrée de l'unité de brouillage (300), dans lequel la cellule séquentielle reçoit un si- gnal d'horloge (118) et est prévue capable de recevoir des données à des intervalles définis par le signal d'horloge (118), dans lequel l'unité de mémorisation (510) et le générateur de nombres (505) reçoivent le signal d'horloge (118) et l'unité de brouillage (300) est prévue capable de transmettre la sortie d'unité de brouillage à la cellule séquentielle à des intervalles définis par le signal d'horloge (118), l'unité de brouillage (300) utilisant la sortie d'unité de désembrouillage comme entrée d'unité de brouillage s'il n'y a pas d'en- trée d'unité de brouillage provenant du bus de données (116). 21. Système selon la revendication 20, dans lequel le moyen de diriger la sortie de l'unité de désembrouillage t1 (310) vers l'entrée de l'unité de brouillage (300) consiste en un multiplexeur (600). 22. Microcontrôleur (100) possédant une cellule séquen- tielle prévue capable de recevoir des données à partir d'un bus de données (116), un système pour brouiller les données dans la cellule séquentielle, comprenant: une unité de brouillage (300) couplée à la cel- Iule séquentielle et au bus de données {116), ladite uni-té (300) étant prévue capable de recevoir une entrée d'unité de brouillage à partir du bus de données (116) et de produire une sortie d'unité de brouillage qui diffère de l'entrée d'unité de brouillage, dans laquelle la sor- tie d'unité de brouillage est transmise à la cellule séquentielle, et une unité de désembrouillage (310) couplée au registre et prévue capable de recevoir une entrée d'unité de désembrouillage à partir de la cellule séquentielle et de produire une sortie d'unité de désembrouillage qui diffère de l'entrée d'unité de désembrouillage, dans la-quelle la sortie d'unité de désembrouillage est égale à l'entrée d'unité de brouillage. 23. Microcontrôleur (100) selon la revendication 22, comprenant en outre un module périphérique (108) couplé au microcontrôleur (100), dans lequel la cellule séquentielle est un registre de configuration (202) dans le moÉdule périphérique (108). 24. Microcontrôleur (100) selon la revendication 22, dans lequel la cellule séquentielle mémorise un paramètre d'un algorithme de traitement de signal numérique. 25. Microcontrôleur (100) selon la revendication 22, dans lequel la cellule séquentielle est une clé d'un algorithme de cryptage. 26. Microcontrôleur (100) selon la revendication 22, dans lequel la cellule séquentielle est une valeur temporaire d'un bus système. 27. Micro-ordinateur possédant un registre, ledit regis- tre étant prévu capable de recevoir des données à partir d'un bus de données (116), et un système pour brouiller des données dans le registre, comprenant: une unité de brouillage (300) couplée au regis- tre et au bus de données (116), l'unité de brouillage (300) étant prévue capable de recevoir une entrée d'unité de brouillage provenant du bus de données {116) et de produire une sortie d'unité de brouillage qui diffère de l'entrée d'unité de brouillage, dans laquelle la sortie d'unité de brouillage est transmise au registre, et une unité de désembrouillage (310) couplée au registre et prévue capable de recevoir une entrée d'unité de désembrouillage à partir de la cellule séquentielle et de produire une sortie d'unité de désembrouillage qui diffère de l'entrée d'unité de désembrouillage, dans la-quelle la sortie d'unité de désembrouillage est égale à l'entrée d'unité de brouillage. 28. Procédé de brouillage de données d'une cellule séquentielle dans un circuit intégré comprenant les étapes: brouiller les données (700), charger les données brouillées dans la cellule séquentielle (710), décharger les données brouillées à partir de ladite cellule séquentielle (720), et désembrouiller les données {730). 29. Procédé selon la revendication 28, dans lequel la cellule séquentielle est un registre et le circuit intégré un microcontrôleur (100). 30. Procédé selon la revendication 28, dans lequel le brouillage comporte l'étape: exécuter la fonction mathématique "+ 1 modulo N" sur les données, N étant un nombre entier. 31. Procédé selon la revendication 28, comprenant en ou- tre l'étape: générer un nombre; et dans lequel le brouillage des données (700) comprend en outre la manipulation des données à l'aide dudit nombre. 32. Procédé selon la revendication 31, dans lequel le chargement des données brouillées dans la cellule séquentielle (710) survient à chaque cycle d'horloge. 33. Procédé selon la revendication 31, dans lequel le chargement des données brouillées dans la cellule séquentielle (710) survient à chaque cycle d'horloge dans le-quel il y a de nouvelles données à brouiller.