Algorithme p-1 de Pollard
En thĂ©orie des nombres, l'algorithme p â 1 de Pollard est un algorithme de dĂ©composition en produit de facteurs premiers, conçu par John M. Pollard en 1974. Câest un algorithme spĂ©cifique (par opposition Ă gĂ©nĂ©raliste) car il ne fonctionne qu'avec des entiers dont les facteurs possĂšdent une forme particuliĂšre ; c'est l'exemple le plus simple d'algorithme de factorisation en arithmĂ©tique modulaire.
Les facteurs qu'il trouve sont ceux dont le précédent, p - 1, est superlisse (ou ultrafriable).
Principe
Soit n un entier divisible par un nombre premier p, avec n â p. D'aprĂšs le petit thĂ©orĂšme de Fermat, on a
- pour a premier avec p. Ici (mod) désigne la congruence sur les entiers.
Cela implique que pour tout multiple M de p â 1, on a car .
Si p â 1 est B-superlisse pour un certain seuil B, alors p â 1 divise le plus petit commun multiple des entiers de 1 Ă B. Donc, si l'on pose M = ppcm(1, ⊠, B), on a
- pour tout a premier avec p.
Autrement dit, p divise aM â 1 et donc le pgcd de n et aM â 1 est supĂ©rieur ou Ă©gal Ă p. En revanche, il est possible que ce pgcd soit Ă©gal Ă n lui-mĂȘme auquel cas, on n'obtient pas de facteur non trivial.
Exemple d'un cas particulier
Soit n = pqr, oĂč p et q sont des nombres premiers distincts et r est un nombre entier, tels que p â 1 est B-superlisse et q â 1 nâest pas B-superlisse. Alors pgcd(aM â 1, n) fournit un facteur propre de n.
On peut noter que dans le cas oĂč q â 1 est B-superlisse, le pgcd peut produire un facteur trivial parce que q divise aM â 1.
On peut remarquer que câest cette propriĂ©tĂ© qui rend lâalgorithme spĂ©cifique. Par exemple, 172189 = 421 Ă 409. Or 421 â 1 = 22Ă3Ă5Ă7 et 409 â 1 = 23Ă3Ă17. Ainsi, une valeur appropriĂ©e pour B serait comprise entre 7 et 16. Si on avait sĂ©lectionnĂ© B infĂ©rieur Ă 7, le pgcd aurait valu 1, et si on avait sĂ©lectionnĂ© B supĂ©rieur Ă 16, le pgcd aurait Ă©tĂ© n. Bien sĂ»r, on ne peut savoir Ă l'avance quelle valeur de B sera appropriĂ©e, ce sera donc un facteur Ă prendre en compte dans lâalgorithme.
Pour accĂ©lĂ©rer les calculs, on sait aussi qu'il est possible, pour calculer le pgcd, de rĂ©duire aM â 1 modulo n : pgcd(aM â 1, n) = pgcd(aM â 1 mod n, n). On peut le calculer efficacement en utilisant lâexponentiation modulaire et lâalgorithme d'Euclide.
Algorithme et temps dâexĂ©cution
Lâalgorithme de base peut ĂȘtre Ă©crit de la façon suivante :
- Entrées : n : un entier composé
- Sortie : un facteur non-trivial de n ou un Ă©chec
- sélectionner un seuil de friabilité B
- prendre un a alĂ©atoirement dans (note : nous pouvons dâores et dĂ©jĂ fixer a, une sĂ©lection alĂ©atoire ici nâest pas impĂ©rative)
- pour chaque nombre premier q †B
(Ă la fin de cette boucle, on a aM mod n) - si 1 < g < n alors retourner g
- si g = 1 alors sĂ©lectionner un B plus grand et aller Ă lâĂ©tape 2 ou retourner Ă©chec
- si g = n alors aller Ă lâĂ©tape 2 ou retourner Ă©chec
Si l'on obtient g = 1 Ă lâĂ©tape 6, cela signifie que parmi tous les p â 1 il nây en avait aucun qui Ă©tait B-superlisse. Si l'on obtient g = n Ă lâĂ©tape 7, cela indique gĂ©nĂ©ralement que tous les facteurs Ă©taient B-superlisses, mais dans de rares cas, cela pourrait indiquer que a possĂšde un petit ordre modulo p.
Variante pour les grands nombres premiers
Une variante de lâalgorithme de base est quelquefois utilisĂ©e. Statistiquement, il existe souvent un facteur p de n tel que p â 1 = fq oĂč f est B-superlisse et B < q †Bâ, oĂč q est un nombre premier et Bâ est appelĂ©e une borne semi-lisse.
Cette variante peut s'appliquer Ă partir de lâĂ©tape 6 de l'algorithme de base, si l'on trouve pgcd = 1 mais que l'on ne souhaite pas augmenter B. Pour tous les nombres premiers B < q1, âŠ, qL †Bâ, on vĂ©rifie si
pour obtenir un facteur non-trivial de n. Cela s'accomplit rapidement, car si on a c = aM, d1 = q1 et di = qi â qi â 1, alors on peut calculer
Le temps dâexĂ©cution de lâalgorithme avec cette variante devient alors O(Bâ Ă log Bâ Ă log2n).
Conséquence cryptologique
LâefficacitĂ© de cet algorithme est liĂ©e Ă la forme des nombres premiers composant l'entier Ă factoriser, plus prĂ©cisĂ©ment Ă l'existence d'un facteur premier p tel que p â 1 soit B-superlisse. En consĂ©quence, les systĂšmes de chiffrement Ă clĂ© publique fondĂ©s sur la difficultĂ© de la factorisation, comme RSA, imposent d'utiliser des nombres premiers n'ayant pas cette propriĂ©tĂ© pour un seuil B trop petit[1].
Références
- Pascal Boyer, Petit compagnon des nombres et de leurs applications, Paris/58-Clamecy, Calvage et Mounet, , 648 p. (ISBN 978-2-916352-75-6), VI. Cryptographie, chap. 4. (« RSA »), p. 529-534.
Voir aussi
- Algorithme rho de Pollard
- Factorisation en courbe elliptique de Lenstra
- Algorithme p+1 de Williams (en)