WO1999066388A1 - Systeme de protection d'un logiciel - Google Patents

Systeme de protection d'un logiciel Download PDF

Info

Publication number
WO1999066388A1
WO1999066388A1 PCT/FR1999/001439 FR9901439W WO9966388A1 WO 1999066388 A1 WO1999066388 A1 WO 1999066388A1 FR 9901439 W FR9901439 W FR 9901439W WO 9966388 A1 WO9966388 A1 WO 9966388A1
Authority
WO
WIPO (PCT)
Prior art keywords
software
algorithm
random number
pseudo
card
Prior art date
Application number
PCT/FR1999/001439
Other languages
English (en)
Inventor
Jérôme SION
Stéphanie LION
Original Assignee
Schlumberger Systemes
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Schlumberger Systemes filed Critical Schlumberger Systemes
Priority to DE69900851T priority Critical patent/DE69900851T2/de
Priority to EP99957101A priority patent/EP1086415B1/fr
Publication of WO1999066388A1 publication Critical patent/WO1999066388A1/fr
Priority to US09/739,308 priority patent/US6769064B2/en

Links

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/341Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/346Cards serving only as information carrier of service
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/409Device specific authentication in transaction processing
    • G06Q20/4097Device specific authentication in transaction processing using mutual authentication between devices and transaction partners
    • G06Q20/40975Device specific authentication in transaction processing using mutual authentication between devices and transaction partners using encryption therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
    • G06F2211/008Public Key, Asymmetric Key, Asymmetric Encryption

