Metoda generală a câmpului numeric ( în engleză general number field sieve , GNFS) este o metodă de factorizare pentru numere întregi . Este cel mai eficient algoritm de factorizare pentru numere mai lungi de 110 zecimale. Complexitatea algoritmului este estimată prin formula euristică [1]
Metoda este o generalizare a metodei speciale a site-ului câmpului numeric: în timp ce aceasta din urmă permite doar factorizarea numerelor de un fel special, metoda generală funcționează pe mulțimea numerelor întregi, cu excepția puterilor primelor (care sunt factorizate trivial prin prinzând rădăcini).
În 1988, matematicianul englez John Pollard a descris o nouă metodă de factorizare a numerelor întregi de o formă specială ( ), ilustrând-o cu extinderea celui de-al șaptelea număr Fermat . Spre deosebire de metoda sităi pătratice , în care cernerea se efectuează pe inelul tuturor numerelor întregi, metoda propunea folosirea inelului de numere întregi peste un câmp numeric . Manuscrisul a fost anexat cu o scrisoare adresată lui Andrew Odlyzko , iar Richard Brent , John Brillhart , Hendrik Lenstra , Klaus Schnorr și H. Suyama au primit de asemenea copii . În această scrisoare, Pollard a sugerat că poate această metodă ar putea fi folosită pentru a extinde al nouălea număr Fermat . [2]
În 1990, A. Lenstra , H. Lenstra, Mark Manasse și Pollard au descris prima implementare pe scară largă a noii metode, cu unele îmbunătățiri. Ei au arătat că algoritmul funcționează mai rapid pe numere de tip special decât toate celelalte metode de factorizare cunoscute. Lucrarea discută, de asemenea, ideea lui Joe Buhler și Karl Pomerans de a îmbunătăți metoda de descompunere a oricăror numere întregi și prezintă soluția la această problemă. [3]
Mai târziu , Leonard Max Adleman a propus utilizarea caracterului pătratic pentru a găsi pătrate într-un câmp numeric. Aceasta a oferit o soluție alternativă la problema ridicată de Buchler și Pomerance și a îmbunătățit timpul de funcționare estimat al site-ului de câmp numeric atunci când este aplicat numerelor de tip nespecial. [patru]
În același an, A. Lenstra, H. Lenstra, Manasse și Pollard au prezentat extinderea celui de-al nouălea număr Fermat folosind metoda câmpului numeric. În lucrarea corespunzătoare, sunt discutate multe detalii despre această descompunere. [5]
În cele din urmă, în „Factorizarea numerelor întregi cu sită de câmp numeric”, Buchler, H. Lenstra și Pomerance au descris metoda sită a câmpului numeric ca fiind aplicată numerelor care nu au neapărat o formă specială. [6] Această implementare a algoritmului a inclus un pas care implică calcule folosind numere extrem de mari. Jean-Marc Kuwaignes în lucrarea sa a descris o modalitate de a ocoli acest lucru. [7]
Rezultatele dezvoltării timpurii a metodei au fost rezumate de o colecție de articole editate de A. Lenstra și H. Lenstra. [8] Printre altele, colecția a inclus un articol de Bernstein și A. Lenstra, care descrie o altă implementare îmbunătățită a algoritmului. Articolul a fost inclus în colecția la rubrica „Metoda generală a sitei câmpului numeric”. [9]
Metoda sită câmp numeric (atât specială, cât și generală) poate fi gândită ca o îmbunătățire a unei metode mai simple, metoda sită rațională sau metoda sită pătratică. Algoritmii asemănători lor necesită găsirea unor numere netede de ordine . Mărimea acestor numere crește exponențial cu . Metoda sită a câmpului numeric, la rândul său, necesită găsirea numerelor netede care sunt subexponențiale în raport cu dimensiunea. Deoarece aceste numere sunt mai mici, este mai probabil ca un număr de această dimensiune să fie neted, motiv pentru care metoda sită a câmpului numeric este atât de eficientă. Pentru a obține accelerarea calculelor în cadrul metodei, acestea sunt efectuate în câmpuri numerice , ceea ce complică algoritmul, în comparație cu o sită rațională mai simplă.
Fie un număr compus impar de factorizat.
O descriere detaliată a algoritmului poate fi găsită, de exemplu, în [11] și [12] .
Până în 2007, software -ul dezvoltat și distribuit de Centrul pentru Matematică și Informatică (CWI) din Țările de Jos, distribuit sub o licență proprietară , a fost considerat cea mai de succes implementare .
În 2007, Jason Papadopoulos a implementat partea finală de procesare a algoritmului, astfel încât să ruleze mai rapid decât versiunea CWI. Acest cod face parte din biblioteca msieve. Msieve este scris în C de Papadopoulos și alții din proiect și include implementări ale metodei de sită generală a câmpului numeric și a metodei de sită pătratică. Distribuit sub drepturi de domeniu public . Suporta calculul distribuit. Cea mai recentă versiune a msieve poate fi găsită pe site-ul autorului .
Alte implementări ale metodei de sită a câmpurilor cu numere generale:
În 1996, descompunerea numărului RSA-130 a fost obținută folosind algoritmul . Ulterior, folosind metoda, de exemplu, numerele RSA-140 [13] și RSA-155 [14] au fost factorizate . Acesta din urmă a durat peste 8000 de mips ani pentru a se descompune. Pe 9 mai 2005, F. Bahr, M. Bohm, Jens Franke și T. Kleinjung au anunțat că au descompus numărul RSA-200 utilizând metoda sită a câmpului cu numere generale.
În 2009, un grup de oameni de știință din Elveția, Japonia, Franța, Țările de Jos, Germania și Statele Unite au calculat cu succes datele criptate folosind o cheie criptografică RSA de 768 de biți . [15] După cum reiese din descrierea lucrării, calculul valorilor cheie a fost efectuat prin metoda generală a site-ului de câmp numeric. Potrivit cercetătorilor, după munca lor, doar cheile RSA cu o lungime de 1024 de biți sau mai mult pot fi considerate un sistem de criptare fiabil. [16]