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:
Så
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
- ^ 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 .
- ^ Dixon, JD (1981). "Asymptotiskt snabb faktorisering av heltal" . Matematik. Komp. 36 (153): 255-260. doi : 10.1090 / S0025-5718-1981-0595059-1 . JSTOR 2007743 .