0Pricing
Cryptology Academy · Lekcja

Tryb SIV: AEAD odporny na niewłaściwe użycie nonce

Poznają Państwo tryb Synthetic IV (SIV) oraz sposób ochrony przed katastrofalnymi skutkami ponownego użycia nonce.

Tryb SIV: AEAD odporny na niewłaściwe użycie nonce to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 2 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.

Ponowne użycie nonce: katastrofalna awaria

Szyfry AEAD oparte na trybie CTR, takie jak AES-GCM, wymagają unikatowego nonce dla każdego szyfrowania. Jeśli ten sam nonce zostanie ponownie użyty z tym samym kluczem, atakujący obserwujący dwa szyfrogramy może wykonać na nich operację XOR, aby odzyskać XOR obu tekstów jawnych, natychmiast łamiąc poufność.

Ponowne użycie nonce w GCM ujawnia klucz uwierzytelniania

Ponowne użycie nonce w AES-GCM jest jeszcze bardziej katastrofalne niż w zwykłym trybie CTR. Gdy dwie wiadomości są szyfrowane przy użyciu tego samego nonce i klucza, atakujący może całkowicie odzyskać klucz uwierzytelniania GHASH H. Znając H, atakujący może fałszować dowolne uwierzytelnione wiadomości.

Wprowadzono tryb Synthetic IV

Tryb Synthetic IV (SIV), zdefiniowany w RFC 5297, został zaprojektowany w celu wyeliminowania podatności związanych z ponownym użyciem nonce. Zamiast wymagać losowego nonce lub nonce opartego na liczniku, SIV syntetycznie wyprowadza IV z tekstu jawnego za pomocą funkcji pseudolosowej, dzięki czemu jest deterministyczny i odporny na błędne użycie nonce.

Mechanizm wyprowadzania nonce w SIV

W SIV nonce (nazywany syntetycznym IV) jest obliczany jako SIV = PRF(key, plaintext, associated_data). Następnie ten IV jest używany jako licznik do szyfrowania w trybie CTR. Ponieważ IV jest wyprowadzany z tekstu jawnego, szyfrowanie tego samego tekstu jawnego zawsze daje ten sam szyfrogram.

Skutek ponownego użycia nonce w SIV

Jeśli nonce zostanie ponownie użyty w SIV, ponieważ ten sam tekst jawny zostanie zaszyfrowany dwukrotnie, obserwator dowie się jedynie, że wysłano dwie identyczne wiadomości. Sama treść tekstu jawnego pozostaje ukryta. To ogromna poprawa w porównaniu z AEAD opartym na CTR, w którym ponowne użycie nonce ujawnia XOR tekstów jawnych.

Konstrukcja AES-SIV

AES-SIV (RFC 5297) używa funkcji S2V (łańcuchowej funkcji PRF opartej na AES-CMAC) do wygenerowania syntetycznego IV, a następnie szyfrowania AES-CTR z użyciem drugiego podklucza. Wymaga dwóch kluczy AES, co nieco komplikuje zarządzanie kluczami w porównaniu z trybami AEAD używającymi jednego klucza.

AES-GCM-SIV: nowoczesna alternatywa

AES-GCM-SIV (RFC 8452) to wydajniejszy tryb AEAD odporny na niewłaściwe użycie nonce, zaprojektowany tak, aby łączyć wydajność GCM z bezpieczeństwem charakterystycznym dla SIV. Wyprowadza podklucze dla poszczególnych wiadomości z nonce i używa uwierzytelniającego mechanizmu Polyval, osiągając lepszą wydajność niż AES-SIV przy zachowaniu odporności na niewłaściwe użycie nonce.

Koszt obliczeniowy dwóch przebiegów

SIV wymaga dwóch przebiegów przez dane: jednego do obliczenia syntetycznego IV i drugiego do szyfrowania. W przybliżeniu podwaja to koszt obliczeniowy w porównaniu z jednokrotnymi trybami AEAD, takimi jak AES-GCM. W aplikacjach wrażliwych na opóźnienia lub wymagających dużej przepustowości należy uwzględnić ten narzut.

Kiedy wybrać SIV zamiast GCM

SIV jest preferowany, gdy generowanie nonce jest zawodne, gdy aplikacja jest bezstanowa i nie może utrzymywać licznika nonce albo gdy wymagane jest szyfrowanie deterministyczne. Przykładem jest szyfrowanie pól w bazie danych, w przypadku których ta sama wartość powinna zawsze dawać ten sam szyfrogram, aby można było ją indeksować.

Bezstanowe usługi i szyfrowanie deterministyczne

Bezstanowe mikrousługi, które nie mogą koordynować stanu nonce między replikami, są idealnymi kandydatami do użycia trybu SIV. Zamiast ryzykować przypadkowe ponowne użycie nonce przez globalny licznik, SIV zapewnia ochronę automatycznie. Opakowywanie kluczy (RFC 3394) również wykorzystuje zasady SIV do deterministycznego szyfrowania kluczy.

SIV w praktyce

AES-SIV jest dostępny w głównych bibliotekach kryptograficznych, w tym w libsodium (w nowszych wersjach jako crypto_aead_aes256gcm_siv) oraz Google Tink. AES-GCM-SIV jest obsługiwany przez BoringSSL i bibliotekę standardową Go. Gdy zarządzanie nonce jest trudne, są to bezpieczniejsze ustawienia domyślne niż standardowy AES-GCM.

Sprawdzenie niewłaściwego użycia nonce w SIV

Co się stanie, gdy ten sam klucz zostanie użyty do dwukrotnego zaszyfrowania tego samego tekstu jawnego za pomocą AES-SIV?

Podsumowanie lekcji: SIV zapewnia bezpieczeństwo nonce

Tryb SIV eliminuje katastrofalne skutki ponownego użycia nonce, wyprowadzając IV z samego tekstu jawnego. Ponowne użycie nonce ujawnia jedynie, że wysłano identyczne wiadomości, a nie ich treść. AES-GCM-SIV (RFC 8452) zapewnia wydajną odporność na niewłaściwe użycie nonce we współczesnych aplikacjach, w których potrzebne jest szyfrowanie bezstanowe lub deterministyczne.

Często zadawane pytania

Czy lekcja „Tryb SIV: AEAD odporny na niewłaściwe użycie nonce” jest bezpłatna?

Tak — pełny tekst „Tryb SIV: AEAD odporny na niewłaściwe użycie nonce” 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 „Tryb SIV: AEAD odporny na niewłaściwe użycie nonce”?

Poznają Państwo tryb Synthetic IV (SIV) oraz sposób ochrony przed katastrofalnymi skutkami ponownego użycia nonce. Ć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 2 z 4.

Ile czasu zajmuje lekcja „Tryb SIV: AEAD odporny na niewłaściwe użycie nonce”?

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