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.
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.
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
- Dlaczego Encrypt-Then-MAC jest lepsze niż MAC-Then-Encrypt
- Tryb SIV: AEAD odporny na niewłaściwe użycie nonce
- AEGIS: szybkie szyfrowanie uwierzytelnione
- Dobór AEAD do systemów produkcyjnych