Przejdź do treści

~/cyberbezpieczenstwo cat szyfrowanie-symetryczne.md

Szyfrowanie symetryczne i asymetryczne – różnice, algorytmy i przykłady

Szyfrowanie symetryczne i asymetryczne: czym się różnią, jak działa klucz publiczny i prywatny oraz które algorytmy są bezpieczne (AES, ChaCha20, RSA, ECC).

CZCzarek Zawolski--aktualizacja=--czas=8 min--dział=Cyberbezpieczeństwo
Ilustracja kłódki i kluczy symbolizująca szyfrowanie danych
tldr.txt — W skrócie

~ xad tldr szyfrowanie-symetryczne

  • Szyfrowanie symetryczne używa jednego tajnego klucza do szyfrowania i odszyfrowania; asymetryczne — pary kluczy: publicznego i prywatnego.
  • Symetryczne (AES, ChaCha20) jest bardzo szybkie i służy do szyfrowania samych danych; asymetryczne (RSA, ECC) rozwiązuje problem przekazania klucza i umożliwia podpisy cyfrowe.
  • W praktyce oba rodzaje działają razem: HTTPS, VPN, Signal czy PGP uzgadniają klucz asymetrycznie, a dane szyfrują symetrycznie.
  • Przestarzałe i niebezpieczne: DES, 3DES, RC4 oraz tryb ECB. Dziś standardem jest AES-GCM lub ChaCha20-Poly1305.
  • Komputery kwantowe zagrażają głównie RSA i ECC — dlatego wdraża się kryptografię postkwantową (ML-KEM), a do danych długoterminowych wybiera się AES-256.
$ tree --spis-tresci

Szyfrowanie symetryczne i asymetryczne różnią się liczbą kluczy. W symetrycznym ten sam tajny klucz służy do zaszyfrowania i odszyfrowania danych, więc obie strony muszą go znać. W asymetrycznym każdy uczestnik ma parę kluczy: publiczny, który może pokazać całemu światu, i prywatny, który zna tylko on — co zaszyfrujesz kluczem publicznym, odszyfruje wyłącznie odpowiadający mu klucz prywatny.

Z tej różnicy wynika reszta: szyfrowanie symetryczne jest bardzo szybkie, ale wymaga bezpiecznego przekazania klucza. Asymetryczne rozwiązuje ten problem, lecz jest setki razy wolniejsze. Dlatego w praktyce — w HTTPS, VPN-ach czy komunikatorach — oba rodzaje działają razem.

Szyfrowanie symetryczne i asymetryczne – najważniejsze różnice

CechaSzyfrowanie symetryczneSzyfrowanie asymetryczne
Liczba kluczyJeden wspólny, tajny kluczPara: klucz publiczny i prywatny
SzybkośćBardzo duża, często wspierana sprzętowoZnacznie mniejsza
Typowe zastosowanieSzyfrowanie danych: plików, dysków, ruchu sieciowegoWymiana kluczy, podpisy cyfrowe, certyfikaty
Główny problemJak bezpiecznie przekazać klucz drugiej stronieWydajność i zaufanie do klucza publicznego (czyj on jest?)
Długość klucza dla ok. 128 bitów bezpieczeństwa128 bitów (AES-128)3072 bity (RSA) lub 256 bitów (krzywe eliptyczne)
Przykłady algorytmówAES, ChaCha20, (przestarzałe: DES, 3DES, RC4)RSA, ECDH, ECDSA, Ed25519, ElGamal
Liczba kluczy dla n osóbn × (n − 1) / 2 — każda para potrzebuje osobnego klucza2n — każdy ma jedną parę

Ostatni wiersz dobrze pokazuje skalę problemu. Aby 100 osób mogło rozmawiać w parach wyłącznie symetrycznie, potrzeba 4950 różnych kluczy, a każdy trzeba jakoś bezpiecznie dostarczyć. Przy kryptografii asymetrycznej wystarczy 100 par kluczy i opublikowanie 100 kluczy publicznych.

Jak działa szyfrowanie symetryczne

Algorytm symetryczny bierze tekst jawny i klucz, a zwraca szyfrogram — ciąg bajtów, który bez klucza wygląda jak losowy szum. Ten sam klucz, podany do operacji odwrotnej, odtwarza oryginał. Bezpieczeństwo opiera się wyłącznie na tajności klucza: sam algorytm jest publiczny i przebadany przez kryptologów na całym świecie.