Definitions

  • the present invention relates to a software protection system.
  • the invention relates to a system for protecting software executable on a computer machine, a system of the type in which a memory card intended to be inserted in a connected read / write device is associated with the software to be protected. at the computer machine, the card must be present at all times during the execution of the software.
  • software is meant not only software in the usual sense of the term but also an executable file, an image file, a video file, a sound file, etc.
  • computer machine any machine capable of running software such as PCs, cell phones or game consoles.
  • memory card any removable medium comprising memory circuits and in particular a microprocessor.
  • each software is associated with a plug.
  • the plug and the software are personalized with one or more keys by the software developer.
  • the software makes calls to the cap to verify its presence and the validity of the keys.
  • Each call is made in the form of a question / answer.
  • the cap returns a predefined answer known by the software. If the answer to a question is different from the expected answer, the software crashes in order to prohibit its use.
  • the downside of such systems is that the number of question / answer combinations is finite.
  • French patent 2,654,851 also discloses a secure operating system for software.
  • This system includes the use of an electronic memory card in which part of the data and / or software is stored and made inaccessible by the circuits of the electronic memory card. This solution has a high degree of protection but it is relatively cumbersome to implement because part of the software must be stored on the card which will execute certain parts of the software.
  • An object of the present invention is to provide a software protection system using in connection with the software an electronic memory card which also provides a high degree of protection without however requiring the initial recording in the memory card of an amount important information and in particular elements of the software to be protected, and which does not require that secret information is generated by the software or by the file contained in the computer system.
  • the system for protecting software executable on a computer machine of the type in which a memory card intended to be inserted in a read / write device connected to said software is associated with said software.
  • computer machine is characterized in that said software comprises: - means for storing a value or public key,
  • said card comprises:
  • said first and second algorithms are public key algorithms or zero disclosure algorithms.
  • the card has the private key in memory and the software has its associated public key. It is understood that the public key is accessible in the software but that this does not constitute a defect in the protection of the software.
  • the private key is stored in the circuits of the electronic memory card, which makes access to this information, if not impossible, at least extremely difficult. In this embodiment, maximum protection is therefore obtained.
  • each software comprises its own public key and the card comprises its own private key. One card is therefore required per software.
  • the public and private keys are all the same for all the copies of the same software. This controls the number of copies of software that can be run simultaneously since this number is limited by the number of cards.
  • system further comprises network means for loading said software transmitted by a supplier into the computer machine, and means using said card for requesting said supplier via the network for the private key associated with said software. and means for receiving in return said private key in encrypted form and decrypting it in the card to store it in decrypted form.
  • - Figure 2 is a simplified view of the circuit of an electronic memory card
  • - Figure 3 is a flowchart showing a first mode of implementation of the protection system using a zero disclosure algorithm
  • FIG. 4 is a flowchart showing a second mode of implementation of the protection system.
  • FIG. 5 is a flowchart showing the implementation of a third embodiment of the protection system.
  • FIG. 1 we will describe the entire computer system for the protected operation of software. It comprises a main unit for operating the software or computer machine 10 of the conventional type.
  • the figure shows the data entry keyboard 12, the slot 14 of the digital information carrier 16 and the main memory of the hard disk 18 of the main unit.
  • the main unit 10 is associated with an annex unit 20 which consists of a device for reading / writing an electronic memory card 22.
  • the reading / writing device 22 essentially comprises a system for guiding the memory card 24 which has shown only the form of introduction 26, a connector not shown and a processing circuit 28.
  • the processing circuit 28 is simply intended to receive the information sent by the main unit 10 or to send information by the latter read from the card and control the read or write operations in the integrated circuit of the card 24.
  • the main circuits of the electronic module of the memory card 24 are represented schematically.
  • the circuits 32 essentially comprise a microprocessor 34 which is connected to the external contact 30, the microprocessor 34 being associated with a non-volatile program memory 36 with a non-volatile data memory 38 and with a working memory 40 of the RAM type.
  • the diskette 16 includes instruction or program elements suitable for carrying out the protection. These specific elements comprise on the one hand a random number generation subroutine 41, a subroutine for implementing a first test algorithm using a public value k pUb stored in the subroutine 43.
  • the program memory 38 includes a subroutine 42 for implementing an algorithm F with zero disclosure of question / answer with private value k priv .
  • the private value is stored in the card's data memory. This private value algorithm F associated with the test algorithm allows the implementation of the question / answer null disclosure algorithm.
  • the software 40 for generating pseudo-random numbers R is implemented by the computer machine 10 to develop the pseudo-random number R which is transmitted to the read / write device 20 then to the circuits of the card 24.
  • the microprocessor 34 thereof implements the first null disclosure algorithm F applied to the pseudo-random number R using the private value k_, ⁇ v .
  • a number is then obtained which is transmitted to the computer machine 10.
  • the specific subroutines then apply to the number the test algorithm 43 associated with the algorithm F. If the result of the test which involves the public value k pub is incorrect, this shows that either the memory card 24 is not valid or does not correspond to the implementation of the software.
  • the implementation of the question / answer null disclosure algorithm may require several exchanges of value between the card and the reader.
  • the execution of the software is interrupted. On the other hand, if the test is favorable, the random number generation function R is again activated, possibly after a predetermined time delay.
  • the private key K___ riv is stored in the data memory 38 of the electronic memory card.
  • the public key K_, ub is stored in the specific part of the software stored on the digital information medium 16.
  • the random number generation subroutine R referenced 41 elaborates this number R and transmits it to the read / write device 20.
  • the microprocessor of the electronic memory card implements the encryption algorithm E of the asymmetric type using the private key stored in the card memory. A number S is then obtained which is transmitted to the computer machine.
  • the specific part of the software calculates from the first encryption algorithm E "1 , inverse of E, (step 43 ') and using the public key K_ pUb the inverse of S which is subsequently compared to the random number R. If the result of this comparison is positive the software optionally commands with a time delay the generation of a new random number R. Otherwise, the execution of the software is interrupted.
  • the programs stored in the memory of the card 24 also include an algorithm 46 for generating a pseudo-random number R2.
  • These programs also include a program 48 for combining two numbers, this combination consisting of the sum of the two numbers in the embodiment described. It is obvious that one could envisage other linear combinations of these two numbers.
  • the specific subroutine associated with the software it comprises the subroutines stated already in connection with FIG. 4 and moreover a subroutine 48 for combining two numbers, this subroutine being identical to the subroutine 48.
  • the random number generator generates a random number RI which is transmitted to the read / write device and then to the circuit of the memory card 24.
  • the microprocessor of the card controls the activation of the pseudo-random number generation function 46 which thus elaborates the number R2.
  • the combination function 48 then elaborates the sum of the numbers RI and R2.
  • the encryption algorithm of the asymmetric type with public key K_ pUb and with private key K-_ riv is applied first to the second random number R2 using the private key which gives a first number SI in step 50 and this same encryption algorithm is applied to the combination of the numbers RI + R2 in step 52 which gives a second number S2.
  • the numbers thus elaborated SI and S2 are transmitted to the computer machine and to the specific subroutines of the software.
  • the second encryption algorithm E '1 is applied to the first number SI using the public key, which allows, in normal operation, to obtain the second random number R2.
  • step 48 ′ we calculate the sum RI + R2 and in step 54 we then apply the second encryption algorithm E "1 to the number S2 using the public key.
  • the implementation of the software protection system requires the storage in the card held by the user of the software of a private key, that is to say a secret key.
  • the complete system therefore not only allows software protection during its execution but it also allows the transmission by a network of software by downloading from the computer machine but also the loading in the memory of the microprocessor card of the private key necessary for using the software.

Abstract

La présente invention concerne un système de protection d'un logiciel (16) exécutable sur une machine informatique (10) dans lequel on associe au logiciel une carte à mémoire (24) insérable dans un lecteur (20) relié à la machine informatique. Ledit logiciel comprend des moyens de mémorisation d'une clé publique; des moyens pour élaborer périodiquement un nombre pseudo-aléatoire; des moyens de mise en oeuvre d'un premier algorithme utilisant la clé publique à la réception d'informations reçues du lecteur, l'exécution du logiciel étant interrompue en réponse à la comparaison du nombre pseudo-aléatoire avec le résultat fourni par le premier algorithme. La carte comprend des moyens de mémorisation protégés d'une clé privée; des moyens pour mettre en oeuvre un deuxième algorithme utilisant la clé privée, à la réception d'une information émise par la machine informatique et des moyens pour transmettre à la machine informatique l'information codée.

