Software Study

Method to Protect Software Against Unwanted Use with a "Temporal Dissociation" Principle

Software Patent 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 algorithmic processing and by producing the source of the protected software so that during the execution of the protected software appear several distinct steps, namely 1) the placing of at least one operand at the processing and memorizing unit's disposal 2) the carrying out by the processing and memorizing unit, of the algorithmic processing's functionality on at least said operand 3) and possibly, the placing at the data processing system's disposal of at least one result by the processing and memorizing unit.

Software Patent Claims
1. A method to protect software comprising: storing a first portion of the software on a first unit, the first unit comprising a memory and a processor; storing a second portion of the software on a second unit, the second unit comprising a secure processor and a secure memory, where the second portion of the software is secret and the first and second portions of the software forming a single program; and executing the single formed program by utilizing the first and second portions of the software, wherein the secret second portion of the software comprises at least two computing operations, and wherein portions of the at least two computing operations are interleaved with each other for transmission from the second unit to the first unit and vise versa.

2. The method of claim 1, wherein portions of the second portion of the software are executed by the secure processor and the first portion of the software is executed by the processor of the first unit.

3. The method of claim 1, wherein: the at least two computing operations stored in the second unit comprise a first computing operation and a second computing operation, the first computing operation uses a first variable to obtain a first result variable, the second computing operation uses a second variable to obtain a second result, during the execution of the program: performing a first variable movement by moving the first variable from the first unit into the second unit, performing a second variable movement by moving the second variable from the first unit into the second unit, performing a first result movement by moving the first result variable from the second unit into the first unit, and performing a second result movement by moving the second result variable from the second unit into the first unit, each of said first and second variable movements, said first and second computing operations, and said first and second result movements comprise an operation, the first variable movement, the first result movement, and the first computing operation comprise a first set of operations and the second variable movement, the second result movement and the second computing operation comprises a second set of operations, and at least one operation of one of the sets is interleaved with the operations of the other set.

4. The method according to claim 1, wherein the second unit is a chip medium configured to attach and detach to the first unit.

5. The method according to claim 1, wherein the processor of the second unit is a coprocessor of the processor of the first unit.

6. The method according to claim 1, wherein the second unit is a token.

7. The method according to claim 1, wherein, when the second unit is missing, the program cannot be executed correctly and the software is not completely functional.

8. The method according to claim 1, wherein, when the at least one variable is not provided by the second unit upon request, the program is not executed correctly.

9. The method according to claim 1, wherein the at least two computing operations are elementary functions.

10. The method according to claim 1, further comprising: storing elementary functions that are to be executed in the second unit; and providing commands from the first unit to the second unit to trigger execution of a respective elementary function.

11. The method according to claim 1, further comprising: defining instructions set in which instructions work with registers and use at least one operand for returning a result, wherein at least some of the instructions comprise: a part defining functionality of the instruction, a part defining expected chaining for execution of the instruction and comprising bits fields corresponding to an identification field of the instruction, wherein each of the at least one operand comprises: a flag field and an expected identification field, wherein, for each register used by the instructions set, providing a generated identification field in which the identification of the last instruction which has returned its result in a respective register is automatically memorized, wherein, during the execution of an instruction, for each operand, when required by the flag field, checking the equality of the generated identification field corresponding to the register used by said operand, and the expected identification field of the origin of said operand, and modifying the result of the instructions, if at least one of the checked equalities is false.

12. The method according to claim 1, further comprising selecting a part of the software to form the second portion during operation of creating the protected program.

13. A system to protect software comprising: a first unit comprising a memory and a processor and which stories a first portion of the software; and a second unit comprising a secure processor and a secure memory and which stores a second portion of the software, wherein the second portion of the software is secret, wherein the first and second portions of the software form a single program, wherein the processor executes the single formed program utilizing the second unit, wherein the secret second portion of the software comprises at least two computing operations, and wherein portions of the at least two computing operations are interleaved with each other for transmission from the second unit to the first unit and vise versa.

14. The system according to claim 13, wherein the second unit is a chip medium configured to attach and detach to the first unit.

15. The system according to claim 13, wherein the processor of the second unit is a coprocessor of the processor of the first unit.

16. The system according to claim 13, wherein the second unit is a token.

17. A method to protect software comprising: storing a first portion of the software on a first unit, wherein the first unit comprises a memory and a processor; storing a second portion of the software comprising a first and second computing operations on a second unit, the second unit comprising a secure processor and a secure memory, where the second portion of the software is secret, and where the first and second portions of the software form a single program; and executing the program, wherein, operations performed during the execution comprise: transmitting from the first portion of the software first input for the first computing operation and second input for the second computing operation to the second unit, said first and second computing operations are executed in the second unit, transmitting by the second unit results from the first and second computing operations to the first unit, and wherein operations related to the first computing operation are interleaved with operations related to the second computing operations.

Software Patent Description
BACKGROUND OF THE INVENTION

[0001] This invention concerns the technical domain of data processing systems in the general sense, and is more precisely aimed at the means of protecting software running on said data processing systems against unauthorized usage.

[0002] The subject of the invention aims in particular at the means of protecting software against unauthorized usage, using a processing and memorizing unit, such a unit being commonly materialized by a chip card or a material key on USB port.

[0003] In the technical domain above, the main problem concerns the unauthorized usage of software by users who have not paid the license rights. This illicit use of software causes an obvious loss for software editors, software distributors and/or any person integrating such software in products. To avoid such illicit copies, various solutions, in the state of technology, have been proposed to protect software.

[0004] Thus, a protection solution is known, which makes use of a hardware protection system, such as a physical component named protection key or "dongle". Such a protection key should guarantee that the software executes only in presence of the key. Yet, it must be acknowledged that this solution is ineffective because it presents the inconvenience of being easy to bypass. An ill-intentioned person or a hacker can, with the aid of specialized tools such as disassemblers, delete the control instructions of the protection key. It becomes then possible to make illicit copies corresponding to modified versions of the software able to run without the protection. Moreover, this solution cannot be generalized to all software, inasmuch as it is difficult to connect more than two protection keys to the same system.

BRIEF SUMMARY OF THE INVENTION

[0005] The subject of the invention aims precisely at finding a solution to the aforementioned problems by proposing a process to protect a software against unauthorized usage, using an ad hoc processing and memorizing unit, inasmuch as the presence of such a unit is necessary for the software to be completely functional.

[0006] So as to reach such a goal, the subject of the invention concerns a process to protect, using at least one blank unit including at least processing means and memorization means, a vulnerable software against its unauthorized usage, said vulnerable software being produced from a source and working on a data processing system. The process according to the invention comprises: [0007] .fwdarw. in a protection phase: [0008] creating a protected software: [0009] by choosing, at least one algorithmic processing which, during the execution of the vulnerable software, uses at least one operand and enables to obtain at least one result, [0010] by choosing at least one portion of the source of the vulnerable software containing, at least one chosen algorithmic processing, [0011] by producing a source of the protected software from the source of the vulnerable software, by modifying at least one chosen portion of the source of the vulnerable software to obtain at least one modified portion of the source of the protected software, this modification being such that: [0012] during the execution of the protected software a first execution part is executed in the data processing system and a second execution part is executed in a unit, obtained from the blank unit after upload of information, [0013] the second execution part executes at least the functionality of at least one chosen algorithmic processing, [0014] at least one chosen algorithmic processing is split so that during the execution of the protected software appear by means of the second execution part, several distinct steps, namely: [0015] the placing of at least one operand at the unit's disposal, [0016] the carrying out by the unit, of the algorithmic processing's functionality on at least said operand, [0017] and possibly, the placing at the data processing system's disposal of at least one result by the unit, [0018] for at least one chosen algorithmic processing, steps commands are defined so that during the execution of the protected software, each step command is executed by the first execution part and triggers, in the unit, the execution by means of the second execution part, of a step, [0019] and a sequence of the steps commands is chosen among the set of sequences allowing the execution of the protected software, [0020] and by producing: [0021] a first object part of the protected software, from the source of the protected software, said first object part being such that during the execution of the protected software, appears a first execution part which is executed in the data processing system and whose at least a portion takes into account that the steps commands are executed according to the chosen sequence, [0022] and a second object part of the protected software, said second object part being such that, after being uploaded to the blank unit and during the execution of the protected software, appears the second execution part by means of which the steps triggered by the first execution are executed. [0023] and uploading the second object part to the blank unit, with the intention of obtaining the unit, [0024] .fwdarw. and during a usage phase during which is executed the protected software: [0025] in the presence of the unit and each time a step command contained in a portion of the first execution part imposes it, executing the corresponding step in the unit, so that said portion is executed correctly and that, consequently, the protected software is completely functional, [0026] and in the absence of the unit, in spite of the request by a portion of the first execution part to trigger the execution of a step in the unit, not being able to fulfill said request correctly, so that at least said portion is not executed correctly and that, consequently the protected software is not completely functional.

