FR 2723223 A1 19960202 FR 9409485 A 19940729 1- 2723223 PROCEDE DE BROUILLAGE NUMERIQUE ET APPLICATION A UN CIRCUIT PROGRAMMABLE L'invention concerne un procédé de brouillage numérique et son application à un circuit programmable, essentiellement pour protéger de l'inspection le contenu d'un programme stocké dans une mémoire. L'invention s'applique notamment aux circuits sécurisés de gestion de transactions financières. Les données d'instructions d'un programme contenu dans une mémoire morte sont habituellement protégées par mélange des adresses physiques en mémoire de ces données d'instruction. Ainsi, ces données ne sont plus rangées dans la mémoire selon leur adresse logique, mais éparpillées. En mode opérationnel du circuit programmable, un circuit de décodage spécifique permet de retrouver l'adresse physique réelle en mémoire d'une donnée d'instruction d'après son adresse logique. Ce procédé permet une protection contre l'inspection visuelle de la mémoire programme. Cependant, les données d'instruction transitent en clair sur le bus de données, pour être exécutées par le microprocesseur du circuit. Or, il est techniquement possible de placer un espion sur le bus de données, pour lire les données qui transitent. Le programme peut alors être reconstitué. En pratique la protection apportée est donc limitée. En outre, la complexité du circuit de décodage d'adresse permettant de retrouver les adresses physiques réelles conduit à utiliser les mêmes clefs de codage et partant, le même circuit de décodage pour une famille de produits donnée, afin de réduire les coûts de fabrication. Or, si un fraudeur arrive à reconstituer le programme pour un des produits, il obtient une correspondance entre les adresses physiques et les adresses logiques, ce qui lui permettra de retrouver les clefs et l'algorithme utilisés pour mélanger les adresses. Il aura ainsi la solution pour toute la famille. Un objet de l'invention est d'améliorer la protection des données dans un circuit programmable. Un autre objet de l'invention est un procédé de protection de ces données facile à mettre en oeuvre, permettant une protection individualisée pour chaque produit. Telle qu'elle est caractérisée, l'invention concerne un procédé de brouillage numérique de données de n bits dans un circuit programmable comprenant une unité de commande et au moins une mémoire associée à un bus de données. Selon l'invention, le procédé de brouillage consiste à brouiller les données à mémoriser dans la dite mémoire, en effectuant pour chaque donnée, une permutation des n bits. Plus particulièrement, pour une mémoire morte comprenant des données de programme exécutable, la permutation des n bits est effectuée à la compilation du programme et le débrouillage numérique des données est effectué en entrée de l'unité de commande, pour chaque donnée lue en mémoire morte, après transfert sur le bus de données vers l'unité de commande. L'invention concerne aussi un circuit programmable comprenant un circuit de permutation des n bits de données en entrée de l'unité de commande. Selon l'invention, le circuit de permutation comprend n étages de permutation à n entrées et une sortie, chaque étage comprenant n cellules de permutation. Avantageusement, une cellule de permutation est réalisée selon la même technologie que les cellules de la mémoire programme. D'autres caractéristiques et avantages de l'invention sont décrits dans la description suivante, faite à titre indicatif et non limitatif, et en référence aux dessins annexes dans lesquels: - la figure 1 est un schéma-bloc d'un circuit programmable protégé selon l'invention; - la figure 2 est un schéma de principe d'un circuit de permutation selon l'invention; - la figure 3 est un dessin topologique de deux étages d'un circuit de permutation selon l'invention et - la figure 4 est une vue en coupe AA du dessin topologique de la figure 3. Le procédé de brouillage numérique selon l'invention est expliqué en relation avec le circuit programmable représenté sur la figure 1. Le circuit programmable comprend une unité de commande UC qui est un organe du type microprocesseur. Dans l'exemple, l'unité de commande reçoit des données d'instructions à exécuter d'un registre d'instruction RI et contrôle un registre de données RD et par exemple des circuits de calcul arithmétique et logique, ou des compteurs, regroupés dans un circuit de calcul référencé 1 sur la figure. Dans l'exemple représenté, le circuit de calcul 1 reçoit des données du registre de données RD sur lesquelles il effectue des calculs selon les instructions de l'unité de commande. Les différentes données sont transférées vers les registres de données ou d'instructions par un bus de données DBUS connecté à différents circuits mémoire. Le circuit programmable comprend au moins une mémoire morte ROM, qui contient les données d'instruction d'un programme exécutable par l'unité de commande UC. Selon l'invention, ces données d'instruction sont brouillées par permutation de bits effectués au moment de la compilation du programme. Le circuit programmable comprend aussi d'autres mémoires de données, dans l'exemple une mémoire vive RAM et une mémoire programmable et effaçable électriquement EEPROM. Selon l'invention, un circuit de permutation DBrl est placé en entrée du registre d'instructions RI, pour débrouiller les données instructions contenues dans la mémoire morte et transférées par le bus de données DBUS. Un exemple de réalisation d'un tel circuit de permutation selon l'invention est détaillé sur le schéma de principe de la figure 2. Le bus de données DBUS ayant une largeur de n bits, le circuit de permutation comprend n étages de permutation, soit EpO à Ep7 dans l'exemple (n = 7). Chaque étage de permutation reçoit en entrée les n bits du bus de données, soit DO-D7 dans l'exemple et délivre un bit de sortie débrouillé: l'étage de permutation EpO délivrée le bit de sortie DiO,..... l'étage de permutation Ep7 délivre le bit de sortie Di7. Ce sont ces bits de sortie DiO-Di7 qui sont appliqués en entrée du registre d'instructions RI. Chaque étage de permutation comprend n cellules de permutation cO-c7 dans l'exemple dont la fonction est celle d'un fusible, une seule parmi n permettant la transmission du bit de données d'entrée associé sur le bit de donnée de sortie de l'étage. A chaque étage de permutation correspond un rang de cellule passante différent. Dans l'exemple représenté, la cellule passante de l'étage: EpO est c7 Epl c3 Ep2 c6 Ep7 cO Le circuit de permutation DBrl est ainsi caractérisé par une sélection de permutation pour chaque étage. Pour un bus de n bits de données, on a: n possibilités pour le premier étage EpO; n-1 possibilités pour le deuxième étage Epl; et ainsi de suite. Le procédé de brouillage selon l'invention permet ainsi n! possibilités différentes de brouillage pour un bus de données de largeur n bits. Le circuit de permutation DBrl effectue le débrouillage numérique des données d'instructions préalablement brouillées selon la même sélection des permutations. Ainsi, selon l'invention, les données d'instructions sont brouillées à la fois en mémoire morte, mais aussi quand elles transitent sur le bus de données de la mémoire morte vers l'unité de commande. Elles ne sont débrouillées qu'après le transfert sur le 6 2723223 bus de données par le circuit de permutation DBrl, en entrée de l'unité de commande. Sur le bus de données transitent alors tantôt des données brouillées (les données d'instructions) et des données non brouillées, issues des autres mémoires ou issues de l'unité de commande pour être écrites dans ces mémoires. Avantageusement, on prévoit un circuit de permutation pour une ou plusieurs des autres mémoires du circuit programmable, placé entre la mémoire et le bus de données: on accroit ainsi les difficultés d'espionnage des données et de compréhension du dispositif de protection, puisque les données contenues dans ces mémoires sont également brouillées, de préférence selon une autre sélection des permutations, mais transitent en clair sur le bus de données. Dans la figure 1, on a ainsi représenté des circuits de permutation DBr2 et DBr3, respectivement pour la mémoire RAM et la mémoire EEPROM. On notera ici que l'on a choisit des mémoires de même largeur que le bus de données. Si les mémoires sont de plus faible largeur, cela ne change rien au principe. Si elles sont plus larges: il faudra brouiller dans le compilateur les données de programme exécutable après les avoir découpées par tranches de n bits. Un exemple de réalisation d'un circuit de permutation est représenté en figures 3 et 4. La figure 3 représente un dessin topologique de deux étages de permutation EpO et Epl à n=7 bits d'entrée (D0-D7) et un bit de sortie, respectivement DiO et Dil, et la figure 4 représente une coupe AA de ce dessin. 7 2723223 Pour chaque étage de permutation EpO, Epl on a une diffusion médiane DM0, DM1, connectée à la ligne de bit de sortie de l'étage. Et, pour chaque cellule cO-c7 d'un étage de permutation, on a une diffusion locale connectée à la ligne de bit d'entrée associée à cette cellule. Par exemple, on a une diffusion locale D10 pour la cellule cO, connectée à la ligne de bit de données d'entrée DO. La programmation d'un étage de permutation consiste alors en une extension de la diffusion médiane à la diffusion locale d'une cellule parmi les n cellules de cet étage de permutation. Dans l'exemple représenté, on a ainsi pour l'étage EpO une extension de la diffusion médiane DM0 à la diffusion locale D17 de la cellule c7 et pour l'étage Epl, on a une extension de la diffusion médiane DM1 à la diffusion locale D13 de la cellule c3. Dans l'exemple représenté, les lignes de bit de données d'entrée DO-D7 sont en métal, et parallèles entre elles et la ligne de bit de données de sortie, par exemple DiO, est en polysilicium, dans un plan compris entre le plan des lignes de bit de données d'entrée et le substrat. Le contact de la diffusion médiane à la ligne de bit de données de sortie se fait par une ligne de métal réalisée dans le même plan que les lignes de bit de données d'entrée et parallèle à celles- ci. Cette ligne de métal est notée lmO pour l'étage EpO et lml pour l'étage Epl. De préférence, les diffusion médianes et locales sont réalisées par implantation ionique (appelé procédé d'implant). En coupe AA représentée sur la figure 4, on distingue par exemple pour l'étage EpO la ligne de sortie de données en polysilicium DiO, contactée à la ligne de métal lmO au-dessus, et les contacts de cette ligne de métal sur la diffusion médiane DM0 de l'étage de permutation EpO. Les diffusions locales D13 et D14 des cellules c3 et c4 des étages EpO et Epl sont aussi visibles sur cette figure 4. Et, on voit l'extension de la diffusion médiane DM1 à la diffusion locale D13 de la cellule c3 de l'étage Epl. La particularisation d'un étage de permutation se fait donc par extension de la diffusion médiane à la diffusion locale qui contacte la ligne de bit de donnée d'entrée sélectionnée (dessin du masque). La programmation du circuit de permutation selon l'invention, consiste alors selon ce procédé de fabrication à sélectionner l'extension de diffusion médiane à la diffusion locale qui définit la permutation, extension qui va permettre de relier la ligne de bit d'entrée à la ligne de bit de sortie. Cette particularisation programmable est particulièrement aisée à mettre en oeuvre, permettant une souplesse d'adaptation du procédé de fabrication à chaque circuit programmable: utilisation de circuits de permutation sur les autres mémoires ou non, avec identité de brouillage ou non, etc... et permettant un brouillage différent pour chaque circuit programmable: On n'a plus d'identité de protection au sein d'une même famille. Il en résulte une protection considérablement améliorée des circuits programmables. Avantageusement, on utilise le même procédé de fabrication pour les cellules de mémoire morte: - d'une part, on réalise alors les cellules de permutation et les cellules de mémoire morte dans les mêmes étapes de fabrication, avec les mêmes masques; - d'autre part, on augmente la difficulté d'inspection visuelle du circuit par utilisation de technologies similaires. Selon le procédé décrit en relation avec les figures 3 et 4, la programmation des données exécutables brouillées en mémoire morte est réalisée, en utilisant une diffusion médiane pour une même ligne de bit et une diffusion locale pour chaque cellule étendue ou non à la diffusion médiane selon l'état programmé voulu O ou 1 de la cellule. REVENDICATIONS 1. Procédé de brouillage numérique de données de n bits dans un circuit programmable comprenant une unité de commande et au moins une mémoire associée à un bus de données (DBUS), caractérisé en ce qu'il consiste à brouiller les données à mémoriser dans ladite mémoire, en effectuant pour chaque donnée à mémoriser une permutation des n bits de données. 2. Procédé de brouillage numérique selon la revendication 1, pour une mémoire morte (ROM) comprenant des données de programme exécutable, caractérisé en ce qu'une permutation de bits est effectuée à la compilation du programme pour obtenir les données de programme exécutable brouillées, et en ce qu'un débrouillage numérique est effectué en entrée de l'unité de commande pour chaque donnée lue dans cette mémoire morte, après transfert sur le bus de données vers l'unité de commande. 3. Procédé de brouillage numérique selon la revendication 2, pour un circuit programmable comprenant en outre des mémoires inscriptibles ou ré- inscriptibles (RAM, EEPROM), caractérisé en ce qu'il consiste à brouiller les bits des données à écrire dans ces mémoires, et à les débrouiller avant leur transfert sur le bus de données. 4. Circuit programmable comprenant une unité de commande (UC), une mémoire morte (ROM) pour contenir des données de n bits d'un programme exécutable et un bus de données (DBUS) pour faire transiter lesdites 11 2723223 données de la mémoire morte vers l'unité de commande (UC), caractérisé en ce qu'il comprend un circuit (DBrl) de permutation des n bits desdites données en entrée de l'unité de commande (UC). 5. Circuit programmable selon la revendication 4, comprenant en outre au moins une mémoire de données de n bits inscriptible ou ré-inscriptible (RAM), et un bus de données (DBUS) pour faire transiter des données entre cette mémoire et l'unité de commande (UC) et réciproquement, caractérisé en ce qu'il comprend un circuit de permutation (DBr2, DBr3) des n bits de données entre ledit bus de données et cette mémoire. 6. Circuit programmable selon la revendication 5, caractérisé en ce que le circuit de permutation comprend n étages de permutation à n bits de données d'entrée (DO-D7) et un bit de donnée de sortie (DiO), chaque étage comprenant n cellules de permutation, une par bit de données d'entrée. 7. Procédé de fabrication d'un circuit programmable selon la revendication 6, caractérisé en ce que - pour chaque étage de permutation (EpO), une diffusion médiane (DM0) est connectée à une ligne de bit de sortie (DiO) et - pour chaque cellule (cO) de cet étage de permutation, une diffusion locale (D10) est connectée à la ligne de bit d'entrée correspondante (DO), la programmation d'un étage de permutation (EpO) consistant en une extension de la diffusion médiane (DM0) dudit étage de permutation à la diffusion locale d'une cellule parmi les n cellules dudit étage de permutation. 8. Procédé de fabrication selon la revendication 7, caractérisé en ce que la diffusion médiane et les diffusions locales sont réalisées par implantation ionique. 9. Procédé selon l'une des revendications 8 à 9, caractérisé en ce que la programmation des données exécutables brouillées en mémoire morte est réalisée selon le procédé de réalisation des circuits de permutation, avec une diffusion médiane pour une même ligne de bit et une diffusion locale pour chaque cellule étendue ou non à la diffusion médiane selon l'état programmé voulu O ou 1 de la cellule.