×

Method to protect software against unwanted use with a “elementary functions” principle

  • US 7,434,064 B2
  • Filed: 06/25/2002
  • Issued: 10/07/2008
  • Est. Priority Date: 08/01/2001
  • Status: Active Grant
First Claim
Patent Images

1. 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);

    defining;

    a set of elementary functions whose elementary functions are liable to be executed in a unit (6),and a set of elementary commands for said set of elementary functions, said elementary commands being liable to be executed in the data processing system (3) and to trigger the execution in a unit (6), of the elementary functions,constructing exploitation means enabling to transform the blank unit (60) into a unit (6) able to execute the elementary functions of said set, the execution of said elementary functions being triggered by the execution in the data processing system (3), of the elementary commands,creating a protected software (2p);

    by choosing, at least one algorithmic processing which, during the execution of the vulnerable software (2v), uses at least one operand and enables to obtain at least one result,by choosing at least one portion of the source of the vulnerable software (2vs) containing at least one chosen algorithmic processing,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,the second execution part (2peu) executes at least the functionality of at least one chosen algorithmic processing,at least one chosen algorithmic processing is split so that during the execution of the protected software (2p), said algorithmic processing is executed by means of the second execution part (2peu), using elementary functions,for at least one chosen algorithmic processing, elementary commands are integrated to the source of the protected software (2ps), so that during the execution of the protected software (2p), each elementary command is executed by the first execution part (2pes) and triggers in the unit (6), the execution by means of the second execution part (2peu), of an elementary function,and a sequence of the elementary commands is chosen among the set of sequences allowing the execution of the protected software (2p),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 that the elementary commands are executed according to the chosen sequence,and a second object part (2pou) of the protected software (2p), containing the exploitation means, 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 are executed the elementary functions triggered by the first execution part (2pes),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 an elementary command contained in a portion of the first execution part (2pes) imposes it, executing the corresponding elementary function 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), in spite of the request by a portion of the first execution part (2pes) to trigger the execution of an elementary function 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 the process further comprises;

    during the protection phase (P);

    defining;



    at least one software execution characteristic, liable to be monitored at least in part in the unit (6), 

    at least one criterion to abide by for at least one software execution characteristic,detection means (17) to implement in the unit (6) and enabling to detect that at least one software execution characteristic does not abide by at least one associated criterion, andcoercion means (18) to implement in the unit (6) and enabling to inform the data processing system (3) and/or modify the execution of a software, when at least one criterion is not abided by,constructing the exploitation means enabling the unit (6), to also implement the detection means (17) and the coercion means (18), andmodifying the protected software (2p);

    by choosing at least one software execution characteristic to monitor, among the software execution characteristics liable to be monitored,by choosing at least one criterion to abide by for at least one chosen software execution characteristic,by choosing in the source of the protected software (2ps), elementary functions for which at least one chosen software execution characteristic is to be monitored,by modifying at least one chosen portion of the source of the protected software (2ps), this modification being such that during the execution of the protected software (2p), at least one chosen execution characteristic is monitored by means of the second execution part (2peu), and the fact that a criterion is not abided by leads to the data processing system (3) being informed and/or to a modification of the execution of the protected software (2p), andby producing the second object part (2pou) of the protected software (2p) containing the exploitation means also implementing the detection means (17) and the coercion means (18), said second object part (2pou) being such that, after upload to the unit (6) and during the execution of the protected software (2p), at least one software execution characteristic is monitored and the fact that a criterion is not abided by leads to the data processing system (3) being informed and/or to a modification of the execution of the protected software (2p), andduring the usage phase (U);

    in the presence of the unit (6);

    as long as all the criteria corresponding to all the monitored execution characteristics of all the modified portions of the protected software (2p) are abided by, enabling said portions of the protected software (2p) to work nominally and consequently enabling the protected software (2p) to work nominally, andif at least one of the criteria corresponding to a monitored execution characteristic of a portion of the protected software (2p) is not abided by, informing the data processing system (3) of it and/or modifying the functioning of the portion of the protected software (2p), so that the functioning of the protected software (2p) is modified,wherein the process further comprises;

    during the protection phase (P);

    defining;

    as software execution characteristic liable to be monitored, a profile of software usage, andas criterion to abide by, at least one feature of software execution, andmodifying the protected software (2p);



    by choosing as software execution characteristic to monitor at least one profile of software usage, 

    by choosing at least one feature of execution by which at least one chosen profile of usage must abide, and 

    by modifying at least one chosen portion of the source of the protected software (2ps), this modification being such that, during the execution of the protected software (2p), the second execution part (2peu) abides by all the chosen features of execution, andduring the usage phase (U) in the presence of the unit (6), and in the case where it is detected that at least one feature of execution is not abided by, informing the data processing system (3) of it and/or modifying the functioning of the portion of the protected software (2p), so that the functioning of the protected software (2p) is modified,wherein the process further comprises;

    during the protection phase (P);

    defining;

    an instructions set whose instructions are liable to be executed in the unit (6),a set of instructions commands for said instructions set, said instructions commands being liable to be executed in the data processing system (3) and to trigger in the unit (6) the execution of the instructions, as profile of usage, the chaining of the instructions,as feature of execution, an expected chaining for the execution of the instructions,as detection means (17), means enabling to detect that the chaining of the instructions does not correspond to the expected one, andas coercion means (18), means enabling to inform the data processing system (3) and/or to modify the functioning of the portion of protected software (2p) when the chaining of the instructions does not correspond to the expected one,constructing the exploitation means also enabling the unit (6) to execute the instructions of the instructions set, the execution of said instructions being triggered by the execution in the data processing system (3), of the instructions commands, andmodifying the protected software (2p);

    by modifying at least one chosen portion of the source of the protected software (2ps);

    by transforming the elementary functions into instructions,by specifying the chaining by which must abide at least some of the instructions during their execution in the unit (6), andby transforming the elementary commands into instructions commands corresponding to the instructions used, andduring the usage phase (U), in the presence of the unit (6), in the case where it is detected that the chaining of the instructions executed in the unit (6) does not correspond to the expected one, informing the data processing system (3) of it and/or modifying the functioning of the portion of the protected software (2p), so that the functioning of the protected software (2p) is modified, andwherein the process further comprises;

    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,for at least some of the instructions working with registers;

    a part (PF) defining the functionality of the instruction, anda 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, andas coercion means (18), means enabling to modify the result of the instructions, if at least one of the checked equalities is false.

View all claims
  • 5 Assignments
Timeline View
Assignment View
    ×
    ×