[0027] According to a preferred embodiment, the process according to the invention comprises: [0028] .fwdarw. during the protection phase: [0029] modifying the protected software: [0030] by choosing at least one variable used in at least one chosen algorithmic processing, which during the execution of the protected software, partially defines the state of the protected software, [0031] by modifying at least one chosen portion of the source of the protected software, this modification being such that during the execution of the protected software, at least one chosen variable or at least one copy of chosen variable resides in the unit, [0032] and by producing: [0033] the first object part of the protected software, said first object part being such that during the execution of the protected software, at least one portion of the first execution part takes also into account that at least one variable or at least one copy of variable resides in the unit, [0034] and the second object part of the protected software, said second object part being such that, after upload to the unit and during the execution of the protected software, appears the second execution part by means of which at least one chosen variable, or at least one copy of chosen variable resides too in the unit, [0035] .fwdarw. and during the usage phase: [0036] in the presence of the unit each time a portion of the first execution part imposes it, using a variable or a copy of variable residing in the unit, so that said portion is executed correctly and that, consequently, the protected software is completely functional, [0037] and in the absence of the unit, in spite of the request by a portion of the first execution part to use a variable or a copy of variable residing in the unit, not being able to fulfill said request correctly, so that at least said portion is not executed correctly and that, consequently the protected software is not completely functional.

[0038] According to another preferred embodiment, the process according to the invention comprises: [0039] .fwdarw. during the protection phase: [0040] defining: [0041] a set of elementary functions whose elementary functions are liable to be executed in the unit, [0042] 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 and to trigger the execution in the unit, of the elementary functions, [0043] constructing exploitation means enabling the unit to execute the elementary functions of said set, the execution of said elementary functions being triggered by the execution in the data processing system, of the elementary commands, [0044] and modifying the protected software: [0045] by modifying at least one chosen portion of the source of the protected software, this modification being such that: [0046] at least one step is split so that during the execution of the protected software, said step is executed by means of the second execution part, using elementary functions, [0047] for at least one split step, elementary commands are integrated to the source of the protected software, so that during the execution of the protected software, each elementary command is executed by the first execution part and triggers in the unit, the execution by means of the second execution part, of an elementary function, [0048] and a sequence of the elementary commands is chosen among the set of sequences allowing the execution of the protected software, [0049] and by producing: [0050] the first object part of the protected software, said first object part being such that during the execution of the protected software, at least one portion of the first execution part also executes the elementary commands according to the chosen sequence, [0051] and the second object part of the protected software also containing the exploitation means, said second object part being such that, after upload to the unit and during the execution of the protected software, appears the second execution part by means of which are also executed the elementary functions triggered by the first execution part, [0052] .fwdarw. and during the usage phase: [0053] in the presence of the unit and each time an elementary command contained in a portion of the first execution part imposes it, executing the corresponding elementary function in the unit, so that said portion is executed correctly and that, consequently, the protected software is completely functional, [0054] and in the absence of the unit, in spite of the request by a portion of the first execution part, to trigger the execution of an elementary function in the unit, not being able to fulfill said request correctly, so that at least said portion is not executed correctly and that, consequently, the protected software is not completely functional.

[0055] According to another preferred embodiment, the process according to the invention comprises: [0056] .fwdarw. during the protection phase: [0057] defining: [0058] at least one software execution characteristic, liable to be monitored at least in part in the unit, [0059] at least one criterion to abide by for at least one software execution characteristic, [0060] detection means to implement in the unit and enabling to detect that at least one software execution characteristic does not abide by at least one associated criterion, [0061] and coercion means to implement in the unit and enabling to inform the data processing system and/or modify the execution of a software, when at least one criterion is not abided by, [0062] constructing the exploitation means enabling the unit, to also implement the detection means and the coercion means, [0063] and modifying the protected software: [0064] by choosing at least one software execution characteristic to monitor, among the software execution characteristics liable to be monitored, [0065] by choosing at least one criterion to abide by for at least one chosen software execution characteristic, [0066] by choosing in the source of the protected software, elementary functions for which at least one chosen software execution characteristic is to be monitored, [0067] by modifying at least one chosen portion of the source of the protected software, this modification being such that during the execution of the protected software, at least one chosen execution characteristic is monitored by means of the second execution part, and the fact that a criterion is not abided by leads to the data processing system being informed and/or to a modification of the execution of the protected software, [0068] and by producing the second object part of the protected software containing the exploitation means also implementing the detection means and the coercion means, said second object part being such that, after upload to the unit and during the execution of the protected software, at least one software execution characteristic is monitored and the fact that a criterion is not abided by leads to the data processing system being informed and/or to a modification of the execution of the protected software, [0069] .fwdarw. and during the usage phase: [0070] in the presence of the unit: [0071] as long as all the criteria corresponding to all the monitored execution characteristics of all the modified portions of the protected software are abided by, enabling said portions of the protected software to work nominally and consequently enabling the protected software to work nominally, [0072] and if at least one of the criteria corresponding to a monitored execution characteristic of a portion of the protected software is not abided by, informing the data processing system of it and/or modifying the functioning of the portion of the protected software, so that the functioning of the protected software is modified.

[0073] According to a variant embodiment, the process according to the invention comprises: [0074] .fwdarw. during the protection phase: [0075] defining: [0076] as software execution characteristic liable to be monitored, a variable of measurement of the usage of a functionality of a software, [0077] as criterion to abide by, at least one threshold associated to each variable of measurement, [0078] and actualization means enabling to update at least one variable of measurement, [0079] constructing the exploitation means enabling the unit to also implement the actualization means, [0080] and modifying the protected software: [0081] by choosing as software execution characteristic to monitor, at least one variable of measurement of the usage of at least one functionality of a software, [0082] by choosing: [0083] at least one functionality of the protected software whose usage is liable to be monitored using a variable of measurement, [0084] at least one variable of measurement used to quantify the usage of said functionality, [0085] at least one threshold associated to a chosen variable of measurement corresponding to a limit of usage of said functionality, [0086] and at least one method of update of a chosen variable of measurement depending on the usage of said functionality, [0087] and by modifying at least one chosen portion of the source of the protected software, this modification being such that, during the execution of the protected software, the variable of measurement is actualized by means of the second execution part depending on the usage of said functionality, and at least one threshold crossing is taken into account, [0088] .fwdarw. and during the usage phase, in the presence of the unit, and in the case where at least one threshold crossing corresponding to at least one limit of usage is detected, informing the data processing system of it and/or modifying the functioning of the portion of the protected software, so that the functioning of the protected software is modified.

[0089] According to a variant embodiment, the process according to the invention comprises: [0090] .fwdarw. during the protection phase: [0091] defining: [0092] for at least one variable of measurement, several associated thresholds, [0093] and different coercion means corresponding to each of said thresholds, [0094] and modifying the protected software: [0095] by choosing in the source of the protected software, at least one chosen variable of measurement to which must be associated several thresholds corresponding to different limits of usage of the functionality, [0096] by choosing at least two thresholds associated to the chosen variable of measurement, [0097] and by modifying at least one chosen portion of the source of the protected software, this modification being such that, during the execution of the protected software, the crossings of the various thresholds are taken into account differently, by means of the second execution part, [0098] .fwdarw. and during the usage phase: [0099] in the presence of the unit: [0100] in the case where the crossing of a first threshold is detected, enjoining the protected software not to use the corresponding functionality anymore, [0101] and in the case where the crossing of a second threshold is detected, making ineffective the corresponding functionality and/or at least one portion of the protected software.

[0102] According to a variant embodiment, the process according to the invention comprises: [0103] .fwdarw. during the protection phase: [0104] defining refilling means enabling to credit at least one software functionality monitored by a variable of measurement with at least one additional usage, [0105] constructing the exploitation means also allowing the unit to implement the refilling means, [0106] and modifying the protected software: [0107] by choosing in the source of the protected software, at least one chosen variable of measurement enabling to limit the usage of a functionality and which must be able to be credited with at least one additional usage, [0108] and by modifying at least one chosen portion, this modification being such that during a phase called of refilling, at least one additional usage of at least one functionality corresponding to a chosen variable of measurement can be credited, [0109] .fwdarw. and during the phase of refilling: [0110] reactualizing at least one chosen variable of measurement and/or at least one associated threshold, so as to allow at least one additional usage of the functionality.

[0111] According to a variant embodiment, the process according to the invention comprises: [0112] .fwdarw. during the protection phase: [0113] defining: [0114] as software execution characteristic liable to be monitored, a profile of software usage, [0115] and as criterion to abide by, at least one feature of software execution, [0116] and modifying the protected software: [0117] by choosing as software execution characteristic to monitor at least one profile of software usage, [0118] by choosing at least one feature of execution by which at least one chosen profile of usage must abide, [0119] and by modifying at least one chosen portion of the source of the protected software, this modification being such that, during the execution of the protected software, the second execution part abides by all the chosen features of execution, [0120] .fwdarw. and during the usage phase in the presence of the unit, and in the case where it is detected that at least one feature of execution is not abided by, informing the data processing system of it and/or modifying the functioning of the portion of the protected software, so that the functioning of the protected software is modified.

[0121] According to a variant embodiment, the process according to the invention comprises: [0122] .fwdarw. during the protection phase: [0123] defining: [0124] an instructions set whose instructions are liable to be executed in the unit, [0125] a set of instructions commands for said instructions set, said instructions commands being liable to be executed in the data processing system and to trigger in the unit the execution of the instructions, [0126] as profile of usage, the chaining of the instructions, [0127] as feature of execution, an expected chaining for the execution of the instructions, [0128] as detection means, means enabling to detect that the chaining of the instructions does not correspond to the expected one, [0129] and as coercion means, means enabling to inform the data processing system and/or to modify the functioning of the portion of protected software when the chaining of the instructions does not correspond to the expected one, [0130] constructing the exploitation means also enabling the unit to execute the instructions of the instructions set, the execution of said instructions being triggered by the execution in the data processing system, of the instructions commands, [0131] and modifying the protected software: [0132] by modifying at least one chosen portion of the source of the protected software: [0133] by transforming the elementary functions into instructions, [0134] by specifying the chaining by which must abide at least some of the instructions during their execution in the unit, [0135] and by transforming the elementary commands into instructions commands corresponding to the instructions used, [0136] .fwdarw. and during the usage phase, in the presence of the unit, in the case where it is detected that the chaining of the instructions executed in the unit does not correspond to the expected one, informing the data processing system of it and/or modifying the functioning of the portion of the protected software, so that the functioning of the protected software is modified.