Szyfry symetryczne dzielą się na dwie grupy:

  • Szyfry blokowe — przetwarzają dane w blokach o stałej długości (w AES to 128 bitów). Żeby zaszyfrować plik dłuższy niż jeden blok, stosuje się tzw. tryb pracy.
  • Szyfry strumieniowe — generują z klucza strumień pseudolosowych bajtów i łączą go z danymi operacją XOR. Przykładem jest ChaCha20.

Tryby pracy szyfru blokowego

Tryb pracy decyduje o bezpieczeństwie tak samo jak sam algorytm. Najważniejsze:

  • ECB — każdy blok szyfrowany osobno, identyczne bloki dają identyczny szyfrogram. Wzory w danych pozostają widoczne, dlatego ECB się nie stosuje.
  • CBC — każdy blok jest łączony z poprzednim; wymaga losowego wektora inicjalizującego (IV). Wciąż spotykany, ale sam nie chroni przed modyfikacją danych.
  • CTR — zamienia szyfr blokowy w strumieniowy; szybki i łatwy do zrównoleglenia.
  • GCM — CTR z wbudowanym uwierzytelnieniem. To tzw. szyfrowanie uwierzytelnione (AEAD): odbiorca wykryje każdą zmianę w szyfrogramie. AES-GCM to dziś domyślny wybór w TLS i wielu aplikacjach.

Przy trybach CTR i GCM krytyczne jest, by ta sama para klucz + nonce nigdy nie została użyta dwukrotnie — powtórzenie pozwala atakującemu odzyskać informacje o danych.

Algorytmy szyfrowania symetrycznego

AlgorytmKlucz / blokStatus w 2026 r.
AES (Rijndael)Klucz 128, 192 lub 256 bitów; blok 128 bitówStandard (FIPS 197), zalecany; akceleracja AES-NI w procesorach
ChaCha20 (z Poly1305)Klucz 256 bitów; szyfr strumieniowyZalecany; szybki na urządzeniach bez AES-NI, używany w TLS 1.3 i WireGuard
Camellia, Serpent, TwofishKlucz do 256 bitów; blok 128 bitówBezpieczne, ale niszowe (np. opcje w VeraCrypt)
3DESEfektywnie 112 bitów; blok 64 bityWycofany — NIST nie dopuszcza go do szyfrowania od 2024 r.
BlowfishKlucz do 448 bitów; blok 64 bityPrzestarzały (mały blok); jego następcą jest Twofish
DES56 bitów; blok 64 bityZłamany — klucz można znaleźć siłowo
RC4Szyfr strumieniowyZłamany, zakazany w TLS

AES jest najpowszechniejszym algorytmem symetrycznym na świecie — szyfruje ruch HTTPS, dyski z BitLockerem i FileVault, sieci Wi-Fi z WPA2/WPA3 i archiwa ZIP. Szczegóły jego budowy opisujemy w osobnym artykule o algorytmie AES.

Przykład: szyfrowanie pliku z wiersza poleceń

Plik zaszyfrujesz symetrycznie hasłem za pomocą GnuPG — klucz AES zostanie wyprowadzony z hasła:

# szyfrowanie (powstanie plik raport.pdf.gpg)
gpg --symmetric --cipher-algo AES256 raport.pdf

# odszyfrowanie
gpg --output raport.pdf --decrypt raport.pdf.gpg

To samo zrobisz w OpenSSL. Parametr -pbkdf2 sprawia, że klucz z hasła jest wyprowadzany odpowiednio kosztowną funkcją, a nie przestarzałą metodą domyślną:

openssl enc -aes-256-cbc -salt -pbkdf2 -iter 600000 -in raport.pdf -out raport.pdf.enc
openssl enc -d -aes-256-cbc -pbkdf2 -iter 600000 -in raport.pdf.enc -out raport.pdf

Tak zaszyfrowany plik jest dokładnie tak bezpieczny, jak hasło. Krótkie hasło da się zgadnąć atakiem słownikowym niezależnie od tego, że pod spodem pracuje AES-256.

Szyfrowanie asymetryczne: klucz publiczny i prywatny

Kryptografia asymetryczna (z kluczem publicznym) opiera się na problemach matematycznych, które łatwo wykonać w jedną stronę, a praktycznie nie da się ich odwrócić bez dodatkowej informacji. W RSA jest to rozkład ogromnej liczby na czynniki pierwsze, w kryptografii krzywych eliptycznych (ECC) — problem logarytmu dyskretnego na krzywej.

