FR2898199A1 - METHOD OF SECURING THE EXECUTION OF A FOLLOWING LOGICALLY ENCHANCED STEPS - Google Patents

METHOD OF SECURING THE EXECUTION OF A FOLLOWING LOGICALLY ENCHANCED STEPS Download PDF

Info

Publication number
FR2898199A1
FR2898199A1 FR0650729A FR0650729A FR2898199A1 FR 2898199 A1 FR2898199 A1 FR 2898199A1 FR 0650729 A FR0650729 A FR 0650729A FR 0650729 A FR0650729 A FR 0650729A FR 2898199 A1 FR2898199 A1 FR 2898199A1
Authority
FR
France
Prior art keywords
secret data
execution
data
transformed
steps
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.)
Pending
Application number
FR0650729A
Other languages
French (fr)
Inventor
Mathieu Ciet
Karine Villegas
Benoit Feix
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.)
Gemplus SA
Original Assignee
Gemplus SCA
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 Gemplus SCA filed Critical Gemplus SCA
Priority to FR0650729A priority Critical patent/FR2898199A1/en
Priority to PCT/EP2007/051998 priority patent/WO2007099164A1/en
Publication of FR2898199A1 publication Critical patent/FR2898199A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • G06F2207/7242Exponent masking, i.e. key masking, e.g. A**(e+r) mod n; (k+r).P
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7257Random modification not requiring correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7271Fault verification, e.g. comparing two values which should be the same, unless a computational fault occurred

Abstract

L'invention concerne un procédé de sécurisation de l'exécution d'une suite d'étapes logiquement enchaînées, au moins une étape déterminée ayant au moins une étape prédécesseur et devant utiliser pour son exécution des données secrètes.Ce procédé comprend les étapes consistant à :● préalablement à l'exécution de ladite étape déterminée, transformer les données secrètes à utiliser pour l'exécution de cette étape ;● lors de l'exécution de ladite au moins une étape prédécesseur, générer un paramètre de modification ;● lors de l'exécution de ladite étape déterminéeo modifier les données secrètes transformées en utilisant ledit paramètre de modification ;o exécuter l'étape déterminée en utilisant les données secrètes transformées et modifiées.The invention relates to a method for securing the execution of a series of logically linked steps, at least one determined step having at least one predecessor step and having to use secret data for its execution.This method comprises the steps of: : ● before executing said determined step, transform the secret data to be used for the execution of this step, ● when executing said at least one predecessor step, generating a modification parameter; executing said determined step modifying the transformed secret data using said modification parameter; performing the determined step using the transformed and modified secret data.

Description

PROCÉDÉ DE SÉCURISATION DE L'EXÉCUTION D'UNE SUITE D'ÉTAPES LOGIQUEMENTMETHOD FOR SECURING THE EXECUTION OF A LOGICALLY FOLLOWED STEP

ENCHAINÉES La présente invention concerne le domaine de la sécurisation de l'exécution d'une suite d'étapes logiquement enchaînées, telle qu'un algorithme ou un programme d'ordinateur, notamment dans le cadre des cartes à puce, et a plus particulièrement pour objet un procédé de sécurisation de l'exécution d'une telle suite d'étapes dans laquelle au moins une étape déterminée a au moins une étape prédécesseur et doit utiliser pour son exécution des données secrètes. Il est apparu que les cartes à puce sont sujettes à des tentatives d'attaques, notamment par des attaques par injection de fautes, des attaques à canaux cachés, ou des attaques combinées. Dans les attaques par injection de fautes, ayant pour effet, par exemple, une dérivation de code, un attaquant potentiel perturbe physiquement le circuit intégré de la puce, notamment par l'injection de rayons lumineux ou, d'ondes électromagnétiques. Il peut ainsi modifier le comportement de ce circuit intégré et ainsi dérouter le code logiciel vers un autre type d'exécution.  The present invention relates to the field of securing the execution of a series of logically linked steps, such as an algorithm or a computer program, particularly in the context of smart cards, and more particularly to object a method of securing the execution of such a sequence of steps in which at least one determined step has at least one predecessor step and must use secret data for its execution. It has emerged that smart cards are subject to attack attempts, including fault injection attacks, hidden channel attacks, or combined attacks. In fault injection attacks, having the effect, for example, a code derivation, a potential attacker physically disrupts the integrated circuit of the chip, in particular by the injection of light rays or electromagnetic waves. It can thus modify the behavior of this integrated circuit and thus divert the software code to another type of execution.

Dans les attaques dites à canaux cachés ( side-channel en anglais), l'attaquant analyse des variables de l'environnement de la puce, comme son rayonnement électromagnétique ou sa consommation d'énergie. Il peut alors, à l'aide de procédés d'analyse et d'outils statistiques, déduire des informations secrètes qui émanent de la puce. Il est par exemple ainsi possible de retrouver une clé privée lorsque le développeur n'a pas su se prémunir correctement à l'aide de protections adéquates. De telles protections sont connues de l'homme de l'art.  In so-called "side-channel" attacks, the attacker analyzes variables of the environment of the chip, such as its electromagnetic radiation or its energy consumption. He can then, using analytical methods and statistical tools, deduce secret information that emanates from the chip. It is for example thus possible to find a private key when the developer has not been able to protect himself properly with the help of adequate protections. Such protections are known to those skilled in the art.

La présente invention vise plus particulièrement à se prémunir contre les attaques combinées dans lesquelles une injection de faute est suivie d'une analyse des fuites d'information. Plus particulièrement, elle vise à contrer ce type d'attaques de sorte que même si une dérivation de code a lieu, elle ne laisse pas la porte ouverte à une attaque de type à canaux cachés. Pour faire échec à ces tentatives, il est bien connu, dans des produits comprenant d'une manière générale un ou plusieurs composants électroniques et un logiciel embarqué, d'utiliser des contrôles d'intégrité sur les données manipulées et/ou de la redondance de code afin de détecter d'éventuelles perturbations. Généralement dans ces cas-là, la détection de l'erreur ne peut avoir lieu qu'une fois toutes les redondances effectuées et les comparaisons entre les différentes valeurs obtenues réalisées. C'est-à-dire, dans certains cas, lorsque tous ces calculs ont été réalisés et terminés. Cependant, dans le cas d'attaques combinées, ce type de détection a lieu trop tard. En effet une fois la dérivation réalisée, les fuites de type à canaux cachés découlant des calculs effectués ont déjà eu lieu, et ceci avant que la détection ne soit effective (à la fin de l'exécution par les méthodes connues).  The present invention is more particularly intended to guard against the combined attacks in which a fault injection is followed by an analysis of the information leaks. More specifically, it aims to counter this type of attack so that even if a code derivation takes place, it does not leave the door open to a hidden channel type attack. To counter these attempts, it is well known, in products generally comprising one or more electronic components and embedded software, to use integrity checks on the manipulated data and / or redundancy of the data. code to detect possible disturbances. Generally in these cases, the detection of the error can take place only after all the redundancies have been carried out and the comparisons between the different values obtained have been made. That is, in some cases, when all these calculations have been completed and completed. However, in the case of combined attacks, this type of detection takes place too late. In fact, once the derivation has been carried out, the leaks of the hidden channel type resulting from the calculations performed have already taken place, and this before the detection is effective (at the end of the execution by the known methods).

