FR 2526560 A1 19831110 FR 8307446 A 19830504 Dispositif pour la protection contre une lecture non auto- risée de mots de programme à mémoriser dans une mémoire. La présente invention concerne un dispositif pour la protection contre une lecture non autorisée de mots de programme mémorisés dans une mémoire, en particu- lier une mémoire de programme, cette mémoire faisant partie d'une unité de mémoire, ce dispositif comportant, en outre, une unité de traitement de données dont une sortie d'adres- se est connectée à une entrée d'adresse de la mémoire en vue d'adresser, lors d'une opération de traitement, les mots de programme dans un ordre déterminé par l'unité de traitement de données. Des dispositifs qui sont commandés par une unité de traitement de données comprennent une mémoire, par exem- ple une mémoire ROM ou une mémoire PROM, dans laquelle sont stockés, sous forme de mots de programme, des programmes d'ordinateurs et d'autres informations, à savoir du logi- ciel, pour l'exécution des opérations de l'unité de traite- ment de données La composition de ce logiciel est une tâche qui prend du temps et surtout qui coûte de l'argent. C'est pourquoi il est important que ce logiciel ne puisse pas être copié librement par un lecteur non autorisé. On connait déjà plusieurs procédés selon les- quels le contenu de la mémoire ou le logiciel est protégé contre une lecture non autorisée Ainsi, il est connu d'utiliser des mots de code ou des "clés d'accès", ou bien des "instructions" dites de "sauvegarde " qui bloquent l'accès aux mots de programme stockés dans la mémoire Un tel procédé est eécrit, par exemple, dans l'article "Computer program protection" de E J Lengijel et D H. Olson publié dans IBM TDB, volume 14, N O 11, avril 1972, page 3531. Un inconvénient des procédés connus est que l'échec d'une tentative de copier le logiciel de la mémoire se remarque assez rapidement Un lecteur non autorisé astucieux trouve alors le plus souvent une manière de désactiver le procédé de protection et ainsi d'effectuer malgré tout ses manipulations non autorisées. L'invention a pour but de réaliser un dispositif au moyen duquel la lecture non autorisée du contenu de la mémoire donne au lecteur non autorisé une information qui est complètement inutilisable pour celui-ci et ce sans qu'il s'en aperçoive pendant sa tentative de copiage. Un dispositif conforme à l'invention est à cet effet caractérisé en ce que l'unité de mémoire comporte une unité de sélection, une unité de vérification et une source de données à l'extérieur de la mémoire destinée à fournir au moins un mot perturbateur qui exerce un effet de brouillage lorsqu'il est ajouté auxdits mots de programme, l'unité de sélection comportant une première entrée connec- tée à une première sortie de la mémoire et une deuxième entrée connectée à la sortie de la source de données, une information supplémentaire étant ajoutée à chaque mot de programme mémorisé dans la mémoire, une deuxième sortie de la mémoire etant connectée à une première entrée de l'unité de vérification pour présenter ladite information supplé- mentaire, une seconde entrée de l'unité de vérification étant connectée à une borne de la mémoire pour présenter l'information de programme, cette unité de vérification étant pourvue de premiers moyens qui lui permettent, lors d'une opération de lecture d'un premier mot de programme, de stocker ladite information supplémentaire provenant de la mémoire, cette information supplémentaire indiquant un mot de programme de suite au premier mot de programme qui est déterminé par ledit ordre de succession, l'unité de vérification étant pourvue de seconds moyens pour, lors d'une opération de lecture, véri'ier pour un deuxième mot de programme provenant de la mémoire et sous la commande de l'information supplémentaire stockée, si l'information de programme du deuxième mot de programme à lire correspond à l'information de programme du mot de programme de suite indiqué par l'information supplémentaire et polir, en cas de concordance à ladite vérification, produire un premier signal et en cas de non-concordance à ladite vérification, produire un second signal, l'unité de sélection étant pour- vue d'une entrée de commande pour la réception dudit pre- mier et dudit second signal afin de fournir, sous la com- mande dudit premier signal, un mot de programme provenant de la mémoire à une sortie et sous la commande dudit second signal, bloquer la fourniture d'au moins un mot de program- me de la mémoire et y substituer la fourniture à la sortie d'un mot perturbateur provenant de la source de données. Les mots de programme sont stockés dans la mémoire dans un ordre bien déterminé L'ordre de succession dans lequel les mots de programme sont extraits par l'unité de traitement de données, pendant le traitement du programme est toute- fois différent de l'ordre de succession bien déterminé selon lequel les mots de programme sont stockés dans la mémoire Ainsi, il est normal que sous la commande de _____ l'unité de traitement de données, on passe, par exemple, à un sous-programme Seul le programmeur et l'unité de traitement de données connaissent l'ordre dans lequel les mots de programme sont lus dans la mémoire pour l'exécution upr dugprogramme Le lecteur non autorisé ne connaît toutefoi-5 pas cet ordre de succession et extraira les mots de program- me de la mémoire en les prenant, par exemple, un à un dans l'ordre dans lequel ils sont stockés Lorsque l'ordre de succession tel qu'il a été déterminé par l'unité de traite- ment de données n'est pas respecté, la première sortie de la mémoire est bloquée pour au moins un des mots de programme à extraire de la mémoire et le mot de programme à fournir est remplacé par un motperturbateur provenant de la sour- ce de données Ce mot perturbateur fourni par la source de données-ost entièrement inutilisable pour le traitement du programme Le lecteur non autorisé ne s'aperçoit de rien au cours de son opération de copiage car des mots de programme sont normalement fournis à la sortie du dispositif Ce n'est que lorsqu'il voudra utiliser son programme "copié" qu'il remarquera que ce programme copié est inutilisable. Une première forme préférentielle d'un dispositif conforme à l'invention est caractérisée en ce que ladite connexion de la mémoire comporte une entrée d'adresse de la mémoire et ladite information de programme comporte au moins une partie de l'adresse du mot de programme Ladite vérification est simple à réaliser sur base de quelques bits de l'adresse du mot de programme adressé par l'unité de traitement de données. Il est avantageux que lesdits premiers moyens de l'unité de vérification comportent un registre propre et une table de mémoire, le registre propre comportant une première entrée connectée à la première entrée de l'unité de vérification et une sortie de l'unité de traitement de données étant connectée à une seconde entrée du registre propre en vue de recevoir un signal de commande pour une opération de lecture, ce registre propre comportant une sortie connectée à une entrée d'adresse de la table de mémoire pour le stockage d'adresses de mots de programme, ladite information supplémentaire comportant une adresse pour un emplacement de la table de mémoire Grâce à l'uti- lisation d'une telle table de mémoire dans laquelle sont stockées des adresses de mots de programme, il est possible d'effectuer la vérification sur tous les bits du mot d'adresse sans occuper beaucoup d'espace de la mémoire pour le stockage de l'information supplémentaire. Une deuxième forme d'exécution préférée d'un dispositif conforme à l'invention est caractérisée en ce que ladite connexion de la mémoire comporte une sortie de données de la mémoire et ladite information de programme comporte au moins une partie du mot de programme A côté de la vérification effectuée sur base de mots d'adresse, il est aussi possible de vérifier sur base des mots de pro- gramme eux-mêmes. Une autre forme d'exécution préférée d'un dis- positif conforme à l'invention est caractérisée en ce que lesdits mots de programme à protéger sont divisés en deux groupes différents, un premier groupe dans lequel une in- formation supplémentaire exclusive est ajoutée à chaque mot de programme et un second groupe dans lequel une informa- tion supplémentaire non exclusive est ajoutée à chaque mot de programme, ladite unité de vérification étant équi- pée de moyens d'identification pour identifier de l'informa- tion supplémentaire dudit second groupe et pour, sous la commande d'une information supplémentaire dudit second groupe, désactiver l'unité de comparaison et produire un premier signal L'adjonction d'une information supplémen- taire exclusive à chaque mot de prpgramme exige une grande quantité d'espace de mémoire et n'augmente que dans une faible mesure l'efficacité du dispositif en ce qui concerne la lecture non autorisée A cet effet, il suffit de n'ajou- ter une information supplémentaire exclusive qu'au premier groupe de mots de programme et d'ajouter une information supplémentaire non exclusive aux mots de programme qui n'appartiennent pas à ce groupe, par exemple tous les mots de programme du second groupe ont la même information sup- plémentaire Grâce à cette division en premier et second groupes, l'information supplémentaire n'occupe qu'une faible quantité de l'espace de mémoire disponible. Il est avantageux que ladite source de données comprenne un générateur aléatoire L'utilisation d'un géné- rateur aléatoire permet de produire des mots de programme inutilisables toujours différents lorsqu'un lecteur non autorisé essaye de copier le contenu de la mémoire. Des formes d'exécution de l'invention seront décrites ci-après plus-ien détail avec référence aux dessins annexés, dans lesquels: la Fig la illustre une forme d'exécution simple d'un dispositif de protection contre une lecture non auto- risée conforme à l'invention, dans laquelle la vérification s'effectue sur base du signal d'adresse; la Fig lb illustre un certain nombre de formes d'onde utilisées pour expliquer le fonctionnement d'un dis- positif conforme à l'invention; la Fig 2 illustre une autre forme d'exécution d'un dispositif conforme à l'invention, et la Fig 3 illustre encore une autre forme d'exé- cution d'un dispositif conforme à l'invention dans lequel la vérification s'effectue sur base du mot de programme. Dans un système de traitement de données, on utilise une unité de traitement de données pour traiter des données selon un programme Ce programme est mémorisé sous la forme de mots de programme comme, par exemple, des instructions, des données, etc, dans une mémoire, qualifiée aussi de mémoire de programme Cette mémoire est le plus souvent une mémoire morte, par exemple une mémoire ROM, ou bien une mémoire PROM, une mémoire EAROM ou une autre mé- moire à CI (circuit intégré) Les mots de programme d'un io programme sont stockés dans la mémoire dans un ordre donné. Lors de l'exécution du programme, l'unité de traitement de données lit les mots de programme dans la mémoire dans un ordre qui est déterminé par le contenu et par la nature du programme ainsi que par les données à traiter Cet ordre de succession mentionné en dernier lieu diffère de l'ordre de succession du stockage des mots de programme dans la mémoire Ceci implique que sous la commande de l'unité de traitement de données l'on effectue des sauts, dits "jumps", dans le programme tel que stocké dans la mémoire Un lec- teur non autorisé ne connaît pas l'ordre dans lequel les mots de données doivent être extraits de la mémoire par l'unité de traitement de données lors de l'exécution du programme Lorsqu'un lecteur non autorisé souhaite lire le programme de la mémoire, il extraira à cet effet les mots de programme dans un ordre qui est différent de celui de l'unité de traitement de données. L'invention tire profit du fait que le lecteur non autorisé ne respecte pas l'ordre de succession indiqué par l'unité de traitement de données pour perturber ses mani- pulations non autorisées. L'invention sera décrite pour plusieurs formes d'exécution dans lesquelles une instruction (mot) est chaque fois choisie comme mot de programme Il est clair que l'invention fonctionne de manière analogue pour des mots de données ou pour tout autre type de mot de programme. La Fig la illustre une forme d'exécution simple d'un dispositif pour la protection contre une lecture non autorisée conformément à l'invention Le dispositif à 2526560. mémoire 20 comporte une mémoire 1, par exemple une mémoire ROM, dont une entrée d'adresse, par exemple de 11 bits de largeur, est connectée à un bus d'adresses 2 du système. Une première sortie de données de la mémoire 1 est connectée par l'intermédiaire du premier bus de données 9, par exem- ple de 8 bits, à une première entrée d'une unité de sélec- tion 7 Une deuxième sortie de données de la mémoire 1 est connectée par l'intermédiaire d'un deuxième bus de données 13 à une première entrée d'une unité de vérification 21. Une deuxième entrée de l'unité de vérification 21 est con- nectée à un certain nombre de lignes, par exemple quatre, du bus d'adresses 2 Une deuxième entrée de l'unité de sélection 7 est connectée à une sortie d'une source de données 8 L'unité de sélection comporte, en outre, une entrée de commande S qui est connectée à une sortie de l'unité de vérification 21 Une ligne 11 porte le signal CS (Chip Select) qui est présenté à une entrée CS de la mémoire 1, ainsi qu'à une troisième entrée de l'unité de vérification 21 Cette unité de vérification comporte une unité de comparaison 3 dont une première, une deuxième et une troisième entrée sont connectées respectivement à la première, la deuxième et la troisième entrée de l'unité de vérification La première entrée de l'unité de vérification est connectée, en outre, à une première entrée d'un disposi- tif OU logique 4 L'unité de vérifcation 21 comporte en outre, une porte ET logique 5 dont une sortie est connec- tée à une entrée d'horloge d'une bascule 6 Le signal OS à la troisième entrée de l'unité de vérification 21 est en outre présenté, inversé par l'intermédiaire de l'inverseur 3010, à une première entr 6 e de la porte ET logique 5 Une deuxième entrée de la porte ET logique 5 est connectée par l'intermédiaire d'une ligne 12 à ine sortie de l'unité de comparaison 3 et une troisième entrée de la porte ET logi- que 5 est connectée à une sortie du dispositif OU logique 354 Une sortie de la bascule 6 est connectée à l'entrée de l'unité de vérification. De l'espace 14, par exemple de 4 bits, est à présent prévu dans la mémoire 1 pour le stockage, en annexe de chaque instruction, d'une information supplé- mentaire qui se rapporte à une instruction suivante qui doit être extraite pendant le déroulement du programme par une unité de traitement de données 15 connectée. Dans la forme d'exécution choisie, dans le cas d'une série d'instructions, les bits les plus significatifs de l'adresse d'une des instructions suivantes à extraire par l'unité de traitement de données sont chaque fois inscrits comme information supplémentaire dans cet espace 14 Il est aussi possible d'utiliser comme information supplémentaire pour chaque instruction chaque fois les bits d'adresse les plus significatifs de l'instruction suivante à extraire au moyen de l'unité de traitement de données, mais ceci exige beaucoup d'espace de mémoire et n'améliore que peu l'efficacité du dispositif pour la protection contre une lecture non autorisée, comme cela sera expliqué plus loin dans cette description. Au lieu des bits les plus significatifs, on peut évidemment aussi choisir, à titre d'information supplémen- taire, les bits les moins significatifs ou une autre combi- naison de bits provenant de l'adresse de l'instruction suivante Pour les autres instructions qui n'appartiennent pas à ladite série, l'information supplémentaire a une va- leur fixe, par exemple tous les bits pour l'information supplémentaire ont la valeur zéro, chaque instruction fonctionne alors comme instruction de poursuite On peut donc pour ainsi dire diviser les mots de programme en deux groupes, un premier groupe dans lequel charue mot de pro- gramme possède une information supplémentaire exclusive, et un deuxième groupe dans lequel cela n'est pas le cas. Il n'est pas absolument nécessaire que l'infor- mation supplémentaire se rapporte à ladite instruction suivante L'information supplémentaire peut aussi se rappor- ter à une autre instruction à extraire par l'unité de traitement de données, mais dans ce cas, un plus grand nombre d'éléments est nécessaire pour le dispositif, comme par exemple un compteur, ce qui rend le dispositif plus coûteux et plus compliqué. Lorsqu'une première instruction est à présent adressée par l'unité de traitement de données 15 dans la mémoire 1, l'information supplémentaire appartenant à cette instruction est adressée en même temps Pendant l'adressage de la mémoire 1, le signal OS se trouve à un bas niveau, comme indiqué sur la Fig lb Par le fait que la mémoire est adressée par l'unité de traitement de données 15, la première instruction extraite ainsi que l'information supplémentaire qui y est associée sont présentées respec- tivement à la première et à la seconde sortie de données de la mémoire 1 (signal de données (DAT) haut Fig lb). L'information supplémentaire appartenant à cette première instruction est transmise par l'intermédiaire du deuxième bus de données 13 à l'unité de comparaison 3 et y est stockée, par exemple dans un registre propre de l'unité de comparaison Etant donné que le registre propre réagit au flanc montant du signal US, ce stockage a lieu lors de la transition du signal OS du bas niveau vers le haut ni- veau Lorsque l'unité de traitement de données extrait à présent une seconde instruction de la mémoire 1, une opéra- tion de comparaison est effectuée par l'unité de comparaison 3 Cette opération de comparaison s'effectue sous la com- mande du flanc descendant du signal CS et compare dans cette forme d'exécution les bits d'adresse les plus significatifs de l'adresse de la deuxième instruction telle qu'elle est présentée à la deuxième entrée de l'unité de comparaison et l'information supplémentaire stockée dans le registre propre de cette unité. Le résultat de l'opération de comparaison est positif lorsque la mémoire 1 est adressée dans l'ordre cor- rect déterminé par le programme de l'unité de traitement de données, donc lorsque l'adresse de ladite deuxième instruc- tion est égale, pour ce qui concerne les bits les plus significatifs, aux bits les plus significatifs de l'adresse de ladite instruction suivante qui sont encore présents dans le registre propre. Le résultat de l'opération de comparaison est négatif lorsque la mémoire 1 est adressée dans un ordre b incorrect, par exemple lorsque le contenu de la mémoire est copié et que les instructions ne sont pas extraites dans l'ordre déterminé par le programme de l'unité de traitement de données Dans ce cas, l'adresse de ladite deuxième instruction diffère en effet de l'adresse de la- dite instruction suivante. Le iésultat de l'opération de comparaison ap- parait inversé à une sortie EQ de l'unité de comparaison 3 et est présenté par l'intermédiaire de la ligne 12 à ladite deuxième entrée de la porte ET logique 5 Le signal CS est présenté à la première entrée de la porte ET logique 5 en vue de réaliser une synchronisation avec l'extraction d'instructions de la mémoire. Le dispositif OU ldgique 4 remplit une fonction particulière qui sera expliquée plus en détail ci-après. Comme déjà mentionné dans la description, toutes les in- structions ne sont pas pourvues d'une information suppié- mentaire exclusive, mais dans cette forme d'exécution, la mémoire 1 contient des instructions pour lesquelles tous les bits pour l'information supplémentaire ont la valeur zéro (deuxième groupe) Lorsque l'information supplémentaire pour une instruction est formée entièrement de zeros, l'opération de vérification prend une autre forme Ces zéros seront toutefois toujours présentés à l'unité de comparai- son 3 lorsqu'une instruction comportant des zéros à titre d'information supplémentaire est extraite par l'unité de traitement Il est clair que le résultat de l'opération de comparaison peut être négatif lorsque des zéros sont pré- sentés Le dispositif OU logique 4 sert à présent à suppri- mer ce résultat négatif Ce dispositif OU logique effectue une opération OU logique sur les bits de l'information supplémentaire Cela signifie que le résultat prendra la valeur logique " 1 " à une sortie du dispositif OU logique 4 lorsqu'au moins un des bits de l'information supplémentaire sest différent de zéro et que la valeur logique "O" sera présentée à la sortie du dispositif OU logique lorsque tous les bits de l'information supplémentaire ont la valeur zéro - Etant donné que le résultat à la sortie du dispositif OU 1 1 logique 4 n'a de l'importance que pour l'instruction sui- vante (opération de comparaison dans l'unité de comparaison 3), il ne doit être fourni que lors de l'extraction de l'instruction suivante Le résultat de l'opération OU lo- gique est à cet effet conserv A dans le dispositif OU lo- gique 4, par exemple par le positionnement d'une bascule. On peut à présent distinguer trois cas: 1 le résultat de l'opération de comparaison est positif; 2 le résultat de l'opération de comparaison est négatif et l'information supplémentaire ne comporte pas uni- quement des zéros; 3 le résultat de l'opération de comparaison n'a pas d'importance par suite du fait que l'information sup- plémentaire ne comporte que des zéros. Ces trois cas seront à présent décrits séparément. 1 Le résultat de l'opération de comparaison est positif Dans ce cas, la valeur EQ "O" apparaît sur la ligne 12 à la deuxième entrée de la porte ET logique 5, la valeur OR = " 1 " apparaît à la sortie du dispositif OU lo- gique 4 et est présentée à une troisième entrée de la porte ET logique 5 La valeur CS = " 1 " est présentée à lapremière entrée de la porte ET logique 5 lors de l'extraction d'une instruction de la mémoire 1. Etant donné que EQ = "O", OR = " 1 " et CS = " 1 ", une valeur logique "O" apparaît à une sortie de la porte ET logique 5 et est présentée à une entrée d'horloge de la bascule 6 Ce "O" logique ne fait pas commuter la bascule 6, par exemple la bascule de type D (la bascule est agencée de telle sorte qu'après l'enclenchement de l'alimentation, elle soit repositionnée, c'est-à-dire que Q = 0), de sorte qu'une valeur "O" logique apparaît aussi à une sortie Q de la bascule 6 et est présentée à une entrée S de l'unité de sélection 7 Cette unité de sélection 7 fournit à une sor- tie P un signal de la valeur F = A S+B S Ceci implique que lorsque la valeur logique "O" (S = "O") est présentée à l'entrée S (donc S = " 1 "), l'unité de sélection fournit l'instruction extraite de la mémoire 1 (F = A 1) Cette instruction est présentée par l'intermédiaire du premier bus de données 9 à son entrée A de l'unité de sélection 7. Par conséquent, dans le cas d'un résultat positif de l'opé- ration de correction, l'instruction correcte est fournie à une entrée de données de l'unité de traitement de données 15 ou à un autre utilisateur. 2 Le résultat de l'opération de comparaison est négatif et l'information supplémentaire ne comporte pas uniquement des zéros Ceci signifie que EQ = " 1 ", OR = " 1 " et que CS = " 1 " est présenté aux entrées de la porte ET logique 5 Une valeur logique " 1 " apparaît dès lors à une sortie de cette porte ET logique 5 Cette valeur logique " 1 " provoque à présent la commutation de la bascule 6, de sorte que la valeur Q = " 1 " apparaît à la sortie Q de la bascule 6 et est présentée à l'entrée S de l'unité de sélection 7 Cette unité de sélection fournit à présent à la sortie F le signal F = B 1 Cela signifie qu'une infor- mation provenant de la source de données 8 est fournie à un utilisateur en lieu et place de l'instruction demandée provenant de la mémoire 1 De cette façon, le lecteur non autorisé recevra de l'information inutilisable de la source de données 8. -3 Le résultat de l'opération de comparaison est sans importance par suite du fait que l'information supplémen-. taire ne comporte que des zéros Cela signifie que EQ = " 1 ", OR = "O" et que CS = " 1 " est présenté aux entrées de la porte ET logique 5 Une valeur logique " 10 " apparaît ainsi à une sortie de la porte ET logique 5, à la suite de quoi la situation qui se présente est à nouveau la même que celle décrite dans le premier cas Grâce à cela, il n'est pas nécessaire d'ajouter une information supplémentaire ex- clusive à chaque instruction et l'espace occupé par l'in- formation supplémentaire peut rester assez limité. Diverses formes d'exécution sont possibles pour la source de données 8, par exemple un registre, un géné- rateur aléatoire, une mémoire (bien entendu différente de la mémoire 1) ou simplement une connexion à la terre Cette source de données donne à la deuxième entrée de l'unité de sélection 7 des données perturbatrices qui ne con- 2526560. viennent pas pour l'exécution du programme Le remplacement des instructions de la mémoire 1 par des données perturba- trices provenant de la source de données 8 assure que le "programme copié" devient inutilisable La source de don- nées 8 ne fournit de préférence pas un même mot perturba- teur fixe à l'entrée B de l'unité de sélection Ce mot serait en effet rapidement identifiable par un lecteur non autorisé éventuel Par suite du fait que les mots perturba- teurs présents à la sortie F de l'unité de sélection 7, dans le cas o l'entrée B est sélectionnée sont chaque fois différents, il est difficile de vérifier si l'information fournie provient de la mémoire 1 ou de la source de don- nées 8. Le fonctionnement d'un dispositif conforme à la Fig la sera illustré par l'exemple donné ci-dessous. Le tableau I qui suit donne un exemple d'une partie du contenu de la mémoire 1. 252 '6560 * 14 TABLEAU I adress extra infor- mation ( 14) - l 010000 0 o 61 010101 000 instruction/ data word set a, b, c, d, e O a = a+ 1 goto 001000 read p display p enter b, store b goto 000001 c = c + 1 goto 001010 if a greaterthan 1 goto 000011 display b b = b 1 goto 010001 if b less than 5 goto 001010 d= a +b e = a + c On suppose à présent que lé programme est copié par lecture séquentielle des instructions successives (par exemple par incrémentation d'un compteur) Aucune difficul- té ne se présente à la lecture de la première et de la 3 O deuxième instruction (adresses 000000 et 000001) parce que le copiste non autorisé suit la séquence déterminée par l'unité de traitement de données Lorsque la troisième instruction (adresse 000010) est adressée, l'information supplémentaire 001 (stockée dans la partie 14 de la mémoire 351) formée par les bits d'adresse les plus significatifs est extraite et est stockée dans le registre de l'unité de comparaison 3 Etant donné que l'information supplémen- taire contient un bit de valeur 1, la valeur 1 est mémori- sée à la sortie de la porte OU 4. En extrayant la quatrième instruction (adresse oooo 11) l'unité de comparaison compare les bits les plus significatifs de l'adresse présentée à la mémoire, c'est- à-dire 000, avec l'information supplémentaire, c'est-à- dire 001, stockée dans son registre Le résultat de cette comparaison est négatif (O) Ce résultat de comparaison est inversé (O (inversé) = 1) à la sortie de l'unité de compa- raison 3 A l'entrée de la porte ET 5 sont alors présen- tées les valeurs 1, 1, 1 (unités de comparaison 3, porte OU 4, Cs (deux fois inversé)) La sortie de la porte ET 5 a à présent une valeur 1 qui commute la bascule 6, ce qui a à son tour pour effet de provoquer la sélection de l'entrée B du sélecteur 7, c'est-à-dire de l'information provenant de la source de données 8 et non pas de l'information "lire p I' de la mémoire 1 Le copiste non autorisé ne re- marque pas ce changement parce qu'une information sort Lors de l'extraction de la cinquième instruction (adresse 000100), la comparaison entre l'information supplémentaire (ooo) ajoutée à la quatrième instruction et les bits les plus significatifs de l'adresse présentée (ooo) donne un résultat positif, c'est-à-dire sortie inversée de l'unité de com- paraison = 0, sortie de porte OU 4 = O (opération OU sur 000), et CS (deux fois inversé = 1) La sortie de la porte ET 5 a la valeur 0, repositionnant la bascule 6, de sorte que l'entrée A du sélecteur est à nouveau sélectionnée. Une mauvaise instruction a donc été introduite entre deux instructions correctes du programme. Si cette opération d'extraction était exécutée par l'unité de traitement de données pendant une exécution normale du programme, la troisième instruction (goto 001000) aurait été exécutée Dans ce cas, l'adresse présentée à l'entrée d'adresse de la mémoire par l'instruction suivante après cette instruction goto aurait été 001000, avec les bits les plus significatifs 001, qui dans ce cas sont égaux à l'information supplémentaire ( 001) ajoutée à la troisième instruction, ce qui donne un résultat positif à l'unité de comparaison 3 (sortie 0) La sortie de la porte OU 4 pour une information supplémentaire 001 est égale à 1 Les signaux présentés à l'entrée de la porte ET 5 sont donc 0, 1, 1, donnant une sortie égale à 0, et sélectionnant ainsi l'entrée A du sélecteur 7. On considérera à présent l'instruction stockée à l'adresse 001000 (goto 001010 si a est plus grand que 1) en supposant que le programme est copié Par l'extraction de cette instruction, l'information supplémentaire 001 est stockée dans le registre de l'unité de comparaison 3 Lors de l'extraction de l'instruction stockée à l'adresse suivante ( 001001), la comparaison donne un résultat positif ( 001 information supplémentaire = 001 bits d'adresse les plus significatifs), même dans le cas o le programme est * copié Ceci est nécessaire parce que sinon l'exécution nor- male du programme par l'unité de traitement de données se- rait perturbée en cas de non-satisfaction de la condition goto. On considérera à présent l'instruction stockée à l'adresse 001001 (goto 000011) et en supposant à nouveau que le programme est copié A la lecture de l'instruction stockée à l'adresse 001010, le résultat de la comparaison est négatif (O (inversé)= 1) parce que que 001 n'est pas égal à 000 A la sortie de la porte OU 4, un signal d'une valeur O est présenté (l'information supplémentaire est 000) Les signaux présentés à l'entrée de la porte ET 5 sont donc 1, 0, 1, un signal de sortie de valeur O étant donné et des données correctes sont donc fournies à la sor- tie du sélecteur 7 Cette difficulté est évitée par le dis- positif de la Fig 2 dans lequel une comparaison est basée sur la totalité de l'adresse plûtot que sur les bits les plus significatifs Dans le cas o des instructions de saut sont stockées sur des adresses dont les bits les plus sig- nificatifs sont différents de 000, l'opération de copiage est efficacement perturbée par un dispositif tel que représenté sur la Fig la Ceci est illustré pour les instructions stockées aux adresses 001111 et 010000. La Fig 2 montre une autre forme d'exécution d'un dispositif conforme à l'invention Les éléments cor- respondants à ceux de la Fig la portent le même chiffre de référence Etant donné que cette forme d'exécution est très ressemblante à celle de la Fig la, on ne décrira que les points de différence Dans l'unité de vérification 21, la première entrée est connectée à une entrée d'un premier registre 16 Une sortie de ce premier registre 16 est con- nectée à une entrée d'une table de mémoire 17 dont une sor- tie est connectée à une première entrée de l'unité de comparaison 3 ' Par le fait que cette forme d'exécution com- porte un premier registre et une table de mémoire, l'unité de comparaison 3 ' ne comporte pas de registre propre comme dans la forme d'exécution de la Fig la A la deuxième en- trée de l'unité de comparaison 3 ' sont présentés tous les bits d'adresse du signal d'adresse qui est présenté à l'en- trée d'adresse de la mémoire 1. Lors de l'extraction d'une première instruction de la mémoire 1 par l'unité de traitement de données 15, l'information supplémentaire associée à cette première in- struction est transmise vers le premier registre 16 et y est stockée (flanc montant du signal o S) Cette information supplémentaire comporte, dans cette forme d'exécution, une adresse d'un emplacement de mémoire de la table de mémoire 17. Lors de l'extraction d'une deuxième instruction de la mémoire 1, la table de mémoire 17 est adressée, sous la commande du flanc descendant du signal OS sur la ligne 11, avec l'information supplémentaire associée à la pre- mière instruction et mémorisée dans le premier registre 16. A l'emplacement de mémoire adressé dans la table de mémoire 17 est stockée l'adresse de l'instruction suivante qui suit ladite première instruction dans l'ordre d'extraction par l'unité de traitement de données lors du traitement de son programme L'adresse stockée à l'emplacement d'adresse adressé dans la table de mémoire 17 est alors présentée à l'unité de comparaison 3 ' pour y être comparée à l'adresse de la deuxième instruction Le fonctionnement du disposi- tif de mémoire représenté sur la Fig 2 est pour le reste entièrement semblable à celui décrit pour la Fig la - L'avantage de l'utilisation d'un premier registre et d'une table de mémoire se situe dans le fait qu'à pré- sent l'opération de comparaison peut être effectuée sur la totalité de l'adresse et non sur une partie de celle-ci, sans qu'on ait besoin de beaucoup d'espace dans la mémoire 1 pour le stockage de l'information supplémentaire En effet, lorsque pour chaque mot d'instruction, 4 bits, par exemple, sont réservés dans la mémoire 1 pour le stockage de l'information supplémentaire, il est possible d'effectuer une opération de comparaison effective (c'est-à-dire une opération de comparaison dans laquelle l'information supplé- mentaire n'a pas la valeur zéro pour chacun de ses bits) sur 15 adresses complètes ( 24-1 = 16-1 = 15, 0000 non inclus). Si l'on inscrivait l'adresse complète à titre d'information supplémentaire dans la mémoire, on aurait besoin, pour l'ob- tention d'un même résultat, par exemple de 11 bits, tandis qu'avec cette forme d'exécution, 4 bits suffisent Une opé- ration de comparaison sur la totalité de l'adresse est en outre plus fiable qu'une même opération effectuée sur une partie seulement de l'adresse, car tous les bits sont alors vérifiés. La Fig 3 illustre une forme d'exécution d'un dispositif conforme à l'invention selon laquelle l'opération de vérification est effectuée sur le mot d'instruction Les éléments correspondant à ceux de la Fig la portent à nouveau les mêmes chiffres de référence et on n'examinera que les points de différence. La première sortie de données de la mémoire 1 est connectée par l'intermédiaire du premier bus de données 9 d'une part, à la première entrée (A) de l'unité de sélection 7 et d'autre part, à la deuxième entrée de l'unité de véri- fication 21. Dans cette forme d'exécution, l'information sup- p 1 émentaire comprend quelques bits, par exemple les plus significatifs, du mot d'instruction suivant à extraire par l'unité de traitement de données Lors d'une opération de comparaison, cette information supplémentaire est à pré- sent comparée dans l'unité de comparaison 3 à un deuxième mot d'instruction extrait Trois cas peuvent alors à nou- veau se présenter pour le résultat de l'opération de com- paraison, comme décrit à propos de la Fig la. Il est clair qu'une forme d'exécution telle que décrite sur la Fig 2, dans laquelle l'unité de vérifica- tion comporte encore un premier registre et une table de mémoire, peut aussi être utilisée pour un dispositif de mémoire conforme à l'invention dans lequel l'opération de vérification s'effectue sur le mot d'instruction. Des parties de la mémoire qui doivent être accessibles de manière aléatoire, comme par exemple les tables d'index ou des mots de données déterminés, peuvent être protégées, par exemple à l'intervention du critère de validité suivant: adresse initiale de table d'index c première adresse suivante dernière adresse de la table d'index Mais la protection de ces parties peut éventuellement être négli- gée Un lecteur non autorisé ne connaît en effet-pas les parties de la mémoire qui sont protégées par le fait, entre autres, que la différence entre l'information correcte et l'information de la source de données 8 ne peut pas être perçue. L'ensemble du dispositif de mémoire 20 peut être intégré Une version intégrée est avantageuse par rapport à une version comportant des composants discrets parce que, dans cette deuxième version, il est possible qu'un lecteur non autorisé, mais astucieux, parvienne à bloquer l'unité de sélection 7 sur un état F = A 1. Un dispositif de protection contre une lecture non autorisée de mots de programme à mémoriser dans une mémoire, tel que décrit plus haut, est utilisé en particu- lier dans des systèmes de traitement de données qui sont vendus à une échelle relativement grande A titre d'exemple, on peut citer les jeux vidéo. -20- REVENDICATIONS 1 Dispositif pour la protection contre une lecture non auto- risée de mots de programme mémorisés dans une mémoires(l en particu- lier une mémoire de programme, cette mémoire faisant partie d'une unité de mémoire( 20),ce dispositif comportant, en outre, une uni- té de traitement de données( 15)dont une sortie d'adresse est con- nectée à une entrée d'adresse de la mémoire en vue d'adresser, lors d'une opération de traitement, les mots de programme dans un ordre déterminé par l'unité de traitement de données, caractérisé en ce que l'unité de mémoire comporte une unité de sélection( 7) une unité de vérification( 2 f et une source de données( 8)à l'extérieur de la mémoire destinée à fournir au moins un mot perturbateur qui exerce un effet de brouillage lorsqu'il est ajouté auxdits mots de pro- gramme, l'unité de sélection comportant une première entrée (A) connectée à une première sortie de la mémoire et une deuxième entrée (B) connectée à la sortie de la source de données, une information supplémentaire ( 4) étant ajoutée à chaque mot de programme mémorisé dans la mémoire, une deuxième sortie de la mémoire étant connectée à une première entrée de l'unité de vérification pour présenter ladite information supplémentaire, une seconde entrée de l'unité de vérifi- cation étant connectée à une borne de la mémoire pour présenter l'information de programme, cette unité de vérification étant pour- vue de premiers moyens qui lui permettent, lors d'une opération de lecture d'un premier mot de programme, de stocker ladite information supplémentaire provenant de la mémoire, cette information supplé- mentaire indiquant un mot de programme de suite au premier mot de programme qui est déterminé par ledit ordre de succession, l'unité de vérification étant pourvue de seconds moyens pour, lors d'une opération de lecture, vérifier pour un deuxième mot de programme pro- venant de la mémoire et sous la commande de l'information supplémen- taire stockée, si l'information de programme du deuxième mot de programme à lire correspond à l'information de programme du mot de programme de suite indiqué par l'information supplémentaire et pour, en cas de concordance de ladite vérification, produire un premier signal et en cas de non concordance de ladite vérification, produire un second signal, l'unité de sélection étant pourvue d'une entrée de -21- commande (S) pour la réception dudit premier et dudit second signal afin de fournir, sous la commande dudit premier signal, un mot de programme provenant de la mémoire à une sortie et sous la commande dudit second signal, bloquer la fourniture d'au moins un mot de programme de la mémoire et y substituer la fourniture à la sortie d'un mot perturbateur provenant de la source de données. 2 Dispositif suivant la revendication 1, caractérisé en ce que ladite connexion de la mémoire comporte une entrée d'adresse de la mémoire et ladite information de programme comporte au moins une 1 O partie de l'adresse du mot de programme. 3 Dispositif suivant la revendication 2, caractérisé en ce que lesdits premiers mayens de l'unité de vérification comportent un registre propre ( 6)et une table de mémoire ( 17) le registre pro- pre comportant une première entrée connectée à la première entrée de l'unité de vérification( 2) et une sortie de l'unité de traitement de données étant connectée à une seconde entrée du registre propre en vue de recevoir un signal de commande pour une opération de lecture, ce registre propre comportant une sortie connectée à une entrée d'adresse de la table de mémoire pour le stockage d'adres- ses de mots de programme, ladite information supplémentaire compor- tant une adresse pour un emplacement dans la table de mémoire. 4 Dispositif suivant la revendication 1, caractérisé en ce que ladite connexion de la mémoire comporte une sortie de données de la mémoire et ladite information de programme comporte au moins une partie du mot de programme. Dispositif suivant la revendication 4, caractérisé en ce que lesdits premiers moyens de l'unité de vérification comportent un registre propre et une table de mémoire, le registre propre comportant une première entrée connectée à la première entrée de l'unité de vérification et une sortie de l'unité de traitement de données étant connectée à une deuxième entrée du registre propre en vue de recevoir un signal de commande pour une opération de lec- ture, ce registre propre comportant une sortie connectée à une entrée d'adresse de la table de mémoire pour le stockage de mots de programme, ladite information supplémentaire comportant une adresse pour un emplacement dans la table de mémoire. -22- 6 Dispositif suivant l'une quelconque des revendications précédentes, caractérisé en ce que lesdits seconds moyens de l'u- nité de vérification comportent une unité de comparaison ( 3,3 '). 7 Dispositif suivant la revendication 6, caractérisé en ce que lesdits mots de programme à protéger sont divisés en deux groupes différents, un premier groupe dans lequel une information supplémentaire exclusive est ajoutée à chaque mot de programme et un second groupe, dans lequel une information supplémentaire non exclusive est ajoutée à chaque mot de programme, ladite unité de vérification étant équipée de moyens d'identification( 4)pour iden- tifier de l'information supplémentaire dudit second groupe et pour, sous la commande d'une information supplémentaire dudit second groupe, désactiver l'unité de comparaison et produire un dit premier signal. 8 Dispositif suivant l'une quelconque des revendications précédentes, caractérisé en ce que ladite source de données () comporte un générateur aléatoire. 9 Dispositif suivant l'une quelconque des revendications 1 à 6 incluse, caractérisé en ce que ladite source de données( 8) comporte un registre. Unité de mémoire à utiliser dans un dispositif suivant l'une quelconque des revendications précédentes, caractérisée en ce qu'elle comprend une mémoire(ll une unité de sélection( 71 une unité de vérification ( 2 " et une source de données( 8) extérieure à la mémoire, une première et une seconde sortie de la mémoire étant connectéesrespectivement à une première entrée de l'unité de sélection et une première entrée de l'unité de véri- fication, une sortie de l'unité de vérification étant connectée à une entrée de commande de l'unité de sélection et une deuxième entrée de l'unité de sélection étant connectée à une sortie de la source de données. 11 Unité de mémoire suivant la revendication 10, caractérisé en ce que l'unité de vérification est pourvue d'une unité de com- paraison, cette unité de comparaison comportant une entrée qui est connectée à la première entrée de l'unité de vérification. -23- 12 Unité de mémoire suivant la revendication 10 ou 11, caractérisée en ce que la mémoire est une mémoire morte. 13 Unité de mémoire suivant la revendication 10, 11 ou 12, caractérisée en ce qu'elle est réalisée selon la technique des circuits intégrés. 14 Unité de mémoire suivant l'une quelconque des revendica- tions 10, 11, 12 ou 13, caractérisée en ce que l'unité de mémoire est utilisable comme cassette-mémoire dans un jeu video. Unité de mémoire suivant l'une quelconque des revendica- tions 10, 11, 12 ou 13, caractérisée en ce que l'unité de mémoire ( 20) est utilisable comme mémoire dans un système de traitement de données. 16 Unité de mémoire suivant l'une quelconque des revendica- tions 10, 11, 12 ou 13 caractérisée en ce que l'unité de mémoire ( 20) fait partie d'un système de traitement de données.