Getallenlichamenzeef
De getallenlichamenzeef is een algoritme om samengestelde getallen te ontbinden in priemfactoren. De basis van deze methode is rond 1988 ontwikkeld door de Britse wiskundige John Pollard, die daarmee het zevende fermatgetal factoriseerde. In de jaren daarna zijn verschillende verbeteringen aangebracht, onder andere door Arjen en Hendrik Lenstra, waardoor het tegenwoordig een van de snelste algoritmen is om grote getallen te factoriseren. Vooral voor getallen vanaf 100 cijfers is deze methode zeer geschikt. Voor kleinere getallen is de kwadratische zeef doorgaans eenvoudiger.[1]
Een priemgetaltest is een algoritme dat bepaalt of een gegeven getal al dan niet een priemgetal is. De werking van een priemgetaltest en een getallenlichamenzeef komt op hetzelfde neer, maar men noemt het in de meer ontwikkelde theorie, waarbij de complexiteitsgraad van de verschillende algoritmen met elkaar wordt vergeleken, een getallenlichamenzeef.
Geschiedenis
[bewerken | brontekst bewerken]De eerste variant van de getallenlichamenzeef, ontwikkeld door John Pollard, wordt de speciale getallenlichamenzeef genoemd. Deze kan alleen worden toegepast op getallen van de vorm , waarbij groot is en en relatief klein zijn. Fermatgetallen hebben bijvoorbeeld deze vorm. De wiskundigen Joe Buhler en Carl Pomerance bedachten later een manier om de speciale getallenlichamenzeef zo aan te passen, dat deze voor vrijwel alle samengestelde getallen kan worden gebruikt, met uitzondering van machten van priemgetallen. Dit leidde tot de algemene getallenlichamenzeef, meestal kortweg getallenlichamenzeef genoemd.
De eerste getallen die met de speciale getallenlichamenzeef werden gefactoriseerd, waren , (44 cijfers, ontbinding duurde destijds 47 uur) en (47 cijfers, ontbinding in 61 uur). Met deze methode is het later ook gelukt om onder andere het negende fermatgetal (155 cijfers) en enkele mersennepriemgetallen te ontbinden.[2]
Een belangrijke uitdaging voor de getallenlichamenzeef is de ontbinding van RSA-getallen: producten van twee grote priemgetallen die worden gebruikt in de RSA-cryptografie. Een reeks van dergelijke getallen, aangeduid als RSA-, is openbaar gemaakt. Hierbij geeft de bitlengte van het product aan.[3] De priemfactoren van deze RSA-getallen zijn niet bekendgemaakt en werden niet bewaard.
De volgende twee factorisaties geven een beeld van de progressie in de toepassing van de getallenlichamenzeef. Een groep wiskundigen heeft RSA-768 (768 bits, 232 decimale cijfers) in december 2009 met behulp van de getallenlichamenzeef ontbonden[4] en RSA-829 (829 bits, 250 decimale cijfers) is in 2020 ontbonden.[5]
Idee
[bewerken | brontekst bewerken]De getallenlichamenzeef is in zekere zin te zien als verbetering van Dixons factorisatiemethode en de kwadratische zeef: men maakt ook hier gebruik van een ontbindingsbasis om gladde factoren te vinden. Daarna wordt eveneens gezocht naar twee getallen die verschillend zijn, maar gekwadrateerd hetzelfde getal opleveren modulo , waar het te ontbinden getal is.
Een verschil met de kwadratische zeef is dat niet langer uitsluitend met kwadratische veeltermen wordt gewerkt. Daarnaast wordt gewerkt over andere getallenlichamen dan de gehele getallen en de gehele getallen modulo , wat als direct gevolg heeft dat de getallenlichamenzeef veel gecompliceerder is dan eerdere methoden.[6]
Werking
[bewerken | brontekst bewerken]De kwadratische zeef, waar de getallenlichamenzeef op is gebaseerd, zoekt naar getallen en zodanig dat
- en
Deze getallen worden gevonden door een functie te definiëren en op zoek te gaan naar geschikte getallen , zodat eenvoudig kan worden gevonden als een uitdrukking in deze en kan worden gedefinieerd als het product van de functiewaarden . Feitelijk vervult de functie hier de rol van een ringhomomorfisme, dat kwadraten in de ring afbeeldt op kwadraten in de ring , dit is de ring van gehele getallen modulo . De getallenlichamenzeef gaat uit van hetzelfde idee, maar algemener, door een andere ring dan te gebruiken.[7]
Zij een ring en een ringhomomorfisme. Als er een is met
- en ,
dan geldt
In dat geval geldt dat
waaruit direct volgt
Als deze grootste gemene delers niet gelijk zijn aan 1 en , dan hebben we twee factoren gevonden die niet triviaal zijn. Op die factoren kunnen we, als ze zelf geen priemgetal zijn, hetzelfde procedé toepassen om een priemfactorontbinding van te verkrijgen. Je kunt met bijvoorbeeld de priemgetaltest bepalen of de gevonden factor priem is.
Keuze van de ring
[bewerken | brontekst bewerken]Ieder polynoom , waarvan de coëfficiënt van de hoogste macht van gelijk aan 1 is en de echte coëfficiënten geheel, rationaal, reëel of complex zijn, is volgens de hoofdstelling van de algebra te schrijven als
met element van de gekozen verzameling, waaruit de coëfficiënten worden gekozen.
Men kan nu een nulpunt van dit polynoom kiezen en de lichaamsuitbreiding bekijken. Deze lichaamsuitbreiding is een lichaam en kan worden gezien als de verzameling van polynomen in met rationale coëfficiënten, ofwel de -lineaire combinaties van . Het ons beperken tot gehele coëfficiënten, dus -lineaire combinaties, zou als voordeel hebben dat dit eenvoudiger rekent. Er bestaat een ring die we hiervoor kunnen gebruiken.
Een complex getal heet een algebraïsch geheel getal als het een nulpunt is van een polynoom met gehele coëfficiënten, met de coëfficiënt van de hoogste macht van gelijk aan 1. Bij een gegeven van graad met gehele coëfficiënten en een nulpunt kunnen we de verzameling vormen van alle algebraïsch gehele getallen in Deze verzameling vormt een deelring van het lichaam . De verzameling van alle -lineaire combinaties van vormt op zijn beurt weer een deelring van en we noteren hem als . Het is deze ring die we zullen gaan gebruiken.
Een belangrijke stelling[6] zegt namelijk het volgende. Zij op deze manier gedefinieerd, een nulpunt van en zodanig dat
Dan is de afbeelding
die op afbeeldt een surjectief ringhomomorfisme.
Als we zo'n en hebben, kunnen we dus een surjectief ringhomomorfisme construeren. Daarna gaan we dan op zoek naar een verzameling , zie de volgende paragraaf, van paren waarvoor geldt dat
en
- ,
waarin en .
Hebben we zo'n eenmaal gevonden, dan zijn we klaar, want dan geldt
Vinden van U
[bewerken | brontekst bewerken]Met de bovenstaande paragraaf in het achterhoofd zien we direct dat we een functie moeten kiezen. Daarbij zoeken we dan een nulpunt en een "nulpunt modulo " . Vervolgens willen we een verzameling van geschikte paren vinden. Dat kan door een algebraïsche ontbindingsbasis voor te kiezen, die uit uit een eindig aantal priemidealen bestaat van graad 1 van , waarover de getallen volledig in priemgetallen kunnen worden ontbonden en een rationale ontbindingsbasis , die uit kleine priemgetallen bestaat, voor waarover de getallen volledig in priemgetallen kunnen worden ontbonden. Als een getal ontbindt over een gekozen ontbindingsbasis, dan noemen we het glad. Als we genoeg paren hebben gevonden waarvoor zowel als glad zijn, dan is er zeker een verzameling te maken van de paren of van een deel daarvan zodat
- en ,
waar en . Hoe dit precies in zijn werk gaat, verschilt niet wezenlijk van de kwadratische zeef.
Met de laatste regels van de vorige paragraaf zijn dan de gewenste getallen , met
- en
te vinden.
Omdat we werken met twee vrij te kiezen variabelen en , wordt vaak vast gekozen en laat men variëren. Daarna hoogt men iets op en zoekt men opnieuw naar geschikte waarden van . Merk op dat voor vaste en vaste voor alle geldt dat
Daaruit volgt dat
- ,
ofwel dat van de vorm met moet zijn. Op deze manier kunnen we net zoals bij de zeef van Eratosthenes al veel als ongeschikt wegstrepen.
Opmerkingen
[bewerken | brontekst bewerken]Het enige dat nu nog moet gebeuren is het kiezen van een functie , een bijbehorend nulpunt en een zodanig dat
Het is noch bekend wat de beste keuze voor is, noch wat de graad van zou moeten zijn, noch hoe we het beste kunnen vinden. Het algoritme werkt ook voor keuzes die niet optimaal zijn, dus is dit niet echt van belang. Wel zijn er natuurlijk resultaten over welke waarden het in de praktijk goed doen. Voor getallen van meer dan 110 cijfers leert de ervaring dat goed werkt, voor kleinere getallen zijn vanaf 80 cijfers en vanaf 50 cijfers beter.[6]
Nu berekent men eerst met de entierfunctie . Dan kan men m-tallig schrijven als
- ,
met coëfficiënten voor . De veelterm wordt dan gegeven door
Merk op dat niet irreducibel hoeft te zijn. Als reducibel is, geldt echter dat
voor niet-constante veeltermen en , waaruit volgt dat
waarschijnlijk een niet-triviale factorisatie van is. Als dus reducibel is, dan zijn we nu waarschijnlijk klaar. Als dat niet zo is, dan kunnen we de getallenlichamenzeef gebruiken.
Complexiteit
[bewerken | brontekst bewerken]De complexiteitsgraad van het algoritme wordt in de grote-O-notatie gegeven door
waarin een constante is met als waarde ongeveer 1,923.
Ter vergelijking: de kwadratische zeef heeft als complexiteit
Hieruit volgt direct dat voor grote men beter de getallenlichamenzeef kan gebruiken om een getal te ontbinden.
- ↑ HW Lenstra. Het ontbinden van grote getallen in priemfactoren september 1995.
Nieuwe Wiskrant 15, 7-15 - ↑ AK Lenstra en HW Lenstra, The development of the number field sieve, Lecture notes in mathematics, Springer-Verlag, Berlijn, 1993
- ↑ B Kaliski. Announcement of "RSA Factoring Challenge", 18 maart 1991.
- ↑ T Kleinjung, Kazumaro Aoki, J Franke, AK Lenstra, E Thomé, JW Bos, P Gaudry, A Kruppa, PL Montgomery, DA Osvik, H t Riele, A Timofeev en P Zimmermann . Factorization of a 768-bit RSA modulus, 18 februari 2010.

- ↑ F Boudot, P Gaudry, A Guillevic, N Heninger, E Thomé en P Zimmermann. Comparing the difficulty of factorization and discrete logarithm: a 240-digit experiment 17 augustus 2020.
- 1 2 3 4 ME Briggs. An Introduction to the General Number Field Sieve, 17 april 1998.
gearchiveerd, masterscriptie voor het Virginia Polytechnic Institute and State University - ↑ C. Pomerance, The number field sieve, Mathematics of Computation, 1943-1993, Fifty Years of Computational Mathematics, W. Gautschi, ed., Proc. Symp. Appl. Math. 48, American Mathematical Society, Providence, 1994, pp. 465-480. Gearchiveerd op 6 mei 2021.