US20010034840A1 - System for protecting software - Google Patents
System for protecting software Download PDFInfo
- Publication number
- US20010034840A1 US20010034840A1 US09/739,308 US73930800A US2001034840A1 US 20010034840 A1 US20010034840 A1 US 20010034840A1 US 73930800 A US73930800 A US 73930800A US 2001034840 A1 US2001034840 A1 US 2001034840A1
- Authority
- US
- United States
- Prior art keywords
- software
- algorithm
- random number
- card
- pseudo
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 230000004044 response Effects 0.000 claims abstract description 13
- 238000003780 insertion Methods 0.000 claims abstract description 5
- 230000037431 insertion Effects 0.000 claims abstract description 5
- 230000015654 memory Effects 0.000 claims description 14
- 230000006870 function Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000000034 method Methods 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F7/00—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
- G07F7/08—Mechanisms 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/10—Mechanisms 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/1008—Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/34—Payment 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/341—Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/34—Payment 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/346—Cards serving only as information carrier of service
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, 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/409—Device specific authentication in transaction processing
- G06Q20/4097—Device specific authentication in transaction processing using mutual authentication between devices and transaction partners
- G06Q20/40975—Device specific authentication in transaction processing using mutual authentication between devices and transaction partners using encryption therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/007—Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
- G06F2211/008—Public Key, Asymmetric Key, Asymmetric Encryption
Definitions
- the present invention relates to a system for protecting software. More precisely, the invention relates to a system for protecting software that can be executed on a computer machine.
- the system is of the type in which the software to be protected is associated with a memory card for insertion in a read/write device connected to the computer machine, the presence of the card being required continuously throughout execution of the software.
- the term “software” is used to cover not only computer software in the usual sense, but also an executable file, an image file, a video file, a sound file, etc.
- the term “computer machine” is used to cover any machine capable of executing software such as PCs, portable telephones, set-top boxes, or games consoles.
- the term “memory card” is used to cover any removable medium including memory circuits and, in particular, a microprocessor.
- each piece of software is associated with a dongle.
- the dongle and the software are personalized with one or more keys by the software developer.
- the software makes calls to the dongle in order to verify that it is present and that the keys are valid.
- Each call is in the form of a question and a response.
- the dongle returns a predefined response that is known to the software. If the response to a question is different from the expected response then the software locks up to prevent further use thereof.
- U.S. Pat. No. 5,083,309 discloses a system for using software in a secure manner.
- the system includes using an electronic memory card in which a portion of the data and/or of the software is stored and made inaccessible by the circuits of the electronic memory card itself. That solution provides a high degree of protection, but it is relatively cumbersome to implement because a portion of the software needs to be stored in the card which executes certain portions of the software.
- An object of the present invention is to provide a system for protecting software using an electronic memory card in association with the software, which system likewise provides a high degree of protection but without requiring a large quantity of information, and in particular without requiring pre-storing in the memory card elements of the software to be protected and which does not require secret information to be generated by the software or by the file contained in the computer system.
- the software includes means for storing a public key or value, and means for periodically generating a pseudo-random number and for transmitting the pseudo-random number to the read/write device.
- Another means implements a first algorithm using the public key or value on information received from the read/write device.
- a comparator compares the result of implementing the first algorithm with the pseudo-random numbers, and the execution of the software can be interrupted depending on the comparison.
- the card includes protected memory means for storing an associated private value or key.
- a means is provided for implementing a second algorithm associated with the first algorithm and using the private value or key on received information issued by the computer machine, thereby obtaining encoded information.
- the encoded information is transmitted to the computer machine.
- the computer machine sends a message to which the response is the same message, but as encrypted using the algorithm stored in the circuits of the card.
- An associated algorithm is stored in the software. It is thus possible for the message to be in the form of any numbers or data generated in pseudo-random fashion, and the response is determined by the algorithm stored in the card. The number of messages and responses is thus infinite.
- the first and second algorithms are public key algorithms or zero disclosure algorithms.
- the card contains the private key in its memory and the software contains the associated public key. It will be understood that the public key is accessible in the software but that does not lead to a failure in protecting the software. In contrast, the private key is stored in the circuit of the electronic memory card which makes access to this information if not impossible, at least extremely difficult. This implementation thus provides maximum protection.
- each piece of software includes its own public key and the card includes its own private key. It is therefore necessary to have one card per piece of software.
- the public keys and the private keys are all the same for all instances of the same piece of software. The number of instances of the software that can be executed simultaneously is thus under control since this number is limited by the number of cards.
- system further comprises network means for downloading said software from a supplier and into the computer machine, means using said card to request said supplier to supply the private key associated with said software over the network, and means for receiving in return said private key in encrypted form and for decrypting it in the card so as to store it in decrypted form.
- FIG. 1 is a view of a computer installation for implementing the software protection system
- FIG. 2 is a block diagram of the circuit of an electronic memory card
- FIG. 3 is a flow chart showing a first implementation of the protection system using a zero knowledge algorithm
- FIG. 4 is a flow chart showing a second implementation of the protection system.
- FIG. 5 is a flow chart showing a third implementation of the protection system.
- the system for protecting use of a piece of software is initially described with reference to FIG. 1.
- the system comprises a main unit for running the software, referred to as a “computer machine” 10 of conventional type.
- the figure shows a data input keyboard 12 , the slot 14 of a reader for a digital data medium 16 , and the main memory or hard disk 18 of the main unit.
- the main unit 10 is associated with an auxiliary unit 20 which consists in a read/write device for an electronic memory card 22 .
- the read/write device 22 essentially comprises a system for guiding the memory card 24 represented merely by an insertion slot 26 , a connector that is not shown, and a processor circuit 28 .
- the processor circuit 28 serves merely to receive information sent by the main unit 10 or for sending thereto information it has read from the card, and to control the operations of reading or writing in the integrated circuit of the card 24 .
- FIG. 2 is a diagram of the main circuits in the electronic module of the memory card 24 .
- the circuits 32 essentially comprise a microprocessor 34 which is connected to the external contacts 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 random access type (RAM).
- RAM random access type
- a first implementation of the system for protecting software stored on the floppy disk 16 or on any other digital data medium by means of the electronic memory card 24 having a microprocessor is described below with reference to FIG. 3.
- a zero knowledge algorithm is used.
- the disk 16 also includes program or instruction elements specific to implementing protection. These specific elements comprise firstly a subprogram 41 for generating random numbers R, and a subprogram 43 for implementing a first test algorithm using a public key K pub which is stored in the subprogram 43 .
- the program memory 38 has a subprogram 42 for implementing a message/response, or question/response, zero knowledge algorithm F with a private key K priv .
- the private key is stored in the data memory of the card.
- This algorithm F is associated with the first test algorithm, as explained below, to enable the question/response zero knowledge algorithm to be implemented.
- the subprogram 41 for generating pseudo-random numbers R is implemented by the computer machine 10 to generate the pseudo-random number R which is transmitted to the read/write device 20 and then to the circuits of the card 24 .
- Its microprocessor 34 implements the algorithm F applied to the pseudo-random number R by using its private key K priv .
- a number X is thus obtained which is transmitted to the computer machine 10 .
- step 44 execution of the software is interrupted.
- the function for generating the random number R is again activated, per operation 45 , possibly after a predetermined time lapse.
- This implementation uses as its encryption algorithm an algorithm E of the asymmetrical type, e.g. an algorithm of the RSA type (Rivest, Shamir, Aldeman).
- the private key K priv is stored in the data memory 38 of the electronic memory card.
- the public key K pub is stored in the specific portion of the software stored on the digital data medium 16 .
- the subprogram 41 for generating a random number R generates the number R and transmits it to the read/write device 20 .
- the microprocessor of the electronic memory card implements the asymmetrical type encryption algorithm E in step 42 ′ by using the private key stored in the memory of the card. A number S is thus obtained which is transmitted to the computer machine.
- the specific subprogram 43 ′ of the software then calculates the inverse of S by using the first encryption algorithm E ⁇ 1 , which is the inverse of E, and by using the public key K pub , with the inverse of S subsequently being compared with the random number R. If the result of this comparison is positive, then per operation 45 the software causes a new random number R to be generated, possibly after a time lapse. Otherwise, execution of the software is interrupted.
- the subprogram 41 for generating a random number R can be stored in the memory of card 24 rather than in computer machine 10 .
- unauthorized access to this number and subprogram 41 cannot be gained through computer machine 10 .
- a third implementation of the protection system is described below with reference to FIG. 5, this implementation likewise implementing an encryption algorithm of the asymmetrical type.
- the programs stored in the memory of the card 24 also include an algorithm 46 for generating a random number R 2 .
- These programs also include a program 48 for combining two numbers, which combination consists in summing two numbers in the implementation described.
- the specific subprograms associated with the software include the subprograms described above with reference to FIG. 4 and also a subprogram 48 ′ for combining two numbers, this subprogram being identical to the subprogram 48 .
- the random number generator 41 When executing this implementation of the protection system, the random number generator 41 generates a random number R 1 which is transmitted to the read/write device and then to the circuits of the memory card 24 .
- the microprocessor of the card activates the random number generator function 46 which thus generates the number R 2 .
- the combination function 48 then sums the numbers R 1 and R 2 .
- the encryption algorithm of the asymmetrical public key K pub and private key K priv type is applied firstly to the second random number R 2 by using the private key which gives a first number S 1 in a step 50 , and the same encryption algorithm is applied to the combination of the numbers R 1 +R 2 in a step 52 which gives a second number S 2 .
- the numbers generated in this way, S 1 and S 2 are transmitted to the computer machine and to the specific subprograms of the software.
- the second encryption algorithm E ⁇ 1 (which may or may not be the same as the above-mentioned first encryption algorithm) is applied in step 51 to the first number S 1 using the public key, thus making it possible in normal operation (i.e. with a properly associated card) to obtain the second random number R 2 .
- the sum R 1 +R 2 is calculated and in step 54 the second encryption algorithm E ⁇ 1 is applied to the number S 2 using the public key.
- the result obtained by implementing the second encryption algorithm is then compared with the sum of the numbers R 1 +R 2 . If the comparison is positive, then the operation is repeated, possibly after a time lapse. New random numbers R 1 and R 2 are then issued under control of the output 56 from step 54 . Otherwise, execution of the software is interrupted.
- the complete system thus makes it possible not only to protect the software while it is being executed, but it also makes it possible to use a network for downloading the software into the computer machine and also for loading the memory of the microprocessor card with the private key that is necessary to enable the software to be used.
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Software Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Networks & Wireless Communication (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Finance (AREA)
- Storage Device Security (AREA)
Abstract
Description
- The present invention relates to a system for protecting software. More precisely, the invention relates to a system for protecting software that can be executed on a computer machine. The system is of the type in which the software to be protected is associated with a memory card for insertion in a read/write device connected to the computer machine, the presence of the card being required continuously throughout execution of the software.
- In the present description, the term “software” is used to cover not only computer software in the usual sense, but also an executable file, an image file, a video file, a sound file, etc. Similarly, the term “computer machine” is used to cover any machine capable of executing software such as PCs, portable telephones, set-top boxes, or games consoles. Finally, the term “memory card” is used to cover any removable medium including memory circuits and, in particular, a microprocessor.
- To protect software against its unauthorized use, the main solution presently in existence on the market uses a component in the form of an application-specific integrated circuit (ASIC) and referred to as a “protective key” incorporated in a device known as a “dongle”. Such dongles need to be connected to the parallel port of the computer on which the software is being executed in order to enable the protected software to operate properly. The principle of using a dongle is as follows: each piece of software is associated with a dongle. The dongle and the software are personalized with one or more keys by the software developer. Once installed on the computer, the software makes calls to the dongle in order to verify that it is present and that the keys are valid. Each call is in the form of a question and a response. For each question (implemented as a string of characters), the dongle returns a predefined response that is known to the software. If the response to a question is different from the expected response then the software locks up to prevent further use thereof.
- More sophisticated “dongles” use an encryption system generated by a hardware system which enables a character string to be transformed in a determined manner. These models are easily “broken” by reverse engineering.
- U.S. Pat. No. 5,083,309 discloses a system for using software in a secure manner. The system includes using an electronic memory card in which a portion of the data and/or of the software is stored and made inaccessible by the circuits of the electronic memory card itself. That solution provides a high degree of protection, but it is relatively cumbersome to implement because a portion of the software needs to be stored in the card which executes certain portions of the software.
- An object of the present invention is to provide a system for protecting software using an electronic memory card in association with the software, which system likewise provides a high degree of protection but without requiring a large quantity of information, and in particular without requiring pre-storing in the memory card elements of the software to be protected and which does not require secret information to be generated by the software or by the file contained in the computer system.
- This and other objects are attained in accordance with one aspect of the invention directed to a system for protecting software executable on a computer machine, the system being of the type in which the software is associated with a memory card adapted for insertion in a read/write device connected to the computer machine. The software includes means for storing a public key or value, and means for periodically generating a pseudo-random number and for transmitting the pseudo-random number to the read/write device. Another means implements a first algorithm using the public key or value on information received from the read/write device. A comparator compares the result of implementing the first algorithm with the pseudo-random numbers, and the execution of the software can be interrupted depending on the comparison.
- The card includes protected memory means for storing an associated private value or key. A means is provided for implementing a second algorithm associated with the first algorithm and using the private value or key on received information issued by the computer machine, thereby obtaining encoded information. The encoded information is transmitted to the computer machine.
- It will be understood that in such a system, the computer machine sends a message to which the response is the same message, but as encrypted using the algorithm stored in the circuits of the card. An associated algorithm is stored in the software. It is thus possible for the message to be in the form of any numbers or data generated in pseudo-random fashion, and the response is determined by the algorithm stored in the card. The number of messages and responses is thus infinite.
- To implement such a system, the first and second algorithms are public key algorithms or zero disclosure algorithms. The card contains the private key in its memory and the software contains the associated public key. It will be understood that the public key is accessible in the software but that does not lead to a failure in protecting the software. In contrast, the private key is stored in the circuit of the electronic memory card which makes access to this information if not impossible, at least extremely difficult. This implementation thus provides maximum protection.
- In a first implementation, each piece of software includes its own public key and the card includes its own private key. It is therefore necessary to have one card per piece of software. In a second implementation, the public keys and the private keys are all the same for all instances of the same piece of software. The number of instances of the software that can be executed simultaneously is thus under control since this number is limited by the number of cards.
- In an improved implementation, the system further comprises network means for downloading said software from a supplier and into the computer machine, means using said card to request said supplier to supply the private key associated with said software over the network, and means for receiving in return said private key in encrypted form and for decrypting it in the card so as to store it in decrypted form.
- The following description of various implementations of the invention are given by way of non-limiting example and refers to the accompanying figures, in which:
- FIG. 1 is a view of a computer installation for implementing the software protection system;
- FIG. 2 is a block diagram of the circuit of an electronic memory card;
- FIG. 3 is a flow chart showing a first implementation of the protection system using a zero knowledge algorithm;
- FIG. 4 is a flow chart showing a second implementation of the protection system; and
- FIG. 5 is a flow chart showing a third implementation of the protection system.
- The system for protecting use of a piece of software is initially described with reference to FIG. 1. The system comprises a main unit for running the software, referred to as a “computer machine”10 of conventional type. The figure shows a
data input keyboard 12, theslot 14 of a reader for adigital data medium 16, and the main memory orhard disk 18 of the main unit. Themain unit 10 is associated with anauxiliary unit 20 which consists in a read/write device for anelectronic memory card 22. The read/writedevice 22 essentially comprises a system for guiding thememory card 24 represented merely by aninsertion slot 26, a connector that is not shown, and aprocessor circuit 28. Theprocessor circuit 28 serves merely to receive information sent by themain unit 10 or for sending thereto information it has read from the card, and to control the operations of reading or writing in the integrated circuit of thecard 24. - FIG. 2 is a diagram of the main circuits in the electronic module of the
memory card 24. There areexternal contacts 30 which provide electrical connection between thecircuits 32 of the card and thecircuits 28 of the read/write device. Thecircuits 32 essentially comprise amicroprocessor 34 which is connected to theexternal contacts 30, themicroprocessor 34 being associated with anon-volatile program memory 36, with anon-volatile data memory 38, and with aworking memory 40 of the random access type (RAM). - A first implementation of the system for protecting software stored on the
floppy disk 16 or on any other digital data medium by means of theelectronic memory card 24 having a microprocessor is described below with reference to FIG. 3. In this implementation, a zero knowledge algorithm is used. In addition to containing instructions corresponding to the software proper, thedisk 16 also includes program or instruction elements specific to implementing protection. These specific elements comprise firstly asubprogram 41 for generating random numbers R, and asubprogram 43 for implementing a first test algorithm using a public key Kpub which is stored in thesubprogram 43. With reference now to theelectronic memory card 24, in this first implementation, theprogram memory 38 has asubprogram 42 for implementing a message/response, or question/response, zero knowledge algorithm F with a private key Kpriv. The private key is stored in the data memory of the card. This algorithm F is associated with the first test algorithm, as explained below, to enable the question/response zero knowledge algorithm to be implemented. - Periodically, the
subprogram 41 for generating pseudo-random numbers R is implemented by thecomputer machine 10 to generate the pseudo-random number R which is transmitted to the read/write device 20 and then to the circuits of thecard 24. Itsmicroprocessor 34 implements the algorithm F applied to the pseudo-random number R by using its private key Kpriv. A number X is thus obtained which is transmitted to thecomputer machine 10.Subprogram 43 of the software calculates a number X′=F′ (R,Kpub). Pseudo-random number R and Kpub are inputs to function F′. The test then compares the value of X′ with the value X. If the result of this comparison which involves the use of the public key Kpub is incorrect, then either thememory card 24 is not valid or else it does not correspond to running the software. Implementing the question/response zero knowledge algorithm can require several iterations between the card and the reader as tosubprograms step 44, execution of the software is interrupted. In contrast, if the test is favorable, then the function for generating the random number R is again activated, peroperation 45, possibly after a predetermined time lapse. - It will be understood that in this implementation, the above-described operation is run periodically, thereby ensuring firstly that an
electronic memory card 24 is indeed present in the reader, and that in addition said card is indeed the intended card associated with the software that is being run. - Another preferred implementation is described below with reference to FIG. 4. This implementation uses as its encryption algorithm an algorithm E of the asymmetrical type, e.g. an algorithm of the RSA type (Rivest, Shamir, Aldeman).
- To implement this protection system, the private key Kpriv is stored in the
data memory 38 of the electronic memory card. The public key Kpub is stored in the specific portion of the software stored on thedigital data medium 16. Thesubprogram 41 for generating a random number R generates the number R and transmits it to the read/write device 20. The microprocessor of the electronic memory card implements the asymmetrical type encryption algorithm E instep 42′ by using the private key stored in the memory of the card. A number S is thus obtained which is transmitted to the computer machine. Thespecific subprogram 43′ of the software then calculates the inverse of S by using the first encryption algorithm E−1, which is the inverse of E, and by using the public key Kpub, with the inverse of S subsequently being compared with the random number R. If the result of this comparison is positive, then peroperation 45 the software causes a new random number R to be generated, possibly after a time lapse. Otherwise, execution of the software is interrupted. - Advantageously, in the first and second implementations, the
subprogram 41 for generating a random number R can be stored in the memory ofcard 24 rather than incomputer machine 10. Thus, unauthorized access to this number andsubprogram 41 cannot be gained throughcomputer machine 10. - A third implementation of the protection system is described below with reference to FIG. 5, this implementation likewise implementing an encryption algorithm of the asymmetrical type. In this implementation, the programs stored in the memory of the
card 24 also include analgorithm 46 for generating a random number R2. These programs also include aprogram 48 for combining two numbers, which combination consists in summing two numbers in the implementation described. Clearly it is possible to envisage other linear combinations of the two numbers. The specific subprograms associated with the software include the subprograms described above with reference to FIG. 4 and also asubprogram 48′ for combining two numbers, this subprogram being identical to thesubprogram 48. - When executing this implementation of the protection system, the
random number generator 41 generates a random number R1 which is transmitted to the read/write device and then to the circuits of thememory card 24. On the other hand, the microprocessor of the card activates the randomnumber generator function 46 which thus generates the number R2. Thecombination function 48 then sums the numbers R1 and R2. Thereafter the encryption algorithm of the asymmetrical public key Kpub and private key Kpriv type is applied firstly to the second random number R2 by using the private key which gives a first number S1 in astep 50, and the same encryption algorithm is applied to the combination of the numbers R1+R2 in astep 52 which gives a second number S2. The numbers generated in this way, S1 and S2, are transmitted to the computer machine and to the specific subprograms of the software. The second encryption algorithm E−1 (which may or may not be the same as the above-mentioned first encryption algorithm) is applied instep 51 to the first number S1 using the public key, thus making it possible in normal operation (i.e. with a properly associated card) to obtain the second random number R2. Instep 48′, the sum R1+R2 is calculated and instep 54 the second encryption algorithm E−1 is applied to the number S2 using the public key. The result obtained by implementing the second encryption algorithm is then compared with the sum of the numbers R1+R2. If the comparison is positive, then the operation is repeated, possibly after a time lapse. New random numbers R1 and R2 are then issued under control of the output 56 fromstep 54. Otherwise, execution of the software is interrupted. - Implementing the software protection system requires a private key, i.e. a secret key to be stored in the card held by the user of the software.
- Since the computer machine used for executing the software can download the software over a temporary or permanent network, it would be advantageous to enable the private key to be transmitted over the same network for storage in the card, with the key being issued by the supplier of the software. Naturally, it is necessary for the key to be transmitted to the user's card under conditions of security such that neither the user nor an attacker connected to the network can have access thereto.
- Various procedures are known that enable a user having a microprocessor card to engage in dialog over a network with an operator under conditions which ensure that the information transmitted is protected from third parties and from the user while nevertheless being certain that the user is indeed the person having the right to receive the information.
- By way of example, one such procedure is described in French patent application No. 98 05484 filed on Apr. 30, 1998 in the name of the Applicant.
- In this improved version, the complete system thus makes it possible not only to protect the software while it is being executed, but it also makes it possible to use a network for downloading the software into the computer machine and also for loading the memory of the microprocessor card with the private key that is necessary to enable the software to be used.
Claims (7)
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9807629 | 1998-06-17 | ||
FR98/07629 | 1998-06-17 | ||
FR9807629A FR2780177B1 (en) | 1998-06-17 | 1998-06-17 | SOFTWARE PROTECTION SYSTEM |
PCT/FR1999/001439 WO1999066388A1 (en) | 1998-06-17 | 1999-06-15 | Software protection system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/FR1999/001439 Continuation WO1999066388A1 (en) | 1998-06-17 | 1999-06-15 | Software protection system |
Publications (2)
Publication Number | Publication Date |
---|---|
US20010034840A1 true US20010034840A1 (en) | 2001-10-25 |
US6769064B2 US6769064B2 (en) | 2004-07-27 |
Family
ID=9527490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/739,308 Expired - Fee Related US6769064B2 (en) | 1998-06-17 | 2000-12-18 | System for protecting software |
Country Status (6)
Country | Link |
---|---|
US (1) | US6769064B2 (en) |
EP (1) | EP1086415B1 (en) |
CN (1) | CN1237428C (en) |
DE (1) | DE69900851T2 (en) |
FR (1) | FR2780177B1 (en) |
WO (1) | WO1999066388A1 (en) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010013099A1 (en) * | 2000-02-01 | 2001-08-09 | Kabushiki Kaisha Toshiba | Software license management method, electronic device, and recording medium |
US20040030734A1 (en) * | 2000-03-31 | 2004-02-12 | Wells Steven E. | Secure hardware random number generator |
US20040083473A1 (en) * | 1999-07-26 | 2004-04-29 | Iomega Corporation | Self-contained application disk for automatically launching application software or starting devices and peripherals |
WO2004066227A1 (en) * | 2003-01-23 | 2004-08-05 | Atos Origin It Services Uk Limited | Privacy enhanced card method and system comprising card and terminal for reading the card |
WO2004070671A1 (en) * | 2003-01-23 | 2004-08-19 | Atos Origin It Services Uk Limited | Privacy enhanced system and method comprising uncommon unique identifier |
WO2004070670A1 (en) * | 2003-01-23 | 2004-08-19 | Atos Origin It Services Uk Limited | Privacy enhanced system and method comprising fact assertion query language |
US20060031937A1 (en) * | 2004-08-05 | 2006-02-09 | Ken Steinberg | Pre-emptive anti-virus protection of computing systems |
US20060130130A1 (en) * | 2004-11-30 | 2006-06-15 | Joshua Kablotsky | 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 |
US20140304768A1 (en) * | 2002-10-07 | 2014-10-09 | Telefonaktiebolaget Lm Ericsson (Publ) | Security and privacy enhancements for security devices |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7058806B2 (en) * | 2000-10-17 | 2006-06-06 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for secure leveled access control |
DE10304451B3 (en) * | 2003-02-04 | 2004-09-02 | Infineon Technologies Ag | Modular exponentiation with randomized exponent |
JP2004302516A (en) * | 2003-03-28 | 2004-10-28 | Ntt Docomo Inc | Terminal device and program |
JP2005078161A (en) * | 2003-08-28 | 2005-03-24 | Canon Inc | Recording apparatus |
CN104899480A (en) * | 2015-05-05 | 2015-09-09 | 易兴旺 | Software copyright protection and management method based on combined public key identity authentication technology |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4593353A (en) * | 1981-10-26 | 1986-06-03 | Telecommunications Associates, Inc. | Software protection method and apparatus |
US4757534A (en) * | 1984-12-18 | 1988-07-12 | International Business Machines Corporation | Code protection using cryptography |
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 |
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 |
US5652793A (en) * | 1995-05-08 | 1997-07-29 | Nvidia Corporation | Method and apparatus for authenticating the use of software |
-
1998
- 1998-06-17 FR FR9807629A patent/FR2780177B1/en not_active Expired - Fee Related
-
1999
- 1999-06-15 EP EP99957101A patent/EP1086415B1/en not_active Expired - Lifetime
- 1999-06-15 WO PCT/FR1999/001439 patent/WO1999066388A1/en active IP Right Grant
- 1999-06-15 DE DE69900851T patent/DE69900851T2/en not_active Expired - Lifetime
- 1999-06-15 CN CN99807104.8A patent/CN1237428C/en not_active Expired - Fee Related
-
2000
- 2000-12-18 US US09/739,308 patent/US6769064B2/en not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4593353A (en) * | 1981-10-26 | 1986-06-03 | Telecommunications Associates, Inc. | Software protection method and apparatus |
US4757534A (en) * | 1984-12-18 | 1988-07-12 | International Business Machines Corporation | Code protection using cryptography |
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 |
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 |
US5652793A (en) * | 1995-05-08 | 1997-07-29 | Nvidia Corporation | Method and apparatus for authenticating the use of software |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040083473A1 (en) * | 1999-07-26 | 2004-04-29 | Iomega Corporation | Self-contained application disk for automatically launching application software or starting devices and peripherals |
US20010013099A1 (en) * | 2000-02-01 | 2001-08-09 | Kabushiki Kaisha Toshiba | Software license management method, electronic device, and recording medium |
US7269614B2 (en) * | 2000-03-31 | 2007-09-11 | Intel Corporation | Secure hardware random number generator |
US20040030734A1 (en) * | 2000-03-31 | 2004-02-12 | Wells Steven E. | Secure hardware random number generator |
US9282095B2 (en) * | 2002-10-07 | 2016-03-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Security and privacy enhancements for security devices |
US20140304768A1 (en) * | 2002-10-07 | 2014-10-09 | Telefonaktiebolaget Lm Ericsson (Publ) | Security and privacy enhancements for security devices |
WO2004066227A1 (en) * | 2003-01-23 | 2004-08-05 | Atos Origin It Services Uk Limited | Privacy enhanced card method and system comprising card and terminal for reading the card |
WO2004070670A1 (en) * | 2003-01-23 | 2004-08-19 | Atos Origin It Services Uk Limited | Privacy enhanced system and method comprising fact assertion query language |
WO2004070671A1 (en) * | 2003-01-23 | 2004-08-19 | Atos Origin It Services Uk Limited | Privacy enhanced system and method comprising uncommon unique identifier |
US20060031937A1 (en) * | 2004-08-05 | 2006-02-09 | Ken Steinberg | Pre-emptive anti-virus protection of computing systems |
US7712135B2 (en) * | 2004-08-05 | 2010-05-04 | Savant Protection, Inc. | Pre-emptive anti-virus protection of computing systems |
US20060130130A1 (en) * | 2004-11-30 | 2006-06-15 | Joshua Kablotsky | Programmable processor supporting secure mode |
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 |
Also Published As
Publication number | Publication date |
---|---|
CN1304504A (en) | 2001-07-18 |
EP1086415B1 (en) | 2002-01-30 |
DE69900851D1 (en) | 2002-03-14 |
CN1237428C (en) | 2006-01-18 |
US6769064B2 (en) | 2004-07-27 |
EP1086415A1 (en) | 2001-03-28 |
WO1999066388A1 (en) | 1999-12-23 |
DE69900851T2 (en) | 2002-09-26 |
FR2780177B1 (en) | 2001-10-05 |
FR2780177A1 (en) | 1999-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6769064B2 (en) | System for protecting software | |
EP0895148B1 (en) | Software rental system and method for renting software | |
KR100436377B1 (en) | Method and system for securely handling information between two information processing devices | |
US4593353A (en) | Software protection method and apparatus | |
US5956408A (en) | Apparatus and method for secure distribution of data | |
US6292899B1 (en) | Volatile key apparatus for safeguarding confidential data stored in a computer system memory | |
US6266416B1 (en) | Protection of software against use without permit | |
US6047242A (en) | Computer system for protecting software and a method for protecting software | |
CN100504819C (en) | Access authentication method, information processing unit and detachable recording device | |
US6647494B1 (en) | System and method for checking authorization of remote configuration operations | |
US6871192B2 (en) | System and method for preventing unauthorized use of protected software utilizing a portable security device | |
US20050283662A1 (en) | Secure data backup and recovery | |
KR20010023731A (en) | Tamper resistant methods and apparatus | |
Klassen et al. | Shadowed hedgehogs: A technique for visualizing 2D slices of 3D vector fields | |
KR20010023733A (en) | Tamper resistant methods and apparatus | |
KR20030057565A (en) | Anti-spoofing password protection | |
US8731191B2 (en) | Data encryption method and system and data decryption method | |
US6336189B1 (en) | Apparatus and method for data capsule generation | |
KR100954636B1 (en) | Method, system, and device for mutual authentication and content protection | |
US6651169B1 (en) | Protection of software using a challenge-response protocol embedded in the software | |
CN114785503B (en) | Cipher card, root key protection method thereof and computer readable storage medium | |
US6678665B1 (en) | Computer system for protecting software and a method for protecting software | |
US6529603B1 (en) | Method and apparatus to reduce the risk of observation of a secret value used by an instruction sequence | |
CN114244620A (en) | Board card network access verification method and device and board card control center | |
US20060224894A1 (en) | Methods, devices and computer programs for creating ciphertext, plaintext and a cryptographic key |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SCHLUMBERGER SYSTEMES, FRANCE Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SION, JEROME;LION, STEPHANIE;REEL/FRAME:011931/0798;SIGNING DATES FROM 20010523 TO 20010606 |
|
AS | Assignment |
Owner name: AXALTO S.A., FRANCE Free format text: CHANGE OF NAME;ASSIGNOR:SCHLUMBERGER SYSTEMES;REEL/FRAME:017145/0287 Effective date: 20040311 |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
REMI | Maintenance fee reminder mailed | ||
LAPS | Lapse for failure to pay maintenance fees | ||
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20160727 |