Zaawansowany przewodnik po szyfrowaniu: AES, RSA, ECC i kryptografia postkwantowa

Ten kompleksowy przewodnik bada zaawansowane koncepcje szyfrowania, algorytmy i protokoły używane we współczesnych systemach bezpiecznej komunikacji. Idealny dla programistów i specjalistów ds. bezpieczeństwa.

Uwaga: Ten przewodnik zakłada znajomość podstawowych koncepcji szyfrowania. Dla początkujących polecamy zacząć od naszego materiału Wskazówki bezpieczeństwa dla początkujących.

Algorytmy szyfrowania symetrycznego

AES (Advanced Encryption Standard)

Złoty standard szyfrowania symetrycznego, przyjęty przez rząd USA w 2001 roku.

Kluczowe cechy

  • Rozmiary klucza: 128, 192 lub 256 bitów
  • Rozmiar bloku: 128 bitów
  • Rundy: 10, 12 lub 14 w zależności od rozmiaru klucza
  • Wydajność: Wysoce zoptymalizowany, dostępna akceleracja sprzętowa

Popularne tryby

  • GCM (Galois/Counter Mode): Szyfrowanie uwierzytelnione, zalecane w większości przypadków
  • CBC (Cipher Block Chaining): Tradycyjny tryb, wymaga osobnego MAC
  • CTR (Counter): Możliwość równoległego przetwarzania, używany w niektórych protokołach

ChaCha20

Nowoczesny szyfr strumieniowy zaprojektowany przez Daniela J. Bernsteina, coraz bardziej popularny jako alternatywa dla AES.

Zalety

  • Szybszy niż AES na urządzeniach bez akceleracji sprzętowej
  • Implementacja o stałym czasie (odporność na ataki czasowe)
  • Prosty projekt, łatwiejszy do bezpiecznej implementacji
  • Używany z Poly1305 do szyfrowania uwierzytelnionego

Szyfrowanie asymetryczne

RSA (Rivest-Shamir-Adleman)

Szeroko stosowany do wymiany kluczy i podpisów cyfrowych.

Kluczowe zagadnienia

  • Minimalny rozmiar klucza: 2048 bitów (zalecane 4096 bitów dla długoterminowego bezpieczeństwa)
  • Wydajność: Obliczeniowo kosztowny w porównaniu do szyfrowania symetrycznego
  • Schematy dopełniania: Używaj OAEP do szyfrowania, PSS do podpisów
  • Zagrożenie kwantowe: Podatny na komputery kwantowe (algorytm Shora)

Elliptic Curve Cryptography (ECC)

Bardziej wydajna alternatywa dla RSA z równoważnym bezpieczeństwem przy mniejszych rozmiarach kluczy.

Popularne krzywe

  • Curve25519: Zaprojektowana do wymiany kluczy ECDH, szeroko stosowana
  • Ed25519: Do podpisów cyfrowych, używana w SSH, GPG
  • P-256 (secp256r1): Standard NIST, szeroko wspierany
  • P-384, P-521: Wyższe poziomy bezpieczeństwa

Zalety w porównaniu z RSA

  • 256-bitowy ECC ≈ bezpieczeństwo 3072-bitowego RSA
  • Szybsze obliczenia
  • Mniejsze klucze i podpisy
  • Niższe wymagania dotyczące przepustowości i pamięci

Protokoły wymiany kluczy

Diffie-Hellman (DH)

Umożliwia dwóm stronom ustanowienie wspólnego sekretu przez niezabezpieczony kanał.

Warianty

  • Klasyczny DH: Oryginalna implementacja
  • ECDH: Wersja z krzywymi eliptycznymi (bardziej wydajna)
  • X25519: Nowoczesny ECDH używający Curve25519

Perfect Forward Secrecy (PFS)

Zapewnia, że przeszła komunikacja pozostaje bezpieczna nawet jeśli długoterminowe klucze zostaną skompromitowane.

