FR2828304A1 - Protection of software against unauthorized use, reproduction or alteration, e.g. for protection of chip card software or software protected by a material key associated with a USB port using a temporal dissociation principle - Google Patents

Protection of software against unauthorized use, reproduction or alteration, e.g. for protection of chip card software or software protected by a material key associated with a USB port using a temporal dissociation principle Download PDF

Info

Publication number
FR2828304A1
FR2828304A1 FR0110247A FR0110247A FR2828304A1 FR 2828304 A1 FR2828304 A1 FR 2828304A1 FR 0110247 A FR0110247 A FR 0110247A FR 0110247 A FR0110247 A FR 0110247A FR 2828304 A1 FR2828304 A1 FR 2828304A1
Authority
FR
France
Prior art keywords
execution
unit
protected software
software
protected
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR0110247A
Other languages
French (fr)
Other versions
FR2828304B1 (en
Inventor
Jean Christophe Cuenod
Gilles Sgro
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VALIDY NET INC, US
Original Assignee
Validy SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to FR0110247A priority Critical patent/FR2828304B1/en
Application filed by Validy SAS filed Critical Validy SAS
Priority to YU5504A priority patent/YU5504A/en
Priority to HU0400223A priority patent/HUP0400223A2/en
Priority to PL02367424A priority patent/PL367424A1/en
Priority to PCT/FR2002/002339 priority patent/WO2003012650A2/en
Priority to MXPA04000594A priority patent/MXPA04000594A/en
Priority to EP02760379A priority patent/EP1412862A2/en
Priority to KR10-2004-7000805A priority patent/KR20040031778A/en
Priority to IL15995402A priority patent/IL159954A0/en
Priority to BR0211371-6A priority patent/BR0211371A/en
Priority to CA002454092A priority patent/CA2454092A1/en
Priority to CNB028146859A priority patent/CN100451910C/en
Priority to JP2003517759A priority patent/JP3949108B2/en
Publication of FR2828304A1 publication Critical patent/FR2828304A1/en
Priority to ZA2004/00349A priority patent/ZA200400349B/en
Priority to MA27491A priority patent/MA26125A1/en
Priority to HR20040047A priority patent/HRP20040047A2/en
Priority to NO20040227A priority patent/NO20040227L/en
Priority to TNP2004000014A priority patent/TNSN04014A1/en
Publication of FR2828304B1 publication Critical patent/FR2828304B1/en
Application granted granted Critical
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Storage Device Security (AREA)

Abstract

Method for creation of protected software wherein: a processing algorithm is selected; protected source code is generated from the vulnerable source code by modifying it using the selected algorithm with an operand supplied to the executing data processing unit that implements the algorithm using said operand and provision of an output result from the unit to a data processing system. The invention also relates to a corresponding system, data processing unit and assembly for distribution of protected software.

Description

<Desc/Clms Page number 1> <Desc / Clms Page number 1>

La présente invention concerne le domaine technique des systèmes de traitement de données au sens général et elle vise, plus précisément, les moyens pour protéger, contre son utilisation non autorisée, un logiciel fonctionnant sur lesdits systèmes de traitement de données.  The present invention relates to the technical field of data processing systems in the general sense and more specifically to the means for protecting, against unauthorized use, software running on said data processing systems.

L'objet de l'invention vise, plus particulièrement, les moyens pour protéger un logiciel contre son utilisation non autorisée, à partir d'une unité de traitement et de mémorisation, une telle unité étant communément matérialisée par une carte à puce ou par une clé matérielle sur port USB.  The object of the invention is, more particularly, the means for protecting software against unauthorized use, from a processing and storage unit, such a unit being commonly embodied by a smart card or by a device. hardware key on USB port.

Dans le domaine technique ci-dessus, le principal inconvénient concerne l'emploi non autorisé de logiciels par des utilisateurs n'ayant pas acquitté des droits de licence. Cette utilisation illicite de logiciels cause un préjudice manifeste pour les éditeurs de logiciels, les distributeurs de logiciels et/ou toute personne intégrant de tels logiciels dans des produits. Pour éviter de telles copies illicites, il a été proposé dans l'état de la technique, diverses solutions pour protéger des logiciels.  In the technical field above, the main disadvantage concerns the unauthorized use of software by users who have not paid license fees. This unlawful use of software causes obvious harm to software publishers, software distributors and / or anyone incorporating such software into products. To avoid such illicit copies, it has been proposed in the state of the art, various solutions to protect software.

Ainsi, il est connu une solution de protection consistant à mettre en oeuvre un système matériel de protection, tel qu'un élément physique appelé clé de protection ou"dongle"en terminologie anglo-saxonne. Une telle clé de protection devrait garantir l'exécution du logiciel uniquement en présence de la clé. Or, il doit être constaté qu'une telle solution est inefficace car elle présente l'inconvénient d'être facilement contoumable. Une personne mal intentionnée ou pirate peut, à l'aide d'outils spécialisés, tels que des désassembleurs, supprimer les instructions de contrôle de la clé de protection. Il devient alors possible de réaliser des copies illicites correspondant à des versions modifiées des logiciels n'ayant plus aucune protection. De plus, cette solution ne peut pas être généralisée à tous les logiciels, dans la mesure où il est difficile de connecter plus de deux clés de protection sur un même système.  Thus, it is known a protection solution consisting in implementing a hardware protection system, such as a physical element called a protection key or "dongle" in English terminology. Such a protection key should guarantee the execution of the software only in the presence of the key. However, it must be noted that such a solution is inefficient because it has the disadvantage of being easily contumable. A malicious person or hacker may, using specialized tools, such as disassemblers, remove control instructions from the protection key. It then becomes possible to make illicit copies corresponding to modified versions of the software no longer protected. In addition, this solution can not be generalized to all software, since it is difficult to connect more than two protection keys on the same system.

L'objet de l'invention vise justement à remédier aux inconvénients énoncés cidessus en proposant un procédé pour protéger un logiciel contre son utilisation non autorisée, à partir d'une unité de traitement et de mémorisation ad hoc, dans la mesure où la présence d'une telle unité est nécessaire pour que le logiciel soit complètement fonctionnel.  The object of the invention is precisely to remedy the drawbacks stated above by proposing a method for protecting software against unauthorized use, from an ad hoc processing and storage unit, insofar as the presence of such a unit is necessary for the software to be fully functional.

<Desc/Clms Page number 2> <Desc / Clms Page number 2>

Pour atteindre un tel objectif, l'objet de l'invention concerne un procédé pour protéger, à partir d'au moins une unité vierge comportant au moins des moyens de traitement et des moyens de mémorisation, un logiciel vulnérable contre son utilisation non autorisée, ledit logiciel vulnérable fonctionnant sur un système de traitement de données. Le procédé selon l'invention consiste : dans une phase de protection : à créer un logiciel protégé : - en choisissant, au moins un traitement algorithmique qui, lors de l'exécution du logiciel vulnérable, utilise au moins un opérande et permet d'obtenir au moins un résultat, - en choisissant au moins une portion du source du logiciel vulnérable contenant, au moins un traitement algorithmique choisi, - en produisant le source du logiciel protégé à partir du source du logiciel vulnérable, en modifiant au moins une portion choisie du source du logiciel vulnérable pour obtenir au moins une portion modifiée du source du logiciel protégé, cette modification étant telle que : > lors de l'exécution du logiciel protégé une première partie d'exécution est exécutée dans le système de traitement de données et une seconde partie d'exécution est exécutée dans une unité, obtenue à partir de l'unité vierge après chargement d'informations, > la seconde partie d'exécution exécute au moins la fonctionnalité d'au moins un traitement algorithmique choisi, > au moins un traitement algorithmique choisi est décomposé de manière que lors de l'exécution du logiciel protégé apparaissent au moyen de la seconde partie d'exécution, plusieurs étapes distinctes, à savoir :
0 la mise à disposition d'au moins un opérande pour l'unité,
0 la réalisation par l'unité, de la fonctionnalité du traitement algorithmique sur au moins cet opérande,
0 et éventuellement, la mise à disposition d'au moins un résultat, par l'unité pour le système de traitement de données,
To achieve such an objective, the object of the invention relates to a method for protecting, from at least one blank unit comprising at least processing means and storage means, software vulnerable to its unauthorized use, said vulnerable software running on a data processing system. The method according to the invention consists: in a protection phase: to create a protected software: - by choosing, at least an algorithmic processing which, during the execution of the vulnerable software, uses at least one operand and makes it possible to obtain at least one result, - by choosing at least a portion of the source of the vulnerable software containing at least one chosen algorithmic processing, - by producing the source of the protected software from the source of the vulnerable software, by modifying at least a selected portion of the source of the vulnerable software to obtain at least a modified portion of the source of the protected software, this modification being such that: when running 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 loading information,> the second part of exec ution executes at least the functionality of at least one chosen algorithmic processing,> at least one selected algorithmic processing is decomposed so that during the execution of the protected software appear by means of the second execution part, several distinct steps, to know :
0 the provision of at least one operand for the unit,
0 the realization by the unit of the functionality of the algorithmic processing on at least this operand,
0 and optionally, the provision of at least one result, by the unit for the data processing system,

<Desc/Clms Page number 3><Desc / Clms Page number 3>

> pour au moins un traitement algorithmique choisi, des commandes d'étapes sont définies de manière que lors de l'exécution du logiciel protégé, chaque commande d'étape est exécutée par la première partie d'exécution et déclenche, dans l'unité, l'exécution au moyen de la seconde partie d'exécution, d'une étape, > et un ordonnancement des commandes d'étapes est choisi parmi l'ensemble des ordonnancements permettant l'exécution du logiciel protégé, - et en produisant : > une première partie objet du logiciel protégé, à partir du source du logiciel protégé, cette première partie objet étant telle que lors de l'exécution du logiciel protégé, apparaît une première partie d'exécution qui est exécutée dans le système de traitement de données et dont au moins une portion prend en compte que les commandes d'étapes sont exécutées selon l'ordonnancement choisi, > et une seconde partie objet du logiciel protégé, cette seconde partie objet étant telle que, après chargement dans l'unité vierge et lors de l'exécution du logiciel protégé, apparaît la seconde partie d'exécution au moyen de laquelle les étapes déclenchées par la première partie d'exécution sont exécutées, et à charger la seconde partie objet dans l'unité vierge, en vue d'obtenir l'unité, et dans une phase d'utilisation au cours de laquelle est exécuté le logiciel protégé : 'en présence de l'unité et à chaque fois qu'une commande d'étape contenue dans une portion de la première partie d'exécution l'impose, à exécuter l'étape correspondante dans l'unité, de sorte que cette portion est exécutée correctement et que, par conséquent, le logiciel protégé est complètement fonctionnel, 'et en l'absence de l'unité, malgré la demande d'une portion de la première partie d'exécution de déclencher l'exécution d'une étape dans l'unité, à ne  for at least one selected algorithmic processing, step 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,> and a scheduling of the step commands is chosen from among the set of authorizations allowing the execution of the protected software, - and by producing:> a first part object of the protected software, from the source of the protected software, this first object part being such that during the execution of the protected software, appears a first part of execution which is executed in the data processing system and whose at least one portion takes into account that the commands of steps are executed according to the chosen scheduling,> and a second object part of the protected software, this second object part being such that after loading the blank unit and executing the protected software, the second execution part by which the steps triggered by the first execution part are executed, and loading the second object part in the blank unit, in order to obtain the unit, and in a use phase during which the protected software is executed: 'in the presence of the unit and each time a contained step command in a portion of the first execution part requires it, to execute the corresponding step in the unit, so that this portion is executed correctly and that, therefore, the protected software is fully functional, and absence of the unit, despite the request for a portion of the first execution part to trigger the execution of a step in the unit, not to

<Desc/Clms Page number 4><Desc / Clms Page number 4>

pas pouvoir répondre correctement à cette demande, de sorte qu'au moins cette portion n'est pas exécutée correctement et que, par conséquent, le logiciel protégé n'est pas complètement fonctionnel.  not be able to respond correctly to this request, so that at least this portion is not executed correctly and, therefore, the protected software is not fully functional.

Selon une forme préférée de réalisation, le procédé selon l'invention consiste : dans la phase de protection : à modifier le logiciel protégé : - en choisissant au moins une variable utilisée dans au moins un traitement algorithmique choisi, qui lors de l'exécution du logiciel protégé, définit partiellement l'état du logiciel protégé, - en modifiant au moins une portion choisie du source du logiciel protégé, cette modification étant telle que lors de l'exécution du logiciel protégé, au moins une variable choisie ou au moins une copie de variable choisie réside dans l'unité, - et en produisant : > la première partie objet du logiciel protégé, cette première partie objet étant telle que lors de l'exécution du logiciel protégé, au moins une portion de la première partie d'exécution prend aussi en compte qu'au moins une variable ou au moins une copie de variable réside dans l'unité, > et la seconde partie objet du logiciel protégé, cette seconde partie objet étant telle que, après chargement dans l'unité et lors de l'exécution du logiciel protégé, apparaît la seconde partie d'exécution au moyen de laquelle au moins une variable choisie, ou au moins une copie de variable choisie réside aussi dans l'unité, et dans la phase d'utilisation : 'en présence de l'unité à chaque fois qu'une portion de la première partie d'exécution l'impose, à utiliser une variable ou une copie de variable résidant dans l'unité, de sorte que cette portion est exécutée correctement et que, par conséquent, le logiciel protégé est complètement fonctionnel, * et en l'absence de l'unité, malgré la demande d'une portion de la première partie d'exécution d'utiliser une variable ou une copie de variable résidant  According to a preferred embodiment, the method according to the invention consists: in the protection phase: to modify the protected software: - by choosing at least one variable used in at least one selected algorithmic processing, which during the execution of the protected software, partially defines the state of the protected software, - by modifying at least a selected portion of the source of the protected software, this modification being such that during the execution of the protected software, at least one selected variable or at least one copy of chosen variable resides in the unit, - and producing:> the first object part of the protected software, this first object part being such that during the execution of the protected software, at least a portion of the first execution part also takes into account that at least one variable or at least one variable copy resides in the unit,> and the second object part of the protected software, this second party e object being such that, after loading in the unit and during the execution of the protected software, appears the second execution part by means of which at least one selected variable, or at least one copy of chosen variable also resides in the unit, and in the use phase: 'in the presence of the unit each time a portion of the first execution part imposes it, to use a variable or a copy of variable residing in the unit, so that this portion is executed correctly and that, therefore, the protected software is fully functional, * and in the absence of the unit, despite the request for a portion of the first execution part of use a variable or copy of a resident variable

<Desc/Clms Page number 5><Desc / Clms Page number 5>

dans l'unité, à ne pouvoir répondre correctement à cette demande, de sorte qu'au moins cette portion n'est pas exécutée correctement et que, par conséquent, le logiciel protégé n'est pas complètement fonctionnel.  in the unit, to be unable to respond correctly to this request, so that at least this portion is not executed correctly and that, therefore, the protected software is not fully functional.

Selon une autre forme préférée de réalisation, le procédé selon l'invention consiste : - 7 dans la phase de protection : 'à définir : - un jeu de fonctions élémentaires dont les fonctions élémentaires sont susceptibles d'être exécutées dans l'unité, - et un jeu de commandes élémentaires pour ce jeu de fonctions élémentaires, ces commandes élémentaires étant susceptibles d'être exécutées dans le système de traitement de données et de déclencher l'exécution dans l'unité, des fonctions élémentaires, * à construire des moyens d'exploitation permettant à l'unité, d'exécuter les fonctions élémentaires dudit jeu, l'exécution de ces fonctions élémentaires étant déclenchée par l'exécution dans le système de traitement de données, des commandes élémentaires, 'et à modifier le logiciel protégé : - en modifiant au moins une portion choisie du source du logiciel protégé, cette modification étant telle que : > au moins une étape est décomposée de manière que lors de l'exécution du logiciel protégé, cette étape est exécutée au moyen de la seconde partie d'exécution, en utilisant des fonctions élémentaires, > pour au moins une étape décomposée, des commandes élémentaires sont intégrées dans le source du logiciel protégé, de manière que lors de l'exécution du logiciel protégé, chaque commande élémentaire est exécutée par la première partie d'exécution et déclenche dans l'unité, l'exécution au moyen de la seconde partie d'exécution, d'une fonction élémentaire, > et un ordonnancement des commandes élémentaires est choisi parmi l'ensemble des ordonnancements permettant l'exécution du  According to another preferred embodiment, the method according to the invention consists: in the protection phase: to define: a set of elementary functions whose elementary functions are capable of being executed in the unit; and a set of elementary commands for this set of elementary functions, these elementary commands being able to be executed in the data processing system and to trigger the execution in the unit, elementary functions, operation allowing the unit to perform the basic functions of said game, the execution of these basic functions being triggered by the execution in the data processing system, elementary commands, and modifying the protected software: modifying at least a selected portion of the source of the protected software, this modification being such that: at least one step is decomposed e such that during the execution of the protected software, this step is executed by means of the second execution part, using elementary functions,> for at least one decomposed step, elementary commands are integrated in 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 a elementary function,> and a scheduling of the elementary commands is chosen from among all the orders allowing the execution of the

<Desc/Clms Page number 6><Desc / Clms Page number 6>

logiciel protégé, - et en produisant : > la première partie objet du logiciel protégé, cette première partie objet étant telle que lors de l'exécution du logiciel protégé, au moins une portion de la première partie d'exécution exécute aussi les commandes élémentaires selon l'ordonnancement choisi, > et la seconde partie objet du logiciel protégé contenant aussi les moyens d'exploitation, cette seconde partie objet étant telle que, après chargement dans l'unité et lors de l'exécution du logiciel protégé, apparaît la seconde partie d'exécution au moyen de laquelle sont aussi exécutées les fonctions élémentaires déclenchées par la première partie d'exécution, et dans la phase d'utilisation : 'en présence de l'unité et à chaque fois qu'une commande élémentaire contenue dans une portion de la première partie d'exécution l'impose, à exécuter la fonction élémentaire correspondante dans l'unité, de sorte que cette portion est exécutée correctement et que, par conséquent, le logiciel protégé est complètement fonctionnel, * et en l'absence de l'unité, malgré la demande d'une portion de la première partie d'exécution, de déclencher l'exécution d'une fonction élémentaire dans l'unité, à ne pas pouvoir répondre correctement à cette demande, de sorte qu'au moins cette portion n'est pas exécutée correctement et que, par conséquent, le logiciel protégé n'est pas complètement fonctionnel.  protected software, - and by producing:> the first object part of the protected software, this first object part being such that during the execution of the protected software, at least a portion of the first execution part also executes the basic commands according to the chosen scheduling,> and the second object part of the protected software also containing the operating means, this second object part being such that, after loading in the unit and during the execution of the protected software, the second part appears by means of which the elementary functions triggered by the first execution part are also executed, and in the use phase: in the presence of the unit and each time an elementary command contained in a portion of the first execution part requires it, to execute the corresponding elementary function in the unit, so that this portion is executed correctly and that, therefore, the protected software is fully functional, * and in the absence of the unit, despite the request for a portion of the first execution part, to trigger the execution of a basic function in the unit, to not be able to respond correctly to this request, so that at least this portion is not executed correctly and that, therefore, the protected software is not fully functional.

Selon une autre forme préférée de réalisation, le procédé selon l'invention consiste : dans la phase de protection : à définir : - au moins une caractéristique d'exécution de logiciel, susceptible d'être surveillée au moins en partie dans l'unité, - au moins un critère à respecter pour au moins une caractéristique d'exécution de logiciel, - des moyens de détection à mettre en oeuvre dans l'unité et permettant  According to another preferred embodiment, the method according to the invention consists: in the protection phase: to define: - at least one software execution characteristic, which can be monitored at least partly in the unit, at least one criterion to respect for at least one software execution characteristic, detection means to be implemented in the unit and allowing

<Desc/Clms Page number 7><Desc / Clms Page number 7>

de détecter qu'au moins une caractéristique d'exécution de logiciel ne respecte pas au moins un critère associé, et des moyens de coercition à mettre en oeuvre dans l'unité et permettant d'informer le système de traitement de données et/ou de modifier l'exécution d'un logiciel, lorsqu'au moins un critère n'est pas respecté, à construire les moyens d'exploitation permettant à l'unité, de mettre aussi en oeuvre les moyens de détection et les moyens de coercition, et à modifier le logiciel protégé : - en choisissant au moins une caractéristique d'exécution de logiciel à surveiller, parmi les caractéristiques d'exécution susceptibles d'être surveillées, - en choisissant au moins un critère à respecter pour au moins une caractéristique d'exécution de logiciel choisie, - en choisissant dans le source du logiciel protégé, des fonctions élémentaires pour lesquelles au moins une caractéristique d'exécution de logiciel choisie, est à surveiller, - en modifiant au moins une portion choisie du source du logiciel protégé, cette modification étant telle que lors de l'exécution du logiciel protégé, au moins une caractéristique d'exécution choisie est surveillée au moyen de la seconde partie d'exécution, et le non respect d'un critère aboutit à une information du système de traitement de données et/ou à une modification de l'exécution du logiciel protégé, et en produisant la seconde partie objet du logiciel protégé contenant les moyens d'exploitation mettant aussi en oeuvre les moyens de détection et les moyens de coercition, cette seconde partie objet étant telle que, après chargement dans l'unité et lors de l'exécution du logiciel protégé, au moins une caractéristique d'exécution de logiciel est surveillée et le non respect d'un critère aboutit à une information du système de traitement de données et/ou à une modification de l'exécution du logiciel protégé,  detecting that at least one software execution characteristic does not comply with at least one associated criterion, and coercion means to be implemented in the unit and making it possible to inform the data processing system and / or to modify the execution of a software, when at least one criterion is not respected, to construct the means of exploitation allowing the unit, to also implement the means of detection and the means of coercion, and to modify the protected software: - by choosing at least one software execution characteristic to be monitored, among the execution characteristics that can be monitored, - by choosing at least one criterion to respect for at least one execution characteristic of chosen software, - by choosing in the source of the protected software, elementary functions for which at least one chosen software execution characteristic, is to be monitored, t at least a selected portion of the source of the protected software, this modification being such that during the execution of the protected software, at least one selected execution characteristic is monitored by means of the second execution part, and the non-compliance of a criterion results in information of the data processing system and / or modification of the execution of the protected software, and producing the second object part of the protected software containing the operating means also implementing the means detection and coercion means, this second object part being such that, after loading in the unit and during the execution of the protected software, at least one software execution characteristic is monitored and the non-compliance with a criterion results in information of the data processing system and / or modification of the execution of the protected software,

<Desc/Clms Page number 8><Desc / Clms Page number 8>

et dans la phase d'utilisation : en présence de l'unité : - tant que tous les critères correspondant à toutes les caractéristiques d'exécution surveillées de toutes les portions modifiées du logiciel protégé sont respectés, à permettre le fonctionnement nominal de ces portions du logiciel protégé et par conséquent à permettre le fonctionnement nominal du logiciel protégé, - et si au moins un des critères correspondant à une caractéristique d'exécution surveillée d'une portion du logiciel protégé n'est pas respecté, à en informer le système de traitement de données et/ou à modifier le fonctionnement de la portion du logiciel protégé, de sorte que le fonctionnement du logiciel protégé est modifié.

Figure img00080001
and in the utilization phase: in the presence of the unit: - as long as all the criteria corresponding to all the monitored performance characteristics of all the modified portions of the protected software are respected, to allow the nominal operation of these portions of the protected software and therefore to allow the nominal operation of the protected software, - and if at least one of the criteria corresponding to a monitored execution characteristic of a portion of the protected software is not respected, to inform the processing system of data and / or to modify the operation of the portion of the protected software, so that the operation of the protected software is modified.
Figure img00080001

Selon une variante de réalisation, le procédé selon l'invention consiste : - 7 dans la phase de protection : * à définir : - en tant que caractéristique d'exécution de logiciel susceptible d'être surveillée, une variable de mesure de l'utilisation d'une fonctionnalité d'un logiciel, - en tant que critère à respecter, au moins un seuil associé à chaque variable de mesure,

Figure img00080002

- et des moyens d'actualisation permettant de mettre à jour au moins une variable de mesure, 'à construire les moyens d'exploitation permettant à l'unité de mettre aussi en oeuvre les moyens d'actualisation, 'et à modifier le logiciel protégé : - en choisissant en tant que caractéristique d'exécution de logiciel à surveiller, au moins une variable de mesure de l'utilisation d'une fonctionnalité d'un logiciel, - en choisissant : > au moins une fonctionnalité du logiciel protégé dont l'utilisation est susceptible d'être surveillée grâce à une variable de mesure, According to an alternative embodiment, the method according to the invention consists: in the protection phase: to be defined: as a software execution characteristic that can be monitored, a variable for measuring the use a functionality of a software, - as a criterion to be respected, at least one threshold associated with each measurement variable,
Figure img00080002

and updating means making it possible to update at least one measurement variable, to construct the operating means enabling the unit to also implement the updating means, and to modify the protected software by choosing, as a software execution characteristic to be monitored, at least one variable for measuring the use of a software functionality, by choosing: at least one feature of the protected software of which use is likely to be monitored by a measurement variable,

<Desc/Clms Page number 9><Desc / Clms Page number 9>

> au moins une variable de mesure servant à quantifier l'utilisation de ladite fonctionnalité, > au moins un seuil associé à une variable de mesure choisie correspondant à une limite d'utilisation de ladite fonctionnalité, > et au moins une méthode de mise à jour d'une variable de mesure choisie en fonction de l'utilisation de ladite fonctionnalité, - et en modifiant au moins une portion choisie du source du logiciel protégé, cette modification étant telle que, lors de l'exécution du logiciel protégé, la variable de mesure est actualisée au moyen de la seconde partie d'exécution, en fonction de l'utilisation de ladite fonctionnalité et au moins un dépassement de seuil est pris en compte, et dans la phase d'utilisation, en présence de l'unité, et dans le cas où il est détecté au moins un dépassement de seuil correspondant à au moins une limite d'utilisation, à en informer le système de traitement de données et/ou à modifier le fonctionnement de la portion du logiciel protégé, de sorte que le fonctionnement du logiciel protégé est modifié.  at least one measurement variable serving to quantify the use of said functionality, at least one threshold associated with a chosen measurement variable corresponding to a limit of use of said functionality, and at least one updating method. of a measurement variable chosen according to the use of said functionality, and by modifying at least a selected 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 updated by means of the second execution part, depending on the use of said functionality and at least one threshold overrun is taken into account, and in the use phase, in the presence of the unit, and in the case where at least one threshold violation corresponding to at least one utilization limit is detected, to inform the data processing system and / or to modify the operation of the portion of the data u protected software, so that the operation of the protected software is changed.

Selon une variante de réalisation, le procédé selon l'invention consiste : - 7 dans la phase de protection : 'à définir : - pour au moins une variable de mesure, plusieurs seuils associés, - et des moyens de coercition différents correspondant à chacun de ces seuils, * et à modifier le logiciel protégé : - en choisissant dans le source du logiciel protégé, au moins une variable de mesure choisie à laquelle doivent être associés plusieurs seuils correspondants à des limites différentes d'utilisation de la fonctionnalité, - en choisissant au moins deux seuils associés à la variable de mesure choisie, - et en modifiant au moins une portion choisie du source du logiciel protégé, cette modification étant telle que, lors de l'exécution du logiciel protégé, les dépassements des divers seuils sont pris en  According to an alternative embodiment, the method according to the invention consists in: - 7 in the protection phase: 'to be defined: - for at least one measurement variable, several associated thresholds, - and different coercion means corresponding to each of these thresholds, * and to modify the protected software: - by choosing in the source of the protected software, at least one chosen measurement variable to which must be associated several thresholds corresponding to different limits of use of the functionality, - by choosing at least two thresholds associated with the selected measurement variable, and modifying at least a selected portion of the source of the protected software, this modification being such that, during the execution of the protected software, the exceedances of the various thresholds are taken into account.

<Desc/Clms Page number 10><Desc / Clms Page number 10>

compte, au moyen de la seconde partie d'exécution, de manière différente, et dans la phase d'utilisation : en présence de l'unité : - dans le cas où il est détecté le dépassement d'un premier seuil, à enjoindre le logiciel protégé de ne plus utiliser la fonctionnalité correspondante, - et dans le cas où il est détecté le dépassement d'un deuxième seuil, à rendre inopérante la fonctionnalité correspondante et/ou au moins une portion du logiciel protégé.  account, using the second execution part, differently, and in the use phase: in the presence of the unit: - in the case where it is detected the exceeding of a first threshold, to enjoin the protected software to no longer use the corresponding functionality, - and in the case where it is detected the exceeding of a second threshold, to render inoperative the corresponding functionality and / or at least a portion of the protected software.

Selon une variante de réalisation, le procédé selon l'invention consiste : - 7 dans la phase de protection : 'à définir des moyens de rechargement permettant de créditer au moins une utilisation supplémentaire pour au moins une fonctionnalité de logiciel surveillée par une variable de mesure, à construire les moyens d'exploitation permettant aussi à l'unité de mettre en oeuvre les moyens de rechargement, 'et à modifier le logiciel protégé : - en choisissant dans le source du logiciel protégé, au moins une variable de mesure choisie permettant de limiter l'utilisation d'une fonctionnalité à laquelle au moins une utilisation supplémentaire doit pouvoir être créditée, - et en modifiant au moins une portion choisie, cette modification étant telle que dans une phase dite de rechargement, au moins une utilisation supplémentaire d'au moins une fonctionnalité correspondante à une variable de mesure choisie peut être créditée, et dans la phase de rechargement : à réactualiser au moins une variable de mesure choisie et/ou au moins un seuil associé, de manière à permettre au moins une utilisation supplémentaire de la fonctionnalité.  According to an alternative embodiment, the method according to the invention consists in: - 7 in the protection phase: 'to define reloading means making it possible to credit at least one additional use for at least one software functionality monitored by a measurement variable , to construct the operating means also allowing the unit to implement the reloading means, and to modify the protected software: - by choosing in the source of the protected software, at least one selected measurement variable allowing to limit the use of a feature to which at least one additional use must be able to be credited, and by modifying at least a selected portion, this modification being such that in a so-called recharging phase, at least one additional use of unless a function corresponding to a chosen measurement variable can be credited, and in the reload phase: to updating at least one selected measurement variable and / or at least one associated threshold, so as to allow at least one additional use of the functionality.

Selon une variante de réalisation, le procédé selon l'invention consiste :  According to an alternative embodiment, the method according to the invention consists of:

<Desc/Clms Page number 11> <Desc / Clms Page number 11>

Figure img00110001

- 7 dans la phase de protection : à définir : - en tant que caractéristique d'exécution de logiciel susceptible d'être surveillée, un profil d'utilisation de logiciel, - et en tant que critère à respecter, au moins un trait d'exécution de logiciel, 'et à modifier le logiciel protégé : - en choisissant en tant que caractéristique d'exécution de logiciel à surveiller au moins un profil d'utilisation de logiciel,
Figure img00110002

- en choisissant au moins un trait d'exécution qu'au moins un profil d'utilisation choisi doit respecter, - et en modifiant au moins une portion choisie du source du logiciel protégé, cette modification étant telle que, lors de l'exécution du logiciel protégé, la seconde partie d'exécution respecte tous les traits d'exécution choisis, et dans la phase d'utilisation en présence de l'unité, et dans le cas où il est détecté qu'au moins un trait d'exécution n'est pas respecté, à en informer le système de traitement de données et/ou à modifier le fonctionnement de la portion du logiciel protégé, de sorte que le fonctionnement du logiciel protégé est modifié.
Figure img00110001

- 7 in the protection phase: to be defined: - as a software performance characteristic that can be monitored, a software usage profile, - and as a criterion to be met, at least one dash of executing software, and modifying the protected software: - by choosing as a software execution characteristic to monitor at least one software usage profile,
Figure img00110002

by choosing at least one execution feature that at least one chosen usage profile must respect, and modifying at least a selected portion of the source of the protected software, this modification being such that, when executing the protected software, the second execution part respects all the selected execution features, and in the use phase in the presence of the unit, and in the case where it is detected that at least one execution feature is not respected, to inform the data processing system and / or to modify the operation of the portion of the protected software, so that the operation of the protected software is modified.

Selon une variante de réalisation, le procédé selon l'invention consiste : - 7 dans la phase de protection : à définir : - un jeu d'instructions dont les instructions sont susceptibles d'être exécutées dans l'unité, - un jeu de commandes d'instructions pour ce jeu d'instructions, ces commandes d'instructions étant susceptibles d'être exécutées dans le système de traitement de données et de déclencher dans l'unité l'exécution des instructions, - en tant que profil d'utilisation, l'enchaînement des instructions, - en tant que trait d'exécution, un enchaînement souhaité pour  According to an alternative embodiment, the method according to the invention consists of: - 7 in the protection phase: to define: - a set of instructions whose instructions are likely to be executed in the unit, - a set of commands instructions for this set of instructions, these command commands being able to be executed in the data processing system and to trigger in the unit the execution of the instructions, - as a usage profile, the sequence of instructions, - as an execution feature, a desired sequence for

<Desc/Clms Page number 12><Desc / Clms Page number 12>

l'exécution des instructions, - en tant que moyens de détection, des moyens permettant de détecter que l'enchaînement des instructions ne correspond pas à celui souhaité, - et en tant que moyens de coercition, des moyens permettant d'informer le système de traitement de données et/ou de modifier le fonctionnement de la portion de logiciel protégé lorsque l'enchaînement des instructions ne correspond pas à celui souhaité, * à construire les moyens d'exploitation permettant aussi à l'unité d'exécuter les instructions du jeu d'instructions, l'exécution de ces instructions étant déclenchée par l'exécution dans le système de traitement de données, des commandes d'instructions, et à modifier le logiciel protégé : - en modifiant au moins une portion choisie du source du logiciel protégé : > en transformant les fonctions élémentaires en instructions, > en spécifiant l'enchaînement que doivent respecter au moins certaines des instructions lors de leur exécution dans l'unité, > et en transformant les commandes élémentaires en commandes d'instructions correspondantes aux instructions utilisées, et dans la phase d'utilisation, en présence de l'unité, dans le cas où il est détecté que l'enchaînement des instructions exécutées dans l'unité ne correspond pas à celui souhaité, à en informer le système de traitement de données et/ou à modifier le fonctionnement de la portion du logiciel protégé, de sorte que le fonctionnement du logiciel protégé est modifié.  the execution of the instructions, - as detection means, means for detecting that the sequence of instructions does not correspond to that desired, - and as means of coercion, means for informing the system of data processing and / or modify the operation of the protected software portion when the sequence of instructions does not correspond to that desired, * to build the operating means also allowing the unit to execute the instructions of the game instructions, execution of these instructions being triggered by execution in the data processing system, instruction commands, and modifying the protected software: - by modifying at least a selected portion of the source of the protected software :> by transforming the elementary functions into instructions,> by specifying the sequence that must be followed at least some of the instructions during their execution in the unit,> and by transforming the elementary commands into instructions commands corresponding to the instructions used, and in the use phase, in the presence of the unit, in the case where it is detected that the sequence of instructions executed in the unit does not correspond to that desired, to inform the data processing system and / or to modify the operation of the portion of the protected software, so that the operation of the protected software is changed.

Selon une variante de réalisation, le procédé selon l'invention consiste : 7 dans la phase de protection : à définir : - en tant que jeu d'instructions, un jeu d'instructions dont au moins certaines instructions travaillent sur des registres et utilisent au moins un opérande en vue de rendre un résultat, - pour au moins une partie des instructions travaillant sur des registres :  According to an alternative embodiment, the method according to the invention consists: in the protection phase: to define: as a set of instructions, a set of instructions of which at least certain instructions work on registers and use at the same time minus one operand to render a result, - for at least part of the instructions working on registers:

<Desc/Clms Page number 13><Desc / Clms Page number 13>

> une partie définissant la fonctionnalité de l'instruction, > et une partie définissant l'enchaînement souhaité pour l'exécution des instructions et comportant des champs de bits correspondant à :
0 un champ d'identification de l'instruction,
0 et pour chaque opérande de l'instruction : * un champ drapeau, * et un champ d'identification prévue de l'opérande, pour chaque registre appartenant aux moyens d'exploitation et utilisé par le jeu d'instructions, un champ d'identification générée dans lequel est automatiquement mémorisée l'identification de la dernière instruction ayant rendu son résultat dans ce registre, - en tant que moyens de détection, des moyens permettant, lors de l'exécution d'une instruction, pour chaque opérande, lorsque le champ drapeau l'impose, de contrôler l'égalité entre le champ d'identification générée correspondant au registre utilisé par cet opérande, et le champ d'identification prévue de l'origine de cet opérande, - et en tant que moyens de coercition, des moyens permettant de modifier le résultat des instructions, si au moins une des égalités contrôlées est fausse.
a part defining the functionality of the instruction, and a part defining the desired sequence for the execution of the instructions and comprising bit fields corresponding to:
0 an identification field of the instruction,
0 and for each operand of the instruction: * a flag field, * and an intended identification field of the operand, for each register belonging to the operating means and used by the set of instructions, a field of generated identification in which is automatically stored the identification of the last instruction that has returned its result in this register, - as means of detection, means allowing, during the execution of an instruction, for each operand, when the flag field imposes it, to control the equality between the generated identification field corresponding to the register used by this operand, and the intended field of identification of the origin of this operand, - and as means of coercion, means for modifying the result of the instructions, if at least one of the controlled equalities is false.

Selon une autre forme préférée de réalisation, le procédé selon l'invention consiste : - 7 dans la phase de protection : à définir : - en tant qu'une commande déclenchante, une commande élémentaire ou une commande d'instruction, - en tant qu'une fonction dépendante, une fonction élémentaire ou une instruction, - en tant qu'une consigne, au moins un argument pour une commande déclenchante, correspondant au moins en partie à l'information transmise par le système de traitement de données à l'unité, afin de  According to another preferred embodiment, the method according to the invention consists in: - 7 in the protection phase: to be defined: - as a triggering command, an elementary command or an instruction command, - as a a dependent function, an elementary function or an instruction, as a setpoint, 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 , in order to

<Desc/Clms Page number 14><Desc / Clms Page number 14>

déclencher l'exécution de la fonction dépendante correspondante, - une méthode de renommage des consignes permettant de renommer les consignes afin d'obtenir des commandes déclenchantes à consignes renommées, - et des moyens de rétablissement destinés à être mis en oeuvre dans l'unité au cours de la phase d'utilisation, et permettant de retrouver la fonction dépendante à exécuter, à partir de la consigne renommée, 'à construire des moyens d'exploitation permettant à l'unité de mettre aussi en oeuvre les moyens de rétablissement, 'et à modifier le logiciel protégé : - en choisissant dans le source du logiciel protégé, des commandes déclenchantes, - en modifiant au moins une portion choisie du source du logiciel protégé en renommant les consignes des commandes déclenchantes choisies, afin de dissimuler l'identité des fonctions dépendantes correspondantes, - et en produisant : > la première partie objet du logiciel protégé, cette première partie objet étant telle que lors de l'exécution du logiciel protégé, les commandes déclenchantes à consignes renommées sont exécutées, > et la seconde partie objet du logiciel protégé contenant les moyens d'exploitation mettant aussi en oeuvre les moyens de rétablissement, cette seconde partie objet étant telle que, après chargement dans l'unité et lors de l'exécution du logiciel protégé, l'identité des fonctions dépendantes dont l'exécution est déclenchée par la première partie d'exécution est rétablie au moyen de la seconde partie d'exécution, et les fonctions dépendantes sont exécutées au moyen de la seconde partie d'exécution, et dans la phase d'utilisation : en présence de l'unité et à chaque fois qu'une commande déclenchante à consigne renommée, contenue dans une portion de la première partie  trigger the execution of the corresponding dependent function, - a method of renaming instructions for renaming the instructions to obtain trigger commands with renamed instructions, - and recovery means to be implemented in the unit at during the use phase, and making it possible to find the dependent function to be performed, from the renamed instruction, to build operating means enabling the unit to also implement the recovery means, and to modify the protected software: - by choosing in the source of the protected software, triggering commands, - by modifying at least a chosen portion of the source of the protected software by renaming the instructions of the selected triggering commands, in order to conceal the identity of the functions corresponding dependents, - and by producing:> the first object part of the protected software, this first object part such that when executing the protected software, the trigger commands with renamed setpoints are executed,> and the second object part of the protected software containing the operating means also implementing the recovery means, this second object part being such that, after loading into 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 reestablished by means of the second execution part, and the dependent functions are executed by means of the second execution part, and in the use phase: in the presence of the unit and whenever a trigger command with a renamed setpoint, contained in a portion of the first part

<Desc/Clms Page number 15><Desc / Clms Page number 15>

d'exécution l'impose, à rétablir dans l'unité, l'identité de la fonction dépendante correspondante et à exécuter celle-ci, de sorte que cette portion est exécutée correctement et que, par conséquent, le logiciel protégé est complètement fonctionnel, et en l'absence de l'unité, malgré la demande d'une portion de la première partie d'exécution, de déclencher l'exécution d'une fonction dépendante dans l'unité, à ne pas pouvoir répondre correctement à cette demande, de sorte qu'au moins cette portion n'est pas exécutée correctement et que, par conséquent, le logiciel protégé n'est pas complètement fonctionnel.  executes it, to restore in the unit, the identity of the corresponding dependent function and to execute it, so that this portion is executed correctly and that, therefore, the protected software is fully functional, and in the absence of the unit, despite the request for a portion of the first execution part, to trigger the execution of a dependent function in the unit, to not be able to respond correctly to this request, so that at least this portion is not executed correctly and, therefore, the protected software is not fully functional.

Selon une variante de réalisation, le procédé selon l'invention consiste : - 7 dans la phase de protection : * à définir pour au moins une fonction dépendante, une famille de fonctions dépendantes algorithmiquement équivalentes, mais déclenchées par des commandes déclenchantes dont les consignes renommées sont différentes, 'et à modifier le logiciel protégé : - en choisissant dans le source du logiciel protégé au moins une commande déclenchante à consigne renommée, - et en modifiant au moins une portion choisie du source du logiciel protégé en remplaçant au moins la consigne renommée d'une commande déclenchante à consigne renommée choisie, par une autre consigne renommée, déclenchant une fonction dépendante de la même famille.  According to an alternative embodiment, the method according to the invention consists in: - 7 in the protection phase: * to be defined for at least one dependent function, a family of dependent functions that are algorithmically equivalent, but triggered by triggering commands whose instructions are renamed are different, 'and to modify the protected software: - by choosing in the source of the protected software at least one triggering command with renamed setpoint, - and by modifying at least a selected portion of the protected software source by replacing at least the setpoint renamed of a triggering command with renamed setpoint chosen, by another renamed setpoint, triggering a function dependent on the same family.

Selon une variante de réalisation, le procédé selon l'invention consiste : - 7 dans la phase de protection, à définir, pour au moins une fonction dépendante, une famille de fonctions dépendantes algorithmiquement équivalentes : - en concaténant un champ de bruit à l'information définissant la partie fonctionnelle de la fonction dépendante à exécuter dans l'unité, - ou en utilisant le champ d'identification de l'instruction et les champs d'identification prévue des opérandes.  According to an alternative embodiment, the method according to the invention consists: in the protection phase, in defining, for at least one dependent function, a family of algorithmically equivalent dependent functions: by concatenating a noise field with the information defining the functional part of the dependent function to be performed in the unit, or using the instruction identification field and the intended identification fields of the operands.

Selon une variante de réalisation, le procédé selon l'invention consiste : - 7 dans la phase de protection :  According to an alternative embodiment, the method according to the invention consists of: - 7 in the protection phase:

<Desc/Clms Page number 16><Desc / Clms Page number 16>

à définir : - en tant que méthode de renommage des consignes, une méthode de chiffrement pour chiffrer les consignes, - et en tant que moyens de rétablissement, des moyens mettant en oeuvre une méthode de déchiffrement pour déchiffrer les consignes renommées et rétablir ainsi l'identité des fonctions dépendantes à exécuter dans l'unité.  to define: - as a method of renaming instructions, an encryption method for encrypting the instructions, - and as means of recovery, means implementing a decryption method for decrypting the renamed instructions and thus restore the identity of the dependent functions to be performed in the unit.

Selon une autre forme préférée de réalisation, le procédé selon l'invention consiste : dans la phase de protection : à modifier le logiciel protégé : - en choisissant dans le source du logiciel protégé, au moins un branchement conditionnel effectué dans au moins un traitement algorithmique choisi, - en modifiant au moins une portion choisie du source du logiciel protégé, cette modification étant telle que lors de l'exécution du logiciel protégé, la fonctionnalité d'au moins un branchement conditionnel choisi, est exécutée, au moyen de la seconde partie d'exécution, dans l'unité, - et en produisant : > la première partie objet du logiciel protégé, cette première partie objet étant telle que lors de l'exécution du logiciel protégé, la fonctionnalité d'au moins un branchement conditionnel choisi est exécutée dans l'unité, > et la seconde partie objet du logiciel protégé, cette seconde partie objet étant telle que, après chargement dans l'unité et lors de l'exécution du logiciel protégé, apparaît la seconde partie d'exécution au moyen de laquelle la fonctionnalité d'au moins un branchement conditionnel choisi est exécutée, et dans la phase d'utilisation : en présence de l'unité et à chaque fois qu'une portion de la première partie d'exécution l'impose, à exécuter la fonctionnalité d'au moins un  According to another preferred embodiment, the method according to the invention consists: in the protection phase: to modify the protected software: - by choosing in the source of the protected software, at least one conditional branch made in at least one algorithmic processing chosen, - by modifying at least a selected 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 selected conditional branch is executed, by means of the second part in the unit, - and producing:> the first object part of the protected software, this first object part being such that during the execution of the protected software, the functionality of at least one selected conditional branch is executed in the unit,> and the second object part of the protected software, this second object part being such that, after loading into the unit and lo In the execution of the protected software, the second execution part by means of which the functionality of at least one selected conditional branch is executed, and in the use phase: in the presence of the unit and at each time that a portion of the first execution part requires it, to perform the functionality of at least one

<Desc/Clms Page number 17><Desc / Clms Page number 17>

branchement conditionnel dans l'unité, de sorte que cette portion est exécutée correctement et que, par conséquent, le logiciel protégé est complètement fonctionnel, et en l'absence de l'unité et malgré la demande d'une portion de la première partie d'exécution d'exécuter la fonctionnalité d'un branchement conditionnel dans l'unité, à ne pas pouvoir répondre correctement à cette demande, de sorte qu'au moins cette portion n'est pas exécutée correctement et que par conséquent, le logiciel protégé n'est pas complètement fonctionnel.  conditional branch in the unit, so that this portion is executed correctly and that, therefore, the protected software is fully functional, and in the absence of the unit and despite the request for a portion of the first part of executing the functionality of a conditional branch in the unit, to not being able to respond correctly to this request, so that at least this portion is not executed correctly and that, therefore, the protected software is not completely functional.

Selon une variante de réalisation, le procédé selon l'invention consiste, dans la phase de protection, à modifier le logiciel protégé : - en choisissant, dans le source du logiciel protégé au moins une série de branchements conditionnels choisis, - en modifiant au moins une portion choisie du source du logiciel protégé, cette modification étant telle que lors de l'exécution du logiciel protégé, la fonctionnalité globale d'au moins une série choisie de branchements conditionnels est exécutée au moyen de la seconde partie d'exécution, dans l'unité, - et en produisant : > la première partie objet du logiciel protégé, cette première partie objet étant telle que lors de l'exécution du logiciel protégé, la fonctionnalité d'au moins une série choisie de branchements conditionnels est exécutée dans l'unité, > et la seconde partie objet du logiciel protégé, cette seconde partie objet étant telle que, après chargement dans l'unité et lors de l'exécution du logiciel protégé, apparaît la seconde partie d'exécution au moyen de laquelle la fonctionnalité globale d'au moins une série choisie de branchements conditionnels est exécutée.  According to an alternative embodiment, the method according to the invention consists, in the protection phase, of modifying the protected software: by choosing, in the source of the protected software, at least one series of selected conditional branches, modifying at least a selected portion of the source of the protected software, this modification being such that during the execution of the protected software, the global functionality of at least one selected series of conditional branches is executed by means of the second execution part, in the - by producing:> the first object part of the protected software, this first object part being such that during the execution of the protected software, the functionality of at least one selected series of conditional branches is executed in the unit,> and the second object part of the protected software, this second object part being such that, after loading in the unit and during the execution of the protected software, appears the second execution part by means of which the global functionality of at least one selected series of conditional branches is executed.

Le procédé selon l'invention permet ainsi de protéger l'utilisation d'un logiciel par la mise en oeuvre d'une unité de traitement et de mémorisation qui présente la particularité de contenir une partie du logiciel en cours d'exécution. Il s'ensuit que  The method according to the invention thus makes it possible to protect the use of software by the implementation of a processing and storage unit which has the particularity of containing part of the software being executed. It follows that

<Desc/Clms Page number 18><Desc / Clms Page number 18>

toute version dérivée du logiciel tentant de fonctionner sans l'unité de traitement et de mémorisation impose de recréer la partie du logiciel contenue dans l'unité de traitement et de mémorisation lors de l'exécution, sous peine que cette version dérivée du logiciel ne soit pas complètement fonctionnelle.  any derivative version of the software attempting to operate without the processing and storage unit requires the recreation of the portion of the software contained in the processing and storage unit during execution, otherwise this derivative version of the software may be not completely functional.

Diverses autres caractéristiques ressortent de la description faite ci-dessous en référence aux dessins annexés qui montrent, à titre d'exemples non limitatifs, des formes de réalisation et de mise en oeuvre de l'objet de l'invention.  Various other characteristics appear from the description given below with reference to the accompanying drawings which show, by way of non-limiting examples, embodiments and implementation of the subject of the invention.

Les fig. 10 et 11 sont des schémas blocs fonctionnels illustrant les diverses représentations d'un logiciel respectivement non protégé et protégé par le procédé conforme à l'invention.  Figs. 10 and 11 are functional block diagrams illustrating the various representations of unprotected and protected software respectively by the method according to the invention.

Les fig. 20 à 22 illustrent à titre d'exemples, diverses formes de réalisation d'un dispositif de mise en oeuvre du procédé conforme à l'invention.  Figs. 20 to 22 illustrate by way of examples, various embodiments of a device for implementing the method according to the invention.

Les fig. 30 et 31 sont des schémas blocs fonctionnels explicitant le principe général du procédé conforme à l'invention.  Figs. 30 and 31 are functional block diagrams explaining the general principle of the method according to the invention.

Les fig. 40 à 43 sont des schémas illustrant le procédé de protection selon l'invention mettant en oeuvre le principe de protection par variable.  Figs. 40 to 43 are diagrams illustrating the protection method according to the invention implementing the principle of protection by variable.

Les fig. 50 à 54 sont des schémas illustrant le procédé de protection selon l'invention mettant en oeuvre le principe de protection par dissociation temporelle.  Figs. 50 to 54 are diagrams illustrating the protection method according to the invention implementing the principle of protection by time dissociation.

Les fig. 60 à 64 sont des schémas illustrant le procédé de protection selon l'invention mettant en oeuvre le principe de protection par fonctions élémentaires.  Figs. 60 to 64 are diagrams illustrating the protection method according to the invention implementing the principle of protection by elementary functions.

Les fig. 70 à 74 sont des schémas illustrant le procédé de protection selon l'invention mettant en oeuvre le principe de protection par détection et coercition.  Figs. 70 to 74 are diagrams illustrating the protection method according to the invention implementing the principle of protection by detection and coercion.

Les fig. 80 à 85 sont des schémas illustrant le procédé de protection selon l'invention mettant en oeuvre le principe de protection par renommage.  Figs. 80 to 85 are diagrams illustrating the method of protection according to the invention implementing the principle of protection by renaming.

Les fig. 90 à 92 sont des schémas illustrant le procédé de protection selon l'invention mettant en oeuvre le principe de protection par branchement conditionnel.  Figs. 90 to 92 are diagrams illustrating the protection method according to the invention implementing the principle of protection by conditional branching.

La fig. 100 est un schéma illustrant les différentes phases de mise en oeuvre de l'objet de l'invention.  Fig. 100 is a diagram illustrating the various phases of implementation of the subject of the invention.

La fig. 110 illustre un exemple de réalisation d'un système permettant la mise en oeuvre du stade de construction de la phase de protection conforme à l'invention.  Fig. 110 illustrates an exemplary embodiment of a system for implementing the construction stage of the protection phase according to the invention.

La fig. 120 illustre un exemple de réalisation d'une unité de pré-personnalisation utilisée dans le procédé de protection conforme à l'invention.  Fig. 120 illustrates an exemplary embodiment of a pre-personalization unit used in the protection method according to the invention.

<Desc/Clms Page number 19> <Desc / Clms Page number 19>

La fig. 130 illustre un exemple de réalisation d'un système permettant la mise en oeuvre du stade de confection d'outils de la phase de protection conforme à l'invention.  Fig. 130 illustrates an exemplary embodiment of a system for implementing the stage of making tools of the protection phase according to the invention.

La fig. 140 illustre un exemple de réalisation d'un système permettant la mise en oeuvre du procédé de protection selon l'invention.

Figure img00190001
Fig. 140 illustrates an exemplary embodiment of a system for implementing the protection method according to the invention.
Figure img00190001

La fig. 150 illustre un exemple de réalisation d'une unité de personnalisation utilisée dans le procédé de protection conforme à l'invention. Fig. 150 illustrates an exemplary embodiment of a personalization unit used in the protection method according to the invention.

Dans la suite de la description, les définitions suivantes seront utilisées :
Un système de traitement de données 3 est un système capable d'exécuter un programme.
In the remainder of the description, the following definitions will be used:
A data processing system 3 is a system capable of executing a program.

* Une unité de traitement et de mémorisation est une unité capable : - d'accepter des données fournies par un système de traitement de données 3,

Figure img00190002

- de restituer des données au système de traitement de données 3, - de stocker des données au moins en partie de manière secrète et de conserver au moins une partie de celles-ci même lorsque l'unité est hors tension, - et d'effectuer du traitement algorithmique sur des données, une partie ou la totalité de ce traitement étant secret.
Figure img00190003
* A processing and storage unit is a unit capable of: - accepting data provided by a data processing system 3,
Figure img00190002

to restore data to the data processing system 3, to store data at least in part secretly and to keep at least a part thereof even when the unit is de-energized, and to perform algorithmic processing on data, some or all of this processing being secret.
Figure img00190003

'Une unité 6 est une unité de traitement et de mémorisation mettant en oeuvre le procédé selon l'invention. Unit 6 is a processing and storage unit implementing the method according to the invention.

* Une unité vierge 60 est une unité qui ne met pas en oeuvre le procédé selon l'invention, mais qui peut recevoir des informations la transformant en une unité 6.  * A blank unit 60 is a unit which does not implement the method according to the invention, but which can receive information transforming it into a unit 6.

'Une unité pré-personnalisée 66 est une unité vierge 60 ayant reçue une partie des informations lui permettant, après réception d'informations complémentaires, d'être transformée en une unité 6. A pre-personalized unit 66 is a blank unit 60 which has received a part of the information enabling it, after receiving additional information, to be transformed into a unit 6.

* Le chargement d'informations dans une unité vierge 60 ou une unité pré- personnalisée 66 correspond à un transfert d'informations dans l'unité vierge 60 ou l'unité pré-personnalisée 66, et à un stockage desdites informations transférées. Eventuellement, le transfert peut comporter un  * Loading information into a blank unit 60 or a pre-customized unit 66 corresponds to an information transfer in the blank unit 60 or the pre-customized unit 66, and a storage of said transferred information. Optionally, the transfer may comprise a

<Desc/Clms Page number 20><Desc / Clms Page number 20>

changement de format des informations.  change of format of information.

* Une variable, une donnée ou une fonction contenue dans le système de traitement de données 3 sera indiquée par une majuscule, tandis qu'une variable, une donnée ou une fonction contenue dans l'unité 6 sera indiquée par une minuscule.  * A variable, a datum or a function contained in the data processing system 3 will be indicated by a capital letter, while a variable, a datum or a function contained in the unit 6 will be indicated by a lower case.

. Un "logiciel protégé", est un logiciel ayant été protégé par au moins un principe de protection mis en oeuvre par le procédé conforme à l'invention.  . "Protected software" is software that has been protected by at least one protection principle implemented by the method according to the invention.

* Un"logiciel vulnérable", est un logiciel n'ayant été protégé par aucun principe de protection mis en oeuvre par le procédé conforme à l'invention.  * A "vulnerable software" is software that has not been protected by any protection principle implemented by the method according to the invention.

'Dans le cas où la différenciation entre un logiciel vulnérable et un logiciel protégé n'a pas d'importance, le terme"logiciel"est utilisé. In the case where differentiation between vulnerable software and protected software is not important, the term "software" is used.

'Un logiciel se présente sous diverses représentations selon l'instant considéré dans son cycle de vie : - une représentation source, - une représentation objet, - une distribution,

Figure img00200001

- ou une représentation dynamique. 'A software is presented under various representations according to the moment considered in its life cycle: - a source representation, - an object representation, - a distribution,
Figure img00200001

- or a dynamic representation.

* Une représentation source d'un logiciel est comprise comme une représentation qui après transformation, donne une représentation objet.
Une représentation source peut se présenter selon différents niveaux, d'un niveau conceptuel abstrait à un niveau exécutable directement par un système de traitement de données ou une unité de traitement et de mémorisation.
* A source representation of a software is understood as a representation which after transformation gives an object representation.
A source representation can occur at different levels, from an abstract conceptual level to a level directly executable by a data processing system or a processing and storage unit.

'Une représentation objet d'un logiciel correspond à un niveau de représentation qui après transfert dans une distribution puis chargement dans un système de traitement de données ou une unité de traitement et de mémorisation, peut être exécuté. Il peut s'agir, par exemple, d'un code binaire, d'un code interprété, etc. An object representation of a software corresponds to a level of representation which after transfer into a distribution and then loading into a data processing system or a processing and storage unit, can be executed. It may be, for example, a binary code, an interpreted code, etc.

* Une distribution est un support physique ou virtuel contenant la représentation objet, cette distribution devant être mise à disposition de l'utilisateur pour lui permettre d'utiliser le logiciel.  * A distribution is a physical or virtual medium containing the object representation, this distribution must be made available to the user to enable him to use the software.

<Desc/Clms Page number 21> <Desc / Clms Page number 21>

Une représentation dynamique correspond à l'exécution du logiciel à partir de sa distribution.  A dynamic representation corresponds to the execution of the software from its distribution.

* Une portion de logiciel correspond à une partie quelconque de logiciel et peut, par exemple correspondre, à une ou plusieurs instructions consécutives ou non, et/ou à un ou plusieurs blocs fonctionnels consécutifs ou non, et/ou à une ou plusieurs fonctions, et/ou un ou plusieurs sous programmes, et/ou un ou plusieurs modules. Une portion d'un logiciel peut correspondre aussi à la totalité de ce logiciel.  * A portion of software corresponds to any part of software and may, for example correspond to one or more consecutive instructions or not, and / or to one or more functional blocks consecutive or not, and / or to one or more functions, and / or one or more sub-programs, and / or one or more modules. A portion of a piece of software may also correspond to all of this software.

Les fig. 10 et 11 illustrent les diverses représentations respectivement d'un logiciel vulnérable 2v au sens général, et d'un logiciel protégé 2p selon le procédé conforme à l'invention.  Figs. 10 and 11 illustrate the various representations respectively of a vulnerable software 2v in the general sense, and a protected software 2p according to the method according to the invention.

La fig. 10 illustre diverses représentations d'un logiciel vulnérable 2v apparaissant au cours de son cycle de vie. Le logiciel vulnérable 2v peut ainsi apparaître sous l'une des représentations suivantes : * une représentation source 2vs, * une représentation objet 2vo, 'une distribution 2vd. Cette distribution peut se présenter communément sous la forme d'un moyen de distribution physique tel qu'un CDROM ou sous la forme de fichiers distribués à travers un réseau (GSM, Internet,...), 'ou d'une représentation dynamique 2ve correspondant à l'exécution du logiciel vulnérable 2v sur un système de traitement de données 3 de tous types connus, qui comporte de manière classique, au moins un processeur 4.  Fig. 10 illustrates various representations of a vulnerable software 2v appearing during its life cycle. The vulnerable software 2v can thus appear under one of the following representations: a source representation 2vs, a representation object 2vo, a distribution 2vd. This distribution may be commonly in the form of a physical distribution means such as a CDROM or in the form of files distributed over a network (GSM, Internet, etc.), or a dynamic representation. corresponding to the execution of the vulnerable software 2v on a data processing system 3 of all known types, which conventionally comprises at least one processor 4.

La fig. 11 illustre diverses représentations d'un logiciel protégé 2p apparaissant au cours de son cycle de vie. Le logiciel protégé 2p peut ainsi apparaître sous l'une des représentations suivantes : . une représentation source 2ps comportant une première partie source destinée au système de traitement de données 3 et une seconde partie source destinée à l'unité 6, une partie de ces parties source pouvant communément être contenue dans des fichiers communs, 'une représentation objet 2po comportant une première partie objet 2pos  Fig. 11 illustrates various representations of a protected software 2p appearing during its life cycle. The protected software 2p can thus appear under one of the following representations: a source representation 2ps having a first source portion for the data processing system 3 and a second source portion for the unit 6, a part of these source parts being commonly contained in common files, a 2po object representation comprising a first part object 2pos

<Desc/Clms Page number 22><Desc / Clms Page number 22>

destinée au système de traitement de données 3 et une seconde partie objet
2pou destinée à l'unité 6, 'une distribution 2pd comportant : - une première partie de distribution 2pds contenant la première partie objet 2pos, cette première partie de distribution 2pds étant destinée au système de traitement de données 3 et pouvant se présenter communément sous la forme d'un moyen de distribution physique tel qu'un CDROM, ou sous la forme de fichiers distribués à travers un réseau (GSM, Internet,...), - et une seconde partie de distribution 2pdu se présentant sous la forme : > d'au moins une unité pré-personnalisée 66 sur laquelle une partie de la seconde partie objet 2pou a été chargée et pour laquelle l'utilisateur doit terminer la personnalisation en chargeant des informations complémentaires, afin d'obtenir une unité 6, ces informations complémentaires étant obtenues, par exemple, par chargement ou téléchargement à travers un réseau, > ou d'au moins une unité 6 sur laquelle la seconde partie objet
2pou a été chargée, * ou une représentation dynamique 2pe correspondant à l'exécution du logiciel protégé 2p. Cette représentation dynamique 2pe comporte une première partie d'exécution 2pes qui est exécutée dans le système de traitement de données 3 et une seconde partie d'exécution 2peu qui est exécutée dans l'unité 6.
for the data processing system 3 and a second object part
2pou destined to the unit 6, a distribution 2pd comprising: a first distribution part 2pds containing the first object part 2pos, this first distribution part 2pds being intended for the data processing system 3 and which can present itself commonly under the form of a physical distribution means such as a CDROM, or in the form of files distributed over a network (GSM, Internet, etc.), and a second distribution part 2p of the form: at least one pre-personalized unit 66 on which part of the second object part 2pou has been loaded and for which the user must finish the customization by loading additional information, in order to obtain a unit 6, this additional information being obtained, for example, by loading or downloading through a network,> or at least one unit 6 on which the second object part
2pou has been loaded, * or a 2pe dynamic representation corresponding to the execution of the 2p protected software. This dynamic representation 2pe comprises a first execution part 2pes which is executed in the data processing system 3 and a second execution part 2peu which is executed in the unit 6.

Dans le cas où la différenciation entre les différentes représentations du logiciel protégé 2p n'a pas d'importance, les expressions première partie du logiciel protégé et deuxième partie du logiciel protégé sont utilisées.  In the case where the differentiation between the different representations of the protected software 2p does not matter, the terms first part of the protected software and second part of the protected software are used.

La mise en oeuvre du procédé selon l'invention conformément à la représentation dynamique de la fig. 11, utilise un dispositif Ip comportant un système de traitement de données 3 relié par une liaison 5 à une unité 6. Le système de traitement de données 3 est de tous types et comporte, de manière classique, au moins un processeur 4. Le système de traitement de données 3 peut être un ordinateur ou faire partie, par exemple, de diverses machines, dispositifs, produits fixes ou mobiles, ou  The implementation of the method according to the invention in accordance with the dynamic representation of FIG. 11, uses an Ip device comprising a data processing system 3 connected by a link 5 to a unit 6. The data processing system 3 is of all types and comprises, in a conventional manner, at least one processor 4. The system 3 may be a computer or be part of, for example, various machines, devices, fixed or mobile products, or

<Desc/Clms Page number 23><Desc / Clms Page number 23>

véhicules au sens général. La liaison 5 peut être réalisée de toute manière possible, telle que par exemple par une ligne série, un bus USB, une liaison radio, une liaison optique, une liaison réseau ou une connexion électrique directe sur un circuit du système de traitement de données 3, etc. Il est à noter que l'unité 6 peut éventuellement se trouver physiquement à l'intérieur du même circuit intégré que le processeur 4 du système de traitement de données 3. Dans ce cas, l'unité 6 peut être considérée comme un coprocesseur par rapport au processeur 4 du système de traitement de données 3 et la liaison 5 est interne au circuit intégré.  vehicles in the general sense. The connection 5 can be made in any possible way, such as for example by a serial line, a USB bus, a radio link, an optical link, a network link or a direct electrical connection to a circuit of the data processing system 3 etc. It should be noted that the unit 6 may possibly be physically inside the same integrated circuit as the processor 4 of the data processing system 3. In this case, the unit 6 may be considered as a coprocessor relative to to the processor 4 of the data processing system 3 and the link 5 is internal to the integrated circuit.

Les fig. 20 à 22 montrent de manière illustrative et à titre non limitatif, diverses formes de réalisation du dispositif 1 p permettant la mise en oeuvre du procédé de protection conforme à l'invention.  Figs. 20 to 22 show in an illustrative and nonlimiting manner, various embodiments of the device 1 p for implementing the protection method according to the invention.

Dans l'exemple de réalisation illustré à la fig. 20, le dispositif de protection Ip comporte, en tant que système de traitement de données 3, un ordinateur et, en tant qu'unité 6, une carte à puce 7 et son interface 8 communément appelé lecteur de carte. L'ordinateur 3 est relié à l'unité 6 par une liaison 5. Lors de l'exécution d'un logiciel protégé 2p, la première partie d'exécution 2pes qui est exécutée dans l'ordinateur 3 et la seconde partie d'exécution 2peu qui est exécutée dans la carte à puce 7 et son interface 8, doivent toutes les deux être fonctionnelles afin que le logiciel protégé 2p soit complètement fonctionnel.  In the embodiment shown in FIG. 20, the protection device Ip comprises, as a data processing system 3, a computer and, as a unit 6, a smart card 7 and its interface 8 commonly called card reader. The computer 3 is connected to the unit 6 by a link 5. When running a protected software 2p, the first execution part 2pes which is executed in the computer 3 and the second execution part 2peu that is executed in the smart card 7 and its interface 8, must both be functional so that the protected software 2p is fully functional.

Dans l'exemple de réalisation illustré à la fig. 21, le dispositif de protection Ip équipe un produit 9 au sens général, comportant divers organes 10 adaptés à la ou les fonctions assumées par un tel produit 9. Le dispositif de protection Ip comporte, d'une part, un système de traitement de données 3 embarqué dans le produit 9 et, d'autre part, une unité 6 associée au produit 9. Pour que le produit 9 soit entièrement fonctionnel, le logiciel protégé 2p doit être complètement fonctionnel. Ainsi, lors de l'exécution du logiciel protégé 2p, la première partie d'exécution 2pes qui est exécutée dans le système de traitement de données 3 et la seconde partie d'exécution 2peu qui est exécutée dans l'unité 6, doivent toutes les deux être fonctionnelles. Ce logiciel protégé 2p permet donc de manière indirecte, de protéger contre une utilisation non autorisée, le produit 9 ou l'une de ses fonctionnalités. Par exemple, le produit 9 peut être une installation, un système, une machine, un jouet, un appareil électroménager, un téléphone, etc..  In the embodiment shown in FIG. 21, the protection device Ip equips a product 9 in the general sense, comprising various members 10 adapted to the function or functions assumed by such a product 9. The protection device Ip comprises, on the one hand, a data processing system 3 embedded in the product 9 and, secondly, a unit 6 associated with the product 9. For the product 9 to be fully functional, the protected software 2p must be fully 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 all two to be functional. This 2p protected software therefore indirectly protects the product 9 or one of its functionalities against unauthorized use. For example, the product 9 may be an installation, a system, a machine, a toy, an appliance, a telephone, etc.

<Desc/Clms Page number 24> <Desc / Clms Page number 24>

Dans l'exemple de réalisation illustré à la fig. 22, le dispositif de protection Ip inclut plusieurs ordinateurs, ainsi qu'une partie d'un réseau de communication. Le système de traitement de données 3 est un premier ordinateur relié par une liaison 5 de type réseau, à une unité 6 constituée par un deuxième ordinateur. Pour la mise en oeuvre de l'invention, le deuxième ordinateur 6 est utilisé comme un serveur de licences pour un logiciel protégé 2p. Lors de l'exécution du logiciel protégé 2p, la première partie d'exécution 2pes qui est exécutée dans le premier ordinateur 3 et la seconde partie d'exécution 2peu qui est exécutée dans le deuxième ordinateur 6, doivent toutes les deux être fonctionnelles afin que le logiciel protégé 2p soit complètement fonctionnel.  In the embodiment shown in FIG. 22, the Ip protection device includes several computers, as well as part of a communication network. The data processing system 3 is a first computer connected by a link 5 of the 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 2p protected software. When running 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 2p protected software is fully functional.

La fig. 30 permet d'expliciter de manière plus précise, le procédé de protection conforme à l'invention. Il est à noter qu'un logiciel vulnérable 2v est considéré comme étant exécuté totalement dans un système de traitement de données 3. Par contre, dans le cas de la mise en oeuvre d'un logiciel protégé 2p, le système de traitement de données 3 comporte des moyens de transfert 12 reliés par la liaison 5, à des moyens de transfert 13 faisant partie de l'unité 6 permettant de faire communiquer entre elles, la première partie d'exécution 2pes et la seconde partie d'exécution 2peu du logiciel protégé 2p.  Fig. 30 makes it possible to explain more precisely the protection method according to the invention. It should be noted that a vulnerable software 2v is considered to be completely executed 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 comprises transfer means 12 connected by the link 5, to transfer means 13 forming part of the unit 6 making it possible to communicate with each other, the first execution part 2pes and the second execution part 2peu of the protected software 2p.

Il doit être considéré que les moyens de transfert 12,13 sont de nature logicielle et/ou matérielle et sont aptes à assurer et, éventuellement, à optimiser la communication des données entre le système de traitement de données 3 et l'unité 6.  It must be considered that the transfer means 12, 13 are of a software and / or hardware nature and are capable of ensuring and possibly optimizing the communication of data between the data processing system 3 and the unit 6.

Ces moyens de transfert 12,13 sont adaptés pour permettre de disposer d'un logiciel protégé 2p qui est, de préférence, indépendant du type de la liaison 5 utilisée. Ces moyens de transfert 12,13 ne font pas partie de l'objet de l'invention et ne sont pas décrits plus précisément car ils sont bien connus de l'Homme de l'art. La première partie du logiciel protégé 2p comporte des commandes. Lors de l'exécution du logiciel protégé 2p, l'exécution de ces commandes par la première partie d'exécution 2pes permet la communication entre la première partie d'exécution 2pes et la seconde partie d'exécution 2peu. Dans la suite de la description, ces commandes sont représentées par IN, OUT ou TRIG. These transfer means 12, 13 are adapted to allow to have a protected software 2p which is preferably independent of the type of link 5 used. These transfer means 12, 13 are not part of the object of the invention and are not described more precisely because they are well known to those skilled in the art. The first part of the 2p protected software contains commands. During the execution of the protected software 2p, the execution of these commands by the first execution part 2pes allows the communication between the first execution part 2pes and the second execution part 2peu. In the remainder of the description, these commands are represented by IN, OUT or TRIG.

Tel qu'illustré à la fig. 31, pour permettre la mise en oeuvre de la seconde partie d'exécution 2peu du logiciel protégé 2p, l'unité 6 comporte des moyens de protection  As shown in fig. 31, to allow the implementation of the second 2peu execution part of the protected software 2p, the unit 6 comprises protection means

<Desc/Clms Page number 25><Desc / Clms Page number 25>

14. Les moyens de protection 14 comportent des moyens de mémorisation 15 et des moyens de traitement 16.  14. The protection means 14 comprise storage means 15 and processing means 16.

Par souci de simplification dans la suite de la description, il est choisi de considérer, lors de l'exécution du logiciel protégé 2p, la présence de l'unité 6 ou l'absence de l'unité 6. En réalité, une unité 6 présentant des moyens de protection 14 inadaptés à l'exécution de la seconde partie d'exécution 2peu du logiciel protégé 2p est aussi considérée comme absente, à chaque fois que l'exécution du logiciel protégé 2p n'est pas correct. En d'autres termes : 'une unité 6 physiquement présente et comportant des moyens de protection 14 adaptés à l'exécution de la seconde partie d'exécution 2peu du logiciel protégé 2p, est toujours considérée comme présente, * une unité 6 physiquement présente mais comportant des moyens de protection 14 inadaptés, c'est-à-dire ne permettant pas la mise en oeuvre correcte de la seconde partie d'exécution 2peu du logiciel protégé 2p est considérée comme présente, lorsqu'elle fonctionne correctement, et comme absente lorsqu'elle ne fonctionne pas correctement, 'et une unité 6 physiquement absente est toujours considérée comme absente.  For the sake of simplification in the following description, it is chosen to consider, when running the protected software 2p, the presence of the unit 6 or the absence of the unit 6. In reality, a unit 6 having protection means 14 unsuitable for the execution of the second execution part 2peu of the protected software 2p is also considered as absent, whenever the execution of the protected software 2p is not correct. In other words: a unit 6 physically present and having protection means 14 adapted to the execution of the second execution part 2peu of the protected software 2p, is always considered as present, * a unit 6 physically present but comprising unsuitable protection means 14, that is to say not allowing the correct implementation of the second 2peu execution part of the protected software 2p is considered to be present, when it is functioning correctly, and as absent when 'it does not work properly,' and a physically absent unit 6 is still considered absent.

Dans le cas où l'unité 6 est constituée par une carte à puce 7 et son interface 8, les moyens de transfert 13 sont décomposés en deux parties dont l'une se trouve sur l'interface 8 et dont l'autre se trouve sur la carte à puce 7. Dans cet exemple de réalisation, l'absence de la carte à puce 7 est considérée comme équivalente à l'absence de l'unité 6. En d'autres termes, en l'absence de la carte à puce 7 et/ou de son interface 8, les moyens de protection 14 ne sont pas accessibles et ne permettent donc pas l'exécution de la seconde partie d'exécution 2peu du logiciel protégé, de sorte que le logiciel protégé 2p n'est pas complètement fonctionnel.  In the case where the unit 6 is constituted by a smart card 7 and its interface 8, the transfer means 13 are broken down into two parts, one of which is on the interface 8 and the other of which is on the smart card 7. In this embodiment, the absence of the smart card 7 is considered equivalent to the absence of the unit 6. In other words, in the absence of the smart card 7 and / or its interface 8, the protection means 14 are not accessible and therefore do not allow the execution of the second part of 2peu execution of the protected software, so that the protected software 2p is not completely functional.

Conformément à l'invention, le procédé de protection vise à mettre en oeuvre un principe de protection, dit par"dissociation temporelle", dont une description est effectuée en relation des fig. 50 à 54.  According to the invention, the protection method aims to implement a protection principle, termed "time dissociation", a description of which is made in relation to FIGS. 50 to 54.

Pour la mise en oeuvre du principe de protection par dissociation temporelle, il est choisi, dans le source du logiciel vulnérable 2vs, au moins un traitement algorithmique utilisant au moins un opérande et rendant au moins un résultat. Il est  For the implementation of the principle of protection by time dissociation, it is chosen, in the source of the vulnerable software 2vs, at least one algorithmic processing using at least one operand and rendering at least one result. It is

<Desc/Clms Page number 26><Desc / Clms Page number 26>

aussi choisi au moins une portion du source de logiciel vulnérable 2vs contenant au moins un traitement algorithmique choisi.  also selected at least a portion of the vulnerable software source 2vs containing at least one selected algorithmic processing.

Au moins une portion choisie du source du logiciel vulnérable 2vs est alors modifié, de manière à obtenir le source du logiciel protégé 2ps. Cette modification est telle que notamment : * lors de l'exécution du logiciel protégé 2p, au moins une portion de la première partie d'exécution 2pes, qui est exécutée dans le système de traitement de données 3, prend en compte que la fonctionnalité d'au moins un traitement algorithmique choisi est exécutée dans l'unité 6, 'lors de l'exécution du logiciel protégé 2p, la seconde partie d'exécution
2peu, qui est exécutée dans l'unité 6, exécute au moins la fonctionnalité d'au moins un traitement algorithmique choisi, 'lors de l'exécution du logiciel protégé 2p, chaque traitement algorithmique choisi est décomposé en plusieurs étapes distinctes, à savoir : - étape 1 : la mise à disposition du ou des opérandes pour l'unité 6, - étape 2 : la réalisation dans l'unité 6, de la fonctionnalité du traitement algorithmique choisi utilisant ce ou ces opérandes, - et étape 3 : éventuellement, la mise à disposition par l'unité 6 pour le système de traitement de données 3, du résultat du traitement algorithmique choisi, 'des commandes d'étapes sont définies pour déclencher l'exécution des étapes, 'et un ordonnancement des commandes d'étapes est choisi parmi l'ensemble des ordonnancements permettant l'exécution du logiciel protégé 2p.
At least a selected portion of the source of the vulnerable software 2vs is then modified, so as to obtain the source of the protected software 2ps. This change is such that, in particular: * when running the protected software 2p, at least a 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 algorithmic processing chosen is executed in the unit 6, during the execution of the protected software 2p, the second execution part
2p, which is executed in the unit 6, performs at least the functionality of at least one selected algorithmic processing, when executing the protected software 2p, each algorithmic processing chosen is broken down into several distinct steps, namely: step 1: the provision of the operand (s) for the unit 6, step 2: the realization in the unit 6, of the functionality of the chosen algorithmic processing using this or these operands, and step 3: optionally, the provision by the unit 6 for the data processing system 3, the result of the chosen algorithmic processing, step commands are defined to trigger the execution of the steps, and a scheduling of the step commands is chosen from the set of scheduling allowing the execution of the protected software 2p.

La première partie d'exécution 2pes du logiciel protégé 2p, qui est exécutée dans le système de traitement de données 3, exécute les commandes d'étapes, déclenchant dans l'unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, de chacune des étapes précédemment définies.  The first execution part 2pes of the protected software 2p, which is executed in the data processing system 3, executes the commands of steps, triggering in the unit 6, the execution by means of the second execution part 2s, of each of the previously defined steps.

La fig. 50 illustre un exemple d'exécution d'un logiciel vulnérable 2v. Dans cet exemple, il apparaît, au cours de l'exécution du logiciel vulnérable 2v, dans le système de traitement de données 3, à un instant donné, le calcul de Z < -F (X, Y)  Fig. 50 illustrates an example of running a vulnerable software 2v. In this example, during the execution of the vulnerable software 2v, in the data processing system 3, at a given instant, the calculation of Z <-F (X, Y) appears

<Desc/Clms Page number 27><Desc / Clms Page number 27>

correspondant à l'affectation à une variable Z, du résultat d'un traitement algorithmique représenté par une fonction F et utilisant des opérandes X et Y.

Figure img00270001
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.
Figure img00270001

La fige 51 illustre un exemple de mise en oeuvre de l'invention pour lequel le traitement algorithmique choisi à la fig. 50 est déporté dans l'unité 6. Dans cet exemple, lors de l'exécution dans le système de traitement de données 3 de la première partie d'exécution 2pes du logiciel protégé 2p et en présence de l'unité 6, il apparaît : * à l'instant tl, l'étape 1, à savoir l'exécution d'une commande d'étape CE, déclenchant le transfert des données X et Y depuis le système de traitement de données 3 vers des zones de mémorisation respectivement x et y situées dans les moyens de mémorisation 15 de l'unité 6, cette commande d'étape
CE, étant représentée par OUT (x, X), OUT (y, Y), * à l'instant t2, l'étape 2, à savoir l'exécution d'une commande d'étape CE2, déclenchant dans l'unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, de la fonction f, cette fonction f étant algorithmiquement équivalente à la fonction F et cette commande d'étape CEz étant représentée par TRIG (f). Plus précisément, l'exécution de la commande d'étape CE2 conduit à l'exécution de la fonction f qui se sert du contenu des zones de mémorisation x et y et rend son résultat dans une zone de mémorisation z de l'unité 6, * et à l'instant t3, l'étape 3, à savoir l'exécution d'une commande d'étape CE3 déclenchant le transfert du résultat de la fonction f, contenu dans la zone de mémorisation z de l'unité 6 vers le système de traitement de données 3 afin de l'affecter à la variable Z, cette commande d'étape CE3 étant représentée par IN (z).
FIG. 51 illustrates an exemplary implementation of the invention for which the algorithmic processing chosen in FIG. 50 is deported in the unit 6. In this example, when executing 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, it appears: at time t1, step 1, namely the execution of a step command CE, triggering the transfer of the data X and Y from the data processing system 3 to storage areas respectively x and y located in the storage means 15 of the unit 6, this step control
CE, being represented by OUT (x, X), OUT (y, Y), * at time t2, step 2, namely the execution of a step control CE2, triggering in the unit 6, the execution by means of the second 2-bit execution part of the function f, this function f being algorithmically equivalent to the function F and this step control CEz being represented by TRIG (f). More precisely, the execution of the step control CE2 leads to the execution of the function f which makes use of the contents of the storage zones x and y and renders its result in a storage area z of the unit 6, and at time t3, step 3, namely the execution of a step control CE3 triggering the transfer of the result of the function f, contained in the storage zone z of the unit 6 towards the data processing system 3 to assign it to the variable Z, this step control CE3 being represented by IN (z).

Dans l'exemple illustré, les étapes 1 à 3 sont exécutées successivement. Il est à noter que deux améliorations peuvent être apportées :
La première amélioration concerne le cas où plusieurs traitements algorithmiques sont déportés dans l'unité 6 et au moins le résultat d'un traitement algorithmique est utilisé par un autre traitement algorithmique.
Dans ce cas, certaines étapes de transfert peuvent être éventuellement
In the illustrated example, steps 1 to 3 are executed successively. It should be noted that two improvements can be made:
The first improvement concerns the case where several algorithmic processes are deported in unit 6 and at least the result of an algorithmic processing is used by another algorithmic processing.
In this case, some transfer steps may be

<Desc/Clms Page number 28><Desc / Clms Page number 28>

supprimées.  deleted.

La deuxième amélioration vise à opter pour un ordonnancement pertinent des commandes d'étapes parmi l'ensemble des ordonnancements permettant l'exécution du logiciel protégé 2p. A cet égard, il est préférable de choisir un ordonnancement des commandes d'étapes qui dissocie temporellement l'exécution des étapes, en intercalant, entre celles-ci des portions de code exécuté par le système de traitement de données 3 et comportant ou non des commandes d'étapes servant à la détermination d'autres données. Les fig. 52 et 53 illustrent le principe d'une telle réalisation.  The second improvement is to opt for a relevant ordering of the orders of steps among the set of orders allowing the execution of the protected software 2p. In this respect, it is preferable to choose a scheduling of the step commands which temporally dissociates the execution of the steps, by interposing, between them, portions of code executed by the data processing system 3 and comprising or not step commands for determining other data. Figs. 52 and 53 illustrate the principle of such an embodiment.

La fig. 52 montre un exemple d'exécution d'un logiciel vulnérable 2v. Dans cet exemple, il apparaît, au cours de l'exécution du logiciel vulnérable 2v, dans le système de traitement de données 3, l'exécution de deux traitement algorithmiques aboutissant à la détermination de Z et Z', telles que Z < -F (X, Y) et Z' < -F' (X', Y').  Fig. 52 shows an example of running a vulnerable software 2v. In this example, it appears, during the execution of the vulnerable software 2v, in the data processing system 3, the execution of two algorithmic processing leading to the determination of Z and Z ', such that Z <-F (X, Y) and Z '<- F' (X ', Y').

La fig. 53 illustre un exemple de mise en oeuvre du procédé selon l'invention pour lequel les deux traitements algorithmiques choisis à la fig. 52 sont déportés dans l'unité 6. Selon un tel exemple, lors de l'exécution dans le système de traitement de données 3, de la première partie d'exécution 2pes du logiciel protégé, et en présence de l'unité 6, il apparaît, comme expliqué ci-dessus, l'exécution des commandes d'étapes CE,, CE2, CE3 correspondant à la détermination de Z et des commandes d'étapes CE',, CE92, CE'3 correspondant à la détermination de Z'.  Fig. 53 illustrates an example of implementation of the method according to the invention for which the two algorithmic treatments chosen in FIG. 52 are deported in the unit 6. According to one such example, when executing in the data processing system 3, the first execution part 2pes of the protected software, and in the presence of the unit 6, it appears, as explained above, the execution of the steps commands CE ,, CE2, CE3 corresponding to the determination of Z and the commands of steps CE ',, CE92, CE'3 corresponding to the determination of Z' .

Comme illustré, les commandes d'étapes CE, à CE3 ne sont pas exécutées consécutivement dans la mesure où des commandes d'étapes CE', à CE'3, ainsi que d'autres portions de code sont intercalées. Dans l'exemple, il est ainsi réalisé l'ordonnancement suivant : CE,, portion de code intercalé, CE2, portion de code intercalé, CE' !, portion de code intercalé, CE'2, portion de code intercalé, CE'3, portion de code intercalé, CE3. As illustrated, the CE3 step commands at CE3 are not executed consecutively as step commands CE ', at CE'3, as well as other portions of code are interspersed. In the example, it is thus realized the following ordering: EC ,, portion of code intercalé, CE2, portion of code intercalé, CE '!, Portion of code intercalé, CE'2, portion of code interposed, CE'3 , portion of code interspersed, CE3.

Il est à noter que, lors de l'exécution du logiciel protégé 2p, en présence de l'unité 6, à chaque fois qu'une commande d'étape contenue dans une portion de la première partie d'exécution 2pes du logiciel protégé 2p l'impose, l'étape correspondante est exécutée dans l'unité 6. Ainsi, il apparaît, qu'en présence de l'unité 6, cette portion est exécutée correctement et que, par conséquent, le logiciel  It should be noted that, when running 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 requires it, the corresponding step is executed in the unit 6. Thus, it appears that, in the presence of the unit 6, this portion is executed correctly and that, consequently, the software

<Desc/Clms Page number 29><Desc / Clms Page number 29>

protégé 2p est complètement fonctionnel.  protected 2p is fully functional.

La fig. 54 illustre un exemple de tentative d'exécution du logiciel protégé 2p, alors que l'unité 6 est absente. Dans cet exemple, lors de l'exécution dans le système de traitement de données 3 de la première partie d'exécution 2pes du logiciel protégé 2p : * à l'instant tl, l'exécution de la commande d'étape OUT (x, X), OUT (y, Y) ne peut pas déclencher le transfert des données X et Y vers les zones de mémorisation respectives x et y compte tenu de l'absence de l'unité 6, * à l'instant t2, l'exécution de la commande d'étape TRIG (f) ne peut déclencher l'exécution de la fonction f, compte tenu de l'absence de l'unité
6, et à l'instant t3, l'exécution de la commande d'étape IN (z) ne peut pas déclencher le transfert du résultat de la fonction f, compte tenu de l'absence de l'unité 6.
Fig. 54 illustrates an example of an attempt to execute the protected software 2p, while the unit 6 is absent. In this example, when executing in the data processing system 3 of the first execution part 2pes of the protected software 2p: * at time t1, the execution of the step command OUT (x, X), OUT (y, Y) can not trigger the transfer of the data X and Y to the respective storage areas x and y given the absence of the unit 6, * at time t2, the execution of the step command TRIG (f) can not trigger the execution of the function f, given the absence of the unit
6, and at time t3, the execution of the step command IN (z) can not trigger the transfer of the result of the function f, given the absence of the unit 6.

Il apparaît donc qu'en l'absence de l'unité 6, au moins une demande d'une portion de la première partie d'exécution 2pes de déclencher l'exécution d'une étape dans l'unité 6, ne peut pas être satisfaite correctement, de sorte qu'au moins cette portion n'est pas exécutée correctement et que, par conséquent, le logiciel protégé 2p n'est pas complètement fonctionnel.  It therefore appears that in the absence of the unit 6, at least one request for a portion of the first execution part 2pes to trigger the execution of a step in the unit 6, can not be satisfied, so that at least this portion is not executed correctly and, therefore, the protected software 2p is not fully functional.

Selon une autre caractéristique avantageuse de l'invention, le procédé de protection vise à mettre en oeuvre un principe de protection dit par"variable"dont une description est effectuée en relation des fig. 40 à 43.  According to another advantageous characteristic of the invention, the protection method aims to implement a so-called "variable" protection principle, a description of which is given in relation to FIGS. 40 to 43.

Pour la mise en oeuvre du principe de protection par variable, il est choisi dans le source du logiciel vulnérable 2vs au moins une variable qui lors de l'exécution du logiciel vulnérable 2v, définit partiellement l'état de celui-ci. Par état d'un logiciel, il doit être compris l'ensemble des informations, à un instant donné, nécessaires à l'exécution complète de ce logiciel, de sorte que l'absence d'une telle variable choisie nuit à l'exécution complète de ce logiciel. Il est aussi choisi au moins une portion du source du logiciel vulnérable 2vs contenant au moins une variable choisie.  For the implementation of the principle of protection by variable, it is selected in the source of the vulnerable software 2vs at least one variable that during the execution of the vulnerable software 2v, partially defines the state thereof. By state of a software, it must be understood all the information, at a given moment, necessary to the complete execution of this software, so that the absence of such a chosen variable impedes the complete execution of this software. It is also chosen at least a portion of the source of the vulnerable software 2vs containing at least one chosen variable.

Au moins une portion choisie du source du logiciel vulnérable 2vs est alors modifié, de manière à obtenir le source du logiciel protégé 2ps. Cette modification est telle que lors de l'exécution du logiciel protégé 2p, au moins une portion de la  At least a selected 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 a portion of the

<Desc/Clms Page number 30><Desc / Clms Page number 30>

première partie d'exécution 2pes qui est exécutée dans le système de traitement de données 3, prend en compte qu'au moins une variable choisie ou au moins une copie de variable choisie réside dans l'unité 6.  first execution part 2pes which is executed in the data processing system 3, takes into account that at least one selected variable or at least one copy of the chosen variable resides in the unit 6.

La fig. 40 illustre un exemple d'exécution d'un logiciel vulnérable 2v. Dans cet exemple, il apparaît au cours de l'exécution du logiciel vulnérable 2v dans le système de traitement de données 3 : 'à l'instant tl, l'affectation de la donnée X à la variable Vi, représentée par

Figure img00300001

Vi < -X, * à l'instant t2, l'affectation de la valeur de la variable Vi à la variable Y, représentée par Y < -Vj, * et à l'instant t3, l'affectation de la valeur de la variable VI à la variable Z, représentée par Z < -Vi
La fig. 41 illustre un exemple d'une première forme de mise en oeuvre de l'invention pour laquelle la variable réside dans l'unité 6. Dans cet exemple, lors de l'exécution dans le système de traitement de données 3 de la première partie d'exécution 2pes du logiciel protégé 2p, et en présence de l'unité 6, il apparaît : 'à l'instant ti, l'exécution d'une commande de transfert déclenchant le transfert de la donnée X depuis le système de traitement de données 3 vers la variable vs située dans les moyens de mémorisation 15 de l'unité 6, cette commande de transfert étant représentée par OUT (vi, X) et correspondant au final à l'affectation de la donnée X à la variable vl, 'à l'instant tz, l'exécution d'une commande de transfert déclenchant le transfert de la valeur de la variable v, résidant dans l'unité 6 vers le système de traitement de données 3 afin de l'affecter à la variable Y, cette commande de transfert étant représentée par IN (vi) et correspondant au final à l'affectation de la valeur de la variable v, à la variable Y,
Figure img00300002

'et à l'instant t3, l'exécution d'une commande de transfert déclenchant le transfert de la valeur de la variable Vi résidant dans l'unité 6 vers le système de traitement de données 3 afin de l'affecter à la variable Z, cette commande de transfert étant représentée par IN (vi) et correspondant au final à l'affectation de la valeur de la variable v, à la variable Z. Fig. 40 illustrates an example of execution of a vulnerable software 2v. In this example, it appears during the execution of the vulnerable software 2v in the data processing system 3: 'at time t1, the assignment of the data X to the variable Vi, represented by
Figure img00300001

Vi <-X, * at time t2, the assignment of the value of the variable Vi to the variable Y, represented by Y <-Vj, * and at time t3, the assignment of the value of the variable VI to the variable Z, represented by Z <-Vi
Fig. 41 illustrates an example of a first embodiment of the invention for which the variable resides in the unit 6. In this example, when executing in the data processing system 3 of the first part of 2pes execution of the protected software 2p, and in the presence of the unit 6, it appears: 'at time ti, the execution of a transfer command triggering the transfer of the data X from the data processing system 3 to the variable vs located in the storage means 15 of the unit 6, this transfer command being represented by OUT (vi, X) and corresponding ultimately to the assignment of the data X to the variable v1, 'to the moment tz, the execution of a transfer command triggering the transfer of the value of the variable v, resident in the unit 6 to the data processing system 3 in order to assign it to the variable Y, this transfer command being represented by IN (vi) and corresponding to the final assignment of the value of the variable v, to the variable Y,
Figure img00300002

and at time t3, the execution of a transfer command triggering the transfer of the value of the variable Vi resident in the unit 6 to the data processing system 3 in order to assign it to the variable Z , this transfer command being represented by IN (vi) and corresponding ultimately to the assignment of the value of the variable v, to the variable Z.

<Desc/Clms Page number 31> <Desc / Clms Page number 31>

Il est à noter que lors de l'exécution du logiciel protégé 2p, au moins une variable réside dans l'unité 6. Ainsi, lorsqu'une portion de la première partie d'exécution 2pes du logiciel protégé l'impose, et en présence de l'unité 6, la valeur de cette variable résidant dans l'unité 6 est transférée vers le système de traitement de données 3 pour être utilisée par la première partie d'exécution 2pes du logiciel protégé 2p, de sorte que cette portion est exécutée correctement et que, par conséquent, le logiciel protégé 2p est complètement fonctionnel.  It should be noted 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 imposes it, and in the presence of the unit 6, the value of this 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 that this portion is executed correctly and that, therefore, the 2p protected software is fully functional.

La fig. 42 illustre un exemple d'une deuxième forme de mise en oeuvre de l'invention pour laquelle une copie de la variable réside dans l'unité 6. Dans cet exemple, lors de l'exécution dans le système de traitement de données 3 de la première partie d'exécution 2pes du logiciel protégé 2p, et en présence de l'unité 6, il apparaît : à l'instant tl, l'affectation de la donnée X à la variable V, située dans le système de traitement de données 3, ainsi que l'exécution d'une commande de transfert déclenchant le transfert de la donnée X depuis le système de traitement de données 3 vers la variable vs située dans les moyens de mémorisation 15 de l'unité 6, cette commande de transfert étant représentée par OUT (vi, X), 'à l'instant tz, l'affectation de la valeur de la variable V, à la variable Y, * et à l'instant t3, l'exécution d'une commande de transfert déclenchant le transfert de la valeur de la variable vs résidant dans l'unité 6 vers le système de données 3 afin de l'affecter à la variable Z, cette commande de transfert étant représentée par IN (vi).  Fig. 42 illustrates an example of a second embodiment of the invention for which a copy of the variable resides in the unit 6. In this example, when executing in the data processing system 3 of the first part of execution 2pes of the protected software 2p, and in the presence of the unit 6, it appears: at time tl, the assignment of the data X to the variable V, 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 vs situated in the storage means 15 of the unit 6, this transfer command being represented by OUT (vi, X), 'at the instant tz, the assignment of the value of the variable V, to the variable Y, * and at time t3, the execution of a transfer command which triggers the transfer of the value of the variable vs resident in unit 6 to the data system 3 in order to assign it to the variable Z, this transfer command being represented by IN (vi).

Il est à noter que lors de l'exécution du logiciel protégé 2p, au moins une copie d'une variable réside dans l'unité 6. Ainsi, lorsqu'une portion de la première partie d'exécution 2pes du logiciel protégé 2p l'impose, et en présence de l'unité 6, la valeur de cette copie de variable résidant dans l'unité 6 est transférée vers le système de traitement de données 3 pour être utilisée par la première partie d'exécution 2pes du logiciel protégé 2p, de sorte que cette portion est exécutée correctement et que, par conséquent, le logiciel protégé 2p est complètement fonctionnel.  It should be noted that when running 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 the imposes, and in the presence of the unit 6, the value of this variable copy 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 that this portion is executed correctly and that, therefore, the protected software 2p is fully functional.

La fig. 43 illustre un exemple de tentative d'exécution du logiciel protégé 2p,  Fig. 43 illustrates an example of an attempt to execute the protected software 2p,

<Desc/Clms Page number 32><Desc / Clms Page number 32>

alors que l'unité 6 est absente. Dans cet exemple, lors de l'exécution dans le système de traitement de données 3 de la première partie d'exécution 2pes du logiciel protégé 2p : * à l'instant tl, l'exécution de la commande de transfert OUT (vi, X) ne peut pas déclencher le transfert de la donnée X vers la variable vl, compte tenu de l'absence de l'unité 6, 'à l'instant t2, l'exécution de la commande de transfert IN (va) ne peut pas déclencher le transfert de la valeur de la variable vs vers le système de traitement de données 3, compte tenu de l'absence de l'unité 6, 'et à l'instant t3, l'exécution de la commande de transfert IN (vi) ne peut pas déclencher le transfert de la valeur de la variable v, vers le système de traitement de données 3, compte tenu de l'absence de l'unité 6.  while unit 6 is absent. In this example, when executing in the data processing system 3 of the first execution part 2pes of the protected software 2p: * at time t1, the execution of the transfer command OUT (vi, X ) can not trigger the transfer of the data X to the variable v1, given the absence of the unit 6, 'at time t2, the execution of the transfer command IN (va) can not trigger the transfer of the value of the variable vs to the data processing system 3, given the absence of the unit 6, 'and at time t3, the execution of the transfer command IN (vi ) can not trigger the transfer of the value of the variable v to the data processing system 3, given the absence of the unit 6.

Il apparaît donc qu'en l'absence de l'unité 6, au moins une demande d'une portion de la première partie d'exécution 2pes d'utiliser une variable ou une copie de variable résidant dans l'unité 6, ne peut pas être satisfaite correctement, de sorte qu'au moins cette portion n'est pas exécutée correctement et que, par conséquent, le logiciel protégé 2p n'est pas complètement fonctionnel.  It therefore appears that in the absence of the unit 6, at least one request for a portion of the first execution part 2pes to use a variable or a copy of variable residing in the unit 6, can not not be satisfied properly, so that at least this portion is not executed correctly and, therefore, the protected software 2p is not fully functional.

Il est à noter que les transferts de données entre le système de traitement de données 3 et l'unité 6 illustrés dans les exemples qui précèdent n'utilisent que des affectations simples mais que l'Homme de l'Art saura les combiner avec d'autres

Figure img00320001

opérations pour aboutir à des opérations complexes telles que par exemple OUT (vl, 2 * X + 3) ou bien Z (5 * vI + v2). It should be noted that the data transfers between the data processing system 3 and the unit 6 illustrated in the preceding examples use only simple assignments but that those skilled in the art will know how to combine them with other
Figure img00320001

operations to result in complex operations such as for example OUT (v1, 2 * X + 3) or else Z (5 * vI + v2).

Selon une autre caractéristique avantageuse de l'invention, le procédé de protection vise à mettre en oeuvre un principe de protection, dit par"fonctions élémentaires", dont une description est effectuée en relation des fig. 60 à 64.  According to another advantageous characteristic of the invention, the protection method aims to implement a protection principle, called "elementary functions", a description of which is made in relation to FIGS. 60 to 64.

Pour la mise en oeuvre du principe de protection par fonctions élémentaires, il est défini : un jeu de fonctions élémentaires dont les fonctions élémentaires sont susceptibles d'être exécutées, au moyen de la seconde partie d'exécution
2peu, dans l'unité 6, et éventuellement de transférer des données entre le système de traitement de données 3 et l'unité 6,
For the implementation of the principle of protection by elementary functions, it is defined: a set of elementary functions whose elementary functions are likely to be executed, by means of the second part of execution
2 seconds, in the unit 6, and possibly transfer data between the data processing system 3 and the unit 6,

<Desc/Clms Page number 33><Desc / Clms Page number 33>

et un jeu de commandes élémentaires pour ce jeu de fonctions élémentaires, ces commandes élémentaires étant susceptibles d'être exécutées dans le système de traitement de données 3 et de déclencher l'exécution dans l'unité
6, des fonctions élémentaires correspondantes.
and a set of elementary commands for this set of elementary functions, these elementary commands being able to be executed in the data processing system 3 and to trigger the execution in the unit
6, corresponding elementary functions.

Pour la mise en oeuvre du principe de protection par fonctions élémentaires, il est aussi construit des moyens d'exploitation permettant de transformer une unité vierge 60 en une unité 6 capable d'exécuter les fonctions élémentaires, l'exécution de ces fonctions élémentaires étant déclenchée par l'exécution dans le système de traitement de données 3, de commandes élémentaires.  For the implementation of the principle of protection by elementary functions, it is also constructed operating means for transforming a blank unit 60 into a unit 6 capable of performing the elementary functions, the execution of these elementary functions being triggered by the execution in the data processing system 3, of elementary commands.

Pour la mise en oeuvre du principe de protection par fonctions élémentaires, il est aussi choisi, dans le source du logiciel vulnérable 2vs, au moins un traitement algorithmique utilisant au moins un opérande et rendant au moins un résultat. Il est aussi choisi au moins une portion du source de logiciel vulnérable 2vs contenant au moins un traitement algorithmique choisi.  For the implementation of the protection principle by elementary functions, it is also chosen, in the source of the vulnerable software 2vs, at least one algorithmic processing using at least one operand and rendering at least one result. It is also chosen at least a portion of the vulnerable software source 2vs containing at least one chosen algorithmic processing.

Au moins une portion choisie du source du logiciel vulnérable 2vs est alors modifié, de manière à obtenir le source du logiciel protégé 2ps. Cette modification est telle que notamment : 'lors de l'exécution du logiciel protégé 2p, au moins une portion de la première partie d'exécution 2pes, qui est exécutée dans le système de traitement de données 3, prend en compte que la fonctionnalité d'au moins un traitement algorithmique choisi est exécutée dans l'unité 6, 'lors de l'exécution du logiciel protégé 2p, la seconde partie d'exécution
2peu, qui est exécutée dans l'unité 6, exécute au moins la fonctionnalité d'au moins un traitement algorithmique choisi, * chaque traitement algorithmique choisi est décomposé de manière que lors de l'exécution du logiciel protégé 2p, chaque traitement algorithmique choisi est exécuté, au moyen de la seconde partie d'exécution 2peu, en utilisant des fonctions élémentaires. De préférence, chaque traitement algorithmique choisi est décomposé en fonctions élémentaires fen (avec n variant de 1 à N), à savoir : - éventuellement une ou plusieurs fonctions élémentaires permettant la
At least a selected 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 in particular: when running the protected software 2p, at least a 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 algorithmic processing chosen is executed in the unit 6, during the execution of the protected software 2p, the second execution part
2p, which is executed in unit 6, executes at least the functionality of at least one algorithmic processing chosen, * each algorithmic processing chosen is decomposed so that when running the protected software 2p, each algorithmic processing chosen is executed, by means of the second execution part 2peu, using elementary functions. Preferably, each algorithmic processing chosen is decomposed into elementary functions fen (with n varying from 1 to N), namely: possibly one or more elementary functions allowing the

<Desc/Clms Page number 34><Desc / Clms Page number 34>

mise à disposition d'un ou de plusieurs opérandes pour l'unité 6, - des fonctions élémentaires dont certaines utilisent la ou les opérandes et qui en combinaison, exécutent la fonctionnalité du traitement algorithmique choisi, utilisant ce ou ces opérandes, - et éventuellement une ou plusieurs fonctions élémentaires permettant la mise à disposition par l'unité 6, pour le système de traitement de données 3 du résultat du traitement algorithmique choisi, et un ordonnancement des commandes élémentaires est choisi parmi l'ensemble des ordonnancements permettant l'exécution du logiciel protégé
2p.
provision of one or more operands for the unit 6, - elementary functions some of which use the operand (s) and which in combination perform the functionality of the algorithmic processing chosen, using this operand or these operands, and possibly a or several elementary functions making it possible for the data processing system 3 to make available to the unit 6 the result of the algorithmic processing chosen, and a scheduling of the elementary commands is chosen from among all the scheduling sequences enabling the execution of the software protected
2p.

La première partie d'exécution 2pes du logiciel protégé 2p, qui est exécutée dans le système de traitement de données 3, exécute des commandes élémentaires CFEn (avec n variant de 1 à N), déclenchant dans l'unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, de chacune des fonctions élémentaires fen précédemment définies.  The first execution part 2pes of the protected software 2p, which is executed in the data processing system 3, executes elementary commands CFEn (with n varying from 1 to N), triggering in the unit 6, the execution at means of the second part of execution 2peu, each of the elementary functions fen previously defined.

La fig. 60 illustre un exemple d'exécution d'un logiciel vulnérable 2v. Dans cet exemple, il apparaît, au cours de l'exécution du logiciel vulnérable 2v dans le système de traitement de données 3, à un instant donné, le calcul de Z v F (X, Y) correspondant à l'affectation à une variable Z du résultat d'un traitement algorithmique représenté par une fonction F et utilisant des opérandes X et Y.  Fig. 60 illustrates an example of running a vulnerable software 2v. In this example, it appears, during the execution of the vulnerable software 2v in the data processing system 3, at a given instant, the calculation of Z v 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.

La fig. 61 illustre un exemple de mise en oeuvre de l'invention pour lequel le traitement algorithmique choisi à la fig. 60 est déporté dans l'unité 6. Dans cet exemple, lors de l'exécution dans le système de traitement de données 3 de la première partie d'exécution 2pes du logiciel protégé 2p et en présence de l'unité 6, il apparaît : aux instants tl, t2, l'exécution des commandes élémentaires CFE, CFEz déclenchant dans l'unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, des fonctions élémentaires fel, fez correspondantes qui assurent le transfert des données X, Y depuis le système de traitement de données 3 vers des zones de mémorisation respectivement x, y situées dans les moyens de mémorisation 15 de l'unité 6, ces commandes élémentaires  Fig. 61 illustrates an embodiment of the invention for which the algorithmic processing chosen in FIG. 60 is deported in the unit 6. In this example, when executing 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, it appears: at times t1, t2, the execution of the elementary commands CFE, CFEz triggering in unit 6, the execution by means of the second execution part 2peu, corresponding elementary functions fel, fez which ensure the transfer of data X , Y from the data processing system 3 to storage areas respectively x, y located in the storage means 15 of the unit 6, these elementary commands

<Desc/Clms Page number 35> <Desc / Clms Page number 35>

CFE, CFE2 étant représentées respectivement par OUT (x, X), OUT (y, Y), * aux instants t3 à tel, l'exécution des commandes élémentaires CFE3 à

Figure img00350001

FEN-1, déclenchant dans l'unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, des fonctions élémentaires fe3 à feN-1 correspondantes, ces commandes élémentaires CFE3 à CFEN-i étant représentées, respectivement, par TRIG (fe3) à TRIG (feN-1). La suite des fonctions élémentaires fe3 à feN-1 exécutées en combinaison est algorithmiquement équivalente à la fonction F. Plus précisément, l'exécution de ces commandes élémentaires conduit à l'exécution dans l'unité 6, des fonctions élémentaires fe3 à feN l qui se servent du contenu des zones de mémorisation x, y et rendent le résultat dans une zone de mémorisation z de l'unité 6, * et à l'instant tN, l'exécution d'une commande élémentaire CFEN déclenchant dans l'unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, de la fonction élémentaire feN assurant le transfert du résultat du traitement algorithmique, contenu dans la zone de mémorisation z de l'unité 6 vers le système de traitement de données 3, afin de l'affecter à la variable Z, cette commande élémentaire CFEN étant représentée par IN (z). CFE, CFE2 being respectively represented by OUT (x, X), OUT (y, Y), * at times t3 to such, the execution of the basic commands CFE3 to
Figure img00350001

FEN-1, triggering in the unit 6, the execution by means of the second execution part 2peu, corresponding elementary functions fe3 to feN-1, these elementary commands CFE3 to CFEN-i being represented, respectively, by TRIG (fe3) to TRIG (feN-1). The sequence of the elementary functions fe3 to feN-1 executed in combination is algorithmically equivalent to the function F. More precisely, the execution of these elementary commands leads to the execution in unit 6, of the elementary functions fe3 to feN l which use the contents of the storage areas x, y and return the result in a storage area z of the unit 6, * and at the instant tN, the execution of a basic command CFEN triggering in the unit 6 , the execution by means of the second execution part 2peu, of the elementary function feN ensuring the transfer of the result of the algorithmic processing, contained in the storage area z of the unit 6 to the data processing system 3, in order to assign it to the variable Z, this elementary command CFEN being represented by IN (z).

Dans l'exemple illustré, les commandes élémentaires 1 à N sont exécutées successivement. Il est à noter que deux améliorations peuvent être apportées : * La première amélioration concerne le cas où plusieurs traitements algorithmiques sont déportés dans l'unité 6 et au moins le résultat d'un traitement algorithmique est utilisé par un autre traitement algorithmique.  In the illustrated example, the elementary commands 1 to N are executed successively. It should be noted that two improvements can be made: * The first improvement concerns the case where several algorithmic processes are deported in the unit 6 and at least the result of an algorithmic processing is used by another algorithmic processing.

Dans ce cas, certaines commandes élémentaires servant au transfert, peuvent être éventuellement supprimées.  In this case, some basic commands for the transfer may be deleted.

* La deuxième amélioration vise à opter pour un ordonnancement pertinent des commandes élémentaires parmi l'ensemble des ordonnancements permettant l'exécution du logiciel protégé 2p. A cet égard, il est préférable de choisir un ordonnancement des commandes élémentaires qui dissocie temporellement l'exécution des fonctions élémentaires, en intercalant, entre celles-ci des portions de code exécuté par le système de traitement de données 3 et comportant ou non des commandes élémentaires servant à la  * The second improvement is to opt for a relevant scheduling of the basic commands among the set of orders allowing the execution of the protected software 2p. In this respect, it is preferable to choose an ordering of the elementary commands which temporally dissociates the execution of the elementary functions, by interposing, between them, portions of code executed by the data processing system 3 and comprising or not commands elementary schools

<Desc/Clms Page number 36><Desc / Clms Page number 36>

détermination d'autres données. Les fig. 62 et 63 illustrent le principe d'une telle réalisation.  determination of other data. Figs. 62 and 63 illustrate the principle of such an embodiment.

La fig. 62 montre un exemple d'exécution d'un logiciel vulnérable 2v. Dans cet exemple, il apparaît au cours de l'exécution du logiciel vulnérable 2v, dans le système de traitement de données 3, l'exécution de deux traitements algorithmiques aboutissant à la détermination de Z et Z', telles que Z < -F (X, Y) et Z' < -F' (X', Y').  Fig. 62 shows an example of running a vulnerable software 2v. In this example, it appears during the execution of the vulnerable software 2v, in the data processing system 3, the execution of two algorithmic processes leading to the determination of Z and Z ', such that Z <-F ( X, Y) and Z '<- F' (X ', Y').

La fig. 63 illustre un exemple de mise en oeuvre du procédé selon l'invention pour lequel les deux traitements algorithmiques choisis à la fig. 62 sont déportés dans l'unité 6. Selon un tel exemple, lors de l'exécution dans le système de traitement de données 3 de la première partie d'exécution 2pes du logiciel protégé et en présence de l'unité 6, il apparaît, comme expliqué ci-dessus, l'exécution des commandes élémentaires CFE1 à CFEN correspondant à la détermination de Z et l'exécution des commandes élémentaires CFE'l à CFE'M correspondant à la détermination de Z'. Comme illustré, les commandes élémentaires CFE1 à CFEN ne sont pas exécutées consécutivement, dans la mesure où les commandes élémentaires

Figure img00360001

CFE'l à CFE'M, ainsi que d'autres portions de code sont intercalées. Dans l'exemple il est ainsi réalisé l'ordonnancement suivant : CFE, portion de code intercalé, CFE'I, CFE2, portion de code intercalé, CFE'2, CFE'3, portion de code intercalé, FE F' CFE'4, CFE3, CFE4,..., CFEN, CFE'M. Fig. 63 illustrates an example of implementation of the method according to the invention for which the two algorithmic treatments chosen in FIG. 62 are deported in the unit 6. According to one such example, when executing in the data processing system 3 of the first execution part 2pes of the protected software and in the presence of the unit 6, it appears, as explained above, the execution of elementary commands CFE1 to CFEN corresponding to the determination of Z and the execution of the elementary commands CFE'1 to CFE'M corresponding to the determination of Z '. As illustrated, the CFE1 to CFEN elementary commands are not executed consecutively, since the elementary commands
Figure img00360001

CFE'l to CFE'M, as well as other portions of code are interspersed. In the example, the following scheduling is thus carried out: CFE, portion of code inserted, CFE'I, CFE2, portion of code inserted, CFE'2, CFE'3, portion of code inserted, FE F 'CFE'4 , CFE3, CFE4, ..., CFEN, CFE'M.

Il est à noter que, lors de l'exécution du logiciel protégé 2p, en présence de l'unité 6, à chaque fois qu'une commande élémentaire contenue dans une portion de la première partie d'exécution 2pes du logiciel protégé 2p l'impose, la fonction élémentaire correspondante est exécutée dans l'unité 6. Ainsi, il apparaît, qu'en présence de l'unité 6, cette portion est exécutée correctement et que, par conséquent, le logiciel protégé 2p est complètement fonctionnel.  It should be noted 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 the imposes, the corresponding elementary function is executed in the unit 6. Thus, it appears that in the presence of the unit 6, this portion is executed correctly and that, therefore, the protected software 2p is fully functional.

La fig. 64 illustre un exemple de tentative d'exécution du logiciel protégé 2p, alors que l'unité 6 est absente. Dans cet exemple, lors de l'exécution dans le système de traitement de données 3, de la première partie d'exécution 2pes du logiciel protégé 2p, à tous les instants, l'exécution d'une commande élémentaire ne peut pas déclencher l'exécution de la fonction élémentaire correspondante, en raison de l'absence de l'unité 6. La valeur à affecter à la variable Z ne peut donc pas être déterminée correctement.  Fig. 64 illustrates an example of an attempt to execute the protected software 2p, while the unit 6 is absent. In this example, when executing in the data processing system 3, the first execution part 2pes of the protected software 2p, at all times, the execution of an elementary command can not trigger the execution of the corresponding elementary function, due to the absence of the unit 6. The value to be assigned to the variable Z can not be determined correctly.

<Desc/Clms Page number 37> <Desc / Clms Page number 37>

Il apparaît donc, qu'en l'absence de l'unité 6, au moins une demande d'une portion de la première partie d'exécution 2pes du logiciel protégé 2p, de déclencher l'exécution d'une fonction élémentaire dans l'unité 6 ne peut pas être satisfaite correctement, de sorte qu'au moins cette portion n'est pas exécutée correctement et que, par conséquent, le logiciel protégé 2p n'est pas complètement fonctionnel.  It therefore appears that, in the absence of the unit 6, at least one request for 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 can not be satisfied properly, so at least this portion is not executed correctly and therefore the 2p protected software is not fully functional.

Selon une autre caractéristique avantageuse de l'invention, le procédé de protection vise à mettre en oeuvre un principe de protection, dit par"détection et coercition", dont une description est effectuée en relation des fig. 70 à 74.  According to another advantageous characteristic of the invention, the protection method aims at implementing a protection principle, said by "detection and coercion", a description of which is made in relation to FIGS. 70 to 74.

Pour la mise en oeuvre du principe de protection par détection et coercition, il est défini : 'au moins une caractéristique d'exécution de logiciel susceptible d'être surveillée au moins en partie dans l'unité 6,

Figure img00370001

'au moins un critère à respecter pour au moins une caractéristique d'exécution de logiciel, * des moyens de détection 17 à mettre en oeuvre dans l'unité 6 et permettant de détecter qu'au moins une caractéristique d'exécution de logiciel ne respecte pas au moins un critère associé, 'et des moyens de coercition 18 à mettre en oeuvre dans l'unité 6 et permettant d'informer le système de traitement de données 3 et/ou de modifier l'exécution d'un logiciel, lorsqu'au moins un critère n'est pas respecté. For the implementation of the principle of protection by detection and coercion, it is defined: at least one software execution characteristic that can be monitored at least partly in the unit 6,
Figure img00370001

at least one criterion to respect for at least one software execution characteristic, detection means 17 to be implemented in the unit 6 and making it possible to detect that at least one software execution characteristic does not respect not at least one associated criterion, and means of coercion 18 to be implemented in the unit 6 and making it possible to inform the data processing system 3 and / or to modify the execution of a software, when at least one criterion is not respected.

Pour la mise en oeuvre du principe de protection par détection et coercition, il est aussi construit des moyens d'exploitation permettant de transformer une unité vierge 60 en une unité 6 mettant au moins en oeuvre les moyens de détection 17 et les moyens de coercition 18.  For the implementation of the principle of protection by detection and coercion, it is also built operating means for transforming a blank unit 60 into a unit 6 using at least the detection means 17 and the coercion means 18 .

La fig. 70 illustre les moyens nécessaires à la mise en oeuvre de ce principe de protection par détection et coercition. L'unité 6 comporte les moyens de détection 17 et les moyens de coercition 18 appartenant aux moyens de traitement 16. Les moyens de coercition 18 sont informés du non respect d'un critère par les moyens de détection 17.  Fig. 70 illustrates the means necessary for the implementation of this principle of protection by detection and coercion. The unit 6 comprises the detection means 17 and the coercion means 18 belonging to the processing means 16. The coercion means 18 are informed of the non-respect of a criterion by the detection means 17.

D'une manière plus précise, les moyens de détection 17 utilisent des informations en provenance des moyens de transfert 13 et/ou des moyens de  More precisely, the detection means 17 use information coming from the transfer means 13 and / or means of detection.

<Desc/Clms Page number 38><Desc / Clms Page number 38>

mémorisation 15 et/ou des moyens de traitement 16, afin de surveiller une ou plusieurs caractéristiques d'exécution de logiciel. A chaque caractéristique d'exécution de logiciel est fixé au moins un critère à respecter.  storage and / or processing means 16, for monitoring one or more software execution characteristics. Each software execution characteristic is fixed at least one criterion to be respected.

Dans le cas où il est détecté qu'au moins une caractéristique d'exécution de logiciel ne respecte pas au moins un critère, les moyens de détection 17 en informent les moyens de coercition 18. Ces moyens de coercition 18 sont adaptés pour modifier, de la manière appropriée, l'état de l'unité 6.  In the case where it is detected that at least one software execution characteristic does not comply with at least one criterion, the detection means 17 inform the means of coercion 18. These coercion means 18 are adapted to modify, from the appropriate way, the state of the unit 6.

Pour la mise en oeuvre du principe de protection par détection et coercition, il est aussi choisi : * au moins une caractéristique d'exécution de logiciel à surveiller, parmi les caractéristiques d'exécution susceptibles d'être surveillées,

Figure img00380001

'au moins un critère à respecter pour au moins une caractéristique d'exécution de logiciel choisie, * dans le source du logiciel vulnérable 2vs, au moins un traitement algorithmique pour lequel au moins une caractéristique d'exécution de logiciel est à surveiller, w et dans le source du logiciel vulnérable 2vs, au moins une portion contenant au moins un traitement algorithmique choisi. For the implementation of the principle of protection by detection and coercion, it is also chosen: * at least one software execution characteristic to be monitored, among the execution characteristics that can be monitored,
Figure img00380001

at least one criterion to respect for at least one selected software execution characteristic, 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, w and in the source of the vulnerable software 2vs, at least one portion containing at least one chosen algorithmic processing.

Au moins une portion choisie du source du logiciel vulnérable 2vs est ensuite modifiée, de manière à obtenir le source du logiciel protégé 2ps. Cette modification est telle que notamment lors de l'exécution du logiciel protégé 2p : 'au moins une portion de la première partie d'exécution 2pes, qui est exécutée dans le système de traitement de données 3, prend en compte qu'au moins une caractéristique d'exécution de logiciel choisie est à surveiller, au moins en partie dans l'unité 6, * et la seconde partie d'exécution 2peu, qui est exécutée dans l'unité 6, surveille au moins en partie, une caractéristique d'exécution de logiciel choisie.  At least a selected portion of the source of the vulnerable software 2vs is then modified to obtain the source of the 2ps protected software. This modification is such that in particular when running the protected software 2p: at least a portion of the first execution part 2pes, which is executed in the data processing system 3, takes into account that at least one selected software execution characteristic is to be monitored, at least partly in the unit 6, * and the second execution part 2peu, which is executed in the unit 6, at least partly monitors, a characteristic of selected software execution.

Lors de l'exécution du logiciel protégé 2p, protégé par ce principe de protection par détection et coercition, en présence de l'unité 6 : * tant que tous les critères correspondants à toutes les caractéristiques  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: * as long as all the criteria corresponding to all the characteristics

<Desc/Clms Page number 39><Desc / Clms Page number 39>

d'exécution surveillées de toutes les portions modifiées du logiciel protégé
2p sont respectés, ces portions modifiées du logiciel protégé 2p fonctionnent de manière nominale et, par conséquent, le logiciel protégé 2p fonctionne de manière nominale, et si au moins un des critères correspondant à une caractéristique d'exécution surveillée d'une portion du logiciel protégé 2p n'est pas respecté, le système de traitement de données 3 en est informé et/ou le fonctionnement de la portion du logiciel protégé 2p est modifié, de sorte que le fonctionnement du logiciel protégé 2p est modifié.
monitored execution of all modified portions of the protected software
2p are satisfied, these modified portions of the protected software 2p operate nominally and, therefore, the protected software 2p operates nominally, and if at least one of the criteria corresponding to a monitored execution characteristic of a portion of the software protected 2p is not respected, the data processing system 3 is informed and / or the operation of the portion of the protected software 2p is modified, so that the operation of the protected software 2p is changed.

Bien entendu, en l'absence de l'unité 6, au moins une demande d'une portion de la première partie d'exécution 2pes du logiciel protégé 2p d'utiliser l'unité 6 ne peut pas être satisfaite correctement de sorte qu'au moins cette portion ne n'exécute pas correctement et que par conséquent le logiciel protégé 2p n'est pas complètement fonctionnel.  Of course, in the absence of the unit 6, at least one request for a portion of the first execution part 2pes of the protected software 2p to use the unit 6 can not be satisfied correctly so that at least this portion does not execute properly and therefore the 2p protected software is not fully functional.

Pour la mise en oeuvre du principe de protection par détection et coercition, deux types de caractéristiques d'exécution de logiciel sont utilisées préférentiellement.  For the implementation of the protection principle by detection and coercion, two types of software execution characteristics are used preferentially.

Le premier type de caractéristique d'exécution de logiciel correspond à une variable de mesure de l'exécution d'un logiciel et le second type correspond à un profil d'utilisation d'un logiciel. Ces deux types de caractéristiques peuvent être utilisées indépendamment ou en combinaison.  The first type of software execution characteristic corresponds to a software execution measurement variable and the second type corresponds to a software usage profile. These two types of characteristics can be used independently or in combination.

Pour la mise en oeuvre du principe de protection par détection et coercition utilisant, comme caractéristique d'exécution, une variable de mesure de l'exécution de logiciel, il est défini : * dans les moyens de mémorisation 15, la possibilité de mémoriser au moins une variable de mesure servant à quantifier l'utilisation d'au moins une fonctionnalité de logiciel, * dans les moyens de détection 17, la possibilité de surveiller au moins un seuil associé à chaque variable de mesure, et des moyens d'actualisation permettant de mettre à jour chaque variable de mesure en fonction de l'utilisation de la fonctionnalité à laquelle elle est associée.  For the implementation of the principle of protection by detection and coercion using, as an execution characteristic, a measurement variable of the software execution, it is defined: in the storage means 15, the possibility of memorizing at least a measurement variable for quantifying the use of at least one software functionality, * in the detection means 17, the possibility of monitoring at least one threshold associated with each measurement variable, and updating means allowing to update each measurement variable according to the use of the functionality with which it is associated.

<Desc/Clms Page number 40> <Desc / Clms Page number 40>

Il est aussi construit des moyens d'exploitation mettant en oeuvre, en plus des moyens de détection 17 et des moyens de coercition 18, les moyens d'actualisation.  It is also built operating means implementing, in addition to the detection means 17 and coercion means 18, the updating means.

Il est aussi choisi, dans le source du logiciel vulnérable 2vs : au moins une fonctionnalité du logiciel vulnérable 2v dont l'utilisation est susceptible d'être surveillée grâce à une variable de mesure, au moins une variable de mesure servant à quantifier l'utilisation de ladite fonctionnalité, au moins un seuil associé à la variable de mesure correspondant à une limite d'utilisation de ladite fonctionnalité, et au moins une méthode de mise à jour de la variable de mesure en fonction de l'utilisation de ladite fonctionnalité.  It is also chosen, in the source of the vulnerable software 2vs: at least one feature of the vulnerable software 2v whose use is likely to be monitored by means of a measurement variable, at least one measurement variable used to quantify the use said functionality, at least one threshold associated with the measurement variable corresponding to a limit of use of said functionality, and at least one method of updating the measurement variable according to the use of said functionality.

Le source du logiciel vulnérable 2vs est ensuite modifiée, de manière à obtenir le source du logiciel protégé 2ps, cette modification étant telle que, lors de l'exécution du logiciel protégé 2p, la seconde partie d'exécution 2peu : . actualise la variable de mesure en fonction de l'utilisation de ladite fonctionnalité, * et prend en compte au moins un dépassement de seuil.  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:. updates the measurement variable according to the use of said functionality, * and takes into account at least one threshold overrun.

En d'autres termes, lors de l'exécution du logiciel protégé 2p, la variable de mesure est mise à jour en fonction de l'utilisation de ladite fonctionnalité, et lorsque le seuil est dépassé, les moyens de détection 17 en informent les moyens de coercition 18 qui prennent une décision adaptée pour informer le système de traitement de données 3 et/ou modifier les traitements effectués par les moyens de traitement 16 permettant de modifier le fonctionnement de la portion du logiciel protégé 2p, de sorte que le fonctionnement du logiciel protégé 2p est modifié.  In other words, during the execution of the protected software 2p, the measurement variable is updated according to the use of said functionality, and when the threshold is exceeded, the detection means 17 inform the means Coercion 18 which makes a decision adapted to inform the data processing system 3 and / or modify the processing performed by the processing means 16 to modify the operation of the portion of the protected software 2p, so that the operation of the software protected 2p is changed.

Pour la mise en oeuvre d'une première variante préférée de réalisation du principe de protection par détection et coercition utilisant, comme caractéristique, une variable de mesure, il est défini :

Figure img00400001

'pour au moins une variable de mesure, plusieurs seuils associés, * et des moyens de coercition différents correspondant à chacun de ces seuils. For the implementation of a first preferred embodiment of the protection principle by detection and coercion using, as a characteristic, a measurement variable, it is defined:
Figure img00400001

for at least one measurement variable, several associated thresholds, and different coercion means corresponding to each of these thresholds.

Il est aussi choisi, dans le source du logiciel vulnérable 2vs : * au moins une variable de mesure servant à quantifier l'utilisation d'au moins It is also chosen, in the source of the vulnerable software 2vs: * at least one variable of measurement used to quantify the use of at least

<Desc/Clms Page number 41><Desc / Clms Page number 41>

une fonctionnalité du logiciel et à laquelle doivent être associés plusieurs seuils correspondant à des limites différentes d'utilisation de ladite fonctionnalité, et au moins deux seuils associés à la variable de mesure.  a feature of the software and to which should be associated several thresholds corresponding to different limits of use of said functionality, and at least two thresholds associated with the measurement variable.

Le source du logiciel vulnérable 2vs est ensuite modifié, de manière à obtenir le source du logiciel protégé 2ps, cette modification étant telle que, lors de l'exécution du logiciel protégé 2p, la seconde partie d'exécution 2peu : * actualise la variable de mesure en fonction de l'utilisation de ladite fonctionnalité, 'et prend en compte, de manière différente, les dépassements des divers seuils.  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: * updates the variable of measurement according to the use of said functionality, and takes into account, in a different way, the exceedances of the various thresholds.

En d'autres termes, de manière classique, lors de l'exécution du logiciel protégé 2p, lorsque le premier seuil est dépassé, l'unité 6 informe le système de traitement de données 3 enjoignant le logiciel protégé 2p de ne plus utiliser cette fonctionnalité. Si le logiciel protégé 2p continue d'utiliser cette fonctionnalité, le second seuil pourra être dépassé. Dans le cas où le second seuil est dépassé, les moyens de coercition 18 peuvent rendre inopérante la fonctionnalité choisie et/ou rendre inopérant le logiciel protégé 2p.  In other words, conventionally, during the execution of the protected software 2p, when the first threshold is exceeded, the unit 6 informs the data processing system 3 enjoining the protected software 2p to stop using this feature. . If the 2p protected software continues to use this feature, the second threshold may be exceeded. In the case where the second threshold is exceeded, the coercion means 18 may render the selected functionality inoperative and / or render the protected software 2p inoperative.

Pour la mise en oeuvre d'une deuxième variante préférée de réalisation du principe de protection par détection et coercition utilisant, comme caractéristique, une variable de mesure, il est défini des moyens de rechargement permettant de créditer au moins une utilisation supplémentaire pour au moins une fonctionnalité de logiciel surveillée par une variable de mesure.  For the implementation of a second preferred embodiment of the principle of protection by detection and coercion using, as a characteristic, a measurement variable, it is defined reloading means for crediting at least one additional use for at least one software functionality monitored by a measurement variable.

Il est aussi construit des moyens d'exploitation mettant en oeuvre, en plus des moyens de détection 17, des moyens de coercition 18 et des moyens d'actualisation, les moyens de rechargement.  It is also built operating means implementing, in addition to the detection means 17, the coercion means 18 and the updating means, the reloading means.

Il est aussi choisi, dans le source du logiciel vulnérable 2vs, au moins une variable de mesure servant à limiter l'utilisation d'au moins une fonctionnalité du logiciel et à laquelle au moins une utilisation supplémentaire doit pouvoir être créditée.  It is also chosen, in the source of the vulnerable software 2vs, at least one measurement variable used to limit the use of at least one feature of the software and to which at least one additional use must be able to be credited.

Le source du logiciel vulnérable 2vs est ensuite modifié, de manière à obtenir le source du logiciel protégé 2ps, cette modification étant telle que, dans une phase dite  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, in a so-called phase

<Desc/Clms Page number 42><Desc / Clms Page number 42>

de rechargement, au moins une utilisation supplémentaire d'au moins une fonctionnalité correspondante à une variable de mesure choisie peut être créditée.  reloading, at least one additional use of at least one feature corresponding to a selected measurement variable can be credited.

Il est procédé, dans la phase de rechargement, à la réactualisation d'au moins une variable de mesure choisie et/ou d'au moins un seuil associé, de manière à permettre au moins une utilisation supplémentaire de la fonctionnalité correspondante. En d'autres termes, il est possible, dans la phase de rechargement, de créditer des utilisations supplémentaires d'au moins une fonctionnalité du logiciel protégé 2p.  In the recharging phase, at least one selected measurement variable and / or at least one associated threshold is updated, so as to allow at least one additional use of the corresponding functionality. In other words, it is possible, in the reloading phase, to credit additional uses of at least one feature of the protected software 2p.

Pour la mise en oeuvre du principe de protection par détection et coercition utilisant, comme caractéristique, un profil d'utilisation de logiciel, il est défini en tant que critère à respecter pour ce profil d'utilisation, au moins un trait d'exécution de logiciel.  For the implementation of the principle of protection by detection and coercion using, as a characteristic, a software usage profile, it is defined as a criterion to be respected for this use profile, at least one execution feature of software.

Il est aussi choisi, dans le source du logiciel vulnérable 2vs : . au moins un profil d'utilisation à surveiller, et au moins un trait d'exécution qu'au moins un profil d'utilisation choisi doit respecter.  It is also chosen, in the source of the vulnerable software 2vs:. at least one usage profile to be monitored, and at least one performance trait that at least one chosen usage profile must respect.

Le source du logiciel vulnérable 2vs est ensuite modifié, de manière à obtenir le source du logiciel protégé 2ps, cette modification étant telle que, lors de l'exécution du logiciel protégé 2p, la seconde partie d'exécution 2peu respecte tous les traits d'exécution choisis. En d'autres termes, l'unité 6 surveille elle-même la manière dont la seconde partie d'exécution 2peu est exécutée et peut informer le système de traitement de données 3 et/ou modifier le fonctionnement du logiciel protégé 2p, dans le cas où au moins un trait d'exécution n'est pas respecté.  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 respects all the features of selected execution. In other words, the unit 6 itself monitors the way in which the second execution part 2peu is executed and can inform the data processing system 3 and / or modify the operation of the protected software 2p, in the case where at least one performance trait is not respected.

Lors de l'exécution du logiciel protégé 2p, protégé par ce principe, en présence de l'unité 6 : * tant que tous les traits d'exécution d'une portion de logiciel protégé 2p sont respectés, cette portion du logiciel protégé 2p fonctionne de manière nominale et, par conséquent, le logiciel protégé 2p fonctionne de manière nominale, 'et si au moins un trait d'exécution d'une portion de logiciel protégé 2p n'est pas respecté, le système de traitement de données 3 en est informé et/ou le fonctionnement de la portion du logiciel protégé 2p est modifié, de sorte  During the execution of the protected software 2p, protected by this principle, in the presence of the unit 6: * as long as all the execution lines of a protected software portion 2p are respected, this portion of the protected software 2p works in a nominal way and, therefore, the protected software 2p operates in a nominal way, and if at least one execution feature of a portion of the protected software 2p is not respected, the data processing system 3 is informed and / or the operation of the portion of the protected software 2p is changed, so

<Desc/Clms Page number 43><Desc / Clms Page number 43>

que le fonctionnement de logiciel protégé 2p est éventuellement modifié.  that the operation of protected software 2p is possibly modified.

Il peut être envisagé la surveillance de différents traits d'exécution, comme par exemple la surveillance de la présence d'instructions comportant un marqueur ou la surveillance de l'enchaînement d'exécution pour au moins une partie des instructions.  It can be envisaged the monitoring of different execution features, such as for example the monitoring of the presence of instructions comprising a marker or the monitoring of the execution sequence for at least part of the instructions.

Pour la mise en oeuvre du principe de protection par détection et coercition utilisant comme trait d'exécution à respecter, la surveillance de l'enchaînement d'exécution pour au moins une partie des instructions, il est défini : * un jeu d'instructions dont les instructions sont susceptibles d'être exécutées dans l'unité 6, 'un jeu de commandes d'instruction pour ce jeu d'instructions, ces commandes d'instructions sont susceptibles d'être exécutées dans le système du traitement de données 3. L'exécution de chacune de ces commandes d'instructions dans le système de traitement de données 3 déclenche dans l'unité 6, l'exécution de l'instruction correspondante, * des moyens de détection 17 permettant de détecter que l'enchaînement des instructions ne correspond pas à celui souhaité, * et des moyens de coercition 18 permettant d'informer le système de traitement de données 3 et/ou de modifier l'exécution d'un logiciel lorsque l'enchaînement des instructions ne correspond pas à celui souhaité.  For the implementation of the principle of protection by detection and coercion using as executing force to respect, the supervision of the sequence of execution for at least part of the instructions, it is defined: * a set of instructions whose the instructions are likely to be executed in the unit 6, a set of instruction commands for this set of instructions, these commands of instructions are likely to be executed in the data processing system 3. execution of each of these instruction commands in the data processing system 3 triggers in the unit 6, the execution of the corresponding instruction, * detection means 17 for detecting that the sequence of instructions does not does not correspond to that desired, * and means of coercion 18 for informing the data processing system 3 and / or modify the execution of software when the sequence of instructions does not does not match the desired one.

Il est aussi construit des moyens d'exploitation permettant, à l'unité 6, d'exécuter aussi les instructions du jeu d'instructions, l'exécution de ces instructions étant déclenchée par l'exécution dans le système de traitement de données 3 des commandes d'instructions.  Operating means are also constructed enabling the unit 6 to execute also the instructions of the instruction set, the execution of these instructions being triggered by the execution in the data processing system 3 of the instructions. instruction commands.

Il est aussi choisi, dans le source du logiciel vulnérable 2vs, au moins un traitement algorithmique devant être déporté dans l'unité 6 et pour lequel l'enchaînement d'au moins une partie des instructions est à surveiller.  It is also chosen, in the source of the vulnerable software 2vs, at least one algorithmic processing to be deported in the unit 6 and for which the sequence of at least part of the instructions is to be monitored.

Le source du logiciel vulnérable 2vs est ensuite modifié de manière à obtenir le source du logiciel protégé 2ps, cette modification est telle que, lors de l'exécution du logiciel protégé 2p : la seconde partie d'exécution 2peu exécute au moins la fonctionnalité du traitement algorithmique choisi,  The source of the vulnerable software 2vs is then modified to obtain the source of the protected software 2ps, this modification is such that, during the execution of the protected software 2p: the second execution part 2peu performs at least the functionality of the processing algorithmic chosen,

<Desc/Clms Page number 44><Desc / Clms Page number 44>

* le traitement algorithmique choisi est décomposé en instructions, * l'enchaînement que doivent respecter au moins certaines des instructions lors de leur exécution dans l'unité 6 est spécifié, 'et la première partie d'exécution 2pes du logiciel protégé 2p exécute des commandes d'instructions qui déclenchent l'exécution des instructions dans l'unité 6.  the algorithmic processing chosen is broken down into instructions, the sequence which at least some of the instructions must be respected when they are executed in unit 6 is specified, and the first execution part 2pes of the protected software 2p executes commands instructions that trigger the execution of instructions in unit 6.

Lors de l'exécution du logiciel protégé 2p, protégé par ce principe, en présence de l'unité 6 : * tant que l'enchaînement des instructions d'une portion de logiciel protégé
2p, exécutées dans l'unité 6 correspond à celui souhaité, cette portion de logiciel protégé 2p fonctionne de manière nominale et, par conséquent, le logiciel protégé 2p fonctionne de manière nominale, * et si l'enchaînement des instructions d'une portion de logiciel protégé 2p exécutées dans l'unité 6 ne correspond pas à celui souhaité, le système de traitement de données 3 en est informé et/ou le fonctionnement de la portion du logiciel protégé 2p est modifié, de sorte que le fonctionnement du logiciel protégé 2p est modifié.
When running the protected software 2p, protected by this principle, in the presence of the unit 6: * as the sequence of instructions of a portion of protected software
2p, executed in the unit 6 corresponds to that desired, this protected software portion 2p operates nominally and, therefore, the protected software 2p works in a nominal way, * and if the sequence of instructions of a portion of 2p protected software executed in the unit 6 does not correspond to that desired, the data processing system 3 is informed thereof and / or the operation of the portion of the protected software 2p is modified, so that the operation of the protected software 2p is changed.

La fig. 71 illustre un exemple de mise en oeuvre du principe de protection par détection et coercition utilisant, comme trait d'exécution à respecter la surveillance de l'enchaînement d'exécution d'au moins une partie des instructions, dans le cas où l'enchaînement souhaité est respecté.  Fig. 71 illustrates an example of implementation of the principle of protection by detection and coercion using, as execution line to respect the supervision of the sequence of execution of at least a part of the instructions, in the case where the sequence wished is respected.

La première partie d'exécution 2pes du logiciel protégé 2p, exécutée dans le système de traitement de données 3, exécute des commandes d'instructions CIs déclenchant, dans l'unité 6 l'exécution des instructions ii appartenant au jeu d'instructions. Dans le jeu d'instructions, au moins certaines des instructions comportent chacune une partie définissant la fonctionnalité de l'instruction et une partie permettant de vérifier l'enchaînement souhaité pour l'exécution des instructions. Dans cet exemple, les commandes d'instructions CIi sont représentées par TRIG (ii) et l'enchaînement souhaité pour l'exécution des instructions est in, in+l et in+ 2. L'exécution dans l'unité 6, de l'instruction in donne le résultat a et l'exécution de l'instruction in+1 donne le résultat b. L'instruction in+2 utilise comme opérande, les  The first execution part 2pes of the protected software 2p, executed in the data processing system 3, executes command commands CIs triggering, in the unit 6, the execution of the instructions ii belonging to the instruction set. In the instruction set, at least some of the instructions each include a portion defining the functionality of the instruction and a portion for verifying the desired sequence for executing the instructions. In this example, the instruction commands CIi are represented by TRIG (ii) and the desired sequence for the execution of the instructions is in, in + l and in + 2. The execution in the unit 6, of the instruction in gives the result a and execution of the instruction in + 1 gives the result b. The in + 2 instruction uses as operand the

<Desc/Clms Page number 45><Desc / Clms Page number 45>

résultats a et b des instructions in et in+l et son exécution donne le résultat c.  results a and b of the instructions in and in + l and its execution gives the result c.

Compte tenu que cet enchaînement des instructions exécutées dans l'unité 6 correspond à celui souhaité, il en résulte un fonctionnement normal ou nominal du logiciel protégé 2p.  Given that this sequence of instructions executed in the unit 6 corresponds to that desired, this results in normal or nominal operation of the protected software 2p.

La fig. 72 illustre un exemple de mise en oeuvre du principe de protection par détection et coercition utilisant, comme trait d'exécution à respecter, la surveillance de l'enchaînement d'exécution d'au moins une partie des instructions, dans le cas où l'enchaînement souhaité n'est pas respecté.  Fig. 72 illustrates an example of implementation of the principle of protection by detection and coercion using, as execution feature to be respected, the monitoring of the sequence of execution of at least a part of the instructions, in the case where the desired sequence is not respected.

Selon cet exemple, l'enchaînement souhaité pour l'exécution des instructions est

Figure img00450001

toujours in, in+1 et in+2. Toutefois, l'enchaînement d'exécution des instructions est modifié par le remplacement de l'instruction in par l'instruction i'n, de sorte que l'enchaînement effectivement exécuté est i'n, in+1 et in+2. L'exécution de l'instruction i'n donne le résultat a, c'est-à-dire le même résultat que l'exécution de l'instruction in. Toutefois, au plus tard lors de l'exécution de l'instruction in+2, les moyens de détection 17 détectent que l'instruction i'n ne correspond pas à l'instruction souhaitée pour générer le résultat a utilisé comme opérande de l'instruction in+2. Les moyens de détection 17 en informent les moyens de coercition 18 qui modifient en conséquence, le fonctionnement de l'instruction in+2, de sorte que l'exécution de l'instruction in+2 donne le résultat c'pouvant être différent de c. Bien entendu, si l'exécution de l'instruction i'n donne un résultat a'différent du résultat a de l'instruction in, il est clair que le résultat de l'instruction in+2 peut aussi être différent de c. According to this example, the desired sequence for executing the instructions is
Figure img00450001

always in, in + 1 and in + 2. However, the flow of execution of the instructions is modified by the replacement of the instruction in by the instruction i'n, so that the sequence effectively executed is i'n, in + 1 and in + 2. The execution of the instruction i'n gives the result a, that is to say the same result as the execution of the instruction in. However, at the latest when executing the instruction in + 2, the detection means 17 detect that the instruction i'n does not correspond to the instruction desired to generate the result used as operand of the in + 2 instruction. The detection means 17 inform the coercion means 18 which modifies accordingly, the operation of the instruction in + 2, so that the execution of the instruction in + 2 gives the result c'pouvant to be different from c . Of course, if the execution of the instruction i'n gives a result different from the result a of the instruction in, it is clear that the result of the instruction in + 2 may also be different from c.

Dans la mesure où l'enchaînement d'exécution des instructions exécutées dans l'unité 6 ne correspond pas à celui souhaité, il peut donc être obtenu une modification du fonctionnement du logiciel protégé 2p.  Since the sequence of execution of the instructions executed in the unit 6 does not correspond to that desired, it can be obtained a modification of the operation of the protected software 2p.

Les fig. 73 et 74 illustrent une variante préférée de réalisation du principe de protection par détection et coercition utilisant, comme trait d'exécution à respecter, la surveillance de l'enchaînement d'exécution d'au moins une partie des instructions.  Figs. 73 and 74 illustrate a preferred embodiment of the principle of protection by detection and coercion using, as execution feature to be respected, the monitoring of the sequence of execution of at least a part of the instructions.

Selon cette variante préférée, il est défini un jeu d'instructions dont au moins certaines instructions travaillent sur des registres et utilisent au moins un opérande en vue de rendre un résultat. According to this preferred variant, a set of instructions is defined in which at least some instructions work on registers and use at least one operand in order to render a result.

Comme illustré à la fig. 73, il est défini pour au moins certaines des instructions travaillant sur des registres, une partie PF définissant la fonctionnalité de  As shown in fig. 73, it is defined for at least some of the instructions working on registers, a PF part defining the functionality of

<Desc/Clms Page number 46><Desc / Clms Page number 46>

l'instruction et une partie PE définissant l'enchaînement souhaité pour l'exécution des instructions. La partie PF correspond au code opération connu de l'Homme de l'art. La partie PE définissant l'enchaînement souhaité, comporte des champs de bits correspondant à :

Figure img00460001

'un champ d'identification de l'instruction CII, 'et pour chaque opérande k de l'instruction, avec k variant de 1 à K, et K nombre d'opérandes de l'instruction : - un champ drapeau CDK, indiquant s'il convient de vérifier la provenance de l'opérande k, - et un champ d'identification prévue CIPK de l'opérande, indiquant l'identité attendue de l'instruction ayant généré le contenu de l'opérande k. the instruction and a PE part defining the desired sequence for executing the instructions. The PF part corresponds to the operation code known to those skilled in the art. The part PE defining the desired sequence, comprises bit fields corresponding to:
Figure img00460001

an identification field of the instruction CII, and for each operand k of the instruction, with k varying from 1 to K, and K number of operands of the instruction: a flag field CDK, indicating The source of operand k, and a predicted CIPK identification field of the operand should be verified, indicating the expected identity of the instruction that generated the contents of operand k.

Comme illustré à la fig. 74, le jeu d'instructions comporte V registres appartenant aux moyens de traitement 16, chaque registre étant nommé Ry, avec v variant de 1 à V. Pour chaque registre Ry, il est défini deux champs, à savoir : 'un champ fonctionnel CFy, connu de l'Homme de l'art et permettant de stocker le résultat de l'exécution des instructions, 'et un champ d'identification générée CIGv permettant de mémoriser l'identité de l'instruction ayant généré le contenu du champ fonctionnel
CFv. Ce champ d'identification générée CIGv est mis à jour automatiquement avec le contenu du champ d'identification de l'instruction
CIl ayant généré le champ fonctionnel CFv. Ce champ d'identification générée CIGv n'est pas accessible, ni modifiable par aucune instruction et sert uniquement aux moyens de détection 17.
As shown in fig. 74, the instruction set comprises V registers belonging to the processing means 16, each register being named Ry, with v varying from 1 to V. For each register Ry, two fields are defined, namely: a functional field CFy known to those skilled in the art and making it possible to store the result of the execution of instructions, and a generated identification field CIGv making it possible to store the identity of the instruction that generated the content of the functional field
CFv. This generated identification field CIGv is automatically updated with the contents of the instruction identification field
It has generated the CFv functional field. This generated identification field CIGv is not accessible or modifiable by any instruction and is only used for detection means 17.

Lors de l'exécution d'une instruction, les moyens de détection 17 effectuent pour chaque opérande k les opérations suivantes : 'le champ drapeau CDk est lu, * si le champ drapeau CDk l'impose, le champ d'identification prévue CIPk et le champ d'identification générée CIGv correspondant au registre utilisé par l'opérande k sont lus tous les deux, 'l'égalité des deux champs CIPk et CIGy est contrôlée,  During the execution of an instruction, the detection means 17 perform for each operand k the following operations: the flag field CDk is read, if the flag field CDk imposes it, the intended identification field CIPk and the generated identification field CIGv corresponding to the register used by the operand k are read both, the equality of the two fields CIPk and CIGy is controlled,

<Desc/Clms Page number 47><Desc / Clms Page number 47>

et si l'égalité est fausse, les moyens de détection 17 considèrent que l'enchaînement d'exécution des instructions n'est pas respecté.  and if the equality is false, the detection means 17 consider that the sequence of execution of the instructions is not respected.

Les moyens de coercition 18 permettent de modifier le résultat des instructions lorsque les moyens de détection 17 les ont informés d'un enchaînement d'instructions non respecté. Une réalisation préférentielle consiste à modifier la partie fonctionnelle PF de l'instruction en cours d'exécution ou la partie fonctionnelle PF d'instructions ultérieures.  The coercion means 18 make it possible to modify the result of the instructions when the detection means 17 have informed them of a sequence of instructions not respected. A preferred embodiment consists in modifying the functional part PF of the instruction being executed or the functional part PF of subsequent instructions.

Selon une autre caractéristique avantageuse de l'invention, le procédé de protection vise à mettre en oeuvre un principe de protection, dit par"renommage" dont une description est effectuée en relation des fig. 80 à 85.  According to another advantageous characteristic of the invention, the protection method aims at implementing a protection principle, referred to as "renaming", a description of which is given in relation to FIGS. 80 to 85.

Pour la mise en oeuvre du principe de protection par renommage, il est défini : 'un ensemble de fonctions dépendantes, dont les fonctions dépendantes sont susceptibles d'être exécutées, au moyen de la seconde partie d'exécution
2peu, dans l'unité 6, et éventuellement de transférer des données entre le système de traitement de données 3 et l'unité 6, cet ensemble de fonctions dépendantes pouvant être fini ou infini, 'un ensemble de commandes déclenchantes pour ces fonctions dépendantes, ces commandes déclenchantes étant susceptibles d'être exécutées dans le système de traitement de données 3 et de déclencher dans l'unité 6, des fonctions dépendantes correspondantes, * pour chaque commande déclenchante, une consigne correspondant au moins en partie à l'information transmise par la première partie d'exécution
2pes, à la seconde partie d'exécution 2peu, afin de déclencher l'exécution de la fonction dépendante correspondante, cette consigne se présentant sous la forme d'au moins un argument de la commande déclenchante, * une méthode de renommage des consignes destinée à être mise en oeuvre lors de la modification du logiciel vulnérable, une telle méthode permettant de renommer les consignes afin d'obtenir des commandes déclenchantes à consignes renommées permettant de dissimuler l'identité des fonctions dépendantes correspondantes, * et des moyens de rétablissement 20 destinés à être mis en oeuvre dans l'unité 6 lors de la phase d'utilisation et permettant de retrouver la consigne
For the implementation of the principle of protection by renaming, it is defined: a set of dependent functions, whose dependent functions are likely to be executed, by means of the second execution part
2p, in the unit 6, and possibly to transfer data between the data processing system 3 and the unit 6, this set of dependent functions being finite or infinite, a set of triggering commands for these dependent functions, these triggering commands being capable of being executed in the data processing system 3 and triggering in the unit 6, corresponding dependent functions, * for each triggering command, a setpoint corresponding at least in part to the information transmitted by the first part of execution
2pes, at the second execution part 2peu, to trigger the execution of the corresponding dependent function, this instruction being in the form of at least one argument of the triggering command, * a method of renaming the instructions intended to be implemented during the modification of the vulnerable software, such a method for renaming the instructions to obtain trigger commands with renamed instructions to conceal the identity of the corresponding dependent functions, * and recovery means 20 for be implemented in unit 6 during the use phase and to find the instructions

<Desc/Clms Page number 48><Desc / Clms Page number 48>

initiale, à partir de la consigne renommée, afin de retrouver la fonction dépendante à exécuter.  initial, from the renamed instruction, to find the dependent function to perform.

Pour la mise en oeuvre du principe de protection par renommage, il est aussi construit des moyens d'exploitation permettant de transformer une unité vierge 60 en une unité 6 mettant au moins en oeuvre les moyens de rétablissement 20.  For the implementation of the principle of protection by renaming, it is also built operating means for transforming a blank unit 60 into a unit 6 at least implementing the recovery means 20.

Pour la mise en oeuvre du principe de protection par renommage, il est aussi choisi, dans le source du logiciel vulnérable 2vs : * au moins un traitement algorithmique utilisant au moins un opérande et rendant au moins un résultat, * et au moins une portion du source du logiciel vulnérable 2vs, contenant au moins un traitement algorithmique choisi.  For the implementation of the principle of protection by renaming, it is also chosen, in the source of the vulnerable software 2vs: * at least one algorithmic processing using at least one operand and rendering at least one result, * and at least a portion of the source of the vulnerable software 2vs, containing at least one selected algorithmic processing.

Le source du logiciel vulnérable 2vs est ensuite modifié, de manière à obtenir le source du logiciel protégé 2ps. Cette modification est telle que notamment : * lors de l'exécution du logiciel protégé 2p, au moins une portion de la première partie d'exécution 2pes, qui est exécutée dans le système de traitement de données 3, prend en compte que la fonctionnalité d'au moins un traitement algorithmique choisi est exécutée dans l'unité 6, * lors de l'exécution du logiciel protégé 2p, la seconde partie d'exécution
2peu, qui est exécutée dans l'unité 6, exécute au moins la fonctionnalité d'au moins un traitement algorithmique choisi, * chaque traitement algorithmique choisi est décomposé de manière que lors de l'exécution du logiciel protégé 2p, chaque traitement algorithmique choisi est exécuté, au moyen de la seconde partie d'exécution 2peu, en utilisant des fonctions dépendantes. De préférence, chaque traitement algorithmique choisi est décomposé en fonctions dépendantes fdn (avec n variant de 1 à N), à savoir : - éventuellement une ou plusieurs fonctions dépendantes permettant la mise à disposition d'un ou de plusieurs opérandes pour l'unité 6, - des fonctions dépendantes dont certaines utilisent la ou les opérandes et qui en combinaison, exécutent la fonctionnalité du traitement algorithmique choisi, utilisant ce ou ces opérandes,
The source of the vulnerable software 2vs is then modified, so as to obtain the source of the 2ps protected software. This change is such that, in particular: * when running the protected software 2p, at least a 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 algorithmic processing chosen is executed in the unit 6, while executing the protected software 2p, the second execution part
2p, which is executed in unit 6, executes at least the functionality of at least one algorithmic processing chosen, * each algorithmic processing chosen is decomposed so that when running the protected software 2p, each algorithmic processing chosen is executed, by means of the second 2-bit execution part, using dependent functions. Preferably, each algorithmic processing chosen is decomposed into dependent functions fdn (with n varying from 1 to N), namely: - optionally one or more dependent functions allowing the provision of one or more operands for the unit 6 dependent functions, some of which use the operand (s) and which, in combination, perform the functionality of the algorithmic processing chosen, using this operand or these operands,

<Desc/Clms Page number 49><Desc / Clms Page number 49>

- et éventuellement une ou plusieurs fonctions dépendantes permettant la mise à disposition par l'unité 6, pour le système de traitement de données 3 du résultat du traitement algorithmique choisi, * lors de l'exécution du logiciel protégé 2p, la seconde partie d'exécution
2peu exécute les fonctions dépendantes fdn, 'lors de l'exécution du logiciel protégé 2p, les fonctions dépendantes sont déclenchées par des commandes déclenchantes à consignes renommées, * et un ordonnancement des commandes déclenchantes est choisi parmi l'ensemble des ordonnancements permettant l'exécution du logiciel protégé
2p.
and optionally one or more dependent functions making it possible for the data processing system 3 to make available to the unit 6 the result of the chosen algorithmic processing, while executing the protected software 2p, the second part of execution
2peu executes the dependent functions fdn, 'when running the protected software 2p, the dependent functions are triggered by trigger commands with renamed setpoints, * and a scheduling of the triggering commands is chosen from among all the scheduling allowing the execution protected software
2p.

La première partie d'exécution 2pes du logiciel protégé 2p, exécutée dans le système de traitement de données 3, exécute des commandes déclenchantes à consignes renommées transférant vers l'unité 6 des consignes renommées, et déclenchant dans l'unité 6 le rétablissement au moyen des moyens de rétablissement 20, des consignes, puis l'exécution au moyen de la seconde partie d'exécution 2peu, de chacune des fonctions dépendantes fdn précédemment définies.  The first execution part 2pes of the protected software 2p, executed in the data processing system 3, executes commands with renamed instructions transferring to the unit 6 renamed instructions, and triggering in the unit 6 the recovery by means recovery means 20, setpoints, then the execution by means of the second execution part 2peu, each of the dependent functions fdn previously defined.

En d'autres termes, le principe de protection par renommage consiste à renommer les consignes des commandes déclenchantes, de manière à obtenir des commandes déclenchantes à consignes renommées dont l'exécution dans le système de traitement de données 3, déclenche dans l'unité 6, l'exécution des fonctions dépendantes qui auraient été déclenchées par les commandes déclenchantes à consignes non renommées, sans toutefois que l'examen du logiciel protégé 2p ne permette de déterminer l'identité des fonctions dépendantes exécutées.  In other words, the principle of protection by renaming consists of renaming the instructions of the triggering commands, so as to obtain triggering commands with renamed setpoints whose execution in the data processing system 3, triggers in the unit 6 , the execution of the dependent functions which would have been triggered by the triggering commands with non-renamed setpoints, without however the examination of the protected software 2p making it possible to determine the identity of the dependent functions executed.

La fig. 80 illustre un exemple d'exécution d'un logiciel vulnérable 2v. Dans cet exemple, il apparaît au cours de l'exécution du logiciel vulnérable 2v dans le système de traitement de données 3, à un instant donné, le calcul de Z < -F (X, Y) correspondant à l'affectation à une variable Z du résultat d'un traitement algorithmique représenté par une fonction F et utilisant les opérandes X et Y.  Fig. 80 illustrates an example of running a vulnerable software 2v. In this example, it appears during the execution of the vulnerable software 2v in the data processing system 3, at a given instant, the calculation of Z <-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 the operands X and Y.

Les fig. 81 et 82 illustrent un exemple de mise en oeuvre de l'invention.  Figs. 81 and 82 illustrate an example of implementation of the invention.

La fig. 81 illustre la mise en oeuvre partielle de l'invention. Dans cet exemple, lors de l'exécution dans le système de traitement de données 3 de la première partie  Fig. 81 illustrates the partial implementation of the invention. In this example, when running in the data processing system 3 of the first part

<Desc/Clms Page number 50><Desc / Clms Page number 50>

d'exécution 2pes du logiciel protégé 2p et en présence de l'unité 6, il apparaît : 'aux instants tl, t2, l'exécution des commandes déclenchantes CD,, CD2 déclenchant dans l'unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, des fonctions dépendantes fdl, fd2 correspondantes qui assurent le transfert des données X, Y depuis le système de traitement de données 3 vers des zones de mémorisation respectivement x, y situées dans les moyens de mémorisation 15 de l'unité 6, ces commandes déclenchantes CD,, CD2 étant représentées respectivement par OUT (x, X), OUT (y, Y), * aux instants t3 à tN-i, l'exécution des commandes déclenchantes CD3 à CD-j, déclenchant dans l'unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, des fonctions dépendantes fd3 à fdN-i correspondantes, ces commandes déclenchantes CD3 à CD-i étant représentées, respectivement, par TRIG (fd3) à TRIG (fdN-t). La suite des fonctions dépendantes fd3 à fdN-i exécutées en combinaison est algorithmiquement équivalente à la fonction F. Plus précisément, l'exécution de ces commandes déclenchantes conduit à l'exécution dans l'unité 6, des fonctions dépendantes fd3 à fun, qui se servent du contenu des zones de mémorisation x, y et rendent le résultat dans une zone de mémorisation z de l'unité 6, 'et à l'instant tN, l'exécution d'une commande déclenchante CDN déclenchant dans l'unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, de la fonction dépendante fdN assurant le transfert du résultat du traitement algorithmique contenu dans la zone de mémorisation z de l'unité 6 vers le système de traitement de données 3, afin de l'affecter à la variable Z, cette commande étant représentée par IN (z).  2pes of the protected software 2p and in the presence of the unit 6, it appears: 'at times t1, t2, the execution of the triggering commands CD ,, CD2 triggering in the unit 6, the execution by means of the second execution part 2peu, corresponding dependent functions fdl, fd2 which ensure the transfer of data X, Y from the data processing system 3 to storage areas respectively x, y located in the storage means 15 unit 6, these triggering commands CD ,, CD2 being respectively represented by OUT (x, X), OUT (y, Y), * at times t3 to tN-i, the execution of the triggering commands CD3 to CD-j, triggering in the unit 6, the execution by means of the second execution part 2peu, corresponding dependent functions fd3 to fdN-i, these triggering commands CD3 to CD-i being represented, respectively, by TRIG (fd3) to TRIG (fdN-t). The sequence of the dependent functions fd3 to fdN-i executed in combination is algorithmically equivalent to the function F. More precisely, the execution of these triggering commands leads to the execution in unit 6 of dependent functions fd3 to fun, which use the contents of the storage areas x, y and return the result in a storage area z of the unit 6, and at the instant tN, the execution of a triggering command CDN triggering in the unit 6 , the execution by means of the second execution part 2peu, the dependent function fdN ensuring the transfer of the result of the algorithmic processing contained in the storage area z of the unit 6 to the data processing system 3, so assign it to the variable Z, this command being represented by IN (z).

Dans cet exemple, pour mettre en oeuvre complètement l'invention, il est choisi en tant que consigne, le premier argument des commandes déclenchantes OUT et l'argument des commandes déclenchantes TRIG et IN. Les consignes ainsi choisies sont renommées par la méthode de renommage des consignes. De cette manière, les

Figure img00500001

consignes des commandes déclenchantes CDl à CDN à savoir x, y, fd3, fdN-I, z sont renommées de manière à obtenir respectivement R (x), R (y), R (fd3)..., R (fdN-j), R (z). In this example, to fully implement the invention, it is chosen as a setpoint, the first argument of the triggering commands OUT and the argument of the triggering commands TRIG and IN. The instructions thus chosen are renamed by the method of renaming instructions. In this way,
Figure img00500001

CD1 to CDN trigger commands, ie x, y, fd3, fdN-I, z are renamed to obtain R (x), R (y), R (fd3) ..., R (fdN-j, respectively) ), R (z).

<Desc/Clms Page number 51> <Desc / Clms Page number 51>

La fig. 82 illustre la mise en oeuvre complète de l'invention. Dans cet exemple, lors de l'exécution dans le système de traitement de données 3, de la première partie d'exécution 2pes du logiciel protégé 2p, et en présence de l'unité 6, il apparaît :

Figure img00510001

* aux instants tj, tz, l'exécution des commandes déclenchantes à consignes renommées CDCRI, CDCR2, transférant vers l'unité 6, les consignes renommées R (x), R (y) ainsi que les données X, Y déclenchant dans l'unité
6 le rétablissement au moyen des moyens de rétablissement 20, des consignes renommées pour rétablir les consignes à savoir l'identité des zones de mémorisation, x, y, puis l'exécution au moyen de la seconde partie d'exécution 2peu, des fonctions dépendantes fdl, fd2 correspondantes qui assurent le transfert des données X, Y depuis le système de traitement de données 3 vers les zones de mémorisation respectivement x, y situées dans les moyens de mémorisations 15 de l'unité 6, ces commandes déclenchantes à consignes renommées CDCRI, CDCR2 étant représentées respectivement par OUT (R (x), X), OUT (R (y), Y), * aux instants t3 à tN-i, l'exécution des commandes déclenchantes à consignes renommées CDCR3 à CDCRN l, transférant vers l'unité 6, les consignes renommées R (fd3) à R (fdN-i), déclenchant dans l'unité 6 le rétablissement au moyen des moyens de rétablissement 20, des consignes, à savoir fd3 à
Figure img00510002

fdN-i, puis l'exécution au moyen de la seconde partie d'exécution 2peu, des fonctions dépendantes fd3 à fun-1, ces commandes déclenchantes à consignes renommées CDCR3 à CDCRN étant représentées respectivement par TRIG (R (fd3)) à TRIG (R (fdN-i)), * et à l'instant tN, l'exécution de la commande déclenchante à consigne renommée CDCRN transférant vers l'unité 6, la consigne renommée R (z) déclenchant dans l'unité 6 le rétablissement au moyen des moyens de rétablissement 20, de la consigne à savoir l'identité de la zone de mémorisation z, puis l'exécution au moyen de la seconde partie d'exécution
2peu, de la fonction dépendante fdN assurant le transfert du résultat du traitement algorithmique contenu dans la zone de mémorisation z de l'unité
6 vers le système de traitement de données 3, afin de l'affecter à la variable Fig. 82 illustrates the full implementation of the invention. In this example, when executing in the data processing system 3, the first execution part 2pes of the protected software 2p, and in the presence of the unit 6, it appears:
Figure img00510001

* at the times tj, tz, the execution of the triggering commands with setpoints renamed CDCRI, CDCR2, transferring to the unit 6, the renamed setpoints R (x), R (y) as well as the data X, Y triggering in the unit
6 the recovery by means of the recovery means 20, setpoints renamed to restore the instructions namely the identity of the storage areas, x, y, then the execution by means of the second execution part 2, dependent functions fd1, fd2 corresponding to the transfer of the data X, Y from the data processing system 3 to the storage areas respectively x, y located in the storage means 15 of the unit 6, these triggering commands with renamed instructions CDCRI , CDCR2 being respectively represented by OUT (R (x), X), OUT (R (y), Y), * at times t3 to tN-i, the execution of the triggering commands with renamed setpoints CDCR3 to CDCRN 1, transferring to unit 6, the renamed instructions R (fd3) to R (fdN-i), triggering in unit 6 the recovery by means of recovery means 20, instructions, namely fd3 to
Figure img00510002

fdN-i, then the execution by means of the second execution part 2peu, of the dependent functions fd3 to fun-1, these triggering commands with renamed setpoints CDCR3 to CDCRN being respectively represented by TRIG (R (fd3)) to TRIG (R (fdN-i)), * and at the instant tN, the execution of the triggering command with a renamed setpoint CDCRN transferring to the unit 6, the renamed setpoint R (z) triggering in the unit 6 the recovery by means of the recovery means 20, of the instruction, namely the identity of the storage zone z, then the execution by means of the second execution part
2h, of the dependent function fdN ensuring the transfer of the result of the algorithmic processing contained in the storage zone z of the unit
6 to the data processing system 3, in order to assign it to the variable

<Desc/Clms Page number 52> <Desc / Clms Page number 52>

Z, cette commande déclenchante à consigne renommée CDCRN étant représentée par IN (R (z)). Z, this triggering command with renamed setpoint CDCRN being represented by IN (R (z)).

Dans l'exemple illustré, les commandes déclenchantes à consignes renommées 1 à N sont exécutées successivement. Il est à noter que deux améliorations peuvent être apportées :
La première amélioration concerne le cas où plusieurs traitements algorithmiques sont déportés dans l'unité 6 et au moins le résultat d'un traitement algorithmique est utilisé par un autre traitement algorithmique.
In the example illustrated, the triggering commands with setpoints renamed 1 to N are executed successively. It should be noted that two improvements can be made:
The first improvement concerns the case where several algorithmic processes are deported in unit 6 and at least the result of an algorithmic processing is used by another algorithmic processing.

Dans ce cas, certaines commandes déclenchantes à consignes renommées servant au transfert, peuvent être éventuellement supprimées.  In this case, certain trigger commands with renamed setpoints used for the transfer can be optionally deleted.

'La deuxième amélioration vise à opter pour un ordonnancement pertinent des commandes déclenchantes à consignes renommées parmi l'ensemble des ordonnancements permettant l'exécution du logiciel protégé 2p. A cet égard, il est préférable de choisir un ordonnancement des commandes déclenchantes à consignes renommées qui dissocie temporellement l'exécution des fonctions dépendantes, en intercalant, entre celles-ci des portions de code exécuté par le système de traitement de données 3 et comportant ou non des commandes déclenchantes à consignes renommées servant à la détermination d'autres données. Les fig. 83 et 84 illustrent le principe d'une telle réalisation.  The second improvement is to opt for a relevant scheduling of the orders triggers renamed instructions among the set of orders allowing the execution of the protected software 2p. In this respect, it is preferable to choose a scheduling of the triggering commands with renamed setpoints which temporally dissociates the execution of the dependent functions, by interposing, between them, portions of code executed by the data processing system 3 and comprising or no triggering commands with renamed setpoints for the determination of other data. Figs. 83 and 84 illustrate the principle of such an embodiment.

La fig. 83 montre un exemple d'exécution d'un logiciel vulnérable 2v. Dans cet exemple, il apparaît, au cours de l'exécution du logiciel vulnérable 2v, dans le système de traitement de données 3, l'exécution de deux traitement algorithmiques aboutissant à la détermination de Z et Z', telles que Z < -F (X, Y) et Z'--F' (X', Y').  Fig. 83 shows an example of running a vulnerable software 2v. In this example, it appears, during the execution of the vulnerable software 2v, in the data processing system 3, the execution of two algorithmic processing leading to the determination of Z and Z ', such that Z <-F (X, Y) and Z '- F' (X ', Y').

La fig. 84 illustre un exemple de mise en oeuvre du procédé selon l'invention pour lequel les deux traitements algorithmiques choisis à la fig. 83 sont déportés dans l'unité 6. Selon un tel exemple, lors de l'exécution dans le système de traitement de données 3 de la première partie d'exécution 2pes du logiciel protégé et en présence de l'unité 6, il apparaît, comme expliqué ci-dessus, l'exécution des commandes déclenchantes à consignes renommées CDCR1 à CDCRN correspondant à la détermination de Z et l'exécution des commandes déclenchantes à consignes  Fig. 84 illustrates an example of implementation of the method according to the invention for which the two algorithmic treatments chosen in FIG. 83 are deported in the unit 6. According to one such example, when executing in the data processing system 3 of the first execution part 2pes of the protected software and in the presence of the unit 6, it appears, as explained above, the execution of the triggering commands with renamed setpoints CDCR1 to CDCRN corresponding to the determination of Z and the execution of the triggering commands to instructions

<Desc/Clms Page number 53><Desc / Clms Page number 53>

renommées CDCR'l à CDCR'M correspondant à la détermination de Z'. Comme illustré, les commandes déclenchantes à consignes renommées CDCR1 à CDCRN ne sont pas exécutées consécutivement, dans la mesure où les commandes déclenchantes à consignes renommées CDCR'l à CDCR'M ainsi que d'autres portions de code sont intercalées. Dans l'exemple, il est ainsi réalisé

Figure img00530001

l'ordonnancement suivant : CDCR1, portion de code intercalé, CDCR'h CDCR2, portion de code intercalé, CDCR'2, CDCR'3, portion de code intercalé, CDCR'4, CDCR3, CDCR4,..., CDCRN, CDCR'M. renamed CDCR'l to CDCR'M corresponding to the determination of Z '. As illustrated, the CDCR1 to CDCRN setpoint trigger commands are not executed consecutively, since the CDCR'l to CDCR'M setpoint trigger commands and other code portions are interspersed. In the example, it is thus realized
Figure img00530001

the following ordering: CDCR1, intercalated code portion, CDCR'h CDCR2, intercalated code portion, CDCR'2, CDCR'3, intercalated code portion, CDCR'4, CDCR3, CDCR4, ..., CDCRN, CDCR 'Mr.

Il est à noter que, lors de l'exécution d'une portion de la première partie d'exécution 2pes du logiciel protégé 2p, les commandes déclenchantes à consignes renommées exécutées dans le système de traitement de données 3, déclenchent dans l'unité 6 le rétablissement de l'identité des fonctions dépendantes correspondantes puis l'exécution de celles-ci. Ainsi, il apparaît qu'en présence de l'unité 6, cette portion est exécutée correctement et que, par conséquent, le logiciel protégé 2p est complètement fonctionnel.  It should be noted that, during the execution of a portion of the first execution part 2pes of the protected software 2p, the triggering commands with renamed setpoints executed in the data processing system 3, trigger in the unit 6 the restoration of the identity of the corresponding dependent functions and the execution thereof. Thus, it appears that in the presence of the unit 6, this portion is executed correctly and that, therefore, the protected software 2p is fully functional.

La fig. 85 illustre un exemple de tentative d'exécution du logiciel protégé 2p, alors que l'unité 6 est absente. Dans cet exemple, lors de l'exécution dans le système de traitement de données 3 de la première partie d'exécution 2pes du logiciel protégé 2p, à tous les instants, l'exécution d'une commande déclenchante à consigne renommée ne peut pas déclencher le rétablissement de la consigne ni l'exécution de la fonction dépendante correspondante, en raison de l'absence de l'unité 6. La valeur à affecter à la variable Z ne peut donc pas être déterminée correctement.  Fig. 85 illustrates an example of an attempt to execute the protected software 2p, while the unit 6 is absent. In this example, when executing in the data processing system 3 of the first execution part 2pes of the protected software 2p, at all times, the execution of a trigger command with a renamed setpoint can not trigger the restoration of the setpoint and the execution of the corresponding dependent function, due to the absence of the unit 6. The value to be assigned to the variable Z can not therefore be determined correctly.

Il apparaît donc, qu'en l'absence de l'unité 6, au moins une demande d'une portion de la première partie d'exécution 2pes du logiciel protégé 2p, de déclencher le rétablissement d'une consigne et l'exécution d'une fonction dépendante dans l'unité 6 ne peut pas être satisfaite correctement, de sorte qu'au moins cette portion n'est pas exécutée correctement et que, par conséquent, le logiciel protégé 2p n'est pas complètement fonctionnel.  It therefore appears that, in the absence of the unit 6, at least one request for a portion of the first execution part 2pes of the protected software 2p, to trigger the restoration of a setpoint and the execution of a dependent function in the unit 6 can not be satisfactorily satisfied, so that at least this portion is not executed correctly and, therefore, the protected software 2p is not fully functional.

Grâce à ce principe de protection par renommage, l'examen dans le logiciel protégé 2p des commandes déclenchantes à consignes renommées ne permet pas de déterminer l'identité des fonctions dépendantes devant être exécutées dans l'unité 6. Il est à noter que le renommage des consignes est effectué lors de la modification du  Thanks to this principle of protection by renaming, the examination in the protected software 2p of the triggering commands with renamed setpoints does not make it possible to determine the identity of the dependent functions to be executed in the unit 6. It should be noted that the renaming instructions are made when changing the

<Desc/Clms Page number 54><Desc / Clms Page number 54>

logiciel vulnérable 2v en un logiciel protégé 2p.  2v vulnerable software into a 2p protected software.

Selon une variante du principe de protection par renommage, il est défini pour au moins une fonction dépendante, une famille de fonctions dépendantes algorithmiquement équivalentes mais déclenchées par des commandes déclenchantes à consignes renommées différentes. Selon cette variante, pour au moins un traitement algorithmique utilisant des fonctions dépendantes, ce traitement algorithmique est décomposé en fonctions dépendantes qui pour au moins l'une d'entre elles est remplacée par une fonction dépendante de la même famille au lieu de conserver plusieurs occurrences de la même fonction dépendante. A cette fin, des commandes déclenchantes à consignes renommées sont modifiées pour tenir compte du remplacement de fonctions dépendantes par des fonctions dépendantes de la même famille. En d'autres termes, deux fonctions dépendantes de la même famille ont des consignes différentes et par conséquent des commandes déclenchantes à consignes renommées différentes et, il n'est pas possible, à l'examen du logiciel protégé 2p, de déceler que les fonctions dépendantes appelées sont algorithmiquement équivalentes.  According to a variant of the principle of protection by renaming, it is defined for at least one dependent function, a family of dependent functions algorithmically equivalent but triggered by triggering commands with different renamed setpoints. According to this variant, for at least one algorithmic processing using dependent functions, this algorithmic processing is decomposed into dependent functions which for at least one of them is replaced by a function dependent on the same family instead of keeping several occurrences of the same dependent function. For this purpose, trigger commands with renamed setpoints are modified to take account of the replacement of dependent functions by functions dependent on the same family. In other words, two dependent functions of the same family have different setpoints and therefore trigger commands with different renamed setpoints, and it is not possible, on examination of the protected software 2p, to detect that the functions called dependents are algorithmically equivalent.

Selon une première réalisation préférée de la variante du principe de protection par renommage, il est défini pour au moins une fonction dépendante, une famille de fonctions dépendantes algorithmiquement équivalente, en concaténant un champ de bruit à l'information définissant la partie fonctionnelle de la fonction dépendante à exécuter dans l'unité 6.  According to a first preferred embodiment of the variant of the protection principle by renaming, it is defined for at least one dependent function, a family of algorithmically equivalent dependent functions, by concatenating a noise field to the information defining the functional part of the function. dependent to execute in unit 6.

* Selon une deuxième réalisation préférée de la variante du principe de protection par renommage, il est défini pour au moins une fonction dépendante, une famille de fonctions dépendantes algorithmiquement équivalente en utilisant des champs d'identification. According to a second preferred embodiment of the variant of the protection principle by renaming, a family of dependent algorithmically equivalent functions is defined for at least one dependent function by using identification fields.

Selon une variante préférée de réalisation du principe de protection par renommage, il est défini comme méthode de renommage des consignes une méthode de chiffrement permettant de chiffrer les consignes pour les transformer en consignes renommées. Il est rappelé que le renommage des consignes est effectué dans la phase de protection. Pour cette variante préférée, les moyens de rétablissement 20 sont des moyens mettant en oeuvre une méthode de déchiffrement permettant de déchiffrer les consignes renommées et de rétablir ainsi l'identité des fonctions dépendantes à exécuter dans l'unité 6. Ces moyens de rétablissement sont mis en oeuvre dans l'unité  According to a preferred embodiment of the principle of protection by renaming, it is defined as a method of renaming instructions an encryption method to encrypt the instructions to turn them into renamed instructions. It is recalled that the renaming of the instructions is carried out in the protection phase. For this preferred variant, the recovery means 20 are means implementing a decryption method for decrypting the renamed instructions and thus restore the identity of the dependent functions to be performed in the unit 6. These recovery means are set implemented in the unit

<Desc/Clms Page number 55><Desc / Clms Page number 55>

6 et peuvent être de nature logicielle ou matérielle. Ces moyens de rétablissement 20 sont sollicités dans la phase d'utilisation U à chaque fois qu'une commande déclenchante à consigne renommée est exécutée dans le système de traitement de données 3 dans le but de déclencher dans l'unité 6, l'exécution d'une fonction dépendante.  6 and may be of a software or hardware nature. These recovery means 20 are requested in the use phase U each time a command triggering a renamed setpoint is executed in the data processing system 3 in order to trigger in the unit 6, the execution of 'a dependent function.

Selon une autre caractéristique avantageuse de l'invention, le procédé de protection vise à mettre en oeuvre un principe de protection dit par"branchement conditionnel"dont la description est effectuée en relation des fig. 90 à 92.  According to another advantageous characteristic of the invention, the protection method aims at implementing a protection principle called "conditional branching", the description of which is carried out in relation to FIGS. 90 to 92.

Pour la mise en oeuvre du principe de protection par branchement conditionnel, il est choisi dans le source du logiciel vulnérable 2vs, au moins un branchement conditionnel BC. Il est aussi choisi au moins une portion du source du logiciel vulnérable 2vs contenant au moins un branchement conditionnel BC choisi.  For the implementation of the principle of protection by conditional branching, it is chosen in the source of the vulnerable software 2vs, at least one conditional branch BC. It is also chosen at least a portion of the source of the vulnerable software 2vs containing at least one conditional branch BC chosen.

Au moins une portion choisie du source du logiciel vulnérable 2vs est alors modifié, de manière à obtenir le source du logiciel protégé 2ps. Cette modification est telle que notamment lors de l'exécution du logiciel protégé 2p : * au moins une portion de la première partie d'exécution 2pes, qui est exécutée dans le système de traitement de données 3, prend en compte que la fonctionnalité d'au moins un branchement conditionnel BC choisi est exécutée dans l'unité 6, * et la seconde partie d'exécution 2peu, qui est exécutée dans l'unité 6, exécute au moins la fonctionnalité d'au moins un branchement conditionnel
BC choisi et met à la disposition du système de traitement de données 3, une information permettant à la première partie d'exécution 2pes, de poursuivre son exécution à l'endroit choisi.
At least a selected 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 in particular when running the protected software 2p: * at least a 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 conditional branch BC selected is executed in unit 6, * and the second execution part 2, which is executed in unit 6, performs at least the functionality of at least one conditional branch
BC chooses and makes available to the data processing system 3, information allowing the first execution part 2pes, to continue its execution at the chosen location.

La première partie d'exécution 2pes du logiciel protégé 2p, exécutée dans le système de traitement de données 3, exécute des commandes de branchements conditionnels, déclenchant dans l'unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, de branchements conditionnels déportés bc dont la fonctionnalité est équivalente à la fonctionnalité des branchements conditionnels BC choisis.  The first execution part 2pes of the protected software 2p, executed in the data processing system 3, executes conditional branching commands, triggering in the unit 6, the execution by means of the second execution part 2peu, deported conditional branch connections bc whose functionality is equivalent to the functionality of the selected BC conditional branches.

La fig. 90 illustre un exemple d'exécution d'un logiciel vulnérable 2v. Dans cet exemple, il apparaît, au cours de l'exécution du logiciel vulnérable 2v dans le système de traitement de données 3 à un instant donné, un branchement conditionnel  Fig. 90 illustrates an example of running a vulnerable software 2v. In this example, it appears, during the execution of the vulnerable software 2v in the data processing system 3 at a given moment, a conditional connection.

<Desc/Clms Page number 56><Desc / Clms Page number 56>

BC indiquant au logiciel vulnérable 2v l'endroit où poursuivre son déroulement, à savoir l'un des trois endroits possibles Bl, B2 ou B3. Il doit être compris que le branchement conditionnel BC prend la décision de poursuivre l'exécution du logiciel à l'endroit Bl, B2 ou B3.  BC telling the vulnerable software 2v where to continue, ie one of three possible locations Bl, B2 or B3. It should be understood that the conditional branch BC makes the decision to continue the execution of the software at location B1, B2 or B3.

La fig. 91 illustre un exemple de mise en oeuvre de l'invention pour lequel le branchement conditionnel choisi pour être déporté dans l'unité 6, correspond au branchement conditionnel BC. Dans cet exemple, lors de l'exécution dans le système de traitement de données 3 de la première partie d'exécution 2pes du logiciel protégé 2p et en présence de l'unité 6, il apparaît : à l'instant tl, l'exécution de la commande de branchement conditionnel CBC1 déclenchant dans l'unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, du branchement conditionnel déporté bc algorithmiquement équivalent au branchement conditionnel BC, cette commande de branchement conditionnel CBC, étant représentée par
TRIG (be), et à l'instant t2, le transfert de l'unité 6 vers le système de traitement de données 3, de l'information permettant à la première partie d'exécution
2pes, de poursuivre son exécution à l'endroit choisi, à savoir l'endroit Bl, B2 ou B3.
Fig. 91 illustrates an example of implementation of the invention for which the conditional branch chosen to be deported in the unit 6, corresponds to the conditional branch BC. In this example, when executing 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, it appears: at the instant tl, the execution of the conditional branch command CBC1 triggering in the unit 6, the execution by means of the second execution part 2peu, of the conditional branched offset bc algorithmically equivalent to the conditional branch BC, this conditional branching command CBC being represented by
TRIG (be), and at time t2, the transfer of the unit 6 to the data processing system 3, information allowing the first execution part
2pes, continue to perform at the chosen location, namely the place Bl, B2 or B3.

Il est à noter que lors de l'exécution d'une portion de la première partie d'exécution 2pes du logiciel protégé 2p, les commandes de branchements conditionnels exécutées dans le système de traitement de données 3 déclenchent l'exécution des branchements conditionnels déportés correspondants dans l'unité 6. Ainsi, il apparaît qu'en présence de l'unité 6, cette portion est exécutée correctement et que par conséquent, le logiciel protégé 2p est complètement fonctionnel.  It should be noted that during the execution of a portion of the first execution part 2pes of the protected software 2p, the conditional branching commands executed in the data processing system 3 trigger the execution of the corresponding deported conditional branches. in the unit 6. Thus, it appears that in the presence of the unit 6, this portion is executed correctly and that therefore the protected software 2p is fully functional.

La fig. 92 illustre une tentative d'exécution du logiciel protégé 2p, alors que l'unité 6 est absente. Dans cet exemple, lors de l'exécution dans le système de traitement de données 3 de la première partie d'exécution 2pes du logiciel protégé 2p : à l'instant tl, l'exécution de la commande de branchement conditionnel CBC1, ne peut déclencher l'exécution du branchement conditionnel déporté  Fig. 92 illustrates an attempt to execute the protected software 2p, while the unit 6 is absent. In this example, when executing in the data processing system 3 of the first execution part 2pes of the protected software 2p: at time tl, the execution of the conditional branching command CBC1 can not trigger execution of the deported conditional branch

<Desc/Clms Page number 57><Desc / Clms Page number 57>

bc, compte tenu de l'absence de l'unité 6, et à l'instant t2, le transfert de l'information permettant à la première partie d'exécution de poursuivre à l'endroit choisi échoue compte tenu de l'absence de l'unité 6.  bc, given the absence of unit 6, and at time t2, the transfer of information allowing the first execution party to proceed to the chosen location fails, given the absence of unit 6.

Il apparaît donc qu'en l'absence de l'unité 6, au moins une demande d'une portion de la première partie d'exécution 2pes de déclencher l'exécution d'un branchement conditionnel déporté dans l'unité 6, ne peut pas être satisfaite correctement, de sorte qu'au moins cette portion n'est pas exécutée correctement et que, par conséquent, le logiciel protégé 2p n'est pas complètement fonctionnel.  It therefore appears that in the absence of the unit 6, at least one request for a portion of the first execution part 2pes to trigger the execution of a conditional branch offset in the unit 6, can not not be satisfied properly, so that at least this portion is not executed correctly and, therefore, the protected software 2p is not fully functional.

Dans la description qui précède en relation des fig. 90 à 92, l'objet de l'invention vise à déporter dans l'unité 6, un branchement conditionnel. Bien entendu, une réalisation préférée de l'invention peut consister à déporter dans l'unité 6, une série de branchements conditionnels dont la fonctionnalité globale est équivalente à l'ensemble des fonctionnalités des branchements conditionnels qui ont été déportés.  In the foregoing description in relation to FIGS. 90 to 92, the object of the invention is to deport in the unit 6, a conditional branch. Of course, a preferred embodiment of the invention may consist in moving in the unit 6, a series of conditional branches whose overall functionality is equivalent to all the functionalities of the conditional branches that have been deported.

L'exécution de la fonctionnalité globale de cette série de branchements conditionnels déportés aboutit à la mise à disposition, pour le système de traitement de données 3, d'une information permettant à la première partie d'exécution du logiciel protégé 2pes de poursuivre son exécution à l'endroit choisi. The execution of the global functionality of this series of deported conditional branches results in the provision, for the data processing system 3, of information enabling the first part of execution of the protected software 2pes to continue its execution. at the chosen place.

Dans la description qui précède en relation des fig. 40 à 92, six principes différents de protection d'un logiciel ont été explicités de manière générale indépendamment les uns des autres. Le procédé de protection conforme à l'invention, est mis en oeuvre en utilisant le principe de protection par dissociation temporelle, éventuellement associé à un ou plusieurs autres principes de protection. Dans le cas où le principe de protection par dissociation temporelle est complété par la mise en oeuvre d'au moins un autre principe de protection, le principe de protection par dissociation temporelle est complété avantageusement par le principe de protection par variable et/ou le principe de protection par fonctions élémentaires et/ou le principe de protection par branchement conditionnel.  In the foregoing description in relation to FIGS. 40 to 92, six different principles of software protection have been explained generally independently of each other. The protection method according to the invention is implemented using the principle of protection by time dissociation, possibly associated with one or more other protection principles. In the case where the principle of protection by time dissociation is completed by the implementation of at least one other protection principle, the principle of protection by time dissociation is advantageously supplemented by the variable protection principle and / or the principle protection by elementary functions and / or the principle of protection by conditional connection.

Et lorsque le principe de protection par variable est aussi mis en oeuvre, celui-ci peut être complété à son tour par le principe de protection par fonctions élémentaires et/ou le principe de protection par branchement conditionnel.  And when the principle of protection by variable is also implemented, it can be completed in turn by the principle of protection by elementary functions and / or the principle of protection by conditional branching.

<Desc/Clms Page number 58> <Desc / Clms Page number 58>

Et lorsque le principe de protection par fonctions élémentaires est aussi mis en oeuvre, celui-ci peut être complété à son tour par le principe de protection par détection et coercition et/ou le principe de protection par renommage et/ou le principe de protection par branchement conditionnel.  And when the principle of protection by elementary functions is also implemented, it can be completed in turn by the principle of protection by detection and coercion and / or the principle of protection by renaming and / or the principle of protection by conditional branching.

Et lorsque le principe de protection par détection et coercition est aussi mis en oeuvre, celui-ci peut être complété à son tour par le principe de protection par renommage et/ou le principe de protection par branchement conditionnel.  And when the principle of protection by detection and coercion is also implemented, it can be completed in turn by the principle of protection by renaming and / or the principle of protection by conditional branching.

Et lorsque le principe de protection par renommage est aussi mis en oeuvre, celui-ci peut être complété à son tour par le principe de protection par branchement conditionnel.  And when the principle of protection by renaming is also implemented, it can be completed in turn by the principle of protection by conditional branching.

Selon la variante préférée de réalisation, le principe de protection par dissociation temporelle est complété par le principe de protection par variable, complété par le principe de protection par fonctions élémentaires, complété par le principe de protection par détection et coercition, complété par le principe de protection par renommage, complété par le principe de protection par branchement conditionnel.  According to the preferred embodiment, the principle of protection by temporal dissociation is completed by the principle of protection by variable, supplemented by the principle of protection by elementary functions, supplemented by the principle of protection by detection and coercion, supplemented by the principle of protection by protection by renaming, supplemented by the principle of protection by conditional connection.

Dans le cas où un principe de protection est appliqué, en complément du principe de protection par dissociation temporelle, sa description effectuée précédemment doit comporter, pour tenir compte de sa mise en oeuvre combinée, les modifications suivantes : 'la notion de logiciel vulnérable doit être comprise comme logiciel vulnérable vis-à-vis du principe de protection en cours de description.  In the case where a protection principle is applied, in addition to the principle of protection by temporal dissociation, its description carried out previously must include, in order to take account of its combined implementation, the following modifications: the notion of vulnerable software must be understood as software vulnerable to the protection principle being described.

Ainsi, dans le cas où un principe de protection a déjà été appliqué au logiciel vulnérable, l'expression logiciel vulnérable doit être interprétée par le lecteur comme l'expression logiciel protégé par le ou les principes de protection déjà appliqué (s) ; 'la notion de logiciel protégé doit être comprise comme logiciel protégé vis- à-vis du principe de protection en cours de description. Ainsi, dans le cas où un principe de protection a déjà été appliqué, l'expression logiciel protégé doit être interprétée par le lecteur comme l'expression nouvelle version du logiciel protégé ; * et le ou les choix effectué (s) pour la mise en oeuvre du principe de  Thus, in the case where a protection principle has already been applied to the vulnerable software, the vulnerable software expression must be interpreted by the reader as the software expression protected by the protection principle (s) already applied; the notion of protected software must be understood as protected software with respect to the protection principle being described. Thus, in the case where a protection principle has already been applied, the expression protected software must be interpreted by the reader as the new version of the protected software; * and the choice (s) made for the implementation of the principle of

<Desc/Clms Page number 59><Desc / Clms Page number 59>

protection en cours de description doit (vent) tenir compte du ou des choix effectué (s) pour la mise en oeuvre du ou des principe (s) de protection déjà appliqué (s).  protection in the course of the description must take into account the choice (s) made for the implementation of the protection principle (s) already applied.

La suite de la description permet de mieux comprendre la mise en oeuvre du procédé de protection conforme à l'invention. Ce procédé de protection selon l'invention fait intervenir, comme cela apparaît plus précisément à la fig. 100 : * d'abord, une phase de protection P au cours de laquelle un logiciel vulnérable 2v est modifié en un logiciel protégé 2p, * ensuite, une phase d'utilisation U au cours de laquelle le logiciel protégé 2p est mis en oeuvre. Dans cette phase d'utilisation U : - en présence de l'unité 6 et à chaque fois qu'une portion de la première partie d'exécution 2pes exécutée dans le système de traitement de données 3 l'impose, une fonctionnalité imposée est exécutée dans l'unité 6, de sorte que cette portion est exécutée correctement et que, par conséquent, le logiciel protégé 2p est complètement fonctionnel, - en l'absence de l'unité 6 et malgré la demande d'une portion de la première partie d'exécution 2pes d'exécuter une fonctionnalité dans l'unité 6, cette demande ne peut pas être honorée correctement, de sorte qu'au moins cette portion n'est pas exécutée correctement et que par conséquent, le logiciel protégé 2p n'est pas complètement fonctionnel, et éventuellement une phase de rechargement R au cours de laquelle est créditée au moins une utilisation supplémentaire d'une fonctionnalité protégée par la mise en oeuvre de la deuxième variante préférée de réalisation du principe de protection par détection et coercition utilisant comme caractéristique, une variable de mesure.  The remainder of the description makes it possible to better understand the implementation of the protection method according to the invention. This protection method according to the invention involves, as it appears more precisely in FIG. 100: * first, a protection phase P during which a vulnerable software 2v is modified into a protected software 2p, * then a use phase U during which the protected software 2p is implemented. In this use phase U: in the presence of the unit 6 and whenever a portion of the first execution part 2pes executed in the data processing system 3 imposes it, an imposed functionality is executed in the unit 6, so that this portion is executed correctly and that, therefore, the protected software 2p is fully functional, - in the absence of the unit 6 and despite the request for a portion of the first part 2pes execution of a feature in the unit 6, this request can not be honored correctly, so that at least this portion is not executed correctly and therefore the 2p protected software is not not completely functional, and possibly a recharging phase R during which is credited at least one additional use of a function protected by the implementation of the second preferred embodiment of the invention. principle of protection by detection and coercion using as a characteristic, a measurement variable.

La phase de protection P peut être décomposée en deux sous-phases de protection Pl et P2. La première, dite sous-phase de protection amont Pi, est mise en oeuvre indépendamment du logiciel vulnérable 2v à protéger. La deuxième, dite sous-phase de protection aval P2 est dépendante du logiciel vulnérable 2v à protéger.  The protection phase P can be decomposed into two protection sub-phases P1 and P2. The first, so-called upstream protection subphase Pi, is implemented independently of the vulnerable software 2v to be protected. The second, said P2 downstream protection sub-phase is dependent on the vulnerable software 2v to protect.

Il est à noter que les sous-phases de protection amont Pl et aval P2 peuvent être réalisées avantageusement par deux personnes différentes ou deux équipes différentes. Par exemple, la sous-phase de protection amont Pl peut être réalisée par It should be noted that the sub-phases of upstream protection P1 and downstream P2 can advantageously be carried out by two different persons or two different teams. For example, the upstream protection sub-phase P1 can be performed by

<Desc/Clms Page number 60><Desc / Clms Page number 60>

une personne ou une société assurant le développement de systèmes de protection de logiciels, tandis que la sous-phase de protection aval P2 peut être réalisée par une personne ou une société assurant le développement de logiciels devant être protégés. Bien entendu, il est clair que les sous-phases de protection amont Pl et aval P2 peuvent aussi être réalisées par la même personne ou la même équipe.  a person or a company providing the development of software protection systems, while the P2 downstream protection sub-phase can be performed by a person or a company providing software development to be protected. Of course, it is clear that the upstream and downstream P2 protection sub-phases can also be performed by the same person or the same team.

La sous-phase de protection amont Pl fait intervenir plusieurs stades Su,..., Si ; pour chacun desquels différentes tâches ou travaux sont à effectuer.  The upstream protection sub-phase P1 involves several stages Su, ..., Si; for each of which different tasks or work are to be done.

Le premier stade de cette sous-phase de protection amont Pl est appelé"stade de définitions Su". Lors de ce stade de définitions Su : il est choisi : - le type de l'unité 6. A titre illustratif, il peut-être choisi en tant qu'unité
6, un lecteur 8 de cartes à puce et la carte à puce 7 associée au lecteur, - et les moyens de transfert 12,13 destinés à être mis en oeuvre respectivement dans le système de traitement de données 3 et dans l'unité 6, au cours de la phase d'utilisation U et aptes à assurer le transfert de données entre le système de traitement de données 3 et l'unité 6, * et dans le cas où le procédé de protection selon l'invention met en oeuvre le principe de protection par fonctions élémentaires, il est aussi défini :

Figure img00600001

- un jeu de fonctions élémentaires dont les fonctions élémentaires sont susceptibles d'être exécutées dans l'unité 6, - et un jeu de commandes élémentaires pour ce jeu de fonctions élémentaires, ces commandes élémentaires étant susceptibles d'être exécutées dans le système de traitement de données 3 et de déclencher l'exécution dans l'unité 6, des fonctions élémentaires, 'et dans le cas où le procédé de protection selon l'invention met en oeuvre le principe de protection par détection et coercition, il est aussi défini :
Figure img00600002

- au moins une caractéristique d'exécution de logiciel, susceptible d'être surveillée au moins en partie dans l'unité 6, - au moins un critère à respecter pour au moins une caractéristique d'exécution de logiciel, The first stage of this upstream protection sub-phase P1 is called the "Su definition stage". At this stage of definitions Su: it is chosen: - the type of the unit 6. As an illustration, it can be chosen as a unit
6, a reader 8 of smart cards and the smart card 7 associated with the reader, and the transfer means 12, 13 intended to be implemented respectively in the data processing system 3 and in the unit 6, during the use phase U and able to ensure the transfer of data between the data processing system 3 and the unit 6, * and in the case where the protection method according to the invention implements the principle protection by elementary functions, it is also defined:
Figure img00600001

a set of elementary functions whose elementary functions are likely to be executed in the unit 6, and a set of elementary commands for this set of elementary functions, these elementary commands being capable of being executed in the processing system 3 and to trigger the execution in unit 6, elementary functions, and in the case where the protection method according to the invention implements the protection principle by detection and coercion, it is also defined:
Figure img00600002

at least one software execution characteristic, which can be monitored at least partly in the unit 6, at least one criterion to be met for at least one software execution characteristic,

<Desc/Clms Page number 61><Desc / Clms Page number 61>

- des moyens de détection 17 à mettre en oeuvre dans l'unité 6 et permettant de détecter qu'au moins une caractéristique d'exécution de logiciel ne respecte pas au moins un critère associé, - et des moyens de coercition 18 à mettre en oeuvre dans l'unité 6 et permettant d'informer le système de traitement de données 3 et/ou de modifier l'exécution d'un logiciel, lorsqu'au moins un critère n'est pas respecté, et dans le cas où le procédé de protection selon l'invention met en oeuvre le principe de protection par détection et coercition utilisant comme caractéristique une variable de mesure de l'exécution du logiciel, il est aussi défini : - en tant que caractéristique d'exécution de logiciel susceptible d'être surveillée, une variable de mesure de l'utilisation d'une fonctionnalité d'un logiciel, - en tant que critère à respecter, au moins un seuil associé à chaque variable de mesure, - et des moyens d'actualisation permettant de mettre à jour au moins une variable de mesure, et dans le cas où le procédé de protection selon l'invention met en oeuvre une première variante préférée de réalisation du principe de protection par détection et coercition utilisant comme caractéristique une variable de mesure de l'exécution du logiciel, il est aussi défini : - pour au moins une variable de mesure, plusieurs seuils associés, - et des moyens de coercition différents correspondant à chacun de ces seuils, et dans le cas où le procédé de protection selon l'invention met en oeuvre une seconde variante préférée de réalisation du principe de protection par détection et coercition utilisant comme caractéristique une variable de mesure de l'exécution du logiciel, il est aussi défini des moyens de rechargement permettant de créditer au moins une utilisation supplémentaire pour au moins une fonctionnalité de logiciel surveillée par  detection means 17 to be implemented in the unit 6 and making it possible to detect that at least one software execution characteristic does not comply with at least one associated criterion, and coercion means to implement in unit 6 and making it possible to inform the data processing system 3 and / or to modify the execution of a software, when at least one criterion is not respected, and in the case where the method of protection according to the invention implements the principle of protection by detection and coercion using as a characteristic a variable for measuring the execution of the software, it is also defined: as a software execution characteristic that can be monitored , a variable for measuring the use of a functionality of a software, - as a criterion to be respected, at least one threshold associated with each measurement variable, - and updating means making it possible to update to the minus one e measurement variable, and in the case where the protection method according to the invention implements a first preferred embodiment of the protection principle by detection and coercion using as a variable a measure of the execution of the software, it is also defined: - for at least one measurement variable, several associated thresholds, - and different coercion means corresponding to each of these thresholds, and in the case where the protection method according to the invention implements a second variant preferred embodiment of the principle of protection by detection and coercion using as characteristic a measurement variable of the execution of the software, it is also defined reloading means for crediting at least one additional use for at least one software functionality monitored by

<Desc/Clms Page number 62><Desc / Clms Page number 62>

une variable de mesure, et dans le cas où le procédé de protection selon l'invention met en oeuvre le principe de protection par détection et coercition utilisant comme caractéristique un profil d'utilisation de logiciel, il est aussi défini : - en tant que caractéristique d'exécution de logiciel susceptible d'être surveillée, un profil d'utilisation de logiciel,

Figure img00620001

- et en tant que critère à respecter, au moins un trait d'exécution de logiciel, et dans le cas où le procédé de protection selon l'invention met en oeuvre le principe de protection par détection et coercition utilisant comme trait d'exécution à respecter, la surveillance de l'enchaînement d'exécution, il est aussi défini : - un jeu d'instructions dont les instructions sont susceptibles d'être exécutées dans l'unité 6, - un jeu de commandes d'instructions pour ce jeu d'instructions, ces commandes d'instructions étant susceptibles d'être exécutées dans le système de traitement de données 3 et de déclencher dans l'unité 6 l'exécution des instructions,
Figure img00620002

- en tant que profil d'utilisation, l'enchaînement des instructions, - en tant que trait d'exécution, un enchaînement souhaité pour l'exécution des instructions, - en tant que moyens de détection 17, des moyens permettant de détecter que l'enchaînement des instructions ne correspond pas à celui souhaité, - et en tant que moyens de coercition 18, des moyens permettant d'informer le système de traitement de données 3 et/ou de modifier le fonctionnement de la portion de logiciel protégé 2p lorsque l'enchaînement des instructions ne correspond pas à celui souhaité, et dans le cas où le procédé de protection selon l'invention met en oeuvre une variante préférée de réalisation du principe de protection par détection et coercition utilisant comme trait d'exécution à respecter, la surveillance de l'enchaînement d'exécution, il est aussi défini : a measurement variable, and in the case where the protection method according to the invention implements the protection principle by detection and coercion using as a characteristic a software usage profile, it is also defined: as a characteristic executable software that can be monitored, a software usage profile,
Figure img00620001

and as a criterion to be complied with, at least one software execution feature, and in the case where the protection method according to the invention implements the principle of protection by detection and coercion using, as execution feature, respect, the supervision of the sequence of execution, it is also defined: - a set of instructions whose instructions are likely to be executed in the unit 6, - a set of instructions commands for this game of instructions, these instruction commands being able to be executed in the data processing system 3 and to trigger in the unit 6 the execution of the instructions,
Figure img00620002

as a use profile, the sequence of instructions, as an execution feature, a desired sequence for executing the instructions, as detection means 17, means for detecting that the sequence of instructions does not correspond to that desired, - and as means of coercion 18, means for informing the data processing system 3 and / or to modify the operation of the portion of protected software 2p when sequence of instructions does not correspond to that desired, and in the case where the protection method according to the invention implements a preferred variant embodiment of the protection principle by detection and coercion using as a performance feature to be respected, the monitoring the execution sequence, it is also defined:

<Desc/Clms Page number 63><Desc / Clms Page number 63>

en tant que jeu d'instructions, un jeu d'instructions dont au moins certaines instructions travaillent sur des registres et utilisent au moins un opérande en vue de rendre un résultat, - pour au moins une partie des instructions travaillant sur des registres : > une partie PF définissant la fonctionnalité de l'instruction, > et une partie définissant l'enchaînement souhaité pour l'exécution des instructions et comportant des champs de bits correspondant

Figure img00630001

à :
0 un champ d'identification de l'instruction CII,
0 et pour chaque opérande de l'instruction : * un champ drapeau CDk, * et un champ d'identification prévue CIPk de l'opérande, - pour chaque registre appartenant aux moyens d'exploitation et utilisé par le jeu d'instructions, un champ d'identification générée CIGv dans lequel est automatiquement mémorisée l'identification de la dernière instruction ayant rendu son résultat dans ce registre, en tant que moyens de détection 17, des moyens permettant, lors de l'exécution d'une instruction, pour chaque opérande, lorsque le champ drapeau CDk l'impose, de contrôler l'égalité entre le champ d'identification générée CIGv correspondant au registre utilisé par cet opérande, et le champ d'identification prévue CIPk de l'origine de cet opérande, et en tant que moyens de coercition 18, des moyens permettant de modifier le résultat des instructions, si au moins une des égalités contrôlées est fausse, et dans le cas où le procédé de protection selon l'invention met en oeuvre le principe de protection par renommage, il est aussi défini : - en tant qu'une commande déclenchante, une commande élémentaire ou une commande d'instruction, - en tant qu'une fonction dépendante, une fonction élémentaire ou une instruction, as an instruction set, a set of instructions at least some of whose instructions work on registers and use at least one operand to render a result, - for at least part of the instructions working on registers:> a PF part defining the functionality of the instruction, and a part defining the desired sequence for executing instructions and having corresponding bit fields
Figure img00630001

at :
0 an identification field of the instruction CII,
0 and for each operand of the instruction: * a flag field CDk, * and an intended identification field CIPk of the operand, - for each register belonging to the operating means and used by the set of instructions, a CIGv generated identification field in which is automatically stored the identification of the last instruction having returned its result in this register, as detection means 17, means allowing, during the execution of an instruction, for each operand, when the flag field CDk imposes it, to control the equality between the generated identification field CIGv corresponding to the register used by this operand, and the intended identification field CIPk of the origin of this operand, and as means of coercion 18, means for modifying the result of the instructions, if at least one of the controlled equalities is false, and in the case where the protection method according to the invention sets forth the principle of protection by renaming, it is also defined: - as a triggering command, an elementary command or an instruction command, - as a dependent function, an elementary function or an instruction,

<Desc/Clms Page number 64><Desc / Clms Page number 64>

- en tant qu'une consigne, au moins un argument pour une commande déclenchante, correspondant au moins en partie à l'information transmise par le système de traitement de données 3 à l'unité 6, afin de déclencher l'exécution de la fonction dépendante correspondante, - une méthode de renommage des consignes permettant de renommer les consignes afin d'obtenir des commandes déclenchantes à consignes renommées, - et des moyens de rétablissement 20 destinés à être mis en oeuvre dans l'unité 6 au cours de la phase d'utilisation U, et permettant de retrouver la fonction dépendante à exécuter, à partir de la consigne renommée, * et dans le cas où le procédé de protection selon l'invention met en oeuvre une variante du principe de protection par renommage, il est aussi défini pour au moins une fonction dépendante, une famille de fonctions dépendantes algorithmiquement équivalentes, mais déclenchées par des commandes déclenchantes dont les consignes renommées sont différentes, 'et dans le cas où le procédé de protection selon l'invention met en oeuvre l'une ou l'autre des réalisations préférées de la variante du principe de protection par renommage, il est aussi défini pour au moins une fonction dépendante, une famille de fonctions dépendantes algorithmiquement équivalentes : - en concaténant un champ de bruit à l'information définissant la partie fonctionnelle de la fonction dépendante à exécuter dans l'unité 6, - ou en utilisant le champ d'identification de l'instruction CIl et les champs d'identification prévue CIPk des opérandes, 'et dans le cas où le procédé de protection selon l'invention met en oeuvre une variante préférée du principe de protection par renommage, il est aussi défini : - en tant que méthode de renommage des consignes, une méthode de chiffrement pour chiffrer les consignes, - et en tant que moyens de rétablissement 20, des moyens mettant en oeuvre une méthode de déchiffrement pour déchiffrer les consignes  as a setpoint, at least one argument for a triggering command corresponding at least in part to the information transmitted by the data processing system 3 to the unit 6 in order to trigger the execution of the function corresponding dependency, - a method of renaming instructions to rename the instructions to obtain triggering commands with renamed instructions, - and recovery means 20 to be implemented in the unit 6 during the phase d U use, and to find the dependent function to perform, from the renamed instruction, * and in the case where the protection method according to the invention implements a variant of the protection principle by renaming, it is also defined for at least one dependent function, a family of dependent functions that are algorithmically equivalent, but triggered by triggering commands whose setpoints are renamed In the case where the protection method according to the invention implements one or other of the preferred embodiments of the variant of the protection principle by renaming, it is also defined for at least one dependent function. , a family of algorithmically equivalent dependent functions: by concatenating a noise field to the information defining the functional part of the dependent function to be executed in the unit 6, or by using the identification field of the instruction CI1 and in the case where the protection method according to the invention implements a preferred variant of the principle of protection by renaming, it is also defined: as a method of renaming instructions, an encryption method for encrypting the instructions, - and as means of recovery 20, means implementing a decryption method for deciphering frer the instructions

<Desc/Clms Page number 65><Desc / Clms Page number 65>

renommées et rétablir ainsi l'identité des fonctions dépendantes à exécuter dans l'unité 6.  renamed and thus restore the identity of the dependent functions to be executed in the unit 6.

Lors de la sous-phase de protection amont, le stade de définition S11 est suivi par un stade appelé"stade de construction Son". Lors d'un tel stade Su, sont construits les moyens de transfert 12,13 et éventuellement, les moyens d'exploitation correspondant aux définitions du stade de définition S11.  In the upstream protection sub-phase, the S11 definition stage is followed by a stage called the "Sound stage of construction". At such a stage Su, the transfer means 12, 13 and possibly the operating means corresponding to the definitions of the definition step S11 are constructed.

Lors de ce stade de construction S, 2, il est donc procédé : 'à la construction des moyens de transfert 12,13 permettant, au cours de la phase d'utilisation U, le transfert de données entre le système de traitement de données 3 et l'unité 6, * et lorsque le principe de protection par fonctions élémentaires est aussi mis en oeuvre, à la construction des moyens d'exploitation permettant à l'unité
6, au cours de la phase d'utilisation U d'exécuter les fonctions élémentaires du jeu de fonctions élémentaires, 'et lorsque le principe de protection par détection et coercition est aussi mis en oeuvre, à la construction : - des moyens d'exploitation permettant à l'unité 6, au cours de la phase d'utilisation U de mettre aussi en oeuvre les moyens de détection et les moyens de coercition, - et éventuellement des moyens d'exploitation permettant à l'unité 6, au cours de la phase d'utilisation U de mettre aussi en oeuvre les moyens d'actualisation, - et éventuellement des moyens d'exploitation permettant à l'unité 6, au cours de la phase de rechargement de mettre aussi en oeuvre les moyens de rechargement, - et éventuellement des moyens d'exploitation permettant aussi à l'unité
6, au cours de la phase d'utilisation U d'exécuter les instructions du jeu d'instruction, 'et lorsque le principe de protection par renommage est aussi mis en oeuvre, à la construction des moyens d'exploitation permettant à l'unité 6, au cours de la phase d'utilisation U de mettre aussi en oeuvre les moyens de
At this stage of construction S, 2, it is therefore proceeded to: the construction of the transfer means 12, 13 allowing, during the use phase U, the transfer of data between the data processing system 3 and unit 6, * and when the principle of protection by elementary functions is also implemented, the construction of the means of exploitation allowing the unit
6, during the use phase U to perform the basic functions of the set of elementary functions, and when the principle of protection by detection and coercion is also implemented, to the construction of: operating means allowing the unit 6, during the use phase U also to implement the detection means and the coercion means, and possibly operating means allowing the unit 6, during the phase of use U also implement the means of updating, - and possibly operating means allowing the unit 6, during the reloading phase to also implement the reloading means, - and possibly means of exploitation also allowing unity
6, during the use phase U to execute the instructions of the instruction set, and when the principle of protection by renaming is also implemented, the construction of the operating means allowing the unit 6, during the use phase U to also implement the means of

<Desc/Clms Page number 66><Desc / Clms Page number 66>

rétablissement.  recovery.

La construction des moyens d'exploitation est réalisée de manière classique, par l'intermédiaire d'une unité de développement de programme en prenant en compte les définitions intervenues au stade de définitions S11. Une telle unité est décrite dans la suite de la description à la fig. 110.  The construction of the operating means is carried out in a conventional manner, via a program development unit taking into account the definitions that have been made at the definition stage S11. Such a unit is described in the following description in FIG. 110.

Lors de la sous-phase de protection amont Pl, le stade de construction S12 peut être suivi par un stade appelé"stade de pré-personnalisation S13". Lors de ce stade de pré-personnalisation S13 au moins une partie des moyens de transfert 13 et/ou les moyens d'exploitation sont chargés dans au moins une unité vierge 60 en vue d'obtenir au moins une unité pré-personnalisée 66. Il est à noter qu'une partie des moyens d'exploitation, une fois transférée dans une unité pré-personnalisée 66, n'est plus directement accessible de l'extérieur de cette unité pré-personnalisée 66. Le transfert des moyens d'exploitation dans une unité vierge 60 peut être réalisé par l'intermédiaire d'une unité de pré-personnalisation adaptée, qui est décrite dans la suite de la description à la fig. 120. Dans le cas d'une unité pré-personnalisée 66, constituée d'une carte à puce 7 et de son lecteur 8, la pré-personnalisation ne concerne que la carte à puce 7.  During the upstream protection sub-phase P1, the construction step S12 can be followed by a stage called "pre-personalization stage S13". During this pre-personalization stage S13, at least part of the transfer means 13 and / or the operating means are loaded into at least one blank unit 60 in order to obtain at least one pre-personalized unit 66. It should be noted that part of the operating means, once transferred to a pre-personalized unit 66, is no longer directly accessible from outside this pre-personalized unit 66. The transfer of operating means in a blank unit 60 can be realized via a suitable pre-personalization unit, which is described in the following description in FIG. 120. In the case of a pre-personalized unit 66, consisting of a smart card 7 and its reader 8, the pre-personalization only concerns the smart card 7.

Lors de la sous-phase de protection amont Pl, il peut être mis en oeuvre, après le stade de définition S11 et, éventuellement après le stade de construction S12, un stade appelé"stade de confection d'outils S14". Lors de ce stade de confection d'outils S14 sont confectionnés des outils permettant d'aider à la génération de logiciels protégés ou d'automatiser la protection de logiciels. De tels outils permettent : d'aider à choisir ou de choisir automatiquement dans le logiciel vulnérable
2v à protéger : - le ou les traitements algorithmiques susceptibles d'être décomposées en étapes déportables dans l'unité 6,

Figure img00660001

- la ou les portions susceptibles d'être modifiées, - et lorsque le principe de protection par variable est aussi mis en oeuvre, la ou les variables susceptibles d'être déportées dans l'unité 6, - et lorsque le principe de protection par fonctions élémentaires est aussi mis en oeuvre, le ou les traitements algorithmiques susceptibles d'être During the upstream protection sub-phase P1, it can be implemented, after the definition step S11 and, optionally after the construction step S12, a stage called "tool making stage S14". At this stage of making tools S14 are made tools to help the generation of protected software or to automate the protection of software. Such tools allow: to help choose or choose automatically in the vulnerable software
2v to protect: the algorithmic processing or processes that can be decomposed into remote stages in the unit 6,
Figure img00660001

the portion or portions that can be modified, and when the variable protection principle is also implemented, the variable or variables that may be deported in unit 6, and when the protection principle by function elementary is also implemented, the algorithmic treatment or treatments likely to be

<Desc/Clms Page number 67><Desc / Clms Page number 67>

décomposées en fonctions élémentaires déportables dans l'unité 6, - et lorsque le principe de protection par détection et coercition est aussi mis en oeuvre, la ou les caractéristiques d'exécution à surveiller et, éventuellement, le ou les traitements algorithmiques susceptibles d'être décomposées en instructions déportables dans l'unité 6, - et lorsque le principe de protection par renommage est aussi mis en oeuvre, le ou les traitements algorithmiques susceptibles d'être décomposées en fonctions dépendantes déportables dans l'unité 6 et pour lesquelles les consignes des commandes déclenchantes peuvent être renommées, - et lorsque le principe de protection par branchement conditionnel est aussi mis en oeuvre, le ou les branchements conditionnels dont la fonctionnalité est susceptible d'être déportée dans l'unité 6, et, éventuellement, d'aider à générer des logiciels protégés ou d'automatiser la protection de logiciels.  decomposed into elementary functions that are deportable in unit 6, and when the protection principle by detection and coercion is also implemented, the execution characteristic (s) to be monitored and, optionally, the algorithmic processing (s) likely to be decomposed into remote instructions in the unit 6, - and when the principle of protection by renaming is also implemented, the algorithmic treatment or processes capable of being decomposed into dependent functions that are transferable in the unit 6 and for which the instructions of the triggering commands may be renamed, and when the conditional branch protection principle is also implemented, the conditional branch (s) whose functionality is likely to be deported in unit 6, and possibly to assist in generate protected software or automate software protection.

Ces différents outils peuvent être réalisés indépendamment ou en combinaison et chaque outil peut prendre diverses formes, comme par exemple préprocesseur, assembleur, compilateur, etc.  These different tools can be made independently or in combination and each tool can take various forms, such as preprocessor, assembler, compiler, etc.

La sous-phase de protection amont Pl est suivie par une sous-phase de protection aval P2 dépendante du logiciel vulnérable 2v à protéger. Cette sous-phase de protection aval P2 fait intervenir également plusieurs stades. Le premier stade correspondant à la mise en oeuvre du principe de protection par dissociation temporelle est appelé"stade de création S21". Lors de ce stade de création S21, il est utilisé les choix intervenus au stade de définition Sn. A l'aide de ces choix et éventuellement d'outils construits au stade de confection d'outils S14, il est créé le logiciel protégé 2p : 'en choisissant, au moins un traitement algorithmique qui, lors de l'exécution du logiciel vulnérable 2v, utilise au moins un opérande et permet d'obtenir au moins un résultat, * en choisissant au moins une portion du source du logiciel vulnérable 2vs contenant, au moins un traitement algorithmique choisi,  The upstream protection sub-phase P1 is followed by a downstream protection subphase P2 dependent on the vulnerable software 2v to be protected. This downstream protection sub-phase P2 also involves several stages. The first stage corresponding to the implementation of the principle of protection by time dissociation is called "creation step S21". During this creation step S21, the choices made at the definition stage Sn are used. With the aid of these choices and possibly tools constructed at the S14 tool making stage, the protected software 2p is created by choosing at least one algorithmic processing which, when running the vulnerable software 2v , uses at least one operand and makes it possible to obtain at least one result, * by choosing at least a portion of the source of the vulnerable software 2vs containing at least one chosen algorithmic processing,

<Desc/Clms Page number 68><Desc / Clms Page number 68>

en produisant le source du logiciel protégé 2ps à partir du source du logiciel vulnérable 2vs, en modifiant au moins une portion choisie du source du logiciel vulnérable 2vs pour obtenir au moins une portion modifiée du source du logiciel protégé 2ps, cette modification étant telle que : - lors de l'exécution du logiciel protégé 2p une première partie d'exécution 2pes est exécutée dans le système de traitement de données 3 et une seconde partie d'exécution 2peu est exécutée dans une unité 6, obtenue à partir de l'unité vierge 60 après chargement d'informations, - la seconde partie d'exécution 2peu exécute au moins la fonctionnalité d'au moins un traitement algorithmique choisi, - au moins un traitement algorithmique choisi est décomposé de manière que lors de l'exécution du logiciel protégé 2p apparaissent au moyen de la seconde partie d'exécution 2peu, plusieurs étapes distinctes, à savoir : > la mise à disposition d'au moins un opérande pour l'unité 6, > la réalisation par l'unité 6, de la fonctionnalité du traitement algorithmique sur au moins cet opérande, > et éventuellement, la mise à disposition d'au moins un résultat, par l'unité 6 pour le système de traitement de données 3, - pour au moins un traitement algorithmique choisi, des commandes d'étapes sont définies de manière que lors de l'exécution du logiciel protégé 2p, chaque commande d'étape est exécutée par la première partie d'exécution 2pes et déclenche, dans l'unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, d'une étape, - et un ordonnancement des commandes d'étapes est choisi parmi l'ensemble des ordonnancements permettant l'exécution du logiciel protégé 2p, et en produisant : - une première partie objet 2pos du logiciel protégé 2p, à partir du source du logiciel protégé 2ps, cette première partie objet 2pos étant  producing the source of the protected software 2ps from the source of the vulnerable software 2vs, modifying at least a selected portion of the source of the vulnerable software 2vs to obtain at least one modified portion of the source of the protected software 2ps, this modification being such that: when executing the protected software 2p a first execution part 2pes is executed in the data processing system 3 and a second execution part 2peu is executed in a unit 6, obtained from the blank unit 60 after loading information, - the second execution part 2peu performs at least the functionality of at least one selected algorithmic processing, - at least one selected algorithmic processing is decomposed so that when running the protected software 2p appear by means of the second part of execution 2peu, several distinct stages, namely:> the provision of at least one operand for the u 6, the realization by the unit 6, of the functionality of the algorithmic processing on at least this operand, and optionally, the provision of at least one result, by the unit 6 for the processing system. data 3, - for at least one chosen algorithmic processing, step commands are defined so that during the execution of the protected software 2p, each step command is executed by the first execution part 2pes and triggers, in the unit 6, the execution by means of the second execution part 2peu, of a step, - and a scheduling of the commands of steps is chosen from among the set of scheduling allowing the execution of the protected software 2p , and producing: a first object part 2pos of the protected software 2p, from the source of the protected software 2ps, this first object part 2pos being

<Desc/Clms Page number 69><Desc / Clms Page number 69>

telle que lors de l'exécution du logiciel protégé 2p, apparaît une première partie d'exécution 2pes qui est exécutée dans le système de traitement de données 3 et dont au moins une portion prend en compte que les commandes d'étapes sont exécutées selon l'ordonnancement choisi, - et une seconde partie objet 2pou du logiciel protégé 2p, cette seconde partie objet 2pou étant telle que, après chargement dans l'unité vierge
60 et lors de l'exécution du logiciel protégé 2p, apparaît la seconde partie d'exécution 2peu au moyen de laquelle les étapes déclenchées par la première partie d'exécution 2pes sont exécutées.
as when executing the protected software 2p, there appears a first execution part 2pes which is executed in the data processing system 3 and of which at least one portion takes into account that the commands of steps are executed according to the selected scheduling, - and a second object part 2pou of the protected software 2p, this second object part 2pou being such that, after loading in the blank unit
60 and during the execution of the protected software 2p, appears the second part of execution 2peu by means of which the steps triggered by the first part of execution 2pes are executed.

Bien entendu, le principe de protection par dissociation temporelle selon l'invention peut être appliqué directement lors du développement d'un nouveau logiciel sans nécessiter la réalisation préalable d'un logiciel vulnérable 2v. De cette manière, il est obtenu directement un logiciel protégé 2p.  Of course, the principle of protection by time dissociation according to the invention can be applied directly during the development of a new software without requiring the prior implementation of a vulnerable software 2v. In this way, 2p protected software is obtained directly.

Lors de la sous-phase de protection aval P2, et lorsqu'au moins un autre principe de protection est appliqué en plus du principe de protection par dissociation temporelle, il est mis en oeuvre un"stade de modification 822". Lors de ce stade de modification S22, il est utilisé les définitions intervenues au stade de définitions 811. A l'aide de ces définitions et éventuellement d'outils construits au stade de confection d'outils S14, le logiciel protégé 2p est modifié pour permettre la mise en oeuvre des principes de protection selon l'un des arrangements définis ci-avant.  During the downstream protection sub-phase P2, and when at least one other protection principle is applied in addition to the time-dissociation protection principle, a "modification stage 822" is implemented. In this modification stage S22, definitions defined at the definition stage 811 are used. Using these definitions and possibly tools built in the tool making stage S14, the protected software 2p is modified to allow the implementation of the protection principles according to one of the arrangements defined above.

Lorsque le principe de protection par variable est mis en oeuvre, le logiciel protégé 2p est modifié : * en choisissant au moins une variable utilisée dans au moins un traitement algorithmique choisi, qui lors de l'exécution du logiciel protégé 2p, définit partiellement l'état du logiciel protégé 2p, 'en modifiant au moins une portion choisie du source du logiciel protégé
2ps, cette modification étant telle que lors de l'exécution du logiciel protégé
2p, au moins une variable choisie ou au moins une copie de variable choisie réside dans l'unité 6, 'et en produisant :
When the variable protection principle is implemented, the protected software 2p is modified: * by choosing at least one variable used in at least one selected algorithmic processing, which during the execution of the protected software 2p, partially defines the state of the protected software 2p, 'by modifying at least a selected portion of the source of the protected software
2ps, this change is such that when running the protected software
2p, at least one selected variable or at least one selected variable copy resides in unit 6, and producing:

<Desc/Clms Page number 70><Desc / Clms Page number 70>

- la première partie objet 2pos du logiciel protégé 2p, cette première partie objet 2pos étant telle que lors de l'exécution du logiciel protégé
2p, au moins une portion de la première partie d'exécution 2pes prend aussi en compte qu'au moins une variable ou au moins une copie de variable réside dans l'unité 6, - et la seconde partie objet 2pou du logiciel protégé 2p, cette seconde partie objet 2pou étant telle que, après chargement dans l'unité 6 et lors de l'exécution du logiciel protégé 2p, apparaît la seconde partie d'exécution 2peu au moyen de laquelle au moins une variable choisie, ou au moins une copie de variable choisie réside aussi dans l'unité 6.
the first object part 2pos of the protected software 2p, this first object part 2pos being such that during the execution of the protected software
2p, at least a portion of the first execution part 2pes also takes into account that at least one variable or at least one variable copy resides in the unit 6, and the second object part 2pou of the protected software 2p, this second object part 2pou being such that, after loading in the unit 6 and during the execution of the protected software 2p, the second execution part 2peu appears by means of which at least one selected variable, or at least one copy chosen variable also resides in unit 6.

Lorsque le principe de protection par fonctions élémentaires est mis en oeuvre, le logiciel protégé 2p est modifié : 'en modifiant au moins une portion choisie du source du logiciel protégé
2ps, cette modification étant telle que : - au moins une étape est décomposée de manière que lors de l'exécution du logiciel protégé 2p, cette étape est exécutée au moyen de la seconde partie d'exécution 2peu, en utilisant des fonctions élémentaires, - pour au moins une étape décomposée, des commandes élémentaires sont intégrées dans le source du logiciel protégé 2ps, de manière que lors de l'exécution du logiciel protégé 2p, chaque commande élémentaire est exécutée par la première partie d'exécution 2pes et déclenche dans l'unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, d'une fonction élémentaire, - et un ordonnancement des commandes élémentaires est choisi parmi l'ensemble des ordonnancements permettant l'exécution du logiciel protégé 2p, * et en produisant : - la première partie objet 2pos du logiciel protégé 2p, cette première partie objet 2pos étant telle que lors de l'exécution du logiciel protégé
2p, au moins une portion de la première partie d'exécution 2pes exécute aussi les commandes élémentaires selon l'ordonnancement
When the principle of protection by elementary functions is implemented, the protected software 2p is modified: by modifying at least a selected portion of the source of the protected software
2ps, this modification being such that: at least one step is decomposed so that during the execution of the protected software 2p, this step is executed by means of the second execution part 2peu, by using elementary functions, for at least one decomposed step, elementary commands are integrated in the source of the protected software 2ps, so that during the execution of the protected software 2p, each elementary command is executed by the first execution part 2pes and triggers in the unit 6, the execution by means of the second execution part 2peu, of an elementary function, - and a scheduling of the elementary commands is chosen from among the set of scheduling allowing the execution of the protected software 2p, * and by producing: the first object part 2pos of the protected software 2p, this first object part 2pos being such that during the execution of the protected software
2p, at least a portion of the first run part 2pes also executes the elementary commands according to the scheduling

<Desc/Clms Page number 71><Desc / Clms Page number 71>

choisi, - et la seconde partie objet 2pou du logiciel protégé 2p contenant aussi les moyens d'exploitation, cette seconde partie objet 2pou étant telle que, après chargement dans l'unité 6 et lors de l'exécution du logiciel protégé 2p, apparaît la seconde partie d'exécution 2peu au moyen de laquelle sont aussi exécutées les fonctions élémentaires déclenchées par la première partie d'exécution 2pes.  chosen, - and the second object 2pou part of the protected software 2p also containing the operating means, this second object part 2pou being such that, after loading in the unit 6 and during the execution of the protected software 2p, appears the second part of execution 2peu by means of which are also executed the elementary functions triggered by the first part of execution 2pes.

Lorsque le principe de protection par détection et coercition est mis en oeuvre, le logiciel protégé 2p est modifié : w en choisissant au moins une caractéristique d'exécution de logiciel à surveiller, parmi les caractéristiques d'exécution susceptibles d'être surveillées, 'en choisissant au moins un critère à respecter pour au moins une caractéristique d'exécution de logiciel choisie, * en choisissant dans le source du logiciel protégé 2ps, des fonctions élémentaires pour lesquelles au moins une caractéristique d'exécution de logiciel choisie, est à surveiller, * en modifiant au moins une portion choisie du source du logiciel protégé
2ps, cette modification étant telle que lors de l'exécution du logiciel protégé
2p, au moins une caractéristique d'exécution choisie est surveillée au moyen de la seconde partie d'exécution 2peu, et le non respect d'un critère aboutit à une information du système de traitement de données et/ou à une modification de l'exécution du logiciel protégé 2p, 'et en produisant la seconde partie objet 2pou du logiciel protégé 2p contenant les moyens d'exploitation mettant aussi en oeuvre les moyens de détection 17 et les moyens de coercition 18, cette seconde partie objet 2pou étant telle que, après chargement dans l'unité 6 et lors de l'exécution du logiciel protégé 2p, au moins une caractéristique d'exécution de logiciel est surveillée et le non respect d'un critère aboutit à une information du système de traitement de données et/ou à une modification de l'exécution du logiciel protégé 2p.
When the principle of protection by detection and coercion is implemented, the protected software 2p is modified: w by choosing at least one software execution characteristic to be monitored, among the execution characteristics that can be monitored, choosing at least one criterion to respect for at least one chosen software execution characteristic, * by choosing in the source of the protected software 2ps, elementary functions for which at least one selected software execution characteristic is to be monitored, * by modifying at least a selected portion of the source of the protected software
2ps, this change is such that when running the protected software
2p, at least one chosen execution characteristic is monitored by means of the second execution part 2peu, and the non-respect of a criterion results in information of the data processing system and / or modification of the data processing system. execution of the protected software 2p, and producing the second object part 2pou of the protected software 2p containing the operating means also implementing the detection means 17 and the coercion means 18, this second object part 2pou being such that, after loading in the unit 6 and during the execution of the protected software 2p, at least one software execution characteristic is monitored and the non-respect of a criterion results in information of the data processing system and / or a modification of the execution of the protected software 2p.

<Desc/Clms Page number 72> <Desc / Clms Page number 72>

Pour la mise en oeuvre du principe de protection par détection et coercition utilisant comme caractéristique une variable de mesure de l'exécution du logiciel, le logiciel protégé 2p est modifié : * en choisissant en tant que caractéristique d'exécution de logiciel à surveiller, au moins une variable de mesure de l'utilisation d'une fonctionnalité d'un logiciel, * en choisissant : - au moins une fonctionnalité du logiciel protégé 2p dont l'utilisation est susceptible d'être surveillée grâce à une variable de mesure,

Figure img00720001

- au moins une variable de mesure servant à quantifier l'utilisation de ladite fonctionnalité, - au moins un seuil associé à une variable de mesure choisie correspondant à une limite d'utilisation de ladite fonctionnalité, - et au moins une méthode de mise à jour d'une variable de mesure choisie en fonction de l'utilisation de ladite fonctionnalité, * et en modifiant au moins une portion choisie du source du logiciel protégé
2ps, cette modification étant telle que, lors de l'exécution du logiciel protégé 2p, la variable de mesure est actualisée au moyen de la seconde partie d'exécution 2peu, en fonction de l'utilisation de ladite fonctionnalité et au moins un dépassement de seuil est pris en compte. For the implementation of the principle of protection by detection and coercion using as a characteristic variable a measurement of the execution of the software, the protected software 2p is modified: * by choosing as characteristic of software execution to be monitored, to less a variable for measuring the use of a software functionality, * by choosing: - at least one feature of the 2p protected software whose use is likely to be monitored by means of a measurement variable,
Figure img00720001

at least one measurement variable for quantifying the use of said functionality, at least one threshold associated with a chosen measurement variable corresponding to a limit of use of said functionality, and at least one update method. of a variable of measure chosen according to the use of said functionality, * and by modifying at least a chosen portion of the source of the protected software
2ps, this modification being such that, during the execution of the protected software 2p, the measurement variable is updated by means of the second execution part 2peu, according to the use of said functionality and at least one overrun of threshold is taken into account.

Pour la mise en oeuvre d'une première variante préférée de réalisation du principe de protection par détection et coercition utilisant, comme caractéristique, une variable de mesure, le logiciel protégé 2p est modifié : 'en choisissant dans le source du logiciel protégé 2ps, au moins une variable de mesure choisie à laquelle doivent être associés plusieurs seuils correspondants à des limites différentes d'utilisation de la fonctionnalité, * en choisissant au moins deux seuils associés à la variable de mesure choisie, * et en modifiant au moins une portion choisie du source du logiciel protégé
2ps, cette modification étant telle que, lors de l'exécution du logiciel protégé 2p, les dépassements des divers seuils sont pris en compte, au
For the implementation of a first preferred embodiment of the principle of protection by detection and coercion using, as a characteristic, a measurement variable, the protected software 2p is modified: by choosing in the source of the protected software 2ps, minus one selected measurement variable to which several thresholds corresponding to different limits of use of the functionality must be associated, * by choosing at least two thresholds associated with the chosen measurement variable, * and by modifying at least a selected portion of the source of the protected software
2ps, this modification being such that, during the execution of the protected software 2p, the exceedances of the various thresholds are taken into account,

<Desc/Clms Page number 73><Desc / Clms Page number 73>

moyen de la seconde partie d'exécution 2peu, de manière différente.  the second part of execution 2peu, differently.

Pour la mise en oeuvre d'une seconde variante préférée de réalisation du principe de protection par détection et coercition utilisant comme caractéristique, une variable de mesure, le logiciel protégé 2p est modifié : 'en choisissant dans le source du logiciel protégé 2ps, au moins une variable de mesure choisie permettant de limiter l'utilisation d'une fonctionnalité à laquelle au moins une utilisation supplémentaire doit pouvoir être créditée, * et en modifiant au moins une portion choisie, cette modification étant telle que dans une phase dite de rechargement, au moins une utilisation supplémentaire d'au moins une fonctionnalité correspondante à une variable de mesure choisie peut être créditée.  For the implementation of a second preferred embodiment of the principle of protection by detection and coercion using as a characteristic, a measurement variable, the protected software 2p is modified: by choosing in the source of the protected software 2ps, at least a chosen measurement variable making it possible to limit the use of a feature to which at least one additional use must be able to be credited, * and by modifying at least one chosen portion, this modification being such that in a so-called recharging phase, at unless an additional use of at least one feature corresponding to a selected measurement variable can be credited.

Pour la mise en oeuvre du principe de protection par détection et coercition utilisant comme caractéristique, un profil d'utilisation de logiciel, le logiciel protégé 2p est modifié : * en choisissant en tant que caractéristique d'exécution de logiciel à surveiller au moins un profil d'utilisation de logiciel,

Figure img00730001

'en choisissant au moins un trait d'exécution qu'au moins un profil d'utilisation choisi doit respecter, 'et en modifiant au moins une portion choisie du source du logiciel protégé
2ps, cette modification étant telle que, lors de l'exécution du logiciel protégé 2p, la seconde partie d'exécution 2peu respecte tous les traits d'exécution choisis. For the implementation of the principle of protection by detection and coercion using as a characteristic, a software usage profile, the protected software 2p is modified: * by choosing as a software execution characteristic to monitor at least one profile of software use,
Figure img00730001

selecting at least one execution trait that at least one chosen usage profile must respect, and modifying at least a selected portion of the source of the protected software
2ps, this modification being such that, during the execution of the protected software 2p, the second execution part 2peu respects all the selected execution features.

Pour la mise en oeuvre du principe de protection par détection et coercition utilisant comme trait d'exécution à respecter, la surveillance de l'enchaînement d'exécution, le logiciel protégé 2p est modifié : * en modifiant au moins une portion choisie du source du logiciel protégé
2ps :

Figure img00730002

- en transformant les fonctions élémentaires en instructions, - en spécifiant l'enchaînement que doivent respecter au moins certaines des instructions lors de leur exécution dans l'unité 6, - et en transformant les commandes élémentaires en commandes For the implementation of the principle of protection by detection and coercion using as execution line to respect, the monitoring of the sequence of execution, the protected software 2p is modified: * by modifying at least a selected portion of the source of the protected software
2ps:
Figure img00730002

- by transforming the elementary functions into instructions, - by specifying the sequence that must follow at least some of the instructions when they are executed in the unit 6, - and by transforming the elementary commands into commands

<Desc/Clms Page number 74><Desc / Clms Page number 74>

d'instructions correspondantes aux instructions utilisées.  instructions corresponding to the instructions used.

Lorsque le principe de protection par renommage est mis en oeuvre, le logiciel 2p est modifié : 'en choisissant dans le source du logiciel protégé 2ps, des commandes déclenchantes, * en modifiant au moins une portion choisie du source du logiciel protégé 2ps en renommant les consignes des commandes déclenchantes choisies, afin de dissimuler l'identité des fonctions dépendantes correspondantes, * et en produisant : - la première partie objet 2pos du logiciel protégé 2p, cette première partie objet 2pos étant telle que lors de l'exécution du logiciel protégé
2p, les commandes déclenchantes à consignes renommées sont exécutées, et la seconde partie objet 2pou du logiciel protégé 2p contenant les moyens d'exploitation mettant aussi en oeuvre les moyens de rétablissement 20, cette seconde partie objet 2pou étant telle que, après chargement dans l'unité 6 et lors de l'exécution du logiciel protégé 2p, l'identité des fonctions dépendantes dont l'exécution est déclenchée par la première partie d'exécution 2pes est rétablie au moyen de la seconde partie d'exécution 2peu, et les fonctions dépendantes sont exécutées au moyen de la seconde partie d'exécution 2peu.
When the principle of protection by renaming is implemented, the software 2p is modified: 'by choosing in the source of the protected software 2ps, triggering commands, * by modifying at least a selected portion of the source of the protected software 2ps by renaming the instructions of the triggering commands chosen, in order to conceal the identity of the corresponding dependent functions, * and by producing: the first object part 2pos of the protected software 2p, this first object part 2pos being such that during the execution of the protected software
2p, the triggering commands with renamed setpoints are executed, and the second object part 2pou of the protected software 2p containing the operating means also implementing the recovery means 20, this second object part 2pou being such that, after loading into the 6 and during the execution of the protected software 2p, the identity of the dependent functions whose execution is triggered by the first execution part 2pes is restored by means of the second execution part 2peu, and the functions dependents are executed by means of the second 2-bit execution part.

Pour la mise en oeuvre d'une variante du principe de protection par renommage, le logiciel protégé 2p est modifié : * en choisissant dans le source du logiciel protégé 2ps au moins une commande déclenchante à consigne renommée, * et en modifiant au moins une portion choisie du source du logiciel protégé
2ps en remplaçant au moins la consigne renommée d'une commande déclenchante à consigne renommée choisie, par une autre consigne renommée, déclenchant une fonction dépendante de la même famille.
For the implementation of a variant of the protection principle by renaming, the protected software 2p is modified: * by choosing in the source of the protected software 2ps at least one triggering command with renamed reference, * and by modifying at least a portion chosen source of the protected software
2ps by replacing at least the renamed setpoint of a triggering command with a chosen setpoint, by another setpoint renamed, triggering a function dependent on the same family.

Lorsque le principe de protection par branchement conditionnel est mis en oeuvre, le logiciel protégé 2p est modifié :  When the principle of protection by conditional branching is implemented, the protected software 2p is modified:

<Desc/Clms Page number 75><Desc / Clms Page number 75>

'en choisissant dans le source du logiciel protégé 2ps, au moins un branchement conditionnel effectué dans au moins un traitement algorithmique choisi, 'en modifiant au moins une portion choisie du source du logiciel protégé
2ps, cette modification étant telle que lors de l'exécution du logiciel protégé
2p, la fonctionnalité d'au moins un branchement conditionnel choisi, est exécutée, au moyen de la seconde partie d'exécution 2peu, dans l'unité 6, * et en produisant : - la première partie objet 2pos du logiciel protégé 2p, cette première partie objet 2pos étant telle que lors de l'exécution du logiciel protégé
2p, la fonctionnalité d'au moins un branchement conditionnel choisi est exécutée dans l'unité 6, - et la seconde partie objet 2pou du logiciel protégé 2p, cette seconde partie objet 2pou étant telle que, après chargement dans l'unité 6 et lors de l'exécution du logiciel protégé 2p, apparaît la seconde partie d'exécution 2peu au moyen de laquelle la fonctionnalité d'au moins un branchement conditionnel choisi est exécutée.
by choosing in the source of the protected software 2ps, at least one conditional branch made in at least one chosen algorithmic processing, by modifying at least a selected portion of the source of the protected software
2ps, this change is such that when running the protected software
2p, the functionality of at least one selected conditional branch, is executed, by means of the second execution part 2peu, in the unit 6, * and producing: the first object part 2pos of the protected software 2p, this first part object 2pos being such that when running the protected software
2p, the functionality of at least one selected conditional branch is executed in the unit 6, - and the second object part 2pou of the protected software 2p, this second object part 2pou being such that, after loading in the unit 6 and when of the execution of the protected software 2p, the second execution part 2peu appears by means of which the functionality of at least one selected conditional branch is executed.

Pour la mise en oeuvre d'une réalisation préférée du principe de protection par branchement conditionnel, le logiciel protégé 2p est modifié : * en choisissant, dans le source du logiciel protégé 2ps au moins une série de branchements conditionnels choisis, * en modifiant au moins une portion choisie du source du logiciel protégé
2ps, cette modification étant telle que lors de l'exécution du logiciel protégé
2p, la fonctionnalité globale d'au moins une série choisie de branchements conditionnels est exécutée au moyen de la seconde partie d'exécution 2peu, dans l'unité 6, * et en produisant : - la première partie objet 2pos du logiciel protégé 2p, cette première partie objet 2pos étant telle que lors de l'exécution du logiciel protégé
2p, la fonctionnalité d'au moins une série choisie de branchements conditionnels est exécutée dans l'unité 6,
For the implementation of a preferred embodiment of the conditional branch protection principle, the protected software 2p is modified: by choosing, in the source of the protected software 2ps, at least one series of selected conditional branches, modifying at least a selected portion of the protected software source
2ps, this change is such that when running the protected software
2p, the global functionality of at least one selected set of conditional branches is executed by means of the second 2-bit execution part, in the unit 6, * and producing: the first object part 2pos of the protected software 2p, this first part object 2pos being such that during the execution of the protected software
2p, the functionality of at least one selected series of conditional branches is executed in the unit 6,

<Desc/Clms Page number 76><Desc / Clms Page number 76>

- et la seconde partie objet 2pou du logiciel protégé 2p, cette seconde partie objet 2pou étant telle que, après chargement dans l'unité 6 et lors de l'exécution du logiciel protégé 2p, apparaît la seconde partie d'exécution 2peu au moyen de laquelle la fonctionnalité globale d'au moins une série choisie de branchements conditionnels est exécutée.  and the second object part 2p or of the protected software 2p, this second object part 2pou being such that, after loading in the unit 6 and during the execution of the protected software 2p, the second execution part 2peu appears by means of which the global functionality of at least one selected series of conditional branches is executed.

Bien entendu, les principes de protection selon l'invention peuvent être appliqués directement lors du développement d'un nouveau logiciel sans nécessiter la réalisation préalable de logiciels protégés intermédiaires. De cette façon, les stades de création 821 et de modification 822 peuvent être effectués concomitamment de manière à obtenir directement le logiciel protégé 2p.

Figure img00760001
Of course, the protection principles according to the invention can be applied directly during the development of a new software without requiring the prior implementation of intermediate protected software. In this way, the creation and modification stages 821 and 822 can be performed concomitantly so as to directly obtain the protected software 2p.
Figure img00760001

Lors de la sous-phase de protection aval P2, il est mis en oeuvre après le stade de création 821 du logiciel protégé 2p, et éventuellement après le stade de modification 822, un stade appelé"stade de personnalisation 823". Lors de ce stade de personnalisation 823, la seconde partie objet 2pou contenant éventuellement les moyens d'exploitation est chargée dans au moins une unité vierge 60, en vue d'obtenir au moins une unité 6, ou une partie de la seconde partie objet 2pou contenant éventuellement les moyens d'exploitation est chargée dans au moins une unité pré-personnalisée 66, en vue d'obtenir au moins une unité 6. Le chargement de ces informations de personnalisation permet de rendre opérationnelle au moins une unité 6. Il est à noter qu'une partie de ces informations, une fois transférée dans une unité 6, n'est pas directement accessible de l'extérieur de cette unité 6. Le transfert des informations de personnalisation dans une unité vierge 60 ou une unité prépersonnalisée 66 peut être réalisé par l'intermédiaire d'une unité de personnalisation adaptée qui est décrite dans la suite de la description à la fig. 150. Dans le cas d'une unité 6, constituée d'une carte à puce 7 et de son lecteur 8, la personnalisation ne concerne que la carte à puce 7. During the downstream protection sub-phase P2, it is implemented after the creation stage 821 of the protected software 2p, and possibly after the modification stage 822, a stage called "personalization stage 823". During this personalization stage 823, the second object part 2p or possibly containing the operating means is loaded in at least one blank unit 60, in order to obtain at least one unit 6, or part of the second object part 2 or possibly containing the operating means is loaded into at least one pre-customized unit 66, in order to obtain at least one unit 6. The loading of this personalization information makes it possible to make at least one unit 6 operational. note that some of this information, once transferred to a unit 6, is not directly accessible from outside this unit 6. The transfer of the personalization information in a blank unit 60 or a pre-customized unit 66 may be realized through a suitable personalization unit which is described in the following description in FIG. 150. In the case of a unit 6, consisting of a smart card 7 and its reader 8, the personalization only concerns the smart card 7.

Pour la mise en oeuvre de la phase de protection P, différents moyens techniques sont décrits plus précisément en relation des fig. 110,120, 130,140 et 150.  For the implementation of the protection phase P, various technical means are described more precisely in relation to FIGS. 110, 120, 130, 140 and 150.

La fig. 110 illustre un exemple de réalisation d'un système 25 permettant de mettre en oeuvre le stade de construction 812 prenant en compte les définitions intervenues au stade de définition 8u et au cours duquel sont construits les moyens  Fig. 110 illustrates an exemplary embodiment of a system 25 for implementing the construction step 812 taking into account the definitions that have occurred at the definition stage 8u and during which the means are constructed.

<Desc/Clms Page number 77><Desc / Clms Page number 77>

de transfert 12,13 et éventuellement, les moyens d'exploitation destinés à l'unité 6. Un tel système 25 comporte une unité de développement de programme ou station de travail se présentant classiquement sous la forme d'un ordinateur comprenant une unité centrale, un écran, des périphériques du type clavier-souris, et comportant, notamment, les programmes suivants : éditeurs de fichiers, assembleurs, préprocesseurs, compilateurs, interpréteurs, debuggers et éditeurs de liens.  12,13 and optionally, the operating means for the unit 6. Such a system 25 comprises a program development unit or workstation conventionally presented in the form of a computer comprising a central unit, a screen, devices of the keyboard-mouse type, and including, in particular, the following programs: file editors, assemblers, preprocessors, compilers, interpreters, debuggers and linkers.

La fig. 120 illustre un exemple de réalisation d'une unité de prépersonnalisation 30 permettant de charger au moins en partie les moyens de transfert 13 et/ou les moyens d'exploitation dans au moins une unité vierge 60 en vue d'obtenir au moins une unité pré-personnalisée 66. Cette unité de prépersonnalisation 30 comporte un moyen de lecture et d'écriture 31 permettant de prépersonnaliser de manière électrique, une unité vierge 60, de manière à obtenir une unité pré-personnalisée 66 dans laquelle les moyens de transfert 13 et/ou d'exploitation ont été chargés. L'unité de pré-personnalisation 30 peut aussi comporter des moyens de personnalisation physique 32 de l'unité vierge 60 pouvant se présenter par exemple, sous la forme d'une imprimante. Dans le cas où l'unité 6 est constituée par une carte à puce 7 et son lecteur 8, la pré-personnalisation concerne généralement uniquement la carte à puce 7.  Fig. 120 illustrates an exemplary embodiment of a pre-personalization unit 30 for loading at least part of the transfer means 13 and / or the operating means in at least one blank unit 60 in order to obtain at least one pre-unit 66. This pre-personalization unit 30 comprises reading and writing means 31 making it possible to electrically pre-personalize a blank unit 60 so as to obtain a pre-personalized unit 66 in which the transfer means 13 and / or or operating were loaded. The pre-personalization unit 30 may also include physical personalization means 32 of the blank unit 60 that can be, for example, in the form of a printer. In the case where the unit 6 is constituted by a smart card 7 and its reader 8, the pre-customization generally concerns only the smart card 7.

La fig. 130 illustre un exemple de réalisation d'un système 35 permettant d'effectuer la confection des outils permettant d'aider à générer des logiciels protégés ou d'automatiser la protection de logiciels. Un tel système 35 comporte une unité de développement de programme ou station de travail se présentant classiquement sous la forme d'un ordinateur comprenant une unité centrale, un écran, des périphériques du type clavier-souris, et comportant, notamment, les programmes suivants : éditeurs de fichiers, assembleurs, pré-processeurs, compilateurs, interpréteurs, debuggers et éditeurs de liens.  Fig. 130 illustrates an exemplary embodiment of a system 35 for making the preparation of tools to help generate protected software or automate software protection. Such a system 35 comprises a program development unit or workstation conventionally presented in the form of a computer comprising a central unit, a screen, peripherals of the keyboard-mouse type, and comprising, in particular, the following programs: file editors, assemblers, preprocessors, compilers, interpreters, debuggers and linkers.

La fig. 140 illustre un exemple de réalisation d'un système 40 permettant de créer directement un logiciel protégé 2p ou de modifier un logiciel vulnérable 2v en vue d'obtenir un logiciel protégé 2p. Un tel système 40 comporte une unité de développement de programme ou station de travail se présentant classiquement sous la forme d'un ordinateur comprenant une unité centrale, un écran, des périphériques du type clavier-souris, et comportant, notamment, les programmes suivants : éditeurs  Fig. 140 illustrates an embodiment of a system 40 for directly creating a protected software 2p or to modify a vulnerable software 2v to obtain a protected software 2p. Such a system 40 comprises a program development unit or workstation conventionally presented in the form of a computer comprising a central unit, a screen, peripherals of the keyboard-mouse type, and comprising, in particular, the following programs: publishers

<Desc/Clms Page number 78><Desc / Clms Page number 78>

de fichiers, assembleurs, pré-processeurs, compilateurs, interpréteurs, debuggers et éditeurs de liens, ainsi que des outils permettant d'aider à générer des logiciels protégés ou d'automatiser la protection de logiciels.  files, assemblers, pre-processors, compilers, interpreters, debuggers, and linkers, as well as tools to help generate protected software or automate software protection.

La fig. 150 illustre un exemple de réalisation d'une unité de personnalisation 45 permettant de charger la seconde partie objet 2pou dans au moins une unité vierge 60 en vue d'obtenir au moins une unité 6 ou une partie de la seconde partie objet 2pou dans au moins une unité pré-personnalisée 66 en vue d'obtenir au moins une unité 6.  Fig. 150 illustrates an exemplary embodiment of a personalization unit 45 for charging the second object part 2pou in at least one blank unit 60 in order to obtain at least one unit 6 or part of the second object part 2pou in at least a pre-personalized unit 66 for obtaining at least one unit 6.

Cette unité de personnalisation 45 comporte un moyen de lecture et d'écriture 46 permettant de personnaliser de manière électrique, au moins une unité vierge 60 ou au moins une unité pré-personnalisée 66, de manière à obtenir au moins une unité 6. This personalization unit 45 comprises a reading and writing means 46 making it possible to electrically personalize at least one blank unit 60 or at least one pre-personalized unit 66, so as to obtain at least one unit 6.

A l'issue de cette personnalisation, une unité 6 comporte les informations nécessaires à l'exécution du logiciel protégé 2p. L'unité de personnalisation 45 peut aussi comporter des moyens de personnalisation physique 47 pour au moins une unité 6 pouvant se présenter par exemple, sous la forme d'une imprimante. Dans le cas où une unité 6 est constituée par une carte à puce 7 et son lecteur 8, la personnalisation concerne généralement uniquement la carte à puce 7. At the end of this customization, a unit 6 includes the information necessary for the execution of the protected software 2p. The personalization unit 45 may also include physical personalization means 47 for at least one unit 6 that may be, for example, in the form of a printer. In the case where a unit 6 is constituted by a smart card 7 and its reader 8, the personalization generally concerns only the smart card 7.

Le procédé de protection de l'invention peut être mis en oeuvre avec les améliorations suivantes :
Il peut être prévu d'utiliser conjointement plusieurs unités de traitement et de mémorisation dans lesquelles sont réparties la seconde partie objet 2pou du logiciel protégé 2p de manière que leur utilisation conjointe permette d'exécuter le logiciel protégé 2p, l'absence d'au moins une de ces unités de traitement et de mémorisation empêchant l'utilisation du logiciel protégé
2p.
The protection method of the invention can be implemented with the following improvements:
It can be envisaged to use jointly several processing and storage units in which the second object portion 2p or of the protected software 2p is distributed so that their joint use makes it possible to execute the protected software 2p, the absence of at least one of these processing and storage units preventing the use of the protected software
2p.

De même, après le stade de pré-personnalisation 813 et lors du stade de personnalisation S23, la partie de la seconde partie objet 2pou nécessaire pour transformer l'unité pré-personnalisée 66 en une unité 6 peut être contenue dans une unité de traitement et de mémorisation utilisée par le système de personnalisation 45 afin de limiter l'accès à cette information.  Likewise, after the pre-personalization stage 813 and during the personalization stage S23, the part of the second object part 2 or necessary to transform the pre-personalized unit 66 into a unit 6 can be contained in a processing unit and storage used by the personalization system 45 to limit access to this information.

Bien entendu, cette partie de la seconde partie objet 2pou peut être répartie dans plusieurs unités de traitement et de mémorisation de manière que cette information soit accessible uniquement lors de l'utilisation conjointe de ces  Of course, this part of the second object part 2pou can be distributed in several processing and storage units so that this information is accessible only when the combined use of these

<Desc/Clms Page number 79><Desc / Clms Page number 79>

unités de traitement et de mémorisation. processing and storage units.

Claims (36)

REVENDICATIONS :CLAIMS: 1-Procédé pour protéger, à partir d'au moins une unité vierge (60) comportant au moins des moyens de mémorisation (15) et des moyens de traitement (16), un logiciel vulnérable (2v) contre son utilisation non autorisée, ledit logiciel vulnérable (2v) fonctionnant sur un système de traitement de données (3), caractérisé en ce qu'il consiste : - 7 dans une phase de protection (P) : à créer un logiciel protégé (2p) : - en choisissant, au moins un traitement algorithmique qui, lors de l'exécution du logiciel vulnérable (2v), utilise au moins un opérande et permet d'obtenir au moins un résultat, - en choisissant au moins une portion du source du logiciel vulnérable (2vs) contenant, au moins un traitement algorithmique choisi, - en produisant le source du logiciel protégé (2ps) à partir du source du logiciel vulnérable (2vs), en modifiant au moins une portion choisie du source du logiciel vulnérable (2vs) pour obtenir au moins une portion modifiée du source du logiciel protégé (2ps), cette modification étant telle que : > lors de l'exécution du logiciel protégé (2p) une première partie d'exécution (2pes) est exécutée dans le système de traitement de données (3) et une seconde partie d'exécution (2peu) est exécutée dans une unité (6), obtenue à partir de l'unité vierge (60) après chargement d'informations, > la seconde partie d'exécution (2peu) exécute au moins la fonctionnalité d'au moins un traitement algorithmique choisi, > au moins un traitement algorithmique choisi est décomposé de manière que lors de l'exécution du logiciel protégé (2p) apparaissent au moyen de la seconde partie d'exécution (2peu), plusieurs étapes distinctes, à savoir :1-Process for protecting, from at least one blank unit (60) comprising at least storage means (15) and processing means (16), a vulnerable software (2v) against its unauthorized use, said vulnerable software (2v) operating on a data processing system (3), characterized in that it consists of: - 7 in a protection phase (P): to create a protected software (2p): - by choosing, at less an algorithmic processing which, when running the vulnerable software (2v), uses at least one operand and makes it possible to obtain at least one result, - by choosing at least a portion of the source of the vulnerable software (2vs) containing, at least one algorithmic processing chosen, - by generating the source of the protected software (2ps) from the source of the vulnerable software (2vs), by modifying at least a selected portion of the source of the vulnerable software (2vs) to obtain at least a portion modified log source protected version (2ps), this modification being such that:> during the execution of the protected software (2p) a first execution part (2pes) is executed in the data processing system (3) and a second part d execution (2p) is performed in a unit (6), obtained from the blank unit (60) after loading information,> the second execution part (2p) executes at least the functionality of at least a chosen algorithmic processing,> at least one chosen algorithmic processing is decomposed so that during the execution of the protected software (2p) appear by means of the second execution part (2pu), several distinct steps, namely: 0 la mise à disposition d'au moins un opérande pour l'unité (6), 0 the provision of at least one operand for the unit (6), <Desc/Clms Page number 81> <Desc / Clms Page number 81> 0 et éventuellement, la mise à disposition d'au moins un résultat, par l'unité (6) pour le système de traitement de données (3), > pour au moins un traitement algorithmique choisi, des commandes d'étapes sont définies de manière que lors de l'exécution du logiciel protégé (2p), chaque commande d'étape est exécutée par la première partie d'exécution (2pes) et déclenche, dans l'unité (6), l'exécution au moyen de la seconde partie d'exécution (2peu), d'une étape, > et un ordonnancement des commandes d'étapes est choisi parmi l'ensemble des ordonnancements permettant l'exécution du logiciel protégé (2p), - et en produisant : > une première partie objet (2pos) du logiciel protégé (2p), à partir du source du logiciel protégé (2ps), cette première partie objet (2pos) étant telle que lors de l'exécution du logiciel protégé (2p), apparaît une première partie d'exécution (2pes) qui est exécutée dans le système de traitement de données (3) et dont au moins une portion prend en compte que les commandes d'étapes sont exécutées selon l'ordonnancement choisi, > et une seconde partie objet (2pou) du logiciel protégé (2p), cette seconde partie objet (2pou) étant telle que, après chargement dans l'unité vierge (60) et lors de l'exécution du logiciel protégé (2p), apparaît la seconde partie d'exécution (2peu) au moyen de laquelle les étapes déclenchées par la première partie d'exécution (2pes) sont exécutées, et à charger la seconde partie objet (2pou) dans l'unité vierge (60), en vue d'obtenir l'unité (6), et dans une phase d'utilisation (U) au cours de laquelle est exécuté le logiciel protégé (2p) : 0 and optionally, the provision of at least one result, by the unit (6) for the data processing system (3),> for at least one selected algorithmic processing, step commands are defined of in the execution of the protected software (2p), each step command is executed by the first execution part (2pes) and triggers, in the unit (6), execution by means of the second execution part (2pes). execution part (2p), of a step,> and a scheduling of the commands of steps is chosen among the set of scheduling allowing the execution of the protected software (2p), - and by producing:> a first part object (2pos) of the protected software (2p), from the source of the protected software (2ps), this first object part (2pos) being such that during the execution of the protected software (2p), a first part of execution (2pes) which is executed in the data processing system (3) and whose ins a portion takes into account that the commands of steps are executed according to the chosen scheduling,> and a second object part (2pou) of the protected software (2p), this second object part (2pou) being such that, after loading into the blank unit (60) and during the execution of the protected software (2p), the second execution part (2p) appears, by means of which the steps triggered by the first execution part (2pes) are executed, and to load the second object part (2pou) in the blank unit (60), in order to obtain the unit (6), and in a use phase (U) during which the protected software is executed (2p): 0 la réalisation par l'unité (6), de la fonctionnalité du traitement algorithmique sur au moins cet opérande,0 the realization by the unit (6) of the functionality of the algorithmic processing on at least this operand, <Desc/Clms Page number 82><Desc / Clms Page number 82> 'en présence de l'unité (6) et à chaque fois qu'une commande d'étape contenue dans une portion de la première partie d'exécution (2pes) l'impose, à exécuter l'étape correspondante dans l'unité (6), de sorte que cette portion est exécutée correctement et que, par conséquent, le logiciel protégé (2p) est complètement fonctionnel, * et en l'absence de l'unité (6), malgré la demande d'une portion de la première partie d'exécution (2pes) de déclencher l'exécution d'une étape dans l'unité (6), à ne pas pouvoir répondre correctement à cette demande, de sorte qu'au moins cette portion n'est pas exécutée correctement et que, par conséquent, le logiciel protégé (2p) n'est pas complètement fonctionnel.  in the presence of the unit (6) and whenever a step command contained in a portion of the first execution part (2pes) requires it, to execute the corresponding step in the unit ( 6), so that this portion is executed correctly and that, therefore, the protected software (2p) is fully functional, * and in the absence of the unit (6), despite the demand for a portion of the first execution part (2pes) to trigger the execution of a step in the unit (6), to not being able to correctly answer this request, so that at least this portion is not executed correctly and that, therefore, the protected software (2p) is not fully functional. 2-Procédé selon la revendication 1, caractérisé en ce qu'il consiste : 2-Process according to claim 1, characterized in that it consists of:
Figure img00820001
Figure img00820001
- 7 dans la phase de protection (P) : à modifier le logiciel protégé (2p) : - en choisissant au moins une variable utilisée dans au moins un traitement algorithmique choisi, qui lors de l'exécution du logiciel protégé (2p), définit partiellement l'état du logiciel protégé (2p), - en modifiant au moins une portion choisie du source du logiciel protégé (2ps), cette modification étant telle que lors de l'exécution du logiciel protégé (2p), au moins une variable choisie ou au moins une copie de variable choisie réside dans l'unité (6), - et en produisant : > la première partie objet (2pos) du logiciel protégé (2p), cette première partie objet (2pos) étant telle que lors de l'exécution du logiciel protégé (2p), au moins une portion de la première partie d'exécution (2pes) prend aussi en compte qu'au moins une variable ou au moins une copie de variable réside dans l'unité (6), > et la seconde partie objet (2pou) du logiciel protégé (2p), cette seconde partie objet (2pou) étant telle que, après chargement dans l'unité (6) et lors de l'exécution du logiciel protégé (2p), apparaît la seconde partie d'exécution (2peu) au moyen de laquelle au moins une variable choisie, ou au moins une copie de variable  - 7 in the protection phase (P): to modify the protected software (2p): - by choosing at least one variable used in at least one chosen algorithmic processing, which during the execution of the protected software (2p), defines partially the state of the protected software (2p), - by modifying at least a selected portion of the source of the protected software (2ps), this modification being such that during the execution of the protected software (2p), at least one variable chosen or at least one copy of the chosen variable resides in the unit (6), and producing:> the first object part (2pos) of the protected software (2p), this first object part (2pos) being such that when the execution of the protected software (2p), at least a portion of the first execution part (2pes) also takes into account that at least one variable or at least one copy of variable resides in the unit (6),> and the second object part (2pou) of the protected software (2p), this second part object (2pou) being such that, after loading in the unit (6) and during the execution of the protected software (2p), appears the second execution part (2pu) by means of which at least one chosen variable, or at least one copy of variable <Desc/Clms Page number 83><Desc / Clms Page number 83> choisie réside aussi dans l'unité (6), - 7 et dans la phase d'utilisation (U) : 'en présence de l'unité (6) à chaque fois qu'une portion de la première partie d'exécution (2pes) l'impose, à utiliser une variable ou une copie de variable résidant dans l'unité (6), de sorte que cette portion est exécutée correctement et que, par conséquent, le logiciel protégé (2p) est complètement fonctionnel, * et en l'absence de l'unité (6), malgré la demande d'une portion de la première partie d'exécution (2pes) d'utiliser une variable ou une copie de variable résidant dans l'unité (6), à ne pouvoir répondre correctement à cette demande, de sorte qu'au moins cette portion n'est pas exécutée correctement et que, par conséquent, le logiciel protégé (2p) n'est pas complètement fonctionnel.  chosen also lies in the unit (6), - 7 and in the utilization phase (U): in the presence of the unit (6) each time a portion of the first execution part (2pes ) imposes it, to use a variable or a copy of variable residing in the unit (6), so that this portion is executed correctly and that, therefore, the protected software (2p) is fully functional, * and in the absence of the unit (6), despite the request for a portion of the first execution part (2pes) to use a variable or a copy of variable residing in the unit (6), to be able to respond correctly to this request, so that at least this portion is not executed correctly and, therefore, the protected software (2p) is not fully functional.
3-Procédé selon la revendication 1 ou 2, caractérisé en ce qu'il consiste : - 7 dans la phase de protection (P) : * à définir : - un jeu de fonctions élémentaires dont les fonctions élémentaires sont susceptibles d'être exécutées dans l'unité (6), - et un jeu de commandes élémentaires pour ce jeu de fonctions élémentaires, ces commandes élémentaires étant susceptibles d'être exécutées dans le système de traitement de données (3) et de déclencher l'exécution dans l'unité (6), des fonctions élémentaires, * à construire des moyens d'exploitation permettant à l'unité (6), d'exécuter les fonctions élémentaires dudit jeu, l'exécution de ces fonctions élémentaires étant déclenchée par l'exécution dans le système de traitement de données (3), des commandes élémentaires, * et à modifier le logiciel protégé (2p) :  3-Process according to claim 1 or 2, characterized in that it consists: - 7 in the protection phase (P): * to define: - a set of elementary functions whose basic functions are likely to be executed in the unit (6), and a set of elementary commands for this set of elementary functions, these elementary commands being able to be executed in the data processing system (3) and to trigger the execution in the unit (6), elementary functions, * to construct operating means allowing the unit (6), to execute the elementary functions of said game, the execution of these elementary functions being triggered by the execution in the system data processing (3), basic commands, * and to modify the protected software (2p):
Figure img00830001
Figure img00830001
- en modifiant au moins une portion choisie du source du logiciel protégé (2ps), cette modification étant telle que : > au moins une étape est décomposée de manière que lors de l'exécution du logiciel protégé (2p), cette étape est exécutée au  by modifying at least a selected portion of the source of the protected software (2ps), this modification being such that: at least one step is decomposed so that during the execution of the protected software (2p), this step is executed at <Desc/Clms Page number 84><Desc / Clms Page number 84> moyen de la seconde partie d'exécution (2peu), en utilisant des fonctions élémentaires, > pour au moins une étape décomposée, des commandes élémentaires sont intégrées dans le source du logiciel protégé (2ps), de manière que lors de l'exécution du logiciel protégé (2p), chaque commande élémentaire est exécutée par la première partie d'exécution (2pes) et déclenche dans l'unité (6), l'exécution au moyen de la seconde partie d'exécution (2peu), d'une fonction élémentaire, > et un ordonnancement des commandes élémentaires est choisi parmi l'ensemble des ordonnancements permettant l'exécution du logiciel protégé (2p), - et en produisant : > la première partie objet (2pos) du logiciel protégé (2p), cette première partie objet (2pos) étant telle que lors de l'exécution du logiciel protégé (2p), au moins une portion de la première partie d'exécution (2pes) exécute aussi les commandes élémentaires selon l'ordonnancement choisi, > et la seconde partie objet (2pou) du logiciel protégé (2p) contenant aussi les moyens d'exploitation, cette seconde partie objet (2pou) étant telle que, après chargement dans l'unité (6) et lors de l'exécution du logiciel protégé (2p), apparaît la seconde partie d'exécution (2peu) au moyen de laquelle sont aussi exécutées les fonctions élémentaires déclenchées par la première partie d'exécution (2pes), et dans la phase d'utilisation (U) : 'en présence de l'unité (6) et à chaque fois qu'une commande élémentaire contenue dans une portion de la première partie d'exécution (2pes) l'impose, à exécuter la fonction élémentaire correspondante dans l'unité (6), de sorte que cette portion est exécutée correctement et que, par conséquent, le logiciel protégé (2p) est complètement fonctionnel, 'et en l'absence de l'unité (6), malgré la demande d'une portion de la  by means of elementary functions,> for at least one decomposed step, elementary commands are integrated in the source of the protected software (2ps), so that during the execution of the second execution part (2pu), protected software (2p), each elementary command is executed by the first execution part (2pes) and triggers in the unit (6), the execution by means of the second execution part (2pe), of a elementary function,> and a scheduling of the elementary commands is chosen from the set of scheduling allowing the execution of the protected software (2p), - and by producing:> the first object part (2pos) of the protected software (2p), this first object part (2pos) being such that during the execution of the protected software (2p), at least a portion of the first execution part (2pes) also executes the elementary commands according to the chosen scheduling,> and the second share ie object (2pou) of the protected software (2p) also containing the operating means, this second object part (2pou) being such that, after loading in the unit (6) and during the execution of the protected software (2p) ), appears the second part of execution (2pu) by means of which are also executed the elementary functions triggered by the first part of execution (2pes), and in the phase of use (U): 'in the presence of the unit (6) and whenever an elementary command contained in a portion of the first execution part (2pes) requires it, to execute the corresponding elementary function in the unit (6), so that this portion is executed correctly and that, therefore, the protected software (2p) is fully functional, and in the absence of the unit (6), despite the demand for a portion of the <Desc/Clms Page number 85><Desc / Clms Page number 85> première partie d'exécution (2pes), de déclencher l'exécution d'une fonction élémentaire dans l'unité (6), à ne pas pouvoir répondre correctement à cette demande, de sorte qu'au moins cette portion n'est pas exécutée correctement et que, par conséquent, le logiciel protégé (2p) n'est pas complètement fonctionnel.  first execution part (2pes), to trigger the execution of an elementary function in the unit (6), to not be able to respond correctly to this request, so that at least this portion is not executed correctly and, therefore, the protected software (2p) is not fully functional.
4-Procédé selon la revendication 3, caractérisé en ce qu'il consiste : 4-Process according to claim 3, characterized in that it consists of:
Figure img00850001
Figure img00850001
dans la phase de protection (P) : * à définir : - au moins une caractéristique d'exécution de logiciel, susceptible d'être surveillée au moins en partie dans l'unité (6), - au moins un critère à respecter pour au moins une caractéristique d'exécution de logiciel, - des moyens de détection (17) à mettre en oeuvre dans l'unité (6) et permettant de détecter qu'au moins une caractéristique d'exécution de logiciel ne respecte pas au moins un critère associé, - et des moyens de coercition (18) à mettre en oeuvre dans l'unité (6) et permettant d'informer le système de traitement de données (3) et/ou de modifier l'exécution d'un logiciel, lorsqu'au moins un critère n'est pas respecté, 'à construire les moyens d'exploitation permettant à l'unité (6), de mettre aussi en oeuvre les moyens de détection (17) et les moyens de coercition (18), et à modifier le logiciel protégé (2p) :  in the protection phase (P): * to be defined: - at least one software execution characteristic, which can be monitored at least partly in the unit (6), - at least one criterion to be met for at least least one software execution characteristic, - detection means (17) to be implemented in the unit (6) and making it possible to detect that at least one software execution characteristic does not comply with at least one criterion associated, - and coercion means (18) to implement in the unit (6) and to inform the data processing system (3) and / or modify the execution of software, when at least one criterion is not respected, to construct the operating means enabling the unit (6) to also use the detection means (17) and the coercion means (18), and to modify the protected software (2p):
Figure img00850002
Figure img00850002
- en choisissant au moins une caractéristique d'exécution de logiciel à surveiller, parmi les caractéristiques d'exécution susceptibles d'être surveillées, - en choisissant au moins un critère à respecter pour au moins une caractéristique d'exécution de logiciel choisie, - en choisissant dans le source du logiciel protégé (2ps), des fonctions élémentaires pour lesquelles au moins une caractéristique d'exécution de logiciel choisie, est à surveiller,  by choosing at least one software execution characteristic to be monitored, from the execution characteristics that can be monitored, by choosing at least one criterion to respect for at least one chosen software execution characteristic, choosing in the source of the protected software (2ps), elementary functions for which at least one selected software execution characteristic is to be monitored, <Desc/Clms Page number 86><Desc / Clms Page number 86> - en modifiant au moins une portion choisie du source du logiciel protégé (2ps), cette modification étant telle que lors de l'exécution du logiciel protégé (2p), au moins une caractéristique d'exécution choisie est surveillée au moyen de la seconde partie d'exécution (2peu), et le non respect d'un critère aboutit à une information du système de traitement de données et/ou à une modification de l'exécution du logiciel protégé (2p), - et en produisant la seconde partie objet (2pou) du logiciel protégé (2p) contenant les moyens d'exploitation mettant aussi en oeuvre les moyens de détection (17) et les moyens de coercition (18), cette seconde partie objet (2pou) étant telle que, après chargement dans l'unité (6) et lors de l'exécution du logiciel protégé (2p), au moins une caractéristique d'exécution de logiciel est surveillée et le non respect d'un critère aboutit à une information du système de traitement de données et/ou à une modification de l'exécution du logiciel protégé (2p), et dans la phase d'utilisation (U) : en présence de l'unité (6) : - tant que tous les critères correspondant à toutes les caractéristiques d'exécution surveillées de toutes les portions modifiées du logiciel protégé (2p) sont respectés, à permettre le fonctionnement nominal de ces portions du logiciel protégé (2p) et par conséquent à permettre le fonctionnement nominal du logiciel protégé (2p), - et si au moins un des critères correspondant à une caractéristique d'exécution surveillée d'une portion du logiciel protégé (2p) n'est pas respecté, à en informer le système de traitement de données (3) et/ou à modifier le fonctionnement de la portion du logiciel protégé (2p), de sorte que le fonctionnement du logiciel protégé (2p) est modifié.  by modifying at least a selected portion of the source of the protected software (2ps), this modification being such that during the execution of the protected software (2p), at least one selected execution characteristic is monitored by means of the second part (2p), and the non-respect of a criterion results in information of the data processing system and / or modification of the execution of the protected software (2p), and producing the second object part (2pou) of the protected software (2p) containing the operating means also implementing the detection means (17) and the coercion means (18), this second object part (2pou) being such that, after loading into the unit (6) and when running the protected software (2p), at least one software execution characteristic is monitored and failure to meet a criterion results in information of the data processing system and / or to a modification of the executable protection of the protected software (2p), and in the utilization phase (U): in the presence of the unit (6): - as long as all the criteria corresponding to all the monitored performance characteristics of all the modified portions of the protected software (2p) are respected, to allow the nominal operation of these portions of the protected software (2p) and consequently to allow the nominal operation of the protected software (2p), and if at least one of the criteria corresponding to a characteristic of monitored execution of a portion of the protected software (2p) is not respected, to inform the data processing system (3) and / or to modify the operation of the portion of the protected software (2p), so that the operation of the protected software (2p) is changed.
5-Procédé selon la revendication 4, pour limiter l'utilisation d'un logiciel protégé (2p), caractérisé en ce qu'il consiste : - 7 dans la phase de protection (P) :  5-Process according to claim 4, for limiting the use of a protected software (2p), characterized in that it consists: - 7 in the protection phase (P): <Desc/Clms Page number 87> <Desc / Clms Page number 87> - en choisissant en tant que caractéristique d'exécution de logiciel à surveiller, au moins une variable de mesure de l'utilisation d'une fonctionnalité d'un logiciel, - en choisissant : > au moins une fonctionnalité du logiciel protégé (2p) dont l'utilisation est susceptible d'être surveillée grâce à une variable de mesure, > au moins une variable de mesure servant à quantifier l'utilisation de ladite fonctionnalité, > au moins un seuil associé à une variable de mesure choisie correspondant à une limite d'utilisation de ladite fonctionnalité, > et au moins une méthode de mise à jour d'une variable de mesure choisie en fonction de l'utilisation de ladite fonctionnalité, - et en modifiant au moins une portion choisie du source du logiciel protégé (2ps), cette modification étant telle que, lors de l'exécution du logiciel protégé (2p), la variable de mesure est actualisée au moyen de la seconde partie d'exécution (2peu), en fonction de l'utilisation de ladite fonctionnalité et au moins un dépassement de seuil est pris en compte, et dans la phase d'utilisation (U), en présence de l'unité (6), et dans le cas où il  selecting, as a software execution characteristic to be monitored, at least one variable for measuring the use of a software functionality, by choosing: at least one feature of the protected software (2p) of which the use may be monitored by means of a measurement variable,> at least one measurement variable used to quantify the use of said functionality,> at least one threshold associated with a selected measurement variable corresponding to a limit of use of said functionality,> and at least one method of updating a measurement variable chosen according to the use of said functionality, and modifying at least a selected portion of the source of the protected software (2ps) , this modification being such that, during the execution of the protected software (2p), the measurement variable is updated by means of the second execution part (2p), depending on the use of said at least one threshold overrun is taken into account, and in the use phase (U), in the presence of the unit (6), and in the case where
Figure img00870002
Figure img00870002
à définir : - en tant que caractéristique d'exécution de logiciel susceptible d'être surveillée, une variable de mesure de l'utilisation d'une fonctionnalité d'un logiciel, - en tant que critère à respecter, au moins un seuil associé à chaque variable de mesure, - et des moyens d'actualisation permettant de mettre à jour au moins une variable de mesure, 'à construire les moyens d'exploitation permettant à l'unité (6) de mettre aussi en oeuvre les moyens d'actualisation, * et à modifier le logiciel protégé (2p) :  to define: - as a software execution characteristic that can be monitored, a variable for measuring the use of a software functionality, - as a criterion to be met, at least one threshold associated with each measurement variable, and update means making it possible to update at least one measurement variable, to construct the operating means enabling the unit (6) to also implement the updating means. , * and modify the protected software (2p):
Figure img00870001
Figure img00870001
<Desc/Clms Page number 88><Desc / Clms Page number 88>
Figure img00880001
Figure img00880001
est détecté au moins un dépassement de seuil correspondant à au moins une limite d'utilisation, à en informer le système de traitement de données (3) et/ou à modifier le fonctionnement de la portion du logiciel protégé (2p), de sorte que le fonctionnement du logiciel protégé (2p) est modifié.  at least one threshold violation corresponding to at least one usage limit is detected, the data processing system (3) is informed thereof and / or the operation of the portion of the protected software (2p) is modified, so that the operation of the protected software (2p) is changed.
6-Procédé selon la revendication 5, caractérisé en ce qu'il consiste : - 7 dans la phase de protection (P) : 'à définir : - pour au moins une variable de mesure, plusieurs seuils associés, - et des moyens de coercition différents correspondant à chacun de ces seuils, . et à modifier le logiciel protégé (2p) : 6-Process according to claim 5, characterized in that it consists: - 7 in the protection phase (P): 'to define: - for at least one measurement variable, several associated thresholds, - and means of coercion different corresponding to each of these thresholds,. and modify the protected software (2p):
Figure img00880002
Figure img00880002
- en choisissant dans le source du logiciel protégé (2ps), au moins une variable de mesure choisie à laquelle doivent être associés plusieurs seuils correspondants à des limites différentes d'utilisation de la fonctionnalité, - en choisissant au moins deux seuils associés à la variable de mesure choisie, - et en modifiant au moins une portion choisie du source du logiciel protégé (2ps), cette modification étant telle que, lors de l'exécution du logiciel protégé (2p), les dépassements des divers seuils sont pris en compte, au moyen de la seconde partie d'exécution (2peu), de manière différente, - 7 et dans la phase d'utilisation (U) : en présence de l'unité (6) : - dans le cas où il est détecté le dépassement d'un premier seuil, à enjoindre le logiciel protégé (2p) de ne plus utiliser la fonctionnalité correspondante, - et dans le cas où il est détecté le dépassement d'un deuxième seuil, à rendre inopérante la fonctionnalité correspondante et/ou au moins une portion du logiciel protégé (2p).  by choosing from the source of the protected software (2ps), at least one selected measurement variable to which several thresholds corresponding to different limits of use of the functionality must be associated, by choosing at least two thresholds associated with the variable chosen measurement, - and modifying at least a selected portion of the source of the protected software (2ps), this modification being such that, during the execution of the protected software (2p), the exceedances of the various thresholds are taken into account, by means of the second execution part (2pu), differently, - 7 and in the use phase (U): in the presence of the unit (6): - in the case where the overrange is detected a first threshold, to enjoin the protected software (2p) to no longer use the corresponding functionality, - and in the case where it is detected the exceeding of a second threshold, to render inoperative the corresponding functionality and / or to minus a portion of the protected software (2p).
7-Procédé selon la revendication 5 ou 6, caractérisé en ce qu'il consiste :  7-Process according to claim 5 or 6, characterized in that it consists of: <Desc/Clms Page number 89><Desc / Clms Page number 89>
Figure img00890002
Figure img00890002
- en choisissant dans le source du logiciel protégé (2ps), au moins une variable de mesure choisie permettant de limiter l'utilisation d'une fonctionnalité à laquelle au moins une utilisation supplémentaire doit pouvoir être créditée, - et en modifiant au moins une portion choisie, cette modification étant telle que dans une phase dite de rechargement, au moins une utilisation supplémentaire d'au moins une fonctionnalité correspondante à une variable de mesure choisie peut être créditée, et dans la phase de rechargement : à réactualiser au moins une variable de mesure choisie et/ou au moins un seuil associé, de manière à permettre au moins une utilisation supplémentaire de la fonctionnalité.  by choosing from the source of the protected software (2ps), at least one measurement variable chosen making it possible to limit the use of a feature to which at least one additional use must be able to be credited, and by modifying at least one portion chosen, this modification being such that in a so-called recharging phase, at least one additional use of at least one functionality corresponding to a chosen measurement variable can be credited, and in the recharging phase: to update at least one variable of chosen measure and / or at least one associated threshold, so as to allow at least one additional use of the functionality.
Figure img00890001
Figure img00890001
- 7 dans la phase de protection (P) : * à définir des moyens de rechargement permettant de créditer au moins une utilisation supplémentaire pour au moins une fonctionnalité de logiciel surveillée par une variable de mesure, 'à construire les moyens d'exploitation permettant aussi à l'unité (6) de mettre en oeuvre les moyens de rechargement, 'et à modifier le logiciel protégé (2p) :  - 7 in the protection phase (P): * to define reloading means making it possible to credit at least one additional use for at least one software functionality monitored by a measurement variable, to build the operating means also allowing to the unit (6) implementing the reloading means, and modifying the protected software (2p):
8-Procédé selon la revendication 4, caractérisé en ce qu'il consiste : - 7 dans la phase de protection (P) : * à définir : - en tant que caractéristique d'exécution de logiciel susceptible d'être surveillée, un profil d'utilisation de logiciel, - et en tant que critère à respecter, au moins un trait d'exécution de logiciel, 'et à modifier le logiciel protégé (2p) : 8-Process according to claim 4, characterized in that it consists: - 7 in the protection phase (P): * to define: - as a software execution characteristic that can be monitored, a profile of use of software, - and as a criterion to respect, at least one feature of software execution, and to modify the protected software (2p):
Figure img00890003
Figure img00890003
- en choisissant en tant que caractéristique d'exécution de logiciel à surveiller au moins un profil d'utilisation de logiciel, - en choisissant au moins un trait d'exécution qu'au moins un profil d'utilisation choisi doit respecter,  by choosing as a software execution characteristic to monitor at least one software usage profile, by choosing at least one execution feature that at least one chosen usage profile must respect, <Desc/Clms Page number 90><Desc / Clms Page number 90>
Figure img00900001
Figure img00900001
- et en modifiant au moins une portion choisie du source du logiciel protégé (2ps), cette modification étant telle que, lors de l'exécution du logiciel protégé (2p), la seconde partie d'exécution (2peu) respecte tous les traits d'exécution choisis, et dans la phase d'utilisation (U) en présence de l'unité (6), et dans le cas où il est détecté qu'au moins un trait d'exécution n'est pas respecté, à en informer le système de traitement de données (3) et/ou à modifier le fonctionnement de la portion du logiciel protégé (2p), de sorte que le fonctionnement du logiciel protégé (2p) est modifié.  and modifying at least a selected portion of the source of the protected software (2ps), this modification being such that, during the execution of the protected software (2p), the second execution part (2peu) respects all the features of the protected software (2p) selected execution, and in the use phase (U) in the presence of the unit (6), and in the case where it is detected that at least one performance feature is not respected, to inform the data processing system (3) and / or to modify the operation of the portion of the protected software (2p), so that the operation of the protected software (2p) is modified.
9-Procédé selon la revendication 8, caractérisé en ce qu'il consiste : - 7 dans la phase de protection (P) : * à définir : - un jeu d'instructions dont les instructions sont susceptibles d'être exécutées dans l'unité (6), - un jeu de commandes d'instructions pour ce jeu d'instructions, ces commandes d'instructions étant susceptibles d'être exécutées dans le système de traitement de données (3) et de déclencher dans l'unité (6) l'exécution des instructions, - en tant que profil d'utilisation, l'enchaînement des instructions, - en tant que trait d'exécution, un enchaînement souhaité pour l'exécution des instructions, - en tant que moyens de détection (17), des moyens permettant de détecter que l'enchaînement des instructions ne correspond pas à celui souhaité, - et en tant que moyens de coercition (18), des moyens permettant d'informer le système de traitement de données (3) et/ou de modifier le fonctionnement de la portion de logiciel protégé (2p) lorsque l'enchaînement des instructions ne correspond pas à celui souhaité, à construire les moyens d'exploitation permettant aussi à l'unité (6) d'exécuter les instructions du jeu d'instructions, l'exécution de ces instructions étant déclenchée par l'exécution dans le système de traitement 9-Method according to claim 8, characterized in that it consists: - 7 in the protection phase (P): * to define: - a set of instructions whose instructions are likely to be executed in the unit (6), - a set of instruction commands for this set of instructions, these instruction commands being capable of being executed in the data processing system (3) and triggering in the unit (6) the execution of instructions, - as a usage profile, the sequence of instructions, - as an execution feature, a desired sequence for executing instructions, - as detection means (17) means for detecting that the sequence of instructions does not correspond to that desired, and as means of coercion (18) means for informing the data processing system (3) and / or modify the operation of the protected software portion (2p) when e the sequence of instructions does not correspond to that desired, to build the operating means also allowing the unit (6) to execute the instructions of the instruction set, the execution of these instructions being triggered by the execution in the treatment system <Desc/Clms Page number 91><Desc / Clms Page number 91>
Figure img00910002
Figure img00910002
- en modifiant au moins une portion choisie du source du logiciel protégé (2ps) : > en transformant les fonctions élémentaires en instructions, > en spécifiant l'enchaînement que doivent respecter au moins certaines des instructions lors de leur exécution dans l'unité (6), > et en transformant les commandes élémentaires en commandes d'instructions correspondantes aux instructions utilisées, et dans la phase d'utilisation (U), en présence de l'unité (6), dans le cas où il est détecté que l'enchaînement des instructions exécutées dans l'unité (6) ne correspond pas à celui souhaité, à en informer le système de traitement de données (3) et/ou à modifier le fonctionnement de la portion du logiciel protégé (2p), de sorte que le fonctionnement du logiciel protégé (2p) est modifié.  - by modifying at least a selected portion of the source of the protected software (2ps):> by transforming the elementary functions into instructions,> by specifying the sequence that must be respected at least some of the instructions when they are executed in the unit (6 ), and by transforming the elementary commands into instruction commands corresponding to the instructions used, and in the use phase (U), in the presence of the unit (6), in the case where it is detected that the sequence of instructions executed in the unit (6) does not correspond to that desired, to inform the data processing system (3) and / or to modify the operation of the portion of the protected software (2p), so that the operation of the protected software (2p) is changed.
Figure img00910001
Figure img00910001
de données (3), des commandes d'instructions, et à modifier le logiciel protégé (2p) :  data (3), instruction commands, and to modify the protected software (2p):
10-Procédé selon la revendication 9, caractérisé en ce qu'il consiste : - 7 dans la phase de protection (P) : à définir : - en tant que jeu d'instructions, un jeu d'instructions dont au moins certaines instructions travaillent sur des registres et utilisent au moins un opérande en vue de rendre un résultat, - pour au moins une partie des instructions travaillant sur des registres : > une partie (PF) définissant la fonctionnalité de l'instruction, > et une partie définissant l'enchaînement souhaité pour l'exécution des instructions et comportant des champs de bits correspondant à :10-Process according to claim 9, characterized in that it consists: - 7 in the protection phase (P): to define: - as a set of instructions, a set of instructions which at least some instructions work on registers and using at least one operand to render a result, - for at least part of the instructions working on registers:> a part (PF) defining the functionality of the instruction,> and a part defining the desired sequence for executing the instructions and comprising bit fields corresponding to: 0 un champ d'identification de l'instruction (CII),0 an instruction identification field (CII), 0 et pour chaque opérande de l'instruction : * un champ drapeau (CDk), * et un champ d'identification prévue (CIPk) de l'opérande, - pour chaque registre appartenant aux moyens d'exploitation et utilisé 0 and for each operand of the instruction: * a flag field (CDk), * and an expected identification field (CIPk) of the operand, - for each register belonging to the operating means and used <Desc/Clms Page number 92><Desc / Clms Page number 92>
Figure img00920001
Figure img00920001
par le jeu d'instructions, un champ d'identification générée (CIGv) dans lequel est automatiquement mémorisée l'identification de la dernière instruction ayant rendu son résultat dans ce registre, - en tant que moyens de détection (17), des moyens permettant, lors de l'exécution d'une instruction, pour chaque opérande, lorsque le champ drapeau (CDk) l'impose, de contrôler l'égalité entre le champ d'identification générée (CIGv) correspondant au registre utilisé par cet opérande, et le champ d'identification prévue (CIPk) de l'origine de cet opérande, - et en tant que moyens de coercition (18), des moyens permettant de modifier le résultat des instructions, si au moins une des égalités contrôlées est fausse.  by the set of instructions, a generated identification field (CIGv) in which is automatically stored the identification of the last instruction having returned its result in this register, - as detection means (17), means allowing when executing an instruction, for each operand, when the flag field (CDk) imposes it, to check the equality between the generated identification field (CIGv) corresponding to the register used by this operand, and the intended identification field (CIPk) of the origin of this operand, and as means of coercion (18) means for modifying the result of the instructions, if at least one of the controlled equalities is false.
11-Procédé selon la revendication 3 ou 9 caractérisé en ce qu'il consiste : - 7 dans la phase de protection (P) : à définir : - en tant qu'une commande déclenchante, une commande élémentaire ou une commande d'instruction, - en tant qu'une fonction dépendante, une fonction élémentaire ou une instruction, - en tant qu'une consigne, au moins un argument pour une commande déclenchante, correspondant au moins en partie à l'information transmise par le système de traitement de données (3) à l'unité (6), afin de déclencher l'exécution de la fonction dépendante correspondante, - une méthode de renommage des consignes permettant de renommer les consignes afin d'obtenir des commandes déclenchantes à consignes renommées, - et des moyens de rétablissement (20) destinés à être mis en oeuvre dans l'unité (6) au cours de la phase d'utilisation (U), et permettant de retrouver la fonction dépendante à exécuter, à partir de la consigne renommée, à construire des moyens d'exploitation permettant à l'unité (6) de mettre 11-Process according to claim 3 or 9 characterized in that it consists: - 7 in the protection phase (P): to define: - as a triggering command, an elementary command or an instruction command, - as a dependent function, an elementary function or an instruction, - as a setpoint, at least one argument for a triggering command, corresponding at least in part to the information transmitted by the data processing system (3) to the unit (6), in order to trigger the execution of the corresponding dependent function, - a method of renaming instructions to rename the instructions in order to obtain trigger commands with renamed instructions, - and means of recovery (20) to be implemented in the unit (6) during the use phase (U), and to find the dependent function to perform, from the renamed instruction, to build way s of operation allowing the unit (6) to put <Desc/Clms Page number 93><Desc / Clms Page number 93> - en choisissant dans le source du logiciel protégé (2ps), des commandes déclenchantes, - en modifiant au moins une portion choisie du source du logiciel protégé (2ps) en renommant les consignes des commandes déclenchantes choisies, afin de dissimuler l'identité des fonctions dépendantes correspondantes, - et en produisant : > la première partie objet (2pos) du logiciel protégé (2p), cette première partie objet (2pos) étant telle que lors de l'exécution du logiciel protégé (2p), les commandes déclenchantes à consignes renommées sont exécutées, > et la seconde partie objet (2pou) du logiciel protégé (2p) contenant les moyens d'exploitation mettant aussi en oeuvre les moyens de rétablissement (20), cette seconde partie objet (2pou) étant telle que, après chargement dans l'unité (6) et lors de l'exécution du logiciel protégé (2p), l'identité des fonctions dépendantes dont l'exécution est déclenchée par la première partie d'exécution (2pes) est rétablie au moyen de la seconde partie d'exécution (2peu), et les fonctions dépendantes sont exécutées au moyen de la seconde partie d'exécution (2peu), et dans la phase d'utilisation (U) : * en présence de l'unité (6) et à chaque fois qu'une commande déclenchante à consigne renommée, contenue dans une portion de la première partie d'exécution (2pes) l'impose, à rétablir dans l'unité (6), l'identité de la fonction dépendante correspondante et à exécuter celle-ci, de sorte que cette portion est exécutée correctement et que, par conséquent, le logiciel protégé (2p) est complètement fonctionnel, * et en l'absence de l'unité (6), malgré la demande d'une portion de la première partie d'exécution (2pes), de déclencher l'exécution d'une fonction  - by choosing in the source of the protected software (2ps), triggering commands, - by modifying at least a chosen portion of the source of the protected software (2ps) by renaming the instructions of the triggering commands chosen, in order to conceal the identity of the functions corresponding dependents, - and producing:> the first object part (2pos) of the protected software (2p), this first object part (2pos) being such that during the execution of the protected software (2p), the triggering commands with instructions fame are executed,> and the second object part (2pou) of the protected software (2p) containing the operating means also implementing the recovery means (20), this second object part (2pou) being such that, after loading in the unit (6) and during the execution of the protected software (2p), the identity of the dependent functions whose execution is triggered by the first execution part (2pes) is reestablished e by means of the second part of execution (2peu), and the dependent functions are executed by means of the second part of execution (2peu), and in the phase of use (U): * in the presence of the unit (6) and each time a command triggering a renamed instruction, contained in a portion of the first execution part (2pes) requires it, to restore in the unit (6), the identity of the corresponding function and executing it, so that this portion is executed correctly and that, therefore, the protected software (2p) is fully functional, * and in the absence of the unit (6), despite the request for a portion of the first execution part (2pes), to trigger the execution of a function
Figure img00930001
Figure img00930001
aussi en oeuvre les moyens de rétablissement, et à modifier le logiciel protégé (2p) :  also implement the recovery means, and modify the protected software (2p): <Desc/Clms Page number 94><Desc / Clms Page number 94> dépendante dans l'unité (6), à ne pas pouvoir répondre correctement à cette demande, de sorte qu'au moins cette portion n'est pas exécutée correctement et que, par conséquent, le logiciel protégé (2p) n'est pas complètement fonctionnel.  dependent in the unit (6), to not be able to respond correctly to this request, so that at least this portion is not executed correctly and that, therefore, the protected software (2p) is not completely functional.
12-Procédé selon la revendication 11, caractérisé en ce qu'il consiste : - 7 dans la phase de protection (P) :  12-Process according to claim 11, characterized in that it consists: - 7 in the protection phase (P):
Figure img00940001
Figure img00940001
* à définir pour au moins une fonction dépendante, une famille de fonctions dépendantes algorithmiquement équivalentes, mais déclenchées par des commandes déclenchantes dont les consignes renommées sont différentes, 'et à modifier le logiciel protégé (2p) :  to define, for at least one dependent function, a family of dependent functions that are algorithmically equivalent, but triggered by triggering commands whose renamed instructions are different, and to modify the protected software (2p):
Figure img00940002
Figure img00940002
- en choisissant dans le source du logiciel protégé (2ps) au moins une commande déclenchante à consigne renommée, - et en modifiant au moins une portion choisie du source du logiciel protégé (2ps) en remplaçant au moins la consigne renommée d'une commande déclenchante à consigne renommée choisie, par une autre consigne renommée, déclenchant une fonction dépendante de la même famille.  - by choosing in the source of the protected software (2ps) at least one triggering command with renamed reference, - and by modifying at least a selected portion of the source of the protected software (2ps) by replacing at least the renamed instruction of a triggering command with renamed instruction chosen, by another renamed instruction, triggering a dependent function of the same family.
13-Procédé selon la revendication 12, caractérisé en ce qu'il consiste : - 7 dans la phase de protection (P), à définir, pour au moins une fonction dépendante, une famille de fonctions dépendantes algorithmiquement équivalentes : - en concaténant un champ de bruit à l'information définissant la partie fonctionnelle de la fonction dépendante à exécuter dans l'unité (6), - ou en utilisant le champ d'identification de l'instruction (CII) et les champs d'identification prévue (CIPk) des opérandes.  13-Process according to claim 12, characterized in that it consists: - 7 in the protection phase (P), to define, for at least one dependent function, a family of algorithmically equivalent dependent functions: - by concatenating a field of noise to information defining the functional part of the dependent function to be performed in the unit (6), - or using the instruction identification field (CII) and the planned identification fields (CIPk) operands. 14-Procédé selon la revendication ll, 12 ou 13, caractérisé en ce qu'il consiste :  14-Process according to claim 11, 12 or 13, characterized in that it consists:
Figure img00940003
Figure img00940003
- 7 dans la phase de protection (P) : à définir : - en tant que méthode de renommage des consignes, une méthode de chiffrement pour chiffrer les consignes,  - 7 in the protection phase (P): to define: - as a method of renaming the instructions, an encryption method to encrypt the instructions, <Desc/Clms Page number 95><Desc / Clms Page number 95> - et en tant que moyens de rétablissement (20), des moyens mettant en oeuvre une méthode de déchiffrement pour déchiffrer les consignes renommées et rétablir ainsi l'identité des fonctions dépendantes à exécuter dans l'unité (6).  and as recovery means (20), means implementing a decryption method for decrypting the renamed setpoints and thereby restoring the identity of the dependent functions to be executed in the unit (6).
15-Procédé selon l'une des revendications 1 à 14, caractérisé en ce qu'il consiste : - 7 dans la phase de protection (P) : à modifier le logiciel protégé (2p) : en choisissant dans le source du logiciel protégé (2ps), au moins un branchement conditionnel effectué dans au moins un traitement algorithmique choisi, - en modifiant au moins une portion choisie du source du logiciel protégé (2ps), cette modification étant telle que lors de l'exécution du logiciel protégé (2p), la fonctionnalité d'au moins un branchement conditionnel choisi, est exécutée, au moyen de la seconde partie d'exécution (2peu), dans l'unité (6), - et en produisant : > la première partie objet (2pos) du logiciel protégé (2p), cette première partie objet (2pos) étant telle que lors de l'exécution du logiciel protégé (2p), la fonctionnalité d'au moins un branchement conditionnel choisi est exécutée dans l'unité (6), > et la seconde partie objet (2pou) du logiciel protégé (2p), cette seconde partie objet (2pou) étant telle que, après chargement dans l'unité (6) et lors de l'exécution du logiciel protégé (2p), apparaît la seconde partie d'exécution (2peu) au moyen de laquelle la fonctionnalité d'au moins un branchement conditionnel choisi est exécutée, - 7 et dans la phase d'utilisation (U) : en présence de l'unité (6) et à chaque fois qu'une portion de la première partie d'exécution (2pes) l'impose, à exécuter la fonctionnalité d'au moins un branchement conditionnel dans l'unité (6), de sorte que cette portion est  15-Method according to one of claims 1 to 14, characterized in that it consists: - 7 in the protection phase (P): to modify the protected software (2p): by choosing in the source of the protected software ( 2ps), at least one conditional branch performed in at least one chosen algorithmic processing, - by modifying at least a selected portion of the source of the protected software (2ps), this modification being such that during the execution of the protected software (2p) the functionality of at least one selected conditional branch is performed, by means of the second execution part (2pu), in the unit (6), and producing:> the first object part (2pos) of protected software (2p), this first object part (2pos) being such that during the execution of the protected software (2p), the functionality of at least one selected conditional branch is executed in the unit (6),> and the second object part (2pou) of the protected software (2p), this second part object (2pou) being such that, after loading in the unit (6) and during the execution of the protected software (2p), appears the second part of execution (2peu) by means of which the functionality of at least one selected conditional branch is executed, and in the utilization phase (U): in the presence of the unit (6) and whenever a portion of the first execution part (2pes) l imposes, to execute the functionality of at least one conditional branch in the unit (6), so that this portion is <Desc/Clms Page number 96><Desc / Clms Page number 96> exécutée correctement et que, par conséquent, le logiciel protégé (2p) est complètement fonctionnel, et en l'absence de l'unité (6) et malgré la demande d'une portion de la première partie d'exécution (2pes) d'exécuter la fonctionnalité d'un branchement conditionnel dans l'unité (6), à ne pas pouvoir répondre correctement à cette demande, de sorte qu'au moins cette portion n'est pas exécutée correctement et que par conséquent, le logiciel protégé (2p) n'est pas complètement fonctionnel.  executed correctly and that, therefore, the protected software (2p) is fully functional, and in the absence of the unit (6) and despite the request for a portion of the first execution part (2pes) of execute the functionality of a conditional branch in the unit (6), to not be able to respond correctly to this request, so that at least this portion is not executed correctly and that, therefore, the protected software (2p ) is not fully functional. 16-Procédé selon la revendication 15, caractérisé en ce qu'il consiste, dans la phase de protection (P), à modifier le logiciel protégé (2p) : - en choisissant, dans le source du logiciel protégé (2ps) au moins une série de branchements conditionnels choisis, - en modifiant au moins une portion choisie du source du logiciel protégé (2ps), cette modification étant telle que lors de l'exécution du logiciel protégé (2p), la fonctionnalité globale d'au moins une série choisie de branchements conditionnels est exécutée au moyen de la seconde partie d'exécution (2peu), dans l'unité (6), - et en produisant : > la première partie objet (2pos) du logiciel protégé (2p), cette première partie objet (2pos) étant telle que lors de l'exécution du logiciel protégé (2p), la fonctionnalité d'au moins une série choisie de branchements conditionnels est exécutée dans l'unité (6), et la seconde partie objet (2pou) du logiciel protégé (2p), cette seconde partie objet (2pou) étant telle que, après chargement dans l'unité (6) et lors de l'exécution du logiciel protégé (2p), apparaît la seconde partie d'exécution (2peu) au moyen de laquelle la fonctionnalité globale d'au moins une série choisie de branchements conditionnels est exécutée.  16-Method according to claim 15, characterized in that it consists, in the protection phase (P), to modify the protected software (2p): - by choosing, in the source of the protected software (2ps) at least one series of selected conditional branches, - by modifying at least a selected portion of the source of the protected software (2ps), this modification being such that during the execution of the protected software (2p), the global functionality of at least one chosen series of conditional branches is executed by means of the second execution part (2pu), in the unit (6), and by producing: the first object part (2pos) of the protected software (2p), this first object part (2pos) being such that during the execution of the protected software (2p), the functionality of at least one selected series of conditional branches is executed in the unit (6), and the second object part (2pou) of the software protected (2p), this second object part (2 being such that, after loading in the unit (6) and during the execution of the protected software (2p), the second execution part (2pu) appears by means of which the global functionality of at least one selected series of conditional branches is executed. 17-Procédé selon l'une des revendications 1 à 16, caractérisé en ce qu'il consiste à décomposer la phase de protection (P) en une sous-phase de protection amont (PI), indépendante du logiciel à protéger et une sous-phase de protection  17-Process according to one of claims 1 to 16, characterized in that it consists in breaking down the protection phase (P) into an upstream protection sub-phase (PI), independent of the software to be protected and a sub-phase protection phase <Desc/Clms Page number 97><Desc / Clms Page number 97> aval (P2), dépendante du logiciel à protéger.  downstream (P2), dependent on the software to be protected. 18-Procédé selon la revendication 17, caractérisé en ce qu'il consiste, lors de la sous-phase de protection amont (PI), à faire intervenir un stade de définitions (S11) dans lequel sont effectuées toutes les définitions.  18-Process according to claim 17, characterized in that it consists, during the upstream protection sub-phase (PI), to involve a definition stage (S11) in which are performed all the definitions. 19-Procédé selon la revendication 18, caractérisé en ce qu'il consiste, après le stade de définitions (S11), à faire intervenir un stade de construction (S12) dans lequel sont construits les moyens d'exploitation.  19-Process according to claim 18, characterized in that it consists, after the definition stage (S11), to involve a construction stage (S12) in which are constructed the operating means. 20-Procédé selon la revendication 19, caractérisé en ce qu'il consiste, après le stade de construction (S12), à faire intervenir un stade de pré-personnalisation (S13), consistant à charger dans une unité vierge (60), au moins une partie des moyens d'exploitation en vue d'obtenir une unité pré-personnalisée (66).  20-Process according to claim 19, characterized in that it consists, after the construction step (S12), to involve a pre-personalization stage (S13), of charging in a blank unit (60), at least part of the operating means to obtain a pre-personalized unit (66). 21-Procédé selon la revendication 18 ou 19, caractérisé en ce qu'il consiste, lors de la sous-phase de protection amont (PI), à faire intervenir un stade de confection d'outils (S14) dans lequel sont confectionnés des outils permettant d'aider à générer des logiciels protégés ou d'automatiser la protection de logiciels.  21-Process according to claim 18 or 19, characterized in that it consists, during the upstream protection sub-phase (PI), to involve a tool making stage (S14) in which are made tools to help generate protected software or to automate software protection. 22-Procédé selon les revendications 17 et 20, caractérisé en ce qu'il consiste à décomposer la sous-phase de protection aval (P2), en : 'un stade de création (S21) dans lequel est créé le logiciel protégé (2p), à partir du logiciel vulnérable (2v), 'éventuellement, un stade de modification (S22) dans lequel est modifié le logiciel protégé (2p), 'et un stade de personnalisation (S23) dans lequel : - la seconde partie objet (2pou) du logiciel protégé (2p) contenant éventuellement les moyens d'exploitation est chargée dans au moins une unité vierge (60) en vue d'obtenir au moins une unité (6), - ou une partie de la seconde partie objet (2pou) du logiciel protégé (2p) contenant éventuellement les moyens d'exploitation est chargée dans au moins une unité pré-personnalisée (66) en vue d'obtenir au moins une unité (6).  22-Process according to claims 17 and 20, characterized in that it consists in decomposing the downstream protection sub-phase (P2), in: a creation step (S21) in which is created the protected software (2p) from the vulnerable software (2v), optionally, a modification stage (S22) in which the protected software (2p) is modified, and a personalization stage (S23) in which: the second object part (2p) ) of the protected software (2p) possibly containing the operating means is loaded into at least one blank unit (60) in order to obtain at least one unit (6), or part of the second object part (2pou) protected software (2p) possibly containing the operating means is loaded into at least one pre-personalized unit (66) in order to obtain at least one unit (6). 23-Procédé selon les revendications 21 et 22, caractérisé en ce qu'il consiste, lors du stade de création (S21) et éventuellement du stade de modification (S22), à  23-Process according to claims 21 and 22, characterized in that it consists, during the creation stage (S21) and optionally the modification stage (S22), in <Desc/Clms Page number 98><Desc / Clms Page number 98> utiliser au moins l'un des outils d'aide à la génération de logiciels protégés ou d'automatisation de la protection de logiciels.  use at least one of the tools for assisting in the generation of protected software or the automation of software protection. 24-Système pour la mise en oeuvre du procédé conforme à la revendication 19, caractérisé en ce qu'il comporte une unité de développement de programmes, servant, lors du stade de construction (S12), à effectuer la construction des moyens d'exploitation destinés à l'unité (6), prenant en compte les définitions intervenues au stade de définitions (S11).  24-System for implementing the method according to claim 19, characterized in that it comprises a program development unit, serving, during the construction stage (S12), to carry out the construction of the operating means for the unit (6), taking into account definitions at the definition stage (S11). 25-Système pour la mise en oeuvre du procédé conforme à la revendication 20, caractérisé en ce qu'il comporte une unité de pré-personnalisation (30) permettant de charger au moins une partie des moyens d'exploitation dans au moins une unité vierge (60), en vue d'obtenir au moins une unité pré-personnalisée (66).  25-System for implementing the method according to claim 20, characterized in that it comprises a pre-personalization unit (30) for loading at least a portion of the operating means in at least one blank unit (60), to obtain at least one pre-customized unit (66). 26-Système pour la mise en oeuvre du procédé conforme à la revendication 21, caractérisé en ce qu'il comporte une unité de développement de programmes, servant à effectuer lors du stade de confection d'outils (S14), la confection d'outils d'aide à la génération de logiciels protégés ou d'automatisation de la protection de logiciels.  26-System for implementing the method according to claim 21, characterized in that it comprises a program development unit, used to perform during the tool making stage (S14), the making of tools assistance in generating protected software or automating software protection. 27-Système pour la mise en oeuvre du procédé conforme à la revendication 22 ou 23, caractérisé en ce qu'il comporte une unité de développement de programmes servant à créer ou à modifier un logiciel protégé (2p).  27-System for implementing the method according to claim 22 or 23, characterized in that it comprises a program development unit for creating or modifying a protected software (2p). 28-Système pour la mise en oeuvre du procédé conforme à la revendication 22, caractérisé en ce qu'il comporte une unité de personnalisation (45) permettant de charger : * la seconde partie objet (2pou) dans au moins une unité vierge (60), en vue d'obtenir au moins une unité (6), 'ou une partie de la seconde partie objet (2pou) dans au moins une unité pré-personnalisée (66), en vue d'obtenir au moins une unité (6).  28-System for implementing the method according to claim 22, characterized in that it comprises a personalization unit (45) for loading: * the second object part (2pou) in at least one virgin unit (60 ), in order to obtain at least one unit (6), or part of the second object part (2pou) in at least one pre-customized unit (66), in order to obtain at least one unit (6) ). 29-Unité pré-personnalisée (66), caractérisée en ce qu'elle est obtenue par le système conforme à la revendication 25.  Pre-customized unit (66), characterized in that it is obtained by the system according to claim 25. 30-Unité (6) permettant d'exécuter un logiciel protégé (2p) et d'empêcher son utilisation non autorisée, caractérisée en ce qu'elle contient la seconde partie objet (2pou) du logiciel protégé (2p) chargée à l'aide d'une unité de personnalisation (45) conforme à la revendication 28.  30-unit (6) for executing protected software (2p) and preventing its unauthorized use, characterized in that it contains the second object part (2pou) of the protected software (2p) loaded using a personalization unit (45) according to claim 28. 31-Ensemble d'unités (6), caractérisé en ce que la seconde partie objet (2pou)  31-Set of units (6), characterized in that the second object part (2pou) <Desc/Clms Page number 99><Desc / Clms Page number 99> du logiciel protégé (2p), chargée à l'aide d'une unité de personnalisation (45) conforme à la revendication 28, est répartie sur plusieurs unités de traitement et de mémorisation de manière que leur utilisation conjointe permette d'exécuter le logiciel protégé (2p).  of the protected software (2p), loaded with a personalization unit (45) according to claim 28, is distributed over several processing and storage units so that their joint use makes it possible to execute the protected software (2p). 32-Ensemble de distribution (2pd) d'un logiciel protégé (2p), caractérisé en ce qu'il comporte : 'une première partie de distribution (2pds) contenant la première partie objet (2pos) et destinée à fonctionner dans un système de traitement de données (3), * et une seconde partie de distribution (2pdu) se présentant sous la forme : - d'une unité vierge (60), - ou d'une unité pré-personnalisée (66) conforme à la revendication 29, capable après chargement d'informations de personnalisation, de se transformer en une unité (6), - ou d'une unité (6) conforme à la revendication 30.  32-Distribution set (2pd) of a protected software (2p), characterized in that it comprises: a first distribution part (2pds) containing the first object part (2pos) and intended to operate in a system of data processing (3), * and a second distribution part (2pdu) in the form of: - a blank unit (60), - or a pre-customized unit (66) according to claim 29 , after loading personalization information, to be transformed into a unit (6), - or a unit (6) according to claim 30. 33-Ensemble de distribution (2pd) d'un logiciel protégé (2p) selon la revendication 32, caractérisé en ce que la première partie de distribution (2pds) se présente sous la forme d'un moyen de distribution physique, CDROM par exemple, ou sous la forme de fichiers distribués au travers d'un réseau.  33-Distribution set (2pd) of a protected software (2p) according to claim 32, characterized in that the first distribution part (2pds) is in the form of a physical distribution means, CDROM for example, or in the form of files distributed over a network. 34-Ensemble de distribution (2pd) d'un logiciel protégé (2p) selon la revendication 32, caractérisé en ce que la seconde partie de distribution (2pdu), se présentant sous la forme d'unités vierges (60), d'unitées pré-personnalisées (66) ou d'unités (6), comporte au moins une carte à puce.  34-distribution set (2pd) of a protected software (2p) according to claim 32, characterized in that the second distribution portion (2pdu), in the form of virgin units (60), units pre-customized (66) or units (6), comprises at least one smart card. 35-Unité de traitement et de mémorisation caractérisée en ce qu'elle contient la partie de la seconde partie objet (2pou) nécessaire pour transformer une unité prépersonnalisée (66) conforme à la revendication 29 en une unité (6) conforme à la revendication 30.  A processing and storage unit characterized in that it contains the part of the second object part (2pu) necessary to transform a pre-customized unit (66) according to claim 29 into a unit (6) according to claim 30 . 36-Ensemble d'unités de traitement et de mémorisation caractérisé en ce que les unités de traitement et de mémorisation utilisées conjointement, contiennent la partie de la seconde partie objet (2pou) nécessaire pour transformer une unité prépersonnalisée (66) conforme à la revendication 29 en une unité (6) conforme à la  36-Set of processing and storage units characterized in that the processing and storage units used together contain the part of the second object part (2pou) necessary to transform a pre-customized unit (66) according to claim 29 in a unit (6) according to the <Desc/Clms Page number 100><Desc / Clms Page number 100> revendication 30. claim 30.
FR0110247A 2001-07-31 2001-07-31 METHOD FOR PROTECTING SOFTWARE USING A PRINCIPLE OF "TIME DISSOCIATION" AGAINST ITS UNAUTHORIZED USE Expired - Lifetime FR2828304B1 (en)

Priority Applications (18)

Application Number Priority Date Filing Date Title
FR0110247A FR2828304B1 (en) 2001-07-31 2001-07-31 METHOD FOR PROTECTING SOFTWARE USING A PRINCIPLE OF "TIME DISSOCIATION" AGAINST ITS UNAUTHORIZED USE
JP2003517759A JP3949108B2 (en) 2001-07-31 2002-07-04 How to protect software against unauthorized use with the “temporary separation” principle
HU0400223A HUP0400223A2 (en) 2001-07-31 2002-07-04 Method for protecting a software using a so-called temporal dissociation principle against its unauthorised use
PCT/FR2002/002339 WO2003012650A2 (en) 2001-07-31 2002-07-04 Method for protecting a software using a so-called temporal dissociation principle against its unauthorised use
MXPA04000594A MXPA04000594A (en) 2001-07-31 2002-07-04 Method for protecting a software using a so-called temporal dissociation principle against its unauthorised use.
EP02760379A EP1412862A2 (en) 2001-07-31 2002-07-04 Method for protecting a software using a so-called temporal dissociation principle against its unauthorised use
KR10-2004-7000805A KR20040031778A (en) 2001-07-31 2002-07-04 Method for protecting a software using a so-called temporal dissociation principle against its unauthorized use
IL15995402A IL159954A0 (en) 2001-07-31 2002-07-04 Method to protect software against unauthorised use with a temporal dissociation principle
CNB028146859A CN100451910C (en) 2001-07-31 2002-07-04 Method for protecting a software using a so-called temporal dissociation principle against its unauthorised use
CA002454092A CA2454092A1 (en) 2001-07-31 2002-07-04 Method for protecting a software using a so-called temporal dissociation principle against its unauthorised use
YU5504A YU5504A (en) 2001-07-31 2002-07-04 Method for protecting a software using a so-called temporal dissociation principle against its unauthorised use
PL02367424A PL367424A1 (en) 2001-07-31 2002-07-04 Method for protecting a software using a so-called temporal dissociation principle against its unauthorised use
BR0211371-6A BR0211371A (en) 2001-07-31 2002-07-04 Process for protecting vulnerable software from unauthorized use; system for process implementation; pre-customized unit; unit that allows you to run protected software and prevent unauthorized use; set of units; distribution set of protected software; processing and storage unit and processing and storage unit
ZA2004/00349A ZA200400349B (en) 2001-07-31 2004-01-16 Method for protecting a software using a so called temporal dissociation principle against its unauthorised use
MA27491A MA26125A1 (en) 2001-07-31 2004-01-19 PROCESS FOR PROTECTING SOFTWARE USING A PRINCIPLE CALLED OF "TEMPORAL DISSOCIATION" AGAINST ITS UNAUTHORIZED USE
HR20040047A HRP20040047A2 (en) 2001-07-31 2004-01-19 Method for protecting a software using a so-called temporal dissociation principle against its unauthorised use
NO20040227A NO20040227L (en) 2001-07-31 2004-01-19 Procedure for Protecting a Software, Using a Sacred Temporal Dissociation Principle, from Unauthorized Use of it
TNP2004000014A TNSN04014A1 (en) 2001-07-31 2004-01-19 METHOD FOR PROTECTING SOFTWARE USING A PRINCIPLE OF "TIME DISSOCIATION" AGAINST ITS UNAUTHORIZED USE

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0110247A FR2828304B1 (en) 2001-07-31 2001-07-31 METHOD FOR PROTECTING SOFTWARE USING A PRINCIPLE OF "TIME DISSOCIATION" AGAINST ITS UNAUTHORIZED USE

Publications (2)

Publication Number Publication Date
FR2828304A1 true FR2828304A1 (en) 2003-02-07
FR2828304B1 FR2828304B1 (en) 2010-09-03

Family

ID=8866122

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0110247A Expired - Lifetime FR2828304B1 (en) 2001-07-31 2001-07-31 METHOD FOR PROTECTING SOFTWARE USING A PRINCIPLE OF "TIME DISSOCIATION" AGAINST ITS UNAUTHORIZED USE

Country Status (18)

Country Link
EP (1) EP1412862A2 (en)
JP (1) JP3949108B2 (en)
KR (1) KR20040031778A (en)
CN (1) CN100451910C (en)
BR (1) BR0211371A (en)
CA (1) CA2454092A1 (en)
FR (1) FR2828304B1 (en)
HR (1) HRP20040047A2 (en)
HU (1) HUP0400223A2 (en)
IL (1) IL159954A0 (en)
MA (1) MA26125A1 (en)
MX (1) MXPA04000594A (en)
NO (1) NO20040227L (en)
PL (1) PL367424A1 (en)
TN (1) TNSN04014A1 (en)
WO (1) WO2003012650A2 (en)
YU (1) YU5504A (en)
ZA (1) ZA200400349B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9323604B2 (en) 2011-03-23 2016-04-26 Infineon Technologies Ag Signature update by code transformation

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101217668B1 (en) * 2011-05-12 2013-01-02 주식회사 안랩 Malicious program hooking prevention apparatus and method
US11595201B2 (en) 2020-02-21 2023-02-28 Cyber Armor Ltd. System and method for generation of a disposable software module for cryptographic material protection

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2634917A1 (en) * 1988-08-01 1990-02-02 Pionchon Philippe METHOD AND DEVICE FOR PROTECTING SOFTWARE, ESPECIALLY AGAINST UNAUTHORIZED COPIES
US5754646A (en) * 1995-07-19 1998-05-19 Cable Television Laboratories, Inc. Method for protecting publicly distributed software
WO1999001815A1 (en) * 1997-06-09 1999-01-14 Intertrust, Incorporated Obfuscation techniques for enhancing software security
WO1999066387A1 (en) * 1998-06-12 1999-12-23 Gemplus Method for verifying the execution of a software product

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2634917A1 (en) * 1988-08-01 1990-02-02 Pionchon Philippe METHOD AND DEVICE FOR PROTECTING SOFTWARE, ESPECIALLY AGAINST UNAUTHORIZED COPIES
US5754646A (en) * 1995-07-19 1998-05-19 Cable Television Laboratories, Inc. Method for protecting publicly distributed software
WO1999001815A1 (en) * 1997-06-09 1999-01-14 Intertrust, Incorporated Obfuscation techniques for enhancing software security
WO1999066387A1 (en) * 1998-06-12 1999-12-23 Gemplus Method for verifying the execution of a software product

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9323604B2 (en) 2011-03-23 2016-04-26 Infineon Technologies Ag Signature update by code transformation

Also Published As

Publication number Publication date
NO20040227L (en) 2004-03-30
EP1412862A2 (en) 2004-04-28
TNSN04014A1 (en) 2006-06-01
CN1552010A (en) 2004-12-01
HRP20040047A2 (en) 2004-06-30
KR20040031778A (en) 2004-04-13
WO2003012650A2 (en) 2003-02-13
CN100451910C (en) 2009-01-14
FR2828304B1 (en) 2010-09-03
PL367424A1 (en) 2005-02-21
YU5504A (en) 2006-05-25
CA2454092A1 (en) 2003-02-13
JP3949108B2 (en) 2007-07-25
MXPA04000594A (en) 2005-02-17
WO2003012650A3 (en) 2003-12-24
HUP0400223A2 (en) 2004-08-30
IL159954A0 (en) 2004-06-20
ZA200400349B (en) 2005-03-30
JP2004537807A (en) 2004-12-16
BR0211371A (en) 2004-09-28
MA26125A1 (en) 2004-04-01

Similar Documents

Publication Publication Date Title
FR2681165A1 (en) Process for transmitting confidential information between two chip cards
EP1238340B1 (en) Computerised device for applying accreditation data to a software or a service
WO2019106186A1 (en) Secure data tracking platform
WO2005008509A2 (en) Method of managing software components that are integrated into an embedded system
FR2728980A1 (en) DEVICE FOR SECURING INFORMATION SYSTEMS ORGANIZED AROUND MICROPROCESSORS
FR2828303A1 (en) Protection of software against unauthorized use, reproduction or alteration, e.g. for protection of chip card software or software protected by a material key associated with a USB port using a command re-naming principle
FR2828304A1 (en) Protection of software against unauthorized use, reproduction or alteration, e.g. for protection of chip card software or software protected by a material key associated with a USB port using a temporal dissociation principle
FR2828302A1 (en) Protection of software against unauthorized use, reproduction or alteration, e.g. for protection of chip card software or software protected by a material key associated with a USB port using a conditional branching principle
FR2828305A1 (en) Protection of software against unauthorized use, reproduction or alteration, e.g. for protection of chip card software or software protected by a material key associated with a USB port using a principle of a verification variable
EP1412838B1 (en) Method for protecting a software using a so-called detection and coercion principle against its unauthorised use
FR2828300A1 (en) Protection of software against unauthorized use, reproduction or alteration, e.g. for protection of chip card software or software protected by a material key associated with a USB port using an elementary functions principle
WO2008084154A2 (en) Processing of data associated with a digital service
EP4199411B1 (en) Method for determining an authorization for implementing a composite resource, corresponding blockchain, devices and program
EP1185914B1 (en) Method for securing application software from a processing unit and secret storage unit and system therefor
WO2022238636A1 (en) Method for executing a program loaded into the non-volatile memory of a microcontroller forming part of an integrated circuit
FR2781066A1 (en) PROCEDURE FOR SECURING DATA IN AN ELECTRONIC COMPONENT TESTING MACHINE
CH716277A2 (en) Process for processing, within a blockchain and sub-enclave network, computer data encrypted by means of an encrypted application, subject to geolocation.
CH716276A2 (en) A method of processing, within a blockchain and sub-enclave network, computer data encrypted by means of an encrypted application, for an authorized third party.
CH716283A2 (en) A method of distributed processing, within a blockchain network and sub-enclaves, of computer data encrypted by means of an encrypted application.
CH716275A2 (en) A method of processing, within a blockchain and sub-enclave network, encrypted computer data by means of an encrypted application.
WO2007031628A2 (en) System for managing rights for protected digital contents, identification module and corresponding methods
CH716281A2 (en) A method of processing, within a blockchain and sub-enclave network, encrypted computer data by means of an encrypted application.
CH716279A2 (en) A method of processing, within a blockchain and sub-enclave network, encrypted computer data by means of an encrypted application containing source code.
CH716284A2 (en) Process for distributed processing, within a blockchain network and sub-enclaves, of computer data encrypted with a fragmented key.
FR2774187A1 (en) Simultaneous protection of one or more software applications independent of software developer

Legal Events

Date Code Title Description
CJ Change in legal form
PLFP Fee payment

Year of fee payment: 15

TP Transmission of property

Owner name: VALIDY NET INC, US

Effective date: 20160215

PLFP Fee payment

Year of fee payment: 16

PLFP Fee payment

Year of fee payment: 17

PLFP Fee payment

Year of fee payment: 18

PLFP Fee payment

Year of fee payment: 20