Szyfrowanie RSA stanowi jedno z najbardziej znaczących osiągnięć w historii kryptografii nowoczesnej, zrewolucjonizując sposób, w jaki bezpiecznie transmitujemy dane przez niezabezpieczone kanały komunikacyjne, takie jak Internet.

Spis treści

RSA to asymetryczny algorytm kryptograficzny, który umożliwił bezpieczną wymianę danych bez uprzedniej wymiany tajnych kluczy. Algorytm Rivesta-Shamira-Adlemana (RSA) został opracowany w 1977 roku przez naukowców z MIT i szybko stał się filarem bezpieczeństwa informacji, wspierając szyfrowanie, podpisy cyfrowe i bezpieczne protokoły internetowe.

Fundamenty teoretyczne i koncepcja asymetrycznej kryptografii

Przejście od szyfrowania symetrycznego do asymetrycznego

Przed RSA dominowało szyfrowanie symetryczne, w którym ten sam klucz służy do szyfrowania i deszyfrowania. Problemem była bezpieczna dystrybucja kluczy, co utrudniało skalowanie w dużych sieciach. W 1976 roku Diffie i Hellman zaproponowali koncepcję kryptosystemu z kluczem publicznym, ale dopiero RSA wykorzystało trudność faktoryzacji dużych liczb jako praktyczną podstawę bezpieczeństwa.

Asymetryczna kryptografia opiera się na parze kluczy: publicznym (do udostępniania) i prywatnym (do zachowania w tajemnicy), połączonych matematycznie w sposób jednokierunkowy. Wiedza o kluczu publicznym nie pozwala obliczyć klucza prywatnego, co umożliwia bezpieczną komunikację bez uprzedniej wymiany sekretów.

Podstawowe zasady funkcjonowania RSA

Bezpieczeństwo RSA wynika z łatwości mnożenia dużych liczb pierwszych oraz praktycznej niewykonalności rozkładu ich iloczynu na czynniki dla współczesnych komputerów. Atakujący, znając p i q, mógłby odzyskać klucz prywatny, dlatego wybiera się je losowo z ogromnej przestrzeni liczb pierwszych (np. dla klucza 2048-bitowego w zakresie około 2^1023–2^1024).

RSA obejmuje trzy etapy: generowanie kluczy, szyfrowanie i deszyfrowanie. Dodatkowo wspiera podpisy cyfrowe, zapewniając autentyczność pochodzenia i integralność wiadomości.

Proces generowania kluczy – fundament bezpieczeństwa

Kroki algorytmu generowania kluczy

Generowanie pary kluczy RSA wymaga starannych kroków matematycznych, ze szczególnym naciskiem na losowość i testy pierwszości. Liczby p i q powinny być wystarczająco „odległe” wartościowo i zweryfikowane np. testem Millera–Rabina.

W skrócie, generowanie pary kluczy przebiega następująco:

  1. Wybierz dwie duże, losowe liczby pierwsze p i q, weryfikując je testami pierwszości.
  2. Oblicz moduł n = p · q i zachowaj p, q w tajemnicy.
  3. Wyznacz φ(n) = (p − 1)(q − 1).
  4. Wybierz wykładnik publiczny e względnie pierwszy z φ(n), w praktyce najczęściej e = 65537.
  5. Oblicz wykładnik prywatny d jako odwrotność modularną e modulo φ(n) (rozszerzony algorytm Euklidesa).
  6. Zdefiniuj klucze: publiczny (n, e) do udostępniania oraz prywatny (n, d), który należy chronić; opcjonalnie przechowuj p, q dla przyspieszenia działań z twierdzeniem chińskim o resztach.

Ujawnienie φ(n) lub liczb p i q kompromituje bezpieczeństwo klucza prywatnego. Dlatego implementacje pilnie chronią te wartości i dbają o silny generator liczb losowych.

Długość kluczy i rekomendacje bezpieczeństwa

