Lenstra elliptisk-kurva faktorisering

Lenstra elliptiska kurvfaktorisering eller elliptisk kurvfaktoriseringsmetoden ( ECM ) är en snabb, subexponentiell körtid , algoritm för heltalsfaktorisering , som använder elliptiska kurvor . För generell factoring är ECM den tredje snabbaste kända factoringmetoden. Den näst snabbaste är den kvadratiska sikten med flera polynomer, och den snabbaste är sikten för det allmänna talfältet . Lenstras elliptiska kurvfaktorisering är uppkallad efter Hendrik Lenstra .

Praktiskt sett anses ECM vara en factoringalgoritm för speciella ändamål, eftersom den är mest lämpad för att hitta små faktorer. För närvarande är det fortfarande den bästa algoritmen för divisorer som inte överstiger 50 till 60 siffror , eftersom dess körtid domineras av storleken på den minsta faktorn p snarare än av storleken på talet n som ska faktoriseras. ECM används ofta för att ta bort små faktorer från ett mycket stort heltal med många faktorer; om det återstående heltal fortfarande är sammansatt, har det bara stora faktorer och faktoriseras med generella tekniker. Den största faktorn som hittills hittats med ECM har 83 decimalsiffror och upptäcktes den 7 september 2013 av R. Propper. Att öka antalet testade kurvor förbättrar chanserna att hitta en faktor, men det är de inte linjär med ökningen av antalet siffror.

Algoritm

Lenstras elliptiska kurvfaktoriseringsmetod för att hitta en faktor för ett givet naturligt tal fungerar enligt följande:

  1. Välj en slumpmässig elliptisk kurva över , med ekvationen av formen tillsammans med en icke-trivial punkt på den.
    Detta kan göras genom att först välja slumpmässigt och sedan inställning för att säkerställa att punkten är på kurvan.
  2. Man kan definiera tillägg av två punkter på kurvan, för att definiera en grupp . Additionslagarna ges i artikeln om elliptiska kurvor .
    Vi kan bilda upprepade multiplar av en punkt : . Adderingsformlerna innebär att man tar den modulära lutningen för ett ackord som sammanfogar och , och därmed uppdelningen mellan restklasser modulo , utförd med den utökade euklidiska algoritmen . I synnerhet inkluderar division med vissa beräkning av .
    Om vi ​​antar att vi beräknar en lutning av formen med , då om blir resultatet av punktadditionen , punkten "i oändlighet" som motsvarar skärningspunkten för den "vertikala" linjen som förenar och kurvan. Men om kommer punktadditionen inte att ge en meningsfull punkt på kurvan; men, ännu viktigare, är en icke-trivial faktor av .
  3. Beräkna på den elliptiska kurvan ( ), där är en produkt av många små tal: säg, en produkt av små primtal upphöjda till små potenser, som i p-1-algoritmen , eller faktorial för vissa inte för stora . Detta kan göras effektivt, en liten faktor i taget. Säg, för att få , beräkna först , sedan , sedan och så vidare. väljs för att vara tillräckligt liten så att -vis punkttillägg kan utföras inom rimlig tid.
    • Om vi ​​avslutar alla beräkningar ovan utan att stöta på icke-inverterbara element ( ), betyder det att de elliptiska kurvornas (moduloprimtal) ordning inte är tillräckligt jämn , så vi måste försök igen med en annan kurva och utgångspunkt.
    • Om vi ​​stöter på en är vi klara: det är en icke-trivial faktor av .

Tidskomplexiteten beror på storleken på talets minsta primtal och kan representeras av exp[( 2 + o (1)) ln p ln ln p ] , där p är den minsta faktorn av n , eller i L-notation .

Varför fungerar algoritmen?

