RSA (Rivest-Shamir-Adleman) jest algorytmem używanym przez współczesne komputery do szyfrowania i odszyfrowywania wiadomości. Jest to asymetryczny algorytm kryptograficzny. Asymetryczny oznacza, że istnieją dwa różne klucze. Jest to również nazywane kryptografią z kluczem publicznym, ponieważ jeden z kluczy może być podany komukolwiek. Drugi klucz musi być zachowany jako prywatny. Algorytm opiera się na fakcie, że znalezienie czynników dużej liczby złożonej jest trudne: gdy czynniki są liczbami pierwszymi, problem nazywa się faktoryzacją pierwszorzędną. Jest to również generator pary kluczy (klucza publicznego i prywatnego).

Jak działa RSA — opis krok po kroku

  • Generowanie kluczy:
    1. Wybierz dwie duże, losowe liczby pierwsze p i q.
    2. Oblicz n = p · q — moduł, który jest częścią obu kluczy.
    3. Oblicz φ(n) = (p − 1)(q − 1) (funkcja Eulera).
    4. Wybierz liczbę e taką, że 1 < e < φ(n) i gcd(e, φ(n)) = 1 (e jest wykładnikiem publicznym).
    5. Oblicz d, odwrotność mnożenia e modulo φ(n): d · e ≡ 1 (mod φ(n)). d jest wykładnikiem prywatnym.
    6. Klucz publiczny to para (n, e). Klucz prywatny to (n, d) — d i często wartości p, q są przechowywane bezpiecznie, by umożliwić szybsze operacje.
  • Szyfrowanie i odszyfrowywanie:
    • Szyfrowanie wiadomości m (0 ≤ m < n): c = m^e mod n.
    • Odszyfrowanie: m = c^d mod n.
  • Podpisy cyfrowe: podpis s = m^d mod n; weryfikacja: m = s^e mod n. Dzięki temu można potwierdzić autentyczność i integralność wiadomości.

Przykład (dla małych liczb, obrazujący działanie)

Wybierzemy p = 61, q = 53. Wtedy n = 3233, φ(n) = 3120. Niech e = 17 (gcd(17,3120)=1). Obliczamy d = 2753 (ponieważ 17·2753 ≡ 1 mod 3120). Publiczny klucz: (n=3233, e=17). Prywatny: d=2753.

Jeśli m = 65, szyfrogram c = 65^17 mod 3233 = 2790. Odszyfrowanie: 2790^2753 mod 3233 = 65 — odzyskujemy oryginalną wiadomość.

Zastosowania praktyczne

  • Ustanawianie bezpiecznych połączeń (np. w protokole TLS) — często do bezpiecznej wymiany kluczy sesyjnych.
  • Podpisy cyfrowe i certyfikaty (np. X.509, PGP).
  • Szyfrowanie wiadomości i uwierzytelnianie w systemach, gdzie konieczne jest rozdzielenie klucza publicznego i prywatnego.

Bezpieczeństwo i praktyczne uwagi

  • Trudność faktoryzacji: bezpieczeństwo RSA opiera się na praktycznej trudności faktoryzacji dużych liczb złożonych. Obecnie najsilniejszą klasą ataków na klasyczne komputery jest algorytm General Number Field Sieve (GNFS).
  • Rozmiary kluczy: zaleca się co najmniej 2048-bitowy klucz dla krótkoterminowego bezpieczeństwa; 3072-bit lub więcej dla dłuższego bezpieczeństwa. Większe klucze zwiększają bezpieczeństwo, ale pogarszają wydajność.
  • Padding i schematy kodowania: bezpieczne użycie RSA wymaga odpowiednich schematów wypełnienia (padding) — np. OAEP dla szyfrowania i PSS dla podpisów. Stosowanie prostego m^e mod n bez paddingu jest podatne na ataki (np. ataki Bleichenbacher’a przy PKCS#1 v1.5).
  • Wybór e: często stosowany wykładnik publiczny to 65537 (2^16 + 1) — zapewnia równowagę między bezpieczeństwem a wydajnością.
  • Generowanie liczb pierwszych: p i q muszą być losowe i wystarczająco duże; stosuje się testy pierwszości (np. Miller–Rabin) oraz silne źródła losowości.
  • Wydajność: RSA jest znacznie wolniejszy niż algorytmy symetryczne — w praktyce stosuje się go do szyfrowania małych bloków (np. kluczy sesyjnych), a nie dużych strumieni danych.
  • Ataki bocznego kanału i przechowywanie kluczy: implementacje muszą być odporne na ataki bocznego kanału (np. pomiary czasu, zużycia energii) oraz chronić prywatny klucz (HSM, moduły TPM, bezpieczne magazynowanie).
  • Wpływ komputerów kwantowych: algorytm Shora (dla komputerów kwantowych) przełamuje bezpieczeństwo RSA w teorii; dlatego dla długoterminowej komunikacji rozważa się algorytmy post-kwantowe.

Podsumowanie

RSA to fundament współczesnej kryptografii asymetrycznej: umożliwia bezpieczną wymianę kluczy, szyfrowanie krótkich wiadomości i podpisy cyfrowe. Jego bezpieczeństwo zależy od odpowiedniego doboru parametrów (rozmiaru klucza, losowości, paddingu) oraz poprawnych implementacji. Mimo pojawienia się nowych technologii i zagrożeń, RSA wciąż jest powszechnie stosowany tam, gdzie spełnia wymagania bezpieczeństwa i wydajności.