Dixons faktoriseringsmetod - Dixon's factorization method

I talteori , Dixons faktorisering metod (även Dixons slumpmässig kvadratmetoden eller Dixons algoritm ) är ett allmänt ändamål primtalsfaktorisering algoritm ; det är den prototypiska faktorbasmetoden . Till skillnad från andra faktorbasmetoder kommer dess körning med ett strikt bevis som inte förlitar sig på antaganden om jämnhetsegenskaperna för värden som tas av polynom.

Algoritmen designades av John D. Dixon , en matematiker vid Carleton University , och publicerades 1981.

Grundläggande idé

Dixons metod bygger på att hitta en kongruens av kvadrater modulo det heltal N som är avsett att faktor. Fermats faktoriseringsmetod hittar en sådan kongruens genom att välja slumpmässiga eller pseudoslumpmässiga x- värden och hoppas att heltalet x 2  mod N är ett perfekt kvadrat (i heltal):

Till exempel, om N = 84923 , (genom att börja vid 292, den första siffran större än N och räkna upp) är 505 2 mod 84923 256, kvadraten av 16. Så (505 - 16) (505 + 16) = 0 mod 84923 . Beräkna den största gemensamma delaren av 505-16 och N med användning av Euklides algoritm ger 163, som är en faktor av N .

I praktiken väljer slump x kommer värden att ta en opraktiskt lång tid att hitta en kongruens av kvadrater, eftersom det bara finns N rutor mindre än N .

Dixons metod ersätter villkoret "är kvadraten för ett heltal" med det mycket svagare "har bara små primära faktorer"; till exempel finns det 292 rutor mindre än 84923; 662 siffror mindre än 84923 vars huvudfaktorer bara är 2,3,5 eller 7; och 4767 vars huvudfaktorer alla är mindre än 30. (Sådana tal kallas B-släta med avseende på vissa bundna B. )

Om det finns många tal vars kvadrater kan faktoriseras som för en fast uppsättning små primtal, kommer linjär algebra modulo 2 på matrisen att ge en delmängd av vars kvadrater kombineras till en produkt med små primtal till en jämn effekt - det vill säga en delmängd av vars kvadrater multipliceras med kvadraten för ett (förhoppningsvis annorlunda) tal mod N.

Metod

Antag att det sammansatta numret N tas med i beräkningen. Bundna B väljs, och faktorbas identifieras (vilket kallas P ), mängden av alla primtal mindre än eller lika med B . Nästa, positiva heltal z söks så att z 2  mod  N är B -smooth. Därför kan det skrivas, för lämpliga exponenter a i ,

När tillräckligt med dessa relationer har genererats (det är i allmänhet tillräckligt att antalet relationer är några fler än storleken på P ), kan metoderna för linjär algebra användas (till exempel Gaussisk eliminering ) för att multiplicera tillsammans dessa olika relationer på ett sådant sätt att exponenterna av premiärerna på höger sida alla är jämna:

Detta ger en kongruens av kvadrater av formen en två b 2 (mod N ), som kan omvandlas till en faktorisering av N , N = gcd ( a + b , N ) x ( N / gcd ( a + b , N )). Denna faktorisering kan visa sig vara trivial (dvs. N = N × 1 ), vilket bara kan hända om a ≡ ± b (mod N ), i vilket fall ett nytt försök måste göras med en annan kombination av relationer; men ett icke-trivialt par faktorer av N kan nås, och algoritmen kommer att avslutas.

Pseudokod

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 

Exempel

Detta exempel kommer att försöka faktor N  = 84.923 användning bundet B  = 7. faktorbas är då P  = {2, 3, 5, 7}. En sökning kan göras för heltal mellan och N vars rutor mod N är B- släta . Antag att två av siffrorna som hittades är 513 och 537:

Sedan

Det är,

Den resulterande faktoriseringen är 84923 = gcd (20712 - 16800, 84923) × gcd (20712 + 16800, 84923) = 163 × 521.

Optimeringar

Den kvadratiska sikten är en optimering av Dixons metod. Det väljer värden på x nära kvadratroten för N så att x 2 modulo N är liten, vilket därigenom till stor del ökar chansen att få ett jämnt antal.

Andra sätt att optimera Dixons metod inkluderar att använda en bättre algoritm för att lösa matrisekvationen och dra nytta av matrisens sparsitet: ett tal z kan inte ha mer än faktorer, så varje rad i matrisen är nästan alla nollor. I praktiken används ofta block-Lanczos-algoritmen . Storleken på faktorbasen måste också väljas noggrant: om den är för liten blir det svårt att hitta siffror som faktoriserar helt över den, och om den är för stor måste fler relationer samlas in.

En mer sofistikerad analys, med användning av approximationen att ett tal har alla sina primära faktorer mindre än med sannolikhet omkring (en approximation till Dickman – de Bruijn-funktionen ), indikerar att valet av för liten faktorbas är mycket sämre än för stor, och att den ideala faktorbasstorleken är viss kraft .

Den optimala komplexiteten i Dixons metod är

i stor-O notation , eller

i L-notation .

Referenser

  1. ^ Kleinjung, Thorsten; et al. (2010). "Faktorisering av en 768-bitars RSA-modul". Framsteg inom kryptologi - CRYPTO 2010 . Föreläsningsanteckningar inom datavetenskap. 6223 . s. 333–350. doi : 10.1007 / 978-3-642-14623-7_18 . ISBN   978-3-642-14622-0 .
  2. ^ Dixon, JD (1981). "Asymptotiskt snabb faktorisering av heltal" . Matematik. Komp. 36 (153): 255-260. doi : 10.1090 / S0025-5718-1981-0595059-1 . JSTOR   2007743 .