La présente invention vise à pallier ces inconvénients afin de contrecarrer ce type d'attaques. Plus particulièrement, l'invention a pour but de fournir un procédé permettant de faire échec à des attaques combinées injection de faute / attaque à canaux cachés, dirigées contre des suites d'étapes logiquement enchaînées telles que des programmes ou des algorithmes, enregistrées dans une mémoire d'un composant électroniques.  The present invention aims to overcome these disadvantages in order to counteract this type of attack. More particularly, the object of the invention is to provide a method of defeating combined blind channel fault / attack injection attacks directed against logically sequenced steps of steps such as programs or algorithms, recorded in a memory of an electronic component.

L'invention a également pour but de fournir de tels procédés visant à la sécurisation de l'exécution de certaines suites d'étapes de types particuliers.  The invention also aims to provide such methods for securing the execution of certain sequences of steps of particular types.

A cet effet, l'invention a tout d'abord pour objet un procédé de sécurisation de l'exécution d'une suite d'étapes logiquement enchaînées, au moins une étape déterminée ayant au moins une étape prédécesseur et devant utiliser pour son exécution des données secrètes, caractérisé par le fait qu'il comprend les étapes consistant à : • préalablement à l'exécution de ladite étape déterminée, transformer les données secrètes à utiliser pour l'exécution de cette étape ; • lors de l'exécution de ladite au moins une étape prédécesseur, générer un paramètre de modification ; • lors de l'exécution de ladite étape déterminée o modifier les données secrètes transformées en utilisant ledit paramètre de modification ; o exécuter l'étape déterminée en utilisant les données secrètes transformées et modifiées. Par conséquent, selon l'invention, on transforme les données secrètes initiales devant être utilisées au cours d'une certaine étape ultérieure. Ces données sont ensuite modifiées lors de l'exécution de l'étape. Si le programme s'est déroulé normalement, on dispose pour la modification d'éléments ùles paramètres de modificationùpropres à rétablir les données secrètes d'origine. Sinon, l'exécution du programme a peut-être fait l'objet d'une attaque, mais le programme se déroule alors avec des données modifiées erronées de sorte que ce sont ces données erronées qui vont "fuir" lors des étapes ultérieures. Lorsque éventuellement l'on se rendra compte ultérieurement du dysfonctionnement par les procédés de l'art antérieur, il ne sera donc pas trop tard pour prendre les mesures nécessaires.35 A titre d'illustration, on peut prévoir de modifier de manière déterministe les données manipulées à une certaine étape de sorte que si la ou les étapes prédécesseurs se sont déroulées correctement, alors, au moment de l'exécution, les données de cette certaine étape sont transformées dans un état qui correspond à celui attendu (c'est-à-dire avant leur transformation initiale), sinon elles sont modifiées dans un état différent de celui attendu. On observera que les deux premières étapes du procédé, 10 préalables à l'exécution de l'étape déterminée, peuvent selon le cas se dérouler dans un ordre ou dans l'autre. On note également que, lors de la mise en oeuvre du procédé, si les étapes ne se sont pas déroulées correctement, il n'est pas possible de retrouver les données secrètes à partir des 15 données modifiées. Par ailleurs, les termes "données secrètes" doivent être interprétés au sens large. C'est ainsi que la transformation effectuée sur les données secrètes peut porter sur une partie de 20 code ou sur une adresse de saut d'instructions, de fonction à appeler, de paramètres cryptographiques ou de données en mémoire. Dans un mode de mise en oeuvre particulier, l'étape de 25 transformation desdites données secrètes est mise en oeuvre préalablement au démarrage de l'exécution de ladite suite d'étapes logiquement enchaînées. La modification est faite ici a priori, c'est-à-dire avant 30 l'exécution du programme. La modification permet de retomber sur les données secrètes initiales ou sur des données semblables qui permettent d'obtenir le résultat attendu ; la modification peut s'apparenter à une correction des données transformées lorsque l'on vise à récupérer les données secrètes initiales. La modification 35 ou correction peut avoir lieu au fur et à mesure du déroulement en fonction des étapes antérieures à l'utilisation (des données et/ou du code) et de sorte qu'il y a correction si l'exécution est celle attendue et non correction ou modification aléatoire des valeurs manipulées aux étapes suivantes si l'exécution n'est pas celle attendue. Dans un autre mode de mise en oeuvre, l'étape de transformation desdites données secrètes est mise en oeuvre immédiatement avant l'exécution de ladite étape déterminée. 10 Dans encore un autre mode de mise en oeuvre, l'étape de transformation desdites données secrètes est mise en oeuvre lors d'au moins une étape prédécesseur. Dans encore un autre mode de mise en oeuvre, l'étape de 15 transformation desdites données secrètes est mise en oeuvre successivement à chacune desdites étapes prédécesseurs. Selon différents modes de mise en oeuvre : ù ladite étape prédécesseur précède immédiatement ladite 20 étape déterminée, ladite transformation des données secrètes consiste à appliquer une fonction identité, ladite modification des données secrètes consiste à appliquer une fonction identité, 25 ù ledit paramètre de modification dépend desdites données secrètes transformées, accroissant de la sorte la sécurité du procédé, ladite étape de modification des données secrètes transformées comprend la correction des données transformées 30 permettant d'aboutir aux données secrètes initiales. L'invention a également pour objet un composant électronique comprenant une mémoire dans laquelle est enregistré5 un programme sécurisé pour la mise en oeuvre du procédé, et une carte à puce ou un module de carte à puce comprenant un tel composant électronique.  For this purpose, the invention firstly relates to a method for securing the execution of a series of logically linked steps, at least one determined step having at least one predecessor step and to use for its execution secret data, characterized in that it comprises the steps of: • prior to the execution of said determined step, transforming the secret data to be used for the execution of this step; When executing said at least one predecessor step, generating a modification parameter; During the execution of said determined step, modifying the transformed secret data using said modification parameter; o Execute the determined step using the transformed and modified secret data. Therefore, according to the invention, the initial secret data to be used is transformed in a certain subsequent step. This data is then modified during the execution of the step. If the program has been running normally, it is available for the modification of elements or modification parameters to restore the original secret data. Otherwise, the execution of the program may have been attacked, but the program then proceeds with erroneous modified data so that it is these erroneous data that will "leak" at later stages. Whenever the malfunction will subsequently be recognized by the methods of the prior art, it will not be too late to take the necessary measures. By way of illustration, it may be possible to modify the data in a deterministic manner. manipulated at a certain stage so that if the predecessor step (s) proceeded correctly, then, at the time of execution, the data of this certain step are transformed into a state that corresponds to that expected (ie say before their initial transformation), otherwise they are modified in a state different from that expected. It will be observed that the first two steps of the method, prior to the execution of the determined step, may, depending on the case, take place in one order or the other. It should also be noted that, during the implementation of the method, if the steps have not proceeded correctly, it is not possible to retrieve the secret data from the modified data. In addition, the terms "secret data" must be interpreted broadly. Thus, the transformation performed on the secret data may relate to a code portion or an instruction hop, function to be called, cryptographic parameters or data in memory address. In a particular mode of implementation, the step of transforming said secret data is implemented prior to starting the execution of said series of logically linked steps. The modification is made here a priori, that is to say before the execution of the program. The modification allows to fall back on the initial secret data or on similar data which make it possible to obtain the expected result; the modification can be likened to a correction of the transformed data when it is intended to recover the initial secret data. The modification or correction may take place progressively as a function of the steps prior to use (data and / or code) and so that there is correction if the execution is that expected and no correction or random modification of the values manipulated in the following steps if the execution is not that expected. In another embodiment, the step of transforming said secret data is carried out immediately before the execution of said determined step. In yet another embodiment, the step of transforming said secret data is carried out in at least one predecessor step. In yet another embodiment, the step of transforming said secret data is carried out successively at each of said predecessor steps. According to various embodiments: said predecessor step immediately precedes said determined step, said transformation of the secret data consists in applying an identity function, said modification of the secret data consists in applying an identity function, wherein said modification parameter depends of said transformed secret data, thereby increasing the security of the method, said step of modifying the transformed secret data comprises correcting the transformed data to arrive at the initial secret data. The invention also relates to an electronic component comprising a memory in which is stored a secure program for the implementation of the method, and a chip card or a smart card module comprising such an electronic component.

