🔢 Algorytm Shora

Wybierz N i a, a następnie kliknij „Uruchom”, aby znaleźć okres i rozłożyć N na czynniki.
Krok 1 — sekwencja okresu aˣ mod N
N = 15  ·  a = 7  ·  okres r =  ·  czynniki:

O algorytmie Shora

Algorytm Shora, opublikowany przez matematyka Petera Shora w 1994 roku, to wynik, który zmienił obliczenia kwantowe z teoretycznej ciekawostki w egzystencjalne pytanie dla współczesnej kryptografii. Rozkłada on liczbę złożoną N na czynniki, znajdując okres r ciągu aˣ mod N dla pewnej podstawy a względnie pierwszej z N — zadanie, które komputer kwantowy może wykonać wykładniczo szybciej niż jakakolwiek znana metoda klasyczna, wykorzystując operację zwaną kwantową estymacją fazy (QPE), by odczytać r bezpośrednio ze wzorców interferencyjnych w superpozycji stanów. Gdy r jest już znane, krótkie obliczenie algorytmem Euklidesa, zastosowane do ar/2 ± 1 oraz N, bardzo często ujawnia dwa prawdziwe, nietrywialne czynniki N.

Ma to znaczenie daleko wykraczające poza czystą matematykę: kryptosystem klucza publicznego RSA, który wciąż zabezpiecza znaczną część ruchu internetowego, operacji bankowych i bezpiecznej komunikacji, opiera się całkowicie na założeniu, że faktoryzacja dużych liczb jest obliczeniowo niewykonalna. Wystarczająco duży, odporny na błędy komputer kwantowy uruchamiający algorytm Shora obaliłby to założenie — dlatego właśnie rządy i organizacje standaryzacyjne wdrażają już kryptografię postkwantową zaprojektowaną tak, by przeciwstawić się atakom kwantowym. Ten symulator przeprowadza przez klasyczną sekwencję szukania okresu, poglądowe odtworzenie widma kwantowego, jakie zmierzyłaby QPE, oraz rzeczywistą arytmetykę algorytmu Euklidesa, która zamienia okres na faktoryzację — na małych, sprawdzalnych ręcznie przykładach N = 15, 21 i 35.

Najczęściej zadawane pytania

Jaki problem faktycznie rozwiązuje algorytm Shora?

Rozkłada liczbę złożoną N na czynniki pierwsze. Klasycznie najlepsze znane algorytmy faktoryzacji dużych liczb działają w czasie rosnącym niemal wykładniczo wraz z liczbą cyfr, dlatego szyfrowanie RSA, oparte na trudności faktoryzacji, pozostawało bezpieczne przez dziesięciolecia. Algorytm Shora rozkłada N w czasie rosnącym jedynie wielomianowo — wykładnicze przyspieszenie dla wystarczająco dużych N.

Dlaczego znalezienie okresu r pomaga rozłożyć N na czynniki?

Jeśli a jest względnie pierwsze z N, a r jest parzyste i ar/2 nie jest przystające do −1 modulo N, to ar/2 − 1 oraz ar/2 + 1 są świadectwem tego, że N dzieli ich iloczyn, ale nie każdy czynnik z osobna. Algorytm Euklidesa, zastosowany do gcd(ar/2 − 1, N) oraz gcd(ar/2 + 1, N), wyodrębnia wtedy prawdziwy nietrywialny czynnik N bezpośrednio z tego faktu arytmetycznego.

Czy ten symulator wykonuje prawdziwe obliczenie kwantowe?

Nie, i ta strona mówi o tym wprost. Symulacja prawdziwego obwodu kwantowej estymacji fazy, który znajduje r, wymagałaby modelowania wielu kubitów, co znacznie przekracza możliwości canvasu w przeglądarce. Zamiast tego ta demonstracja oblicza r klasycznie za pomocą zwykłej pętli, a następnie rysuje poglądowe „widmo” z pikami przy k/r, aby w celach dydaktycznych pokazać, jak wyglądałby prawdziwy pomiar QPE.

Dlaczego sztuczka z szukaniem okresu czasem zawodzi?

Konstrukcja oparta na gcd działa tylko wtedy, gdy okres r jest parzysty, a ar/2 nie jest przystające do −1 modulo N. Jeśli r okaże się nieparzyste, albo jeśli obliczenie gcd zwraca tylko trywialne czynniki 1 lub N, wybrana podstawa a po prostu nie działa dla tej metody. Standardowym rozwiązaniem, zarówno tutaj, jak i w prawdziwym algorytmie, jest wypróbowanie innej losowej podstawy a i powtórzenie procedury.