CA2454095A1 - Method for protecting a software using a so-called conditional jump principle against its unauthorised use - Google Patents

Method for protecting a software using a so-called conditional jump principle against its unauthorised use Download PDF

Info

Publication number
CA2454095A1
CA2454095A1 CA002454095A CA2454095A CA2454095A1 CA 2454095 A1 CA2454095 A1 CA 2454095A1 CA 002454095 A CA002454095 A CA 002454095A CA 2454095 A CA2454095 A CA 2454095A CA 2454095 A1 CA2454095 A1 CA 2454095A1
Authority
CA
Canada
Prior art keywords
execution
software
unit
protected
protected software
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.)
Abandoned
Application number
CA002454095A
Other languages
French (fr)
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 SAS
Original Assignee
Validy
Jean-Christophe Cuenod
Gilles Sgro
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
Application filed by Validy, Jean-Christophe Cuenod, Gilles Sgro filed Critical Validy
Publication of CA2454095A1 publication Critical patent/CA2454095A1/en
Abandoned 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/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • 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

Landscapes

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

Abstract

L'invention concerne un procédé pour protéger, à partir d'une unité, 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é consiste à créer un logiciel protégé : - en choisissant dans le source du logiciel vulnérable, au moins un branchement conditionnel, - en produisant l e source du logiciel protégé à partir du source du logiciel vulnérable, en modifiant le source du logiciel vulnérable de manière qu'une seconde partie d'exécution exécutée dans une unité exécute au moins la fonctionnalité d'au moins un branchement conditionnel choisi et met à la disposition du système de traitement de données une information permettant la poursuite de l'exécution à l'endroit choisi.The invention relates to a method for protecting, from a unit, a vulnerable software against its unauthorized use, said vulnerable software operating on a data processing system. The method consists in creating protected software: - by choosing in the source of the vulnerable software, at least one conditional connection, - by producing the source of the protected software from the source of the vulnerable software, by modifying the source of the vulnerable software so that a second execution part executed in a unit performs at least the functionality of at least one selected conditional connection and makes available to the data processing system information allowing the execution to continue at the chosen place .

Description

