FR 2695752 A1 19940318 FR 9211031 A 19920916 MEMOIRE DE PROGRAMME A SEMI-CONDUCTEUR PROTEGEE EN LECTURE La présente invention est relative à une mémoire de programme à semi-conducteur protégée en lecture. Les mémoires de programme à semi-conducteur, de type mémoire morte, sont actuellement largement utilisées, en raison de leur fiabilité et de leur niveau d'intégration des circuits correspondants. Sur la figure la, on a représenté un dispositif de mémoire à semiconducteur de type mémoire morte classique, constitué par des transistors de type N par exemple, ces transistors, notés T étant disposés et adressés sous forme matricielle en lignes et colonnes Le nombre de points mémoires, au niveau desquels une variable logique est susceptible d'être mémorisée, est le produit m x N du nombre de lignes m par le nombre de colonnes n. Les grilles des transistors d'une même ligne sont électriquement reliées à une ligne de mot, WL 1 à WL 4, et les transistors d'une même colonne sont reliés à une ligne de bit, BL 1 à BL La programmation des points mémoire consiste alors à isoler ces transistors de la ligne de bit suivant le niveau logique désiré, i ou O Cette opération est réalisée à un niveau de fabrication spécifique, niveau métal généra- lement. Ainsi, un transistor N situé sur une ligne de mot sélectionnée, par un adressage en lecture, provoque la décharge de la ligne de bit à l'état bas, niveau logique 0, si le drain de ce transistor est connecté à cette ligne de bit, la source de celui-ci étant connectée à la tension d'alimentation Vss. Sur la figure lb, on a représenté un dispositif mémoire dans lequel les transistors N d'une même colonne sont interconnectés en série, de telle manière que seul l'un d'eux soit relié à une ligne de bit Tous les transistors N d'une même ligne ont leur grille connectée à une ligne de mot et toutes les lignes de mot sont polarisées à l'état haut, valeur logique 1, sauf celle qui est sélectionnée, par un adressage en lecture Un transistor N dont la grille est connectée à la ligne précitée passe à l'état bloqué, ce qui interdit la décharge de la ligne de bit, et détermine donc un niveau de programmation 1 La programmation d'un niveau de programmation O est obtenue en court-circuitant drain et source au niveau métal, ou en déplétant ce transistor, de façon à permettre la décharge de la ligne de bit. La figure lc, enfin, représente un dispositif mémoire dérivé du dispositif représenté en figure lb, et dans lequel plusieurs colonnes sont reliées à une même ligne de bit par des transistors N d'accès ou de sélection, notés Ti 8, commandés par des lignes de sélection SEL, à SEL 4, de façon qu'une seule de ces colonnes soit connectée à la ligne de bit précitée Tous les transistors d'accès d'une même ligne ont leur grille connectée à la même ligne de sélec- tion, les transistors de mémorisation étant notés T ,8. Ce type de mémoire morte donne tout à fait satisfac- tion, du point de vue de son fonctionnement Toutefois, un accès physique séquentiel aux lignes de bit et lignes de mot permet directement la lecture du programme ou des données mémorisées, en l'absence de toute possibilité de parade à des tentatives intempestives de ce type, les niveaux de protection logicielle ou matérielle susceptibles d'être envisagés ne pouvant en aucun cas être efficace dans le cas d'un accès direct. La présente invention a pour objet de remédier à l'inconvénient précité, afin de supprimer tout risque de lecture par accès direct externe, aux programmes mémoire et aux données mémorisées. Un autre objet de la présente invention est égale- ment la mise en oeuvre d'un système de protection en lecture externe d'une mémoire de programme à semi-conducteur, de type mémoire morte, totalement indiscernable par observation visuelle ou optique des circuits de mémorisation proprement dits. Un autre objet de la présente invention est enfin la mise en oeuvre d'un système de protection en lecture externe d'une mémoire de programme à semi-conducteur, de type mémoire morte, par cryptage, par lequel tout accès externe pour une lecture fructueuse non autorisée nécessite à la fois la connaissance du contenu des données de cryptage et de l'arrangement matriciel des cellules constituant la mémoire de programme, c'est-à-dire des données ou du programme exécutable mémorisés. La mémoire de programme à semi-conducteur protégée en lecture de type mémoire morte, objet de la présente invention, est remarquable en ce qu'elle comporte une première zone mémoire de programme destinée à stocker -les données de programme, et une deuxième zone mémoir -de cryptage, destinée à stocker des données de cryptage Un opérateur logique interconnecté à la zone mémoire de programme et à la zone mémoire de cryptage permet, sur lecture simultanée des zones mémoire de programme respecti- vement de cryptage, d'obtenir des données de programme cryptées. L'invention trouve application à la protection des mémoires mortes à semi-conducteur de type ROM ou EPROM, en particulier pour la réalisation de micro-contrôleurs ou de micro-calculateurs. L'invention sera mieux comprise à la lecture de la description et à l'observation des dessins ci-après dans lesquels, outre les figures la à lc relatives à l'art antérieur, la figure 2 a représente une vue générale d'une mémoire de programme, à semi-conducteur, protégée en lecture conformément à l'objet de la présente invention, les figures 2 b à 2 d représentent différents exemples de réalisation de systèmes de polarisation des lignes de bit de la mémoire de programme selon l'invention telle que représentée en figure 2 a, la figure 3 représente une première variante de réalisa- tion de l'agencement de la mémoire de programme, à semi- conducteur protégée en lecture, telle que représentée en figure 2 a, la figure 4 représente une deuxième variante de réalisa- tion de l'agencement de la mémoire de programme à semi- conducteur protégée en lecture telle que représentée en figure 2 a, la figure 5 représente un schéma d'implantation sous forme de circuit intégré d'une mémoire de programme à semi-conducteur protégée en lecture, selon l'invention, pour une capacité mémoire de N x m mots de k bits, la figure 6 représente une variante de réalisation des figures 2 a, 3 et 4, dans une application plus particuliè- rement destinée à un micro-contrôleur ou à un micro- calculateur. Une description plus détaillée d'une mémoire de programme à semi-conducteur, de type mémoire morte, protégée en lecture, conforme à l'objet de la présente invention sera maintenant donnée en liaison avec les figures 2 a et suivan- tes. Sur la figure 2 a, on constate que la mémoire de pro- gramme objet de la présente invention comporte une première zone mémoire de programme, notée A, destinée à stocker les données de programme, et une deuxième zone de mémoire de cryptage, notée B, destinée à stocker les données de cryptage On comprend bien sûr que les zones A et B compor- tent effectivement des transistors implantés selon une topographie matricielle, ces transistors étant respective- ment reliés à un circuit 1 de polarisation et de sélection des lignes de bit et 2 de polarisation de la ligne de bit de cryptage. En outre, un opérateur logique, noté C, est inter- connecté aux zone mémoire de programme A et zone mémoire de cryptage B et permet, sur lecture simultanée des zones mémoire précitées, d'obtenir des données de programme cryptées en sortie On comprend bien sûr que l'opérateur logique C est ainsi relié, à deux de ses entrées, à la sortie 1 du circuit de polarisation et sélection des lignes de bit 1, respectivement à la sortie 2 du circuit de polarisation de la ligne de bit de cryptage 2. Ainsi qu'on l'a représenté en figure 2 a, la première zone mémoire de programme A est constituée par un réseau de transistors de type MOS, ces transistors, étant notés Ti, arrangés sous forme matricielle de ligne j et de colonne i. Ainsi, une ligne comporte au moins une ligne de mot, W Lj, et une colonne comporte au moins une ligne de bit, BLE La deuxième zone mémoire de cryptage B comprend une ligne de bit de cryptage On comprend bien sûr que, sur la figure 2 a, la zone mémoire A représentée est relative à un bit, la deuxième zone mémoire B de cryptage comportant alors la ligne de bit de cryptage supplémentaire, ainsi qu'il sera décrit de manière plus détaillée dans la description - Sur la figure 2 a, on remarque que la ligne de bit de cryptage est formée par des transistors, notés Tc J, lesquels sont connectés à la ligne de bit de cryptage, et sont de même type et en nombre identique à ceux connectés aux lignes de bit de la première zone mémoire de programme A. A l'observation de la figure 2 a, on constate également que pour un réseau de -transistors MOS dans lesquels les grilles des transistors Ti, d'une même ligne sont reliés à une ligne de mot, WL,, et les drains des transistors d'une même colonne sont reliés à une ligne de bit, B Li, la deuxième zone mémoire de cryptage est consti- tuée par les transistors MOS, Tc,, précédemment décrits de même type et en nombre identique dont les drains sont connectés à une ligne de bit de cryptage et les grilles aux lignes de mot WL,. Sur les figures 2 b à 2 d, on a représenté différentes formes de réalisation des circuits 1 et 2 de polarisation et sélection des lignes de bit. Ainsi que représenté sur la figure 2 b, les lignes de bit sont polarisées par les circuits précités, et sont donc maintenues à l'état haut par des résistances R connectées à la tension d'alimentation, VCC, par exemple. Ainsi que représenté en figure 2 c, elles peuvent être préchargées par des transistors de type P, notés T Pl et TP 2 sur la figure 2 c, sur le niveau logique "" d'un signal d'horloge CLK, et auto-maintenues à l'état logique " 1 " par les transistors de type P, ayant une résistance drain-source élevée et notés TP 2 sur la figure 2 c, sur le niveau logique opposé du signal d'horloge CLK. Toutefois, le système de précharge, ainsi que représenté en figure 2 d, peut être commun à plusieurs lignes de bit Dans ce cas, la précharge est sélective, ce, qui permet de réduire la consommation dynamique en énergie électrique, une seule ligne de bit étant préchargée au cours d'un cycle de lecture, ainsi que représenté en figure 2 d, la sélection des lignes de bit étant alors séquentielle. La liaison entre le circuit de précharge commun et les lignes de bit est alors effectuée par les transistors de sélection, notés TS sur la figure 2 d. On comprend bien sûr que le circuit 2 de polarisa- tion de la ligne de bit de cryptage peut être réalisé de manière analogue au mode de réalisation représenté en figures 2 b à 2 d relativement au circuit 1 de polarisation et sélection des lignes de bit. Sur la figure 3, on a représenté une première variante de réalisation de la mémoire de programme à semi- conducteur protégée en lecture, conformément à l'objet de la présente invention, tel que représenté en figure 2 a. Dans le cas de la figure 3 précitée, pour un réseau de transistors MOS de la première zone mémoire de programme A dans laquelle les transistors MOS d'une même colonne sont connectés en série, l'un de ces transistors, le transistor de tête, étant relié à une ligne de bit, B Li, et tous les transistors d'une même ligne ayant leur grille connectée à une même ligne de mot, WL,, la deuxième mémoire, ou zone mémoire de cryptage B, est constituée par des transistors série, notés Tc,, de même type et en nombre identique au nombre de transistors constituant les colonnes de transis- tors associées à chaque ligne de bit, la deuxième mémoire de cryptage étant connectée à une ligne de bit de cryptage, de manière analogue au mode de réalisation de la figure 2 a. Enfin, dans une deuxième variante de réalisation, telle que représentée en figure 4, pour un réseau de transistors MOS de la première zone mémoire A, dans lequel une pluralité, s, de colonnes de transistors, Tisj, sont reliés à une même ligne de bit, B Li, par l'intermédiaire de transistors d'accès, Ti, agencés en lignes d'accès comman- dées chacune par une ligne de sélection, SELS, une sçule colonne, sur commande par un signal de sélection de colonne, étant électriquement connectée à la ligne de bit, alors qjue les autres colonnes reliées à cette ligne de bit sont électriquement déconnectées de celle-ci, tous les transis- tors d'accès, Ti,, d'une même ligne d'accès ont leur grille connectée à une même ligne de sélection, SELS, la deuxième zone mémoire B de cryptage est formée d'une même pluralité de colonnes de transistors, Tcj, , connectées à une ligne de bit de cryptage On comprend bien sûr que dans le cadre de la figure 4, les zones mémoire A et B sont également relatives aux zones mémoire d'un bit de rang donné, l'accès à une colonne déterminée de rang S étant ainsi commandé séquentiellement par les lignes de sélection de colonne, SEL,, ce qui permet de multiplier le nombre de bits de même rang ainsi mémorisés, et en définitive le nombre de mots mémorisés, ainsi qu'il sera décrit ultérieurement dans la description, tout en réduisant la consommation d'énergie électrique d'alimentation. Les circuits de polarisation et de sélection des lignes de bit 1 et de la ligne de bit de cryptage 2 sont identiques à ceux représentés en figure 2 a ou 3. Sur la figure 5, on a représenté un schéma d'implan- tation en circuit intégré de l'une ou l'autre des variantes de réalisation de la mémoire de programme à semi-conducteur protégé en lecture, objet de la présente invention, tel que représenté en figures 2 a, 3 ou 4. Bien entendu, on comprend que la deuxième zone mémoire B peut être implantée indifféremment à droite ou à gauche de la première zone mémoire de programme A. Pour des mots codés sur k bits, et ainsi que repré- senté sur la figure 5 pour chaque bit de rang correspondant, le circuit mémoire de programme protégé conforme à l'objet de la présente invention comprend, pour chaque bit, les zones de mémoire A et B précédemment décrites dans la description Sur la figure 5, les circuits de polarisation et de sélection des lignes de bit, respectivement lignes de bit de cryptage 1, 2, n'ont pas été représentés, afin de ne pas surcharger le dessin On comprend ainsi que pour des réseaux matriciels constitutifs des première, A, et deuxiè- me, B, zones mémoires, réseaux matriciels comportant, ainsi que représenté sur la figure 5, m lignes et N colonnes, et pour k couples de zones mémoire A, B, ainsi implantées, on obtient une mémoire de capacité m x N mots de k bits. On comprend en outre que la ou les lignes de bit de cryptage et les transistors constitutifs d'au moins une colonne correspondante de la ligne de bit de cryptage de la deuxième zone mémoire B de cryptage sont ainsi intégrés au réseau de transistors de lignes de bit de la première zone de mémoire A, chaque transistor d'une ou plusieurs colonnes de la ligne de bit de cryptage ayant sa grille connectée aux grilles des transistors de la première zone mémoire de données appartenant à la même ligne, par l'intermédiaire d'une même ligne de mot. On comprend également que le fait de constituer la deuxième zone mémoire B de manière identique du point de vue de l'architecture semi-conducteur aux lignes de bit ou à tout le moins aux colonnes associées à la ligne de bit correspondante de la première zone mémoire A, permet bien entendu de rendre la ?émoire de cryptage et la mémoire de programme, c'est-à-dire les zones B et A, indiscernables l'une de l'autre par des moyens d'observation optiques. Ainsi qu'on l'a représenté en outre sur l'ensemble des figures 2 a et suivantes, l'opérateur logique C peut être constitué par un opérateur de type OU exclusif. L'algorithme de pointage dans la mémoire de cryptage peut être déterminé par des combinaisons de bit d'adresse de la mémoire de programme correspondante Ainsi, l'accès non autorisé et le piratage du code de programme mémorisé dans la zone de mémoire A nécessite de connaître à la fois le contenu de la table de cryptage et l'architecture de la matrice constitutive de la première zone mémoire A. Dans le but de crypter les données, d'autres opérateurs logiques que le OU exclusif peuvent être utili- sés Toutefois, le OU exclusif offre, du fait de l'unicité de la solution de cryptage procurée, telle que décrite dans le tableau ci- après, le meilleur résultat en raison de la simplicité de la fonction correspondante obtenue par la mise en oeuvre de cet opérateur. OU-EXCLUSIF X Y S O O O 0 1 1 1 O 1 1 1 O X étant la donnée de la mémoire principale, Y étant la donnée de la mémoire de cryptage, S étant la donnée cryptée. On comprend bien sûr, à l'observation de cette même figure 5, que pour un champ de données codées sur k bits, par mots de k bits, l'opérateur logique comprend k opéra- teurs OU exclusif élémentaires pour délivrer la donnée cryptée. La figure 6 représente une application particulière d'un mode de réalisation d'une mémoire conforme à l'objet de la présente invention, plus particulièrement adapté à la mise en oeuvre d'un micro-contrôleur ou d'un micro calcula- teur. Ainsi qu'on le remarquera à l'observation de la figure 6, un interrupteur 3 est inséré entre le circuit 2 de polarisation de la ligne de bit de cryptage et la ligne de bit de cryptage proprement dite Cet interrupteur 3 peut être réalisé par un transistor de type N pouvant assurer la commutation entre un état de vérification et d'exécution du programme. Lorsque la mémoire de programme contient un çode exécutable, comme dans le cas d'un micro-contrôleur par exemple, le mécanisme d'interrupteur précédemment décrit permet d'isoler chaque ligne de bit de cryptage lorsque la lecture de la mémoire s'inscrit dans un cycle d'exécution du programme En effet, seule la lecture du code par l'exté- rieur doit être verrouillée, de façon à garantir la protec- tion du logiciel mémorisé dans la mémoire de programme vis- à-vis du piratage. On a ainsi décrit une mémoire de programme à semi- conducteur protégée en lecture de type mémoire morte particulièrement avantageuse, dans la mesure o le piratage des mémoires de programme peut être empêché Ce résultat est obtenu par le fait que la mémoire de programme et la mémoire de cryptage sont personnalisées simultanément, ce qui assure l'unicité de la protection et garantit la confidentialité des données mémorisées dans la zone mémoire de programme. il REVENDICATIONS 1) Mémoire de programme à semi-conducteur protégée en lecture, de type mémoire morte, caractérisée en ce que celle-ci comporte: une première (A) zone mémoire de programme, destinée à stocker les données de programme, une deuxième (B) zone mémoire de cryptage, destinée à stocker des données de cryptage, un opérateur logique (C) interconnecté auxdites zone mémoire de programme et zone mémoire de cryptage et permettant, sur lecture simultanée desdites zone mémoire de programme respectivement de cryptage, d'obtenir des données de programme cryptées. 2) Mémoire selon la revendication 1, caractérisé en ce que ladite première (A) zone mémoire de programme est constituée par un réseau de transistors MOS (Tif) arrangés sous forme matricielle de lignes (j) et de colonnes (i), une ligne comportant au moins une ligne de mot et une colonne comportant au moins une ligne de bit, ladite deuxième (B) zone mémoire de cryptage comprend une ligne de bit compor- tant un réseau de transistors MOS (Tcj), arrangés sous forme matricielle de lignes (j). 3) Mémoire selon la revendication 2, caractérisée en ce que pour un réseau de transistors&MOS dans lesquels les grilles des transistors (Tif) d'une même ligne sont reliées à une même ligne de mot (WL 5), et les drains desdits transistors d'une même colonne sont reliés à une ligne de bit (BL 1), ladite deuxième mémoire de cryptage est consti- tuée par des transistors MOS de même type (Tc^) connectés à une ligne de bit de cryptage et en nombre identique aux transistors MOS de la zone mémoire de données, connectés aux lignes de bit correspondantes. 4) Mémoire selon la revendication 2, caractérisé en ce que pour un réseau de transistors MOS de la première (A) mémoire dans laquelle les transistors MOS d'une même colonne sont connectés en série, l'un de ces transistors étant relié à une ligne de bit (B Li), et tous les transistors d'une même ligne ayant leur grille connectée à une même ligne de mot (W Li), ladite deuxième mémoire de cryptage est constituée par des transistors série (Tc,) de même type et en nombre identique au nombre de transistors constituant lesdites colonnes, ladite deuxième mémoire de cryptage étant connec- tée à une ligne de bit de cryptage. ) Mémoire selon la revendication 2, caractérisée en ce que pour un réseau de transistors MOS de la première (A) zone mémoire dans lequel une pluralité (js) de colonnes de transistors (Tij) sont reliées à une même ligne de bit (BLE) par l'intermédiaire de transistors d'accès (Ti) agencés en lignes d'accès commandées chacune par une ligne de sélection (SEL), une seule colonne étant électriquement connectée à ladite ligne de bit alors que les autres colonnes reliée à cette ligne de bit sont électriquement déconnectées de celle-ci, et tous les transistors d'accès (Ti) d'une même ligne d'accès ayant leur grille connectée à une même ligne de sélection (SEL), ladite deuxième zone mémoire (B) de cryptage est formée d'une même pluralité de colonnes de transistors (Tc,) connectées à une ligne de bit de cryptage. 6) Mémoire selon l'une des revendications 2 à 5, caractérisée en ce que chaque ligne de bit de cryptage de la deuxième zone mémoire de cryptage comporte un système de précharge, un système de polarisation de même type que celui des autres lignes de bit de la première zone mémoire de programme. 7) Mémoire selon l'une des revendications 2 à 6, caractérisée en ce que la ou lesdites lignes de bit de cryptage et les transistors constitutifs d'au moins une colonne correspondante de ladite ligne de bit de cryptage de la deuxième zone mémoire de cryptage sont intégrés au réseau de transistors des lignes de bit de la première zone mémoire, chaque transistor d'une ou plusieurs colonnes de ladite ligne de bit de cryptage ayant sa grille connectée aux grilles des transistors de la première zone mémoire de données appartenant à la même ligne, par l'intermédiaire d'une même ligne de mot. 8) Mémoire selon l'une des revendications 1 à 7, caractérisée en ce que, pour un champ de données codé par mots de k bits, chaque bit de rang correspondant comprend une zone mémoire (A) et une zone mémoire (B). 9) Mémoire selon l'une des revendications 1 à 8, caractérisée en ce que ledit opérateur logique (C) est un opérateur de type ou exclusif. 10) Mémoire selon la revendication 9, caractérisée en ce que pour un champ de données codées sur k bits, par mots de k bits, ledit opérateur logique comprend k opéra- teurs ou exclusifs élémentaires pour délivrer la donnée cryptée.