Długość klucza bezpośrednio wpływa na odporność na ataki faktoryzacyjne i siłowe. NIST rekomenduje minimum 2048 bitów, co odpowiada w przybliżeniu sile 112 bitów szyfrowania symetrycznego. Klucze 4096-bitowe podnoszą bezpieczeństwo kosztem istotnie wolniejszych operacji (nawet ~10× względem 2048 bitów).

Poniżej zestawienie praktycznych długości kluczy i ich statusu:

Długość klucza RSA Szacowana siła symetryczna Status Uwagi
512 bitów złamany publicznie faktoryzowany; nieużyteczny w praktyce
1024 bity < 80 bitów przestarzały niewystarczający margines bezpieczeństwa
2048 bitów ~112 bitów minimum zalecane dobry kompromis bezpieczeństwo/wydajność
3072 bity ~128 bitów podwyższone często wybierany dla danych o dłuższym horyzoncie
4096 bitów ~150 bitów wysokie znacznie wolniejsze operacje kryptograficzne

Proces szyfrowania i deszyfrowania

Szyfrowanie wiadomości kluczem publicznym

Nadawca pobiera klucz publiczny odbiorcy, koduje wiadomość do reprezentacji liczbowej i dzieli na bloki m < n. W praktyce stosuje się tzw. wypełnianie (padding), aby zapobiec atakom strukturalnym.

Najczęściej spotykane schematy wypełniania to:

  • brak wypełniania – niebezpieczne i niewystępujące w poprawnych wdrożeniach;
  • PKCS#1 v1.5 – historyczny standard, podatny na wycieki (np. atak Bleichenbachera);
  • OAEP – współcześnie zalecany padding, wprowadza losowość i odporność na wybrane klasy ataków.

Sam zabieg szyfrowania to modularne potęgowanie: c ≡ m^e (mod n). Modularne potęgowanie jest kosztowne obliczeniowo, dlatego w praktyce szyfruje się klucze sesji, a nie duże zbiory danych.

Deszyfrowanie kluczem prywatnym

Odbiorca z kluczem prywatnym (n, d) odzyskuje bloki: m ≡ c^d (mod n), a następnie usuwa wypełnianie, by odtworzyć oryginalną wiadomość. W implementacjach stosuje się szybkie potęgowanie i często twierdzenie chińskie o resztach, by znacząco przyspieszyć obliczenia.

Korekta poprawności gwarantowana jest warunkiem e · d ≡ 1 (mod φ(n)), co sprawia, że deszyfrowanie odtwarza dokładnie pierwotny m.

Cyfrowe podpisy i autentyczność

Mechanizm tworzenia i weryfikacji podpisów

Podpis w RSA tworzy się, haszując wiadomość (np. SHA-256) i szyfrując skrót kluczem prywatnym. Weryfikacja polega na odszyfrowaniu podpisu kluczem publicznym nadawcy i porównaniu z lokalnie wyliczonym haszem.

Najważniejsze właściwości podpisów cyfrowych RSA to:

  • autentyczność – podpis łączy wiadomość z tożsamością posiadacza klucza prywatnego;
  • integralność – każda zmiana treści unieważnia zgodność skrótów;
  • nierepudiacja – podpisujący nie może wiarygodnie zaprzeczyć złożeniu podpisu.

Ataki na podpisy RSA

Historia implementacji ujawnia ataki wynikające z niewłaściwego wypełniania i braku haszowania. Współczesne schematy, takie jak RSASSA-PSS, eliminują klasy multiplikatywnych manipulacji danymi wejściowymi.

Najczęstsze wektory nadużyć to:

  • multiplikatywność „gołego” RSA – bez haszowania i poprawnego wypełniania możliwe są konstrukcje M = M1 × M2;
  • ataki na wybrane wiadomości – wymuszanie podpisu różnych treści i ich algebraiczne łączenie;
  • niska entropia i przewidywalna struktura danych – ułatwia zgadywanie treści bez faktoryzacji n.

Praktyczne zastosowania szyfrowania RSA

Bezpieczeństwo protokołów internetowych

RSA od lat fundamentuje SSL/TLS. W klasycznym trybie serwer ujawnia certyfikat z kluczem publicznym, klient szyfruje pre-master secret, a po deszyfrowaniu obie strony wyprowadzają symetryczny klucz sesji.