[0137] According to a variant embodiment, the process according to the invention comprises: [0138] .fwdarw. during the protection phase: [0139] defining: [0140] 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, [0141] for at least some of the instructions working with registers: [0142] a part defining the functionality of the instruction, [0143] and a part defining the expected chaining for the execution of the instructions and including bits fields corresponding to: [0144] an identification field of the instruction, [0145] and for each operand of the instruction: [0146] a flag field, [0147] and an expected identification field of the operand, [0148] for each register belonging to the exploitation means and used by the instructions set, a generated identification field in which is automatically memorized the identification of the last instruction which has returned its result in said register, [0149] as detection means, means enabling, during the execution of an instruction, for each operand, when the flag field imposes it, to check the equality of the generated identification field corresponding to the register used by said operand, and the expected identification field of the origin of said operand, [0150] and as coercion means, means enabling to modify the result of the instructions, if at least one of the checked equalities is false.

[0151] According to another preferred embodiment, the process according to the invention comprises: [0152] .fwdarw. during the protection phase: [0153] defining: [0154] as a triggering command, an elementary command or an instruction command, [0155] as a dependent function, an elementary function or an instruction, [0156] as an order, at least one argument for a triggering command, corresponding at least in part to the information transmitted by the data processing system to the unit, so as to trigger the execution of the corresponding dependent function, [0157] a method of renaming of the orders enabling to rename the orders so as to obtain triggering commands with renamed orders, [0158] and restoring means designed to be used in the unit during the usage phase, and enabling to restore the dependent function to execute, from the renamed order, [0159] constructing exploitation means enabling the unit to also implement the restoring means, [0160] and modifying the protected software: [0161] by choosing in the source of the protected software, triggering commands, [0162] by modifying at least one chosen portion of the source of the protected software by renaming the orders of the chosen triggering commands, so as to conceal the identity of the corresponding dependent functions, [0163] and by producing: [0164] the first object part of the protected software, said first object part being such that during the execution of the protected software, the triggering commands with renamed orders are executed, [0165] and the second object part of the protected software containing the exploitation means also implementing the restoring means, said second object part being such that, after upload to the unit and during the execution of the protected software, the identity of the dependent functions whose execution is triggered by the first execution part is restored by means of the second execution part, and the dependent functions are executed by means of the second execution part, [0166] .fwdarw. and during the usage phase: [0167] in the presence of the unit and each time a triggering command with renamed order, contained in a portion of the first execution part imposes it, restoring in the unit, the identity of the corresponding dependent function and executing it, so that said portion is executed correctly and that, consequently, the protected software is completely functional, [0168] and in the absence of the unit, in spite of the request by a portion of the first execution part, to trigger the execution of a dependent function in the unit, not being able to fulfill said request correctly, so that at least said portion is not executed correctly and that, consequently, the protected software is not completely functional.

[0169] According to a variant embodiment, the process according to the invention comprises: [0170] .fwdarw. during the protection phase: [0171] defining for at least one dependent function, a family of dependent functions algorithmically equivalent, but triggered by triggering commands whose renamed orders are different, [0172] and modifying the protected software: [0173] by choosing, in the source of the protected software at least one triggering command with renamed order, [0174] and by modifying at least one chosen portion of the source of the protected software by replacing at least the renamed order of one chosen triggering command with renamed order, with another renamed order, triggering a dependent function of the same family.

[0175] According to a variant embodiment, the process according to the invention comprises: [0176] .fwdarw. during the protection phase, defining, for at least one dependent function, a family of algorithmically equivalent dependent functions: [0177] by concatenating a field of noise to the information defining the functional part of the dependent function to execute in the unit, [0178] or by using the identification field of the instruction and the expected identification fields of the operands.

[0179] According to a variant embodiment, the process according to the invention comprises: [0180] .fwdarw. during the protection phase: [0181] defining: [0182] as method of renaming of the orders, a ciphering method to cipher the orders, [0183] and as restoring means, means implementing a deciphering method to decipher the renamed orders and thus restore the identity of the dependent functions to execute in the unit.

[0184] According to another preferred embodiment, the process according to the invention comprises: [0185] .fwdarw. during the protection phase: [0186] modifying the protected software: [0187] by choosing, in the source of the protected software, at least one conditional branch carried out in at least one chosen algorithmic processing, [0188] by modifying at least one chosen portion of the source of the protected software, this modification being such that during the execution of the protected software, the functionality of at least one chosen conditional branch is executed, by means of the second execution part, in the unit, [0189] and by producing: [0190] the first object part of the protected software, said first object part being such that during the execution of the protected software, the functionality of at least one chosen conditional branch is executed in the unit, [0191] and the second object part of the protected software, said second object part being such that, after upload to the unit and during the execution of the protected software, appears the second execution part by means of which the functionality of at least one chosen conditional branch is executed, [0192] .fwdarw. and during the usage phase: [0193] in the presence of the unit and each time a portion of the first execution part imposes it, executing the functionality of at least one conditional branch in the unit, so that said portion is executed correctly and that, consequently, the protected software is completely functional, [0194] and in the absence of the unit and in spite of the request by a portion of the first execution part to execute the functionality of a conditional branch in the unit, not being able to fulfill said request correctly, so that at least said portion is not executed correctly and that consequently, the protected software is not completely functional.

[0195] According to a variant embodiment, the process according to the invention comprises, during the protection phase, modifying the protected software: [0196] by choosing, in the source of the protected software, at least one series of chosen conditional branches, [0197] by modifying at least one chosen portion of the source of the protected software, this modification being such that during the execution of the protected software, the overall functionality of at least one chosen series of conditional branches is executed, by means of the second execution part, in the unit, [0198] and by producing: [0199] the first object part of the protected software, said first object part being such that during the execution of the protected software, the functionality of at least one chosen series of conditional branches is executed in the unit, [0200] and the second object part of the protected software, said second object part being such that, after upload to the unit and during the execution of the protected software, appears the second execution part by means of which the overall functionality of at least one chosen series of conditional branches is executed.

[0201] The process according to the invention thus enables to protect usage of a software by using a processing and memorizing unit which presents the characteristic of containing a part of the software being executed. It follows that any derived version of the software attempting to work without the processing and memorizing unit imposes to recreate the part of the software contained in the processing and memorizing unit during the execution, or else said derived version of the software will not be completely functional.

BRIEF DESCRIPTION OF THE DRAWINGS

[0202] Various other characteristics emerge from the description made below in reference to the appended diagrams which show, as non-limiting examples, embodiments and implementations of the subject of the invention.

[0203] FIGS. 10 and 11 are functional blocks diagrams illustrating the various representations of a software respectively not protected and protected by the process in accordance with the invention.

[0204] FIGS. 20 to 22 illustrate as examples, various embodiments of an apparatus implementing the process in accordance with the invention.

[0205] FIGS. 30 and 31 are functional blocks diagrams making explicit the general principle of the process in accordance with the invention.

[0206] FIGS. 40 to 43 are diagrams illustrating the protection process according to the invention implementing the principle of protection by variable. FIGS. 50 to 54 are diagrams illustrating the protection process according to the invention implementing the principle of protection by temporal dissociation.

[0207] FIGS. 60 to 64 are diagrams illustrating the protection process according to the invention implementing the principle of protection by elementary functions.

[0208] FIGS. 70 to 74 are diagrams illustrating the protection process according to the invention implementing the principle of protection by detection and coercion.

[0209] FIGS. 80 to 85 are diagrams illustrating the protection process according to the invention implementing the principle of protection by par renaming.

[0210] FIGS. 90 to 92 are diagrams illustrating the protection process according to the invention implementing the principle of protection by conditional branch.

[0211] FIG. 100 is a diagram illustrating the different phases of implementation of the subject of the invention.

[0212] FIG. 110 illustrates an embodiment of a system allowing the implementation of the construction stage of the protection phase in accordance with the invention.

[0213] FIG. 120 illustrates an embodiment of a pre-customization unit used in the protection process in accordance with the invention.

[0214] FIG. 130 illustrates an embodiment of a system allowing the implementation of the tools making stage of the protection phase in accordance with the invention.

[0215] FIG. 140 illustrates an embodiment of a system allowing the implementation of the protection process according to the invention.

[0216] FIG. 150 illustrates an embodiment of a customization unit used in the protection process in accordance with the invention.

DETAILED DESCRIPTION OF THE INVENTION

