Méthode de factorisation de Dixon - Dixon's factorization method

En théorie des nombres , la méthode de factorisation de Dixon (également la méthode des carrés aléatoires de Dixon ou l'algorithme de Dixon ) est un algorithme de factorisation d'entiers à usage général ; c'est la méthode de base des facteurs prototypiques . Contrairement aux autres méthodes de base de facteurs, sa limite d'exécution est fournie avec une preuve rigoureuse qui ne repose pas sur des conjectures sur les propriétés de régularité des valeurs prises par polynôme.

L'algorithme a été conçu par John D. Dixon , mathématicien à l' Université Carleton , et a été publié en 1981.

Idée basique

La méthode de Dixon est basée sur la recherche d'une congruence de carrés modulo l'entier N qui est destiné à factoriser. La méthode de factorisation de Fermat trouve une telle congruence en sélectionnant des valeurs x aléatoires ou pseudo-aléatoires et en espérant que l'entier x 2  mod N est un carré parfait (dans les entiers):

Par exemple, si N = 84923 , (en commençant à 292, le premier nombre supérieur à N et en comptant) le 505 2 mod 84923 vaut 256, le carré de 16. Donc (505 - 16) (505 + 16) = 0 mod 84923 . Le calcul du plus grand commun diviseur de 505-16 et N en utilisant l'algorithme d'Euclide donne 163, ce qui est un facteur de N .

Dans la pratique, la sélection aléatoire x valeurs prendra un temps pour impractically trouver une congruence de carrés, car il n'y a que N carrés moins de N .

La méthode de Dixon remplace la condition "est le carré d'un entier" par la condition beaucoup plus faible "n'a que de petits facteurs premiers"; par exemple, il y a 292 carrés plus petits que 84923; 662 nombres inférieurs à 84923 dont les facteurs premiers ne sont que 2,3,5 ou 7; et 4767 dont les facteurs premiers sont tous inférieurs à 30. (Ces nombres sont appelés B-lisse par rapport à un certain B lié .)

S'il y a beaucoup de nombres dont les carrés peuvent être factorisés comme pour un ensemble fixe de petits nombres premiers, l'algèbre linéaire modulo 2 sur la matrice donnera un sous-ensemble des carrés dont les carrés se combinent en un produit de petits nombres premiers à une puissance paire - c'est-à-dire un sous-ensemble des carrés dont les carrés se multiplient en carré d'un nombre mod N (espérons-le différent).

Méthode

Supposons que le nombre composé N soit factorisé. Bound B est choisi, et la base de facteur est identifié (que l' on appelle P ), l'ensemble de tous les nombres premiers inférieur ou égal à B . Ensuite, des entiers positifs z sont recherchés tels que z 2  mod  N est B- lisse. Par conséquent, il peut être écrit, pour les exposants appropriés a i ,

Quand suffisamment de ces relations ont été générées (il suffit généralement que le nombre de relations soit un peu plus que la taille de P ), les méthodes d' algèbre linéaire peuvent être utilisées (par exemple, élimination de Gauss ) pour multiplier ces différentes relations de telle manière que les exposants des nombres premiers du côté droit soient tous pairs:

Cela donne une congruence de carrés de la forme a 2b 2 (mod N ), qui peut être transformée en une factorisation de N , N = pgcd ( a + b , N ) × ( N / pgcd ( a + b , N )). Cette factorisation peut s'avérer triviale (c'est-à-dire N = N × 1 ), ce qui ne peut se produire que si a ≡ ± b (mod N ), auquel cas un autre essai doit être fait avec une combinaison différente de relations; mais une paire non triviale de facteurs de N peut être atteinte, et l'algorithme se terminera.

Pseudocode

input: positive integer 
output: non-trivial factor of 

Choose bound 
Let  be all primes 

repeat
    for  to  do
        Choose  such that  is -smooth
        Let  such that 
    end for

    Find non-empty  such that 
    Let 
        
while  

return 

Exemple

Cet exemple essaiera de factoriser N  = 84923 en utilisant la borne B  = 7. La base factorielle est alors P  = {2, 3, 5, 7}. Une recherche peut être faite pour les entiers entre et N dont les carrés mod N sont B- lisse . Supposons que deux des nombres trouvés soient 513 et 537:

Alors

ensuite

C'est,

La factorisation résultante est 84923 = pgcd (20712 - 16800, 84923) × pgcd (20712 + 16800, 84923) = 163 × 521.

Optimisations

Le tamis quadratique est une optimisation de la méthode de Dixon. Il sélectionne des valeurs de x proches de la racine carrée de N telles que x 2 modulo N soit petit, augmentant ainsi largement les chances d'obtenir un nombre lisse.

D'autres moyens d'optimiser la méthode de Dixon incluent l'utilisation d'un meilleur algorithme pour résoudre l'équation matricielle, en tirant parti de la rareté de la matrice: un nombre z ne peut pas avoir plus de facteurs, de sorte que chaque ligne de la matrice est presque entièrement zéros. En pratique, l' algorithme de bloc de Lanczos est souvent utilisé. De plus, la taille de la base factorielle doit être choisie avec soin: si elle est trop petite, il sera difficile de trouver des nombres qui la factorisent complètement, et si elle est trop grande, il faudra collecter plus de relations.

Une analyse plus sophistiquée, utilisant l'approximation selon laquelle un nombre a tous ses facteurs premiers moins que la probabilité environ (une approximation de la fonction de Dickman – de Bruijn ), indique que choisir une base de facteurs trop petite est bien pire que trop grande, et que la taille de base de facteur idéale est une puissance de .

La complexité optimale de la méthode de Dixon est

en notation big-O , ou

en L-notation .

Références

  1. ^ Kleinjung, Thorsten; et coll. (2010). "Factorisation d'un module RSA de 768 bits". Progrès de la cryptologie - CRYPTO 2010 . Notes de cours en informatique. 6223 . pp. 333–350. doi : 10.1007 / 978-3-642-14623-7_18 . ISBN 978-3-642-14622-0.
  2. ^ Dixon, JD (1981). "Factorisation asymptotiquement rapide des entiers" . Math. Comp. 36 (153): 255-260. doi : 10.1090 / S0025-5718-1981-0595059-1 . JSTOR  2007743 .