Faktoryzacja liczb całkowitych — Integer factorization

Nierozwiązany problem w informatyce :

Czy rozkład na czynniki całkowite można rozwiązać w czasie wielomianowym na klasycznym komputerze?

W teorii liczb , całkowita faktoryzacji jest rozkładem liczby kompozytowego w produkt o mniejszej liczby całkowite. Jeśli te czynniki są dalej ograniczone do liczb pierwszych , proces ten nazywa się faktoryzacją pierwszą .

Gdy numery są wystarczająco duże, nie skuteczny, niż kwantowa całkowitą faktoryzacji algorytm są znane. Nie udowodniono jednak, że nie istnieje żaden wydajny algorytm. Przypuszczalna trudność tego problemu leży u podstaw szeroko stosowanych algorytmów w kryptografii, takich jak RSA . Wiele dziedzin matematyki i informatyki zostało poddanych temu problemowi, w tym krzywe eliptyczne , algebraiczna teoria liczb i obliczenia kwantowe .

W 2019 r. Fabrice Boudot, Pierrick Gaudry, Aurore Guillevic, Nadia Heninger, Emmanuel Thomé i Paul Zimmermann obliczyli 240-cyfrową (795-bitową) liczbę ( RSA-240 ), wykorzystując około 900 rdzenio-lat mocy obliczeniowej. Naukowcy oszacowali, że 1024-bitowy moduł RSA zajmie około 500 razy dłużej.

Nie wszystkie liczby o danej długości są równie trudne do rozłożenia na czynniki. Najtrudniejszymi przykładami tych problemów (dla obecnie znanych technik) są liczby półpierwsze , iloczyn dwóch liczb pierwszych. Gdy oba są duże, na przykład ponad dwa tysiące bitów , losowo wybrane i mniej więcej tego samego rozmiaru (ale nie za blisko, na przykład, aby uniknąć efektywnej faktoryzacji metodą faktoryzacji Fermata ), nawet najszybsze algorytmy faktoryzacji pierwszej na najszybsze komputery mogą zająć wystarczająco dużo czasu, aby wyszukiwanie stało się niepraktyczne; oznacza to, że wraz ze wzrostem liczby cyfr rozkładanych na czynniki pierwsze liczba operacji wymaganych do przeprowadzenia faktoryzacji na dowolnym komputerze drastycznie wzrasta.

Wiele protokołów kryptograficznych opiera się na trudnościach rozkładania na czynniki dużych złożonych liczb całkowitych lub problemie pokrewnym — na przykład problemie RSA . Algorytm, który skutecznie rozkłada dowolną liczbę całkowitą, może sprawić, że kryptografia z kluczem publicznym oparta na RSA stanie się niepewna.

Pierwszy rozkład

Image
Pierwszy rozkład n = 864 jako 2 5 × 3 3

Zgodnie z fundamentalnym twierdzeniem arytmetyki , każda dodatnia liczba całkowita ma unikalny rozkład na czynniki pierwsze . (Umownie, 1 jest pustym iloczynem .) Testowanie, czy liczba całkowita jest liczbą pierwszą, można wykonać w czasie wielomianowym , na przykład za pomocą testu pierwszości AKS . Jeśli jednak są złożone, wielomianowe testy czasu nie dają wglądu w to, jak uzyskać czynniki.

Biorąc pod uwagę ogólny algorytm faktoryzacji liczb całkowitych, dowolną liczbę całkowitą można rozłożyć na jej składowe czynniki pierwsze przez wielokrotne zastosowanie tego algorytmu. Sytuacja jest bardziej skomplikowana w przypadku algorytmów faktoryzacji specjalnego przeznaczenia, których korzyści mogą nie zostać zrealizowane tak dobrze, a nawet wcale, z czynnikami wytwarzanymi podczas dekompozycji. Na przykład, jeśli n = 171 × p × q, gdzie p < q są bardzo dużymi liczbami pierwszymi, próbne dzielenie szybko wytworzy czynniki 3 i 19, ale zajmie p dzieleń, aby znaleźć następny czynnik. Jako kontrastujący przykład, jeśli n jest iloczynem liczb pierwszych 13729, 1372933 i 18848997161, gdzie 13729 × 1372933 = 18848997157 , rozpocznie się metoda faktoryzacji Fermata, od której natychmiast otrzymuje się współczynniki a - b = 18848997157 i a + b = 18848997161 . Chociaż są one łatwo rozpoznawane jako kompozyt i prime odpowiednio metoda Fermata zajmie dużo dłużej czynnik numer kompozytowy, ponieważ wartość początkowa dla jest dalekie 1372933.

Aktualny stan wiedzy

Wśród liczb b- bitowych najtrudniejsze do rozłożenia w praktyce przy użyciu istniejących algorytmów są te, które są iloczynami dwóch liczb pierwszych o podobnej wielkości. Z tego powodu są to liczby całkowite używane w aplikacjach kryptograficznych. Największym takim semiprime, który został jeszcze uwzględniony, był RSA-250 , 829-bitowa liczba z 250 cyframi dziesiętnymi, w lutym 2020 r. Całkowity czas obliczeń wyniósł około 2700 rdzenia lat obliczeniowych przy użyciu Intel Xeon Gold 6130 przy 2,1 GHz. Podobnie jak wszystkie ostatnie rekordy faktoryzacji, ta faktoryzacja została uzupełniona wysoce zoptymalizowaną implementacją ogólnego sita pola liczbowego działającego na setkach maszyn.

