FR 2577332 A1 19860814 FR 8501978 A 19850212 SYSTEME DE MESURE DE L'UTILISATION DE LOGICIEL D'APPLICATION SUR UN ORDINATEUR OU UN MICROORDINATEUR. La présente invention concerne un système de mesure de l'utilisation de logiciel d'application sur un ordinateur ou un micro-ordinateur, comprenant un bloc de mesure constitué par au moins un microprocesseur, une mémoire permanente, des registres tampons et des circuits d'adressage. Le développement très important des ordinateurs et microordinateurs a entraîné la conception d'un grand nombre de logiciels dans la plupart des domaines d'activités humaines. Toutefois, la diversité des produits logiciels (progiciels) rend difficile le choix de l'utilisateur, le coût des progiciels limite l'accès des utilisateurs à ces produits et l'évolution rapide des produits augmente le risque et la rentabilité de l'investissement progiciel. La présente invention vise à remédier à. ces inconvénients en procurant un dispositif particulièrement simple à implanter permettant entre autres de distribuer les logiciels suivant une formule de paiement en fonction de la consommation, ce qui évite à l'utilisateur de faire un investissement important lorsqu'il désire utiliser un logiciel. Le choix d'un produit s'en trouve grandement facilité. Le risque lié à l'investissement disparait pratiquement. L'invention vise d'une manière plus générale à mesurer et contrôler l'utilisation de logiciel d'application d'une façon simple grâce à un système multifonctions facilement adaptable aux ordinateurs ou micro-ordinateurs existants et n'exigeant que l'adjonction d'un minimum d'instructions dans le logiciel dont l'utilisation est à mesurer ou contrôler. L'invention a encore pour but de réaliser un système de mesure d'utilisation de logiciel qui soit particulièrement bien protégé contre des tentatives de fraude. Ces buts sont atteints grâce à un système du type mentionné en tête de la description, caractérisé en ce que le bloc de mesure est muni d'un connecteur enfichable dans le bus de l'ordinateur pour permettre, par accès direct à la mémoire, la lecture et l'écriture dans un canal de la mémoire principale de l'ordinateur, en ce qu'une série de groupes de caractères constituant des codes correspondant chacun à une fonction particulière devant être exécutée par le bloc de mesure est introduite dans la mémoire permanente du bloc de mesure, en ce que chacun des codes est divisé en un premier sous-ensemble dé caractères de longueur fixe constituant un code question et un second sous-ensemble de caractères de même longueur consituant un code réponse, chaque code question étant lié de façon univoque avec le code réponse correspondant, en ce que certains au moins des couples de codes question et codes réponse inscrits dans la mémoire permanente du bloc de mesure sont introduits dans le logiciel d'application dont l'utilisation doit être mesurée, chacun des codes question introduits dans le logiciel étant associé au sein d'un code demande à un ensemble de caractères supplémentaires destinés à contenir des valeurs de paramètres et présentant une longueur prédéterminée, en ce que le bloc de mesure est adapté pour lire dans le canal de la mémoire principale de l'ordinateur chaque code demande inscrit dans cette mémoire par le logiciel, pour inscrire dans ledit canal de la mémoire principale le code réponse correspondant au code question du code demande précédemment lu et pour n'exécuter la fonction correspondant audit code question que lorsque le logiciel a vérifié une concordance entre le code question inscrit par le logiciel et le code réponse inscrit par le bloc de mesure dans la mémoire principale, et en ce que certaines au moins des fonctions particulières commandées par les codes question sont des fonctions de codage permettant de modifier d'une façon prédéterminée les associations univoques entre codes question et codes réponse. Au moins une fonction de codage associée à un code question comprend l'exécution de permutations entre eux des caractères constituant les codes demande. Les permutations peuvent également être effectuées de bit à bit. Au moins une fonction de codage associée à un code question comprend l'exécution de permutations entre eux des codes réponse associés aux codes question. Le système selon l'invention comprend des moyens de comptage de tentatives de fraude qui, au-delà de l'émission d'un nombre prédéterminé de codes réponse erronés par le bloc de mesure en réponse à des codes demande émis par le logiciel, inhibe le fonctionnement du bloc de mesure et par là-meme interrompt la poursuite de l'utilisation du logiciel. Selon un mode de réalisation particulier, les fonctions particulières commandées par les codes demande comprennent au moins une fonction de sélection d'un compte, une fonction de décrédit et une fonction de recrédit et le numéro du compte sélectionné XX, le nombre de points de décrédit YY et le nombre de points de recrédit ZZ sont des paramètres inscrits dans les ensembles (N) de caractères supplémentaires des codes demande. Avantageusement, au moins une fonction particulière associée à un code question comprend l'enregistrement d'un mot de passe et la valeur RR de ce mot de passe est inscrite dans l'ensemble de caractères supplémentaires du code demande contenant ledit code question. Le système de mesure et de contrôle selon l'invention peut ainsi, grâce à son bloc de mesure, encore appelé "logimètre", constitué par une carte électronique branchée sur le bus de l'ordinateur, venir lire et écrire directement dans la mémoire de l'ordinateur et peut ainsi échanger facilement et du fait du codage, de façon fiable, des informations avec le logiciel dont on désire mesurer l'utilisation. Le système selon l'invention est capable d'assurer plusieurs fonctions, et notamment, à titre de fonctions principales - La tenue de la comptabilité logicielle, avec des fonctions de décrédit et de recrédit et l'indication des crédits restants; - La sélection d'un compte particulier, le système de mesure d'utilisation étant capable de tenir la comptabilité de plusieurs logiciels; - Une fonction de protection, du fait que le bloc de mesure est capable de signaler sa présence au logiciel dont on désire mesurer l'utilisation, permettant à ce dernier de ne pas fonctionner si les crédits sont nuls ou si le bloc de mesure a été déconnecté du bus de l'ordinateur. Par ailleurs, la présence de plusieurs fonctions de codage sélectables renforce la protection en rendant très imprévisibles les échanges entre le bloc de mesure et le logiciel. D'autres caractéristiques et avantages de l'invention ressortiront de la description suivante de modes particuliers de réalisation de l'invention, en référence aux dessins annexés, sur lesquels - la figure 1 est un schéma bloc simplifié montrant le principe du système de mesure selon l'invention, - la figure 2 représente la structure de base des codes échangés entre le logiciel et un bloc de mesure, - la figure 3 représente un exemple de tableau de permutations de codes utilisables dans le système selon l'invention, et - la figure 4 représente un exemple de tableau d'une série de codes question et codes réponse utilisables dans le système selon -1' invention. Comme cela est représenté de façon symbolique sur la figure 1, un bloc de mesure et de contrôle 10 selon l'invention, que l'on peut dénommer logimètre, comporte un connecteur qui permet d'effectuer des liaisons 13 directement avec le bus 6 d'un ordinateur dont on n'a représenté que l'unité centrale de traitement 1, la mémoire centrale 5 de type RAM et le bus 6 pouvant être lui-même subdivisé en bus d'adresse 2, bus de commande 3 et bus de données 4. Le bloc de mesure 10 est lui-même constitué par un circuit à microprocesseur 11 associé à des mémoires permanentes non volatiles 12. Sur la figure 1, on n'a pas représenté les circuits associés au microprocesseur proprement dit au sein du circuit à microprocesseur 11, tels que les registres tampons ou les circuits d'adressage, qui présentent une configuration classique. Extérieurement, le bloc de mesure 10 se présente sous la forme d'une carte électronique directement enfichable dans le bus 6 de l'ordinateur. Les différents composants électroniques montés sur la carte support sont protégés d'une atteinte physique grâce à un moulage de l'ensemble de la carte dans une résine synthétique de type epoxy, de sorte que toute tentative d'ouverture du bloc de mesure 10 conduit à une auto-destruction de celui-ci. Des blocs de mesure 10 prévus pour contrôler l'utilisation de logiciels différents sur différents ordinateurs peuvent présenter au départ une structure de base commune et être aptes à fonctionner avec différents jeux de codes choisis parmi un ensemble de codes prédéterminés enregistrés dans une mémoire non volatile 12. Chaque bloc de mesure 10 peut ensuite être individualisé pour assurer le contrôle de l'utilisation de logiciels donnés et peut alors être configuré pour ne réagir qu'à un certain nombre de codes prédéterminés. Un bloc de mesure 10 peut alors jouer le rôle d'une serrure individualisée. Un bloc de mesure 10 est un dispositif autonome qui échange des informations avec le logiciel dont on désire mesurer l'utilisation. Ces échanges se font par le biais d'un canal dans la mémoire 5 de l'ordinateur. Les informations échangées sont des groupes de caractères constituant des codes C qui seront écrits dans la mémoire centrale 5 soit par le logiciel, soit par le bloc de mesure, et seront lus réciproquement soit par le bloc de mesure, soit par le logiciel. Les codes C sont répartis en codes "demande" D émis par le logiciel et lus par le bloc de mesure 10 et en codes "réponse" R émis par le bloc de mesure 10 et lus par le logiciel. Chaque code demande D comprend une première partie de longueur fixe, par exemple de 8 octets, qui constitue un code question Q et une seconde partie de longueur prédéterminée, par exemple de 5 octets, qui constitue une partie variable V ou argument destiné à contenir le cas échéant la valeur d'un paramètre (voir figure 2). Chaque code question Q émis par le logiciel puis lu par le bloc de mesure dans la mémoire centrale de L'ordinateur correspond à une fonction particulière devant être exécutée par le bloc de mesure 10. Dans tous les cas, à chaque code question Q émis par le logiciel doit correspondre un code "réponse" R émis par le bloc de mesure 10. Les codes réponse R présentent la même longueur, par exemple 8 octets, que les codes question Q et chaque code réponse R est lié de façon univoque avec le code question Q qui lui correspond. La figure 4 montre à titre d'exemple un tableau pouvant être enregistré dans la mémoire permanente 12 du bloc de mesure 10 et qui pour chaque code C correspondant à une fonction particulière indique le code question Q et le code réponse R qui se correspondent de façon univoque. Pour un ensemble N de codes C différents, et donc de fonctions particulières différentes, le tableau de la figure 4 associe ainsi N couples constitués d'un code question Q et d'un code réponse R. Sur l'exemple de la figure 4, on a 128 codes C différents auxquels correspondent 128 lignes de 16 octets, chaque ligne de 16 octets regroupant un code question Q de 8 octets et le code réponse R correspondant qui présente le même nombre d'octets. La présence d'un nombre N important de codes possibles C permet d'obtenir une grande variabilité des échanges entre le logiciel et le bloc de mesure 10. Selon l'invention, certaines des fonctions particulières commandées par des codes question Q sont des fonctions de codage permettant de modifier de façon prédéterminée les associations univoques entre codes question Q et codes réponse R. Ainsi, selon la fonction de codage choisie, le code réponse R du bloc de mesure 10 n'est pas toujours le même pour un même code question et inversement pour un même code réponse R du bloc de mesure 10 peuvent correspondre des codes question Q différents suivant les fonctions de codage sélectionnées. A titre d'exemple, une fonction de codage peut consister à permuter des codes C entre eux. Ainsi, si l'on considère le tableau de 128 lignes de la figure 4, chaque ligne correspondant à un code C est divisée en une première partie de 3 octets constituant un code question et une seconde partie de 8 octets constituant un code réponse. Si l'on appelle QCODEN le code question du Nième code C et RCODEN le code réponse de ce même Nième code C, il est possible par des permutations positives ou négatives de modifier systématiquement d'une façon prédéterminée toutes les correspondances entre codes question et codes réponse. Si au départ, dans le tableau enregistré en mémoire on a les correspondances QCODEl- RCODE1; QCODE2- RCODE2;... QCODE128-RCODE128, après une première permutation, les correspondances peuvent devenir QCODEl-RCODE2; QCODE2-RCODE3;...; OCODEl2B-RCODEl. Le processus peut naturellement être poursuivi dans un sens ou dans l'autre, selon la fonction de codage sélectionnée. On notera qu'une fonction de codage particulière est sélectionnée comme toute autre fonction, par un code demande D qui comprend un code question Q correspondant à la fonction "sélection d'une fonction de codage" et un argument V qui comporte la valeur du paramètre QQ associé à la fonction de codage particulière que l'on souhaite sélectionner. Un autre exemple de fonction de codage est constitué par la réalisation de permutations entre eux des caractères constituant les codes C. Ainsi, on voit sur la figure 3 un tableau de 16 lignes de 16 octets contenant 16 tables de permutations utilisables pour les caractères composant un code demande D. Si l'on prend un code demande D composé d'un code question Q de 8 octets et d'un argument V de 5 octets, à titre d'exemple la première table de permutation PERMO de la figure 3 peut correspondre pour chacun des treize octets du code demande D numérotés de 1 à 13, au nouvel ordre suivant: 2,8,4,6,10,11,7#2,9,13,1,3,5. Le nombre total de tables de permutations disponibles n'est naturellement pas limité à 16 et peut être encore plus important si nécessaire. D'une manière générale, il convient d'insérer dans le logiciel d'application à contrôler un certain nombre des codes C enregistrés dans la mémoire permanente 12 du bloc de mesure 10 et correspondant aux fonctions parti dières devant être réalisées au cours de l'utilisation du logiciel. Les paramètres V associés aux codes question Q et les codes réponse R correspondants sont également introduits dans le logiciel. Au cours de l'utilisation du logiciel, des codes demande D comprenant chacun un code question Q et un argument V seront ainsi inscrits dans la mémoire centrale 5 et lus par le bloc de mesure 10. Ce dernier inscrira en échange dans la mémoire centrale le code réponse R qui, selon les tables enregistrées dans la mémoire 12 et les fonctions de codage, doit correspondre au code question Q lu précédemment. Si ce code réponse R correspond au code réponse introduit au départ dans le logiciel en combinaison avec le code question Q considéré, la fonction associée au code question Q sera alors exécutée par le bloc de contrôle 10. Dans le cas contraire, si une anomalie est détectée, la fonction particulière associée à la question Q ne sera pas exécutée et le déroulement normal du programme sera interrompu. La sécurité d'utilisation du bloc de contrôle 10 est liée au très grand nombre de codes possibles C qui confère une grande variabilité des échanges entre le logiciel et le bloc de contrôle 10. En particulier l'utilisation de fontions de codage empêche des tiers d'effectuer rapidement et simplement le décodage des échanges entre le logiciel et le bloc de contrôle 10. De plus, à chaque absence de concordance entre un code question émis par le logiciel et le code réponse réémis par le bloc de contrôle 10, un compteur est incrémenté. Ceci permet de stopper totalement l'utilisation du logiciel lorsqu'un nombre prédéterminé d'absences de concordances a été détecté. Toute tentative de fraude visant à essayer systématiquement toutes les combinaisons possibles est ainsi déjouée. En pratique, chaque logiciel est codé différemment et utilise un jeu de codes comprenant des codes demandes incorporant des codes question correspondant à des fonctions particulières à réaliser et le cas échéant des valeurs de paramètres, et des codes réponse correspondant aux réponses escomptées de la part du bloc de mesure 10 pour chaque code question, parmi les fonctions à réaliser au moins une fonction correspond pour chaque logiciel protégé, à une fonction de sélection de fonction de codage. Le jeu de codes à introduire dans un logiciel pour pouvoir coopérer avec un bloc de contrôle 10 donné est communiqué confidentiellement au concepteur du logiciel qui peut ainsi ajouter dans son logiciel les instructions supplémentaires correspondant à ce jeu de codes. L'utilisateur de logiciel qui ne dispose que du logiciel déjà muni de son jeu de codes et d'un bloc de mesure correspondant 10 ne peut ainsi qu'utiliser le logiciel de façon contrôlée selon le jeu de codes introduit. Une application importante du système de contrôle selon l'invention réside dans la possibilité de tenue de comptabilités de l'utilisation de différents logiciels, et dans la conduite d'opérations de décrédit et de recrédit, ces différentes opérations pouvant être effectuées non pas sur la base d'une durée d'utilisation de l'ordinateur par le logiciel, mais suivant les fonctions réalisées au cours de la mise en oeuvre du logiciel. A titre d'exemple, on peut considérer le cas d'un concepteur de logiciel de gestion commerciale. Le coût à l'utilisation de chacune des branches du logiciel ayant été déterminé au préalable, par exemple en affectant nl points pour 1'opération de saisie d'une commande, n2 points pour l'opération d'édition d'une facture, et n3 points pour l'opération de modification d'un fichier, le concepteur introduit dans son logiciel pour chaque branche correspondant à une opération donnée un code demande D constitué d'un code question Q et d'un argument V. Dans le cas considéré le code question Q introduit correspondra à une fonction de décrédit et la valeur du paramètre YY associé à cette fonction dans l'argument V sera nl, n2 ou n3 selon la branche considérée.Dans la mesure où le bloc de mesure 10 utilisé peut fonctionner en combinaison avec plusieurs logiciels différents, il convient d'introduire également dans chaque logiciel un code question correspondant à une fonction de sélection d'un compte déterminé XX. Comme dans chaque cas on doit aussi introduire un code question correspondant à la sélection d'une fonction de décodage donnée QQ, et éventuellement un code question correspondant à l'enregistrement d'un mot de passe RR. D'autres fonctions telles que la lecture de crédits restants pour unEcompte ou la lecture de crédits consommés par un compte ou la réinscription d'un certain nombre ZZ de points sur un compte (fonction de recrédit) peuvent aussi être facilement introduites dans le logiciel avec les codes correspondants. Dans l'exemple choisi précédemment, à chaque exécution d'une partie de programme dans laquelle aura été introduit un code demande D visantlà effectuer un décrédit de n points, le bloc de mesure 10 exécutera la demande et effectuera un décrédit du compte considéré sous réserve que celui-ci soit encore approvisionné.En effet, si c'est le cas, le code réponse émis par le bloc de mesure 10 correspondra bien au code question émis et le logiciel pourra ensuite continuer de fonctionner. Si compte considéré ne comporte plus de crédits restants, ou si le bloc de mesure 10 est déconnecté, ce dernier n'inscrira pas en mémoire centrale 5 de code réponse R correspondant au code question émis, de sorte que le logiciel arrêtera alors de lui-même son fonctionnment, car le test visant à examiner si le code réponse R émis y r le bloc de mesure 10 correspond au code réponse R pré enregistré dans le programme avec le code question Q utilisé, sera négatif, ce qui produira automatiquement une interruption du déroulement du programme. Il convient par ailleurs de noter que plusieurs fonctions de codage peuvent être mises en oeuvre simultanément. Ainsi, un jeu de codes introduit dans le logiciel à contrôler peut comprendre à la fois une fonction de sélection de permutations de caractères, pour choisir une table de permutations de caractères parmi les diverses tables de permutations de caractères (figure 3), et une fonction de sélection de permutations de codes pour réaliser des permutations parmi les correspondances de codes question et codes réponse (figure 4). REVENDICATIONS 1. Système de mesure de l'utilisation de logiciel d'application sur un ordinateur ou un micro-ordinateur, comprenant un bloc de mesure (10) constitué par au moins un microprocesseur tell), une mémoire permanente (12), des registres tampons et des circuits d'adressage, caractérisé en ce que le bloc de mesure (10) est muni d'un connecteur enfichable dans le bus (6) de l'ordinateur pour permettre, par accès direct à la mémoire, la lecture et l'écriture la dans un canal de mémoire principale (5) de l'ordinateur, en ce qu'une série de groupes de caractères constituant des codes (C) correspondant chacun à une fonction particulière devant être# exécutée par le bloc de mesure (10) est introduite dans la mémoire permanente (12) du bloc de mesure (10), en ce que chacun des codes (C) est divisé en un premier sous-ensemble de caractères de longueur fixe constituant un code question (Q) et un second sousensemble de caractères de même longueur consituant un code réponse (R), chaque code question (Q) étant lié de façon univoque avec le code réponse (R) correspondant, en ce que certains au moins des couples de codes question (Q) et codes réponse (R) inscrits dans la mémoire permanente (12) du bloc de mesure (10) sont introduits dans le logiciel d'application dont l'utilisation doit être mesurée, chacun des codes question (Q) introduits dans le logiciel étant associé au sein d'un code demande (D) à un ensemble de caractères supplémentaires (V) destinés à contenir des valeurs de paramètres et présentant une longueur prédéterminée, en ce que le bloc de mesure (10) est adapté pour lire dans le canal de la mémoire principale (5) de l'ordinateur chaque code demande (D) inscrit dans cette mémoire par le logiciel, pour inscrire dans ledit canal la mémoire principale (5) le code réponse (R) correspondant au code question (Q) du code demande (D) précédemment lu et pour n'exécuter la fonction correspondant audit code question (Q) que lorsque le logiciel a vérifié une concordance entre le code question (Q) inscrit par le logiciel et le code réponse (R) inscrit par le bloc de mesure (10) dans la mémoire principale (5), et en ce que certaines au moins des fonctions particulières commandées par les codes question (Q) sont des fonctions de codage permettant de modifier d'une façon prédéterminée les associations univoques entre codes question (Q) et codes réponse (R). 2. Système selon la revendication 1, caractérisé en ce qu'au moins une fonction de codage associée à un code question (Q) comprend l'exécution de permutations entre eux des caractères constituant les codes demande (D). 3. Système selon la revendication 1 ou la revendication 2, caractérisé en ce qu'au moins une fonction de codage associée à un code question (Q) comprend l'exécution de permutations entre eux des codes réponse (R) associés aux codes question (Q). 4. Système selon l'une quelconque des revendications i à 3, caractérisé en ce qu'il comprend des moyens de comptage de tentatives de fraude qui, au-delà de l'émission d'un nombre prédéterminé de codes réponse (R) erronés par le bloc de mesure (10) en réponse à des codes demande (D) émis par le logiciel, inhibe le fonctionnement du bloc de mesure (10) et par là-méme interrompt la poursuite de l'utilisation du logiciel. 5. Système selon l'une quelconque des revendications 1 à 4, caractérisé en ce que les fonctions particulières commandées par les codes demande (D) comprennent au moins une fonction de sélection d'un compte, une fonction de décrédit et une fonction de recrédit et en ce que le numéro du compte sélectionné XX, le nombre de points de décrédit YY et le nombre de points de recrédit ZZ sont des paramètres inscrits dans les ensembles (N) de caractères supplémentaires des codes demande (D). 6. Système selon l'une quelconque des revendications 1 à 5, caractérisé en ce qu'au moins une fonction particulière associée à un code question (Q) comprend l'enregistrement d'un mot de passe et la valeur RR de ce mot de passe est inscrite dans l'ensemble (V) de caractères supplémentaires du code demande (D) contenant ledit code question (Q).