Om p och q är två primtalsdelare av n , så innebär y 2 = x 3 + ax + b (mod n ) samma ekvation även modulo p och modulo q . Dessa två mindre elliptiska kurvor med -tillägget är nu äkta grupper . Om dessa grupper har N p och N q element, respektive, för varje punkt P på den ursprungliga kurvan, enligt Lagranges sats , är k > 0 minimal så att på kurvan modulo p innebär att k delar N p ; dessutom, . Det analoga påståendet gäller för kurvan modulo q . När den elliptiska kurvan väljs slumpmässigt N p och N q slumptal nära p + 1 respektive q + 1 (se nedan). Därför är det osannolikt att de flesta av primfaktorerna för N p och N q är desamma, och det är ganska troligt att när vi beräknar eP , kommer vi att stöta på någon kP som är ∞ modulo p men inte modulo q , eller tvärtom. När så är fallet existerar inte kP på den ursprungliga kurvan, och i beräkningarna hittade vi något v med antingen gcd( v , p ) = p eller gcd( v , q ) = q , men inte båda. Det vill säga, gcd( v , n ) gav en icke-trivial faktor n .

ECM är i sin kärna en förbättring av den äldre p -1- algoritmen . p − är 1 -algoritmen hittar primtalsfaktorer p så att p − 1 b-potensjämn för små värden på b . För varje e , en multipel av p − 1, och vilken som helst ett relativt primtal till p , enligt Fermats lilla sats har vi en e ≡ 1 ( mod p ) . Då gcd ( a e − 1, n ) producerar en faktor på n . Algoritmen misslyckas dock när p -1 har stora primtalsfaktorer, som till exempel är fallet för tal som innehåller starka primtal .

ECM kommer runt detta hinder genom att betrakta gruppen av en slumpmässig elliptisk kurva över det finita fältet Z p , snarare än att beakta den multiplikativa gruppen av Z p som alltid har ordningen p − 1.

Ordningen för gruppen av en elliptisk kurva över Z p varierar (ganska slumpmässigt) mellan p + 1 − 2 p och p + 1 + 2 p enligt Hasses sats , och är sannolikt jämn för vissa elliptiska kurvor. Även om det inte finns några bevis för att en jämn gruppordning kommer att hittas i Hasse-intervallet, genom att använda heuristiska probabilistiska metoder, Canfield–Erdős–Pomerance-satsen med lämpligt optimerade parameterval och L-notationen , kan vi förvänta oss att prova L [ 2 /2, 2 ] kurvor innan du får en jämn gruppordning. Denna heuristiska uppskattning är mycket tillförlitlig i praktiken.

Ett exempel

Följande exempel är från Trappe & Washington (2006), med några detaljer tillagda.

Vi vill faktorisera n = 455839. Låt oss välja den elliptiska kurvan y 2 = x 3 + 5 x – 5, med punkten P = (1, 1) på den, och låt oss försöka beräkna (10!) P .

Tangentlinjens lutning vid någon punkt A =( x , y ) är s = (3 x 2 + 5)/(2 y ) (mod n) . Med s kan vi beräkna 2 A . Om värdet på s är av formen a/b där b > 1 och gcd( a , b ) = 1, måste vi hitta den modulära inversen av b . Om det inte finns, gcd( n , b ) är en icke-trivial faktor av n .

Först beräknar vi 2 P . Vi har s ( P ) = s (1,1) = 4, så koordinaterna för 2 P = ( x′ , y′ ) är x′ = s 2 – 2 x = 14 och y′ = s ( x x ′ ) – y = 4(1 – 14) – 1 = –53, alla tal förstått (mod n ). Bara för att kontrollera att denna 2 P verkligen är på kurvan: (–53) 2 = 2809 = 14 3 + 5·14 – 5.

Sedan beräknar vi 3(2 P ). Vi har s (2 P ) = s (14,-53) = –593/106 (mod n ). Med den euklidiska algoritmen : 455839 = 4300·106 + 39, sedan 106 = 2·39 + 28, sedan 39 = 28 + 11, sedan 28 = 2·11 + 6, sedan 11 = 6 + 5, sedan 6 = 5 + 1. Därför gcd(455839, 106) = 1, och arbetar bakåt (en version av den utökade euklidiska algoritmen ): 1 = 6 – 5 = 2·6 – 11 = 2·28 – 5·11 = 7·28 – 5·39 = 7·106 – 19·39 = 81707·106 – 19·455839. Därav 106 −1 = 81707 (mod 455839) och –593/106 = –133317 (mod 455839). Givet denna s kan vi beräkna koordinaterna för 2(2 P ), precis som vi gjorde ovan: 4 P = (259851, 116255). Bara för att kontrollera att detta verkligen är en punkt på kurvan: y 2 = 54514 = x 3 + 5 x – 5 (mod 455839). Efter detta kan vi beräkna .