[0217] In the rest of the description, the following definitions will be used: [0218] A data processing system 3 is a system able to execute a program. [0219] A processing and memorizing unit is a unit able: [0220] to accept data provided by a data processing system 3, [0221] to return data to the data processing system 3, [0222] to store data at least partly in secret and to retain at least a part of said data even if the unit is switched off, [0223] and to carry out algorithmic processing on said data, part or all of the result being secret. [0224] A unit 6 is a processing and memorizing unit implementing the process according to the invention. [0225] A blank unit 60 is a unit which does not implement the process according to the invention, but which can receive data transforming it into a unit 6. [0226] A pre-customized unit 66 is a blank unit 60 which has received part of data enabling it, after reception of supplementary data, to be transformed into a unit 6. [0227] The upload of information to a blank unit 60 or a pre-customized unit 66 corresponds to a transfer of information to the blank unit 60 or the pre-customized unit 66, and to a storage of said transferred information. The transfer can possibly include a change of the information format. [0228] A variable, a function or data contained in the data processing system 3 will be indicated by an uppercase letter, while a variable, a function or data contained in the unit 6 will be indicated by a lowercase letter. [0229] A "protected software", is a software which has been protected by at least one of the principles of protection implemented by the process in accordance with the invention. [0230] A "vulnerable software", is a software which has not been protected by any principle of protection implemented by the process in accordance with the invention. [0231] In the case where differentiation between a vulnerable software and a protected software is not important, the term "software" is used. [0232] A software has various representations depending on the instant considered in its life cycle: [0233] a source representation, [0234] an object representation, [0235] a distribution, [0236] or a dynamic representation. [0237] A source representation of a software is understood as a representation which after transformation, results in an object representation. A source representation can offer different levels, from a conceptual abstract level to a level executable directly by a data processing system or a processing and memorizing unit. [0238] An object representation of a software corresponds to a level of representation which after transfer to a distribution and upload to a data processing system or a processing and memorizing unit, can be executed. It can be, for instance, a binary code, an interpreted code, etc. [0239] A distribution is a physical or virtual support containing the object representation, said distribution having to be put at the user's disposal to enable them to use the software. [0240] A dynamic representation corresponds to the execution of the software from its distribution. [0241] A portion of a software corresponds to some part of the software and can, for instance correspond, to one or several consecutive or not instructions, and/or one or several consecutive or not functional blocks, and/or one or several functions, and/or one or several subprograms, and/or one or several modules. A portion of a software can also correspond to all of said software.

[0242] FIGS. 10 and 11 illustrate the various representations respectively of a vulnerable software 2v in the general sense, and of a protected software 2p protected according to the process in accordance with the invention.

[0243] FIG. 10 illustrates various representations of a vulnerable software 2v appearing during its life cycle. The vulnerable software 2v can thus appear under any of the following representations: [0244] a source representation 2vs, [0245] an object representation 2vo, [0246] a distribution 2vd. Said distribution can have commonly the form of a physical distribution medium such as a CDROM or the form of files distributed through a network (GSM, Internet, etc.), [0247] or a dynamic representation 2ve corresponding to the execution of the vulnerable software 2v on a data processing system 3 of any known type, which classically includes, at least one processor 4.

[0248] FIG. 11 illustrates various representations of a protected software 2p appearing during its life cycle. The protected software 2p can thus appear under any of the following representations: [0249] a source representation 2ps including a first source part intended for the data processing system 3 and a second source part intended for the unit 6, part of said source parts can commonly be contained in common files, [0250] an object representation 2po including a first object part 2pos intended for the data processing system 3 and a second object part 2pou intended for the unit 6, [0251] a distribution 2pd including: [0252] a first distribution part 2pds containing the first object part 2pos, said first distribution part 2pds being intended for the data processing system 3 and which can commonly have the form of a physical distribution medium such as a CDROM or the form of files distributed through a network (GSM, Internet, etc.), [0253] and a second distribution part 2pdu having the form: [0254] of at least one pre-customized unit 66 to which a part of the second object part 2pou has been uploaded and for which the user has to finish the customization by uploading supplementary data so as to obtain a unit 6, said supplementary data being obtained, for instance, by download through a network, [0255] or of at least one unit 6 to which the second object part 2pou has been uploaded, [0256] or a dynamic representation 2pe corresponding to the execution of the protected software 2p. Said dynamic representation 2pe includes a first execution part 2pes which is executed in the data processing system 3 and an second execution part 2peu which is executed in the unit 6.

[0257] In the case where the differentiation between the different representations of the protected software 2p is not important, the expressions first part of the protected software and second part of the protected software shall be used.

[0258] The implementation of the process according to the invention in accordance with the dynamic representation of FIG. 11, uses an apparatus 1p including a data processing system 3 linked up by a link 5 to a unit 6. The data processing system 3 is of any type and includes, classically, at least one processor 4. The data processing system 3 can be a computer or be part, for instance, of various machines, devices, fixed or mobile products, or vehicles in the general sense. The link 5 can be realized in any possible way, such as for instance a serial link, a USB bus, a radio link, an optical link, a network link or a direct electric connection to a circuit of data processing system 3, etc. It should be observed that the unit 6 can possibly be physically located inside the same integrated circuit than the processor 4 of the data processing system 3. In this case, the unit 6 can be considered as a co-processor in relation to the processor 4 of the data processing system 3 and the link 5 is internal to the integrated circuit.

[0259] FIGS. 20 to 22 show in an illustrative and non-limiting manner, various embodiments of the apparatus 1p allowing the implementation of the protection process in accordance with the invention.

[0260] In the embodiment illustrated in FIG. 20, the protection apparatus 1p includes, as a data processing system 3, a computer and, as a unit 6, a chip card 7 and its interface 8 commonly called card reader. The computer 3 is linked up to the unit 6 by a link 5. During the execution of the protected software 2p, the first execution part 2pes which is executed in the computer 3 and the second execution part 2peu which is executed in the chip card 7 and its interface 8, must both be functional so that the protected software 2p is completely functional.

[0261] In the embodiment illustrated in FIG. 21, the protection apparatus 1p equips a product 9 in the general sense, including various components 10 adapted to the function(s) assumed by such a product 9. The protection apparatus 1p includes, on the one hand, a data processing system 3 embedded in the product 9 and, on the other hand, a unit 6 associated with the product 9. So that the product 9 is completely functional, the protected software 2p, must be completely functional. Thus, during the execution of the protected software 2p, the first execution part 2pes which is executed in the data processing system 3 and the second execution part 2peu which is executed in the unit 6, must both be functional. Said protected software 2p enables therefore indirectly, to protect against unauthorized usage, the product 9 or one of its functionalities. For instance, the product 9 can be an installation, a system, a machine, a toy, a piece of domestic appliances, a phone, etc.

[0262] In the embodiment illustrated in FIG. 22, the protection apparatus 1p includes several computers, as well as part of a communication network. The data processing system 3 is a first computer linked up by a link 5 of network type, to a unit 6 constituted by a second computer. For the implementation of the invention, the second computer 6 is used as a license server for a protected software 2p. During the execution of the protected software 2p, the first execution part 2pes which is executed in the first computer 3 and the second execution part 2peu which is executed in the second computer 6, must both be functional so that the protected software 2p is completely functional.

[0263] FIG. 30 enables to make explicit more precisely, the protection process in accordance with the invention. It should be observed that a vulnerable software 2v, is considered as being executed totally in a data processing system 3. On the other hand, in the case of the implementation of a protected software 2p, the data processing system 3 includes transfer means 12 linked up by the link 5, to transfer means 13 being part of the unit 6 enabling to establish communication between the first execution part 2pes and the second execution part 2peu of the protected software 2p.

[0264] It must be considered that the transfer means 12, 13 are of software and/or hardware nature and are capable of providing and, possibly, optimizing the data communication between the data processing system 3 and the unit 6. Said transfer means 12, 13 are adapted to enable to have at one's disposal a protected software 2p which is, preferably, independent from the type of link 5 used. Said transfer means 12, 13 are not part of the subject of the invention and are not described more precisely as they are well known by the Man of art. The first part of the protected software 2p includes commands. During the execution of the protected software 2p, the execution of said commands by the first execution part 2pes enables the communication between the first execution part 2pes and the second execution part 2peu. In the rest of the description, said commands are represented by IN, OUT or TRIG.

[0265] As illustrated in FIG. 31, to allow the implementation of the second execution part 2peu of the protected software 2p, the unit 6 includes protection means 14. The protection means 14 include memorization means 15 and processing means 16.

[0266] For the sake of simplification in the rest of the description, it is chosen to consider, during the execution of the protected software 2p, the presence of the unit 6 or the absence of the unit 6. In actual fact, a unit 6 providing protection means 14 not adapted to the execution of the second execution part 2peu of the protected software 2p is also considered as missing, each time the execution of the protected software 2p is not correct. In other words: [0267] a unit 6 physically present and including protection means 14 adapted to the execution of the second execution part 2peu of the protected software 2p, is always considered as present, [0268] a unit 6 physically present but including protection means 14 not adapted, i.e. not allowing the correct implementation of the second execution part 2peu of the protected software 2p is considered as present, when it works correctly, and as missing when it does not work correctly, [0269] and a unit 6 physically missing is always considered as missing.

[0270] In the case where the unit 6 is constituted by a chip card 7 and its interface 8, the transfer means 13 are split into two parts, one being on the interface 8 and the other one being on the chip card 7. In this embodiment, the absence of the chip card 7 is considered as equivalent to the absence of the unit 6. In other words, in the absence of the chip card 7 and/or its interface 8, the protection means 14 are not accessible and do not enable the execution of the second execution part 2peu of the protected software 2p, so much so that the protected software 2p is not completely functional.

[0271] In accordance with the invention, the protection process aims at implementing a principle of protection, called by "temporal dissociation", a description of which is carried out in relation to FIGS. 50 to 54.

