FR2984547A1 - Cryptographic key generating method for e.g. integrated circuit of chip card, involves keeping generated candidate prime number as candidate prime number only if quotient calculated from integer division of integer by prime number is odd - Google Patents
Cryptographic key generating method for e.g. integrated circuit of chip card, involves keeping generated candidate prime number as candidate prime number only if quotient calculated from integer division of integer by prime number is odd Download PDFInfo
- Publication number
- FR2984547A1 FR2984547A1 FR1161739A FR1161739A FR2984547A1 FR 2984547 A1 FR2984547 A1 FR 2984547A1 FR 1161739 A FR1161739 A FR 1161739A FR 1161739 A FR1161739 A FR 1161739A FR 2984547 A1 FR2984547 A1 FR 2984547A1
- Authority
- FR
- France
- Prior art keywords
- prime
- prime number
- bits
- procedure
- size
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7204—Prime number generation or prime number testing
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
Description
PROCEDE DE GENERATION DE NOMBRES PREMIERS PROUVES ADAPTE AUX CARTES A PUCE La présente invention concerne la cryptographie et en particulier la génération de nombres premiers. Elle concerne également les circuits intégrés tels que ceux équipant les cartes à puce, et la génération de nombres premiers dans de tels circuits intégrés. The present invention relates to cryptography and in particular to the generation of prime numbers. It also relates to integrated circuits such as those fitted to smart cards, and the generation of prime numbers in such integrated circuits.
Depuis l'invention de Diffie et Hellman en 1976, la cryptographie à clé publique s'est considérablement développée. Aujourd'hui, elle est utilisée dans de nombreuses applications, telles que des applications de paiement, de commerce électronique, et d'identification, ainsi que pour chiffrer et signer des données, et dans de nombreux dispositifs tels que des cartes à puce, des clés USB et de nombreux microprocesseurs et ordinateurs. La plupart des systèmes de cryptographie comme RSA (Rivest, Shamir, Adleman), DSA (Digital Signature Algorithm) et DH (Diffie Hellman key exchange) sont basés sur l'utilisation de grands nombres premiers pour générer des clés cryptographiques, ou plus généralement des données secrètes susceptibles d'être utilisées dans des transactions nécessitant un certain degré de sécurité. La sécurité de ces systèmes de cryptographie est donc directement liée à la taille des nombres premiers utilisés. En raison de l'évolution permanente de la technologie et en particulier des capacités de calcul des ordinateurs, les systèmes de cryptographie utilisent des clés cryptographiques de plus en plus grandes et donc des nombres premiers également de plus en plus grands. Ainsi, certains organismes bancaires recommandent aujourd'hui d'utiliser des nombres premiers de 1024 bits, voire dans certaines applications, de 2048 bits. Since the invention of Diffie and Hellman in 1976, public key cryptography has grown considerably. Today, it is used in many applications, such as payment, e-commerce, and identification applications, as well as for encrypting and signing data, and in many devices such as smart cards, USB sticks and many microprocessors and computers. Most cryptographic systems like RSA (Rivest, Shamir, Adleman), DSA (Digital Signature Algorithm) and DH (Diffie Hellman Key Exchange) are based on the use of large prime numbers to generate cryptographic keys, or more generally secret data that can be used in transactions requiring a certain degree of security. The security of these cryptographic systems is therefore directly related to the size of the prime numbers used. Due to the constant evolution of technology and in particular computing capabilities of computers, cryptographic systems use increasingly larger cryptographic keys and therefore also larger prime numbers. Thus, some banking organizations today recommend using prime numbers of 1024 bits, or even in some applications, of 2048 bits.
Habituellement, la génération d'un nombre premier consiste à choisir aléatoirement un nombre et à vérifier qu'il est premier, par exemple en appliquant un test de primalité tel que le test de Miller-Rabin. Si le nombre choisi ne satisfait pas au test de primalité, un nouveau nombre est alors choisi. Le choix d'un nouveau nombre diffère d'une méthode à l'autre. Il s'avère que la génération d'un nombre premier constitue la tâche de calcul la plus lourde à mettre en oeuvre dans les systèmes de cryptographie couramment utilisés aujourd'hui. Il y a une dizaine d'années, il était impensable de faire réaliser cette tâche de génération de nombres premiers dans un microcircuit de carte à puce en raison des faibles capacités de calcul et de stockage de ce dernier. Cette tâche était donc réalisée par un puissant ordinateur, et la donnée secrète générée à partir du nombre premier était transmise de manière sécurisée au microcircuit lors d'une étape d'initialisation du circuit en usine. Les microcircuits de carte à puce actuels sont généralement équipés 10 de coprocesseurs cryptographiques pour accélérer certaines opérations comme les multiplications de grands nombres et les opérations d'exponentiation modulaire, et présentent une capacité de stockage de plus en plus importante. Ces perfectionnements permettent d'envisager de générer de grands nombres premiers directement dans la carte à puce. 15 Cette approche apporte une plus grande sécurité puisqu'elle s'affranchit du risque de piratage de l'ordinateur ayant généré la donnée secrète, ou de piratage de la transmission de cette dernière à la carte à puce. En outre, grâce à cette approche, l'entité émettrice de la carte à puce ne peut pas connaître la donnée secrète si celle-ci est générée dans la carte. Cette 20 approche permet également au microcircuit de regénérer un nombre premier, ainsi que des données secrètes basées sur ce nombre premier, lorsque cela s'avère nécessaire. Cependant, les capacités de calcul et de mémorisation des microcircuits de carte à puce demeurent réduites comparativement à celles 25 d'un ordinateur de bureau, et en mode opérationnel, le temps de génération d'une clé doit rester inférieur à une limite acceptable pour l'utilisateur. Il apparaît donc souhaitable de développer un procédé de génération de grands nombres premiers qui nécessite de faibles moyens de calcul et de stockage, compatibles avec ceux équipant les cartes à puce. 30 Les méthodes classiques de génération de nombres premiers reposent sur l'usage de tests de primalité probabilistes tels que les tests de Miller-Rabin et de Lucas. Cependant un test probabiliste n'offre pas par définition une certitude absolue qu'un nombre généré soit premier et donc ne permet pas d'obtenir des nombres premiers prouvés. Pourtant une telle certitude offrirait un niveau de sécurité supérieur, ce qui est généralement recherché dans les systèmes de cryptographie. Le niveau de confiance d'un tel test peut être augmenté en exécutant plusieurs itérations du test. Ainsi, la génération d'un nombre premier de 1024 bits avec un niveau de confiance suffisant requiert 40 itérations du test de Miller-Rabin. Ce nombre d'itérations peut être réduit à 3 lorsque le test de Miller-Rabin est suivi du test de Lucas. Le test de Lucas s'avère toutefois peu compatible avec les capacités des cartes à puce. Par ailleurs, en dépit des améliorations importantes apportées aux microcircuits intégrés dans les cartes à puces, le développement d'un logiciel adapté à un tel microcircuit reste délicat. Les microcircuits de carte à puce constituent un environnement présentant de multiples contraintes comparativement aux ordinateurs de bureau ou aux microprocesseurs équipant des appareils multimédia. En effet, la capacité des mémoires présentes dans ces microcircuits reste réduite. Certaines opérations cryptographiques mises en oeuvre par les algorithmes cryptographiques tels que DES (Digital Encryption System), AES (Advanced Encryption System), RSA (Rivest, Shamir, Adleman) et ECC (Elliptic Curve Cryptography) nécessitent d'être déportées dans un coprocesseur pour être réalisées suffisamment efficacement. Ainsi, les opérations d'exponentiation modulaire constituent les opérations les plus coûteuses dans les systèmes cryptographiques tels que RSA et DSA (Digital Signature Algorithm) embarqués dans un microcircuit de carte à puce. De telles opérations d'exponentiation peuvent être également nécessaires pour la génération de nombres premiers. Il est également nécessaire que le microcircuit reste protégé contre des attaques visant à découvrir les données secrètes mémorisées ou manipulées par le microcircuit. Ces dernières années sont apparues un grand nombre de types d'attaques, si bien que le développement d'un microcircuit protégé contre tous les types d'attaques connus relève du défit pour les fabricants de produits de sécurité embarqués. Pourtant, il peut être souhaitable de générer des nombres premiers par une méthode et qui puisse être embarquée dans un microcircuit de carte à puce. Usually, the generation of a prime number is to randomly select a number and verify that it is prime, for example by applying a primality test such as the Miller-Rabin test. If the chosen number does not satisfy the primality test, a new number is chosen. The choice of a new number differs from one method to another. It turns out that the generation of a prime number is the heavier calculation task to implement in the cryptography systems commonly used today. Ten years ago, it was unthinkable to have this task of generating prime numbers performed in a smart card microcircuit because of its low computing and storage capacities. This task was therefore performed by a powerful computer, and the secret data generated from the prime number was securely transmitted to the microcircuit during a circuit initialization step in the factory. Current smart card microcircuits are generally equipped with cryptographic coprocessors to accelerate certain operations such as large number multiplications and modular exponentiation operations, and have an increasing storage capacity. These improvements make it possible to consider generating large prime numbers directly in the smart card. This approach provides greater security since it eliminates the risk of piracy of the computer that generated the secret data, or piracy of the transmission of the latter to the smart card. In addition, thanks to this approach, the issuer of the smart card can not know the secret data if it is generated in the card. This approach also allows the microcircuit to regenerate a prime number, as well as secret data based on that prime number, where necessary. However, the smart card microcircuit calculation and storage capabilities remain small compared to those of a desktop computer, and in operational mode, the key generation time must remain below an acceptable limit for the chip. 'user. It therefore seems desirable to develop a method of generating large prime numbers which requires low computing and storage means, compatible with those equipping smart cards. Conventional methods of generating prime numbers rely on the use of probabilistic primality tests such as the Miller-Rabin and Lucas tests. However a probabilistic test does not offer by definition an absolute certainty that a generated number is prime and therefore does not allow to obtain proven prime numbers. Yet such certainty would provide a higher level of security, which is generally sought in cryptographic systems. The confidence level of such a test can be increased by performing several iterations of the test. Thus, generating a prime number of 1024 bits with a sufficient level of confidence requires 40 iterations of the Miller-Rabin test. This number of iterations can be reduced to 3 when the Miller-Rabin test is followed by the Lucas test. The Lucas test, however, is not very compatible with the capabilities of smart cards. Moreover, in spite of the significant improvements made to microcircuits integrated in smart cards, the development of a software adapted to such a microcircuit remains delicate. Smart card microcircuits are an environment with multiple constraints compared to desktop computers or microprocessors on multimedia devices. Indeed, the capacity of the memories present in these microcircuits remains reduced. Some cryptographic operations implemented by cryptographic algorithms such as DES (Digital Encryption System), AES (Advanced Encryption System), RSA (Rivest, Shamir, Adleman) and ECC (Elliptic Curve Cryptography) require to be deported in a coprocessor for be performed efficiently enough. Thus, modular exponentiation operations are the most expensive operations in cryptographic systems such as RSA and DSA (Digital Signature Algorithm) embedded in a smart card microcircuit. Such exponentiation operations may also be necessary for the generation of prime numbers. It is also necessary that the microcircuit remains protected against attacks to discover the secret data stored or manipulated by the microcircuit. In recent years there have been many types of attacks, so the development of a microcircuit protected against all types of known attacks is a challenge for manufacturers of embedded security products. However, it may be desirable to generate prime numbers by a method and which can be embedded in a smart card microcircuit.
A cet effet, il existe des procédés itératifs de génération de grands nombres premiers prouvés à partir d'un nombre premier prouvé de relativement petite taille qui peut être inférieure 32 bits. Ainsi, les publications [3] et [4] décrivent de tels procédés. Toutefois, ces procédés font appel à la technique du crible d'Eratosthène pour générer un premier nombre premier de petite taille. Cette technique consiste à choisir aléatoirement un nombre candidat premier de la taille souhaitée et à tester la divisibilité du nombre candidat par tous les nombres premiers inférieurs à la racine carrée du nombre candidat premier. Même si elle est appliquée à des nombres candidats premiers de taille comprise entre 16 et 32 bits, cette technique s'avère inadaptée aux capacités de calcul et de mémorisation des microcircuits équipant les cartes à puces actuelles. Il peut donc être donc souhaitable de pouvoir générer un nombre premier prouvé de petite taille, inférieure à 50 bits, par un procédé qui puisse être mis en oeuvre dans un microcircuit de carte à puce. Des modes de réalisation concernent un procédé itératif de génération d'un nombre premier, mis en oeuvre dans un dispositif électronique, le procédé comprenant des étapes consistant à : générer un premier nombre premier formé d'un nombre réduit de bits inférieur à un nombre de bits maximum, et exécuter plusieurs étapes de génération d'un nouveau nombre premier, à partir d'un nombre premier obtenu à une étape de génération précédente, jusqu'à obtenir un nombre premier formé d'un nombre de bits souhaité, chaque nouveau nombre premier obtenu étant formé d'un nombre de bits supérieur au nombre de bits du nombre premier obtenu à l'étape de génération précédente. Selon un mode de réalisation, le premier nombre premier est obtenu en choisissant aléatoirement un nombre formé du nombre réduit de bits et en lui appliquant successivement un nombre limité de tests de primalité comportant plusieurs tests de Miller-Rabin appliqués à différentes bases, jusqu'à obtenir un nombre ayant passé avec succès les tests de Miller-Rabin, le nombre de bits maximum et les valeurs des bases étant choisis pour prouver la primalité du premier nombre premier, chacune des étapes du procédé comprenant des opérations d'exponentiation modulaire exécutées au moyen d'un bloc de calcul du dispositif électronique. For this purpose, there are iterative methods of generating large prime numbers proved from a proved prime number of relatively small size which may be smaller than 32 bits. Thus, publications [3] and [4] describe such methods. However, these methods use the Eratosthene sieve technique to generate a first small prime number. This technique involves randomly selecting a prime candidate number of the desired size and testing the divisibility of the candidate number by all prime numbers less than the square root of the prime candidate number. Even if it is applied to first candidate numbers of size between 16 and 32 bits, this technique proves to be unsuited to the calculation and memorization capabilities of the microcircuits fitted to the current smart cards. It may therefore be desirable to be able to generate a proved prime number of small size, less than 50 bits, by a method that can be implemented in a chip card microcircuit. Embodiments provide an iterative method for generating a prime number implemented in an electronic device, the method comprising the steps of: generating a first prime number consisting of a reduced number of bits less than a number of maximum bits, and execute several steps of generating a new prime number, from a prime number obtained at a preceding generation step, until a prime number of a desired number of bits is obtained, each new number first obtained being formed of a number of bits greater than the number of bits of the prime number obtained in the preceding generation step. According to one embodiment, the first prime number is obtained by randomly selecting a number formed from the reduced number of bits and successively applying to it a limited number of primality tests comprising several Miller-Rabin tests applied to different bases, up to obtaining a number having successfully passed the Miller-Rabin tests, the maximum number of bits and the values of the bases being chosen to prove the primality of the first prime number, each of the process steps comprising modular exponentiation operations executed by means of a computing block of the electronic device.
Selon un mode de réalisation, les tests de Miller-Rabin appliqués au nombre choisi aléatoirement, sont effectués en bases 2, 7 et 61, et le nombre de bits maximum est choisi inférieur ou égal à 32. Selon un mode de réalisation, les tests de Miller-Rabin sont précédés 5 d'un test de Fermat en base 2. Selon un mode de réalisation, les tests de Miller-Rabin appliqués au nombre choisi aléatoirement, sont effectués en bases 2, 3, 5, 7, 11, 13 et 17, et le nombre de bits maximum est choisi inférieur ou égal à 48. Selon un mode de réalisation, les tests de Miller-Rabin appliqués au 10 nombre choisi aléatoirement sont précédés d'un test de divisibilité du nombre choisi aléatoirement par des nombres d'une liste des plus petits nombres premiers. Selon un mode de réalisation, la génération d'un nouveau nombre premier comprend des étapes de : calcul d'un nombre candidat premier Pr 15 par la formule suivante : Pr = 2P.R +1 P étant le nombre premier obtenu à l'étape de génération précédente, et R étant un nombre entier choisi dans l'intervalle [I + 1, 21] avec : 2L-1 2P 20 L étant le nombre de bits du nouveau nombre premier à générer, et application du test de primalité de Pocklington au nombre candidat premier Pr, le nombre candidat premier étant le nouveau nombre premier s'il vérifie le test de Pocklington. Selon un mode de réalisation, si le nombre candidat premier ne 25 vérifie par le test de Pocklington, un nouveau nombre candidat premier est calculé à partir d'un nouveau nombre entier choisi dans l'intervalle [I +1, 21] . Selon un mode de réalisation, le nouveau nombre entier est choisi aléatoirement ou en incrémentant le nombre entier utilisé pour calculer le 30 nombre candidat premier précédent ne vérifiant pas le test de Pocklington. Selon un mode de réalisation, la taille en nombre de bits du nombre candidat premier suivant est égale à deux fois la taille du nombre premier généré à l'étape de génération précédente, à une unité près. Selon un mode de réalisation, la taille en nombre de bits du nombre 35 candidat premier suivant est égale à trois fois la taille du nombre premier généré à l'étape de génération précédente, à une unité près, le nombre I= candidat premier généré n'étant retenu que si le quotient de la division entière du nombre entier par le nombre premier généré à l'étape de génération précédente est impair. Des modes de réalisation concernent également un procédé de cryptographie mis en oeuvre dans un dispositif électronique et comprenant des étapes consistant à : générer des nombres premiers, générer des clés cryptographiques à partir des nombres premiers, les nombres premiers étant générés par le procédé tel que précédemment défini. Des modes de réalisation concernent également un dispositif électronique comprenant un bloc de calcul pour exécuter des multiplications de nombres de grande taille et/ou des opérations d'exponentiation modulaire, et configuré pour mettre en oeuvre le procédé de génération d'un nombre premier, tel que défini précédemment. Des modes de réalisation concernent également un circuit intégré sur microplaquette de semiconducteur, comprenant un dispositif tel que défini précédemment. Des exemples de réalisation de l'invention seront décrits dans ce qui suit, à titre non limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente une séquence d'étapes configurée pour générer un nombre premier de grande taille, selon un mode de réalisation, la figure 2 représente une séquence d'étapes configurée pour générer un nombre premier de petite taille, selon un mode de réalisation, la figure 3 représente une séquence d'étapes configurée pour générer un nombre premier à partir d'un nombre premier de taille inférieure, selon un mode de réalisation, la figure 4 représente une séquence d'étapes mettant en oeuvre un test déterministe de primalité, selon un mode de réalisation. la figure 5 représente une séquence d'étapes configurée pour générer un premier nombre premier de petite taille, selon un autre mode de réalisation, les figures 6 et 7 représentent des séquences d'étapes configurées pour générer un nombre premier à partir d'un nombre premier de taille inférieure, selon d'autres modes de réalisation, la figure 8 représente une séquence d'étapes configurée pour tester la divisibilité d'un nombre par une liste de nombres premiers, la figure 9 représente une séquence d'étapes mettant en oeuvre un test déterministe de primalité, selon un autre mode de réalisation. la figure 10 représente une séquence d'étapes configurée pour générer un nombre premier de grande taille, selon un autre mode de réalisation, la figure 11 représente une séquence d'étapes configurée pour générer un nombre premier à partir d'un nombre premier de taille inférieure, adaptée à la séquence d'étapes de la figure 9, les figures 12 et 13 représentent des séquences d'étapes configurées pour générer un nombre premier de grande taille, selon d'autres modes de réalisation, la figure 14 représente schématiquement un exemple de dispositif électronique pouvant mettre en oeuvre les diverses séquences d'étapes présentées dans les figures 1 à 13, les figures 15 et 16 représentent des séquences d'étapes de génération de clés cryptographiques, utilisant des nombres premiers. Selon un mode de réalisation, il est proposé de générer un nombre premier d'une certaine taille en nombre de bits en se basant sur un théorème dérivé du théorème de Pocklington, qui est formulé comme suit : Soient P un nombre premier supérieur à 2 et R un nombre entier inférieur à P, le nombre N obtenu par l'équation suivante : N = 2R.P+1 (1) est premier s'il existe un nombre entier A supérieur ou égal à 2 et inférieur à N tel que : AN-1 =1 mod N , et (2) GCD(A2R -1,N) =1, (3) mod représentant l'opération modulo et GCD(x,y) étant une fonction donnant le plus grand commun diviseur des nombres x et y. Ce théorème permet d'obtenir un nombre premier à partir d'un nombre premier de taille inférieure. Ce théorème peut donc être appliqué en plusieurs itérations, à partir d'un nombre premier de petite taille obtenu par un autre procédé, puis à partir du nombre premier obtenu lors de l'itération précédente, jusqu'à l'obtention d'un nombre premier de la taille souhaitée. Etant donné la relation entre les nombres N et P, un simple choix de la taille du nombre R peut permettre d'obtenir un nouveau nombre premier ayant 2 98454 7 8 une taille égale sensiblement au double de la taille du nombre premier P. Il est à noter que le caractère premier des nombres obtenus en appliquant ce théorème est prouvé, par opposition au caractère probabiliste de nombres premiers obtenus par certains procédés connus, par exemple basés sur le 5 test de Fermat ou de Miller-Rabin. Ainsi, la figure 1 représente des étapes S1 à S9 d'une procédure GNLP de génération d'un grand nombre premier. La procédure GNLP reçoit en tant que paramètre d'entrée la taille Ln en nombre de bits du nombre premier à générer. Les étapes S1 à S3 permettent de déterminer la taille L 10 (en nombre de bits) d'un premier nombre premier à générer à partir de la taille Ln du nombre premier à générer. A l'étape S1, la taille Ln reçue en paramètre est chargée dans une variable locale L. A l'étape S2, la variable L reçue en entrée de la procédure est comparée à une valeur maximum LL du premier nombre premier, par 15 exemple égale à 32 ou 48 bits. Aux étapes S2 et S3, tant que la variable L est plus grande que la taille maximum LL, la valeur de la variable L est divisée par 2 (reçoit quotient de la division entière de L par 2). Lorsque la variable L est inférieure à la taille maximum LL, la taille L est incrémentée de un à l'étape S4. 20 Il est à noter que si la mémoire du circuit destiné à exécuter la procédure GNLP le permet, les étapes S2 à S4 peuvent être remplacées par la lecture d'une table indexée par taille Ln de nombre premier à générer et donnant la taille LO du premier nombre à générer. En effet, la taille Ln est généralement limitée à un nombre réduit de valeurs possibles, notamment 25 des puissances de 2. Un exemple de cette table lorsque la valeur maximum LL est égale à 32, est donné par la table 1 suivante : Table 1 Ln 512 768 1024 2048 LO 17 25 17 17 k 5 5 6 7 A l'étape S5 suivant l'étape S4, est appelée une procédure INTP de détermination d'un premier nombre premier prouvé ayant la taille L. La 30 procédure reçoit en paramètre d'entrée la variable L et optionnellement le produit Ilv des v plus petits nombres premiers, par exemple inférieurs à 100 ou 200 (y compris entre 25 et 46). La procédure INTP fournit un nombre premier Pr de la taille L. A l'étape S6, la variable L est comparée avec la taille Ln du nombre premier à générer. Cette étape marque l'entrée d'une boucle de traitement dans laquelle les étapes S7 à S9 sont exécutées à chaque itération de la boucle de traitement, jusqu'à ce que la taille Ln du nombre premier à générer soit atteinte. Les valeurs de k fournies dans la table 1 représentent le nombre d'itérations effectuées par la procédure GNLP, en fonction de la taille Ln du nombre premier à générer. A l'étape S6, si la variable L est inférieure à la taille Ln, les étapes S7 à S9 sont exécutées, sinon la procédure GNLP se termine en fournissant le dernier nombre Pr obtenu qui est un nombre premier prouvé de Ln bits. A l'étape S7, une variable P reçoit le dernier nombre premier Pr obtenu. A l'étape S8, la valeur de la variable L est doublée à une unité près (= 2L-1) sans dépasser la taille Ln du nombre premier à générer. Le calcul de la taille L du nombre premier suivant à générer, effectué à l'étape S8, permet de réaliser la condition R < P du théorème énoncé précédemment. A l'étape S9, une procédure GNSP est appelée avec pour paramètres d'entrée les variables P et L. La procédure GNSP fournit un nombre premier Pr prouvé ayant la taille L à partir du nombre premier P de taille inférieure fourni en entrée. A cet effet, la procédure GNSP se base sur le théorème de Pocklington ou le théorème dérivé énoncé précédemment. Selon un mode de réalisation, le premier nombre premier prouvé de petite taille fourni par la procédure INTP est obtenu en choisissant de manière aléatoire un nombre ayant une taille inférieure à 32 bits, et en appliquant le test probabiliste de Miller-Rabin, successivement en base 2, 7 et 61. En effet, Pomerance et al. (cf. publication [1]) et Jaechke (cf. publication [2]) ont démontré que tout nombre entier ayant une taille inférieure à 32 bits est avec certitude premier, s'il passe avec succès le test de Miller-Rabin dans les bases 2, 7 et 61. Le paramètre LL dans la procédure GNLP est alors fixé à 32 et représente la taille maximum en nombre de bits que peut avoir le nombre premier généré par la procédure INTP. Le test de Miller-Rabin consiste à décomposer un nombre candidat premier N à tester, diminué de 1, de la manière suivante : N -1= 2S x D , (4) S étant un nombre entier, D étant un nombre impair, et en vérifiant que pour un nombre A appelé "base", inférieur et premier avec N, l'une des équations suivantes est satisfaite : AD =1 mod N , (5) A2 RD 1 mod N, (6) R étant un nombre entier compris entre 0 et S-1. Ainsi, selon le test de Miller-Rabin, le nombre N est probablement premier si l'une ou l'autre des équations (4) et (5) est satisfaite. Le premier nombre premier est donc obtenu en appliquant successivement trois fois le test de Miller-Rabin, avec le nombre A choisi successivement égal à 2, 7 et 61, et en écartant les nombres candidats N ne vérifiant pas le test en base 2, 7 ou 61. Selon un autre mode de réalisation, l'application des tests de Miller-Rabin en bases 2, 7 et 11 est précédée d'une étape de test de la divisibilité du nombre candidat premier par les v plus petits nombres premiers, v étant compris entre 10 et 30. En d'autres termes, un nombre candidat N est écarté s'il est divisible par l'un des v plus petits nombres premiers. Selon un autre mode de réalisation, l'application du test de Miller-Rabin en bases 2, 7 et 11 est précédé d'une étape d'application du test probabiliste de Fermat en base 2. Selon le test de Fermat, le nombre N est probablement premier si la condition suivante est satisfaite : AN-1 =1 mod N , (7) dans laquelle A est un nombre entier représentant la base (choisie égale à 2). Selon un mode de réalisation, le premier nombre premier de petite taille est obtenu en exécutant une séquence d'étapes telle que représentée sur la figure 2. La figure 2 représente une procédure INTP recevant en paramètre d'entrée la taille L du nombre premier à générer et le produit Ilv des v plus petits nombres premiers, et fournissant un nombre premier Pr de la taille L, L étant inférieur à 32. La procédure INTP comprend des étapes S21 à S24b. A l'étape S21, un nombre impair Pr de taille L est choisi aléatoirement à l'aide d'une fonction aléatoire ou pseudo-aléatoire RND. Les étapes S22 à S24b sont des tests de primalité appliqués successivement au nombre Pr. A l'étape S22, il est recherché si le nombre Pr est divisible par l'un des v nombres premiers du produit Ilv et le test échoue si le nombre Pr est divisible par l'un des v nombres du produit 11v . Ce test peut être effectué en recherchant le plus grand commun diviseur GCD du nombre Pr et du produit , le nombre Pr n'étant divisible par aucun des v plus petits nombres premiers si le plus grand commun diviseur ainsi calculé est égal à 1. Le produit 11v peut ne pas comprendre le nombre 2 si le nombre Pr est choisi impair à l'étape S21. Au lieu de recevoir le produit 11v , la procédure peut recevoir les v premiers nombres premiers sous la forme de la liste Q, et l'étape 22 peut consister à tester successivement la divisibilité du nombre Pr par chacun des nombres premiers de la liste Q. A l'étape S23, le test de Fermat en base 2 est appliqué au nombre Pr. Aux étapes S24, S24a et S24b, les tests de Miller-Rabin en bases 2, 7 et 61 sont respectivement et successivement appliqués au nombre Pr. Si l'un des tests échoue, l'étape S21 est à nouveau exécutée pour choisir un autre nombre Pr. Si l'un des tests est exécuté avec succès à l'une des étapes S22 à S24a, l'étape suivante S23 à S24b est exécutée. Si le dernier test de primalité exécuté à l'étape S24b est exécuté avec succès, la procédure INTP se termine en fournissant le nombre Pr dont la primalité est ainsi prouvée. Au lieu de choisir aléatoirement un nouveau nombre Pr à l'étape S21 si l'un des tests effectué aux étapes S23 à S24b échoue, le nombre Pr peut être incrémenté de deux. La figure 3 représente des étapes S31 à S34 de la procédure GNSP, selon un mode de réalisation. Les étapes S31 à S34 sont exécutées successivement. A l'étape S31, un nombre I est calculé par la formule suivante : 2L-1 (8) 2P P étant un nombre premier, L étant la taille d'un nouveau nombre premier à générer, P et L étant reçus en paramètres d'entrée de la procédure GNSP, et -x représentant le quotient de la division entière de x par y. A l'étape Y S32, un nombre entier R est choisi à l'aide d'une fonction RND aléatoire ou pseudo-aléatoire dans l'intervalle [1+1, 2I] . A l'étape S33, un nombre candidat premier Pr est calculé par la formule (1). A l'étape S34, une procédure d'application du test de Pocklington PCKT est appelée. Cette procédure reçoit le nombre Pr à tester et le nombre 2 98454 7 12 R utilisé pour calculer le nombre Pr à l'étape S33, ainsi qu'optionnellement la taille en nombre de bits du nombre Pr. Cette procédure renvoie une variable booléenne à "Vrai" ("T" : "True") si le nombre Pr a passé avec succès le test de Pocklington, et à "Faux" ("F" : "False") dans le cas 5 contraire. Si la procédure PCKT retourne "Vrai", le nombre Pr est avec certitude premier et la procédure GNSP se termine en retournant le nombre Pr. Si la procédure PCKT retourne "Faux", les étapes S32 à S34 sont à nouveau exécutées. La figure 4 représente des étapes S52 à S56 de la procédure PCKT, 10 selon un mode de réalisation. Cette procédure applique successivement aux nombres P et R reçus en entrée par la procédure PCKT les tests correspondant aux équations (2) et (3). Si les nombres P et R réussissent les deux tests, la procédure PCKT retourne "Vrai" ("T"), sinon "Faux" ("F"). A l'étape S52, un nombre entier A est choisi à l'aide d'une fonction RND 15 aléatoire ou pseudo-aléatoire dans l'intervalle [2, P-2]. A l'étape S53, si le nombre P vérifie à l'équation (2), l'étape S54 est exécutée, sinon l'étape S55 est exécutée. A l'étape S54, si les nombres P et R vérifient l'équation (3), l'étape S56 est exécutée, sinon l'étape S55 est exécutée. A l'étape S55, une variable booléenne TST est mise à "Faux". A l'étape S56, la variable TST 20 est mise à "Vrai". La procédure PCKT se termine après l'étape S55 ou S56 en retournant la variable TST. Il est à noter que l'équation (3) testée à l'étape S54 peut être mise en oeuvre en calculant d'abord la quantité B = A2R - 1 mod P, puis en calculant GCD (B, P). 25 La figure 5 représente une procédure INTP1 de génération d'un premier nombre premier prouvé de petite taille, selon un autre mode de réalisation. Cette procédure est basée sur le fait qu'un nombre de moins de 48 bits ayant été testé avec succès par les tests de Miller-Rabin en bases 2, 3, 5, 7, 11, 13 et 17, est avec certitude un nombre premier. La procédure 30 INTP1 diffère de la procédure INTP en ce que les tests de primalité de Miller-Rabin en bases 7 et 61 sont remplacés par des tests de Miller-Rabin en bases 3, 5, 7, 11, 13 et 17, et en ce que le nombre premier obtenu peut avoir une taille pouvant atteindre 48 bits. La taille maximum LL dans la procédure GNLP peut alors être fixée à une valeur inférieure ou égale à 48. According to one embodiment, the Miller-Rabin tests applied to the randomly chosen number are performed in bases 2, 7 and 61, and the maximum number of bits is chosen less than or equal to 32. According to one embodiment, the tests of Miller-Rabin are preceded by a base 2 Fermat test. According to one embodiment, the Miller-Rabin tests applied to the randomly selected number are performed in bases 2, 3, 5, 7, 11, 13 and 17, and the maximum number of bits is chosen to be less than or equal to 48. According to one embodiment, the Miller-Rabin tests applied to the randomly selected number are preceded by a divisibility test of the number randomly selected by numbers. a list of the smallest prime numbers. According to one embodiment, the generation of a new prime number comprises steps of: calculating a first candidate number Pr 15 by the following formula: Pr = 2P.R +1 P being the prime number obtained in step of previous generation, and R being an integer selected in the range [I + 1, 21] with: 2L-1 2P 20 L being the number of bits of the new prime number to be generated, and application of the Pocklington primality test to the first candidate number Pr, the first candidate number being the new prime number if he checks the Pocklington test. According to one embodiment, if the first candidate number is not verified by the Pocklington test, a new prime candidate number is calculated from a new integer selected in the range [I + 1, 21]. According to one embodiment, the new integer is randomly selected or by incrementing the integer used to calculate the first preceding candidate number not verifying the Pocklington test. According to one embodiment, the number of bits of the next prime candidate number is twice the size of the prime number generated in the previous generation step, to one unit. According to one embodiment, the bit size of the next prime candidate number is equal to three times the size of the prime number generated in the preceding generation step, to one unit, the number I = first candidate generated 'being retained only if the quotient of the integer division of the integer by the prime number generated in the previous generation step is odd. Embodiments also relate to a cryptographic method implemented in an electronic device and comprising steps of: generating prime numbers, generating cryptographic keys from prime numbers, the prime numbers being generated by the method as above defined. Embodiments also relate to an electronic device comprising a calculation block for executing large number multiplications and / or modular exponentiation operations, and configured to implement the method of generating a prime number, such as than previously defined. Embodiments also relate to a semiconductor chip integrated circuit, comprising a device as defined above. Exemplary embodiments of the invention will be described in the following, without limitation in connection with the accompanying figures, in which: FIG. 1 represents a sequence of steps configured to generate a large first number, according to a mode FIG. 2 shows a sequence of steps configured to generate a small prime number, according to one embodiment, FIG. 3 represents a sequence of steps configured to generate a prime number from a prime number. 4, a smaller size, according to one embodiment, represents a sequence of steps implementing a deterministic primality test, according to one embodiment. FIG. 5 represents a sequence of steps configured to generate a first small prime number, according to another embodiment, FIGS. 6 and 7 represent sequences of steps configured to generate a prime number from a number first of smaller size, according to other embodiments, Figure 8 shows a sequence of steps configured to test the divisibility of a number by a list of prime numbers, Figure 9 shows a sequence of steps implementing a deterministic test of primality, according to another embodiment. FIG. 10 represents a sequence of steps configured to generate a large prime number, according to another embodiment, FIG. 11 represents a sequence of steps configured to generate a prime number from a prime number of size. lower, adapted to the sequence of steps of Figure 9, Figures 12 and 13 show sequences of steps configured to generate a large prime number, according to other embodiments, Figure 14 shows schematically an example As an electronic device capable of implementing the various sequence sequences shown in FIGS. 1 to 13, FIGS. 15 and 16 show sequences of cryptographic key generation steps, using prime numbers. According to one embodiment, it is proposed to generate a prime number of a certain size in number of bits based on a theorem derived from the Pocklington theorem, which is formulated as follows: Let P be a prime number greater than 2 and R an integer less than P, the number N obtained by the following equation: N = 2R.P + 1 (1) is prime if there is an integer A greater than or equal to 2 and less than N such that: AN-1 = 1 mod N, and (2) GCD (A2R -1, N) = 1, (3) mod representing the operation modulo and GCD (x, y) being a function giving the greatest common number divisor x and y. This theorem makes it possible to obtain a prime number from a prime number of smaller size. This theorem can therefore be applied in several iterations, starting from a prime number of small size obtained by another process, then starting from the prime number obtained during the previous iteration, until obtaining a number first of the desired size. Given the relationship between the numbers N and P, a simple choice of the size of the number R can make it possible to obtain a new prime number having a size substantially equal to twice the size of the prime number P. It is It should be noted that the prime character of the numbers obtained by applying this theorem is proved, as opposed to the probabilistic nature of prime numbers obtained by certain known methods, for example based on the Fermat or Miller-Rabin test. Thus, FIG. 1 represents steps S1 to S9 of a GNLP procedure for generating a large number of primes. The GNLP procedure receives as an input parameter the size Ln in number of bits of the prime number to be generated. Steps S1 to S3 make it possible to determine the size L (in number of bits) of a first prime number to be generated from the size Ln of the prime number to be generated. In step S1, the size Ln received as a parameter is loaded into a local variable L. In step S2, the variable L received at the input of the procedure is compared with a maximum value LL of the first prime number, for example equal to 32 or 48 bits. In steps S2 and S3, as long as the variable L is larger than the maximum size LL, the value of the variable L is divided by 2 (receives the quotient of the entire division of L by 2). When the variable L is less than the maximum size LL, the size L is incremented by one at step S4. It should be noted that if the memory of the circuit intended to execute the GNLP procedure allows it, the steps S2 to S4 can be replaced by reading a table indexed by size Ln of prime number to be generated and giving the size LO of the first number to generate. Indeed, the size Ln is generally limited to a reduced number of possible values, in particular powers of 2. An example of this table when the maximum value LL is equal to 32 is given by the following table 1: Table 1 Ln In step S5 following step S4, is called an INTP procedure for determining a first proved prime number having the size L. The procedure receives as a parameter input variable L and optionally the product Ilv v smaller prime numbers, for example less than 100 or 200 (including between 25 and 46). The INTP procedure provides a prime number Pr of the size L. In step S6, the variable L is compared with the size Ln of the prime number to be generated. This step marks the entry of a processing loop in which steps S7 to S9 are executed at each iteration of the processing loop, until the size Ln of the prime number to be generated is reached. The values of k provided in table 1 represent the number of iterations performed by the GNLP procedure, as a function of the size Ln of the prime number to be generated. In step S6, if the variable L is smaller than the size Ln, the steps S7 to S9 are executed, otherwise the GNLP procedure terminates by providing the last number Pr obtained which is a prime number proved of Ln bits. In step S7, a variable P receives the last prime number Pr obtained. In step S8, the value of the variable L is doubled to one unit (= 2L-1) without exceeding the size Ln of the prime number to be generated. Calculation of the size L of the next prime number to be generated, performed in step S8, makes it possible to carry out the condition R <P of the theorem previously stated. In step S9, a GNSP procedure is invoked with the P and L variables as input parameters. The GNSP procedure provides a proved prime number Pr having the size L from the smaller prime number P input provided. For this purpose, the GNSP procedure is based on the Pocklington theorem or the derived theorem previously stated. According to one embodiment, the first proved small prime number provided by the INTP procedure is obtained by randomly choosing a number having a size less than 32 bits, and applying the Miller-Rabin probabilistic test, successively in base 2, 7 and 61. Indeed, Pomerance et al. (see publication [1]) and Jaechke (see publication [2]) have shown that any integer with a size smaller than 32 bits is definitely prime, if it passes the Miller-Rabin test in the first place. bases 2, 7 and 61. The parameter LL in the GNLP procedure is then set to 32 and represents the maximum size in number of bits that can have the prime number generated by the INTP procedure. The Miller-Rabin test consists in decomposing a prime candidate number N to be tested, minus 1, in the following manner: N -1 = 2S x D, (4) S being an integer, D being an odd number, and by verifying that for a number A called "base", lower and prime with N, one of the following equations is satisfied: AD = 1 mod N, (5) A2 RD 1 mod N, (6) R being an integer between 0 and S-1. Thus, according to the Miller-Rabin test, the number N is probably prime if either of the equations (4) and (5) is satisfied. The first prime number is thus obtained by successively applying the Miller-Rabin test three times, with the number A chosen successively equal to 2, 7 and 61, and discarding the candidate numbers N not satisfying the test in base 2, 7 or 61. According to another embodiment, the application of the Miller-Rabin tests in bases 2, 7 and 11 is preceded by a step of testing the divisibility of the prime candidate number by the v smaller prime numbers, v being between 10 and 30. In other words, a candidate number N is discarded if it is divisible by one of the v smaller prime numbers. According to another embodiment, the application of the Miller-Rabin test in bases 2, 7 and 11 is preceded by a step of applying the Fermat probabilistic test in base 2. According to the Fermat test, the number N is probably prime if the following condition is satisfied: AN-1 = 1 mod N, (7) where A is an integer representing the base (chosen to be 2). According to one embodiment, the first small first number is obtained by executing a sequence of steps as shown in FIG. 2. FIG. 2 represents an INTP procedure receiving as input parameter the size L of the first number to generating and the product Ilv of v smaller prime numbers, and providing a prime number Pr of the size L, L being less than 32. The INTP procedure comprises steps S21 to S24b. In step S21, an odd number Pr of size L is randomly selected using a random or pseudo-random function RND. The steps S22 to S24b are primality tests successively applied to the number Pr. In step S22, it is searched if the number Pr is divisible by one of the v prime numbers of the product Ilv and the test fails if the number Pr is divisible by one of the v numbers of the product 11v. This test can be carried out by looking for the greatest common divisor GCD of the number Pr and the product, the number Pr not being divisible by any of the v smaller prime numbers if the greatest common divisor thus calculated is equal to 1. The product 11v may not understand the number 2 if the number Pr is odd selected in step S21. Instead of receiving the product 11v, the procedure can receive the first v prime numbers in the form of the Q list, and step 22 can consist of successively testing the divisibility of the number Pr by each of the prime numbers of the Q list. In step S23, the Fermat test in base 2 is applied to the number Pr. In steps S24, S24a and S24b, the Miller-Rabin tests in bases 2, 7 and 61 are respectively and successively applied to the number Pr. one of the tests fails, the step S21 is again executed to choose another number Pr. If one of the tests is executed successfully at one of the steps S22 to S24a, the next step S23 to S24b is executed. If the last primality test executed in step S24b is successfully executed, the INTP procedure terminates providing the number Pr whose primality is thus proved. Instead of randomly choosing a new number Pr in step S21 if one of the tests performed in steps S23 to S24b fails, the number Pr can be incremented by two. Fig. 3 shows steps S31 to S34 of the GNSP procedure, according to one embodiment. Steps S31 to S34 are executed successively. In step S31, a number I is calculated by the following formula: 2L-1 (8) 2P P being a prime number, L being the size of a new prime number to be generated, P and L being received as parameters input of the GNSP procedure, and -x representing the quotient of the integer division of x by y. In step S32, an integer R is chosen using a random or pseudo-random RND function in the interval [1 + 1, 2I]. In step S33, a prime candidate number Pr is calculated by the formula (1). In step S34, a procedure for applying the Pocklington PCKT test is called. This procedure receives the number Pr to be tested and the number R used to calculate the number Pr in step S33, as well as, optionally, the number-of-bits size of the number Pr. This procedure returns a boolean variable to " True "(" T ":" True ") if the number Pr has successfully passed the Pocklington test, and to" False "(" F ":" False ") in the opposite case. If the PCKT procedure returns "True", the number Pr is definitively prime and the GNSP procedure ends by returning the number Pr. If the PCKT procedure returns "False", the steps S32 to S34 are executed again. Fig. 4 shows steps S52 to S56 of the PCKT procedure, according to one embodiment. This procedure successively applies to the numbers P and R received at the input by the PCKT procedure the tests corresponding to the equations (2) and (3). If the numbers P and R pass both tests, the PCKT procedure returns "True" ("T"), otherwise "False" ("F"). In step S52, an integer A is selected using a random or pseudo-random RND function in the interval [2, P-2]. In step S53, if the number P satisfies in equation (2), step S54 is executed, otherwise step S55 is executed. In step S54, if the numbers P and R satisfy equation (3), step S56 is executed, otherwise step S55 is executed. In step S55, a Boolean variable TST is set to "False". In step S56, the TST variable 20 is set to "true". The PCKT procedure terminates after step S55 or S56 by returning the variable TST. It should be noted that the equation (3) tested in step S54 can be implemented by first calculating the quantity B = A2R-1 mod P, then by calculating GCD (B, P). FIG. 5 shows an INTP1 procedure for generating a first proved small prime number, according to another embodiment. This procedure is based on the fact that a number of less than 48 bits that has been successfully tested by Miller-Rabin tests in bases 2, 3, 5, 7, 11, 13 and 17, is definitely a prime number. . The INTP1 procedure differs from the INTP procedure in that the Miller-Rabin primality tests in bases 7 and 61 are replaced by Miller-Rabin tests in bases 3, 5, 7, 11, 13 and 17, and in the first number obtained can be up to 48 bits in size. The maximum size LL in the GNLP procedure can then be set to a value less than or equal to 48.
Ainsi, la procédure INTP1 comprend les étapes S21, S22 et S24 de la procédure INTP (figure 3). Ensuite la procédure INTP1 comprend des étapes S24c à S24h d'application du test de Miller-Rabin en bases 3, 5, 7, 11, 13 et 17. Si le nombre candidat premier Pr choisi à l'étape S21 réussi l'un des tests exécuté à l'une des étapes S22, S24, S24c à S24g, l'étape suivante S24, S24c à S24h est exécutée. Si le nombre premier Pr échoue à l'un des tests, un nouveau nombre candidat premier Pr est choisi à l'étape S21. Si le nombre candidat premier Pr vérifie tous les tests et en particulier le test de Miller-Rabin en base 17 exécuté à l'étape S24g, la procédure INTP1 se termine en fournissant le nombre Pr en tant que nombre premier prouvé. Comme la procédure INTP1 peut fournir un nombre premier proche de 48 bits au lieu d'un nombre premier proche de 32 bits pour la procédure INTP, cette procédure peut réduire le nombre d'itérations de la procédure GNLP. Thus, the procedure INTP1 comprises the steps S21, S22 and S24 of the INTP procedure (FIG. 3). Then the INTP1 procedure comprises steps S24c to S24h of application of the Miller-Rabin test in bases 3, 5, 7, 11, 13 and 17. If the first candidate number Pr chosen in step S21 succeeds one of the tests executed at one of the steps S22, S24, S24c to S24g, the next step S24, S24c to S24h is executed. If the prime number Pr fails one of the tests, a new prime candidate number Pr is selected in step S21. If the first candidate candidate number Pr checks all the tests and in particular the base 17 Miller-Rabin test executed in step S24g, the INTP1 procedure ends by supplying the number Pr as a proved prime number. Since the INTP1 procedure can provide a prime number close to 48 bits instead of a prime number close to 32 bits for the INTP procedure, this procedure can reduce the number of iterations of the GNLP procedure.
Il est à noter que l'étape S22 dans les procédures INTP et INTP1 est prévue pour éliminer des nombres candidats premiers plus facilement (à l'aide d'opérations moins coûteuses en ressources et en temps de calcul) qu'un test de Fermat ou de Miller-Rabin. L'étape S22 peut donc être omise sans affecter la primalité du nombre Pr fourni par la procédure INTP, INTP1. It should be noted that step S22 in the INTP and INTP1 procedures is intended to eliminate prime candidate numbers more easily (using less resource-intensive and time-consuming operations) than a Fermat or from Miller-Rabin. Step S22 can therefore be omitted without affecting the primality of the number Pr provided by the INTP procedure, INTP1.
Le test de Fermat exécuté à l'étape S23 de la procédure INTP est également prévu pour éliminer des nombres candidats premiers plus rapidement que le test de Miller-Rabin. Cette étape peut être également supprimée si les moyens de calcul utilisés pour mettre en oeuvre cette procédure peuvent exécuter efficacement (en un temps admissible pour l'utilisateur) les tests de Miller-Rabin. Le choix de la valeur du nombre v des plus petits nombres premiers utilisés à l'étape S22 peut être effectué en fonction de la durée globale d'exécution de la procédure INTP ou INTP1, sachant que plus on augmente la valeur y, plus la durée d'exécution de l'étape S22 augmente, et plus la durée globale d'exécution (nombre d'exécutions) des tests effectués aux étapes S23 à S24b ou S24 à S24h diminue. La figure 6 représente un autre mode de réalisation GNSP1 de la procédure GNSP de la figure 4. La procédure GNSP1 diffère de la procédure GNSP en ce qu'elle comprend trois étapes supplémentaires S35 à S37. Les étapes S35 à S37 sont exécutées au lieu de l'étape S32, si la procédure PCKT appelée à l'étape S34 retourne "Faux". A l'étape S35, le nombre R est incrémenté de 1. A l'étape S36, le nombre R est comparé au nombre 21, pour que R reste dans l'intervalle [I +1, 2I]. Si le nombre R est supérieur au nombre 21, les étapes S32 à S34 sont à nouveau exécutées pour choisir un nouveau nombre R aléatoirement dans l'intervalle [I +1, 2I], pour calculer un nouveau nombre candidat premier Pr et tester ce dernier. Si à l'étape S36, le nombre R est inférieur ou égal au nombre 21, l'étape S37, puis l'exécution de la procédure GNSP1 est poursuivie à l'étape S33. A l'étape S37, le nombre Pr est simplement incrémenté de deux fois le nombre premier P. Ce calcul résulte de l'incrémentation du nombre R effectuée à l'étape S38 et de la formule (1). De cette manière, le nombre Pr peut être mis à jour simplement par un décalage binaire du nombre P suivi d'une addition, au lieu d'une multiplication de grands nombres entiers comme dans la formule (1) mise en oeuvre à l'étape S33. L'étape S34 est exécutée après l'étape S37. Ainsi, les étapes S34 à S37 forment une première boucle de traitement dans laquelle le nombre R varie à partir de la valeur qui lui est attribuée à l'étape S33 jusqu'à la valeur 21, le cas échéant, et dans laquelle la primalité du nombre Pr correspondant au nombre R est testée de manière prouvée. Les étapes S32 à S37 forment une seconde boucle de traitement permettant d'exécuter la première boucle avec une nouvelle valeur de R choisie aléatoirement dans l'intervalle [1+1,21]. La figure 7 représente un autre mode de réalisation GNSP2 de la procédure GNSP1 de la figure 6. La procédure GNSP2 diffère de la procédure GNSP1 en ce qu'avant d'appliquer le test de Pocklington au nombre candidat premier Pr à l'étape S34, elle vérifie d'abord que le nombre Pr n'est divisible par aucun des nombres premiers de la liste Q. A cet effet, la procédure GNSP2 reçoit en paramètre d'entrée la liste Q en plus des paramètres P et L. La procédure GNSP2 comprend les étapes S31 à S37 de la figure 6, ainsi que des étapes supplémentaires S38 à S40. Les étapes S31 à S33 sont tout d'abord exécutées successivement. Les étapes S38 et S39 sont exécutées à la suite de l'étape S33. A l'étape S38, est appelée une procédure DVT de test de la divisibilité du nombre Pr par les nombre premiers de la liste Q. La procédure DVT reçoit en paramètres d'entrée le nombre Pr et la liste Q et fournit une variable booléenne TST à "Vrai" si le nombre Pr n'est pas divisible par les nombres de la liste Q et à "Faux" ("False") dans le cas contraire. A l'étape S39, la variable TST est testée. Si la variable TST est à "Vrai" ("True"), l'étape S34 est exécutée, sinon l'exécution de la procédure GNSP2 est poursuivie à l'étape S35. Selon le résultat de la comparaison effectuée à l'étape S36, la procédure GNSP2 se poursuit comme dans la procédure GNSP1 soit à l'étape S32 pour choisir aléatoirement une nouvelle valeur de R, soit à l'étape S35 pour calculer un nouveau nombre candidat premier Pr. Si à l'étape S39, la variable TST est à "Vrai", l'étape S34 est exécutée pour appliquer le test de Pocklington au nombre Pr en appelant la procédure PCKT. Si le nombre Pr vérifie le test de Pocklington, et donc est avec certitude un nombre premier, la procédure GNSP2 se termine en retournant le nombre Pr. Dans le cas contraire, la variable TST est mise à "Faux" à l'étape S40, et l'exécution de la procédure GNSP2 est poursuivie à l'étape S35. La figure 8 représente des étapes S61 à S66 de la procédure DVT, selon un mode de réalisation. A l'étape S61, un indice de boucle j est initialisé à 0 et une variable booléenne TST est initialisée à "Vrai". L'étape S62 qui forme le point d'entrée d'une boucle comprenant les étapes S63 à S66, compare l'indice j au nombre v de nombres premiers dans la liste Q. Cette boucle permet de tester la divisibilité du nombre Pr reçu en paramètre d'entrée de la procédure DVT, par chacun des nombres Qj de la liste Q. Il n'est pas nécessaire que la liste Q comprenne le nombre 2 étant donné que compte tenu de l'équation (1), le nombre Pr est nécessairement impair. Si l'indice j est inférieur au nombre v à l'étape S62, une itération de boucle commençant à l'étape S63 est exécutée, sinon la procédure DVT se termine en fournissant la variable TST. A l'étape S63, une variable w reçoit le reste de la division entière du nombre Pr par le nombre Qj, calculé par la formule suivante : W = Pr mod Qj (9) A l'étape S64, la valeur w est comparée à O. Si la valeur w est nulle, signifiant que le nombre candidat Pr est divisible par le nombre Qj, les étapes S65 et S66 sont exécutées, sinon seulement l'étape S66 est exécutée. A l'étape S65, la variable TST est mise à "Faux", pour indiquer 2 98454 7 16 que le nombre Pr n'est pas un nombre premier. A l'étape S66, l'indice j est incrémenté de un. L'étape S62 est exécutée après l'étape S66. Le choix de la valeur du nombre v des plus petits nombres premiers utilisés à l'étape S53 peut également être effectué en fonction de la durée 5 globale d'exécution de la procédure GNLP appelant la procédure GNSP2, sachant que plus on augmente la valeur y, plus la durée d'exécution des étapes S52 à S56 augmente, et plus la durée globale d'exécution des tests effectués à l'étape 34 diminue. La figure 9 représente un autre mode de réalisation PCKT1 de la 10 procédure PCKT de la figure 4. La procédure PCKT1 diffère de la procédure PCKT en ce qu'elle comprend des étapes S50 et S51 supplémentaires permettant de forcer le nombre A à 2 (étape S51) si la taille L du nombre P reçu en paramètre d'entrée de la procédure est supérieure ou égale à une certaine valeur par exemple égale à 129 (étape S50). Le forçage du nombre 15 A à 2 permet d'effectuer plus rapidement les opérations d'exponentiation modulaire aux étapes S53 et S54 lorsque les nombres P et R sont grands. En effet, lorsque le nombre A est fixé à 2, il s'agit alors de calculer des nombres de la forme 2" qui peuvent être effectuées par de simples décalages de bits dans un mot binaire, ce qui permet d'accélérer l'exécution 20 des tests de Pocklington par un microcircuit. Si l'on suppose que la proportion de nombres premiers rejetés en fixant la valeur du nombre A, ne change pas en fonction de cette valeur, le fait de fixer la valeur de A à une valeur constante telle que 2 présente un impact négligeable sur la distribution des nombres premiers générés lorsque la taille du nombre P à 25 tester est suffisamment grande (par exemple supérieure à 128 bits). En effet, il a été démontré que la probabilité pour que le choix d'une certaine valeur de A entraine le rejet d'un nombre premier à l'étape S53 est égale à 1/P. Par conséquent, plus le nombre P est grand, plus cette probabilité est faible. A partir de L = 128, ce qui correspond à un nombre P de 64 bits, cette 30 probabilité devient négligeable. La figure 10 représente un autre mode de réalisation GNLP1 de la procédure GNLP de la figure 1. La procédure GNLP1 diffère de la procédure GNLP en ce que les étapes S3, S8 et S9 sont remplacées par des étapes S3', S_' et S9'. A l'étape S3', la valeur de la variable L est divisée par 3 au lieu de 2. A l'étape S8', la valeur de la variable L est triplée à une unité près (= 3L-1) sans dépasser la taille Ln du nombre premier à générer. A l'étape S9', une procédure GNSP3 est appelée avec pour paramètres d'entrée les variables P et L. La procédure GNSP3 fournit un nombre premier Pr ayant la taille L à partir du nombre premier P de taille inférieure. The Fermat test performed at step S23 of the INTP procedure is also intended to eliminate prime candidate numbers faster than the Miller-Rabin test. This step can also be removed if the computing means used to implement this procedure can effectively perform (in a time permissible for the user) the Miller-Rabin tests. The choice of the value of the number v of the smallest prime numbers used in step S22 can be done according to the overall duration of execution of the procedure INTP or INTP1, knowing that the greater the value y, the longer the duration the execution time of step S22 increases, and the overall execution time (number of executions) of the tests performed in steps S23 to S24b or S24 to S24h decreases. Figure 6 shows another GNSP1 embodiment of the GNSP procedure of Figure 4. The GNSP1 procedure differs from the GNSP procedure in that it comprises three additional steps S35 to S37. Steps S35 to S37 are executed instead of step S32 if the PCKT procedure called in step S34 returns "False". In step S35, the number R is incremented by 1. In step S36, the number R is compared with the number 21, so that R remains in the interval [I +1, 2I]. If the number R is greater than the number 21, the steps S32 to S34 are again executed to choose a new number R randomly in the interval [I +1, 2I], to calculate a new candidate number first Pr and to test the latter. . If in step S36, the number R is less than or equal to the number 21, step S37, then the execution of the GNSP1 procedure is continued in step S33. In step S37, the number Pr is simply incremented by twice the prime number P. This calculation results from the incrementation of the number R carried out in step S38 and of formula (1). In this way, the number Pr can be updated simply by a binary shift of the number P followed by an addition, instead of a multiplication of large integers as in the formula (1) implemented at step S33. Step S34 is executed after step S37. Thus, steps S34 to S37 form a first processing loop in which the number R varies from the value assigned to it in step S33 to the value 21, if any, and in which the primality of number Pr corresponding to the number R is tested in a proven way. Steps S32 to S37 form a second processing loop for executing the first loop with a new value of R randomly selected in the range [1 + 1.21]. Fig. 7 shows another GNSP2 embodiment of the GNSP1 procedure of Fig. 6. The GNSP2 procedure differs from the GNSP1 procedure in that prior to applying the Pocklington test to the prime candidate number Pr in step S34, it first checks that the number Pr is not divisible by any of the prime numbers of the Q-list. For this purpose, the GNSP2 procedure receives the Q-list in addition to the parameters P and L. The GNSP2 procedure comprises steps S31 to S37 of Fig. 6, as well as additional steps S38 to S40. Steps S31 to S33 are first executed successively. Steps S38 and S39 are executed following step S33. In step S38, is called a DVT procedure for testing the divisibility of the number Pr by the prime numbers of the list Q. The DVT procedure receives in input parameters the number Pr and the list Q and provides a Boolean variable TST to "True" if the number Pr is not divisible by the numbers of the list Q and to "False" ("False") in the opposite case. In step S39, the variable TST is tested. If the variable TST is "True", step S34 is executed, otherwise the execution of the GNSP2 procedure is continued in step S35. According to the result of the comparison made in step S36, the GNSP2 procedure continues as in the GNSP1 procedure, ie in step S32 to randomly choose a new value of R, or in step S35 to calculate a new candidate number first Pr. If in step S39 the variable TST is "True", step S34 is executed to apply the Pocklington test to the number Pr by calling the procedure PCKT. If the number Pr verifies the Pocklington test, and therefore is definitely a prime number, the GNSP2 procedure ends by returning the number Pr. Otherwise, the variable TST is set to "False" in step S40, and execution of the GNSP2 procedure is continued in step S35. Fig. 8 shows steps S61 to S66 of the DVT procedure, according to one embodiment. In step S61, a loop index j is initialized to 0 and a Boolean variable TST is initialized to "True". Step S62 which forms the entry point of a loop comprising steps S63 to S66, compares the index j with the number v of prime numbers in the list Q. This loop makes it possible to test the divisibility of the number Pr received in input parameter of the DVT procedure, by each of the numbers Qj of the list Q. It is not necessary for the list Q to include the number 2 since, taking into account equation (1), the number Pr is necessarily odd. If the index j is less than the number v in step S62, a loop iteration starting at step S63 is executed, otherwise the DVT procedure terminates providing the variable TST. In step S63, a variable w receives the remainder of the integer division of the number Pr by the number Qj, calculated by the following formula: W = Pr mod Qj (9) At step S64, the value w is compared with O. If the value w is zero, meaning that the candidate number Pr is divisible by the number Qj, the steps S65 and S66 are executed, otherwise only the step S66 is executed. In step S65, the TST variable is set to "False", to indicate that the number Pr is not a prime number. In step S66, the index j is incremented by one. Step S62 is executed after step S66. The choice of the value of the number v of the smallest prime numbers used in the step S53 can also be done according to the overall duration of execution of the GNLP procedure calling the GNSP2 procedure, knowing that the more the value y is increased. , the longer the execution time of the steps S52 to S56 increases, and the overall duration of execution of the tests performed in step 34 decreases. FIG. 9 shows another embodiment PCKT1 of the PCKT procedure of FIG. 4. The PCKT1 procedure differs from the PCKT procedure in that it comprises additional steps S50 and S51 making it possible to force the number A to 2 (step S51) if the size L of the number P received as an input parameter of the procedure is greater than or equal to a certain value, for example equal to 129 (step S50). Forcing the number 15 A to 2 makes it possible to perform the modular exponentiation operations more quickly in steps S53 and S54 when the numbers P and R are large. Indeed, when the number A is fixed at 2, it is then a question of calculating numbers of the form 2 "which can be carried out by simple bit offsets in a binary word, which makes it possible to accelerate the execution Pocklington tests by a microcircuit If it is assumed that the proportion of prime numbers rejected by fixing the value of the number A does not change according to this value, setting the value of A to a constant value 2 has a negligible impact on the distribution of the prime numbers generated when the size of the number P to be tested is sufficiently large (for example greater than 128 bits), since it has been shown that the probability that the choice of if a certain value of A results in the rejection of a prime number in step S53 is equal to 1 / P. Therefore, the larger the number P, the lower the probability, starting from L = 128. which corresponds to a 64-bit number P, this 30 probability becomes negligible. Figure 10 shows another embodiment of the GNLP1 procedure of the GNLP procedure of Figure 1. The procedure GNLP1 differs from the GNLP procedure in that the steps S3, S8 and S9 are replaced by steps S3 ', S_' and S9 ' . In step S3 ', the value of variable L is divided by 3 instead of 2. At step S8', the value of variable L is tripled to one unit (= 3L-1) without exceeding size Ln of the prime number to generate. In step S9 ', a GNSP3 procedure is called with P and L variables as input parameters. The GNSP3 procedure provides a prime number Pr having the size L from the lower prime number P.
La procédure GNLP1 se base sur un théorème dérivé du théorème démontré par JLS (cf. publication [6]). Le théorème dérivé est formulé comme suit : Soient P un nombre premier supérieur à 2 et R un nombre entier inférieur à P2+1, le nombre N = 2R.P+1 est premier s'il existe un nombre 10 entier A supérieur ou égal à 2 et inférieur ou égal à N tel que : (i) A, N et R satisfont aux équations (2) et (3), (ii) le quotient de la division entière de R par P, , est impair, La condition R < P2+1 est satisfaite sensiblement par l'opération exécutée à l'étape S8 pour déterminer la taille du nombre premier à générer 15 suivant. Il est à noter que si la mémoire du circuit destiné à exécuter la procédure GNLP le permet, les étapes S2, S3' et S4 peuvent être remplacées par la lecture d'une table indexée par taille Ln de nombre premier à générer et donnant la taille LO du premier nombre à générer. Un 20 exemple de cette table lorsque la taille maximum LL est égale à 32, est donné par la table 2 suivante : Table 2 Ln 512 768 1024 2048 LO 20 29 14 26 k 3 3 4 4 La table 2 fournit également les valeurs du nombre d'itérations exécutées par la procédure GNLP1 à partir de l'étape S6. Si l'on compare 25 les tables 1 et 2, la procédure GNLP1 permet d'obtenir un nombre premier de la taille souhaitée en un nombre d'itérations réduit de 2 ou 3 itérations par rapport à la procédure GNLP. La figure 11 représente la procédure GNSP3 appelée par la procédure GNLP1 de la figure 10. La procédure GNSP3 diffère de la 30 procédure GNSP en ce qu'elle comprend deux étapes supplémentaires S41 et S42, pour mettre en oeuvre le test (ii) du théorème énoncé précédemment, sachant que le test (i) est mis en oeuvre par l'étape S34. Les étapes S41 et 2 98454 7 18 S42 sont exécutées entre les étapes S32 et S33. A l'étape S41, le quotient U de la division entière du nombre R par le nombre P est calculé. A l'étape S42, si le quotient U est pair, l'étape S32 est exécutée pour générer une nouvelle valeur de R, sinon l'étape S33 est exécutée. 5 Par ailleurs, la procédure GNSP3 peut être modifiée de la même façon que la procédure GNSP dans les figures 6 et 7. La figure 12 représente une autre procédure itérative GNM de génération d'un nombre premier de grande taille Ln. Cette procédure correspond sensiblement à la procédure de Maurer (cf. publication [3]). Sur la figure 12, cette procédure reçoit en tant que paramètre d'entrée une taille L de nombre premier à générer et fournit un nombre premier Pr. Cette procédure comprend des étapes S80 à S89. A l'étape S80, la taille L est comparée à une taille maximum LL de nombre premier en dessous de laquelle une procédure pour générer un premier nombre premier prouvé peut être utilisée sans nécessiter de ressources en temps et en capacité de calcul excessives. Si la taille L est supérieure à la taille LL, l'étape S81 est exécutée, sinon l'étape S82 est exécutée. A l'étape S81, un nombre premier Pr de taille inférieure à la taille LL est obtenu. La procédure GNM se termine ensuite en fournissant le nombre Pr. The GNLP1 procedure is based on a theorem derived from the theorem demonstrated by JLS (see publication [6]). The derived theorem is formulated as follows: Let P be a prime number greater than 2 and R an integer less than P2 + 1, the number N = 2R.P + 1 is prime if there is a whole number A greater than or equal to at 2 and less than or equal to N such that: (i) A, N and R satisfy equations (2) and (3), (ii) the quotient of the integer division of R by P,, is odd, the condition R <P2 + 1 is satisfied substantially by the operation performed in step S8 to determine the size of the next prime to be generated. It should be noted that if the memory of the circuit intended to execute the GNLP procedure allows it, the steps S2, S3 'and S4 can be replaced by reading a table indexed by size Ln of prime number to generate and giving the size LO of the first number to generate. An example of this table when the maximum size LL is 32 is given by the following table 2: Table 2 Ln 512 768 1024 2048 LO 20 29 14 26 k 3 3 4 4 Table 2 also provides the values of the number iterations executed by the procedure GNLP1 from step S6. If Tables 1 and 2 are compared, the GNLP1 procedure allows to obtain a prime number of the desired size in a number of iterations reduced by 2 or 3 iterations compared to the GNLP procedure. Figure 11 shows the GNSP3 procedure called by the GNLP1 procedure of Figure 10. The GNSP3 procedure differs from the GNSP procedure in that it comprises two additional steps S41 and S42, to implement the theorem test (ii). stated above, knowing that the test (i) is implemented by step S34. Steps S41 and S42 are executed between steps S32 and S33. In step S41, the quotient U of the integer division of the number R by the number P is calculated. In step S42, if the quotient U is even, step S32 is executed to generate a new value of R, otherwise step S33 is executed. Furthermore, the GNSP3 procedure can be modified in the same way as the GNSP procedure in FIGS. 6 and 7. FIG. 12 represents another GNM iterative procedure for generating a large first number Ln. This procedure corresponds substantially to the Maurer procedure (see publication [3]). In Fig. 12, this procedure receives as an input parameter a prime number size L to generate and provides a prime number Pr. This procedure comprises steps S80 to S89. In step S80, the size L is compared to a maximum number first LL size below which a procedure for generating a first proved prime number can be used without requiring excessive time and computation resources. If the size L is greater than the size LL, the step S81 is executed, otherwise the step S82 is executed. In step S81, a prime number Pr smaller than the size LL is obtained. The GNM procedure then ends with the number Pr.
Selon un mode de réalisation, la procédure INTP (ou INTP1) est appelée à l'étape S81 pour obtenir un nombre premier Pr de taille inférieure à la taille LL. Les étapes S82 à S87 permettent de déterminer une séquence de tailles de nombres premiers intermédiaires entre la taille initiale du premier nombre premier et la taille du nombre premier à générer fournie en paramètre d'entrée de la procédure GNM. A l'étape S82, la taille L est comparée à deux fois la taille LL (2LL). Si la taille L est supérieure à 2LL, autrement dit, pour les grandes valeurs de L, les étapes S83 à S85 et S87 sont exécutées, sinon seules les étapes S86 et S87 sont exécutées. A l'étape S83, un nombre réel s entre 0 et 1 est choisi aléatoirement ou pseudo-aléatoirement. A l'étape S84, un nombre réel r est calculé en élevant 2 à la puissance s - 1. Ainsi, le nombre r est compris entre 1/2 et 1. A l'étape S85, la taille L multipliée par le nombre réel (1 - r) est comparée à la taille LL. Si la quantité L(1 - r) est supérieure la taille LL, l'étape S87 est exécutée, sinon les étapes S83 à S85 sont à nouveau exécutées. En 2 98454 7 19 d'autres termes, l'étape S83 marque l'entrée d'une boucle de traitement comprenant les étapes S83 à S85 dans laquelle une nouvelle valeur de r est calculée jusqu'à ce que la condition de l'étape S85 soit vérifiée. A l'étape S86, pour les valeurs de L comprises entre LL et 2LL, le nombre réel r est 5 fixé à 0.5. A l'étape S87, une nouvelle taille L est calculée en multipliant la valeur courante de L par le nombre réel r, en prenant la partie entière du résultat obtenu, et en ajoutant 1 à la partie entière. A l'étape S88, la procédure GNM est appelée avec la nouvelle valeur de la taille L obtenue à 10 l'étape S87. Ainsi, la procédure GNM est une procédure récursive. A l'étape S89, la procédure GNSP (ou l'une des variantes GNSP1 et GNSP2) est appelée pour obtenir un nombre premier Pr de taille L, à partir du nombre premier P obtenu à l'étape S88. La procédure GNM se termine à l'issue de l'étape S89 en fournissant le nombre premier Pr fourni par la procédure 15 GNSP (ou GNSP1 ou GNSP2) appelée à l'étape S89. La figure 13 représente une autre procédure itérative GNST de génération d'un nombre premier de grande taille Ln. Cette procédure correspond sensiblement à la procédure de Shawe-Taylor (cf. publication [4] ou [5]). Sur la figure 13, cette procédure reçoit en tant que paramètre 20 d'entrée la taille L du nombre premier à générer, et fournit un nombre premier Pr. Cette procédure comprend des étapes S71 à S75. A l'étape S71, la taille L est comparée à une taille maximum LL de nombre premier en dessous de laquelle une procédure pour générer un premier nombre premier prouvé peut être utilisée sans nécessiter de ressources en temps et en 25 capacité de calcul excessives. Si la taille L est supérieure à la taille LL, les étapes S73 à S75 sont exécutées, sinon l'étape S72 est exécutée. A l'étape S72, un petit nombre premier Pr de taille inférieure à la taille LL est généré et la procédure se termine en fournissant le nombre premier Pr. Selon un mode de réalisation, la procédure INTP (ou INTP1) est 30 appelée à l'étape S72 pour obtenir un nombre premier Pr de taille inférieure à la taille LL. A l'étape S73, la taille L est diminuée en ajoutant 1 au plus petit nombre entier supérieur ou égal à la taille L divisée par deux. A l'étape S74, la procédure GNST est appelée avec la nouvelle valeur de L pour obtenir un 35 nombre premier P de taille L. La procédure GNST est donc également récursive. A l'étape S75, la procédure GNSP (ou l'une des variantes GNSP1 et GNSP2) est appelée pour obtenir un nombre premier Pr de taille L avec en tant que la paramètres d'entrée, le nombre premier précédent P fourni par l'appel de la procédure GNST à l'étape S74, et la taille L obtenue à l'étape S73. Le nombre premier Pr obtenu à l'étape S75 est fourni en sortie de la procédure GNST qui se termine à l'issue de cette étape. La figure 14 représente un exemple de dispositif électronique DV dans lequel les divers modes de réalisation du procédé de génération de nombre premier décrits précédemment peuvent être mis en oeuvre. Le dispositif DV peut être un circuit intégré sur microplaquette de semiconducteur, formant de manière générale un microprocesseur. La microplaquette peut par exemple être agencée sur un support tel qu'une carte en plastique, l'ensemble formant une carte à puce. Le dispositif DV comprend une unité de traitement UC, un bloc de calcul cryptographique CRU, et une ou plusieurs mémoires MEM pouvant comprendre une mémoire volatile et une mémoire non volatile. Le dispositif électronique DV comprend également une interface de communication 101 à contact ou sans contact, par exemple un circuit RF ou UHF fonctionnant par couplage inductif ou par couplage électrique. Le bloc CRU peut être un coprocesseur équipé d'une unité centrale de commande programmable de type machine d'état, un coprocesseur entièrement hardware, ou des sous-programmes exécutés par l'unité UC. Selon un mode de réalisation, le bloc de calcul CRU peut être configuré pour effectuer sur demande de l'unité UC des multiplications de nombres de grande taille, par exemple de taille comprise entre 32 bits et 2048 bits, et en particulier celle effectuée à l'étape S33 des procédures GNSP, GNSP1 à GNSP3, ainsi que celles intervenant dans les calculs d'exponentiation modulaire des tests de Fermat et de Miller-Rabin exécutés dans les procédures INTP, INTP1, et du test de Pocklington exécuté dans les procédures PCKT et PCKT1. Selon un autre mode de réalisation, le bloc de calcul peut également être configuré pour effectuer sur demande de l'unité de traitement UC, directement les opérations d'exponentiation modulaire des tests de Fermat et de Miller-Rabin exécutés dans les procédures INTP, INTP1, et du test de Pocklington exécuté dans les procédures PCKT et PCKT1.According to one embodiment, the INTP (or INTP1) procedure is called in step S81 to obtain a prime number Pr of size less than the size LL. Steps S82 to S87 make it possible to determine a sequence of intermediate prime number sizes between the initial size of the first prime number and the size of the prime number to be generated provided as an input parameter of the GNM procedure. In step S82, the size L is compared to twice the size LL (2LL). If the size L is greater than 2LL, in other words, for the large values of L, the steps S83 to S85 and S87 are executed, otherwise only the steps S86 and S87 are executed. In step S83, a real number s between 0 and 1 is chosen randomly or pseudo-randomly. In step S84, a real number r is calculated by raising 2 to the power s -1. Thus, the number r is between 1/2 and 1. At step S85, the size L multiplied by the real number (1 - r) is compared to the size LL. If the quantity L (1 - r) is greater than the size LL, step S87 is executed, otherwise steps S83 to S85 are executed again. In other words, step S83 marks the input of a processing loop comprising steps S83 to S85 in which a new value of r is computed until the condition of the step S85 be verified. In step S86, for the values of L between LL and 2LL, the real number r is set to 0.5. In step S87, a new size L is calculated by multiplying the current value of L by the real number r, taking the integer part of the result obtained, and adding 1 to the integer part. In step S88, the GNM procedure is called with the new value of size L obtained in step S87. Thus, the GNM procedure is a recursive procedure. In step S89, the GNSP procedure (or one of the variants GNSP1 and GNSP2) is called to obtain a prime number Pr of size L, from the prime number P obtained in step S88. The GNM procedure terminates at the end of step S89 by providing the prime number Pr provided by the GNSP procedure (or GNSP1 or GNSP2) called in step S89. Figure 13 shows another GNST iterative procedure for generating a large prime number Ln. This procedure corresponds substantially to the Shawe-Taylor procedure (see publication [4] or [5]). In FIG. 13, this procedure receives as an input parameter the size L of the prime number to be generated, and provides a prime number Pr. This procedure comprises steps S71 to S75. In step S71, the size L is compared to a first number maximum size LL below which a procedure for generating a first proved prime number can be used without requiring excessive time and computation resources. If the size L is greater than the size LL, the steps S73 to S75 are executed, otherwise the step S72 is executed. In step S72, a small prime number Pr smaller than the size LL is generated and the procedure terminates by providing the prime number Pr. According to one embodiment, the INTP (or INTP1) procedure is called the step S72 to obtain a prime number Pr smaller than the size LL. In step S73, the size L is decreased by adding 1 to the smallest integer greater than or equal to the size L divided by two. In step S74, the GNST procedure is called with the new value of L to obtain a prime number P of size L. The GNST procedure is therefore also recursive. In step S75, the GNSP procedure (or one of the variants GNSP1 and GNSP2) is called to obtain a prime number Pr of size L with, as the input parameter, the previous prime number P provided by the call of the GNST procedure in step S74, and the size L obtained in step S73. The prime number Pr obtained in step S75 is outputted from the GNST procedure that ends at the end of this step. Fig. 14 shows an example of an electronic device DV in which the various embodiments of the first-number generation method described above can be implemented. The DV device may be a semiconductor chip integrated circuit, generally forming a microprocessor. The chip may for example be arranged on a support such as a plastic card, the assembly forming a smart card. The device DV comprises a processing unit UC, a cryptographic calculation block CRU, and one or more memories MEM which can comprise a volatile memory and a non-volatile memory. The electronic device DV also comprises a communication interface 101 with or without contact, for example an RF or UHF circuit operating by inductive coupling or by electrical coupling. The CRU block may be a coprocessor equipped with a programmable state machine type central control unit, a fully hardware coprocessor, or subroutines executed by the CPU. According to one embodiment, the calculation block CRU can be configured to perform on request of the unit UC multiplications of large numbers, for example of size between 32 bits and 2048 bits, and in particular that carried out at the same time. Step S33 of the GNSP procedures, GNSP1 to GNSP3, as well as those involved in the modular exponentiation calculations of the Fermat and Miller-Rabin tests performed in the INTP, INTP1, and Pocklington tests performed in the PCKT and PCKT1. According to another embodiment, the calculation block can also be configured to perform on request of the CPU processing unit, directly the modular exponentiation operations of the Fermat and Miller-Rabin tests executed in the INTP, INTP1 procedures. , and the Pocklington test performed in the PCKT and PCKT1 procedures.
2 98454 7 21 Le dispositif DV peut également comprendre un générateur RGN aléatoire ou pseudo-aléatoire de mots binaires de M bits pour réaliser les étapes S21, S32, S42 et S85. L'unité UC peut ainsi comprendre un module de génération de 5 nombres premiers PGN mettant en oeuvre l'une des procédures GNLP, GNLP1, GNM, GNST. L'unité UC peut également comprendre un module de génération de données cryptographiques KGN telles que des clés cryptographiques, et des modules de signature SGN et de chiffrement ENC utilisant des données cryptographiques générées par le module KGN.The DV device may also include a random or pseudo-random RGN generator of M bit bits for performing steps S21, S32, S42 and S85. The unit UC can thus comprise a PGN prime number generation module implementing one of the GNLP, GNLP1, GNM and GNST procedures. The unit UC may also comprise a KGN cryptographic data generation module such as cryptographic keys, and SGN signature and ENC encryption modules using cryptographic data generated by the KGN module.
10 Chacun des modules PGN, KGN, ENC, SGN peut faire appel au bloc CRU pour effectuer des opérations complexes, telles que des multiplications de nombres de grandes tailles ou des exponentiations modulaires. Les données cryptographiques générées sont mémorisées dans la mémoire MEM. Les modules KGN, SGN et ENC peuvent par exemple mettre en 15 oeuvre l'algorithme RSA en générant deux nombres premiers de 512 ou 1024 bits à l'aide du module PGN. La figure 15 représente une procédure KGEN1 de génération d'une paire de clés secrète et publique, conforme à l'algorithme RSA, exécutée par le module KGN. La procédure KGEN1 comprend des étapes S101 à S106. Aux étapes S101 et S102, deux 20 nombres premiers P et Q sont générés à l'aide d'une procédure PRGN recevant en paramètre d'entrée la taille L des nombres premiers à générer. La procédure PRGN correspond à l'une des procédures GNLP, GNLP1, GNM, GNST exécutée par le module PGN. A l'étape S103, les nombres P et Q sont multipliés l'un par l'autre pour obtenir un nombre N. A l'étape S104, 25 un nombre impair E est choisi aléatoirement dans un certain intervalle, par exemple entre 3 et 21- - 1. A l'étape S105, si le nombre E choisi n'est pas inversible modulo la quantité (P-1)(Q-1), un nouveau nombre E est choisi à l'étape S104, sinon l'étape S106 est exécutée pour choisir un nombre D tel que E x D est égal à 1 modulo (P-1)(Q-1). La procédure KGEN1 se termine 30 après l'étape S106 en fournissant en tant que clé privée la paire de nombres (N,D) et en tant que clé publique la paire de nombres (N,E). L'algorithme DSA peut également être mis en oeuvre par les modules KGN, SGN et ENC, en générant deux nombres premiers de tailles différentes, par exemple 256 et 2048 bits. La figure 16 représente une 35 procédure KGEN2 de génération d'une paire de clés secrète et publique, conforme à l'algorithme DSA, exécutée par le module KGN. La procédure KGEN2 comprend des étapes S111 à S115. Aux étapes S111 et S112, deux nombres premiers P et Q sont générés à l'aide d'une procédure PRGN recevant en paramètre d'entrée, successivement les tailles L1, L2 des nombres premiers P et Q à générer. Les tailles L1 et L2 sont par exemple égales, respectivement à 2048 et à 256 bits. A l'étape S113, une procédure GGEN est appelée pour générer un nombre G qui constitue un nombre générateur du sous groupe d'ordre Q modulo P. A l'étape S14, une clé secrète SK est choisie aléatoirement dans l'intervalle [1, Q-1]. A l'étape S115, une clé publique PK est calculée en élevant le nombre G à la puissance SK modulo P. La procédure KGEN2 se termine après l'étape S115 en fournissant la paire de clés privée et publique (SK, PK). Il apparaîtra clairement à l'homme de l'art que la présente invention est susceptible de diverses variantes de réalisation et diverses applications, notamment diverses autres formes d'algorithmes et de dispositifs mettant en oeuvre de tels algorithmes. Ainsi, l'invention couvre toutes les combinaisons possibles des divers modes de réalisation décrits. L'invention couvre également toutes les combinaisons possibles de taille maximum du premier nombre premier généré et de bases de tests de Miller-Rabin, pour prouver la primalité de ce nombre, sachant que la capacité de telles combinaisons à prouver la primalité d'un nombre, peut être démontrée par de simples tests exhaustifs. Liste des publications précédemment citées : [1] C. Pomerance, C. Selfridge, and J.L. Wagstaff. "The pseudoprimes to 25x10e9", Mathematics of Computation, 35:1003-1026, 1990. [2] G. Jaechke, "On strong pseudoprimes to several bases", Mathematics of Computation, 61:915-926, 1993. [3] U. M. Maurer, "Fast generation of prime numbers and secure public- key cryptographic parameters", J. Cryptology, 8(3):123-155, 1995. [4] J. Shawe-Taylor, "Generating strong primes", Electronic Letters, 22(16):875-877, 1986. [5] FIPS PUB 186-3, "Digital Signature Standard", National Institute of Standards and Technology, october 2009. [6] J. Brillhart, D. H. Lehmer, J. L. Selfridge, B. Tuckerman, and Jr. S. S. Wagstaff, "Factorization of b" ± 1, b = 2; 3; 5; 7; 10; 11; 12 Up to High Powers", vol. 22, American Mathematical Society, 1988. Each of the PGN, KGN, ENC, SGN modules may use the CRU to perform complex operations, such as large number multiplications or modular exponentiations. The cryptographic data generated are stored in the memory MEM. For example, the KGN, SGN and ENC modules can implement the RSA algorithm by generating two prime numbers of 512 or 1024 bits using the PGN module. FIG. 15 represents a KGEN1 procedure for generating a secret and public key pair, in accordance with the RSA algorithm, executed by the KGN module. The KGEN1 procedure comprises steps S101 to S106. In steps S101 and S102, two prime numbers P and Q are generated using a PRGN procedure receiving as input parameter the size L of the prime numbers to be generated. The PRGN procedure corresponds to one of the GNLP, GNLP1, GNM, GNST procedures performed by the PGN module. In step S103, the numbers P and Q are multiplied by each other to obtain a number N. In step S104, an odd number E is randomly selected within a certain range, for example between 3 and 21- - 1. In step S105, if the selected number E is not invertible modulo the quantity (P-1) (Q-1), a new number E is chosen in step S104, otherwise the step S106 is executed to choose a number D such that E x D is equal to 1 modulo (P-1) (Q-1). The KGEN1 procedure terminates after step S106 by providing as a private key the pair of numbers (N, D) and as the public key the pair of numbers (N, E). The DSA algorithm can also be implemented by the KGN, SGN and ENC modules, by generating two prime numbers of different sizes, for example 256 and 2048 bits. Figure 16 shows a KGEN2 procedure for generating a secret and public key pair, conforming to the DSA algorithm, executed by the KGN module. The KGEN2 procedure comprises steps S111 to S115. In steps S111 and S112, two prime numbers P and Q are generated using a PRGN procedure receiving as input parameter successively the sizes L1, L2 of the prime numbers P and Q to be generated. The sizes L1 and L2 are for example equal to 2048 and 256 bits respectively. In step S113, a GGEN procedure is called to generate a number G which constitutes a generating number of the modulo P subgroup P. In step S14, a secret key SK is randomly selected in the interval [1 , Q-1]. In step S115, a public key PK is computed by raising the number G to the power SK modulo P. The procedure KGEN2 ends after the step S115 by providing the private and public key pair (SK, PK). It will be clear to those skilled in the art that the present invention is capable of various alternative embodiments and various applications, including various other forms of algorithms and devices implementing such algorithms. Thus, the invention covers all possible combinations of the various embodiments described. The invention also covers all possible combinations of maximum size of the first generated prime number and Miller-Rabin test bases, to prove the primality of this number, knowing that the ability of such combinations to prove the primality of a number , can be demonstrated by simple exhaustive tests. List of previously cited publications: [1] C. Pomerance, C. Selfridge, and J. L. Wagstaff. "The pseudoprimes to 25x10e9", Mathematics of Computation, 35: 1003-1026, 1990. [2] G. Jaechke, "On strong pseudoprimes to several bases", Mathematics of Computation, 61: 915-926, 1993. [3] UM Maurer, "Fast generation of prime numbers and secure public-key cryptographic parameters", J. Cryptology, 8 (3): 123-155, 1995. [4] J. Shawe-Taylor, "Generating Strong Premiums", Electronic Letters , 22 (16): 875-877, 1986. [5] FIPS PUB 186-3, "Digital Signature Standard," National Institute of Standards and Technology, October 2009. [6] J. Brillhart, DH Lehmer, JL Selfridge, B. Tuckerman, and Jr. SS Wagstaff, "Factorization of b" ± 1, b = 2; 3; 5; 7; 10; 11; 12 Up to High Powers, "22, American Mathematical Society, 1988.
Claims (13)
Priority Applications (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1161739A FR2984547B1 (en) | 2011-12-15 | 2011-12-15 | METHOD FOR GENERATING FIRST PROVEN NUMBERS ADAPTED TO CHIP CARDS |
PCT/FR2012/052901 WO2013088065A1 (en) | 2011-12-15 | 2012-12-12 | Method for generating prime numbers proven suitable for chip cards |
EP12815733.6A EP2791783B1 (en) | 2011-12-15 | 2012-12-12 | Method for generating prime numbers proven suitable for chip cards |
US14/365,671 US9577826B2 (en) | 2011-12-15 | 2012-12-12 | Method of generating proven prime numbers suitable for being implemented in a smart card |
CN201280062261.5A CN104067217A (en) | 2011-12-15 | 2012-12-12 | Method for generating a prime number verified for use in a chip card |
IN4637CHN2014 IN2014CN04637A (en) | 2011-12-15 | 2012-12-12 | |
EP12815734.4A EP2791784A1 (en) | 2011-12-15 | 2012-12-12 | Method for generating prime numbers proven suitable for chip cards |
US14/365,899 US9596080B2 (en) | 2011-12-15 | 2012-12-12 | Method of generating prime numbers proven suitable for chip cards |
PCT/FR2012/052902 WO2013088066A1 (en) | 2011-12-15 | 2012-12-12 | Method for generating prime numbers proven suitable for chip cards |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1161739 | 2011-12-15 | ||
FR1161739A FR2984547B1 (en) | 2011-12-15 | 2011-12-15 | METHOD FOR GENERATING FIRST PROVEN NUMBERS ADAPTED TO CHIP CARDS |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2984547A1 true FR2984547A1 (en) | 2013-06-21 |
FR2984547B1 FR2984547B1 (en) | 2018-04-06 |
Family
ID=46489259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1161739A Expired - Fee Related FR2984547B1 (en) | 2011-12-15 | 2011-12-15 | METHOD FOR GENERATING FIRST PROVEN NUMBERS ADAPTED TO CHIP CARDS |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR2984547B1 (en) |
-
2011
- 2011-12-15 FR FR1161739A patent/FR2984547B1/en not_active Expired - Fee Related
Non-Patent Citations (3)
Title |
---|
G. JAESCHKE: "On strong pseudoprimes to several bases", MATHEMATICS OF COMPUTATION, vol. 61, 31 October 1993 (1993-10-31), pages 915 - 926, XP002681159 * |
J-F DHEM: "Modular Multiplication", DESIGN OF AN EFFECIENT PUBLIC-KEY CRYPTOGRAPHIC LIBRARY FOR RISC-BASED SMART CARDS, XX, XX, 1 May 1998 (1998-05-01), pages 12 - 29,105, XP002207928 * |
SHAWE-TAYLOR J: "Generating strong primes", ELECTRONICS LETTERS UK, vol. 22, no. 16, 31 July 1986 (1986-07-31), pages 875 - 877, XP002681158, ISSN: 0013-5194 * |
Also Published As
Publication number | Publication date |
---|---|
FR2984547B1 (en) | 2018-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2791783B1 (en) | Method for generating prime numbers proven suitable for chip cards | |
EP2256987B1 (en) | Protection of a generation of prime numbers for the RSA algorithm | |
EP2296086B1 (en) | Protection of prime number generation against side-channel attacks | |
WO2009109715A2 (en) | Countermeasure method and devices for asymmetrical cryptography with signature diagram | |
EP2248009A2 (en) | Countermeasure method and devices for asymmetric cryptography | |
EP1419610B1 (en) | Method of producing a cryptographic unit for an asymmetric cryptographic system using a discrete logarithm function | |
FR2888690A1 (en) | CRYPTOGRAPHIC PROCESS FOR THE SECURE IMPLEMENTATION OF AN EXPONENTIATION AND ASSOCIATED COMPONENT | |
WO2006070092A1 (en) | Data processing method and related device | |
FR2966953A1 (en) | METHOD OF CRYPTOGRAPHIC COUNTERPRESSION BY DERIVATION OF SECRET DATA | |
EP2983083B1 (en) | Elliptic curve encryption method comprising an error detection | |
FR2979725A1 (en) | Method for performing cryptographic calculations in electronic component i.e. smart card, involves detecting occurrence of error carried out after exponentiation of element, and correcting result of exponentiation based on detection result | |
FR2984547A1 (en) | Cryptographic key generating method for e.g. integrated circuit of chip card, involves keeping generated candidate prime number as candidate prime number only if quotient calculated from integer division of integer by prime number is odd | |
EP1520370B1 (en) | Cryptographic method and devices for facilitating calculations during transactions | |
FR2984548A1 (en) | Cryptographic key generating method for e.g. integrated circuit of chip card, involves keeping generated candidate prime number as candidate prime number only if quotient calculated from integer division of integer by prime number is odd | |
FR2984551A1 (en) | METHOD FOR GENERATING FIRST PROVEN NUMBERS ADAPTED TO CHIP CARDS | |
FR2984550A1 (en) | Cryptographic key generating method for e.g. integrated circuit of chip card, involves keeping generated candidate prime number as candidate prime number only if quotient calculated from integer division of integer by prime number is odd | |
WO1998051038A1 (en) | Pseudo-random generator based on a hash coding function for cryptographic systems requiring random drawing | |
WO2015132524A2 (en) | Message generation for a cryptographic keys generation test | |
FR2986883A1 (en) | Method for secure generation of prime number by e.g. electronic component, for cryptography, involves incrementing composite number by one, and determining whether incremented number is function of random number | |
WO2006067157A2 (en) | Method for rapidly generating a random number that cannot be divided by a pre-determined set of prime numbers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
CA | Change of address |
Effective date: 20131112 |
|
PLFP | Fee payment |
Year of fee payment: 5 |
|
PLFP | Fee payment |
Year of fee payment: 6 |
|
PLFP | Fee payment |
Year of fee payment: 7 |
|
PLFP | Fee payment |
Year of fee payment: 8 |
|
PLFP | Fee payment |
Year of fee payment: 9 |
|
CD | Change of name or company name |
Owner name: VERIMATRIX, FR Effective date: 20191119 |
|
CA | Change of address |
Effective date: 20191209 |
|
TP | Transmission of property |
Owner name: RAMBUS INC., US Effective date: 20200402 |
|
ST | Notification of lapse |
Effective date: 20210805 |