Brevet FR2634917A1 — publié le 19900202

PROCEDE ET DISPOSITIF DE PROTECTION D'UN LOGICIEL, EN PARTICULIER COUTRE LES COPIES JON AUTORISES L'invention concerne un procédé et un dispositif de protection d'un logiciel, en particulier contre les copies non autorisées. On connait l'importance que revit cette question pour les aoçiétée de services en informatique. Quels que soient les moyens de protection actuellerent utilisés, il est toujours possible h un spécialiste, s'il dispose de temps et de moyens suffisants, de parvenir & copier un logiciel enregistré sur un support quelconque (mémoire morte, disquette, etc) Les moyens les plus courants de protection des logiciels sont le codage ou cryptage, au moyen de clefs statiques, de clefs dynamiques et de fonctions ou d'algorithmes mathématiques plus ou moins sophistiqués.Le spécialiste qui parvient cependant à découvrir les clefs de codage ou a inverser les fonctions de codage, peut alors utiliser le logiciel à son profit, le reproduire en une pluralité. d'exemplaires, etc. La présente invention repose sur le principe qu'un logiciel peut être protégé beaucoup plus efficacement lorsque ce sont, non ses fonctions, nais les résultats de ses fonctions qui sont accessibles L'invention propose donc un procédé de protection d'un logiciel, en particulier contre les copies non autorisées, caractérisé on ce qu'il consiste à enregistrer au moins une partie. essentielle du logiciel dans au moins une mémoire reliée a un microprocesseur de traiteront de l'information, et à enfermer l'ensemble nicroprocesseur--6moire dans un boîtier de type inviolable, comprenant des moyens de connexion entre le microprocesseur précité et un licroprocesseur extérieur d'un systène d'utilisation du logiciel. Selon l'invention, le logiciel & protéger est donc enregistré dans une mémoire connectée à un sicroprocesseur, et seule une connexion de microprocesseur & microprocesseur peut être réalisée. Dans ces conditions, il est impossible d'avoir accès au contenu du logiciel lui-meme. Selon une autre caractéristique de l'invention, ce procédé consiste à relier le microprocesseur du boîtier au microprocesseur extérieur par une liaison série type RS232C ou bien par une liaison a mémoire partageable, ou bien par une liaison canal à canal. De préférence, on enregistre dans la mémoire précitée uniquement la partie essentielle du logiciel s protéger, et on enregistre sur un support quelconque le reste du logiciel, correspondant à des fonctions simples et/ou banales telle que la gestion des entres/sorties. Il importe peu en effet que les fonctions de gestion des entrées/sorties soient copiées ou non. Cela permet en outre d'enregistrer dans la mémoire du boitier un logiciel qui sera indépendant du système d'exploitation du microprocesseur extérieur et qui sera donc universel, le logiciel de communication avec le microprocesseur extérieur étant enregistré sur un support quelconque différent. Selon un mode de réalisation préféré de l'invention, le procédé consiste encore à noyer la mémoire et le microprocesseur précités dans- un bloc ou une épaisseur de matière résistante telle qu'une résine, constituant ledit boîtier inviolable ou faisant partie de celui-ci. L'invention propose également un dispositif de protection d'un logiciel, en particulier contre les copies non autorfsées, caractérisé en ce qu'il comprend - au moins une mémoire dans laquelle est enregistrée au moins une partie essentielle du logiciel, correspondant par exemple & ses fonctions complexes ~trou originales, - au moins un microprocesseur de traitement de l'information, - des moyens de connexion entre le microprocesseur et la mémoire, - et un boîtier de type inviolable, contenant la mémoire et le microprocesseur précités ainsi que leurs moyens de connexion, et comprenant des moyens de connexion de ce microprocesseur à un microprocesseur extérieur d'un système d'utilisation du logiciel. Un dispositif selon l'invention est extrêmement peu coûteux par rapport aux avantages qu'il présente. En effet, le prix d'un microprocesseur fabriqué en grande série est maintenant très faible, et son association s la mémoire dans laquelle est enregistré le logiciel n'augmentera pas de façon sensible le prix du logiciel. Selon une autre caractéristique de l'invention, ce dispositif comprend également un support quelconque sur lequel a été enregistrée une autre partie du logiciel, correspondant en particulier à des fonctions simples ou banales telles que la gestion des entrées/sorties, ce support étant destiné a être associé au système d'utilisation du logiciel. Ce support peut être une simple disquette, sur laquelle on a enregistré un logiciel de communication adapté au système d'exploitation du microprocesseur extérieur. Selon une autre caractéristique de l'invention, les moyens de connexion entre les microprocesseurs comprennent de préférence une liaison canal & canal, qui comporte, pour chaque microprocesseur, un registre ISR directement implante sur un bus de données du microprocesseur associé, et une bascule SR dont des entrées sont reliées à des circuits décodeurs d'adresses de lecture et d'écriture. Ce type de liaison est simple à réaliser > peu coûteux, et très perf ornant. Dans la description qui suit, faite & titre d'exemple, on se référera aux dessins annexés, dans lequels - la figure 1 représente schématiquement un dispositif selon l > invention et sa connexion à un système d'utilisa tion du logiciel - la figure 2 représente schématiquement à titre d'exemple, les caractéristiques essentielles d'une liaison canal a canal utilisée dans le cadre de l'invention. En figure 1, le dispositif selon l'invention est désigné généralement par la référence 10 et comprend un boitier 12 de type inviolable, qui contient au moins un microprocesseur 14 de traitement de l'information et au moins une mémoire 16 dans laquelle a été enregistrée la partie essentielle d'un logiciel & protéger. Par "partie essentielle", on entend toutes ses fonctions complexes et/ou originales, å l'exception éventuellement des fonctions banales telles que les fonctions de gestion des entrée-=-/sorties. Dans l'exemple représenté, le boîtier 12 contient un autre microprocesseur 18 associé à une autre mémoire 20. Les microprocesseurs 14 et 18 sont connectés l'un & l'autre. le microprocesseur 14 étant maître, le microprocesseur 18 étant esclave et travaillant sous contrôle du microprocesseur 14. Les mémoires 16 et 20 dans lesquelles sont enregistrées des logiciels, comprennent des mémoires mortes du type ROX, PROX, EPROX, etc, et des mémoires vives (RAX). Le microprocesseur maître 14 du dispositif 10 selon l'invention est encore associé à des moyens 22 de liaison à un système 24 d'utilisation du logiciel. Ce système 24 peut être un micro-ordinateur du type personnel ou professionnel, ou encore un système informatique spécialisé. Il comprend par exemple un microprocesseur 26 associé a une mémoire vive 28, une mémoire morte 30, et au moins une unité 32 d'entrée/sortie. La partie du logiciel, qui n'est pas enregistrée dans la mémoire 16, ou dans les mémoires 16 et 20, et qui correspond par exemple à des fonctions de gestion des entrées/sorties, peut être enregistrée sur un support 34 tel qu'une disquette, l'unité 32 d'entrée-sortie du système 24 étant alors une unité de disquette. En variante, les informations enregistrées sur la disquette 34 pourraient être enregistrées dans l'une ou l'autre des mémoires 16 et 20 du dispositif 10. Toutefois, celui-ci deviendrait alors adapté & un système d'exploitation particulier d'un micro-ordinateur alors que, lorsque les fonctions de gestion des entrées/sorties sont enregistrées sur un support indépendant tel que la disquette 34, le dispositif 10 est rendu indépendant du système d'exploitation du micro-ordinateur ou matériel analogue, avec lequel il est appelé à fonctionner. Le boîtier 12 de type inviolable comprend ou est constitué par un bloc ou une couche d'une matière dure telle qu'une résine, dans laquelle sont noyés le ou les nicroprocesseurs 14, 18, la ou les mémoires 16, 20 et leurs connexions, ainsi qu'une partie des moyens de liaison 22. La matière utilisée peut être une matière synthétique du type résine, polymérisable à froid ou & température peu levée, et qui après polymérisation, devient très résistante mécaniquement et possède un point de fusion élevé, de telle sorte que. toute tentative de destruction ou d'enlèvement de cette matière entraîne nécessairement la destruction de la ou des mémoires 16, 20. On peut bien entendu utiliser tout autre moyen équivalent empêchant tout accès physique, électrique ou électronique à la ou aux mémoires 16 et 20, ainsi qu'a leurs connexions aux microprocesseurs 14, 18. L'utilisation du dispositif selon l'invention découle tidenc- de ce qui précède Il suffit, par les moyens de liaison 22 appropriés, de connecter le dispositif selon l'invention à un système 24 d'utilisation du logiciel. Eventuellement, la disquette 34, ou tout autre support approprié, est placée dans l'unité d'entrée/sortie 32 du système 24. Le microprocesseur 26 du système 24 est alors relié au microprocesseur maître 14 du dispositif selon l'invention, et peut commander le déroulement du logiciel enregistré dans les mémoires 16, 20, ou de certaines pArties de ce logiciel, ou utiliser certaines fonctions de celui-ci' Toutefois, comme il ne passe dans les moyens de liaison 22 que des ordres donnés par le microprocesseur 26 au microprocesseur 14, dans un sens, et des informations fournies par le microprocesseur 14 au microprocesseur 26 dans 1 entre sens, il est impossible i un spécialiste d'utiliser ces moyens de liaison 22 pour avoir un accès direct quelconque au logiciel enregistré dans les mémoires i6, 20. La dimension d'un dispositif 10 selon l'invention peut être plus ou moins importante, en fonction de la taille requise en mémoire pour le stockage du - logiciel et l'exécution de celui-ci. Xême dans le cas de logiciels très complexes et très volumineux, la dimension du dispositif 10 ne devrait pas dépasser celle d'une disquette disponible actuellement dans le commerce. Les moyens de liaison 22 mentionnés ci-dessus peuvent être de différents types, qui sont déJi connus de l'homme du métier - soit une liaison série du type RS 232 C, - soit une liaison du type & mémoire partageable, - soit une liaison canal & canal d'entréetsortle parallèle. La liaison série RS 232 C est simple et très bien connue, et permet de relier deux microprocesseurs avec tout un ensemble de composants préconditionnés. Cependant, ce type de liaison n'est pas très intéressant sur le plan économique. Il n'est pas non plus très performant et il nécessite une alimentation en plus et moins 12 volts. Il n'est en général utilisé dans la pratique que pour relier des microprocesseurs ou des unités centrales distantes de plus de deux métros environ. La liaison du type à mémoire à mémoire, utilisant un composant du type mémoire partageable, permet de relier deux nicroprocesseurs ou unités centrales de façon très performante. Cependant, la nies au point de ce type de liaison est complexe (création d'une ligne d'acquisitions pour gérer les contentions d'accès, mise en sommeil forcé de l'unité centrale perdante, synchronisation des temps d'accès la la mémoire, etc). La liaison canal & canal, qui est très utilisée dans les grands ordinateurs, fait appel & un registre spécifique directement implanté sur le bus de données et permettant la liaison entre deux unités centrales, par l'intermédiaire d'un canal fictif d'entrée/sortie, associé i une position de la mémoire ou & une adresse de port d'entrée/sortie, en fonction du type de machine utilisée. Pour mieux fixer les idées, une partie essentielle d'une liaison de ce type a été représentée en figure 2. Les moyens de liaison 22 entre les doux microproces- seurs 14 et 26 comprennent donc, pour chaque nicroprocesseur, un registre 36 connu en général sous le non de "registre IER# Ce registre est sollicité par l'intermédiaire d'un décodeur d'adresse Chaque microprocesseur 14, 26, va donc entre associé à un registre 36 dont les entrées 0, ..., 7 sont connectées directement au bus de données 38 du canal de l'autre microprocesseur (par exemple 26 > et dont les sorties 0, ..., 7 sont reliées directement au bus de données 40 du microprocesseur associé ~par exemple 14). Une bascule RS 42 permet de gérer l'interruption du microprocesseur associé 14. La ligne R est reliée å l'en- trée CS du registre 36 ainsi qu'a la ligne RESET générale. Une diode 44 est insérée sur la ligne RESET pour isoler le RESET de la sélection en lecture par le microprocesseur associé 14. La ligne S de la bascule 42 est reliée wà l'entrée d'un inverseur 46 dont la sortie est reliée à l'entrée G du registre 36. La sortie Q de la bascule 42 est reliée à l'entrée INT ou NXI du microprocesseur associé 14. Le décodeur 48 d'adresses de lecture est composé d'un circuit SN 74 ALS 138 N ou d'un circuit logique NON-ET-OU- NON. La sortie de ce décodeur 48 est directement reliée à l'entrée R de la bascule 42. Le signal RESET-général active cette ligne pour inactiver le registre 36 au moment de la mise sous tension ou de la réinitialisation du microprocesseur 14 correspondant. Le décodeur d'adresses d'écriture 50 est composé d'un circuit identique, ou d'un circuit logique NON-ET-OU-NO#, dont la sortie est directement reliée à l'entrée S de la bascule 42. Le principe de fonctionnement est le suivant : dès qu'un microprocesseur écrit dans un registre 36, une interruption est générée dans le microprocesseur associé, qui va lire la donnée contenue dans le registre 36, la traiter et communiquer le résultat dans le registre 36 de l'autre microprocesseur, puis reprendre ensuite son fonctionnement la où il avait été interrompu. Le fonctionnement de loutre microprocesseur est interrompu par la communication du résultat dans son propre registre 36. Sauf dans le cas où lon définit a priori les rôles des microprocesseurs , il faut utiliser un logiciel de protocole dwéchange ou de communication entre les deux micro-ordinateurs pour que la liaison soit efficace et puisse fonctionner sans erreur. On peut utiliser pour cela les codes du protocole de conunication BSC ~Binary Synchronous Communication) qui est bien connu des spécialistes YCC : code commande STX : début de texte, ETX : fin de texte, HOT : fin de dialogue, ACK : bien reçu, XKK : pas d'accord, IJQ : invitation L'homme du métier sait utiliser un tel protocole de communication. Les microprocesseurs utilisés dans le dispositif selon l'invention sont disponibles dans le commerce. On peut notassent se servir de microprocesseurs UNTEL IAPX 86 ou IAPX 88, ou IAPX 186, etc, dont les performances sont choisies en fonction du logiciel à exécuter. Le microprocesseur 26 du système 24 d'utilisation du logiciel peut être quant & lui un microprocesseur bas de gamme, car il n'a alors qu'a exécuter des fonctions simples de gestion d' entrées/sorties. Le microprocesseur et sa mémoire, dans le dispositif selon l'invention, peuvent être constitués par un seul circuit intégré, réalisant les fonctions des éléments 14 et 16 de la figure 1. Un des avantages essentiels du dispositif selon l'invention est qu'il ne permet aucun accus aux mémoires 16, 20, sauf par l'intermédiaire du microprocesseur 14. Les moyens de liaison 22 associés à ce microprocesseur permettent un change d'informations avec le microprocesseur 26 du système d'utilisation 24, dans des limites pré-établies et bien définies puisque le microprocesseur 14 ne peut exécuter que des fonctions du logiciel enoregistré dans les mémoires 16, 20. Il est impossible dans ces conditions de réaliser un transfert du logiciel dans les mémoires du système d'utilisation 24. REVENDICATIONS 1. Procédé de protection d'un logiciel, en particulier contre les copies non autorisées, caractérisé en ce qu'il consiste & enregistrer au moins une partie essentielle du logiciel dans au moins une mémoire de type inviolable comprenant des moyens (22) de connexion entre le microprocesseur 2. Procédé selon la revendication 1, caractérisé en ce qu'il consiste à relier le microprocesseur 3. Procédé selon la revendication 1 ou 2, caractérisé en ce qu'il consiste ~ & enregistrer dans la mémoire 4. Procédé selon l'une des revendications précédentes, caractérisé en ce qu'il consiste à noyer la mémoire (16) et le microprocesseur 5, Dispositif de protection d'un logiciel, en particulier contre les copies non autorisées, caractérisé en ce qu'il comprend au moins une mémoire (16) dans laquelle est enregistrée au moins une partie essentielle du logiciel, correspondant par exemple & ses fonctions complexes et/ou originales, au moins un microprocesseur (14) de traitement de l'information, des moyens de connexion entre le micropro- censeur et la mémoire de connexion du microprocesseur 6. Dispositif selon la revendication 5, caractérisé en ce qu'il comprend également un support quelconque (34) sur lequel a été enregistrée une autre partie du logiciel, correspondant en particulier a ses fonctions simples ou banale - le que la gestion des entrées/sorties, le support 7. Dispositif selon la revendication 5 ou 6, caractérisé en ce que le boîtier 8. Dispositif selon l'une des revendications 5 à 7, caractérisé en ce que les moyens 9. Dispositif selon la revendication 8, caractérisé en ce que la liaison canal & canal comprend, pour chaque microprocesseur du microprocesseur associé, et une bascule RS