[0272] For the implementation of the principle of protection by temporal dissociation, is chosen, in the source of the vulnerable software 2vs, at least one algorithmic processing using at least one operand and returning at least one result. Is also chosen at least one portion of the source of the vulnerable software 2vs containing at least one chosen algorithmic processing.

[0273] At least one chosen portion of the source of the vulnerable software 2vs is then modified, so as to obtain the source of the protected software 2ps. This modification is such that, among others: [0274] during the execution of the protected software 2p, at least one portion of the first execution part 2pes, which is executed in the data processing system 3, takes into account that the functionality of at least one chosen algorithmic processing is executed in the unit 6, [0275] during the execution of the protected 2p, the second execution part 2peu, which is executed in the unit 6, executes at least the functionality of at least one chosen algorithmic processing, [0276] during the execution of the protected software 2p, each chosen algorithmic processing is split into several distinct steps, namely: [0277] step 1: the placing of the operand(s) at the unit 6's disposal, [0278] step 2: the carrying out in the unit 6, of the functionality of the chosen algorithmic processing using said operand(s), [0279] and step 3: possibly, the placing of the result of the chosen algorithmic processing at the data processing system 3's disposal by the unit 6, [0280] steps commands are defined to trigger the execution of the steps, [0281] and a sequence of the steps commands is chosen among the set of sequences allowing the execution of the protected software 2p.

[0282] The first execution part 2pes of the protected software 2p, which is executed in the data processing system 3, executes the steps commands, triggering in the unit 6, the execution by means of the second execution part 2peu, of each of the previously defined steps.

[0283] FIG. 50 illustrates an example of execution of a vulnerable software 2v. In this example, appears, during the execution of the vulnerable software 2v, in the data processing system 3, at a certain time instant, the calculation of Z.rarw.F(X, Y) corresponding to the assignment to a variable Z, of the result of an algorithmic processing represented by a function F and using operands X and Y.

[0284] FIG. 51 illustrates an example of implementation of the invention for which the algorithmic processing chosen in FIG. 50 is remoted in the unit 6. In this example, during the execution in the data processing system 3 of the first execution part 2pes of the protected software 2p and in the presence of the unit 6, appear: [0285] at time instant t.sub.1, the step 1, i.e. the execution of a step command CE.sub.1 triggering the transfer of data X and Y from the data processing system 3 to the memorization zones respectively x and y located in the memorization means 15 of the unit 6, said step command CE, being represented by OUT(x, X), OUT(y, Y), [0286] at time instant t.sub.2, the step 2, i.e. the execution of a step command CE.sub.2, triggering in the unit 6, the execution by means of the second execution part 2peu, of the function f, said function f being algorithmically equivalent to the function F and said step command CE.sub.2 being represented by TRIG(f). More precisely, the execution of the step command CE.sub.2 leads to the execution of the function f which uses the contents of the memorization zones x and y and returns its result to a memorization zone z of the unit 6, [0287] and at time instant t.sub.3, the step 3, i.e. the execution of a step command CE.sub.3 triggering the transfer of the result of the function f, contained in the memorization zone z of the unit 6 to the data processing system 3 so as to assign it to the variable Z, said step command CE.sub.3 being represented by IN(z).

[0288] In the illustrated example, the steps 1 to 3 are executed successively. It should be observed that two improvements can be effected: [0289] The first improvement concerns the case where several algorithmic processings are remoted in the unit 6 and at least the result of one algorithmic processing is used by another algorithmic processing. In this case, certain transfer steps can possibly be removed. [0290] The second improvement aims at opting for a pertinent sequence of the steps commands among the set of sequences allowing the execution of the protected software 2p. In this respect, it is preferable to chose a sequence of the steps commands which temporally dissociates the execution of the steps, by intercalating between them, portions of code executed in the data processing system 3 and including or not steps commands used to determine other data. FIGS. 52 and 53 illustrate the principle of such an embodiment.

[0291] FIG. 52 shows an example of execution of a vulnerable software 2v. In this example, appears, during the execution of the vulnerable software 2v, in the data processing system 3, the execution of two algorithmic processings leading to the determination of Z and Z', such that Z.rarw.F (X, Y) and Z'.rarw.F' (X', Y').

[0292] FIG. 53 illustrates an example of implementation of the process according to the invention for which the two algorithmic processings chosen in FIG. 52 are remoted in the unit 6. According to such an example, during the execution in the data processing system 3, of the first execution part 2pes of the protected software 2p, and in the presence of the unit 6, appears, as explained above, the execution of steps commands CE.sub.1, CE.sub.2, CE.sub.3 corresponding to the determination of Z and of steps commands CE'.sub.1, CE'.sub.2, CE'.sub.3 corresponding to the determination of Z'. As illustrated, the steps commands CE.sub.1 to CE.sub.3 are not executed consecutively inasmuch as steps commands CE'.sub.1 to CE'.sub.3, as well as other code portions are intercalated. In the example, the following sequence is thus carried out: CE.sub.1, portion of intercalated code, CE.sub.2, portion of intercalated code, CE'.sub.1, portion of intercalated code, CE'.sub.2, portion of intercalated code, CE'.sub.3, portion of intercalated code, CE.sub.3.

[0293] It should be observed that, during the execution of the protected software 2p, in the presence of the unit 6, each time a step command contained in a portion of the first execution part 2pes of the protected software 2p imposes it, the corresponding step is executed in the unit 6. Thus, it appears, that in the presence of the unit 6, said portion is executed correctly and that, consequently, the protected software 2p is completely functional.

[0294] FIG. 54 illustrates an example of an attempt of execution of the protected software 2p, when the unit 6 is missing. In this example, during the execution in the data processing system 3 of the first execution part 2pes of the protected software 2p: [0295] at time instant t.sub.1, the execution of the step command OUT(x, X), OUT(y, Y) cannot trigger the transfer of data X and Y to the respective memorization zones x and y taking into account the absence of the unit 6, [0296] at time instant t.sub.2, the execution of the step command TRIG(f) cannot trigger the execution of the function f, taking into account the absence of the unit 6, [0297] and at time instant t.sub.3, the execution of the step command IN(z) cannot trigger the transfer of the result of the function f, taking into account the absence of the unit 6.

[0298] It therefore appears that in the absence of the unit 6, at least one request by a portion of the first execution part 2pes to trigger the execution of a step in the unit 6, cannot be fulfilled correctly, so that at least said portion is not executed correctly and that, consequently, the protected software 2p is not completely functional.

[0299] According to another advantageous characteristic of the invention, the protection process aims at implementing a principle of protection called by <<variable>> a description of which is carried out in relation to FIGS. 40 to 43.

[0300] For the implementation of the principle of protection by variable, is chosen in the source of the vulnerable software 2vs at least one variable which, during the execution of the vulnerable software 2v, partially defines its state. By state of a software, must be understood the set of pieces of information, at a given moment, necessary to the complete execution of said software, so much so that the absence of such a chosen variable prejudices the complete execution of said software. Is also chosen at least one portion of the source of the vulnerable software 2vs containing at least one chosen variable.

[0301] At least one chosen portion of the source of the vulnerable software 2vs is then modified, so as to obtain the source of the protected software 2ps. This modification is such that during the execution of the protected software 2p, at least one portion of the first execution part 2pes which is executed in the data processing system 3, takes into account that at least one chosen variable or at least one copy of chosen variable resides in the unit 6.

[0302] FIG. 40 illustrates an example of execution of a vulnerable software 2v. In this example, during the execution of the vulnerable software 2v in the data processing system 3, appear: [0303] at time instant t.sub.1, the assignment of the data X to the variable V.sub.1, represented by V.sub.1.rarw.X, [0304] at time instant t.sub.2, the assignment of the value of the variable V.sub.1 to the variable Y, represented by Y.rarw.V.sub.1, [0305] and at time instant t.sub.3, the assignment of the value of the variable V.sub.1 to the variable Z, represented by Z.rarw.V.sub.1.

[0306] FIG. 41 illustrates an example of a first form of implementation of the invention for which the variable resides in the unit 6. In this example, during the execution in the data processing system 3 of the first execution part 2pes of the protected software 2p, and in presence of the unit 6, appear: [0307] at time instant ti, the execution of a transfer command triggering the transfer of the data X from the data processing system 3 to the variable v.sub.1 located in the memorization means 15 of the unit 6, said transfer command being represented by OUT(v.sub.1, X) and corresponding in the end to the assignment of the data X to the variable v.sub.1, [0308] at time instant t.sub.2, the execution of a transfer command triggering the transfer of the value of the variable v.sub.1 residing in the unit 6 to the data processing system 3 so as to assign it to the variable Y, said transfer command being represented by IN(v.sub.1) and corresponding in the end to the assignment of the value of the variable v.sub.1 to the variable Y, [0309] and at time instant t.sub.3, the execution of a transfer command triggering the transfer of the value of the variable v.sub.1 residing in the unit 6 to the data processing system 3 so as to assign it to the variable Z, said transfer command being represented by IN(v.sub.1) and corresponding in the end to the assignment of the value of the variable v.sub.1 to the variable Z.

[0310] It should be observed that during the execution of the protected software 2p, at least one variable resides in the unit 6. Thus, when a portion of the first execution part 2pes of the protected software 2p imposes it, and in the presence of the unit 6, the value of said variable residing in the unit 6 is transferred to the data processing system 3 to be used by the first execution part 2pes of the protected software 2p, so much so that said portion is executed correctly and that, consequently, the protected software 2p is completely functional.

