Brevet FR2858496A1 — publié le 20050204

PROCEDE POUR LA MISE EN EUVRE SECURISEE D'UN ALGORITHME DE CRYPTOGRAPHIE DE TYPE RSA ET COMPOSANT CORRESPONDANT La présente invention se rapporte à un procédé pour la mise en oeuvre sécurisée d'un algorithme de cryptographie dans un composant électronique et, plus particulièrement, pour la mise en oeuvre sécurisée d'un algorithme de cryptographie de type RSA. L'invention concerne également le composant électronique correspondant. De tels composants sont notamment utilisés dans des applications où l'accès à des services ou à des 10 données est sévèrement contrôlé. Ils ont une architecture dite logicielle, c'est-àdire programmable formée autour d'un microprocesseur et de mémoires, dont une mémoire programme non volatile de type EEPROM qui contient un ou plusieurs nombres 15 secrets. Il s'agit d'une architecture généraliste apte à exécuter n'importe quel algorithme. Ces composants sont utilisés dans des systèmes informatiques, embarqués ou non. Ils sont notamment utilisés dans les cartes à puce, pour certaines 20 applications de celles-ci. Ce sont par exemple des applications d'accès à certaines banques de données, des applications bancaires, des applications de télépéage, par exemple pour la télévision, la distribution d'essence ou encore le passage de péages d'autoroutes. Ces composants ou ces cartes mettent donc en oeuvre un algorithme de cryptographie pour assurer le chiffrement de données émises et/ou le déchiffrement de données reçues, l'authentification ou la signature numérique d'un message. A partir de ce message appliqué en entrée à la carte par un système hôte (serveur, distributeur bancaire...) et de nombres secrets contenus dans la carte, la carte fournit en retour au système hôte ce 10 message chiffré, authentifié ou signé, ce qui permet par exemple au système hôte d'authentifier le composant ou la carte, d'échanger des données... Les caractéristiques des algorithmes de cryptographie peuvent être connues: calculs effectués, 15 paramètres utilisés. La seule inconnue est le ou les nombres secrets. Toute la sécurité de ces algorithmes de cryptographie tient dans ce(s) nombre(s) secret(s) contenu(s) dans la carte et inconnu(s) du monde extérieur à la carte. Ce nombre secret ne peut être 20 déduit de la seule connaissance du message appliqué en entrée et du message chiffré fourni en retour. Or, il est apparu que des attaques externes basées sur des grandeurs physiques mesurables à l'extérieur du composant lorsque celui-ci est en train de dérouler 25 l'algorithme de cryptographie, permettent à des tiers mal intentionnés de trouver le(s) nombre(s) secret(s) contenu(s) dans cette carte. Ces attaques sont appelées attaques à canaux cachés ( Side channel attacks en anglais) ; on distingue parmi ces attaques à canaux 30 cachés, les attaques SPA, acronyme anglo-saxon pour Single Power Analysis basées sur une voire quelques mesures et les attaques DPA, acronyme anglo-saxon pour Differential Power Analysis basées sur des analyses statistiques issues de nombreuses mesures. Le principe de ces attaques à canaux cachés repose par exemple sur 5 le fait que la consommation en courant du microprocesseur exécutant des instructions varie selon l'instruction ou la donnée manipulée. Il existe également un type d'attaque, dite attaque par faute . Dans ce type d'attaque, 10 l'attaquant injecte une faute quelconque pendant le calcul d'un algorithme cryptographique, dans le but d'exploiter la présence de cette faute pour extraire une information secrète. La faute peut aussi provenir d'une erreur de 15 calcul due au matériel mettant en oeuvre l'algorithme cryptographique. On considère néanmoins, dans un cas comme dans l'autre, qu'il s'agit d'une attaque par faute. Ces différents types d'attaque sont notamment 20 envisageables avec les algorithmes de cryptographie à clé publique comme par exemple l'algorithme RSA (du nom de ses auteurs Rivest, Shamir, Adleman), qui est celui le plus utilisé en cryptographie dans ce domaine d'application, et auquel la présente invention 25 s'applique plus particulièrement. On rappelle ci-après brièvement les principales caractéristiques du système cryptographique à clé publique RSA. La première réalisation de schéma de chiffrement 30 et de signature à clé publique fut mise au point en 1977 par Rivest, Shamir et Adleman, qui ont inventé le système cryptographique RSA. La sécurité de 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é. 5 Il peut être utilisé comme procédé de chiffrement ou comme procédé de signature. 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 (n)=(p-l) (q-l), O étant appelée 15 la fonction indicatrice d'Euler; 3) Sélectionner un entier e, 1 Les entiers e et d sont appelés respectivement 25 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é x, avec O Les paramètres publics sont (n, e) mais les paramètres privés sont dans ce mode (p, q. d) ou (p, q, dp, dq, iq) avec dp = d modulo(p-l), dq = d modulo(q-l) et iq = q-1 modulo p Par la relation (1), on obtient, : edp = 1 modulo(p-l) et edq= 1 modulo(q-l) (4) L'opération publique s'effectue de la même façon 30 que pour le mode de fonctionnement standard. Par contre, pour l'opération privée, on calcule d'abord: xp= ydp modulo p et Xq= ydq modulo q Ensuite, par application du théorème des restes chinois, on obtient x = yd modulo n par: x = CRT(xp, Xq)= Xq+ q[iq(xpxq)modulo pl] (5) Une orientation importante dans le domaine de la cryptographie à clé publique utilisant le schéma de chiffrement RSA consiste donc à sécuriser la mise en oeuvre des algorithmes RSA contre les différents types 10 d'attaques possibles évoqués plus haut, notamment les attaques à canaux cachés telles que les attaques DPA et SPA, ainsi que les attaques dites par faute où l'attaquant, par une méthode quelconque, injecte une faute pendant le calcul d'une opération privée de 15 l'algorithme RSA, dans le but d'obtenir une valeur corrompue à partir de laquelle il est possible, dans certains cas, de déduire certaines données secrètes. Dans l'état de la technique, certains procédés de contre-mesure ont été envisagés pour parer ces 20 différents types d'attaques. Notamment, une contre-mesure possible pour parer les attaques de type DPA (et SPA) contre le RSA en mode standard consiste à rendre aléatoire le calcul de l'opération privée du RSA (signature ou déchiffrement) 25 en introduisant dans le calcul une valeur aléatoire. Ainsi, une méthode de contre-mesure de ce type consiste à calculer l'opération privée en mode standard (3) x = yd modulo n de la façon suivante: x = yd-r.yr modulo n, avec r étant un nombre 30 entier aléatoire. Toutefois, l'inconvénient de cette méthode de contre-mesure est que le temps de calcul est doublé. Une autre méthode de contre-mesure de ce type pour parer les attaques DPA (et SPA) contre le RSA en 5 mode standard consiste à calculer l'opération privée (3) x = yd modulo n de la façon suivante: x = y(d+r. (rn)> modulo n, avec r un entier aléatoire. Cependant, un inconvénient de cette méthode est qu'elle requiert la connaissance de la valeur de 10 c(n), qui est généralement inconnue par l'algorithme de cryptographie qui met en oeuvre l'opération privée (signature ou déchiffrement). Aussi, une variante de cette méthode est proposée, basée non plus sur la connaissance de la valeur de t(n) mais sur celle de la valeur de l'exposant public e. En effet, on a d'après (1) : e.d = 1 modulo D(n), aussi, il existe un entier k tel que: e.d-1 = k. c(n); En conséquence, l'expression x = y(d+r.A(n)) modulo n peut se calculer sous la forme: x = y(d+r.(ed-1)) modulo n, avec r un entier aléatoire. Cette méthode de contre-mesure est donc calculatoirement équivalente à celle dont elle découle, avec l'avantage cependant de ne pas nécessiter la 25 connaissance de la valeur de t(n). Elle requiert moins de mémoire en ce sens qu'elle ne nécessite pas de garder t(n). Toutefois, cette variante de contre-mesure, pour pouvoir être mise en oeuvre, nécessite d'avoir la 30 connaissance de la valeur de l'exposant public e. Or, dans de nombreuses applications de cryptographie, le composant ou le dispositif mettant en oeuvre l'opération privée de l'algorithme RSA ne dispose pas toujours de l'exposant public e, notamment lorsqu'il n'exécute que l'opération privée. L'exposant public e est donc dans ce contexte généralement inconnu ou indisponible. Les contre-mesures décrites précédemment sont principalement destinées à parer les attaques de type DPA. Cependant, elles rendent également plus difficiles les attaques de type SPA dans la mesure où l'exécution 10 de l'algorithme est non-déterministe. Pour ce qui est de l'autre type d'attaque qui a été évoqué, dite attaque par faute, la meilleure protection possible pour la parer consiste à tester, en mode standard, que la valeur x obtenue par application 15 de l'opération privée vérifie effectivement la relation xe = y modulo n de l'opération publique. Si ce n'est pas le cas, on ne retournera pas la valeur y pour éviter son utilisation à des fins de cryptanalyse. En mode CRT, la protection consiste à vérifier 20 d'une part, si effectivement les relations xe = y modulo p et, d'autre part, xe = y modulo q sont vérifiées. En effet, lorsque ces relations sont vérifiées, on est assuré qu'il n'y a pas eu d'erreurs pendant le 25 déroulement de l'opération privée de l'algorithme RSA. Toutefois, un inconvénient empêchant la mise en oeuvre de telles vérifications contre les attaques par faute, en mode standard ou en mode CRT, est que ces opérations de vérification nécessitent également la 30 connaissance préalable de l'exposant public e. Or, comme déjà vu, le composant ou le dispositif mettant en oeuvre l'opération privée de l'algorithme RSA, en mode standard ou CRT, ne dispose pas toujours de l'exposant public e, notamment lorsqu'il n'exécute que l'opération privée. L'exposant public e est donc dans ce contexte généralement inconnu ou indisponible. Le document de brevet FR 2 830 146 (D1) propose à cet effet un procédé permettant de réaliser certaines étapes d'un algorithme de cryptographie, et notamment de type RSA en mode standard ou CRT, utilisant un 10 exposant public e que l'on ne connaît pas a priori. Le procédé objet de D1 permet en particulier de réaliser une contremesure, notamment aux attaques par faute, qui offre la meilleure protection possible telle qu'évoquée ci-dessus, même lorsqu'on ne connaît pas 15 l'exposant public e. Pour ce faire, soit (e, d) une paire correspondante d'exposants RSA respectivement public et privé et soit n le module RSA. Dl part de la constatation suivante selon laquelle dans 95% des cas, 20 la valeur de l'exposant public e est choisie parmi les valeurs 216+1, 3, 17. La méthode de Dl, exposée brièvement ici en référence au mode standard mais qui peut tout autant s'appliquer au mode CRT, consiste alors à vérifier que e est bien égal à une de ces 25 valeurs en testant successivement si ei.d = 1 modulo (n), avec ei e E = {216+1, 3, 17}, jusqu'à ce que la relation soit vérifiée. Lorsque la relation est vérifiée pour un ei, alors on sait que e=ei. Une fois la valeur de l'exposant 30 public e déterminée de cette façon, e est mémorisée en vue de son utilisation dans des calculs de l'algorithme RSA visant à vérifier qu'il n'y a pas eu d'erreurs, dues à une attaque par faute, pendant le déroulement d'une opération privée correspondante de l'algorithme RSA. Ainsi, connaissant e, il est possible d'affirmer 5 avec une probabilité égale à 1 que l'opération privée se rapportant par exemple à la génération d'une signature s, avec s = p(m)d modulo n, p(m) étant la valeur obtenue par l'application d'une fonction p de padding au message m à signer, a été effectuée sans 10 erreur en vérifiant simplement que la valeur s obtenue vérifie la relation se = p(m) modulo n de l'opération publique correspondante. Si aucune valeur de e n'a pu être attribuée à e, il convient alors de constater selon Dl que les calculs 15 de l'algorithme RSA utilisant la valeur e pour la sécurisation contre les attaques par faute ne peuvent être effectués. Cependant, un inconvénient de la méthode proposée par Dl est qu'elle implique d'exécuter une pluralité de 20 calculs modulaires lorsqu'on teste successivement si la relation eid = 1 modulo (n) est vérifiée, pour une valeur de e parmi les e envisagés. Or les calculs modulaires sont des calculs complexes. Cette méthode se révèle donc pénalisante en terme de temps de calcul et 25 de ressources de calcul. Aussi, le problème qui se pose est de pallier les inconvénients précités. Plus particulièrement, un but de la présente invention consiste à déterminer d'une façon qui ne soit 30 pas pénalisante en terme de rapidité et de complexité de calcul, la valeur d'un exposant public e parmi un ensemble de valeurs probables prédéterminées, lorsque l'on ne connaît pas cette valeur de e a priori, l'exposant e étant mis en oeuvre dans certaines étapes d'un algorithme de cryptographie de type RSA en mode standard ou CRT. Un autre but consiste donc à pouvoir mettre en oeuvre, une fois la valeur de l'exposant public e déterminée, des opérations de contre-mesure utilisant la valeur de l'exposant public e, visant à parer d'une 10 part, les attaques dites attaques par faute et, d'autre part, les attaques dites à canaux cachés, notamment de type DPA et SPA, susceptibles d'être conduites lors de la mise en oeuvre d'une opération privée d'un algorithme de cryptographie, notamment de type RSA. Avec ces objectifs en vue, l'invention concerne un procédé pour la mise en oeuvre sécurisée d'un algorithme de cryptographie à clé publique, ladite clé publique étant composée d'un nombre entier n, produit de deux grands nombres premiers p et q, et d'un exposant public 20 e, ledit procédé consistant à déterminer un ensemble E comprenant un nombre prédéterminé de valeurs e susceptibles de correspondre à la valeur de l'exposant public e, les ei étant des nombres premiers, caractérisé en ce qu'il comprend les étapes suivantes consistant à: 25 a)définir une valeur C = H e i ei E telle que C/ei soit inférieur à O(n) pour tout ei appartenant à E, O étant la fonction indicatrice d'Euler; b)appliquer la valeur C dans un calcul prédéterminé; c)pour chacun des e de E, tester si le résultat dudit calcul prédéterminé est égal à une valeur C/e1: - si c'est le cas, alors attribuer la valeur e à e et mémoriser e en vue de son utilisation dans des calculs dudit algorithme de cryptographie; - sinon, constater que les calculs dudit algorithme de cryptographie utilisant la valeur 10 e ne peuvent être effectués. L'avantage est donc clairement que l'on n'ait plus qu'une seule multiplication modulaire. Dans une première variante, l'algorithme de cryptographie est basé sur un algorithme de type RSA en 15 mode standard. En rapport avec cette première variante, le calcul prédéterminé de l'étape b) consiste à calculer une valeur C: C = C.d modulo t(n), d étant la clé privée correspondante de l'algorithme RSA telle que e.d = 1 modulo t(n) et O étant la fonction indicatrice d'Euler. Selon une alternative, le calcul prédéterminé de l'étape b) consiste à calculer une valeur C: C = C.d modulo A(n), d étant la clé privée correspondante de l'algorithme RSA telle que e.d = 1 modulo A(n) et X étant la fonction de Carmichael. Dans une seconde variante, l'algorithme de cryptographie est basé sur un algorithme de type RSA en mode CRT. En liaison avec cette seconde variante, le calcul 5 prédéterminé de l'étape b) consiste à calculer une valeur C: C = C.dp modulo (p-l), dp étant la clé privée correspondante de l'algorithme RSA telle que e.dp = 1 modulo (p-l). Selon une alternative, le calcul prédéterminé de l'étape b) consiste à calculer une valeur C: C = C.dq modulo (q-1), dq étant la clé privée correspondante de l'algorithme RSA telle que e.dq = 1 modulo (q-1). Selon une autre alternative, le calcul prédéterminé de l'étape b) consiste à calculer deux valeurs C1 et C2 telles que: C1 = C.dp modulo (p- l), dp étant la clé privée correspondante de l'algorithme RSA telle que 20 e.dp = 1 modulo (p-l), C2 = C.dq modulo (q-1), dq étant la clé privée correspondante de l'algorithme RSA telle que e.dq = 1 modulo (q-1), et en ce que l'étape de test c) consiste pour 25 chaque e , à tester si C1 et/ou C2 est égal à la valeur C/ei: - si c'est le cas, alors attribuer la valeur e à e et mémoriser e en vue de son utilisation dans des calculs dudit algorithme de cryptographie; - sinon, constater que les calculs dudit algorithme de cryptographie utilisant la valeur e ne peuvent être effectués. Selon la première variante et dans le cas où une 5 valeur e a été attribuée à e, les calculs utilisant la valeur e consistent à : -choisir un entier aléatoire r; -calculer une valeur d* telle que d* = d+r. (e.d-1); -mettre en oeuvre une opération privée de 10 l'algorithme dans laquelle une valeur x est obtenue à partir d'une valeur y en appliquant la relation x = yd* modulo n. Selon la première variante et dans le cas où une valeur e1 a été attribuée à e, les calculs utilisant la 15 valeur e consistent à obtenir, à l'issue d'une opération privée de l'algorithme, une valeur x à partir d'une valeur y et à vérifier si xe = y modulo n. Selon la deuxième variante et dans le cas où une valeur e a été attribuée à e, les calculs utilisant la 20 valeur e consistent à obtenir, à l'issue d'une opération privée de l'algorithme, une valeur x à partir d'une valeur y et à vérifier d'une part, si xe = y modulo p et, d'autre part, si xe = y modulo q. De préférence, l'ensemble E comprend au moins les 25 valeurs e1 suivantes 3, 17, 216+1. L'invention concerne également un composant électronique caractérisé en ce qu'il comprend des moyens pour la mise en oeuvre du procédé tel que défini précédemment. L'invention concerne encore une carte à puce comprenant un composant électronique tel que défini. L'objet de l'invention concerne également un procédé pour la mise en oeuvre sécurisée d'un algorithme de cryptographie à clé publique, ladite clé publique étant composée d'un nombre entier n, produit de deux 5 grands nombres premiers p et q. et d'un exposant public e, ledit procédé consistant à déterminer un ensemble E comprenant un nombre prédéterminé de valeurs ei susceptibles de correspondre à la valeur de l'exposant public e, les ei étant des nombres premiers, caractérisé 10 en ce qu'il consiste à réaliser les étapes suivantes consistant à: a) choisir une valeur ei parmi les valeurs de l'ensemble E; b) si 3(p)=6(q), tester si la valeur ei choisie 15 vérifie la relation: (1-ei.d) modulo n Le fait de choisir l'ordre des ei comme celui des probabilités d'apparitions des exposants publics permet de gagner du temps. Ainsi, on pourra choisir 15 préférentiellement l'ordre suivant: e0=216+1, e1=3, e2=17. Dans une variante, on a pour tous les i, ei Dans une autre variante, l'étape b) est remplacée par une autre étape de test consistant à : tester si la valeur e choisie vérifie la relation selon laquelle: les premiers bits de poids forts de (1-ei.d) modulo n 10 sont nuls; ou ladite relation simplifiée selon laquelle: les premiers bits de poids forts de (-ei.d) modulo n sont nuls. De préférence, le test est effectué sur les 128 15 premiers bits de poids fort. Selon un mode de réalisation préféré de l'invention, l'algorithme de cryptographie est basé sur un algorithme de type RSA en mode standard. Selon une caractéristique, une valeur e ayant été 20 attribuée à e, les calculs utilisant la valeur e consistent à : -choisir un entier aléatoire r; -calculer une valeur d* telle que d* = d+r.(e.d-1); -mettre en oeuvre une opération privée de 25 l'algorithme dans laquelle une valeur x est obtenue à partir d'une valeur y en appliquant la relation x = yd* modulo n. Selon une autre caractéristique, une valeur e ayant été attribuée à e, le procédé de l'invention 30 consiste à obtenir, à l'issue d'une opération privée de l'algorithme, une valeur x à partir d'une valeur y et les calculs utilisant la valeur e consistent à vérifier sixe = y modulo n. De préférence, l'ensemble E comprend au moins les valeurs ei suivantes 3, 17, 216+1. L'invention concerne encore un composant électronique caractérisé en ce qu'il comprend des moyens pour la mise en oeuvre du procédé tel qu'il vient d'être défini. L'invention concerne également une carte à puce 10 comprenant un composant électronique tel que défini. D'autres caractéristiques et avantages de la présente invention ressortiront plus clairement de la description qui est faite ci-après, à titre indicatif et nullement limitatif. La présente invention décrit donc différentes techniques permettant de valider la valeur d'un exposant public e que l'on ne connaît pas a priori. Ces techniques peuvent être mises en oeuvre par tout dispositif ou composant électronique doté de moyens de 20 calculs cryptographiques adéquats, en particulier une carte à puce. L'objet de l'invention est basé sur la constatation suivante: soit un ensemble E comprenant au moins les valeurs de e suivantes: e0 = 216+1; el = 3 25 et e2 = 17; cet ensemble E de valeurs couvre environ 95% des valeurs des exposants publics couramment utilisés dans les calculs des algorithmes de cryptographie de type RSA. La première technique proposée par la présente 30 invention, valable pour le mode standard de l'algorithme RSA, consiste alors d'une façon générale à choisir e0 et à vérifier que e=e0; si eteo alors on essaie avec el; et si etel, alors on essaie avec e2. Il se peut que pour une certaine application correspondant aux 5% d'autres cas, e ne soit pas égal 5 ni à e0, ni à el, ni à e2. Aussi, désigne-t-on plus généralement la valeur de e par ei. Et la méthode consiste finalement à choisir une valeur ei parmi les e envisagés et à vérifier que e = ei. Plus particulièrement, la première technique pour 10 retrouver la valeur de e, valable pour le mode standard de l'algorithme RSA, est basée sur le raisonnement suivant: Dans le mode standard, l'algorithme privé (mettant en oeuvre une opération de signature ou de déchiffrement 15 d'un message) dispose de la valeur du module n et de l'exposant privé d. Ainsi, de l'expression (1), il découle qu'il existe un entier k tel que: e.d = 1 + k (n), soit: l-e.d = -k O(n) = -k.(n-p-q+l) En réduisant les deux côtés de l'expression modulo n, on obtient: l-e.d = k(p+q-1) (modulo n). En notant que l'on a toujours k Quand p et q ne sont pas de même taille, on appelle la fonction g=max (5(p),5(q)), c'est-à-dire la fonction donnant le maximum des longueurs de p et q 10 dans le cas où 5(p) et d(q) sont connus; sinon, on prend g=5(n) /2+t, où t désigne le facteur de déséquilibre ou une borne sur ce facteur dans le cas contraire. Dans ce cas où p et q sont déséquilibrés, la formule de l'expression ci-dessus devient: 15 k. (p+q-1) /2)+1 (7) sinon, on teste si la valeur ei choisie vérifie la 25 relation prédéterminée suivante: (1-ei.d)modulo n Dans une première variante, le test pour retrouver la valeur de e: (1-ei.d)modulo n [max(ei)] 2(6(n)/2)+1 dans le cas où 5(p) = (q), et B > [max(e )] 2g+1 sinon. Dans notre exemple, on a E={216+1, 3, 17}. Ainsi, pour tous les i, on a e Dans une deuxième variante du test, on peut encore simplifier le test précédent en vérifiant si les bits 20 les plus significatifs, par exemple les 128 bits de poids fort, de (1-ei.d) modulo n sont nuls. Enfin, pour cette première technique, une dernière simplification consiste à déterminer la relation prédéterminée pour le test sur les ei en démarrant avec 25 la relation suivante: (-e.d) modulo n = k(p+q-1)-l à la place de la relation (6). Ainsi, à partir de cette simplification, on obtient pour les relations de test (7, 7'), la 30 simplification suivante: (-ei.d) modulo n Pour la première variante, on obtient le test simplifié suivant: (-e. d) modulo n Et, pour la deuxième variante du test, on obtient le test simplifié suivant consistant à vérifier si les premiers bits de poids fort de (-ei. d) modulo n sont nuls. Quelle que soit la variante mise en oeuvre, dans sa version simplifiée ou non, si le test n'est pas vérifié pour une valeur de el, on choisit une autre valeur pour e dans l'ensemble E jusqu'à ce qu'une correspondance soit trouvée. Si pour l'une ou l'autre des variantes qui concernent la première technique exposée ci-dessus, il n'existe pas parmi les e1, une valeur telle que e=ei, alors il reste à constater que les calculs de l'algorithme de cryptographie RSA en mode standard 20 faisant intervenir e ne peuvent être effectués. Par contre, lorsque la valeur de e a pu être retrouvée parmi les valeurs ei de l'ensemble de valeurs prédéterminées E, par l'une ou l'autre des variantes, on peut alors vérifier chaque opération privée (3) de 25 l'algorithme de cryptographie (consistant en le déchiffrement d'un message ou la génération d'une signature) en s'assurant que la valeur x obtenue à partir d'une valeur y par application de l'opération privée vérifie la relation xe = y modulo n. Si ce n'est 30 pas le cas, le message déchiffré ou la signature n'est pas retourné pour éviter toute cryptanalyse. Comme on l'a vu, une fois que l'on connaît e, le procédé selon l'invention peut également s'appliquer à une contre-mesure, notamment contre les attaques de type DPA (et SPA), telle qu'elle a été décrite plus 5 haut dans la description. Une telle méthode ainsi consiste à: choisir un entier aléatoire r; calculer une valeur d* telle que d* = d+r. (e.d-1); mettre en oeuvre une opération privée de l'algorithme dans laquelle une valeur x est obtenue à partir d'une valeur y en 10 appliquant la relation x = yd* modulo n. Enfin, la présente invention concerne une deuxième technique pour retrouver la valeur de l'exposant e parmi un ensemble E comprenant un ensemble de valeurs e prédéterminées. Comme on le verra, cette technique 15 s'applique aussi bien dans le cas du mode standard de l'algorithme RSA que dans le cas du mode CRT. Cette technique consiste plus particulièrement à améliorer la méthode proposée dans Dl. Ainsi, les étapes suivantes sont mises en oeuvre: 20 a)définir une valeur C = H ei ei e E telle que C/ei soit inférieur à O(n) pour tout e1 appartenant à E, i étant la fonction indicatrice d'Euler; b)appliquer la valeur C dans un calcul 25 prédéterminé; c)pour chaque e , tester si le résultat dudit calcul prédéterminé est égal à une valeur C/e : - si c'est le cas, alors on attribue la valeur e à e et on mémorise e en vue de son utilisation dans des 30 calculs de l'algorithme de cryptographie. - sinon, on constate que les calculs de l'algorithme de cryptographie utilisant la valeur e ne peuvent être effectués. En mode standard, le calcul prédéterminé de l'étape b) consiste à calculer une valeur C telle que: C = C.d modulo (n), d étant la clé privée correspondante de l'algorithme RSA en mode standard telle que e.d = 1 modulo O(n). Par exemple, soit l'ensemble E = {eo=3, e1=17, 10 e2=216+1}, alors C = e0. e1.e2 = 3.17. (216+1) Ainsi, avec C = C.d modulo D(n): Si C = 17. (216+1) = C/eo alors e = e0 = 3; Si C = 3. (216+1) = C/el alors e = el = 17; Si C = 3.17 = C/e2 alors e = e2 (216+1); Par l'intermédiaire d'un seul calcul modulaire permettant d'obtenir la valeur de C, il est donc possible de retrouver la valeur de l'exposant e parmi un ensemble E, en fonction du résultat de ce calcul. Selon une alternative, le calcul prédéterminé de 20 l'étape b) consiste à calculer une valeur C telle que: C = C.d modulo A(n), d étant la clé privée correspondante de l'algorithme RSA en mode standard mais calculée dans cette alternative modulo la fonction de Carmichael à la place de modulo la fonction 25 indicatrice d'Euler, et donc telle que: e.d = 1 modulo A(n) et A étant la fonction de Carmichael. Dans le cas où la valeur de e a pu effectivement être retrouvée et mémorisée, les calculs de l'algorithme de cryptographie en mode standard mettant 30 en oeuvre la valeur de e consistent à parer les attaques par faute et à mettre en place une contre-mesure, notamment contre les attaques de type DPA (et SPA), et sont identiques à ceux décrits en référence à la première technique. Dans une variante, lorsque l'algorithme RSA mis en 5 oeuvre est en mode CRT, le calcul prédéterminé de l'étape b) consiste à calculer une valeur C telle que: C = C.dp modulo (p-1), dp étant la clé privée correspondante de l'algorithme RSA telle que e.dp = 1 modulo (p-l). Ou bien encore, telle que: C = C.dq modulo (q-1), dq étant la clé privée correspondante de l'algorithme RSA telle que e.dq = 1 modulo (q-1), ou bien les deux, et à prendre le e qui nous est 15 donné par au moins un des deux tests. Dans le cas où la valeur de e a pu effectivement être retrouvée et mémorisée, les calculs de l'algorithme de cryptographie en mode CRT mettant en oeuvre la valeur de e consistent à parer les attaques 20 par faute. On peut alors vérifier chaque opération privée en mode CRT de l'algorithme de cryptographie (consistant en le déchiffrement d'un message ou la génération d'une signature) en s'assurant que la valeur x obtenue à 25 partir d'une valeur y par application de l'opération privée en mode CRT vérifie d'une part, la relation xe = y modulo p et, d'autre part, la relation xe = y modulo q. REVENDICATIONS 1. Procédé pour la mise en oeuvre sécurisée d'un algorithme de cryptographie à clé publique, ladite clé publique étant composée d'un nombre entier n, produit de deux grands nombres premiers p et q, et d'un 5 exposant public e, ledit procédé consistant à déterminer un ensemble E comprenant un nombre prédéterminé de nombres premiers e1 susceptibles de correspondre à la valeur de l'exposant public e, caractérisé en ce qu'il comprend les étapes suivantes 10 consistant à : a)calculer une valeur C = H ei ei e E telle que C/ei soit inférieur à (n) pour tout ei appartenant à E, O étant la fonction indicatrice 15 d'Euler; b)appliquer la valeur C dans un calcul prédéterminé; c)pour chaque e1, tester si le résultat dudit calcul prédéterminé est égal à une valeur e/e1: - si c'est le cas, alors attribuer la valeur e1 à e et mémoriser e en vue de son utilisation dans des calculs dudit algorithme de cryptographie; - sinon, constater que les calculs dudit algorithme de cryptographie utilisant la valeur e ne 25 peuvent être effectués. 2. Procédé selon la revendication 1, caractérisé en ce que l'algorithme de cryptographie est basé sur un algorithme de type RSA en mode standard. 3. Procédé selon la revendication 2, caractérisé en ce que le calcul prédéterminé de l'étape b) consiste à calculer une valeur C: C = C.d modulo î(n), d étant la clé privée correspondante de l'algorithme RSA telle que 10 e.d = 1 modulo t(n) et étant la fonction indicatrice d'Euler. 4. Procédé selon la revendication 2, caractérisé en ce que le calcul prédéterminé de l'étape b) consiste 15 à calculer une valeur C: C = C.d modulo A(n), d étant la clé privée correspondante de l'algorithme RSA telle que e.d = 1 modulo A(n) et A étant la fonction de Carmichael. 5. procédé selon la revendication 1, caractérisé en ce que l'algorithme de cryptographie est basé sur un algorithme de type RSA en mode CRT. 6. Procédé selon la revendication 5, caractérisé en ce que le calcul prédéterminé de l'étape b) consiste à calculer une valeur C: C = C.dp modulo (p-i), dp étant la clé privée correspondante de l'algorithme RSA telle que 30 e.dp = 1 modulo (p-l). 7. Procédé selon la revendication 5, caractérisé en ce que le calcul prédéterminé de l'étape b) consiste à calculer une valeur C: C = C.dq modulo (q-1), dq étant la clé privée 5 correspondante de l'algorithme RSA telle que e.dq = 1 modulo (q-1). 8. Procédé selon la revendication 5, caractérisé en ce que le calcul prédéterminé de l'étape b) consiste 10 à calculer deux valeurs C1 et C2 telles que: C1 = C.dp modulo (p-l), dp étant la clé privée correspondante de l'algorithme RSA telle que e.dp = 1 modulo (p-l), C2 = C.dq modulo (q1), dq étant la clé privée 15 correspondante de l'algorithme RSA telle que e.dq = 1 modulo (q-l), et en ce que l'étape de test c) consiste pour chaque e , à tester si C1 et/ou C2 est égal à la valeur C/e : - si c'est le cas, alors attribuer la valeur e1 à e et mémoriser e en vue de son utilisation dans des calculs dudit algorithme de cryptographie; - sinon, constater que les calculs dudit algorithme de cryptographie utilisant la valeur e ne 25 peuvent être effectués. 9. Procédé selon l'une quelconque des revendications 3 ou 4 et selon lequel une valeur ei a été attribuée à e, caractérisé en ce que les calcul 30 utilisant la valeur e consistent à : -choisir un entier aléatoire r; -calculer une valeur d* telle que d* = d+r.(e.d-1); -mettre en oeuvre une opération privée de l'algorithme dans laquelle une valeur x est obtenue à partir d'une valeur y en appliquant la relation x = yd* modulo n. 10. Procédé selon l'une quelconque des revendications 2 à 4 et selon lequel une valeur e a été attribuée à e, caractérisé en ce qu'il consiste à 10 obtenir, à l'issue d'une opération privée de l'algorithme, une valeur x à partir d'une valeur y et en ce que les calculs utilisant la valeur e consistent à vérifier si xe = y modulo n. 11. Procédé selon l'une quelconque des revendications 5 à 8, et selon lequel une valeur ei a été attribuée à e, caractérisé en ce qu'il consiste à obtenir, à l'issue d'une opération privée de l'algorithme, une valeur x à partir d'une valeur y et 20 en ce que les calculs utilisant la valeur e consistent à vérifier d'une part, si xe = y modulo p et, d'autre part, si xe = y modulo q. 12. Procédé selon l'une quelconque des 25 revendications précédentes, caractérisé en ce que l'ensemble E comprend au moins les valeurs e1 suivantes 3, 17, 216+1. 13. Composant électronique caractérisé en ce qu'il 30 comprend des moyens pour la mise en oeuvre du procédé selon l'une quelconque des revendications précédentes. 14. Carte à puce comprenant un composant électronique selon la revendication 13. 15. Procédé pour la mise en oeuvre sécurisée d'un 5 algorithme de cryptographie à clé publique, ladite clé publique étant composée d'un nombre entier n produit de deux grands nombres premiers p et q et d'un exposant public e, ledit procédé consistant à déterminer un ensemble E comprenant un nombre prédéterminé de nombres 10 premiers ei susceptibles de correspondre à la valeur de l'exposant public e, caractérisé en ce qu'il consiste à réaliser les étapes suivantes consistant à: a) choisir une valeur ei parmi les valeurs de l'ensemble E; b) si 5(p)=5(q), tester si la valeur ei choisie vérifie la relation:(1-ei.d) modulo n 16. Procédé selon la revendication 15, caractérisé en ce que pour tous les i, ei 17. Procédé selon la revendication 15, caractérisé 5 en ce que l'étape b) est remplacée par une autre étape de test consistant à : tester si la valeur e choisie vérifie la relation selon laquelle: les premiers bits de poids forts de (1-ei.d) modulo n 10 sont nuls; ou ladite relation simplifiée selon laquelle: les premiers bits de poids forts de (-ei.d) modulo n sont nuls. 18. Procédé selon la revendication 17, caractérisé en ce que le test est effectué sur les 128 premiers bits de poids forts. 19. Procédé selon l'une quelconque des 20 revendications 15 à 18, caractérisé en ce que l'algorithme de cryptographie est basé sur un algorithme de type RSA en mode standard. 20. Procédé selon l'une quelconque des 25 revendications 15 à 19, et selon lequel une valeur ej a été attribuée à e, caractérisé en ce que les calculs utilisant la valeur e consistent à : -choisir un entier aléatoire r; -calculer une valeur d* telle que d* = d+r. (e.d-1); 30 -mettre en oeuvre une opération privée de l'algorithme dans laquelle une valeur x est obtenue à partir d'une valeur y en appliquant la relation x = yd modulo n. 21. Procédé selon l'une quelconque des 5 revendications 15 à 19 et selon lequel une valeur e a été attribuée à e, caractérisé en ce qu'il consiste à obtenir, à l'issue d'une opération privée de l'algorithme, une valeur x à partir d'une valeur y et en ce que les calculs utilisant la valeur e consistent 10 à vérifier si xe = y modulo n. 22. Procédé selon l'une quelconque des revendications 15 à 21, caractérisé en ce que l'ensemble E comprend au moins les valeurs e suivantes 3, 17, 15 216+1. 23. Procédé selon la revendication 22, caractérisé en ce que le choix préférentiel des valeurs e parmi les valeurs de l'ensemble E est effectué selon l'ordre 20 suivant: 216+1, 3, 17. 24. Composant électronique caractérisé en ce qu'il comprend des moyens pour la mise en oeuvre du procédé selon l'une quelconque des revendications 15 à 23. 25 25. Carte à puce comprenant un composant électronique selon la revendication 24.