Method to protect software against unwanted use with a “conditional branch” principle
AssigneeSAS Validy
InventorsJean-Christophe Cuenod, Gilles Sgro
Life of this patent
Estimating the term…
Abstract
The invention concerns a process to protect a vulnerable software working on a data processing system against its unauthorized usage using a processing and memorizing unit. The process comprises creating a protected software by choosing in the source of the vulnerable software at least one conditional branch and by producing the source of the protected software so that during the execution of the protected software a second execution part, executed in the processing and memorizing unit, executes at least the functionality of the chosen conditional branch and puts at the data processing system's disposal a piece of information enabling it to know where to carry on the execution of the software.
Claims51
Process to protect, using at least one blank unit (60) including at least memorization means (15) and processing means (16), a vulnerable software (2v) against its unauthorized usage, said vulnerable software (2v) being produced from a source (2vs) and working on a data processing system (3), said protection process comprising:
- during a protection phase (P):
- creating a protected software (2p):
- by choosing, in the source of the vulnerable software (2vs), at least one conditional branch,
- by choosing at least one portion of the source of the vulnerable software (2vs) containing at least one chosen conditional branch,
- by producing a source of the protected software (2ps) from the source of the vulnerable software (2vs), by modifying at least one chosen portion of the source of the vulnerable software (2vs) to obtain at least one modified portion of the source of the protected software (2ps), this modification being such that during the execution of the protected software (2p):
- a first execution part (2pes) is executed in the data processing system (3) and a second execution part (2peu) is executed in a unit (6), obtained from the blank unit (60) after upload of information,
- and the second execution part (2peu) executes at least the functionality of at least one chosen conditional branch and puts at the data processing system (3)'s disposal, a piece of information enabling the first execution part (2pes), to carry on its execution at the chosen spot,
- and by producing:
- a first object part (2pos) of the protected software (2p), from the source of the protected software (2ps), said first object part (2pos) being such that during the execution of the protected software (2p), appears a first execution part (2pes) which is executed in the data processing system (3) and whose at least a portion takes into account a result obtained from executing the at least one chosen conditional branch in the unit (6),
- and a second object part (2pou) of the protected software (2p), said second object part (2pou) being such that, after upload to the blank unit (60) and during the execution of the protected software (2p), appears the second execution part (2peu) by means of which each chosen conditional branch is executed,
- and uploading the second object part (2pou) to the blank unit (60), with the intention of obtaining the unit (6),
- and during a usage phase (U) during which the protected software (2p) is executed:
- in the presence of the unit (6) and each time a portion of the first execution part (2pes) imposes it, executing the functionality of a conditional branch in the unit (6), so that said portion is executed correctly and that, consequently, the protected software (2p) is completely functional,
- and in the absence of the unit (6) and in spite of the request by a portion of the first execution part (2pes) to execute the functionality of a conditional branch in the unit (6), not being able to fulfill said request correctly, so that at least said portion is not executed correctly and that consequently, the protected software (2p) is not completely functional,
- wherein during the protection phase (P):
- defining:
- as instructions set, an instructions set whose at least some instructions work with registers and use at least one operand with the intention of returning a result,
- constructing exploitation means enabling the unit (6) to execute elementary functions of a set, the execution of said elementary functions being triggered by execution in the data processing system (3), of elementary commands,
- for at least some of the instructions working with registers:
- a part (PF) defining the functionality of the instruction,
- and a part defining the expected chaining for the execution of the instructions and including bits fields corresponding to:
- an identification field of the instruction (CII),
- and for each operand of the instruction:
- a flag field (CDk),
- and an expected identification field (CIPk) of the operand,
- for each register belonging to the exploitation means and used by the instructions set, a generated identification field (CIGv) in which is automatically memorized the identification of the last instruction which has returned its result in said register,
- as detection means (17), means enabling, during the execution of an instruction, for each operand, when the flag field (CDk) imposes it, to check the equality of the generated identification field (CIGv) corresponding to the register used by said operand, and the expected identification field (CIPk) of the origin of said operand,
- and as coercion means (18), means enabling to modify the result of the instructions, if at least one of the checked equalities is false.
Dependencies are inferred from the claim text.