Trudność i złożoność

Nie opublikowano żadnego algorytmu , który mógłby rozłożyć wszystkie liczby całkowite na czas wielomianowy , to znaczy, który może rozłożyć liczbę b- bitową n na czas O ( b k ) dla pewnej stałej k . Ani istnienie, ani nieistnienie takich algorytmów nie zostało udowodnione, ale generalnie podejrzewa się, że nie istnieją, a zatem, że problem nie jest w klasie P. Problem jest wyraźnie w klasie NP, ale generalnie podejrzewa się, że nie nie jest NP-zupełna , chociaż nie zostało to udowodnione.

Opublikowano algorytmy, które są szybsze niż O((1 +  ε ) b ) dla wszystkich dodatnich ε , czyli podwykładniczych . Od 2021-03-12 algorytmem o najlepszym teoretycznym asymptotycznym czasie działania jest ogólne sito pola liczbowego ( GNFS ), po raz pierwszy opublikowane w 1993 roku, działające na b- bitowej liczbie n w czasie:

W przypadku obecnych komputerów GNFS jest najlepszym opublikowanym algorytmem dla dużych n (ponad około 400 bitów). Dla komputera kwantowego , jednak Peter Shor odkryta w 1994 roku algorytm, który rozwiązuje go w czasie wielomianowym. Będzie to miało znaczące implikacje dla kryptografii, jeśli obliczenia kwantowe staną się skalowalne. Algorytm Shora zajmuje tylko czas O( b 3 ) i przestrzeń O( b ) na wejściach liczb b- bitowych. W 2001 roku algorytm Shora został zaimplementowany po raz pierwszy przy użyciu technik NMR na molekułach dostarczających 7 kubitów.

Nie wiadomo dokładnie, które klasy złożoności zawierają decyzyjną wersję problemu faktoryzacji liczb całkowitych (tzn. czy n ma czynnik mniejszy niż k ?). Wiadomo, że występuje zarówno w NP, jak i co-NP , co oznacza, że ​​zarówno odpowiedzi „tak”, jak i „nie” można zweryfikować w czasie wielomianowym. Odpowiedź „tak” może być potwierdzona przez przedstawienie faktoryzacji n = d ( n / d ) z dk . Odpowiedź „nie” można potwierdzić, rozkładając na czynniki n różne liczby pierwsze, wszystkie większe niż k ; można zweryfikować ich pierwszości za pomocą testu pierwszości AKS , a następnie pomnożyć je, aby uzyskać n . Podstawowe twierdzenie arytmetyki gwarancji, że istnieje tylko jeden możliwy ciąg wzrastających liczb pierwszych, które zostaną przyjęte, co pokazuje, że problem jest w obu UP i współ-UP. Wiadomo, że jest w BQP z powodu algorytmu Shora.

Podejrzewa się, że problem leży poza wszystkimi trzema klasami złożoności P, NP-zupełna i współ-NP-zupełna . Jest zatem kandydatem do klasy złożoności NP-pośredniej . Gdyby można było udowodnić, że jest on albo NP-kompletny, albo współ-NP-kompletny, sugerowałoby to NP = co-NP, co jest bardzo zaskakującym wynikiem, a zatem powszechnie podejrzewa się, że faktoryzacja liczb całkowitych wykracza poza obie te klasy. Wiele osób próbowało znaleźć dla niego klasyczne algorytmy wielomianowe i nie powiodło się, dlatego powszechnie podejrzewa się, że znajduje się poza P.

Natomiast problem decyzyjny „Czy n jest liczbą złożoną?” (lub równoważnie: „Czy n jest liczbą pierwszą?”) wydaje się być znacznie łatwiejszy niż problem określenia czynników n . Problem złożony/pierwszy można rozwiązać w czasie wielomianowym (w liczbie b cyfr liczby n ) za pomocą testu pierwszości AKS . Ponadto istnieje kilka algorytmów probabilistycznych, które w praktyce mogą bardzo szybko przetestować pierwszość, jeśli ktoś jest skłonny zaakceptować znikomo małe prawdopodobieństwo błędu. Łatwość testowania pierwszości jest kluczową częścią algorytmu RSA , ponieważ na początek konieczne jest znalezienie dużych liczb pierwszych.

Algorytmy faktoringowe

Specjalny cel

Czas działania algorytmu faktoryzacji specjalnego przeznaczenia zależy od właściwości liczby, która ma być faktorowana, lub od jednego z jej nieznanych czynników: rozmiaru, specjalnej formy itp. Parametry określające czas działania różnią się w zależności od algorytmu.