[0311] FIG. 42 illustrates an example of a second form of implementation of the invention for which a copy of the variable resides in the unit 6. In this example, during the execution in the data processing system 3 of the first execution part 2pes of the protected software 2p, and in the presence of the unit 6, appear: [0312] at time instant t.sub.1, the assignment of the data X to the variable V.sub.1 located in the data processing system 3, as well as the execution of a transfer command triggering the transfer of the data X from the data processing system 3 to the variable v.sub.1 located in the memorization means 15 of the unit 6, said transfer command being represented by OUT(v.sub.1, X), [0313] at time instant t.sub.2, the assignment of the value of the variable V.sub.1 to the variable Y, [0314] and at time instant t.sub.3, the execution of a transfer command triggering the transfer of the value of the variable v.sub.1 residing in the unit 6 to the data processing system 3 so as to affect it to the variable Z, said transfer command being represented by IN(v.sub.1).

[0315] It should be observed that during the execution of the protected software 2p, at least one copy of a variable resides in the unit 6. Thus, when a portion of the first execution part 2pes of the protected software 2p, imposes it, and in the presence of the unit 6, the value of said copy of variable residing in the unit 6 is transferred to the data processing system 3 to be used by the first execution part 2pes of the protected software 2p, so much so that said portion is executed correctly and that, consequently, the protected software 2p is completely functional.

[0316] FIG. 43 illustrates an example of attempt of execution of the protected software 2p, when the unit 6 is missing. In this example, during the execution in the data processing system 3 of the first execution part 2pes of the protected software 2p: [0317] at time instant t.sub.1, the execution of the transfer command OUT(v.sub.1, X) cannot trigger the transfer of the data X to the variable v.sub.1, taking into account the absence of the unit 6, [0318] at time instant t.sub.2, the execution of the transfer command IN(v.sub.1) cannot trigger the transfer of the value of the variable v.sub.1 to the data processing system 3, taking into account the absence of the unit 6, [0319] and at time instant t.sub.3, the execution of the transfer command IN(v.sub.1) cannot trigger the transfer of the value of the variable v.sub.1 to the data processing system 3, taking into account the absence of the unit 6.

[0320] It therefore appears that in the absence of the unit 6, at least one request by a portion of the first execution part 2pes to use a variable or a copy of variable residing in the unit 6, cannot be fulfilled correctly, so that at least said portion is not executed correctly and that, consequently, the protected software 2p is not completely functional.

[0321] It should be observed that the data transfers between the data processing system 3 and the unit 6 illustrated in the previous examples use only simple assignments but that the Man of art will know how to combine them with other operations to obtain complex operations such as for instance OUT(v.sub.1, 2*X+3) or Z.rarw.(5*v1+v2).

[0322] According to another advantageous characteristic of the invention, the protection process aims at implementing a principle of protection called by <<elementary function>> a description of which is carried out in relation to FIGS. 60 to 64.

[0323] For the implementation of the principle of protection by elementary functions, are defined: [0324] a set of elementary functions whose elementary functions are liable to be executed, by means of the second execution part 2peu, in the unit 6, and possibly to transfer data between the data processing system 3 and the unit 6, [0325] 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 the unit 6, of the corresponding elementary functions.

[0326] For the implementation of the principle of protection by elementary functions, are also constructed exploitation means enabling to transform a blank unit 60 into a unit 6 able to execute elementary functions, the execution of said elementary functions being triggered by the execution in the data processing system 3, of elementary commands.

[0327] For the implementation of the principle of protection by elementary functions, is also chosen, in the source of the vulnerable software 2vs, at least one algorithmic processing using at least one operand and returning at least one result. Is also chosen at least one portion of the source of the vulnerable software 2vs containing at least one chosen algorithmic processing.

[0328] At least one chosen portion of the source of the vulnerable software 2vs is then modified, so as to obtain the source of the protected software 2ps. This modification is such that, among others: [0329] during the execution of the protected software 2p, at least one portion of the first execution part 2pes, which is executed in the data processing system 3, takes into account that the functionality of at least one chosen algorithmic processing is executed in the unit 6, [0330] during the execution of the protected software 2p, the second execution part 2peu, which is executed in the unit 6, executes at least the functionality of at least one chosen algorithmic processing, [0331] each chosen algorithmic processing is split so that during the execution of the protected software 2p, each chosen algorithmic processing is executed, by means of the second execution part 2peu, using elementary functions. Preferably, each chosen algorithmic processing is split into elementary functions fe.sub.n (with n varying from 1 to N), namely: [0332] possibly one or several elementary functions enabling the placing of one or several operands at the unit 6's disposal, [0333] elementary functions, some of which use the operand(s) and in combination, execute the functionality of the chosen algorithmic processing, using said operand(s), [0334] and possibly one or several elementary functions enabling the placing of the result of the chosen algorithmic processing at the data processing system 3's disposal by the unit 6, [0335] and a sequence of the elementary commands is chosen among the set of sequences allowing the execution of the protected software 2p.

[0336] The first execution part 2pes of the protected software 2p, which is executed in the data processing system 3, executes elementary commands CFE.sub.n (with n varying from 1 to N), triggering in the unit 6, the execution by means of the second execution part 2peu, of each of the previously defined elementary functions fe.sub.n.

[0337] FIG. 60 illustrates an example of execution of a vulnerable software 2v. In this example, appears, during the execution of the vulnerable software 2v in the data processing system 3, at a certain time instant, the calculation of Z.rarw.F(X, Y) corresponding to the assignment to a variable Z of the result of an algorithmic processing represented by a function F and using operands X and Y.

[0338] FIG. 61 illustrates an example of implementation of the invention for which the algorithmic processing chosen in FIG. 60 is remoted in the unit 6. In this example, during the execution in the data processing system 3 of the first execution part 2pes of the protected software 2p and in the presence of the unit 6, appear: [0339] at time instants t.sub.1, t.sub.2, the execution of the elementary commands CFE.sub.1, CFE.sub.2 triggering in the unit 6, the execution by means of the second execution part 2peu, of the corresponding elementary functions fe.sub.1, fe.sub.2 which provide the transfer of data X, Y from the data processing system 3 to memorization zones respectively x, y located in the memorization means 15 of the unit 6, said elementary commands CFE.sub.1, CFE.sub.2 being represented respectively by OUT(x, X), OUT(y, Y), [0340] at time instants t.sub.3 to t.sub.N-1, the execution of the elementary commands CFE.sub.3 to CFE.sub.N-1, triggering in the unit 6, the execution by means of the second execution part 2peu, of the corresponding elementary functions fe.sub.3 to fe.sub.N-1, said elementary commands CFE.sub.3 to CFE.sub.N-1 being represented, respectively, by TRIG(fe.sub.3) to TRIG(fe.sub.N-1). The series of elementary functions fe.sub.3 to fe.sub.N-1 executed in combination is algorithmically equivalent to the function F. More precisely, the execution of said elementary commands leads to the execution in the unit 6, of the elementary functions fe.sub.3 to fe.sub.N-1 which use the contents of the memorization zones x, y and return the result to a memorization zone z of the unit 6, [0341] and at time instant t.sub.N, the execution of the elementary command CFE.sub.N triggering in the unit 6, the execution by means of the second execution part 2peu, of the elementary function fe.sub.N providing the transfer of the result of the algorithmic processing, contained in the memorization zone z of the unit 6 to the data processing system 3, so as to assign it to the variable Z, said elementary command CFE.sub.N being represented by IN(z).

[0342] In the illustrated example, the elementary commands 1 to N are executed successively. It should be observed that two improvements can be effected: [0343] The first improvement concerns the case where several algorithmic processings are remoted in the unit 6 and at least the result of one algorithmic processing is used by another algorithmic processing. In this case, some elementary commands used for the transfer, can possibly be removed. [0344] The second improvement aims at opting for a pertinent sequence of the elementary commands among the set of sequences allowing the execution of the protected software 2p. In this respect, it is preferable to choose a sequence of the elementary commands which temporally dissociates the execution of the elementary functions, by intercalating between them, portions of code executed in the data processing system 3 and including or not elementary commands used for the determination of other data. FIGS. 62 and 63 illustrate the principle of such an embodiment.

[0345] FIG. 62 shows an example of execution of a vulnerable software 2v. In this example, appears during the execution of the vulnerable software 2v, in the data processing system 3, the execution of two algorithmic processings leading to the determination of Z and Z', such that Z.rarw.F (X, Y) and Z'.rarw.F'(X', Y').

[0346] FIG. 63 illustrates an example of implementation of the process according to the invention for which the two algorithmic processing chosen in FIG. 62 are remoted in the unit 6. According to such an example, during the execution in the data processing system 3 of the first execution part 2pes of the protected software 2p and in the presence of the unit 6, appear, as explained above, the execution of the elementary commands CFE.sub.1 to CFE.sub.N corresponding to the determination of Z and the execution of the elementary commands CFE'.sub.1 to CFE'.sub.M corresponding to the determination of Z'. As illustrated, the elementary commands CFE.sub.1 to CFE.sub.N are not executed consecutively, inasmuch as the elementary commands CFE'.sub.1 to CFE'.sub.M, as well as other portions of code are intercalated. In the example, the following sequence is thus carried out: CFE.sub.1, portion of intercalated code, CFE'.sub.1, CFE.sub.2, portion of intercalated code, CFE'.sub.2, CFE'.sub.3, portion of intercalated code, CFE'.sub.4, CFE.sub.3, CFE.sub.4, . . . , CFE.sub.N, CFE'.sub.M.