Para kluczy działa w dwóch kierunkach:

  1. Szyfrowanie: ktoś szyfruje wiadomość Twoim kluczem publicznym, a odszyfrować może ją tylko Twój klucz prywatny.
  2. Podpis cyfrowy: Ty podpisujesz dane swoim kluczem prywatnym, a każdy może zweryfikować podpis Twoim kluczem publicznym. To potwierdza autora i to, że dane nie zostały zmienione.

Najważniejsze algorytmy asymetryczne:

  • RSA — najstarszy powszechnie używany (1977). Obecnie minimum to klucz 2048 bitów, a dla ochrony długoterminowej 3072 bity lub więcej.
  • ECDH i X25519 — uzgadnianie wspólnego klucza na krzywych eliptycznych; następcy klasycznego algorytmu Diffiego-Hellmana.
  • ECDSA i Ed25519 — podpisy cyfrowe na krzywych eliptycznych, stosowane m.in. w certyfikatach TLS, kluczach SSH i kryptowalutach. Więcej w artykule o ECDSA.
  • ElGamal — schemat oparty na logarytmie dyskretnym, spotykany m.in. w starszych kluczach PGP.

Klucze na krzywych eliptycznych są dużo krótsze niż RSA przy tym samym poziomie bezpieczeństwa, a operacje na nich szybsze — dlatego nowe systemy wybierają je domyślnie. Parę kluczy SSH typu Ed25519 wygenerujesz jednym poleceniem:

ssh-keygen -t ed25519 -C "jan@laptop"

Plik ~/.ssh/id_ed25519.pub to klucz publiczny, który kopiujesz na serwer, a ~/.ssh/id_ed25519 — klucz prywatny, który nigdy nie powinien opuścić Twojego komputera.

Szyfrowanie hybrydowe – jak oba rodzaje działają razem

Skoro szyfrowanie symetryczne jest szybkie, a asymetryczne rozwiązuje problem przekazania klucza, protokoły łączą obie metody. Schemat jest prawie zawsze taki sam:

  1. Strony uzgadniają lub przekazują jednorazowy klucz sesji przy użyciu kryptografii asymetrycznej.
  2. Wszystkie dane szyfrowane są już tym kluczem sesji algorytmem symetrycznym.

Przykłady z codziennego użytku:

  • HTTPS (TLS 1.3) — przeglądarka i serwer uzgadniają klucz metodą ECDHE (najczęściej na krzywej X25519), serwer potwierdza tożsamość certyfikatem z podpisem RSA lub ECDSA, a strona WWW przesyłana jest szyfrem AES-GCM lub ChaCha20-Poly1305.
  • WhatsApp i Signal — protokół Signal uzgadnia klucze na krzywej Curve25519, a treść wiadomości szyfruje algorytmem AES; klucze zmieniają się z każdą wiadomością.
  • PGP / GnuPG — program losuje klucz sesji, szyfruje nim wiadomość symetrycznie, a sam klucz sesji szyfruje kluczem publicznym odbiorcy.
  • SSH — kluczami asymetrycznymi logujesz się na serwer, a cała sesja jest szyfrowana symetrycznie.
  • VPN WireGuard — wymiana kluczy na Curve25519, ruch szyfrowany ChaCha20-Poly1305.

Telegram warto wspomnieć osobno: domyślne czaty są szyfrowane między aplikacją a serwerem, a pełne szyfrowanie end-to-end działa tylko w tzw. czatach sekretnych.

Długość klucza, komputery kwantowe i kryptografia postkwantowa

Długości kluczy symetrycznych i asymetrycznych nie da się porównywać wprost. Według zaleceń NIST poziom 128 bitów bezpieczeństwa zapewniają AES-128, RSA z kluczem 3072 bitów oraz krzywe eliptyczne 256-bitowe.

Komputery kwantowe wpływają na oba rodzaje szyfrowania inaczej:

  • Symetryczne — algorytm Grovera w teorii obniża efektywne bezpieczeństwo mniej więcej o połowę. Wystarczy odpowiedni zapas: AES-256 pozostaje bezpieczny.
  • Asymetryczne — algorytm Shora na odpowiednio dużym komputerze kwantowym złamałby RSA, Diffiego-Hellmana i ECC całkowicie.

Dlatego w 2024 roku NIST opublikował pierwsze standardy kryptografii postkwantowej: ML-KEM (FIPS 203) do uzgadniania kluczy oraz ML-DSA (FIPS 204) i SLH-DSA (FIPS 205) do podpisów. Przeglądarki i duże serwisy już stosują hybrydowe uzgadnianie kluczy łączące X25519 z ML-KEM, żeby dane przechwycone dziś nie dały się odszyfrować w przyszłości.

