Brevet FR2736448A1 — publié le 19970110

PROCEDE ET DISPOSITIF D'AUTORISATION TEMPORAIRE D'UTILISATION D'UN PROGRAMME PROTEGE PAR UNE CARTOUCHE ELECTRONIQUE La présente invention se rapporte aux procédés et aux dispositifs qui permettent d'autoriser l'utilisation d'un programme protégé par ailleurs par une cartouche électronique. Elle s'applique plus particulièrement au domaine de la location de logiciels ou de programmes afin de pouvoir contrôler le nombre d'heures d'utilisation ou une date limite de location. Elle pourrait par ailleurs s'appliquer à la location d'une machine, le programme considéré étant dans ce cas le système d'exploitation de la machine. On est amené à utiliser de plus en plus fréquemment des appareils nécessitant pour leur exploitation un système informatique. De nombreux programmes sont alors à la disposition de l'utilisateur pour utiliser au mieux son appareil. Ces programmes agissent dans des domaines très variés: logiciel de gestion, logiciel de mesure... Ils sont en général stockés dans des mémoires intégrées à l'appareil. Dans le domaine de la micro-informatique, ces programmes sont stockés dans une mémoire magnétique appelée disque dur. Des problèmes de coûts et d'obsolescence rapide incitent les industriels à prendre ces programmes ou logiciels en location. Ainsi des programmes sont mis à la disposition des clients par des loueurs. Le loueur a alors besoin de garanties pour pouvoir se prémunir contre un éventuel usage abusif de son matériel en limitant la location à un certain nombre d'heures d'utilisation ou jusqu'à une certaine date. Il s'agit de dissuader le client malhonnête de garder le matériel plus longtemps que prévu, de copier le programme sur une autre machine, ou même de le vendre. Dans cette optique, diverses solutions ont été envisagées et de nombreux systèmes ont été réalisés pour remédier à ce problème. C'est ainsi qu'un système de cartouche électronique est apparu. Le client a besoin de cette cartouche pour pouvoir avoir accès aux logiciels qu'il a loués. Cette cartouche se branche directement sur le système informatique client par l'intermédiaire d'un connecteur. Le programme ne peut fonctionner qu'en présence de cette cartouche car, au cours de son déroulement, il vient vérifier, scruter, périodiquement la présence de la cartouche et ou s'assurer que la durée de validité n'est pas consommée ou que la date limite de validité n'est pas dépassée. De tels systèmes ne sont cependant pas très adaptés au principe de location. D'une part, au terme de la durée de location, le logiciel n'est définitivement plus utilisable, sauf à changer la cartouche, ce qui impose des envois d'objets physiques entre le loueur et son client. D'autre part, des cartouches réarmables par carte à puce existent. Dans ce cas, la cartouche est essentiellement un lecteur de cartes à puce (à un format normalisé ou non). Mais cette méthode oblige également l'utilisateur à renvoyer la carte à puce chez le loueur soit pour en changer soit pour la recharger. Pour obtenir un système moins contraignant et résoudre le problème, l'invention propose un procédé utilisant une cartouche électronique réarmable par un mot de passe. Ce mot de passe provient d'un administrateur du procédé. Cet administrateur est en général le loueur. Selon l'invention, le mot de passe est converti en une durée complémentaire inscrite dans la cartouche. Cette conversion est effectuée par le programme protégé lui-même ou par un programme spécifique à part. Aussi, l'invention a pour objet un procédé d'autorisation temporaire, dans un système informatique client, d'utilisation d'un programme protégé par une cartouche électronique, cette cartouche étant en relation avec ce système, ce procédé comportant les étapes suivantes - scrutation par le système d'un état électrique mémorisé dans la cartouche, - autorisation par le système de l'utilisation du programme si cet état électrique correspond à un état attendu, caractérisé en ce qu'il comporte les étapes de - vérification, dans la cartouche, de la validité d'une durée d'utilisation, - réarmement de la cartouche, à partir du système informatique, pour une durée complémentaire. En outre, l'invention concerne également un dispositif représenté par une cartouche électronique autorisant temporairement, dans un système informatique, l'utilisation d'un programme protégé, comportant une mémoire, un premier et un deuxième compteur, un monostable, un additionneur, une horloge temps réel et un réseau logique câblé, caractérisé en ce qu'elle comporte un circuit pour être réarmable par un mot de passe. Les particularités de l'invention apparaltront clairement dans la description suivante faite en regard des figures annexées qui représentent: - la figure 1, un schéma du traitement des informations dans le système informatique de l'invention en présence de la cartouche électronique; - la figure 2, un schéma électronique des moyens mis en oeuvre lors d'une scrutation; - la figure 3, un organigramme de la production d'un mot de passe chez l'administrateur du procédé; - la figure 4, un organigramme du traitement du mot de passe permettant l'autorisation complémentaire de l'utilisation du programme; On a représenté sur la figure 1 les diverses relations existantes entre le système informatique et la cartouche électronique. Ce système comporte une unité centrale 100 comportant une unité arithmétique et logique ou microprocesseur 102, une mémoire 103 et un bus 104 pour véhiculer des adresses, des commandes et des données. L'unité centrale 101 est en relation par ce bus avec des périphériques classiques tels qu'un écran 101, un clavier 105, un actionneur 106 (dans un cas particulier une imprimante), et une cartouche électronique 107. Cette cartouche comporte une mémoire 108 et, dans l'invention une horloge temps réel 109, un monostable 113, un premier compteur 110, un deuxième compteur 112, un additionneur 114 ainsi qu'un réseau logique câblé 111. Tous les organes de la cartouche 107 sont fonctionnellement en relation entre eux et avec le bus 104. Dans le cas o le système 100-106 est un micro-ordinateur compatible (PC), la cartouche 107 peut être connectée à l'extérieur, sur un port parallèle ou même, sous forme de carte électronique, à l'intérieur de l'appareil, dans un connecteur en attente. Lors de l'exécution d'un programme protégé, le microprocesseur 102 du système informatique 100-106 traite des instructions d'une application représentée par un programme mémorisé dans la mémoire 103. Il scrute aussi périodiquement un état électrique mémorisé dans la cartouche 107. Les scrutations sont provoquées par l'action d'un opérateur sur un organe de commande du système, du type clavier. Les scrutations pourraient être provoquées par des instructions de scrutation réparties dans le programme mémorisé protégé lui-même ou par un programme préprogrammé dans la cartouche 107. Elles pourraient également être provoquées par des instructions d'un autre programme que le microprocesseur 102 exécuteraient de temps en temps périodiquement ou aléatoirement et provoquant une interruption (invisible pour l'utilisateur) du programme mémorisé à protéger. Le microprocesseur 102 prend également en charge selon l'invention, des opérations de décryptage du mot de passe en vue d'un réarmement de la cartouche, ainsi que les opérations de gestion de la mémoire 108 de la cartouche. Une solution en variante consisterait à introduire un microcontroleur dans la cartouche. Ce microcontroleur avec sa mémoire associée et son séquenceur prendrait alors en charge les opérations de décryptage du mot de passe et de gestion de la mémoire 108. A l'aide de la figure 2, on peut détailler le mécanisme des scrutations. La scrutation du système se fait en plusieurs étapes: une étape de décomptage d'un nombre d'unités de durée et une étape de comparaison d'un état 201, relatif à l'état du compteur 110, avec un état de référence 202 stocké dans la mémoire 108. Cette mémoire 108 est une mémoire non volatile, en général une EPROM ou une EEPROM. Elle pourrait aussi être une mémoire dynamique sauvegardée par pile. Dans l'invention, la vérification de la validité de la durée d'utilisation se fait sous forme du décomptage d'un nombre d'unités de durée. La cartouche électronique comporte un compteur 110 indiquant par un état 201 stocké dans la mémoire 108, un nombre d'unités de durée restant à l'utilisateur. A chaque scrutation, le monostable 113 est réinitialisé et devient actif. Tant que le monostable 113 est actif, le compteur est décrémenté d'une unité à chaque impulsion délivrée par l'horloge 109 par l'intermédiaire d'une porte ET 214. On pourrait également décompter le nombre de scrutations au lieu du nombre d'unités de durée. Pour la vérification, on s'assure que l'état du compteur n'est pas égal à un état de référence 202 sinon le déroulement du programme est arrêté. Pour cela, on compare l'état 201 avec un état de référence 202 stocké dans la mémoire 108. Cet état 202 est de préférence zéro. A chaque décompte, l'état du compteur 110 est sauvegardé dans la mémoire 108, ou bien le compteur est lui-même un compteur sauvegardé. Pour effectuer la comparaison entre le nombre d'unités de durée 201 restant à l'utilisateur et la durée de référence 202, dans un exemple, on utilise des portes logiques 206-207 et 208 interconnectées dans le réseau logique câblé 111. Les portes 206-207 représentent dans l'exemple un ensemble de portes OU exclusif en nombre aussi grand qu'il y a de sortie du compteur 110 (ou de bits dans l'état 201) et de bits dans l'état de référence 202. Chaque porte OU exclusif reçoit un bit du compteur 110 et un bit lui correspondant dans l'état de référence 202. Les sorties des portes 206 à 207 sont raccordées ensemble en entrée d'une porte OU 208 à plusieurs entrées. Lorsqu'il y a égalité entre la durée 201 et la durée de référence 202, un état bas apparaît à la sortie de la porte 208 et se propage à travers une porte OU 209 du réseau 111. Cet état bas correspondant à un signal 205 est alors transmis au système informatique 100-106 par l'intermédiaire du bus 104. Cet état bas est ensuite exploité par le logiciel de l'application. Il a pour conséquence d'arrêter l'exécution du programme de l'application stocké dans la mémoire 103. Dans le cas o les durées 201 et 202 sont différentes, le signal 205 est un état haut. Par opposition au cas précédent, ce signal 205 autorisera le système informatique 100- 106 à poursuivre l'exécution du programme stocké dans la mémoire 103. Bien que le signal 205 soit pressenti ici comme un état binaire, de plus sur un des fils du bus connectant la cartouche 107 au système informatique -106, il sera préférable dans la réalité que le message 205 soit crypté de manière à ne pas permettre sa falsification. Par exemple, la sortie de la porte 209 sera connectée à l'entrée d'un circuit combinatoire donné, le logiciel de l'application comportant un sous- programme de décryptage du signal élaboré dans la cartouche. Une deuxième solution pour vérifier la validité d'utilisation consiste à comparer une date courante 204 issue du compteur 112 à une date préenregistrée dans la mémoire 108 de la cartouche et correspondant à la date limite d'utilisation 203. A chaque impulsion de l'horloge temps réel 109, le compteur 112 est incrémenté d'une unité. La date courante 204 est indiquée par l'état du compteur 112. Dans cette deuxième solution, on préfère ne pas utiliser l'horloge du système 100-106 car l'utilisateur y a accès facilement et pourrait alors modifier la date courante 204. Pour effectuer la comparaison entre la date courante 204 issue de l'horloge 109 et la date limite d'utilisation 203, on utilise des portes logiques 210- 211 et 212 interconnectées dans le réseau logique câblé 111 de la même manière que les portes 206-207 et 208. Le raisonnement de la phase de comparaison des deux dates 203 et 204 est identique à celui concernant les durées 201 et 202. Si on retient des dates en jour- mois-année, avec un octet par caractère, il faut 64 portes 210 ou 211. De préférence, les dates stockées et comparées seront des dates cryptées. Dans un mode préféré de réalisation, la scrutation de vérification est liée à une action de l'opérateur sur un organe de commande, par exemple sur le clavier 105. La scrutation réinitialise le monostable 113. Tant que le monostable 113 est actif, le compteur 110 est autorisé à décompter les unités de durée au rythme de l'horloge temps réel 109. Dans un autre mode de réalisation, la scrutation de vérification s'effectue toutes les minutes. La minute paraît l'unité de durée la plus appropriée pour ce type de vérification. Une vérification toutes les heures serait trop imprécise alors qu'une vérification toutes les microsecondes ou toutes les secondes serait trop astreignante pour le système. L'invention possède de plus la particularité que la cartouche est réarmable par simple mot de passe. La protection du programme y est de plus renforcée par la nécessité, pour l'utilisateur, de connaître une ancienne clé en plus du mot de passe pour pouvoir prolonger la durée d'utilisation du programme. L'utilisateur aura préalablement obtenu cette ancienne clé lors du précédent chargement de la cartouche 107. L'invention propose donc, pour pouvoir réarmer ou réapprovisionner sa cartouche, le procédé se présentant à cet effet sous la forme d'organigrammes représentés sur les figures 3 et 4. Une première série d'étapes montrées sur la figure 3, consiste à produire un mot de passe nécessaire à l'utilisateur pour avoir accès au programme protégé. Elle s'effectue chez le loueur ou administrateur apres demande de prolongation de location de la part de l'utilisateur. Ce mot de passe correspond au moins à une transformation d'informations représentatives d'une donnée de durée, d'un numéro d'appareil client, d'une ancienne clé N et d'une nouvelle clé N+1. La donnée de durée concerne une durée pour une nouvelle utilisation. L'ancienne clé N est relative à une durée précédente. La nouvelle clé N+1 est relative à cette nouvelle durée d'utilisation. Dans une première étape 301, on crée un nombre aléatoire, produit par des techniques connues, de longueur fixée qui constituera une clé N+1 et qui représentera une nouvelle clé. La clé N+1 est totalement arbitraire. Dans l'étape suivante 302, on concatène la nouvelle clé N+1 avec la donnée de la nouvelle durée consentie au client pour obtenir une chaîne 1. La donnée de la nouvelle durée est une valeur qui, soit aura été fixée par avance d'un commun accord entre le client et l'administrateur, soit sera définie au moment de la transaction. Ensuite, on crée lors d'une étape 303 un mot de contrôle résultant, par exemple, de la somme des caractères de la chaîne 1 et d'un numéro d'appareil client. Ce mot de contrôle permettra de vérifier l'exactitude du mot de passe de l'utilisateur dans la phase de décryptage du mot de passe. De plus, il faut noter que l'on aurait pu concaténer le numéro d'appareil avec la chaîne 1 (liaison en tirets) au lieu de l'introduire dans le mot de contrôle. Dans une étape 304 suivante, on concatène la chaîne 1 au mot de contrôle pour obtenir une chaîne 2. Enfin, on crypte la chaîne 2 avec une fonction de paramétrage paramétrée par une ancienne clé N de l'utilisateur (étape 305) suivant des algorithmes connus pour obtenir un mot de passe. Des fonctions réciproques telles que le OU exclusif peuvent être utilisées pour effectuer un tel cryptage. Ce mot de passe est ensuite transmis au client. On pourrait également utiliser des fonctions de type DES et RSA. Les concaténations des étapes 302 et 304 peuvent être du même type l'une que l'autre, ou différentes (entrelacement des bits, juxtaposition, retournement des données etc...) Quand le client dispose du mot de passe qui lui est transmis, celui-ci est traité au cours d'une deuxième série d'étapes montrée sur la figure 4. La première étape 400 de cette deuxième série consiste à entrer le mot de passe dans le système informatique -106. Cette introduction peut être faite au clavier , en suivant par exemple les indications d'un sous programme de mise à jour qui apparaissent sur un écran 101 du système 100-106. Le sous programme est un sous programme compris dans le logiciel de l'application, ou fourni à part par l'administrateur. La clé N, stockée dans la mémoire 103 lors d'une précédente session, en est elle même extraite par le sous programme de mise à jour. Au besoin, l'utilisateur pourra entrer l'ancienne clé N pour que le sous programme, présent dans la mémoire 103, puisse effectuer le décryptage du mot de passe par l'ancienne clé N (étape 401). Le décryptage du mot de passe a pour résultat la production de la chaîne 2 par le système 100-106. De cette chaine 2, le sous programme extrait la chaîne 1 et le mot de contrôle par déconcaténation (étape 402). L'étape 402 est l'inverse de l'étape 304. Le mot de contrôle ainsi ll extrait est celui qui provient, par l'intermédiaire du mot de passe, de l'administrateur. De la même manière, on obtient la nouvelle clé N+1 et les données de durée en déconcaténant la chaîne 1 lors d'une étape de séparation 403 qui est l'inverse de l'étape 302. A partir de là, le sous programme provoque un deuxième calcul du mot de contrôle (étape 404) à partir de la chaîne 1 issue de l'extraction 402 et du numéro d'appareil client. Ce numéro d'appareil est préalablement stocké dans la mémoire 108 de la cartouche 107 par l'administrateur. Le programme effectue ensuite une opération de comparaison lors d'une étape 405 entre le mot de contrôle extrait à l'étape 402 et le mot de contrôle calculé dans l'étape 404. S'il n'y a pas égalité entre les deux mots de contrôle, on entre dans une phase d'erreur qui entraîne un blocage dans le déroulement du programme. On peut alors prévoir des actions au niveau du programme pour empêcher plusieurs tentatives successives. Dans le cas contraire, cela signifie que le mot de passe entré par l'utilisateur était correct. Il s'en suit une étape 406 de rafraîchissement de la donnée de durée d'utilisation dans la mémoire 108 de la cartouche 107. En effet, la nouvelle durée va devoir s'ajouter à l'ancienne durée. La clé N+1 est mémorisée dans la mémoire de la cartouche pour servir pour une session ultérieure. Dans une autre solution, l'utilisateur devra conserver la nouvelle clé N+1 à la place de l'ancienne clé N en vue d'un prochain réarmement de sa cartouche 107. La mise à jour de la donnée de durée d'utilisation 201 à l'étape 406 est effectuée dans un exemple préféré, par un additionneur 114. Cet additionneur 114 est réalisé sur la base d'un microcontrôleur, et est relié au bus 104. Il est capable de lire le nombre d'unités dans la zone contenant le nombre d'unités de durée 201 ou dans le registre du compteur 110, de recevoir l'incrément de durée issu du mot de passe, d'additionner ce nombre 201 avec cet incrément et d'écrire le résultat de cette addition dans cette zone ou dans ce registre. Dans un autre exemple par l'intermédiaire du bus 104, le sous programme va forcer un "1" sur un bit de poids fort de la donnée de durée 201 mémorisée dans la mémoire 108 dans la mesure o ce bit était passé à zéro par décomptage. Par ce moyen, on rajoute un certain nombre d'unités de durée à l'ancienne donnée de durée 201 sans en supprimer le solde d'unités. Dans le cas o la donnée de durée est une date, le programme efface entièrement la zone 203 pour y inscrire la nouvelle date, entrée par l'intermédiaire du mot de passe. La durée d'utilisation restante 201 peut être par ailleurs en permanence affichée dans un coin de l'écran relié au système informatique pour informer l'utilisateur sur l'état de la location. REVENDICATIONS 1 - Procédé d'autorisation temporaire (205), dans un système informatique client (100-106), d'utilisation d'un programme protégé par une cartouche électronique (107), cette cartouche étant en relation avec ce système, ce procédé comportant les étapes suivantes - scrutation par le système d'un état électrique (201) mémorisé (108) dans la cartouche (107); autorisation par le système (100-106) de l'utilisation du programme si cet état électrique correspond à un état attendu (202); caractérisé en ce qu'il comporte les étapes de - vérification (205-212), dans la cartouche (107), de la validité d'une durée d'utilisation; - réarmement (406) de la cartouche (107), à partir du système informatique (100-106), pour une durée complémentaire. 2 - Procédé selon la revendication 1, caractérisé en ce que, pour vérifier la validité d'une durée d'utilisation, il comporte les étapes suivantes: on déclenche un monostable (113) à chaque scrutation; - on autorise un compteur (110) à décompter des unités de validité au rythme d'une horloge temps réel (109) si le monostable (113) est déclenché. 3 - Procédé selon la revendication 2, caractérisé en ce que - on provoque une scrutation à chaque action d'un opérateur sur un organe de commande d'un système. 4 - Procédé selon la revendication 1, caractérisé en ce qu'il comporte une étape de - vérification (206-209) de la validité sous forme du décomptage d'un nombre d'unités de durée. - Procédé selon la revendication 1, caractérisé en ce qu'il comporte une étape de - vérification (209-212) de la validité sous forme de la comparaison d'une date courante (204) à une date préenregistrée (203) dans la cartouche (107). 6 - Procédé selon l'une des revendications 1 à 5, caractérisé en ce qu'il comporte les étapes de - introduction (400) d'un mot de passe dans le système informatique (100-106), ce mot de passe correspondant à une transformation d'informations représentatives d'une donnée de durée, d'un numéro d'appareil, d'une clé ancienne N et d'une clé nouvelle N+1; - transformation inverse, dans le système informatique (100-106) ou la cartouche (107), de ce mot de passe, à partir de l'ancienne clé N, pour en extraire la nouvelle clé N+1 ainsi que les données de durée; - mise à jour (406) de la durée d'utilisation avec la donnée de durée extraite et remplacement (407) de l'ancienne clé N par la nouvelle clé N+1. 7 - Procédé selon la revendication 6, caractérisé en ce qu'on effectue au préalable les étapes suivantes pour produire, chez un administrateur du procédé, le mot de passe: - génération d'un nombre formant une nouvelle clé N+1 (301); - concaténation (302) de la nouvelle clé N+1 et de la donnée de durée pour obtenir une première chaîne (chaîne 1); - élaboration (303) d'un mot de contrôle sur la base de la nouvelle clé N+1, de la donnée de durée et d'un numéro d'appareil connu de l'administrateur; - concaténation (304) de la première chaîne et du mot de contrôle pour obtenir une deuxième chaine (chaîne 2); - cryptage (305) de la deuxième chaîne par la clé N pour obtenir le mot de passe; 8 - Procédé selon la revendication 7, caractérisé en ce que pour prolonger l'autorisation d'utilisation du programme on effectue les étapes suivantes, en tout ou partie dans le système informatique (100-106) et ou dans la cartouche (107), - décryptage (401) du mot de passe par l'ancienne clé N pour obtenir la deuxième chaîne (chaîne 2); - extraction (402) à partir de la deuxième chaîne, de la première chaîne (chaîne 1) et du mot de contrôle élaboré par l'administrateur; - séparation (403) de la première chaîne en une nouvelle clé N+1 et en une donnée de durée; - élaboration (404), par le système informatique (100-106) ou la cartouche (107), d'un autre mot de contrôle à partir de la première chaîne (chaîne 1) et du numéro d'appareil mémorisé dans la mémoire de la cartouche ou à disposition du client; - comparaison (405) du mot de contrôle élaboré par l'administrateur à ce dit autre mot de contrôle; - et, si la comparaison est correcte, mise à jour de la durée d'utilisation avec la donnée de durée extraite (406) et remplacement de l'ancienne clé N par la nouvelle clé N+l (407). 9 - Procédé selon l'une des revendications 7 ou 8, caractérisé en ce que - la nouvelle clé N+1 est produite aléatoirement (301). - Procédé selon l'une des revendications 6 à 8, caractérisé en ce que - on inscrit le numéro d'appareil (213) qui est à disposition du client dans une mémoire du système informatique (103) ou dans une mémoire de la cartouche (108) dans des données du programme. 11 - Procédé selon l'une des revendications 1 à , caractérisé en ce que - on scrute toute les minutes. 12 - Procédé selon l'une des revendications 1 à 11 caractérisé en ce que - on affiche une information représentative de la durée. 13 - Cartouche électronique (107) autorisant temporairement, dans un système informatique (100-106), l'utilisation d'un programme protégé, comportant une mémoire (108), un premier compteur (110), un deuxième compteur (112), une horloge temps réel (109), un monostable (113), un additonneur (114) et un réseau logique câblé (111), caractérisée en ce qu'elle comporte des moyens (406) pour être réarmable par un mot de passe (400). 14 - Cartouche électronique selon la revendication 13, caractérisée en ce qu'elle comporte un compteur (110) qui décrémente d'un nombre d'unités une donnée de durée (201) pendant un temps donné après chaque scrutation du système. - Cartouche électronique selon la revendication 13, caractérisée en ce qu'elle comporte une date limite d'utilisation (203) et un numéro d'appareil client (213). 16 - Cartouche électronique selon la revendication 13 ou la revendication 15, caractérisée en ce qu'elle comporte un compteur (112) délivrant une date courante (204). 17 - Cartouche électronique selon l'une des revendications 13 à 16, caractérisée en ce qu'elle comporte un réseau logique câblé (111) destiné à comparer les données de durée.