[0347] It should be observed that, during the execution of the protected software 2p, in the presence of the unit 6, each time an elementary command contained in a portion of the first execution part 2pes of the protected software 2p imposes it, the corresponding elementary function is executed in the unit 6. Thus, it appears, that in the presence of the unit 6, said portion is executed correctly and that, consequently, the protected software 2p is completely functional.

[0348] FIG. 64 illustrates an example of an attempt of execution of the protected software 2p, when the unit 6 is missing. In this example, during the execution in the data processing system 3, of the first execution part 2pes of the protected software 2p, at every time instant, the execution of an elementary command cannot trigger the execution of the corresponding elementary function, because of the absence of the unit 6. The value to assign to the variable Z cannot therefore be determined correctly.

[0349] It therefore appears, that in the absence of the unit 6, at least one request by a portion of the first execution part 2pes of the protected software 2p, to trigger the execution of an elementary function in the unit 6 cannot be fulfilled correctly, so that at least said portion is not executed correctly and that, consequently, the protected software 2p is not completely functional.

[0350] According to another advantageous characteristic of the invention, the protection process aims at implementing a principle of protection, called by <<detection and coercion>>, a description of which is carried out in relation to FIGS. 70 to 74.

[0351] For the implementation of the principle of protection by detection and coercion, are defined: [0352] at least one software execution characteristic liable to be monitored at least in part in the unit 6, [0353] at least one criterion to abide by for at least one software execution characteristic, [0354] 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, [0355] and coercion 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.

[0356] For the implementation of the principle of protection by detection and coercion, are also constructed exploitation means enabling to transform a blank unit 60 into a unit 6 implementing at least the detection means 17 and the coercion means 18.

[0357] FIG. 70 illustrates the means necessary to the implementation of this principle of protection by detection and coercion. The unit 6 includes the detection means 17 and the coercion means 18 belonging to the processing means 16. The coercion means 18 are informed by the detection means 17 that a criterion has not been abided by.

[0358] More precisely, the detection means 17 use information coming from the transfer means 13 and/or from the memorization means 15 and/or from the processing means 16, so as to monitor one or several software execution characteristics. For each software execution characteristic is set at least one criterion to abide by.

[0359] In the case where it is detected that at least one software execution characteristic does not abide by at least one criterion, the detection means 17 inform the coercion means 18 of it. Said coercion means 18 are adapted to modify, in the appropriate way, the state of the unit 6.

[0360] For the implementation of the principle of protection by detection and coercion, are also chosen: [0361] at least one software execution characteristic to monitor, among the software execution characteristics liable to be monitored, [0362] at least one criterion to abide by for at least one chosen software execution characteristic, [0363] in the source of the vulnerable software 2vs, at least one algorithmic processing for which at least one software execution characteristic is to be monitored, [0364] and in the source of the vulnerable software 2vs, at least one portion containing at least one chosen algorithmic processing.

[0365] At least one chosen portion of the source of the vulnerable software 2vs is then modified, so as to obtain the source of the protected software 2ps. This modification is such that, during the execution of the protected software 2p, among others: [0366] at least one portion of the first execution part 2pes, which is executed in the data processing system 3, takes into account that at least one chosen software execution characteristic is to be monitored, at least in part in the unit 6, [0367] and the second execution part 2peu, which is executed in the unit 6, monitors at least in part, a chosen software execution characteristic.

[0368] During the execution of the protected software 2p, protected by this principle of protection by detection and coercion, in the presence of the unit 6: [0369] 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, said modified portions of the protected software 2p work nominally, so that said protected software 2p works nominally, [0370] and if at least one of the criteria corresponding to a monitored execution characteristic of a portion of the protected software 2p is not abided by, the data processing system 3 is informed of it and/or the functioning of the portion of the protected software 2p is modified, so that the functioning of the protected software 2p is modified.

[0371] Naturally, in the absence of the unit 6, at least one request by a portion of the first execution part 2pes of the protected software 2p to use the unit 6 cannot be fulfilled correctly so that at least said portion is not executed correctly and that consequently the protected software 2p is not completely functional.

[0372] For the implementation of the principle of protection by detection and coercion, two types of software execution characteristics are used preferentially.

[0373] The first type of software execution characteristic corresponds to a variable of measurement of the execution of a software and the second type corresponds to a profile of usage of a software. Said two types of characteristics can be used independently or in combination.

[0374] For the implementation of the principle of protection by detection and coercion using, as execution characteristic, a variable of measurement of software execution, are defined: [0375] in the memorization means 15, the possibility to memorize at least one variable of measurement used to quantify the usage of at least one functionality of a software, [0376] in the detection means 17, the possibility to monitor at least one threshold associated to each variable of measurement, [0377] and actualization means enabling to update each variable of measurement depending on the usage of the functionality to which it is associated.

[0378] Are also constructed exploitation means implementing, in addition to the detection means 17 and the coercion means 18, the actualization means.

[0379] Are also chosen, in the source of the vulnerable software 2vs: [0380] at least one functionality of the vulnerable software 2v whose usage is liable to be monitored using a variable of measurement, [0381] at least one variable of measurement used to quantify the usage of said functionality, [0382] at least one threshold associated to the variable of measurement corresponding to a limit of usage of said functionality, [0383] and at least one method of update of the variable of measurement depending on the usage of said functionality.

[0384] The source of the vulnerable software 2vs is then modified, so as to obtain the source of the protected software 2ps, this modification being such that, during the execution of the protected software 2p, the second execution 2peu: [0385] actualizes the variable of measurement depending on the usage of said functionality, [0386] and takes into account at least one threshold crossing.

[0387] In other words, during the execution of the protected software 2p, the variable of measurement is updated depending on the usage of said functionality, and when the threshold is crossed, the detection means 17 inform of it the coercion means 18 which make an adapted decision to inform the data processing system 3 and/or to modify the processings carried out by the processing means 16 enabling to modify the functioning of the portion of the protected software 2p, so that the functioning of the protected software 2p is modified.

[0388] For the implementation of a first preferred variant embodiment of the principle of protection by detection and coercion using, as characteristic, a variable of measurement, are defined: [0389] for at least one variable of measurement, several associated thresholds, [0390] and different coercion means corresponding to each of said thresholds.

[0391] Are also chosen, in the source of the vulnerable software 2vs: [0392] at least one variable of measurement used to quantify the usage of at least one functionality of the software and to which must be associated several thresholds corresponding to different limits of usage of said functionalities, [0393] and at least two thresholds associated to the variable of measurement.

[0394] The source of the vulnerable software 2vs is then modified, so as to obtain 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: [0395] actualizes the variable of measurement depending on the usage of said functionality, [0396] and takes into account, differently, the crossing of the various thresholds.

[0397] In other words, classically, during the execution of the protected software 2p, when the first threshold is crossed, the unit 6 informs the data processing system 3 enjoining the protected software 2p not to use said functionality anymore. If the protected software 2p carries on using said functionality, the second threshold will potentially be crossed. In the case where the second threshold is crossed, the coercion means 18 can make the chosen functionality ineffective and/or make the protected software 2p ineffective.

[0398] For the implementation of a second preferred variant embodiment of the principle of protection by detection and coercion using, as characteristic, a variable of measurement, are defined refilling means enabling to credit at least one software functionality monitored by a variable of measurement with at least one additional usage.

[0399] Are also constructed exploitation means implementing, in addition to the detection means 17, the coercion means 18 and the actualization means, the refilling means.

[0400] Is also chosen, in the source of the vulnerable software 2vs, at least one variable of measurement used to limit the usage of at least one functionality of the software and which must be able to be credited with at least one additional usage.

[0401] The source of the vulnerable software 2vs is then modified, so as to obtain the source of the protected software 2ps, this modification being such that, during a phase called of refilling, at least one additional usage of at least one functionality corresponding to a chosen variable of measurement can be credited.

[0402] Is carried out, during the phase of refilling, the reactualization of at least one chosen variable of measurement and/or of at least one associated threshold, so as to allow at least one additional usage of the corresponding functionality. In other words, it is possible, during the phase of refilling, to credit additional usages of at least one functionality of the protected software 2p.

[0403] For the implementation of the principle of protection by detection and coercion using, as characteristic, a profile of software usage, is defined as criterion to abide by for said profile of usage, at least one feature of software execution.

[0404] Are also chosen, in the source of the vulnerable software 2vs: [0405] at least one profile of usage to monitor, [0406] and at least one feature of execution by which at least one chosen profile of usage must abide.

[0407] The source of the vulnerable software 2vs is then modified, so as to obtain 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. In other words, the unit 6 itself monitors the way the second execution part 2peu is executed and can inform the data processing system 3 and/or modify the functioning of the protected software 2p, in the case where at least one feature of execution is not abided by.

[0408] During the execution of the protected software 2p, protected by this principle, in the presence of the unit 6: [0409] as long as all the features of execution of all the modified portions of the protected software 2p are abided by, said modified portions of the protected software 2p work nominally, so that said protected software 2p works nominally, [0410] and if at least one feature of execution of a portion of protected software 2p is not abided by, the data processing system 3 is informed of it and/or the functioning of the portion of the protected software 2p is modified, so that the functioning of the protected software 2p is modified.

[0411] The monitoring of different features of execution can be considered, like for instance the monitoring of the presence of instructions including a marker or the monitoring of the execution chaining for at least one part of the instructions.

