Brevet FR2986883A1 — publié le 20130816

Procédé de génération sécurisé d'un nombre premier, produit programme d'ordinateur et composant électronique correspondants 1. DOMAINE DE L'INVENTION Le domaine de l'invention est celui de la cryptographie. Plus précisément, l'invention concerne une technique de sécurisation d'un procédé de génération d'un nombre premier contre des attaques par canaux cachés. L'invention a de nombreuses applications, telles que par exemple dans le domaine des cartes à puces qui sont particulièrement sensibles à de telles attaques. Plus généralement, elle peut s'appliquer dans tous les cas où un attaquant cherche à obtenir des informations sur un nombre premier lors de la mise en oeuvre d'un procédé de génération d'un nombre premier. 2. ARRIÈRE-PLAN TECHNOLOGIQUE Dans le domaine de la cryptographie, les nombres premiers constituent une brique de base nécessaire à l'élaboration de la plupart des cryptosystèmes à clé publique. Notamment, les cryptosystèmes asymétriques basés sur la difficulté du problème de la factorisation (par exemple le cryptosystème RSA (pour « Rivest Shamir et Adleman »), le cryptosystème de Rabin, le cryptosystème de Paillier, etc...) nécessitent l'utilisation d'au moins deux nombres premiers qui ne sont connus que du composant électronique dans lequel ils ont été générés. Pour générer de tels nombres, on connaît dans l'état de la technique, différents procédés de génération de nombres premiers. Il convient de noter que la plupart des procédés de génération de nombres premiers comprennent une étape de génération d'un nombre aléatoire vo, et une étape dite de criblage consistant à effectuer une division du nombre aléatoire à tester vo, par de petits nombres premiers appartenant à une liste L préétablie. Le but d'une telle étape de criblage est d'écarter des nombres composites avant d'effectuer des tests de primalités nécessitants des ressources en calculs importantes par un composant électronique (remarquons que si le nombre à tester vo est détecté comme étant un nombre composite, on incrémente ledit nombre d'un pas fixe avant de réitérer l'exécution de l'étape de criblage sur le nombre vo incrémenté. Ainsi, on utilise toujours la même valeur de pas pour réaliser une telle incrémentation). En effet, les tests de primalités qui sont probabilistes tels le test de Rabin Miller, de Solovay-Strassen, ou de Lucas-Lehmer, ainsi que les tests de primalité déterministes comme le test AKS (pour « Agrawal-Kayal-Saxena ») nécessitent de mettre en oeuvre de nombreuses opérations qui sont relativement complexes, induisant une augmentation du temps d'obtention d'un nombre premier (cf. chapitre V « Primality Testing: An Overview » du document Dl correspondant au livre: « Number Theory : An Introduction via the Distribution of Primes », de B. Fine et al.). Cependant lorsque de tels procédés sont mis en oeuvre dans des composants électroniques, il s'avère que la collecte et le traitement de données physiques liés à l'exécution d'opérations réalisées par le composant électronique peuvent entraîner la divulgation d'informations, relatives au nombre premier généré, hors du composant électronique. Plus précisément, les attaques par canaux cachés, et notamment les attaques du type SPA (acronyme anglais de « Simple Power Analysis ») sont particulièrement efficaces vis-à-vis d'une implémentation de l'étape de criblage susmentionnée. En effet, le document D2 correspondant à l'article : « A new Bide channel attack on RSA prime generation », de T. Finke et al., publié dans les annales de la conférence CHES 2009, décrit une attaque permettant à un attaquant d'obtenir un nombre premier généré sur un composant électronique, en exploitant les informations relative au résultat des divisions réalisées au cours de l'étape de criblage susmentionnée. Le document D2 décrit cependant différentes contre-mesures permettant d'éviter la réalisation d'une telle attaque (cf. §6 du document D2). Une première contre-mesure consiste à réaliser, lors de l'étape de criblage, une division du nombre à tester vo par tous les éléments de la liste L, même si un tel nombre est détecté comme étant un nombre composite au cours du parcours de la liste. Une deuxième contre-mesure consiste à ne pas incrémenter le nombre vo, en cas de détection du fait que le nombre candidat vo est composite suite à l'exécution de l'étape de criblage, mais à en générer un nouveau nombre vo avant chaque exécution de ladite étape de criblage. Une troisième contre-mesure consiste à modifier le nombre vo à tester, au bout d'un certain nombre d'exécutions infructueuses de l'étape de criblage, en modifiant un certain nombre de bits du nombre vo choisis de manière aléatoire, via une opération de ou exclusif avec un aléa. Une quatrième contre-mesure consiste à établir, lors de la première exécution de l'étape de criblage pour un nombre à tester vo, une table comprenant les restes des divisions par les éléments de la liste L, et à mettre à jour cette table lors d'une étape de criblage réalisée ultérieurement. Un inconvénient de la première contre-mesure est que celle-ci dégrade de manière non-négligable le temps d'exécution de l'étape de criblage, et de facto celui du procédé de génération d'un nombre premier. Un inconvénient de la deuxième contre-mesure est que celle-ci dégrade aussi de manière non-négligable le temps d'exécution du procédé de génération d'un nombre premier. Un inconvénient de la troisième contre-mesure est que celle-ci laisse à un attaquant la possibilité d'obtenir quelques bits d'informations sur le nombre premier généré. Un inconvénient de la quatrième contre-mesure est que l'utilisation d'une telle table nécessite des ressources mémoires qui ne sont pas toujours disponibles dans des composants électroniques de faibles capacités. Enfin, un autre inconvénient relatif à l'ensemble de ces contre-mesures est que celles-ci ne permettent pas de garantir une sécurisation d'un procédé de génération de nombres premiers forts comme spécifié, par exemple, dans la norme ANSI X9.31. 3. OBJECTIFS DE L'INVENTION L'invention, dans au moins un mode de réalisation, a notamment pour objectif de pallier ces différents inconvénients de l'état de la technique. Plus précisément, dans au moins un mode de réalisation de l'invention, un objectif est de fournir une technique ayant pour effet de modifier les signaux électriques (ou magnétiques) produits lors de la réalisation d'un procédé de génération d'un nombre premier, afin d'empêcher la mise en oeuvre d'une attaque par canaux cachés. Au moins un mode de réalisation de l'invention a également pour objectif de fournir une telle technique qui ne nécessite pas l'utilisation et la mise à jour d'une table stockée dans une mémoire d'un composant électronique. Un autre objectif d'au moins un mode de réalisation de l'invention est de fournir une telle technique qui ne divulgue pas, ou tend à réduire la divulgation de bits d'informations sur le nombre premier généré. Un objectif complémentaire d'au moins un mode de réalisation de l'invention est de fournir une telle technique qui ne dégrade pas les performances d'exécution (d'un point de vue temporel) du procédé de génération d'un nombre premier. Un autre objectif d'au moins un mode de réalisation de l'invention est de fournir une technique permettant de générer de manière sécurisée des nombres premiers forts. 4. EXPOSÉ DE L'INVENTION Dans un mode de réalisation particulier de l'invention, il est proposé un procédé de génération sécurisé d'un nombre premier p, mis en oeuvre par un composant électronique, comprenant au moins une étape d'incrémentation par un pas a d'un nombre vo qualifié de composite. Un tel procédé de génération sécurisé est remarquable en ce qu'il comprend une étape de détermination d'un autre pas a' en fonction dudit pas a et d'un nombre aléatoire 6, et en ce que ladite étape d'incrémentation utilise ledit autre pas a' déterminé. Le principe général de l'invention consiste donc à modifier l'étape d'incrémentation mise en oeuvre dans un procédé de génération d'un nombre premier en déterminant un autre pas en fonction du pas qui était utilisé dans le procédé non sécurisé, et d'un nombre aléatoire. Un tel nombre aléatoire peut être soit généré à chaque exécution du procédé sécurisé, soit généré uniquement après un certain nombre d'exécution dudit procédé sécurisé. Ainsi, selon un mode de réalisation de l'invention, on incrémente le nombre vo qualifié de composite non plus d'un pas fixe a mais d'un pas a' fonction dudit pas a et d'un nombre aléatoire 6 . Selon un aspect particulier de l'invention, ledit procédé de génération sécurisé comprend une étape de détermination qui délivre ledit autre pas suivant : a'= 6 .a . Ainsi, dans un mode de réalisation particulier de l'invention, l'étape de détermination délivre ledit autre pas a' en procédant à une multiplication du nombre aléatoire 6 et du pas a. Selon un aspect particulier de l'invention, ledit procédé de génération sécurisé est remarquable en ce que ledit autre pas a' est premier avec ledit nombre vo à incrémenter. Ainsi, on évite de procéder à la réalisation d'une incrémentation dont le résultat, à savoir le nombre vo , serait un nombre composite. Selon un aspect particulier de l'invention, ledit procédé de génération sécurisé est remarquable en ce que ledit nombre premier p est un nombre premier fort, et en ce que, ledit pas a est un produit de deux nombres premiers pi, p2 respectivement d'une taille de kl bits et de k2 bits avec ki,k2 101. Selon un aspect particulier de l'invention, ledit procédé de génération sécurisé est remarquable en ce qu'il comprend au moins une autre étape d'incrémentation pour laquelle un autre pas déterminé est utilisé. Selon un aspect particulier de l'invention, ledit procédé de génération sécurisé est remarquable en ce que chaque étape d'incrémentation utilise un autre pas déterminé. Selon un aspect particulier de l'invention, ledit procédé de génération sécurisé est remarquable en ce que ledit nombre aléatoire 6 correspond à 2a où a est un nombre aléatoire non nul. Selon un aspect particulier de l'invention, ledit procédé de génération sécurisé est remarquable en ce que ledit nombre aléatoire a comprend 4 bits ou 2 bits d'entropie. Selon un aspect particulier de l'invention, un tel procédé de génération sécurisé est remarquable en ce que chaque étape de criblage comprend une liste L distincte des autres listes. Selon un aspect particulier de l'invention, un tel procédé de génération sécurisé est remarquable en ce qu'il comprend une étape de détermination d'un élément Rp = [(p2-1 mod /9, ).p2 - (19,-1 mod p2).p,1 mod pipe Ainsi, la mise en oeuvre d'une telle étape de détermination par un composant électronique permet de renforcer la sécurité du procédé de génération car on ne procède plus à une étape de comparaison entre la valeur de Rp et la valeur zéro, stockées dans des registres du composant électronique, pouvant entraîner l'obtention, par un attaquant, d'un bit d'information. Selon un aspect particulier de l'invention, un tel procédé de génération sécurisé comprend une étape de réalisation d'un test de primalité de Lucas-Lehmer ne procédant 9 pas au calcul du symbole de Jacobi - 12 0.) Selon une caractéristique particulière, un tel procédé de génération sécurisé comprend une étape de détermination du plus grand commun diviseur entre un nombre à tester et un exposant public e, effectuée après la réalisation d'au moins un test de Rabin-Miller et/ou de Lucas-Lehmer. Selon une caractéristique particulière, un tel procédé de génération sécurisé est remarquable en ce que les nombres ki et k2 sont choisis de sorte que k1 E [[101;121Jj et k2 e [[101;121Jj Dans un autre mode de réalisation de l'invention, il est proposé un produit programme d'ordinateur qui comprend des instructions de code de programme pour la mise en oeuvre du procédé précité (dans l'un quelconque de ses différents modes de réalisation), lorsque ledit programme est exécuté sur un ordinateur. Dans un autre mode de réalisation de l'invention, il est proposé un composant électronique comportant des moyens adaptés à la mise en oeuvre du procédé précité (dans l'un quelconque de ses différents modes de réalisation). Plus précisément, selon une implémentation préférée, les différentes étapes du procédé selon l'invention sont mises en oeuvre par un logiciel ou programme d'ordinateur, ce logiciel comprenant des instructions logicielles destinées à être exécutées par un processeur de données d'un module relais selon l'invention et étant conçu pour commander l'exécution des différentes étapes de ce procédé. En conséquence, l'invention vise aussi un programme, susceptible d'être exécuté par un ordinateur ou par un processeur de données, ce programme comportant des instructions pour commander l'exécution des étapes d'un procédé tel que mentionné ci- dessus. Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. L'invention vise aussi un support d'informations lisible par un processeur de données, et comportant des instructions d'un programme tel que mentionné ci-dessus. Le support d'informations peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette (floppy disc) ou un disque dur. D'autre part, le support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. Alternativement, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. Selon un mode de réalisation, l'invention est mise en oeuvre au moyen de composants logiciels et/ou matériels. Dans cette optique, le terme "module" peut correspondre dans ce document aussi bien à un composant logiciel, qu'à un composant matériel ou à un ensemble de composants matériels et logiciels. Un composant logiciel correspond à un ou plusieurs programmes d'ordinateur, un ou plusieurs sous-programmes d'un programme, ou de manière plus générale à tout élément d'un programme ou d'un logiciel apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Un tel composant logiciel est exécuté par un processeur de données d'une entité physique (terminal, serveur, etc) et est susceptible d'accéder aux ressources matérielles de cette entité physique (mémoires, supports d'enregistrement, bus de communication, cartes électroniques d'entrées/sorties, interfaces utilisateur, etc). De la même manière, un composant matériel correspond à tout élément d'un ensemble matériel (ou hardware) apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Il peut s'agir d'un composant matériel programmable ou avec processeur intégré pour l'exécution de logiciel, par exemple un circuit intégré, une carte à puce, une carte à mémoire, une carte électronique pour l'exécution d'un micrologiciel (firmware), un élément de sécurité (ou « secure element » en anglais) utilisé dans le contexte de communication en champ proche (pour « Near Field Communication » en anglais), etc. 5. LISTE DES FIGURES D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée à titre d'exemple indicatif et non limitatif, et des dessins annexés, dans lesquels : - la figure 1 présente un procédé de génération d'un nombre premier selon l'état de la technique; - la figure 2 présente un procédé de génération d'un nombre premier fort selon l'état de la technique; - la figure 3 présente un procédé de génération sécurisé d'un nombre premier, selon un mode de réalisation de l'invention. - la figure 4 présente un procédé de génération sécurisé d'un nombre premier fort, selon un mode de réalisation de l'invention ; - La figure 5(a) représente, schématiquement, un dispositif de traitement de données dans lequel la présente invention est mise en oeuvre ; - La figure 5(b) représente une carte à microcircuit qui constitue un exemple de dispositif de traitement de données conforme à l'invention tel que représenté à la figure 5(a). 6. DESCRIPTION DÉTAILLÉE Sur toutes les figures du présent document, les éléments et étapes identiques sont désignés par une même référence numérique. La figure 1 présente un procédé de génération d'un nombre premier selon l'état de la technique. Un tel procédé 100 nécessite d'instancier trois paramètres, k, L et a qui sont utilisés au cours de certaines étapes du procédé. Ces paramètres correspondent respectivement à la taille, en nombre de bits, du nombre premier à générer, à une liste comprenant des nombres premiers inférieur à une borne B définie au préalable (i.e L = a2,...,aN} où les nombres premiers a, vérifient la propriété suivante a, B pour i E [[1;Nil ), ainsi qu'à un pas selon lequel est incrémenté un nombre qualifié de composite. Plus précisément, le procédé de génération d'un nombre premier 100, mis en oeuvre dans un composant électronique, comprend une première étape 101 dans laquelle un nombre aléatoire vo, d'une taille de k-bits, est généré de sorte qu'il soit premier avec le pas a. L'objet de l'étape suivante 102 consiste à déterminer si le nombre vo résultant de l'exécution de cette première étape 101 est divisible par au moins un des éléments de la liste L. Ainsi, il suffit que la valeur du reste de la division euclidienne du nombre vo par un des éléments de la liste L, soit égal à zéro, pour que le nombre vo soit qualifié de composite. De manière classique, l'étape 102 comprend un traitement consistant à calculer de manière itérative le reste de la division euclidienne du nombre vo par un des éléments de la liste L choisi de manière séquentielle, dans l'ordre établi, et à arrêter le traitement itératif dès qu'un des restes obtenus est nul. Lorsque le nombre vo est détecté comme étant un nombre composite, on incrémente, au cours d'une étape 103, la valeur de vo du pas déterminé a . Dès lors, la nouvelle valeur du nombre vo est la suivante : vo := vo + a . Puis on réitère l'exécution de l'étape 102. Lorsque que le nombre vo est premier avec chacun des éléments de la liste L, on exécute alors l'étape 104 qui comprend l'utilisation d'une pluralité de tests de primalité (par exemple en réalisant t itération d'un test de Rabin-Miller, où t est un nombre supérieur à 7). Dès que le composant électronique détecte qu'un des tests de Rabin Miller est négatif (au sens où, le nombre vo est détecté comme étant un nombre composite), alors on exécute l'étape 103 puis on réitère l'exécution de l'étape 102. Si tous les tests de primalités exécutés sont positifs (au sens où, le nombre vo est détecté comme n'étant pas un nombre composite, avec une forte probabilité, dans le cas où l'on utilise uniquement des tests de primalité probabilistes), alors le composant électronique peut stocker ou transmettre le nombre premier vo ainsi généré à une entité de confiance. Il convient de remarquer qu'un tel procédé de génération est sensible aux attaques par canaux cachés comme cela est décrit dans le document D2. Notamment, l'étape 102 nécessite d'être protégée car, lorsque le composant électronique réalise une telle étape, il est possible d'exploiter les signaux électriques (ou magnétiques) résultant de l'exécution d'opérations comprise dans une telle étape. La figure 2 présente un procédé de génération d'un nombre premier fort selon l'état de la technique. Afin d'empêcher que l'algorithme de Pollard ou l'algorithme de Williams ne puissent être utilisés pour factoriser un modulus RSA N = p.q, il est recommandé de générer des nombres premiers p et q qui soient des nombres premiers forts. Il existe notamment un procédé de génération d'un nombre premier fort qui est décrit dans la norme ANSI X9.31. Un tel procédé nécessite d'instancier quatre paramètres, k, L, a et e qui sont utilisés au cours de certaines étapes du procédé. Ces paramètres correspondent respectivement à la taille, en nombre de bits, du nombre premier fort à générer, à une liste comprenant des nombres premiers inférieurs à une borne B définie au préalable (i.e L = a2,...,aN} où les nombres premiers a, vérifient la propriété suivante a, pour i E {1; NJ ), à un pas a selon lequel est incrémenté un nombre qualifié de composite, à un exposant public, utilisé dans le cadre du RSA (par exemple, une valeur de e = 216 +1 est habituellement usitée). Plus précisément, un tel procédé 200 nécessite de générer deux nombres premiers, pl et 192, chacun ayant une taille de 101 bits, en utilisant à chaque fois le procédé 100 décrit en relation avec la figure 1. Une étape 201 de détermination d'un nombre de base vo d'une taille de k-bits, en fonction des nombres premiers pl et 192 est alors exécuté à la suite de l'exécution de des deux étapes 100. Plus précisément, l'étape 201 comprend : une étape de génération d'un nombre aléatoire Xp de k bits ; une étape de détermination d'un nombre Rp vérifiant l'égalité suivante : Rp = (p21mod p1). p2 - (pi-lmodp2).pi ; si Rp La figure 3 présente un procédé de génération sécurisé d'un nombre premier, selon un mode de réalisation de l'invention. Ainsi, la sécurisation du procédé de génération d'un nombre premier tel que décrit en relation avec la figure 1 consiste à modifier l'étape de génération 101 en une étape de génération modifiée 301 dans laquelle le nombre aléatoire vo généré est aussi premier avec le nombre 2, et à modifier l'étape d'incrémentation 103 en une étape d'incrémentation sécurisée dans laquelle on utilise un autre pas a' déterminé en fonction d'un nombre aléatoire 6 = 2al où ai est un nombre aléatoire non nul, et du pas a . Ainsi, dans ce mode de réalisation, le pas modifié a' correspond à ri.a (dans un mode de réalisation préférentiel, le nombre aléatoire ai comprend 4 bits (i.e il possède une entropie de 4 bits)). De par le fait que, lors de l'étape 301, le nombre vo a été choisi de sorte qu'il soit premier avec le pas a ainsi qu'avec le nombre 2, on a nécessairement gcd( a' ,v0) = 1 (il convient de remarquer que, dans un autre mode de réalisation où l'on utilise un nombre aléatoire n'étant pas une puissance de 2, il est nécessaire de réaliser la détermination du plus grand commun diviseur entre le nombre vo et le nombre aléatoire Ô avant de réaliser l'incrémentation du nombre vo). Il convient de noter que, en fonction de l'entropie du nombre aléatoire ai , ledit nombre aléatoire doit être modifié plus ou moins fréquemment lors de l'itération de l'étape 303 au sein du procédé 300. En effet, plus l'entropie du nombre aléatoire ai est petite, et plus il est nécessaire de modifier fréquemment le nombre aléatoire ai lors de l'itération des étapes 102 et 303. A contrario, lorsque l'entropie du nombre aléatoire ai est grande, il n'est pas nécessaire de modifier le nombre aléatoire ai à chaque itération des étapes 102 et 303. La modification ne peut intervenir qu'au bout d'un certain nombre d'itération de ces étapes au sein du procédé 300. Ensuite, on procède à l'incrémentation du nombre vo par cet autre pas déterminé au cours d'une étape d'incrémentation 303. Ces étapes de détermination d'un autre pas, et d'incrémentation du nombre vo sont aussi réalisées en cas de détection, par un test de primalité, du fait que le nombre vo est un nombre composite. La figure 4 présente un procédé de génération sécurisé d'un nombre premier fort, selon un mode de réalisation de l'invention. Un tel procédé nécessite d'instancier huit paramètres k, k,, L1, , k2, L2, a2, L3, et e, qui seront utilisés au cours de certaines étapes du procédé. Les listes L1, L2 et L3 correspondent à des listes de nombres premiers utilisés lors des étapes de criblage utilisées au cours de la réalisation du procédé de génération sécurisé d'un nombre premier fort 400, et les pas al et a2 correspondent à des pas utilisés dans les étapes 100 ou 300 dudit procédé 400. Le paramètre e correspond à un exposant public pour le cryptosystème RSA, et les paramètre k, k, et k2 correspondent respectivement aux tailles en nombre de bits du nombre premier fort p, et aux nombres premiers pi et 2 à générer. Dans ce mode de réalisation particulier de l'invention, les nombres premiers pi et 2 n'ont pas une taille fixe (à savoir 101 bits comme dans le procédé 200), mais ils peuvent être choisis en fonction de critère de sécurité particuliers. Dans un mode de réalisation particulier de l'invention, la sécurisation du procédé de génération d'un premier fort tel que décrit en relation avec la figure 2 consiste à mettre en oeuvre le procédé 300 pour l'une des deux (voire pour les deux) étapes de génération d'un nombre premier pl ou 2 , à modifier l'étape de détermination d'un nombre Rp au sein de l'étape de détermination d'un nombre de base vo en la remplaçant par une autre étape de détermination du nombre Rp vérifiant Rp =[(p2-1 mod mod p2 ).p,1 mod p,p2 (on obtient alors une nouvelle étape de détermination d'un nombre de base vo 401 permettant d'empêcher la fuite, par un composant électronique mettant en oeuvre le procédé 400, d'un bit d'information secrète), et à modifier l'étape d'incrémentation 204 en une l'étape d'incrémentation sécurisée 404 dans laquelle on utilise un autre pas a' déterminé en fonction d'un nombre aléatoire 6 = 2a2 où 62 est un nombre aléatoire non nul, et d'un pas a = PiP2 Dans ce mode de réalisation, on détermine cet autre pas a' en multipliant le nombre aléatoire et ledit pas. Ainsi, on obtient a' =2(52 P1 P . 2 - Il convient de noter que, en fonction de l'entropie du nombre aléatoire 62 , ledit nombre aléatoire doit être modifié plus ou moins fréquemment lors de l'itération de l'étape 404 au sein du procédé 400. En effet, plus l'entropie du nombre aléatoire 62 est petite, et plus il est nécessaire de modifier fréquemment le nombre aléatoire 62 lors de l'itération des étapes 202 et 404. A contrario, lorsque l'entropie du nombre aléatoire 62 est grande, il n'est pas nécessaire de modifier le nombre aléatoire 62 à chaque itération des étapes 202 et 404. La modification ne peut intervenir qu'au bout d'un certain nombre d'itération de ces étapes au sein du procédé 400. Il convient aussi de noter que, dans l'étape 401, l'étape de détermination d'un nombre vo comprend en outre, un test de parité dudit nombre vo déterminé. Si le nombre vo est pair, alors, on incrémente ledit nombre vo d'un pas a = P1P2. Dans un mode de réalisation particulier, le nombre aléatoire 62 non nul comprend 2 bits choisis de manières aléatoires. Ainsi, le nombre aléatoire 62 possède une entropie de deux bits. Par conséquent, dans ce mode de réalisation, il est préférable d'obtenir un nouveau nombre aléatoire 62 à chaque itération de l'étape 404. Dans un mode de réalisation particulier de l'invention (non présenté dans les figures), l'étape 203 est réalisée après l'étape 405 et non avant l'étape 405. Ce mode de réalisation est particulièrement avantageux lorsque l'exposant public e = 216 + 1. Dans un mode de réalisation particulier les listes L1, L2 et L3 n'ont pas des tailles identiques, et ne comprennent pas, dès lors les mêmes nombres premiers. Dans un autre mode de réalisation, dans l'étape 405, dans laquelle une pluralité de tests de primalité (à savoir t tests de Rabin Miller et un test de Lucas-Lehmer) est réalisée, le procédé ne détermine pas la valeur du symbole de Jacobi -9 puisqu'on ne 9 0 peut pas avoir = -1. De plus, le fait d'éluder de cette manière, la réalisation du calcul du symbole de Jacobi -9 permet d'empêcher qu'un éventuel attaquant ne aux fins obtenir des informations aux fins de la mise en oeuvre d'une attaque par canaux cachés. La figure 5(a) représente, schématiquement, un dispositif de traitement de données 540 dans lequel la présente invention est mise en oeuvre. Ce dispositif 540 comprend un microprocesseur 510, auquel est associée d'une part une mémoire vive 560, par exemple au moyen d'un bus 570, et d'autre part une mémoire non volatile 520 (par exemple du type EEPROM), par exemple à travers un bus 550. Le dispositif de traitement de données 540, et précisément le microprocesseur 510 qu'il incorpore, peuvent échanger des données avec des dispositifs extérieurs au moyen d'une interface de communication 530. On a schématiquement représenté sur la figure 5(a) la transmission d'une donnée d'entrée X reçue d'un dispositif extérieur (non représenté) et transmise de l'interface de communication 530 au microprocesseur 510. De manière similaire, on a représenté la transmission d'une donnée de sortie Y du microprocesseur 510 vers l'interface de communication 530 à destination d'un dispositif extérieur. Cette donnée de sortie Y est issue d'un traitement de données par le microprocesseur 510, généralement sur la donnée d'entrée X à l'aide d'une donnée secrète 580 interne au système, par exemple une clé privée, ou un nombre aléatoire. Les données d'entrée X sont par exemple des commandes APDU, et les données de sortie des réponses APDU. Bien que, pour l'illustration, les données d'entrée et les données de sortie figurent sur deux flèches différentes, les moyens physiques qui permettent la communication entre le microprocesseur 510 et l'interface 530 pourront être réalisés par des moyens uniques, par exemple un port de communication série ou un bus. Le microprocesseur 510 est apte à exécuter un logiciel (ou programme d'ordinateur) qui permet au dispositif de traitement de données 540 d'exécuter un procédé conforme à l'invention dont des exemples sont donnés en regard des figures 3 et 4. Ce procédé est par exemple exécuté par 540 sur réception des données d'entrée X. Les données du procédé selon l'invention (à savoir par exemple la valeur d'une taille k, ou la valeur d'un exposant public e, ou une commande spécifiant la génération d'un nombre premier) peuvent être obtenus à partir des données d'entrée ou, pour certains paramètres comme une liste de nombre premiers à partir de la mémoire non volatile 520. Les données de sorties sont par exemple obtenues à partir du résultat du procédé selon l'invention. Une telle donnée de sortie peut être soit une information relative à la réussite de la génération d'un nombre premier, ou la transmission du nombre premier généré lui-même, dans le cas de figure où le dispositif extérieur est considéré comme sûr. Le logiciel est composé d'une série d'instructions de commande du microprocesseur 10 qui sont par exemple stockées dans la mémoire 20. Dans une variante, l'ensemble microprocesseur 510 - mémoire non-volatile 520 mémoire vive 560 peut être remplacé par un circuit à application spécifique qui comprend alors des moyens de mise en oeuvre des différentes étapes du procédé de traitement de données. Plus généralement, le dispositif de traitement est un circuit intégré. La figure 5(b) représente une carte à microcircuit qui constitue un exemple de dispositif de traitement de données conforme à l'invention tel que représenté à la figure 5(a). L'interface de communication 530 est dans ce cas réalisée au moyen des contacts de la carte à microcircuit ou bien d'une antenne logée dans le corps de carte. La carte à microcircuit incorpore un microprocesseur 510, une mémoire vive 560 et une mémoire non volatile 520 comme cela est représenté sur la figure 5(a). Cette carte à microcircuit est par exemple conforme à la norme ISO 7816 et munie d'un microcontrôleur sécurisé qui regroupe le microprocesseur (ou CPU) 520 et la mémoire vive 560. Les données d'entrée X sont par exemple des commandes APDU, et les données de sortie des réponses APDU. Dans une variante, le dispositif de traitement de données peut être une clef USB, un document ou un support d'informations papier comportant dans l'une de ses feuilles un microcircuit associé à des moyens de communication sans contact. Il s'agit de manière préférée d'une entité électronique portable ou de poche. Le dispositif est par exemple sécurisé. Par exemple, le dispositif comporte des moyens aptes à le protéger contre des attaques visant à obtenir frauduleusement les données secrètes qu'il mémorise (par exemple, une clé cryptographique) telle que les attaques par fautes et/ou par analyse de canaux cachés (en anglais , « side channel attacks »). En particulier, le dispositif est conforme à la norme FIPS ou aux critères communs.30 REVENDICATIONS1. Procédé de génération sécurisé d'un nombre premier p, mis en oeuvre par un composant électronique, comprenant au moins une étape d'incrémentation par un pas a d'un nombre vo qualifié de composite, ledit procédé de génération sécurisé étant caractérisé en ce qu'il comprend une étape de détermination d'un autre pas a' en fonction dudit pas a et d'un nombre aléatoire Ô , et en ce que ladite étape d'incrémentation utilise ledit autre pas a' déterminé. 2. Procédé de génération sécurisé selon la revendication 1, caractérisé en ce que ladite étape de détermination délivre ledit autre pas suivant : a' = 6 .a . 3. Procédé de génération sécurisé selon l'une quelconque des revendications 1 et 2, caractérisé en ce que ledit autre pas a' est premier avec ledit nombre vo à incrémenter. 4. Procédé de génération sécurisé selon l'une quelconque des revendications 1 à 3, caractérisé en ce que ledit nombre premier p est un nombre premier fort, et en ce que, ledit pas a est un produit de deux nombres premiers pi, p2 respectivement d'une taille de kl bits et de k2 bits avec kp k2 101. 5. Procédé de génération sécurisé selon la revendication 4, caractérisé en ce qu'il comprend au moins une autre étape d'incrémentation pour laquelle un autre pas déterminé est utilisé. 6. Procédé de génération sécurisé selon la revendication 4 caractérisé en ce que chaque étape d'incrémentation utilise un autre pas déterminé. 7. Procédé de génération sécurisé selon l'une quelconque des revendications 1 à 6, caractérisé en ce que ledit nombre aléatoire 6 correspond à 2a où a est un nombre aléatoire non nul. 8. Procédé de génération sécurisé selon la revendication 7 caractérisé en ce que ledit nombre aléatoire o comprend 4 bits ou 2 bits d'entropie. 9 . Procédé de génération sécurisé selon l'une quelconque des revendications 1 à 8 caractérisé en ce que chaque étape de criblage comprend une liste L distincte des autres listes. 10. Procédé de génération sécurisé selon la revendication 4, caractérisé en ce qu'il comprend une étape de détermination d'un élément Rp =[(P2-1 mod 191).P 2 - (191-1 mod P2).Pilmod PiP 2 - 11. Procédé de génération sécurisé selon l'une quelconque des revendications 1 à 10, caractérisé en ce qu'il comprend une étape de réalisation d'un test de primalité de Lucas-Lehmer ne procédant pas au calcul du symbole de Jacobi 9 0 , , 12. Procédé de génération sécurisé selon la revendication 4 caracterise en ce qu'il comprend une étape de détermination du plus grand commun diviseur entre un nombre à tester et un exposant public e, effectuée après la réalisation d'au moins un test de Rabin- Miller et/ou de Lucas-Lehmer. 13. Procédé de génération sécurisé selon la revendication 4 caractérisé en ce que les nombres kl et k2 soient choisis de sorte que k1 E [[101;12 q et k2 E [[101;12 . 14. Produit programme d'ordinateur, comprenant des instructions de code de programme pour la mise en oeuvre du procédé selon au moins une des revendications 1 à 13 lorsque ledit programme est exécuté sur un ordinateur. 15. Composant électronique comportant des moyens adaptés à la mise en oeuvre du procédé conforme à l'une quelconque des revendications 1 à 13.20