Strona głównaArtykułyKryptografia

Szyfrowanie RSA: Matematyka Wielkich Liczb Pierwszych

Mnożenie dwóch ogromnych liczb pierwszych jest natychmiastowe. Rozkładanie ich iloczynu na czynniki z powrotem, przynajmniej na razie, jest obliczeniowo poza zasięgiem – a ta luka zabezpiecza internet.

mysimulator teamZaktualizowano — czerwiec 2026≈ 8 min czytania▶ Otwórz symulację

Klucze publiczne i pułapka z faktoryzacją

Przed RSA bezpieczna komunikacja wymagała współdzielonego sekretu, który trzeba było wymieniać osobiście. Kryptografia kluczem publicznym, opublikowana przez Rivesta, Shamira i Adleman w 1977 roku, eliminuje to: każdy publikuje klucz publiczny, którym każdy może użyć do zablokowania wiadomości, ale tylko posiadacz dopasowanego klucza prywatnego może go odblokować. Zablokowanie jest jednokierunkowe – łatwe do zastosowania, obliczeniowo niemożliwe do odwrócenia – dzięki pułapce z faktoryzacją liczb całkowitych: mnożenie dwóch dużych liczb pierwszych jest natychmiastowe, ale rozkład ich iloczynu na czynniki uważa się za wymagający wykładniczego czasu w liczbie cyfr. Wszystkie operacje arytmetyczne odbywają się modulo n, "arytmetyka zegarowa", gdzie liczy się tylko reszta, co tworzy skończoną grupę cykliczną, w której potęgowanie jest łatwe, ale odwrotne (logarytm dyskretny) jest trudne.

Twierdzenie Eulera i generowanie kluczy

Serce RSA opiera się na twierdzeniu Eulera: dla dowolnego m będącego liczbą pierwszą względnie prostą z n, m^φ(n) ≡ 1 (mod n), gdzie φ(n) oznacza funkcję Eulerską – liczbę naturalną do n będącą liczbą pierwszą względną z n. Dla n = p×q (dwóch różnych liczb pierwszych), φ(n) = (p−1)(q−1), a jej obliczenie wymaga znajomości czynników pierwszych – kluczowe spostrzeżenie, które zapewnia bezpieczeństwo RSA. Generowanie kluczy: wybierz dwie duże, różne liczby pierwsze p, q (każda o przybliżonej wartości 617 cyfr dziesiętnych dla RSA o długości 2048 bitów); oblicz n = p×q i φ(n); wybierz publiczny wykładnik e będący liczbą pierwszą względną z φ(n), zwykle e = 65537; oblicz prywatny wykładnik d = e⁻¹ mod φ(n) za pomocą Rozszerzonego Algorytmu Euklidesa; opublikuj (n, e) i zachowaj (n, d) w tajemnicy, zniszczając p, q oraz φ(n).

Szyfrowanie, odszyfrowywanie i jak to działa

Aby zaszyfować wiadomość m < n przy kluczu publicznym, oblicz c = mᵉ mod n. Aby ją odszyfrować, oblicz m = c^d mod n — a ponieważ ed ≡ 1 (mod φ(n)), twierdzenie Eulera gwarantuje, że m^(ed) ≡ m (mod n), dzięki czemu oryginalna wiadomość wraca dokładnie. Przykładowy, prosty przykład: p=61, q=53, n=3233, φ(n)=3120, e=17, d=2753. Zaszyfrowanie m=65 daje c = 65¹⁷ mod 3233 = 2790, a odszyfrowanie 2790²⁷⁵³ mod 3233 zwraca 65.

n = p·q             φ(n) = (p−1)(q−1)         e·d ≡ 1 (mod φ(n))
Encrypt:  c = m^e mod n        Decrypt:  m = c^d mod n
2048-bit RSA GNFS factoring time: ~10^18 years on today's fastest hardware

Bezpieczeństwo współczesne, a zagrożenie kwantowe

Najlepsza znana klasyczna metoda ataku, Algorytm Ogólnego Pola Liczbowego, zajęłoby około 10¹⁸ lat na sfałdowanie modułu 2048-bitowego na najszybszym komputerze na świecie — RSA-2048 stanowi obecnie standard certyfikatów TLS, a RSA-4096 oferuje margines bezpieczeństwa na dziesięciolecia. Kryptografia krzywowopłaszczowa osiąga równy poziom bezpieczeństwa przy znacznie krótszych kluczach (ECC-256 ≈ RSA-3072), dlatego TLS 1.3 preferuje ECDHE do wymiany kluczy. Rzeczywiste, długoterminowe zagrożenie stanowi kwantowość: algorytm Shore'a sfałdowanie liczb całkowitych w czasie wielomianowym na wystarczająco dużym komputerze kwantowym, a złamanie RSA-2048 szacuje się na 4000+ kubitów logicznych w porównaniu z dzisiejszymi około 1000 kubitami fizycznymi. NIST zdefiniował algorytmy post-kwantowe oparte na siatkach — ML-KEM i ML-DSA — w 2024 roku jako zabezpieczenie przed tym przyszłym zagrożeniem.

Frequently asked questions

Dlaczego atakujący nie może obliczyć klucza prywatnego z klucza publicznego?

Eksponent prywatny d jest odwrotnością modularną eksponentu publicznego e względem φ(n) = (p-1)(q-1), a φ(n) można obliczyć tylko wtedy, gdy znamy czynniki pierwsze p i q liczby n. Bez rozkładu n — uważanego za zajęcie czasu wykładniczego wraz ze wzrostem liczby cyfr — atakujący nie może odzyskać φ(n) i w związku z tym nie może wyprowadzić d.

Jak bezpieczne jest RSA-2048 pod względem komputerów klasycznych?

Najlepsza znana atak klasyczny, sito liczbowe ogólne, zajęłoby około ~10^18 lat na najszybszym komputerze na świecie do rozkładu modułu RSA o długości 2048 bitów — znacznie więcej niż wiek wszechświata. RSA-2044 jest aktualnym standardem dla wymiany kluczy w TLS, a RSA-4096 zapewnia jeszcze większy margines bezpieczeństwa.

Czy obliczenia kwantowe łamią RSA?

Algorytm Shora rozkłada duże liczby w czasie wielomianowym na wystarczająco dużym komputerze kwantowym i złamie RSA. Rozbicie RSA-2048 szacuje się na około 4000+ kubitów logicznych (miliony fizycznych) – współczesne komputery kwantowe mają około 1000 głośnych kubitów fizycznych. NIST zstandardyzował algorytmy post-kwantowe oparte na siatkach (ML-KEM, ML-DSA) w 2024 roku jako zabezpieczenie przed tą przyszłą groźbą.

Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz the simulation i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację the simulation

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)