On décrira maintenant, à titre d'exemple non limitatif, un mode de réalisation particulier de l'invention, en référence aux dessins schématiques annexés dans lesquels : û la figure 1 est un organigramme illustrant un procédé selon l'invention ; û la figure 2 est un organigramme d'un exemple de réalisation. Si l'on se réfère en premier lieu à la figure 1, on voit, dans le cadre généralement non représenté de l'exécution d'une suite d'étapes logiquement enchaînées, que des données secrètes interviennent au cours d'une étape 1. Cette étape 1 peut consister par exemple en une saisie, une lecture, un calcul, une génération aléatoire ou pseudo-aléatoire, ou toute autre opération envisageable. Par donnée secrète, on entend généralement toute donnée dont la divulgation présente un risque pour celui qui la détient légitimement, telle qu'un code PIN, une clé secrète... Au cours d'une étape ultérieure 2, on opère sur les données secrètes une transformation qui a pour effet de fournir des données secrètes transformées 3. On observera que l'étape 2 n'est pas nécessairement immédiatement consécutive à l'étape 1. On évitera toutefois en général d'utiliser les données secrètes brutes 1 avant leur transformation en 2 selon le procédé de l'invention. On observera par ailleurs que la transformation de l'étape 2 peut dans certains cas n'être autre que la transformation identité I. Les données secrètes devront ensuite être utilisées au cours d'une étape ultérieure 4 d'utilisation. Mais ces données ayant été transformées, elles devront au préalable être rétablies dans leur intégrité, soit par la récupération des données secrètes brutes soit par la mise en forme ou en valeur de ces données dans un format connu permettant de réaliser les opérations attendues. A cet effet, au cours d'une étape 5 dite étape "prédécesseur" (c'est-à-dire qu'elle précède l'étape 4 d'utilisation), on génère au moins un paramètre de modification. Ce paramètre de modification est injecté avec les données secrètes transformées dans une étape 6 susceptible de générer des données transformées modifiées rétablissant l'intégrité des données secrètes initiales.  A particular embodiment of the invention will now be described, by way of nonlimiting example, with reference to the appended diagrammatic drawings in which: FIG. 1 is a flowchart illustrating a method according to the invention; Figure 2 is a flowchart of an exemplary embodiment. Referring first to FIG. 1, it is seen in the generally non-illustrated context of the execution of a series of logically linked steps that secret data occur during a step 1. This step 1 may consist, for example, of an input, a reading, a calculation, a random or pseudo-random generation, or any other operation that can be envisaged. By secret data, we generally mean any data whose disclosure poses a risk for the one who holds it legitimately, such as a PIN code, a secret key ... In a subsequent step 2, we operate on the secret data a transformation which has the effect of providing transformed secret data 3. It will be observed that step 2 is not necessarily immediately following step 1. However, it is generally avoided to use the raw secret data 1 before their transformation. in 2 according to the method of the invention. It will be observed moreover that the transformation of step 2 may in certain cases be none other than the identity transformation I. The secret data will then have to be used during a later stage of use. But these data have been transformed, they must first be restored in their integrity, either by the recovery of raw secret data or by formatting or value of these data in a known format to perform the expected operations. For this purpose, during a step 5 called the "predecessor" step (that is to say, it precedes step 4 of use), at least one modification parameter is generated. This modification parameter is injected with the secret data transformed in a step 6 capable of generating transformed transformed data restoring the integrity of the initial secret data.

Si la suite d'étapes logiquement enchaînées s'est déroulée normalement, les paramètres de modification sont conformes à ce qui est attendu, et les données transformées modifiées issues de l'étape 6 sont bien conformes aux données secrètes d'origine de sorte que le programme peut continuer à se dérouler normalement. A priori, aucune faute n'a été injectée et aucun déroutement de programme n'a été opéré. Aucune fuite de données secrètes n'est donc à craindre.  If the sequence of logically chained steps has proceeded normally, the change parameters are as expected, and the modified transformed data from step 6 conforms to the original secret data so that the program can continue to run normally. In principle, no fault was injected and no program diversion was made. No leakage of secret data is therefore to be feared.

Si en revanche une faute a été injectée qui altère le fonctionnement de l'étape prédécesseur 5 (ou de toute autre étape qui pourrait lui être liée), ou si un déroutement du programme l'a amené à ne pas mettre en oeuvre cette étape prédécesseur 5, alors les paramètres de modification sont erronés (rectangles pointillés), et l'étape 6 ne reconstitue pas les données secrètes d'origine. C'est donc avec des données fausses que le programme va se poursuivre. Si un tel dysfonctionnement s'est produit, alors il est possible qu'au cours de la suite du déroulement des opérations, une fuite se produise lors d'une étape 7. Mais cette fuite ne porte alors que sur des données "secrètes" fausses et est donc sans importance. On note que les opérations de transformation et de modification ont rendu impossible la détermination des données secrètes à partir des fuites produites lors d'une étape 7.35 En particulier, des moyens complémentaires à l'invention pourront détecter l'attaque lors d'une étape 8 postérieure à la fuite. Alors que, sans l'invention, la détection de l'attaque intervient trop tard (les fuites ont déjà délivrées les données secrètes), l'invention permet cette détection "dans les temps" puisque aucune donnée secrète n'aura pu être récupérée. EXEMPLES On décrira maintenant cinq exemples de mise en oeuvre de l'invention, à savoir trois exemples que l'on qualifiera de "tests primaires", et deux exemples que l'on qualifiera de "processus d'auto-dérivation". L'invention au travers de ces exemples s'applique particulièrement bien à la sécurisation de données dans des modules de carte à puce. Un tel module comprend généralement un microprocesseur pour l'exécution de l'invention, au moins une mémoire non volatile pour le stockage du code informatique de l'invention et une mémoire vive utilisée par le microprocesseur pour la manipulation de données lors de l'exécution et des interfaces de communication traditionnelles pour une carte à puce ou équivalent. Mais on effectuera tout d'abord un bref rappel sur le système cryptographique RSA.  If, on the other hand, a fault has been injected which alters the operation of the predecessor step 5 (or of any other step which might be linked to it), or if a diversion of the program has led it not to implement this predecessor step 5, then the change parameters are wrong (dashed rectangles), and step 6 does not restore the original secret data. It is therefore with false data that the program will continue. If such a malfunction has occurred, then it is possible that during the course of operations, a leak occurs during a step 7. But this leak then only relates to false "secret" data and is therefore irrelevant. It should be noted that the transformation and modification operations have made it impossible to determine the secret data from the leaks produced during a step 7.35. In particular, means complementary to the invention may detect the attack during a step 8 after the flight. While, without the invention, the detection of the attack occurs too late (the leaks have already delivered the secret data), the invention allows this detection "in time" since no secret data could be recovered. EXAMPLES Five examples of implementation of the invention will now be described, namely three examples which will be described as "primary tests", and two examples which will be described as "self-derivation processes". The invention through these examples is particularly applicable to the security of data in smart card modules. Such a module generally comprises a microprocessor for the execution of the invention, at least one non-volatile memory for storing the computer code of the invention and a random access memory used by the microprocessor for data manipulation at runtime. and traditional communication interfaces for a smart card or equivalent. But we will first make a brief reminder on the RSA cryptosystem.