Description

Système de protection d'un logiciel
La présente invention a pour objet un système de protection de logiciel.
De façon plus précise, l'invention concerne un système de protection d'un logiciel exécutable sur une machine informatique, système du type dans lequel on associe au logiciel à protéger une carte à mémoire destinée à être insérée dans un dispositif de lecture/écriture reliée à la machine informatique, la carte devant être présente en permanence durant toute l'exécution du logiciel.
Dans la présente description par le mot logiciel il faut entendre non seulement un logiciel au sens habituel du terme mais également un fichier exécutable, un fichier image, un fichier vidéo, un fichier son, etc. De même, par machine informatique, il faut entendre toute machine capable d'exécuter des logiciels telles que des PC, des téléphones portables ou des consoles de jeux. Enfin, par carte à mémoire, il faut entendre tout support amovible comportant des circuits mémoire et en particulier un microprocesseur.
La principale solution existante sur le marché pour protéger un logiciel contre l'utilisation indue de ce logiciel repose sur l'utilisation de composant ASIC appelé "bouchon" ou encore "clé de protection" (dongle en anglais). Ces bouchons doivent être connectés sur le port parallèle de l'ordinateur sur lequel est exécuté le logiciel pour permettre le bon fonctionnement du logiciel protégé. Le principe d'utilisation du bouchon est le suivant : à chaque logiciel est associé un bouchon. Le bouchon et le logiciel sont personnalisés avec une ou plusieurs clés par le développeur du logiciel. Une fois installé sur l'ordinateur, le logiciel fait des appels vers le bouchon afin de vérifier sa présence ainsi que la validité des clés. Chaque appel se fait sous la forme de question/réponse. Pour chaque question (matérialisée par une chaîne de caractères) le bouchon renvoie une réponse prédéfinie et connue par le logiciel. Si la réponse à une question est différente de la réponse attendue le logiciel se bloque afin d'interdire son utilisation. L'inconvénient de tels systèmes est que le nombre de combinaisons de question/réponse est fini.
Les modèles les plus évolués de "bouchon" utilisent un système de cryptage géré par un système matériel qui permet de transformer de façon déterminée une chaîne de caractères. Ces modèles peuvent être facilement "cassés" par ingénierie inverse. On connaît également par le brevet français 2 654 851 un système d'exploitation sécurisé d'un logiciel. Ce système inclut l'utilisation d'une carte à mémoire électronique dans laquelle une partie des données et/ou du logiciel est mémorisée et rendue inaccessible par les circuits mêmes de la carte à mémoire électronique. Cette solution présente un haut degré de protection mais elle est d'une mise en oeuvre relativement lourde du fait qu'une partie du logiciel doit être stockée sur la carte qui va exécuter certaines parties du logiciel.
Un objet de la présente invention est de fournir un système de protection de logiciel utilisant en liaison avec le logiciel une carte à mémoire électronique qui assure également un haut degré de protection sans toutefois nécessiter l'enregistrement initial dans la carte à mémoire d'une quantité importante d'informations et notamment d'éléments du logiciel à protéger, et qui ne nécessite pas qu'une information secrète soit générée par le logiciel ou par le fichier contenu dans le système informatique. Pour atteindre ce but, selon l'invention, le système de protection d'un logiciel exécutable sur une machine informatique, du type dans lequel on associe audit logiciel une carte à mémoire destinée à être insérée dans un dispositif de lecture/écriture relié à ladite machine informatique, se caractérise en ce que ledit logiciel comprend : - des moyens de mémorisation d'une valeur ou clé publique,
- des moyens pour élaborer périodiquement un nombre pseudo-aléatoire, et pour transmettre audit dispositif de lecture/écriture ledit nombre aléatoire ;
- des moyens de mise en oeuvre d'un premier algorithme utilisant ladite valeur ou clé publique à la réception d'informations reçues du dispositif de lecture/écriture ;
- des moyens de comparaison du résultat de la mise en oeuvre dudit premier algorithme avec ledit nombre pseudo-aléatoire ; et
- des moyens pour interrompre l'exécution dudit logiciel en réponse à ladite comparaison et en ce que ladite carte comprend :
- des moyens de mémorisation protégés d'une clé ou valeur privée associée ;
- des moyens pour mettre en oeuvre un deuxième algorithme associé dudit premier algorithme utilisant ladite clé ou valeur privée, à la réception d'une information émise par ladite machine informatique, par quoi on obtient une information codée ; et
- des moyens pour transmettre à ladite machine informatique ladite information codée. On comprend que, dans un tel système, la machine informatique envoie un message dont la réponse est le message qui est crypté à l'aide de l'algorithme mémorisé dans les circuits de la carte et dont un algorithme associé est mémorisé dans le logiciel. On peut donc utiliser comme question n'importe quels nombres ou données engendrés de façon pseudo-aléatoire et la réponse est imposée par l'algorithme stocké dans la carte. Il existe donc une infinité de questions et de réponses.
Pour la mise en oeuvre dudit système, lesdits premier et deuxième algorithmes sont des algorithmes à clé publique ou des algorithmes à divulgation nulle. La carte comporte en mémoire la clé privée et le logiciel comporte sa clé publique associée. On comprend que la clé publique est accessible dans le logiciel mais que cela ne constitue pas un défaut dans la protection du logiciel. En revanche, la clé privée est mémorisée dans les circuits de la carte à mémoire électronique ce qui rend l'accès à cette information sinon impossible du moins extrêmement difficile. Dans ce mode de mise en oeuvre on obtient donc une protection maximale.
Dans un premier mode de mise en oeuvre chaque logiciel comporte sa propre clé publique et la carte comporte sa propre clé privée. Il faut donc une carte par logiciel. Dans un deuxième mode de mise en oeuvre les clés publiques et privées sont toutes les mêmes pour tous les exemplaires d'un même logiciel. On contrôle ainsi le nombre d'exemplaires de logiciels qui peuvent être exécutés simultanément puisque ce nombre est limité par le nombre de cartes.
Dans un mode perfectionné de mise en oeuvre, le système comprend en outre des moyens par réseau pour charger dans la machine informatique ledit logiciel transmis par un fournisseur, et des moyens utilisant ladite carte pour demander audit fournisseur via le réseau la clé privée associée audit logiciel et des moyens pour recevoir en retour ladite clé privée sous forme cryptée et la décrypter dans la carte pour la mémoriser sous forme décryptée.
D'autres caractéristiques et avantages de l'invention apparaîtront mieux à la lecture de la description qui suit de plusieurs modes de réalisation de l'invention donnés à titre d'exemple non limitatif. La description se réfère aux figures annexées sur lesquelles : - la figure 1 est une vue d'une installation informatique pour la mise en oeuvre du système de protection de logiciel ;
- la figure 2 est une vue simplifiée du circuit d'une carte à mémoire électronique ; - la figure 3 est un organigramme montrant un premier mode de mise en oeuvre du système de protection utilisant un algorithme à divulgation nulle ;
- la figure 4 est un organigramme montrant un deuxième mode de mise en oeuvre du système de protection ; et
- la figure 5 est un organigramme montrant la mise en oeuvre d'un troisième mode de réalisation du système de protection.
En se référant tout d'abord à la figure 1 on va décrire l'ensemble du système informatique pour l'exploitation protégée d'un logiciel. Il comprend une unité principale d'exploitation du logiciel ou machine informatique 10 de type classique. Sur la figure on a fait apparaître le clavier 12 d'entrée de données, la fente 14 du lecteur de support d'informations numériques 16 et la mémoire principale du disque dur 18 de l'unité principale. A l'unité principale 10 est associée une unité annexe 20 qui consiste en un dispositif de lecture/écriture de carte à mémoire électronique 22. Le dispositif de lecture/écriture 22 comprend essentiellement un système de guidage de la carte à mémoire 24 dont on a représenté seulement la forme d'introduction 26, un connecteur non représenté et un circuit de traitement 28. Le circuit de traitement 28 a simplement pour but de recevoir les informations émises par l'unité principale 10 ou d'envoyer par celle-ci des informations lues dans la carte et de commander les opérations de lecture ou d'écriture dans le circuit intégré de la carte 24. Sur la figure 2 on a représenté schématiquement les principaux circuits du module électronique de la carte à mémoire 24. On trouve des contacts externes 30 qui assurent la liaison électrique entre les circuits 32 de la carte et les circuits 28 du dispositif de lecture/écriture. Les circuits 32 comportent essentiellement un microprocesseur 34 qui est relié au contact externe 30, le microprocesseur 34 étant associé à une mémoire non volatile de programme 36 à une mémoire non volatile de données 38 et à une mémoire de travail 40 du type RAM.
En se référant maintenant à la figure 3 on va décrire un premier mode de mise en oeuvre du système de protection du logiciel stocké sur la disquette 16 ou sur tout autre support d'informations numériques à l'aide de la carte à mémoire électronique à microprocesseur 24. Dans ce premier mode de mise en oeuvre, on utilise un algorithme à divulgation nulle. En plus des instructions correspondant au logiciel proprement dit la disquette 16 comporte des éléments d'instructions ou de programme propres à réaliser la protection. Ces éléments spécifiques comportent d'une part un sous-programme de génération de nombres aléatoires 41, un sous-programme de mise en oeuvre d'un premier algorithme de test utilisant une valeur publique kpUb mémorisée dans le sous-programme 43. Si l'on considère maintenant la carte à mémoire électronique 24, dans ce premier mode de réalisation, la mémoire de programme 38 comporte un sous-programme 42 de mise en oeuvre d'un algorithme F à divulgation nulle de question/réponse à valeur privée kpriv. La valeur privée est stockée dans la mémoire de données de la carte. Cet algorithme F à valeur privée associé à l'algorithme de test permet la mise en oeuvre de l'algorithme à divulgation nulle de question/réponse.
Périodiquement, le logiciel 40 de génération de nombres pseudo-aléatoires R est mis en oeuvre par la machine informatique 10 pour élaborer le nombre pseudo-aléatoire R qui est transmis au dispositif de lecture/écriture 20 puis aux circuits de la carte 24. Le microprocesseur 34 de celle-ci met en oeuvre le premier algorithme à divulgation nulle F appliqué au nombre pseudo-aléatoire R en utilisant la valeur privée k_,πv. On obtient alors un nombre qui est transmis à la machine informatique 10. Les sous-programmes spécifiques appliquent alors au nombre l'algorithme de test 43 associé à l'algorithme F. Si le résultat du test qui fait intervenir la valeur publique kpub est incorrect, cela montre que soit que la carte à mémoire 24 n'est pas valide soit ne correspond pas à la mise en oeuvre du logiciel. La mise en oeuvre de l'algorithme à divulgation nulle de question/réponse peut nécessiter plusieurs échanges de valeur entre la carte et le lecteur. Dans l'étape 44 l'exécution du logiciel est interrompue. En revanche si le test est favorable la fonction de génération de nombre aléatoire R est à nouveau activée éventuellement après une temporisation prédéterminée.
On comprend que dans ce mode de mise en oeuvre l'opération décrite précédemment est périodiquement mise en oeuvre ce qui assure que d'une part une carte à mémoire électronique 24 est bien présente dans le lecteur et que de plus cette carte est bien celle qui est prévue pour être associée au logiciel en cours d'exécution.
Se référant maintenant à la figure 4 on va décrire un autre mode préféré de mise en oeuvre qui utilise comme algorithme de cryptage un algorithme de type asymétrique par exemple un algorithme du type RSA. Pour la mise en oeuvre de ce système de protection la clé privée K__riv est stockée dans la mémoire de données 38 de la carte à mémoire électronique. Dans la partie spécifique du logiciel stocké sur le support d'informations numériques 16 est mémorisée la clé publique K_,ub. Le sous-programme de génération de nombre aléatoire R référencé 41 élabore ce nombre R et le transmet au dispositif de lecture/écriture 20. Le microprocesseur de la carte à mémoire électronique met en oeuvre l'algorithme de cryptage E du type asymétrique en utilisant la clé privée stockée dans la mémoire de la carte. On obtient alors un nombre S qui est transmis à la machine informatique. La partie spécifique du logiciel calcule à partir du premier algorithme de cryptage E"1, inverse de E, (étape 43') et en utilisant la clé publique K_pUb l'inverse de S qui est ultérieurement comparée au nombre aléatoire R. Si le résultat de cette comparaison est positif le logiciel commande éventuellement avec une temporisation la génération d'un nouveau nombre aléatoire R. Dans le cas contraire, l'exécution du logiciel est interrompue.
En se référant maintenant à la figure 5 on va décrire un troisième mode de mise en oeuvre du système de protection qui met également en oeuvre un algorithme de cryptage du type asymétrique. Dans ce mode de mise en oeuvre les programmes stockés dans la mémoire de la carte 24 comportent également un algorithme de génération 46 d'un nombre pseudo-aléatoire R2. Ces programmes comportent également un programme de combinaison 48 de deux nombres, cette combinaison consistant en la somme des deux nombres dans le mode de mise en oeuvre décrit. Il est évident que l'on pourrait envisager d'autres combinaisons linéaires de ces deux nombres. En ce qui concerne le sous-programme spécifique associé au logiciel, il comporte les sous-programmes énoncés déjà en liaison avec la figure 4 et de plus un sous-programme 48 pour combiner deux nombres, ce sous-programme étant identique au sous-programme 48.
Lors de l'exécution de ce mode de mise en oeuvre du système de protection le générateur de nombres aléatoires élabore un nombre aléatoire RI qui est transmis au dispositif de lecture/écriture puis au circuit de la carte à mémoire 24. A la réception de cette information, le microprocesseur de la carte commande l'activation de la fonction de génération de nombre pseudo-aléatoire 46 qui élabore ainsi le nombre R2. La fonction de combinaison 48 élabore alors la somme des nombres RI et R2. Puis, l'algorithme de cryptage du type asymétrique à clé publique K_pUb et à clé privée K-_riv est appliqué tout d'abord au deuxième nombre aléatoire R2 en utilisant la clé privée ce qui donne un premier nombre SI à l'étape 50 et ce même algorithme de cryptage est appliqué à la combinaison des nombres RI + R2 à l'étape 52 ce qui donne un deuxième nombre S2. Les nombres ainsi élaborés SI et S2 sont transmis à la machine informatique et aux sous-programmes spécifiques du logiciel. Le deuxième algorithme de cryptage E'1 est appliqué au premier nombre SI en utilisant la clé publique ce qui permet, en fonctionnement normal, d'obtenir le deuxième nombre aléatoire R2. A l'étape 48' on calcule la somme RI + R2 et à l'étape 54 on applique alors le deuxième algorithme de cryptage E"1 au nombre S2 en utilisant la clé publique. On compare alors le résultat obtenu par la mise en oeuvre de l'algorithme de cryptage à la somme des nombres RI + R2. On commande l'émission de nouveaux nombres aléatoires RI et R2. Si la comparaison est positive, après une possible temporisation, on recommence l'opération. Dans le cas inverse, l'exécution du logiciel est interrompue.
La mise en oeuvre du système de protection de logiciel nécessite la mémorisation dans la carte détenue par l'utilisateur du logiciel d'une clé privée, c'est-à-dire secrète.
La machine informatique servant à exécuter le logiciel pouvant recevoir par téléchargement à l'aide d'un réseau temporaire ou permanent le logiciel, il serait intéressant de permettre la transmission par ce même réseau de la clé privée qui doit être mémorisée dans la carte, cette clé devant être délivrée par le fournisseur du logiciel. Il est bien sûr nécessaire que cette clé soit transmise à la carte de l'utilisateur dans des conditions de sécurité telles que ni l'utilisateur, ni un fraudeur se connectant sur le réseau puisse y avoir accès.
Or on connaît différentes procédures qui permettent à un utilisateur muni d'une carte à microprocesseur de dialoguer, via un réseau avec un opérateur dans des conditions qui assurent la protection des informations transmises vis-à-vis des tiers et vis-à-vis de l'utilisateur tout en s'assurant que l'utilisateur est bien celui qui a le droit de recevoir cette information.
Une telle procédure est notamment décrite dans la demande de brevet français n° 98 05485 déposée le 30 avril 1998 au nom de la demanderesse.
Dans cette version perfectionnée, le système complet permet donc non seulement la protection du logiciel lors de son exécution mais il permet également la transmission par un réseau du logiciel par téléchargement de la machine informatique mais également le chargement dans la mémoire de la carte à microprocesseur de la clé privée nécessaire à l'utilisation du logiciel.