Ważną podklasą algorytmów faktoringu specjalnego przeznaczenia są algorytmy kategorii 1 lub pierwszej kategorii , których czas działania zależy od wielkości najmniejszego czynnika pierwszego. Biorąc pod uwagę liczbę całkowitą o nieznanej postaci, metody te są zwykle stosowane przed metodami ogólnego przeznaczenia w celu usunięcia małych czynników. Na przykład naiwny podział prób jest algorytmem kategorii 1.

Ogólny cel

Algorytm faktoryzacji ogólnego przeznaczenia, znany również jako algorytm Kategorii 2 , Drugiej Kategorii lub algorytm rodziny Kraitchik , ma czas działania, który zależy wyłącznie od wielkości liczby całkowitej, która ma zostać rozłożona na czynniki . Jest to typ algorytmu używanego do rozkładania liczb RSA . Większość algorytmów faktoryzacji ogólnego przeznaczenia opiera się na metodzie zgodności kwadratów .

Inne godne uwagi algorytmy

Heurystyczny czas działania

W teorii liczb istnieje wiele algorytmów faktoryzacji liczb całkowitych, które heurystycznie oczekiwały czasu działania

w notacji little-o i L . Przykładami takich algorytmów są metoda krzywej eliptycznej i sito kwadratowe . Innym takim algorytmem jest metoda relacji grup klasowych zaproponowana przez Schnorra, Seysena i Lenstrę, którą udowodnili jedynie przy założeniu nieudowodnionej uogólnionej hipotezy Riemanna (GRH) .

Rygorystyczny czas pracy

Algorytm probabilistyczny Schnorra-Seysena-Lenstry został rygorystycznie udowodniony przez Lenstrę i Pomerance, że oczekiwał czasu działania poprzez zastąpienie założenia GRH zastosowaniem mnożników. Algorytm ten wykorzystuje się grupę klasy pozytywnych binarnych kwadratowych form o dyskryminacyjnej hemibursztynianu oznaczonych G hemibursztynianu . G Δ jest zbiorem trójek liczb całkowitych ( a , b , c ), w których te liczby całkowite są względnymi liczbami pierwszymi.

Algorytm Schnorra-Seysena-Lenstry

Biorąc pod uwagę liczbę całkowitą n, która zostanie rozłożona na czynniki, gdzie n jest nieparzystą dodatnią liczbą całkowitą większą niż pewna stała. W tym algorytmie faktoryzacji dyskryminator Δ jest wybierany jako wielokrotność n , Δ = − dn , gdzie d jest pewnym dodatnim mnożnikiem. Algorytm oczekuje, że dla jednego d istnieje wystarczająco dużo form gładkich w G Δ . Lenstra i Pomerance pokazują, że wybór d można ograniczyć do małego zestawu, aby zagwarantować gładkość.

Oznaczmy przez P Δ zbiór wszystkich liczb pierwszych q z symbolem Kroneckera . Konstruując zestaw generatorów o G hemibursztynianu i głównych postaciach f Q o G hemibursztynianu z Q na P hemibursztynianu sekwencję stosunkach zestaw generatorów i f q są produkowane. Rozmiar q może być ograniczony przez dla pewnej stałej .

Związek, który będzie stosowany jest stosunek pomiędzy produktem uprawnień, który jest równy element neutralny z G hemibursztynianu . Relacje te zostaną wykorzystane do skonstruowania tzw. niejednoznacznej formy G Δ , która jest elementem G Δ dzielenia rzędu 2. Obliczając odpowiednią faktoryzację Δ i biorąc gcd , ta niejednoznaczna forma zapewnia pełną faktoryzację pierwszą z n . Ten algorytm ma następujące główne kroki:

Niech n będzie liczbą do rozłożenia na czynniki.

  1. Niech Δ będzie ujemną liczbą całkowitą z Δ = − dn , gdzie d jest mnożnikiem, a Δ jest ujemnym wyróżnikiem jakiejś formy kwadratowej.
  2. Podejmuje t pierwszych liczb pierwszych , dla niektórych .
  3. Niech będzie losową formą pierwszą G Δ z .
  4. Znajdź zbiór generujący X z G Δ
  5. Zbierz ciąg relacji między zbiorem X a { f q  : qP Δ } spełniający:
  6. Skonstruuj niejednoznaczną formę, która jest elementem fG Δ rzędu dzielenia 2, aby uzyskać względnie pierwszą faktoryzację największego nieparzystego dzielnika Δ, w którym
  7. Jeśli niejednoznaczna forma zapewnia faktoryzację n, zatrzymaj się, w przeciwnym razie znajdź inną niejednoznaczną formę, dopóki nie zostanie znaleziona faktoryzacja n . Aby zapobiec generowaniu bezużytecznych niejednoznacznych form, zbuduj grupę 2-Sylowa Sll 2 (Δ) z G (Δ).

Aby otrzymać algorytm rozkładania na czynniki dowolnej dodatniej liczby całkowitej, konieczne jest dodanie kilku kroków do tego algorytmu, takich jak dzielenie próbne i test sumy Jacobiego .

Oczekiwany czas pracy

Podany algorytm jest algorytmem probabilistycznym, ponieważ dokonuje losowych wyborów. Jego przewidywany czas działania to najwyżej .

Zobacz też

Uwagi

Bibliografia

Zewnętrzne linki