Brevet FR2659763A1 — publié le 19910920

La présente invention concerne des systèmes d'ordinateur, en particulier un ordinateur qui reçoit son programme logiciel à partir d'une source de programme amo- vible comme par exemple une cartouche de mémoire ROM, une disquette ou une bande en cassette. Selon une pratique usuelle, un ordinateur est conçu et fabriqué par une société spécialisée en matériel, tandis que le logiciel pour cet ordinateur est écrit et vendu par de nombreuses sociétés différentes spécialisées en logiciel Ce logiciel peut englober de nombreuses appli- cations diverses, peut être produit par un large éventail de vendeurs concurrents et peut être disponible sous diffé- rents formats de support des informations incluant la bande en cassette, la disquette et la cartouche de mémoire ROM. Dans de telles conditions, le vendeur de matériel, qui fa- brique l'ordinateur, peut ne pas être à même de régler ou de commander la qualité ou le caractère approprié d'un tel logiciel Cependant il cherche à s'assurer que toute modi- fication de conception et de fabrication apportée à l'ordinateur ne le rend pas incompatible avec le logiciel écrit pour des générations précédentes de ce même ordina- teur. Il peut arriver fréquemment que le fabricant ob- tienne des réductions souhaitables du coût de fabrication ou augmente la fiabilité du produit en incorporant les plus récents progrès technologiques, sans affecter la-compatibi- lité avec des générations antérieures de logiciel Cepen- dant, de telles modifications ne peuvent pas affecter les caractéristiques de l'ordinateur, comme par exemple le nombre des modes d'affichage ou les systèmes de production de musique et de sons. Cependant, le fabricant de l'ordinateur peut dé- sirer améliorer son ordinateur en y ajoutant des caracté- ristiques perfectionnées, comme par exemple des modes sup- plémentaires d'affichage ou de nouveaux systèmes de produc- tion de sons et de musique, tout en conservant les carac- téristiques disponibles antérieurement et également en maintenant la comptabilité avec des générations antérieures de logiciel. Dans un tel cas, le concepteur d'ordinateurs doit savoir que son ordinateur doit fonctionner correctement tout d'abord avec un logiciel amélioré qui a été écrit sur la base des nouvelles caractéristiques améliorées et a été conçu spécifiquement pour les utiliser, et en second lieu avec un ancien logiciel qui a été écrit sans la connais- sance des nouvelles caractéristiques améliorées En parti- culier, le concepteur d'ordinateurs doit s'assurer qu'un ancien logiciel n'active pas, de façon accidentelle, les nouvelles caractéristiques L'ordinateur requiert un pro- cédé garantissant que les nouvelles caractéristiques amé- liorées sont disponibles uniquement pour le nouveau logi- ciel qui a été écrit avec une compréhension complète du mode d'utilisation correct de ces nouvelles caractéris- tiques. Antérieurement, les fabricants d'ordinateurs ont quelquefois publié, pour leurs produits, des spécifications indiquant que certaines zones du système d'entrée/sortie et de la carte de mémoire sont réservées pour une extension ou une amélioration future Cependant, il existe des cas o de telles zones n'ont pas été réservées. De même, certains fabricants d'ordinateurs dési- rant améliorer leurs produits ont cherché antérieurement à commander la qualité ou le caractère approprié du logiciel d'un tiers, par exemple en publiant des listes de logiciels appropriés Un tel procédé ne s'applique que lorsque le nombre des titres en logiciels devant être qualifiés est connu et possède une faible valeur en permettant un traite- ment aisé. De même, certains fabricants d'ordinateurs ont insisté antérieurement sur le fait que le logiciel devant être utilisé avec les nouvelles caractéristiques perfec- tionnées doit être équipé d'un code matériel, connu par ailleurs sous le terme "dongle", c'est-à-dire clé électro- nique Un tel procédé implique la dépense tout d'abord d'une qualification du logiciel pour le contrôle de son ca- ractère approprié et pour son utilisation avec le nouvel ordinateur, et en second lieu, la dépense de montage d'un code matériel ou "dongle" pour chaque élément du logiciel vendu. Dans le brevet US 4 462 076, on propose un sys- tème qui identifie une cartouche amovible en imposant à l'unité centrale de traitement CPU de lire et de contrôler le contenu d'emplacements sélectionnés dans la cartouche. Une solution similaire est utilisée dans le système d'ordinateur Commodore 64, voir Commodore 64 Programmer;s Reference Guide, 1982, Commodore Business Machines Inc, page 263 De telles propositions requièrent que l'ordinateur possède un progiciel spécial (par exemple un logiciel ROM) lui permettant de rechercher le code d'authentification. Le fascicule de brevet européen 67 875 et le bre- vet US 4 688 169 décrivent tous deux des systèmes, dans lesquels un code spécifique à la machine ou une "signature" est écrit sur chaque copie d'un programme de sorte qu'il ne fonctionne que sur une machine spécifique identifiée par ce code ou cette signature A nouveau, il est nécessaire que le microprocesseur contrôle cet emplacement particulier de la bande du programme. Dans un autre cas, les fascicules de brevets eu- ropéens 206 704 et 217 668 décrivent une cartouche de mé- moire ROM qui contient son propre microprocesseur de sorte que le signal de sortie de ce microprocesseur peut être comparé à celui d'un dispositif correspondant situé dans l'ordinateur principal, pour l'identification de la car- touche Cependant, le fait de prévoir un microprocesseur dans la cartouche de mémoire ROM est à la fois coûteux et complexe. Conformément à la présente -invention, il est prévu un système d'ordinateur caractérisé en ce qu'il com- prend: une source de programme amovible, apte à être insé- rée; des moyens de mémoire pour mémoriser des instructions de programme; une unité centrale de traitement pour exécu- ter des instructions de programme mémorisées; des moyens de délivrance de caractéristiques, qui contiennent des carac- téristiques auxquelles l'accès est obtenu au moyen d'instructions à partir de l'unité CPU; et des moyens de validation d'accès pour valider l'accès à au moins llumsélection- née des caractéristiques; les moyens de validation d'accès comprenant des moyens pour comparer une séquence d'octets, délivrée par l'unité CPU en réponse aux instructions du programme, à une séquence de référence d'octets, et pour valider les caractéristiques sélectionnées dans les moyens de délivrance de caractéristiques, en fonction du résultat de la comparaison. Conformément à la présente invention, le pro- gramme lui-même amène l'unité CPU à délivrer une séquence d'octets -C'est alors seulement, lorsque la séquence ainsi produite est conforme à la séquence de référence, que les caractéristiques additionnelles perfectionnées sont mises à la disposition du programme. L'invention fournit également une source de pro- gramme, comme par exemple une cartouche de mémoire ROM, etc, destinée à être utilisée dans un système d'ordinateur, et un procédé pour valider de façon sélective des fonctions dans un système d'ordinateur. La présente invention présente l'avantage d'être simple à mettre en oeuvre, en requérant uniquement que, sous la commande du logiciel, le processeur enregistre les. séquences prédéterminées de valeurs en un emplacement de port spécifié pour la mise à disposition des caractéris- tiques améliorées Aucun progiciel spécial incorporé, du type pouvant être nécessaire dans des ordinateurs recher- chant des "codes de sécurité" à des adresses spécifiques dans la source de programme n'est nécessaire Aucun micro- processeur séparé n'est nécessaire dans la source de pro- gramme. D'autres caractéristiques et avantages de la pré- sente invention ressortiront de la description donnée ci- après prise en référence aux dessins annexés, sur lesquels: la figure 1 est un schéma-bloc d'un système d'ordinateur conforme à l'invention; la figure 2 est un schéma-bloc illustrant un circuit de blocage situé dans la microplaquette de produc- tion vidéo/son du système de la figure 1; la figure 3 est un organigramme illustrant lés pas mis en oeuvre lors d'un essai réussi de déblocage des nouvelles caractéristiques améliorées dans l'ordinateur; la figure 4 est un organigramme illustrant les pas mis en oeuvre lors d'un essai infructueux de déblocage des nouvelles caractéristiques; et la figure 5 est un organigramme illustrant les pas mis en oeuvre lors d'un essai réuni de blocage des nou- velles caractéristiques. La figure 1 représente un ordinateur comportant une unité CPU 1 (unité centrale de traitement), qui exécute des instructions à partir du logiciel d'applications, ac- tuellement chargé Ce logiciel est chargé par l'intermé- diaire d'un bus 25 dans une mémoire RAM (mémoire à accès direct) 3 et peut provenir d'une cartouche de mémoire ROM 9 (mémoire morte) raccordée au bus de l'unité CPU par l'intermédiaire d'un connecteur 8 de la cartouche de mé- moire ROM, ou d'une disquette 12, dont le contenu est lu par l'intermédiaire d'une unité de disquette 11 et d'un contrôleur de disquette 10; ou d'une bande 14 insérée dans une cassette et dont le contenu est lu par l'intermédiaire d'un dérouleur de bande de cassette 13 Bien qu'elle soit particulièrement appropriée pour être utilisée avec une cartouche de mémoire ROM, la présente invention n'est pas limitée à un procédé particulier de chargement de logiciel. Lorsque le programme est situé sur un disque ou une bande, il est introduit dans la mémoire RAM Ce mode de fonction- nement est également possible lorsque le programme est si- tué dans une cartouche de mémoire ROM, bien qu'il soit pré- férable que l'unité CPU exécute une par une les instruc- tions directement à partir de la cartouche Dans la des- cription qui va suivre, on suppose que le programme est in- troduit dans la mémoire RAM, qui est applicable aux trois types de sources de programme. L'unité CPU exécute les instructions pendant le déroulement normal du logiciel en cours, ces instructions provoquant la lecture et un enregistrement du contenu de la mémoire RAM 3, la lecture de l'état d'un clavier 7 et la lecture et l'enregistrement de registres internes et d'une mémoire dans une microplaquette de production vidéo/son 2 qui commande les caractéristiques vidéo et acoustiques de l'ordinateur Ces registres internes et cette mémoire sont des unités associées à la commande des anciennes caracté- ristiques ou caractéristiques de base, et également des unités supplémentaires associées aux nouvelles caractéris- tiques ou caractéristiques perfectionnées Les caractéris- tiques de base sont disponibles à tous les programmes, mais les caractéristiques perfectionnées sont disponibles uni- quement aux programmes écrits avec autorisation spécifique de ces caractéristiques perfectionnées La microplaquette 2 établit également le trajet de communication pour le cla- vier 7 et la mémoire RAM 3 à l'intérieur du bus 25. De mêmes la microplaquette de production vi- déo/son 2 contient un circuit de blocage qui empêche qu'un ancien logiciel n'active accidentellement les nouvelles ca- ractéristiques Ce circuit de blocage possède deux états. Lorsqu'elles sont bloquées, les nouvelles caractéristiques améliorées, ne sont pas accessibles pour l'unité CPU et lorsqu'elles sont débloquées, ces caractéristiques sont disponibles. La figure 2 représente les détails du circuit de blocage situé à l'intérieur d'une microplaquette de produc- tion vidéo/son Ce circuit comprend un générateur de sé- quences binaires pseudo-aléatoires (PRBS) constitué par des bascules bistables 15 à 22 et par les portes OU-Exclusif, qui leur sont associées Les bascules bistables 15 à 22 fonctionnent dans la pratique sous la forme de deux généra- teurs PRBS, chacun d'une largeur de quatre bits, qui ser- vent à délivrer une séquence binaire pseudo-aléatoire PRBS globale d'une largeur de huit bits L'agencement d'un géné- rateur PRBS est bien connu et comprend fondamentalement un registre à décalage possédant un certain nombre d'étages, quatre comme cela est représenté, les signaux de sortie d'étages sélectionnés étant combinés et renvoyés en tant que signal d'entrée au premier étage Le générateur PRBS peut prendre seize états différents incluant les états for- més uniquement de zéros Chaque état possède une valeur unique à 8 bits apparaissant dans le bus PRBS ( 7:0) Les seize états sont désignés par PRBS(O) à PRBS( 15) Comme cela est bien connu dans les générateurs PRBS, si l'on dé- signe par n_ le nombre d'étages du registre, le générateur PRBS est à même de produire une séquence pseudo-aléatoire de O et de 1 La séquence se répète avec une longueur qui, pourvu que les connexions avec les portes soient correcte- ment choisies, est égale au maximum à m_ = 2 n-1. L'état du circuit de blocage est déterminé par la bascule bistable 24 avec le signal de sortie ENF Lorsque le signal de sortie ENF ést -égal à zéro, les caractéristi- ques améliorées sont invalidées (bloquées) Lorsque le si- gnal ENF est égal à un, les caractéristiques améliorées sont validées et sont disponibles pour l'unité CPU (elles sont débloquées). L'état du générateur PRBS avance chaque fois que l'unité CPU exécute une instruction de sortie envoyée au port A, qui est un port situé dans la microplaquette vi- déo/son 2, au moyen duquel le circuit de blocage est rac- cordé au bus 25, de sorte qu'une instruction de sortie en- voyée au port A est une instruction de sortie envoyée au circuit de blocage Une telle instruction de sortie pro- duit, dans la ligne de transmission de signaux CP, une im- pulsion qui commande de façon cadencée les huit bascules bistables 15 à 22 quiconstituent le générateur PRBS. Pendant l'existence du flanc montant (actif) de cette impulsion, les données de l'unité CPU apparaissent dans le bus DI ( 7:0) et sont comparées à l'état PRBS ( 7:0) du générateur PRBS dans un comparateur 23 à 8 bits Ainsi par exemple, si la valeur PRBS ( 7:0) est égale à 3 F (en no- tation hexadécimale) et si l'unité CPU exécute une instruc- tion délivrant une donnée ayant la valeur 3 F (en notatation hexadécimale) au port A, l'état du générateur PRBS aug- mente, le signal de sortie du comparateur 23 indiquant une comparaison réussie. Lors de l'apparition de chaque flanc positif de l'impulsion d'horloge (CF) , le générateur PRBS: a) soit avance dans sa séquence, si les données présentes dans la ligne DI ( 7:0) coïncident avec l'état PRBS ( 7:0) du générateur PRBS, b) soit positionne uniquement des 1, c'est-à-dire fait redémarrer la séquence à partir du début si le comparateur indique que la donnée ( 7:0) présente dans DI n'est pas identique à PRBS ( 7:0). Lors de l'apparition de chaque flanc positif de l'impulsion d'horloge (CP) , la bascule bistable de sortie a) soit passe à un état O (bloqué), si la valeur PRBS se trouve dans l'état PRBS 14, b) soit passe à l'état 1 (débloqué), si la valeur PRBS se trouve dans l'état PRBS 15, c) soit conserve son état antérieur. Le signal de sortie de l'unité CPU dépend natu- rellement du programme chargé de cette unité Ce programme est tiré de la source de programme, à savoir la mémoire ROM 9, l'unité de disquette 12 ou la bande en cassette 14 Par conséquent, l'ordinateur peut indiquer, au moyen de la com- paraison décrite précédemment, si le logiciel présent dans la mémoire ROM, dans la disquette ou sur la bande a été écrit avec les caractéristiques améliorées ou non Ces ca- ractéristiques sont libérées uniquement s'il a été écrit avec ces caractéristiques améliorées en mémoire, de sorte que ces caractéristiques sont mises à la disposition du lo- giciel De ce fait, le logiciel, qui a été écrit avant l'apparition des caractéristiques améliorées, ne peut ap- peler ou altérer ces dernières par inadvertance. Chaque fois qu'il est nécessaire de faire fonc- tionner le circuit de blocage et que l'état du générateur PRBS est inconnu, il faut que le générateur soit synchro- nisé tout d'abord au moyen du positionnement uniquement de 1, puis au moyen du positionnement uniquement de 0 Ceci provoque la remise à l'état initial du générateur PRBS. Les figures 3, 4 et 5 montrent des séquences de valeurs de données de sortie de l'unité CPU permettant d'activer le circuit de blocage Ces figures s'expliquent d'elles-mêmes et c'est pourquoi on ne -les décrira pas ici de façon détaillée La figure 3 est un organigramme mon- trant les pas mis en oeuvre lors d'un essai réussi de dé- blocage des caractéristiques améliorées La figure 4 est un organigramme montrant les pas mis en oeuvre lors d'un essai infructueux de blocage ou de déblocage des caractéristiques améliorées La figure 5 est un organigramme illustrant les pas mis en oeuvre lors d'un essai réussi de blocage des nouvelles caractéristiques Les blocs représentés contien- nent des valeurs hexadécimales devant être enregistrées au niveau du port A De même, PRBS ( 0-15) représente les états PRBS dans l'ordre. Par conséquent, on voit que le système comprend deux parties La première partie est un mécanisme logiciel de blocage, qui compare des valeurs de données enregistrées par l'unité CPU au niveau du port A, à l'état d'un généra- teur PRBS, et la seconde partie est un sous-programme logi- ciel envoyant la séquence correcte de valeurs de données PRBS ( 0-15) au port A On choisit délibéremment cette sé- quence de valeurs de manière qu'elle soit suffisamment obs- cure pour que la probabilité qu'un ancien logiciel active accidentellement le code soit faible au point d'être négli- geable Ce logiciel peut être mis en oeuvre sous un grand nombre de formes différentes; il peut par exemple contenir une série d'instructions de sortie à chacune desquelles est associé un opérande de données correspondant à l'état PRBS; sinon, il peut comprendre une boucle à laquelle est asso- ciée une table de consultation. Le système décrit ne requiert pas une commande détaillée, de la part du fabricant d'ordinateurs, du logi- ciel devant être utilisé dans ce système et ne requiert pas l'utilisation d'une clé électronique ou analogue. L'invention peut être utilisée dans le cas o aucune réser- vation de zones du système d'entrée/sortie de la carte de mémoire n'a été exécutée. L'invention n'est pas limitée à une technique lo- gicielle particulière ou à une structure particulière de programme, mais s'applique à n'importe quel logiciel apte à délivrer la séquence correcte de valeurs de données En outre, l'invention n'est pas limitée à un support particu- lier d'informations pour la mémorisation du programme et en particulier est applicable à l'utilisation d'une cartouche de mémoire ROM, d'une disquette ou d'une cassette. REVENDICATIONS 1 Système d'ordinateur, caractérisé en ce qu'il comprend une source de programme amovible ( 9,12,14), apte à être insérée; des moyens de mémoire ( 3,9) pour mémoriser des instructions de programme; une unité centrale de traitement CPU ( 1) pour exécuter des instructions de programme mémorisées; des moyens ( 2) de délivrance de caractéristiques, qui contiennent des caractéristiques auxquelles l'accès est obtenu au moyen d'instructions à partir de l'unité CPU; et des moyens de validation d'accès (PRBS)po 4 r valider l'accès à au moins l'une sélectionnée des caractéristiques; les moyens de validation d'accès (PRBS) compre- nant des moyens ( 23) pour comparer une séquence d'octets, délivrée par l'unité CPU en réponse aux instructions du programme, à une séquence de référence d'octets, et pour valider les caractéristiques sélectionnées dans les moyens de délivrance de caractéristiques, en fonction du résultat de la comparaison. 2 Système d'ordinateur selon la revendication 1, dans lequel la source de programme ( 9) comprend une car- touche de mémoire ROM. 3 Système d'ordinateur selon la revendication 2, caractérisé en ce que les moyens de mémoire -( 3,9) sont constitués au moins en partie par la cartouche de mémoire ROM ( 9), et que l'unité (CPU) exécute directement des ins- tructions contenues dans la cartouche de mémoire. 4 Système d'ordinateur selon la revendication 1, caractérisé en ce que la source de programme comprend une disquette ( 12). Système d'ordinateur selon la revendication 1, caractérisé en ce que la source de programme comprend une bande en cassette ( 14). 6 Système d'ordinateur selon l'une quelconque des revendications 2, 4 et 5, caractérisé en ce que les moyens de mémoire ( 3,9) comprennent une mémoire ( 9) acces- sible pour l'unité CPU et non située dans la source de pro- gramme amovible, et qu'il est en outre prévu des moyens de chargement permettant de charger un programme, situé dans la source de programme, dans la mémoire pour son exécution par l'unité CPU. 7 Système d'ordinateur selon l'une quelconque des revendications 1 à 6, caractérisé en ce que les moyens de validation d'accès (PRBS) comprennent un générateur de séquences binaires pseudo-aléatoires servant à produire la séquence de référence d'octets. 8 Source de programme amovible destinée à être utilisée dans un système selon l'une quelconque des reven- dications 1 à 7, caractérisée en ce qu'elle comprend des moyens pour amener l'unité CPU à exécuter des instructions de programme comme par exemple la délivrance d'une séquence d'octets pour la comparer à ladite séquence de référence dans lesdits moyens de validation d'accès (PRBS). 9 Procédé pour valider de façon sélective des fonctions dans un système d'ordinateur comprenant une unité CPU ( 1), caractérisé en ce qu'il inclut les étapes consis- tant à raccorder une source de programme amovible ( 9,12,14), apte à être insérée, à un système d'ordinateur, exécuter des instructions mémorisées dans l'unité CPU ( 1) de manière à délivrer une séquence d'octets, comparer la séquence ainsi délivrée d'octets à une séquence de réfé- rence d'octets, et valider de façon sélective l'accès par l'unité CPU ( 1) à des caractéristiques sélectionnées de fonctionnement en fonction des résultats de la comparaison. Procédé selon la revendication 9, caractérisé en ce que la séquence de référence comprend une séquence binaire pseudo-aléatoire.