Wymiana klucza RSA nie zapewnia perfect forward secrecy (PFS), dlatego w nowoczesnych wdrożeniach (szczególnie TLS 1.3) preferowane są mechanizmy DHE/ECDHE generujące efemeryczne klucze sesyjne.

Podpisy cyfrowe i certyfikaty elektroniczne

RSA to podstawa PKI. Certyfikat zawiera klucz publiczny i jest podpisany przez zaufany CA, co umożliwia weryfikację łańcucha zaufania. RSA jest szeroko stosowane w code signing (np. sterowniki Windows) z rosnącymi wymaganiami co do rozmiarów kluczy.

Szyfrowanie poczty elektronicznej i komunikacja

W systemach takich jak PGP czy S/MIME każda strona posiada parę kluczy RSA; nadawca szyfruje dane kluczem publicznym odbiorcy, a odszyfrowanie wymaga klucza prywatnego. To popularny wzorzec w telemedycynie i sektorach obsługujących dane wrażliwe.

Bezpieczeństwo sieci prywatnych i dostęp do serwerów

VPN i SSH wykorzystują RSA do uwierzytelniania i bezhasłowego dostępu: klucz publiczny trafia do pliku authorized_keys, a posiadanie klucza prywatnego umożliwia logowanie bez przesyłania haseł.

Wady i ograniczenia szyfrowania RSA

Szybkość przetwarzania i wydajność obliczeniowa

Modularne potęgowanie w RSA jest znacząco wolniejsze niż szyfrowanie symetryczne (np. AES). Dlatego w praktyce stosuje się podejście hybrydowe: RSA tylko do bezpiecznego transportu klucza sesji, a dane szyfruje szybki algorytm symetryczny.

Wrażliwość na słabe generowanie liczb pierwszych

Jakość RNG ma krytyczne znaczenie. Przykład luki ROCA (2017) pokazał, że deterministyczne wzorce generowania kluczy prowadzą do masowych kompromitacji p i q i łatwej faktoryzacji n.

Ataki czasowe i ataki z kanałem pobocznym

Różnice czasów wykonania, zużycia energii czy emisji EM mogą ujawniać bity klucza. Obrona obejmuje blinding, stałoczasowe implementacje i bezpieczne wypełnianie.

Najważniejsze ograniczenia RSA warto mieć na uwadze:

  • wysoki koszt obliczeń – ogranicza wydajność przy dużych wolumenach danych;
  • wymóg silnej losowości – słaby RNG kompromituje bezpieczeństwo całego systemu;
  • podatność implementacyjna – kanały poboczne i błędy w paddingu skutkują praktycznymi atakami.

Zagadnienia bezpieczeństwa i luki

Historyczne ataki na faktoryzację

Rekordy faktoryzacji (m.in. 512-bit i 768-bit) doprowadziły do porzucenia krótkich kluczy i ugruntowania rekomendacji ≥2048 bitów. Postęp algorytmiczny i sprzętowy wymusza stopniowe podnoszenie bezpieczeństwa.

Atak Bleichenbachera i zagrożenia z powodu złych schematów wypełniania

Atak z 1998 r. na PKCS#1 v1.5 pokazał, że nawet „sygnały błędu” mogą tworzyć orakle do odzyskiwania tekstu jawnego. Przejście na OAEP zrandomizowało strukturę i zamknęło tę klasę wektorów.

Zagrożenie ze strony komputerów kwantowych

Algorytm Shora teoretycznie łamie RSA w czasie wielomianowym na wystarczająco dużym komputerze kwantowym. Szacunki wskazują, że urządzenia zdolne do praktycznego łamania RSA‑2048 nie są jeszcze dostępne, ale ryzyko harvest now, decrypt later jest realne.

Jak przygotować się na erę postkwantową:

  • crypto‑agility – projektowanie systemów z myślą o szybkiej wymianie prymitywów kryptograficznych;
  • hybrydowe negocjacje kluczy – łączenie klasycznych mechanizmów (np. X25519) z PQC (np. ML‑KEM‑768);
  • plan migracji – inwentaryzacja kryptografii, testy kompatybilności, stopniowe wdrożenie PQC w krytycznych ścieżkach.

