Cryptology Academy · Lekcja

Dobór AEAD do systemów produkcyjnych

Zastosują Państwo schemat decyzyjny do wyboru właściwego schematu AEAD na podstawie modelu zagrożeń i wymagań wydajnościowych.

Lekcja 4 z 413 kroki

Dobór AEAD do systemów produkcyjnych to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

AES-GCM: domyślny wybór

AES-GCM jest właściwym domyślnym trybem AEAD dla większości systemów produkcyjnych. Jest sprzętowo akcelerowany przez AES-NI na praktycznie wszystkich współczesnych procesorach x86 i ARM64, szeroko obsługiwany przez stosy TLS i biblioteki kryptograficzne oraz ma za sobą rozległą analizę kryptograficzną i doświadczenie z wdrożeń produkcyjnych.

Ograniczenia nonce w AES-GCM

AES-GCM używa nonce o długości 96 bitów. W przypadku nonce generowanych losowo granica urodzinowa zostaje osiągnięta po około 2^32 wiadomościach przy tym samym kluczu, gdy prawdopodobieństwo kolizji nonce staje się niepomijalne. W systemach przetwarzających duże ilości danych niezbędne jest zarządzanie nonce za pomocą licznika lub rotacja klucza po 2^32 wiadomościach.

ChaCha20-Poly1305: gdy brakuje AES-NI

ChaCha20-Poly1305 jest właściwym wyborem, gdy AES-NI nie jest dostępne lub gdy generowanie nonce może być zawodne. Działa szybko w implementacji programowej, z założenia wykonuje operacje w czasie stałym, dzięki czemu jest odporny na kanały boczne związane z pomiarem czasu, i jest obowiązkowym zestawem szyfrów w TLS 1.3 dla środowisk bez sprzętowej obsługi AES.

AES-GCM-SIV dla bezpieczeństwa nonce

Gdy nonce mogą być używane ponownie lub muszą być generowane deterministycznie, na przykład w usługach bezstanowych albo podczas opakowywania kluczy, właściwym wyborem jest AES-GCM-SIV (RFC 8452). Zapewnia odporność na niewłaściwe użycie nonce przy umiarkowanym koszcie wydajności w porównaniu ze standardowym AES-GCM.

AEGIS dla maksymalnej przepustowości

AEGIS-128L jest właściwym wyborem, gdy wymagana jest maksymalna przepustowość szyfrowania i zagwarantowano obecność AES-NI we wszystkich środowiskach wdrożeniowych. Urządzenia sieciowe o dużej przepustowości, koncentratory VPN oraz systemy szyfrowania pamięci masowej są idealnymi kandydatami, ponieważ AEGIS zapewnia w nich znaczący wzrost wydajności względem AES-GCM.

Wybór rozmiaru klucza: 128 a 256 bitów

AES-128 zapewnia 128-bitowe bezpieczeństwo, uznawane za wystarczające wobec wszystkich obecnych i przewidywalnych zagrożeń związanych z obliczeniami klasycznymi. AES-256 zapewnia dodatkowy margines bezpieczeństwa na wypadek przyszłego postępu i jest wymagany przez niektóre standardy zgodności, takie jak klasyfikacja TOP SECRET zgodnie z NSA Suite B. W większości zastosowań AES-128 jest wystarczający i nieco szybszy.

Rozważania dotyczące rozmiaru nonce

AES-GCM używa nonce o długości 96 bitów, podobnie jak AES-GCM-SIV. XSalsa20, używany w secretbox biblioteki libsodium, korzysta z nonce o długości 192 bitów, dzięki czemu losowe generowanie nonce jest bezpieczne dla znacznie większej liczby wiadomości przy tym samym kluczu. Dłuższe nonce zmniejszają ryzyko przypadkowego ponownego użycia w systemach przetwarzających duże ilości danych.

Zalecane biblioteki

Należy używać sprawdzonych bibliotek AEAD zamiast implementować prymitywy bezpośrednio. libsodium udostępnia prosty interfejs API AEAD (crypto_aead_aes256gcm_encrypt, crypto_aead_chacha20poly1305_ietf_encrypt). Google Tink opakowuje prymitywy AEAD, zapewniając rotację kluczy i wersjonowanie. Natywne dla danego języka biblioteki TLS automatycznie obsługują AEAD na potrzeby bezpieczeństwa transportu.

Migracja z AES-CBC

AES-CBC z oddzielnym HMAC-SHA256, w kolejności EtM, jest rozwiązaniem akceptowalnym, ale przestarzałym. Migracja do AES-GCM upraszcza implementację, zastępując dwa prymitywy jednym, i eliminuje ryzyko nieprawidłowego ich łączenia. Dane przechowywane w spoczynku i zaszyfrowane za pomocą CBC-HMAC powinny zostać ponownie zaszyfrowane przy użyciu AES-GCM podczas planowanej rotacji kluczy.

Testowanie implementacji AEAD

Implementacje AEAD należy testować względem oficjalnych wektorów testowych NIST dla AES-GCM oraz RFC 8439 dla ChaCha20-Poly1305. Zawsze należy sprawdzać, czy niepowodzenie weryfikacji tagu uwierzytelniającego powoduje zwrócenie błędu przez deszyfrowanie, a nie częściowego tekstu jawnego. Nieprawidłowa obsługa błędów jest częstą wadą implementacji.

Schemat decyzyjny

Należy wybrać AES-GCM, gdy dostępne jest AES-NI, a nonce są unikatowe. Należy wybrać ChaCha20-Poly1305, gdy brakuje AES-NI lub nonce są mniej niezawodne. Należy wybrać AES-GCM-SIV, gdy ponowne użycie nonce stanowi zagrożenie. Należy wybrać AEGIS, gdy priorytetem jest maksymalna przepustowość przy zagwarantowanej obecności AES-NI. W nowych systemach nigdy nie należy wybierać trybów innych niż AEAD.

Sprawdzenie wyboru AEAD

Bezstanowa mikrousługa wdrożona w wielu replikach musi szyfrować dane i nie może koordynować współdzielonego licznika nonce. Który tryb AEAD jest najbardziej odpowiedni?

Podsumowanie lekcji: wybór właściwego AEAD

AES-GCM jest wyborem domyślnym. ChaCha20-Poly1305 sprawdza się w środowiskach bez AES-NI. AES-GCM-SIV obsługuje środowiska, w których nie można bezpiecznie używać nonce. AEGIS maksymalizuje przepustowość, gdy obecność AES-NI jest zagwarantowana. Należy używać bibliotek takich jak libsodium lub Tink zamiast ręcznie łączyć prymitywy. Zawsze należy testować implementację względem oficjalnych wektorów testowych i sprawdzać, czy błędy uwierzytelniania są prawidłowo obsługiwane.

Bezpłatny start

Ucz się Cryptology Academy dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
67
Lekcje
261

Często zadawane pytania

Czy lekcja „Dobór AEAD do systemów produkcyjnych” jest bezpłatna?

Tak — pełny tekst „Dobór AEAD do systemów produkcyjnych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Dobór AEAD do systemów produkcyjnych”?

Zastosują Państwo schemat decyzyjny do wyboru właściwego schematu AEAD na podstawie modelu zagrożeń i wymagań wydajnościowych. Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Dobór AEAD do systemów produkcyjnych”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Dlaczego Encrypt-Then-MAC jest lepsze niż MAC-Then-Encrypt
  2. Tryb SIV: AEAD odporny na niewłaściwe użycie nonce
  3. AEGIS: szybkie szyfrowanie uwierzytelnione
  4. Dobór AEAD do systemów produkcyjnych
← Powrót do Cryptology Academy