RSA

Popularny algorytm szyfrowania asymetrycznego oparty na trudności faktoryzacji dużych liczb. Stosowany do bezpiecznej wymiany kluczy i podpisów cyfrowych.

RSA (od nazwisk twórców: Rivest, Shamir, Adleman, opublikowany w 1977 r.) to jeden z pierwszych i wciąż najpopularniejszych algorytmów kryptografii asymetrycznej. Jego bezpieczeństwo opiera się na prostym fakcie: pomnożyć dwie ogromne liczby pierwsze jest łatwo, ale rozłożyć ich iloczyn z powrotem na czynniki (faktoryzacja) jest obliczeniowo morderczo trudne. To właśnie ta asymetria pozwala mieć parę kluczy — publiczny do szyfrowania i weryfikacji oraz prywatny do deszyfrowania i podpisywania.

Jak to działa i do czego służy

Generujesz parę kluczy. Klucz publiczny możesz rozdawać wszystkim — ktokolwiek może nim zaszyfrować wiadomość albo sprawdzić Twój podpis. Klucz prywatny trzymasz dla siebie jak hasło do bankowości — tylko on odszyfruje dane i tylko nim złożysz wiarygodny podpis. Dzięki temu dwie strony, które nigdy się nie spotkały, mogą bezpiecznie się dogadać bez wcześniejszego wymieniania wspólnego sekretu.

W praktyce RSA rzadko szyfruje całe pliki — jest na to za wolny i ma limit długości danych. Zamiast tego służy do wymiany kluczy (zabezpiecza krótki klucz symetryczny, np. AES, którym potem leci właściwy ruch) oraz do podpisów cyfrowych. Spotkasz go w TLS/HTTPS, certyfikatach X.509, kluczach SSH, podpisanych mailach (S/MIME, PGP) czy podpisywaniu pakietów oprogramowania.

Przykład z praktyki

Najprościej dotkniesz RSA generując klucz SSH przez OpenSSL albo ssh-keygen. Para kluczy 2048-bitowych powstaje tak:

  • openssl genrsa -out private.pem 2048 — klucz prywatny,
  • openssl rsa -in private.pem -pubout -out public.pem — wyciągasz z niego klucz publiczny.

Plik public.pem wrzucasz na serwer, private.pem pilnujesz jak oka w głowie. Logując się po SSH, serwer wystawia Ci wyzwanie, które podpisujesz kluczem prywatnym — i wchodzisz bez wpisywania hasła.

Częste błędy i mity

  • Za krótki klucz. 1024 bity są dziś uznane za złamane — używaj minimum 2048, a dla nowych systemów 3072 lub 4096 bitów.
  • Mit „RSA szyfruje wszystko”. Nie. To koń pociągowy do uzgodnienia klucza symetrycznego, nie do streamowania gigabajtów.
  • Brak paddingu. Goły, „podręcznikowy” RSA jest dziurawy. Realne implementacje używają OAEP do szyfrowania i PSS do podpisów.
  • Klucz prywatny w repo. Klasyk. Trafia na GitHub i po godzinie ktoś go skanuje.

Na horyzoncie majaczą komputery kwantowe (algorytm Shora teoretycznie łamie RSA), dlatego świat patrzy w stronę kryptografii postkwantowej. Na razie jednak, z odpowiednio długim kluczem, RSA ma się dobrze.

Pojęcia powiązane

Kryptografia asymetryczna, klucz publiczny i prywatny, ECC (krzywe eliptyczne — lżejsza alternatywa), AES (szyfr symetryczny), TLS/HTTPS, podpis cyfrowy, certyfikat X.509, funkcja skrótu, faktoryzacja, kryptografia postkwantowa.