Porównanie z innymi algorytmami kryptograficznymi

RSA a kryptografia krzywych eliptycznych (ECC)

ECC zapewnia porównywalną siłę przy znacznie krótszych kluczach (np. ECC 256 ≈ RSA 2048) i często lepszą wydajność podpisów (ECDSA) oraz wymian (ECDH). RSA wciąż dominuje w istniejącej infrastrukturze, lecz nowe wdrożenia coraz częściej wybierają ECC z uwagi na efektywność.

Schemat Diffie-Hellmana i warianty wymiany kluczy

DH/ECDHE służy głównie do wymiany kluczy i zapewnia forward secrecy poprzez efemeryczne klucze sesyjne. TLS 1.3 całkowicie porzuca wymianę RSA na rzecz ECDHE.

Poniższa tabela syntetycznie porównuje trzy popularne mechanizmy:

Mechanizm Typowe rozmiary Wydajność Forward secrecy Typowe użycie
RSA 2048–4096 bitów wolniejsze podpis/odszyfrowanie nie (w klasycznej wymianie) podpisy, certyfikaty, transport klucza
ECC (ECDSA/ECDH) 224–521 bitów szybkie przy krótkich kluczach tak (ECDHE) podpisy, wymiana kluczy w TLS 1.3
DH/ECDHE 2048 bitów / krzywe 255–384 szybkie negocjacje sesji tak (efemeryczne) negocjacja kluczy sesyjnych

Wdrażanie hybrydowe i współczesne praktyki

Hybrydowe podejście do szyfrowania

Model hybrydowy łączy bezpieczeństwo asymetryczne z wydajnością symetryczną. RSA/ECC zabezpiecza klucz sesji, a dane szyfruje szybki algorytm (np. AES).

Typowy przebieg w systemach komunikacyjnych wygląda następująco:

  1. Nadawca generuje losowy klucz sesji (symetryczny).
  2. Szyfruje dane kluczem sesji (np. AES‑GCM).
  3. Szyfruje klucz sesji kluczem publicznym odbiorcy (RSA/ECC).
  4. Odbiorca deszyfruje klucz sesji kluczem prywatnym i następnie odszyfrowuje dane.

Praktyczne wdrażanie w IoT i urządzeniach o niskiej mocy

Urządzenia IoT dysponują ograniczonymi zasobami, dlatego RSA stosuje się głównie do inicjalizacji i dystrybucji klucza sesji. Dalej ruch danych zabezpiecza AES, co minimalizuje zużycie energii i opóźnienia transmisji. Multi‑prime RSA oraz CRT przyspieszają operacje po stronie urządzeń.

Przyszłość szyfrowania RSA w erze postkwantowej

Postkwantowe algorytmy kryptograficzne

NIST w 2024 roku opublikował standardy dla pierwszych zestawów PQC odpornych na algorytm Shora, m.in. ML‑KEM, ML‑DSA, SLH‑DSA oraz FALCON. Różnią się one kompromisami między bezpieczeństwem, rozmiarem kluczy/podpisów i złożonością implementacji.

Najważniejsze grupy PQC w telegraficznym skrócie:

  • ML‑KEM – kapsułkowanie klucza na kratkach modułowych; dobry balans wydajności i bezpieczeństwa;
  • ML‑DSA – podpisy na kratkach modułowych; uniwersalny wybór do ogólnych zastosowań;
  • SLH‑DSA – bezstanowe podpisy oparte na funkcjach skrótu; bardzo konserwatywny model bezpieczeństwa.

Historyczne znaczenie RSA i jego pozostała rola

RSA pozostanie kluczowym elementem istniejącej infrastruktury przez lata, choć nowe wdrożenia będą stopniowo migrować do ECC i PQC. Zalecane jest planowanie etapowej migracji, testy kompatybilności i utrzymanie elastyczności kryptograficznej (crypto‑agility) w projektowaniu systemów.