Implementacja

  • Generuj efemeryczne pary kluczy dla każdej sesji
  • Niszcz klucze sesji po użyciu
  • Używany w TLS 1.3, Signal Protocol itp.

Funkcje skrótu

Rodzina SHA-2

  • SHA-256: 256-bitowe wyjście, szeroko stosowany
  • SHA-384, SHA-512: Wyższe poziomy bezpieczeństwa
  • Zastosowania: Podpisy cyfrowe, walidacja certyfikatów, haszowanie haseł (z odpowiednimi technikami)

SHA-3 (Keccak)

  • Inna konstrukcja niż SHA-2 (funkcja gąbkowa)
  • Odporny na ataki rozszerzenia długości
  • Odpowiedni do aplikacji wymagających wysokich marginesów bezpieczeństwa

BLAKE2/BLAKE3

  • Szybszy niż SHA-2 i SHA-3
  • Kryptograficznie bezpieczny
  • BLAKE3: Wysoce równoległy, doskonały dla dużych danych

Key Derivation Functions (KDFs)

PBKDF2 (Password-Based Key Derivation Function 2)

  • Cel: Wyprowadzanie kluczy kryptograficznych z haseł
  • Iteracje: Minimum 100 000 (zalecenie OWASP)
  • Przypadek użycia: Przechowywanie haseł, wyprowadzanie kluczy

Argon2

Zwycięzca Password Hashing Competition (2015), zalecany dla nowych aplikacji.

Warianty

  • Argon2id: Hybrydowy (zalecany w większości przypadków)
  • Argon2i: Zoptymalizowany przeciwko atakom kanału bocznego
  • Argon2d: Maksymalna odporność na ataki GPU

scrypt

  • Funkcja wymagająca pamięci (odporna na ataki sprzętowe)
  • Używany przez Litecoin, Tarsnap
  • Dobra równowaga bezpieczeństwa i kompatybilności

Message Authentication Codes (MACs)

HMAC (Hash-based MAC)

  • Łączy funkcję skrótu z tajnym kluczem
  • Zapewnia uwierzytelnienie i integralność
  • Popularne: HMAC-SHA256, HMAC-SHA512

Poly1305

  • Jednorazowy autentykator
  • Używany z ChaCha20 do szyfrowania uwierzytelnionego
  • Szybki i o stałym czasie

Authenticated Encryption

Dlaczego to ważne

Same szyfrowanie nie gwarantuje integralności. Atakujący może modyfikować zaszyfrowany tekst bez wykrycia. Szyfrowanie uwierzytelnione rozwiązuje ten problem.

AEAD (Authenticated Encryption with Associated Data)

  • AES-GCM: Najszerzej wspierany
  • ChaCha20-Poly1305: Lepszy na urządzeniach mobilnych
  • AES-CCM: Używany w niektórych protokołach bezprzewodowych

Podpisy cyfrowe

Podpisy RSA

  • Dopełnienie: Używaj PSS (Probabilistic Signature Scheme)
  • Funkcja skrótu: SHA-256 lub wyższa
  • Rozmiar klucza: Minimum 2048 bitów

ECDSA (Elliptic Curve Digital Signature Algorithm)

  • Mniejsze podpisy niż RSA
  • Wymaga starannego generowania nonce (słaby RNG = skompromitowany klucz)
  • Zalecany wariant deterministyczny (RFC 6979)

Ed25519

  • Deterministyczny (nie wymaga RNG)
  • Szybkie generowanie i weryfikacja podpisu
  • Małe podpisy (64 bajty)
  • Odporny na ataki kanału bocznego

Nowoczesne protokoły

Signal Protocol

Najnowocześniejszy protokół szyfrowania end-to-end używany przez Signal, WhatsApp, Facebook Messenger.

Kluczowe cechy

  • Double Ratchet: Ciągła aktualizacja kluczy
  • Perfect Forward Secrecy: Przeszłe wiadomości pozostają bezpieczne
  • Post-Compromise Security: Odzyskiwanie po kompromitacji klucza
  • Asynchroniczny: Działa nawet gdy odbiorca jest offline