Vi kan på samma sätt beräkna 4! P och så vidare, men 8! P kräver invertering av 599 (mod 455839). Den euklidiska algoritmen ger att 455839 är delbart med 599, och vi har hittat en faktorisering 455839 = 599·761.

Anledningen till att detta fungerade är att kurvan (mod 599) har 640 = 2 7 ·5 poäng, medan den (mod 761) har 777 = 3·7·37 poäng. Dessutom är 640 och 777 de minsta positiva heltalen k så att kP = ∞ på kurvan (mod 599) respektive (mod 761) . Sedan 8! är en multipel av 640 men inte en multipel av 777, vi har 8! P = ∞ på kurvan (mod 599), men inte på kurvan (mod 761), därför bröt den upprepade additionen ner här, vilket ger faktoriseringen.

Algoritmen med projektiva koordinater

Innan du betraktar det projektiva planet över överväg först ett 'normalt' projektivt utrymme över ℝ: Istället för punkter, linjer genom origo studeras. En linje kan representeras som en punkt som inte är noll , under en ekvivalensrelation ~ ges av: ⇔ ∃ c ≠ 0 så att x' = c x , y' = cy . och cz z ' = Under denna ekvivalensrelation kallas rymden det projektiva planet ; poäng, betecknade med , motsvarar linjer i ett tredimensionellt utrymme som passerar genom origo. Observera att punkten inte existerar i detta utrymme eftersom för att dra en linje i alla möjliga riktningar krävs minst en av x',y' eller z' ≠ 0. Observera nu att nästan alla linjer går genom ett givet referensplan - såsom ( X , Y ,1)-planet, medan linjerna är exakt parallella med detta plan, har koordinater ( X,Y ,0), specificera riktningar unikt, som 'punkter i oändlighet' som används i det affina ( X,Y )-planet det ligger ovanför.

I algoritmen används endast gruppstrukturen för en elliptisk kurva över fältet ℝ. Eftersom vi inte nödvändigtvis behöver fältet ℝ, kommer ett ändligt fält också att ge en gruppstruktur på en elliptisk kurva. Att betrakta samma kurva och operation över med n inte ett primtal ger dock ingen grupp. Elliptic Curve Method använder sig av felfallen i additionslagen.

