Szyfrowanie danych symetryczne vs asymetryczne (AES, RSA)

by Patryk

Szyfrowanie danych w praktyce: po co i gdzie go używasz?

Wyobraź sobie, że wysyłasz znajomemu prywatną wiadomość: dane do przelewu, kod do logowania albo cokolwiek, czego nie chcesz pokazywać innym. Klikasz „wyślij” i ta wiadomość leci przez Wi-Fi, operatorów, routery i serwery, o których istnieniu nawet nie masz pojęcia.

Gdyby była wysłana jako zwykły tekst, ktoś, kto przechwyci ją po drodze, mógłby ją po prostu przeczytać. Jak pocztówkę. Tylko mniej romantycznie.

I właśnie tutaj wchodzi szyfrowanie danych — całe na biało (a właściwie: całe w losowym bełkocie).

Szyfrowanie to sposób na zamianę czytelnych informacji (tekst jawny) w bełkot (szyfrogram) tak, żeby tylko osoba z odpowiednim kluczem mogła odtworzyć oryginalną treść.

Jeśli kiedykolwiek korzystałeś z HTTPS, logowałeś się do aplikacji, płaciłeś w internecie albo łączyłeś się przez VPN — to już korzystałeś z szyfrowania, nawet jeśli nie zwracałeś na to uwagi.

W tym artykule poznasz dwa podstawowe typy szyfrowania: symetryczne i asymetryczne oraz dowiesz się, dlaczego w praktyce najczęściej używa się podejścia hybrydowego.

Szyfrowanie: klucz i kłódka

Zanim rozdzielimy szyfrowanie na „symetryczne” i „asymetryczne”, warto złapać jedną prostą metaforę: kłódki i klucza.

Twoje dane (wiadomość, plik, kod do resetu hasła) to coś, co chcesz schować do zamkniętego pudełka.

  • Szyfrowanie to zakładanie kłódki na pudełko, czyli zamiana treści na coś nieczytelnego.
  • Deszyfrowanie to zdjęcie kłódki i odzyskanie oryginalnej treści.

Co to właściwie jest „klucz” w szyfrowaniu?

W świecie fizycznym klucz to kawałek metalu. W szyfrowaniu klucz to informacja (zwykle długi, losowy ciąg bitów), która decyduje o tym, jak dane są „mieszane” i jak później wracają do normalnej postaci.

Klucz to nie to samo co hasło:

  • Hasło ma być do zapamiętania przez człowieka (więc bywa krótkie, przewidywalne i… zbyt często to „Admin123”).
  • Klucz szyfrujący jest dla komputera – jest długi, losowy i praktycznie nie do odgadnięcia.

W teorii najtrudniejsze są algorytmy. W praktyce często najwięcej dramatów robi… życie:

  • Jak bezpiecznie przekazać klucz drugiej osobie?
  • Gdzie trzymać klucze szyfrujące, żeby nikt ich nie ukradł?
  • Co jeśli klucz wycieknie albo zostanie zgubiony?
  • Jak robić rotację kluczy, żeby nic się nie posypało?

I właśnie dlatego istnieją dwa główne podejścia: szyfrowanie symetryczne i szyfrowanie asymetryczne – każde rozwiązuje inny kawałek problemu.

Szyfrowanie symetryczne

Szyfrowanie symetryczne jest najprostsze do ogarnięcia: używasz jednego tajnego klucza, który służy zarówno do szyfrowania, jak i odszyfrowywania.

Masz klucz → możesz zaszyfrować dane.
Masz ten sam klucz → możesz je odczytać.

Możesz to sobie wyobrazić jak wspólny kod do kłódki. Ty i druga osoba znacie kod. Każdy, kto pozna ten kod, też ją otworzy.

Szyfrowanie symetryczne jest używane w większości miejsc, bo jest po prostu bardzo szybkie. Dzięki temu świetnie nadaje się do sytuacji, w których trzeba chronić duże ilości danych bez zamulania systemu, np.:

  • szyfrowanie plików i dysków,
  • zabezpieczanie baz danych,
  • szyfrowanie ruchu w ramach sesji (gdy klucz już jest ustalony).

Mówiąc krótko: jak jest dużo danych do zaszyfrowania, to szyfrowanie symetryczne zawsze robi robotę.