Rappel sur le système RSA (Rivest, Shamir et Adleman) Le RSA est un algorithme dit à clefs publiques (ou asymétrique), c'est-à-dire à deux clefs : l'une publique, l'autre privée. La sécurité du RSA repose sur la difficulté de factoriser un grand nombre qui est le produit de deux nombres premiers. Ce système est le système cryptographique à clé publique le plus utilisé. Il peut être utilisé comme procédé de chiffrement et30 déchiffrement de messages, comme procédé de signature et de vérification ou comme procédé d'échange de clef secrète. Le principe du système cryptographique RSA est le suivant. Il consiste d'abord à générer la paire de clés RSA. Ainsi, chaque utilisateur crée une clé publique RSA et une clé privée correspondante, suivant le procédé suivant en 5 étapes : 1) Générer deux nombres premiers distincts p et q ; 2) Calculer n=pq et c(n) = (p-1)(q-1), cl) étant la fonction indicatrice d'Euler ; 3) Sélectionner un entier e, 1 e < c(n), tel que PGCD (e, c(n)) = 1, aléatoirement ou au choix de l'utilisateur ; des valeurs couramment utilisées pour e sont 216+1, 3 et 17 ; 4) Calculer l'unique entier d, 1 d < c(n), tel que e. d = 1 modulo c(n) (1) 5) La clé publique est (n,e) ; la clé privée est d, (d, n) ou (d, p, q). Les entiers e et d sont appelés respectivement exposant public et exposant privé. L'entier n est appelé le module RSA. Une fois les paramètres publics et privés définis, étant donné un message m avec 0<m<n, l'opération publique sur m qui peut être par exemple le chiffrement du message m consiste à calculer c = me modulo n (2) Dans ce cas, l'opération privée correspondante est l'opération de déchiffrement du message chiffré c, et consiste à calculer m = cd modulo n (3) 30 Une autre opération privée peut consister en la génération d'une signature s à partir du message préalablement encodé m par application d'une fonction de padding , et consiste à calculer : s = ( (m))d modulo n (2) L'opération publique sur s consiste alors en la vérification de la signature m, par le calcul de (m), avec (m)= se modulo n (3) 10 puisque e.d = 1 modulo cl) (n). On va maintenant présenter un autre mode de mise en oeuvre du système RSA, dit mode CRT car basé sur le théorème des restes Chinois ("Chinese Remainder Theorem" ou CRT en anglais), quatre 15 fois plus rapide en théorie que celui de l'algorithme RSA standard. Selon ce mode CRT, on n'effectue pas directement les calculs modulo n mais on effectue d'abord les calculs modulo p et modulo q. Les paramètres publics sont (n, e) et les paramètres privés 20 sont dans ce mode (p, q, d) ou (p, q, dp, dq, iq) avec dp = d modulo (p-1) dq = d modulo (q-1) iq=q1 modulo p 25 Par la relation (1), on obtient edp = 1 modulo (p-1) et edq = 1 modulo (q-1) (4) 30 L'opération publique s'effectue de la même façon que pour le mode de fonctionnement standard. Par contre, pour l'opération privée, on calcule d'abord, pour l'exemple de la signature du message m5 sp= p(m)dp modulo p et sq= p(m)dq modulo q  Reminder on the RSA system (Rivest, Shamir and Adleman) The RSA is an algorithm called public keys (or asymmetric), that is to say two keys: one public, the other private. The security of the RSA is based on the difficulty of factoring a large number that is the product of two prime numbers. This system is the most used public key cryptosystem. It can be used as a message encryption and decryption method, as a signature and verification method or as a secret key exchange method. The principle of the RSA cryptographic system is as follows. It consists of generating the RSA key pair first. Thus, each user creates an RSA public key and a corresponding private key, following the following method in 5 steps: 1) Generate two distinct prime numbers p and q; 2) Calculate n = pq and c (n) = (p-1) (q-1), c1) being the indicator function of Euler; 3) Select an integer e, 1e <c (n), such as PGCD (e, c (n)) = 1, randomly or at the user's choice; commonly used values for e are 216 + 1, 3 and 17; 4) Calculate the unique integer d, 1 d <c (n), such that e. d = 1 modulo c (n) (1) 5) The public key is (n, e); the private key is d, (d, n) or (d, p, q). The integers e and d are called respectively public exponent and private exponent. The integer n is called the RSA module. Once the public and private parameters have been defined, given a message m with 0 <m <n, the public operation on m which can be for example the encryption of the message m consists in calculating c = me modulo n (2) In this In this case, the corresponding private operation is the decryption operation of the encrypted message c, and consists of calculating m = cd modulo n (3). Another private operation may consist in the generation of a signature s from the message previously received. encoded m by application of a padding function, and consists of calculating: s = ((m)) d modulo n (2) The public operation on s then consists of the verification of the signature m, by the calculation of m), with (m) = modulo n (3) 10 since ed = 1 modulo cl) (n). We will now present another mode of implementation of the RSA system, said CRT mode because based on the Chinese Remainder Theorem (CRT), four times 15 times faster in theory than that of the standard RSA algorithm. According to this CRT mode, modulo n calculations are not carried out directly, but the modulo p and modulo q calculations are carried out first. The public parameters are (n, e) and the private parameters are in this mode (p, q, d) or (p, q, dp, dq, iq) with dp = d modulo (p-1) dq = d modulo (q-1) iq = q1 modulo p 25 By the relation (1), we obtain edp = 1 modulo (p-1) and edq = 1 modulo (q-1) (4) 30 The public operation s' performs the same as for the standard operating mode. On the other hand, for the private operation, we first compute, for the example of the signature of the message m5 sp = p (m) dp modulo p and sq = p (m) dq modulo q

Ensuite, par application du théorème des restes chinois, on obtient : s = p(m)d modulo n s = CRT (sp, sq) = sq + q[iq (sp-sq) modulo p] (5) On décrira maintenant les exemples de réalisation proprement dits de l'invention. Tests primaires : Exemple 1 : Test de longueur pour éviter le déroutement de code Le principe est basé sur le fait qu'il est courant (dans 90% 20 des cas) que la vérification soit faite avec un exposant public e de petite taille. Ainsi, lorsque la longueur de l'exposant public est grande, il peut s'agir d'une dérivation de code induite par une injection de faute. C'est la raison pour laquelle on peut appliquer l'invention à ce cas. 25 On dispose de deux fonctions pour effectuer un calcul: une fonction1 conçue pour effectuer le calcul avec des paramètres publics dont e, donc une fonction non protégée, une fonction2 conçue pour effectuer le calcul avec des 30 paramètres secrets, donc une fonction protégée. par 15 Les données secrètes manipulées sont ici les adresses mémoires des deux fonctions appelées, adresses par lesquelles le microprocesseur accède et exécute ces fonctions.  Then, applying the theorem of the Chinese remains, we obtain: s = p (m) d modulo ns = CRT (sp, sq) = sq + q [iq (sp-sq) modulo p] (5) We will now describe the examples of actual realization of the invention. Primary tests: Example 1: Length test to avoid code diversion The principle is based on the fact that it is common (in 90% of cases) that verification is done with a small public exponent. Thus, when the length of the public exponent is large, it may be a code derivation induced by a fault injection. This is the reason why the invention can be applied to this case. Two functions are available for performing a calculation: a function designed to perform the calculation with public parameters including e, thus an unprotected function, a function designed to perform the calculation with secret parameters, and thus a protected function. The secret data manipulated here are the memory addresses of the two called functions, addresses through which the microprocessor accesses and executes these functions.

