Brevet FR2898199A1 — publié le 20070907

PROCÉDÉ DE SÉCURISATION DE L'EXÉCUTION D'UNE SUITE D'ÉTAPES LOGIQUEMENT 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. 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. 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). 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. 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. 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. 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. 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. 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. 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 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. 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). 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. 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. 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. 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. 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. 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. 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,. 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 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 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 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. 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. 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. 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. 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. 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. 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. 10. Carte à puce caractérisée par le fait qu'elle comprend un composant électronique selon la revendication précédente.