Jak działa szyfrowanie symetryczne krok po kroku

  • Ty i odbiorca macie wspólny tajny klucz (i tu pojawia się „mały” problem: trzeba go jakoś bezpiecznie ustalić).
  • Bierzesz wiadomość (tekst jawny) i szyfrujesz ją algorytmem z użyciem tego klucza.
  • Powstaje szyfrogram, czyli dane wyglądające jak losowy bełkot.
  • Wysyłasz szyfrogram przez Internet.
  • Odbiorca używa tego samego klucza, żeby odszyfrować wiadomość.

Cała zabawa polega na tym, żeby klucz nie wpadł w niepowołane ręce. Jeśli klucz pozostaje tajny, to nawet gdy ktoś przechwyci szyfrogram, i tak nic z tego nie zrozumie.

Jeśli jednak wyślesz klucz tym samym kanałem, którym wysyłasz zaszyfrowane dane, to trochę tak, jakbyś przykleił klucz do mieszkania taśmą na drzwiach.

Przykładem algorytmu symetrycznego jest AES.

Szyfrowanie asymetryczne

Szyfrowanie asymetryczne rozwiązuje problem jednego klucza. Zamiast wspólnego sekretu mamy parę kluczy, które są ze sobą powiązane:

  • klucz publiczny (public key) – możesz go spokojnie udostępniać całemu światu; służy do szyfrowania wiadomości dla Ciebie,
  • klucz prywatny (private key) – trzymasz tylko dla siebie i pilnujesz jak oka w głowie, bo tylko nim da się odszyfrować wiadomość.

Wyobraź sobie to jak skrzynkę na listy: każdy może wrzucić list, ale wyjąć i przeczytać może tylko właściciel, bo ma klucz prywatny.

Asymetryczne szyfrowanie jest świetne koncepcyjnie, ale ma cenę: jest dużo wolniejsze niż symetryczne i zwykle nie nadaje się do szyfrowania dużych plików „w całości”.

Jak działa szyfrowanie asymetryczne krok po kroku

  • Odbiorca generuje parę kluczy: publiczny i prywatny.
  • Klucz publiczny udostępnia (np. w certyfikacie lub wysyła Ci go).
  • Ty szyfrujesz wiadomość kluczem publicznym odbiorcy.
  • Powstaje szyfrogram, który możesz wysłać nawet przez niezbyt zaufany internet.
  • Odbiorca odszyfrowuje wiadomość kluczem prywatnym, którego nikt poza nim nie ma.

Przykładem algorytmu asymetrycznego jest RSA.

Szyfrowanie hybrydowe

W praktyce najczęściej spotkasz szyfrowanie hybrydowe (np. w HTTPS/TLS), bo:

  • RSA (asymetryczne) świetnie rozwiązuje bezpieczną wymianę kluczy, ale jest zbyt wolne dla dużych danych,
  • AES (symetryczne) jest błyskawiczne, ale wymaga bezpiecznego przekazania klucza.

Jak działa szyfrowanie hybrydowe krok po kroku?

  • Chcesz wysłać dużą ilość danych pomiędzy aplikacją a serwerem.
  • Generujesz mały, losowy klucz „na chwilę” (klucz sesyjny) i szyfrujesz nim całą wiadomość szyfrowaniem symetrycznym (bo jest szybkie).
  • Klucz trzeba jeszcze jakoś bezpiecznie wysłać: szyfrujesz ten klucz sesyjny szyfrowaniem asymetrycznym, używając klucza publicznego odbiorcy.
  • Wysyłasz dwie rzeczy:
  • zaszyfrowaną wiadomość,
  • zaszyfrowany klucz sesyjny do tej wiadomości.

Odbiorca robi odwrotnie:

  • Odszyfrowuje klucz sesyjny swoim kluczem prywatnym.
  • Tym kluczem odszyfrowuje wiadomość.

To trochę jak kurier + sejf: kurier dowozi kluczyk do sejfu, a sejf trzyma całą resztę.

Podsumowanie: kiedy AES, kiedy RSA, a kiedy hybrydowe

  • AES (symetryczne): gdy liczy się szybkość i szyfrujesz dużo danych.
  • RSA (asymetryczne): gdy potrzebujesz bezpiecznie wymienić sekret bez wcześniejszego „umawiania się” na klucz.
  • Hybrydowe (TLS/HTTPS): gdy chcesz mieć jednocześnie bezpieczeństwo i wydajność – czyli praktycznie zawsze w realnym Internecie.

Leave a Comment