Vi anger nu algoritmen i projektiva koordinater. Det neutrala elementet ges då av punkten vid oändligheten . Låt n vara ett (positivt) heltal och betrakta den elliptiska kurvan (en uppsättning punkter med någon struktur på den) .

  1. Välj med en ≠ 0.
  2. Beräkna . Den elliptiska kurvan E är då i Weierstrass-form given av och genom att använda projektiva koordinater ges den elliptiska kurvan genom den homogena ekvationen . Den har punkten .
  3. Välj en övre gräns för denna elliptiska kurva. Anmärkning: Du hittar bara faktorer p om gruppordningen för den elliptiska kurvan E över (betecknas med är B-slät , vilket betyder att alla primtalsfaktorer för måste vara mindre eller lika med B .
  4. Beräkna .
  5. Beräkna ( k gånger) i ringen . Observera att om är B -slät och n är primtal (och därför är ett fält) som . Men om bara är B-jämn för någon divisor p av n , kanske produkten inte är ( 0:1:0) eftersom addition och multiplikation inte är väldefinierade om n är inte prime. I det här fallet kan en icke-trivial divisor hittas.
  6. Om inte, gå tillbaka till steg 2. Om detta inträffar kommer du att märka detta när du förenklar produkten

I punkt 5 sägs det att under rätt omständigheter kan en icke-trivial divisor hittas. Som påpekats i Lenstras artikel (Factoring Integers with Elliptic Curves) kräver additionen antagandet . Om inte är och distinkt (annars fungerar tillägg på liknande sätt, men är lite annorlunda), då fungerar tillägg enligt följande:

  • För att beräkna: ,
  • ,
  • ,
  • ,
  • .

Om addition misslyckas kommer detta att bero på ett misslyckande som beräknar I synnerhet eftersom inte alltid kan beräknas om n inte är primtal (och därför är inte ett fält). Utan att använda eftersom ett fält kan man räkna ut:

  • ,
  • ,
  • ,
  • och förenkla om möjligt.

Denna beräkning är alltid laglig och om gcd för Z -koordinaten med n ≠ (1 eller n ), så när förenklingen misslyckas , hittas en icke-trivial divisor av n .

Vridna Edwards-kurvor

Användningen av Edwards-kurvor kräver färre modulära multiplikationer och mindre tid än användningen av Montgomery-kurvor eller Weierstrass-kurvor (andra använda metoder). Med Edwards-kurvor kan du också hitta fler primtal.

Definition. Låt vara ett fält där , och låt med . Sedan ges den tvinnade Edwards-kurvan av En Edwards-kurva är en vriden Edwards-kurva där .

Det finns fem kända sätt att bygga en uppsättning punkter på en Edwards-kurva: uppsättningen affinpunkter, uppsättningen projektiva punkter, uppsättningen inverterade punkter, uppsättningen förlängda punkter och uppsättningen av fullbordade punkter.

Uppsättningen affina punkter ges av:

.

Tilläggslagen ges av

Punkten (0,1) är dess neutrala element och inversen av är .

De andra representationerna definieras liknande hur den projektiva Weierstrass-kurvan följer från affinen.

Varje elliptisk kurva i Edwards-form har en ordningspunkt 4. Så torsionsgruppen för en Edwards-kurva över är isomorf till antingen eller .

De mest intressanta fallen för ECM är och eftersom de tvingar gruppordningarna för kurvans moduloprimtal att vara delbara med 12 respektive 16. Följande kurvor har en torsionsgrupp som är isomorf till :

  • med punkt där d
  • med punkt där och

Varje Edwards-kurva med en ordningspunkt 3 kan skrivas på de sätt som visas ovan. Kurvor med torsionsgrupp isomorf till och kan vara effektivare för att hitta primtal.

Steg 2

Ovanstående text handlar om det första steget av elliptisk kurvfaktorisering. Där hoppas man hitta en primtal divisor p så att är det neutrala elementet av . I det andra steget hoppas man ha hittat en primtalare q så att har liten primtalsordning i .

Vi hoppas att ordningen ligger mellan och , där bestäms i steg 1 och är ny steg 2-parameter. Kontrollera efter en liten ordning av , kan göras genom att beräkna modulo n för varje primtal l .

GMP-ECM och EECM-MPFQ

Användningen av Twisted Edwards elliptiska kurvor, såväl som andra tekniker, användes av Bernstein et al för att ge en optimerad implementering av ECM. Dess enda nackdel är att den fungerar på mindre sammansatta tal än den mer generella implementeringen, GMP-ECM från Zimmerman.

Hyperelliptic curve method (HECM)

Det finns nya utvecklingar när det gäller att använda hyperelliptiska kurvor för att faktorisera heltal. Cosset visar i sin artikel (2010) att man kan bygga en hyperelliptisk kurva med släkte två (så en kurva med f av grad 5) , vilket ger samma resultat som att använda två "normala" elliptiska kurvor samtidigt. Genom att använda Kummer-ytan blir beräkningen mer effektiv. Nackdelarna med den hyperelliptiska kurvan (mot en elliptisk kurva) kompenseras av detta alternativa beräkningssätt. Därför hävdar Cosset grovt att det inte är värre att använda hyperelliptiska kurvor för faktorisering än att använda elliptiska kurvor.

Quantum version (GEECM)

Bernstein , Heninger , Lou och Valenta föreslår GEECM, en kvantversion av ECM med Edwards-kurvor. Den använder Grovers algoritm för att ungefär fördubbla längden på de primtal som hittas jämfört med standard EECM, förutsatt att en kvantdator med tillräckligt många qubits och med jämförbar hastighet som den klassiska datorn som kör EECM.

Se även

externa länkar