Zarządzanie kluczami – najsłabsze ogniwo

Nawet najlepszy algorytm nie pomoże, jeśli klucz leży w pliku konfiguracyjnym w repozytorium albo wysyłasz hasło do archiwum w tym samym mailu co archiwum. Podstawowe zasady:

  • klucze generuj z kryptograficznie bezpiecznego generatora liczb losowych, nigdy „ręcznie”,
  • klucz z hasła wyprowadzaj funkcją KDF (PBKDF2, scrypt, Argon2), a nie prostym skrótem kryptograficznym,
  • klucze prywatne i główne przechowuj w module sprzętowym (TPM, HSM, klucz bezpieczeństwa) lub usłudze KMS chmury,
  • rotuj klucze i miej procedurę na wypadek ich wycieku,
  • hasło do zaszyfrowanego pliku przekazuj innym kanałem niż sam plik.

Uwaga: Utrata klucza oznacza utratę danych. Przed włączeniem szyfrowania dysku (BitLocker, FileVault, LUKS) zapisz klucz odzyskiwania w bezpiecznym miejscu — bez niego nie odzyska ich nawet producent systemu.

Które szyfrowanie wybrać

Wybór rzadko sprowadza się do „albo–albo”. W zdecydowanej większości zastosowań sięgasz po gotowe, sprawdzone rozwiązania, które łączą oba typy:

  • Szyfrowanie dysku lub pliku na własny użytek — symetryczne: BitLocker, FileVault, LUKS, VeraCrypt albo gpg --symmetric.
  • Przesłanie poufnego pliku konkretnej osobie — hybrydowe: GnuPG z kluczem publicznym odbiorcy lub komunikator z szyfrowaniem end-to-end.
  • Potwierdzenie autorstwa i integralności — asymetryczne podpisy cyfrowe (Ed25519, ECDSA, RSA).
  • Własna aplikacja — nie projektuj kryptografii samodzielnie; użyj biblioteki wysokiego poziomu (np. libsodium) lub TLS, a do danych w spoczynku AES-GCM albo ChaCha20-Poly1305.

Jeśli interesuje Cię, jak kryptografia asymetryczna zastępuje hasła przy logowaniu, zajrzyj do tekstu o standardzie FIDO2 — tam klucz prywatny nigdy nie opuszcza Twojego urządzenia.

~ man faq

Najczęściej zadawane pytania

Czym różni się szyfrowanie symetryczne od asymetrycznego?

W szyfrowaniu symetrycznym nadawca i odbiorca używają tego samego tajnego klucza. W asymetrycznym każdy ma parę kluczy: publiczny, którym inni szyfrują wiadomość, i prywatny, którym tylko właściciel może ją odszyfrować.

Które szyfrowanie jest bezpieczniejsze: symetryczne czy asymetryczne?

Żadne nie jest z definicji bezpieczniejsze — oba są bezpieczne przy odpowiedniej długości klucza. AES-128 daje poziom bezpieczeństwa porównywalny z RSA-3072 lub kryptografią krzywych eliptycznych na 256 bitach, a symetryczne jest przy tym znacznie szybsze.

Jakie są przykłady algorytmów szyfrowania symetrycznego?

Obecnie zalecane to AES (z kluczem 128, 192 lub 256 bitów) i ChaCha20. Starsze to DES, 3DES, Blowfish i RC4 — nie należy ich używać w nowych systemach.

Co to jest klucz asymetryczny?

To para matematycznie powiązanych kluczy: publiczny, który można swobodnie udostępniać, i prywatny, który musi pozostać tajny. Z klucza publicznego nie da się w praktyce wyliczyć prywatnego.

Czy WhatsApp używa szyfrowania symetrycznego czy asymetrycznego?

Obu. WhatsApp korzysta z protokołu Signal: klucze są uzgadniane kryptografią asymetryczną na krzywych eliptycznych, a treść wiadomości szyfrowana jest symetrycznie algorytmem AES.

Ten artykuł jest częścią tematu

CZ

$ whoami

Czarek Zawolski

Założyciel i redaktor XAD.pl. Pisze o sieciach, bezpieczeństwie IT, administracji systemami Windows i Linux oraz o sprzęcie, który sprawia ludziom problemy na co dzień.

~ ls ../podobne