Crible Quadratique

Crible Quadratique

Crible quadratique

L'algorithme crible quadratique (QS pour Quadratic sieve) est un algorithme moderne de décomposition en produit de facteurs premiers fondé sur l'arithmétique modulaire. Dans la pratique, la seconde méthode connue la plus rapide. C'est un algorithme de factorisation à but général, ce qui veut dire que son temps d'exécution dépend uniquement de la taille de l'entier à factoriser, et non d'une structure spéciale ou des propriétés de celui-ci.

Sommaire

Objectif de base

L'algorithme essaye d'établir une congruence de carrés modulo n (l'entier à factoriser), qui, souvent, conduit à une factorisation de n. L'algorithme fonctionne en deux phases : la phase de collecte des données, où il collecte les informations qui peuvent conduire à une congruence de carrés ; et la phase de calcul des données, où il place toutes les données qu'il a collectées dans une matrice et la résout pour obtenir une congruence de carrés. Cette phase requiert une grande quantité de mémoire et ne peut pas être mise en parallèle et donc, elle est habituellement exécutée par un supercalculateur quand le nombre à factoriser a plus de 100 chiffres.

L'approche naïve pour trouver une congruence de carrés est de prendre un nombre aléatoire, l'élever au carré, et espérer que le plus petit reste non-négatif modulo n est un carré parfait. Cette approche trouve rarement une congruence de carrés pour les grands n, mais lorsqu'une est trouvée, plus souvent qu'on ne le pense, la factorisation est complète.

Le crible quadratique est une modification de la méthode de factorisation de Dixon.

Comment QS optimise la recherche de congruences

Le crible quadratique essaie de trouver des paires d'entiers x et y(x) (où y(x) est une fonction de x satisfaisant à la condition plus faible que x2y2 (mod n). Il sélectionne une borne régulière B, et essaie de trouver x tel que le plus petit reste absolu de x2 mod n (y(x)) est B-régulier. Une telle paire d'entiers est appelée une relation. L'ensemble des nombres premiers inférieurs ou égaux à B est appelé la base des facteurs.

Le crible quadratique accélère le processus de recherche de relations en prenant x fermé par la racine carrée de n. Ceci assure que y(x) sera plus petit, et ainsi a une chance plus grande d'être B-régulier. (x étant un petit entier) :

y(x)=\left(\left\lfloor\sqrt{n}\right\rfloor+x\right)^2-n
y(x)\approx 2x\left\lfloor\sqrt{n}\right\rfloor+x^2

Ceci implique que y est d'ordre 2x[√n]. Néanmoins, cela implique aussi que y croît linéairement avec le carré de |x|.

Nous pouvons aussi augmenter les chances de régularité en augmentant simplement la taille de la base des facteurs, mais cela veut dire que nous avons à collecter plus de relations. Nous devons avoir au moins autant de relations que nous avons de nombres premiers dans la base des facteurs.

Relations partielles et cycles

Même si nous trouvons une relation où y(x) n'est pas B-régulier, nous pouvons être capable de fusionner deux de ces relations partielles pour en former une complète. Ceci n'est seulement possible que si deux y sont les produits des mêmes nombres premiers en dehors de la base de facteurs. Par exemple, si B = 7 et n = 91, nous avons les relations partielles :

21^2\equiv7^1\cdot11\pmod{91}
29^2\equiv2^1\cdot11\pmod{91}

Nous pouvons les multiplier ensemble :

(21\cdot 29)^2\equiv2^1\cdot7^1\cdot11^2\pmod{91}

et multiplier les deux cotés par (11−1)2 modulo 91. 11−1 = 58, donc :

(58\cdot 21\cdot 29)^2\equiv 2^1\cdot7^1\pmod{91}
14^2\equiv 2^1\cdot7^1\pmod{91}

et nous avons une relation complète. Une telle relation complète (obtenue par combinaison de relations partielles) est appelée un cycle. Quelquefois, la formation d'un cycle à partir de deux relations partielles conduit directement à une congruence de carrés, mais rarement.

Vérifier la régularité par criblage

Il existe plusieurs manières de vérifier la régularité des y. La plus évidente est la méthode des essais de divisions, bien que ceci augmente le temps d'exécution pour la phase de collecte des données. Une autre méthode pouvant être admise est la méthode de la courbe elliptique. Néanmoins, dans la pratique, un processus appelé criblage est utilisé.

y(x)=x^2-n\,\!
y(x+kp)=(x+kp)^2-n\,\!
y(x+kp)=x^2+2xkp+(kp)^2-n\,\!
y(x+kp)=y(x)+2xkp+(kp)^2\equiv y(x)\pmod{p}

Ansi, en résolvant y(x) ≡ 0 (mod p) pour p, nous trouvons une suite entière de y qui sont divisibles par p. (c'est la raison du nom de ce crible -- y est un polynôme quadratique en x, et le processus de criblage fonctionne comme le Crible d'Ératosthène.) En répétant ce processus pour d'autres valeurs de p, cela nous permet de trouver rapidement de bonnes valeurs B-régulières, sans avoir à tester la régularité à chaque fois. Lorsque de grandes bases de facteurs sont utilisées (voir les records de factorisation ci-dessous), disons 500 000 nombres premiers, le test de régularité à chaque fois prend trop de temps pour être pratique.

Lorsque la phase de calcul des données commence, il est néanmoins nécessaire de factoriser les valeurs y collectées, comme nous avons besoin de savoir les exposants associés à chaque nombre premier de la base des facteurs. Ceci ne consomme pas de temps comme le test de régularité par factorisation, comme nous connaissons déjà par quels nombres premiers une valeur y est divisée, à partir du criblage.

Polynômes multiples

Dans la pratique, beaucoup de polynômes différents sont utilisés pour y, comme avec un seul polynôme, nous ne pourrons pas collecter assez de paires (x, y) qui sont régulières sur la base des facteurs. Les polynômes doivent tous avoir une forme similaire à l'original y(x) = x2n:

y(x)=Ax^2+Bx-n\qquad A,B\in\mathbb{Z}

Cette approche (appelée MPQS, Multiple Polynomial Quadratic Sieve (crible quadratique à polynômes multiples)) est adaptée idéalement aux parallèlisation, comme chaque processeur impliqué dans la factorisation peut recevoir un n donné, la base de facteurs et une collection de polynômes, il n'aura pas besoin de communiquer avec le processeur central jusqu'à ce qu'il ait fini avec ses polynômes.

Exemple

Voici un exemple. Soit n = 55 et B = 5. Comme n est petit (très petit, même !), nous avons seulement besoin d'un polynôme, et pas de criblage.

Collecte des données

\left\lfloor\sqrt{55}\right\rfloor=7

Maintenant, nous avons x egal à ...−2, −1, 0, 1, 2... et nous vérifions si le y résultant est 5-régulier. Gardons à l'esprit que −1 est inclus dans la base des facteurs.

4^2\equiv 16=2^4\cdot3^0\cdot5^0\pmod{55}
5^2\equiv -30=-1\cdot2^1\cdot3^1\cdot5^1\pmod{55}
6^2\equiv -19=-1\cdot 19\pmod{55}
7^2\equiv -6=-1\cdot2^1\cdot3^1\cdot5^0\pmod{55}
8^2\equiv 9=2^0\cdot3^2\cdot5^0\pmod{55}
9^2\equiv 26=2^1\cdot13\pmod{55}
10^2\equiv45=2^0\cdot3^2\cdot5^1\pmod{55}

Nous avons à collecter, au minimum, une relation complète en plus de la quantité de nombres premiers présents dans la base des facteurs pour garantir la présence d'une congruence de carrés. Nous avons maintenant 4 relations complètes, avec 4 nombres premiers dans la base des facteurs. En fait, c'est un résultat standard issu de l'algèbre linéaire où nous avons besoin de t + 1 relations complètes indépendantes pour garantir une dépendance linéaire (un rapport qui produira une congruence de carrés), où t est la taille de la base des facteurs. Lorsque t est grand, il est presque impossible que les relations soient indépendantes, donc, nous calculons plus de relations complètes pour pouvoir contourner ce problème.

y(6) et y(9), où nous pensons qu'elles contiennent toutes les deux de grands nombres premiers, contiennent des grands nombres premiers différents et donc, ne peuvent pas être combinées en une relations complète. Nous pouvons entrer les vecteurs exposants (vecteurs lignes qui listent les exposants qui élèvent chaque nombre premier respectifs) dans une matrice. Chaque colonne représente un des nombres premiers de notre base de facteurs ; à partir de la gauche vers la droite : −1, 2, 3, 5. Nous listons seulement les « bonnes » paires, c.est-à-dire ceux qui sont 5-réguliers.

\begin{matrix} -1 & 2 & 3 & 5\end{matrix}
\begin{matrix} x=4 \\ x=5 \\ x=7 \\ x=8 \\x=10\end{matrix}

\begin{pmatrix}
0 & 4 & 0 & 0\\
1 & 1 & 1 & 1\\
1 & 1 & 1 & 0\\
0 & 0 & 2 & 0\\
0 & 0 & 2 & 1\end{pmatrix}

Calcul des données

En utilisant l'algèbre linéaire, nous pouvons trouver des lignes qui, lorsqu'elles sont ajoutées ensemble, produisent un vecteur ligne avec toutes ses entrées paires. Dans ce cas, la matrice est suffisamment petite pour que nous puissions trouver simplement de telles lignes par inspection. En fait, les lignes correspondantes à x = 4 et x = 8 sont déjà des congruences de carrés, mais nous indiquerons des relations combinées pour obtenir une congruence, cependant. En ajoutant les lignes x = 5, 7, et 10 nous aurons le vecteur entièrement pair (2 2 4 2). Nous multiplions ces relations ensemble et nous obtenons :

(5\cdot7\cdot10)^2\equiv(-1\cdot2\cdot3^2\cdot5)^2\pmod{55}
(7\cdot 5)^2\equiv(-1\cdot3^2)^2\pmod{55}
35^2\equiv(-9)^2\pmod{55}

Ainsi, nous avons notre congruence de carrés. Maintenant, pgcd(35 − 9, 55) = 1, et pgcd(35 + 9, 55) = 11. Si nous n'avions pas annulé 10 dans la deuxième ligne, nous aurions eu pgcd(350 − 9) = 5 et gcd(350 + 90, 55) = 55. N'importe quelle approche produit un facteur non-trivial de 55.

Cette démonstration pourrait aussi servir à montrer que le crible quadratique est seulement approprié lorsque n est grand. Pour un nombre aussi petit que 55, cet algorithme fait du matraquage. Les essais de divisions pourraient trouver un facteur avec 3 divisions.

Records de factorisation

Jusqu'à la découverte du crible de corps de nombres (NFS), QS fut l'algorithme à but général le plus rapide asymptotiquement connu. Maintenant, la factorisation en courbe elliptique de Lenstra possède le même temps d'exécution asymptotique que QS (dans le cas où n possède exactement deux facteurs premiers de taille égale), mais dans la pratique, QS est plus rapide car il utilise des calculs en simple précision à la place des calculs en multi-précision utilisés par la méthode de la courbe elliptique.

Le 2 avril 1994, la factorisation de RSA-129 fut accomplie en utilisant QS. C'était un nombre de 129 chiffres, et le produit de deux grands nombres premiers, dont l'un était d'une taille de 64 chiffres et l'autre, de 65 chiffres. La base des facteurs pour cette factorisation contenait 524 339 nombres premiers. La collection de données a pris 5 000 années mips, faite par calcul distribué par Internet. Les données collectées totalisèrent 2 Go. La phase de calcul des données a pris 45 heures sur un supercalculateur MasPar de Bellcore (massivement parallèle). Ceci fut la plus grande factorisation par algorithme à but général publiée, jusqu'à ce que NFS fut utilisé pour factoriser RSA-130, accomplie le 10 avril 1996. Tous les nombres RSA factorisés depuis lors l'ont été en utilisant NFS.

  • Portail des mathématiques Portail des mathématiques
Ce document provient de « Crible quadratique ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Crible Quadratique de Wikipédia en français (auteurs)

Игры ⚽ Нужно сделать НИР?

Regardez d'autres dictionnaires:

  • Crible quadratique — L algorithme du crible quadratique est un algorithme de factorisation fondé sur l arithmétique modulaire. C est en pratique le plus rapide après le crible généralisé sur les corps de nombres, lequel est cependant bien plus compliqué, et n est… …   Wikipédia en Français

  • Crible (Mathématiques) — Pour les articles homonymes, voir Crible. Article détaillé : Théorie des cribles. En mathématiques, les cribles sont des techniques algorithmiques permettant d approcher le cardinal de certains ensembles de nombres. D autre part, ils… …   Wikipédia en Français

  • Crible général de corps de nombres (GNFS) — Algorithme de factorisation par crible sur les corps de nombres généralisé En mathématiques, le crible général de corps de nombres est l algorithme, fondé sur l arithmétique modulaire, pour la décomposition en produit de facteurs premiers le plus …   Wikipédia en Français

  • Crible (mathématiques) — Pour les articles homonymes, voir Crible. Article détaillé : Théorie des cribles. En mathématiques, les cribles sont des techniques algorithmiques permettant d approcher le cardinal de certains ensembles de nombres. D autre part, ils… …   Wikipédia en Français

  • Algorithme De Factorisation Par Crible Sur Les Corps De Nombres Généralisé — En mathématiques, le crible général de corps de nombres est l algorithme, fondé sur l arithmétique modulaire, pour la décomposition en produit de facteurs premiers le plus efficace connu. Il utilise étapes pour factoriser un nombre entier n (voir …   Wikipédia en Français

  • Algorithme de factorisation par crible sur les corps de nombres generalise — Algorithme de factorisation par crible sur les corps de nombres généralisé En mathématiques, le crible général de corps de nombres est l algorithme, fondé sur l arithmétique modulaire, pour la décomposition en produit de facteurs premiers le plus …   Wikipédia en Français

  • Algorithme de factorisation par crible sur les corps de nombres généralisé — En mathématiques, le crible général de corps de nombres, appelé aussi crible algébrique est l algorithme, fondé sur l arithmétique modulaire, pour la décomposition en produit de facteurs premiers le plus efficace des algorithmes classiques. Il… …   Wikipédia en Français

  • Projet:Mathématiques/Liste des articles de mathématiques — Cette page n est plus mise à jour depuis l arrêt de DumZiBoT. Pour demander sa remise en service, faire une requête sur WP:RBOT Cette page recense les articles relatifs aux mathématiques, qui sont liés aux portails de mathématiques, géométrie ou… …   Wikipédia en Français

  • Liste des articles de mathematiques — Projet:Mathématiques/Liste des articles de mathématiques Cette page recense les articles relatifs aux mathématiques, qui sont liés aux portails de mathématiques, géométrie ou probabilités et statistiques via l un des trois bandeaux suivants  …   Wikipédia en Français

  • Liste Des Matières De La Théorie Des Nombres — Article détaillé : cryptologie. . Sommaire 1 Facteur (mathématiques) 2 Fractions 3 Arithmétique modulaire 4 …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”