[0412] For the implementation of the principle of protection by detection and coercion using as feature of execution to abide by, the monitoring of the execution chaining for at least one part of the instructions, are defined: [0413] an instructions set, whose instructions are liable to be executed in the unit 6, [0414] a set of instructions commands for said instructions set, said instructions commands are liable to be executed in the data processing system 3. The execution of each of said instructions commands in the data processing system 3 triggers in the unit 6, the execution of the corresponding instruction, [0415] detection means 17 enabling to detect that the chaining of the instructions does not correspond to the expected one, [0416] and coercion means 18 enabling to inform the data processing system 3 and/or to modify the execution of a software when the chaining of the instructions does not correspond to the expected one.

[0417] Are also constructed exploitation means enabling the unit 6 to also 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.

[0418] Is also chosen, in the source of the vulnerable software 2vs, at least one algorithmic processing which must be remoted in the unit 6 and for which the chaining of at least one part of the instructions is to be monitored.

[0419] The source of the vulnerable software 2vs is then modified, so as to obtain the source of the vulnerable software 2ps, this modification being such that, during the execution of the protected software 2p: [0420] the second execution part 2peu executes at least the functionality of the chosen algorithmic processing, [0421] the chosen algorithmic processing is split into instructions, [0422] the chaining by which at least some of the instructions must abide during their execution in the unit 6 is specified, [0423] and the first execution part 2pes of the protected software 2p executes instructions commands which trigger the execution of the instructions in the unit 6.

[0424] During the execution of the protected software 2p, protected by this principle, in the presence of the unit 6: [0425] as long as the chaining of the instructions of all the modified portions of the protected software 2p, executed in the unit 6 corresponds to the expected one, said modified portions of the protected software 2p work nominally, so that said protected software 2p works nominally, [0426] and if the chaining of the instructions of a portion of the protected software 2p executed in the unit 6 does not correspond to the expected one, the data processing system 3 is informed of it and/or the functioning of the portion of protected software 2p is modified, so that the functioning of the protected software 2p is modified.

[0427] FIG. 71 illustrates an example of implementation of the principle of protection by detection and coercion using, as feature of execution to abide by the monitoring of the execution chaining of a at least one part of the instructions, in the case where the expected chaining is abided by.

[0428] The first execution part 2pes of the protected software 2p, executed in the data processing system 3, executes instructions commands CI.sub.i triggering, in the unit 6 the execution of the instructions i.sub.i belonging to the instructions set. In said instructions set, at least some of the instructions each include a part defining the functionality of the instruction and a part enabling to verify the expected chaining for the execution of the instructions. In this example, the instructions commands CI.sub.i are represented by TRIG(i.sub.i) and the expected chaining for the execution of the instructions is i.sub.n, i.sub.n+1 and i.sub.n+2. The execution in the unit 6, of the instruction i.sub.n gives the result a and the execution of the instruction i.sub.n+1 gives the result b. The instruction i.sub.n+2 uses as operand, the results a and b of the instructions i.sub.n and i.sub.n+1 and its execution gives the result c.

[0429] Taking into account that said chaining of the instructions executed in the unit 6 corresponds to the expected one, it results in a normal or nominal functioning of the protected software 2p.

[0430] FIG. 72 illustrates an example of implementation of the principle of protection by detection and coercion using, as feature of execution to abide by, the monitoring of the execution chaining of at least one part of the instructions, in the case where the expected chaining is not abided by.

[0431] According to this example, the expected chaining for the execution of the instructions is still i.sub.n, i.sub.n+1 and i.sub.n+2. However, the execution chaining is modified by the replacement of the instruction i.sub.n with the instruction i'.sub.n, so that the chaining actually executed is i'.sub.n, i.sub.n+1 and i.sub.n+2. The execution of the instruction i'.sub.n gives the result a, i.e. the same result that the execution of the instruction i.sub.n. However, at the latest during the execution of the instruction i.sub.n+2, the detection means 17 detect that the instruction i'.sub.n does not correspond to the expected instruction to generate the result a used as operand of the instruction i.sub.n+2. The detection means 17 inform of it the coercion means 18 which modify accordingly, the functioning of the instruction i.sub.n+2, so that the execution of the instruction i.sub.n+2 gives the result C' which can be different than C. Naturally, if the execution of the instruction i'.sub.n gives a result a' different from the result a of the instruction i.sub.n, it is clear that the result of the instruction i.sub.n+2 can also be different from c.

[0432] Inasmuch as the execution chaining of the instructions executed in the unit 6 does not correspond to the expected one, a modification of the functioning of the protected software 2p can therefore be obtained.

[0433] FIGS. 73 and 74 illustrates a preferred variant embodiment of the principle of protection by detection and coercion using, as feature of execution to abide by, the monitoring of the execution chaining of at least one part of the instructions. According to this preferred variant, is defined an instructions set whose at least some instructions work with registers and use at least one operand with the intention of returning a result.

[0434] As illustrated in FIG. 73, are defined for at least some of the instructions working with registers, a part PF defining the functionality of the instruction and a part PE defining the expected chaining for the execution of the instructions. The part PF corresponds to the operation code known by the Man of art. The part PE defining the expected chaining, includes bits fields corresponding to: [0435] an identification field of the instruction CII, [0436] and for each operand k of the instruction, with k varying from 1 to K, and K number of operands of the instruction: [0437] a flag field CD.sub.k, indicating whether or not it is appropriate to verify the origin of the operand k, [0438] and an expected identification field CIP.sub.k of the operand, indicating the expected identity of the instruction which has generated the contents of the operand k.

[0439] As illustrated in FIG. 74, the instructions set includes V registers belonging to the processing means 16, each register being named R.sub.v, with v varying from 1 to V. For each register R.sub.v, are defined two fields, namely: [0440] a functional field CF.sub.v, known by the Man of art and enabling to store the result of the execution of the instructions, [0441] and a generated identification field CIG.sub.v enabling to memorize the identity of the instruction which has generated the contents of the functional field CF.sub.v. Said generated identification field CIG.sub.v is automatically updated with the contents of the identification field of the instruction CII which has generated the functional field CF.sub.v. Said generated identification field CIG.sub.v is neither accessible, nor modifiable by any of the instructions and is solely used for the detection means 17.

[0442] During the execution of an instruction, the detection means 17 carry out for each operand k the following operations: [0443] the flag field CD.sub.k is read, [0444] if the flag field CD.sub.k imposes it, the expected identification field CIP.sub.k and the generated identification field CIG.sub.v corresponding to the register used by the operand k are both read, [0445] the equality of the two fields CIP.sub.k and CIG.sub.v is checked, [0446] and if the equality is false, the detection means 17 consider that the execution chaining of the instructions is not abided by.

[0447] The coercion means 18 enable to modify the result of the instructions when the detection means 17 has informed them of an instructions chaining not abided by. A preferred embodiment is carried out by modifying the functional part PF of the instruction currently executed or the functional part PF of subsequent instructions.

[0448] According to another advantageous characteristic of the invention, the protection process aims at implementing a principle of protection, called by <<renaming>> a description of which is carried out in relation to FIGS. 80 to 85.

[0449] For the implementation of the principle of protection by renaming, are defined: [0450] a set of dependent functions, whose dependent functions are liable to be executed, by means of the second execution part 2peu, in the unit 6, and possibly to transfer data between the data processing system 3 and the unit 6, said set of dependent functions can be finite or infinite, [0451] a set of triggering commands for said dependent functions, said triggering commands being liable to be executed in the data processing system 3 and to trigger in the unit 6, the execution of corresponding dependent functions, [0452] for each triggering command, an order corresponding at least in part to the information transmitted by the first execution part 2pes, to the second execution part 2peu, so as to trigger the execution of the corresponding dependent function, said order having the form of at least one argument of the triggering command, [0453] a method of renaming of the orders designed to be used during the modification of the vulnerable software 2v, such a method enabling to rename the orders so as to obtain triggering commands with renamed orders enabling to conceal the identity of the corresponding dependent functions, [0454] and restoring means 20 designed to be used in the unit 6 during the usage phase and enabling to restore the initial order, from the renamed order, so as to restore the dependent function to execute.

[0455] For the implementation of the principle of protection by renaming, are also constructed exploitation means enabling to transform a blank unit 60 into a unit 6 implementing at least the restoring means 20.

[0456] For the implementation of the principle of protection by renaming, are also chosen, in the source of the vulnerable software 2vs: [0457] at least one algorithmic processing using at least one operand and returning at least one result, [0458] and at least one portion of the source of the vulnerable software 2vs, containing at least one chosen algorithmic processing.

[0459] The source of the vulnerable software 2vs is then modified, so as to obtain the source of the protected software 2ps. This modification is such that, among others: [0460] during the execution of the protected software 2p, at least one portion of the 25 first execution part 2pes, which is executed in the data processing system 3, takes into account that the functionality of at least one chosen algorithmic processing is executed in the unit 6, [0461] during the execution of the protected software 2p, the second execution part 2peu, which is executed in the unit 6, executes at least the functionality of at least one chosen algorithmic processing, [0462] each chosen algorithmic processing is split so that during the execution of the protected software 2p, each chosen algorithmic processing is executed, by means of the second execution part 2peu, using dependent functions. Preferably, each chosen algorithmic processing is split into dependent functions fd.sub.n (with n varying from 1 to N), namely: [0463] possibly one or several dependent functions enabling the placing of one or several operands at the unit 6's disposal, [0464] dependent functions,