Ainsi on applique le procédé de la manière suivante : 1.1 étape de transformation 2 : Transformation de l'adresse mémoire (par exemple pointeur) de l'algorithme à exécuter, et des paramètres à utiliser par les fonctions, 1.2 étape prédécesseur 5 : Test de la longueur de l'exposant pour obtenir un paramètre de modification 1, 1.3 étape de modification 6 (appliquée aux adresses mémoires) : Modification suivant ce paramètre 1 de l'adresse de l'algorithme à exécuter (qui devient alors l'adresse de fonction1 ou de fonction2 à laquelle ces fonctions sont accessibles en mémoire), 1.4 étape d'utilisation 4 : Appel de la fonction correspondant à l'adresse modifiée, 1.5 nouvelle étape prédécesseur 5 : Dans la fonction ainsi appelée (fonction 1 ou 2), test de la longueur de l'exposant pour obtenir un paramètre de modification 2, 1.6 nouvelles étapes de modification 6 et d'utilisation 4 (appliquée aux paramètres) : Utilisation de ce paramètre de modification 2 pour modifier les paramètres transformés et exécuter le calcul avec les bons paramètres ou avec des paramètres erronés (transformés).  Thus, the method is applied as follows: 1.1 transformation step 2: Transformation of the memory address (for example pointer) of the algorithm to be executed, and parameters to be used by the functions, 1.2 predecessor step 5: Test of the length of the exponent to obtain a modification parameter 1, 1.3 modification step 6 (applied to the memory addresses): Modification according to this parameter 1 of the address of the algorithm to be executed (which then becomes the function address1 or function2 to which these functions are accessible in memory), 1.4 step of use 4: Call of the function corresponding to the modified address, 1.5 new step predecessor 5: In the function thus called (function 1 or 2), test the length of the exponent to obtain a modification parameter 2, 1.6 new modification steps 6 and use 4 (applied to the parameters): Using this modification parameter 2 for modify the transformed parameters and execute the calculation with the right parameters or with erroneous (transformed) parameters.

Dans cet exemple, on réalise une double protection à la fois de l'adresse mémoire de la fonction à exécuter et des données secrètes utilisées pour les calculs.  In this example, both the memory address of the function to be executed and the secret data used for the calculations are double protected.

L'attaquant qui injecte des fautes pour récupérer des informations par fuite altère l'étape prédécesseur 4, les paramètres de modification et les données modifiées transformées. Cela conduit inéluctablement vers une exécution erronée de la suite du processus, l'attaquant n'ayant accès qu'à des données modifiées, les données secrètes étant conservées inaccessibles. Une erreur d'exécution est alors interprétée comme la détection d'une attaque ; des mesures et contre-mesures appropriées sont alors prises.  The attacker who injects faults to retrieve information by leakage alters the predecessor step 4, the modification parameters and the transformed modified data. This inevitably leads to an erroneous execution of the rest of the process, the attacker having access to only modified data, the secret data being kept inaccessible. An execution error is then interpreted as the detection of an attack; appropriate measures and countermeasures are then taken.

Il est également prévu de munir la présente invention de procédés connus de l'art antérieur, tels que des procédés de redondance, pour compléter la détection d'erreurs. À titre d'exemple, il peut être prévu de dédoubler les opérations de calcul puis de comparer les résultats obtenus pour en déduire si une attaque a eu lieu (les deux résultats sont alors différents). Éventuellement, on applique ces deux traitements parallèles à des données dédoublées : par exemple, d'une part, les données secrètes modifiées et, d'autre part, une signature de ces données ; moyennant des propriétés particulières pour les opérations mises en oeuvre afin d'obtenir un même résultat à partir de ces données dédoublées. Exemple 2 : Test de l'exposant public e On propose de coder le RSA CRT comme montré à la figure 2, sachant que les tests correspondent en fait à des processus modification/correction tels que décrits ci-dessus. Les différentes étapes du procédé sont connues en soi.  It is also intended to provide the present invention with methods known in the art, such as redundancy methods, to complete error detection. For example, it may be planned to split the calculation operations and then compare the results obtained to deduce if an attack has taken place (the two results are then different). Eventually, these two parallel processes are applied to split data: for example, on the one hand, the modified secret data and, on the other hand, a signature of these data; with particular properties for the operations implemented in order to obtain the same result from these split data. Example 2: Public Exponent Test It is proposed to encode the RSA CRT as shown in Figure 2, knowing that the tests actually correspond to modification / correction processes as described above. The different steps of the process are known per se.

L'étape 10 de recherche de e est par exemple celle qui est décrite dans les documents FR2830146A1 et FR2858496A1. Lorsque l'exposant e est trouvé, on dispose en entrée, à l'étape 1 1 , des données transformées dp, dq, p et q (dans le cas de la figure 2, la transformation est l'identité). Cette étape 11 constitue une étape prédécesseur réalisant la vérification de l'exposant e déterminé selon les formules (4). Le résultat de ce test représente le paramètre de modification et permet la modification, conformément à ce résultat, des données utilisées dans la suite du processus.  The search step e is for example that described in documents FR2830146A1 and FR2858496A1. When the exponent e is found, the input is, in step 1 1, transformed data dp, dq, p and q (in the case of Figure 2, the transformation is the identity). This step 11 constitutes a predecessor step performing the verification of the exponent e determined according to formulas (4). The result of this test represents the modification parameter and allows the modification, according to this result, of the data used in the rest of the process.

