Aller au contenu

« Crible algébrique » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
FDo64 (discuter | contributions)
m Maintenance modèle avec AWB
Ϛ (discuter | contributions)
reprise intégrale :)
Ligne 1 : Ligne 1 :
En [[théorie des nombres]], l'algorithme du '''crible du corps de nombres généralisé'''<ref group="Note">Aussi connu sous son nom anglais, ''generalised number field sieve'', ou son acronyme : GNFS.</ref><ref group="Note">Parfois appelé de manière moins précise « crible algébrique » ou « crible sur les corps de nombres », plus rarement « crible ''de'' corps de nombres ».</ref> ('''GNFS''') obtient la [[Décomposition en produit de facteurs premiers|décomposition d'un entier en produit de facteurs premiers]]. C'est à l'heure actuelle (2018) le plus efficace algorithme connu pour obtenir cette décomposition, lorsque le nombre considéré est assez grand<ref group="Note">Il existe un [[Calculateur quantique|algorithme quantique]] asymptotiquement strictement plus efficace : l'[[algorithme de Shor]]. Cependant il n'est pas possible à l'heure actuelle d'exécuter cet algorithme pour de grands nombres.</ref>, c'est-à-dire au-delà d'environ 10<sup>100</sup>, et ne possède pas de structure remarquable<ref group="Note">Lorsqu'on s'intéresse à des nombres de forme particulière, comme les [[Nombre de Fermat|nombres de Fermat]] ou de [[Nombre de Mersenne premier|Mersenne]], [[Algorithme de factorisation par crible sur les corps de nombres spécialisé|une version spécialisée]] de l'algorithme est plus efficace.</ref>. Cette efficacité est due pour partie à l'utilisation d'une [[Crible (mathématiques)|méthode de crible]] et pour partie à l'utilisation d'algorithmes efficaces pour certaines opérations (comme la manipulation de [[Matrice creuse|matrices creuses]]). La [[Théorie de la complexité (informatique théorique)|complexité algorithmique]] du crible de corps de nombres n'est pas prouvée, elle n'est qu'heuristique<ref group="Note">Elle s'appuie notamment sur des hypothèses de répartition uniforme qui sont étayées par l'expérience mais pour lesquelles il n'y a pas de justification théorique.</ref>. Cette estimation est utilisée par les organismes de standardisation tels que le [[NIST]] pour fixer des tailles des clés [[Chiffrement RSA|RSA]] à un niveau de sécurité donné.
{{à recycler|thème=mathématiques|date=mai 2013}}
En [[mathématiques]], le '''crible général de corps de nombres''', appelé aussi '''crible algébrique''' est l'[[Algorithmique|algorithme]], fondé sur l'[[arithmétique modulaire]], pour la [[décomposition en produit de facteurs premiers]] le plus efficace des algorithmes classiques. Il utilise <math>L_n\left[\frac{1}{3}, \sqrt[3]{\frac{64}{9}} \right] = O\left\{\exp\left[\left({64\over9}\log n\right)^{1\over3} (\log \log n)^{2\over3}\right]\right\}</math> étapes pour factoriser un [[Entier relatif|nombre entier]] ''n'' (voir [[Comparaison asymptotique|notation O]] et [[notation L]]). Il est dérivé du [[Algorithme de factorisation par crible sur les corps de nombres spécialisé|crible spécial de corps de nombres (SNFS)]]. Lorsque la locution « crible de corps de nombres » est utilisée sans qualification, elle réfère au crible général de corps de nombres.


De manière remarquable, l'algorithme permet également (au prix de modifications simples) de calculer des [[Logarithme discret|logarithmes discrets]] dans les [[Corps fini|corps finis]], avec la même complexité. C'est à l'heure actuelle (2018) l'algorithme le plus efficace connu dans les corps finis de [[Caractéristique d'un anneau|caractéristique]] première très grande<ref group="Note">Il existe des algorithmes plus efficaces pour les corps finis de petite caractéristique, en particulier les corps binaires <math>\mathbb F_{2^k}</math>, tels que le [[crible du corps de fonctions]].</ref>. En revanche, l'algorithme du crible du corps de nombres n'est pas applicable au calcul du logarithme discret dans un groupe abstrait générique, ce qui est une des motivations derrières la [[cryptographie sur les courbes elliptiques]].
C'est une amélioration du [[crible quadratique]], qui factorise ''n'' en trouvant les nombres ''k<sub>i</sub>'' tels que ''r<sub>i</sub>=k<sub>i</sub><sup>2</sup>-n'' factorise complètement sur un ensemble fixé (appelé ''base'') de petits [[nombre premier|nombres premiers]]. Puis, en ayant suffisamment de tels ''r<sub>i</sub>'' - qui sont appelés ''réguliers'' relativement à la base de facteurs choisie, en utilisant la [[Élimination de Gauss-Jordan|méthode d'élimination de Gauss]] de l'algèbre linéaire nous pouvons choisir les exposants ''c<sub>i</sub>'' égaux à 0 ou 1 tels que le produit de ''r<sub>i</sub><sup>c<sub>i</sub></sup>'' soit un carré, disons ''x<sup>2</sup>''. D'un autre côté, si le produit de ''k<sub>i</sub><sup>c<sub>i</sub></sup>'' est ''y'', alors ''x<sup>2</sup>-y<sup>2</sup>'' est divisible par ''n'' et avec la probabilité qu'au moins la moitié nous donne un facteur de ''n'' en trouvant le [[Plus grand commun diviseur|PGCD]] de ''n'' et ''x-y''. Dans cette méthode, l'idée était de choisir ''k<sub>i</sub>'' proche de la [[racine carrée]] de ''n'' - alors ''r<sub>i</sub>'' est aussi de l'ordre de grandeur de la racine carrée de ''n'' et il existe suffisamment de valeurs régulières.


Pour ces raisons, l'algorithme est responsable aujourd'hui de nombreux records de factorisation (et de calculs de logarithmes discret) et joue un rôle important en [[cryptographie]]. Enfin, quoique de manière plus anecdotique, il intervient également dans le contexte plus large de la [[sécurité informatique]], par exemple dans l'[[attaque Logjam]] dont il est un composant essentiel<ref>{{Article|langue=anglais|auteur1=|prénom1=David|nom1=Adrian|prénom2=Karthikeyan|nom2=Bhargavan|prénom3=Zakir|nom3=Durumeric|prénom4=Pierrick|nom4=Gaudry|titre=Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice|périodique=CCS '15 Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security|éditeur=ACM|date=2015-10-12|isbn=9781450338325|issn=|doi=10.1145/2810103.2813707|lire en ligne=http://dl.acm.org/citation.cfm?id=2810103.2813707|consulté le=2018-08-11|pages=5–17}}</ref> : les auteurs ont montré comment intercepter une communication [[Transport Layer Security|TLS 1.2]], une des étapes consistant à calculer au moyen du crible du corps de nombres un logarithme discret dans un corps de 512 bits en moins d'une minute.
Le '''crible général de corps de nombres''' fonctionne de la manière suivante :
* Nous choisissons deux [[polynôme formel|polynômes]] irréductibles ''f(X)'' et ''g(X)'' avec une [[racine d'un polynôme|racine]] commune ''m'' mod ''n'' - on ignore quelle est la meilleure manière de choisir les polynômes, mais généralement cela se produit en prenant un degré ''d'' pour un polynôme et en considérant le développement de ''n'' en base ''m'' où ''m'' est d'ordre ''n<sup>1/d</sup>''. Le but est d'obtenir des coefficients de ''f'' et ''g'' aussi petits que possible - ils seront de l'ordre de ''m'', tout en ayant les petits degrés ''d'' et ''e'' de nos polynômes.
* Maintenant, nous considérons comme [[corps de nombres]] les [[Anneau unitaire|anneaux]] '''Z[r1]''' et '''Z[r2]''' où '''r1''' et '''r2''' sont les racines des polynômes ''f'' et ''g'', et examinons les valeurs ''a'' et ''b'' telles que ''r = b<sup>d</sup>f''(''a''/''b'') et ''s = b{{e}}g''(''a''/''b'') sont régulières relativement à la base de facteurs choisie. Si ''a'' et ''b'' sont petits, ''r'' et ''s'' le seront aussi (mais au moins de l'ordre de ''m''), et nous avons une meilleure chance pour qu'ils soient réguliers en même temps.
* En ayant suffisamment de paires, en utilisant la [[Élimination de Gauss-Jordan|méthode d'élimination de Gauss]], nous pouvons obtenir les produits de certains ''r'' et de son ''s'' correspondant pour qu'ils soient des carrés en même temps. Nous avons besoin d'une condition légèrement plus forte - qu'ils soient des [[Norme (arithmétique)|normes]] de carrés dans notre corps de nombres, mais nous pouvons également obtenir cette condition par cette méthode. Chaque ''r'' est une norme de ''a-'' '''r1''' ''b'' et donc, nous obtenons que ce produit de facteurs correspondants ''a-'' '''r1''' ''b'' est un carré dans '''Z[r1]''', avec une « racine carrée » qui peut être déterminée (comme un produit de facteurs connus dans '''Z[r1]''') - cela sera typiquement représenté comme un nombre algébrique irrationnel. De manière similaire, nous obtenons que ce produit de facteurs ''a-'' '''r2''' ''b'' est un carré dans '''Z[r2]''', avec une « racine carrée » qui peut être aussi calculée.
* Comme ''m'' est une racine et de ''f'' et de ''g'' mod ''n'', il existe des [[Morphisme d'anneaux|morphismes]] des anneaux '''Z[r1]''' et '''Z[r2]''' vers l'anneau '''Z/nZ''', qui appliquent '''r1''' et '''r2''' sur ''m'', et ces morphismes appliqueront chaque « racine carrée » (typiquement non représentée comme un nombre rationnel) dans sa représentation d'entier. Maintenant, le produit de facteurs ''a-mb'' mod ''n'', nous pouvons obtenir un carré par deux manières - une pour chaque homomorphisme. Ainsi, nous avons deux nombres ''x'' et ''y'', avec ''x<sup>2</sup>-y<sup>2</sup>'' divisible par ''n'' et de nouveau avec la probabilité qu'au moins dans une moitié, nous obtenons un facteur de ''n'' en trouvant le [[Plus grand commun diviseur|PGCD]] de ''n'' et ''x-y''


== Histoire ==
Le deuxième meilleur algorithme classique, connu pour la factorisation entière est la méthode de [[factorisation en courbe elliptique de Lenstra]]. Il est meilleur que le crible général de corps de nombres ''lorsque les facteurs sont de petite taille'', comme il fonctionne par recherche de valeurs ''régulières'' de l'ordre du plus petit [[diviseur]] premier de ''n'', son temps d'exécution dépendant de la taille de ce diviseur.
L'algorithme du crible du corps de nombres est une des techniques de factorisation développées progressivement au cours du {{S|20}}.


Il fut proposé initialement dans une lettre de [[John Pollard (mathématicien)|John Pollard]] à [[Arjen Lenstra]] et [[Andrew Odlyzko]] datée de 1988<ref>{{Article|langue=en|auteur1=|titre=The development of the number field sieve|périodique=Lecture Notes in Mathematics|date=1993|issn=0075-8434|issn2=1617-9692|doi=10.1007/bfb0091534|lire en ligne=http://link.springer.com/10.1007/BFb0091534|consulté le=2018-08-11|pages=}}</ref>, comme une amélioration possible du [[crible quadratique]]. L'ayant testé sur le septième [[nombre de Fermat]] (factorisé pour la première fois en 1970), l'algorithme est étendu puis publié par [[Arjen Lenstra|Lenstra]], [[Hendrik Lenstra|Lenstra]], [[Mark Manasse|Manasse]] et [[John Pollard (mathématicien)|Pollard]] en 1990<ref>{{Article|langue=anglais|auteur1=|prénom1=A. K.|nom1=Lenstra|prénom2=H. W.|nom2=Lenstra Jr.|prénom3=M. S.|nom3=Manasse|prénom4=J. M.|nom4=Pollard|titre=The number field sieve|périodique=STOC '90 Proceedings of the twenty-second annual ACM symposium on Theory of computing|éditeur=ACM|date=1990-04-01|isbn=0897913612|issn=|doi=10.1145/100216.100295|lire en ligne=http://dl.acm.org/citation.cfm?id=100216.100295|consulté le=2018-08-11|pages=564–572}}</ref>{{,}}<ref>{{Chapitre|langue=en|auteur1=|prénom1=A. K.|nom1=Lenstra|prénom2=H. W.|nom2=Lenstra Jr.|prénom3=M. S.|nom3=Manasse|prénom4=J. M.|nom4=Pollard|titre chapitre=The number field sieve|auteurs ouvrage=|titre ouvrage=Lecture Notes in Mathematics|lieu=|éditeur=Springer Berlin Heidelberg|année=|date=1993|pages totales=|isbn=9783540570134|doi=10.1007/bfb0091537|lire en ligne=http://link.springer.com/10.1007/BFb0091537|consulté le=2018-08-11|passage=11–42}}</ref> dans [[Algorithme de factorisation par crible sur les corps de nombres spécialisé|une version « restreinte »]] à certains types d'entiers. Cette première version était tout de même suffisante pour factoriser pour la première fois le neuvième nombre de Fermat avec les ressources disponibles à l'époque<ref>{{Article|langue=en|auteur1=|prénom1=A. K.|nom1=Lenstra|prénom2=H. W.|nom2=Lenstra Jr.|prénom3=M. S.|nom3=Manasse|prénom4=J. M.|nom4=Pollard|titre=The factorization of the ninth Fermat number|périodique=Mathematics of Computation|volume=61|numéro=203|date=1993|issn=0025-5718|issn2=1088-6842|doi=10.1090/S0025-5718-1993-1182953-4|lire en ligne=http://www.ams.org/home/page/|consulté le=2018-08-11|pages=319–349}}</ref>. Des travaux successifs et les contributions de [[Joe Buhler]] et [[Carl Pomerance]] ont permis d'étendre l'algorithme à des entiers arbitraires<ref>{{Article|langue=anglais|auteur1=C. Pomerance|titre=A Tale of Two Sieves|périodique=Notices of the AMS|date=décembre 1996|issn=|lire en ligne=https://www.ams.org/notices/199612/pomerance.pdf|pages=1473–1485}}</ref>{{,}}<ref>{{Chapitre|langue=en|prénom1=J. P.|nom1=Buhler|prénom2=H. W.|nom2=Lenstra|prénom3=Carl|nom3=Pomerance|titre chapitre=Factoring integers with the number field sieve|titre ouvrage=Lecture Notes in Mathematics|éditeur=Springer Berlin Heidelberg|date=1993|isbn=9783540570134|doi=10.1007/bfb0091539|lire en ligne=http://link.springer.com/10.1007/BFb0091539|consulté le=2018-08-11|passage=50–94}}</ref>. L'algorithme du crible du corps de nombres généralisé a atteint sa forme actuelle au courant des années 1990, sous l'impulsion entres autres de [[Peter L. Montgomery|Peter Montgomery]], mais il a continué à bénéficier depuis de l'amélioration des capacités de calcul des ordinateurs, et de la disponibilité accrue du calcul distribué<ref>{{Chapitre|langue=en|auteur1=Arjen K. Lenstra|titre=General purpose integer factoring|numéro chapitre=5|auteurs ouvrage=Joppe W. Bos et Arjen K. Lenstra|titre ouvrage=Topics in Computational Number Theory Inspired by Peter L. Montgomery|lieu=|éditeur=Cambridge University Press|année=2017|date=2017-10-12|isbn=|issn=|doi=10.1017/9781316271575|lire en ligne=https://www.cambridge.org/core/product/identifier/9781316271575/type/book}}</ref>.
== Références ==
{{Traduction/Référence|en|General number field sieve|7420682}}
*{{Ouvrage|lang=en|lien auteur1=Arjen Lenstra|nom1=Lenstra|prénom1=Arjen K.|nom2=Lenstra|lien auteur2=Hendrik Lenstra|prénom2=H.W. Jr.|responsabilité2=eds.|année=1993|titre=The development of the number field sieve|collection=Lecture Notes in Math.|numéro dans collection=1554|lien éditeur=Springer-Verlag|éditeur=Springer}}
*{{Article|lang=en|lien auteur=Carl Pomerance|nom=Pomerance|first=Carl|url=http://www.ams.org/notices/199612/pomerance.pdf|titre=A Tale of Two Sieves|lien périodique=Notices of the American Mathematical Society|revue=Notices Amer. Math. Soc.|year=1996|p.=1473-1485}}
*{{Lien web|auteur=Khalid Hazam|url=https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B2br8VsIkKH9MzA2ZTQ1YWUtMTY4ZS00ZDVmLWIyM2ItOWZlMzI2MTE3YTcw&hl=fr|titre=Crible Généralisé sur le Corps de Nombres}} (Mémoire de projet, Faculté des sciences et techniques Mohammedia, mai 2011)


L'algorithme fut simultanément adapté pour calculer des [[Logarithme discret|logarithmes discrets]]<ref name=":0">{{Chapitre|langue=anglais|auteur1=|prénom1=Antoine|nom1=Joux|prénom2=Reynald|nom2=Lercier|titre chapitre=Number Field Sieve for DLP|auteurs ouvrage=Henk C. A. van Tilborg et Sushil Jajodia|titre ouvrage=Encyclopedia of Cryptography and Security|lieu=Boston, MA|éditeur=Springer|année=2011|date=|pages totales=|isbn=978-1-4419-5905-8|lire en ligne=https://hal.archives-ouvertes.fr/hal-00665015|consulté le=2018-08-13|passage=867–873}}</ref>, où il reste aujourd'hui l'algorithme le plus efficace connu pour résoudre ce problème sur les corps finis de grande caractéristique. En [[Caractéristique d'un anneau|petite caractéristique]], plusieurs optimisations sont possibles, comme l'algorithme du [[Crible du corps de fonctions|crible de corps de fonctions]] (''function field sieve'') développé initialement par [[Leonard Adleman|Adleman]] en 1994<ref>{{Chapitre|langue=en|prénom1=Leonard M.|nom1=Adleman|titre chapitre=The function field sieve|titre ouvrage=Lecture Notes in Computer Science|éditeur=Springer Berlin Heidelberg|date=1994|isbn=9783540586913|doi=10.1007/3-540-58691-1_48|lire en ligne=http://link.springer.com/10.1007/3-540-58691-1_48|consulté le=2018-08-13|passage=108–121}}</ref>.
{{Portail|arithmétique|informatique théorique}}


En 1995, [[Peter Shor]] présente [[Algorithme de Shor|un algorithme quantique]] dont la complexité asymptotique est très inférieure à celle du crible du corps de nombres, basé sur une approche radicalement différente ; toutefois un tel algorithme nécessite un [[calculateur quantique]] suffisamment grand pour fonctionner, ce qu'à l'heure actuelle (2018) on ne sait pas construire.

== Principe d'opération ==

=== Principe général ===
À l'instar du [[crible quadratique]] dont il est une amélioration, l'algorithme du crible du corps de nombres fonctionne en deux phases principales<ref group="Note">Comme indiqué par (Lenstra 2017), ce découpage en deux phase a été identité par Morrison et Brillhart dès 1975.</ref>{{,}}<ref>{{Article|langue=en|auteur1=|prénom1=Michael A.|nom1=Morrison|prénom2=John|nom2=Brillhart|titre=A method of factoring and the factorization of 𝐹₇|périodique=Mathematics of Computation|volume=29|numéro=129|date=1975|issn=0025-5718|issn2=1088-6842|doi=10.1090/S0025-5718-1975-0371800-5|lire en ligne=http://www.ams.org/home/page/|consulté le=2018-08-11|pages=183–205}}</ref> :

* Une phase de collecte, hautement parallélisable, pendant laquelle l'algorithme recherche des [[Entier friable|nombres friables]] modulo l'entier ''n'' à factoriser. C'est au cours de cette étape que la technique de crible est utilisée, s'appuyant sur les propriétés des [[corps de nombres]] pour sélectionner efficacement des candidats. Les nombres retenus à l'issue de cette première phase se décomposent tous en produits de puissances d'une base de facteurs (en général premiers). L'efficacité du crible du corps de nombres est surtout due à cette technique de crible, qui permet de trouver des nombres friables plus rapidement que d'autres approches telles que le [[crible quadratique]].
* Une phase d'algèbre linéaire, difficilement parallélisable, au cours de laquelle l'algorithme construit un élément du noyau d'une grande matrice creuse. Les lignes de cette matrice correspondent aux puissances (modulo 2) de chaque facteur de la base apparaissant dans les nombres collectés dans la phase précédente. Le vecteur du noyau ainsi obtenu permet de déterminer une [[congruence de carrés]], qui donne immédiatement une factorisation de ''n''.

Cette seconde phase n'est pas spécifique au crible du corps de nombres, mais nécessite des algorithmes capables de manipuler des matrices de grande taille. L'[[Algorithme de Lanczos|algorithme de Lanczos par blocs]] ou celui de [[Algorithme de Wiedemann|Wiedemann]] (dû à [[Don Coppersmith|Coppersmith]]<ref>{{Article|langue=anglais|auteur1=|prénom1=G.|nom1=Villard|titre=A study of Coppersmith's block Wiedemann algorithm using matrix polynomials|périodique=LMC-IMAG, REPORT # 975 IM|volume=38|date=1997|issn=|lire en ligne=http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.11.8872|consulté le=2018-08-11|pages=}}</ref>{{,}}<ref>{{Article|langue=anglais|auteur1=|prénom1=G.|nom1=Villard|titre=Further analysis of Coppersmith's block Wiedemann algorithm for the solution of sparse linear systems (extended abstract)|périodique=ISSAC '97 Proceedings of the 1997 international symposium on Symbolic and algebraic computation|éditeur=ACM|date=1997-07-01|isbn=0897918754|issn=|doi=10.1145/258726.258742|lire en ligne=http://dl.acm.org/citation.cfm?id=258726.258742|consulté le=2018-08-11|pages=32–39}}</ref>) sont souvent employés.

=== Phase de collecte ===
On note <math>n</math>l'entier positif que l'on cherche à factoriser, et on suppose que <math>n</math>n'est pas la puissance d'un nombre premier (cette précaution n'est pas un renoncement : dans le cas contraire où <math>n = p^k</math>il est aisé de factoriser en calculant des racines).

==== Principe du crible ====
Le crible du corps de nombres s'appuie sur la remarque suivante. Soit <math>f</math>un [[polynôme unitaire]], à coefficients entiers, [[Polynôme irréductible|irréductible]] sur <math>\mathbb Z</math>. Notons <math>\alpha</math>une racine complexe de <math>f</math>. Supposons qu'il existe <math>m</math>tel que <math>f(m) = 0 \bmod n</math>, alors il existe un [[morphisme d'anneaux]] <math>\phi : \mathbb Z[\alpha] \to \mathbb Z/(n)</math>défini par <math>\phi: \alpha \mapsto m</math>. En particulier, pour tout polynôme <math>g</math>à coefficients entiers, on a <math>\phi(g(\alpha)) = g(m) \bmod n</math>. Voici comment cette remarque participe à la recherche de [[Congruence de carrés|congruences de carrés]] : si on a trouvé une collection <math>\mathcal S</math>de polynômes tels que<math display="block">\prod_{g \in \mathcal S} g(\alpha)</math>est un carré dans <math>\mathbb Z[\alpha]</math>, notons-le <math>\beta^2</math>, et que

<math display="block">\prod_{g \in \mathcal S} g(m)</math>est un carré dans <math>\mathbb Z/(n)</math>, notons-le <math>y^2</math>. Alors on a trouvé une relation :

<math display="block">x^2 = \phi(\beta)^2 = \phi(\beta^2) = \phi \left( \prod_{g \in \mathcal S}g(\alpha) \right) = \prod_{g \in \mathcal S}g(m) = y^2 \bmod n </math>Pour trouver <math>\mathcal S</math>, on va à l'instar du [[crible quadratique]] ou de la [[Factorisation de Dixon|méthode de Dixon]], chercher des [[Entier friable|nombres friables]]. Seulement, pour cela, il faut d'abord définir une notion de friabilité sur <math>\mathbb Z[\alpha]</math>. Avant de détailler cet aspect, donnons une manière de construire les polynômes <math>f</math> et <math>g</math>intervenant dans l'équation.

==== Polynômes ''f'' et ''g'' ====
Pour construire le polynôme <math>f</math>de la section précédente, on peut utiliser ceci : prenons <math>d</math>un entier tel que <math>n > 2^{d^2}</math>et posons <math>m = \lfloor n^{1/d} \rfloor </math>. En écrivant l'entier <math>n</math>en base <math>m</math>, on obtient

<math display="block">n = c_d m^d + c_{d-1}m^{d-1} + \cdots + c_0</math>et on définit

<math display="block">f(t) = c_d t^d + c_{d-1}t^{d-1} + \cdots + c_0</math>

On vérifie aisément que <math>f</math>est unitaire, et que <math>f(m) = n</math>par construction, donc <math>f(m) = 0 \bmod n</math>. Si <math>f</math>n'est pas irréductible, on peut le décomposer en facteurs irréductibles de manière efficace<ref group="Note">Si la factorisation de <math>f</math>n'est pas triviale on obtient directement une factorisation de <math>n</math>.</ref>.

Pour construire les polynômes <math>g</math>, posons de manière heuristique <math>g(t) = a -bt</math>pour <math>a, b</math>deux entiers premiers entre eux avec <math>0 < b, |a| < B</math>.

==== Friabilité sur <math>\mathbb Z[\alpha]</math> ====
Si <math>\mathbb Z[\alpha]</math>était un anneau factoriel, on pourrait simplement décomposer ses éléments en facteurs premiers et chercher les entiers friables de l'anneau pour trouver <math>\beta</math>. Malheureusement, ce n'est en général pas le cas. Ceci dit, on dispose de l'application [[Norme (mathématiques)|norme]] <math>N : \mathbb Q(\alpha) \to \mathbb Q</math>qui est [[Fonction multiplicative|multiplicative]] et dont les valeurs sur <math>\mathbb Z[\alpha]</math>sont entières<ref group="Note">Dans le détail, si on note <math>\alpha_1, \dotsc, \alpha_t</math>les conjugués complexes de <math>\alpha</math>, alors

<math>\begin{align}
N(a - b\alpha)
& = \prod_{t = 1}^d (a - b \alpha_t) = b^d \prod_{t = 1}^d \left( \frac{a}{b} - \alpha_t \right) = b^d f\left( \frac{a}{b} \right) \\
& = a^d + c_{d-1} a^{d-1}b + \cdots + c_1 ab^{d-1} + c_0 b^d
\end{align}</math>

ce qui montre que la norme de <math>a - b\alpha</math>est un polynôme en <math>a, b</math>à coefficients entiers.</ref>. En particulier, si <math>\prod_{(a, b) \in \mathcal S} (a -b\alpha )</math>est un carré dans <math>\mathbb Z[\alpha]</math>, alors <math>\prod_{(a, b) \in \mathcal S} N(a -b\alpha )</math>est un carré dans <math>\mathbb Z</math><ref group="Note">La réciproque n'est en général pas vraie : par exemple on a dans <math>\mathbb Z[i]</math>, donc <math>N((2+i)(2-i)) = 5^2</math>est un carré, alors que <math>(2+i)(2-i) = 5</math>n'en est pas un.</ref>, et plus généralement un élément qui se décompose en de nombreux facteurs aura une norme qui se décompose elle-même en de nombreux facteurs.

On dira qu'un élément <math>u</math>de <math>\mathbb Z[\alpha]</math>est « friable » lorsque <math>N(u)</math>est friable. La phase de collecte consiste donc à chercher des couples <math>(a, b)</math>tels que <math>g(\alpha) = a - b\alpha \in \mathbb Z[\alpha]</math>est friable en ce sens.

=== Phase d'algèbre linéaire ===
La phase d'algèbre linéaire consiste, une fois que l'on dispose de suffisamment de relations entre nombres friables, à construire une [[congruence de carrés]]. Pour cela, on représente un nombre friable sur la base de friabilité, c'est-à-dire <math>u = p_1^{e_1} p_2^{e_2} \cdots p_k^{e_k}</math>où <math>\mathcal P = \{p_1, \cdots, p_k\} = \{p~\textrm{premier}, p < B\}</math>, par le vecteur de ses exposants : <math>v(u) = \begin{pmatrix}e_1 & e_2 & \cdots & e_k \end{pmatrix}</math>. Ensemble, tous les nombres collectés forment une matrice, dont on cherche un élément du noyau modulo 2, c'est-à-dire une [[combinaison linéaire]] des lignes telle que le vecteur obtenu ait des coefficients pairs.

Cette combinaison linéaire d'exposants correspond à un produit entre les nombres collectés : d'un côté, il s'agit de carrés (donc leur produit est encore un carré modulo <math>n</math>), et de l'autre, il s'agit de nombres dont le produit a des exposants pairs dans la base de friabilité, c'est-à-dire encore des carrés. On a bien une congruence de carrés.

== Complexité de l'algorithme ==
L'analyse de la complexité de l'algorithme repose notamment sur l'estimation de la distribution des [[nombres friables]]. Ce problème a été étudié par [[Nicolaas Govert de Bruijn|de Bruijn]]<ref>{{Article|langue=anglais|auteur1=N. de Bruijn|titre=On the number of positive integers <math>\leq x</math> and free of
prime factors <math>>y</math>|périodique=Proceedings of the Koninklijke Nederlandse Akademie van Wetenschappen: Series A: Mathematical Sciences|date=01/01/1966|issn=|lire en ligne=https://pure.tue.nl/ws/portalfiles/portal/2158712/597534.pdf|pages=}}</ref>, et Canfield-[[Paul Erdős|Erdös]]-Pomerance<ref>{{Article|langue=anglais|auteur1=E. Canfield, P. Erdös et C. Pomerance|titre=On a problem of Oppenheim concerning
“Factorisatio Numerorum”|périodique=Journal of Number Theory|volume=17|date=1983|issn=|lire en ligne=|pages=1-28}}</ref>, qui montrent le résultat suivant :

::« Un entier positif choisi au hasard plus petit que <math>L_x[r, \psi]</math>est <math>L_x[s, \beta]</math>-friable avec probabilité <math>L_x\left[ r - s , -\frac{\psi(r-s)}{\beta} \right]</math>lorsque <math>x \to \infty</math>. »

Dans l'énoncé ci-dessus on utilise la [[notation L]] (introduite par Pomerance en 1982<ref>{{Chapitre|langue=anglais|auteur1=Carl Pomerance|titre chapitre=Analysis and Comparison of Some Integer Factoring Algorithms|auteurs ouvrage=H. W. Lenstra et R. Tijdeman|titre ouvrage=Computational Methods in Number Theory|lieu=Math Centrum, Amsterdam|éditeur=|année=1982|pages totales=|isbn=|lire en ligne=|passage=89-139}}</ref>), et on note dans la suite <math>\pi(B)</math>le nombre d'entiers positifs premiers inférieurs à <math>B</math>. Une analyse globale donne alors une complexité<ref group="Note">Voir (Lenstra 2017, Section 5.2.3).</ref> :

<math display="block">\underbrace{\left( \pi(L_n[s, \beta]) + \omega\right)}_{\mathrm{nombre~de~relations~a~collecter}} \cdot \underbrace{L_n[r-s, \psi(r-s)/\beta]}_\mathrm{inverse~de~proba~de~friabilite} \cdot \underbrace{S\left(L_n[r, \psi] , L_n[s, \beta]\right)}_\mathrm{cout~verification~friabilite} + \underbrace{M\left( \pi(L_n[s, \beta]) \right)}_\mathrm{cout~algebre~lineaire}</math>

L'utilisation des meilleurs algorithmes d'algèbre linéaire et l'amortissement du coût de <math>S</math>grâce au crible permettent, en optimisant tous les paramètres, d'estimer la probabilité totale de l'algorithme à <math>L_{n}\left[{\frac {1}{3}},{\sqrt[{3}]{\frac {64}{9}}}\right]</math><ref group="Note">Voir (Lenstra 2017, Section 5.5.3).</ref>. Il est possible d'abaisser encore cette complexité au moins en principe en utilisant deux techniques dues à Coppersmith<ref>{{Article|langue=en|prénom1=Don|nom1=Coppersmith|titre=Modifications to the Number Field Sieve|périodique=Journal of Cryptology|volume=6|numéro=3|date=1993|issn=0933-2790|issn2=1432-1378|doi=10.1007/bf00198464|lire en ligne=http://link.springer.com/10.1007/BF00198464|consulté le=2018-08-11}}</ref>, mais les gains réels de ces modifications ne sont pas encore bien mesurés<ref group="Note">Voir (Lenstra 2017, Section 5.5.4).</ref>.

== Adaptation au calcul de logarithme discret ==
De même que la méthode de Dixon<ref>{{Ouvrage|langue=français|auteur1=[[Maurice Kraitchik]]|titre=Théorie des Nombres|passage=|lieu=Paris|éditeur=Gauthier-Villars|date=1922|pages totales=|isbn=|lire en ligne=}}</ref><ref>{{Chapitre|langue=en|prénom1=Martin E.|nom1=Hellman|prénom2=Justin M.|nom2=Reyneri|titre chapitre=Fast Computation of Discrete Logarithms in GF (q)|titre ouvrage=Advances in Cryptology|éditeur=Springer US|date=1983|isbn=9781475706048|doi=10.1007/978-1-4757-0602-4_1|lire en ligne=http://link.springer.com/10.1007/978-1-4757-0602-4_1|consulté le=2018-08-13|passage=3–13}}</ref>, le crible du corps de nombres s'adapte bien au calcul de [[Logarithme discret|logarithmes discrets]]. En particulier, il s'agit du plus efficace algorithme classique connu pour résoudre ce problème dans les corps finis, où le crible du corps de nombres s'apparente à une forme de « calcul d'indice » <ref name=":0" />.

== Records obtenus au moyen de cet algorithme ==
Le crible du corps de nombres est derrière de nombreux records récents de factorisation et de calculs de logarithmes discrets.

=== Factorisation de nombres de forme générale ===

* 6 janvier 2010, [[Thorsten Kleinjung]], Kazumaro Aoki, Jens Franke, [[Arjen Lenstra]], Emmanuel Thomé, Joppe Bos, Pierrick Gaudry, Alexander Kruppa, [[Peter L. Montgomery|Peter Montgomery]], Dag Arne Osvik, Herman te Riele, Andrey Timofeev et [[Paul Zimmermann]], factorisation du [[nombre RSA]] RSA-768, d'une taille de 768 bits<ref>{{Chapitre|langue=en|prénom1=Thorsten|nom1=Kleinjung|prénom2=Kazumaro|nom2=Aoki|prénom3=Jens|nom3=Franke|prénom4=Arjen K.|nom4=Lenstra|titre chapitre=Factorization of a 768-Bit RSA Modulus|titre ouvrage=Advances in Cryptology – CRYPTO 2010|éditeur=Springer Berlin Heidelberg|date=2010|isbn=9783642146220|doi=10.1007/978-3-642-14623-7_18|lire en ligne=http://link.springer.com/10.1007/978-3-642-14623-7_18|consulté le=2018-08-13|passage=333–350}}</ref>.

=== Factorisation de nombres de forme particulière ===

* 4 août 2012, Greg Childers, factorisation du [[nombre de Mersenne]] 2<sup>1061</sup> − 1 d'une taille de 1061 bits<ref>{{Article|langue=anglais|auteur1=|prénom1=Greg|nom1=Childers|titre=Factorization of a 1061-bit number by the Special Number Field Sieve|périodique=IACR ePrint Archive|numéro=444|date=2012|issn=|lire en ligne=https://eprint.iacr.org/2012/444|consulté le=2018-08-13|pages=}}</ref>.

=== Logarithmes discrets dans un corps de grande caractéristique ===

* 16 juin 2016, Thorsten Kleinjung, Claus Diem, Arjen K. Lenstra, Christine Priplata et Colin Stahlke, logarithme discret modulo un [[Nombre premier sûr|premier sûr]] de 768 bits<ref>{{Lien web|langue=anglais|auteur1=Thorsten Kleinjung|titre=Logarithme discret dans un cors de 768 bits|url=https://listserv.nodak.edu/cgi-bin/wa.exe?A2=NMBRTHRY;a0c66b63.1606|site=listserv.nodak.edu|date=16 juin 2016|consulté le=2018-08-13}}</ref>.

* 11 juin 2014, Cyril Bouvier, Pierrick Gaudry, Laurent Imbert, Hamza Jeljeli et Emmanuel Thomé, logarithme discret modulo un premier sûr de 596 bits.
* 5 février 2007, Thorsten Kleinjung, logarithme discret modulo un premier sûr de 530 bits<ref>{{Lien web|langue=anglais|auteur1=Thorsten Kleinjung|titre=Logarithme discret dans un corps de 530 bits|url=https://listserv.nodak.edu/cgi-bin/wa.exe?A2=ind0702&L=NMBRTHRY&P=R45&D=0&I=-3&T=0|site=listserv.nodak.edu|date=5 février 2007|consulté le=2018-08-13}}</ref>.
* 18 juin 2005, [[Antoine Joux]] et [[Reynald Lercier]], logarithme discret modulo un premier sûr de 431 bits.

== Voir aussi ==

* [[Crible du corps de fonctions]]
* [[Crible quadratique]]
* [[Crible linéaire]]
* [[Factorisation de Dixon|Algorithme de Dixon]]
* [[Factorisation de Lenstra par les courbes elliptiques|Factorisation par courbes elliptiques]]

== Notes et références ==

=== Notes ===
{{Références|groupe=Note}}

=== Références ===
{{Références}}

{{Portail|Cryptologie|Mathématiques}}
[[Catégorie:Théorie des nombres]]
[[Catégorie:Algorithme de factorisation des entiers]]
[[Catégorie:Algorithme de factorisation des entiers]]
[[Catégorie:Cryptologie]]

Version du 13 août 2018 à 12:16

En théorie des nombres, l'algorithme du crible du corps de nombres généralisé[Note 1][Note 2] (GNFS) obtient la décomposition d'un entier en produit de facteurs premiers. C'est à l'heure actuelle (2018) le plus efficace algorithme connu pour obtenir cette décomposition, lorsque le nombre considéré est assez grand[Note 3], c'est-à-dire au-delà d'environ 10100, et ne possède pas de structure remarquable[Note 4]. Cette efficacité est due pour partie à l'utilisation d'une méthode de crible et pour partie à l'utilisation d'algorithmes efficaces pour certaines opérations (comme la manipulation de matrices creuses). La complexité algorithmique du crible de corps de nombres n'est pas prouvée, elle n'est qu'heuristique[Note 5]. Cette estimation est utilisée par les organismes de standardisation tels que le NIST pour fixer des tailles des clés RSA à un niveau de sécurité donné.

De manière remarquable, l'algorithme permet également (au prix de modifications simples) de calculer des logarithmes discrets dans les corps finis, avec la même complexité. C'est à l'heure actuelle (2018) l'algorithme le plus efficace connu dans les corps finis de caractéristique première très grande[Note 6]. En revanche, l'algorithme du crible du corps de nombres n'est pas applicable au calcul du logarithme discret dans un groupe abstrait générique, ce qui est une des motivations derrières la cryptographie sur les courbes elliptiques.

Pour ces raisons, l'algorithme est responsable aujourd'hui de nombreux records de factorisation (et de calculs de logarithmes discret) et joue un rôle important en cryptographie. Enfin, quoique de manière plus anecdotique, il intervient également dans le contexte plus large de la sécurité informatique, par exemple dans l'attaque Logjam dont il est un composant essentiel[1] : les auteurs ont montré comment intercepter une communication TLS 1.2, une des étapes consistant à calculer au moyen du crible du corps de nombres un logarithme discret dans un corps de 512 bits en moins d'une minute.

Histoire

L'algorithme du crible du corps de nombres est une des techniques de factorisation développées progressivement au cours du 20e siècle.

Il fut proposé initialement dans une lettre de John Pollard à Arjen Lenstra et Andrew Odlyzko datée de 1988[2], comme une amélioration possible du crible quadratique. L'ayant testé sur le septième nombre de Fermat (factorisé pour la première fois en 1970), l'algorithme est étendu puis publié par Lenstra, Lenstra, Manasse et Pollard en 1990[3],[4] dans une version « restreinte » à certains types d'entiers. Cette première version était tout de même suffisante pour factoriser pour la première fois le neuvième nombre de Fermat avec les ressources disponibles à l'époque[5]. Des travaux successifs et les contributions de Joe Buhler et Carl Pomerance ont permis d'étendre l'algorithme à des entiers arbitraires[6],[7]. L'algorithme du crible du corps de nombres généralisé a atteint sa forme actuelle au courant des années 1990, sous l'impulsion entres autres de Peter Montgomery, mais il a continué à bénéficier depuis de l'amélioration des capacités de calcul des ordinateurs, et de la disponibilité accrue du calcul distribué[8].

L'algorithme fut simultanément adapté pour calculer des logarithmes discrets[9], où il reste aujourd'hui l'algorithme le plus efficace connu pour résoudre ce problème sur les corps finis de grande caractéristique. En petite caractéristique, plusieurs optimisations sont possibles, comme l'algorithme du crible de corps de fonctions (function field sieve) développé initialement par Adleman en 1994[10].

En 1995, Peter Shor présente un algorithme quantique dont la complexité asymptotique est très inférieure à celle du crible du corps de nombres, basé sur une approche radicalement différente ; toutefois un tel algorithme nécessite un calculateur quantique suffisamment grand pour fonctionner, ce qu'à l'heure actuelle (2018) on ne sait pas construire.

Principe d'opération

Principe général

À l'instar du crible quadratique dont il est une amélioration, l'algorithme du crible du corps de nombres fonctionne en deux phases principales[Note 7],[11] :

  • Une phase de collecte, hautement parallélisable, pendant laquelle l'algorithme recherche des nombres friables modulo l'entier n à factoriser. C'est au cours de cette étape que la technique de crible est utilisée, s'appuyant sur les propriétés des corps de nombres pour sélectionner efficacement des candidats. Les nombres retenus à l'issue de cette première phase se décomposent tous en produits de puissances d'une base de facteurs (en général premiers). L'efficacité du crible du corps de nombres est surtout due à cette technique de crible, qui permet de trouver des nombres friables plus rapidement que d'autres approches telles que le crible quadratique.
  • Une phase d'algèbre linéaire, difficilement parallélisable, au cours de laquelle l'algorithme construit un élément du noyau d'une grande matrice creuse. Les lignes de cette matrice correspondent aux puissances (modulo 2) de chaque facteur de la base apparaissant dans les nombres collectés dans la phase précédente. Le vecteur du noyau ainsi obtenu permet de déterminer une congruence de carrés, qui donne immédiatement une factorisation de n.

Cette seconde phase n'est pas spécifique au crible du corps de nombres, mais nécessite des algorithmes capables de manipuler des matrices de grande taille. L'algorithme de Lanczos par blocs ou celui de Wiedemann (dû à Coppersmith[12],[13]) sont souvent employés.

Phase de collecte

On note l'entier positif que l'on cherche à factoriser, et on suppose que n'est pas la puissance d'un nombre premier (cette précaution n'est pas un renoncement : dans le cas contraire où il est aisé de factoriser en calculant des racines).

Principe du crible

Le crible du corps de nombres s'appuie sur la remarque suivante. Soit un polynôme unitaire, à coefficients entiers, irréductible sur . Notons une racine complexe de . Supposons qu'il existe tel que , alors il existe un morphisme d'anneaux défini par . En particulier, pour tout polynôme à coefficients entiers, on a . Voici comment cette remarque participe à la recherche de congruences de carrés : si on a trouvé une collection de polynômes tels queest un carré dans , notons-le , et que

est un carré dans , notons-le . Alors on a trouvé une relation :

Pour trouver , on va à l'instar du crible quadratique ou de la méthode de Dixon, chercher des nombres friables. Seulement, pour cela, il faut d'abord définir une notion de friabilité sur . Avant de détailler cet aspect, donnons une manière de construire les polynômes et intervenant dans l'équation.

Polynômes f et g

Pour construire le polynôme de la section précédente, on peut utiliser ceci : prenons un entier tel que et posons . En écrivant l'entier en base , on obtient

et on définit

On vérifie aisément que est unitaire, et que par construction, donc . Si n'est pas irréductible, on peut le décomposer en facteurs irréductibles de manière efficace[Note 8].

Pour construire les polynômes , posons de manière heuristique pour deux entiers premiers entre eux avec .

Friabilité sur

Si était un anneau factoriel, on pourrait simplement décomposer ses éléments en facteurs premiers et chercher les entiers friables de l'anneau pour trouver . Malheureusement, ce n'est en général pas le cas. Ceci dit, on dispose de l'application norme qui est multiplicative et dont les valeurs sur sont entières[Note 9]. En particulier, si est un carré dans , alors est un carré dans [Note 10], et plus généralement un élément qui se décompose en de nombreux facteurs aura une norme qui se décompose elle-même en de nombreux facteurs.

On dira qu'un élément de est « friable » lorsque est friable. La phase de collecte consiste donc à chercher des couples tels que est friable en ce sens.

Phase d'algèbre linéaire

La phase d'algèbre linéaire consiste, une fois que l'on dispose de suffisamment de relations entre nombres friables, à construire une congruence de carrés. Pour cela, on représente un nombre friable sur la base de friabilité, c'est-à-dire , par le vecteur de ses exposants : . Ensemble, tous les nombres collectés forment une matrice, dont on cherche un élément du noyau modulo 2, c'est-à-dire une combinaison linéaire des lignes telle que le vecteur obtenu ait des coefficients pairs.

Cette combinaison linéaire d'exposants correspond à un produit entre les nombres collectés : d'un côté, il s'agit de carrés (donc leur produit est encore un carré modulo ), et de l'autre, il s'agit de nombres dont le produit a des exposants pairs dans la base de friabilité, c'est-à-dire encore des carrés. On a bien une congruence de carrés.

Complexité de l'algorithme

L'analyse de la complexité de l'algorithme repose notamment sur l'estimation de la distribution des nombres friables. Ce problème a été étudié par de Bruijn[14], et Canfield-Erdös-Pomerance[15], qui montrent le résultat suivant :

« Un entier positif choisi au hasard plus petit que est -friable avec probabilité lorsque . »

Dans l'énoncé ci-dessus on utilise la notation L (introduite par Pomerance en 1982[16]), et on note dans la suite le nombre d'entiers positifs premiers inférieurs à . Une analyse globale donne alors une complexité[Note 11] :

L'utilisation des meilleurs algorithmes d'algèbre linéaire et l'amortissement du coût de grâce au crible permettent, en optimisant tous les paramètres, d'estimer la probabilité totale de l'algorithme à [Note 12]. Il est possible d'abaisser encore cette complexité au moins en principe en utilisant deux techniques dues à Coppersmith[17], mais les gains réels de ces modifications ne sont pas encore bien mesurés[Note 13].

Adaptation au calcul de logarithme discret

De même que la méthode de Dixon[18][19], le crible du corps de nombres s'adapte bien au calcul de logarithmes discrets. En particulier, il s'agit du plus efficace algorithme classique connu pour résoudre ce problème dans les corps finis, où le crible du corps de nombres s'apparente à une forme de « calcul d'indice » [9].

Records obtenus au moyen de cet algorithme

Le crible du corps de nombres est derrière de nombreux records récents de factorisation et de calculs de logarithmes discrets.

Factorisation de nombres de forme générale

Factorisation de nombres de forme particulière

Logarithmes discrets dans un corps de grande caractéristique

  • 16 juin 2016, Thorsten Kleinjung, Claus Diem, Arjen K. Lenstra, Christine Priplata et Colin Stahlke, logarithme discret modulo un premier sûr de 768 bits[22].
  • 11 juin 2014, Cyril Bouvier, Pierrick Gaudry, Laurent Imbert, Hamza Jeljeli et Emmanuel Thomé, logarithme discret modulo un premier sûr de 596 bits.
  • 5 février 2007, Thorsten Kleinjung, logarithme discret modulo un premier sûr de 530 bits[23].
  • 18 juin 2005, Antoine Joux et Reynald Lercier, logarithme discret modulo un premier sûr de 431 bits.

Voir aussi

Notes et références

Notes

  1. Aussi connu sous son nom anglais, generalised number field sieve, ou son acronyme : GNFS.
  2. Parfois appelé de manière moins précise « crible algébrique » ou « crible sur les corps de nombres », plus rarement « crible de corps de nombres ».
  3. Il existe un algorithme quantique asymptotiquement strictement plus efficace : l'algorithme de Shor. Cependant il n'est pas possible à l'heure actuelle d'exécuter cet algorithme pour de grands nombres.
  4. Lorsqu'on s'intéresse à des nombres de forme particulière, comme les nombres de Fermat ou de Mersenne, une version spécialisée de l'algorithme est plus efficace.
  5. Elle s'appuie notamment sur des hypothèses de répartition uniforme qui sont étayées par l'expérience mais pour lesquelles il n'y a pas de justification théorique.
  6. Il existe des algorithmes plus efficaces pour les corps finis de petite caractéristique, en particulier les corps binaires , tels que le crible du corps de fonctions.
  7. Comme indiqué par (Lenstra 2017), ce découpage en deux phase a été identité par Morrison et Brillhart dès 1975.
  8. Si la factorisation de n'est pas triviale on obtient directement une factorisation de .
  9. Dans le détail, si on note les conjugués complexes de , alors ce qui montre que la norme de est un polynôme en à coefficients entiers.
  10. La réciproque n'est en général pas vraie : par exemple on a dans , donc est un carré, alors que n'en est pas un.
  11. Voir (Lenstra 2017, Section 5.2.3).
  12. Voir (Lenstra 2017, Section 5.5.3).
  13. Voir (Lenstra 2017, Section 5.5.4).

Références

  1. (en) David Adrian, Karthikeyan Bhargavan, Zakir Durumeric et Pierrick Gaudry, « Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice », CCS '15 Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security, ACM,‎ , p. 5–17 (ISBN 9781450338325, DOI 10.1145/2810103.2813707, lire en ligne, consulté le )
  2. (en) « The development of the number field sieve », Lecture Notes in Mathematics,‎ (ISSN 0075-8434 et 1617-9692, DOI 10.1007/bfb0091534, lire en ligne, consulté le )
  3. (en) A. K. Lenstra, H. W. Lenstra Jr., M. S. Manasse et J. M. Pollard, « The number field sieve », STOC '90 Proceedings of the twenty-second annual ACM symposium on Theory of computing, ACM,‎ , p. 564–572 (ISBN 0897913612, DOI 10.1145/100216.100295, lire en ligne, consulté le )
  4. (en) A. K. Lenstra, H. W. Lenstra Jr., M. S. Manasse et J. M. Pollard, « The number field sieve », dans Lecture Notes in Mathematics, Springer Berlin Heidelberg, (ISBN 9783540570134, DOI 10.1007/bfb0091537, lire en ligne), p. 11–42
  5. (en) A. K. Lenstra, H. W. Lenstra Jr., M. S. Manasse et J. M. Pollard, « The factorization of the ninth Fermat number », Mathematics of Computation, vol. 61, no 203,‎ , p. 319–349 (ISSN 0025-5718 et 1088-6842, DOI 10.1090/S0025-5718-1993-1182953-4, lire en ligne, consulté le )
  6. (en) C. Pomerance, « A Tale of Two Sieves », Notices of the AMS,‎ , p. 1473–1485 (lire en ligne)
  7. (en) J. P. Buhler, H. W. Lenstra et Carl Pomerance, « Factoring integers with the number field sieve », dans Lecture Notes in Mathematics, Springer Berlin Heidelberg, (ISBN 9783540570134, DOI 10.1007/bfb0091539, lire en ligne), p. 50–94
  8. (en) Arjen K. Lenstra, chap. 5 « General purpose integer factoring », dans Joppe W. Bos et Arjen K. Lenstra, Topics in Computational Number Theory Inspired by Peter L. Montgomery, Cambridge University Press, (DOI 10.1017/9781316271575, lire en ligne)
  9. a et b (en) Antoine Joux et Reynald Lercier, « Number Field Sieve for DLP », dans Henk C. A. van Tilborg et Sushil Jajodia, Encyclopedia of Cryptography and Security, Boston, MA, Springer, (ISBN 978-1-4419-5905-8, lire en ligne), p. 867–873
  10. (en) Leonard M. Adleman, « The function field sieve », dans Lecture Notes in Computer Science, Springer Berlin Heidelberg, (ISBN 9783540586913, DOI 10.1007/3-540-58691-1_48, lire en ligne), p. 108–121
  11. (en) Michael A. Morrison et John Brillhart, « A method of factoring and the factorization of 𝐹₇ », Mathematics of Computation, vol. 29, no 129,‎ , p. 183–205 (ISSN 0025-5718 et 1088-6842, DOI 10.1090/S0025-5718-1975-0371800-5, lire en ligne, consulté le )
  12. (en) G. Villard, « A study of Coppersmith's block Wiedemann algorithm using matrix polynomials », LMC-IMAG, REPORT # 975 IM, vol. 38,‎ (lire en ligne, consulté le )
  13. (en) G. Villard, « Further analysis of Coppersmith's block Wiedemann algorithm for the solution of sparse linear systems (extended abstract) », ISSAC '97 Proceedings of the 1997 international symposium on Symbolic and algebraic computation, ACM,‎ , p. 32–39 (ISBN 0897918754, DOI 10.1145/258726.258742, lire en ligne, consulté le )
  14. (en) N. de Bruijn, « On the number of positive integers and free of prime factors  », Proceedings of the Koninklijke Nederlandse Akademie van Wetenschappen: Series A: Mathematical Sciences,‎ (lire en ligne)
  15. (en) E. Canfield, P. Erdös et C. Pomerance, « On a problem of Oppenheim concerning “Factorisatio Numerorum” », Journal of Number Theory, vol. 17,‎ , p. 1-28
  16. (en) Carl Pomerance, « Analysis and Comparison of Some Integer Factoring Algorithms », dans H. W. Lenstra et R. Tijdeman, Computational Methods in Number Theory, Math Centrum, Amsterdam, , p. 89-139
  17. (en) Don Coppersmith, « Modifications to the Number Field Sieve », Journal of Cryptology, vol. 6, no 3,‎ (ISSN 0933-2790 et 1432-1378, DOI 10.1007/bf00198464, lire en ligne, consulté le )
  18. Maurice Kraitchik, Théorie des Nombres, Paris, Gauthier-Villars,
  19. (en) Martin E. Hellman et Justin M. Reyneri, « Fast Computation of Discrete Logarithms in GF (q) », dans Advances in Cryptology, Springer US, (ISBN 9781475706048, DOI 10.1007/978-1-4757-0602-4_1, lire en ligne), p. 3–13
  20. (en) Thorsten Kleinjung, Kazumaro Aoki, Jens Franke et Arjen K. Lenstra, « Factorization of a 768-Bit RSA Modulus », dans Advances in Cryptology – CRYPTO 2010, Springer Berlin Heidelberg, (ISBN 9783642146220, DOI 10.1007/978-3-642-14623-7_18, lire en ligne), p. 333–350
  21. (en) Greg Childers, « Factorization of a 1061-bit number by the Special Number Field Sieve », IACR ePrint Archive, no 444,‎ (lire en ligne, consulté le )
  22. (en) Thorsten Kleinjung, « Logarithme discret dans un cors de 768 bits », sur listserv.nodak.edu, (consulté le )
  23. (en) Thorsten Kleinjung, « Logarithme discret dans un corps de 530 bits », sur listserv.nodak.edu, (consulté le )