Dlaczego Encrypt-Then-MAC jest lepsze niż MAC-Then-Encrypt
Poznają Państwo kryptograficzne uzasadnienie łączenia szyfrowania i uwierzytelniania we właściwej kolejności.
Dlaczego Encrypt-Then-MAC jest lepsze niż MAC-Then-Encrypt to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 1 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.
Trzy kolejności łączenia
Podczas łączenia szyfrowania z kodem MAC istnieją trzy kolejności: Encrypt-then-MAC (EtM), MAC-then-Encrypt (MtE) oraz Encrypt-and-MAC (E&M). Każda z nich ma zasadniczo inne właściwości bezpieczeństwa, a tylko jedna jest dowiedzenie bezpieczna we wszystkich ustawieniach.
Definicja Encrypt-then-MAC
W Encrypt-then-MAC tekst jawny jest najpierw szyfrowany w celu uzyskania szyfrogramu, a następnie kod MAC jest obliczany na podstawie tego szyfrogramu. Odbiorca może zweryfikować MAC, zanim w ogóle podejmie próbę odszyfrowania, dzięki czemu zmodyfikowana wiadomość zostaje natychmiast odrzucona bez ujawniania informacji.
Definicja MAC-then-Encrypt
W MAC-then-Encrypt kod MAC jest obliczany na podstawie tekstu jawnego, a następnie tekst jawny i MAC są wspólnie szyfrowane. Odbiorca musi odszyfrować wiadomość, zanim będzie mógł zweryfikować MAC, co otwiera drogę do ataków typu padding oracle i decryption oracle.
Luka w SSL 3.0 i TLS 1.0
SSL 3.0 i TLS 1.0 stosowały kolejność MAC-then-Encrypt dla szyfrów blokowych w trybie CBC. Ta wada projektowa została wykorzystana przez atak BEAST w 2011 roku i atak POODLE w 2014 roku; oba ataki wykorzystywały wyrocznię istniejącą wtedy, gdy odszyfrowanie następuje przed weryfikacją MAC.
Dowód Bellare’a i Namprempre’a
W 2000 roku Bellare i Namprempre formalnie dowiedli, że spośród trzech kolejności tylko Encrypt-then-MAC zapewnia bezpieczeństwo IND-CCA2 (bezpieczeństwo wobec ataków z wybranym szyfrogramem) dla wszystkich kombinacji bezpiecznych prymitywów szyfrowania i MAC. MtE i E&M mogą zawodzić w przypadku niektórych połączeń.
Encrypt-and-MAC w SSH
SSH używa Encrypt-and-MAC: kod MAC jest obliczany na podstawie tekstu jawnego i wysyłany obok szyfrogramu w postaci jawnej. Chociaż SSH nie padło ofiarą takich samych exploitów jak MtE w SSL/TLS, to połączenie również jest wadliwe z teoretycznego punktu widzenia, ponieważ może ujawniać informacje o tekście jawnym za pośrednictwem niezaszyfrowanego MAC.
AEAD jako bezpieczna abstrakcja
Authenticated Encryption with Associated Data (AEAD) to nowoczesna abstrakcja, która z założenia rozwiązuje problem łączenia. AEAD integruje szyfrowanie i uwierzytelnianie w jednym prymitywie, zapewniając ich prawidłowe połączenie bez konieczności wybierania przez programistę kolejności łączenia.
AES-GCM: standard AEAD
AES-GCM (Galois/Counter Mode) to najczęściej wdrażany zestaw szyfrów AEAD. Zapewnia szyfrowanie uwierzytelnione dzięki połączeniu szyfrowania w trybie CTR z uwierzytelnianiem GHASH i jest przyspieszany sprzętowo za pomocą instrukcji AES-NI i CLMUL we współczesnych procesorach.
TLS 1.3 wymusza wyłącznie AEAD
TLS 1.3 zdecydowanie odcięło się od przeszłości, usuwając wszystkie zestawy szyfrów inne niż AEAD. Każdy zestaw szyfrów TLS 1.3 używa AEAD, eliminując całe klasy luk powodowanych przez nieprawidłowe, ręczne łączenie prymitywów szyfrowania i MAC, które nękały wcześniejsze wersje TLS.
Nie należy ręcznie łączyć prymitywów
Najważniejsza lekcja płynąca z dziesięcioleci ataków kryptograficznych jest taka, że ręczne łączenie prymitywów szyfrowania i MAC prowadzi do błędów nawet w przypadku ekspertów. Nowoczesne biblioteki kryptograficzne udostępniają interfejsy AEAD właśnie po to, aby uniemożliwić programistom popełnianie błędów podczas łączenia, które prowadzą do rzeczywistych luk w zabezpieczeniach.
Praktyczne wskazówki
Podczas tworzenia systemów należy zawsze wybierać prymityw AEAD, taki jak AES-GCM lub ChaCha20-Poly1305. Jeśli konieczna jest współpraca ze starszymi systemami używającymi oddzielnego MAC i szyfrowania, należy upewnić się, że stosowana jest kolejność Encrypt-then-MAC, a nigdy MtE ani E&M.
Sprawdzenie EtM a MtE
Które stwierdzenie prawidłowo opisuje różnicę w zakresie bezpieczeństwa między Encrypt-then-MAC a MAC-then-Encrypt?
Podsumowanie lekcji: kolejność łączenia ma znaczenie
EtM jest jedyną dowiedzenie bezpieczną kolejnością łączenia oddzielnych prymitywów szyfrowania i MAC. TLS 1.3 całkowicie eliminuje ten problem, wymagając zestawów szyfrów korzystających wyłącznie z AEAD. W razie wątpliwości należy użyć prymitywu AEAD, takiego jak AES-GCM lub ChaCha20-Poly1305, i pozwolić bibliotece prawidłowo obsłużyć łączenie.
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 „Dlaczego Encrypt-Then-MAC jest lepsze niż MAC-Then-Encrypt” jest bezpłatna?
Tak — pełny tekst „Dlaczego Encrypt-Then-MAC jest lepsze niż MAC-Then-Encrypt” 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 „Dlaczego Encrypt-Then-MAC jest lepsze niż MAC-Then-Encrypt”?
Poznają Państwo kryptograficzne uzasadnienie łączenia szyfrowania i uwierzytelniania we właściwej kolejności. Ć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 1 z 4.
Ile czasu zajmuje lekcja „Dlaczego Encrypt-Then-MAC jest lepsze niż MAC-Then-Encrypt”?
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