Claims

REVENDICATIONS
1. Système de protection d'un logiciel exécutable sur une machine informatique du type dans lequel on associe audit logiciel une carte à mémoire destinée à être insérée dans un dispositif de lecture/écriture relié à ladite machine informatique caractérisé en ce que ledit logiciel comprend :
- des moyens de mémorisation d'une valeur ou clé publique, - des moyens pour élaborer périodiquement un nombre pseudo-aléatoire, et pour transmettre audit dispositif de lecture/écriture ledit nombre aléatoire ;
- des moyens de mise en oeuvre d'un premier algorithme utilisant ladite valeur ou clé publique à la réception d'informations reçues du dispositif de lecture/écriture ;
- des moyens de comparaison du résultat de la mise en oeuvre dudit premier algorithme avec ledit nombre pseudo-aléatoire ; et
- des moyens pour interrompre l'exécution dudit logiciel en réponse à ladite comparaison et en ce que ladite carte comprend :
- des moyens de mémorisation protégés d'une clé ou valeur privée associée ;
- des moyens pour mettre en oeuvre un deuxième algorithme associé dudit premier algorithme utilisant ladite clé ou valeur privée, à la réception d'une information émise par ladite machine informatique, par quoi on obtient une information codée ; et
- des moyens pour transmettre à ladite machine informatique ladite information codée.
2. Système de protection selon la revendication 1, caractérisé en ce que lesdits premier et deuxième algorithmes sont des algorithmes du type asymétrique à clé publique et à clé privée.
3. Système de protection selon la revendication 2, caractérisé en ce que ladite carte comporte en outre : - des moyens pour élaborer un nombre pseudo-aléatoire auxiliaire ; - des moyens pour appliquer ledit deuxième algorithme de cryptage audit nombre pseudo-aléatoire auxiliaire ;
- des moyens pour réaliser une combinaison des nombres pseudo-aléatoire et pseudo-aléatoire auxiliaire ; - des moyens pour appliquer ledit deuxième algorithme à ladite combinaison de nombres ; et
- des moyens pour transmettre à ladite machine informatique le nombre crypté et la combinaison cryptée et en ce que ledit logiciel comprend : - des moyens pour appliquer ledit premier algorithme de cryptage audit nombre crypté et à ladite combinaison cryptée ; et
- des moyens pour combiner ledit nombre pseudo-aléatoire et le résultat de la mise en oeuvre dudit premier algorithme dudit nombre pseudo-aléatoire auxiliaire crypté.
4. Système de protection selon la revendication 1, caractérisé en ce que lesdits premier et deuxième algorithmes sont des algorithmes à divulgation nulle.
5. Système de protection selon l'une quelconque des revendications 1 à 4, caractérisé en ce que les valeurs ou clés publique et privée sont les mêmes pour tous les logiciels.
6. Système de protection selon l'une quelconque des revendications 1 à 4, caractérisé en ce que lesdites valeurs ou clés publique et privée sont spécifiques à chaque logiciel.
7. Système de protection de logiciel selon l'une quelconque des revendications 1 à 6, caractérisé en ce qu'il comprend en outre des moyens par réseau pour charger dans la machine informatique ledit logiciel transmis par un fournisseur, et des moyens utilisant ladite carte pour demander audit fournisseur via le réseau la clé ou valeur privée associée audit logiciel et des moyens pour recevoir en retour ladite clé ou valeur privée sous forme cryptée et la décrypter dans la carte pour la mémoriser sous forme décryptée.
PCT/FR1999/001439 1998-06-17 1999-06-15 Systeme de protection d'un logiciel WO1999066388A1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE69900851T DE69900851T2 (de) 1998-06-17 1999-06-15 Softwareschutzsystem
EP99957101A EP1086415B1 (fr) 1998-06-17 1999-06-15 Systeme de protection d'un logiciel
US09/739,308 US6769064B2 (en) 1998-06-17 2000-12-18 System for protecting software

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9807629A FR2780177B1 (fr) 1998-06-17 1998-06-17 Systeme de protection d'un logiciel
FR98/07629 1998-06-17

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US09/739,308 Continuation US6769064B2 (en) 1998-06-17 2000-12-18 System for protecting software

