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:
- Wybierz dwie duże, losowe liczby pierwsze p i q.
- Oblicz n = p · q — moduł, który jest częścią obu kluczy.
- Oblicz φ(n) = (p − 1)(q − 1) (funkcja Eulera).
- Wybierz liczbę e taką, że 1 < e < φ(n) i gcd(e, φ(n)) = 1 (e jest wykładnikiem publicznym).
- Oblicz d, odwrotność mnożenia e modulo φ(n): d · e ≡ 1 (mod φ(n)). d jest wykładnikiem prywatnym.
- 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.