TLS 1.3

Najnowsza wersja protokołu Transport Layer Security.

Ulepszenia

  • Usunięto słabe algorytmy i zestawy szyfrów
  • Zawsze zapewnia forward secrecy
  • Szybszy handshake (1-RTT, opcja 0-RTT)
  • Zaszyfrowane Server Hello

Noise Protocol Framework

Nowoczesny framework protokołu kryptograficznego do budowania bezpiecznych systemów komunikacji.

Zastosowania

  • WireGuard VPN
  • Lightning Network
  • I2P messaging

Kryptografia postkwantowa

Zagrożenie

Komputery kwantowe mogą złamać RSA i ECC używając algorytmu Shora. Algorytmy symetryczne są mniej dotknięte, ale wymagają większych kluczy.

Kandydaci postkwantowi NIST

  • Kyber: Enkapsulacja klucza oparta na kratach
  • Dilithium: Podpisy cyfrowe oparte na kratach
  • SPHINCS+: Podpisy oparte na funkcjach skrótu

Strategia przejścia

  • Podejście hybrydowe: Łączenie algorytmów klasycznych i postkwantowych
  • Zwiększenie rozmiaru kluczy symetrycznych do 256 bitów
  • Monitorowanie procesu standaryzacji NIST
  • Planowanie elastyczności algorytmów

Najlepsze praktyki implementacji

Nie twórz własnej kryptografii

Używaj sprawdzonych, recenzowanych bibliotek:

  • libsodium: Wysokopoziomowa, łatwa w użyciu
  • OpenSSL: Kompleksowa, szeroko wspierana
  • BoringSSL: Fork OpenSSL od Google
  • Ring: Biblioteka kryptograficzna Rust

Zarządzanie kluczami

  • Używaj sprzętowych modułów bezpieczeństwa (HSM) dla krytycznych kluczy
  • Wdrażaj polityki rotacji kluczy
  • Nigdy nie umieszczaj kluczy na stałe w kodzie źródłowym
  • Używaj wyprowadzania kluczy do wielu celów
  • Bezpiecznie usuwaj klucze z pamięci po użyciu

Bezpieczne generowanie liczb losowych

  • Używaj kryptograficznie bezpiecznego RNG (CSPRNG)
  • Nigdy nie używaj standardowych funkcji rand()
  • RNG systemu operacyjnego: /dev/urandom (Linux), CryptGenRandom (Windows)
  • Specyficzne dla języka: crypto.randomBytes (Node.js), moduł secrets (Python)

Zapobieganie atakom czasowym

  • Używaj porównania o stałym czasie dla sekretów
  • Unikaj rozgałęzień opartych na tajnych danych
  • Miej świadomość ataków czasowych cache
  • Używaj bibliotek zaprojektowanych z odpornością na ataki czasowe

Testowanie i walidacja

Audyty bezpieczeństwa

  • Regularne testy penetracyjne
  • Przeglądy kodu przez ekspertów bezpieczeństwa
  • Audyty bezpieczeństwa przez strony trzecie
  • Programy bug bounty

Zgodność

  • FIPS 140-2/3: Standard rządu USA
  • Common Criteria: Międzynarodowa certyfikacja bezpieczeństwa
  • PCI DSS: Wymagania branży kart płatniczych

Zasoby do dalszej nauki

Książki

  • "Cryptography Engineering" autorstwa Fergusona, Schneiera i Kohno
  • "Serious Cryptography" autorstwa Jean-Philippe'aAumassona
  • "Applied Cryptography" autorstwa Bruce'a Schneiera

Zasoby online

  • Cryptopals Crypto Challenges
  • Kursy kryptografii Stanford (Coursera)
  • IACR ePrint Archive
  • Crypto Stack Exchange
Zobacz szyfrowanie w akcji: SecretNote używa szyfrowania AES-256-GCM z bezpiecznym wyprowadzaniem kluczy do ochrony twoich wiadomości. Wypróbuj teraz!