Publications (1)

Publication Number Publication Date
WO1999066388A1 true WO1999066388A1 (fr) 1999-12-23

Family

ID=9527490

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR1999/001439 WO1999066388A1 (fr) 1998-06-17 1999-06-15 Systeme de protection d'un logiciel

Country Status (6)

Country Link
US (1) US6769064B2 (fr)
EP (1) EP1086415B1 (fr)
CN (1) CN1237428C (fr)
DE (1) DE69900851T2 (fr)
FR (1) FR2780177B1 (fr)
WO (1) WO1999066388A1 (fr)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002033521A2 (fr) * 2000-10-17 2002-04-25 Telefonaktiebolaget L M Ericsson (Publ) Procede et appareil assurant une commande d'acces a niveau securise
CN104899480A (zh) * 2015-05-05 2015-09-09 易兴旺 一种基于cpk标识认证技术的软件版权保护管理方法

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6529992B1 (en) * 1999-07-26 2003-03-04 Iomega Corporation Self-contained application disk for automatically launching application software or starting devices and peripherals
JP2001216357A (ja) * 2000-02-01 2001-08-10 Toshiba Corp ソフトウェアのライセンス管理方法および電子機器並びに記録媒体
US6792438B1 (en) * 2000-03-31 2004-09-14 Intel Corporation Secure hardware random number generator
EP1550341B1 (fr) * 2002-10-07 2007-01-03 Telefonaktiebolaget LM Ericsson (publ) Améliorations apportée à la securité et à la confidentialité dans des dispositifs de securité
GB2397676A (en) * 2003-01-23 2004-07-28 Sema Uk Ltd Privacy enhanced system using fact assertion language
GB2397677A (en) * 2003-01-23 2004-07-28 Sema Uk Ltd Customer identification using an identification key that is unique to a customer and an organization
GB2397678A (en) * 2003-01-23 2004-07-28 Sema Uk Ltd A secure terminal for use with a smart card based loyalty scheme
DE10304451B3 (de) * 2003-02-04 2004-09-02 Infineon Technologies Ag Modulare Exponentiation mit randomisiertem Exponenten
JP2004302516A (ja) * 2003-03-28 2004-10-28 Ntt Docomo Inc 端末装置およびプログラム
JP2005078161A (ja) * 2003-08-28 2005-03-24 Canon Inc 記録装置
US7712135B2 (en) * 2004-08-05 2010-05-04 Savant Protection, Inc. Pre-emptive anti-virus protection of computing systems
US7457960B2 (en) * 2004-11-30 2008-11-25 Analog Devices, Inc. Programmable processor supporting secure mode
US20070078768A1 (en) * 2005-09-22 2007-04-05 Chris Dawson System and a method for capture and dissemination of digital media across a computer network

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0191162A2 (fr) * 1984-12-18 1986-08-20 International Business Machines Corporation Procédé de protection de logiciel
US5483597A (en) * 1992-12-30 1996-01-09 Stern; Jacques Authentication process for at least one identification device using a verification device and a device embodying the process

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4593353A (en) * 1981-10-26 1986-06-03 Telecommunications Associates, Inc. Software protection method and apparatus
US4953209A (en) * 1988-10-31 1990-08-28 International Business Machines Corp. Self-verifying receipt and acceptance system for electronically delivered data objects
US5148481A (en) * 1989-10-06 1992-09-15 International Business Machines Corporation Transaction system security method and apparatus
US5652793A (en) * 1995-05-08 1997-07-29 Nvidia Corporation Method and apparatus for authenticating the use of software

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0191162A2 (fr) * 1984-12-18 1986-08-20 International Business Machines Corporation Procédé de protection de logiciel
US5483597A (en) * 1992-12-30 1996-01-09 Stern; Jacques Authentication process for at least one identification device using a verification device and a device embodying the process

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FERREIRA R C: "THE SMART CARD: A HIGH SECURITY TOOL IN EDP", PHILIPS TELECOMMUNICATION REVIEW, vol. 47, no. 3, 1 September 1989 (1989-09-01), pages 1 - 19, XP000072642 *
TASHIRO S ET AL: "IMPLEMENTATION OF A SMALL-SCALE PROTOTYPE FOR SOFTWARE SERVICE SYSTEM (SSS)", SYSTEMS & COMPUTERS IN JAPAN, vol. 19, no. 5, 1988, pages 50 - 61, XP000648481 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002033521A2 (fr) * 2000-10-17 2002-04-25 Telefonaktiebolaget L M Ericsson (Publ) Procede et appareil assurant une commande d'acces a niveau securise
WO2002033521A3 (fr) * 2000-10-17 2003-08-21 Ericsson Telefon Ab L M Procede et appareil assurant une commande d'acces a niveau securise
CN104899480A (zh) * 2015-05-05 2015-09-09 易兴旺 一种基于cpk标识认证技术的软件版权保护管理方法

