Brevet FR2545244A1 — publié le 19841102

"Unité de mémoire comprenant une mémoire et un dispo- sitif de protection". La présente invention concerne un système de traitement de données comprenant un processeur de données et une unité de mémoire qui comprend un dispo- sitif de protection et une mémoire pour le stockage d'au moins un programme comprenant plusieurs mots de programme, la mémoire comportant un terminal pour l'échange de mots d'information, chaque mot d'infor- mation comprenant un mot de programme et son mot d'adresse respectif, le dispositif de protection comprenant: des moyens de reconnaissance comportant une première entrée connectée audit terminal et prévus pour reconnaître, dans le flux de mots d'information au terminal, ceux qui appartiennent à un groupe prédé- terminé dans lequel les mots d'information comportent un mot de programme qui comprend une partie d'adresse destinée à adresser un mot de programme suivant, les moyens de reconnaissance étant, en outre, prévus pour produire en conséquence un signal de commande; des premiers moyens de modification compor- tant une deuxième entrée connectée au dit terminal et une troisième entrée connectée aux moyens de reconnais- sance pour recevoir le signalde commandeces premiers moyens de modification étant prévus pour appliquer, sous contr 8 le du signal de commande, une première opération de modification à un mot de programme reçu, les premiers moyens de modification étant connectés à une première sortie de données de l Munité de mémoire; le processeur de données comprenant: une entrée de données connectée à la pre- mière sortie de données pour recevoir des signaux de données; un compteur de programme pouvant tre posi- tionné par des signaux de données reçus; une première sortie d'adresse connectée à une première entrée d'adresse de l'unité de mémoire pour fournir des signaux d'adresse dans un ordre déterminé par le compteur de programme. Un tel système de traitement de données est décrit dans la demande de brevet néerlandais n' 82 01 847 mis à la disposition du public le 01-12- 83 Le bloc de mémoire comprend un dispositif de protection destiné a protéger les mots de programme stockés dans la mémoire contre toute copie illégale par des copieurs non autorisés. Des dispositifs qui sont commandés par un processeur de données comprennent une mémoire, par exemple une mémoire ROM ou une mémoire PROM, dans laquelle des programmes et d'autres informations (qualifiés de logiciel) sont stockés sous la forme de- mots de programme pour l'exécution des opérations du processeur de données La conception de ce logiciel est fastidieuse et onéreuse Cela étant, il est important d'empêcher la copie non-autorisée de ce logiciel. Lorsqu'un mot d'information qui appartient au groupe prédéterminé apparaît dans le flux de mots d'information au terminal de la mémoire, il est reconnu par les moyens de reconnaissance qui produisent en conséquence un signal de commande. Dans le système décrit, les mots d'information appartenant au groupe prédéterminé sont des mots d'information qui ont un lien avec un mot de programme suivant qui doit être adressé par le compteur de programme pendant le pas de programme suivant dans l'exécution du programme Si le programme n'est pas exécuté normalement, c'est-à-dire par exemple lorsque le programme est copié, ce mot de programme suivant n'est pas adressé Le signal decommande est dès lors confirmé et les premiers moyens de modification sont activés pour appliquer une première opération de 254 C 244 modification qui consiste à remplacer le mot de pro- gramme adressé pendant le pas de programme suivant par un mot de perturbation qui est sans rapport avec-le mot de programme Le mot de perturbation est sorti à la première sortie de données del'unité de mémoire En conséquence, le programme copié est devenu inutilisable parce qu'il contient au moins un mot de perturbation qui gêne l'exécution-du programme. La présente invention se distingue du système décrit par le fait que la première opération de modifica- tion est réalisée de manière différente. Un système de traitement de données conforme à l'invention est caractérisé en ce que, la première opération de modification étant appliquée à la partie d'adresse du mot de programme qui était à l'origine de la production du signal dé commande,le dispositif de protection comprend, en outre, des seconds moyens de modification comportant une quatrième entrée connectée a la première entrée d'adresse et une seconde sortie d'adresse connectée au terminal, les seconds moyens de modification 'tant prévus pour appliquer une seconde opération de modiflcation à un signal d'adresse reçu afn de compenser la première opération de modification L'avantage de ce système de traitement de données est qu'il y a toujours une certaine différence entre le flux de mots d'infor- mation au terminal de la mémoire et le flux de signaux de données et d'adresse entre l'unité de mémoire et le processeur de données, que le programme soit copié ou non Pendant une exécution normale du programme, c'est- à-dire lorsque le programme est exécuté sous' la com- mande du processeur de données et que les instructions sont exécutées conformément au contenu des mots de programme, les seconds moyens de modification appli- quent une seconde opération de modification à un signal d'adresse reçu La seconde opération de modification compense la première opération de modification de sorte que le mot d'adresse correct est fourni au terminal de la mémoire L'exécution -normale n'est donc pas perturbée Cependant, lorsque le programme est copié, le mot de programme modifié, sorti à la première sortie de données du bloc de mémoire, est inclus dans le programme copié, ce qui rend ce programme copié inutilisable. Une forme d'exécution préférée du système de traitement de données conforme à l'invention est caractérisée en ce que chaque mot de programme du groupe prédéterminé comprend une instruction qui agit sur une progression par pas égaux du compteur de programme Des instructions qui agissent sur une progression par pas égaux du dompteur de programme sont des instructions qui forcent le compteur de programme à progresser (ou à reculer) d'un pas valant plus qu'une unité, par exemple des aistructions SAUT (JUMP) ou ALLER A (GO TO). Ces instructions comportent une partie d'adresse qui comprend de l'information concernant l'adresse du mot de programme suivant à adresser pendant l'exécution normale du programme Une modification de cette partie d'adresse appliquée par la première opération de modification peut effectivement perturber un programme copié. Une autre forme d'exécution préférée d'un système de traitement de données conforme à l'invention est caractérisée en ce que les mots de programme du groupe prédéterminé comprennent nepartie de code d'opé- ration, les moyens de reconnaissance comprenant un décodeur de code d'opération pour décoder la partie de code d'opération des mots de programme. Une autre forme d'exécution préférée d'un système de traitement de données conforme à l'invention est caractérisée en ce que les moyens de reconnaissance comprennent un décodeur d'adresse destiné à décoder les mots d'adresse qui appartiennent groupe prédéterminé On obtient ainsi des réalisations simples des moyens de reconnaissance. Il est avantageux que la première et la seconde opération de modification comprennent l'appli- cation d'une opération mathématique La partie d'adresse d'un mot de programme est, en général, formées d'un certain nombre de bits binaires Des opérations mathématiques sont aisément effectuées sur ces bits. Il est avantageux que les premiers moyens de modification comprennent un additionneur pour ajouter une valeur à la partie d'adresse et que les second moyens de modification comprennent un circuit soustrac- teur pour soustraire la dite valeur du signal d'adresse Ceci permet une exécution aisée et rapide de la première et de la seconde opération de modification. Il est avantageux que les premiers moyens de modification comprennent un générateur aléatoire pour produire la dite valeur, le générateur aléatoire comportant une sortie connectée aux seconds moyens de modification pour fournir cette valeur Lorsque la valeur est produite par un générateur aléatoire, il est très difficile pour un copieur non autorisé de décou- vrir la valeur qui a été ajoutée à la partie d'adresse, parce qu'une valeur différente peut chaque fois être produite. L'invention sera à présent décrite en détail avec référence au dessin annexé dont la figure repré- sente un schéma synoptique simplifié d'une forme d'exécution préférée d'un système de traitement de données conforme à l'invention. Le système de traitement de données illustré au dessin comprend une unité de mémoire 10 et un proces- seur de données 14, par exemple un microprocesseur L'u- nité de mémoire comprend une mémoire 12, par exemple une mémoire PROM ou ROM, et un dispositif de protection 24 Le processeur de données et l'unité de mémoire sont connectés l'un à l'autre par un bus d'adresse 11 et un bus de données 13 La mémoire et le dispositif de protection sont connectés l'un à l'autre au moyen d'un bus interne 23 Le dispositif de protection comprend des moyens de reconnaissance 16 qui présentent une première entrée connectée au bus interne Le dispositif de protection comprend aussi des premiers moyens de modification 17 qui comportent une seconde entrée connectée au bus interne 23 et une première sortie de données connectée au bus de données 13, ainsi que des seconds moyens de modification 15 qui comportent une entrée d'adresse connectée au bus d'adresse 11 et une sortie d'adresse connectée au bus interne 23. La mémoire 12 est utilisée pour le stockage d'au moins un programme qui peut être exécuté par le processeur de données Le ou les programmes comprennent plusieurs mots de programme Chaque mot de programme est, en général, formé d'un certain nombre de bits binaires Chaque mot de programme est stocké dans un emplacement respectif de la mémoire présentant l'adresse correspondante Un terminal de la mémoire est connecté au bus interne pour fournir des mots d'adresse à la mémoire afin &'extraire les mots de programme respectifs qui sont localisés à ce mot d'adresse. Comme sa dénomination le suggère, le dispo- sitif de protection 24 sert à protéger les mots de programme, en particulier contre une copie illégale. Cela étant, le dispositif de protection est prévu pour appliquer à un certain nombre de mots de programme sortis au terminal de la mémoire, une opération de modification. Plusieurs réalisations sont possibles pour le dispositif de protection Le fonctionnement du système de traitement de données sera à présent décrit avec référence à une forme d'exécution préférée du dispo- sitif de protection Dans cette forme d'exécution préférée du dispositif de protection, les moyens de reconnaissance 16 comprennent un décodeur d'instruction de saut 18 et un générateur de nombres aléatoires 19. Les premiers moyens de modification 17 comprennent un additionneur 25 et les seconds moyens de modification comprennent un circuit soustracteur 26 Le géné- rateur de nombres aléatoires comporte une sortie connectée par l'intermédiaire d'une ligne 20 à une entrée de l'additionneur et a une entrée du circuit soustracteur. Parmi les mots de programme stockés dans la mémoire, il y a les instructions de saut bien connues qui agissent sur la progression par pas égaux du compteur de programme Ces instructions de saut se reconnaissent à leur partie de code d'opération caractéristique Le décodeur d'instruction de saut 18, qui est un décodeur de code d'opération, décode les parties de code d'opération des mots de programme sortis au terminal de la mémoire et fournis au bus interne 23 Lorsqu'une instruction de saut est décodée, le décodeur d'instruction de saut produit un signal de commande qui est fourni par l'intermédiaire de la ligne 21 au générateur de -nombres aléatoires 19, à l'addi- t Ionneur 25, ainsi qu'au circuit soustracteur 26 Cela étant, le générateur de nombres aléatoires 19 produit un nombre aléatoire qui est fourni par l'intermédiaire de la ligne 20 à l'additionneur et au circuit soustracteur L'additionneur, qui est connecté au bus interne 23, a également reçu le mot de programme qui comprend l'instruction de saut Sous contr 8 le du signal de comnunde, l'additionneur ajoute le nombre aléa- toire à la partie d'adresse (indiquant l'adresse vers laquelle il faut sauter) de cette instruction de saut et produit une pseudo-adresse de saut. Le mot de programme modifié avec la pseudo- adresse de saut est à présent transmis par l'intermé- diaire du bus de données 13 au processeur de données 14 Cela étant, le compteur de programme donne au mot de programme l'indication de cette pseudo-adresse. Lorsque le processeur de données 14 adresse ensuite, par l'intermédiaire du bus d'adresse 11, l'unité de mémoire pour acquérir le mot de programme à la pseudo- adresse, cette adresse est transmise au circuit sous- tracteur 26 des seconds moyens de modification Après réception de la pseudo-adresse, le circuit soustracteur soustrait le nombre aléatoire de la pseudo-adresse et transmet l'adresse originale ainsi obtenue a la mémoire L'instruction de saut est ainsi exécutée correctement. Chaque mot de programme ultérieur sorti de la mémoire 12, qui n'est pas une instruction de saut, est transmis par l'additionneur 25 au bus de données 13 sans modification Etant donné que le compteur de programme du processeur de données a cependant été avancé vers la pseudo-adresse, les seconds moyens de modification 15 retiennent le nombre aléatoire en vue de le soustraire de chacune des adresses placées sur le bus d'adresse 11 par le processeur de données avant la transmission vers la mémoire. Ceci se poursuit jusqu'à ce qu'une autre instruction de saut soit fournie sur le terminal de la mémoire 12 Lorsque cela se produit, le décodeur d'instruction de saut 18 provoque à nouveau l'interven- tion du générateur de nombres aléatoires 19 pour placer un autre nombre aléatoire dans l'additionneur 25 et dans le circuit soustracteur 26 L'additionneur 25 intervient, comme précédemment, pour placer une pseudo- adresse de saut sur le bus de données 13 Les seconds moyens de modification 15 substituent le nouveau nombre aléatoire à l'ancien pour adresser la mémoire 12 convenablement lorsque le processeur de données trans- met la pseudo-adresse de saut à la mémoire 10 De cette façon, un groupe prédéterminé de mots d'information ayant la forme d'instructions de saut stockées dans certains emplacements de la mémoire 12 amène les premiers moyens de modification 17 à changer ces adresses de saut avant la transmission sur le bus de données 13. On fait a présent l'hypothèse que les mots de programme stockés dans la mémoire 12 soient copiés Les pseudo-adresses fournies sur le bus de données 13 sont alors incorporées dans le programme copié, rendant ce programme copié inutilisable, parce qu'un emplacement erroné dans le programme est adressé si le programme copié est exécuté De plus, si le copieur adresse le bloc de mémoire après la sortie de la pseudo-adresse, l'adresse fournie est modifiée par les seconds moyens de modification Le copieur n'est donc pas a même de connaître l'emplacement de la mémoire qui a été adressé Le programme copié est donc entièrement inutilisable. Dans une forme d'exécution de l'invention, chaque instruction de saut transmise à partir de la mémoire contient un 1 binaire dans un emplacement de bit Dans tous les autres emplacements de la mémoire, cet emplacement de bit contient un O binaire Dans cette forme d'exécution, le décodeur d'instruction de saut prend la forme d'un circuit qui réagit au 1 binaire dans l'emplacement de bit prescrit et qui provoque, par conséquent, la production du signal d'ordre comme décrit plus haut. Dans une variante, toutes les instructions de saut sont placées dans une section particulière de la mémoire et le dispositif de reconnaissance 16 comprend un comparateur qui réagit aux adresses dans les empla- cements de cette section et fait fonctionner le généra- teur de nombres aléatoires 19 comme décrit plus haut. Le comparateur est alors, par exemple, connecté à un élément de stockage dans lequel les adresses sont stockées en tant qu'information d'identificateur pour permettre la comparaison Lorsque toutes les instruc- tions de saut sont placées dans une section particu- lière de la mémoire 12, le dispositif de reconnaissance peut, par exemple, comprendre un décodeur d'adresse pour décoder les adresses de cette section particulière D'autres types de dispositifs de recon- naissance sont également connus des spécialistes et pourraient être substitués à ceux qui ont été décrits plus haut. Le dispositif de reconnaissance peut aussi réagir à d'autres instructions que les seules instruc- tions de saut, par exemple des instructions ALLER A ou n'importe quelle autre instruction agissant sur une progression par pas égaux du compteur de programme. Plusieurs réalisations sont aussi possibles pour les premiers et les seconds moyens de modification et peuvent comprendre, par exemple, un inverseur destiné à inverser un ou plusieurs emplacements de bits dans la partie d'adresse de l'instruction de saut Pour cette réalisation, un générateur de nombres aléatoires est évidemment superflu. Dans une variante, les premiers moyens de modification comprennent, par exemple, une première table d'adresses adressée par la partie d'adresse de l'instruction de saut et comprenant, pour chaque instruction de saut, une adresse de substitution Les seconds moyens de modification comprennent alors évidemment une seconde table d'adresses, prévue pour rétablir la partie d'adresse initiale. Oncomprendra que diverses modifications apportées au système conforme à l'invention décrit plus haut apparaîtront clairement aux yeux des spécialistes et que l'agencement décrit ici n'est donne qu'àâ titre d'exemple et n'est en aucune manière limitatif. REVENDICATIONS 1 Système de traitement de données comprenant un processeur de données ( 14) et une unité de mémoire ( 10) qui comprend un dispositif de protection ( 24) et une mé- moire ( 12) pour le stockage d'au moins un programme com- prenant plusieurs mots de programme, la mémoire compor- tant un terminal pour l'échange de mots d'information, chaque mot d'information comprenant un mot de programme et son mot d'adresse respectif, le dispositif de protec- tion comprenant: des moyens de reconnaissance ( 16) comportant une première entrée connectée audit terminal et prévus pour reconnattre, dans le flux de mots d'information au terminal, ceux qui appartiennent à un groupe prédéter- miné dans lequel les mots d'information comportent un mot de programme qui comprend une partie d'adresse desti- née à adresser un mot de programme suivant, ces moyens de reconnaissance étant, en outre, prévus pour produire en conséquence un signal de commande; des premiers moyens de modification ( 17) com- portant une deuxième entrée connectée au terminal et une troisième entrée connectée-au moyens de reconnaissance pour recevoir le signal de commande, ces premiers moyens de modification étant prévus pour appliquer, sous con- tr 8 le du signal de commande, une première opération de modification à un mot de programme reçu, les premiers- moyens de modification étant connectés à une première sortie de données de l'unité de mémoire; le processeur de données comprenant: une entrée de données connectée à la première sortie de données pour recevoir des signaux de données; un compteur de programme pouvant être posi- tionné par des signaux de données reçus; une première sortie d'adresse connectée à une première entrée d'adresse de l'unité de mémoire pour fournir des signaux d'adresse dans un ordre déterminé par le compteur de programme; caractérisé en ce que, la première opération de modifi- cation étant appliquée à la partie d'adresse du mot de programme qui était à l'origine de la production du si- gnal de commande, le dispositif de protection comprend, en outre, des seconds moyens de modification ( 15) com- portant une quatrième entrée connectée à la première entrée d'adresse et une deuxième sortie d'adresse connec- tée au terminal, ces seconds moyens de modification étant prévus pour appliquer une seconde opération de modifica- tion à un signal d'adresse reçu afin de compenser la pre- mière opération de modification. 2 Système de traitement de données suivant la revendication 1, caractérisé en ce que chaque mot de pro- gramme du groupe prédéterminé comprend une instruction qui agit sur une progression par pas égaux du compteur de programme. 3 Système de traitement de données suivant la revendication 1 ou 2, caractérisé en ce que les mots de programme du groupe prédéterminé comprennent une partie de code d'opération, les moyens de reconnaissance compre- nant un décodeur de code d'opération pour décoder la par- tie de code d'opération des mots de programme; 4 Système de traitement de données suivant la revendication 1 ou 2, caractérisé en ce que les moyens de reconnaissance comprennent un décodeur d'adresse des- tiné à décoder les mots d'adresse qui appartiennent au groupe prédéterminé. Système de traitement de données suivant la revendication 1 ou 2, caractérisé en ce que les moyens de reconnaissance comprennent un élément de stockage destiné à stocker une information d'identificateur pour chacun des mots d'information du groupe prédéterminé et un comparateur comportant une première entrée de compa- rateur connectée à l'élément de stockage et une seconde entrée de comparateur connectée à la première entrée pour réaliser la reconnaissance par comparaison de l'in- formation d'identificateur avec les mots d'information fournis, le signal de commande étant produit lors d'une correspondance entre l'information d'identificateur et le mot d'information. 6 Système de traitement de données suivant l'une quelconque des revendications 2, 3, 4 ou 5, caractérisé en ce que chaque mot de programme du groupe prédéterminé comprend une instruction de saut et le mot d'adresse du mot de programme vers lequel il faut effectuer le saut. 7 Système de traitement de données suivant la revendication 5, caractérisé en ce que l'information d'identificateur comprend au moins une partie du contenu du mot de programme. 8 Système de traitement de données suivant la revendication 5, caractérisé en ce que l'information d'identificateur comprend au moins une partie du contenu du mot d'adresse. 9 Système de traitement de données suivant l'une quelconque des revendications précédentês, caractérisé en ce que la première et la seconde opération de modifica- tion comprennent l'application d'une opération mathéma- tique. Système de traitement de données suivant la revendication 9, caractérisé en ce que les premiers moyens de modification comprennent un additionneur ( 25) destiné à ajouter une valeur à la partie d'adresse et les seconds moyens de modification comprennent un circuit soustracteur ( 26) destiné à soustraire ladite valeur du signal d'adresse. 11 Système de traitement de données suivant la revendication 10, caractérisé en ce que les premiers moyens de modification comprennent un générateur aléa- toire pour produire ladite valeur, le générateur aléa- toire comportant une sortie connectée aux seconds moyens de modification pour fournir ladite valeur. 12 Bloc de mémoire à utiliser dans un système de traitement de données suivant l'une quelconque des re- vendications précédentes, caractérisé en ce qu'il com- prend une mémoire ( 12) et un dispositif de protection ( 14). 13 Dispositif de protection à utiliser dans un système de traitement de données suivant l'une quelconque des revendications 1 à 11. 14 Unité de mémoire suivant la revendication 12, caractérisée en ce quelie est construite sur base d'une technique faisant appel à des circuits intégrés et la mémoire et le dispositif de protection sont intégrés sur la m&me surface de puce. Module de Jeu vidéo comprenant un bloc de mémoire suivant la revendication 12 ou 14.