L'étape 12/12' correspond à l'exécution du CRT avec les données modifiées. Soit la suite de l'algorithme 12' est fausse après l'utilisation de données modifiées erronées (et donc une attaque est détectée) soit l'algorithme se poursuit avec des données exactes 12. Enfin, en l'absence d'exposant public e identifié, l'étape 13 est exécutée, dont des exemples de réalisation avec la présente invention correspondent aux exemples 3, 4 ou 5 ci-après. La méthode imbriquée suivante est appliquée : auto-déterioration des éléments privés (et éventuellement publics). Exemple 3 : Charqement sécurisé des paramètres On définit une valeur de test (pour d) que l'on nomme tstval=f(d) de sorte qu'il existe une fonction vérifiant : `P(d*)=tstval, où d* correspond à l'exposant privé randomisé. Des randomisations classiques peuvent être utilisées, par exemple d*=d+r.(e.d-1) où r est un entier aléatoire généré par un générateur de nombres aléatoires présent dans la carte à puce. On définit également une fonction cp, qui vérifie cp(`P,d,d*,tstval) = d**. L'exponentiation du message m est définie comme suit : (a). Calculer d*, correspondant à l'étape de transformation 2 25 ded; (b). Calculer `P(d*), étape prédécesseur 5 ; (c). Calculer u = cp(`P,d,d*,tstval), étape de modification 6 de l'exposant privé transformé en fonction des paramètres de modification `P(d*) et tstval. 30 (d). Calculer m" modulo n* (les * correspondent à des randomisations comme classiquement utilisées. Il est également possible que de telles randomisations ne soient pas utilisées ; c'est-à-dire par exemple n* = n) pour une étape de déchiffrement par exemple. 35 Il est à noter que lors de l'étape (c), si la valeur tstval n'est pas retrouvée, alors l'exponentiation utilise un exposant aléatoire généré par le générateur de nombres aléatoires et appliqué à la fonction (p. Par cette mesure de sauvegarde, le processus continue malgré les erreurs de calcul que génèrera l'utilisation de cet exposant aléatoire et l'attaquant ne retire aucune information d'une faute qu'il aurait pu injecter sur tstval. Il est également possible que les fonctions utilisées mettent en oeuvre des éléments aléatoires, assurant alors l'impossibilité de remonter au secret à partir des éléments modifiés. Les fonctions cp et 'P existent : on peut par exemple prendre une réduction modulaire pour `1f et tstval. Ainsi, la fonction cp peut être une fonction qui fait n'importe quoi dans le cas où l'égalité n'est pas respectée. Encore une fois, cette dernière fonction peut utiliser des aléas pour protéger le secret. On remarque que, dans l'exemple qui précède : • tstval est un paramètre de référence • d est la donnée d'origine ^ f(d*) et tstval sont des paramètres de modification • rp(P,d,d*,tstval) constitue l'étape de modification Éventuellement, la randomisation peut ne pas être utilisée auquel cas la transformation de d en d* se résume à l'identité : d = d*. Il est à noter également que l'étape de modification (c) génère une valeur u dérivant de d*, entre autres, et dont l'utilisation pour l'exponentiation de m est équivalente (c'est-à-dire les calculs utilisant cette valeur modifiée sont corrects par rapport à ce que l'on attend) à l'utilisation de la valeur initiale d pour cette même exponentiation. On verra par la suite que cette étape de modification peut aboutir à u=d c'est-à-dire à récupérer la valeur initiale de d. On peut alors parler d'étape de correction. Dans les deux cas, une erreur de calcul due à une injection 35 de faute par exemple, génère une valeur erronée de u ou une valeur de correction différente de d. Il s'en suit que les calculs ultérieurs d'exponentiation sont erronés. Processus d'auto-dérivation : 5 Dans les deux exemples ci-après, la donnée secrète est dérivée (transformée et modifiée) puis reconstituée pour l'étape souhaitée d'exponentiation du message. Ces processus reposent, en cas d'erreur par injection de faute par exemple, sur la destruction 10 de cette donnée secrète qui n'est alors plus exploitable. Exemple 4 : Processus de dérivation et destruction I Ce processus repose sur le principe que dès qu'une faute est 15 détectée, toutes les données sont transformées et le processus change. Dans un exemple relatif à une signature de type RSA standard, il est classique d'associer à l'exposant privé d une valeur de test tstval = '(d), par exemple une somme de contrôle 20 (checksum) ou le haché (ou une partie du haché) de la valeur (en utilisant des fonctions de hachage classiques telles que SHA-1 - Secure Flash Algorithm û ou des fonctions définies par FIPS PUB 180-1...). Il est également possible d'associer une somme de contrôle calculée à la volée qui est utilisée pour modifier tout 25 l'exposant dès qu'une faute aura été détectée. Cette modification pourra être déterministe ou aléatoire de sorte qu'elle protégera le secret même en cas de fuite. (a). En substance, à partir de d, la valeur tstval = P(d) est 30 initialement utilisée comme paramètre de modification pour transformer d en d*, par exemple d* = d XOR U, où U = tstval II ... Il tstval U est constitué de la concaténation du mot tstval et XOR est une opération binaire OU exclusif. Si d n'a pas comme longueur un multiple de tstval, un des tstval de U est modifié, par exemple tronqué, pour obtenir la longueur souhaitée. (b). Lors de phases d'exponentiation, on souhaite récupérer la valeur de l'exposant privé d par la manipulation des mots d;* composant d*. Il s'agit de l'étape de modification de la donnée secrète transformée d* ou plus exactement une étape de correction puisqu'elle vise à récupérer la valeur de d. Pour ce faire, la valeur tstval est recalculée à la volée pour chaque mot d;* de d* en déterminant B = f(d). On obtient ainsi à chaque fois un paramètre de modification B à l'instant i, lequel paramètre prend la valeur tstval si aucune erreur n'est intervenue pendant l'étape de calcul. En appliquant l'opération OU exclusive à d;* avec B ou U* (concaténation de B), on remonte aux valeurs d; de d. Ainsi dès qu'une erreur s'est produite à une étape i, un mot d; de d est corrompu ; l'ensemble de l'exposant privé est corrompu pour les étapes suivantes. Il est à noter que la somme de contrôle peut utiliser des aléas ou des fonctions à sens unique pour protéger l'exposant secret. Exemple 5 : Processus de dérivation et destruction II A la différence de l'exemple 4, cet exemple repose sur la transformation et la modification itératives de mots constituant la donnée secrète. Plus précisément, la manipulation de l'exposant privé d est réalisée bit par bit ou mot par mot (quelque soit la taille des mots, des octets par exemple). Dans cet exemple, il est prévu de calculer par exemple l'exponentiation modulaire md modulo n, ou de façon générale unefonction du type g(m, d) faisant intervenir l'utilisation d'au moins une donnée secrète. (a). Dans cet exemple de l'invention, on dispose d'une constante cste secrète, dont la valeur peut aussi être tirée aléatoirement et varier pour chaque exécution de l'exponentiation, d'une fonction f et de l'exposant privé d constitué de la concaténation suivante : dn_1 Il ... Il do. f peut être toute fonction, par exemple à sens unique utilisant également un aléa.  Step 12/12 'corresponds to the execution of the CRT with the modified data. Either the continuation of the algorithm 12 'is false after the use of erroneous modified data (and therefore an attack is detected) or the algorithm continues with exact data 12. Finally, in the absence of public exponent e identified, step 13 is performed, examples of which with the present invention correspond to Examples 3, 4 or 5 below. The following nested method is applied: self-deterioration of private (and possibly public) elements. Example 3: Secure loading of the parameters One defines a value of test (for d) that one names tstval = f (d) so that there exists a function satisfying: `P (d *) = tstval, where d * corresponds to the randomized private exponent. Conventional randomizations can be used, for example d * = d + r. (E.d-1) where r is a random integer generated by a random number generator present in the smart card. We also define a function cp, which satisfies cp (`P, d, d *, tstval) = d **. The exponentiation of the message m is defined as follows: (a). Calculate d *, corresponding to the transformation step 2 ded; (B). Calculate `P (d *), predecessor step 5; (C). Calculate u = cp (`P, d, d *, tstval), modification step 6 of the transformed private exponent as a function of the modification parameters` P (d *) and tstval. (D). Calculate m "modulo n * (the * correspond to randomizations as conventionally used It is also possible that such randomizations are not used, ie for example n * = n) for a decryption step. It should be noted that in step (c), if the value tstval is not found, then the exponentiation uses a random exponent generated by the random number generator and applied to the function (p. By this safeguard, the process continues despite the calculation errors that will generate the use of this random exponent and the attacker does not remove any information from a fault that could have been injected on tstval. used functions implement random elements, thus ensuring the impossibility to go back to secrecy from the modified elements The functions cp and 'P exist: one can for example take a modular reduction p For example, the function cp can be a function that does anything in the event that equality is not respected. Again, this last function can use randomness to protect the secret. Note that in the above example: • tstval is a reference parameter • d is the original data ^ f (d *) and tstval are modification parameters • rp (P, d, d *, tstval ) is the modification step Eventually, the randomization may not be used in which case the transformation from d to d * comes down to the identity: d = d *. It should also be noted that the modification step (c) generates a value u derived from d *, among others, and whose use for the exponentiation of m is equivalent (that is, the calculations using this modified value are correct in relation to what is expected) to the use of the initial value d for this same exponentiation. It will be seen later that this modification step can lead to u = d, that is to say to recover the initial value of d. We can then speak of a correction step. In both cases, a calculation error due to a fault injection, for example, generates an erroneous value of u or a correction value different from d. It follows that subsequent calculations of exponentiation are erroneous. Auto-derivation process: In the two examples below, the secret data is derived (transformed and modified) and then reconstructed for the desired message exponentiation step. These processes are based, in the event of error by fault injection for example, on the destruction of this secret data which is then no longer usable. Example 4: Derivation Process and Destruction I This process is based on the principle that as soon as a fault is detected all the data is transformed and the process changes. In an example relating to a standard RSA type signature, it is conventional to associate the private exponent with a test value tstval = '(d), for example a checksum (checksum) or the hash (or part of the hash) of the value (using conventional hash functions such as SHA-1 - Secure Flash Algorithm - or functions defined by FIPS PUB 180-1 ...). It is also possible to associate an on-the-fly checksum that is used to modify any exponent as soon as a fault has been detected. This modification may be deterministic or random so that it will protect the secret even in the event of a leak. (at). In essence, from d, the value tstval = P (d) is initially used as a modifying parameter to transform d into d *, for example d * = d XOR U, where U = tstval II ... It tstval U consists of the concatenation of the word tstval and XOR is an exclusive OR binary operation. If d does not have a multiple of tstval as its length, one of the tstval of U is modified, for example truncated, to obtain the desired length. (B). During exponentiation phases, it is desired to recover the value of the private exponent d by the manipulation of the words d * * component d *. This is the step of modifying the transformed secret datum d * or more precisely a correction step since it aims to recover the value of d. To do this, the value tstval is recalculated on the fly for each word d * of d * by determining B = f (d). Thus, each time a modification parameter B is obtained at time i, which parameter takes the value tstval if no error has occurred during the calculation step. By applying the exclusive OR operation to d; * with B or U * (concatenation of B), we go back to the values d; of d. So as soon as an error occurred at a step i, a word d; d is corrupt; the entire private exponent is corrupted for the next steps. It should be noted that the checksum can use random or one-way functions to protect the secret exponent. Example 5: Derivation and destruction process II Unlike Example 4, this example is based on the iterative transformation and modification of words constituting the secret data. More precisely, the manipulation of the private exponent d is done bit by bit or word by word (whatever the size of the words, bytes for example). In this example, it is intended to calculate for example the modular exponentiation md modulo n, or generally a function of the type g (m, d) involving the use of at least one secret data. (at). In this example of the invention, there is a secret step constant, whose value can also be randomly drawn and vary for each execution of the exponentiation, a function f and the private exponent d consisting of the concatenation next: dn_1 He ... He do. f can be any function, for example one-way also using a hazard.

Plusieurs étapes sont mises en oeuvre pour la manipulation de l'exposant privé en vue de l'exponentiation : (b). on calcule une valeur A = f(d) = tstval comme premier paramètre de modification. f(d) peut être obtenu lors de précédentes étapes, comme dans l'exemple 4, et cette valeur A est liée à la valeur de d. (c). on opère une transformation de d en d*, d; par d; en utilisant les valeurs d;+1 et d*;+1. Dans ce cas d;+1 et d*;+1 sont aussi 15 considérés comme des paramètres de modification de d;. o d*n_1 = dn_1 O+ f(cste, A) o d*n-2 = dn-2 f(d*n-1,dn-1), o d*j1 =dj1 f(d*j,dj) o o o d*o = do O+ f(d*1, d1) (d). on effectue l'étape d'exponentiation de m en modifiant d*1 en d; à la volée pour récupérer les mots d; de l'exposant privé d 25 et ainsi d. Le paramètre B = f(d) peut avoir été calculé à une étape différente de celle qui a permis le calcul de A, offrant de la sorte une sécurité accrue. Ainsi en cas de différence entre A et B, une valeur différente et donc erronée de d est obtenue en sortie de l'étape de modification. B constitue un second paramètre de 30 modification. Cette étape de modification pour la récupération de d est comme suit : o dn_1 = d*n_1 O+ f(cste, B) o dn-2 = d*n-2 O+ f(d *n-1, dn-1), 20 o o dj -1 = d*i i O. f(d*i ,di) o o do = d*o f(d*i, di) On note que les d*, et d; sont aussi des paramètres de modification pour et donc si un d*, et/ou un d; est erroné suite à une injection de faute pendant l'étape de calcul de cette valeur, alors l'ensemble des mots suivants (dépendant de l'algorithme d'exponentiation utilisé) est aussi modifié vers une valeur erronée, la modification conduira donc à une valeur autre que d.  Several steps are implemented for the manipulation of the private exponent with a view to exponentiation: (b). a value A = f (d) = tstval is calculated as the first modification parameter. f (d) can be obtained in previous steps, as in Example 4, and this value A is related to the value of d. (C). a transformation is made from d to d *, d; by d; using the values d; +1 and d *; + 1. In this case, d + 1 and d + 1 are also considered d-modification parameters. od * n_1 = dn_1 O + f (cste, A) od * n-2 = dn-2 f (d * n-1, dn-1), od * j1 = dj1 f (d * j, dj) oood * o = do O + f (d * 1, d1) (d). the step of exponentiation of m is performed by modifying d 1 in d; on the fly to retrieve the words d; private exhibitor d 25 and so d. The parameter B = f (d) may have been calculated at a different step from that which allowed the calculation of A, thus providing increased security. Thus, in the case of a difference between A and B, a different and therefore erroneous value of d is obtained at the output of the modification step. B is a second modification parameter. This modification step for the recovery of d is as follows: ## EQU1 ## 20 oo dj -1 = d * ii O. f (d * i, di) oo do = d * of (d * i, di) We note that the d *, and d; are also modification parameters for and so if a d *, and / or a d; is erroneous following a fault injection during the step of calculating this value, then the set of subsequent words (depending on the exponentiation algorithm used) is also modified to an erroneous value, the modification will therefore lead to a value other than d.

Il est également possible d'avoir des principes de fonctionnement déterministes ou aléatoires. Là aussi, il est également important de noter qu'il faut s'assurer de l'impossibilité de remonter au secret à partir des éléments modifiés, ainsi si un attaquant parvient à retrouver les d*,, il ne doit pas pouvoir remonter aux d; même en connaissant le processus de dérivation. Ainsi, afin de garantir une grande sécurité, la fonction f est choisie de telle sorte que sa connaissance ainsi que celle de d* ou des d*, ne permette pas de remonter à la valeur secrète de d ou celles des d,.  It is also possible to have deterministic or random operating principles. Again, it is also important to note that it must be ensured that it is impossible to ascend to secrecy from the modified elements, so if an attacker manages to find the d *, he must not be able to go back to the d ; even knowing the derivation process. Thus, in order to guarantee a high degree of security, the function f is chosen so that its knowledge as well as that of d * or d * does not allow to go back to the secret value of d or those of the d's.

Tous les procédés présentés ci-dessus peuvent être combinés ensemble pour assurer une sécurité optimale et ne concernent pas uniquement les algorithmes à clefs publiques. Ce même procédé peut s'appliquer aux autres algorithmes cryptographiques, tels ceux dit à clé secrète. Ce procédé peut également s'appliquer à tous les algorithmes manipulant des données secrètes tels que la gestion d'un code PIN ou la lecture de fichiers secrets. 19  All of the methods presented above can be combined together to provide optimal security and not just public key algorithms. This same method can be applied to other cryptographic algorithms, such as those said to secret key. This method can also be applied to all the algorithms handling secret data such as the management of a PIN code or the reading of secret files. 19

Claims (10)

REVENDICATIONS 1. Procédé de sécurisation de l'exécution d'une suite d'étapes logiquement enchaînées, au moins une étape déterminée ayant au moins une étape prédécesseur et devant utiliser pour son exécution des données secrètes, caractérisé par le fait qu'il comprend les étapes consistant à : • préalablement à l'exécution de ladite étape déterminée, 10 transformer les données secrètes à utiliser pour l'exécution de cette étape ; • lors de l'exécution de ladite au moins une étape prédécesseur, générer un paramètre de modification ; • lors de l'exécution de ladite étape déterminée 15 o modifier les données secrètes transformées en utilisant ledit paramètre de modification ; o exécuter l'étape déterminée en utilisant les données secrètes transformées et modifiées. 20  1. A method for securing the execution of a series of logically linked steps, at least one determined step having at least one predecessor step and to use for its execution secret data, characterized in that it comprises the steps consisting of: • prior to the execution of said determined step, transforming the secret data to be used for the execution of this step; When executing said at least one predecessor step, generating a modification parameter; When performing said determined step; modifying the transformed secret data using said modification parameter; o Execute the determined step using the transformed and modified secret data. 20 2. Procédé selon la revendication 1, dans lequel l'étape de transformation desdites données secrètes est mise en oeuvre préalablement au démarrage de l'exécution de ladite suite d'étapes logiquement enchaînées. 25  2. Method according to claim 1, wherein the step of transforming said secret data is implemented prior to starting the execution of said sequence of logically chained steps. 25 3. Procédé selon la revendication 1, dans lequel l'étape de transformation desdites données secrètes est mise en oeuvre immédiatement avant l'exécution de ladite étape déterminée.  3. Method according to claim 1, wherein the step of transforming said secret data is carried out immediately before the execution of said determined step. 4. Procédé selon la revendication 1, dans lequel l'étape de 30 transformation desdites données secrètes est mise en oeuvre lors d'au moins une étape prédécesseur.  4. The method of claim 1, wherein the step of transforming said secret data is performed in at least one predecessor step. 5. Procédé selon la revendication 1, dans lequel l'étape de transformation desdites données secrètes est mise en oeuvre successivement à chacune desdites étapes prédécesseurs.  5. The method of claim 1, wherein the step of transforming said secret data is carried out successively to each of said predecessor steps. 6. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel ladite étape prédécesseur précède immédiatement ladite étape déterminée.  The method of any one of claims 1 to 5, wherein said predecessor step immediately precedes said determined step. 7. Procédé selon l'une quelconque des revendications précédentes, dans lequel ledit paramètre de modification dépend desdites données secrètes transformées.  The method of any of the preceding claims, wherein said modification parameter is dependent on said transformed secret data. 8. Procédé selon l'une quelconque des revendications précédentes, dans lequel ladite étape de modification des données secrètes transformées comprend une étape de correction des données transformées permettant d'aboutir auxdites données secrètes.  The method of any one of the preceding claims, wherein said step of modifying the transformed secret data includes a step of correcting the transformed data to result in said secret data. 9. Composant électronique caractérisé par le fait qu'il comprend une mémoire dans laquelle est enregistré un programme sécurisé pour la mise en oeuvre du procédé selon l'une quelconque des revendications précédentes.  9. Electronic component characterized in that it comprises a memory in which is stored a secure program for carrying out the method according to any one of the preceding claims. 10. Carte à puce caractérisée par le fait qu'elle comprend un composant électronique selon la revendication précédente.  10. Smart card characterized in that it comprises an electronic component according to the preceding claim.
FR0650729A 2006-03-02 2006-03-02 METHOD OF SECURING THE EXECUTION OF A FOLLOWING LOGICALLY ENCHANCED STEPS Pending FR2898199A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR0650729A FR2898199A1 (en) 2006-03-02 2006-03-02 METHOD OF SECURING THE EXECUTION OF A FOLLOWING LOGICALLY ENCHANCED STEPS
PCT/EP2007/051998 WO2007099164A1 (en) 2006-03-02 2007-03-02 Method for making secure execution of a series of logically concatenated steps

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0650729A FR2898199A1 (en) 2006-03-02 2006-03-02 METHOD OF SECURING THE EXECUTION OF A FOLLOWING LOGICALLY ENCHANCED STEPS

Publications (1)

Publication Number Publication Date
FR2898199A1 true FR2898199A1 (en) 2007-09-07

Family

ID=37603306

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0650729A Pending FR2898199A1 (en) 2006-03-02 2006-03-02 METHOD OF SECURING THE EXECUTION OF A FOLLOWING LOGICALLY ENCHANCED STEPS

Country Status (2)

Country Link
FR (1) FR2898199A1 (en)
WO (1) WO2007099164A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003023605A2 (en) * 2001-09-06 2003-03-20 Infineon Technologies Ag Device and method for calculating the result of a modular exponentiation
GB2399904A (en) * 2003-03-28 2004-09-29 Sharp Kk Side channel attack prevention in data processing by adding a random multiple of the modulus to the plaintext before encryption.

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003023605A2 (en) * 2001-09-06 2003-03-20 Infineon Technologies Ag Device and method for calculating the result of a modular exponentiation
GB2399904A (en) * 2003-03-28 2004-09-29 Sharp Kk Side channel attack prevention in data processing by adding a random multiple of the modulus to the plaintext before encryption.

Also Published As

Publication number Publication date
WO2007099164A1 (en) 2007-09-07

Similar Documents

Publication Publication Date Title
EP3457620B1 (en) Method for executing a binary code of a secure function by a microprocessor
FR3033965A1 (en)
WO2003024017A2 (en) Method for making secure a secret quantity
EP2215768A2 (en) Method and devices for protecting a microcircuit from attacks for obtaining secret data
CA2712178A1 (en) Countermeasure method and devices for asymmetric cryptography
EP3761199B1 (en) Method for executing a binary code of a secure function by a microprocessor
EP3712795B1 (en) Method for the execution, by a microprocessor, of a binary code comprising a calling function and a called function
EP3712794B1 (en) Method for executing a binary code of a function secured by a microprocessor
FR3071082A1 (en) METHOD FOR EXECUTING A BINARY CODE OF A FUNCTION SECURE BY A MICROPROCESSOR
EP3457621B1 (en) Method for executing a binary code of a secure function by a microprocessor
EP2326042B1 (en) Method for detecting an attack by fault injection
EP2336931B1 (en) Method for signature verification
EP1387519A2 (en) Method for protecting an electronic circuit against fault-based attacks
EP3284206B1 (en) Method of securing the execution of a program
FR2898199A1 (en) METHOD OF SECURING THE EXECUTION OF A FOLLOWING LOGICALLY ENCHANCED STEPS
EP3685259B1 (en) Method for executing a machine code of a secure function
FR3085215A1 (en) DEVICES AND METHODS FOR MASKING ECC CRYPTOGRAPHY OPERATIONS
EP4057169B1 (en) Method for executing a binary code of a computer program by a microprocessor
FR3087022A1 (en) CRYPTOGRAPHIC SYSTEMS AND METHODS RESISTANT TO DEFAULT ATTACKS
EP4089559B1 (en) Microprocessor provided with an arithmetic logic unit and a security hardware module
EP3832947B1 (en) Method for executing a computer program by an electronic apparatus
EP2225693B1 (en) Method for securing a conditional connection, information carrier, software and secured system for said method
EP4089557A1 (en) Method for executing a binary code by a microprocessor
EP4328771A1 (en) Method for executing a machine code by a computer
EP3614617A1 (en) Method and device for generating parameter(s) of an asymmetric cryptographic protocol from a blockchain, associated encryption and decryption method and device and computer program