Also Published As

Publication number Publication date
CN1237428C (zh) 2006-01-18
DE69900851T2 (de) 2002-09-26
EP1086415A1 (fr) 2001-03-28
FR2780177B1 (fr) 2001-10-05
EP1086415B1 (fr) 2002-01-30
FR2780177A1 (fr) 1999-12-24
US6769064B2 (en) 2004-07-27
DE69900851D1 (de) 2002-03-14
US20010034840A1 (en) 2001-10-25
CN1304504A (zh) 2001-07-18

Similar Documents

Publication Publication Date Title
EP1086415B1 (fr) Systeme de protection d'un logiciel
EP1529369B1 (fr) Proc d d' change s curis d'informations entre deux dispositifs
EP0475837B1 (fr) Procédé de gestion d'un programme d'application chargé dans un support à microcircuit
EP1549011A1 (fr) Procédé et système de communication entre un terminal et au moins un équipment communicant
EP1766588A2 (fr) Composant pour module de sécurité
FR2989799A1 (fr) Procede de transfert d'un dispositif a un autre de droits d'acces a un service
EP0606792B1 (fr) Procédé d'authentification d'un ensemble informatique par un autre ensemble informatique
EP0720098B1 (fr) Dispositif de sécurisation de systèmes d'information organisés autour de microprocesseurs
EP1609326B1 (fr) Procede de protection d'un terminal de telecommunication de type telephone mobile
WO2008084154A2 (fr) Traitement de donnee relative a un service numerique
EP0566512A1 (fr) Procédé de contrôle d'accès du type autorisant l'accès à une fonction d'exploitation d'un module d'exploitation à l'aide d'un mot de contrôle
FR2923041A1 (fr) Procede d'ouverture securisee a des tiers d'une carte a microcircuit.
EP1185914B1 (fr) Procede pour securiser un logiciel d'utilisation a partir d'une unite de traitement et de memorisation d'un secret et systeme en faisant application
FR2961328A1 (fr) Dispositif et procede de securisation de l'acces a une fonction
EP2912598A1 (fr) Procédé de téléchargement d'au moins un composant logiciel dans un appareil informatique, produit programme d'ordinateur, appareil informatique et système informatique associés
EP2462718B1 (fr) Procédé de génération de demi-clés cryptographiques et système associé
CN113221134B (zh) 离线安全数据交换方法及设备
EP0851359A1 (fr) Mémoire avec zones protégées en lecture
FR2778291A1 (fr) Systeme de transmission protege d'informations
FR2888437A1 (fr) Procede et systeme de controle d'acces a un service d'un fournisseur d'acces implemente sur un serveur multimedia, module, serveur, terminal et programmes pour ce systeme
FR3094515A1 (fr) procédé d’exécution de code sécurisé, dispositifs, système et programmes correspondants
FR2833440A1 (fr) Systeme de controle d'acces a un reseau et procede de controle d'acces correspondant
FR2762111A1 (fr) Procede et systeme de protection contre la copie et l'utilisation illicites d'un fichier informatique
WO2000056006A1 (fr) Procede de chargement securise de donnees entre des modules de securite
WO2008084155A2 (fr) Traitement de donnee relative a un reseau de donnees

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 99807104.8

Country of ref document: CN

AK Designated states

Kind code of ref document: A1

Designated state(s): CN US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 1999957101

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 09739308

Country of ref document: US

WWP Wipo information: published in national office

Ref document number: 1999957101

Country of ref document: EP

WWG Wipo information: grant in national office

Ref document number: 1999957101

Country of ref document: EP