PROCEDE POUR PROTEGER UN LOGICIEL A L'AIDE D'UN PRINCIPE DIT
DE « BRANCHEMENT CONDITIONNEL » CONTRE SON UTILISATION NON
AUTORISEE
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.
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.
Dans le domaine technique ci-dessus, le principal inconvénient concerne (emploi non autorisé de logiciels par des utilisateurs n'ayant pas acquitté
des droits de licençe. 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 (état de la technique, diverses solutions pour protéger des logiciels.
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 (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 finconvënient d'être facilement contournable. Une personne mal intentionnée ou pirate peut, à (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.
L'objet de l'invention vise justement à remédier aux inconvénients énoncés ci-dessus 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.
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 dans le source du logiciel vulnérable, au moins un branchement conditionnel, - en choisissant au moins une portion du source du logiciel vulnérable contenant au moins un branchement conditionnel 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 (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 (unité vierge après chargement d'informations, et la seconde partie d'exécution exécute au moins la fonctionnalité
d'au moins un branchement conditionnel choisi et met à la disposition du système de traitement de données, une information permettant à la première partie d'exécution de poursuivre son exécution à l'endroit choisi, - 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 (exécution du logiciel protégé, apparaît une première partie
METHOD FOR PROTECTING SOFTWARE USING A SAID PRINCIPLE
OF "CONDITIONAL CONNECTION" AGAINST ITS USE NOT
AUTHORIZED
The present invention relates to the technical field of treatment systems of data in the general sense and it targets, more specifically, the means for protect, against its unauthorized use, software running on said systems data processing.
The object of the invention relates, more particularly, to the means for protecting a software against unauthorized use, from a unit of treatment and storage, such a unit being commonly embodied by a card chip or by a hardware key on USB port.
In the technical area above, the main drawback concerns (unauthorized use of software by users who have not paid Rights of license. This illegal use of software causes harm manifesto for software publishers, software distributors and / or anyone integrating such software in products. To avoid such illegal copies, he been proposed in (state of the art, various solutions for protecting software.
Thus, it is known a protection solution consisting in implementing a protective material system, such as a physical element called a key protection or "dongle" in Anglo-Saxon terminology. Such a protection key should guarantee (software execution only in the presence of the key. However, it must to be found that such a solution is ineffective because it presents a disadvantage to be easily bypassable. A malicious person or pirate can, with (help specialized tools, such as disassemblers, remove instructions of protection key check. It then becomes possible to carry out copies illegal corresponding to modified versions of software no longer any protection. In addition, this solution cannot be generalized to all software since it is difficult to connect more than two keys protection on a same system.
The object of the invention is precisely to remedy the drawbacks stated above above by proposing a method to protect software against its use no authorized, from an ad hoc processing and storage unit, in the extent the presence of such a unit is necessary for the software is fully functional.
To achieve such an objective, the object of the invention relates to a method for protect, from at least one blank unit comprising at least means of processing and storage means, software vulnerable to its unauthorized use, said vulnerable software running on a system of data processing. The method according to the invention consists in a protection phase ~ to create protected software - by choosing in the source of the vulnerable software, at least one conditional connection, - by choosing at least a portion of the source of the vulnerable software containing at least one selected conditional branch, - by producing the source of the protected software from the source of the vulnerable software, by modifying at least a selected portion of the vulnerable software source to get at least a portion modified from the source of the protected software, this modification being such that during (execution of the protected software ~ a first part of execution is executed in the system of data processing and a second part of execution is executed in a unit, obtained from (blank unit after loading information, and the second execution part performs at least the functionality at least one conditional branch chosen and puts at the data processing system layout, information allowing the first party to execute its execution at the chosen location, - and by producing ~ a first object part of the protected software, from the source of the protected software, this first object part being such that during (execution of protected software, the first part appears

2 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 qu'au moins un branchement conditionnel choisi est exécuté dans l'unité, ~ et une seconde partie objet du logiciel protégé, cette seconde partie objet étant telle que, après chargement dans (unité vierge et lors de (exécution du logiciel protégé, apparaît la seconde partie d'exécution au moyen de laquelle chaque branchement conditionnel choisi est exécuté, ~ et à charger la seconde partie objet dans l'unité vierge, en vue d'obtenir (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 portion de la première partie d'exécution l'impose, à exécuter la fonctionnalité d'un 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.
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 (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
2 which is executed in the processing system of data and at least a portion of which takes into account that minus a selected conditional branching is executed in Single, ~ and a second object part of the protected software, this second object part being such that, after loading in (blank unit and during (execution of the protected software, appears the second part by means of which each connection selected conditional is executed, ~ and to load the second object part into the blank unit, in order to obtain (unit, and in a phase of use during which the software is executed protected:
~ in the presence of the unit and each time that a portion of the first part of execution requires it, to execute the functionality of a connection conditional in unity, so this portion is executed properly and therefore the protected software is completely functional, ~ and in the absence of the unit and despite the request for a portion of the first part of execution to execute the functionality of a branch conditional in the unit, not being able to respond correctly to this request, so that at least this portion is not executed properly and therefore the protected software is not fully functional.
According to an alternative 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 a series of selected conditional branches, - by modifying at least a selected portion of the software source protected, this modification being such that during (execution of the protected software, the overall functionality of at least one chosen series of conditional branches is executed by means of the second

3 WO 03/012373 WO 03/01237

4 PCT/FR02/02342 partie d'exécution, dans (unité, - et en produisant la première partie objet du logiciel protégé, cette première partie objet étant telle que lors de (exécution du logiciel protégé, la fonctionnalité d'au moins une série choisie de branchements conditionnels est exécutée dans (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 (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.
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 dans le source du logiciel protégé
au moins un traitement algorithmique qui lors de fexëcution du logiciel protégé, utilise au moins un opérande, et permet de déterminer, au moins en partie, le résultat d'un branchement conditionnel choisi, et au moins une portion contenant au moins un traitement algorithmique choisi, - en modifiant au moins une portion choisie du source du logiciel protégé, cette modification étant telle que ~ au moins la fonctionnalité d'au moins un traitement algorithmique choisi est exécutée au moyen de la seconde partie d'exécution, au moins un traitement algorithmique choisi est décomposé de manière que lors de (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 (unité, 0 la réalisation dans (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 (unité pour le système de traitement de données, D 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 (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 (ensemble des ordonnancements permettant l'exécution du 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 (exécution du logiciel protégé, les commandes d'étapes sont exécutées selon (ordonnancement choisi, et la seconde partie objet du logiciel protégé, cette seconde partie objet étant telle que, après chargement dans (unité et lors de (exécution du logiciel protégé, apparaît la seconde partie d'exécution au moyen de laquelle sont exécutées les étapes 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 d'étape contenue dans une portion de la première partie d'exécution (impose, à exécuter (étape correspondante dans (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 (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 (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.
s 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 (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 (exécution du logiciel protégé, au moins une variable choisie ou au moins une copie de variable choisie réside dans (unité, - et en produisant la première partie objet du logiciel protégé, cette première partie objet étant telle que lors de (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 (unité, et la seconde partie objet du logiciel protégé, cette seconde partie objet étant telle que, après chargement dans (unité et lors de (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 funlte, et dans la phase d'utilisation ~ en présence de (unité à chaque fois qu'une portion de la première partie d'exécution (impose, à utiliser une variable ou une copie de variable résidant dans (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 (absence de (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 dans (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.

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 - un jeu de fonctions élémentaires dont les fonctions élémentaires sont susceptibles d'être exécutées dans (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 (exécution dans (unité, des fonctions élémentaires, ~ à construire des moyens d'exploitation permettant à (unité, d'exécuter les fonctions élémentaires dudit jeu, fexëcution de ces fonctions élémentaires étant déclenchée par (exécution dans le système de traitement de données, des commandes élémentaires, ~ et à modifier le logiciel protégé:
- en choisissant dans le source du logiciel protégé, au moins une étape qui lors de (exécution du logiciel protégé, réalise la fonctionnalité d'un traitement algorithmique, - en modifiant au moins une portion choisie du source du logiciel protégé, cette modification étant telle que au moins une étape choisie est décomposée de manière que lors de (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 choisie, des commandes élémentaires sont intégrées dans le source du logiciel protégé, de manière que lors de (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 (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 (exécution du 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é, les commandes élémentaires sont exécutées 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 (exécution du logiciel protégé, apparaît la seconde partie d'exécution au moyen de laquelle sont 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 (impose, à
exécuter la fonction élémentaire correspondante dans (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 (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 (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.
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 (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 (unité et permettant s 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 (unité et permettant d'informer le système de traitement de données et/ou de modifier (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 (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 (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é, et dans la phase d'utilisation ~ en présence de (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é.
Selon une variante de réalisation, le procédé selon l'invention consiste 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, - 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 (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, au moins une variable de mesure servant à quantifier (utilisation 1o 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 (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 (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 (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é.
Selon une variante de réalisation, le procédé selon l'invention consiste -i 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 (exécution du logiciel protégé, les dépassements des divers seuils sont pris en compte, au moyen de la seconde parue 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é.
Selon une variante de réalisation, le procédé selon l'invention consiste 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 à (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 (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é correspondant à 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é.
Selon une variante de réalisation, le procédë selon l'invention consiste -i 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, - 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 (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 (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é.
Selon une variante de réalisation, le procédé selon l'invention consiste dans la phase de protection ~ à définir - un jeu d'instructions dont les instructions sont susceptibles d'être exécutées dans (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 (unité
(exécution des instructions, - en tant que profil d'utilisation, (enchaînement des instructions, - en tant que trait d'exécution, un enchaînement souhaité pour (exécution des instructions, en tant que moyens de détection, des moyens permettant de détecter que (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émentairés en instructions, D en spécifiant l'enchaînement que doivent respecter au moins certaines des instructions lors de leur exécution dans (unité, D et en transformant les commandes élémentaires en commandes d'instructions correspondant 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 (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é.
Selon une variante de réalisation, le procédé selon l'invention consiste ~ 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 une partie définissant la fonctionnalité de (instruction, et une partie définissant (enchaînement souhaité pour (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 (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.
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 - 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 à (unité, afin de déclencher l'exécution de la fonction dépendante correspondante, - une méthode de renommage des consignes permettant de renommer les 1s consignes afin d'obtenir des commandes déclenchantes à consignes renommées, - et des moyens de rétablissement destinës à être mis en oeuvre dans (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 (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 (exécution du logiciel protégé, (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, -i et dans la phase d'utilisation ~ en présence de (unité et à chaque fois qu'une commande déclenchante à
consigne renommée, contenue dans une portion de la première partie d'exécution (impose, à rétablir dans (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 (absence de l'unité, malgré la demande d'une portion de la première partie d'exécution, de déclencher (exécution d'une fonction dépendante dans (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.
Selon une variante de réalisation, le procédé selon l'invention consiste 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.
Selon une variante de réalisation, le procédé selon l'invention consiste 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 à (information définissant la partie fonctionnelle de la fonction dépendante à exécuter dans (unité, - ou en utilisant le champ d'identification de (instruction et les champs d'identification prévue des opérandes.
Selon une variante de réalisation, le procédé selon l'invention consiste dans la phase de protection ~ à 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é.
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 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 (exécution, sous peine que cette version dérivée du logiciel ne soit pas complètement fonctionnelle.
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 (objet de (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 à (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.
Les fig. 30 et 31 sont des schémas blocs fonctionnels explicitant le principe général du procédé conforme à (invention.
Les fig. 40 à 43 sont des schémas illustrant le procédé de protection selon (invention mettant en oeuvre le principe de protection par variable.
Les fig. 50 à 54 sont des schémas illustrant le procédé de protection selon (invention mettant en oeuvre le principe de protection par dissociation temporelle.
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.
Les fig. 70 à 74 sont des schémas illustrant le procédé de protection selon (invention mettant en oeuvre le principe de protection par détection et coercition.
Les fig. 80 à 85 sont des schémas illustrant le procédé de protection selon (invention mettant en oeuvre le principe de protection par renommage.
1s 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.
La fig. 100 est un schéma illustrant les différentes phases de mise en oeuvre de l'objet de l'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 à
(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 à (invention.
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 à
(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 (invention.
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.
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.
~ 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, - 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 (unité est hors tension, - et d'effectuer du traitement algorithmique sur des données, une partie ou la totalité de ce traitement étant secret.
~ Une unité 6 est une unité de traitement et de mémorisation mettant en oeuvre le procédé selon (invention.
~ Une unité vierge 60 est une unité qui ne met pas en oeuvre le procédé selon (invention, mais qui peut recevoir des informations la transformant en une 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.
~ 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 (unité pré-personnalisée 66, et à un stockage desdites informations transférées. Eventuellement, le transfert peut comporter un changement de format des informations.
~ 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 (unité 6 sera indiquée par une minuscule.
~ 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 à (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 à (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é.
~ 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, - ou une représentation dynamique.
~ 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.

~ 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.
~ 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.
~ Une représentation dynamique correspond à l'exécution du logiciel à partir de sa 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.
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 à (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 fane des représentations suivantes ~ une représentation source 2vs, ~ une représentation obj et 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 à (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.

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 à (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 Zpos 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éé 66 sur laquelle une partie de la seconde partie objet Zpou a été chargée et pour laquelle (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 (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.
La mise en oeuvre du procédé selon (invention conformément à la représentation dynamique de la fig. 11, utilise un dispositif 1p 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 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, urie 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 (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, (unité 6 peut être considérée comme un co-processeur par rapport au processeur 4 du système de traitement de données 3 et la liaison 5 est interne au circuit intégré.
Les fig. 20 à 22 montrent de manière illustrative et à titre non limitatif, diverses formes de réalisation du dispositif 1p permettant la mise en oeuvre du procédé
de protection conforme à (invention.
Dans (exemple de réalisation illustré à la fig. 20, le dispositif de protection 1p 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ë à (unité 6 par une liaison 5. Lors de (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.
Dans (exemple de réalisation illustré à la fig. 21, le dispositif de protection 1p é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 1p 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 Tune 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..
Dans (exemple de réalisation illustré à la fig. 22, le dispositif de protection 1p 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 (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.
La fig. 30 permet d'expliciter de manière plus précise, le procédé de protection conforme à (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 (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.
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.
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 (objet de (invention et ne sont pas décrits plus précisément car ils sont bien connus de l'Homme de fart. La première partie du logiciel protégé 2p comporte des commandes. Lors de (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.
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, (unité 6 comporte des moyens de protection 14. Les moyens de protection 14 comportent des moyens de mémorisation 15 et des moyens de traitement 16.
Par souci de simplification dans la suite de la description, il est choisi de considérer, lors de (exécution du logiciel protégé 2p, la présence de (unité 6 ou (absence de (unité 6. En réalité, une unité 6 présentant des moyens de protection 14 inadaptés à (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 (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 à (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 Zpeu 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.
Dans le cas où (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 Tune se trouve sur (interface 8 et dont feutre se trouve sur la carte à puce 7. Dans cet exemple de réalisation, (absence de la carte à puce 7 est considérée comme équivalente à
(absence de (unité 6. En d'autres termes, en (absence de la carte à puce 7 et/ou de 2s 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.
Conformément à 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.
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.
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 (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 à (endroit choisi.
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 (unité 6, (exécution au moyen de la seconde partie d'exécution 2peu, de branchements conditionnels déportés be dont la fonctionnalité
est équivalente à la fonctionnalité des branchements conditionnels BC choisis.
La fig. 90 illustre un exemple d'exécution d'un logiciel vulnérable 2v. Dans cet exemple, il apparaît, au cours de (exécution du logiciel vulnérable 2v dans le système de traitement de données 3 à un instant donné, un branchement conditionnel BC indiquant au logiciel vulnérable 2v l'endroit où poursuivre son déroulement, à
savoir (un des trois endroits possibles Bl, Ba ou B3. Il doit être compris que le branchement conditionnel BC prend la décision de poursuivre (exécution du logiciel à l'endroit Bl, Ba ou B3.
La fig. 91 illustre un exemple de mise en oeuvre de (invention pour lequel le branchement conditionnel choisi pour être déporté dans (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 t1, l'exécution de la commande de branchement conditionnel CBCI 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 CBCI étant représentée par TRIG(bc), ~ et à l'instant t2, le transfert de l'unité 6 vers le système de traitement de données 3, de (information permettant à la première partie d'exécution 2pes, de poursuivre son exécution à (endroit choisi, à savoir (endroit Bl, B2 ou 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 (exécution des branchements conditionnels déportés correspondants dans (unité
6.
Ainsi, il apparaît qu'en présence de (unité 6, cette portion est exécutée correctement et que par conséquent, le logiciel protégé 2p est complètement fonctionnel.
La fig. 92 illustre une tentative d'exécution du logiciel protégé 2p, alors que (unité 6 est absente. Dans cet exemple, lors de (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é
Zp ~ à (instant t1, (exécution de la commande de branchement conditionnel CBCi, ne peut déclencher (exécution du branchement conditionnel déporté
bc, compte tenu de (absence de (unité 6, ~ et à (instant t2, le transfert de l'information permettant à la première partie d'exécution 2pes de poursuivre à (endroit choisi échoue compte tenu de (absence de (unité 6.
Il apparaît donc qu'en l'absence de (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 (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.
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 (invention peut consister à déporter dans (unité 6, une série de branchements conditionnels dont la fonctionnalité globale est équivalente à
(ensemble des fonctionnalités des branchements conditionnels qui ont été
déportés.
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 2pes du logiciel protégé 2p de poursuivre son exécution à (endroit choisi.
Selon une autre caractéristique avantageuse de 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.
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 aussi choisi au moins une portion du source du logiciel vulnérable 2vs contenant au moins un traitement algorithmique choisi.
Au moins une portion choisie du source du logiciel vulnérable 2vs est alors 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 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 2s 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 (unité 6, - étape 2 : la réalisation dans (unité 6, de la fonctionnalité du traitement algorithmique choisi utilisant ce ou ces opérandes, - et étape 3 : éventuellement, la mise à disposition par (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.
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 (unité 6, (exécution au moyen de la seconde partie d'exécution 2peu, de chacune des étapes précédemment définies.
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) 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.
La fig. 51 illustre un exemple de mise en oeuvre de (invention pour lequel le traitement algorithmique choisi à la fig. 50 est déporté dans (unité 6. Dans cet exemple, lors de (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 (unité 6, il apparaît ~ à (instant t1, (étape l, à savoir l'exécution d'une commande d'étape CEl 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 (unité 6, cette commande d'étape CEl étant représentée par OUT(x, X), OUT(y, ~, ~ à l'instant t2, (étape 2, à savoir (exécution d'une commande d'étape CE2, déclenchant dans (unité 6, (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 CE2 étant représentée par TRIG(f). Plus précisément, (exécution de la commande d'étape CEZ conduit à (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 à (instant t3, l'étape 3, à savoir (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 (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).
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 (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 supprimées.
~ La deuxième amélioration vise à opter pour un ordonnancement pertinent des commandes d'étapes parmi (ensemble des ordonnancements permettant (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 (exécution des étapes, en intercalant, entre celles-ci des portions de code exécuté dans 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.
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 E- F (X, Y) et Z' E-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 (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é 2p, et en présence de l'unité 6, il apparaît, comme expliqué ci-dessus, l'exécution des commandes d'étapes CEI, CE2, CE3 correspondant à la détermination de Z et des commandes d'étapes CE'1, CE'2, CE'3 correspondant à la détermination de Z'.
Comme illustré, les commandes d'étapes CEl à CE3 ne sont pas exécutées consécutivement dans la mesure où des commandes d'étapes CE'1 à CE'3, ainsi que d'autres portions de code sont intercalées. Dans l'exemple, il est ainsi réalisé
(ordonnancement suivant : CEI, portion de code intercalé, CE2, portion de code intercalé, CE'1, portion de code intercalé, CE'2, portion de code intercalé, CE'3, portion de code intercalé, 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 (unité 6. Ainsi, il apparaît, qu'en présence de (unité 6, cette portion est exécutée correctement et que, par conséquent, le logiciel protégé 2p est complètement fonctionnel.
La fig. 54 illustre un exemple de tentative d'exécution du logiciel protégé
2p, alors que (unité 6 est absente. Dans cet exemple, lors de (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 ~ à (instant t1, (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 (absence de l'unité 6, ~ à (instant t2, (exécution de la commande d'étape TRIG(f) ne peut déclencher (exécution de la fonction f, compte tenu de (absence de (unité

6, ~ et à (instant t3, (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 (absence de (unité 6.
Il apparaît donc qu'en (absence de (unité 6, au moins une demande d'une portion de la première partie d'exécution 2pes de déclencher (exécution d'une étape dans (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.
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.
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 (exécution du logiciel vulnérable 2v, définit partiellement (état de celui-ci. Par état d'un logiciel, il doit étre compris l'ensemble des informations, à un instant donné, nécessaires à
fexëcution complète de ce logiciel, de sorte que (absence d'une telle variable choisie nuit à (exécution complète de ce logiciel. Il est aussi choisi au moins une portion du source du logiciel vulnérable Zvs contenant au moins une variable choisie.
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 (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 variable choisie ou au moins une copie de variable choisie réside dans l'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 (exécution du logiciel vulnérable 2v dans le système de traitement de données 3 ~ à (instant t1, (affectation de la donnée X à la variable Vl, représentée par VlE- X, ~ à (instant t2, l'affectation de la valeur de la variable Vi à la variable Y, représentée par Y ~ Vl, ~ et à l'instant t3, l'affectation de la valeur de la variable Vl à la variable Z, représentée par Z E- Vl.
La fig. 41 illustre un exemple d'une première forme de mise en oeuvre de (invention pour laquelle la variable réside dans (unité 6. Dans cet exemple, lors de (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 t1, (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 v1 située dans les moyens de mémorisation 15 de (unité 6, cette commande de transfert étant représentée par OUT(vl, X) et correspondant au final à (affectation de la donnée X à la variable v1, ~ à (instant t2, (exécution d'une commande de transfert déclenchant le transfert de la valeur de la variable v1 résidant dans (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(vl) et correspondant au (mal à (affectation de la valeur de la variable v1 à la variable Y, ~ et à (instant t3, (exécution d'une commande de transfert déclenchant le transfert de la valeur de la variable v1 résidant dans (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(vl) et correspondant au final à (affectation de la valeur de la variable v1 à la variable Z.
Il est à noter que lors de (exécution du logiciel protégé 2p, au moins une variable réside dans (unité 6. Ainsi, lorsqu'une portion de la première partie d'exécution 2pes du logiciel protégé 2p (impose, et en présence de l'unité 6, la valeur de cette variable résidant dans (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.
La fig. 42 illustre un exemple d'une deuxième forme de mise en oeuvre de (invention pour laquelle une copie de la variable réside dans (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 (unité 6, il apparaît ~ à (instant t1, l'affectation de la donnée X à la variable Vl 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 v1 située dans les moyens de mémorisation 15 de (unité 6, cette commande de transfert étant représentée par OUT(v1, X), ~ à (instant t2, l'affectation de la valeur de la variable Vl à la variable Y, ~ et à l'instant t3, (exécution d'une commande de transfert déclenchant le transfert de la valeur de la variable v1 résidant dans (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(vl).
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 (impose, et en présence de (unité 6, la valeur de cette copie de variable résidant dans (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.
La fig. 43 illustre un exemple de tentative d'exécution du logiciel protégé
2p, alors que (unité 6 est absente. Dans cet exemple, lors de (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 ~ à (instant t1, (exécution de la commande de transfert OUT(vl, X) ne peut pas déclencher le transfert de la donnée X vers la variable v1, compte tenu de (absence de l'unité 6, ~ à (instant t2, (exécution de la commande de transfert IN(vl) ne peut pas déclencher le transfert de la valeur de la variable v1 vers le système de traitement de données 3, compte tenu de (absence de l'unité 6, ~ et à (instant t3, l'exécution de la commande de transfert IN(vl) ne peut pas déclencher le transfert de la valeur de la variable v1 vers le système de traitement de données 3, compte tenu de l'absence de l'unité 6.
Il apparaît donc qu'en l'absence de (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 (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.
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 opérations pour aboutir à des opérations complexes telles que par exemple OUT(vl, 2 * X + 3) ou bien Z E- (5 * v1 + 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.
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 (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 correspondantes.
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, (exécution de ces fonctions élémentaires étant déclenchée par (exécution dans le système de traitement de données 3, de commandes élémentaires.
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 du logiciel vulnérable 2vs contenant au moins un traitement algorithmique choisi.
Au moins une portion choisie du source du logiciel vulnérable 2vs est alors 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 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 (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 fe" (avec n variant de 1 à N), à savoir - éventuellement une ou plusieurs fonctions élémentaires permettant la 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 (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.

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 CFE" (avec n variant de 1 à N), déclenchant dans l'unité 6, (exécution au moyen de la seconde partie d'exécution 2peu, de chacune des fonctions élémentaires fe"
précédemment définies.
La fig. 60 illustre un exemple d'exécution d'un logiciel vulnérable 2v. Dans cet exemple, il apparaît, au cours de (exécution du logiciel vulnérable 2v dans le système de traitement de données 3, à un instant donné, le calcul de Z E- 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.
La fig. 61 illustre un exemple de mise en oeuvre de (invention pour lequel le traitement algorithmique choisi à la fig. 60 est déporté dans (unité 6. Dans cet exemple, lors de (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 (unité 6, il apparaît ~ aux instants t1, t2, (exécution des commandes élémentaires CFEI, CFE2 déclenchant dans (unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, des fonctions élémentaires fel, fe2 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 (unité 6, ces commandes élémentaires CFEI, CFEZ étant représentées respectivement par OUT(x, X), OUT(y, Y), ~ aux instants t3 à tN_l, (exécution des commandes élémentaires CFE3 à
CFEN_l, déclenchant dans l'unité 6, (exécution au moyen de la seconde partie d'exécution 2peu, des fonctions élémentaires fe3 à feN_i correspondantes, ces commandes élémentaires CFE3 à CFEN_1 é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, (exécution de ces commandes élémentaires conduit à (exécution dans l'unité 6, des fonctions élémentaires (e3 à feN_1 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 à (instant tN, l'exécution d'une commande élémentaire CFEN déclenchant dans l'unité 6, (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 (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).
Dans (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 (unité 6 et au moins le résultat d'un traitement algorithmique est utilisé par un autre traitement algorithmique.
Dans ce cas, certaines commandes élémentaires servant au transfert, peuvent être éventuellement supprimées.
~ La deuxième amélioration vise à opter pour un ordonnancement pertinent des commandes élémentaires parmi (ensemble des ordonnancements permettant (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 (exécution des fonctions élémentaires, en intercalant, entre celles-ci des portions de code exécuté dans le système de traitement de données 3 et comportant ou non des commandes élémentaires servant à la détermination d'autres données. Les fig. 62 et 63 illustrent le principe d'une telle réalisation.
La fig. 62 montre un exemple d'exécution d'un logiciel vulnérable 2v. Dans cet exemple, il apparaît au cours de (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').
La fig. 63 illustre un exemple de mise en oeuvre du procédé selon (invention pour lequel les deux traitements algorithmiques choisis à la fig. 62 sont déportés dans (unité 6. Selon un tel exemple, lors de (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 (unité 6, il apparaît, comme expliqué ci-dessus, (exécution des commandes élémentaires CFEi à CFEN correspondant à la détermination de Z et (exécution des commandes élémentaires CFE'1 à CFE~M correspondant à la détermination de Z'. Comme illustré, les commandes élémentaires CFEI à CFEN ne sont pas exécutées consécutivement, dans la mesure où les commandes élémentaires CFE'1 à CFE'M, ainsi que d'autres portions de code sont intercalées. Dans l'exemple il est ainsi réalisé (ordonnancement suivant : CFEI, portion de code intercalé, CFE'1, CFE2, portion de code intercalé, CFE'2, CFE'3, portion de code intercalé, CFE'4, CFE3, CFE4, ..., CFEN, CFE'M.
Il est à noter que, lors de (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 (unité 6. Ainsi, il apparaît, qu'en présence de (unité 6, cette portion est exécutée correctement et que, par conséquent, le logiciel protégé 2p est complètement fonctionnel.
La fig. 64 illustre un exemple de tentative d'exécution du logiciel protégé
2p, alors que (unité 6 est absente. Dans cet exemple, lors de (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, (exécution d'une commande élémentaire ne peut pas déclencher (exécution de la fonction élémentaire correspondante, en raison de (absence de (unité 6. La valeur à affecter à la variable Z ne peut donc pas être déterminée correctement.
Il apparaît donc, qu'en (absence de (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 (exécution d'une fonction élémentaire dans (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.
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.
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, ~ 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 (unité 6 et permettant d'informer le système de traitement de données 3 et/ou de modifier (exécution d'un logiciel, lorsqu'au moins un critère n'est pas respecté.
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.
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.
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 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.
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, (état de (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, ~ 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, ~ et dans le source du logiciel vulnérable 2vs, au moins une portion contenant au moins un traitement algorithmique choisi.
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 (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.
Lors de (exécution du logiciel protégé 2p, protégé par ce principe de protection par détection et coercition, en présence de (unité 6 ~ tant que tous les critères correspondants à toutes les caractéristiques 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é Zp 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é.
Bien entendu, en (absence de (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 (unité 6 ne peut pas être satisfaite correctement de sorte qu'au moins cette portion ne s'exécute pas correctement et que par conséquent le logiciel protégé 2p n'est pas complètement fonctionnel.
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.
Le premier type de caractéristique d'exécution de logiciel correspond à une variable de mesure de (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.
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 (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 (utilisation de la fonctionnalité à laquelle elle est associée.
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.
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 (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 (utilisation de ladite fonctionnalité.
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 (utilisation de ladite fonctionnalité, ~ et prend en compte au moins un dépassement de seuil.
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é.
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 ~ pour au moins une variable de mesure, plusieurs seuils associés, ~ et des moyens de coercition différents correspondant à chacun de ces seuils.
Il est aussi choisi, dans le source du logiciel vulnérable 2vs ~ au moins une variable de mesure servant à quantifier (utilisation d'au moins 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.
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 (exécution du logiciel protégé 2p, la seconde partie d'exécution 2peu ~ actualise la variable de mesure en fonction de (utilisation de ladite fonctionnalité, ~ et prend en compte, de manière différente, les dépassements des divers seuils.
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é, (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
4 PCT / FR02 / 02342 execution part, in (unit, - and by producing the first part object of the protected software, this first part object being such that during (execution of the protected software, the functionality of at least one selected series of connections conditional is executed in (unit, and the second part, subject of the protected software, this second part object being such that, after loading into the unit and when (execution of the protected software, appears the second part by which the overall functionality of the minus a selected set of conditional branches is executed.
According to a 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 algorithmic processing which during execution of the protected software, uses at least one operand, and allows determine, at least in part, the result of a connection conditional chosen, and at least one portion containing at least one treatment chosen algorithmic, - by modifying at least a selected portion of the software source protected, this modification being such that ~ at least the functionality of at least one algorithmic processing chosen is executed by means of the second execution part, at least one chosen algorithmic processing is broken down by so that during the execution of the protected software appear on the means of the second part of execution, several stages separate, namely 0 the provision of at least one operand for (unit, 0 the realization in (unity, of the functionality of the treatment algorithmic on at least this operand, 0 and possibly the provision of at least one result, per (unit for the data processing system, D for at least one chosen algorithmic processing, commands steps are defined so that when running the protected software, each step command is executed by the first part of execution and triggers in (unit, execution by means of the second part of execution, of a step, and a sequencing of the step commands is chosen from (all the orders allowing the execution of the protected software, - and by producing the first part object of the protected software, this first part object being such that during (execution of the protected software, the step commands are executed according to (scheduling selected, and the second part, subject of the protected software, this second part object being such that, after loading in (unit and during (execution of the protected software, appears the second part by means of which the steps are carried out triggered by the first part of execution, and in the use phase ~ in the presence of the unit and each time a step command is contained in a portion of the first part of execution (requires, to execute (corresponding step in (unit, so this portion is executed properly and therefore the protected software is completely functional, ~ and in the absence of (unit, despite the request for a portion of the first execution part to trigger the execution of a step in (unit, not 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.
s 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 chosen algorithmic processing, which during (software execution protected, partially defines the state of the protected software, - by modifying at least a selected portion of the software source protected, this modification being such that during (execution of the protected software, at least one variable chosen or at least one copy chosen variable resides in (unit, - and by producing the first part object of the protected software, this first part object being such that during (execution of protected software, at minus a portion of the first part of execution also takes into account account that at least one variable or at least one copy of variable resides in (unit, and the second part, subject of the protected software, this second part object being such that, after loading in (unit and during (execution of the protected software, appears the second part 'of execution by means of which at least one variable chosen, or at least one copy of the chosen variable also resides in funlte, and in the use phase ~ in the presence of (unit each time a portion of the first part of execution (requires, to use a variable or a copy of a variable residing in (unit, so this portion is executed correctly and that, therefore, the protected software is fully functional, ~ and in (absence of (unit, despite the request for a portion of the first execution part of using a variable or a copy of resident variable in (unit, not being able to respond correctly to this request, so that at least this portion is not performed correctly and that, by Consequently, the protected software is not fully functional.

According to another preferred embodiment, the method according to the invention is in the protection phase;
~ to be defined - a set of elementary functions whose elementary functions are likely to be executed in (unit, - and a set of elementary commands for this set of functions elementary, these elementary commands being likely to be executed in the data processing system and trigger (execution in (unit, elementary functions, ~ to build operating resources allowing (unit, to execute the elementary functions of said game, execution of these elementary functions being triggered by (execution in the data processing system, basic commands, ~ and modify the protected software:
- by choosing in the source of the protected software, at least one step which during (execution of the protected software, realizes the functionality of a algorithmic processing, - by modifying at least a selected portion of the software source protected, this modification being such that at least one chosen step is broken down so that when (execution of the protected software, this step is executed by means of the second part of execution, using functions elementary ~ for at least one chosen step, elementary commands are integrated into the source of the protected software, so that during (execution of the protected software, each command elementary is executed by the first part of execution and triggers in (unit, execution by means of the second part of execution, of an elementary function, and a scheduling of elementary commands is chosen among all the orders allowing (execution of the protected software, - and by producing the first part object of the protected software, this first part object being such that during the execution of the protected software, the elementary commands are executed according to the scheduling selected, 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 (software execution protected, appears the second part of execution by means of which are executed the elementary functions triggered by the first part of execution, and in the use phase ~ in the presence of the unit and each time an elementary command contained in a portion of the first part of execution (requires, to execute the corresponding elementary function in (unit, so that this portion is executed correctly and therefore the software protected is fully functional, ~ and in (absence of the unit, despite the request for a portion of the first execution part, to trigger the execution of an elementary function in (unit, not being able to respond correctly to this request, from so that at least this portion is not executed correctly and that, by Consequently, the protected software is not fully functional.
According to another preferred embodiment, the method according to the invention is in the protection phase ~ to be defined - at least one software execution characteristic, capable of being at least partially monitored in (unit, - at least one criterion to respect for at least one characteristic software execution, - detection means to be implemented in (unit and allowing s detect that at least one software execution characteristic does not does not meet at least one associated criterion, - and means of coercion to be implemented in (unity and to inform the data processing system and / or modify (software execution, when at least one criterion is not met, ~ to build the operating resources allowing the unit, to also put using the detection means and the coercion means, ~ and modify the protected software - by choosing at least one software execution characteristic to monitor, among the performance characteristics likely to be monitored, - by choosing at least one criterion to respect for at least one selected software execution characteristic, - by choosing in the source of the protected software, functions elementary for which at least one performance characteristic of software chosen, is to be monitored, - by modifying at least a selected portion of the software source protected, this modification being such that during (execution of the protected software, at least one selected execution characteristic is monitored by the second part of execution, and non-compliance of a criterion leads to information from the processing system data and / or a modification of the execution of the protected software, - and by producing the second object part of the protected software containing the operating means also using the means of detection and means of coercion, this second object part being such that, after loading into the unit and during (execution of the protected software, at least one software execution characteristic is monitored and non-compliance with a criterion leads to information of the data processing system and / or a modification of the execution of the protected software, and in the use phase ~ in the presence of (unit - as long as all the criteria corresponding to all the characteristics monitored execution of all modified portions of the software protected are respected, to allow nominal operation of these portions of the protected software and therefore allow the nominal operation of protected software, - and if at least one of the criteria corresponding to a characteristic supervised execution of a portion of the protected software is not complied with, to inform the data processing system and / or to modify the operation of the protected software portion, so that the operation of the protected software is modified.
According to an alternative embodiment, the method according to the invention consists in the protection phase ~ to be defined - as a feature of software execution likely to be monitored, a variable measuring the use of a functionality software, - as a criterion to be respected, at least one threshold associated with each measurement variable, - and updating means making it possible to update at least one measurement variable, ~ to build the operating resources allowing the unit to also put implement the updating means, ~ and modify the protected software - by choosing as a software execution characteristic to monitor, at least one measurement variable of (use of a software functionality, - by choosing at least one feature of the protected software whose use is likely to be monitored by a measurement variable, at least one measurement variable used to quantify (use 1o 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 method for updating a measurement variable chosen according to (use of said functionality, - and by modifying at least a selected portion of the software source protected, this modification being such that, when (execution of the protected software, the measurement variable is updated using the second part of execution, depending on (use of said functionality and at least one threshold violation is taken into account, and in the use phase, in the presence of the unit, and in the event that it East detected at least one threshold crossing corresponding to at least one limit of use, to inform the data processing system and / or to edit the protected portion of the software, so that the operation of protected software is changed.
According to an alternative embodiment, the method according to the invention consists -i in the protection phase ~ to be defined - for at least one measurement variable, several associated thresholds, - and different means of coercion corresponding to each of these thresholds, ~ and modify the protected software - by choosing in the source of the protected software, at least one chosen measurement variable to which several must be associated thresholds corresponding to different limits of use of the feature - by choosing at least two thresholds associated with the measurement variable selected, - and by modifying at least a selected portion of the software source protected, this modification being such that, when (execution of the protected software, the overruns of the various thresholds are taken into account account, by means of the second publication of execution, so different, and in the use phase ~ in the presence of unity - in the event that a first threshold is exceeded, at order the protected software to stop using the functionality correspondingly, and in the event that a second threshold is exceeded, at render the corresponding functionality and / or at least one inoperative portion of the protected software.
According to an alternative embodiment, the method according to the invention consists in the protection phase ~ to define reloading means allowing to credit at least one additional use for at least one software feature monitored by a measurement variable, ~ to build the operating resources also allowing (unit to put using the reloading means, ~ and modify the protected software - by choosing in the source of the protected software, at least one chosen measurement variable to limit (use of a functionality to which at least one additional use must can be credited, - and by modifying at least one selected portion, this modification being such as in a so-called recharging phase, at least one use additional of at least one functionality corresponding to a selected measurement variable can be credited, and in the recharging phase ~ to update at least one selected measurement variable and / or at least one associated threshold, so as to allow at least one use additional functionality.
According to an alternative embodiment, the method according to the invention consists -i in the protection phase ~ to be defined as a software performance feature that may be monitored, a software usage profile, - and as a criterion to be respected, at least one performance trait of software, ~ and modify the protected software - by choosing as a software execution characteristic to monitor at least one software usage profile, - by choosing at least one performance trait than at least one profile of use chosen must respect, - and by modifying at least a selected portion of the software source protected, this modification being such that, when (execution of the protected software, the second part of execution respects all the features of execution chosen, ~ and in the use phase in the presence of (unit, and in the event that it East detected that at least one performance trait is not respected, to inform the data processing system and / or to modify the functioning of the portion of the protected software, so that the operation of the software protected is changed.
According to an alternative embodiment, the method according to the invention consists in the protection phase ~ to be defined - a set of instructions whose instructions are likely to be executed in (unit, - a set of instruction commands for this set of instructions, these instruction commands being capable of being executed in the data processing and trigger system in (unit (execution of instructions, - as a usage profile, (sequence of instructions, - as an execution feature, a desired sequence for (execution of instructions, as detection means, means for detecting that (sequence of instructions does not correspond to that desired, and as means of coercion, means of informing the data processing system and / or modify the operation of the portion of protected software when the sequence of instructions does not correspond to that desired, ~ to build the operating resources also allowing the unit to execute the instructions in the instruction set, the execution of these instructions being triggered by the execution in the data processing system of instruction commands, ~ and modify the protected software - by modifying at least a selected portion of the software source protected by transforming basic functions into instructions, D by specifying the sequence that must be respected at least some of the instructions when executed in (unit, D and by transforming elementary commands into commands instructions corresponding to the instructions used, and in the use phase, in the presence of the unit, if it is detected that (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 protected software portion, so that the operation of protected software is changed.
According to an alternative embodiment, the method according to the invention consists ~ in the protection phase ~ to be defined as an instruction set, an instruction set of which at least some instructions work on registers and use at least an operand to render a result, - for at least part of the instructions working on registers a part defining the functionality of (instruction, and a part defining (desired sequence for (execution instructions and having corresponding bit fields at:
0 an instruction identification field, 0 and for each operand of the instruction * a flag field, * and a planned identification field of (operand, - for each register belonging to the operating resources and used by the instruction set, a generated identification field in which is automatically memorized the identification of the last instruction having returned its result in this register, - as detection means, means allowing, during the execution of an instruction, for each operand, when the field flag requires it, to control the equality between the field of identification generated corresponding to the register used by this operand, and the field expected identification of the origin of this operand, - and as means of coercion, means making it possible to modify the result of the instructions, if at least one of the ties controlled is false.
According to another preferred embodiment, the method according to the invention is in the protection phase ~ to be defined - as a triggering command, a basic command or an instruction command, - as a dependent function, an elementary function or a instruction, - as an instruction, at least one argument for an order triggering, corresponding at least in part to the information transmitted by the data processing system to (unit, in order to trigger the execution of the corresponding dependent function, - a method of renaming the instructions allowing renaming of the 1s instructions in order to obtain triggering orders with instructions renamed, - and recovery means intended to be implemented in (unit during the use phase, and allowing to find the dependent function to be executed, from the renamed setpoint, ~ to build operating resources allowing the unit to also put implement the means of recovery, ~ and modify the protected software - by choosing commands from the source of the protected software triggering, - by modifying at least a selected portion of the software source protected by renaming the instructions of the triggering commands chosen, in order to conceal (identity of dependent functions corresponding, - and by producing: ' the first part object of the protected software, this first part object being such that during the execution of the protected software, the trigger commands with renowned instructions are executed, and the second part, object of the protected software containing the means operating also implementing the means of recovery, this second object part being such that, after loading in the unit and during (execution of the protected software, (identity of dependent functions whose execution is triggered by the first part of execution is restored to means of the second part of execution, and the functions dependent are executed by means of the second part execution, -i and in the use phase ~ in the presence of (unit and each time a command triggers at renowned instruction, contained in a portion of the first part of execution (requires, to restore in (unity, the identity of the function corresponding dependent and execute it, so that portion is executed correctly and therefore the protected software is fully functional, ~ and in (absence of the unit, despite the request for a portion of the first execution part, to trigger (execution of a dependent function in (unit, not being able to respond correctly to this request, from so that at least this portion is not executed correctly and that, by Consequently, the protected software is not fully functional.
According to an alternative embodiment, the method according to the invention consists in the protection phase ~ to define for at least one dependent function, a family of functions algorithmically equivalent dependent, but triggered by triggering commands whose renamed instructions are different, ~ and modify the protected software - by choosing at least one source from the protected software triggering command with renamed setpoint, - and by modifying at least a selected portion of the software source protected by replacing at least the renowned setpoint of a trigger command with renamed setpoint chosen, by another renamed setpoint, triggering a function dependent on the same family.
According to an alternative embodiment, the method according to the invention consists in the protection phase, to be defined, for at least one dependent function, a family of algorithmically equivalent dependent functions - by concatenating a noise field to (information defining the part of the dependent function to be executed in (unit, - or by using the identification field of (instruction and the fields expected identification of the operands.
According to an alternative embodiment, the method according to the invention consists in the protection phase ~ to be defined - as a method of renaming instructions, a method of encryption to encrypt the instructions, - and as means of recovery, means implementing a decryption method to decrypt the instructions renamed and thus re-establish the identity of the functions dependent on run in unity.
The method according to the invention thus makes it possible to protect the use of a software by the implementation of a processing and storage unit which presents the peculiarity of containing a part of the running software. he it follows that any version derived from the software attempting to operate without the unit of treatment and memorization requires recreating the part of the software contained in the unit of processing and storage during (execution, under penalty that this version derived from the software is not fully functional.
Various other characteristics will emerge from the description given below in reference to the accompanying drawings which show, by way of non-limiting examples, of the embodiments and implementation of (object of (invention.
Figs. 10 and 11 are functional block diagrams illustrating the various representations of software that is respectively unprotected and protected by the process in accordance with (invention.
Figs. 20 to 22 illustrate, by way of examples, various embodiments a device for implementing the method according to the invention.
Figs. 30 and 31 are functional block diagrams explaining the principle general of the process according to (invention.
Figs. 40 to 43 are diagrams illustrating the protection method according to (invention implementing the principle of protection by variable.
Figs. 50 to 54 are diagrams illustrating the protection method according to (invention implementing the principle of protection by dissociation time.
Figs. 60 to 64 are diagrams illustrating the protection method according to the invention implementing the principle of protection by functions elementary.
Figs. 70 to 74 are diagrams illustrating the protection method according to (invention implementing the principle of protection by detection and coercion.
Figs. 80 to 85 are diagrams illustrating the protection process according to (invention implementing the principle of protection by renaming.
1s Figs. 90 to 92 are diagrams illustrating the protection method according to the invention implementing the principle of protection by connection conditional.
Fig. 100 is a diagram illustrating the different phases of implementation of the subject of the invention.
Fig. 110 illustrates an embodiment of a system allowing the setting in work of the construction stage of the protection phase in accordance with (invention.
Fig. 120 illustrates an exemplary embodiment of a pre-personalization used in the protection method according to (invention.
Fig. 130 illustrates an exemplary embodiment of a system allowing the setting in work from the tool-making stage of the protection phase in accordance with (invention.
Fig. 140 illustrates an embodiment of a system allowing the setting in protection process according to (invention.
Fig. 150 illustrates an exemplary embodiment of a personalization unit used in the protection method according to the invention.
In the following description, the following definitions will be used ~ A data processing system 3 is a system capable of executing a program.
~ A processing and storage unit is a unit capable - accept data provided by a processing system data 3, - to restore data to the data processing system 3, - to store data at least in part secretly and to keep at least some of these even when (unit is off, - and to perform algorithmic processing on data, part or all of this processing is secret.
~ A unit 6 is a processing and storage unit putting in implements the method according to (invention.
~ A blank unit 60 is a unit which does not implement the method according to (invention, but who can receive information transforming it into a unit 6.
~ A pre-personalized unit 66 is a blank unit 60 having received a part of the information allowing it, after receiving information to be transformed into a unit 6.
~ Loading information into a blank 60 unit or a pre-custom 66 corresponds to a transfer of information in the unit blank 60 or (pre-personalized unit 66, and to storage of said information transferred. Optionally, the transfer may include a information format change.
~ A variable, a data or a function contained in the system of data processing 3 will be indicated by a capital letter, while a variable, data or function contained in (unit 6 will be indicated by a lowercase.
~ "Protected software" is software that has been protected by at least one protection principle implemented by the process according to (invention.
~ "Vulnerable software" is software that has not been protected by any protection principle implemented by the process according to (invention.
~ In case the differentiation between a vulnerable software and a software protected does not matter, the term "software" is used.
~ A software comes in various representations depending on the time considered in its life cycle - a source representation, - an object representation, - a distribution, - or a dynamic representation.
~ A source representation of software is understood as a representation which after transformation, gives an object representation.
A source representation can be presented at different levels, from abstract conceptual level at a level executable directly by a data processing system or a processing unit and storage.

~ An object representation of software corresponds to a level of representation which after transfer to a distribution then loading in a data processing system or a processing unit and memorization, can be executed. This could be, for example, a code binary, interpreted code, etc.
~ A distribution is a physical or virtual medium containing the object representation, this distribution must be made available to the user to allow him to use the software.
~ A dynamic representation corresponds to the execution of the software from of its distribution.
~ A portion of software corresponds to any part of software and can, for example, correspond to one or more instructions consecutive or not, and / or one or more consecutive functional blocks or not, and / or one or more functions, and / or one or more sub programs, and / or one or more modules. A portion of software can also match all of this software.
Figs. 10 and 11 illustrate the various representations respectively of a vulnerable software 2v in the general sense, and protected software 2p according to the process in accordance with (invention.
Fig. 10 illustrates various representations of vulnerable 2v software appearing during its life cycle. Vulnerable 2v software can so appear under fades of the following representations ~ a 2vs source representation, ~ an obj and 2vo representation, ~ 2vd distribution. This distribution can occur commonly in the form of a physical distribution medium such as a CDROM or in the form of files distributed across a network (GSM, Internet, ...), ~ or a dynamic representation 2ve corresponding to (execution of the vulnerable software 2v on a data processing system 3 of all known types, which conventionally comprises at least one processor 4.

Fig. 11 illustrates various representations of 2p protected software appearing during its life cycle. Protected 2p software can appear under one of the following representations ~ a 2ps source representation comprising a first source part intended for the data processing system 3 and a second source part intended for (unit 6, part of these source parts commonly being be contained in common files, ~ a 2in object representation comprising a first Zpos object part intended for the data processing system 3 and a second object part 2 for unit 6, ~ a 2pd distribution comprising a first part of 2pds distribution containing the first part 2pos object, this first 2pds distribution part being intended for data processing system 3 and which may arise commonly in the form of a physical distribution medium such than a CDROM, or in the form of files distributed through a network (GSM, Internet, ...), - and a second 2pdu distribution part in the form at least one pre-personalized unit 66 on which part of the second Zpou object part has been loaded and for which (user must complete the personalization by loading additional information, in order to obtain a unit 6, these additional information being obtained, for example, by upload or download over a network, ~ or at least one unit 6 on which the second object part 2pou has been charged, ~ or a dynamic 2pe representation corresponding to the execution of the protected software 2p. This dynamic 2pe representation includes a first part of execution 2pes which is executed in the system of data processing 3 and a second execution part 2 little which is executed in (unit 6.

If the differentiation between the different representations of the software protected 2p does not matter, the expressions first part of the software protected and second part of the protected software are used.
The implementation of the method according to (invention in accordance with the dynamic representation of fig. 11, uses a 1p device comprising a data processing system 3 connected by a link 5 to a unit 6. The system of data processing 3 is of all types and comprises, so classic, at least a processor 4. The data processing system 3 can be a computer where do part, for example, of various machines, devices, stationary products or mobile, or vehicles in the general sense. Connection 5 can be carried out anyway possible such that for example by a serial line, a USB bus, a radio link, urie optical link, a network link or a direct electrical connection on a circuit of the system of data processing 3, etc. It should be noted that (unit 6 can possibly be located physically inside the same integrated circuit as processor 4 of system of data processing 3. In this case, (unit 6 can be considered as a co-processor versus processor 4 of the data processing system 3 and the link 5 is internal to the integrated circuit.
Figs. 20 to 22 show by way of illustration and without implied limitation, various embodiments of the device 1p allowing the implementation of the method of protection according to (invention.
In (exemplary embodiment illustrated in FIG. 20, the device for protection 1p comprises, as data processing system 3, a computer and, in so unit 6, a smart card 7 and its interface 8 commonly called a reader of menu. Computer 3 is linked to (unit 6 by a link 5. When (execution of a protected software 2p, the first part of 2pes execution which is executed in the computer 3 and the second execution part 2 which is executed in the card to chip 7 and its interface 8, must both be functional in order to that the 2p protected software is fully functional.
In (exemplary embodiment illustrated in FIG. 21, the device for protection 1p equips a product 9 in the general sense, comprising various organs 10 adapted to the where the functions assumed by such a product 9. The 1p protection device includes, on the one hand, a data processing system 3 embedded in the product 9 and, on the other hand, a unit 6 associated with the product 9. So that the product 9 is entirely functional, protected 2p software must be fully functional. So, during running 2p protected software, the first part of 2pes running which East executed in data processing system 3 and the second part execution 2 little which is performed in unit 6, both must be functional. This 2p protected software therefore indirectly protects against unauthorized use, product 9 or any of its functionality. Through example the product 9 can be an installation, a system, a machine, a toy, a apparatus appliances, telephone, etc.
In (exemplary embodiment illustrated in FIG. 22, the device for protection 1p includes multiple computers, as well as part of a network of communication. The data processing system 3 is a first computer connected by a link 5 network type, to a unit 6 consisting of a second computer. For the setting work of (invention, the second computer 6 is used as a server of licenses for protected software 2p. When running protected software 2p, the first part of execution 2pes which is executed in the first computer 3 and the second part of execution 2peu which is executed in the second computer both must be functional so that 2p protected software is fully functional.
Fig. 30 makes it possible to explain more precisely, the method of protection in accordance with the invention. It should be noted that vulnerable software 2v is considered as being executed completely in a data processing system 3. By against, in the case of the implementation of a protected software 2p, the system of data processing 3 includes transfer means 12 connected by the link 5, to transfer means 13 forming part of (unit 6 making it possible to make communicate with each other, the first part of 2pes execution and the second part 2peu execution of protected software 2p.
It must be considered that the means of transfer 12,13 are of a nature software and / or material and are capable of ensuring and possibly optimizing the data communication between the data processing system 3 and unit 6.
These transfer means 12, 13 are adapted to allow a software protected 2p which is preferably independent of the type of link 5 used. These transfer means 12, 13 are not part of (object of (invention and do not are not described more precisely because they are well known to those skilled in the art. The first part of the 2p protected software includes commands. When (execution of protected software 2p, the execution of these commands by the first party execution 2pes allows communication between the first 2pes execution part and the second part of execution 2peu. In the following description, these orders are represented by IN, OUT or TRIG.
As illustrated in fig. 31, to allow the implementation of the second part of execution 2peu of the protected software 2p, (unit 6 comprises means of protection 14. The protection means 14 include storage means 15 and of the means of treatment 16.
For the sake of simplification in the following description, it is chosen to consider, when (running 2p protected software, the presence of (unit 6 or (absence of (unit 6. In reality, a unit 6 presenting means of protection 14 unsuitable for (execution of the second part of execution 2peu of the software protected 2p is also considered absent, whenever (software execution protected 2p is not correct. In other words ~ a unit 6 physically present and comprising means for protection 14 adapted to (execution of the second execution part 2 little protected software 2p, is always considered as present, ~ a unit 6 physically present but comprising means for protection 14 unsuitable, that is to say not allowing the implementation correct of the second part of execution Zpeu of the protected software 2p is considered to be present, when functioning properly, and as absent when it is not functioning properly, ' ~ and a unit 6 physically absent is still considered to be absent.
In the case where (unit 6 is constituted by a smart card 7 and its interface the transfer means 13 are broken down into two parts, one of which is sure (interface 8 and of which felt is on the smart card 7. In this example of realization, (absence of the smart card 7 is considered equivalent to (absence of (unit 6. In other words, in (absence of the smart card 7 and / or 2s its interface 8, the protection means 14 are not accessible and do not allow therefore not the execution of the second execution part 2 bit of the software protected from so the 2p protected software is not fully functional.
In accordance with the invention, the protection process aims to implement a protection principle known as "conditional connection" whose description East carried out in relation to fig. 90 to 92.
For the implementation of the principle of protection by conditional connection, it is chosen from the source of the vulnerable 2vs software, at least one connection conditional BC. It is also chosen at least a portion of the source of the software vulnerable 2vs containing at least one BC conditional branch chosen.
At least a selected portion of the source of the vulnerable 2vs software is then modified, so as to obtain the source of the protected 2ps software. This change is such that in particular when running protected software 2p at least a portion of the first 2pes execution part, which is executed in the data processing system 3, takes into account that the functionality of at least one conditional branch chosen BC is performed in unit 6, ~ and the second part of execution 2peu, 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 part of execution 2pes, to continue its execution at (chosen location.
The first part of 2pes execution of the protected 2p software, executed in the data processing system 3, performs branching commands conditional, triggering in (unit 6, (execution by means of the second part of execution 2peu, of conditional branchings deported be whose functionality is equivalent to the functionality of the selected BC conditional branches.
Fig. 90 illustrates an example of execution of vulnerable 2v software. In this example, it appears, during (execution of vulnerable software 2v in the data processing system 3 at a given time, a connection conditional BC telling vulnerable software 2v where to continue unfolding, at know (one of the three possible places Bl, Ba or B3. It must be understood that the conditional branch BC takes the decision to continue (execution of the software at place Bl, Ba or B3.
Fig. 91 illustrates an exemplary implementation of (invention for which the conditional branch chosen to be deported to (unit 6, corresponds to conditional branch BC. In this example, when running in the system data processing 3 of the first part 2pes execution of the software protected 2p and in the presence of unit 6, it appears ~ at time t1, the execution of the conditional branch command CBCI triggering in unit 6, execution by means of the second part of execution 2peu, of conditional branching deported bc algorithmically equivalent to the conditional branching BC, this conditional branching command CBCI being represented by TRIG (bc) ~ and at time t2, the transfer from unit 6 to the processing system of data 3, of (information allowing the first part of execution 2pes, to continue its execution at (chosen place, namely (place Bl, B2 or B3.
Note that when performing a portion of the first part 2pes execution of protected 2p software, connection commands conditional executed in the data processing system 3 trigger (execution of the corresponding remote conditional connections in (unit 6.
Thus, it appears that in the presence of (unit 6, this portion is executed correctly and therefore the 2p protected software is fully functional.
Fig. 92 illustrates an attempt to execute the protected 2p software, then than (unit 6 is absent. In this example, during (execution in the data processing 3 of the first part 2pes execution of the software protected Zp ~ at (time t1, (execution of the conditional branching command CBCi, cannot trigger (execution of remote conditional connection bc, taking into account (absence of (unit 6, ~ and at (time t2, the transfer of information allowing the first part 2pes execution to continue at (chosen location fails given (absence of (unit 6.
It therefore appears that in the absence of (unit 6, at least one request from a portion of the first 2pes execution part to trigger the execution of a conditional branch deported in (unit 6, cannot be satisfied correctly, so that at least this portion is not executed correctly and that, therefore, 2p protected software is not completely functional.
In the foregoing description in relation to FIGS. 90 to 92, the object of the invention aims to deport in unit 6, a conditional connection. Of course, a preferred embodiment of (invention may consist of deporting in (unit 6, a series conditional branches whose overall functionality is equivalent to (set of functionalities of conditional connections which have been deported.
The execution of the overall functionality of this series of connections conditional deportees results in the provision, for the processing system of data 3, information allowing the first part of 2pes execution of the software protected 2p to continue its execution at (chosen location.
According to another advantageous characteristic of the invention, the method of protection aims to implement a principle of protection, said by "dissociation temporal ", a description of which is given in relation to FIGS. 50 to 54.
For the implementation of the principle of protection by temporal dissociation, he at least one treatment is chosen in the source of the vulnerable 2vs software algorithmic using at least one operand and rendering at least one result.
It is also choose at least a portion of the source of the vulnerable 2vs software containing at minus an algorithmic treatment chosen.
At least a selected portion of the source of the vulnerable 2vs software is then modified, so as to obtain the source of the 2ps protected software. This change is such that in particular ~ when running 2p protected software, at least a portion of the first part of execution 2pes, which is executed in the system of data processing 3, takes into account that the functionality of at least a chosen algorithmic processing is executed in unit 6, ~ when running 2p protected software, the second part of execution 2s 2peu, which is executed in unit 6, performs at least the functionality at least one chosen algorithmic processing, ~ when running 2p protected software, each algorithmic processing chosen is broken down into several distinct stages, namely - step 1: the provision of the operand (s) for (unit 6, - step 2: the realization in (unit 6) of the functionality of the treatment algorithmic chosen using this or these operands, - and step 3: possibly, provision by (unit 6 for the data processing system 3, of the processing result chosen algorithmic, ~ step commands are defined to trigger the execution of steps, ~ and a sequencing of step orders is chosen from the set orders allowing the execution of the protected software 2p.
The first part of 2pes execution of the protected 2p software, which is executed in the data processing system 3, executes the step commands, triggering in (unit 6, (execution by means of the second part execution 2 little, from each of the previously defined steps.
Fig. 50 illustrates an example of execution of a vulnerable 2v software. 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 a processing algorithm represented by a function F and using operands X and Y.
Fig. 51 illustrates an exemplary implementation of (invention for which the algorithmic processing chosen in fig. 50 is deported to (unit 6. In this example, during (execution in the data processing system 3 of the first part of 2pes execution of the protected 2p software and in the presence of (unit 6, it appears ~ at (instant t1, (step l, namely the execution of a step command CEl triggering the transfer of X and Y data from the processing system of data 3 to memory areas respectively x and y located in the storage means 15 of (unit 6, this step command CEl being represented by OUT (x, X), OUT (y, ~, ~ at time t2, (step 2, namely (execution of a step command CE2, triggering in (unit 6, (execution by means of the second part of execution 2peu, of the function f, this function f being algorithmically equivalent to function F and this step command CE2 being represented by TRIG (f). More specifically, (execution of the command CEZ step leads to (execution of the function f which uses the content of storage areas x and y and returns its result in an area of storage z of unit 6, ~ and at (instant t3, step 3, namely (execution of a step command CE3 triggering the transfer of the result of the function f, contained in the area of storage z of (unit 6 to the data processing system 3 so to assign it to variable Z, this step command CE3 being represented by IN (z).
In the example illustrated, steps 1 to 3 are carried out successively. he is at note that two improvements can be made ~ The first improvement concerns the case where several treatments algorithms are deported to (unit 6 and at least the result of a algorithmic processing is used by another algorithmic processing.
In this case, certain transfer steps may be possibly deleted.
~ The second improvement aims to opt for a relevant scheduling stage commands from among (all the schedules allowing (execution of the protected software 2p. In this respect, it is preferable to choose a scheduling of step commands which temporally dissociates (execution of the steps, by inserting, between them, portions of code executed in the data processing system 3 and comprising or not step commands for determining other data. The Fig. 52 and 53 illustrate the principle of such an embodiment.
Fig. 52 shows an example of execution of vulnerable 2v software. In this example, it appears, during the execution of the vulnerable software 2v, in the data processing system 3, the execution of two processing algorithmic leading to the determination of Z and Z ', such as Z E- F (X, Y) and Z' E-F '(X', Y ').
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 (unit 6. According to such an example, when running in the system treatment data 3, of the first 2pes execution part of the protected software 2p, and in presence of unit 6, it appears, as explained above, the execution of step commands CEI, CE2, CE3 corresponding to the determination of Z and step commands CE'1, CE'2, CE'3 corresponding to the determination of Z '.
As illustrated, the step commands CE1 to CE3 are not executed consecutively insofar as step commands CE'1 to CE'3, as well than other portions of code are interspersed. In the example, it is thus realized (following scheduling: CEI, portion of intercalated code, CE2, portion of code intercalated, CE'1, portion of intercalated code, CE'2, portion of intercalated code, CE'3, portion of intercalated code, CE3.
It should be noted that, when running the 2p protected software, in the presence of unit 6, each time a step command contained in a portion of the first part of 2pes execution of protected software 2p requires it, step corresponding is executed in (unit 6. Thus, it appears, that in the presence of (unit 6, this portion is executed correctly and that, therefore, the software protected 2p is fully functional.
Fig. 54 illustrates an example of an attempt to run protected software 2p while (unit 6 is absent. In this example, when (execution in the system data processing 3 of the first part 2pes execution of the software protected 2p ~ at (time t1, (execution of the step command OUT (x, X), OUT (y, Y) does cannot trigger the transfer of X and Y data to the areas of respective storage x and y taking into account (absence of unit 6, ~ at (time t2, (execution of the TRIG step command (f) cannot trigger (execution of function f, taking into account (absence of (unit ~ and at (time t3, (execution of the step command IN (z) cannot trigger the transfer of the result of the function f, taking into account (absence of (unit 6.
It therefore appears that in the absence of (unit 6, at least one request from a portion of the first part of execution 2pes to trigger (execution of a step in (unit 6, cannot be satisfied correctly, so that at least this portion is not executed correctly and therefore the software protected 2p is not fully functional.
According to another advantageous characteristic of the invention, the method of protection aims to implement a protection principle known as "variable" of which a description is made in relation to FIGS. 40 to 43.
For the implementation of the principle of protection by variable, it is chosen in the source of the vulnerable software 2vs at least one variable which during (execution of vulnerable software 2v, partially defines (state of it. By state of a software it must be understood all the information, at a given time, necessary at complete execution of this software, so that (absence of such a variable selected harms (complete execution of this software. At least one is also chosen portion of source of the vulnerable Zvs software containing at least one chosen variable.
At least a selected portion of the source of the vulnerable 2vs software is then modified, so as to obtain the source of the protected 2ps software. This change is such that when (running 2p protected software, at least a portion of the first part of execution 2pes which is executed in the system of Treatment of data 3, takes into account that at least one chosen variable or at least one copy chosen variable resides in unit 6.
Fig. 40 illustrates an example of execution of a vulnerable software 2v. In this example, it appears during (execution of vulnerable software 2v in the system data processing 3 ~ at (instant t1, (assignment of the data X to the variable Vl, represented by VlE- X, ~ at (instant t2, the assignment of the value of the variable Vi to the variable Y, represented by Y ~ Vl, ~ and at time t3, the assignment of the value of the variable Vl to the variable Z, represented by Z E- Vl.
Fig. 41 illustrates an example of a first form of implementation of (invention for which the variable resides in (unit 6. In this example, during (execution in the data processing system 3 of the first part 2pes execution of protected software 2p, and in the presence of unit 6, it appears ~ at time t1, (execution of a transfer command triggering the transfer of data X from the data processing system 3 to the variable v1 located in the storage means 15 of (unit 6, this transfer command being represented by OUT (vl, X) and corresponding in the end to (assignment of the data X to the variable v1, ~ at (instant t2, (execution of a transfer command triggering the transfer of the value of variable v1 residing in (unit 6 to the system of data processing 3 in order to assign it to the variable Y, this transfer command being represented by IN (vl) and corresponding to the (wrong with (assignment of the value of variable v1 to variable Y, ~ and at (instant t3, (execution of a transfer command triggering the transfer of the value of variable v1 residing in (unit 6 to the system of data processing 3 in order to assign it to variable Z, this transfer command being represented by IN (vl) and corresponding to the final to (assignment of the value of variable v1 to variable Z.
It should be noted that when (running 2p protected software, at least one variable resides in (unit 6. So when a portion of the first part 2pes execution of protected software 2p (requires, and in the presence of unit 6, the value of this variable residing in (unit 6 is transferred to the Treatment of data 3 to be used by the first 2pes execution part of the software protected 2p, so that this portion is executed correctly and that by Consequently, the 2p protected software is fully functional.
Fig. 42 illustrates an example of a second form of implementation of (invention for which a copy of the variable resides in (unit 6. In this example, when running in the data processing system 3 of the first part of 2pes execution of the protected 2p software, and in the presence of (unit 6, it appears ~ at (time t1, the assignment of the data X to the variable Vl located in the data processing system 3, as well as the execution of an order of transfer triggering the transfer of data X from the system of data processing 3 to variable v1 located in the means of storage 15 of (unit 6, this transfer command being represented by OUT (v1, X), ~ at (instant t2, the assignment of the value of the variable Vl to the variable Y, ~ and at time t3, (execution of a transfer command triggering the transfer of the value of variable v1 residing in (unit 6 to the system data 3 in order to assign it to variable Z, this transfer command being represented by IN (vl).
It should be noted that when running 2p protected software, at least one copy of a variable resides in unit 6. So when a portion of the first part 2pes execution of protected software 2p (requires, and in the presence of (unit 6, the value of this copy of variable residing in (unit 6 is transferred to the system of data processing 3 to be used by the first execution party 2pes du 2p protected software, so this portion is executed correctly and by Consequently, the 2p protected software is fully functional.
Fig. 43 illustrates an example of an attempted execution of the protected software 2p while (unit 6 is absent. In this example, when (execution in the system data processing 3 of the first part 2pes execution of the software protected 2p ~ at (time t1, (execution of the transfer command OUT (vl, X) cannot not trigger the transfer of data X to variable v1, taking into account of (absence of unit 6, ~ at (instant t2, (execution of the transfer command IN (vl) cannot trigger the transfer of the value of the variable v1 to the system of data processing 3, taking into account (absence of unit 6, ~ and at (time t3, the execution of the transfer command IN (vl) cannot trigger the transfer of the value of the variable v1 to the system of data processing 3, taking into account the absence of unit 6.
It therefore appears that in the absence of (unit 6, at least one request from a portion of the first part of 2pes execution to use a variable or a copy of variable residing in (unit 6, cannot be satisfied correctly, from kind that at least this portion is not performed correctly and that, by therefore, the 2p protected software is not fully functional.
It should be noted that the data transfers between the processing system data 3 and unit 6 illustrated in the above examples do not use only simple assignments but those skilled in the art will be able to combine them with other operations to lead to complex operations such as for example OUT (vl, 2 * X + 3) or Z E- (5 * v1 + v2).
According to another advantageous characteristic of the invention, the method of protection aims to implement a principle of protection, said by "functions elementary ", a description of which is given in relation to fig. 60 to 64.
For the implementation of the principle of protection by elementary functions, he is defined ~ a set of elementary functions whose elementary functions are likely to be executed, by means of the second part of execution 2 little, in unit 6, and possibly to transfer data between the data processing system 3 and (unit 6, ~ and a set of elementary commands for this set of elementary functions, these elementary commands being capable of being executed in the data processing system 3 and trigger execution in the unit 6, corresponding elementary functions.
For the implementation of the principle of protection by elementary functions, he is also built operating resources to transform a unit virgin 60 into a unit 6 capable of performing basic functions, (execution of these elementary functions being triggered by (execution in the system of processing of data 3, of elementary commands.
For the implementation of the principle of protection by elementary functions, he is also chosen, in the source of the vulnerable 2vs software, at least one treatment algorithmic using at least one operand and rendering at least one result.
It is also choose at least a portion of the source of the vulnerable 2vs software containing at minus an algorithmic treatment chosen.
At least a selected portion of the source of the vulnerable 2vs software is then modified, so as to obtain the source of the 2ps protected software. This change is such that in particular ~ when running 2p protected software, at least a portion of the first part of execution 2pes, which is executed in the system of data processing 3, takes into account that the functionality of at least a chosen algorithmic processing is executed in unit 6, ~ when running 2p protected software, the second part of execution 2 little, which is executed in (unit 6, performs at least the functionality at least one chosen algorithmic processing, ~ each algorithmic processing chosen is broken down so that the execution of the protected 2p software, each algorithmic processing chosen is executed, by means of the second execution part 2peu, in using basic functions. Preferably, each treatment chosen algorithmic is broken down into elementary functions fe "(with n varying from 1 to N), i.e.
- possibly one or more elementary functions allowing the provision of one or more operands for unit 6, - elementary functions, some of which use the operand (s) and which in combination execute the functionality of the processing chosen algorithm, using this or these operands, - and possibly one or more elementary functions allowing the provision by (unit 6, for the treatment system of data 3 of the result of the chosen algorithmic processing, ~ and a scheduling of elementary commands is chosen from all the schedules allowing the execution of the protected software 2p.

The first part of 2pes execution of the protected 2p software, which is executed in the data processing system 3, executes elementary commands CFE "(with n varying from 1 to N), triggering in unit 6, (execution at means the second part of execution 2peu, of each of the elementary functions fe "
previously defined.
Fig. 60 illustrates an example of execution of vulnerable 2v software. In this example, it appears, during (execution of vulnerable software 2v in the data processing system 3, at a given instant, the calculation of Z E- F (X, Y) corresponding to the assignment to a variable Z of the result of a treatment algorithm represented by a function F and using operands X and Y.
Fig. 61 illustrates an example of implementation of (invention for which the algorithmic processing chosen in fig. 60 is deported to (unit 6. In this example, during (execution in the data processing system 3 of the first part of 2pes execution of the protected 2p software and in the presence of (unit 6, it appears ~ at times t1, t2, (execution of elementary commands CFEI, CFE2 triggering in (unit 6, execution by means of the second part of execution 2peu, corresponding elementary functions fel, fe2 which ensure the transfer of X, Y data from the processing system data 3 to memory areas respectively x, y located in the storage means 15 of (unit 6, these elementary commands CFEI, CFEZ being represented respectively by OUT (x, X), OUT (y, Y), ~ at times t3 to tN_l, (execution of elementary commands CFE3 to CFEN_l, triggering in unit 6, (execution by means of the second part of execution 2peu, elementary functions fe3 to feN_i corresponding, these elementary commands CFE3 to CFEN_1 being represented, respectively, by TRIG (fe3) to TRIG (feN_1). The continuation of elementary functions fe3 to feN_1 executed in combination is algorithmically equivalent to function F. More precisely, (execution of these elementary commands leads to (execution in unit 6, elementary functions (e3 to feN_1 which use the content of the storage areas x, y and render the result in an area of storage z of unit 6, ~ and at (instant tN, the execution of an elementary CFEN command triggering in unit 6, (execution by means of the second execution part 2peu, of the elementary function feN ensuring the transfer of the result of the treatment algorithmic, contained in the storage area z of (unit 6 towards the data processing system 3, in order to assign it to variable Z, this CFEN elementary command being represented by IN (z).
In (illustrated example, 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 treatments algorithms are deported to (unit 6 and at least the result of a algorithmic processing is used by another algorithmic processing.
In this case, some elementary commands used for the transfer, can be optionally deleted.
~ The second improvement aims to opt for a relevant scheduling elementary commands among (all the schedules allowing (execution of protected software 2p. In this regard, it is preferable to choose a scheduling of elementary commands which dissociates temporally (execution of elementary functions, by intercalating, between these portions of code executed in the processing system data 3 and with or without elementary commands used for the determination of other data. Figs. 62 and 63 illustrate the principle of a such an achievement.
Fig. 62 shows an example of execution of vulnerable 2v software. In this example, it appears during (execution of vulnerable software 2v, in the data processing system 3, the execution of two treatments algorithmic leading to the determination of Z and Z ', such as Z ~ F (X, Y) and Z' ~ -F '(X', Y ').
Fig. 63 illustrates an example of implementation of the method according to (invention for which the two algorithmic treatments chosen in fig. 62 are deported in (unit 6. According to such an example, during (execution in the treatment 3 of the first 2pes execution part of the protected software 2p and in presence of (unit 6, it appears, as explained above, (execution of elementary commands CFEi to CFEN corresponding to the determination of Z and (execution of elementary commands CFE'1 to CFE ~ M corresponding to the determination of Z '. As illustrated, the elementary commands CFEI to CFEN do not are not executed consecutively, as long as the commands elementary CFE'1 to CFE'M, as well as other code portions are interspersed. In The example it is thus carried out (following scheduling: CFEI, portion of code intercalated, CFE'1, CFE2, portion of code intercalated, CFE'2, CFE'3, portion of code intercalated, CFE'4, CFE3, CFE4, ..., CFEN, CFE'M.
It should be noted that, during (execution of the protected 2p software, in the presence of unit 6, each time an elementary command contained in a portion of the first part of 2pes execution of the protected software 2p requires it, the function corresponding elementary is executed in (unit 6. So it appears, that presence of (unit 6, this portion is executed correctly and that, by therefore, protected 2p software is fully functional.
Fig. 64 illustrates an example of an attempt to run protected software 2p while (unit 6 is absent. In this example, when (execution in the system data processing 3, from the first part 2pes execution of the software protected 2p, at all times, (execution of an elementary command cannot trigger (execution of the corresponding elementary function, due to (absence of (unit 6. The value to be assigned to the variable Z cannot therefore to be determined correctly.
It therefore appears that in the absence of (unit 6, at least one request from a portion of the first 2pes execution part of the protected 2p software, to trigger (execution of an elementary function in (unit 6 cannot be satisfied correctly, so that at least this portion is not executed correctly and that, therefore, 2p protected software is not completely functional.
According to another advantageous characteristic of the invention, the method of protection aims to implement a principle of protection, said by "detection and coercion ", a description of which is given in relation to figs. 70 to 74.
For the implementation of the principle of protection by detection and coercion, he is defined ~ at least one characteristic of software execution likely to be at least partially monitored in unit 6, ~ at least one criterion to respect for at least one characteristic software execution, ~ Detection means 17 to be implemented in unit 6 and allowing detect that at least one software execution characteristic does not does not meet at least one associated criterion, ~ and coercion means 18 to be implemented in (unit 6 and to inform the data processing system 3 and / or modify (software execution, when at least one criterion is not respected.
For the implementation of the principle of protection by detection and coercion, he is also built operating resources to transform a unit blank 60 in a unit 6 using at least the detection means 17 and means of coercion 18.
Fig. 70 illustrates the means necessary for the implementation of this principle of protection by detection and coercion. Unit 6 includes the means of detection 17 and the coercion means 18 belonging to the processing means 16. The means of coercion 18 are informed of the non-compliance with a criterion by the means of detection 17.
More precisely, the detection means 17 use information from the transfer means 13 and / or the means of storage 15 and / or processing means 16, in order to monitor one or more several software execution features. To each characteristic software execution is set at least one criterion to be met.
In the case where it is detected that at least one performance characteristic of software does not meet at least one criterion, the detection means 17 in inform the coercion means 18. These coercion means 18 are suitable for modify, as appropriate, (state of (unit 6.
For the implementation of the principle of protection by detection and coercion, he is also chosen ~ at least one software execution characteristic to monitor, among the performance characteristics likely to be monitored, ~ at least one criterion to respect for at least one characteristic selected software execution, ~ in the source of the vulnerable 2vs software, at least one processing algorithmic for which at least one performance characteristic of software is to be monitored, ~ and in the source of the vulnerable software 2vs, at least a portion containing at least one algorithmic processing chosen.
At least a selected portion of the source of the vulnerable 2vs software is then modified, so as to obtain the source of the 2ps protected software. This change is such that in particular when (running 2p protected software ~ at least a portion of the first 2pes execution part, which is executed in data processing system 3, takes into account that at least one selected software execution characteristic is at monitor, at least in part in unit 6, ~ and the second part of execution 2peu, which is executed in unit 6, at least partially monitors a software performance feature chosen.
When (running 2p protected software, protected by this principle of protection by detection and coercion, in the presence of (unit 6 ~ as long as all the criteria corresponding to all the characteristics monitored execution of all modified portions of protected software 2p are respected, these modified portions of the protected software Zp operate nominally and therefore 2p protected software operates nominally, ~ and if at least one of the criteria corresponding to a characteristic supervised execution of a portion of 2p protected software is not respected, the data processing system 3 is informed thereof and / or the operation of the protected software portion 2p is modified, so that the operation of the protected software 2p is modified.
Of course, in the absence of (unit 6, at least one request for a portion of the first part of 2pes execution of protected software 2p to use (unit 6 can not not be satisfied properly so that at least this portion does not not run correctly and therefore the 2p protected software is not completely functional.
For the implementation of the principle of protection by detection and coercion, two types of software runtime features are used preferentially.
The first type of software execution characteristic corresponds to a measurement variable of (software execution and the second type corresponds to a software usage profile. These two types of characteristics can to be used independently or in combination.
For the implementation of the principle of protection by detection and coercion using, as an execution characteristic, a measurement variable of execution of software it is defined ~ in the storage means 15, the possibility of storing at least a measurement variable used to quantify (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 each variable to be updated of measurement according to (use of the functionality for which it is associated.
It is also built operating resources using, in addition of the detection means 17 and coercion means 18, the means discount.
It is also chosen, in the source of the vulnerable software 2vs ~ at least one feature of the vulnerable 2v software whose use is likely to be monitored using a measurement variable, ~ at least one measurement variable used to quantify (use of said feature ~ at least one threshold associated with the measurement variable corresponding to a limit of use of said functionality, ~ and at least one method for updating the measurement variable in function of (use of said functionality.
The source of the vulnerable 2vs software is then modified, so as to get the source of the 2ps protected software, this modification being such that, when the execution of the protected software 2p, the second part of execution 2peu ~ updates the measurement variable according to (use of said feature ~ and takes into account at least one threshold crossing.
In other words, when running 2p protected software, the variable of measurement is updated according to the use of said functionality, and when the threshold is exceeded, the detection means 17 inform the means of coercion 18 who make a suitable decision to inform the system of data processing 3 and / or modify the processing carried out by the means of treatment 16 allowing the operation of the portion of the software protected 2p, so that the operation of the protected 2p software is changed.
For the implementation of a first preferred embodiment of the protection principle by detection and coercion using, as feature, a measurement variable it is defined ~ for at least one measurement variable, several associated thresholds, ~ and different coercion means corresponding to each of these thresholds.
It is also chosen, in the source of the vulnerable software 2vs ~ at least one measurement variable used to quantify (use of at least a functionality of the software and which must be associated with several thresholds corresponding to different limits of use of said feature ~ and at least two thresholds associated with the measurement variable.
The source of the vulnerable 2vs software is then modified, so as to obtain the source of the 2ps protected software, this modification being such that, when (execution protected software 2p, the second part of execution 2peu ~ updates the measurement variable according to (use of said feature ~ and takes into account, in a different way, the overruns of the various thresholds.
In other words, conventionally, when running the software protected 2p, when the first threshold is exceeded, (unit 6 informs the system of Treatment of data 3 directing the protected software 2p to no longer use this functionality. Yes

5' 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.
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.
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.
Il est aussi choisi, dans le source du logiciel vulnérable 2vs, au moins une variable de mesure servant à limiter (utilisation d'au moins une fonctionnalité du logiciel et à laquelle au moins une utilisation supplémentaire doit pouvoir être créditée.
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 de rechargement, au moins une utilisation supplémentaire d'au moins une fonctionnalité correspondant à une variable de mesure choisie peut être créditée.
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.
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.
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.
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 (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, (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é.
Lors de (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 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 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 que le fonctionnement du logiciel protégé 2p est modifié.
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 (enchaînement d'exécution pour au moins une partie des 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 (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 (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 de 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é.
Il est aussi construit des moyens d'exploitation permettant, à (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.
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 (enchaînement d'au moins une partie des instructions est à surveiller.
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 (exécution du logiciel protégé 2p ~ la seconde partie d'exécution 2peu exécute au moins la fonctionnalité du traitement algorithmique choisi, ~ le traitement algorithmique choisi est décomposé en instructions, ~ (enchaînement que doivent respecter au moins certaines des instructions lors de leur exécution dans (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 (exécution des instructions dans (unité 6.
Lors de (exécution du logiciel protégé 2p, protégé par ce principe, en présence de (unité 6 ~ tant que (enchaînement des instructions de toutes les portions modifiées du logiciel protégé 2p correspond à celui souhaité, ces portions modifiées du logiciel protégé Zp fonctionnent de manière nominale et, par conséquent, le logiciel protégé 2p fonctionne de manière nominale, ~ et si (enchaînement des instructions d'une portion de logiciel protégé 2p exécutées dans (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é Zp est modifié, de sorte que le fonctionnement du logiciel protégé 2p est modifié.
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 (enchaînement d'exécution d'au moins une partïe des instructions, dans le cas où
(enchaînement souhaité est respecté.
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 CI;
déclenchant, dans (unité 6 (exécution des instructions i; appartenant au jeu d'instructions. Dans le jeu d'instructions, au moins certaines des instructions comportent chacune une partie définissant la fonctionnalité de (instruction et une partie permettant de vérifier (enchaînement souhaité pour (exécution des instructions. Dans cet exemple, les commandes d'instructions CI; sont représentées par TRIG(i;) et (enchaînement souhaité pour (exécution des instructions est i", i"+1 et i"+ 2. L'exécution dans (unité 6, de (instruction i" donne le résultat a et (exécution de (instruction i"+1 donne le résultat b. L'instruction i"+2 utilise comme opérande, les résultats a et b des instructions i" et i"+1 et son exécution donne le résultat c.
Compte tenu que cet enchaînement des instructions exécutées dans (unité 6 correspond à celui souhaité, il en résulte un fonctionnement normal ou nominal du logiciel protégé 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 (enchaînement d'exécution d'au moins une partie des instructions, dans le cas où
(enchaînement souhaité n'est pas respecté.
Selon cet exemple, (enchaînement souhaité pour (exécution des instructions est toujours i", i"+1 et 1n+2. Toutefois, (enchaînement d'exécution des instructions est modifié par le remplacement de l'instruction i" par (instruction i'", de sorte que l'enchaînement effectivement exécuté est i'n, i"+i et i"+2. L'exécution de (instruction i'" 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 i"+2, les moyens de détection 17 détectent que l'instruction i'" ne correspond pas à l'instruction souhaitée pour générer le résultat a utilisé comme opérande de l'instruction i"+a. Les moyens de détection 17 en informent les moyens de coercition 18 qui modifient en conséquence, le fonctionnement de l'instruction i"+2, de sorte que l'exécution de l'instruction i"+2 donne le résultat c' pouvant être différent de e. Bien entendu, si (exécution de l'instruction i'" donne un résultat a' différent du résultat a de finsiruction i", il est clair que le résultat de l'instruction i"+i peut aussi être différent de c.
Dans la mesure où (enchaînement d'exécution des instructions exécutées dans (unité 6 ne correspond pas à celui souhaité, il peut donc être obtenu une modification du fonctionnement du logiciel protégé 2p.
Les fg. 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.
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.
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 (instruction et une partie PE définissant (enchaînement souhaité pour (exécution des instructions. La partie PF correspond au code opération connu de (Homme de l'art.
La partie PE définissant l'enchaînement souhaité, comporte des champs de bits correspondant à
~ un champ d'identification de (instruction CII, ~ et pour chaque opérande k de (instruction, avec k variant de 1 à K, et K
nombre d'opérandes de (instruction - un champ drapeau CDk, indiquant s'il convient de vérifier la provenance de (opérande k, - et un champ d'identification prévue CIPk de l'opérande, indiquant (identité attendue de l'instruction ayant généré le contenu de (opérande k.
Comme illustré à la fig. 74, le jeu d'instructions comporte V registres appartenant aux moyens de traitement 16, chaque registre étant nommé R~, avec v variant de 1 à V. Pour chaque registre R~, il est défini deux champs, à savoir ~ un champ fonctionnel CF,,, connu de l'Homme de l'art et permettant de stocker le résultat de (exécution des instructions, ~ et un champ d'identification générée CIG,. permettant de mémoriser l'identité de (instruction ayant généré le contenu du champ fonctionnel CF,,. Ce champ d'identification générée CIG~ est mis à jour automatiquement avec le contenu du champ d'identification de (instruction CII ayant généré le champ fonctionnel CF~. Ce champ d'identification générée CIG~ n'est pas accessible, ni modifiable par aucune instruction et sert uniquement aux moyens de détection 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 CD~ 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 CIG~ correspondant au registre utilisé par (opérande k sont lus tous les deux, ~ l'égalité des deux champs CIPk et CIG,, est contrôlëe, ~ et si l'égalité est fausse, les moyens de détection 17 considèrent que (enchaînement d'exécution des instructions n'est pas respecté.
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 (instruction en cours d'exécution ou la partie fonctionnelle PF
d'instructions ultérieures.
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.

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 (unité 6, et éventuellement de transférer des données entre le système de traitement de données 3 et (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 (unité 6, l'exécution de fonctions dépendantes correspondantes, ~ pour chaque commande déclenchante, une consigne correspondant au moins en partie à (information transmise par la première partie d'exécution 2pes, à la seconde partie d'exécution 2peu, afin de déclencher (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 (unité 6 lors de la phase d'utilisation et permettant de retrouver la consigne initiale, à partir de la consigne renommée, afin de retrouver la fonction dépendante à exécuter.
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.
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, so ~ et au moins une portion du source du logiciel vulnérable 2vs, contenant au moins un traitement algorithmique choisi.
Le source du logiciel vulnérable 2vs est ensuite modifié, de manière à obtenir le source du logiciel protégé Zps. Cette modification est telle que notamment ~ lors de (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é Zp, 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 fd" (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 (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, - 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 (exécution du logiciel protégé 2p, la seconde partie d'exécution 2peu exécute les fonctions dépendantes fd", ~ 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é
s1 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 (unité 6 des consignes renommées, et déclenchant dans (unité 6 le rétablissement au moyen des moyens de rétablissement 20, des consignes, puis (exécution au moyen de la seconde partie d'exécution 2peu, de chacune des fonctions dépendantes fd" précédemment définies.
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 (exécution dans le système de traitement de données 3, déclenche dans (unité 6, (exécution des fonctions dépendantes qui auraient été déclenchées par les commandes déclenchantes à
consignes non renommées, sans toutefois que (examen du logiciel protégé 2p ne permette de déterminer (identité des fonctions dépendantes exécutées.
La fig. 80 illustre un exemple d'exécution d'un logiciel vulnérable 2v. Dans cet exemple, il apparaît au cours de (exécution du logiciel vulnérable 2v dans le système de traitement de données 3, à un instant donné, le calcul de Z E-- 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.
Les fig. 81 et 82 illustrent un exemple de mise en oeuvre de (invention.
La fig. 81 illustre la mise en oeuvre partielle de (invention. Dans cet exemple, lors de (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 (unité 6, il apparaît ~ aux instants t1, t2, (exécution des commandes déclenchantes CDI, CDZ
déclenchant dans (unité 6, (exécution au moyen de la seconde partie d'exécution 2peu, des fonctions dépendantes fdl, fda 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 CDI, CDZ étant représentées respectivement par OUT(x, X), OUT(y, Y), ~ aux instants t3 à tN_l, l'exécution des commandes déclenchantes CD3 à
s2 CDN_l, déclenchant dans (unité 6, l'exécution au moyen de la seconde partie d'exécution 2peu, des fonctions dépendantes fd3 à fdN_1 correspondantes, ces commandes déclenchantes CD3 à CDN_I étant représentées, respectivement, par TRIG(fd3) à TRIG(fdN_1). La suite des fonctions dépendantes fd3 à fdN_1 exécutées en combinaison est algorithmiquement équivalente à la fonction F. Plus précisément, (exécution de ces commandes déclenchantes conduit à (exécution dans l'unité 6, des fonctions dépendantes fd3 à fdN_1 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 (unité 6, ~ et à (instant tN, (exécution d'une commande déclenchante CDN déclenchant dans (unité 6, (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 (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).
Dans cet exemple, pour mettre en oeuvre complètement (invention, il est choisi en tant que consigne, le premier argument des commandes déclenchantes OITT et (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 consignes des commandes déclenchantes CDl à CDN à savoir x, y, fd3, fdN_l, z sont renommées de manière à obtenir respectivement R(x), R(y), R(fd3)..., R(fdN_1), R(z).
La fig. 82 illustre la mise en oeuvre complète de (invention. Dans cet exemple, lors de (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 funitë 6, il apparaît ~ aux instants t1, t2, (exécution des commandes déclenchantes à consignes renommées CDCRI, CDCR2, transférant vers (unité 6, les consignes renommées R(x), R(y) ainsi que les données X, Y déclenchant dans (unité
5 'the protected software 2p continues to use this functionality, the second threshold may to be surpassed. If the second threshold is exceeded, the means of coercion 18 may render the selected functionality inoperative and / or render the software protected 2p.
For the implementation of a second preferred embodiment of the protection principle by detection and coercion using, as feature, a measurement variable, reloading means are defined making it possible to credit at least one additional use for at least one functionality of software monitored by a measurement variable.
It is also built operating resources using, in addition of the detection means 17, coercion means 18 and means discount, means of recharging.
It is also chosen, in the source of the vulnerable 2vs software, at least one measurement variable used to limit (use of at least one functionality of software and to which at least one additional use must be able to be credited.
The source of the vulnerable 2vs software is then modified, so as to obtain the source of the 2ps protected software, this modification being such that, in a so-called phase reload, at least one additional use of at least one functionality corresponding to a selected measurement variable can be credited.
In the reloading phase, at least the update is carried out a chosen measurement variable and / or at least one associated threshold, so as to allow at least one additional use of the functionality corresponding. In other words, it is possible, in the phase of reloading, credit additional uses of at least one feature of the software protected 2p.
For the implementation of the principle of protection by detection and coercion using, as a feature, a software usage profile, it is defined as that criterion to respect for this usage profile, at least one trait execution of software.
It is also chosen, in the source of the vulnerable software 2vs ~ at least one use profile to monitor, ~ and at least one performance feature that at least one chosen use profile must respect.
The source of the vulnerable 2vs software is then modified, so as to obtain the source of the 2ps protected software, this modification being such that, when (execution protected software 2p, the second part of execution 2peu respects all features of execution chosen. In other words, (unit 6 itself monitors the how the second part of execution 2peu is executed and can inform the system of data processing 3 and / or modify the operation of the protected software 2p in the case where at least one performance line is not respected.
When (running 2p protected software, protected by this principle, in presence from unit 6 ~ as long as all the performance features of all the modified portions of the 2p protected software is respected, these modified portions of the software protected 2p operate nominally and therefore the software protected 2p operates nominally, ~ and if at least one feature of a portion of 2p protected software is not respected, the data processing system 3 is informed and / or the operation of the protected software portion 2p is modified, so that the operation of the protected software 2p is modified.
It is possible to envisage the surveillance of different performance traits, such as through example monitoring the presence of instructions with a marker where the monitoring of (sequence of execution for at least part of the instructions.
For the implementation of the principle of protection by detection and coercion using as a performance line to be respected, monitoring of (concatenation of execution for at least part of the instructions, it is defined ~ a set of instructions whose instructions are likely to be executed in (unit 6, ~ a set of instruction commands for this set of instructions, these instruction commands are likely to be executed in the data processing system 3. The execution of each of these instruction commands in the data processing system 3 triggers in unit 6, the execution of the corresponding instruction, ~ Detection means 17 making it possible to detect that the sequence of instructions does not match that desired, ~ and coercion means 18 to inform the system of 3 data processing and / or modify the execution of software when the sequence of instructions does not correspond to that desired.
Operating resources are also built, allowing (unit 6, to run also the instructions in the instruction set, the execution of these instructions being triggered by execution in the data processing system 3 of instruction commands.
It is also chosen, in the source of the vulnerable software 2vs, at least one algorithmic processing to be deported to unit 6 and for which (sequence of at least part of the instructions is to be monitored.
The source of the vulnerable 2vs software is then modified so as to obtain the source of the 2ps protected software, this modification is such that, when (execution of protected software 2p ~ the second part of execution 2peu executes at least the functionality of the chosen algorithmic processing, ~ the chosen algorithmic processing is broken down into instructions, ~ (sequence that must respect at least some of the instructions when executed in (unit 6 is specified, ~ and the first part of 2pes execution of the protected software 2p executes instruction commands that trigger (execution of instructions in (unit 6.
When (running 2p protected software, protected by this principle, in presence from (unit 6 ~ as long as (sequence of instructions for all modified portions of protected software 2p corresponds to that desired, these modified portions of the Zp protected software operate nominally and therefore the 2p protected software works nominally, ~ and if (sequence of instructions for a portion of 2p protected software executed in (unit 6 does not correspond to the desired one, the data processing 3 is informed and / or the functioning of the portion of the protected software Zp is modified, so that the operation 2p protected software is changed.
Fig. 71 illustrates an example of implementation of the principle of protection by detection and coercion using, as an execution trait to respect the oversight of (sequence of execution of at least part of the instructions, in the case (desired sequence is respected.
The first part of 2pes execution of the protected 2p software, executed in the data processing system 3, executes instructions commands CI;
triggering, in (unit 6 (execution of instructions i; belonging to the game instructions. In the instruction set, at least some of the instructions each have a part defining the functionality of (instruction and a part allowing to verify (desired sequence for (execution of instructions. In this example, the CI instruction commands; are represented by TRIG (i;) and (desired sequence for (execution of instructions is i ", i" +1 and i "+ 2. Execution in (unit 6, of (instruction i" gives the result a and (execution of (instruction i "+1 gives the result b. Instruction i" +2 uses as operand, the results a and b of instructions i "and i" +1 and its execution gives the result c.
Given that this sequence of instructions executed in (unit 6 corresponds to that desired, resulting in normal or nominal operation of protected software 2p.
Fig. 72 illustrates an example of implementation of the principle of protection by detection and coercion using, as an execution trait to be respected, the oversight of (sequence of execution of at least part of the instructions, in the case (desired sequence is not respected.
According to this example, (desired sequence for (execution of instructions is always i ", i" +1 and 1n + 2. However, (sequence of execution of instructions is modified by replacing instruction i "with (instruction i '", so than the sequence actually executed is i'n, i "+ i and i" +2. The execution of (instruction i '"gives the result a, that is to say the same result as the execution of the instruction in.
However, at the latest when the instruction i "+2 is executed, the means of detection 17 detect that the instruction i '"does not correspond to the instruction desired to generate the result used as the operand of the instruction i "+ a.
means of detection 17 inform the means of coercion 18 which modify in result, the operation of the instruction i "+2, so that the execution of instruction i "+2 gives the result c 'which can be different from e. Of course, if (execution of instruction i '"gives a result a' different from the final result i ", it is clear that the result of the instruction i "+ i can also be different from c.
Insofar as (sequence of execution of the instructions executed in (unit 6 does not correspond to the desired one, so it can be obtained a change the operation of protected software 2p.
The fg. 73 and 74 illustrate a preferred embodiment of the principle of protection by detection and coercion using, as an execution trait to respect, the monitoring of the execution sequence of at least part of the instructions.
According to this preferred variant, a set of instructions is defined, the less some instructions work on registers and use at least one operand in view to render a result.
As illustrated in fig. 73, it is defined for at least some of the instructions working on registers, a PF part defining the functionality of (instruction and a PE part defining (desired sequence for (execution of instructions. The PF part corresponds to the known operation code of (Man of art.
The PE part defining the desired sequence, includes bit fields corresponding to ~ an identification field of (CII instruction, ~ and for each operand k of (instruction, with k varying from 1 to K, and K
number of operands of (instruction - a CDk flag field, indicating whether to check the from (operand k, - and a field of identification identified CIPk of the operand, indicating (identity expected from the instruction that generated the content of (operand k.
As illustrated in fig. 74, the instruction set includes V registers belonging to the processing means 16, each register being named R ~, with v varying from 1 to V. For each register R ~, two fields are defined, namely ~ a functional field CF ,,, known to those skilled in the art and making it possible to store the result of (execution of instructions, ~ and a CIG generated identification field. allowing to memorize the identity of (instruction having generated the content of the functional field CF ,,. This identification field generated CIG ~ is updated automatically with the contents of the identification field of (instruction CII having generated the functional field CF ~. This identification field generated CIG ~ is not accessible, nor modifiable by any instruction and only used for detection means 17.
During the execution of an instruction, the detection means 17 carry out for each operand k the following operations ~ the CD flag field ~ is read, ~ if the CDk flag field requires it, the expected identification field CIPk and the identification field generated CIG ~ corresponding to the register used by (operand k are read both, ~ the equality of the two fields CIPk and CIG ,, is checked, ~ and if the equality is false, the detection means 17 consider that (sequence of execution of instructions is not respected.
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 instructions not respected. A preferential realization consists in modifying the part functional PF of (instruction in progress or the functional part PF
instructions later.
According to another advantageous characteristic of the invention, the method of protection aims to implement a principle of protection, said by "renaming"
a description of which is given in relation to FIGS. 80 to 85.

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 part of execution 2 little, in (unit 6, and possibly to transfer data between the data processing system 3 and (unit 6, this set of functions dependent that can be 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 trigger in (unit 6, the execution of corresponding dependent functions, ~ for each triggering command, a set point corresponding to less in part to (information transmitted by the first executing party 2pes, at the second part of execution 2peu, in order to trigger (execution of the corresponding dependent function, this setpoint is presented under the form of at least one argument of the triggering command, ~ a method of renaming the instructions intended to be implemented when modifying the vulnerable software, such a method allowing to rename the instructions in order to obtain triggering commands at renowned instructions to conceal the identity of functions corresponding dependents, ~ and recovery means 20 intended to be implemented in (unit 6 during the use phase and allowing to find the setpoint initial, from the renamed setpoint, in order to find the function dependent to execute.
For the implementation of the principle of protection by renaming, it is also builds operating resources to transform a virgin unit 60 in a unit 6 using at least the recovery means 20.
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, n ~ and at least a portion of the source of the vulnerable software 2vs, containing at minus an algorithmic treatment chosen.
The source of the vulnerable 2vs software is then modified, so as to obtain the source of Zps protected software. This modification is such that in particular ~ when (running 2p protected software, at least a portion of the first part of execution 2pes, which is executed in the system of data processing 3, takes into account that the functionality of at least a chosen algorithmic processing is executed in unit 6, ~ during the execution of the protected software Zp, the second part of execution 2peu, which is executed in unit 6, performs at least the functionality at least one chosen algorithmic processing, ~ each algorithmic processing chosen is broken down so that the execution of the protected 2p software, each algorithmic processing chosen is executed, by means of the second execution part 2peu, in using dependent functions. Preferably, each treatment algorithm chosen is decomposed into dependent functions fd "(with n varying from 1 to N), i.e.
- possibly one or more dependent functions allowing the provision of one or more operands for (unit 6, - dependent functions, some of which use the operand (s) and which in combination execute the functionality of the processing chosen algorithm, using this or these operands, - and possibly one or more dependent functions allowing the made available by unit 6, for the treatment system of data 3 of the result of the chosen algorithmic processing, ~ during (execution of 2p protected software, the second part of execution 2peu performs fd dependent functions ", ~ when running 2p protected software, the dependent functions are triggered by triggering commands with renowned instructions, ~ and a sequencing of triggering commands is chosen from all the schedules allowing the execution of the protected software s1 2p.
The first part of 2pes execution of the protected 2p software, executed in the data processing system 3, executes triggering commands at renamed instructions transferring to (unit 6 renamed instructions, and triggering in (unit 6 recovery by means of recovery 20, instructions, then (execution by means of the second part of execution 2peu, of each of the previously defined dependent functions fd ".
In other words, the principle of protection by renaming consists in rename the instructions of the triggering commands, so as to obtain trigger commands with renowned instructions including (execution in the system data processing 3, triggers in (unit 6, (execution of functions dependent that would have been triggered by the triggering commands at instructions not renamed, without however that (examination of the protected 2p software does not allows to determine (identity of the dependent functions executed.
Fig. 80 illustrates an example of execution of vulnerable 2v software. In this example, it appears during (execution of vulnerable software 2v in the system data processing 3, at a given time, the calculation of Z E-- F (X, Y) corresponding to the assignment to a variable Z of the result of a treatment algorithm represented by a function F and using the operands X and Y.
Figs. 81 and 82 illustrate an example of implementation of (invention.
Fig. 81 illustrates the partial implementation of the (invention. In this example, during (execution in the data processing system 3 of the first part 2pes execution of protected software 2p and in the presence of (unit 6, it appears ~ at times t1, t2, (execution of triggering commands CDI, CDZ
triggering in (unit 6, (execution by means of the second part of execution 2peu, dependent functions fdl, fda corresponding which ensure the transfer of X, Y data from the processing system data 3 to memory areas respectively x, y located in the storage means 15 of the unit 6, these triggering commands CDI, CDZ being represented respectively by OUT (x, X), OUT (y, Y), ~ at times t3 to tN_l, the execution of the triggering commands CD3 to s2 CDN_l, triggering in (unit 6, execution by means of the second execution part 2peu, dependent functions fd3 to fdN_1 corresponding, these triggering commands CD3 to CDN_I being represented, respectively, by TRIG (fd3) to TRIG (fdN_1). The continuation of dependent functions fd3 to fdN_1 executed in combination is algorithmically equivalent to function F. More precisely, (execution of these triggering commands leads to (execution in unit 6, dependent functions fd3 to fdN_1 which use the content storage areas x, y and render the result in an area of memorization z of (unit 6, ~ and at (instant tN, (execution of a triggering CDN triggering command in (unit 6, (execution by means of the second execution part 2peu, of the fdN dependent function ensuring the transfer of the treatment result algorithm contained in the storage area z of (unit 6 towards the data processing system 3, in order to assign it to variable Z, this command being represented by IN (z).
In this example, to fully implement (invention, it is chosen as a setpoint, the first argument to the OITT trigger commands and (argument of the triggering commands TRIG and IN. The instructions thus chosen are renamed by the renaming method. In this way, the instructions for triggering commands CDl to CDN, namely x, y, fd3, fdN_l, z are renamed so as to obtain respectively R (x), R (y), R (fd3) ..., R (fdN_1), R (z).
Fig. 82 illustrates the full implementation of the (invention. In this example, during (execution in the data processing system 3, from the first part 2pes execution of protected software 2p, and in the presence of funitë 6, it appears ~ at times t1, t2, (execution of triggering commands with instructions renamed CDCRI, CDCR2, transferring to (unit 6, the instructions renamed R (x), R (y) as well as the data X, Y triggering in (unit

6 le rétablissement au moyen des moyens de rétablissement 20, des consignes renommées pour rétablir les consignes à savoir (identité des zones de mémorisation x, y, puis (exécution au moyen de la seconde partie d'exécution 2peu, des fonctions dépendantes fdl, fda 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_l, (exécution des commandes déclenchantes à consignes renommées CDCR3 à CDCRN_l, transférant vers (unité 6, les consignes renommées R(fd3) à R(fdN_1), déclenchant dans (unité 6 le rétablissement au moyen des moyens de rétablissement 20, des consignes, à savoir fd3 à
fdN_l, puis (exécution au moyen de la seconde partie d'exécution 2peu, des fonctions dépendantes fd3 à fdN_l, ces commandes déclenchantes à
consignes renommées CDCR3 à CDCRN_1 étant représentées respectivement par TRIG (R(fd3)) à TRIG (R(fdN_1)), ~ et à (instant tN, (exécution de la commande déclenchante à consigne renommée CDCRN transférant vers (unité 6, la consigne renommée R(z) dëclenchant dans (unité 6 le rétablissement au moyen des moyens de rétablissement 20, de la consigne à savoir (identité de la zone de mémorisation z, puis (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 (unité
6 vers le système de traitement de données 3, afin de l'affecter à la variable Z, cette commande déclenchante à consigne renommée CDCRN étant représentée par IN (R(z)).
Dans (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 funitë 6 et au moins le résultat d'un traitement algorithmique est utilisé par un autre traitement algorithmique.
Dans ce cas, certaines commandes déclenchantes à consignes renommées servant au transfert, peuvent être éventuellement supprimées.

~ La deuxième amélioration vise à opter pour un ordonnancement pertinent des commandes déclenchantes à consignes renommées parmi (ensemble des ordonnancements permettant (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é dans 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.
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 E- F (X, Y) et Z' ~-F' (X', Y').
La fig. 84 illustre un exemple de mise en aeuvre du procédé selon (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 (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 (unité 6, il apparaît, comme expliqué ci-dessus, (exécution des commandes déclenchantes à consignes renommées CDCRI à CDCRN correspondant à la détermination de Z et (exécution des commandes déclenchantes à consignes renommées CDCR'1 à CDCR'M correspondant à la détermination de Z'. Comme illustré, les commandes déclenchantes à consignes renommées CDCRI à CDCRN ne sont pas exécutées consécutivement, dans la mesure où les commandes déclenchantes à consignes renommées CDCR'1 à CDCR'M ainsi que d'autres portions de code sont intercalées. Dans l'exemple, il est ainsi réalisé
fordonnancement suivant : CDCRI, portion de code intercalé, CDCR'1, CDCRa, portion de code intercalé, CDCR'2, CDCR'3, portion de code intercalé, CDCR'4, CDCR3, CDCR4, ..., CDCRN, CDCR'M.
Il est à noter que, lors de (exécution d'une portion de la première partie d'exécution 2pes du logiciel protégé 2p, les commandes déclenchantes à
consignes ss renommées exécutées dans le système de traitement de données 3, déclenchent dans (unité 6 le rétablissement de l'identité des fonctions dépendantes correspondantes puis (exécution de celles-ci. Ainsi, il apparaît qu'en présence de (unité 6, cette portion est exécutée correctement et que, par conséquent, le logiciel protégé
2p est complètement fonctionnel.
La fig. 85 illustre un exemple de tentative d'exécution du logiciel protégé
2p, alors que (unité 6 est absente. Dans cet exemple, lors de (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 (exécution de la fonction dépendante correspondante, en raison de (absence de (unité 6. La valeur à affecter à la variable Z ne peut donc pas étre déterminée correctement.
Il apparaît donc, qu'en (absence de (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 (exécution d'une fonction dépendante dans (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.
Grâce à ce principe de protection par renommage, (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 (unité 6.
Il est à noter que le renommage des consignes est effectué lors de la modification du logiciel vulnérable 2v en un logiciel protégé 2p.
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 fane 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, à (examen du logiciel protégé
2p, de déceler que les fonctions dépendantes appelées sont algorithmiquement équivalentes.
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 à (information définissant la partie fonctionnelle de la fonction dépendante à
exécuter dans (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.
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 P. 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 (identité des fonctions dépendantes à exécuter dans l'unité 6. Ces moyens de rétablissement sont mis en oeuvre dans (unité 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 (unité 6, l'exécution d'une fonction dépendante.
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 à
(invention, est mis en oeuvre en utilisant le principe de protection par branchement conditionnel, éventuellement associé à un ou plusieurs autres principes de protection. Dans le cas s7 où le principe de protection par branchement conditionnel est complété par la mise en oeuvre d'au moins un autre principe de protection, le principe de protection par branchement conditionnel est complété avantageusement par le principe de protection par dissociation temporelle.
Et lorsque le principe de protection par dissociation temporelle est aussi mis en couvre, celui-ci peut être complété à son tour par le principe de protection par variable et/ou le principe de protection par fonctions élémentaires.
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 lorsque le principe de protection par détection et coercition est aussi mis en couvre, celui-ci peut être complété à son tour par le principe de protection par renommage.
Selon la variante préférée de réalisation, le principe de protection par branchement conditionnel est complété par le principe de protection par dissociation temporelle, complété par le principe de protection par vàriable et 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.
Dans le cas où un principe de protection est appliqué, en complément du principe de protection par branchement conditionnel, 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.
Ainsi, dans le cas où un principe de protection a déjà été appliqué au logiciel vulnérable, (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é, (expression « logiciel protégé » doit être interprétée par le lecteur comme (expression « nouvelle ss version du logiciel protégé »;
~ et le ou les choix effectués) pour la mise en oeuvre du principe de protection en cours de description doit(vent) tenir compte du ou des choix effectués) pour la mise en oeuvre du ou des principes) de protection déjà
appliqué(s).
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 (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é Zp, ~ 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 (unité fi 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 (impose, une fonctionnalité imposée est exécutée dans (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.
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 Pl, est mise en oeuvre indépendamment du logiciel vulnérable 2v à protéger. La deuxième, dite sous-phase de protection aval PZ est dépendante du logiciel vulnérable 2v à
protéger.

Il est à noter que les sous-phases de protection amont Pl et aval Pa 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 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 PZ 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 peuvent aussi être réalisées par la même personne ou la même équipe.
La sous-phase de protection amont Pl fait intervenir plusieurs stades Sll, ..., Sl, pour chacun desquels dïfférentes tâches ou travaux sont à effectuer.
Le premier stade de cette sous-phase de protection amont Pi est appelé "stade de définitions S11". Lors de ce stade de définitions Sll ~ il est choisi - le type de (unité 6. A titre illustratif, il peut-être choisi en tant qu'unité
1 S 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 (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 (unité 6, ~ et dans le cas où le procédé de protection selon (invention met en oeuvre le principe de protection par fonctions élémentaires, il est aussi défini - un jeu de fonctions élémentaires dont les fonctions élémentaires sont susceptibles d'être exécutées dans (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 (exécution dans (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 - 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 (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 (unité 6 et permettant d'informer le système de traitement de données 3 et/ou de modifier (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 (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 (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 (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 (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 (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 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, - 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 (invention met en oeuvre le principe de protection par détection et coercition utilisant comme trait d'exécution à respecter, la surveillance de (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 (unité 6 l'exécution des instructions, - en tant que profil d'utilisation, (enchaînement des instructions, - en tant que trait d'exécution, un enchaînement souhaité pour (exécution des instructions, - en tant que moyens de détection 17, des moyens permettant de détecter que (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 (enchaînement des instructions ne correspond pas à celui souhaité, ~ et dans le cas où le procédé de protection selon (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 - 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 (exécution des instructions et comportant des champs de bits correspondant à:
0 un champ d'identification de (instruction CII, 0 et pour chaque opérande de (instruction * un champ drapeau CDk, * et un champ d'identification prévue CIPk de (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 CIG~ dans lequel est automatiquement mémorisée (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 (impose, de contrôler l'égalité entre le champ d'identification générée CIG~ correspondant au registre utilisé par cet opérande, et le champ d'identification prévue CIPk de (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 (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, - en tant qu'une consigne, au moins un argument pour une commande déclenchante, correspondant au moins en partie à (information transmise par le système de traitement de données 3 à (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 (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 à (information définissant la partie fonctionnelle de la fonction dépendante à exécuter dans (unité 6, - ou en utilisant le champ d'identification de (instruction CII 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 3 0 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 renommées et rétablir ainsi (identité des fonctions dépendantes à
exëcuter dans (unité 6.
Lors de la sous-phase de protection amont, le stade de définition Sll est suivi par un stade appelé "stade de construction S12". Lors d'un tel stade 512, sont construits les moyens de transfert 12, 13 et ëventuellement, les moyens d'exploitation correspondant aux définitions du stade de définition Sll.
Lors de ce stade de construction Slz, 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 (unité 6, ~ et lorsque le principe de protection par fonctions élémentaires est aussi mis en oeuvre, à la construction des moyens d'exploitation permettant à (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 à (unité 6, au cours de la phase d'utilisation U de mettre aussi en oeuvre les moyens de détection 17 et les moyens de coercition 18, - et éventuellement des moyens d'exploitation permettant à (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 à (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 à (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 à (unité 6, au cours de la phase d'utilisation U de mettre aussi en oeuvre les moyens de rétablissement.
La construction des moyens d'exploitation est réalisée de manière classique, par (intermédiaire d'une unité de développement de programme en prenant en compte les définitions intervenues au stade de définitions Sll. Une telle unité est décrite dans la suite de la description à la 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 (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.
Lors de la sous-phase de protection amont Pl, il peut être mis en oeuvre, après le stade de définition Sll et, éventuellement après le stade de construction Sl~, 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 branchements conditionnels dont la fonctionnalité est susceptible d'être déportée dans (unité 6, - la ou les portions susceptibles d'être modifiées, - et lorsque le principe de protection par dissociation temporelle est aussi mis en oeuvre, le ou les traitements algorithmiques susceptibles d'être décomposées en étapes déportables dans (unité 6, - et lorsque le principe de protection par variable est aussi mis en oeuvre, la ou les variables susceptibles d'être déportées dans (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 décomposées en fonctions élémentaires déportables dans (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 (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 (unité 6 et pour lesquelles les consignes des commandes déclenchantes peuvent être renommées, ~ et, éventuellement, d'aider à générer des logiciels protégés ou d'automatiser la protection de logiciels. ' 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.
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 branchement conditionnel est appelé "stade de création S21". Lors de ce stade de création 521, il est utilisé les choix intervenus au stade de définition Sll. A (aide de ces choix et éventuellement d'outils construits au stade de confection d'outils 514, il est créé le logiciel protégé 2p ~ en choisissant dans le source du logiciel vulnérable 2vs, au moins un branchement conditionnel, ~ en choisissant au moins une portion du source du logiciel vulnérable 2vs contenant au moins un branchement conditionnel 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 (unité vierge 60 après chargement d'informations, - et la seconde partie d'exécution 2peu exécute au moins la fonctionnalité d'au moins un branchement conditionnel choisi et met à
la disposition du système de traitement de données 3, une information permettant à la première partie d'exécution Zpes de poursuivre son exécution à l'endroit choisi, ~ 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 qu'au moins un branchement conditionnel choisi est exécuté dans l'unité 6, - 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 (exécution du logiciel protégé 2p, apparaît la seconde partie d'exécution 2peu au moyen de laquelle chaque branchement conditionnel choisi est exécuté.
Bien entendu, le principe de protection par branchement conditionnel 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.
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 (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 (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 (exécution du logiciel protégé
2p, la fonctionnalité d'au moins une série choisie de branchements conditionnels est exécutée dans (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 (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.
Lors de la sous-phase de protection aval P~, et lorsqu'au moins un autre principe de protection est appliqué en plus du principe de protection par branchement conditionnel, il est mis en oeuvre un "stade de modification S~2". Lors de ce stade de modification 522, il est utilisé les définitions intervenues au stade de définitions Sl~
A (aide de ces définitions et éventuellement d'outils construits au stade de confection d'outils 514, le logiciel protégé 2p est modifié pour permettre la mise en oeuvre des principes de protection selon (un des arrangements définis ci-avant.
Lorsque le principe de protection par dissociation temporelle est mis en oeuvre, le logiciel protégé 2p est modifié
en choisissant dans le source du logiciel protégé 2ps - au moins un traitement algorithmique qui lors de (exécution du logiciel protégé 2p, utilise au moins un opérande, et permet de déterminer, au moins en partie, le résultat d'un branchement conditionnel choisi, S - et au moins une portion contenant 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 - au moins la fonctionnalité d'au moins un traitement algorithmique choisi est exécutée au moyen de la seconde partie d'exécution 2peu, - au moins un traitement algorithmique choisi est décomposé de manière que lors de (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 (unité 6, la réalisation dans (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 (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 (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 (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 (ensemble des ordonnancements permettant (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 (exécution du logiciel protégé
2p, les commandes d'étapes sont exécutées selon (ordonnancement C1101s1, - et la seconde partie objet Zpou 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 sont exécutées les étapes déclenchées par la première partie d'exécution 2pes.
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 (exécution du logiciel protégé 2p, définit partiellement (é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 (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é Zp, 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.
Lorsque le principe de protection par fonctions élémentaires est mis en oeuvre, le logiciel protégé 2p est modifié
~ en choisissant dans le source du logiciel protégé 2ps, au moins une étape qui lors de l'exécution du logiciel protégé 2p, réalise la fonctionnalité d'un traitement algorithmique, ~ en modifiant au moins une portion choisie du source du logiciel protégé
2ps, cette modification étant telle que - au moins une étape choisie est décomposée de manière que lors de (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 choisie, des commandes élémentaires sont intégrées dans le source du logiciel protégé 2ps, de manière que lors de (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 (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 (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 Zpos étant telle que lors de (exécution du logiciel protégé
2p, les commandes élémentaires sont exécutées selon fordonnancement 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 (exécution du logiciel protégé Zp, apparaît la seconde partie d'exécution Zpeu au moyen de laquelle sont exécutées les fonctions élémentaires déclenchées par la première partie d'exécution 2pes.
Lorsque le principe de protection par détection et coercition est mis en oeuvre, le logiciel protégé 2p est modifié
~ 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 (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 3 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 (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 3 et/ou à une modification de l'exécution du logiciel protégé 2p.
Pour la mise en oeuvre du principe de protection par détection et coercition utilisant comme caractéristique une variable de mesure de (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 (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 (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 (utilisation de ladite fonctionnalité
et au moins un dépassement de seuil est pris en compte.
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 (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.
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 (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é correspondant à une variable de mesure choisie peut être créditée.
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, ~ 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é
Zps, 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.
Pour la mise en oeuvre du principe de protection par détection et coercition utilisant comme trait d'exécution à respecter, la surveillance de (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:
- 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 (unité 6, - et en transformant les commandes élémentaires en commandes d'instructions correspondant aux instructions utilisées.
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 (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 (exécution du logiciel protégé 2p, (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.
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.
Bien entendu, les principes de protection selon (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 S21 et de modification S22 peuvent être effectués concomitamment de manière à obtenir directement le logiciel protégé 2p.
Lors de la sous-phase de protection aval P2, il est mis en oeuvre après le stade de création S21 du logiciel protégé 2p, et éventuellement après le stade de modification 522, un stade appelé "stade de personnalisation S23". Lors de ce stade de personnalisation 523, 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 (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.
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.
La fig. 110 illustre un exemple de réalisation d'un système 25 permettant de mettre en oeuvre le stade de construction S12 prenant en compte les définitions intervenues au stade de définitions Sll et au cours duquel sont construits les moyens de transfert 12, 13 et éventuellement, les moyens d'exploitation destinés à
(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.
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 (unité vierge 60 pouvant se présenter par exemple, sous la forme d'une imprimante. Dans le cas où
(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.
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.
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 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.
La fig. 150 illustre un exemple de réalisation d'une unité de personnalisation 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.
Cette unité de personnalisation 45 comporte un moyen de lecture et d'écriture 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.
A (issue de cette personnalisation, une unité 6 comporte les informations nécessaires à (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.
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 est répartie la seconde partie objet 2pou du logiciel protégé Zp de manière que leur utilisation conjointe permette 7s 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.
~ De même, après le stade de pré-personnalisation S13 et lors du stade de personnalisation 523, 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 l'unité de personnalisation 45 afin de limiter l'accès à cette partie de la seconde partie objet 2pou. 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 partie de la seconde partie objet 2pou soit accessible uniquement lors de (utilisation conjointe de ces unités de traitement et de mémorisation.
6 recovery by means of recovery means 20, renamed instructions to restore the instructions, namely (identity of storage areas x, y, then (execution by means of the second part of execution 2peu, dependent functions fdl, fda corresponding which ensure the transfer of X, Y data from the processing system data 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 represented respectively by OUT (R (x), X), OUT (R (y), Y), ~ at times t3 to tN_l, (execution of triggering commands with instructions renamed CDCR3 to CDCRN_l, transferring to (unit 6, the instructions renamed R (fd3) to R (fdN_1), triggering in (unit 6 recovery by means of the recovery means 20, instructions, namely fd3 to fdN_l, then (execution by means of the second part of execution 2peu, of dependent functions fd3 to fdN_l, these commands triggering at renamed instructions CDCR3 to CDCRN_1 being represented respectively by TRIG (R (fd3)) to TRIG (R (fdN_1)), ~ and at (instant tN, (execution of the triggering command at setpoint renamed CDCRN transferring to (unit 6, the renamed setpoint R (z) triggering in (unit 6) recovery by means of re-establishment 20, of the set point namely (identity of the storage z, then (execution by means of the second execution part 2peu, of the dependent function fdN ~ ensuring the transfer of the result of algorithmic processing contained in the storage area z of (unit 6 to the data processing system 3, in order to assign it to the variable Z, this command triggers with a renamed setpoint CDCRN being represented by IN (R (z)).
In (example illustrated, the triggering commands with renamed instructions 1 to N are executed successively. It should be noted that two improvements can to be made ~ The first improvement concerns the case where several treatments algorithms are deported in funitë 6 and at least the result of a algorithmic processing is used by another algorithmic processing.
In this case, certain triggering commands with renowned instructions used for transfer, can be optionally deleted.

~ The second improvement aims to opt for a relevant scheduling Triggering commands with renowned instructions among (together orders allowing (execution of the protected software 2p. To this regard, it is best to choose an order scheduling triggering with renowned instructions which temporally dissociates the execution of dependent functions, by inserting, between them, portions of code executed in the data processing system 3 and with or without triggering commands with renowned instructions used for the determination of other data. Figs. 83 and 84 illustrate the principle of such an achievement.
Fig. 83 shows an example of running vulnerable 2v software. In this example, it appears, during the execution of the vulnerable software 2v, in the data processing system 3, the execution of two processing algorithmic leading to the determination of Z and Z ', such as Z E- F (X, Y) and Z' ~ -F '(X', Y ').
Fig. 84 illustrates an example of implementation of the method according to (invention for which the two algorithmic treatments chosen in fig. 83 are deported in unit 6. According to such an example, during (execution in the system of treatment 3 of the first 2pes execution part of the protected software 2p and in presence of (unit 6, it appears, as explained above, (execution of trigger commands with renamed instructions CDCRI to corresponding CDCRN
to the determination of Z and (execution of triggering commands with instructions renamed CDCR'1 to CDCR'M corresponding to the determination of Z '. As illustrated, the triggering commands with renamed instructions CDCRI to CDCRN do not are not executed consecutively, as long as the commands triggers with renowned instructions CDCR'1 to CDCR'M as well as others portions of code are interspersed. In the example, it is thus carried out following provisioning: CDCRI, portion of intercalated code, CDCR'1, CDCRa, portion of interleaved code, CDCR'2, CDCR'3, portion of interleaved code, CDCR'4, CDCR3, CDCR4, ..., CDCRN, CDCR'M.
It should be noted that, during (execution of a portion of the first part 2pes execution of the protected 2p software, the commands triggering at instructions ss names executed in data processing system 3, trigger in (unit 6 restoring the identity of dependent functions corresponding then (execution of these. Thus, it appears that in the presence of (unit 6, this portion is executed correctly and therefore the protected software 2p is fully functional.
Fig. 85 illustrates an example of attempted protected software execution 2p while (unit 6 is absent. In this example, when (execution in the system data processing 3 of the first part 2pes execution of the software protected 2p, at all times, the execution of a triggered command to setpoint rename cannot trigger the restoration of the setpoint nor (execution of the corresponding dependent function, due to (absence of (unit 6. The value to assign to variable Z cannot therefore be determined correctly.
It therefore appears that in the absence of (unit 6, at least one request from a portion of the first 2pes execution part of the protected 2p software, to trigger re-establishment of a setpoint and (execution of a dependent function in (unit 6 cannot be satisfied correctly, so that at least this portion is not executed correctly and therefore the 2p protected software is not fully functional.
Thanks to this principle of protection by renaming, (examination in the software protected 2p from triggered commands with renowned instructions does not allow determine the identity of dependent functions to be performed in (unit 6.
It should be noted that the renaming of the instructions is carried out during the modification of vulnerable software 2v into protected software 2p.
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 commands triggering with different renowned instructions. According to this variant, for at least one treatment algorithmic using dependent functions, this algorithmic processing East broken down into dependent functions which for at least fade out of them is replaced by a function dependent on the same family instead of keeping multiple occurrences of the same dependent function. To this end, orders triggers with renamed instructions are modified to take into account the replacement of dependent functions with dependent functions of the same family. In other words, two dependent functions of the same family have of the different instructions and therefore triggering commands at instructions different renames and, it is not possible, to (examination of the protected software 2p, from detect that the dependent functions called are algorithmically equivalent.
According to a first preferred embodiment of the variant of the principle of protection by renaming, it is defined for at least one dependent function, one family of algorithmically equivalent dependent functions, by concatenating a field of noise at (information defining the functional part of the function dependent on run in (unit 6.
According to a second preferred embodiment of the variant of the principle of protection by renaming, it is defined for at least one dependent function, one family of algorithmically equivalent dependent functions using fields Identification.
According to a preferred embodiment of the principle of protection by renaming, it is defined as a method of renaming instructions a method encryption to encrypt the instructions to transform them into instructions renamed. It is recalled that the renaming of the instructions is carried out in the phase protection P. For this preferred variant, the recovery means 20 are means implementing a decryption method making it possible to decipher the famous instructions and thus restore (identity of functions dependent to be executed in unit 6. These means of recovery are put in works in (unit 6 and can be software or hardware in nature.
means 20 are requested in the use phase U each time once a trigger command with renamed setpoint is executed in the data processing 3 for the purpose of triggering in (unit 6, the execution a dependent function.
In the foregoing description in relation to FIGS. 40 to 92, six principles protection of software have been explained in general independently of each other. The protection process in accordance with (invention, is implemented using the connection protection principle conditional, possibly associated with one or more other protection principles. In the case s7 where the principle of protection by conditional branching is supplemented by the setting using at least one other protection principle, the principle of protection by conditional branching is advantageously supplemented by the principle of protection by temporal dissociation.
And when the principle of protection by temporal dissociation is also put in covers, this can in turn be supplemented by the protection principle through variable and / or the principle of protection by elementary functions.
And when the principle of protection by elementary functions is also put in work, it can in turn be supplemented by the principle of protection through detection and coercion and / or the principle of protection by renaming.
And when the principle of protection by detection and coercion is also put in covers, this can in turn be supplemented by the protection principle through renaming.
According to the preferred embodiment, the principle of protection by conditional connection is supplemented by the principle of protection by dissociation temporal, supplemented by the principle of protection by variable and by the principle of protection by elementary functions, supplemented by the protection principle through detection and coercion, supplemented by the principle of protection by renaming.
If a protection principle is applied, in addition to the protection principle by conditional connection, description made previously must include, to account for its combined implementation, the following changes ~ the notion of vulnerable software must be understood as software vulnerable to the protection principle being described.
Thus, in the case where a protection principle has already been applied to vulnerable software, (expression "vulnerable software" must be interpreted by the reader as the expression "software protected by the principle (s) protection already applied ”;
the concept of protected software must be understood as protected software vis with regard to the protection principle being described. So in the case where a protection principle has already been applied, (expression "software protected "should be interpreted by the reader as (expression" new ss protected software version ”;
~ and the choice or choices made) for the implementation of the principle of protection being described must (wind) take into account the choice (s) carried out) for the implementation of the protection principle (s) already applied (s).
The following description provides a better understanding of the implementation of the protection method according to the invention. This protection process according to (invention involves, as appears more precisely in fig. 100 ~ first, a protection phase P during which software vulnerable 2v is changed to Zp protected software, ~ then, a use phase U during which the protected software 2p is implemented. In this phase of use U
- in the presence of (fi unit and each time that a portion of the first 2pes execution part executed in the processing system data 3 (impose, an imposed functionality is executed in (unit 6, so that this portion is executed correctly and that, therefore, 2p protected software is fully functional, - in the absence of unit 6 and despite the request for a portion of the first part of execution 2pes to execute a functionality in unit 6, this request cannot be honored correctly, so that at least this portion is not executed correctly and that by therefore, 2p protected software is not fully functional, ~ and possibly a recharging phase R during which is credited with at least one additional use of a feature protected by the implementation of the second preferred variant of realization of the principle of protection by detection and coercion using as a characteristic, a measurement variable.
The protection phase P can be broken down into two sub-phases of protection Pl and P2. The first, called upstream protection sub-phase P1, is setting works independently of the vulnerable 2v software to be protected. The second, called PZ downstream protection sub-phase is dependent on vulnerable software 2v to protect.

It should be noted that the upstream protection phases P1 and downstream protection Pa can to be advantageously carried out by two different people or two teams different. For example, the upstream protection sub-phase P1 can be produced by a person or a company ensuring the development of protection of software, while the PZ downstream protection sub-phase can be implemented by one person or company developing software to be protected.
Of course, it is clear that the upstream and downstream protection sub-phases P1 and can also be done by the same person or team.
The upstream protection sub-phase P1 involves several stages S11, ..., Sl, for each of which different tasks or works are to be carried out.
The first stage of this upstream protection sub-phase Pi is called "stage of definitions S11 ". At this stage of definitions Sll ~ he is chosen - the type of (unit 6. By way of illustration, it can be chosen as unit 1 S 6, a smart card reader 8 and the smart card 7 associated with the reader, - And the transfer means 12, 13 intended to be used respectively in the data processing system 3 and in (unit 6, during the use phase U and capable of ensuring the data transfer between the data processing system 3 and (unit 6, ~ and in the case where the protection method according to (invention implements the protection principle by elementary functions, it is also defined - a set of elementary functions whose elementary functions are likely to be performed in (unit 6, - and a set of elementary commands for this set of functions elementary, these elementary commands being likely to be executed in the data processing system 3 and trigger (execution in (unit 6, elementary functions, ~ and in the case where the protection method according to the invention implements the protection by detection and coercion principle, it is also defined - at least one software execution characteristic, capable of being at least partially monitored in unit 6, - at least one criterion to respect for at least one characteristic software execution, - detection means 17 to be implemented in (unit 6 and making it possible to detect that at least one performance characteristic of software does not meet at least one associated criterion, - and coercion means 18 to be implemented in (unit 6 and to inform the data processing system 3 and / or modify (software execution, when at least one criterion is not met, ~ and in the case where the protection method according to (invention implements the protection principle by detection and coercion using as characteristic a measurement variable of software execution it's also defined - as a feature of software execution likely to be monitored, a variable measuring the use of a functionality software, - as a criterion to be respected, at least one threshold associated with each measurement variable, - and updating means making it possible to update at least one measurement variable, ~ and in the case where the protection method according to (invention implements a first preferred alternative embodiment of the principle of protection by detection and coercion using a variable of measurement of (software execution, it is also defined - for at least one measurement variable, several associated thresholds, - and different means of coercion corresponding to each of these thresholds, ~ and in the case where the protection method according to (invention implements a second preferred alternative embodiment of the principle of protection by detection and coercion using a variable of measurement of (software execution, it is also defined means of reload to credit at least one use additional for at least one software functionality monitored by 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 characteristic of a software usage profile, it is also defined - as a feature of software execution likely to be monitored, a software usage profile, - and as a criterion to be respected, at least one performance trait of software, ~ and in the case where the protection method according to (invention implements the protection by detection and coercion principle using as a trait of execution to be observed, monitoring of (sequence of execution, it is also defined - a set of instructions whose instructions are likely to be performed in 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 trigger in (unit 6 the execution of instructions, - as a usage profile, (sequence of instructions, - as an execution feature, a desired sequence for (execution of instructions, - as detection means 17, means making it possible to detect that (sequence of instructions does not correspond to that desired, - And as means of coercion 18, means allowing to inform 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 (invention implements a preferred embodiment of the principle of protection by detection and coercion using as an execution trait to be respected, surveillance of the execution sequence, it is also defined - as a set of instructions, a set of instructions of which at least some instructions work on registers and use at least an 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 (execution instructions and having corresponding bit fields at:
0 an identification field of (CII instruction, 0 and for each operand of (instruction * a CDk flag field, * and a CIPk planned identification field of (operand, - for each register belonging to the operating resources and used by the instruction set, a CIG ~ generated identification field in which is automatically memorized (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 field CDk flag (requires, to control the equality between the field generated identification CIG ~ corresponding to the register used by this operand, and the expected identification field CIPk of (origin of this operand, - And as means of coercion 18, means making it possible to modify the result of the instructions, if at least one of the ties checked is false, ~ and in the case where the protection method according to (invention implements the protection principle by renaming, it is also defined - as a triggering command, a basic command or an instruction command, - as a dependent function, an elementary function or a instruction, - as an instruction, at least one argument for an order triggering, corresponding at least in part to (information transmitted by the data processing system 3 to (unit 6, in order to trigger the execution of the corresponding dependent function, - a method of renaming the instructions allowing renaming of the instructions in order to obtain triggering orders with instructions renamed, - and recovery means 20 intended to be implemented in (unit 6 during the use phase U, and allowing to find the dependent function to be executed, from the renamed setpoint, ~ and in the case where the protection method according to the invention implements a variant of the principle of protection by renaming, it is also defined for at least one dependent function, a family of functions algorithmically equivalent dependent, but triggered by triggering commands whose renamed instructions are different, ~ and in the case where the protection method according to the invention implements any of the preferred embodiments of the variant of the principle of protection by renaming, it is also defined for at least one function dependent, a family of algorithmically dependent functions equivalent - by concatenating a noise field to (information defining the part of the dependent function to be executed in (unit 6, - or by using the identification field of (CII instruction and the expected CIPk identification fields of the operands, ~ and in the case where the protection method according to the invention implements a preferred variant of the renaming protection principle it is also 3 0 defined - as a method of renaming instructions, a method of encryption to encrypt the instructions, - And as recovery means 20, means putting in uses a decryption method to decipher the instructions renamed and thus restore (identity of functions dependent on execute in (unit 6.
During the upstream protection sub-phase, the definition stage Sll is followed by a stage called "construction stage S12". At such a stage 512, are build them transfer means 12, 13 and possibly the operating means corresponding to the definitions of definition stage Sll.
During this Slz construction stage, it is therefore carried out:
~ the construction of the transfer means 12, 13 allowing, during the U use phase, data transfer between the processing system data 3 and (unit 6, ~ and when the principle of protection by elementary functions is also placed implementation, the construction of operating resources allowing (unit 6, during the use phase U of performing the elementary functions the set of elementary functions, ~ and when the principle of protection by detection and coercion is also placed at work, at construction - operating means allowing (unit 6, during the phase of use U to also use the detection means 17 and the coercion means 18, - and possibly operating resources allowing (unit 6, at during the use phase U to also implement the means update, - and possibly operating resources allowing (unit 6, at during the recharging phase to also implement the reloading means, - and possibly operating resources also allowing (unit 6, during the use phase U to execute the instructions of the game instruction, ~ and when the principle of protection by renaming is also implemented, the construction of operating resources allowing (unit 6, during of the use phase U to also implement the means of recovery.
The construction of the operating resources is carried out in a conventional manner, through (intermediary of a program development unit taking into account the definitions at the definition stage Sll. Such a unit is described in the continuation of the description in fig. 110.
During the upstream protection sub-phase Pl, the construction stage S12 can be followed by a stage called "S13 pre-personalization stage". During this stage of pre-personalization S13 at least part of the transfer means 13 and / or the operating resources are loaded into at least one blank unit 60 in view obtain at least one pre-personalized unit 66. It should be noted that part of operating resources, once transferred to a pre-personalized unit 66, is more directly accessible from (outside of this pre-personalized unit 66.
The transfer of operating resources to a blank unit 60 can be carried out through through a suitable pre-personalization unit, which is described in the continuation of the description in fig. 120. In the case of a pre-custom 66, consisting of a smart card 7 and its reader 8, the pre-personalization born concerns only the smart card 7.
During the upstream protection sub-phase P1, it can be implemented, after the definition stage Sll and, possibly after the construction stage Sl ~, a stadium called "tool making stage S14". During this stage of preparation of tools S14 tools are made to assist in the generation of software protected or automate software protection. Such tools allow ~ help choose or choose automatically in vulnerable software 2v to protect - the conditional branch (es) whose functionality is likely to be deported to (unit 6, - the portion (s) liable to be modified, - and when the principle of protection by temporal dissociation is also implemented, the algorithmic processing (s) likely to be broken down into deportable stages in (unit 6, - and when the principle of protection by variable is also implemented work, the variable or variables likely to be deported to (unit 6, - and when the principle of protection by elementary functions is also implemented, the algorithmic processing (s) likely to be broken down into elementary functions that can be deported in (unit 6, - and when the principle of protection by detection and coercion is also implemented, the performance characteristic (s) to be monitored and, possibly, the algorithmic processing (s) likely to be broken down into remote instructions in (unit 6, - and when the principle of protection by renaming is also implemented work, the algorithmic treatment (s) likely to be broken down into deported dependent functions in (unit 6 and for which the instructions of the triggering commands can be renamed, ~ and, possibly, to help generate protected software or automate software protection. ' These different tools can be produced independently or in combination and each tool can take various forms, such as preprocessor, assembler, compiler, etc.
The upstream protection sub-phase P1 is followed by a sub-phase of P2 downstream protection dependent on the vulnerable 2v software to be protected. This sub-phase P2 downstream protection also involves several stages. The first Stadium corresponding to the implementation of the protection principle by connection conditional is called "creation stage S21". At this stage of creation 521 he is used the choices made at the definition stage Sll. A (using these choices and possibly of tools built at the tool making stage 514, it is created the protected software 2p ~ by choosing in the source of the vulnerable software 2vs, at least one conditional connection, ~ by choosing at least a portion of the source of the vulnerable 2vs software containing at least one selected conditional branch, ~ by producing the source of the 2ps protected software from the source of the software vulnerable 2vs, by modifying at least a selected portion of the source of the vulnerable 2vs software to get at least a modified portion of the source of the protected 2ps software, this modification being such as during running 2p protected software - a first part of execution 2pes is executed in the system of data processing 3 and a second part of execution 2peu is executed in a unit 6, obtained from (blank unit 60 after loading information, - and the second part of execution 2peu executes at least the functionality of at least one conditional branch chosen and the layout of the data processing system 3, information allowing the first part of Zpes execution to continue its execution at the chosen location, ~ and by producing - a first part 2pos object of the protected software 2p, from the source of the 2ps protected software, this first part 2pos object being such as when running the 2p protected software, a first part of execution 2pes which is executed in the system of data processing 3 and at least a portion of which takes into account at least one conditional branch chosen is executed in unit 6, - 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 when (running 2p protected software, the second appears 2-inch execution part by means of which each connection selected conditional is executed.
Of course, the principle of protection by conditional connection according to the invention can be applied directly when developing a new software without requiring prior implementation of vulnerable 2v software.
Of this way it is obtained directly 2p protected software.
For the implementation of a preferred embodiment of the protection principle through conditional connection, 2p protected software is modified ~ by choosing, in the source of the 2ps protected software at least a 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 (execution of the software protected.
2p, the overall functionality of at least one selected series of connections conditional is executed by means of the second execution part 2peu, in (unit 6, ~ and by producing - the first part 2pos object of the protected software 2p, this first object part 2pos being such that during (execution of the protected software 2p, the functionality of at least one selected series of connections conditional is executed in (unit 6, - and the second object part 2pou of the protected software 2p, this second object part 2pou being such that, after loading in unit 6 and during (execution of the protected software 2p, appears the second part 2-bit execution by means of which the overall functionality of least a selected series of conditional branches is executed.
During the downstream protection sub-phase P ~, and when at least one other principle protection is applied in addition to the connection protection principle conditional, a "modification stage S ~ 2" is implemented. During this stage of modification 522, it is used the definitions intervened at the stage of definitions Sl ~
A (using these definitions and possibly tools built at the stage of confection tools 514, the protected 2p software is modified to allow the implementation work of protection principles according to (one of the arrangements defined above.
When the principle of protection by temporal dissociation is implemented artwork, protected 2p software is modified by choosing in the source of the protected software 2ps - at least one algorithmic processing which during (execution of the 2p protected software, uses at least one operand, and allows determine, at least in part, the result of a connection conditional chosen, S - and at least one portion containing at least one treatment chosen algorithmic, ~ by modifying at least a selected portion of the source of the protected software 2ps, this modification being such that - at least the functionality of at least one algorithmic processing chosen is executed by means of the second execution part 2peu, - at least one chosen algorithmic processing is broken down so that during (execution of the protected software 2p appear by means of the second part of execution 2peu, several distinct stages, to know ~ the provision of at least one operand for (unit 6, the realization in (unit 6) of the functionality of the treatment algorithmic on at least this operand, and possibly, the provision of at least one result, by (unit 6 for the data processing system 3, - for at least one chosen algorithmic processing, commands steps are defined so that when (running the software protected 2p, each step command is executed by the first 2pes execution part and triggers in (unit 6, execution at means of the second part of execution 2 little, of a step, - and a sequencing of the orders of stages is chosen from (set of schedules allowing (software execution protected 2p, ~ and by producing - the first part 2pos object of the protected software 2p, this first object part 2pos being such that during (execution of the protected software 2p, the stage commands are executed according to (scheduling C1101s1, - and the second object part Zpou of the protected software 2p, this second object part 2pou being such that, after loading in unit 6 and during of the execution of the protected software 2p, appears the second part 2-minute execution by means of which the steps are carried out triggered by the first part of execution 2pes.
When the variable protection principle is implemented, the software protected 2p is modified ~ by choosing at least one variable used in at least one treatment chosen algorithm, which when (running 2p protected software, defines partially (state of protected software 2p, ~ by modifying at least a selected portion of the source of the protected software 2ps, this modification being such that during (execution of the protected software 2p, at least one chosen variable or at least one copy of chosen variable resides in unit 6, ~ and by producing - the first part 2pos object of the protected software Zp, this first object part 2pos being such that during the execution of the protected software 2p, at least a portion of the first part of 2pes execution takes also take into account that at least one variable or at least one copy of variable resides in unit 6, - and the second object part 2pou of the protected software 2p, this second object part 2pou being such that, after loading in unit 6 and during of the execution of the protected software 2p, appears the second part of execution 2 little by means of which at least one variable chosen, or at least one copy of the chosen variable also resides in unit 6.
When the principle of protection by elementary functions is implemented artwork, protected 2p software is modified ~ by choosing at least one step in the source of the 2ps protected software which when running 2p protected software, realizes the functionality of a algorithmic processing, ~ by modifying at least a selected portion of the source of the protected software 2ps, this modification being such that - at least one chosen step is broken down so that during (execution of the protected software 2p, this step is executed by means of the second part of execution 2peu, using functions elementary - for at least one chosen stage, elementary commands are integrated into the source of the 2ps protected software, so that when (execution of protected 2p software, each elementary command is executed by the first 2pes execution part and triggers in (unit 6, execution by means of the second execution part 2peu, of an elementary function, - and a scheduling of elementary orders is chosen from all the schedules allowing (software execution protected 2p, ~ and by producing - the first part 2pos object of the protected software 2p, this first Zpos object part being such that during (execution of protected software 2p, elementary commands are executed according to chosen provisioning, - and the second object part 2pou of the protected software 2p also containing the operating means, this second object part 2pou being such that after loading in unit 6 and when (running the software protected Zp, appears the second part of execution Zpeu by means of which are executed the elementary functions triggered by the first part of execution 2pes.
When the principle of protection by detection and coercion is implemented artwork, protected 2p software is modified ~ by choosing at least one software execution characteristic â
monitor, among the performance characteristics likely to be monitored, ~ by choosing at least one criterion to respect for at least one selected software execution characteristic, ~ by choosing in the source of the protected 2ps software, functions elementary for which at least one performance characteristic of software chosen, is to be monitored, ~ by modifying at least a selected portion of the source of the protected software 2ps, this modification being such that during (execution of the protected software 2p, at least one selected performance characteristic is monitored at means of the second part of execution 2peu, and the non respect of a criterion results in information from the data processing system 3 and / or a modification of the execution of the protected software 2p, ~ and by producing the second object part 2pou of the protected software 2p containing the operating means also implementing the means of detection 17 and the coercion means 18, this second object part 2pou being such that, after loading in unit 6 and during (execution of the 2p protected software, at least one software execution characteristic is monitored and non-compliance with a criterion results in information to the data processing system 3 and / or a modification of the execution protected software 2p.
For the implementation of the principle of protection by detection and coercion using as characteristic a measurement variable of (execution of software, the protected 2p software is changed ~ by choosing as software execution feature to monitor, at least one measurement variable of (use of a software functionality, ~ by choosing - at least one feature of the 2p protected software whose use is likely to be monitored using a measurement variable, - at least one measurement variable used to quantify (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 method for updating 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 2ps, this modification being such that, during the execution of the software protected 2p, the measurement variable is updated using the second 2-bit execution part, depending on (use of said functionality and at least one threshold crossing is taken into account.
For the implementation of a first preferred alternative embodiment of the protection principle by detection and coercion using, as feature, a measurement variable, the protected 2p software is modified ~ by choosing in the source of the protected 2ps software, at least one variable of selected measurement with which several thresholds must be associated corresponding to different limits on the use of the functionality, ~ by choosing at least two thresholds associated with the measurement variable selected, ~ and by modifying at least a selected portion of the source of the protected software 2ps, this modification being such that, during (execution of the software protected 2p, the overruns of the various thresholds are taken into account, at means of the second part of execution 2peu, differently.
For the implementation of a second preferred embodiment of the protection principle by detection and coercion using as characteristic, a measurement variable, 2p protected software is modified ~ by choosing in the source of the protected 2ps software, at least one variable of measurement chosen to limit (use of a functionality to which must be credited for at least one additional use, ~ and by modifying at least one selected portion, this modification being such that in a so-called recharging phase, at least one use additional of at least one functionality corresponding to a variable selected measurement can be credited.
For the implementation of the principle of protection by detection and coercion using as a feature, a software usage profile, the protected software 2p is changed ~ by choosing as software execution feature to monitor at least one software usage profile, ~ by choosing at least one line of execution than at least one profile of use chosen must respect, ~ and by modifying at least a selected portion of the source of the protected software Zps, this modification being such that, during the execution of the software protected 2p, the second part of execution 2peu respects all the features of execution chosen.
For the implementation of the principle of protection by detection and coercion using as a performance line to be respected, monitoring of (concatenation execution, 2p protected software is modified ~ by modifying at least a selected portion of the source of the protected software 2 ps:
- by transforming elementary functions into instructions, - by specifying the sequence that at least some must respect instructions when executed in (unit 6, - and by transforming elementary orders into orders instructions corresponding to the instructions used.
When the renaming protection principle is implemented, the software 2p is changed ~ by choosing commands from the source of the protected 2ps software, triggering, ~ by modifying at least a selected portion of the source of the 2ps protected software by renaming the instructions for the selected trigger commands, in order to to conceal (identity of the corresponding dependent functions, ~ and by producing - the first part 2pos object 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 renowned instructions are executed - and the second object part 2pou of the protected 2p software containing the operating means also using the means of recovery 20, this second object part 2pou being such that, after loading in unit 6 and during (execution of protected software 2p, (identity of dependent functions whose execution is triggered by the first part of execution 2pes is restored by means of the second part of execution 2peu, and the dependent functions are executed by means of the second execution part 2peu.
For the implementation of a variant of the principle of protection by renaming, protected 2p software is modified ~ by choosing at least one protected source of 2ps software triggering command with renamed setpoint, ~ and by modifying at least a selected portion of the source of the protected software 2ps by replacing at least the renamed setpoint of an order triggering at a renamed setpoint chosen, by another setpoint fame, triggering a function dependent on the same family.
Of course, the protection principles according to (invention can be applied directly when developing new software without require the prior production of intermediate protected software. In this way, the stages creation S21 and modification S22 can be carried out simultaneously of so as to directly obtain the protected software 2p.
During the downstream protection sub-phase P2, it is implemented after the stage of creation S21 of the protected software 2p, and possibly after the stage of change 522, a stage called "personalization stage S23". During this stage of personalization 523, the second part object 2pou possibly containing the operating means is loaded into at least one blank unit 60, with a view to obtain at least one unit 6, or part of the second object part 2pou possibly containing the operating resources is loaded into at least a pre-personalized unit 66, in order to obtain at least one unit 6. The loading of this personalization information makes it possible to make operational at least a unit 6. It should be noted that some of this information, once transferred in unit 6, is not directly accessible from (outside this unit 6. The transfer personalization information in a blank unit 60 or a pre unit custom 66 can be achieved through a personalization adapted 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 customization does concerns only the smart card 7.
For the implementation of the protection phase P, different means techniques are described more precisely in relation to FIGS. 110, 120, 130, 140 and 150.
Fig. 110 illustrates an exemplary embodiment of a system 25 making it possible to implement the S12 construction stage taking into account the definitions intervened at the definition stage Sll and during which the means 12, 13 and possibly the operating resources intended for (unit 6.
Such a system 25 includes a program or station development unit of work conventionally presented in the form of a computer comprising a central unit, a screen, keyboard-mouse peripherals, and comprising, in particular, the following programs: file editors, assemblers, pre-processors, compilers, interpreters, debuggers and linkers.
Fig. 120 illustrates an exemplary embodiment of a pre-unit personalization 30 making it possible to at least partially load the means of transfer 13 and / or the operating means in at least one blank unit 60 in view to obtain at least one pre-personalized unit 66. This pre-personalized unit personalization 30 includes a read and write means 31 allowing befor-electrically customize a blank unit 60 so as to obtain a pre-personalized unit 66 in which the transfer means 13 and / or were loaded. The pre-personalization unit 30 can also include physical personalization means 32 of (blank unit 60 up for example, in the form of a printer. In the case where (unit 6 is consisting of a smart card 7 and its reader 8, the pre-personalization concerned usually only the smart card 7.
Fig. 130 illustrates an embodiment of a system 35 allowing make the tools to help generate protected software or automate software protection. Such a system 35 includes a unit of development of program or workstation presenting itself conventionally under the shape of a computer comprising a central unit, a screen, peripheral devices of the keyboard-mouse type, and comprising, in particular, the following programs:
publishers files, assemblers, pre-processors, compilers, interpreters, debuggers and link publishers.
Fig. 140 illustrates an exemplary embodiment of a system 40 making it possible to directly create 2p protected software or modify vulnerable software 2v in to obtain protected software 2p. Such a system 40 includes a unit of development of program or workstation presenting itself conventionally under the shape of a computer comprising a central unit, a screen, peripheral devices of the keyboard-mouse type, and comprising, in particular, the following programs:
publishers files, assemblers, pre-processors, compilers, interpreters, debuggers and linkers, as well as tools to help generate software protected or automate software protection.
Fig. 150 illustrates an exemplary embodiment of a personalization unit allowing to load the second object part 2pou in at least one unit virgin 60 in order to obtain at least one unit 6 or part of the second object part 2pou in at least one pre-personalized unit 66 in order to obtain at least one unit 6.
This personalization unit 45 includes a means of reading and writing for electrically personalizing at least one blank unit 60 or at least one pre-personalized unit 66, so as to obtain at least one unit 6.
A (from this personalization, a unit 6 contains the information required to (execution of the protected software 2p. The personalization unit 45 can also include physical personalization means 47 for at least one unit 6 can be for example, in the form of a printer. In the case or a unit 6 is constituted by a smart card 7 and its reader 8, the personalization generally only concerns the smart card 7.
The protection method of the invention can be implemented with the following improvements ~ Several treatment units can be used together and of storage in which the second part object 2pou is distributed protected software Zp so that their joint use allows 7s to run protected 2p software, the absence of at least one of these processing and storage preventing the use of protected software 2p.
~ Similarly, after the S13 pre-personalization stage and during the customization 523, the part of the second part object 2 can be necessary to transform the pre-personalized unit 66 into a unit 6 can be contained in a processing and storage unit used by the personalization unit 45 in order to limit access to this part of the second part object 2pou. Of course, this part of the second part 2pou object can be distributed in several processing units and memorization so that this part of the second object part 2pou only accessible during (joint use of these processing and memorization.

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:
.fwdarw. dans une phase de protection (P):
.cndot. à créer un logiciel protégé (2p) - en choisissant dans le source du logiciel vulnérable (2vs), au moins un branchement conditionnel, - en choisissant au moins une portion du source du logiciel vulnérable (2vs) contenant au moins un branchement conditionnel 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, ~ et la seconde partie d'exécution (2peu) exécute au moins la fonctionnalité d'au moins un branchement conditionnel 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, - 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 qu'au moins un branchement conditionnel choisi est exécuté dans l'unité (6), ~ 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 chaque branchement conditionnel choisi est exécuté, .cndot. et à charger la seconde partie objet (2pou) dans l'unité vierge (60), en vue d'obtenir l'unité (6), .fwdarw. et dans une phase d'utilisation (U) au cours de laquelle est exécuté
le logiciel protégé (2p):
.cndot. 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'un branchement conditionnel 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, .cndot. 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.
1 - Method 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 software vulnerable (2v) operating on a data processing system (3), characterized in what he is:
.fwdarw. in a protection phase (P):
.cndot. create protected software (2p) - by choosing in the source of the vulnerable software (2vs), at least one conditional connection, - by choosing at least a portion of the source of the vulnerable software (2vs) containing at least one selected conditional branch, - by producing 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 vulnerable software (2vs) to get at least a portion modified from the source of the protected software (2ps), this modification being such as when running protected software (2p):
~ a first part of execution (2pes) is executed in the data processing system (3) and a second part of execution (2peu) is executed in a unit (6), obtained at from the blank unit (60) after loading information, ~ and the second part of execution (2peu) executes at least the functionality of at least one conditional branch chosen and makes available to the data processing system (3) a information allowing the first part of execution (2pes) to continue its execution at the chosen location, - and by producing:
~ a first object part (2pos) of the protected software (2p), from 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 execution part (2pes) appears which is executed in the data processing system (3) and of which at least one portion takes into account that at least one connection chosen conditional is executed in unit (6), ~ 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 each conditional branch chosen is executed, .cndot. and to load the second object part (2pou) into the blank unit (60), in sight to obtain unity (6), .fwdarw. and in a use phase (U) during which is executed The software protected (2p):
.cndot. in the presence of the unit (6) and each time that a portion of the first execution part (2pes) requires it, to execute the functionality of a conditional connection in the unit (6), so that this portion is executed correctly and therefore the protected software (2p) is fully functional, .cndot. and in the absence of the unit (6) and despite the request for a portion of the first part execution (2pes) to execute the functionality of a conditional connection in unit (6), not being 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 not fully functional.
2 - Procédé selon la revendication 1, 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.
2 - Method according to claim 1, 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 selected conditional branching series, - by modifying at least a selected portion of the software source protected (2ps), this modification being such that during the execution of the protected software (2p), the overall functionality of at least one series of conditional branching is executed by means of the second part of execution (2peu), in unit (6), - and by 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 series chosen conditional branching 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 unit (6) and when running protected software (2p), appears the second part of execution (2peu) by means of which the overall functionality of at least one selected set of conditional branching is executed.
3 - Procédé selon la revendication 1 ou 2, caractérisé en ce qu'il consiste:
~ dans la phase de protection (P):
.cndot. à modifier le logiciel protégé (2p):
- en choisissant dans le source du logiciel protégé (2ps):
~ au moins un traitement algorithmique qui lors de l'exécution du logiciel protégé (2p), utilise au moins un opérande, et permet de déterminer, au moins en partie, le résultat d'un branchement conditionnel choisi, ~ et au moins une portion contenant 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:
au moins la fonctionnalité d'au moins un traitement algorithmique choisi est exécutée au moyen de la seconde partie d'exécution (2peu), ~ 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 dans 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:
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'étapes sont exécutées selon l'ordonnancement choisi, 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 sont exécutées les étapes 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 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, .cndot. 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.
3 - Method according to claim 1 or 2, characterized in that it consists:
~ in the protection phase (P):
.cndot. to modify the protected software (2p):
- by choosing in the source of the protected software (2ps):
~ at least one algorithmic processing which during the execution of the protected software (2p), uses at least one operand, and allows determine, at least in part, the result of a connection conditional chosen, ~ and at least one portion containing at least one treatment chosen algorithmic, - by modifying at least a selected portion of the software source protected (2ps), this modification being such that:
at least the functionality of at least one algorithmic processing chosen is executed by means of the second part of execution (2peu) ~ at least one chosen algorithmic processing is broken down by so that when running 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 unit (6), ~ the realization in unit (6) of the functionality of the algorithmic processing on at least this operand, ~ and possibly, the provision of at least one result, by unit (6) for the processing system data (3), for at least one chosen algorithmic processing, commands steps are defined so that when running the protected software (2p), each step command is executed by the first part of execution (2pes) and triggers in the unit (6), execution by means of the second execution part (2peu), of a stage, and a sequencing of the step commands is chosen from all the orders allowing the execution of the protected software (2p), - and by 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), step commands are executed depending on the order chosen, and the second object part (2pou) of the protected software (2p), this second object part (2pou) being such that, after loading in unit (6) and when running protected software (2p), appears the second part of execution (2peu) by means of which are executed the steps triggered by the first part execution (2pes), and in the use phase (U):
~ in the presence of the unit (6) and each time a step command contained in a portion of the first part of execution (2pes) requires it, to execute the corresponding step in unit (6), so that this portion is executed correctly and therefore the software protected (2p) is fully functional, .cndot. and in the absence of the unit (6), despite the request for a portion of the first part of execution (2pes) to trigger the execution of a step in unit (6), not being able to respond correctly to this request, so that at least this portion is not executed correctly and that, by Consequently, the protected software (2p) is not fully functional.
4 - Procédé selon la revendication 3, caractérisé en ce qu'il consiste:
dans la phase de protection (P):
.cndot. à 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 (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 choisie réside aussi dans l'unité (6), et dans la phase d'utilisation (U):
.cndot. 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 (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, .cndot. et en (absence de (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.
4 - Method according to claim 3, characterized in that it consists:
in the protection phase (P):
.cndot. to modify the protected software (2p):
- by choosing at least one variable used in at least one chosen algorithmic processing, which when running the software protected (2p), partially defines the state of the protected software (2p), - by modifying at least a selected portion of the software source protected (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 selected variable resides in (unit (6), - and by 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), at least a portion of the first part of execution (2pes) also takes into account that at least one variable or at least one copy of variable resides in unit (6), and the second object part (2pou) of the protected software (2p), this second object part (2pou) being such that, after loading in unit (6) and when running protected software (2p), appears the second part of execution (2peu) by means of which at minus one chosen variable, or at least one copy of variable chosen also resides in unit (6), and in the use phase (U):
.cndot. in the presence of the unit (6) each time that a portion of the first part of execution (2pes) requires it, to use a variable or a copy of variable residing in (unit (6), so this portion is executed correctly and therefore the protected software (2p) is fully functional, .cndot. and in (absence of (unit (6), despite the request for a portion of the first part of execution (2pes) to use a variable or a copy of variable residing in unit (6), unable 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.
- Procédé selon la revendication 3, caractérisé en ce qu'il consiste ~ dans la phase de protection (P):
.cndot. à 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, .cndot. à 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, .cndot. et à modifier le logiciel protégé (2p):
- en choisissant dans le source du logiciel protégé (2ps), au moins une étape qui lors de l'exécution du logiciel protégé (2p), réalise la fonctionnalité d'un traitement algorithmique, - en modifiant au moins une portion choisie du source du logiciel protégé (2ps), cette modification étant telle que au moins une étape choisie est décomposée de manière que lors de (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 choisie, 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 (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), les commandes élémentaires sont exécutées 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 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) .cndot. 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) (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, .cndot. 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 élémentaire dans (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.
- Method according to claim 3, characterized in that it consists ~ in the protection phase (P):
.cndot. to define:
- a set of elementary functions whose elementary functions are likely to be executed in unit (6), - and a set of elementary commands for this set of functions elementary, these elementary commands being likely to be executed in the data processing system (3) and trigger the execution in unit (6) of elementary functions, .cndot. to build operating resources allowing the unit (6), to run the basic functions of said game, the execution of these functions elementary being triggered by execution in the processing system data (3), basic commands, .cndot. and modify the protected software (2p):
- by choosing in the source of the protected software (2ps), at least one step which during the execution of the protected software (2p), realizes the functionality of algorithmic processing, - by modifying at least a selected portion of the software source protected (2ps), this modification being such that at least one chosen step is broken down so that when (execution of protected software (2p), this step is executed at means of the second part of execution (2peu), using elementary functions, ~ for at least one chosen step, elementary commands are integrated into the source of the protected software (2ps), so that when running the protected software (2p), each command elementary is executed by the first part of execution (2pes) and triggers in (unit (6), execution by means of the second execution part (2peu), of an elementary function, ~ and a scheduling of elementary orders is chosen among all the orders allowing the execution of the protected software (2p), - and by 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), basic commands are executed depending on the order chosen, ~ and the second object part (2pou) of the protected software (2p) also containing the operating resources, this second part object (2pou) being such that, after loading in the unit (6) and when running the protected software (2p), the second appears execution part (2peu) by means of which the elementary functions triggered by the first part execution (2pes), ~ and in the use phase (U) .cndot. in the presence of the unit (6) and each time a command elementary contained in a portion of the first part of execution (2pes) (requires, to execute the corresponding elementary function in unit (6), so this portion is executed correctly and, therefore, the protected software (2p) is fully functional, .cndot. and in the absence of the unit (6), despite the request for a portion of the first part of execution (2pes), to trigger the execution of a function elementary in (unit (6), not being 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.
6 - Procédé selon la revendication 5, caractérisé en ce qu'il consiste dans la phase de protection (P):
.cndot. à 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é, .cndot. à 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), .cndot. et à modifier le logiciel protégé (2p):
- 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 (3) 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 (3) et/ou à une modification de l'exécution du logiciel protégé
(2P), .fwdarw. et dans la phase d'utilisation (U):
.cndot. 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é.
6 - Method according to claim 5, characterized in that it consists in the protection phase (P):
.cndot. to define :
- at least one software execution characteristic, capable of being at least partially monitored in the unit (6), - at least one criterion to respect for at least one characteristic software execution, - detection means (17) to be implemented in the unit (6) and making it possible to detect that at least one performance characteristic of software does not meet at least one associated criterion, - and coercion means (18) to be implemented in the unit (6) and to inform the data processing system (3) and / or modify the execution of a software, when at least one criterion is not met, .cndot. to build the operating resources allowing the unit (6), to to put also use the detection means (17) and the coercion means (18) .cndot. and modify the protected software (2p):
- by choosing at least one software execution characteristic to monitor, among the performance characteristics likely to be monitored, - by choosing at least one criterion to respect for at least one selected software execution characteristic, - by choosing in the source of the protected software (2ps), functions elementary for which at least one performance characteristic of software chosen, is to be monitored, - by modifying at least a selected portion of the software source protected (2ps), this modification being such that during the execution of the protected software (2p), at least one execution characteristic chosen is monitored by means of the second part of execution (2peu), and the non-compliance with a criterion results in information to the data processing (3) and / or a modification of the execution of the protected software (2p), - and by producing the second object part (2pou) of the protected software (2p) containing the operating resources also implementing the detection means (17) and coercion means (18), this second object part (2pou) being such that, after loading in the unit (6) and when running the protected software (2p), at least one software execution characteristic is monitored and non-compliance of a criterion leads to information from the processing system data (3) and / or a modification of the execution of the protected software (2P) .fwdarw. and in the use phase (U):
.cndot. in the presence of the unit (6):
- as long as all the criteria corresponding to all the characteristics monitored execution of all modified portions of the software protected (2p) are respected, to allow nominal operation of these portions of the protected software (2p) and therefore allow the nominal operation of protected software (2p), - and if at least one of the criteria corresponding to a characteristic supervised execution of a portion of the protected software (2p) is not complied with, to inform the data processing system (3) and / or to modify the operation of the portion of protected software (2p), so that the operation of the protected software (2p) is modified.
7 - Procédé selon la revendication 6, pour limiter l'utilisation d'un logiciel protégé (2p), caractérisé en ce qu'il consiste:
.fwdarw. dans la phase de protection (P):
.cndot. à 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, .cndot. à construire les moyens d'exploitation permettant à l'unité (6) de mettre aussi en oeuvre les moyens d'actualisation, .cndot. et à modifier le logiciel protégé (2p):
- 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, .fwdarw. et dans la phase d'utilisation (U), en présence de l'unité (6), 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 (3) etlou à
modifier le fonctionnement de la portion du logiciel protégé (2p), de sorte que le fonctionnement du logiciel protégé (2p) est modifié.
7 - Method according to claim 6, to limit the use of software protected (2p), characterized in that it consists:
.fwdarw. in the protection phase (P):
.cndot. to define:
- as a feature of software execution likely to be monitored, a variable measuring the use of a functionality software, - as a criterion to be respected, at least one threshold associated with each measurement variable, - and updating means making it possible to update at least one measurement variable, .cndot. to build the operating resources allowing the unit (6) to to put also implement the means of updating, .cndot. and modify the protected software (2p):
- by choosing as a software execution characteristic to monitor, at least one variable measuring the use of a software functionality, - by choosing:
~ at least one feature of the protected software (2p) including usage is likely to be monitored by a variable of measurement, ~ at least one measurement variable used 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 method for updating a measurement variable chosen according to the use of said functionality, - and by modifying at least a selected portion of the software source protected (2ps), this modification being such that, during the execution of the protected software (2p), the measurement variable is updated using the second part of execution (2peu), depending on the use of said functionality and at least one threshold crossing is taken into account account, .fwdarw. and in the use phase (U), in the presence of the unit (6), and in case it at least one threshold violation corresponding to at least one is detected usage limit, to inform the data processing system (3) and to modify the operation of the protected software portion (2p), so that the operation of the protected software (2p) is modified.
8 - Procédé selon la revendication 7, caractérisé en ce qu'il consiste .fwdarw. dans la phase de protection (P):
.cndot. à 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, .cndot. et à modifier le logiciel protégé (2p):
- 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, .fwdarw. et dans la phase d'utilisation (U):
.cndot. 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).
8 - Method according to claim 7, characterized in that it consists .fwdarw. in the protection phase (P):
.cndot. to define:
- for at least one measurement variable, several associated thresholds, - and different means of coercion corresponding to each of these thresholds, .cndot. and modify the protected software (2p):
- by choosing in the source of the protected software (2ps), at least one chosen measurement variable to which several must be associated thresholds corresponding to different limits of use of the feature - by choosing at least two thresholds associated with the measurement variable selected, - and by modifying at least a selected portion of the software source protected (2ps), this modification being such that, during the execution of the protected software (2p), the overruns of the various thresholds are taken into account account, by means of the second part of execution (2peu), so different, .fwdarw. and in the use phase (U):
.cndot. in the presence of the unit (6):
- in the event that a first threshold is exceeded, at order the protected software (2p) to no longer use the functionality correspondingly, - and in the event that a second threshold is exceeded, at render the corresponding functionality and / or at least one inoperative portion of the protected software (2p).
9 - Procédé selon la revendication 7 ou 8, caractérisé en ce qu'il consiste dans la phase de protection (P):
.cndot. à 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, .cndot. à construire les moyens d'exploitation permettant aussi à l'unité (6) de mettre en oeuvre les moyens de rechargement, .cndot. et à modifier le logiciel protégé (2p):
- 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é correspondant à une variable de mesure choisie peut être créditée, .fwdarw. et dans la phase de rechargement:
.cndot. à 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é.
9 - Method according to claim 7 or 8, characterized in that it consists in the protection phase (P):
.cndot. to define reloading means allowing to credit at least a additional use for at least one software feature monitored by a measurement variable, .cndot. to build the operating resources also allowing the unit (6) of implement the recharging means, .cndot. and modify the protected software (2p):
- by choosing in the source of the protected software (2ps), at least one chosen measurement variable to limit the use of a functionality to which at least one additional use must can be credited, - and by modifying at least one selected portion, this modification being such as in a so-called recharging phase, at least one use additional of at least one functionality corresponding to a selected measurement variable can be credited, .fwdarw. and in the recharging phase:
.cndot. to update at least one selected measurement variable and / or at least a associated threshold, so as to allow at least one use additional functionality.
- Procédé selon la revendication 6, caractérisé en ce qu'il consiste:
.fwdarw. dans la phase de protection (P):
.cndot. à 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, .cndot. et à modifier le logiciel protégé (2p) - 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, - 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, .fwdarw. 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é.
- Method according to claim 6, characterized in that it consists:
.fwdarw. in the protection phase (P):
.cndot. to define:
- as a feature of software execution likely to be monitored, a software usage profile, - and as a criterion to be respected, at least one performance trait of software, .cndot. and modify the protected software (2p) - by choosing as a software execution characteristic to monitor at least one software usage profile, - by choosing at least one performance trait than at least one profile of use chosen must respect, - and by modifying at least a selected portion of the software source protected (2ps), this modification being such that, during the execution of the protected software (2p), the second part of execution (2peu) respects all selected performance traits, .fwdarw. and in the use phase (U) in the presence of the unit (6), and in case it is detected that at least one performance trait is not respected, to be informed the data processing system (3) and / or to modify the functioning of the portion of the protected software (2p), so that the operation of the software protected (2p) is modified.
11 - Procédé selon la revendication 10, caractérisé en ce qu'il consiste:
.fwdarw. dans la phase de protection (P):
.cndot. à 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'éxé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'éxécution des instructions, - en tant que moyens de détection (17), des moyens permettant de détecter que l'énchaî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é, .cndot. à 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 de données (3), des commandes d'instructions, .cndot. et à modifier le logiciel protégé (2p):
- 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 correspondant aux instructions utilisées, .fwdarw. et dans la phase d'utilisation (U), en présence de l'unité (6), dans le cas où il est détecté que l'enchainement 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é.
11 - Method according to claim 10, characterized in that it consists:
.fwdarw. in the protection phase (P):
.cndot. to define:
- a set of instructions whose instructions are likely to be executed in 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 trigger in the unit (6) the execution of instructions, - as a usage profile, the sequence of instructions, - as an execution feature, a desired sequence for the execution of instructions, - as detection means (17), means making it possible to detect that the sequence of instructions does not match that wish, - And as means of coercion (18), means allowing to inform the data processing system (3) and / or to modify the operation of the portion of protected software (2p) when the sequence of instructions does not correspond to that desired, .cndot. to build the operating resources also allowing the unit (6) to execute the instructions in the instruction set, the execution of these instructions being triggered by execution in the processing system data (3), instruction commands, .cndot. and modify the protected software (2p):
- by modifying at least a selected portion of the software source protected (2ps):
~ by transforming elementary functions into instructions, ~ by specifying the sequence that must respect at least some of the instructions when executed in unit (6), ~ and by transforming elementary commands into commands instructions corresponding to the instructions used, .fwdarw. 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 does not correspond to the desired one, to inform the processing system of data (3) and / or modify the operation of the software portion protected (2p), so that the operation of the protected software (2p) is changed.
12 - Procédé selon la revendication 11, caractérisé en ce qu'il consiste:
.fwdarw. dans la phase de protection (P):
.cndot. à 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 à:
~ un champ d'identification de l'instruction (CII), ~ et pour chaque opérande de l'instruction:
* un champ drapeau (CD k), * et un champ d'identification prévue (CIP k) 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 (CIG v) 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 (CD k) l'impose, de contrôler l'égalité entre le champ d'identification générée (CIG v) correspondant au registre utilisé par cet opérande, et le champ d'identification prévue (CIP k) 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.
12 - Method according to claim 11, characterized in that it consists:
.fwdarw. in the protection phase (P):
.cndot. to define:
- as a set of instructions, a set of instructions of which at least some instructions work on registers and use at least an 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 execution instructions and having corresponding bit fields at:
~ an instruction identification field (CII), ~ and for each operand of the instruction:
* a flag field (CD k), * and a planned identification field (CIP k) of operand, - for each register belonging to the operating resources and used by the instruction set, a generated identification field (CIG v) in which 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 field flag (CD k) requires it, to control the equality between the field generated identification (CIG v) corresponding to the register used by this operand, and the expected identification field (CIP k) of the origin of this operand, - And as means of coercion (18), means making it possible to modify the result of the instructions, if at least one of the ties controlled is false.
13 - Procédé selon la revendication 5 ou 11 caractérisé en ce qu'il consiste dans la phase de protection (P):
.cndot. à 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, .cndot. à construire des moyens d'exploitation permettant à l'unité (6) de mettre aussi en oeuvre les moyens de rétablissement, .cndot. et à modifier le logiciel protégé (2p):
- 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), .fwdarw. et dans la phase d'utilisation (U):
.cndot. 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, .cndot. 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 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.
13 - Method according to claim 5 or 11 characterized in that it consists in the protection phase (P):
.cndot. to define:
- as a triggering command, a basic command or an instruction command, - as a dependent function, an elementary function or a instruction, - as an instruction, at least one argument for an order triggering, corresponding at least in part to the information transmitted by the data processing system (3) to the unit (6), so trigger the execution of the corresponding dependent function, - a method of renaming the instructions allowing renaming of the instructions in order to obtain triggering orders with instructions renamed, - and recovery means (20) intended to be implemented in the unit (6) during the use phase (U), and allowing find the dependent function to be executed, from the setpoint fame, .cndot. to build operating resources allowing the unit (6) to to put also implement the means of recovery, .cndot. and modify the protected software (2p):
- by choosing in the source of the protected software (2ps), commands triggering, - by modifying at least a selected portion of the software source protected (2ps) by renaming the command instructions selected triggers, in order to conceal the identity of the functions corresponding dependents, - and by 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), triggering commands with instructions renames are executed, ~ and the second object part (2pou) of the protected software (2p) containing the operating resources also implementing the recovery means (20), this second object part (2pou) being such that, after loading into the unit (6) and during the execution of the protected software (2p), the identity of the functions dependents whose execution is triggered by the first part of execution (2pes) is restored by means of the second part execution (2peu), and the dependent functions are executed at means of the second part of execution (2peu), .fwdarw. and in the use phase (U):
.cndot. in the presence of the unit (6) and each time a command triggering at renowned instruction, contained in a portion of the first part of execution (2pes) requires it, to restore in the unit (6), the identity of the corresponding dependent function and to execute it, so that this portion is executed correctly and therefore the software protected (2p) is fully functional, .cndot. and in the absence of the unit (6), despite the request for a portion of the first part of execution (2pes), to trigger the execution of a function dependent in unit (6), not being 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.
14- Procédé selon la revendication 13, caractérisé en ce qu'il consiste:
.fwdarw. dans la phase de protection (P):
.cndot. à 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, .cndot. et à modifier le logiciel protégé (2p):
- 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.
14- Method according to claim 13, characterized in that it consists:
.fwdarw. in the protection phase (P):
.cndot. to define for at least one dependent function, a family of functions algorithmically equivalent dependent, but triggered by triggering commands whose renamed instructions are different, .cndot. and modify the protected software (2p):
- by choosing in the source of the protected software (2ps) at least one triggering command with renamed setpoint, - and by modifying at least a selected portion of the software source protected (2ps) by replacing at least the renamed setpoint of a trigger command with renamed setpoint chosen, by another renamed setpoint, triggering a function dependent on the same family.
15 - Procédé selon la revendication 14, caractérisé en ce qu'il consiste .fwdarw. 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 (CIP k) des opérandes.
15 - Process according to claim 14, characterized in that it consists .fwdarw. in the protection phase (P), to be defined, for at least one function dependent, a family of algorithmically dependent functions equivalent:
- by concatenating a noise field to the information defining the part functional of the dependent function to be executed in unit (6), - or by using the instruction identification field (CII) and the expected identification fields (CIP k) of the operands.
16 - Procédé selon la revendication 13, 14 ou 15, caractérisé en ce qu'il consiste:
.fwdarw. dans la phase de protection (P):
.cndot. à définir:
- en tant que méthode de renornmage 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 renommées et rétablir ainsi l'identité des fonctions dépendantes à
exécuter dans l'unité (6).
16 - Process according to claim 13, 14 or 15, characterized in that it is:
.fwdarw. in the protection phase (P):
.cndot. to define:
- as a method of renaming the instructions, a method of encryption to encrypt the instructions, - and as recovery means (20), means putting in uses a decryption method to decipher the instructions renamed and thus re-establish the identity of the functions dependent on run in unit (6).
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 (P1), indépendante du logiciel à protéger et une sous-phase de protection aval (P2), dépendante du logiciel à protéger. 17 - Method according to one of claims 1 to 16, characterized in that it consists in breaking down the protection phase (P) into a sub-phase of protection upstream (P1), independent of the software to be protected and a sub-phase of protection 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 (P1), à 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 of the upstream protection sub-phase (P1), to involve a definitions (S11) in which all definitions are made. 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- A method according to claim 18, characterized in that it consists, after the definition stage (S11), involving a construction stage (S12) in which are built 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 - Method according to claim 19, characterized in that it consists, after the construction stage (S12), involving a pre-personalization (S13), consisting in loading into a blank unit (60), at least part of the means for obtaining 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 (P1), à 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 (P1), to involve a making tools (S14) in which tools are made for help to 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 .cndot. un stade de création (S21) dans lequel est créé le logiciel protégé
(2p), à
partir du logiciel vulnérable (2v), .cndot.éventuellement, un stade de modification (S22) dans lequel est modifié
le logiciel protégé (2p), .cndot.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 of decompose the downstream protection sub-phase (P2), by .cndot. a creation stage (S21) in which the protected software is created (2p), at from vulnerable software (2v), .cndot. optionally, a modification stage (S22) in which is modified the protected software (2p), .cndot. and a personalization stage (S23) in which - the second object part (2pou) of the protected software (2p) containing possibly the means of exploitation is loaded in at least a blank unit (60) in order to obtain at least one unit (6), - or part of the second object part (2pou) of the protected software (2p) possibly containing the operating resources is loaded into at least one pre-personalized unit (66) in order to obtain at least a 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), à
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.
23 - Method according to claims 21 and 22, characterized in that it consists during the creation stage (S21) and possibly the modification stage (S22), at use at least one of the tools to help generate protected software or software protection automation.
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 includes a program development unit, using, during the construction stage (S12), to carry out the construction of the means for the unit (6), taking into account the definitions intervened in 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 includes a pre-personalization unit (30) allowing to load at least part of the operating resources into at least one unit blank (60), in order to obtain at least one pre-personalized 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 includes a program development unit, for to be carried out during the tool-making stage (S14), the tool-making help with generation of protected software or protection automation software. 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 includes a development unit for programs used to create or modify 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 :
.cndot. la seconde partie objet (2pou) dans au moins une unité vierge (60), en vue d'obtenir au moins une unité (6), .cndot. 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 includes a personalization unit (45) allowing of charge:
.cndot. the second object part (2pou) in at least one blank unit (60), view obtain at least one unit (6), .cndot. or part of the second object part (2pou) in at least one pre- unit customized (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. 29 - Pre-personalized 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 running protected software (2p) and preventing his unauthorized use, characterized in that it contains the second object part (2pou) protected software (2p) loaded using a personalization (45) according to claim 28. 31 - Ensemble d'unités (6), caractérisé en ce que la seconde partie objet (2pou) 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). 31 - Set of units (6), characterized in that the second object part (2pou) protected software (2p), loaded using a customization unit (45) according to claim 28, is distributed over several units of treatment and memorization so that their joint use makes it possible to execute the software protected (2p). 32 - Ensemble de distribution (2pd) d'un logiciel protégé (2p), caractérisé en ce qu'il comporte:

.cndot. 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), .cndot. 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 protected software (2p), characterized by this that it includes:

.cndot. a first distribution part (2pds) containing the first part object (2pos) and intended to operate in a processing system data (3), .cndot. and a second distribution part (2pdu) presenting itself under the form:
- a blank unit (60), - or a pre-personalized unit (66) according to claim 29, capable after loading personalization information, of transform 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 protected software (2pd) according to the claim 32, characterized in that the first dispensing part (2pds) present in the form of a physical distribution medium, CDROM for example, or as files distributed across 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és pré-personnalisées (66) ou d'unités (6), comporte au moins une carte à puce (7). 34 - Distribution package (2pd) of protected software (2p) according to the claim 32, characterized in that the second distribution part (2pdu), in the form of blank units (60), pre-personalized units (66) or units (6), comprises at least one smart card (7). 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.
35 - Processing and storage unit characterized in that it contains the part of the second object part (2pou) necessary to transform a unit pre-customized (66) according to claim 29 into a unit (6) according to the 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 revendication 30.
36 - Set of processing and storage units characterized in that the processing and storage units used jointly, contain the part of the second object part (2pou) necessary to transform a unit pre-customized (66) according to claim 29 into a unit (6) according to the claim 30.
CA002454095A 2001-07-31 2002-07-04 Method for protecting a software using a so-called conditional jump principle against its unauthorised use Abandoned CA2454095A1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR01/10245 2001-07-31
FR0110245A FR2828302B1 (en) 2001-07-31 2001-07-31 METHOD FOR PROTECTING SOFTWARE USING A PRINCIPLE SAID "CONDITIONAL CONNECTION" AGAINST ITS UNAUTHORIZED USE
PCT/FR2002/002342 WO2003012374A2 (en) 2001-07-31 2002-07-04 Method for protecting a software using a so-called conditional jump principle against its unauthorised use

Publications (1)

Publication Number Publication Date
CA2454095A1 true CA2454095A1 (en) 2003-02-13

Family

ID=8866120

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002454095A Abandoned CA2454095A1 (en) 2001-07-31 2002-07-04 Method for protecting a software using a so-called conditional jump principle against its unauthorised use

Country Status (19)

Country Link
EP (1) EP1412705A2 (en)
JP (1) JP3949103B2 (en)
KR (1) KR20040032859A (en)
CN (1) CN1313898C (en)
BR (1) BR0211370A (en)
CA (1) CA2454095A1 (en)
FR (1) FR2828302B1 (en)
HK (1) HK1072110A1 (en)
HR (1) HRP20040046A2 (en)
HU (1) HUP0400221A2 (en)
IL (1) IL159952A0 (en)
MA (1) MA26124A1 (en)
MX (1) MXPA04000593A (en)
NO (1) NO20040228L (en)
PL (1) PL367485A1 (en)
TN (1) TNSN04010A1 (en)
WO (1) WO2003012374A2 (en)
YU (1) YU5904A (en)
ZA (1) ZA200400351B (en)

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
KR101444929B1 (en) * 2012-12-04 2014-09-26 주식회사 안랩 Abnormal call detecting device and abnormal call detecting method

Family Cites Families (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
WO1999066387A1 (en) * 1998-06-12 1999-12-23 Gemplus Method for verifying the execution of a software product
JP4739465B2 (en) * 1997-06-09 2011-08-03 インタートラスト テクノロジーズ コーポレイション Confusing technology to enhance software security

Also Published As

Publication number Publication date
HUP0400221A2 (en) 2004-08-30
FR2828302B1 (en) 2010-09-03
TNSN04010A1 (en) 2006-06-01
BR0211370A (en) 2004-09-21
CN1313898C (en) 2007-05-02
HK1072110A1 (en) 2005-08-12
JP3949103B2 (en) 2007-07-25
WO2003012374A3 (en) 2003-12-24
IL159952A0 (en) 2004-06-20
PL367485A1 (en) 2005-02-21
MA26124A1 (en) 2004-04-01
MXPA04000593A (en) 2005-02-17
FR2828302A1 (en) 2003-02-07
ZA200400351B (en) 2005-03-30
EP1412705A2 (en) 2004-04-28
KR20040032859A (en) 2004-04-17
HRP20040046A2 (en) 2004-10-31
YU5904A (en) 2006-08-17
NO20040228L (en) 2004-03-30
WO2003012374A2 (en) 2003-02-13
CN1541351A (en) 2004-10-27
JP2004537794A (en) 2004-12-16

Similar Documents

Publication Publication Date Title
EP0089876B1 (en) Method and device for the protection of software delivered by a supplyer to a user
FR2681165A1 (en) Process for transmitting confidential information between two chip cards
EP0720098B1 (en) Apparatus for securing information systems organised around microprocessors
WO2005008509A2 (en) Method of managing software components that are integrated into an embedded system
CA2454094A1 (en) Method for protecting a software using a so-called renaming principle against its unauthorised use
CA2454092A1 (en) Method for protecting a software using a so-called temporal dissociation principle against its unauthorised use
CA2454095A1 (en) Method for protecting a software using a so-called conditional jump principle against its unauthorised use
CA2454090A1 (en) Method for protecting a software using a so-called variable principle against its unauthorised use
EP1412838B1 (en) Method for protecting a software using a so-called detection and coercion principle against its unauthorised use
CA2454096A1 (en) Method for protecting a software using a so-called elementary functions principle against its unauthorised use
EP1142193A1 (en) Method for secure data loading between two security modules
WO2008084154A2 (en) Processing of data associated with a digital service
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
EP1185913B1 (en) Method for securing the use of software from a central processing unit and secret storage unit and system therefor
FR2774187A1 (en) Simultaneous protection of one or more software applications independent of software developer
CH716281A2 (en) A method of processing, within a blockchain and sub-enclave network, encrypted computer data by means of an encrypted application.
WO2009081028A2 (en) Platform and device for managing and controlling rights of use associated with a multimedia object
FR2835331A1 (en) PROCESS FOR MONITORING THE USE OF DIGITAL CONTENT BY A SECURITY MODULE OR A CHIP CARD INCLUDING LEDIT MODULE
WO2008084155A2 (en) Processing of data relating to a data network
FR2910664A1 (en) DIGITAL RIGHTS MANAGEMENT SYSTEM ACCORDING TO A SUPER-DISTRIBUTION MODEL

Legal Events

Date Code Title Description
EEER Examination request
FZDE Discontinued